summaryrefslogtreecommitdiff
path: root/date-fns
diff options
context:
space:
mode:
authorSebastian <sebasjm@gmail.com>2021-08-23 16:46:06 -0300
committerSebastian <sebasjm@gmail.com>2021-08-23 16:48:30 -0300
commit38acabfa6089ab8ac469c12b5f55022fb96935e5 (patch)
tree453dbf70000cc5e338b06201af1eaca8343f8f73 /date-fns
parentf26125e039143b92dc0d84e7775f508ab0cdcaa8 (diff)
downloadnode-vendor-master.tar.gz
node-vendor-master.tar.bz2
node-vendor-master.zip
added web vendorsHEADmaster
Diffstat (limited to 'date-fns')
-rw-r--r--date-fns/.babelrc.js32
-rw-r--r--date-fns/.editorconfig11
-rw-r--r--date-fns/.eslintignore3
-rw-r--r--date-fns/.eslintrc.js12
-rw-r--r--date-fns/.flowconfig4
-rw-r--r--date-fns/.github/FUNDING.yml9
-rw-r--r--date-fns/.github/workflows/coverage.yaml21
-rw-r--r--date-fns/.github/workflows/deploy.yaml21
-rw-r--r--date-fns/.github/workflows/main_tests.yaml31
-rw-r--r--date-fns/.github/workflows/node_tests.yaml31
-rw-r--r--date-fns/.github/workflows/timezone_step_1.yaml33
-rw-r--r--date-fns/.github/workflows/timezone_step_2.yaml33
-rw-r--r--date-fns/.gitignore11
-rw-r--r--date-fns/.prettierrc.js4
-rw-r--r--date-fns/.tool-versions1
-rw-r--r--date-fns/.ts-eslintrc.js32
-rw-r--r--date-fns/CHANGELOG.md2359
-rw-r--r--date-fns/CONTRIBUTING.md139
-rw-r--r--date-fns/LICENSE.md6
-rw-r--r--date-fns/README.md69
-rw-r--r--date-fns/benchmark.js2
-rw-r--r--date-fns/config/.eslintrc.js5
-rw-r--r--date-fns/config/_lib/benchmarkJSONReporter.js48
-rw-r--r--date-fns/config/_lib/countReporter.js34
-rw-r--r--date-fns/config/karma.js220
-rw-r--r--date-fns/config/webpack.js79
-rw-r--r--date-fns/docs/.eslintrc.js5
-rw-r--r--date-fns/docs/Day.js15
-rw-r--r--date-fns/docs/Duration.js19
-rw-r--r--date-fns/docs/Interval.js16
-rw-r--r--date-fns/docs/Locale.js64
-rw-r--r--date-fns/docs/constants.md47
-rw-r--r--date-fns/docs/esm.md24
-rw-r--r--date-fns/docs/fp.md70
-rw-r--r--date-fns/docs/gettingStarted.md87
-rw-r--r--date-fns/docs/i18n.md92
-rw-r--r--date-fns/docs/i18nContributionGuide.md921
-rw-r--r--date-fns/docs/index.js147
-rw-r--r--date-fns/docs/logo.svg26
-rw-r--r--date-fns/docs/logotype.svg1
-rw-r--r--date-fns/docs/timeZones.md63
-rw-r--r--date-fns/docs/unicodeTokens.md54
-rw-r--r--date-fns/docs/upgradeGuide.md118
-rw-r--r--date-fns/docs/webpack.md48
-rw-r--r--date-fns/examples/.eslintrc.js5
-rw-r--r--date-fns/examples/babel/.babelrc4
-rw-r--r--date-fns/examples/babel/README.md23
-rw-r--r--date-fns/examples/babel/example.js4
-rw-r--r--date-fns/examples/babel/package.json27
-rw-r--r--date-fns/examples/babel/webpack.config.js14
-rw-r--r--date-fns/examples/babel/yarn.lock2791
-rw-r--r--date-fns/examples/browserify/README.md23
-rw-r--r--date-fns/examples/browserify/example.js4
-rw-r--r--date-fns/examples/browserify/fp.js19
-rw-r--r--date-fns/examples/browserify/misc.js10
-rw-r--r--date-fns/examples/browserify/package.json31
-rw-r--r--date-fns/examples/browserify/yarn.lock2454
-rw-r--r--date-fns/examples/flow/.babelrc3
-rw-r--r--date-fns/examples/flow/.flowconfig2
-rw-r--r--date-fns/examples/flow/README.md12
-rw-r--r--date-fns/examples/flow/constants.js.flow11
-rw-r--r--date-fns/examples/flow/example.js.flow8
-rw-r--r--date-fns/examples/flow/fp.js.flow19
-rw-r--r--date-fns/examples/flow/misc.js.flow9
-rw-r--r--date-fns/examples/flow/package.json28
-rw-r--r--date-fns/examples/flow/yarn.lock1432
-rw-r--r--date-fns/examples/lodash-fp/.babelrc3
-rw-r--r--date-fns/examples/lodash-fp/README.md23
-rw-r--r--date-fns/examples/lodash-fp/example.js30
-rw-r--r--date-fns/examples/lodash-fp/package.json27
-rw-r--r--date-fns/examples/lodash-fp/webpack.config.js14
-rw-r--r--date-fns/examples/lodash-fp/yarn.lock2779
-rw-r--r--date-fns/examples/rollup/README.md23
-rw-r--r--date-fns/examples/rollup/example.js4
-rw-r--r--date-fns/examples/rollup/fp.js18
-rw-r--r--date-fns/examples/rollup/misc.js9
-rw-r--r--date-fns/examples/rollup/package.json33
-rw-r--r--date-fns/examples/rollup/rollup.config.example.js12
-rw-r--r--date-fns/examples/rollup/rollup.config.fp.js12
-rw-r--r--date-fns/examples/rollup/rollup.config.misc.js12
-rw-r--r--date-fns/examples/rollup/yarn.lock1932
-rw-r--r--date-fns/examples/typescript/README.md14
-rw-r--r--date-fns/examples/typescript/constants.ts9
-rw-r--r--date-fns/examples/typescript/example.ts7
-rw-r--r--date-fns/examples/typescript/fp.ts17
-rw-r--r--date-fns/examples/typescript/misc.ts7
-rw-r--r--date-fns/examples/typescript/package.json23
-rw-r--r--date-fns/examples/typescript/yarn.lock2634
-rw-r--r--date-fns/examples/webpack-1.x/README.md23
-rw-r--r--date-fns/examples/webpack-1.x/constants.js9
-rw-r--r--date-fns/examples/webpack-1.x/example.js4
-rw-r--r--date-fns/examples/webpack-1.x/fp.js19
-rw-r--r--date-fns/examples/webpack-1.x/misc.js10
-rw-r--r--date-fns/examples/webpack-1.x/package.json30
-rw-r--r--date-fns/examples/webpack-1.x/yarn.lock2344
-rw-r--r--date-fns/examples/webpack-2.x/README.md26
-rw-r--r--date-fns/examples/webpack-2.x/example.js4
-rw-r--r--date-fns/examples/webpack-2.x/fp.js18
-rw-r--r--date-fns/examples/webpack-2.x/misc.js9
-rw-r--r--date-fns/examples/webpack-2.x/package.json28
-rw-r--r--date-fns/examples/webpack-2.x/yarn.lock2642
-rw-r--r--date-fns/examples/webpack-4.x/README.md29
-rw-r--r--date-fns/examples/webpack-4.x/constants.js9
-rw-r--r--date-fns/examples/webpack-4.x/example.js4
-rw-r--r--date-fns/examples/webpack-4.x/fp.js17
-rw-r--r--date-fns/examples/webpack-4.x/minimal.js3
-rw-r--r--date-fns/examples/webpack-4.x/misc.js11
-rw-r--r--date-fns/examples/webpack-4.x/package.json31
-rw-r--r--date-fns/examples/webpack-4.x/yarn.lock3163
-rw-r--r--date-fns/flow-typed/benchmark.js.flow6
-rw-r--r--date-fns/flow-typed/mocha.js.flow7
-rw-r--r--date-fns/flow-typed/power-assert.js.flow3
-rw-r--r--date-fns/flow-typed/sinon.js.flow2
-rw-r--r--date-fns/jest.config.js4
-rw-r--r--date-fns/jsdoc2md.json20
-rw-r--r--date-fns/outdatedLocales.json1
-rw-r--r--date-fns/package.json122
-rw-r--r--date-fns/scripts/.eslintrc.js5
-rw-r--r--date-fns/scripts/_lib/getConstants.js14
-rw-r--r--date-fns/scripts/_lib/listFPFns.js17
-rw-r--r--date-fns/scripts/_lib/listFns.js38
-rw-r--r--date-fns/scripts/_lib/listLocales.js24
-rw-r--r--date-fns/scripts/build/_lib/addDenoExtensions.ts79
-rw-r--r--date-fns/scripts/build/_lib/prettier.js6
-rw-r--r--date-fns/scripts/build/_lib/typings/common.js92
-rw-r--r--date-fns/scripts/build/_lib/typings/flow.js190
-rw-r--r--date-fns/scripts/build/_lib/typings/formatBlock.js149
-rw-r--r--date-fns/scripts/build/_lib/typings/typeScript.js460
-rwxr-xr-xdate-fns/scripts/build/build.sh12
-rwxr-xr-xdate-fns/scripts/build/deno.sh7
-rwxr-xr-xdate-fns/scripts/build/docs.js380
-rwxr-xr-xdate-fns/scripts/build/fp.js51
-rwxr-xr-xdate-fns/scripts/build/indices.js61
-rw-r--r--date-fns/scripts/build/localeSnapshots/_lib/distanceDates.js59
-rwxr-xr-xdate-fns/scripts/build/localeSnapshots/index.js69
-rw-r--r--date-fns/scripts/build/localeSnapshots/renderFormatDistance/index.js26
-rw-r--r--date-fns/scripts/build/localeSnapshots/renderFormatDistanceStrict/index.js26
-rw-r--r--date-fns/scripts/build/localeSnapshots/renderFormatParse/formatParseTokens.js218
-rw-r--r--date-fns/scripts/build/localeSnapshots/renderFormatParse/index.js59
-rw-r--r--date-fns/scripts/build/localeSnapshots/renderFormatRelative/index.js23
-rwxr-xr-xdate-fns/scripts/build/package.sh51
-rwxr-xr-xdate-fns/scripts/build/packages.js92
-rwxr-xr-xdate-fns/scripts/build/removeOutdatedLocales.js20
-rwxr-xr-xdate-fns/scripts/build/typings.js31
-rw-r--r--date-fns/scripts/release/buildChangelog.ts289
-rwxr-xr-xdate-fns/scripts/release/release.sh45
-rwxr-xr-xdate-fns/scripts/release/tweet.js36
-rwxr-xr-xdate-fns/scripts/release/updateFirebase.js116
-rwxr-xr-xdate-fns/scripts/release/writeVersion.js35
-rwxr-xr-xdate-fns/scripts/test/ci.sh50
-rwxr-xr-xdate-fns/scripts/test/countTests.sh14
-rwxr-xr-xdate-fns/scripts/test/coverageReport.sh12
-rwxr-xr-xdate-fns/scripts/test/dst.sh18
-rwxr-xr-xdate-fns/scripts/test/formatISO.sh12
-rwxr-xr-xdate-fns/scripts/test/formatRFC3339.sh17
-rwxr-xr-xdate-fns/scripts/test/node.sh19
-rwxr-xr-xdate-fns/scripts/test/smoke.sh23
-rwxr-xr-xdate-fns/scripts/test/tz.sh20
-rwxr-xr-xdate-fns/scripts/test/tzExtended.sh368
-rw-r--r--date-fns/src/_lib/addLeadingZeros/index.js8
-rw-r--r--date-fns/src/_lib/assign/index.js17
-rw-r--r--date-fns/src/_lib/assign/test.js30
-rw-r--r--date-fns/src/_lib/cloneObject/index.js5
-rw-r--r--date-fns/src/_lib/cloneObject/test.js31
-rw-r--r--date-fns/src/_lib/format/formatters/index.js768
-rw-r--r--date-fns/src/_lib/format/lightFormatters/index.ts94
-rw-r--r--date-fns/src/_lib/format/longFormatters/index.js66
-rw-r--r--date-fns/src/_lib/getTimezoneOffsetInMilliseconds/index.js26
-rw-r--r--date-fns/src/_lib/getTimezoneOffsetInMilliseconds/test.js28
-rw-r--r--date-fns/src/_lib/getUTCDayOfYear/index.js18
-rw-r--r--date-fns/src/_lib/getUTCDayOfYear/test.js36
-rw-r--r--date-fns/src/_lib/getUTCISOWeek/index.js21
-rw-r--r--date-fns/src/_lib/getUTCISOWeek/test.js58
-rw-r--r--date-fns/src/_lib/getUTCISOWeekYear/index.js30
-rw-r--r--date-fns/src/_lib/getUTCISOWeekYear/test.js36
-rw-r--r--date-fns/src/_lib/getUTCWeek/index.js22
-rw-r--r--date-fns/src/_lib/getUTCWeek/test.js70
-rw-r--r--date-fns/src/_lib/getUTCWeekYear/index.js51
-rw-r--r--date-fns/src/_lib/getUTCWeekYear/test.js70
-rw-r--r--date-fns/src/_lib/isSameUTCWeek/index.js13
-rw-r--r--date-fns/src/_lib/isSameUTCWeek/test.js111
-rw-r--r--date-fns/src/_lib/protectedTokens/index.js30
-rw-r--r--date-fns/src/_lib/requiredArgs/index.ts12
-rw-r--r--date-fns/src/_lib/requiredArgs/test.js37
-rw-r--r--date-fns/src/_lib/setUTCDay/index.js38
-rw-r--r--date-fns/src/_lib/setUTCDay/test.js132
-rw-r--r--date-fns/src/_lib/setUTCISODay/index.js27
-rw-r--r--date-fns/src/_lib/setUTCISODay/test.js79
-rw-r--r--date-fns/src/_lib/setUTCISOWeek/index.js16
-rw-r--r--date-fns/src/_lib/setUTCISOWeek/test.js61
-rw-r--r--date-fns/src/_lib/setUTCWeek/index.js16
-rw-r--r--date-fns/src/_lib/setUTCWeek/test.js95
-rw-r--r--date-fns/src/_lib/startOfUTCISOWeek/index.js18
-rw-r--r--date-fns/src/_lib/startOfUTCISOWeek/test.js34
-rw-r--r--date-fns/src/_lib/startOfUTCISOWeekYear/index.js16
-rw-r--r--date-fns/src/_lib/startOfUTCISOWeekYear/test.js58
-rw-r--r--date-fns/src/_lib/startOfUTCWeek/index.js33
-rw-r--r--date-fns/src/_lib/startOfUTCWeek/test.js108
-rw-r--r--date-fns/src/_lib/startOfUTCWeekYear/index.js30
-rw-r--r--date-fns/src/_lib/startOfUTCWeekYear/test.js95
-rw-r--r--date-fns/src/_lib/test/index.ts1
-rw-r--r--date-fns/src/_lib/toInteger/index.ts13
-rw-r--r--date-fns/src/_lib/toInteger/test.js64
-rw-r--r--date-fns/src/add/benchmark.js25
-rw-r--r--date-fns/src/add/index.d.ts4
-rw-r--r--date-fns/src/add/index.js.flow52
-rw-r--r--date-fns/src/add/index.ts79
-rw-r--r--date-fns/src/add/test.ts99
-rw-r--r--date-fns/src/addBusinessDays/index.d.ts4
-rw-r--r--date-fns/src/addBusinessDays/index.js.flow52
-rw-r--r--date-fns/src/addBusinessDays/index.ts67
-rw-r--r--date-fns/src/addBusinessDays/test.ts95
-rw-r--r--date-fns/src/addDays/benchmark.js21
-rw-r--r--date-fns/src/addDays/index.d.ts4
-rw-r--r--date-fns/src/addDays/index.js.flow52
-rw-r--r--date-fns/src/addDays/index.ts44
-rw-r--r--date-fns/src/addDays/test.ts129
-rw-r--r--date-fns/src/addHours/benchmark.js21
-rw-r--r--date-fns/src/addHours/index.d.ts4
-rw-r--r--date-fns/src/addHours/index.js.flow52
-rw-r--r--date-fns/src/addHours/index.ts37
-rw-r--r--date-fns/src/addHours/test.ts54
-rw-r--r--date-fns/src/addISOWeekYears/benchmark.js15
-rw-r--r--date-fns/src/addISOWeekYears/index.d.ts4
-rw-r--r--date-fns/src/addISOWeekYears/index.js.flow52
-rw-r--r--date-fns/src/addISOWeekYears/index.ts43
-rw-r--r--date-fns/src/addISOWeekYears/test.ts64
-rw-r--r--date-fns/src/addMilliseconds/benchmark.js21
-rw-r--r--date-fns/src/addMilliseconds/index.d.ts4
-rw-r--r--date-fns/src/addMilliseconds/index.js.flow52
-rw-r--r--date-fns/src/addMilliseconds/index.ts36
-rw-r--r--date-fns/src/addMilliseconds/test.ts80
-rw-r--r--date-fns/src/addMinutes/benchmark.js21
-rw-r--r--date-fns/src/addMinutes/index.d.ts4
-rw-r--r--date-fns/src/addMinutes/index.js.flow52
-rw-r--r--date-fns/src/addMinutes/index.ts37
-rw-r--r--date-fns/src/addMinutes/test.ts57
-rw-r--r--date-fns/src/addMonths/benchmark.js21
-rw-r--r--date-fns/src/addMonths/index.d.ts4
-rw-r--r--date-fns/src/addMonths/index.js.flow52
-rw-r--r--date-fns/src/addMonths/index.ts74
-rw-r--r--date-fns/src/addMonths/test.ts173
-rw-r--r--date-fns/src/addQuarters/benchmark.js21
-rw-r--r--date-fns/src/addQuarters/index.d.ts4
-rw-r--r--date-fns/src/addQuarters/index.js.flow52
-rw-r--r--date-fns/src/addQuarters/index.ts36
-rw-r--r--date-fns/src/addQuarters/test.ts70
-rw-r--r--date-fns/src/addSeconds/benchmark.js21
-rw-r--r--date-fns/src/addSeconds/index.d.ts4
-rw-r--r--date-fns/src/addSeconds/index.js.flow52
-rw-r--r--date-fns/src/addSeconds/index.ts35
-rw-r--r--date-fns/src/addSeconds/test.ts59
-rw-r--r--date-fns/src/addWeeks/benchmark.js21
-rw-r--r--date-fns/src/addWeeks/index.d.ts4
-rw-r--r--date-fns/src/addWeeks/index.js.flow52
-rw-r--r--date-fns/src/addWeeks/index.ts36
-rw-r--r--date-fns/src/addWeeks/test.ts53
-rw-r--r--date-fns/src/addYears/benchmark.js21
-rw-r--r--date-fns/src/addYears/index.d.ts4
-rw-r--r--date-fns/src/addYears/index.js.flow52
-rw-r--r--date-fns/src/addYears/index.ts35
-rw-r--r--date-fns/src/addYears/test.ts69
-rw-r--r--date-fns/src/areIntervalsOverlapping/index.d.ts4
-rw-r--r--date-fns/src/areIntervalsOverlapping/index.js.flow58
-rw-r--r--date-fns/src/areIntervalsOverlapping/index.ts117
-rw-r--r--date-fns/src/areIntervalsOverlapping/test.ts253
-rw-r--r--date-fns/src/closestIndexTo/benchmark.js19
-rw-r--r--date-fns/src/closestIndexTo/index.d.ts4
-rw-r--r--date-fns/src/closestIndexTo/index.js79
-rw-r--r--date-fns/src/closestIndexTo/index.js.flow55
-rw-r--r--date-fns/src/closestIndexTo/test.js102
-rw-r--r--date-fns/src/closestTo/benchmark.js19
-rw-r--r--date-fns/src/closestTo/index.d.ts4
-rw-r--r--date-fns/src/closestTo/index.js77
-rw-r--r--date-fns/src/closestTo/index.js.flow55
-rw-r--r--date-fns/src/closestTo/test.js112
-rw-r--r--date-fns/src/compareAsc/benchmark.js16
-rw-r--r--date-fns/src/compareAsc/index.d.ts4
-rw-r--r--date-fns/src/compareAsc/index.js.flow55
-rw-r--r--date-fns/src/compareAsc/index.ts59
-rw-r--r--date-fns/src/compareAsc/test.ts81
-rw-r--r--date-fns/src/compareDesc/benchmark.js16
-rw-r--r--date-fns/src/compareDesc/index.d.ts4
-rw-r--r--date-fns/src/compareDesc/index.js.flow55
-rw-r--r--date-fns/src/compareDesc/index.ts59
-rw-r--r--date-fns/src/compareDesc/test.ts80
-rw-r--r--date-fns/src/constants/index.d.ts2
-rw-r--r--date-fns/src/constants/index.js.flow4
-rw-r--r--date-fns/src/constants/index.ts119
-rw-r--r--date-fns/src/daysToWeeks/index.d.ts4
-rw-r--r--date-fns/src/daysToWeeks/index.js.flow52
-rw-r--r--date-fns/src/daysToWeeks/index.ts31
-rw-r--r--date-fns/src/daysToWeeks/test.ts21
-rw-r--r--date-fns/src/differenceInBusinessDays/index.d.ts4
-rw-r--r--date-fns/src/differenceInBusinessDays/index.js.flow55
-rw-r--r--date-fns/src/differenceInBusinessDays/index.ts62
-rw-r--r--date-fns/src/differenceInBusinessDays/test.ts141
-rw-r--r--date-fns/src/differenceInCalendarDays/benchmark.js16
-rw-r--r--date-fns/src/differenceInCalendarDays/index.d.ts4
-rw-r--r--date-fns/src/differenceInCalendarDays/index.js.flow55
-rw-r--r--date-fns/src/differenceInCalendarDays/index.ts59
-rw-r--r--date-fns/src/differenceInCalendarDays/test.ts215
-rw-r--r--date-fns/src/differenceInCalendarISOWeekYears/benchmark.js16
-rw-r--r--date-fns/src/differenceInCalendarISOWeekYears/index.d.ts4
-rw-r--r--date-fns/src/differenceInCalendarISOWeekYears/index.js.flow55
-rw-r--r--date-fns/src/differenceInCalendarISOWeekYears/index.ts43
-rw-r--r--date-fns/src/differenceInCalendarISOWeekYears/test.ts118
-rw-r--r--date-fns/src/differenceInCalendarISOWeeks/benchmark.js16
-rw-r--r--date-fns/src/differenceInCalendarISOWeeks/index.d.ts4
-rw-r--r--date-fns/src/differenceInCalendarISOWeeks/index.js.flow55
-rw-r--r--date-fns/src/differenceInCalendarISOWeeks/index.ts54
-rw-r--r--date-fns/src/differenceInCalendarISOWeeks/test.ts104
-rw-r--r--date-fns/src/differenceInCalendarMonths/benchmark.js16
-rw-r--r--date-fns/src/differenceInCalendarMonths/index.d.ts4
-rw-r--r--date-fns/src/differenceInCalendarMonths/index.js.flow55
-rw-r--r--date-fns/src/differenceInCalendarMonths/index.ts42
-rw-r--r--date-fns/src/differenceInCalendarMonths/test.ts104
-rw-r--r--date-fns/src/differenceInCalendarQuarters/benchmark.js16
-rw-r--r--date-fns/src/differenceInCalendarQuarters/index.d.ts4
-rw-r--r--date-fns/src/differenceInCalendarQuarters/index.js.flow55
-rw-r--r--date-fns/src/differenceInCalendarQuarters/index.ts43
-rw-r--r--date-fns/src/differenceInCalendarQuarters/test.ts104
-rw-r--r--date-fns/src/differenceInCalendarWeeks/benchmark.js16
-rw-r--r--date-fns/src/differenceInCalendarWeeks/index.d.ts4
-rw-r--r--date-fns/src/differenceInCalendarWeeks/index.js.flow59
-rw-r--r--date-fns/src/differenceInCalendarWeeks/index.ts67
-rw-r--r--date-fns/src/differenceInCalendarWeeks/test.ts164
-rw-r--r--date-fns/src/differenceInCalendarYears/benchmark.js16
-rw-r--r--date-fns/src/differenceInCalendarYears/index.d.ts4
-rw-r--r--date-fns/src/differenceInCalendarYears/index.js.flow55
-rw-r--r--date-fns/src/differenceInCalendarYears/index.ts39
-rw-r--r--date-fns/src/differenceInCalendarYears/test.ts105
-rw-r--r--date-fns/src/differenceInDays/benchmark.js23
-rw-r--r--date-fns/src/differenceInDays/index.d.ts4
-rw-r--r--date-fns/src/differenceInDays/index.js.flow55
-rw-r--r--date-fns/src/differenceInDays/index.ts104
-rw-r--r--date-fns/src/differenceInDays/test.ts214
-rw-r--r--date-fns/src/differenceInHours/benchmark.js23
-rw-r--r--date-fns/src/differenceInHours/index.d.ts4
-rw-r--r--date-fns/src/differenceInHours/index.js.flow55
-rw-r--r--date-fns/src/differenceInHours/index.ts38
-rw-r--r--date-fns/src/differenceInHours/test.ts107
-rw-r--r--date-fns/src/differenceInISOWeekYears/benchmark.js16
-rw-r--r--date-fns/src/differenceInISOWeekYears/index.d.ts4
-rw-r--r--date-fns/src/differenceInISOWeekYears/index.js.flow55
-rw-r--r--date-fns/src/differenceInISOWeekYears/index.ts63
-rw-r--r--date-fns/src/differenceInISOWeekYears/test.ts115
-rw-r--r--date-fns/src/differenceInMilliseconds/benchmark.js23
-rw-r--r--date-fns/src/differenceInMilliseconds/index.d.ts4
-rw-r--r--date-fns/src/differenceInMilliseconds/index.js.flow55
-rw-r--r--date-fns/src/differenceInMilliseconds/index.ts39
-rw-r--r--date-fns/src/differenceInMilliseconds/test.ts70
-rw-r--r--date-fns/src/differenceInMinutes/benchmark.js23
-rw-r--r--date-fns/src/differenceInMinutes/index.d.ts4
-rw-r--r--date-fns/src/differenceInMinutes/index.js46
-rw-r--r--date-fns/src/differenceInMinutes/index.js.flow55
-rw-r--r--date-fns/src/differenceInMinutes/test.js105
-rw-r--r--date-fns/src/differenceInMonths/benchmark.js23
-rw-r--r--date-fns/src/differenceInMonths/index.d.ts4
-rw-r--r--date-fns/src/differenceInMonths/index.js.flow55
-rw-r--r--date-fns/src/differenceInMonths/index.ts72
-rw-r--r--date-fns/src/differenceInMonths/test.ts188
-rw-r--r--date-fns/src/differenceInQuarters/benchmark.js23
-rw-r--r--date-fns/src/differenceInQuarters/index.d.ts4
-rw-r--r--date-fns/src/differenceInQuarters/index.js.flow55
-rw-r--r--date-fns/src/differenceInQuarters/index.ts34
-rw-r--r--date-fns/src/differenceInQuarters/test.ts104
-rw-r--r--date-fns/src/differenceInSeconds/benchmark.js23
-rw-r--r--date-fns/src/differenceInSeconds/index.d.ts4
-rw-r--r--date-fns/src/differenceInSeconds/index.js.flow55
-rw-r--r--date-fns/src/differenceInSeconds/index.ts38
-rw-r--r--date-fns/src/differenceInSeconds/test.ts104
-rw-r--r--date-fns/src/differenceInWeeks/benchmark.js23
-rw-r--r--date-fns/src/differenceInWeeks/index.d.ts4
-rw-r--r--date-fns/src/differenceInWeeks/index.js.flow55
-rw-r--r--date-fns/src/differenceInWeeks/index.ts55
-rw-r--r--date-fns/src/differenceInWeeks/test.ts104
-rw-r--r--date-fns/src/differenceInYears/benchmark.js23
-rw-r--r--date-fns/src/differenceInYears/index.d.ts4
-rw-r--r--date-fns/src/differenceInYears/index.js.flow55
-rw-r--r--date-fns/src/differenceInYears/index.ts51
-rw-r--r--date-fns/src/differenceInYears/test.ts146
-rw-r--r--date-fns/src/eachDayOfInterval/benchmark.js16
-rw-r--r--date-fns/src/eachDayOfInterval/index.d.ts4
-rw-r--r--date-fns/src/eachDayOfInterval/index.js.flow57
-rw-r--r--date-fns/src/eachDayOfInterval/index.ts98
-rw-r--r--date-fns/src/eachDayOfInterval/test.ts137
-rw-r--r--date-fns/src/eachHourOfInterval/benchmark.js20
-rw-r--r--date-fns/src/eachHourOfInterval/index.d.ts4
-rw-r--r--date-fns/src/eachHourOfInterval/index.js.flow57
-rw-r--r--date-fns/src/eachHourOfInterval/index.ts69
-rw-r--r--date-fns/src/eachHourOfInterval/test.ts134
-rw-r--r--date-fns/src/eachMinuteOfInterval/benchmark.js20
-rw-r--r--date-fns/src/eachMinuteOfInterval/index.d.ts4
-rw-r--r--date-fns/src/eachMinuteOfInterval/index.js.flow57
-rw-r--r--date-fns/src/eachMinuteOfInterval/index.ts70
-rw-r--r--date-fns/src/eachMinuteOfInterval/test.ts99
-rw-r--r--date-fns/src/eachMonthOfInterval/index.d.ts4
-rw-r--r--date-fns/src/eachMonthOfInterval/index.js.flow52
-rw-r--r--date-fns/src/eachMonthOfInterval/index.ts59
-rw-r--r--date-fns/src/eachMonthOfInterval/test.ts120
-rw-r--r--date-fns/src/eachQuarterOfInterval/index.d.ts4
-rw-r--r--date-fns/src/eachQuarterOfInterval/index.js.flow52
-rw-r--r--date-fns/src/eachQuarterOfInterval/index.ts61
-rw-r--r--date-fns/src/eachQuarterOfInterval/test.ts108
-rw-r--r--date-fns/src/eachWeekOfInterval/benchmark.js16
-rw-r--r--date-fns/src/eachWeekOfInterval/index.d.ts4
-rw-r--r--date-fns/src/eachWeekOfInterval/index.js.flow58
-rw-r--r--date-fns/src/eachWeekOfInterval/index.ts84
-rw-r--r--date-fns/src/eachWeekOfInterval/test.ts145
-rwxr-xr-xdate-fns/src/eachWeekendOfInterval/benchmark.js16
-rw-r--r--date-fns/src/eachWeekendOfInterval/index.d.ts4
-rwxr-xr-xdate-fns/src/eachWeekendOfInterval/index.js.flow52
-rw-r--r--date-fns/src/eachWeekendOfInterval/index.ts47
-rw-r--r--date-fns/src/eachWeekendOfInterval/test.ts67
-rw-r--r--date-fns/src/eachWeekendOfMonth/benchmark.js15
-rw-r--r--date-fns/src/eachWeekendOfMonth/index.d.ts4
-rw-r--r--date-fns/src/eachWeekendOfMonth/index.js.flow52
-rw-r--r--date-fns/src/eachWeekendOfMonth/index.ts42
-rw-r--r--date-fns/src/eachWeekendOfMonth/test.ts31
-rw-r--r--date-fns/src/eachWeekendOfYear/benchmark.js14
-rw-r--r--date-fns/src/eachWeekendOfYear/index.d.ts4
-rw-r--r--date-fns/src/eachWeekendOfYear/index.js38
-rw-r--r--date-fns/src/eachWeekendOfYear/index.js.flow52
-rw-r--r--date-fns/src/eachWeekendOfYear/test.js24
-rw-r--r--date-fns/src/eachYearOfInterval/index.d.ts4
-rw-r--r--date-fns/src/eachYearOfInterval/index.js57
-rw-r--r--date-fns/src/eachYearOfInterval/index.js.flow52
-rw-r--r--date-fns/src/eachYearOfInterval/test.js105
-rw-r--r--date-fns/src/endOfDay/benchmark.js21
-rw-r--r--date-fns/src/endOfDay/index.d.ts4
-rw-r--r--date-fns/src/endOfDay/index.js.flow52
-rw-r--r--date-fns/src/endOfDay/index.ts32
-rw-r--r--date-fns/src/endOfDay/test.ts35
-rw-r--r--date-fns/src/endOfDecade/benchmark.js15
-rw-r--r--date-fns/src/endOfDecade/index.d.ts4
-rw-r--r--date-fns/src/endOfDecade/index.js.flow57
-rw-r--r--date-fns/src/endOfDecade/index.ts37
-rw-r--r--date-fns/src/endOfDecade/test.ts35
-rw-r--r--date-fns/src/endOfHour/benchmark.js21
-rw-r--r--date-fns/src/endOfHour/index.d.ts4
-rw-r--r--date-fns/src/endOfHour/index.js.flow52
-rw-r--r--date-fns/src/endOfHour/index.ts32
-rw-r--r--date-fns/src/endOfHour/test.ts34
-rw-r--r--date-fns/src/endOfISOWeek/benchmark.js21
-rw-r--r--date-fns/src/endOfISOWeek/index.d.ts4
-rw-r--r--date-fns/src/endOfISOWeek/index.js.flow52
-rw-r--r--date-fns/src/endOfISOWeek/index.ts32
-rw-r--r--date-fns/src/endOfISOWeek/test.ts35
-rw-r--r--date-fns/src/endOfISOWeekYear/benchmark.js15
-rw-r--r--date-fns/src/endOfISOWeekYear/index.d.ts4
-rw-r--r--date-fns/src/endOfISOWeekYear/index.js.flow52
-rw-r--r--date-fns/src/endOfISOWeekYear/index.ts45
-rw-r--r--date-fns/src/endOfISOWeekYear/test.ts46
-rw-r--r--date-fns/src/endOfMinute/benchmark.js21
-rw-r--r--date-fns/src/endOfMinute/index.d.ts4
-rw-r--r--date-fns/src/endOfMinute/index.js.flow52
-rw-r--r--date-fns/src/endOfMinute/index.ts32
-rw-r--r--date-fns/src/endOfMinute/test.ts34
-rw-r--r--date-fns/src/endOfMonth/benchmark.js21
-rw-r--r--date-fns/src/endOfMonth/index.d.ts4
-rw-r--r--date-fns/src/endOfMonth/index.js.flow52
-rw-r--r--date-fns/src/endOfMonth/index.ts34
-rw-r--r--date-fns/src/endOfMonth/test.ts52
-rw-r--r--date-fns/src/endOfQuarter/benchmark.js21
-rw-r--r--date-fns/src/endOfQuarter/index.d.ts4
-rw-r--r--date-fns/src/endOfQuarter/index.js.flow52
-rw-r--r--date-fns/src/endOfQuarter/index.ts35
-rw-r--r--date-fns/src/endOfQuarter/test.ts35
-rw-r--r--date-fns/src/endOfSecond/benchmark.js21
-rw-r--r--date-fns/src/endOfSecond/index.d.ts4
-rw-r--r--date-fns/src/endOfSecond/index.js.flow52
-rw-r--r--date-fns/src/endOfSecond/index.ts32
-rw-r--r--date-fns/src/endOfSecond/test.ts34
-rw-r--r--date-fns/src/endOfToday/benchmark.js9
-rw-r--r--date-fns/src/endOfToday/index.d.ts4
-rw-r--r--date-fns/src/endOfToday/index.js.flow52
-rw-r--r--date-fns/src/endOfToday/index.ts28
-rw-r--r--date-fns/src/endOfToday/test.ts24
-rw-r--r--date-fns/src/endOfTomorrow/benchmark.js9
-rw-r--r--date-fns/src/endOfTomorrow/index.d.ts4
-rw-r--r--date-fns/src/endOfTomorrow/index.js.flow52
-rw-r--r--date-fns/src/endOfTomorrow/index.ts34
-rw-r--r--date-fns/src/endOfTomorrow/test.ts34
-rw-r--r--date-fns/src/endOfWeek/benchmark.js21
-rw-r--r--date-fns/src/endOfWeek/index.d.ts4
-rw-r--r--date-fns/src/endOfWeek/index.js.flow58
-rw-r--r--date-fns/src/endOfWeek/index.ts67
-rw-r--r--date-fns/src/endOfWeek/test.ts144
-rw-r--r--date-fns/src/endOfYear/benchmark.js21
-rw-r--r--date-fns/src/endOfYear/index.d.ts4
-rw-r--r--date-fns/src/endOfYear/index.js.flow52
-rw-r--r--date-fns/src/endOfYear/index.ts34
-rw-r--r--date-fns/src/endOfYear/test.ts35
-rw-r--r--date-fns/src/endOfYesterday/benchmark.js9
-rw-r--r--date-fns/src/endOfYesterday/index.d.ts4
-rw-r--r--date-fns/src/endOfYesterday/index.js.flow52
-rw-r--r--date-fns/src/endOfYesterday/index.ts34
-rw-r--r--date-fns/src/endOfYesterday/test.ts34
-rw-r--r--date-fns/src/format/benchmark.js21
-rw-r--r--date-fns/src/format/index.d.ts4
-rw-r--r--date-fns/src/format/index.js471
-rw-r--r--date-fns/src/format/index.js.flow62
-rw-r--r--date-fns/src/format/test.js813
-rw-r--r--date-fns/src/formatDistance/benchmark.js23
-rw-r--r--date-fns/src/formatDistance/index.d.ts4
-rw-r--r--date-fns/src/formatDistance/index.js.flow60
-rw-r--r--date-fns/src/formatDistance/index.ts240
-rw-r--r--date-fns/src/formatDistance/test.ts299
-rw-r--r--date-fns/src/formatDistanceStrict/benchmark.js23
-rw-r--r--date-fns/src/formatDistanceStrict/index.d.ts4
-rw-r--r--date-fns/src/formatDistanceStrict/index.js.flow61
-rw-r--r--date-fns/src/formatDistanceStrict/index.ts283
-rw-r--r--date-fns/src/formatDistanceStrict/test.ts524
-rw-r--r--date-fns/src/formatDistanceToNow/benchmark.js25
-rw-r--r--date-fns/src/formatDistanceToNow/index.d.ts4
-rw-r--r--date-fns/src/formatDistanceToNow/index.js113
-rw-r--r--date-fns/src/formatDistanceToNow/index.js.flow59
-rw-r--r--date-fns/src/formatDistanceToNow/test.js232
-rw-r--r--date-fns/src/formatDistanceToNowStrict/benchmark.js25
-rw-r--r--date-fns/src/formatDistanceToNowStrict/index.d.ts4
-rw-r--r--date-fns/src/formatDistanceToNowStrict/index.js82
-rw-r--r--date-fns/src/formatDistanceToNowStrict/index.js.flow60
-rw-r--r--date-fns/src/formatDistanceToNowStrict/test.js422
-rw-r--r--date-fns/src/formatDuration/index.d.ts4
-rw-r--r--date-fns/src/formatDuration/index.js100
-rw-r--r--date-fns/src/formatDuration/index.js.flow60
-rw-r--r--date-fns/src/formatDuration/test.js80
-rw-r--r--date-fns/src/formatISO/index.d.ts4
-rw-r--r--date-fns/src/formatISO/index.js121
-rw-r--r--date-fns/src/formatISO/index.js.flow58
-rw-r--r--date-fns/src/formatISO/test.js122
-rw-r--r--date-fns/src/formatISO9075/index.d.ts4
-rw-r--r--date-fns/src/formatISO9075/index.js102
-rw-r--r--date-fns/src/formatISO9075/index.js.flow58
-rw-r--r--date-fns/src/formatISO9075/test.js90
-rw-r--r--date-fns/src/formatISODuration/index.d.ts4
-rw-r--r--date-fns/src/formatISODuration/index.js46
-rw-r--r--date-fns/src/formatISODuration/index.js.flow52
-rw-r--r--date-fns/src/formatISODuration/test.js78
-rw-r--r--date-fns/src/formatRFC3339/index.d.ts4
-rw-r--r--date-fns/src/formatRFC3339/index.js92
-rw-r--r--date-fns/src/formatRFC3339/index.js.flow57
-rw-r--r--date-fns/src/formatRFC3339/test.js81
-rw-r--r--date-fns/src/formatRFC7231/index.d.ts4
-rw-r--r--date-fns/src/formatRFC7231/index.js64
-rw-r--r--date-fns/src/formatRFC7231/index.js.flow52
-rw-r--r--date-fns/src/formatRFC7231/test.js25
-rw-r--r--date-fns/src/formatRelative/benchmark.js23
-rw-r--r--date-fns/src/formatRelative/index.d.ts4
-rw-r--r--date-fns/src/formatRelative/index.js.flow59
-rw-r--r--date-fns/src/formatRelative/index.ts98
-rw-r--r--date-fns/src/formatRelative/test.ts168
-rw-r--r--date-fns/src/fp/_lib/convertToFP/index.js12
-rw-r--r--date-fns/src/fp/_lib/convertToFP/test.js69
-rw-r--r--date-fns/src/fp/add/index.d.ts4
-rw-r--r--date-fns/src/fp/add/index.js8
-rw-r--r--date-fns/src/fp/add/index.js.flow58
-rw-r--r--date-fns/src/fp/addBusinessDays/index.d.ts4
-rw-r--r--date-fns/src/fp/addBusinessDays/index.js8
-rw-r--r--date-fns/src/fp/addBusinessDays/index.js.flow58
-rw-r--r--date-fns/src/fp/addDays/index.d.ts4
-rw-r--r--date-fns/src/fp/addDays/index.js8
-rw-r--r--date-fns/src/fp/addDays/index.js.flow58
-rw-r--r--date-fns/src/fp/addHours/index.d.ts4
-rw-r--r--date-fns/src/fp/addHours/index.js8
-rw-r--r--date-fns/src/fp/addHours/index.js.flow58
-rw-r--r--date-fns/src/fp/addISOWeekYears/index.d.ts4
-rw-r--r--date-fns/src/fp/addISOWeekYears/index.js8
-rw-r--r--date-fns/src/fp/addISOWeekYears/index.js.flow58
-rw-r--r--date-fns/src/fp/addMilliseconds/index.d.ts4
-rw-r--r--date-fns/src/fp/addMilliseconds/index.js8
-rw-r--r--date-fns/src/fp/addMilliseconds/index.js.flow58
-rw-r--r--date-fns/src/fp/addMinutes/index.d.ts4
-rw-r--r--date-fns/src/fp/addMinutes/index.js8
-rw-r--r--date-fns/src/fp/addMinutes/index.js.flow58
-rw-r--r--date-fns/src/fp/addMonths/index.d.ts4
-rw-r--r--date-fns/src/fp/addMonths/index.js8
-rw-r--r--date-fns/src/fp/addMonths/index.js.flow58
-rw-r--r--date-fns/src/fp/addQuarters/index.d.ts4
-rw-r--r--date-fns/src/fp/addQuarters/index.js8
-rw-r--r--date-fns/src/fp/addQuarters/index.js.flow58
-rw-r--r--date-fns/src/fp/addSeconds/index.d.ts4
-rw-r--r--date-fns/src/fp/addSeconds/index.js8
-rw-r--r--date-fns/src/fp/addSeconds/index.js.flow58
-rw-r--r--date-fns/src/fp/addWeeks/index.d.ts4
-rw-r--r--date-fns/src/fp/addWeeks/index.js8
-rw-r--r--date-fns/src/fp/addWeeks/index.js.flow58
-rw-r--r--date-fns/src/fp/addYears/index.d.ts4
-rw-r--r--date-fns/src/fp/addYears/index.js8
-rw-r--r--date-fns/src/fp/addYears/index.js.flow58
-rw-r--r--date-fns/src/fp/areIntervalsOverlapping/index.d.ts4
-rw-r--r--date-fns/src/fp/areIntervalsOverlapping/index.js8
-rw-r--r--date-fns/src/fp/areIntervalsOverlapping/index.js.flow58
-rw-r--r--date-fns/src/fp/areIntervalsOverlappingWithOptions/index.d.ts4
-rw-r--r--date-fns/src/fp/areIntervalsOverlappingWithOptions/index.js8
-rw-r--r--date-fns/src/fp/areIntervalsOverlappingWithOptions/index.js.flow74
-rw-r--r--date-fns/src/fp/closestIndexTo/index.d.ts4
-rw-r--r--date-fns/src/fp/closestIndexTo/index.js8
-rw-r--r--date-fns/src/fp/closestIndexTo/index.js.flow58
-rw-r--r--date-fns/src/fp/closestTo/index.d.ts4
-rw-r--r--date-fns/src/fp/closestTo/index.js8
-rw-r--r--date-fns/src/fp/closestTo/index.js.flow58
-rw-r--r--date-fns/src/fp/compareAsc/index.d.ts4
-rw-r--r--date-fns/src/fp/compareAsc/index.js8
-rw-r--r--date-fns/src/fp/compareAsc/index.js.flow58
-rw-r--r--date-fns/src/fp/compareDesc/index.d.ts4
-rw-r--r--date-fns/src/fp/compareDesc/index.js8
-rw-r--r--date-fns/src/fp/compareDesc/index.js.flow58
-rw-r--r--date-fns/src/fp/daysToWeeks/index.d.ts4
-rw-r--r--date-fns/src/fp/daysToWeeks/index.js8
-rw-r--r--date-fns/src/fp/daysToWeeks/index.js.flow54
-rw-r--r--date-fns/src/fp/differenceInBusinessDays/index.d.ts4
-rw-r--r--date-fns/src/fp/differenceInBusinessDays/index.js8
-rw-r--r--date-fns/src/fp/differenceInBusinessDays/index.js.flow58
-rw-r--r--date-fns/src/fp/differenceInCalendarDays/index.d.ts4
-rw-r--r--date-fns/src/fp/differenceInCalendarDays/index.js8
-rw-r--r--date-fns/src/fp/differenceInCalendarDays/index.js.flow58
-rw-r--r--date-fns/src/fp/differenceInCalendarISOWeekYears/index.d.ts4
-rw-r--r--date-fns/src/fp/differenceInCalendarISOWeekYears/index.js8
-rw-r--r--date-fns/src/fp/differenceInCalendarISOWeekYears/index.js.flow58
-rw-r--r--date-fns/src/fp/differenceInCalendarISOWeeks/index.d.ts4
-rw-r--r--date-fns/src/fp/differenceInCalendarISOWeeks/index.js8
-rw-r--r--date-fns/src/fp/differenceInCalendarISOWeeks/index.js.flow58
-rw-r--r--date-fns/src/fp/differenceInCalendarMonths/index.d.ts4
-rw-r--r--date-fns/src/fp/differenceInCalendarMonths/index.js8
-rw-r--r--date-fns/src/fp/differenceInCalendarMonths/index.js.flow58
-rw-r--r--date-fns/src/fp/differenceInCalendarQuarters/index.d.ts4
-rw-r--r--date-fns/src/fp/differenceInCalendarQuarters/index.js8
-rw-r--r--date-fns/src/fp/differenceInCalendarQuarters/index.js.flow58
-rw-r--r--date-fns/src/fp/differenceInCalendarWeeks/index.d.ts4
-rw-r--r--date-fns/src/fp/differenceInCalendarWeeks/index.js8
-rw-r--r--date-fns/src/fp/differenceInCalendarWeeks/index.js.flow58
-rw-r--r--date-fns/src/fp/differenceInCalendarWeeksWithOptions/index.d.ts4
-rw-r--r--date-fns/src/fp/differenceInCalendarWeeksWithOptions/index.js8
-rw-r--r--date-fns/src/fp/differenceInCalendarWeeksWithOptions/index.js.flow75
-rw-r--r--date-fns/src/fp/differenceInCalendarYears/index.d.ts4
-rw-r--r--date-fns/src/fp/differenceInCalendarYears/index.js8
-rw-r--r--date-fns/src/fp/differenceInCalendarYears/index.js.flow58
-rw-r--r--date-fns/src/fp/differenceInDays/index.d.ts4
-rw-r--r--date-fns/src/fp/differenceInDays/index.js8
-rw-r--r--date-fns/src/fp/differenceInDays/index.js.flow58
-rw-r--r--date-fns/src/fp/differenceInHours/index.d.ts4
-rw-r--r--date-fns/src/fp/differenceInHours/index.js8
-rw-r--r--date-fns/src/fp/differenceInHours/index.js.flow58
-rw-r--r--date-fns/src/fp/differenceInISOWeekYears/index.d.ts4
-rw-r--r--date-fns/src/fp/differenceInISOWeekYears/index.js8
-rw-r--r--date-fns/src/fp/differenceInISOWeekYears/index.js.flow58
-rw-r--r--date-fns/src/fp/differenceInMilliseconds/index.d.ts4
-rw-r--r--date-fns/src/fp/differenceInMilliseconds/index.js8
-rw-r--r--date-fns/src/fp/differenceInMilliseconds/index.js.flow58
-rw-r--r--date-fns/src/fp/differenceInMinutes/index.d.ts4
-rw-r--r--date-fns/src/fp/differenceInMinutes/index.js8
-rw-r--r--date-fns/src/fp/differenceInMinutes/index.js.flow58
-rw-r--r--date-fns/src/fp/differenceInMonths/index.d.ts4
-rw-r--r--date-fns/src/fp/differenceInMonths/index.js8
-rw-r--r--date-fns/src/fp/differenceInMonths/index.js.flow58
-rw-r--r--date-fns/src/fp/differenceInQuarters/index.d.ts4
-rw-r--r--date-fns/src/fp/differenceInQuarters/index.js8
-rw-r--r--date-fns/src/fp/differenceInQuarters/index.js.flow58
-rw-r--r--date-fns/src/fp/differenceInSeconds/index.d.ts4
-rw-r--r--date-fns/src/fp/differenceInSeconds/index.js8
-rw-r--r--date-fns/src/fp/differenceInSeconds/index.js.flow58
-rw-r--r--date-fns/src/fp/differenceInWeeks/index.d.ts4
-rw-r--r--date-fns/src/fp/differenceInWeeks/index.js8
-rw-r--r--date-fns/src/fp/differenceInWeeks/index.js.flow58
-rw-r--r--date-fns/src/fp/differenceInYears/index.d.ts4
-rw-r--r--date-fns/src/fp/differenceInYears/index.js8
-rw-r--r--date-fns/src/fp/differenceInYears/index.js.flow58
-rw-r--r--date-fns/src/fp/eachDayOfInterval/index.d.ts4
-rw-r--r--date-fns/src/fp/eachDayOfInterval/index.js8
-rw-r--r--date-fns/src/fp/eachDayOfInterval/index.js.flow54
-rw-r--r--date-fns/src/fp/eachDayOfIntervalWithOptions/index.d.ts4
-rw-r--r--date-fns/src/fp/eachDayOfIntervalWithOptions/index.js8
-rw-r--r--date-fns/src/fp/eachDayOfIntervalWithOptions/index.js.flow64
-rw-r--r--date-fns/src/fp/eachHourOfInterval/index.d.ts4
-rw-r--r--date-fns/src/fp/eachHourOfInterval/index.js8
-rw-r--r--date-fns/src/fp/eachHourOfInterval/index.js.flow54
-rw-r--r--date-fns/src/fp/eachHourOfIntervalWithOptions/index.d.ts4
-rw-r--r--date-fns/src/fp/eachHourOfIntervalWithOptions/index.js8
-rw-r--r--date-fns/src/fp/eachHourOfIntervalWithOptions/index.js.flow64
-rw-r--r--date-fns/src/fp/eachMinuteOfInterval/index.d.ts4
-rw-r--r--date-fns/src/fp/eachMinuteOfInterval/index.js8
-rw-r--r--date-fns/src/fp/eachMinuteOfInterval/index.js.flow54
-rw-r--r--date-fns/src/fp/eachMinuteOfIntervalWithOptions/index.d.ts4
-rw-r--r--date-fns/src/fp/eachMinuteOfIntervalWithOptions/index.js8
-rw-r--r--date-fns/src/fp/eachMinuteOfIntervalWithOptions/index.js.flow64
-rw-r--r--date-fns/src/fp/eachMonthOfInterval/index.d.ts4
-rw-r--r--date-fns/src/fp/eachMonthOfInterval/index.js8
-rw-r--r--date-fns/src/fp/eachMonthOfInterval/index.js.flow54
-rw-r--r--date-fns/src/fp/eachQuarterOfInterval/index.d.ts4
-rw-r--r--date-fns/src/fp/eachQuarterOfInterval/index.js8
-rw-r--r--date-fns/src/fp/eachQuarterOfInterval/index.js.flow54
-rw-r--r--date-fns/src/fp/eachWeekOfInterval/index.d.ts4
-rw-r--r--date-fns/src/fp/eachWeekOfInterval/index.js8
-rw-r--r--date-fns/src/fp/eachWeekOfInterval/index.js.flow54
-rw-r--r--date-fns/src/fp/eachWeekOfIntervalWithOptions/index.d.ts4
-rw-r--r--date-fns/src/fp/eachWeekOfIntervalWithOptions/index.js8
-rw-r--r--date-fns/src/fp/eachWeekOfIntervalWithOptions/index.js.flow65
-rw-r--r--date-fns/src/fp/eachWeekendOfInterval/index.d.ts4
-rw-r--r--date-fns/src/fp/eachWeekendOfInterval/index.js8
-rw-r--r--date-fns/src/fp/eachWeekendOfInterval/index.js.flow54
-rw-r--r--date-fns/src/fp/eachWeekendOfMonth/index.d.ts4
-rw-r--r--date-fns/src/fp/eachWeekendOfMonth/index.js8
-rw-r--r--date-fns/src/fp/eachWeekendOfMonth/index.js.flow54
-rw-r--r--date-fns/src/fp/eachWeekendOfYear/index.d.ts4
-rw-r--r--date-fns/src/fp/eachWeekendOfYear/index.js8
-rw-r--r--date-fns/src/fp/eachWeekendOfYear/index.js.flow54
-rw-r--r--date-fns/src/fp/eachYearOfInterval/index.d.ts4
-rw-r--r--date-fns/src/fp/eachYearOfInterval/index.js8
-rw-r--r--date-fns/src/fp/eachYearOfInterval/index.js.flow54
-rw-r--r--date-fns/src/fp/endOfDay/index.d.ts4
-rw-r--r--date-fns/src/fp/endOfDay/index.js8
-rw-r--r--date-fns/src/fp/endOfDay/index.js.flow54
-rw-r--r--date-fns/src/fp/endOfDecade/index.d.ts4
-rw-r--r--date-fns/src/fp/endOfDecade/index.js8
-rw-r--r--date-fns/src/fp/endOfDecade/index.js.flow54
-rw-r--r--date-fns/src/fp/endOfDecadeWithOptions/index.d.ts4
-rw-r--r--date-fns/src/fp/endOfDecadeWithOptions/index.js8
-rw-r--r--date-fns/src/fp/endOfDecadeWithOptions/index.js.flow64
-rw-r--r--date-fns/src/fp/endOfHour/index.d.ts4
-rw-r--r--date-fns/src/fp/endOfHour/index.js8
-rw-r--r--date-fns/src/fp/endOfHour/index.js.flow54
-rw-r--r--date-fns/src/fp/endOfISOWeek/index.d.ts4
-rw-r--r--date-fns/src/fp/endOfISOWeek/index.js8
-rw-r--r--date-fns/src/fp/endOfISOWeek/index.js.flow54
-rw-r--r--date-fns/src/fp/endOfISOWeekYear/index.d.ts4
-rw-r--r--date-fns/src/fp/endOfISOWeekYear/index.js8
-rw-r--r--date-fns/src/fp/endOfISOWeekYear/index.js.flow54
-rw-r--r--date-fns/src/fp/endOfMinute/index.d.ts4
-rw-r--r--date-fns/src/fp/endOfMinute/index.js8
-rw-r--r--date-fns/src/fp/endOfMinute/index.js.flow54
-rw-r--r--date-fns/src/fp/endOfMonth/index.d.ts4
-rw-r--r--date-fns/src/fp/endOfMonth/index.js8
-rw-r--r--date-fns/src/fp/endOfMonth/index.js.flow54
-rw-r--r--date-fns/src/fp/endOfQuarter/index.d.ts4
-rw-r--r--date-fns/src/fp/endOfQuarter/index.js8
-rw-r--r--date-fns/src/fp/endOfQuarter/index.js.flow54
-rw-r--r--date-fns/src/fp/endOfSecond/index.d.ts4
-rw-r--r--date-fns/src/fp/endOfSecond/index.js8
-rw-r--r--date-fns/src/fp/endOfSecond/index.js.flow54
-rw-r--r--date-fns/src/fp/endOfWeek/index.d.ts4
-rw-r--r--date-fns/src/fp/endOfWeek/index.js8
-rw-r--r--date-fns/src/fp/endOfWeek/index.js.flow54
-rw-r--r--date-fns/src/fp/endOfWeekWithOptions/index.d.ts4
-rw-r--r--date-fns/src/fp/endOfWeekWithOptions/index.js8
-rw-r--r--date-fns/src/fp/endOfWeekWithOptions/index.js.flow65
-rw-r--r--date-fns/src/fp/endOfYear/index.d.ts4
-rw-r--r--date-fns/src/fp/endOfYear/index.js8
-rw-r--r--date-fns/src/fp/endOfYear/index.js.flow54
-rw-r--r--date-fns/src/fp/format/index.d.ts4
-rw-r--r--date-fns/src/fp/format/index.js8
-rw-r--r--date-fns/src/fp/format/index.js.flow58
-rw-r--r--date-fns/src/fp/formatDistance/index.d.ts4
-rw-r--r--date-fns/src/fp/formatDistance/index.js8
-rw-r--r--date-fns/src/fp/formatDistance/index.js.flow58
-rw-r--r--date-fns/src/fp/formatDistanceStrict/index.d.ts4
-rw-r--r--date-fns/src/fp/formatDistanceStrict/index.js8
-rw-r--r--date-fns/src/fp/formatDistanceStrict/index.js.flow58
-rw-r--r--date-fns/src/fp/formatDistanceStrictWithOptions/index.d.ts4
-rw-r--r--date-fns/src/fp/formatDistanceStrictWithOptions/index.js8
-rw-r--r--date-fns/src/fp/formatDistanceStrictWithOptions/index.js.flow77
-rw-r--r--date-fns/src/fp/formatDistanceWithOptions/index.d.ts4
-rw-r--r--date-fns/src/fp/formatDistanceWithOptions/index.js8
-rw-r--r--date-fns/src/fp/formatDistanceWithOptions/index.js.flow76
-rw-r--r--date-fns/src/fp/formatDuration/index.d.ts4
-rw-r--r--date-fns/src/fp/formatDuration/index.js8
-rw-r--r--date-fns/src/fp/formatDuration/index.js.flow54
-rw-r--r--date-fns/src/fp/formatDurationWithOptions/index.d.ts4
-rw-r--r--date-fns/src/fp/formatDurationWithOptions/index.js8
-rw-r--r--date-fns/src/fp/formatDurationWithOptions/index.js.flow67
-rw-r--r--date-fns/src/fp/formatISO/index.d.ts4
-rw-r--r--date-fns/src/fp/formatISO/index.js8
-rw-r--r--date-fns/src/fp/formatISO/index.js.flow54
-rw-r--r--date-fns/src/fp/formatISO9075/index.d.ts4
-rw-r--r--date-fns/src/fp/formatISO9075/index.js8
-rw-r--r--date-fns/src/fp/formatISO9075/index.js.flow54
-rw-r--r--date-fns/src/fp/formatISO9075WithOptions/index.d.ts4
-rw-r--r--date-fns/src/fp/formatISO9075WithOptions/index.js8
-rw-r--r--date-fns/src/fp/formatISO9075WithOptions/index.js.flow65
-rw-r--r--date-fns/src/fp/formatISODuration/index.d.ts4
-rw-r--r--date-fns/src/fp/formatISODuration/index.js8
-rw-r--r--date-fns/src/fp/formatISODuration/index.js.flow54
-rw-r--r--date-fns/src/fp/formatISOWithOptions/index.d.ts4
-rw-r--r--date-fns/src/fp/formatISOWithOptions/index.js8
-rw-r--r--date-fns/src/fp/formatISOWithOptions/index.js.flow65
-rw-r--r--date-fns/src/fp/formatRFC3339/index.d.ts4
-rw-r--r--date-fns/src/fp/formatRFC3339/index.js8
-rw-r--r--date-fns/src/fp/formatRFC3339/index.js.flow54
-rw-r--r--date-fns/src/fp/formatRFC3339WithOptions/index.d.ts4
-rw-r--r--date-fns/src/fp/formatRFC3339WithOptions/index.js8
-rw-r--r--date-fns/src/fp/formatRFC3339WithOptions/index.js.flow64
-rw-r--r--date-fns/src/fp/formatRFC7231/index.d.ts4
-rw-r--r--date-fns/src/fp/formatRFC7231/index.js8
-rw-r--r--date-fns/src/fp/formatRFC7231/index.js.flow54
-rw-r--r--date-fns/src/fp/formatRelative/index.d.ts4
-rw-r--r--date-fns/src/fp/formatRelative/index.js8
-rw-r--r--date-fns/src/fp/formatRelative/index.js.flow58
-rw-r--r--date-fns/src/fp/formatRelativeWithOptions/index.d.ts4
-rw-r--r--date-fns/src/fp/formatRelativeWithOptions/index.js8
-rw-r--r--date-fns/src/fp/formatRelativeWithOptions/index.js.flow75
-rw-r--r--date-fns/src/fp/formatWithOptions/index.d.ts4
-rw-r--r--date-fns/src/fp/formatWithOptions/index.js8
-rw-r--r--date-fns/src/fp/formatWithOptions/index.js.flow78
-rw-r--r--date-fns/src/fp/fromUnixTime/index.d.ts4
-rw-r--r--date-fns/src/fp/fromUnixTime/index.js8
-rw-r--r--date-fns/src/fp/fromUnixTime/index.js.flow54
-rw-r--r--date-fns/src/fp/getDate/index.d.ts4
-rw-r--r--date-fns/src/fp/getDate/index.js8
-rw-r--r--date-fns/src/fp/getDate/index.js.flow54
-rw-r--r--date-fns/src/fp/getDay/index.d.ts4
-rw-r--r--date-fns/src/fp/getDay/index.js8
-rw-r--r--date-fns/src/fp/getDay/index.js.flow54
-rw-r--r--date-fns/src/fp/getDayOfYear/index.d.ts4
-rw-r--r--date-fns/src/fp/getDayOfYear/index.js8
-rw-r--r--date-fns/src/fp/getDayOfYear/index.js.flow54
-rw-r--r--date-fns/src/fp/getDaysInMonth/index.d.ts4
-rw-r--r--date-fns/src/fp/getDaysInMonth/index.js8
-rw-r--r--date-fns/src/fp/getDaysInMonth/index.js.flow54
-rw-r--r--date-fns/src/fp/getDaysInYear/index.d.ts4
-rw-r--r--date-fns/src/fp/getDaysInYear/index.js8
-rw-r--r--date-fns/src/fp/getDaysInYear/index.js.flow54
-rw-r--r--date-fns/src/fp/getDecade/index.d.ts4
-rw-r--r--date-fns/src/fp/getDecade/index.js8
-rw-r--r--date-fns/src/fp/getDecade/index.js.flow54
-rw-r--r--date-fns/src/fp/getHours/index.d.ts4
-rw-r--r--date-fns/src/fp/getHours/index.js8
-rw-r--r--date-fns/src/fp/getHours/index.js.flow54
-rw-r--r--date-fns/src/fp/getISODay/index.d.ts4
-rw-r--r--date-fns/src/fp/getISODay/index.js8
-rw-r--r--date-fns/src/fp/getISODay/index.js.flow54
-rw-r--r--date-fns/src/fp/getISOWeek/index.d.ts4
-rw-r--r--date-fns/src/fp/getISOWeek/index.js8
-rw-r--r--date-fns/src/fp/getISOWeek/index.js.flow54
-rw-r--r--date-fns/src/fp/getISOWeekYear/index.d.ts4
-rw-r--r--date-fns/src/fp/getISOWeekYear/index.js8
-rw-r--r--date-fns/src/fp/getISOWeekYear/index.js.flow54
-rw-r--r--date-fns/src/fp/getISOWeeksInYear/index.d.ts4
-rw-r--r--date-fns/src/fp/getISOWeeksInYear/index.js8
-rw-r--r--date-fns/src/fp/getISOWeeksInYear/index.js.flow54
-rw-r--r--date-fns/src/fp/getMilliseconds/index.d.ts4
-rw-r--r--date-fns/src/fp/getMilliseconds/index.js8
-rw-r--r--date-fns/src/fp/getMilliseconds/index.js.flow54
-rw-r--r--date-fns/src/fp/getMinutes/index.d.ts4
-rw-r--r--date-fns/src/fp/getMinutes/index.js8
-rw-r--r--date-fns/src/fp/getMinutes/index.js.flow54
-rw-r--r--date-fns/src/fp/getMonth/index.d.ts4
-rw-r--r--date-fns/src/fp/getMonth/index.js8
-rw-r--r--date-fns/src/fp/getMonth/index.js.flow54
-rw-r--r--date-fns/src/fp/getOverlappingDaysInIntervals/index.d.ts4
-rw-r--r--date-fns/src/fp/getOverlappingDaysInIntervals/index.js8
-rw-r--r--date-fns/src/fp/getOverlappingDaysInIntervals/index.js.flow58
-rw-r--r--date-fns/src/fp/getQuarter/index.d.ts4
-rw-r--r--date-fns/src/fp/getQuarter/index.js8
-rw-r--r--date-fns/src/fp/getQuarter/index.js.flow54
-rw-r--r--date-fns/src/fp/getSeconds/index.d.ts4
-rw-r--r--date-fns/src/fp/getSeconds/index.js8
-rw-r--r--date-fns/src/fp/getSeconds/index.js.flow54
-rw-r--r--date-fns/src/fp/getTime/index.d.ts4
-rw-r--r--date-fns/src/fp/getTime/index.js8
-rw-r--r--date-fns/src/fp/getTime/index.js.flow54
-rw-r--r--date-fns/src/fp/getUnixTime/index.d.ts4
-rw-r--r--date-fns/src/fp/getUnixTime/index.js8
-rw-r--r--date-fns/src/fp/getUnixTime/index.js.flow54
-rw-r--r--date-fns/src/fp/getWeek/index.d.ts4
-rw-r--r--date-fns/src/fp/getWeek/index.js8
-rw-r--r--date-fns/src/fp/getWeek/index.js.flow54
-rw-r--r--date-fns/src/fp/getWeekOfMonth/index.d.ts4
-rw-r--r--date-fns/src/fp/getWeekOfMonth/index.js8
-rw-r--r--date-fns/src/fp/getWeekOfMonth/index.js.flow54
-rw-r--r--date-fns/src/fp/getWeekOfMonthWithOptions/index.d.ts4
-rw-r--r--date-fns/src/fp/getWeekOfMonthWithOptions/index.js8
-rw-r--r--date-fns/src/fp/getWeekOfMonthWithOptions/index.js.flow65
-rw-r--r--date-fns/src/fp/getWeekWithOptions/index.d.ts4
-rw-r--r--date-fns/src/fp/getWeekWithOptions/index.js8
-rw-r--r--date-fns/src/fp/getWeekWithOptions/index.js.flow66
-rw-r--r--date-fns/src/fp/getWeekYear/index.d.ts4
-rw-r--r--date-fns/src/fp/getWeekYear/index.js8
-rw-r--r--date-fns/src/fp/getWeekYear/index.js.flow54
-rw-r--r--date-fns/src/fp/getWeekYearWithOptions/index.d.ts4
-rw-r--r--date-fns/src/fp/getWeekYearWithOptions/index.js8
-rw-r--r--date-fns/src/fp/getWeekYearWithOptions/index.js.flow66
-rw-r--r--date-fns/src/fp/getWeeksInMonth/index.d.ts4
-rw-r--r--date-fns/src/fp/getWeeksInMonth/index.js8
-rw-r--r--date-fns/src/fp/getWeeksInMonth/index.js.flow54
-rw-r--r--date-fns/src/fp/getWeeksInMonthWithOptions/index.d.ts4
-rw-r--r--date-fns/src/fp/getWeeksInMonthWithOptions/index.js8
-rw-r--r--date-fns/src/fp/getWeeksInMonthWithOptions/index.js.flow65
-rw-r--r--date-fns/src/fp/getYear/index.d.ts4
-rw-r--r--date-fns/src/fp/getYear/index.js8
-rw-r--r--date-fns/src/fp/getYear/index.js.flow54
-rw-r--r--date-fns/src/fp/hoursToMilliseconds/index.d.ts4
-rw-r--r--date-fns/src/fp/hoursToMilliseconds/index.js8
-rw-r--r--date-fns/src/fp/hoursToMilliseconds/index.js.flow54
-rw-r--r--date-fns/src/fp/hoursToMinutes/index.d.ts4
-rw-r--r--date-fns/src/fp/hoursToMinutes/index.js8
-rw-r--r--date-fns/src/fp/hoursToMinutes/index.js.flow54
-rw-r--r--date-fns/src/fp/hoursToSeconds/index.d.ts4
-rw-r--r--date-fns/src/fp/hoursToSeconds/index.js8
-rw-r--r--date-fns/src/fp/hoursToSeconds/index.js.flow54
-rw-r--r--date-fns/src/fp/index.js241
-rw-r--r--date-fns/src/fp/index.js.flow625
-rw-r--r--date-fns/src/fp/intervalToDuration/index.d.ts4
-rw-r--r--date-fns/src/fp/intervalToDuration/index.js8
-rw-r--r--date-fns/src/fp/intervalToDuration/index.js.flow54
-rw-r--r--date-fns/src/fp/intlFormat/index.d.ts4
-rw-r--r--date-fns/src/fp/intlFormat/index.js8
-rw-r--r--date-fns/src/fp/intlFormat/index.js.flow88
-rw-r--r--date-fns/src/fp/isAfter/index.d.ts4
-rw-r--r--date-fns/src/fp/isAfter/index.js8
-rw-r--r--date-fns/src/fp/isAfter/index.js.flow58
-rw-r--r--date-fns/src/fp/isBefore/index.d.ts4
-rw-r--r--date-fns/src/fp/isBefore/index.js8
-rw-r--r--date-fns/src/fp/isBefore/index.js.flow58
-rw-r--r--date-fns/src/fp/isDate/index.d.ts4
-rw-r--r--date-fns/src/fp/isDate/index.js8
-rw-r--r--date-fns/src/fp/isDate/index.js.flow54
-rw-r--r--date-fns/src/fp/isEqual/index.d.ts4
-rw-r--r--date-fns/src/fp/isEqual/index.js8
-rw-r--r--date-fns/src/fp/isEqual/index.js.flow58
-rw-r--r--date-fns/src/fp/isExists/index.d.ts4
-rw-r--r--date-fns/src/fp/isExists/index.js8
-rw-r--r--date-fns/src/fp/isExists/index.js.flow67
-rw-r--r--date-fns/src/fp/isFirstDayOfMonth/index.d.ts4
-rw-r--r--date-fns/src/fp/isFirstDayOfMonth/index.js8
-rw-r--r--date-fns/src/fp/isFirstDayOfMonth/index.js.flow54
-rw-r--r--date-fns/src/fp/isFriday/index.d.ts4
-rw-r--r--date-fns/src/fp/isFriday/index.js8
-rw-r--r--date-fns/src/fp/isFriday/index.js.flow54
-rw-r--r--date-fns/src/fp/isLastDayOfMonth/index.d.ts4
-rw-r--r--date-fns/src/fp/isLastDayOfMonth/index.js8
-rw-r--r--date-fns/src/fp/isLastDayOfMonth/index.js.flow54
-rw-r--r--date-fns/src/fp/isLeapYear/index.d.ts4
-rw-r--r--date-fns/src/fp/isLeapYear/index.js8
-rw-r--r--date-fns/src/fp/isLeapYear/index.js.flow54
-rw-r--r--date-fns/src/fp/isMatch/index.d.ts4
-rw-r--r--date-fns/src/fp/isMatch/index.js8
-rw-r--r--date-fns/src/fp/isMatch/index.js.flow58
-rw-r--r--date-fns/src/fp/isMatchWithOptions/index.d.ts4
-rw-r--r--date-fns/src/fp/isMatchWithOptions/index.js8
-rw-r--r--date-fns/src/fp/isMatchWithOptions/index.js.flow78
-rw-r--r--date-fns/src/fp/isMonday/index.d.ts4
-rw-r--r--date-fns/src/fp/isMonday/index.js8
-rw-r--r--date-fns/src/fp/isMonday/index.js.flow54
-rw-r--r--date-fns/src/fp/isSameDay/index.d.ts4
-rw-r--r--date-fns/src/fp/isSameDay/index.js8
-rw-r--r--date-fns/src/fp/isSameDay/index.js.flow58
-rw-r--r--date-fns/src/fp/isSameHour/index.d.ts4
-rw-r--r--date-fns/src/fp/isSameHour/index.js8
-rw-r--r--date-fns/src/fp/isSameHour/index.js.flow58
-rw-r--r--date-fns/src/fp/isSameISOWeek/index.d.ts4
-rw-r--r--date-fns/src/fp/isSameISOWeek/index.js8
-rw-r--r--date-fns/src/fp/isSameISOWeek/index.js.flow58
-rw-r--r--date-fns/src/fp/isSameISOWeekYear/index.d.ts4
-rw-r--r--date-fns/src/fp/isSameISOWeekYear/index.js8
-rw-r--r--date-fns/src/fp/isSameISOWeekYear/index.js.flow58
-rw-r--r--date-fns/src/fp/isSameMinute/index.d.ts4
-rw-r--r--date-fns/src/fp/isSameMinute/index.js8
-rw-r--r--date-fns/src/fp/isSameMinute/index.js.flow58
-rw-r--r--date-fns/src/fp/isSameMonth/index.d.ts4
-rw-r--r--date-fns/src/fp/isSameMonth/index.js8
-rw-r--r--date-fns/src/fp/isSameMonth/index.js.flow58
-rw-r--r--date-fns/src/fp/isSameQuarter/index.d.ts4
-rw-r--r--date-fns/src/fp/isSameQuarter/index.js8
-rw-r--r--date-fns/src/fp/isSameQuarter/index.js.flow58
-rw-r--r--date-fns/src/fp/isSameSecond/index.d.ts4
-rw-r--r--date-fns/src/fp/isSameSecond/index.js8
-rw-r--r--date-fns/src/fp/isSameSecond/index.js.flow58
-rw-r--r--date-fns/src/fp/isSameWeek/index.d.ts4
-rw-r--r--date-fns/src/fp/isSameWeek/index.js8
-rw-r--r--date-fns/src/fp/isSameWeek/index.js.flow58
-rw-r--r--date-fns/src/fp/isSameWeekWithOptions/index.d.ts4
-rw-r--r--date-fns/src/fp/isSameWeekWithOptions/index.js8
-rw-r--r--date-fns/src/fp/isSameWeekWithOptions/index.js.flow75
-rw-r--r--date-fns/src/fp/isSameYear/index.d.ts4
-rw-r--r--date-fns/src/fp/isSameYear/index.js8
-rw-r--r--date-fns/src/fp/isSameYear/index.js.flow58
-rw-r--r--date-fns/src/fp/isSaturday/index.d.ts4
-rw-r--r--date-fns/src/fp/isSaturday/index.js8
-rw-r--r--date-fns/src/fp/isSaturday/index.js.flow54
-rw-r--r--date-fns/src/fp/isSunday/index.d.ts4
-rw-r--r--date-fns/src/fp/isSunday/index.js8
-rw-r--r--date-fns/src/fp/isSunday/index.js.flow54
-rw-r--r--date-fns/src/fp/isThursday/index.d.ts4
-rw-r--r--date-fns/src/fp/isThursday/index.js8
-rw-r--r--date-fns/src/fp/isThursday/index.js.flow54
-rw-r--r--date-fns/src/fp/isTuesday/index.d.ts4
-rw-r--r--date-fns/src/fp/isTuesday/index.js8
-rw-r--r--date-fns/src/fp/isTuesday/index.js.flow54
-rw-r--r--date-fns/src/fp/isValid/index.d.ts4
-rw-r--r--date-fns/src/fp/isValid/index.js8
-rw-r--r--date-fns/src/fp/isValid/index.js.flow54
-rw-r--r--date-fns/src/fp/isWednesday/index.d.ts4
-rw-r--r--date-fns/src/fp/isWednesday/index.js8
-rw-r--r--date-fns/src/fp/isWednesday/index.js.flow54
-rw-r--r--date-fns/src/fp/isWeekend/index.d.ts4
-rw-r--r--date-fns/src/fp/isWeekend/index.js8
-rw-r--r--date-fns/src/fp/isWeekend/index.js.flow54
-rw-r--r--date-fns/src/fp/isWithinInterval/index.d.ts4
-rw-r--r--date-fns/src/fp/isWithinInterval/index.js8
-rw-r--r--date-fns/src/fp/isWithinInterval/index.js.flow58
-rw-r--r--date-fns/src/fp/lastDayOfDecade/index.d.ts4
-rw-r--r--date-fns/src/fp/lastDayOfDecade/index.js8
-rw-r--r--date-fns/src/fp/lastDayOfDecade/index.js.flow54
-rw-r--r--date-fns/src/fp/lastDayOfISOWeek/index.d.ts4
-rw-r--r--date-fns/src/fp/lastDayOfISOWeek/index.js8
-rw-r--r--date-fns/src/fp/lastDayOfISOWeek/index.js.flow54
-rw-r--r--date-fns/src/fp/lastDayOfISOWeekYear/index.d.ts4
-rw-r--r--date-fns/src/fp/lastDayOfISOWeekYear/index.js8
-rw-r--r--date-fns/src/fp/lastDayOfISOWeekYear/index.js.flow54
-rw-r--r--date-fns/src/fp/lastDayOfMonth/index.d.ts4
-rw-r--r--date-fns/src/fp/lastDayOfMonth/index.js8
-rw-r--r--date-fns/src/fp/lastDayOfMonth/index.js.flow54
-rw-r--r--date-fns/src/fp/lastDayOfQuarter/index.d.ts4
-rw-r--r--date-fns/src/fp/lastDayOfQuarter/index.js8
-rw-r--r--date-fns/src/fp/lastDayOfQuarter/index.js.flow54
-rw-r--r--date-fns/src/fp/lastDayOfQuarterWithOptions/index.d.ts4
-rw-r--r--date-fns/src/fp/lastDayOfQuarterWithOptions/index.js8
-rw-r--r--date-fns/src/fp/lastDayOfQuarterWithOptions/index.js.flow64
-rw-r--r--date-fns/src/fp/lastDayOfWeek/index.d.ts4
-rw-r--r--date-fns/src/fp/lastDayOfWeek/index.js8
-rw-r--r--date-fns/src/fp/lastDayOfWeek/index.js.flow54
-rw-r--r--date-fns/src/fp/lastDayOfWeekWithOptions/index.d.ts4
-rw-r--r--date-fns/src/fp/lastDayOfWeekWithOptions/index.js8
-rw-r--r--date-fns/src/fp/lastDayOfWeekWithOptions/index.js.flow65
-rw-r--r--date-fns/src/fp/lastDayOfYear/index.d.ts4
-rw-r--r--date-fns/src/fp/lastDayOfYear/index.js8
-rw-r--r--date-fns/src/fp/lastDayOfYear/index.js.flow54
-rw-r--r--date-fns/src/fp/lightFormat/index.d.ts4
-rw-r--r--date-fns/src/fp/lightFormat/index.js8
-rw-r--r--date-fns/src/fp/lightFormat/index.js.flow58
-rw-r--r--date-fns/src/fp/max/index.d.ts4
-rw-r--r--date-fns/src/fp/max/index.js8
-rw-r--r--date-fns/src/fp/max/index.js.flow54
-rw-r--r--date-fns/src/fp/milliseconds/index.d.ts4
-rw-r--r--date-fns/src/fp/milliseconds/index.js8
-rw-r--r--date-fns/src/fp/milliseconds/index.js.flow54
-rw-r--r--date-fns/src/fp/millisecondsToHours/index.d.ts4
-rw-r--r--date-fns/src/fp/millisecondsToHours/index.js8
-rw-r--r--date-fns/src/fp/millisecondsToHours/index.js.flow54
-rw-r--r--date-fns/src/fp/millisecondsToMinutes/index.d.ts4
-rw-r--r--date-fns/src/fp/millisecondsToMinutes/index.js8
-rw-r--r--date-fns/src/fp/millisecondsToMinutes/index.js.flow54
-rw-r--r--date-fns/src/fp/millisecondsToSeconds/index.d.ts4
-rw-r--r--date-fns/src/fp/millisecondsToSeconds/index.js8
-rw-r--r--date-fns/src/fp/millisecondsToSeconds/index.js.flow54
-rw-r--r--date-fns/src/fp/min/index.d.ts4
-rw-r--r--date-fns/src/fp/min/index.js8
-rw-r--r--date-fns/src/fp/min/index.js.flow54
-rw-r--r--date-fns/src/fp/minutesToHours/index.d.ts4
-rw-r--r--date-fns/src/fp/minutesToHours/index.js8
-rw-r--r--date-fns/src/fp/minutesToHours/index.js.flow54
-rw-r--r--date-fns/src/fp/minutesToMilliseconds/index.d.ts4
-rw-r--r--date-fns/src/fp/minutesToMilliseconds/index.js8
-rw-r--r--date-fns/src/fp/minutesToMilliseconds/index.js.flow54
-rw-r--r--date-fns/src/fp/minutesToSeconds/index.d.ts4
-rw-r--r--date-fns/src/fp/minutesToSeconds/index.js8
-rw-r--r--date-fns/src/fp/minutesToSeconds/index.js.flow54
-rw-r--r--date-fns/src/fp/monthsToQuarters/index.d.ts4
-rw-r--r--date-fns/src/fp/monthsToQuarters/index.js8
-rw-r--r--date-fns/src/fp/monthsToQuarters/index.js.flow54
-rw-r--r--date-fns/src/fp/monthsToYears/index.d.ts4
-rw-r--r--date-fns/src/fp/monthsToYears/index.js8
-rw-r--r--date-fns/src/fp/monthsToYears/index.js.flow54
-rw-r--r--date-fns/src/fp/nextDay/index.d.ts4
-rw-r--r--date-fns/src/fp/nextDay/index.js8
-rw-r--r--date-fns/src/fp/nextDay/index.js.flow58
-rw-r--r--date-fns/src/fp/nextFriday/index.d.ts4
-rw-r--r--date-fns/src/fp/nextFriday/index.js8
-rw-r--r--date-fns/src/fp/nextFriday/index.js.flow54
-rw-r--r--date-fns/src/fp/nextMonday/index.d.ts4
-rw-r--r--date-fns/src/fp/nextMonday/index.js8
-rw-r--r--date-fns/src/fp/nextMonday/index.js.flow54
-rw-r--r--date-fns/src/fp/nextSaturday/index.d.ts4
-rw-r--r--date-fns/src/fp/nextSaturday/index.js8
-rw-r--r--date-fns/src/fp/nextSaturday/index.js.flow54
-rw-r--r--date-fns/src/fp/nextSunday/index.d.ts4
-rw-r--r--date-fns/src/fp/nextSunday/index.js8
-rw-r--r--date-fns/src/fp/nextSunday/index.js.flow54
-rw-r--r--date-fns/src/fp/nextThursday/index.d.ts4
-rw-r--r--date-fns/src/fp/nextThursday/index.js8
-rw-r--r--date-fns/src/fp/nextThursday/index.js.flow54
-rw-r--r--date-fns/src/fp/nextTuesday/index.d.ts4
-rw-r--r--date-fns/src/fp/nextTuesday/index.js8
-rw-r--r--date-fns/src/fp/nextTuesday/index.js.flow54
-rw-r--r--date-fns/src/fp/nextWednesday/index.d.ts4
-rw-r--r--date-fns/src/fp/nextWednesday/index.js8
-rw-r--r--date-fns/src/fp/nextWednesday/index.js.flow54
-rw-r--r--date-fns/src/fp/parse/index.d.ts4
-rw-r--r--date-fns/src/fp/parse/index.js8
-rw-r--r--date-fns/src/fp/parse/index.js.flow67
-rw-r--r--date-fns/src/fp/parseISO/index.d.ts4
-rw-r--r--date-fns/src/fp/parseISO/index.js8
-rw-r--r--date-fns/src/fp/parseISO/index.js.flow54
-rw-r--r--date-fns/src/fp/parseISOWithOptions/index.d.ts4
-rw-r--r--date-fns/src/fp/parseISOWithOptions/index.js8
-rw-r--r--date-fns/src/fp/parseISOWithOptions/index.js.flow64
-rw-r--r--date-fns/src/fp/parseJSON/index.d.ts4
-rw-r--r--date-fns/src/fp/parseJSON/index.js8
-rw-r--r--date-fns/src/fp/parseJSON/index.js.flow54
-rw-r--r--date-fns/src/fp/parseWithOptions/index.d.ts4
-rw-r--r--date-fns/src/fp/parseWithOptions/index.js8
-rw-r--r--date-fns/src/fp/parseWithOptions/index.js.flow94
-rw-r--r--date-fns/src/fp/quartersToMonths/index.d.ts4
-rw-r--r--date-fns/src/fp/quartersToMonths/index.js8
-rw-r--r--date-fns/src/fp/quartersToMonths/index.js.flow54
-rw-r--r--date-fns/src/fp/quartersToYears/index.d.ts4
-rw-r--r--date-fns/src/fp/quartersToYears/index.js8
-rw-r--r--date-fns/src/fp/quartersToYears/index.js.flow54
-rw-r--r--date-fns/src/fp/roundToNearestMinutes/index.d.ts4
-rw-r--r--date-fns/src/fp/roundToNearestMinutes/index.js8
-rw-r--r--date-fns/src/fp/roundToNearestMinutes/index.js.flow54
-rw-r--r--date-fns/src/fp/roundToNearestMinutesWithOptions/index.d.ts4
-rw-r--r--date-fns/src/fp/roundToNearestMinutesWithOptions/index.js8
-rw-r--r--date-fns/src/fp/roundToNearestMinutesWithOptions/index.js.flow64
-rw-r--r--date-fns/src/fp/secondsToHours/index.d.ts4
-rw-r--r--date-fns/src/fp/secondsToHours/index.js8
-rw-r--r--date-fns/src/fp/secondsToHours/index.js.flow54
-rw-r--r--date-fns/src/fp/secondsToMilliseconds/index.d.ts4
-rw-r--r--date-fns/src/fp/secondsToMilliseconds/index.js8
-rw-r--r--date-fns/src/fp/secondsToMilliseconds/index.js.flow54
-rw-r--r--date-fns/src/fp/secondsToMinutes/index.d.ts4
-rw-r--r--date-fns/src/fp/secondsToMinutes/index.js8
-rw-r--r--date-fns/src/fp/secondsToMinutes/index.js.flow54
-rw-r--r--date-fns/src/fp/set/index.d.ts4
-rw-r--r--date-fns/src/fp/set/index.js8
-rw-r--r--date-fns/src/fp/set/index.js.flow70
-rw-r--r--date-fns/src/fp/setDate/index.d.ts4
-rw-r--r--date-fns/src/fp/setDate/index.js8
-rw-r--r--date-fns/src/fp/setDate/index.js.flow58
-rw-r--r--date-fns/src/fp/setDay/index.d.ts4
-rw-r--r--date-fns/src/fp/setDay/index.js8
-rw-r--r--date-fns/src/fp/setDay/index.js.flow58
-rw-r--r--date-fns/src/fp/setDayOfYear/index.d.ts4
-rw-r--r--date-fns/src/fp/setDayOfYear/index.js8
-rw-r--r--date-fns/src/fp/setDayOfYear/index.js.flow58
-rw-r--r--date-fns/src/fp/setDayWithOptions/index.d.ts4
-rw-r--r--date-fns/src/fp/setDayWithOptions/index.js8
-rw-r--r--date-fns/src/fp/setDayWithOptions/index.js.flow75
-rw-r--r--date-fns/src/fp/setHours/index.d.ts4
-rw-r--r--date-fns/src/fp/setHours/index.js8
-rw-r--r--date-fns/src/fp/setHours/index.js.flow58
-rw-r--r--date-fns/src/fp/setISODay/index.d.ts4
-rw-r--r--date-fns/src/fp/setISODay/index.js8
-rw-r--r--date-fns/src/fp/setISODay/index.js.flow58
-rw-r--r--date-fns/src/fp/setISOWeek/index.d.ts4
-rw-r--r--date-fns/src/fp/setISOWeek/index.js8
-rw-r--r--date-fns/src/fp/setISOWeek/index.js.flow58
-rw-r--r--date-fns/src/fp/setISOWeekYear/index.d.ts4
-rw-r--r--date-fns/src/fp/setISOWeekYear/index.js8
-rw-r--r--date-fns/src/fp/setISOWeekYear/index.js.flow58
-rw-r--r--date-fns/src/fp/setMilliseconds/index.d.ts4
-rw-r--r--date-fns/src/fp/setMilliseconds/index.js8
-rw-r--r--date-fns/src/fp/setMilliseconds/index.js.flow58
-rw-r--r--date-fns/src/fp/setMinutes/index.d.ts4
-rw-r--r--date-fns/src/fp/setMinutes/index.js8
-rw-r--r--date-fns/src/fp/setMinutes/index.js.flow58
-rw-r--r--date-fns/src/fp/setMonth/index.d.ts4
-rw-r--r--date-fns/src/fp/setMonth/index.js8
-rw-r--r--date-fns/src/fp/setMonth/index.js.flow58
-rw-r--r--date-fns/src/fp/setQuarter/index.d.ts4
-rw-r--r--date-fns/src/fp/setQuarter/index.js8
-rw-r--r--date-fns/src/fp/setQuarter/index.js.flow58
-rw-r--r--date-fns/src/fp/setSeconds/index.d.ts4
-rw-r--r--date-fns/src/fp/setSeconds/index.js8
-rw-r--r--date-fns/src/fp/setSeconds/index.js.flow58
-rw-r--r--date-fns/src/fp/setWeek/index.d.ts4
-rw-r--r--date-fns/src/fp/setWeek/index.js8
-rw-r--r--date-fns/src/fp/setWeek/index.js.flow58
-rw-r--r--date-fns/src/fp/setWeekWithOptions/index.d.ts4
-rw-r--r--date-fns/src/fp/setWeekWithOptions/index.js8
-rw-r--r--date-fns/src/fp/setWeekWithOptions/index.js.flow76
-rw-r--r--date-fns/src/fp/setWeekYear/index.d.ts4
-rw-r--r--date-fns/src/fp/setWeekYear/index.js8
-rw-r--r--date-fns/src/fp/setWeekYear/index.js.flow58
-rw-r--r--date-fns/src/fp/setWeekYearWithOptions/index.d.ts4
-rw-r--r--date-fns/src/fp/setWeekYearWithOptions/index.js8
-rw-r--r--date-fns/src/fp/setWeekYearWithOptions/index.js.flow76
-rw-r--r--date-fns/src/fp/setYear/index.d.ts4
-rw-r--r--date-fns/src/fp/setYear/index.js8
-rw-r--r--date-fns/src/fp/setYear/index.js.flow58
-rw-r--r--date-fns/src/fp/startOfDay/index.d.ts4
-rw-r--r--date-fns/src/fp/startOfDay/index.js8
-rw-r--r--date-fns/src/fp/startOfDay/index.js.flow54
-rw-r--r--date-fns/src/fp/startOfDecade/index.d.ts4
-rw-r--r--date-fns/src/fp/startOfDecade/index.js8
-rw-r--r--date-fns/src/fp/startOfDecade/index.js.flow54
-rw-r--r--date-fns/src/fp/startOfHour/index.d.ts4
-rw-r--r--date-fns/src/fp/startOfHour/index.js8
-rw-r--r--date-fns/src/fp/startOfHour/index.js.flow54
-rw-r--r--date-fns/src/fp/startOfISOWeek/index.d.ts4
-rw-r--r--date-fns/src/fp/startOfISOWeek/index.js8
-rw-r--r--date-fns/src/fp/startOfISOWeek/index.js.flow54
-rw-r--r--date-fns/src/fp/startOfISOWeekYear/index.d.ts4
-rw-r--r--date-fns/src/fp/startOfISOWeekYear/index.js8
-rw-r--r--date-fns/src/fp/startOfISOWeekYear/index.js.flow54
-rw-r--r--date-fns/src/fp/startOfMinute/index.d.ts4
-rw-r--r--date-fns/src/fp/startOfMinute/index.js8
-rw-r--r--date-fns/src/fp/startOfMinute/index.js.flow54
-rw-r--r--date-fns/src/fp/startOfMonth/index.d.ts4
-rw-r--r--date-fns/src/fp/startOfMonth/index.js8
-rw-r--r--date-fns/src/fp/startOfMonth/index.js.flow54
-rw-r--r--date-fns/src/fp/startOfQuarter/index.d.ts4
-rw-r--r--date-fns/src/fp/startOfQuarter/index.js8
-rw-r--r--date-fns/src/fp/startOfQuarter/index.js.flow54
-rw-r--r--date-fns/src/fp/startOfSecond/index.d.ts4
-rw-r--r--date-fns/src/fp/startOfSecond/index.js8
-rw-r--r--date-fns/src/fp/startOfSecond/index.js.flow54
-rw-r--r--date-fns/src/fp/startOfWeek/index.d.ts4
-rw-r--r--date-fns/src/fp/startOfWeek/index.js8
-rw-r--r--date-fns/src/fp/startOfWeek/index.js.flow54
-rw-r--r--date-fns/src/fp/startOfWeekWithOptions/index.d.ts4
-rw-r--r--date-fns/src/fp/startOfWeekWithOptions/index.js8
-rw-r--r--date-fns/src/fp/startOfWeekWithOptions/index.js.flow65
-rw-r--r--date-fns/src/fp/startOfWeekYear/index.d.ts4
-rw-r--r--date-fns/src/fp/startOfWeekYear/index.js8
-rw-r--r--date-fns/src/fp/startOfWeekYear/index.js.flow54
-rw-r--r--date-fns/src/fp/startOfWeekYearWithOptions/index.d.ts4
-rw-r--r--date-fns/src/fp/startOfWeekYearWithOptions/index.js8
-rw-r--r--date-fns/src/fp/startOfWeekYearWithOptions/index.js.flow66
-rw-r--r--date-fns/src/fp/startOfYear/index.d.ts4
-rw-r--r--date-fns/src/fp/startOfYear/index.js8
-rw-r--r--date-fns/src/fp/startOfYear/index.js.flow54
-rw-r--r--date-fns/src/fp/sub/index.d.ts4
-rw-r--r--date-fns/src/fp/sub/index.js8
-rw-r--r--date-fns/src/fp/sub/index.js.flow58
-rw-r--r--date-fns/src/fp/subBusinessDays/index.d.ts4
-rw-r--r--date-fns/src/fp/subBusinessDays/index.js8
-rw-r--r--date-fns/src/fp/subBusinessDays/index.js.flow58
-rw-r--r--date-fns/src/fp/subDays/index.d.ts4
-rw-r--r--date-fns/src/fp/subDays/index.js8
-rw-r--r--date-fns/src/fp/subDays/index.js.flow58
-rw-r--r--date-fns/src/fp/subHours/index.d.ts4
-rw-r--r--date-fns/src/fp/subHours/index.js8
-rw-r--r--date-fns/src/fp/subHours/index.js.flow58
-rw-r--r--date-fns/src/fp/subISOWeekYears/index.d.ts4
-rw-r--r--date-fns/src/fp/subISOWeekYears/index.js8
-rw-r--r--date-fns/src/fp/subISOWeekYears/index.js.flow58
-rw-r--r--date-fns/src/fp/subMilliseconds/index.d.ts4
-rw-r--r--date-fns/src/fp/subMilliseconds/index.js8
-rw-r--r--date-fns/src/fp/subMilliseconds/index.js.flow58
-rw-r--r--date-fns/src/fp/subMinutes/index.d.ts4
-rw-r--r--date-fns/src/fp/subMinutes/index.js8
-rw-r--r--date-fns/src/fp/subMinutes/index.js.flow58
-rw-r--r--date-fns/src/fp/subMonths/index.d.ts4
-rw-r--r--date-fns/src/fp/subMonths/index.js8
-rw-r--r--date-fns/src/fp/subMonths/index.js.flow58
-rw-r--r--date-fns/src/fp/subQuarters/index.d.ts4
-rw-r--r--date-fns/src/fp/subQuarters/index.js8
-rw-r--r--date-fns/src/fp/subQuarters/index.js.flow58
-rw-r--r--date-fns/src/fp/subSeconds/index.d.ts4
-rw-r--r--date-fns/src/fp/subSeconds/index.js8
-rw-r--r--date-fns/src/fp/subSeconds/index.js.flow58
-rw-r--r--date-fns/src/fp/subWeeks/index.d.ts4
-rw-r--r--date-fns/src/fp/subWeeks/index.js8
-rw-r--r--date-fns/src/fp/subWeeks/index.js.flow58
-rw-r--r--date-fns/src/fp/subYears/index.d.ts4
-rw-r--r--date-fns/src/fp/subYears/index.js8
-rw-r--r--date-fns/src/fp/subYears/index.js.flow58
-rw-r--r--date-fns/src/fp/test.js1045
-rw-r--r--date-fns/src/fp/toDate/index.d.ts4
-rw-r--r--date-fns/src/fp/toDate/index.js8
-rw-r--r--date-fns/src/fp/toDate/index.js.flow54
-rw-r--r--date-fns/src/fp/weeksToDays/index.d.ts4
-rw-r--r--date-fns/src/fp/weeksToDays/index.js8
-rw-r--r--date-fns/src/fp/weeksToDays/index.js.flow54
-rw-r--r--date-fns/src/fp/yearsToMonths/index.d.ts4
-rw-r--r--date-fns/src/fp/yearsToMonths/index.js8
-rw-r--r--date-fns/src/fp/yearsToMonths/index.js.flow54
-rw-r--r--date-fns/src/fp/yearsToQuarters/index.d.ts4
-rw-r--r--date-fns/src/fp/yearsToQuarters/index.js8
-rw-r--r--date-fns/src/fp/yearsToQuarters/index.js.flow54
-rw-r--r--date-fns/src/fromUnixTime/index.d.ts4
-rw-r--r--date-fns/src/fromUnixTime/index.js32
-rw-r--r--date-fns/src/fromUnixTime/index.js.flow52
-rw-r--r--date-fns/src/fromUnixTime/test.js21
-rw-r--r--date-fns/src/getDate/benchmark.js21
-rw-r--r--date-fns/src/getDate/index.d.ts4
-rw-r--r--date-fns/src/getDate/index.js.flow52
-rw-r--r--date-fns/src/getDate/index.ts31
-rw-r--r--date-fns/src/getDate/test.ts26
-rw-r--r--date-fns/src/getDay/benchmark.js21
-rw-r--r--date-fns/src/getDay/index.d.ts4
-rw-r--r--date-fns/src/getDay/index.js.flow52
-rw-r--r--date-fns/src/getDay/index.ts31
-rw-r--r--date-fns/src/getDay/test.ts26
-rw-r--r--date-fns/src/getDayOfYear/benchmark.js21
-rw-r--r--date-fns/src/getDayOfYear/index.d.ts4
-rw-r--r--date-fns/src/getDayOfYear/index.js.flow52
-rw-r--r--date-fns/src/getDayOfYear/index.ts34
-rw-r--r--date-fns/src/getDayOfYear/test.ts34
-rw-r--r--date-fns/src/getDaysInMonth/benchmark.js21
-rw-r--r--date-fns/src/getDaysInMonth/index.d.ts4
-rw-r--r--date-fns/src/getDaysInMonth/index.js.flow52
-rw-r--r--date-fns/src/getDaysInMonth/index.ts35
-rw-r--r--date-fns/src/getDaysInMonth/test.ts40
-rw-r--r--date-fns/src/getDaysInYear/benchmark.js15
-rw-r--r--date-fns/src/getDaysInYear/index.d.ts4
-rw-r--r--date-fns/src/getDaysInYear/index.js.flow52
-rw-r--r--date-fns/src/getDaysInYear/index.ts36
-rw-r--r--date-fns/src/getDaysInYear/test.ts42
-rw-r--r--date-fns/src/getDecade/benchmark.js21
-rw-r--r--date-fns/src/getDecade/index.d.ts4
-rw-r--r--date-fns/src/getDecade/index.js.flow52
-rw-r--r--date-fns/src/getDecade/index.ts32
-rw-r--r--date-fns/src/getDecade/test.ts26
-rw-r--r--date-fns/src/getHours/benchmark.js21
-rw-r--r--date-fns/src/getHours/index.d.ts4
-rw-r--r--date-fns/src/getHours/index.js.flow52
-rw-r--r--date-fns/src/getHours/index.ts31
-rw-r--r--date-fns/src/getHours/test.ts26
-rw-r--r--date-fns/src/getISODay/benchmark.js21
-rw-r--r--date-fns/src/getISODay/index.d.ts4
-rw-r--r--date-fns/src/getISODay/index.js.flow52
-rw-r--r--date-fns/src/getISODay/index.ts39
-rw-r--r--date-fns/src/getISODay/test.ts31
-rw-r--r--date-fns/src/getISOWeek/benchmark.js21
-rw-r--r--date-fns/src/getISOWeek/index.d.ts4
-rw-r--r--date-fns/src/getISOWeek/index.js.flow52
-rw-r--r--date-fns/src/getISOWeek/index.ts41
-rw-r--r--date-fns/src/getISOWeek/test.ts56
-rw-r--r--date-fns/src/getISOWeekYear/benchmark.js21
-rw-r--r--date-fns/src/getISOWeekYear/index.d.ts4
-rw-r--r--date-fns/src/getISOWeekYear/index.js.flow52
-rw-r--r--date-fns/src/getISOWeekYear/index.ts57
-rw-r--r--date-fns/src/getISOWeekYear/test.ts34
-rw-r--r--date-fns/src/getISOWeeksInYear/benchmark.js21
-rw-r--r--date-fns/src/getISOWeeksInYear/index.d.ts4
-rw-r--r--date-fns/src/getISOWeeksInYear/index.js.flow52
-rw-r--r--date-fns/src/getISOWeeksInYear/index.ts40
-rw-r--r--date-fns/src/getISOWeeksInYear/test.ts35
-rw-r--r--date-fns/src/getMilliseconds/benchmark.js21
-rw-r--r--date-fns/src/getMilliseconds/index.d.ts4
-rw-r--r--date-fns/src/getMilliseconds/index.js.flow52
-rw-r--r--date-fns/src/getMilliseconds/index.ts31
-rw-r--r--date-fns/src/getMilliseconds/test.ts30
-rw-r--r--date-fns/src/getMinutes/benchmark.js21
-rw-r--r--date-fns/src/getMinutes/index.d.ts4
-rw-r--r--date-fns/src/getMinutes/index.js.flow52
-rw-r--r--date-fns/src/getMinutes/index.ts31
-rw-r--r--date-fns/src/getMinutes/test.ts26
-rw-r--r--date-fns/src/getMonth/benchmark.js21
-rw-r--r--date-fns/src/getMonth/index.d.ts4
-rw-r--r--date-fns/src/getMonth/index.js.flow52
-rw-r--r--date-fns/src/getMonth/index.ts31
-rw-r--r--date-fns/src/getMonth/test.ts26
-rw-r--r--date-fns/src/getOverlappingDaysInIntervals/index.d.ts4
-rw-r--r--date-fns/src/getOverlappingDaysInIntervals/index.js.flow55
-rw-r--r--date-fns/src/getOverlappingDaysInIntervals/index.ts106
-rw-r--r--date-fns/src/getOverlappingDaysInIntervals/test.ts240
-rw-r--r--date-fns/src/getQuarter/benchmark.js21
-rw-r--r--date-fns/src/getQuarter/index.d.ts4
-rw-r--r--date-fns/src/getQuarter/index.js.flow52
-rw-r--r--date-fns/src/getQuarter/index.ts31
-rw-r--r--date-fns/src/getQuarter/test.ts26
-rw-r--r--date-fns/src/getSeconds/benchmark.js21
-rw-r--r--date-fns/src/getSeconds/index.d.ts4
-rw-r--r--date-fns/src/getSeconds/index.js.flow52
-rw-r--r--date-fns/src/getSeconds/index.ts31
-rw-r--r--date-fns/src/getSeconds/test.ts28
-rw-r--r--date-fns/src/getTime/benchmark.js21
-rw-r--r--date-fns/src/getTime/index.d.ts4
-rw-r--r--date-fns/src/getTime/index.js.flow52
-rw-r--r--date-fns/src/getTime/index.ts31
-rw-r--r--date-fns/src/getTime/test.ts28
-rw-r--r--date-fns/src/getUnixTime/benchmark.js21
-rw-r--r--date-fns/src/getUnixTime/index.d.ts4
-rw-r--r--date-fns/src/getUnixTime/index.js.flow52
-rw-r--r--date-fns/src/getUnixTime/index.ts29
-rw-r--r--date-fns/src/getUnixTime/test.ts28
-rw-r--r--date-fns/src/getWeek/index.d.ts4
-rw-r--r--date-fns/src/getWeek/index.js.flow59
-rw-r--r--date-fns/src/getWeek/index.ts64
-rw-r--r--date-fns/src/getWeek/test.ts73
-rw-r--r--date-fns/src/getWeekOfMonth/benchmark.js15
-rw-r--r--date-fns/src/getWeekOfMonth/index.d.ts4
-rw-r--r--date-fns/src/getWeekOfMonth/index.js72
-rw-r--r--date-fns/src/getWeekOfMonth/index.js.flow58
-rw-r--r--date-fns/src/getWeekOfMonth/test.js84
-rw-r--r--date-fns/src/getWeekYear/index.d.ts4
-rw-r--r--date-fns/src/getWeekYear/index.js.flow59
-rw-r--r--date-fns/src/getWeekYear/index.ts98
-rw-r--r--date-fns/src/getWeekYear/test.ts75
-rw-r--r--date-fns/src/getWeeksInMonth/index.d.ts4
-rw-r--r--date-fns/src/getWeeksInMonth/index.js.flow58
-rw-r--r--date-fns/src/getWeeksInMonth/index.ts51
-rw-r--r--date-fns/src/getWeeksInMonth/test.ts71
-rw-r--r--date-fns/src/getYear/benchmark.js21
-rw-r--r--date-fns/src/getYear/index.d.ts4
-rw-r--r--date-fns/src/getYear/index.js.flow52
-rw-r--r--date-fns/src/getYear/index.ts31
-rw-r--r--date-fns/src/getYear/test.ts26
-rw-r--r--date-fns/src/hoursToMilliseconds/index.d.ts4
-rw-r--r--date-fns/src/hoursToMilliseconds/index.js.flow52
-rw-r--r--date-fns/src/hoursToMilliseconds/index.ts25
-rw-r--r--date-fns/src/hoursToMilliseconds/test.ts20
-rw-r--r--date-fns/src/hoursToMinutes/index.d.ts4
-rw-r--r--date-fns/src/hoursToMinutes/index.js.flow52
-rw-r--r--date-fns/src/hoursToMinutes/index.ts25
-rw-r--r--date-fns/src/hoursToMinutes/test.ts20
-rw-r--r--date-fns/src/hoursToSeconds/index.d.ts4
-rw-r--r--date-fns/src/hoursToSeconds/index.js.flow52
-rw-r--r--date-fns/src/hoursToSeconds/index.ts25
-rw-r--r--date-fns/src/hoursToSeconds/test.ts20
-rw-r--r--date-fns/src/index.js230
-rw-r--r--date-fns/src/index.js.flow860
-rw-r--r--date-fns/src/intervalToDuration/index.d.ts4
-rw-r--r--date-fns/src/intervalToDuration/index.js.flow52
-rw-r--r--date-fns/src/intervalToDuration/index.ts81
-rw-r--r--date-fns/src/intervalToDuration/test.ts116
-rw-r--r--date-fns/src/intlFormat/index.d.ts4
-rw-r--r--date-fns/src/intlFormat/index.js.flow72
-rw-r--r--date-fns/src/intlFormat/index.ts116
-rw-r--r--date-fns/src/intlFormat/test.ts111
-rw-r--r--date-fns/src/isAfter/benchmark.js23
-rw-r--r--date-fns/src/isAfter/index.d.ts4
-rw-r--r--date-fns/src/isAfter/index.js.flow55
-rw-r--r--date-fns/src/isAfter/index.ts32
-rw-r--r--date-fns/src/isAfter/test.ts59
-rw-r--r--date-fns/src/isBefore/benchmark.js23
-rw-r--r--date-fns/src/isBefore/index.d.ts4
-rw-r--r--date-fns/src/isBefore/index.js.flow55
-rw-r--r--date-fns/src/isBefore/index.ts32
-rw-r--r--date-fns/src/isBefore/test.ts59
-rw-r--r--date-fns/src/isDate/index.d.ts4
-rw-r--r--date-fns/src/isDate/index.js.flow52
-rw-r--r--date-fns/src/isDate/index.ts47
-rw-r--r--date-fns/src/isDate/test.ts81
-rw-r--r--date-fns/src/isEqual/benchmark.js23
-rw-r--r--date-fns/src/isEqual/index.d.ts4
-rw-r--r--date-fns/src/isEqual/index.js.flow55
-rw-r--r--date-fns/src/isEqual/index.ts35
-rw-r--r--date-fns/src/isEqual/test.ts51
-rw-r--r--date-fns/src/isExists/benchmark.js21
-rw-r--r--date-fns/src/isExists/index.d.ts4
-rw-r--r--date-fns/src/isExists/index.js.flow52
-rw-r--r--date-fns/src/isExists/index.ts38
-rw-r--r--date-fns/src/isExists/test.ts21
-rw-r--r--date-fns/src/isFirstDayOfMonth/benchmark.js15
-rw-r--r--date-fns/src/isFirstDayOfMonth/index.d.ts4
-rw-r--r--date-fns/src/isFirstDayOfMonth/index.js.flow52
-rw-r--r--date-fns/src/isFirstDayOfMonth/index.ts29
-rw-r--r--date-fns/src/isFirstDayOfMonth/test.ts32
-rw-r--r--date-fns/src/isFriday/benchmark.js15
-rw-r--r--date-fns/src/isFriday/index.d.ts4
-rw-r--r--date-fns/src/isFriday/index.js.flow52
-rw-r--r--date-fns/src/isFriday/index.ts29
-rw-r--r--date-fns/src/isFriday/test.ts31
-rw-r--r--date-fns/src/isFuture/benchmark.js19
-rw-r--r--date-fns/src/isFuture/index.d.ts4
-rw-r--r--date-fns/src/isFuture/index.js.flow52
-rw-r--r--date-fns/src/isFuture/index.ts33
-rw-r--r--date-fns/src/isFuture/test.ts41
-rw-r--r--date-fns/src/isLastDayOfMonth/benchmark.js15
-rw-r--r--date-fns/src/isLastDayOfMonth/index.d.ts4
-rw-r--r--date-fns/src/isLastDayOfMonth/index.js.flow52
-rw-r--r--date-fns/src/isLastDayOfMonth/index.ts32
-rw-r--r--date-fns/src/isLastDayOfMonth/test.ts32
-rw-r--r--date-fns/src/isLeapYear/benchmark.js21
-rw-r--r--date-fns/src/isLeapYear/index.d.ts4
-rw-r--r--date-fns/src/isLeapYear/index.js.flow52
-rw-r--r--date-fns/src/isLeapYear/index.ts31
-rw-r--r--date-fns/src/isLeapYear/test.ts42
-rw-r--r--date-fns/src/isMatch/index.d.ts4
-rw-r--r--date-fns/src/isMatch/index.js300
-rw-r--r--date-fns/src/isMatch/index.js.flow62
-rw-r--r--date-fns/src/isMatch/test.js24
-rw-r--r--date-fns/src/isMonday/benchmark.js15
-rw-r--r--date-fns/src/isMonday/index.d.ts4
-rw-r--r--date-fns/src/isMonday/index.js.flow52
-rw-r--r--date-fns/src/isMonday/index.ts29
-rw-r--r--date-fns/src/isMonday/test.ts31
-rw-r--r--date-fns/src/isPast/benchmark.js19
-rw-r--r--date-fns/src/isPast/index.d.ts4
-rw-r--r--date-fns/src/isPast/index.js.flow52
-rw-r--r--date-fns/src/isPast/index.ts33
-rw-r--r--date-fns/src/isPast/test.ts42
-rw-r--r--date-fns/src/isSameDay/benchmark.js23
-rw-r--r--date-fns/src/isSameDay/index.d.ts4
-rw-r--r--date-fns/src/isSameDay/index.js.flow55
-rw-r--r--date-fns/src/isSameDay/index.ts33
-rw-r--r--date-fns/src/isSameDay/test.ts51
-rw-r--r--date-fns/src/isSameHour/benchmark.js23
-rw-r--r--date-fns/src/isSameHour/index.d.ts4
-rw-r--r--date-fns/src/isSameHour/index.js.flow55
-rw-r--r--date-fns/src/isSameHour/index.ts33
-rw-r--r--date-fns/src/isSameHour/test.ts51
-rw-r--r--date-fns/src/isSameISOWeek/benchmark.js16
-rw-r--r--date-fns/src/isSameISOWeek/index.d.ts4
-rw-r--r--date-fns/src/isSameISOWeek/index.js.flow55
-rw-r--r--date-fns/src/isSameISOWeek/index.ts32
-rw-r--r--date-fns/src/isSameISOWeek/test.ts51
-rw-r--r--date-fns/src/isSameISOWeekYear/benchmark.js16
-rw-r--r--date-fns/src/isSameISOWeekYear/index.d.ts4
-rw-r--r--date-fns/src/isSameISOWeekYear/index.js.flow55
-rw-r--r--date-fns/src/isSameISOWeekYear/index.ts40
-rw-r--r--date-fns/src/isSameISOWeekYear/test.ts68
-rw-r--r--date-fns/src/isSameMinute/benchmark.js23
-rw-r--r--date-fns/src/isSameMinute/index.d.ts4
-rw-r--r--date-fns/src/isSameMinute/index.js.flow55
-rw-r--r--date-fns/src/isSameMinute/index.ts37
-rw-r--r--date-fns/src/isSameMinute/test.ts51
-rw-r--r--date-fns/src/isSameMonth/benchmark.js23
-rw-r--r--date-fns/src/isSameMonth/index.d.ts4
-rw-r--r--date-fns/src/isSameMonth/index.js.flow55
-rw-r--r--date-fns/src/isSameMonth/index.ts35
-rw-r--r--date-fns/src/isSameMonth/test.ts51
-rw-r--r--date-fns/src/isSameQuarter/benchmark.js23
-rw-r--r--date-fns/src/isSameQuarter/index.d.ts4
-rw-r--r--date-fns/src/isSameQuarter/index.js.flow55
-rw-r--r--date-fns/src/isSameQuarter/index.ts33
-rw-r--r--date-fns/src/isSameQuarter/test.ts51
-rw-r--r--date-fns/src/isSameSecond/benchmark.js23
-rw-r--r--date-fns/src/isSameSecond/index.d.ts4
-rw-r--r--date-fns/src/isSameSecond/index.js.flow55
-rw-r--r--date-fns/src/isSameSecond/index.ts37
-rw-r--r--date-fns/src/isSameSecond/test.ts51
-rw-r--r--date-fns/src/isSameWeek/benchmark.js23
-rw-r--r--date-fns/src/isSameWeek/index.d.ts4
-rw-r--r--date-fns/src/isSameWeek/index.js.flow59
-rw-r--r--date-fns/src/isSameWeek/index.ts50
-rw-r--r--date-fns/src/isSameWeek/test.ts109
-rw-r--r--date-fns/src/isSameYear/benchmark.js23
-rw-r--r--date-fns/src/isSameYear/index.d.ts4
-rw-r--r--date-fns/src/isSameYear/index.js.flow55
-rw-r--r--date-fns/src/isSameYear/index.ts35
-rw-r--r--date-fns/src/isSameYear/test.ts51
-rw-r--r--date-fns/src/isSaturday/benchmark.js15
-rw-r--r--date-fns/src/isSaturday/index.d.ts4
-rw-r--r--date-fns/src/isSaturday/index.js.flow52
-rw-r--r--date-fns/src/isSaturday/index.ts29
-rw-r--r--date-fns/src/isSaturday/test.ts31
-rw-r--r--date-fns/src/isSunday/benchmark.js15
-rw-r--r--date-fns/src/isSunday/index.d.ts4
-rw-r--r--date-fns/src/isSunday/index.js.flow52
-rw-r--r--date-fns/src/isSunday/index.ts29
-rw-r--r--date-fns/src/isSunday/test.ts31
-rw-r--r--date-fns/src/isThisHour/benchmark.js20
-rw-r--r--date-fns/src/isThisHour/index.d.ts4
-rw-r--r--date-fns/src/isThisHour/index.js.flow52
-rw-r--r--date-fns/src/isThisHour/index.ts34
-rw-r--r--date-fns/src/isThisHour/test.ts39
-rw-r--r--date-fns/src/isThisISOWeek/benchmark.js20
-rw-r--r--date-fns/src/isThisISOWeek/index.d.ts4
-rw-r--r--date-fns/src/isThisISOWeek/index.js.flow52
-rw-r--r--date-fns/src/isThisISOWeek/index.ts36
-rw-r--r--date-fns/src/isThisISOWeek/test.ts36
-rw-r--r--date-fns/src/isThisMinute/benchmark.js20
-rw-r--r--date-fns/src/isThisMinute/index.d.ts4
-rw-r--r--date-fns/src/isThisMinute/index.js.flow52
-rw-r--r--date-fns/src/isThisMinute/index.ts35
-rw-r--r--date-fns/src/isThisMinute/test.ts39
-rw-r--r--date-fns/src/isThisMonth/benchmark.js20
-rw-r--r--date-fns/src/isThisMonth/index.d.ts4
-rw-r--r--date-fns/src/isThisMonth/index.js.flow52
-rw-r--r--date-fns/src/isThisMonth/index.ts34
-rw-r--r--date-fns/src/isThisMonth/test.ts37
-rw-r--r--date-fns/src/isThisQuarter/benchmark.js20
-rw-r--r--date-fns/src/isThisQuarter/index.d.ts4
-rw-r--r--date-fns/src/isThisQuarter/index.js.flow52
-rw-r--r--date-fns/src/isThisQuarter/index.ts33
-rw-r--r--date-fns/src/isThisQuarter/test.ts37
-rw-r--r--date-fns/src/isThisSecond/benchmark.js20
-rw-r--r--date-fns/src/isThisSecond/index.d.ts4
-rw-r--r--date-fns/src/isThisSecond/index.js.flow52
-rw-r--r--date-fns/src/isThisSecond/index.ts34
-rw-r--r--date-fns/src/isThisSecond/test.ts39
-rw-r--r--date-fns/src/isThisWeek/benchmark.js20
-rw-r--r--date-fns/src/isThisWeek/index.d.ts4
-rw-r--r--date-fns/src/isThisWeek/index.js.flow58
-rw-r--r--date-fns/src/isThisWeek/index.ts48
-rw-r--r--date-fns/src/isThisWeek/test.ts42
-rw-r--r--date-fns/src/isThisYear/benchmark.js19
-rw-r--r--date-fns/src/isThisYear/index.d.ts4
-rw-r--r--date-fns/src/isThisYear/index.js.flow52
-rw-r--r--date-fns/src/isThisYear/index.ts33
-rw-r--r--date-fns/src/isThisYear/test.ts37
-rw-r--r--date-fns/src/isThursday/benchmark.js15
-rw-r--r--date-fns/src/isThursday/index.d.ts4
-rw-r--r--date-fns/src/isThursday/index.js.flow52
-rw-r--r--date-fns/src/isThursday/index.ts29
-rw-r--r--date-fns/src/isThursday/test.ts31
-rw-r--r--date-fns/src/isToday/benchmark.js19
-rw-r--r--date-fns/src/isToday/index.d.ts4
-rw-r--r--date-fns/src/isToday/index.js.flow52
-rw-r--r--date-fns/src/isToday/index.ts33
-rw-r--r--date-fns/src/isToday/test.ts37
-rw-r--r--date-fns/src/isTomorrow/benchmark.js19
-rw-r--r--date-fns/src/isTomorrow/index.d.ts4
-rw-r--r--date-fns/src/isTomorrow/index.js.flow52
-rw-r--r--date-fns/src/isTomorrow/index.ts34
-rw-r--r--date-fns/src/isTomorrow/test.ts37
-rw-r--r--date-fns/src/isTuesday/benchmark.js15
-rw-r--r--date-fns/src/isTuesday/index.d.ts4
-rw-r--r--date-fns/src/isTuesday/index.js.flow52
-rw-r--r--date-fns/src/isTuesday/index.ts29
-rw-r--r--date-fns/src/isTuesday/test.ts31
-rw-r--r--date-fns/src/isValid/benchmark.js21
-rw-r--r--date-fns/src/isValid/index.d.ts4
-rw-r--r--date-fns/src/isValid/index.js66
-rw-r--r--date-fns/src/isValid/index.js.flow52
-rw-r--r--date-fns/src/isValid/test.js31
-rw-r--r--date-fns/src/isWednesday/benchmark.js15
-rw-r--r--date-fns/src/isWednesday/index.d.ts4
-rw-r--r--date-fns/src/isWednesday/index.js.flow52
-rw-r--r--date-fns/src/isWednesday/index.ts29
-rw-r--r--date-fns/src/isWednesday/test.ts31
-rw-r--r--date-fns/src/isWeekend/benchmark.js15
-rw-r--r--date-fns/src/isWeekend/index.d.ts4
-rw-r--r--date-fns/src/isWeekend/index.js.flow52
-rw-r--r--date-fns/src/isWeekend/index.ts31
-rw-r--r--date-fns/src/isWeekend/test.ts31
-rw-r--r--date-fns/src/isWithinInterval/benchmark.js25
-rw-r--r--date-fns/src/isWithinInterval/index.d.ts4
-rw-r--r--date-fns/src/isWithinInterval/index.js.flow52
-rw-r--r--date-fns/src/isWithinInterval/index.ts91
-rw-r--r--date-fns/src/isWithinInterval/test.ts104
-rw-r--r--date-fns/src/isYesterday/benchmark.js19
-rw-r--r--date-fns/src/isYesterday/index.d.ts4
-rw-r--r--date-fns/src/isYesterday/index.js.flow52
-rw-r--r--date-fns/src/isYesterday/index.ts34
-rw-r--r--date-fns/src/isYesterday/test.ts38
-rw-r--r--date-fns/src/lastDayOfDecade/benchmark.js15
-rw-r--r--date-fns/src/lastDayOfDecade/index.d.ts4
-rw-r--r--date-fns/src/lastDayOfDecade/index.js.flow52
-rw-r--r--date-fns/src/lastDayOfDecade/index.ts34
-rw-r--r--date-fns/src/lastDayOfDecade/test.ts34
-rw-r--r--date-fns/src/lastDayOfISOWeek/benchmark.js15
-rw-r--r--date-fns/src/lastDayOfISOWeek/index.d.ts4
-rw-r--r--date-fns/src/lastDayOfISOWeek/index.js.flow52
-rw-r--r--date-fns/src/lastDayOfISOWeek/index.ts32
-rw-r--r--date-fns/src/lastDayOfISOWeek/test.ts34
-rw-r--r--date-fns/src/lastDayOfISOWeekYear/benchmark.js15
-rw-r--r--date-fns/src/lastDayOfISOWeekYear/index.d.ts4
-rw-r--r--date-fns/src/lastDayOfISOWeekYear/index.js.flow52
-rw-r--r--date-fns/src/lastDayOfISOWeekYear/index.ts45
-rw-r--r--date-fns/src/lastDayOfISOWeekYear/test.ts45
-rw-r--r--date-fns/src/lastDayOfMonth/benchmark.js15
-rw-r--r--date-fns/src/lastDayOfMonth/index.d.ts4
-rw-r--r--date-fns/src/lastDayOfMonth/index.js.flow52
-rw-r--r--date-fns/src/lastDayOfMonth/index.ts34
-rw-r--r--date-fns/src/lastDayOfMonth/test.ts48
-rw-r--r--date-fns/src/lastDayOfQuarter/benchmark.js15
-rw-r--r--date-fns/src/lastDayOfQuarter/index.d.ts4
-rw-r--r--date-fns/src/lastDayOfQuarter/index.js.flow57
-rw-r--r--date-fns/src/lastDayOfQuarter/index.ts38
-rw-r--r--date-fns/src/lastDayOfQuarter/test.ts34
-rw-r--r--date-fns/src/lastDayOfWeek/benchmark.js15
-rw-r--r--date-fns/src/lastDayOfWeek/index.d.ts4
-rw-r--r--date-fns/src/lastDayOfWeek/index.js.flow58
-rw-r--r--date-fns/src/lastDayOfWeek/index.ts66
-rw-r--r--date-fns/src/lastDayOfWeek/test.ts111
-rw-r--r--date-fns/src/lastDayOfYear/benchmark.js15
-rw-r--r--date-fns/src/lastDayOfYear/index.d.ts4
-rw-r--r--date-fns/src/lastDayOfYear/index.js.flow52
-rw-r--r--date-fns/src/lastDayOfYear/index.ts34
-rw-r--r--date-fns/src/lastDayOfYear/test.ts34
-rw-r--r--date-fns/src/lightFormat/index.d.ts4
-rw-r--r--date-fns/src/lightFormat/index.js.flow52
-rw-r--r--date-fns/src/lightFormat/index.ts144
-rw-r--r--date-fns/src/lightFormat/test.ts158
-rw-r--r--date-fns/src/locale/_lib/buildFormatLongFn/index.js8
-rw-r--r--date-fns/src/locale/_lib/buildLocalizeFn/index.js23
-rw-r--r--date-fns/src/locale/_lib/buildMatchFn/index.js56
-rw-r--r--date-fns/src/locale/_lib/buildMatchPatternFn/index.js24
-rw-r--r--date-fns/src/locale/af/_lib/formatDistance/index.js101
-rw-r--r--date-fns/src/locale/af/_lib/formatLong/index.js41
-rw-r--r--date-fns/src/locale/af/_lib/formatRelative/index.js12
-rw-r--r--date-fns/src/locale/af/_lib/localize/index.js176
-rw-r--r--date-fns/src/locale/af/_lib/match/index.js136
-rw-r--r--date-fns/src/locale/af/index.d.ts4
-rw-r--r--date-fns/src/locale/af/index.js28
-rw-r--r--date-fns/src/locale/af/index.js.flow35
-rw-r--r--date-fns/src/locale/af/snapshot.md304
-rw-r--r--date-fns/src/locale/ar-DZ/_lib/formatDistance/index.js135
-rw-r--r--date-fns/src/locale/ar-DZ/_lib/formatLong/index.js41
-rw-r--r--date-fns/src/locale/ar-DZ/_lib/formatRelative/index.js12
-rw-r--r--date-fns/src/locale/ar-DZ/_lib/localize/index.js163
-rw-r--r--date-fns/src/locale/ar-DZ/_lib/match/index.js147
-rw-r--r--date-fns/src/locale/ar-DZ/index.d.ts4
-rw-r--r--date-fns/src/locale/ar-DZ/index.js29
-rw-r--r--date-fns/src/locale/ar-DZ/index.js.flow35
-rw-r--r--date-fns/src/locale/ar-DZ/snapshot.md304
-rw-r--r--date-fns/src/locale/ar-MA/_lib/formatDistance/index.js135
-rw-r--r--date-fns/src/locale/ar-MA/_lib/formatLong/index.js41
-rw-r--r--date-fns/src/locale/ar-MA/_lib/formatRelative/index.js12
-rw-r--r--date-fns/src/locale/ar-MA/_lib/localize/index.js163
-rw-r--r--date-fns/src/locale/ar-MA/_lib/match/index.js146
-rw-r--r--date-fns/src/locale/ar-MA/index.d.ts4
-rw-r--r--date-fns/src/locale/ar-MA/index.js29
-rw-r--r--date-fns/src/locale/ar-MA/index.js.flow35
-rw-r--r--date-fns/src/locale/ar-MA/snapshot.md304
-rw-r--r--date-fns/src/locale/ar-SA/_lib/formatDistance/index.js135
-rw-r--r--date-fns/src/locale/ar-SA/_lib/formatLong/index.js41
-rw-r--r--date-fns/src/locale/ar-SA/_lib/formatRelative/index.js12
-rw-r--r--date-fns/src/locale/ar-SA/_lib/localize/index.js163
-rw-r--r--date-fns/src/locale/ar-SA/_lib/match/index.js146
-rw-r--r--date-fns/src/locale/ar-SA/index.d.ts4
-rw-r--r--date-fns/src/locale/ar-SA/index.js28
-rw-r--r--date-fns/src/locale/ar-SA/index.js.flow35
-rw-r--r--date-fns/src/locale/ar-SA/snapshot.md304
-rw-r--r--date-fns/src/locale/ar/_lib/formatDistance/index.js91
-rw-r--r--date-fns/src/locale/ar/_lib/formatLong/index.js12
-rw-r--r--date-fns/src/locale/ar/_lib/formatRelative/index.js12
-rw-r--r--date-fns/src/locale/ar/_lib/localize/index.js71
-rw-r--r--date-fns/src/locale/ar/_lib/match/index.js60
-rw-r--r--date-fns/src/locale/ar/index.d.ts4
-rw-r--r--date-fns/src/locale/ar/index.js32
-rw-r--r--date-fns/src/locale/ar/index.js.flow35
-rw-r--r--date-fns/src/locale/az/_lib/formatDistance/index.js101
-rw-r--r--date-fns/src/locale/az/_lib/formatLong/index.js39
-rw-r--r--date-fns/src/locale/az/_lib/formatRelative/index.js12
-rw-r--r--date-fns/src/locale/az/_lib/localize/index.js194
-rw-r--r--date-fns/src/locale/az/_lib/match/index.js166
-rw-r--r--date-fns/src/locale/az/index.d.ts4
-rw-r--r--date-fns/src/locale/az/index.js28
-rw-r--r--date-fns/src/locale/az/index.js.flow35
-rw-r--r--date-fns/src/locale/az/snapshot.md304
-rw-r--r--date-fns/src/locale/be/_lib/formatDistance/index.js257
-rw-r--r--date-fns/src/locale/be/_lib/formatLong/index.js38
-rw-r--r--date-fns/src/locale/be/_lib/formatRelative/index.js82
-rw-r--r--date-fns/src/locale/be/_lib/localize/index.js227
-rw-r--r--date-fns/src/locale/be/_lib/match/index.js138
-rw-r--r--date-fns/src/locale/be/index.d.ts4
-rw-r--r--date-fns/src/locale/be/index.js29
-rw-r--r--date-fns/src/locale/be/index.js.flow35
-rw-r--r--date-fns/src/locale/be/snapshot.md304
-rw-r--r--date-fns/src/locale/bg/_lib/formatDistance/index.js101
-rw-r--r--date-fns/src/locale/bg/_lib/formatLong/index.js38
-rw-r--r--date-fns/src/locale/bg/_lib/formatRelative/index.js88
-rw-r--r--date-fns/src/locale/bg/_lib/localize/index.js155
-rw-r--r--date-fns/src/locale/bg/_lib/match/index.js123
-rw-r--r--date-fns/src/locale/bg/index.d.ts4
-rw-r--r--date-fns/src/locale/bg/index.js29
-rw-r--r--date-fns/src/locale/bg/index.js.flow35
-rw-r--r--date-fns/src/locale/bg/snapshot.md304
-rw-r--r--date-fns/src/locale/bn/_lib/formatDistance/index.js106
-rw-r--r--date-fns/src/locale/bn/_lib/formatLong/index.js41
-rw-r--r--date-fns/src/locale/bn/_lib/formatRelative/index.js12
-rw-r--r--date-fns/src/locale/bn/_lib/localize/index.js265
-rw-r--r--date-fns/src/locale/bn/_lib/match/index.js144
-rw-r--r--date-fns/src/locale/bn/index.d.ts4
-rw-r--r--date-fns/src/locale/bn/index.js29
-rw-r--r--date-fns/src/locale/bn/index.js.flow35
-rw-r--r--date-fns/src/locale/bn/snapshot.md304
-rw-r--r--date-fns/src/locale/ca/_lib/formatDistance/index.js116
-rw-r--r--date-fns/src/locale/ca/_lib/formatLong/index.js41
-rw-r--r--date-fns/src/locale/ca/_lib/formatRelative/index.js24
-rw-r--r--date-fns/src/locale/ca/_lib/localize/index.js236
-rw-r--r--date-fns/src/locale/ca/_lib/match/index.js163
-rw-r--r--date-fns/src/locale/ca/index.d.ts4
-rw-r--r--date-fns/src/locale/ca/index.js31
-rw-r--r--date-fns/src/locale/ca/index.js.flow35
-rw-r--r--date-fns/src/locale/ca/snapshot.md304
-rw-r--r--date-fns/src/locale/cs/_lib/formatDistance/index.js318
-rw-r--r--date-fns/src/locale/cs/_lib/formatLong/index.js41
-rw-r--r--date-fns/src/locale/cs/_lib/formatRelative/index.js31
-rw-r--r--date-fns/src/locale/cs/_lib/localize/index.js192
-rw-r--r--date-fns/src/locale/cs/_lib/match/index.js139
-rw-r--r--date-fns/src/locale/cs/index.d.ts4
-rw-r--r--date-fns/src/locale/cs/index.js30
-rw-r--r--date-fns/src/locale/cs/index.js.flow35
-rw-r--r--date-fns/src/locale/cs/snapshot.md304
-rw-r--r--date-fns/src/locale/cy/_lib/formatDistance/index.js114
-rw-r--r--date-fns/src/locale/cy/_lib/formatLong/index.js41
-rw-r--r--date-fns/src/locale/cy/_lib/formatRelative/index.js12
-rw-r--r--date-fns/src/locale/cy/_lib/localize/index.js204
-rw-r--r--date-fns/src/locale/cy/_lib/match/index.js147
-rw-r--r--date-fns/src/locale/cy/index.d.ts4
-rw-r--r--date-fns/src/locale/cy/index.js28
-rw-r--r--date-fns/src/locale/cy/index.js.flow35
-rw-r--r--date-fns/src/locale/cy/snapshot.md304
-rw-r--r--date-fns/src/locale/da/_lib/formatDistance/index.js101
-rw-r--r--date-fns/src/locale/da/_lib/formatLong/index.js41
-rw-r--r--date-fns/src/locale/da/_lib/formatRelative/index.js12
-rw-r--r--date-fns/src/locale/da/_lib/localize/index.js162
-rw-r--r--date-fns/src/locale/da/_lib/match/index.js136
-rw-r--r--date-fns/src/locale/da/index.d.ts4
-rw-r--r--date-fns/src/locale/da/index.js31
-rw-r--r--date-fns/src/locale/da/index.js.flow35
-rw-r--r--date-fns/src/locale/da/snapshot.md304
-rw-r--r--date-fns/src/locale/de-AT/_lib/localize/index.js172
-rw-r--r--date-fns/src/locale/de-AT/index.d.ts4
-rw-r--r--date-fns/src/locale/de-AT/index.js29
-rw-r--r--date-fns/src/locale/de-AT/index.js.flow35
-rw-r--r--date-fns/src/locale/de-AT/snapshot.md304
-rw-r--r--date-fns/src/locale/de/_lib/formatDistance/index.js198
-rw-r--r--date-fns/src/locale/de/_lib/formatLong/index.js42
-rw-r--r--date-fns/src/locale/de/_lib/formatRelative/index.js12
-rw-r--r--date-fns/src/locale/de/_lib/localize/index.js172
-rw-r--r--date-fns/src/locale/de/_lib/match/index.js137
-rw-r--r--date-fns/src/locale/de/index.d.ts4
-rw-r--r--date-fns/src/locale/de/index.js32
-rw-r--r--date-fns/src/locale/de/index.js.flow35
-rw-r--r--date-fns/src/locale/de/snapshot.md304
-rw-r--r--date-fns/src/locale/el/_lib/formatDistance/index.js101
-rw-r--r--date-fns/src/locale/el/_lib/formatLong/index.js39
-rw-r--r--date-fns/src/locale/el/_lib/formatRelative/index.js23
-rw-r--r--date-fns/src/locale/el/_lib/localize/index.js178
-rw-r--r--date-fns/src/locale/el/_lib/match/index.js137
-rw-r--r--date-fns/src/locale/el/index.d.ts4
-rw-r--r--date-fns/src/locale/el/index.js29
-rw-r--r--date-fns/src/locale/el/index.js.flow35
-rw-r--r--date-fns/src/locale/el/snapshot.md304
-rw-r--r--date-fns/src/locale/en-AU/_lib/formatLong/index.js41
-rw-r--r--date-fns/src/locale/en-AU/index.d.ts4
-rw-r--r--date-fns/src/locale/en-AU/index.js28
-rw-r--r--date-fns/src/locale/en-AU/index.js.flow35
-rw-r--r--date-fns/src/locale/en-AU/snapshot.md304
-rw-r--r--date-fns/src/locale/en-CA/_lib/formatDistance/index.js101
-rw-r--r--date-fns/src/locale/en-CA/_lib/formatLong/index.js41
-rw-r--r--date-fns/src/locale/en-CA/index.d.ts4
-rw-r--r--date-fns/src/locale/en-CA/index.js29
-rw-r--r--date-fns/src/locale/en-CA/index.js.flow35
-rw-r--r--date-fns/src/locale/en-CA/snapshot.md304
-rw-r--r--date-fns/src/locale/en-GB/_lib/formatLong/index.js41
-rw-r--r--date-fns/src/locale/en-GB/index.d.ts4
-rw-r--r--date-fns/src/locale/en-GB/index.js28
-rw-r--r--date-fns/src/locale/en-GB/index.js.flow35
-rw-r--r--date-fns/src/locale/en-GB/snapshot.md304
-rw-r--r--date-fns/src/locale/en-IN/_lib/formatLong/index.js41
-rw-r--r--date-fns/src/locale/en-IN/index.d.ts4
-rw-r--r--date-fns/src/locale/en-IN/index.js28
-rw-r--r--date-fns/src/locale/en-IN/index.js.flow35
-rw-r--r--date-fns/src/locale/en-IN/snapshot.md304
-rw-r--r--date-fns/src/locale/en-NZ/_lib/formatLong/index.js41
-rw-r--r--date-fns/src/locale/en-NZ/index.d.ts4
-rw-r--r--date-fns/src/locale/en-NZ/index.js28
-rw-r--r--date-fns/src/locale/en-NZ/index.js.flow35
-rw-r--r--date-fns/src/locale/en-NZ/snapshot.md304
-rw-r--r--date-fns/src/locale/en-US/_lib/formatDistance/index.js101
-rw-r--r--date-fns/src/locale/en-US/_lib/formatLong/index.js41
-rw-r--r--date-fns/src/locale/en-US/_lib/formatRelative/index.js12
-rw-r--r--date-fns/src/locale/en-US/_lib/localize/index.js192
-rw-r--r--date-fns/src/locale/en-US/_lib/match/index.js137
-rw-r--r--date-fns/src/locale/en-US/index.d.ts4
-rw-r--r--date-fns/src/locale/en-US/index.js29
-rw-r--r--date-fns/src/locale/en-US/index.js.flow35
-rw-r--r--date-fns/src/locale/en-US/snapshot.md304
-rw-r--r--date-fns/src/locale/en-ZA/_lib/formatLong/index.js41
-rw-r--r--date-fns/src/locale/en-ZA/index.d.ts4
-rw-r--r--date-fns/src/locale/en-ZA/index.js28
-rw-r--r--date-fns/src/locale/en-ZA/index.js.flow35
-rw-r--r--date-fns/src/locale/en-ZA/snapshot.md304
-rw-r--r--date-fns/src/locale/eo/_lib/formatDistance/index.js101
-rw-r--r--date-fns/src/locale/eo/_lib/formatLong/index.js38
-rw-r--r--date-fns/src/locale/eo/_lib/formatRelative/index.js12
-rw-r--r--date-fns/src/locale/eo/_lib/localize/index.js124
-rw-r--r--date-fns/src/locale/eo/_lib/match/index.js138
-rw-r--r--date-fns/src/locale/eo/index.d.ts4
-rw-r--r--date-fns/src/locale/eo/index.js28
-rw-r--r--date-fns/src/locale/eo/index.js.flow35
-rw-r--r--date-fns/src/locale/eo/snapshot.md304
-rw-r--r--date-fns/src/locale/es/_lib/formatDistance/index.js101
-rw-r--r--date-fns/src/locale/es/_lib/formatLong/index.js41
-rw-r--r--date-fns/src/locale/es/_lib/formatRelative/index.js24
-rw-r--r--date-fns/src/locale/es/_lib/localize/index.js166
-rw-r--r--date-fns/src/locale/es/_lib/match/index.js141
-rw-r--r--date-fns/src/locale/es/index.d.ts4
-rw-r--r--date-fns/src/locale/es/index.js32
-rw-r--r--date-fns/src/locale/es/index.js.flow35
-rw-r--r--date-fns/src/locale/es/snapshot.md304
-rw-r--r--date-fns/src/locale/et/_lib/formatDistance/index.js198
-rw-r--r--date-fns/src/locale/et/_lib/formatLong/index.js41
-rw-r--r--date-fns/src/locale/et/_lib/formatRelative/index.js12
-rw-r--r--date-fns/src/locale/et/_lib/localize/index.js176
-rw-r--r--date-fns/src/locale/et/_lib/match/index.js139
-rw-r--r--date-fns/src/locale/et/index.d.ts4
-rw-r--r--date-fns/src/locale/et/index.js28
-rw-r--r--date-fns/src/locale/et/index.js.flow35
-rw-r--r--date-fns/src/locale/et/snapshot.md304
-rw-r--r--date-fns/src/locale/eu/_lib/formatDistance/index.js101
-rw-r--r--date-fns/src/locale/eu/_lib/formatLong/index.js40
-rw-r--r--date-fns/src/locale/eu/_lib/formatRelative/index.js24
-rw-r--r--date-fns/src/locale/eu/_lib/localize/index.js167
-rw-r--r--date-fns/src/locale/eu/_lib/match/index.js159
-rw-r--r--date-fns/src/locale/eu/index.d.ts4
-rw-r--r--date-fns/src/locale/eu/index.js28
-rw-r--r--date-fns/src/locale/eu/index.js.flow35
-rw-r--r--date-fns/src/locale/eu/snapshot.md304
-rw-r--r--date-fns/src/locale/fa-IR/_lib/formatDistance/index.js101
-rw-r--r--date-fns/src/locale/fa-IR/_lib/formatLong/index.js41
-rw-r--r--date-fns/src/locale/fa-IR/_lib/formatRelative/index.js12
-rw-r--r--date-fns/src/locale/fa-IR/_lib/localize/index.js169
-rw-r--r--date-fns/src/locale/fa-IR/_lib/match/index.js146
-rw-r--r--date-fns/src/locale/fa-IR/index.d.ts4
-rw-r--r--date-fns/src/locale/fa-IR/index.js28
-rw-r--r--date-fns/src/locale/fa-IR/index.js.flow35
-rw-r--r--date-fns/src/locale/fa-IR/snapshot.md304
-rw-r--r--date-fns/src/locale/fi/_lib/formatDistance/index.js145
-rw-r--r--date-fns/src/locale/fi/_lib/formatLong/index.js41
-rw-r--r--date-fns/src/locale/fi/_lib/formatRelative/index.js12
-rw-r--r--date-fns/src/locale/fi/_lib/localize/index.js147
-rw-r--r--date-fns/src/locale/fi/_lib/match/index.js137
-rw-r--r--date-fns/src/locale/fi/index.d.ts4
-rw-r--r--date-fns/src/locale/fi/index.js30
-rw-r--r--date-fns/src/locale/fi/index.js.flow35
-rw-r--r--date-fns/src/locale/fi/snapshot.md304
-rw-r--r--date-fns/src/locale/fil/_lib/formatDistance/index.js101
-rw-r--r--date-fns/src/locale/fil/_lib/formatLong/index.js12
-rw-r--r--date-fns/src/locale/fil/_lib/formatRelative/index.js12
-rw-r--r--date-fns/src/locale/fil/_lib/localize/index.js83
-rw-r--r--date-fns/src/locale/fil/_lib/match/index.js60
-rw-r--r--date-fns/src/locale/fil/index.d.ts4
-rw-r--r--date-fns/src/locale/fil/index.js32
-rw-r--r--date-fns/src/locale/fil/index.js.flow35
-rw-r--r--date-fns/src/locale/fr-CA/_lib/formatLong/index.js41
-rw-r--r--date-fns/src/locale/fr-CA/index.d.ts4
-rw-r--r--date-fns/src/locale/fr-CA/index.js35
-rw-r--r--date-fns/src/locale/fr-CA/index.js.flow35
-rw-r--r--date-fns/src/locale/fr-CA/snapshot.md304
-rw-r--r--date-fns/src/locale/fr-CH/_lib/formatDistance/index.js101
-rw-r--r--date-fns/src/locale/fr-CH/_lib/formatLong/index.js41
-rw-r--r--date-fns/src/locale/fr-CH/_lib/formatRelative/index.js12
-rw-r--r--date-fns/src/locale/fr-CH/_lib/formatters/index.js17
-rw-r--r--date-fns/src/locale/fr-CH/_lib/localize/index.js155
-rw-r--r--date-fns/src/locale/fr-CH/_lib/match/index.js137
-rw-r--r--date-fns/src/locale/fr-CH/index.d.ts4
-rw-r--r--date-fns/src/locale/fr-CH/index.js32
-rw-r--r--date-fns/src/locale/fr-CH/index.js.flow35
-rw-r--r--date-fns/src/locale/fr-CH/snapshot.md304
-rw-r--r--date-fns/src/locale/fr/_lib/formatDistance/index.js101
-rw-r--r--date-fns/src/locale/fr/_lib/formatLong/index.js41
-rw-r--r--date-fns/src/locale/fr/_lib/formatRelative/index.js12
-rw-r--r--date-fns/src/locale/fr/_lib/formatters/index.js17
-rw-r--r--date-fns/src/locale/fr/_lib/localize/index.js155
-rw-r--r--date-fns/src/locale/fr/_lib/match/index.js137
-rw-r--r--date-fns/src/locale/fr/index.d.ts4
-rw-r--r--date-fns/src/locale/fr/index.js30
-rw-r--r--date-fns/src/locale/fr/index.js.flow35
-rw-r--r--date-fns/src/locale/fr/snapshot.md304
-rw-r--r--date-fns/src/locale/gd/_lib/formatDistance/index.js115
-rw-r--r--date-fns/src/locale/gd/_lib/formatLong/index.js41
-rw-r--r--date-fns/src/locale/gd/_lib/formatRelative/index.js12
-rw-r--r--date-fns/src/locale/gd/_lib/localize/index.js200
-rw-r--r--date-fns/src/locale/gd/_lib/match/index.js138
-rw-r--r--date-fns/src/locale/gd/index.d.ts4
-rw-r--r--date-fns/src/locale/gd/index.js28
-rw-r--r--date-fns/src/locale/gd/index.js.flow35
-rw-r--r--date-fns/src/locale/gd/snapshot.md304
-rw-r--r--date-fns/src/locale/gl/_lib/formatDistance/index.js101
-rw-r--r--date-fns/src/locale/gl/_lib/formatLong/index.js41
-rw-r--r--date-fns/src/locale/gl/_lib/formatRelative/index.js24
-rw-r--r--date-fns/src/locale/gl/_lib/localize/index.js158
-rw-r--r--date-fns/src/locale/gl/_lib/match/index.js141
-rw-r--r--date-fns/src/locale/gl/index.d.ts4
-rw-r--r--date-fns/src/locale/gl/index.js29
-rw-r--r--date-fns/src/locale/gl/index.js.flow35
-rw-r--r--date-fns/src/locale/gl/snapshot.md304
-rw-r--r--date-fns/src/locale/gu/_lib/formatDistance/index.js102
-rw-r--r--date-fns/src/locale/gu/_lib/formatLong/index.js42
-rw-r--r--date-fns/src/locale/gu/_lib/formatRelative/index.js14
-rw-r--r--date-fns/src/locale/gu/_lib/localize/index.js181
-rw-r--r--date-fns/src/locale/gu/_lib/match/index.js137
-rw-r--r--date-fns/src/locale/gu/index.d.ts4
-rw-r--r--date-fns/src/locale/gu/index.js28
-rw-r--r--date-fns/src/locale/gu/index.js.flow35
-rw-r--r--date-fns/src/locale/gu/snapshot.md304
-rw-r--r--date-fns/src/locale/he/_lib/formatDistance/index.js131
-rw-r--r--date-fns/src/locale/he/_lib/formatLong/index.js41
-rw-r--r--date-fns/src/locale/he/_lib/formatRelative/index.js12
-rw-r--r--date-fns/src/locale/he/_lib/localize/index.js209
-rw-r--r--date-fns/src/locale/he/_lib/match/index.js140
-rw-r--r--date-fns/src/locale/he/index.d.ts4
-rw-r--r--date-fns/src/locale/he/index.js28
-rw-r--r--date-fns/src/locale/he/index.js.flow35
-rw-r--r--date-fns/src/locale/he/snapshot.md304
-rw-r--r--date-fns/src/locale/hi/_lib/formatDistance/index.js106
-rw-r--r--date-fns/src/locale/hi/_lib/formatLong/index.js41
-rw-r--r--date-fns/src/locale/hi/_lib/formatRelative/index.js12
-rw-r--r--date-fns/src/locale/hi/_lib/localize/index.js244
-rw-r--r--date-fns/src/locale/hi/_lib/match/index.js136
-rw-r--r--date-fns/src/locale/hi/index.d.ts4
-rw-r--r--date-fns/src/locale/hi/index.js28
-rw-r--r--date-fns/src/locale/hi/index.js.flow35
-rw-r--r--date-fns/src/locale/hi/snapshot.md304
-rw-r--r--date-fns/src/locale/hr/_lib/formatDistance/index.js191
-rw-r--r--date-fns/src/locale/hr/_lib/formatLong/index.js39
-rw-r--r--date-fns/src/locale/hr/_lib/formatRelative/index.js44
-rw-r--r--date-fns/src/locale/hr/_lib/localize/index.js222
-rw-r--r--date-fns/src/locale/hr/_lib/match/index.js132
-rw-r--r--date-fns/src/locale/hr/index.d.ts4
-rw-r--r--date-fns/src/locale/hr/index.js30
-rw-r--r--date-fns/src/locale/hr/index.js.flow35
-rw-r--r--date-fns/src/locale/hr/snapshot.md304
-rw-r--r--date-fns/src/locale/ht/_lib/formatDistance/index.js101
-rw-r--r--date-fns/src/locale/ht/_lib/formatLong/index.js41
-rw-r--r--date-fns/src/locale/ht/_lib/formatRelative/index.js12
-rw-r--r--date-fns/src/locale/ht/_lib/formatters/index.js19
-rw-r--r--date-fns/src/locale/ht/_lib/localize/index.js147
-rw-r--r--date-fns/src/locale/ht/_lib/match/index.js137
-rw-r--r--date-fns/src/locale/ht/index.d.ts4
-rw-r--r--date-fns/src/locale/ht/index.js30
-rw-r--r--date-fns/src/locale/ht/index.js.flow35
-rw-r--r--date-fns/src/locale/ht/snapshot.md304
-rw-r--r--date-fns/src/locale/hu/_lib/formatDistance/index.js92
-rw-r--r--date-fns/src/locale/hu/_lib/formatLong/index.js41
-rw-r--r--date-fns/src/locale/hu/_lib/formatRelative/index.js40
-rw-r--r--date-fns/src/locale/hu/_lib/localize/index.js140
-rw-r--r--date-fns/src/locale/hu/_lib/match/index.js138
-rw-r--r--date-fns/src/locale/hu/index.d.ts4
-rw-r--r--date-fns/src/locale/hu/index.js33
-rw-r--r--date-fns/src/locale/hu/index.js.flow35
-rw-r--r--date-fns/src/locale/hu/snapshot.md304
-rw-r--r--date-fns/src/locale/hy/_lib/formatDistance/index.js101
-rw-r--r--date-fns/src/locale/hy/_lib/formatLong/index.js36
-rw-r--r--date-fns/src/locale/hy/_lib/formatRelative/index.js12
-rw-r--r--date-fns/src/locale/hy/_lib/localize/index.js179
-rw-r--r--date-fns/src/locale/hy/_lib/match/index.js139
-rw-r--r--date-fns/src/locale/hy/index.d.ts4
-rw-r--r--date-fns/src/locale/hy/index.js29
-rw-r--r--date-fns/src/locale/hy/index.js.flow35
-rw-r--r--date-fns/src/locale/hy/snapshot.md304
-rw-r--r--date-fns/src/locale/id/_lib/formatDistance/index.js101
-rw-r--r--date-fns/src/locale/id/_lib/formatLong/index.js41
-rw-r--r--date-fns/src/locale/id/_lib/formatRelative/index.js12
-rw-r--r--date-fns/src/locale/id/_lib/localize/index.js169
-rw-r--r--date-fns/src/locale/id/_lib/match/index.js137
-rw-r--r--date-fns/src/locale/id/index.d.ts4
-rw-r--r--date-fns/src/locale/id/index.js31
-rw-r--r--date-fns/src/locale/id/index.js.flow35
-rw-r--r--date-fns/src/locale/id/snapshot.md304
-rw-r--r--date-fns/src/locale/index.js82
-rw-r--r--date-fns/src/locale/index.js.flow118
-rw-r--r--date-fns/src/locale/is/_lib/formatDistance/index.js101
-rw-r--r--date-fns/src/locale/is/_lib/formatLong/index.js41
-rw-r--r--date-fns/src/locale/is/_lib/formatRelative/index.js12
-rw-r--r--date-fns/src/locale/is/_lib/localize/index.js167
-rw-r--r--date-fns/src/locale/is/_lib/match/index.js141
-rw-r--r--date-fns/src/locale/is/index.d.ts4
-rw-r--r--date-fns/src/locale/is/index.js29
-rw-r--r--date-fns/src/locale/is/index.js.flow35
-rw-r--r--date-fns/src/locale/is/snapshot.md304
-rw-r--r--date-fns/src/locale/it/_lib/formatDistance/index.js101
-rw-r--r--date-fns/src/locale/it/_lib/formatLong/index.js41
-rw-r--r--date-fns/src/locale/it/_lib/formatRelative/index.js66
-rw-r--r--date-fns/src/locale/it/_lib/localize/index.js166
-rw-r--r--date-fns/src/locale/it/_lib/match/index.js137
-rw-r--r--date-fns/src/locale/it/index.d.ts4
-rw-r--r--date-fns/src/locale/it/index.js30
-rw-r--r--date-fns/src/locale/it/index.js.flow35
-rw-r--r--date-fns/src/locale/it/snapshot.md304
-rw-r--r--date-fns/src/locale/ja/_lib/formatDistance/index.js116
-rw-r--r--date-fns/src/locale/ja/_lib/formatLong/index.js41
-rw-r--r--date-fns/src/locale/ja/_lib/formatRelative/index.js12
-rw-r--r--date-fns/src/locale/ja/_lib/localize/index.js180
-rw-r--r--date-fns/src/locale/ja/_lib/match/index.js122
-rw-r--r--date-fns/src/locale/ja/index.d.ts4
-rw-r--r--date-fns/src/locale/ja/index.js32
-rw-r--r--date-fns/src/locale/ja/index.js.flow35
-rw-r--r--date-fns/src/locale/ja/snapshot.md304
-rw-r--r--date-fns/src/locale/ka/_lib/formatDistance/index.js114
-rw-r--r--date-fns/src/locale/ka/_lib/formatLong/index.js41
-rw-r--r--date-fns/src/locale/ka/_lib/formatRelative/index.js12
-rw-r--r--date-fns/src/locale/ka/_lib/localize/index.js198
-rw-r--r--date-fns/src/locale/ka/_lib/match/index.js121
-rw-r--r--date-fns/src/locale/ka/index.d.ts4
-rw-r--r--date-fns/src/locale/ka/index.js29
-rw-r--r--date-fns/src/locale/ka/index.js.flow35
-rw-r--r--date-fns/src/locale/ka/snapshot.md304
-rw-r--r--date-fns/src/locale/kk/_lib/formatDistance/index.js246
-rw-r--r--date-fns/src/locale/kk/_lib/formatLong/index.js38
-rw-r--r--date-fns/src/locale/kk/_lib/formatRelative/index.js62
-rw-r--r--date-fns/src/locale/kk/_lib/localize/index.js203
-rw-r--r--date-fns/src/locale/kk/_lib/match/index.js160
-rw-r--r--date-fns/src/locale/kk/index.d.ts4
-rw-r--r--date-fns/src/locale/kk/index.js28
-rw-r--r--date-fns/src/locale/kk/index.js.flow35
-rw-r--r--date-fns/src/locale/kk/snapshot.md304
-rw-r--r--date-fns/src/locale/kn/_lib/formatDistance/index.js203
-rw-r--r--date-fns/src/locale/kn/_lib/formatLong/index.js42
-rw-r--r--date-fns/src/locale/kn/_lib/formatRelative/index.js12
-rw-r--r--date-fns/src/locale/kn/_lib/localize/index.js171
-rw-r--r--date-fns/src/locale/kn/_lib/match/index.js137
-rw-r--r--date-fns/src/locale/kn/index.d.ts4
-rw-r--r--date-fns/src/locale/kn/index.js28
-rw-r--r--date-fns/src/locale/kn/index.js.flow35
-rw-r--r--date-fns/src/locale/kn/snapshot.md304
-rw-r--r--date-fns/src/locale/ko/_lib/formatDistance/index.js101
-rw-r--r--date-fns/src/locale/ko/_lib/formatLong/index.js41
-rw-r--r--date-fns/src/locale/ko/_lib/formatRelative/index.js12
-rw-r--r--date-fns/src/locale/ko/_lib/localize/index.js171
-rw-r--r--date-fns/src/locale/ko/_lib/match/index.js126
-rw-r--r--date-fns/src/locale/ko/index.d.ts4
-rw-r--r--date-fns/src/locale/ko/index.js30
-rw-r--r--date-fns/src/locale/ko/index.js.flow35
-rw-r--r--date-fns/src/locale/ko/snapshot.md304
-rw-r--r--date-fns/src/locale/lb/_lib/formatDistance/index.js231
-rw-r--r--date-fns/src/locale/lb/_lib/formatLong/index.js42
-rw-r--r--date-fns/src/locale/lb/_lib/formatRelative/index.js27
-rw-r--r--date-fns/src/locale/lb/_lib/localize/index.js167
-rw-r--r--date-fns/src/locale/lb/_lib/match/index.js137
-rw-r--r--date-fns/src/locale/lb/index.d.ts4
-rw-r--r--date-fns/src/locale/lb/index.js28
-rw-r--r--date-fns/src/locale/lb/index.js.flow35
-rw-r--r--date-fns/src/locale/lb/snapshot.md304
-rw-r--r--date-fns/src/locale/lt/_lib/formatDistance/index.js165
-rw-r--r--date-fns/src/locale/lt/_lib/formatLong/index.js41
-rw-r--r--date-fns/src/locale/lt/_lib/formatRelative/index.js12
-rw-r--r--date-fns/src/locale/lt/_lib/localize/index.js225
-rw-r--r--date-fns/src/locale/lt/_lib/match/index.js150
-rw-r--r--date-fns/src/locale/lt/index.d.ts4
-rw-r--r--date-fns/src/locale/lt/index.js32
-rw-r--r--date-fns/src/locale/lt/index.js.flow35
-rw-r--r--date-fns/src/locale/lt/snapshot.md304
-rw-r--r--date-fns/src/locale/lv/_lib/formatDistance/index.js158
-rw-r--r--date-fns/src/locale/lv/_lib/formatLong/index.js41
-rw-r--r--date-fns/src/locale/lv/_lib/formatRelative/index.js43
-rw-r--r--date-fns/src/locale/lv/_lib/localize/index.js250
-rw-r--r--date-fns/src/locale/lv/_lib/match/index.js140
-rw-r--r--date-fns/src/locale/lv/index.d.ts4
-rw-r--r--date-fns/src/locale/lv/index.js28
-rw-r--r--date-fns/src/locale/lv/index.js.flow35
-rw-r--r--date-fns/src/locale/lv/snapshot.md304
-rw-r--r--date-fns/src/locale/mk/_lib/formatDistance/index.js101
-rw-r--r--date-fns/src/locale/mk/_lib/formatLong/index.js38
-rw-r--r--date-fns/src/locale/mk/_lib/formatRelative/index.js92
-rw-r--r--date-fns/src/locale/mk/_lib/localize/index.js124
-rw-r--r--date-fns/src/locale/mk/_lib/match/index.js124
-rw-r--r--date-fns/src/locale/mk/index.d.ts4
-rw-r--r--date-fns/src/locale/mk/index.js29
-rw-r--r--date-fns/src/locale/mk/index.js.flow35
-rw-r--r--date-fns/src/locale/mk/snapshot.md304
-rw-r--r--date-fns/src/locale/mn/_lib/formatDistance/index.js138
-rw-r--r--date-fns/src/locale/mn/_lib/formatLong/index.js41
-rw-r--r--date-fns/src/locale/mn/_lib/formatRelative/index.js12
-rw-r--r--date-fns/src/locale/mn/_lib/localize/index.js208
-rw-r--r--date-fns/src/locale/mn/_lib/match/index.js137
-rw-r--r--date-fns/src/locale/mn/index.d.ts4
-rw-r--r--date-fns/src/locale/mn/index.js28
-rw-r--r--date-fns/src/locale/mn/index.js.flow35
-rw-r--r--date-fns/src/locale/mn/snapshot.md304
-rw-r--r--date-fns/src/locale/ms/_lib/formatDistance/index.js101
-rw-r--r--date-fns/src/locale/ms/_lib/formatLong/index.js41
-rw-r--r--date-fns/src/locale/ms/_lib/formatRelative/index.js12
-rw-r--r--date-fns/src/locale/ms/_lib/localize/index.js169
-rw-r--r--date-fns/src/locale/ms/_lib/match/index.js137
-rw-r--r--date-fns/src/locale/ms/index.d.ts4
-rw-r--r--date-fns/src/locale/ms/index.js28
-rw-r--r--date-fns/src/locale/ms/index.js.flow35
-rw-r--r--date-fns/src/locale/ms/snapshot.md304
-rw-r--r--date-fns/src/locale/mt/_lib/formatDistance/index.js108
-rw-r--r--date-fns/src/locale/mt/_lib/formatLong/index.js41
-rw-r--r--date-fns/src/locale/mt/_lib/formatRelative/index.js12
-rw-r--r--date-fns/src/locale/mt/_lib/localize/index.js167
-rw-r--r--date-fns/src/locale/mt/_lib/match/index.js145
-rw-r--r--date-fns/src/locale/mt/index.d.ts4
-rw-r--r--date-fns/src/locale/mt/index.js29
-rw-r--r--date-fns/src/locale/mt/index.js.flow35
-rw-r--r--date-fns/src/locale/mt/snapshot.md304
-rw-r--r--date-fns/src/locale/nb/_lib/formatDistance/index.js127
-rw-r--r--date-fns/src/locale/nb/_lib/formatLong/index.js41
-rw-r--r--date-fns/src/locale/nb/_lib/formatRelative/index.js12
-rw-r--r--date-fns/src/locale/nb/_lib/localize/index.js124
-rw-r--r--date-fns/src/locale/nb/_lib/match/index.js136
-rw-r--r--date-fns/src/locale/nb/index.d.ts4
-rw-r--r--date-fns/src/locale/nb/index.js30
-rw-r--r--date-fns/src/locale/nb/index.js.flow35
-rw-r--r--date-fns/src/locale/nb/snapshot.md304
-rw-r--r--date-fns/src/locale/nl-BE/_lib/formatDistance/index.js86
-rw-r--r--date-fns/src/locale/nl-BE/_lib/formatLong/index.js41
-rw-r--r--date-fns/src/locale/nl-BE/_lib/formatRelative/index.js12
-rw-r--r--date-fns/src/locale/nl-BE/_lib/localize/index.js132
-rw-r--r--date-fns/src/locale/nl-BE/_lib/match/index.js136
-rw-r--r--date-fns/src/locale/nl-BE/index.d.ts4
-rw-r--r--date-fns/src/locale/nl-BE/index.js31
-rw-r--r--date-fns/src/locale/nl-BE/index.js.flow35
-rw-r--r--date-fns/src/locale/nl-BE/snapshot.md304
-rw-r--r--date-fns/src/locale/nl/_lib/formatDistance/index.js101
-rw-r--r--date-fns/src/locale/nl/_lib/formatLong/index.js41
-rw-r--r--date-fns/src/locale/nl/_lib/formatRelative/index.js12
-rw-r--r--date-fns/src/locale/nl/_lib/localize/index.js132
-rw-r--r--date-fns/src/locale/nl/_lib/match/index.js136
-rw-r--r--date-fns/src/locale/nl/index.d.ts4
-rw-r--r--date-fns/src/locale/nl/index.js33
-rw-r--r--date-fns/src/locale/nl/index.js.flow35
-rw-r--r--date-fns/src/locale/nl/snapshot.md304
-rw-r--r--date-fns/src/locale/nn/_lib/formatDistance/index.js127
-rw-r--r--date-fns/src/locale/nn/_lib/formatLong/index.js41
-rw-r--r--date-fns/src/locale/nn/_lib/formatRelative/index.js12
-rw-r--r--date-fns/src/locale/nn/_lib/localize/index.js124
-rw-r--r--date-fns/src/locale/nn/_lib/match/index.js136
-rw-r--r--date-fns/src/locale/nn/index.d.ts4
-rw-r--r--date-fns/src/locale/nn/index.js28
-rw-r--r--date-fns/src/locale/nn/index.js.flow35
-rw-r--r--date-fns/src/locale/nn/snapshot.md304
-rw-r--r--date-fns/src/locale/pl/_lib/formatDistance/index.js169
-rw-r--r--date-fns/src/locale/pl/_lib/formatLong/index.js41
-rw-r--r--date-fns/src/locale/pl/_lib/formatRelative/index.js69
-rw-r--r--date-fns/src/locale/pl/_lib/localize/index.js215
-rw-r--r--date-fns/src/locale/pl/_lib/match/index.js149
-rw-r--r--date-fns/src/locale/pl/index.d.ts4
-rw-r--r--date-fns/src/locale/pl/index.js31
-rw-r--r--date-fns/src/locale/pl/index.js.flow35
-rw-r--r--date-fns/src/locale/pl/snapshot.md304
-rw-r--r--date-fns/src/locale/pt-BR/_lib/formatDistance/index.js101
-rw-r--r--date-fns/src/locale/pt-BR/_lib/formatLong/index.js41
-rw-r--r--date-fns/src/locale/pt-BR/_lib/formatRelative/index.js22
-rw-r--r--date-fns/src/locale/pt-BR/_lib/localize/index.js164
-rw-r--r--date-fns/src/locale/pt-BR/_lib/match/index.js139
-rw-r--r--date-fns/src/locale/pt-BR/index.d.ts4
-rw-r--r--date-fns/src/locale/pt-BR/index.js29
-rw-r--r--date-fns/src/locale/pt-BR/index.js.flow35
-rw-r--r--date-fns/src/locale/pt-BR/snapshot.md304
-rw-r--r--date-fns/src/locale/pt/_lib/formatDistance/index.js101
-rw-r--r--date-fns/src/locale/pt/_lib/formatLong/index.js41
-rw-r--r--date-fns/src/locale/pt/_lib/formatRelative/index.js12
-rw-r--r--date-fns/src/locale/pt/_lib/localize/index.js166
-rw-r--r--date-fns/src/locale/pt/_lib/match/index.js141
-rw-r--r--date-fns/src/locale/pt/index.d.ts4
-rw-r--r--date-fns/src/locale/pt/index.js29
-rw-r--r--date-fns/src/locale/pt/index.js.flow35
-rw-r--r--date-fns/src/locale/pt/snapshot.md304
-rw-r--r--date-fns/src/locale/ro/_lib/formatDistance/index.js101
-rw-r--r--date-fns/src/locale/ro/_lib/formatLong/index.js41
-rw-r--r--date-fns/src/locale/ro/_lib/formatRelative/index.js12
-rw-r--r--date-fns/src/locale/ro/_lib/localize/index.js164
-rw-r--r--date-fns/src/locale/ro/_lib/match/index.js146
-rw-r--r--date-fns/src/locale/ro/index.d.ts4
-rw-r--r--date-fns/src/locale/ro/index.js30
-rw-r--r--date-fns/src/locale/ro/index.js.flow35
-rw-r--r--date-fns/src/locale/ro/snapshot.md304
-rw-r--r--date-fns/src/locale/ru/_lib/formatDistance/index.js247
-rw-r--r--date-fns/src/locale/ru/_lib/formatLong/index.js38
-rw-r--r--date-fns/src/locale/ru/_lib/formatRelative/index.js88
-rw-r--r--date-fns/src/locale/ru/_lib/localize/index.js210
-rw-r--r--date-fns/src/locale/ru/_lib/match/index.js138
-rw-r--r--date-fns/src/locale/ru/index.d.ts4
-rw-r--r--date-fns/src/locale/ru/index.js29
-rw-r--r--date-fns/src/locale/ru/index.js.flow35
-rw-r--r--date-fns/src/locale/ru/snapshot.md304
-rw-r--r--date-fns/src/locale/sk/_lib/formatDistance/index.js231
-rw-r--r--date-fns/src/locale/sk/_lib/formatLong/index.js44
-rw-r--r--date-fns/src/locale/sk/_lib/formatRelative/index.js81
-rw-r--r--date-fns/src/locale/sk/_lib/localize/index.js204
-rw-r--r--date-fns/src/locale/sk/_lib/match/index.js138
-rw-r--r--date-fns/src/locale/sk/index.d.ts4
-rw-r--r--date-fns/src/locale/sk/index.js28
-rw-r--r--date-fns/src/locale/sk/index.js.flow35
-rw-r--r--date-fns/src/locale/sk/snapshot.md304
-rw-r--r--date-fns/src/locale/sl/_lib/formatDistance/index.js338
-rw-r--r--date-fns/src/locale/sl/_lib/formatLong/index.js39
-rw-r--r--date-fns/src/locale/sl/_lib/formatRelative/index.js44
-rw-r--r--date-fns/src/locale/sl/_lib/localize/index.js162
-rw-r--r--date-fns/src/locale/sl/_lib/match/index.js155
-rw-r--r--date-fns/src/locale/sl/index.d.ts4
-rw-r--r--date-fns/src/locale/sl/index.js29
-rw-r--r--date-fns/src/locale/sl/index.js.flow35
-rw-r--r--date-fns/src/locale/sl/snapshot.md304
-rw-r--r--date-fns/src/locale/sq/_lib/formatDistance/index.js86
-rw-r--r--date-fns/src/locale/sq/_lib/formatLong/index.js41
-rw-r--r--date-fns/src/locale/sq/_lib/formatRelative/index.js12
-rw-r--r--date-fns/src/locale/sq/_lib/localize/index.js181
-rw-r--r--date-fns/src/locale/sq/_lib/match/index.js137
-rw-r--r--date-fns/src/locale/sq/index.d.ts4
-rw-r--r--date-fns/src/locale/sq/index.js28
-rw-r--r--date-fns/src/locale/sq/index.js.flow35
-rw-r--r--date-fns/src/locale/sq/snapshot.md304
-rw-r--r--date-fns/src/locale/sr-Latn/_lib/formatDistance/index.js191
-rw-r--r--date-fns/src/locale/sr-Latn/_lib/formatLong/index.js39
-rw-r--r--date-fns/src/locale/sr-Latn/_lib/formatRelative/index.js44
-rw-r--r--date-fns/src/locale/sr-Latn/_lib/localize/index.js222
-rw-r--r--date-fns/src/locale/sr-Latn/_lib/match/index.js118
-rw-r--r--date-fns/src/locale/sr-Latn/index.d.ts4
-rw-r--r--date-fns/src/locale/sr-Latn/index.js28
-rw-r--r--date-fns/src/locale/sr-Latn/index.js.flow35
-rw-r--r--date-fns/src/locale/sr-Latn/snapshot.md304
-rw-r--r--date-fns/src/locale/sr/_lib/formatDistance/index.js191
-rw-r--r--date-fns/src/locale/sr/_lib/formatLong/index.js39
-rw-r--r--date-fns/src/locale/sr/_lib/formatRelative/index.js44
-rw-r--r--date-fns/src/locale/sr/_lib/localize/index.js222
-rw-r--r--date-fns/src/locale/sr/_lib/match/index.js118
-rw-r--r--date-fns/src/locale/sr/index.d.ts4
-rw-r--r--date-fns/src/locale/sr/index.js28
-rw-r--r--date-fns/src/locale/sr/index.js.flow35
-rw-r--r--date-fns/src/locale/sr/snapshot.md304
-rw-r--r--date-fns/src/locale/sv/_lib/formatDistance/index.js127
-rw-r--r--date-fns/src/locale/sv/_lib/formatLong/index.js41
-rw-r--r--date-fns/src/locale/sv/_lib/formatRelative/index.js12
-rw-r--r--date-fns/src/locale/sv/_lib/localize/index.js168
-rw-r--r--date-fns/src/locale/sv/_lib/match/index.js135
-rw-r--r--date-fns/src/locale/sv/index.d.ts4
-rw-r--r--date-fns/src/locale/sv/index.js30
-rw-r--r--date-fns/src/locale/sv/index.js.flow35
-rw-r--r--date-fns/src/locale/sv/snapshot.md304
-rw-r--r--date-fns/src/locale/ta/_lib/formatDistance/index.js236
-rw-r--r--date-fns/src/locale/ta/_lib/formatLong/index.js45
-rw-r--r--date-fns/src/locale/ta/_lib/formatRelative/index.js12
-rw-r--r--date-fns/src/locale/ta/_lib/localize/index.js209
-rw-r--r--date-fns/src/locale/ta/_lib/match/index.js148
-rw-r--r--date-fns/src/locale/ta/index.d.ts4
-rw-r--r--date-fns/src/locale/ta/index.js28
-rw-r--r--date-fns/src/locale/ta/index.js.flow35
-rw-r--r--date-fns/src/locale/ta/snapshot.md304
-rw-r--r--date-fns/src/locale/te/_lib/formatDistance/index.js199
-rw-r--r--date-fns/src/locale/te/_lib/formatLong/index.js45
-rw-r--r--date-fns/src/locale/te/_lib/formatRelative/index.js14
-rw-r--r--date-fns/src/locale/te/_lib/localize/index.js173
-rw-r--r--date-fns/src/locale/te/_lib/match/index.js140
-rw-r--r--date-fns/src/locale/te/index.d.ts4
-rw-r--r--date-fns/src/locale/te/index.js28
-rw-r--r--date-fns/src/locale/te/index.js.flow35
-rw-r--r--date-fns/src/locale/te/snapshot.md304
-rw-r--r--date-fns/src/locale/th/_lib/formatDistance/index.js105
-rw-r--r--date-fns/src/locale/th/_lib/formatLong/index.js41
-rw-r--r--date-fns/src/locale/th/_lib/formatRelative/index.js12
-rw-r--r--date-fns/src/locale/th/_lib/localize/index.js172
-rw-r--r--date-fns/src/locale/th/_lib/match/index.js136
-rw-r--r--date-fns/src/locale/th/index.d.ts4
-rw-r--r--date-fns/src/locale/th/index.js30
-rw-r--r--date-fns/src/locale/th/index.js.flow35
-rw-r--r--date-fns/src/locale/th/snapshot.md304
-rw-r--r--date-fns/src/locale/tr/_lib/formatDistance/index.js101
-rw-r--r--date-fns/src/locale/tr/_lib/formatLong/index.js41
-rw-r--r--date-fns/src/locale/tr/_lib/formatRelative/index.js12
-rw-r--r--date-fns/src/locale/tr/_lib/localize/index.js167
-rw-r--r--date-fns/src/locale/tr/_lib/match/index.js153
-rw-r--r--date-fns/src/locale/tr/index.d.ts4
-rw-r--r--date-fns/src/locale/tr/index.js33
-rw-r--r--date-fns/src/locale/tr/index.js.flow35
-rw-r--r--date-fns/src/locale/tr/snapshot.md304
-rw-r--r--date-fns/src/locale/types.ts105
-rw-r--r--date-fns/src/locale/ug/_lib/formatDistance/index.js101
-rw-r--r--date-fns/src/locale/ug/_lib/formatLong/index.js41
-rw-r--r--date-fns/src/locale/ug/_lib/formatRelative/index.js12
-rw-r--r--date-fns/src/locale/ug/_lib/localize/index.js177
-rw-r--r--date-fns/src/locale/ug/_lib/match/index.js136
-rw-r--r--date-fns/src/locale/ug/index.d.ts4
-rw-r--r--date-fns/src/locale/ug/index.js28
-rw-r--r--date-fns/src/locale/ug/index.js.flow35
-rw-r--r--date-fns/src/locale/ug/snapshot.md304
-rw-r--r--date-fns/src/locale/uk/_lib/formatDistance/index.js247
-rw-r--r--date-fns/src/locale/uk/_lib/formatLong/index.js41
-rw-r--r--date-fns/src/locale/uk/_lib/formatRelative/index.js82
-rw-r--r--date-fns/src/locale/uk/_lib/localize/index.js217
-rw-r--r--date-fns/src/locale/uk/_lib/match/index.js142
-rw-r--r--date-fns/src/locale/uk/index.d.ts4
-rw-r--r--date-fns/src/locale/uk/index.js29
-rw-r--r--date-fns/src/locale/uk/index.js.flow35
-rw-r--r--date-fns/src/locale/uk/snapshot.md304
-rw-r--r--date-fns/src/locale/uz/_lib/formatDistance/index.js101
-rw-r--r--date-fns/src/locale/uz/_lib/formatLong/index.js38
-rw-r--r--date-fns/src/locale/uz/_lib/formatRelative/index.js12
-rw-r--r--date-fns/src/locale/uz/_lib/localize/index.js181
-rw-r--r--date-fns/src/locale/uz/_lib/match/index.js137
-rw-r--r--date-fns/src/locale/uz/index.d.ts4
-rw-r--r--date-fns/src/locale/uz/index.js28
-rw-r--r--date-fns/src/locale/uz/index.js.flow35
-rw-r--r--date-fns/src/locale/uz/snapshot.md304
-rw-r--r--date-fns/src/locale/vi/_lib/formatDistance/index.js101
-rw-r--r--date-fns/src/locale/vi/_lib/formatLong/index.js47
-rw-r--r--date-fns/src/locale/vi/_lib/formatRelative/index.js12
-rw-r--r--date-fns/src/locale/vi/_lib/localize/index.js295
-rw-r--r--date-fns/src/locale/vi/_lib/match/index.js158
-rw-r--r--date-fns/src/locale/vi/index.d.ts4
-rw-r--r--date-fns/src/locale/vi/index.js29
-rw-r--r--date-fns/src/locale/vi/index.js.flow35
-rw-r--r--date-fns/src/locale/vi/snapshot.md304
-rw-r--r--date-fns/src/locale/zh-CN/_lib/formatDistance/index.js101
-rw-r--r--date-fns/src/locale/zh-CN/_lib/formatLong/index.js41
-rw-r--r--date-fns/src/locale/zh-CN/_lib/formatRelative/index.js29
-rw-r--r--date-fns/src/locale/zh-CN/_lib/localize/index.js194
-rw-r--r--date-fns/src/locale/zh-CN/_lib/match/index.js135
-rw-r--r--date-fns/src/locale/zh-CN/index.d.ts4
-rw-r--r--date-fns/src/locale/zh-CN/index.js32
-rw-r--r--date-fns/src/locale/zh-CN/index.js.flow35
-rw-r--r--date-fns/src/locale/zh-CN/snapshot.md304
-rw-r--r--date-fns/src/locale/zh-TW/_lib/formatDistance/index.js101
-rw-r--r--date-fns/src/locale/zh-TW/_lib/formatLong/index.js41
-rw-r--r--date-fns/src/locale/zh-TW/_lib/formatRelative/index.js12
-rw-r--r--date-fns/src/locale/zh-TW/_lib/localize/index.js196
-rw-r--r--date-fns/src/locale/zh-TW/_lib/match/index.js135
-rw-r--r--date-fns/src/locale/zh-TW/index.d.ts4
-rw-r--r--date-fns/src/locale/zh-TW/index.js30
-rw-r--r--date-fns/src/locale/zh-TW/index.js.flow35
-rw-r--r--date-fns/src/locale/zh-TW/snapshot.md304
-rw-r--r--date-fns/src/max/benchmark.js27
-rw-r--r--date-fns/src/max/index.d.ts4
-rw-r--r--date-fns/src/max/index.js.flow52
-rw-r--r--date-fns/src/max/index.ts69
-rw-r--r--date-fns/src/max/test.ts92
-rw-r--r--date-fns/src/milliseconds/index.d.ts4
-rw-r--r--date-fns/src/milliseconds/index.js.flow52
-rw-r--r--date-fns/src/milliseconds/index.ts62
-rw-r--r--date-fns/src/milliseconds/test.ts65
-rw-r--r--date-fns/src/millisecondsToHours/index.d.ts4
-rw-r--r--date-fns/src/millisecondsToHours/index.js.flow52
-rw-r--r--date-fns/src/millisecondsToHours/index.ts31
-rw-r--r--date-fns/src/millisecondsToHours/test.ts22
-rw-r--r--date-fns/src/millisecondsToMinutes/index.d.ts4
-rw-r--r--date-fns/src/millisecondsToMinutes/index.js.flow52
-rw-r--r--date-fns/src/millisecondsToMinutes/index.ts31
-rw-r--r--date-fns/src/millisecondsToMinutes/test.ts21
-rw-r--r--date-fns/src/millisecondsToSeconds/index.d.ts4
-rw-r--r--date-fns/src/millisecondsToSeconds/index.js.flow52
-rw-r--r--date-fns/src/millisecondsToSeconds/index.ts31
-rw-r--r--date-fns/src/millisecondsToSeconds/test.ts22
-rw-r--r--date-fns/src/min/benchmark.js27
-rw-r--r--date-fns/src/min/index.d.ts4
-rw-r--r--date-fns/src/min/index.js.flow52
-rw-r--r--date-fns/src/min/index.ts73
-rw-r--r--date-fns/src/min/test.ts93
-rw-r--r--date-fns/src/minutesToHours/index.d.ts4
-rw-r--r--date-fns/src/minutesToHours/index.js.flow52
-rw-r--r--date-fns/src/minutesToHours/index.ts31
-rw-r--r--date-fns/src/minutesToHours/test.ts21
-rw-r--r--date-fns/src/minutesToMilliseconds/index.d.ts4
-rw-r--r--date-fns/src/minutesToMilliseconds/index.js.flow52
-rw-r--r--date-fns/src/minutesToMilliseconds/index.ts25
-rw-r--r--date-fns/src/minutesToMilliseconds/test.ts20
-rw-r--r--date-fns/src/minutesToSeconds/index.d.ts4
-rw-r--r--date-fns/src/minutesToSeconds/index.js.flow52
-rw-r--r--date-fns/src/minutesToSeconds/index.ts25
-rw-r--r--date-fns/src/minutesToSeconds/test.ts20
-rw-r--r--date-fns/src/monthsToQuarters/index.d.ts4
-rw-r--r--date-fns/src/monthsToQuarters/index.js.flow52
-rw-r--r--date-fns/src/monthsToQuarters/index.ts31
-rw-r--r--date-fns/src/monthsToQuarters/test.ts21
-rw-r--r--date-fns/src/monthsToYears/index.d.ts4
-rw-r--r--date-fns/src/monthsToYears/index.js.flow52
-rw-r--r--date-fns/src/monthsToYears/index.ts30
-rw-r--r--date-fns/src/monthsToYears/test.ts21
-rw-r--r--date-fns/src/nextDay/index.d.ts4
-rw-r--r--date-fns/src/nextDay/index.js.flow52
-rw-r--r--date-fns/src/nextDay/index.ts46
-rw-r--r--date-fns/src/nextDay/test.ts86
-rw-r--r--date-fns/src/nextFriday/index.d.ts4
-rw-r--r--date-fns/src/nextFriday/index.js.flow52
-rw-r--r--date-fns/src/nextFriday/index.ts25
-rw-r--r--date-fns/src/nextFriday/test.ts48
-rw-r--r--date-fns/src/nextMonday/index.d.ts4
-rw-r--r--date-fns/src/nextMonday/index.js.flow52
-rw-r--r--date-fns/src/nextMonday/index.ts25
-rw-r--r--date-fns/src/nextMonday/test.ts48
-rw-r--r--date-fns/src/nextSaturday/index.d.ts4
-rw-r--r--date-fns/src/nextSaturday/index.js.flow52
-rw-r--r--date-fns/src/nextSaturday/index.ts25
-rw-r--r--date-fns/src/nextSaturday/test.ts48
-rw-r--r--date-fns/src/nextSunday/index.d.ts4
-rw-r--r--date-fns/src/nextSunday/index.js.flow52
-rw-r--r--date-fns/src/nextSunday/index.ts25
-rw-r--r--date-fns/src/nextSunday/test.ts48
-rw-r--r--date-fns/src/nextThursday/index.d.ts4
-rw-r--r--date-fns/src/nextThursday/index.js.flow52
-rw-r--r--date-fns/src/nextThursday/index.ts25
-rw-r--r--date-fns/src/nextThursday/test.ts48
-rw-r--r--date-fns/src/nextTuesday/index.d.ts4
-rw-r--r--date-fns/src/nextTuesday/index.js.flow52
-rw-r--r--date-fns/src/nextTuesday/index.ts25
-rw-r--r--date-fns/src/nextTuesday/test.ts47
-rw-r--r--date-fns/src/nextWednesday/index.d.ts4
-rw-r--r--date-fns/src/nextWednesday/index.js.flow52
-rw-r--r--date-fns/src/nextWednesday/index.ts25
-rw-r--r--date-fns/src/nextWednesday/test.ts48
-rw-r--r--date-fns/src/parse/_lib/parsers/index.js1735
-rw-r--r--date-fns/src/parse/benchmark.js20
-rw-r--r--date-fns/src/parse/index.d.ts4
-rw-r--r--date-fns/src/parse/index.js626
-rw-r--r--date-fns/src/parse/index.js.flow63
-rw-r--r--date-fns/src/parse/test.js2665
-rw-r--r--date-fns/src/parseISO/benchmark.js16
-rw-r--r--date-fns/src/parseISO/index.d.ts4
-rw-r--r--date-fns/src/parseISO/index.js343
-rw-r--r--date-fns/src/parseISO/index.js.flow57
-rw-r--r--date-fns/src/parseISO/test.js452
-rw-r--r--date-fns/src/parseJSON/benchmark.js16
-rw-r--r--date-fns/src/parseJSON/index.d.ts4
-rw-r--r--date-fns/src/parseJSON/index.js.flow52
-rw-r--r--date-fns/src/parseJSON/index.ts62
-rw-r--r--date-fns/src/parseJSON/test.ts132
-rw-r--r--date-fns/src/quartersToMonths/index.d.ts4
-rw-r--r--date-fns/src/quartersToMonths/index.js.flow52
-rw-r--r--date-fns/src/quartersToMonths/index.ts25
-rw-r--r--date-fns/src/quartersToMonths/test.ts21
-rw-r--r--date-fns/src/quartersToYears/index.d.ts4
-rw-r--r--date-fns/src/quartersToYears/index.js.flow52
-rw-r--r--date-fns/src/quartersToYears/index.ts31
-rw-r--r--date-fns/src/quartersToYears/test.ts21
-rw-r--r--date-fns/src/roundToNearestMinutes/index.d.ts4
-rw-r--r--date-fns/src/roundToNearestMinutes/index.js61
-rw-r--r--date-fns/src/roundToNearestMinutes/index.js.flow57
-rw-r--r--date-fns/src/roundToNearestMinutes/test.js70
-rw-r--r--date-fns/src/secondsToHours/index.d.ts4
-rw-r--r--date-fns/src/secondsToHours/index.js.flow52
-rw-r--r--date-fns/src/secondsToHours/index.ts31
-rw-r--r--date-fns/src/secondsToHours/test.ts21
-rw-r--r--date-fns/src/secondsToMilliseconds/index.d.ts4
-rw-r--r--date-fns/src/secondsToMilliseconds/index.js.flow52
-rw-r--r--date-fns/src/secondsToMilliseconds/index.ts25
-rw-r--r--date-fns/src/secondsToMilliseconds/test.ts16
-rw-r--r--date-fns/src/secondsToMinutes/index.d.ts4
-rw-r--r--date-fns/src/secondsToMinutes/index.js.flow52
-rw-r--r--date-fns/src/secondsToMinutes/index.ts31
-rw-r--r--date-fns/src/secondsToMinutes/test.ts21
-rw-r--r--date-fns/src/set/benchmark.js25
-rw-r--r--date-fns/src/set/index.d.ts4
-rw-r--r--date-fns/src/set/index.js.flow63
-rw-r--r--date-fns/src/set/index.ts89
-rw-r--r--date-fns/src/set/test.ts143
-rw-r--r--date-fns/src/setDate/benchmark.js21
-rw-r--r--date-fns/src/setDate/index.d.ts4
-rw-r--r--date-fns/src/setDate/index.js.flow52
-rw-r--r--date-fns/src/setDate/index.ts34
-rw-r--r--date-fns/src/setDate/test.ts49
-rw-r--r--date-fns/src/setDay/benchmark.js21
-rw-r--r--date-fns/src/setDay/index.d.ts4
-rw-r--r--date-fns/src/setDay/index.js69
-rw-r--r--date-fns/src/setDay/index.js.flow59
-rw-r--r--date-fns/src/setDay/test.js147
-rw-r--r--date-fns/src/setDayOfYear/benchmark.js21
-rw-r--r--date-fns/src/setDayOfYear/index.d.ts4
-rw-r--r--date-fns/src/setDayOfYear/index.js.flow52
-rw-r--r--date-fns/src/setDayOfYear/index.ts38
-rw-r--r--date-fns/src/setDayOfYear/test.ts50
-rw-r--r--date-fns/src/setHours/benchmark.js21
-rw-r--r--date-fns/src/setHours/index.d.ts4
-rw-r--r--date-fns/src/setHours/index.js34
-rw-r--r--date-fns/src/setHours/index.js.flow52
-rw-r--r--date-fns/src/setHours/test.js49
-rw-r--r--date-fns/src/setISODay/benchmark.js21
-rw-r--r--date-fns/src/setISODay/index.d.ts4
-rw-r--r--date-fns/src/setISODay/index.js.flow52
-rw-r--r--date-fns/src/setISODay/index.ts39
-rw-r--r--date-fns/src/setISODay/test.ts78
-rw-r--r--date-fns/src/setISOWeek/benchmark.js21
-rw-r--r--date-fns/src/setISOWeek/index.d.ts4
-rw-r--r--date-fns/src/setISOWeek/index.js.flow52
-rw-r--r--date-fns/src/setISOWeek/index.ts38
-rw-r--r--date-fns/src/setISOWeek/test.ts60
-rw-r--r--date-fns/src/setISOWeekYear/benchmark.js21
-rw-r--r--date-fns/src/setISOWeekYear/index.d.ts4
-rw-r--r--date-fns/src/setISOWeekYear/index.js.flow52
-rw-r--r--date-fns/src/setISOWeekYear/index.ts49
-rw-r--r--date-fns/src/setISOWeekYear/test.ts69
-rw-r--r--date-fns/src/setMilliseconds/benchmark.js21
-rw-r--r--date-fns/src/setMilliseconds/index.d.ts4
-rw-r--r--date-fns/src/setMilliseconds/index.js.flow52
-rw-r--r--date-fns/src/setMilliseconds/index.ts34
-rw-r--r--date-fns/src/setMilliseconds/test.ts64
-rw-r--r--date-fns/src/setMinutes/benchmark.js21
-rw-r--r--date-fns/src/setMinutes/index.d.ts4
-rw-r--r--date-fns/src/setMinutes/index.js34
-rw-r--r--date-fns/src/setMinutes/index.js.flow52
-rw-r--r--date-fns/src/setMinutes/test.js49
-rw-r--r--date-fns/src/setMonth/benchmark.js21
-rw-r--r--date-fns/src/setMonth/index.d.ts4
-rw-r--r--date-fns/src/setMonth/index.js.flow52
-rw-r--r--date-fns/src/setMonth/index.ts44
-rw-r--r--date-fns/src/setMonth/test.ts65
-rw-r--r--date-fns/src/setQuarter/benchmark.js21
-rw-r--r--date-fns/src/setQuarter/index.d.ts4
-rw-r--r--date-fns/src/setQuarter/index.js.flow52
-rw-r--r--date-fns/src/setQuarter/index.ts36
-rw-r--r--date-fns/src/setQuarter/test.ts65
-rw-r--r--date-fns/src/setSeconds/benchmark.js21
-rw-r--r--date-fns/src/setSeconds/index.d.ts4
-rw-r--r--date-fns/src/setSeconds/index.js.flow52
-rw-r--r--date-fns/src/setSeconds/index.ts34
-rw-r--r--date-fns/src/setSeconds/test.ts61
-rw-r--r--date-fns/src/setWeek/index.d.ts4
-rw-r--r--date-fns/src/setWeek/index.js58
-rw-r--r--date-fns/src/setWeek/index.js.flow60
-rw-r--r--date-fns/src/setWeek/test.js100
-rw-r--r--date-fns/src/setWeekYear/index.d.ts4
-rw-r--r--date-fns/src/setWeekYear/index.js77
-rw-r--r--date-fns/src/setWeekYear/index.js.flow60
-rw-r--r--date-fns/src/setWeekYear/test.js109
-rw-r--r--date-fns/src/setYear/benchmark.js21
-rw-r--r--date-fns/src/setYear/index.d.ts4
-rw-r--r--date-fns/src/setYear/index.js.flow52
-rw-r--r--date-fns/src/setYear/index.ts40
-rw-r--r--date-fns/src/setYear/test.ts49
-rw-r--r--date-fns/src/startOfDay/benchmark.js21
-rw-r--r--date-fns/src/startOfDay/index.d.ts4
-rw-r--r--date-fns/src/startOfDay/index.js.flow52
-rw-r--r--date-fns/src/startOfDay/index.ts32
-rw-r--r--date-fns/src/startOfDay/test.ts35
-rw-r--r--date-fns/src/startOfDecade/benchmark.js15
-rw-r--r--date-fns/src/startOfDecade/index.d.ts4
-rw-r--r--date-fns/src/startOfDecade/index.js.flow52
-rw-r--r--date-fns/src/startOfDecade/index.ts34
-rw-r--r--date-fns/src/startOfDecade/test.ts35
-rw-r--r--date-fns/src/startOfHour/benchmark.js21
-rw-r--r--date-fns/src/startOfHour/index.d.ts4
-rw-r--r--date-fns/src/startOfHour/index.js.flow52
-rw-r--r--date-fns/src/startOfHour/index.ts32
-rw-r--r--date-fns/src/startOfHour/test.ts35
-rw-r--r--date-fns/src/startOfISOWeek/benchmark.js21
-rw-r--r--date-fns/src/startOfISOWeek/index.d.ts4
-rw-r--r--date-fns/src/startOfISOWeek/index.js.flow52
-rw-r--r--date-fns/src/startOfISOWeek/index.ts32
-rw-r--r--date-fns/src/startOfISOWeek/test.ts35
-rw-r--r--date-fns/src/startOfISOWeekYear/benchmark.js15
-rw-r--r--date-fns/src/startOfISOWeekYear/index.d.ts4
-rw-r--r--date-fns/src/startOfISOWeekYear/index.js.flow52
-rw-r--r--date-fns/src/startOfISOWeekYear/index.ts39
-rw-r--r--date-fns/src/startOfISOWeekYear/test.ts51
-rw-r--r--date-fns/src/startOfMinute/benchmark.js21
-rw-r--r--date-fns/src/startOfMinute/index.d.ts4
-rw-r--r--date-fns/src/startOfMinute/index.js.flow52
-rw-r--r--date-fns/src/startOfMinute/index.ts32
-rw-r--r--date-fns/src/startOfMinute/test.ts35
-rw-r--r--date-fns/src/startOfMonth/benchmark.js21
-rw-r--r--date-fns/src/startOfMonth/index.d.ts4
-rw-r--r--date-fns/src/startOfMonth/index.js.flow52
-rw-r--r--date-fns/src/startOfMonth/index.ts33
-rw-r--r--date-fns/src/startOfMonth/test.ts35
-rw-r--r--date-fns/src/startOfQuarter/benchmark.js21
-rw-r--r--date-fns/src/startOfQuarter/index.d.ts4
-rw-r--r--date-fns/src/startOfQuarter/index.js.flow52
-rw-r--r--date-fns/src/startOfQuarter/index.ts35
-rw-r--r--date-fns/src/startOfQuarter/test.ts35
-rw-r--r--date-fns/src/startOfSecond/benchmark.js21
-rw-r--r--date-fns/src/startOfSecond/index.d.ts4
-rw-r--r--date-fns/src/startOfSecond/index.js.flow52
-rw-r--r--date-fns/src/startOfSecond/index.ts32
-rw-r--r--date-fns/src/startOfSecond/test.ts35
-rw-r--r--date-fns/src/startOfToday/benchmark.js9
-rw-r--r--date-fns/src/startOfToday/index.d.ts4
-rw-r--r--date-fns/src/startOfToday/index.js.flow52
-rw-r--r--date-fns/src/startOfToday/index.ts28
-rw-r--r--date-fns/src/startOfToday/test.ts24
-rw-r--r--date-fns/src/startOfTomorrow/benchmark.js9
-rw-r--r--date-fns/src/startOfTomorrow/index.d.ts4
-rw-r--r--date-fns/src/startOfTomorrow/index.js.flow52
-rw-r--r--date-fns/src/startOfTomorrow/index.ts34
-rw-r--r--date-fns/src/startOfTomorrow/test.ts34
-rw-r--r--date-fns/src/startOfWeek/benchmark.js21
-rw-r--r--date-fns/src/startOfWeek/index.d.ts4
-rw-r--r--date-fns/src/startOfWeek/index.js.flow58
-rw-r--r--date-fns/src/startOfWeek/index.ts66
-rw-r--r--date-fns/src/startOfWeek/test.ts113
-rw-r--r--date-fns/src/startOfWeekYear/index.d.ts4
-rw-r--r--date-fns/src/startOfWeekYear/index.js71
-rw-r--r--date-fns/src/startOfWeekYear/index.js.flow59
-rw-r--r--date-fns/src/startOfWeekYear/test.js83
-rw-r--r--date-fns/src/startOfYear/benchmark.js21
-rw-r--r--date-fns/src/startOfYear/index.d.ts4
-rw-r--r--date-fns/src/startOfYear/index.js.flow52
-rw-r--r--date-fns/src/startOfYear/index.ts34
-rw-r--r--date-fns/src/startOfYear/test.ts46
-rw-r--r--date-fns/src/startOfYesterday/benchmark.js9
-rw-r--r--date-fns/src/startOfYesterday/index.d.ts4
-rw-r--r--date-fns/src/startOfYesterday/index.js.flow52
-rw-r--r--date-fns/src/startOfYesterday/index.ts34
-rw-r--r--date-fns/src/startOfYesterday/test.ts34
-rw-r--r--date-fns/src/sub/benchmark.js25
-rw-r--r--date-fns/src/sub/index.d.ts4
-rw-r--r--date-fns/src/sub/index.js72
-rw-r--r--date-fns/src/sub/index.js.flow52
-rw-r--r--date-fns/src/sub/test.js82
-rw-r--r--date-fns/src/subBusinessDays/index.d.ts4
-rw-r--r--date-fns/src/subBusinessDays/index.js28
-rw-r--r--date-fns/src/subBusinessDays/index.js.flow52
-rw-r--r--date-fns/src/subBusinessDays/test.js63
-rw-r--r--date-fns/src/subDays/benchmark.js21
-rw-r--r--date-fns/src/subDays/index.d.ts4
-rw-r--r--date-fns/src/subDays/index.js.flow52
-rw-r--r--date-fns/src/subDays/index.ts32
-rw-r--r--date-fns/src/subDays/test.ts52
-rw-r--r--date-fns/src/subHours/benchmark.js21
-rw-r--r--date-fns/src/subHours/index.d.ts4
-rw-r--r--date-fns/src/subHours/index.js.flow52
-rw-r--r--date-fns/src/subHours/index.ts32
-rw-r--r--date-fns/src/subHours/test.ts52
-rw-r--r--date-fns/src/subISOWeekYears/benchmark.js15
-rw-r--r--date-fns/src/subISOWeekYears/index.d.ts4
-rw-r--r--date-fns/src/subISOWeekYears/index.js.flow52
-rw-r--r--date-fns/src/subISOWeekYears/index.ts39
-rw-r--r--date-fns/src/subISOWeekYears/test.ts62
-rw-r--r--date-fns/src/subMilliseconds/benchmark.js21
-rw-r--r--date-fns/src/subMilliseconds/index.d.ts4
-rw-r--r--date-fns/src/subMilliseconds/index.js.flow52
-rw-r--r--date-fns/src/subMilliseconds/index.ts32
-rw-r--r--date-fns/src/subMilliseconds/test.ts67
-rw-r--r--date-fns/src/subMinutes/benchmark.js21
-rw-r--r--date-fns/src/subMinutes/index.d.ts4
-rw-r--r--date-fns/src/subMinutes/index.js.flow52
-rw-r--r--date-fns/src/subMinutes/index.ts32
-rw-r--r--date-fns/src/subMinutes/test.ts54
-rw-r--r--date-fns/src/subMonths/benchmark.js21
-rw-r--r--date-fns/src/subMonths/index.d.ts4
-rw-r--r--date-fns/src/subMonths/index.js.flow52
-rw-r--r--date-fns/src/subMonths/index.ts32
-rw-r--r--date-fns/src/subMonths/test.ts69
-rw-r--r--date-fns/src/subQuarters/benchmark.js21
-rw-r--r--date-fns/src/subQuarters/index.d.ts4
-rw-r--r--date-fns/src/subQuarters/index.js.flow52
-rw-r--r--date-fns/src/subQuarters/index.ts32
-rw-r--r--date-fns/src/subQuarters/test.ts69
-rw-r--r--date-fns/src/subSeconds/benchmark.js21
-rw-r--r--date-fns/src/subSeconds/index.d.ts4
-rw-r--r--date-fns/src/subSeconds/index.js.flow52
-rw-r--r--date-fns/src/subSeconds/index.ts32
-rw-r--r--date-fns/src/subSeconds/test.ts55
-rw-r--r--date-fns/src/subWeeks/benchmark.js21
-rw-r--r--date-fns/src/subWeeks/index.d.ts4
-rw-r--r--date-fns/src/subWeeks/index.js.flow52
-rw-r--r--date-fns/src/subWeeks/index.ts32
-rw-r--r--date-fns/src/subWeeks/test.ts52
-rw-r--r--date-fns/src/subYears/benchmark.js21
-rw-r--r--date-fns/src/subYears/index.d.ts4
-rw-r--r--date-fns/src/subYears/index.js.flow52
-rw-r--r--date-fns/src/subYears/index.ts32
-rw-r--r--date-fns/src/subYears/test.ts68
-rw-r--r--date-fns/src/toDate/benchmark.js16
-rw-r--r--date-fns/src/toDate/index.d.ts4
-rw-r--r--date-fns/src/toDate/index.js.flow52
-rw-r--r--date-fns/src/toDate/index.ts61
-rw-r--r--date-fns/src/toDate/test.ts136
-rw-r--r--date-fns/src/types.ts53
-rw-r--r--date-fns/src/weeksToDays/index.d.ts4
-rw-r--r--date-fns/src/weeksToDays/index.js.flow52
-rw-r--r--date-fns/src/weeksToDays/index.ts25
-rw-r--r--date-fns/src/weeksToDays/test.ts21
-rw-r--r--date-fns/src/yearsToMonths/index.d.ts4
-rw-r--r--date-fns/src/yearsToMonths/index.js.flow52
-rw-r--r--date-fns/src/yearsToMonths/index.ts25
-rw-r--r--date-fns/src/yearsToMonths/test.ts21
-rw-r--r--date-fns/src/yearsToQuarters/index.d.ts4
-rw-r--r--date-fns/src/yearsToQuarters/index.js.flow52
-rw-r--r--date-fns/src/yearsToQuarters/index.ts25
-rw-r--r--date-fns/src/yearsToQuarters/test.ts21
-rw-r--r--date-fns/test.js2
-rw-r--r--date-fns/test/.eslintrc.js5
-rw-r--r--date-fns/test/dst/addBusinessDays/basic.js18
-rw-r--r--date-fns/test/dst/eachDayOfInterval/basic.js22
-rw-r--r--date-fns/test/dst/formatDistanceStrict/cairo.ts15
-rw-r--r--date-fns/test/dst/formatDistanceStrict/melbourne.ts16
-rw-r--r--date-fns/test/dst/parseISO/basic.js30
-rw-r--r--date-fns/test/dst/parseISO/samoa.js16
-rw-r--r--date-fns/test/dst/parseISO/sydney.js58
-rw-r--r--date-fns/test/dst/tzOffsetTransitions.ts143
-rw-r--r--date-fns/test/formatISO/india.js13
-rw-r--r--date-fns/test/formatRFC3339/australia.js30
-rw-r--r--date-fns/test/formatRFC3339/india.js30
-rw-r--r--date-fns/test/formatRFC3339/newfoundland.js32
-rw-r--r--date-fns/test/formatRFC3339/newzealand.js32
-rw-r--r--date-fns/test/formatRFC3339/poland.js31
-rw-r--r--date-fns/testWithoutLocales.js7
-rw-r--r--date-fns/tsconfig.json21
-rw-r--r--date-fns/typings.d.ts22036
-rw-r--r--date-fns/yarn.lock12767
2743 files changed, 208332 insertions, 0 deletions
diff --git a/date-fns/.babelrc.js b/date-fns/.babelrc.js
new file mode 100644
index 0000000..4e33238
--- /dev/null
+++ b/date-fns/.babelrc.js
@@ -0,0 +1,32 @@
+const presets = ['@babel/preset-typescript']
+const plugins = [
+ '@babel/plugin-transform-block-scoping',
+ '@babel/plugin-transform-template-literals',
+ '@babel/plugin-transform-arrow-functions',
+ '@babel/plugin-transform-parameters',
+ '@babel/plugin-transform-destructuring',
+ '@babel/plugin-proposal-optional-chaining',
+ '@babel/plugin-proposal-object-rest-spread',
+ '@babel/plugin-transform-shorthand-properties',
+]
+
+if (process.env.NODE_ENV === 'test') {
+ presets.push('babel-preset-power-assert')
+}
+
+if (process.env.BABEL_ENV !== 'esm') {
+ plugins.push('@babel/plugin-transform-modules-commonjs')
+ plugins.push('babel-plugin-add-module-exports')
+}
+
+if (process.env.BABEL_ENV === 'esm' || process.env.BABEL_ENV === 'commonjs') {
+ plugins.push(['babel-plugin-add-import-extension', { extension: 'js' }])
+}
+
+const overrides = [{ ignore: ['**/*.d.ts'] }]
+
+module.exports = {
+ presets,
+ plugins,
+ overrides,
+}
diff --git a/date-fns/.editorconfig b/date-fns/.editorconfig
new file mode 100644
index 0000000..1a09640
--- /dev/null
+++ b/date-fns/.editorconfig
@@ -0,0 +1,11 @@
+root = true
+
+[*]
+insert_final_newline = true
+charset = utf-8
+trim_trailing_whitespace = true
+end_of_line = lf
+
+[*.{js,json}]
+indent_style = space
+indent_size = 2
diff --git a/date-fns/.eslintignore b/date-fns/.eslintignore
new file mode 100644
index 0000000..082cbe2
--- /dev/null
+++ b/date-fns/.eslintignore
@@ -0,0 +1,3 @@
+node_modules
+/tmp
+/examples/*/dist \ No newline at end of file
diff --git a/date-fns/.eslintrc.js b/date-fns/.eslintrc.js
new file mode 100644
index 0000000..48a96d2
--- /dev/null
+++ b/date-fns/.eslintrc.js
@@ -0,0 +1,12 @@
+module.exports = {
+ extends: ['eslint:recommended', 'prettier'],
+ parser: 'babel-eslint',
+ env: {
+ browser: true,
+ node: true,
+ es6: true
+ },
+ rules: {
+ 'no-unused-vars': ['error', { argsIgnorePattern: '^_' }]
+ }
+}
diff --git a/date-fns/.flowconfig b/date-fns/.flowconfig
new file mode 100644
index 0000000..aa9fec0
--- /dev/null
+++ b/date-fns/.flowconfig
@@ -0,0 +1,4 @@
+[ignore]
+.*examples*
+[options]
+suppress_comment= \\(.\\|\n\\)*\\$ExpectedMistake
diff --git a/date-fns/.github/FUNDING.yml b/date-fns/.github/FUNDING.yml
new file mode 100644
index 0000000..ba2478b
--- /dev/null
+++ b/date-fns/.github/FUNDING.yml
@@ -0,0 +1,9 @@
+# These are supported funding model platforms
+
+github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
+patreon: # Replace with a single Patreon username
+open_collective: date-fns
+ko_fi: # Replace with a single Ko-fi username
+tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
+community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
+custom: # Replace with a single custom sponsorship URL
diff --git a/date-fns/.github/workflows/coverage.yaml b/date-fns/.github/workflows/coverage.yaml
new file mode 100644
index 0000000..88bc7cb
--- /dev/null
+++ b/date-fns/.github/workflows/coverage.yaml
@@ -0,0 +1,21 @@
+name: Coverage report
+
+'on':
+ push:
+ branches: [master]
+
+jobs:
+ tests:
+ runs-on: ubuntu-latest
+
+ strategy:
+ matrix:
+ node-version: [14.x]
+
+ steps:
+ - uses: actions/checkout@v2
+ - uses: actions/setup-node@v2
+ with:
+ node-version: ${{ matrix.node-version }}
+ - name: Run release script
+ run: ./scripts/test/coverageReport.sh
diff --git a/date-fns/.github/workflows/deploy.yaml b/date-fns/.github/workflows/deploy.yaml
new file mode 100644
index 0000000..fda9ab1
--- /dev/null
+++ b/date-fns/.github/workflows/deploy.yaml
@@ -0,0 +1,21 @@
+name: Deploy
+
+'on':
+ push:
+ branches: [master]
+
+jobs:
+ tests:
+ runs-on: ubuntu-latest
+
+ strategy:
+ matrix:
+ node-version: [14.x]
+
+ steps:
+ - uses: actions/checkout@v2
+ - uses: actions/setup-node@v2
+ with:
+ node-version: ${{ matrix.node-version }}
+ - name: Run release script
+ run: ./scripts/release/release.sh
diff --git a/date-fns/.github/workflows/main_tests.yaml b/date-fns/.github/workflows/main_tests.yaml
new file mode 100644
index 0000000..93ef149
--- /dev/null
+++ b/date-fns/.github/workflows/main_tests.yaml
@@ -0,0 +1,31 @@
+name: Node.js tests
+
+on: [push, pull_request]
+
+jobs:
+ tests:
+ runs-on: ubuntu-latest
+
+ strategy:
+ matrix:
+ node-version: [14.x]
+
+ steps:
+ - uses: actions/checkout@v2
+ - uses: actions/setup-node@v2
+ with:
+ node-version: ${{ matrix.node-version }}
+ - name: export CHROME_BIN
+ run: export CHROME_BIN=chromium-browser
+ - name: export DISPLAY
+ run: export DISPLAY=:99.0
+ - name: Install yarn
+ run: npm install -g yarn
+ - name: Install dependencies
+ run: yarn install
+ - name: Run tests
+ uses: GabrielBB/xvfb-action@v1.0
+ with:
+ run: ./scripts/test/ci.sh
+ env:
+ TEST_SUITE: node
diff --git a/date-fns/.github/workflows/node_tests.yaml b/date-fns/.github/workflows/node_tests.yaml
new file mode 100644
index 0000000..c850a0b
--- /dev/null
+++ b/date-fns/.github/workflows/node_tests.yaml
@@ -0,0 +1,31 @@
+name: Main tests
+
+on: [push, pull_request]
+
+jobs:
+ tests:
+ runs-on: ubuntu-latest
+
+ strategy:
+ matrix:
+ node-version: [14.x]
+
+ steps:
+ - uses: actions/checkout@v2
+ - uses: actions/setup-node@v2
+ with:
+ node-version: ${{ matrix.node-version }}
+ - name: export CHROME_BIN
+ run: export CHROME_BIN=chromium-browser
+ - name: export DISPLAY
+ run: export DISPLAY=:99.0
+ - name: Install yarn
+ run: npm install -g yarn
+ - name: Install dependencies
+ run: yarn install
+ - name: Run tests
+ uses: GabrielBB/xvfb-action@v1.0
+ with:
+ run: ./scripts/test/ci.sh
+ env:
+ TEST_SUITE: main
diff --git a/date-fns/.github/workflows/timezone_step_1.yaml b/date-fns/.github/workflows/timezone_step_1.yaml
new file mode 100644
index 0000000..fe9f365
--- /dev/null
+++ b/date-fns/.github/workflows/timezone_step_1.yaml
@@ -0,0 +1,33 @@
+name: Timezones 1/2
+
+on: [push, pull_request]
+
+jobs:
+ tests:
+ runs-on: ubuntu-latest
+
+ strategy:
+ matrix:
+ node-version: [14.x]
+
+ steps:
+ - uses: actions/checkout@v2
+ - uses: actions/setup-node@v2
+ with:
+ node-version: ${{ matrix.node-version }}
+ - name: export CHROME_BIN
+ run: export CHROME_BIN=chromium-browser
+ - name: export DISPLAY
+ run: export DISPLAY=:99.0
+ - name: Install yarn
+ run: npm install -g yarn
+ - name: Install dependencies
+ run: yarn install
+ - name: Run tests
+ uses: GabrielBB/xvfb-action@v1.0
+ with:
+ run: ./scripts/test/ci.sh
+ env:
+ TEST_SUITE: tz
+ TZ_LENGTH: 2
+ TZ_INDEX: 0
diff --git a/date-fns/.github/workflows/timezone_step_2.yaml b/date-fns/.github/workflows/timezone_step_2.yaml
new file mode 100644
index 0000000..83c6fec
--- /dev/null
+++ b/date-fns/.github/workflows/timezone_step_2.yaml
@@ -0,0 +1,33 @@
+name: Timezones 2/2
+
+on: [push, pull_request]
+
+jobs:
+ tests:
+ runs-on: ubuntu-latest
+
+ strategy:
+ matrix:
+ node-version: [14.x]
+
+ steps:
+ - uses: actions/checkout@v2
+ - uses: actions/setup-node@v2
+ with:
+ node-version: ${{ matrix.node-version }}
+ - name: export CHROME_BIN
+ run: export CHROME_BIN=chromium-browser
+ - name: export DISPLAY
+ run: export DISPLAY=:99.0
+ - name: Install yarn
+ run: npm install -g yarn
+ - name: Install dependencies
+ run: yarn install
+ - name: Run tests
+ uses: GabrielBB/xvfb-action@v1.0
+ with:
+ run: ./scripts/test/ci.sh
+ env:
+ TEST_SUITE: tz
+ TZ_LENGTH: 2
+ TZ_INDEX: 1
diff --git a/date-fns/.gitignore b/date-fns/.gitignore
new file mode 100644
index 0000000..2b95ec1
--- /dev/null
+++ b/date-fns/.gitignore
@@ -0,0 +1,11 @@
+node_modules
+npm-debug.log*
+yarn-error.log*
+tmp
+dist
+.envrc
+docs.json
+.idea
+.vscode
+coverage
+/secrets \ No newline at end of file
diff --git a/date-fns/.prettierrc.js b/date-fns/.prettierrc.js
new file mode 100644
index 0000000..a6b80c2
--- /dev/null
+++ b/date-fns/.prettierrc.js
@@ -0,0 +1,4 @@
+module.exports = {
+ singleQuote: true,
+ semi: false
+}
diff --git a/date-fns/.tool-versions b/date-fns/.tool-versions
new file mode 100644
index 0000000..23f946f
--- /dev/null
+++ b/date-fns/.tool-versions
@@ -0,0 +1 @@
+nodejs 14.16.0 \ No newline at end of file
diff --git a/date-fns/.ts-eslintrc.js b/date-fns/.ts-eslintrc.js
new file mode 100644
index 0000000..d0076c3
--- /dev/null
+++ b/date-fns/.ts-eslintrc.js
@@ -0,0 +1,32 @@
+module.exports = {
+ extends: ['plugin:@typescript-eslint/recommended'],
+ plugins: ['@typescript-eslint'],
+ parser: '@typescript-eslint/parser',
+ env: {
+ browser: true,
+ node: true,
+ es6: true
+ },
+ rules: {
+ '@typescript-eslint/indent': ['off'],
+ '@typescript-eslint/no-unused-vars': ['off'],
+ '@typescript-eslint/no-use-before-define': ['off'],
+ '@typescript-eslint/no-var-requires': ['off'],
+ '@typescript-eslint/no-explicit-any': ['off'],
+ '@typescript-eslint/prefer-interface': ['off'],
+ '@typescript-eslint/class-name-casing': ['off'],
+ '@typescript-eslint/ban-types': ['off'],
+ '@typescript-eslint/array-type': ['off'],
+ '@typescript-eslint/member-delimiter-style': [
+ 'error',
+ {
+ multiline: {
+ delimiter: 'none'
+ },
+ singleline: {
+ delimiter: 'semi'
+ }
+ }
+ ]
+ }
+}
diff --git a/date-fns/CHANGELOG.md b/date-fns/CHANGELOG.md
new file mode 100644
index 0000000..2b69990
--- /dev/null
+++ b/date-fns/CHANGELOG.md
@@ -0,0 +1,2359 @@
+# Change Log
+
+All notable changes to this project will be documented in this file.
+This project adheres to [Semantic Versioning].
+
+This change log follows the format documented in [Keep a CHANGELOG].
+
+[semantic versioning]: http://semver.org/
+[keep a changelog]: http://keepachangelog.com/
+
+## v2.22.1 - 2021-05-28
+
+Thanks to [Sasha Koss](http://github.com/kossnocorp) for working on the release.
+
+### Fixed
+
+- Fixed constant typings. ([#2491](https://github.com/date-fns/date-fns/issues/2491))
+
+## v2.22.0 - 2021-05-28
+
+On this release worked [Sasha Koss](http://github.com/kossnocorp), [Lucas Silva](http://github.com/LucasHFS), [Lay](http://github.com/brownsugar), [jwbth](http://github.com/jwbth), [fturmel](http://github.com/fturmel), [Tan75](http://github.com/tan75) and [Anastasia Kobzar](http://github.com/rikkalo).
+
+### Fixed
+
+- [Fixed Taiwanese locale to use traditional Chinese and removed unnecessary spaces.](https://github.com/date-fns/date-fns/pull/2436)
+
+- [Fixed Russian locale to use correct long formats.](https://github.com/date-fns/date-fns/pull/2478)
+
+### Added
+
+- [Added 18 new conversion functions](https://github.com/date-fns/date-fns/pull/2433):
+ - `daysToWeeks`
+ - `hoursToMilliseconds`
+ - `hoursToMinutes`
+ - `hoursToSeconds`
+ - `millisecondsToHours`
+ - `millisecondsToMinutes`
+ - `millisecondsToSeconds`
+ - `minutesToHours`
+ - `minutesToMilliseconds`
+ - `minutesToSeconds`
+ - `monthsToQuarters`
+ - `monthsToYears`
+ - `quartersToMonths`
+ - `quartersToYears`
+ - `secondsToHours`
+ - `secondsToMilliseconds`
+ - `secondsToMinutes`
+ - `weeksToDays`
+ - `yearsToMonths`
+ - `yearsToQuarters`
+
+## v2.21.3 - 2021-05-08
+
+This release is brought to you by [Maxim Topciu](http://github.com/maximtop).
+
+### Fixed
+
+- [Fixed IE11 support by babelifing the shorthand properties.](https://github.com/date-fns/date-fns/pull/2467)
+
+## v2.21.2 - 2021-05-05
+
+Kudos to [Aleksei Korzun](http://github.com/a-korzun), [Maxim Topciu](http://github.com/maximtop), [Jonas L](http://github.com/jooola), [Mohammad ali Ali panah](http://github.com/always-maap) and [Tan75](http://github.com/tan75) for working on the release.
+
+### Fixed
+
+- [`differenceInBusinessDays` now returns `NaN` instead of `Invalid Date` when an invalid argument is passed to the function.](https://github.com/date-fns/date-fns/pull/2414)
+
+- [Fixed `weekStartsOn` in Persian locale.](https://github.com/date-fns/date-fns/pull/2430)
+
+## v2.21.1 - 2021-04-15
+
+Thanks to [Sasha Koss](http://github.com/kossnocorp) for working on the release.
+
+### Fixed
+
+- [Fixed a breaking change introduced by using modern default argument value syntax (see https://github.com/Hacker0x01/react-datepicker/issues/2870).](https://github.com/date-fns/date-fns/pull/2423)
+
+## v2.21.0 - 2021-04-14
+
+This release is brought to you by [Aleksei Korzun](http://github.com/a-korzun), [Tan75](http://github.com/tan75), [Rubens Mariuzzo](http://github.com/rmariuzzo), [Christoph Stenglein](http://github.com/cstenglein) and [Clément Tamisier](http://github.com/ctamisier).
+
+### Fixed
+
+- [Made `formatDistanceStrict` return `12 months` instead of `1 year` when `unit: 'month'`.](https://github.com/date-fns/date-fns/pull/2411)
+
+### Added
+
+- [Added Haitian Creole (`ht`) locale.](https://github.com/date-fns/date-fns/pull/2396)
+- [Added Austrian German (`de-AT`) locale.](https://github.com/date-fns/date-fns/pull/2362)
+
+## v2.20.3 - 2021-04-13
+
+Kudos to [fturmel](http://github.com/fturmel) for working on the release.
+
+### Fixed
+
+- [Fixed broken tree-shaking caused by missing links to corresponding ESM.](https://github.com/date-fns/date-fns/pull/2339) ([#2207](https://github.com/date-fns/date-fns/issues/2207))
+
+## v2.20.2 - 2021-04-12
+
+Kudos to [Maxim Topciu](http://github.com/maximtop) for working on the release.
+
+### Fixed
+
+- [Fixed IE11 incompatibility caused by the usage of spread syntax.](https://github.com/date-fns/date-fns/pull/2407) ([#2408](https://github.com/date-fns/date-fns/issues/2408))
+
+## v2.20.1 - 2021-04-09
+
+This release is brought to you by [Sasha Koss](http://github.com/kossnocorp) and [Tan75](http://github.com/tan75).
+
+### Fixed
+
+- Fixed `isDate` Flow typings that we broke in `v2.20.0`.
+
+## v2.20.0 - 2021-04-08
+
+This release is brought to you by [Sasha Koss](http://github.com/kossnocorp), [Maxim Topciu](http://github.com/maximtop), [tu4mo](http://github.com/tu4mo), [Tan75](http://github.com/tan75), [Ardit Dine](http://github.com/arditdine), [Carl Rosell](http://github.com/CarlRosell), [Roman Mahotskyi](http://github.com/enheit), [Mateusz Krzak](http://github.com/mateuszkrzak), [fgottschalk](http://github.com/fgottschalk), [Anastasia Kobzar](http://github.com/rikkalo), [Bilguun Ochirbat](http://github.com/bilguun0203), [Lesha Koss](http://github.com/leshakoss), [YuLe](http://github.com/yuler) and [guyroberts21](http://github.com/guyroberts21).
+
+### Fixed
+
+- [Made `formatDistanceStrict` and `formatDistanceToNowStrict` always return `1 year` instead of `12 months`.](https://github.com/date-fns/date-fns/pull/2391) ([#2388](https://github.com/date-fns/date-fns/issues/2388))
+
+- Fixed `nextDay`, `nextMonday` and `nextTuesday` missing in exports and type definitions. ([#2325](https://github.com/date-fns/date-fns/issues/2325))
+
+- [Fixed a DST bug in `formatDistanceStrict`.](https://github.com/date-fns/date-fns/pull/2329) ([#2307](https://github.com/date-fns/date-fns/issues/2307))
+
+### Added
+
+- [Added new `eachMinuteOfInterval` function.](https://github.com/date-fns/date-fns/pull/2382)
+
+- [Added Albanian (`sq`) locale](https://github.com/date-fns/date-fns/pull/2290)
+
+- [Added Mongolian (`mn`) locale](https://github.com/date-fns/date-fns/pull/1961)
+
+- [Added `nextWednesday`, `nextThursday`, `nextFriday`, `nextSaturday` and `nextSunday`.](https://github.com/date-fns/date-fns/pull/2291)
+
+## v2.19.0 - 2021-03-05
+
+On this release worked [Tan75](http://github.com/tan75).
+
+### Fixed
+
+- [Assigned the correct `firstWeekContainsDate` value (`4`) for the French locale.](https://github.com/date-fns/date-fns/pull/2273) ([#2148](https://github.com/date-fns/date-fns/issues/2148))
+
+- [Fixed torsdag abbreviation in the Swedish locale.](https://github.com/date-fns/date-fns/pull/2220)
+
+- [Fixed a bug in `differenceInMonths` and `intervalToDuration` that occurs when dealing with the 28th of February.](https://github.com/date-fns/date-fns/pull/2256) ([#2255](https://github.com/date-fns/date-fns/issues/2255))
+
+### Added
+
+- [Added new functions: `nextDay`, `nextMonday` and `nextTuesday` that allows getting the next day of the week, Monday or Tuesday respectively.](https://github.com/date-fns/date-fns/pull/2214)
+
+## v2.18.0 - 2021-03-01
+
+Thanks to [Tan75](http://github.com/tan75) and [Lesha Koss](http://github.com/leshakoss).
+
+### Fixed
+
+- [Fixed documentation missing for `intlFormat`.](https://github.com/date-fns/date-fns/pull/2259) ([#2258](https://github.com/date-fns/date-fns/issues/2258))
+
+- [Fixed date formats in the Latvian locale.](https://github.com/date-fns/date-fns/pull/2205) ([#2202](https://github.com/date-fns/date-fns/issues/2202))
+
+### Added
+
+- [Added support of positive and negative offsets in `parseJSON`.](https://github.com/date-fns/date-fns/pull/2200) ([#2149](https://github.com/date-fns/date-fns/issues/2149))
+
+## [2.17.0] - 2021-02-05
+
+Kudos to [@shaykav](https://github.com/date-fns/date-fns/pull/1952), [@davidgape89](https://github.com/davidgape89), [@rikkalo](https://github.com/rikkalo), [@tan75](https://github.com/tan75), [@talgautb](https://github.com/talgautb), [@owenl131](https://github.com/owenl131), [@kylesezhi](https://github.com/kylesezhi), [@inigoiparragirre](https://github.com/inigoiparragirre), [@gius](https://github.com/gius), [@Endeauvirr](https://github.com/Endeauvirr) and [@frankyston](https://github.com/frankyston).
+
+### Fixed
+
+- [Fixed Russian locale parsing issue](https://github.com/date-fns/date-fns/pull/1950).
+
+- [Fixed `differenceInMonths` for edge cases, such as the end of February dates](https://github.com/date-fns/date-fns/pull/2185).
+
+- [Fixed suffixes for the Kazakh locale](https://github.com/date-fns/date-fns/pull/2010).
+
+- [Fixed `formatDuration` week translation in `pt` and `pt-BR` locales](https://github.com/date-fns/date-fns/pull/2125).
+
+- [Made Japanese locale to use the correct value for the start of the week](https://github.com/date-fns/date-fns/pull/2099).
+
+- [Adjusted date formats in the Basque locale](https://github.com/date-fns/date-fns/pull/2080).
+
+- [Fixed the short and medium date formats in the Czech locale](https://github.com/date-fns/date-fns/pull/2111).
+
+- [Adjusted the Polish translations of `formatDistance`](https://github.com/date-fns/date-fns/pull/2187).
+
+- [Fixed the week's abbreviations in the Brazilian Portuguese](https://github.com/date-fns/date-fns/pull/2170).
+
+### Added
+
+- [Added `intlFormat`](https://github.com/date-fns/date-fns/pull/2172) a lightweight formatting function that uses [Intl API](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl). Eventually, it will become the default formatting function, so it's highly recommended for new code.
+
+- [Added `en-ZA` locale](https://github.com/date-fns/date-fns/pull/1952).
+
+- [Added an ability to format lowercase am/pm with `aaa` and `bbb` tokens](https://github.com/date-fns/date-fns/pull/2016).
+
+- [Added ordinal formatting for Japanese year values](https://github.com/date-fns/date-fns/pull/2177/files).
+
+## [2.16.1] - 2020-07-31
+
+Kudos to [@aleksaps](https://github.com/aleksaps), [@leedriscoll](https://github.com/leedriscoll) and [@BanForFun](https://github.com/BanForFun) for pull-requests!
+
+### Fixed
+
+- [Fixed a typo in Scottish Gaelic (gd) locale](https://github.com/date-fns/date-fns/pull/1925).
+- [Fixed typos in Serbian Latin locale](https://github.com/date-fns/date-fns/pull/1928).
+- [Fixed greek grammar for Saturday on `formatRelative`](https://github.com/date-fns/date-fns/pull/1930).
+- Removed locale snapshots from the npm package making it lighter.
+
+## [2.16.0] - 2020-08-27
+
+Kudos to [@jvpelt](https://github.com/jvpelt), [@piotrl](https://github.com/piotrl), [@yotamofek](https://github.com/yotamofek), [@dwaxweiler](https://github.com/dwaxweiler), [@leedriscoll](https://github.com/leedriscoll) and [@bradevans](https://github.com/bradevans) for working on the release. Also thanks to [@PascalHonegger](https://github.com/PascalHonegger), [@pickfire](https://github.com/pickfire), [@TheJaredWilcurt](https://github.com/TheJaredWilcurt), [@SidKH](https://github.com/SidKH) and [@nfantone](https://github.com/nfantone) for improving the documentation.
+
+### Fixed
+
+- [Added correct translations for Welsh `1 minute` and `2 days`](https://github.com/date-fns/date-fns/pull/1903).
+- [Fixed `formatRFC3339` formatting timezone offset with minutes](https://github.com/date-fns/date-fns/pull/1890).
+- [Added missing locale type definition for `formatDuration`](https://github.com/date-fns/date-fns/pull/1881)
+- [Fixed Scottish Gaelic locale issues](https://github.com/date-fns/date-fns/pull/1914).
+
+### Changed
+
+- [Used shorter Hebrew alternative for "about"](https://github.com/date-fns/date-fns/pull/1893).
+- [Improved string arguments warning after upgrading to v2](https://github.com/date-fns/date-fns/pull/1910).
+
+### Added
+
+- [Added Luxembourgish (lb) locale](https://github.com/date-fns/date-fns/pull/1900).
+
+## [2.15.0] - 2020-07-17
+
+Thanks to [@belgamo](https://github.com/belgamo), [@Matsuuu](https://github.com/Matsuuu), [@Imballinst](https://github.com/Imballinst), [@arsnyder16](https://github.com/arsnyder16), [@pankajupadhyay29](https://github.com/pankajupadhyay29), [@DCBN](https://github.com/DCBN), [@leedriscoll](https://github.com/leedriscoll), [@gottsohn](https://github.com/gottsohn), [@mukuljainx](https://github.com/mukuljainx) and [@dtriana](https://github.com/dtriana) for working on the release. Also kudos to [@KidkArolis](https://github.com/KidkArolis), [@imgx64](https://github.com/imgx64), [@fjc0k](https://github.com/fjc0k), [@wmonk](https://github.com/wmonk), [@djD-REK](https://github.com/djD-REK), [@dandv](https://github.com/dandv), [@psimk](https://github.com/psimk) and [@brimworks](https://github.com/brimworks) for improving the documentation.
+
+### Fixed
+
+- [Fixed behavior of `addBusinessDays` when input date is a weekend day](https://github.com/date-fns/date-fns/pull/1790).
+- [Fixed `parseISO` not returning `Invalid Date` on incorrect string when there are spaces in it](https://github.com/date-fns/date-fns/pull/1791).
+- [Fixed `es` round-tripping dates with Wednesday](https://github.com/date-fns/date-fns/pull/1792).
+- [Fixed round-trip bug with `d`/`EEEE` ordering in tokens like `PPPPP`](https://github.com/date-fns/date-fns/pull/1795).
+- [Fixed issues with parsing values in Japanese](https://github.com/date-fns/date-fns/pull/1807).
+- [Fixed Hungarian breaking IE11](https://github.com/date-fns/date-fns/pull/1842).
+- [Fixed Spanish accents in Saturday and Wednesday](https://github.com/date-fns/date-fns/pull/1872).
+
+### Changed
+
+- [Improved the message of protected tokens error](https://github.com/date-fns/date-fns/pull/1641).
+
+### Added
+
+- [Added Swiss-French `fr-CH` locale](https://github.com/date-fns/date-fns/pull/1809).
+- [Added Flemish `nl-BE` locale](https://github.com/date-fns/date-fns/pull/1812).
+- [Added Scottish Gaelic `gd` locale](https://github.com/date-fns/date-fns/pull/1832).
+- [Added New Zealand English `en-NZ` locale](https://github.com/date-fns/date-fns/pull/1835).
+- [Added `isMatch` function](https://github.com/date-fns/date-fns/pull/1868).
+
+## [2.14.0] - 2020-05-18
+
+Kudos to [@julamb](https://github.com/julamb), [@JacobSoderblom](https://github.com/JacobSoderblom), [@justingrant](http://github.com/justingrant), [@dragunoff](https://github.com/dragunoff), [@jmate0321](https://github.com/jmate0321), [@gbhasha](https://github.com/gbhasha), [@rasck](https://github.com/rasck), [@AlbertoPdRF](https://github.com/AlbertoPdRF), [@sebastianhaberey](https://github.com/sebastianhaberey) and [@giogonzo](https://github.com/giogonzo) for working on the release!
+
+### Fixed
+
+- [Fixed DST issues with `add`, `addDays` and `addMonths`](https://github.com/date-fns/date-fns/pull/1760).
+- [Fixed "quarter" translation in the Bulgarian locale](https://github.com/date-fns/date-fns/pull/1763).
+- [Fixed `formatDistance` strings in the Hungarian locale](https://github.com/date-fns/date-fns/pull/1765).
+- [Fixed Danish month abbreviations](https://github.com/date-fns/date-fns/pull/1774).
+- [Fixed parsing of mei in the Dutch locale](https://github.com/date-fns/date-fns/pull/1774).
+- [Fixed missing preposition in `formatLong` in the Spanish locale](https://github.com/date-fns/date-fns/pull/1775).
+- [Fixed `formatRelative` in the Italian locale](https://github.com/date-fns/date-fns/pull/1777).
+
+### Added
+
+- [Added `eachQuarterOfInterval`](https://github.com/date-fns/date-fns/pull/1715).
+- [Added Basque (`eu`) locale](https://github.com/date-fns/date-fns/pull/1759).
+- [Added Indian English (`en-IN`) locale](https://github.com/date-fns/date-fns/pull/1767).
+- [Added `eachHourOfInterval`](https://github.com/date-fns/date-fns/pull/1776).
+
+## [2.13.0] - 2020-05-06
+
+Thanks to [@JorenVos](https://github.com/JorenVos), [@developergouli](https://github.com/developergouli), [@rhlowe](https://github.com/rhlowe) and [@justingrant](http://github.com/justingrant) for working on the release!
+
+### Fixed
+
+- [Fixed mei abbreviation in the Dutch locale](https://github.com/date-fns/date-fns/pull/1752).
+- [Fixed `differenceInDays` DST behavior broken in 2.12.0](https://github.com/date-fns/date-fns/pull/1754).
+
+### Added
+
+- [Added Kannada locale support](https://github.com/date-fns/date-fns/pull/1747).
+- [Added `formatISODuration` function](https://github.com/date-fns/date-fns/pull/1713).
+- [Added `intervalToDuration` function](https://github.com/date-fns/date-fns/pull/1713).
+
+## [2.12.0] - 2020-04-09
+
+Kudos to [@leshakoss](http://github.com/leshakoss), [@skyuplam](https://github.com/skyuplam), [@so99ynoodles](https://github.com/so99ynoodles), [@dkozickis](https://github.com/dkozickis), [@belgamo](https://github.com/belgamo), [@akgondber](https://github.com/akgondber), [@dcousens](https://github.com/dcousens) and [@BoomDev](https://github.com/BoomDev) for working on the release!
+
+### Fixed
+
+- [Fixed minulý štvrtok in Slovak locale](https://github.com/date-fns/date-fns/pull/1701).
+- Fixed date ordinalNumber for [ja/zh-CN/zh-TW](https://github.com/date-fns/date-fns/pull/1690) and [ko](https://github.com/date-fns/date-fns/pull/1696).
+- [Fixed quarters parsing](https://github.com/date-fns/date-fns/pull/1694).
+- [Fixed `setDay` with `weekStartsOn` != 0](https://github.com/date-fns/date-fns/pull/1639).
+- [Fixed differenceInDays across DST](https://github.com/date-fns/date-fns/pull/1630).
+- [Fixed required arguments exception message](https://github.com/date-fns/date-fns/pull/1674).
+
+### Added
+
+- [Added new function `formatDistanceToNowStrict`](https://github.com/date-fns/date-fns/pull/1679).
+
+## [2.11.1] - 2020-03-26
+
+### Fixed
+
+- Rebuilt TypeScript and flow types.
+
+## [2.11.0] - 2020-03-13
+
+Kudos to [@oakhan3](https://github.com/oakhan3), [@Mukhammadali](https://github.com/Mukhammadali), [@altrim](https://github.com/altrim), [@leepowellcouk](https://github.com/leepowellcouk), [@amatzon](@https://github.com/amatzon), [@bryanMt](https://github.com/bryanMt), [@kalekseev](https://github.com/kalekseev), [@eugene-platov](https://github.com/eugene-platov) and [@tjrobinson](https://github.com/tjrobinson) for working on the release.
+
+### Fixed
+
+- [Fixed a bug in `differenceInYears` causing incorrect results when the left date is a leap day](https://github.com/date-fns/date-fns/pull/1654).
+- [Fixed `parseISO` to work correctly around time shift dates](https://github.com/date-fns/date-fns/pull/1667).
+- [Fixed `format` to work correctly with GMT-0752/GMT-0456 and similar timezones](https://github.com/date-fns/date-fns/pull/1666).
+
+### Changed
+
+- [Changed `getDay` typings to return `0|1|2|3|4|5|6` instead of `number`](https://github.com/date-fns/date-fns/pull/1668).
+- [Improved Chinese locale](https://github.com/date-fns/date-fns/pull/1664):
+ - Change date format to meet the national standard (GB/T 7408-2005).
+ - Improve `ordinalNumber` function behavior.
+ - Add prefix in `formatRelative` depending on if it's a current week or not.
+
+### Added
+
+- [Added Uzbek `uz` locale](https://github.com/date-fns/date-fns/pull/1648).
+- [Updated Macedonian locale for v2](https://github.com/date-fns/date-fns/pull/1649).
+- [Added Maltese `mt` locale](https://github.com/date-fns/date-fns/pull/1658).
+
+## [2.10.0] - 2020-02-25
+
+### Fixed
+
+- [Fixed `formatISO` when formatting time with timezones with minute offsets > 0](https://github.com/date-fns/date-fns/pull/1599). Kudos to [@dcRUSTy](https://github.com/dcRUSTy).
+
+### Fixed
+
+- Fixed a bug in setDay when using weekStartsOn that is not 0
+
+### Added
+
+- [Added `weeks` to `Duration`](https://github.com/date-fns/date-fns/pull/1592).
+- [Added `weeks` support to `add` and `sub`](https://github.com/date-fns/date-fns/pull/1592).
+- [Added details message in `throwProtectedError`](https://github.com/date-fns/date-fns/pull/1592).
+
+## [2.9.0] - 2020-01-08
+
+Thanks to [@mborgbrant](https://github.com/mborgbrant), [@saintplay](https://github.com/saintplay), [@mrenty](https://github.com/mrenty), [@kibertoad](https://github.com/kibertoad), [@levibuzolic](https://github.com/levibuzolic), [@Anshuman71](https://github.com/Anshuman71), [@talgautb](https://github.com/talgautb), [@filipjuza](https://github.com/filipjuza), [@tobyzerner](https://github.com/tobyzerner), [@emil9453](https://github.com/emil9453), [@fintara](https://github.com/fintara), [@pascaliske](https://github.com/pascaliske), [@rramiachraf](https://github.com/rramiachraf), [@marnusw](https://github.com/marnusw) and [@Imballinst](https://github.com/Imballinst) for working on the release.
+
+### Fixed
+
+- [Fixed a bug with addBusinessDays returning the Tuesday when adding 1 day on weekends. Now it returns the Monday](https://github.com/date-fns/date-fns/pull/1588).
+- [Added missing timezone to `formatISO`](https://github.com/date-fns/date-fns/pull/1576).
+- [Removed dots from short day period names in the Kazakh locale](https://github.com/date-fns/date-fns/pull/1512).
+- [Fixed typo in formatDistance in the Czech locale](https://github.com/date-fns/date-fns/pull/1540).
+- [Fixed shortenings in the Bulgarian locale](https://github.com/date-fns/date-fns/pull/1560).
+- [Fixed regex for the May in the Portuguese locale](https://github.com/date-fns/date-fns/pull/1565).
+
+### Added
+
+- [Added `eachMonthOfInterval` and `eachYearOfInterval`](https://github.com/date-fns/date-fns/pull/618).
+- [Added `inclusive` option to `areIntervalsOverlapping](https://github.com/date-fns/date-fns/pull/643).
+- [Added `isExists` function that checks if the given date is exists](https://github.com/date-fns/date-fns/pull/682).
+- [Added `add` function to add seconds, minutes, hours, weeks, years in single call](https://github.com/date-fns/date-fns/pull/1581).
+- [Added `sub` function, the opposite of `add`](https://github.com/date-fns/date-fns/pull/1583).
+- [Added `Duration` type used in `add` and `sub`](https://github.com/date-fns/date-fns/pull/1583).
+- [Added Azerbaijani (az) locale](https://github.com/date-fns/date-fns/pull/1547).
+- [Added Moroccan Arabic (ar-MA) locale](https://github.com/date-fns/date-fns/pull/1578).
+
+### Changed
+
+- [Reduced the total minified build size by 1Kb/4%](https://github.com/date-fns/date-fns/pull/1563).
+- [Made all properties in `Locale` type optional](https://github.com/date-fns/date-fns/pull/1542).
+- [Added missing properties to `Locale` type](https://github.com/date-fns/date-fns/pull/1542).
+- [Add the locale code to `Locale` type](https://github.com/date-fns/date-fns/pull/1580).
+- [Added support of space time separator to `parseJSON`](https://github.com/date-fns/date-fns/pull/1579).
+- [Allowed up to 7 digits in milliseconds in `parseJSON`](https://github.com/date-fns/date-fns/pull/1579).
+
+## [2.8.1] - 2019-11-22
+
+Thanks to [@Imballinst](https://github.com/Imballinst) for the bug fix!
+
+### Fixed
+
+- [Add colon between the hour and minutes for `formatRFC3339`](https://github.com/date-fns/date-fns/pull/1549). [See #1548](https://github.com/date-fns/date-fns/issues/1548).
+
+## [2.8.0] - 2019-11-19
+
+Kudos to [@NaridaL](https://github.com/NaridaL), [@Zyten](https://github.com/Zyten), [@Imballinst](https://github.com/Imballinst), [@leshakoss](https://github.com/leshakoss) and [@Neorth](https://github.com/Neorth) for working on the release.
+
+### Fixed
+
+- [Remove the next week preposition in the Swedish locale](https://github.com/date-fns/date-fns/pull/1538).
+
+### Added
+
+- [Added Malay (ms) locale](https://github.com/date-fns/date-fns/pull/1537).
+- [Added `formatISO`, `formatISO9075`, `formatRFC3339`, and `formatRFC7231` functions](https://github.com/date-fns/date-fns/pull/1536).
+
+## [2.7.0] - 2019-11-07
+
+Thanks to [@mzgajner](https://github.com/mzgajner), [@NaridaL](https://github.com/NaridaL), [@Zyten](https://github.com/Zyten), [@leshakoss](https://github.com/leshakoss), [@fintara](https://github.com/fintara), [@kpr-hellofresh](https://github.com/kpr-hellofresh) for contributing to the release.
+
+### Fixed
+
+- [Fixed a mistake in the Slovenian locale](https://github.com/date-fns/date-fns/pull/1529).
+- [Fixed incorrect behavior of `parseISO` in Firefox caused by differences in `getTimezoneOffset`](https://github.com/date-fns/date-fns/pull/1495).
+
+### Changed
+
+- [Make object arguments types more elaborate in Flow type definitions](https://github.com/date-fns/date-fns/pull/1519).
+- [Get rid of deprecated Function in Flow type definitions](https://github.com/date-fns/date-fns/pull/1520).
+- [Allow `parseJSON` to accept strings without trailing 'Z' symbol and with up to 6 digits in the milliseconds' field](https://github.com/date-fns/date-fns/pull/1499).
+
+### Added
+
+- [Added Bulgarian (bg) locale](https://github.com/date-fns/date-fns/pull/1522).
+
+## [2.6.0] - 2019-10-22
+
+Kudos to [@marnusw](https://github.com/marnusw), [@cdrikd](https://github.com/cdrikd) and [@rogyvoje](https://github.com/rogyvoje) for working on the release!
+
+### Added
+
+- [Added `parseJSON` - lightweight function (just 411 B) that parses dates formatted with `toJSON`](https://github.com/date-fns/date-fns/pull/1463).
+- [Added the language code to each locale](https://github.com/date-fns/date-fns/pull/1489).
+- [Added `subBusinessDays` function](https://github.com/date-fns/date-fns/pull/1491).
+- [Added both Serbian - cyrillic (sr) and latin (sr-Latn) locales](https://github.com/date-fns/date-fns/pull/1494).
+
+## [2.5.1] - 2019-10-18
+
+Thanks to [@mitchellbutler](https://github.com/mitchellbutler) for the bug fix!
+
+### Fixed
+
+- [Fixed infinite loop in `addBusinessDays`](https://github.com/date-fns/date-fns/pull/1486).
+
+## [2.5.0] - 2019-10-16
+
+Kudos to [@dkozickis](https://github.com/dkozickis), [@drugoi](https://github.com/drugoi), [@kranthilakum](https://github.com/kranthilakum), [@102](https://github.com/102), [@gpetrioli](https://github.com/gpetrioli) and [@JulienMalige](https://github.com/JulienMalige) for making the release happen.
+
+### Fixed
+
+- [Fixed compatibility with IE11 by removing `findIndex` from the code](https://github.com/date-fns/date-fns/pull/1457).
+- [Fixed Greek locale patterns](https://github.com/date-fns/date-fns/pull/1480).
+
+### Added
+
+- [Added Kazakh (kk) locale](https://github.com/date-fns/date-fns/pull/1460).
+- [Added Telugu (te) locale](https://github.com/date-fns/date-fns/pull/1464).
+- [Added Canadian French (fr-CA) locale](https://github.com/date-fns/date-fns/issues/1465).
+- [Added Australian English (en-AU) locale](https://github.com/date-fns/date-fns/pull/1470).
+- [Exported `Interval` and `Locale` types from Flow typings](https://github.com/date-fns/date-fns/pull/1475).
+
+## [2.4.1] - 2019-09-28
+
+Thanks to [@mrclayman](https://github.com/mrclayman) for reporting the issue and [@leshakoss](https://github.com/leshakoss) for fixing it.
+
+### Fixed
+
+- [Fixed am/pm mixup in the Czech locale](https://github.com/date-fns/date-fns/pull/1453).
+
+## [2.4.0] - 2019-09-27
+
+This release brought to you by these amazing people: [@lovelovedokidoki](https://github.com/lovelovedokidoki), [@alexigityan](https://github.com/alexigityan), [@kalekseev](https://github.com/kalekseev) and [@andybangs](https://github.com/andybangs). You rock!
+
+### Fixed
+
+- [Fixed Vietnamese parsing patterns](https://github.com/date-fns/date-fns/pull/1445).
+- [Fixed Czech parsing regexes](https://github.com/date-fns/date-fns/pull/1446).
+- [Fixed offset for Eastern Hemisphere in `parseISO`](https://github.com/date-fns/date-fns/pull/1450).
+
+### Added
+
+- [Added Armenian locale support](https://github.com/date-fns/date-fns/pull/1448).
+
+## [2.3.0] - 2019-09-24
+
+Huge thanks to [@lovelovedokidoki](https://github.com/lovelovedokidoki) who improved 8 (!) locales in an unstoppable open-source rampage and [@VesterDe](https://github.com/VesterDe) for fixing Slovenian locale 👏
+
+### Fixed
+
+- [Fixed the translation of "yesterday" in the Slovenian locale](https://github.com/date-fns/date-fns/pull/1420).
+- [Fixed French parsing issues with June and August](https://github.com/date-fns/date-fns/pull/1430).
+- [Improved Turkish parsing](https://github.com/date-fns/date-fns/pull/1432).
+- [Fixed "March" in Dutch parsing patterns](https://github.com/date-fns/date-fns/pull/1433).
+- [Fixed Hindi parsing patterns](https://github.com/date-fns/date-fns/pull/1434).
+
+### Added
+
+- [Added Finnish matching patterns](https://github.com/date-fns/date-fns/pull/1425).
+- [Accept abbreviated March, June, July in Norwegian locales](https://github.com/date-fns/date-fns/pull/1431).
+- [Added parsing for Greek months with long formatting](https://github.com/date-fns/date-fns/pull/1435).
+
+## [2.2.1] - 2019-09-12
+
+Kudos to date-fns contributors: [@mzgajner](https://github.com/mzgajner), [@sibiraj-s](https://github.com/sibiraj-s), [@mukeshmandiwal](https://github.com/mukeshmandiwal), [@SneakyFish5](https://github.com/SneakyFish5) and [@CarterLi](https://github.com/CarterLi).
+
+### Added
+
+- [Added new `set` function](https://github.com/date-fns/date-fns/pull/1398).
+- [Updated Slovenian (sl) locale for v2](https://github.com/date-fns/date-fns/pull/1418).
+- [Added Tamil (ta) locale](https://github.com/date-fns/date-fns/pull/1411).
+- [Added Hindi (hi) locale](https://github.com/date-fns/date-fns/pull/1409).
+- [Added support of `\n` in `format`, `lightFormat` and `parse`](https://github.com/date-fns/date-fns/pull/1417).
+
+## [2.1.0] - 2019-09-06
+
+Thanks to date-fns contributors: [@ManadayM](https://github.com/ManadayM), [@illuminist](https://github.com/illuminist), [@visualfanatic](https://github.com/visualfanatic), [@vsaarinen](https://github.com/vsaarinen) and at least but not least [@leshakoss](https://github.com/leshakoss)!
+
+### Fixed
+
+- [Set start of the week to the Sunday for Thai locale](https://github.com/date-fns/date-fns/pull/1402).
+- [Fixed month matching in Polish locale](https://github.com/date-fns/date-fns/pull/1404).
+- [Fixed `eachWeekendOfInterval` skipping the first date in the supplied interval](https://github.com/date-fns/date-fns/pull/1407).
+
+### Added
+
+- [Added Gujarati locale](https://github.com/date-fns/date-fns/pull/1400).
+
+## [2.0.1] - 2019-08-23
+
+### Fixed
+
+- [Fix](https://github.com/date-fns/date-fns/pull/1046) `getWeekOfMonth` with `options.weekStartsOn` set to 1 [not working for Sundays](https://github.com/date-fns/date-fns/issues/1040). Kudos to [@waseemahmad31](https://github.com/waseemahmad31)!
+
+## [2.0.0] - 2019-08-20
+
+If you're upgrading from v2 alpha or beta, [see the pre-release changelog](https://gist.github.com/kossnocorp/a307a464760b405bb78ef5020a4ab136).
+
+### Fixed
+
+- Fix the `toDate` bug occurring when parsing ISO-8601 style dates (but not valid ISO format)
+ with a trailing Z (e.g `2012-01Z`), it returned Invalid Date for FireFox/IE11 [#510](https://github.com/date-fns/date-fns/issue/510)
+
+- Fix `differenceIn...` functions returning negative zero in some cases:
+ [#692](https://github.com/date-fns/date-fns/issues/692)
+
+- `isDate` now works properly with dates passed across iframes [#754](https://github.com/date-fns/date-fns/pull/754).
+
+- Fix a few bugs that appear in timezones with offsets that include seconds (e.g. GMT+00:57:44).
+ See PR [#789](https://github.com/date-fns/date-fns/pull/789).
+
+- [Fixed DST issue](https://github.com/date-fns/date-fns/pull/1003). See [#972](https://github.com/date-fns/date-fns/issues/972) and [#992](https://github.com/date-fns/date-fns/issues/992) for more details.
+
+- Fixed DST issue in `eachDayOfInterval` that caused time in the days
+ after DST change to have the shift as well.
+
+- Fix bug in Galician locale caused by incorrect usage of `getHours`
+ instead of `getUTCHours`.
+
+### Changed
+
+- **BREAKING**: now functions don't accept string arguments, but only
+ numbers or dates. When a string is passed, it will result in
+ an unexpected result (`Invalid Date`, `NaN`, etc).
+
+ From now on a string should be parsed using `parseISO` (ISO 8601)
+ or `parse`.
+
+ In v1 we've used `new Date()` to parse strings, but it resulted in many
+ hard-to-track bugs caused by inconsistencies in different browsers.
+ To address that we've implemented our ISO 8601 parser but that made
+ library to significantly grow in size. To prevent inevitable bugs
+ and keep the library tiny, we made this trade-off.
+
+ See [this post](https://blog.date-fns.org/post/we-cut-date-fns-v2-minimal-build-size-down-to-300-bytes-and-now-its-the-smallest-date-library-18f2nvh2z0yal) for more details.
+
+ ```javascript
+ // Before v2.0.0
+ addDays('2016-01-01', 1)
+
+ // v2.0.0 onward
+ addDays(parseISO('2016-01-01'), 1)
+ ```
+
+- **BREAKING**: new format string API for `format` function
+ which is based on [Unicode Technical Standard #35](https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table).
+ See [this post](https://blog.date-fns.org/post/unicode-tokens-in-date-fns-v2-sreatyki91jg) for more details.
+
+ | Unit | v2 Pattern | v1 Pattern | Result examples |
+ | ------------------------------- | ---------- | ---------- | --------------------------------- |
+ | Era | G..GGG | | AD, BC |
+ | | GGGG | | Anno Domini, Before Christ |
+ | | GGGGG | | A, B |
+ | Calendar year | y | | 44, 1, 1900, 2017 |
+ | | yo | | 44th, 1st, 0th, 17th |
+ | | yy | YY | 44, 01, 00, 17 |
+ | | yyy | | 044, 001, 1900, 2017 |
+ | | yyyy | YYYY | 0044, 0001, 1900, 2017 |
+ | | yyyyy | | ... |
+ | Local week-numbering year | Y | | 44, 1, 1900, 2017 |
+ | | Yo | | 44th, 1st, 1900th, 2017th |
+ | | YY | | 44, 01, 00, 17 |
+ | | YYY | | 044, 001, 1900, 2017 |
+ | | YYYY | | 0044, 0001, 1900, 2017 |
+ | | YYYYY | | ... |
+ | ISO week-numbering year | R | | -43, 0, 1, 1900, 2017 |
+ | | RR | GG | -43, 00, 01, 1900, 2017 |
+ | | RRR | | -043, 000, 001, 1900, 2017 |
+ | | RRRR | GGGG | -0043, 0000, 0001, 1900, 2017 |
+ | | RRRRR | | ... |
+ | Extended year | u | | -43, 0, 1, 1900, 2017 |
+ | | uu | | -43, 01, 1900, 2017 |
+ | | uuu | | -043, 001, 1900, 2017 |
+ | | uuuu | | -0043, 0001, 1900, 2017 |
+ | | uuuuu | | ... |
+ | Quarter (formatting) | Q | | 1, 2, 3, 4 |
+ | | Qo | | 1st, 2nd, 3rd, 4th |
+ | | QQ | | 01, 02, 03, 04 |
+ | | QQQ | | Q1, Q2, Q3, Q4 |
+ | | QQQQ | | 1st quarter, 2nd quarter, ... |
+ | | QQQQQ | | 1, 2, 3, 4 |
+ | Quarter (stand-alone) | q | Q | 1, 2, 3, 4 |
+ | | qo | Qo | 1st, 2nd, 3rd, 4th |
+ | | qq | | 01, 02, 03, 04 |
+ | | qqq | | Q1, Q2, Q3, Q4 |
+ | | qqqq | | 1st quarter, 2nd quarter, ... |
+ | | qqqqq | | 1, 2, 3, 4 |
+ | Month (formatting) | M | | 1, 2, ..., 12 |
+ | | Mo | | 1st, 2nd, ..., 12th |
+ | | MM | | 01, 02, ..., 12 |
+ | | MMM | | Jan, Feb, ..., Dec |
+ | | MMMM | | January, February, ..., December |
+ | | MMMMM | | J, F, ..., D |
+ | Month (stand-alone) | L | M | 1, 2, ..., 12 |
+ | | Lo | | 1st, 2nd, ..., 12th |
+ | | LL | MM | 01, 02, ..., 12 |
+ | | LLL | MMM | Jan, Feb, ..., Dec |
+ | | LLLL | MMMM | January, February, ..., December |
+ | | LLLLL | | J, F, ..., D |
+ | Local week of year | w | | 1, 2, ..., 53 |
+ | | wo | | 1st, 2nd, ..., 53th |
+ | | ww | | 01, 02, ..., 53 |
+ | ISO week of year | I | W | 1, 2, ..., 53 |
+ | | Io | Wo | 1st, 2nd, ..., 53th |
+ | | II | WW | 01, 02, ..., 53 |
+ | Day of month | d | D | 1, 2, ..., 31 |
+ | | do | Do | 1st, 2nd, ..., 31st |
+ | | dd | DD | 01, 02, ..., 31 |
+ | Day of year | D | DDD | 1, 2, ..., 365, 366 |
+ | | Do | DDDo | 1st, 2nd, ..., 365th, 366th |
+ | | DD | | 01, 02, ..., 365, 366 |
+ | | DDD | DDDD | 001, 002, ..., 365, 366 |
+ | | DDDD | | ... |
+ | Day of week (formatting) | E..EEE | | Mon, Tue, Wed, ..., Su |
+ | | EEEE | | Monday, Tuesday, ..., Sunday |
+ | | EEEEE | | M, T, W, T, F, S, S |
+ | | EEEEEE | | Mo, Tu, We, Th, Fr, Su, Sa |
+ | ISO day of week (formatting) | i | E | 1, 2, 3, ..., 7 |
+ | | io | do | 1st, 2nd, ..., 7th |
+ | | ii | | 01, 02, ..., 07 |
+ | | iii | ddd | Mon, Tue, Wed, ..., Su |
+ | | iiii | dddd | Monday, Tuesday, ..., Sunday |
+ | | iiiii | | M, T, W, T, F, S, S |
+ | | iiiiii | dd | Mo, Tu, We, Th, Fr, Su, Sa |
+ | Local day of week (formatting) | e | | 2, 3, 4, ..., 1 |
+ | | eo | | 2nd, 3rd, ..., 1st |
+ | | ee | | 02, 03, ..., 01 |
+ | | eee | | Mon, Tue, Wed, ..., Su |
+ | | eeee | | Monday, Tuesday, ..., Sunday |
+ | | eeeee | | M, T, W, T, F, S, S |
+ | | eeeeee | | Mo, Tu, We, Th, Fr, Su, Sa |
+ | Local day of week (stand-alone) | c | | 2, 3, 4, ..., 1 |
+ | | co | | 2nd, 3rd, ..., 1st |
+ | | cc | | 02, 03, ..., 01 |
+ | | ccc | | Mon, Tue, Wed, ..., Su |
+ | | cccc | | Monday, Tuesday, ..., Sunday |
+ | | ccccc | | M, T, W, T, F, S, S |
+ | | cccccc | | Mo, Tu, We, Th, Fr, Su, Sa |
+ | AM, PM | a..aaa | A | AM, PM |
+ | | aaaa | aa | a.m., p.m. |
+ | | aaaaa | | a, p |
+ | AM, PM, noon, midnight | b..bbb | | AM, PM, noon, midnight |
+ | | bbbb | | a.m., p.m., noon, midnight |
+ | | bbbbb | | a, p, n, mi |
+ | Flexible day period | B..BBB | | at night, in the morning, ... |
+ | | BBBB | | at night, in the morning, ... |
+ | | BBBBB | | at night, in the morning, ... |
+ | Hour [1-12] | h | | 1, 2, ..., 11, 12 |
+ | | ho | | 1st, 2nd, ..., 11th, 12th |
+ | | hh | | 01, 02, ..., 11, 12 |
+ | Hour [0-23] | H | | 0, 1, 2, ..., 23 |
+ | | Ho | | 0th, 1st, 2nd, ..., 23rd |
+ | | HH | | 00, 01, 02, ..., 23 |
+ | Hour [0-11] | K | | 1, 2, ..., 11, 0 |
+ | | Ko | | 1st, 2nd, ..., 11th, 0th |
+ | | KK | | 1, 2, ..., 11, 0 |
+ | Hour [1-24] | k | | 24, 1, 2, ..., 23 |
+ | | ko | | 24th, 1st, 2nd, ..., 23rd |
+ | | kk | | 24, 01, 02, ..., 23 |
+ | Minute | m | | 0, 1, ..., 59 |
+ | | mo | | 0th, 1st, ..., 59th |
+ | | mm | | 00, 01, ..., 59 |
+ | Second | s | | 0, 1, ..., 59 |
+ | | so | | 0th, 1st, ..., 59th |
+ | | ss | | 00, 01, ..., 59 |
+ | Fraction of second | S | | 0, 1, ..., 9 |
+ | | SS | | 00, 01, ..., 99 |
+ | | SSS | | 000, 0001, ..., 999 |
+ | | SSSS | | ... |
+ | Timezone (ISO-8601 w/ Z) | X | | -08, +0530, Z |
+ | | XX | | -0800, +0530, Z |
+ | | XXX | | -08:00, +05:30, Z |
+ | | XXXX | | -0800, +0530, Z, +123456 |
+ | | XXXXX | | -08:00, +05:30, Z, +12:34:56 |
+ | Timezone (ISO-8601 w/o Z) | x | | -08, +0530, +00 |
+ | | xx | ZZ | -0800, +0530, +0000 |
+ | | xxx | Z | -08:00, +05:30, +00:00 |
+ | | xxxx | | -0800, +0530, +0000, +123456 |
+ | | xxxxx | | -08:00, +05:30, +00:00, +12:34:56 |
+ | Timezone (GMT) | O...OOO | | GMT-8, GMT+5:30, GMT+0 |
+ | | OOOO | | GMT-08:00, GMT+05:30, GMT+00:00 |
+ | Timezone (specific non-locat.) | z...zzz | | GMT-8, GMT+5:30, GMT+0 |
+ | | zzzz | | GMT-08:00, GMT+05:30, GMT+00:00 |
+ | Seconds timestamp | t | X | 512969520 |
+ | | tt | | ... |
+ | Milliseconds timestamp | T | x | 512969520900 |
+ | | TT | | ... |
+ | Long localized date | P | | 5/29/53 |
+ | | PP | | May 29, 1453 |
+ | | PPP | | May 29th, 1453 |
+ | | PPPP | | Sunday, May 29th, 1453 |
+ | Long localized time | p | | 12:00 AM |
+ | | pp | | 12:00:00 AM |
+ | | ppp | | 12:00:00 AM GMT+2 |
+ | | pppp | | 12:00:00 AM GMT+02:00 |
+ | Combination of date and time | Pp | | 5/29/53, 12:00 AM |
+ | | PPpp | | May 29, 1453, 12:00 AM |
+ | | PPPppp | | May 29th, 1453 at ... |
+ | | PPPPpppp | | Sunday, May 29th, 1453 at ... |
+
+ Characters are now escaped using single quote symbols (`'`) instead of square brackets.
+ `format` now throws RangeError if it encounters an unescaped latin character
+ that isn't a valid formatting token.
+
+ To use `YY` and `YYYY` tokens that represent week-numbering years,
+ you should set `useAdditionalWeekYearTokens` option:
+
+ ```javascript
+ format(Date.now(), 'YY', { useAdditionalWeekYearTokens: true })
+ //=> '86'
+ ```
+
+ To use `D` and `DD` tokens which represent days of the year,
+ set `useAdditionalDayOfYearTokens` option:
+
+ ```javascript
+ format(Date.now(), 'D', { useAdditionalDayOfYearTokens: true })
+ //=> '364'
+ ```
+
+- **BREAKING**: function submodules now use camelCase naming schema:
+
+ ```javascript
+ // Before v2.0.0
+ import differenceInCalendarISOYears from 'date-fns/difference_in_calendar_iso_years'
+
+ // v2.0.0 onward
+ import differenceInCalendarISOYears from 'date-fns/differenceInCalendarISOYears'
+ ```
+
+- **BREAKING**: min and max functions now accept an array of dates
+ rather than spread arguments.
+
+ ```javascript
+ // Before v2.0.0
+ var date1 = new Date(1989, 6 /* Jul */, 10)
+ var date2 = new Date(1987, 1 /* Feb */, 11)
+
+ var minDate = min(date1, date2)
+ var maxDate = max(date1, date2)
+
+ // v2.0.0 onward:
+ var dates = [new Date(1989, 6 /* Jul */, 10), new Date(1987, 1 /* Feb */, 11)]
+
+ var minDate = min(dates)
+ var maxDate = max(dates)
+ ```
+
+- **BREAKING**: make the second argument of `format` required for the sake of explicitness.
+
+ ```javascript
+ // Before v2.0.0
+ format(new Date(2016, 0, 1))
+
+ // v2.0.0 onward
+ format(new Date(2016, 0, 1), "yyyy-MM-dd'T'HH:mm:ss.SSSxxx")
+ ```
+
+- **BREAKING** renamed ISO week-numbering year helpers:
+
+ - `addISOYears` → `addISOWeekYears`
+ - `differenceInCalendarISOYears` → `differenceInCalendarISOWeekYears`
+ - `differenceInISOYears` → `differenceInISOWeekYears`
+ - `endOfISOYear` → `endOfISOWeekYear`
+ - `getISOYear` → `getISOWeekYear`
+ - `isSameISOYear` → `isSameISOWeekYear`
+ - `lastDayOfISOYear` → `lastDayOfISOWeekYear`
+ - `setISOYear` → `setISOWeekYear`
+ - `subISOYears` → `subISOWeekYears`
+
+ i.e. "ISO year" renamed to "ISO week year", which is short for
+ [ISO week-numbering year](https://en.wikipedia.org/wiki/ISO_week_date).
+ It makes them consistent with locale-dependent week-numbering year helpers,
+ e.g., `startOfWeekYear`.
+
+- **BREAKING**: functions renamed:
+
+ - `areRangesOverlapping` → `areIntervalsOverlapping`
+ - `eachDay` → `eachDayOfInterval`
+ - `getOverlappingDaysInRanges` → `getOverlappingDaysInIntervals`
+ - `isWithinRange` → `isWithinInterval`
+
+ This change was made to mirror the use of the word "interval" in standard ISO 8601:2004 terminology:
+
+ ```
+ 2.1.3
+ time interval
+ part of the time axis limited by two instants
+ ```
+
+ Also these functions now accept an object with `start` and `end` properties
+ instead of two arguments as an interval. All these functions
+ throw `RangeError` if the start of the interval is after its end
+ or if any date in the interval is `Invalid Date`.
+
+ ```javascript
+ // Before v2.0.0
+
+ areRangesOverlapping(
+ new Date(2014, 0, 10),
+ new Date(2014, 0, 20),
+ new Date(2014, 0, 17),
+ new Date(2014, 0, 21)
+ )
+
+ eachDay(new Date(2014, 0, 10), new Date(2014, 0, 20))
+
+ getOverlappingDaysInRanges(
+ new Date(2014, 0, 10),
+ new Date(2014, 0, 20),
+ new Date(2014, 0, 17),
+ new Date(2014, 0, 21)
+ )
+
+ isWithinRange(
+ new Date(2014, 0, 3),
+ new Date(2014, 0, 1),
+ new Date(2014, 0, 7)
+ )
+
+ // v2.0.0 onward
+
+ areIntervalsOverlapping(
+ { start: new Date(2014, 0, 10), end: new Date(2014, 0, 20) },
+ { start: new Date(2014, 0, 17), end: new Date(2014, 0, 21) }
+ )
+
+ eachDayOfInterval({
+ start: new Date(2014, 0, 10),
+ end: new Date(2014, 0, 20),
+ })
+
+ getOverlappingDaysInIntervals(
+ { start: new Date(2014, 0, 10), end: new Date(2014, 0, 20) },
+ { start: new Date(2014, 0, 17), end: new Date(2014, 0, 21) }
+ )
+
+ isWithinInterval(new Date(2014, 0, 3), {
+ start: new Date(2014, 0, 1),
+ end: new Date(2014, 0, 7),
+ })
+ ```
+
+- **BREAKING**: functions renamed:
+
+ - `distanceInWords` → `formatDistance`
+ - `distanceInWordsStrict` → `formatDistanceStrict`
+ - `distanceInWordsToNow` → `formatDistanceToNow`
+
+ to make them consistent with `format` and `formatRelative`.
+
+- **BREAKING**: The order of arguments of `distanceInWords` and `distanceInWordsStrict`
+ is swapped to make them consistent with `differenceIn...` functions.
+
+ ```javascript
+ // Before v2.0.0
+
+ distanceInWords(
+ new Date(1986, 3, 4, 10, 32, 0),
+ new Date(1986, 3, 4, 11, 32, 0),
+ { addSuffix: true }
+ ) //=> 'in about 1 hour'
+
+ // v2.0.0 onward
+
+ formatDistance(
+ new Date(1986, 3, 4, 11, 32, 0),
+ new Date(1986, 3, 4, 10, 32, 0),
+ { addSuffix: true }
+ ) //=> 'in about 1 hour'
+ ```
+
+- **BREAKING**: `partialMethod` option in `formatDistanceStrict` is renamed to `roundingMethod`.
+
+ ```javascript
+ // Before v2.0.0
+
+ distanceInWordsStrict(
+ new Date(1986, 3, 4, 10, 32, 0),
+ new Date(1986, 3, 4, 10, 33, 1),
+ { partialMethod: 'ceil' }
+ ) //=> '2 minutes'
+
+ // v2.0.0 onward
+
+ formatDistanceStrict(
+ new Date(1986, 3, 4, 10, 33, 1),
+ new Date(1986, 3, 4, 10, 32, 0),
+ { roundingMethod: 'ceil' }
+ ) //=> '2 minutes'
+ ```
+
+- **BREAKING**: in `formatDistanceStrict`, if `roundingMethod` is not specified,
+ it now defaults to `round` instead of `floor`.
+
+- **BREAKING**: `unit` option in `formatDistanceStrict` now accepts one of the strings:
+ 'second', 'minute', 'hour', 'day', 'month' or 'year' instead of 's', 'm', 'h', 'd', 'M' or 'Y'
+
+ ```javascript
+ // Before v2.0.0
+
+ distanceInWordsStrict(
+ new Date(1986, 3, 4, 10, 32, 0),
+ new Date(1986, 3, 4, 10, 33, 1),
+ { unit: 'm' }
+ )
+
+ // v2.0.0 onward
+
+ formatDistanceStrict(
+ new Date(1986, 3, 4, 10, 33, 1),
+ new Date(1986, 3, 4, 10, 32, 0),
+ { unit: 'minute' }
+ )
+ ```
+
+- **BREAKING**: `parse` that previously used to convert strings and
+ numbers to dates now parse only strings in an arbitrary format
+ specified as an argument. Use `toDate` to coerce numbers and `parseISO`
+ to parse ISO 8601 strings.
+
+ ```javascript
+ // Before v2.0.0
+ parse('2016-01-01')
+ parse(1547005581366)
+ parse(new Date()) // Clone the date
+
+ // v2.0.0 onward
+ parse('2016-01-01', 'yyyy-MM-dd', new Date())
+ parseISO('2016-01-01')
+ toDate(1547005581366)
+ toDate(new Date()) // Clone the date
+ ```
+
+- **BREAKING**: `toDate` (previously `parse`) now doesn't accept string
+ arguments but only numbers and dates. `toDate` called with an invalid
+ argument will return `Invalid Date`.
+
+- **BREAKING**: new locale format.
+ See [docs/Locale](https://date-fns.org/docs/Locale).
+ Locales renamed:
+
+ - `en` → `en-US`
+ - `zh_cn` → `zh-CN`
+ - `zh_tw` → `zh-TW`
+
+ ```javascript
+ // Before v2.0.0
+ import locale from 'date-fns/locale/zh_cn'
+
+ // v2.0.0 onward
+ import locale from 'date-fns/locale/zh-CN'
+ ```
+
+- **BREAKING**: now `closestTo` and `closestIndexTo` don't throw an exception
+ when the second argument is not an array, and return Invalid Date instead.
+
+- **BREAKING**: now `isValid` doesn't throw an exception
+ if the first argument is not an instance of Date.
+ Instead, argument is converted beforehand using `toDate`.
+
+ Examples:
+
+ | `isValid` argument | Before v2.0.0 | v2.0.0 onward |
+ | ------------------------- | ------------- | ------------- |
+ | `new Date()` | `true` | `true` |
+ | `new Date('2016-01-01')` | `true` | `true` |
+ | `new Date('')` | `false` | `false` |
+ | `new Date(1488370835081)` | `true` | `true` |
+ | `new Date(NaN)` | `false` | `false` |
+ | `'2016-01-01'` | `TypeError` | `false` |
+ | `''` | `TypeError` | `false` |
+ | `1488370835081` | `TypeError` | `true` |
+ | `NaN` | `TypeError` | `false` |
+
+ We introduce this change to make _date-fns_ consistent with ECMAScript behavior
+ that try to coerce arguments to the expected type
+ (which is also the case with other _date-fns_ functions).
+
+- **BREAKING**: functions now throw `RangeError` if optional values passed to `options`
+ are not `undefined` or have expected values.
+ This change is introduced for consistency with ECMAScript standard library which does the same.
+
+- **BREAKING**: `format`, `formatDistance` (previously `distanceInWords`) and
+ `formatDistanceStrict` (previously `distanceInWordsStrict`) now throw
+ `RangeError` if one the passed arguments is invalid. It reflects behavior of
+ `toISOString` and Intl API. See [#1032](https://github.com/date-fns/date-fns/pull/1032).
+
+- **BREAKING**: all functions now implicitly convert arguments by following rules:
+
+ | | date | number | string | boolean |
+ | --------- | ------------ | ------ | ----------- | ------- |
+ | 0 | new Date(0) | 0 | '0' | false |
+ | '0' | Invalid Date | 0 | '0' | false |
+ | 1 | new Date(1) | 1 | '1' | true |
+ | '1' | Invalid Date | 1 | '1' | true |
+ | true | Invalid Date | NaN | 'true' | true |
+ | false | Invalid Date | NaN | 'false' | false |
+ | null | Invalid Date | NaN | 'null' | false |
+ | undefined | Invalid Date | NaN | 'undefined' | false |
+ | NaN | Invalid Date | NaN | 'NaN' | false |
+
+ Notes:
+
+ - as before, arguments expected to be `Date` are converted to `Date` using _date-fns'_ `toDate` function;
+ - arguments expected to be numbers are converted to integer numbers using our custom `toInteger` implementation
+ (see [#765](https://github.com/date-fns/date-fns/pull/765));
+ - arguments expected to be strings are converted to strings using JavaScript's `String` function;
+ - arguments expected to be booleans are converted to boolean using JavaScript's `Boolean` function.
+
+ `null` and `undefined` passed to optional arguments (i.e. properties of `options` argument)
+ are ignored as if no argument was passed.
+
+ If any resulting argument is invalid (i.e. `NaN` for numbers and `Invalid Date` for dates),
+ an invalid value will be returned:
+
+ - `false` for functions that return booleans (expect `isValid`);
+ - `Invalid Date` for functions that return dates;
+ - and `NaN` for functions that return numbers.
+
+ See tests and PRs [#460](https://github.com/date-fns/date-fns/pull/460) and
+ [#765](https://github.com/date-fns/date-fns/pull/765) for exact behavior.
+
+- **BREAKING**: all functions now check if the passed number of arguments is less
+ than the number of required arguments and throw `TypeError` exception if so.
+
+- **BREAKING**: all functions that accept numbers as arguments, now coerce
+ values using `Number()` and also round decimals. Positive decimals are
+ rounded using `Math.floor`, decimals less than zero are rounded using
+ `Math.ceil`.
+
+- **BREAKING**: The Bower & UMD/CDN package versions are no longer supported.
+
+- **BREAKING**: `null` now is not a valid date. `isValid(null)` returns `false`;
+ `toDate(null)` returns an invalid date. Since `toDate` is used internally
+ by all the functions, operations over `null` will also return an invalid date.
+ [See #537](https://github.com/date-fns/date-fns/issues/537) for the reasoning.
+
+- `toDate` (previously `parse`) and `isValid` functions now accept `any` type
+ as the first argument.
+
+- [Exclude `docs.json` from the npm package](https://github.com/date-fns/date-fns/pull/837). Kudos to [@hawkrives](https://github.com/hawkrives).
+
+### Added
+
+- FP functions like those in [lodash](https://github.com/lodash/lodash/wiki/FP-Guide),
+ that support [currying](https://en.wikipedia.org/wiki/Currying), and, as a consequence,
+ functional-style [function composing](https://medium.com/making-internets/why-using-chain-is-a-mistake-9bc1f80d51ba).
+
+ Functions with options (`format`, `parse`, etc.) have two FP counterparts:
+ one that has the options object as its first argument and one that hasn't.
+ The name of the former has `WithOptions` added to the end of its name.
+
+ In FP functions, the order of arguments is reversed.
+
+ See [FP Guide](https://date-fns.org/docs/FP-Guide) for more information.
+
+ ```javascript
+ import addYears from 'date-fns/fp/addYears'
+ import formatWithOptions from 'date-fns/fp/formatWithOptions'
+ import eo from 'date-fns/locale/eo'
+
+ // If FP function has not received enough arguments, it returns another function
+ const addFiveYears = addYears(5)
+
+ // Several arguments can be curried at once
+ const dateToString = formatWithOptions({ locale: eo }, 'd MMMM yyyy')
+
+ const dates = [
+ new Date(2017, 0 /* Jan */, 1),
+ new Date(2017, 1 /* Feb */, 11),
+ new Date(2017, 6 /* Jul */, 2),
+ ]
+
+ const formattedDates = dates.map((date) => dateToString(addFiveYears(date)))
+ //=> ['1 januaro 2022', '11 februaro 2022', '2 julio 2022']
+ ```
+
+- Added support for [ECMAScript Modules](http://www.ecma-international.org/ecma-262/6.0/#sec-modules).
+
+ It allows usage with bundlers that support tree-shaking,
+ like [rollup.js](http://rollupjs.org) and [webpack](https://webpack.js.org):
+
+ ```javascript
+ // Without tree-shaking:
+ import format from 'date-fns/format'
+ import parse from 'date-fns/parse'
+
+ // With tree-shaking:
+ import { format, parse } from 'date-fns'
+ ```
+
+ Also, ESM functions provide default export, they can be used with TypeScript
+ to import functions in more idiomatic way:
+
+ ```typescript
+ // Before
+ import * as format from 'date-fns/format'
+
+ // Now
+ import format from 'date-fns/format'
+ ```
+
+- `formatRelative` function. See [formatRelative](https://date-fns.org/docs/formatRelative)
+
+- Flow typings for `index.js`, `fp/index.js`, `locale/index.js`, and their ESM equivalents.
+ See PR [#558](https://github.com/date-fns/date-fns/pull/558)
+
+- New locale-dependent week-numbering year helpers:
+
+ - `getWeek`
+
+ - `getWeekYear`
+
+ - `setWeek`
+
+ - `setWeekYear`
+
+ - `startOfWeekYear`
+
+- Added `eachWeekOfInterval`, the weekly equivalent of `eachDayOfInterval`
+
+- [Added `getUnixTime` function](https://github.com/date-fns/date-fns/pull/870). Kudos to [@Kingwl](https://github.com/Kingwl).
+
+- [New decade helpers](https://github.com/date-fns/date-fns/pull/839). Thanks to [@y-nk](https://github.com/y-nk)!
+
+ - `getDecade`
+
+ - `startOfDecade`
+
+ - `endOfDecade`
+
+ - `lastDayOfDecade`
+
+- [New `roundToNearestMinutes` function](https://github.com/date-fns/date-fns/pull/928). Kudos to [@xkizer](https://github.com/xkizer).
+
+- Added new function `fromUnixTime`. Thansk to [@xkizer](https://github.com/xkizer).
+
+- New interval, month, and year helpers to fetch a list of all Saturdays and Sundays (weekends) for a given date interval. `eachWeekendOfInterval` is the handler function while the other two are wrapper functions. Kudos to [@laekettavong](https://github.com/laekettavong)!
+
+ - `eachWeekendOfInterval`
+
+ - `eachWeekendOfMonth`
+
+ - `eachWeekendOfYear`
+
+- Build-efficient `lightFormat` that only supports the popular subset of tokens. See [#1050](https://github.com/date-fns/date-fns/pull/1015).
+
+- `parseISO` function that parses ISO 8601 strings. See [#1023](https://github.com/date-fns/date-fns/pull/1023).
+
+- Add constants that can be imported directly from `date-fns` or the submodule `date-fns/constants`:
+
+ - `maxTime`
+
+ - `minTime`
+
+- New locales:
+
+ - [Norwegian Nynorsk locale (nn)](https://github.com/date-fns/date-fns/pull/1172)
+ by [@draperunner](https://github.com/draperunner).
+
+ - [Ukrainian locale (ua)](https://github.com/date-fns/date-fns/pull/532)
+ by [@korzhyk](https://github.com/korzhyk).
+
+ - [Vietnamese locale (vi)](https://github.com/date-fns/date-fns/pull/546)
+ by [@trongthanh](https://github.com/trongthanh).
+
+ - [Persian locale (fa-IR)](https://github.com/date-fns/date-fns/pull/1113)
+ by [@mort3za](https://github.com/mort3za).
+
+ - [Latvian locale (lv)](https://github.com/date-fns/date-fns/pull/1175)
+ by [@prudolfs](https://github.com/prudolfs).
+
+ - [Bengali locale (bb)](https://github.com/date-fns/date-fns/pull/845)
+ by [@nutboltu](https://github.com/nutboltu) and [@touhidrahman](https://github.com/touhidrahman).
+
+ - [Hungarian (hu) and Lithuanian (lt) locales](https://github.com/date-fns/date-fns/pull/864)
+ by [@izifortune](https://github.com/izifortune) and [pardoeryanair](https://github.com/pardoeryanair).
+
+ - [Canadian English locale (en-CA)](https://github.com/date-fns/date-fns/pull/688)
+ by [@markowsiak](https://github.com/markowsiak).
+
+ - [Great Britain English locale (en-GB)](https://github.com/date-fns/date-fns/pull/563)
+ by [@glintik](https://github.com/glintik).
+
+ - [Uighur locale (ug)](https://github.com/date-fns/date-fns/pull/1080)
+ by [@abduwaly](https://github.com/abduwaly).
+
+- [Add new function `differenceInBusinessDays`](https://github.com/date-fns/date-fns/pull/1194)
+ which calculates the difference in business days. Kudos to [@ThorrStevens](https://github.com/ThorrStevens)!
+
+- [Add new function `addBusinessDays`](https://github.com/date-fns/date-fns/pull/1154),
+ similar to `addDays` but ignoring weekends. Thanks to [@ThorrStevens](https://github.com/ThorrStevens)!
+
+## [1.30.1] - 2018-12-10
+
+### Fixed
+
+- [Fixed DST issue](https://github.com/date-fns/date-fns/pull/1005). See [#972](https://github.com/date-fns/date-fns/issues/972) and [#992](https://github.com/date-fns/date-fns/issues/992) for more details. This fix was backported from v2.
+
+- Fix a few bugs that appear in timezones with offsets that include seconds (e.g. GMT+00:57:44). See PR [#789](https://github.com/date-fns/date-fns/issues/789). This fix was backported from v2.
+
+- [Fix misspelled January in the Thai locale](https://github.com/date-fns/date-fns/pull/913). Thanks to [@ratchapol-an](https://github.com/ratchapol-an)!
+
+### Added
+
+- [Added Serbian locale](https://github.com/date-fns/date-fns/pull/717). Kudos to [@mawi12345](https://github.com/mawi12345)!
+
+- [Added Belarusian locale](https://github.com/date-fns/date-fns/pull/716). Kudos to [@mawi12345](https://github.com/mawi12345) again!
+
+### Changed
+
+- [Improve ja translation of distanceInWords](https://github.com/date-fns/date-fns/pull/880). Thanks to [@kudohamu](https://github.com/kudohamu)!
+
+## [1.30.0] - 2018-12-10
+
+⚠️ The release got failed.
+
+## [1.29.0] - 2017-10-11
+
+### Fixed
+
+- Fix Italian translations for `formatDistance`. ([see the issue: #550](https://github.com/date-fns/date-fns/issues/550); [see the PR: #552](https://github.com/date-fns/date-fns/pull/552))
+ Thanks to [@giofilo](https://github.com/giofilo)!
+
+### Added
+
+- [Hungarian locale (hu)](https://github.com/date-fns/date-fns/pull/503)
+ (thanks to László Horváth [@horvathlg](https://github.com/horvathlg))
+
+- [Slovenian locale (sl)](https://github.com/date-fns/date-fns/pull/505)
+ (thanks to Adam Stradovnik [@Neoglyph](https://github.com/Neoglyph))
+
+- Add `step` to `eachDay` function. Thanks to [@BDav24](https://github.com/BDav24).
+ See PR [#487](https://github.com/date-fns/date-fns/pull/487).
+
+## [1.28.5] - 2017-05-19
+
+### Fixed
+
+- Fix a.m./p.m. formatters in Chinese Simplified locale.
+ Thanks to [@fnlctrl](https://github.com/fnlctrl).
+ See PR [#486](https://github.com/date-fns/date-fns/pull/486)
+
+## [1.28.4] - 2017-04-26
+
+### Fixed
+
+- Fix accents on weekdays in the Italian locale.
+ See PR [#481](https://github.com/date-fns/date-fns/pull/481).
+ Thanks to [@albertorestifo](https://github.com/albertorestifo)
+
+- Fix typo in `ddd` format token in Spanish language locale.
+ Kudos to [@fjaguero](https://github.com/fjaguero).
+ See PR [#482](https://github.com/date-fns/date-fns/pull/482)
+
+## [1.28.3] - 2017-04-14
+
+### Fixed
+
+- Fix ordinal numbers for Danish language locale. Thanks to [@kgram](https://github.com/kgram).
+ See PR [#474](https://github.com/date-fns/date-fns/pull/474)
+
+## [1.28.2] - 2017-03-27
+
+### Fixed
+
+- Fix `dd` and `ddd` formatters in Polish language locale. Kudos to [@justrag](https://github.com/justrag).
+ See PR: [#467](https://github.com/date-fns/date-fns/pull/467)
+
+## [1.28.1] - 2017-03-19
+
+### Fixed
+
+- Fix DST border bug in `addMilliseconds`, `addSeconds`, `addMinutes`, `addHours`,
+ `subMilliseconds`, `subSeconds`, `subMinutes` and `subHours`.
+ See issue [#465](https://github.com/date-fns/date-fns/issues/465)
+
+- Minor fix for Indonesian locale. Thanks to [@bentinata](https://github.com/bentinata).
+ See PR: [#458](https://github.com/date-fns/date-fns/pull/458)
+
+## [1.28.0] - 2017-02-27
+
+### Added
+
+- [Romanian locale (ro)](https://github.com/date-fns/date-fns/pull/446)
+ (thanks to Sergiu Munteanu [@jsergiu](https://github.com/jsergiu))
+
+### Fixed
+
+- All functions now convert all their arguments to the respective types.
+ See PR: [#443](https://github.com/date-fns/date-fns/pull/443)
+
+- Fixes for ordinals (1er, 2, 3, …) in French locale.
+ Thanks to [@fbonzon](https://github.com/fbonzon).
+ See PR: [#449](https://github.com/date-fns/date-fns/pull/449)
+
+## [1.27.2] - 2017-02-01
+
+### Fixed
+
+- Various fixes for Dutch locale. See PR: [#416](https://github.com/date-fns/date-fns/pull/416).
+ Thanks to Ruben Stolk [@rubenstolk](https://github.com/rubenstolk)
+
+## [1.27.1] - 2017-01-20
+
+### Fixed
+
+- Added generation of TypeScript locale sub-modules, allowing import of locales in TypeScript.
+
+## [1.27.0] - 2017-01-19
+
+### Added
+
+- [Macedonian locale (mk)](https://github.com/date-fns/date-fns/pull/398)
+ (thanks to Petar Vlahu [@vlahupetar](https://github.com/vlahupetar))
+
+## [1.26.0] - 2017-01-15
+
+### Added
+
+- `getTime`
+
+### Fixed
+
+- Various fixes for Japanese locale. See PR: [395](https://github.com/date-fns/date-fns/pull/395).
+ Thanks to Yamagishi Kazutoshi [@ykzts](https://github.com/ykzts)
+
+## [1.25.0] - 2017-01-11
+
+### Added
+
+- [Bulgarian locale (bg)](https://github.com/date-fns/date-fns/pull/357)
+ (thanks to Nikolay Stoynov [@arvigeus](https://github.com/arvigeus))
+
+- [Czech locale (cs)](https://github.com/date-fns/date-fns/pull/386)
+ (thanks to David Rus [@davidrus](https://github.com/davidrus))
+
+## [1.24.0] - 2017-01-06
+
+### Added
+
+- [Modern Standard Arabic locale (ar)](https://github.com/date-fns/date-fns/pull/367)
+ (thanks to Abdallah Hassan [@AbdallahAHO](https://github.com/AbdallahAHO))
+
+## [1.23.0] - 2017-01-05
+
+### Added
+
+- Auto generate TypeScript and flow typings from documentation on release.
+ Thanks to [@mattlewis92](https://github.com/mattlewis92).
+ See related PRs: [#355](https://github.com/date-fns/date-fns/pull/355),
+ [#370](https://github.com/date-fns/date-fns/pull/370)
+
+- [Croatian locale (hr)](https://github.com/date-fns/date-fns/pull/365)
+ (thanks to Matija Marohnić [@silvenon](https://github.com/silvenon))
+
+- [Thai locale (th)](https://github.com/date-fns/date-fns/pull/362)
+ (thanks to Athiwat Hirunworawongkun [@athivvat](https://github.com/athivvat))
+
+- [Finnish locale (fi)](https://github.com/date-fns/date-fns/pull/361)
+ (thanks to Pyry-Samuli Lahti [@Pyppe](https://github.com/Pyppe))
+
+## [1.22.0] - 2016-12-28
+
+### Added
+
+- [Icelandic locale (is)](https://github.com/date-fns/date-fns/pull/356)
+ (thanks to Derek Blank [@derekblank](https://github.com/derekblank))
+
+## [1.21.1] - 2016-12-18
+
+### Fixed
+
+- Fix `isBefore` and `isAfter` documentation mistakes.
+
+## [1.21.0] - 2016-12-16
+
+### Added
+
+- [Filipino locale (fil)](https://github.com/date-fns/date-fns/pull/339)
+ (thanks to Ian De La Cruz [@RIanDeLaCruz](https://github.com/RIanDeLaCruz))
+
+- [Danish locale (da)](https://github.com/date-fns/date-fns/pull/343)
+ (kudos to Anders B. Hansen [@Andersbiha](https://github.com/Andersbiha))
+
+## [1.20.1] - 2016-12-14
+
+### Fixed
+
+- Fix documentation for `getOverlappingDaysInRanges`.
+
+## [1.20.0] - 2016-12-13
+
+### Added
+
+- `areRangesOverlapping` and `getOverlappingDaysInRanges`
+ Thanks to Joanna T [@asia-t](https://github.com/asia-t).
+ See PR: [#331](https://github.com/date-fns/date-fns/pull/331)
+
+## [1.19.0] - 2016-12-13
+
+### Added
+
+- [Greek locale (el)](https://github.com/date-fns/date-fns/pull/334)
+ (kudos to Theodoros Orfanidis [@teoulas](https://github.com/teoulas))
+
+- [Slovak locale (sk)](https://github.com/date-fns/date-fns/pull/336)
+ (kudos to Marek Suscak [@mareksuscak](https://github.com/mareksuscak))
+
+- Add yarn support.
+ Thanks to Uladzimir Havenchyk [@havenchyk](https://github.com/havenchyk).
+ See PR: [#288](https://github.com/date-fns/date-fns/pull/288)
+
+## [1.18.0] - 2016-12-12
+
+### Added
+
+- [Turkish locale (tr)](https://github.com/date-fns/date-fns/pull/329)
+ (kudos to Alpcan Aydın [@alpcanaydin](https://github.com/alpcanaydin))
+
+- [Korean locale (ko)](https://github.com/date-fns/date-fns/pull/327)
+ (thanks to Hong Chulju [@angdev](https://github.com/angdev))
+
+### Fixed
+
+- `SS` and `SSS` formats in `format` are now correctly displayed with leading zeros.
+ Thanks to Paul Dijou [@pauldijou](https://github.com/pauldijou).
+ See PR: [#330](https://github.com/date-fns/date-fns/pull/330)
+
+## [1.17.0] - 2016-12-10
+
+### Added
+
+- [Polish locale (pl)](https://github.com/date-fns/date-fns/pull/294)
+ (thanks to Mateusz Derks [@ertrzyiks](https://github.com/ertrzyiks))
+
+- [Portuguese locale (pt)](https://github.com/date-fns/date-fns/pull/316)
+ (thanks to Dário Freire [@dfreire](https://github.com/dfreire))
+
+- [Swedish locale (sv)](https://github.com/date-fns/date-fns/pull/311)
+ (thanks to Johannes Ulén [@ejulen](https://github.com/ejulen))
+
+- [French locale (fr)](https://github.com/date-fns/date-fns/pull/281)
+ (thanks to Jean Dupouy [@izeau](https://github.com/izeau))
+
+- Performance tests. See PR: [#289](https://github.com/date-fns/date-fns/pull/289)
+
+### Fixed
+
+- Fix TypeScript and flow typings for `isValid`.
+ See PR: [#310](https://github.com/date-fns/date-fns/pull/310)
+
+- Fix incorrect locale tests that could potentially lead to `format` bugs.
+ Kudos to Mateusz Derks [@ertrzyiks](https://github.com/ertrzyiks).
+ See related PRs: [#312](https://github.com/date-fns/date-fns/pull/312),
+ [#320](https://github.com/date-fns/date-fns/pull/320)
+
+- Minor language fixes in the documentation.
+ Thanks to Vedad Šoše [@vedadsose](https://github.com/vedadsose) ([#314](https://github.com/date-fns/date-fns/pull/314))
+ and Asia [@asia-t](https://github.com/asia-t) ([#318](https://github.com/date-fns/date-fns/pull/318))
+
+### Changed
+
+- `format` now returns `String('Invalid Date')` if the passed date is invalid.
+ See PR: [#323](https://github.com/date-fns/date-fns/pull/323)
+
+- `distanceInWords`, `distanceInWordsToNow`, `distanceInWordsStrict` and `format` functions now
+ check if the passed locale is valid, and fallback to English locale otherwise.
+ See PR: [#321](https://github.com/date-fns/date-fns/pull/321)
+
+- _Internal_: use a loop instead of `Object.keys` in `buildFormattingTokensRegExp`
+ to improve compatibility with older browsers.
+ See PR: [#322](https://github.com/date-fns/date-fns/pull/322)
+
+## [1.16.0] - 2016-12-08
+
+### Added
+
+- [Italian locale (it)](https://github.com/date-fns/date-fns/pull/298)
+ (thanks to Alberto Restifo [@albertorestifo](https://github.com/albertorestifo))
+
+- For German `buildDistanceInWordsLocale`, add nominative case translations (for distances without a suffix).
+ Kudos to Asia [@asia-t](https://github.com/asia-t).
+ See related PR: [#295](https://github.com/date-fns/date-fns/pull/295)
+
+## [1.15.1] - 2016-12-07
+
+### Fixed
+
+- Fixed TypeScript imports from individual modules.
+ Thanks to [@mattlewis92](https://github.com/mattlewis92).
+ See related PR: [#287](https://github.com/date-fns/date-fns/pull/287)
+
+## [1.15.0] - 2016-12-07
+
+### Added
+
+- [Indonesian locale (id)](https://github.com/date-fns/date-fns/pull/299)
+ (thanks to Rahmat Budiharso [@rbudiharso](https://github.com/rbudiharso))
+
+- [Catalan locale (ca)](https://github.com/date-fns/date-fns/pull/300)
+ (thanks to Guillermo Grau [@guigrpa](https://github.com/guigrpa))
+
+### Fixed
+
+- Fix some inaccuracies in Spanish locale.
+ Kudos to [@guigrpa](https://github.com/guigrpa).
+ See related PR: [#302](https://github.com/date-fns/date-fns/pull/302)
+
+## [1.14.1] - 2016-12-06
+
+### Fixed
+
+- Fixed broken test for Norwegian Bokmål locale.
+
+## [1.14.0] - 2016-12-06
+
+### Added
+
+- [Norwegian Bokmål locale (nb)](https://github.com/date-fns/date-fns/pull/291)
+ (thanks to Hans-Kristian Koren [@Hanse](https://github.com/Hanse))
+
+## [1.13.0] - 2016-12-06
+
+### Added
+
+- [Chinese Traditional locale (zh_tw)](https://github.com/date-fns/date-fns/pull/283)
+ (thanks to tonypai [@tpai](https://github.com/tpai)).
+
+- [Dutch language locale (nl)](https://github.com/date-fns/date-fns/pull/278)
+ (kudos to Jorik Tangelder [@jtangelder](https://github.com/jtangelder))
+
+## [1.12.1] - 2016-12-05
+
+### Fixed
+
+- Added `distanceInWordsStrict` to the list of supported functions in I18n doc.
+
+## [1.12.0] - 2016-12-05
+
+### Added
+
+- [Spanish language locale (es)](https://github.com/date-fns/date-fns/pull/269)
+ (thanks to Juan Angosto [@juanangosto](https://github.com/juanangosto)).
+
+### Fixed
+
+- Fix flow typings for some of the functions.
+ See PR: [#273](https://github.com/date-fns/date-fns/pull/273)
+
+## [1.11.2] - 2016-11-28
+
+### Fixed
+
+- Bug in `parse` when it sometimes parses ISO week-numbering dates incorrectly.
+ See PR: [#262](https://github.com/date-fns/date-fns/pull/262)
+
+- Bug in some functions which caused them to handle dates earlier than 100 AD incorrectly.
+ See PR: [#263](https://github.com/date-fns/date-fns/pull/263)
+
+## [1.11.1] - 2016-11-24
+
+### Fixed
+
+- Include TypeScript typings with npm package.
+
+## [1.11.0] - 2016-11-23
+
+### Added
+
+- `distanceInWordsStrict`.
+ Kudos to [@STRML](https://github.com/STRML).
+ See related PR: [#254](https://github.com/date-fns/date-fns/pull/254)
+
+- [TypeScript](https://www.typescriptlang.org/) typings for all functions.
+ Kudos to [@mattlewis92](https://github.com/mattlewis92).
+ See related PR: [#255](https://github.com/date-fns/date-fns/pull/255)
+
+## [1.10.0] - 2016-11-01
+
+### Added
+
+- `parse` now can parse dates that are ISO 8601 centuries (e.g., `19` and `+0019`).
+
+ ```javascript
+ var result = parse('19')
+ //=> Mon Jan 01 1900 00:00:00
+ ```
+
+- In `parse`, added ability to specify the number of additional digits
+ for extended year or century format (possible values are 0, 1 or 2; default is 2).
+
+ ```javascript
+ parse('+002016-11-01')
+ parse('+02016-11-01', { additionalDigits: 1 })
+ parse('+2016-11-01', { additionalDigits: 0 })
+ ```
+
+## [1.9.0] - 2016-10-25
+
+### Added
+
+- Got index.js imports to work with SystemJS.
+
+## [1.8.1] - 2016-10-24
+
+### Fixed
+
+- Added Japanese and German language locales to the list in I18n doc.
+
+## [1.8.0] - 2016-10-23
+
+### Added
+
+- [Japanese language locale (ja)](https://github.com/date-fns/date-fns/pull/241)
+ (thanks to Thomas Eilmsteiner [@DeMuu](https://github.com/DeMuu) again!)
+
+- `getISODay`
+
+- `setISODay`
+
+## [1.7.0] - 2016-10-20
+
+### Added
+
+- [German language locale (de)](https://github.com/date-fns/date-fns/pull/237)
+ (thanks to Thomas Eilmsteiner [@DeMuu](https://github.com/DeMuu)).
+
+## [1.6.0] - 2016-10-16
+
+### Added
+
+- [Chinese Simplified locale (zh_cn)](https://github.com/date-fns/date-fns/pull/235)
+ (kudos to Changyu [@KingMario](https://github.com/KingMario) Geng).
+
+## [1.5.2] - 2016-10-13
+
+### Fixed
+
+- Incorrectly generated docs for `format`.
+
+- Fixed typo in I18n doc.
+
+## [1.5.1] - 2016-10-12
+
+### Fixed
+
+- A change log entry for [1.5.0] is added.
+
+## [1.5.0] - 2016-10-12
+
+### Added
+
+- [The initial I18n support](https://date-fns.org/docs/I18n)
+
+## [1.4.0] - 2016-10-09
+
+### Added
+
+- Basic [SystemJS](https://github.com/systemjs/systemjs) support.
+
+### Fixed
+
+- Fix incorrect behaviour of `YYYY` and `YY` for years prior to 1000:
+ now `format(new Date('0001-01-01'), 'YYYY-MM-DD')` returns `0001-01-01`
+ instead of `1-01-01`.
+
+## [1.3.0] - 2016-05-26
+
+### Added
+
+- `closestIndexTo`
+
+## [1.2.0] - 2016-05-23
+
+### Added
+
+- Add an ability to pass negative numbers to `setDay`.
+
+## [1.1.1] - 2016-05-19
+
+### Fixed
+
+- Fix [Flow](http://flowtype.org/) declarations for some of the functions.
+
+## [1.1.0] - 2016-05-19
+
+### Added
+
+- [Flow](http://flowtype.org/) declarations for each function
+ in [the ".js.flow" style](http://flowtype.org/docs/declarations.html#declaration-files).
+ Kudos to [@JohnyDays](https://github.com/JohnyDays). See related PRs:
+
+ - [#205](https://github.com/date-fns/date-fns/pull/205)
+
+ - [#207](https://github.com/date-fns/date-fns/pull/207)
+
+## [1.0.0] - 2016-05-18
+
+### Fixed
+
+- `format` now returns the correct result for key `E`.
+
+- Prevent `startOf...`, `endOf...` and `lastDayOf...` functions
+ to return dates with an incorrect time when the date is modifying
+ into another time zone.
+
+- `parse` now parses years from 1 AD to 99 AD correctly.
+
+- Fix a bug in `getISOWeek` appearing because of a changing time zone
+ (e.g., when the given date is in DST and the start of the ISO year is not).
+
+### Changed
+
+- **BREAKING**: all functions are moved to the root of the library, so they
+ are now accessible with `require('date-fns/name_of_function')` or
+ `import nameOfFunction from 'date-fns/name_of_function'`.
+
+ ```javascript
+ // Before v1.0.0
+ var addMonths = require('date-fns/src/add_months')
+
+ // v1.0.0 onward
+ var addMonths = require('date-fns/add_months')
+ ```
+
+- **BREAKING**: functions that had the last optional argument `weekStartsAt`
+ (i.e. `endOfWeek`, `isSameWeek`, `lastDayOfWeek`, `setDay`, `startOfWeek`)
+ now instead receive the object `options` with the property `options.weekStartsOn`
+ as the last argument.
+
+ ```javascript
+ // Before v1.0.0
+ var result = endOfWeek(new Date(2014, 8, 2), 1)
+
+ // v1.0.0 onward
+ var result = endOfWeek(new Date(2014, 8, 2), { weekStartsOn: 1 })
+ ```
+
+- **BREAKING**: remove the function `getTimeSinceMidnight` that was used inside
+ the other functions.
+
+- **BREAKING**: `differenceInDays` now returns the number of full days instead
+ of calendar days.
+
+- **BREAKING**: `eachDay` and `isWithinRange` now throw an exception
+ when the given range boundaries are invalid.
+
+- Faster `isLeapYear`.
+
+- _Internal_: make the documentation more verbose.
+
+- _Internal_: convert the tests from Chai to power-assert allowing them
+ to run against IE8.
+
+### Added
+
+- `addISOYears`
+
+- `closestTo`
+
+- `differenceInCalendarDays`
+
+- `differenceInCalendarISOWeeks`
+
+- `differenceInCalendarISOYears`
+
+- `differenceInCalendarMonths`
+
+- `differenceInCalendarQuarters`
+
+- `differenceInCalendarWeeks`
+
+- `differenceInCalendarYears`
+
+- `differenceInHours`
+
+- `differenceInISOYears`
+
+- `differenceInMilliseconds`
+
+- `differenceInMinutes`
+
+- `differenceInMonths`
+
+- `differenceInQuarters`
+
+- `differenceInSeconds`
+
+- `differenceInWeeks`
+
+- `differenceInYears`
+
+- `distanceInWords`
+
+- `distanceInWordsToNow`
+
+- `endOfISOWeek`
+
+- `endOfISOYear`
+
+- `endOfToday`
+
+- `endOfTomorrow`
+
+- `endOfYesterday`
+
+- `getDaysInYear`
+
+- `isDate`
+
+- `isFriday`
+
+- `isMonday`
+
+- `isSameISOWeek`
+
+- `isSameISOYear`
+
+- `isSaturday`
+
+- `isSunday`
+
+- `isThisHour`
+
+- `isThisISOWeek`
+
+- `isThisISOYear`
+
+- `isThisMinute`
+
+- `isThisMonth`
+
+- `isThisQuarter`
+
+- `isThisSecond`
+
+- `isThisWeek`
+
+- `isThisYear`
+
+- `isThursday`
+
+- `isTomorrow`
+
+- `isTuesday`
+
+- `isValid`
+
+- `isWednesday`
+
+- `isYesterday`
+
+- `lastDayOfISOWeek`
+
+- `lastDayOfISOYear`
+
+- `startOfISOWeek`
+
+- `startOfToday`
+
+- `startOfTomorrow`
+
+- `startOfYesterday`
+
+- `subISOYears`
+
+- Add `Qo`, `W`, `Wo`, `WW`, `GG`, `GGGG`, `Z`, `ZZ`, `X`, `x` keys to `format`.
+
+## [0.17.0] - 2015-09-29
+
+### Fixed
+
+- Fix a lot of bugs appearing when date is modifying into other time zone
+ (e.g., when adding months and original date is in DST but new date is not).
+
+- Prevent instances of Date to lose milliseconds value when passed to.
+ `parse` in IE10.
+
+### Changed
+
+- `setISOWeek` now keeps time from original date.
+
+- _Internal_: reuse `getDaysInMonth` inside of `addMonths`.
+
+### Added
+
+- `differenceInDays`
+
+- `getTimeSinceMidnight`
+
+- `format` now has new format key `aa`, which returns `a.m.`/`p.m.`
+ as opposed to `a` that returns `am`/`pm`.
+
+- Complete UMD package (for Bower and CDN).
+
+## [0.16.0] - 2015-09-01
+
+### Changed
+
+- Use `parse` to clean date arguments in all functions.
+
+- `parse` now fallbacks to `new Date` when the argument
+ is not an ISO formatted date.
+
+- _Internal_: reuse `getDaysInMonth` inside of `setMonth`.
+
+### Added
+
+- `addQuarters`
+
+- `addWeeks`
+
+- `endOfQuarter`
+
+- `getDate`
+
+- `getDay`
+
+- `getDaysInMonth`
+
+- `getHours`
+
+- `getISOWeeksInYear`
+
+- `getMilliseconds`
+
+- `getMinutes`
+
+- `getMonth`
+
+- `getSeconds`
+
+- `getYear`
+
+- `isLeapYear`
+
+- `isSameHour`
+
+- `isSameMinute`
+
+- `isSameQuarter`
+
+- `isSameSecond`
+
+- `lastDayOfQuarter`
+
+- `lastDayOfWeek`
+
+- `max`
+
+- `min`
+
+- `setDate`
+
+- `setDay`
+
+- `setHours`
+
+- `setMilliseconds`
+
+- `setMinutes`
+
+- `setSeconds`
+
+- `startOfQuarter`
+
+- `subQuarters`
+
+- `subWeeks`
+
+## [0.15.0] - 2015-08-26
+
+### Changed
+
+- `format` now returns `a.m.`/`p.m.` instead of `am`/`pm`.
+
+- `setMonth` now sets last day of month if original date was last day
+ of longer month.
+
+- _Internal_: Fix code style according to ESLint.
+
+- _Internal_: Make tests run through all time zones.
+
+### Added
+
+- `getQuarter`
+
+- `setQuarter`
+
+- `getDayOfYear`
+
+- `setDayOfYear`
+
+- `isPast`
+
+- `addSeconds`
+
+- `subSeconds`
+
+- `startOfSecond`
+
+- `endOfSecond`
+
+- `startOfMinute`
+
+- `endOfMinute`
+
+- `addMilliseconds`
+
+- `subMilliseconds`
+
+- `endOfYear`
+
+- `addYears`
+
+- `subYears`
+
+- `lastDayOfYear`
+
+- `lastDayOfMonth`
+
+## [0.14.11] - 2015-08-21
+
+### Fixed
+
+- `format` now uses `parse` to avoid time zone bugs.
+
+### Changed
+
+- `setIsoWeek` now sets time to the start of the day.
+
+## [0.14.10] - 2015-07-29
+
+### Fixed
+
+- `format` now behaves correctly with 12:00 am.
+
+- `format` now behaves correctly with ordinal numbers.
+
+### Added
+
+- `compareAsc`
+
+- `compareDesc`
+
+- `addHours`
+
+- `subHours`
+
+- `isSameDay`
+
+- `parse`
+
+- `getISOYear`
+
+- `setISOYear`
+
+- `startOfISOYear`
+
+- `getISOWeek`
+
+- `setISOWeek`
+
+## [0.14.9] - 2015-01-14
+
+### Fixed
+
+- `addMonths` now correctly behaves with February
+ (see [#18](https://github.com/js-fns/date-fns/pull/18)).
+
+## [0.14.8] - 2014-12-25
+
+### Fixed
+
+- `format` function now behaves correctly with `pm`/`am`.
+
+## [0.14.6] - 2014-12-04
+
+### Fixed
+
+- Fix broken Bower support.
+
+## [0.14.0] - 2014-11-05
+
+### Added
+
+- Bower package.
+
+## [0.13.0] - 2014-10-22
+
+### Added
+
+- `addMinutes`
+
+- `subMinutes`
+
+- `isEqual`
+
+- `isBefore`
+
+- `isAfter`
+
+## [0.12.1] - 2014-10-19
+
+### Fixed
+
+- Incorrect rounding in `DDD` formatter.
+
+## [0.12.0] - 2014-10-15
+
+### Added
+
+- `isSameYear`
+
+## [0.11.0] - 2014-10-15
+
+### Added
+
+- `isWithinRange`
+
+## [0.10.0] - 2014-10-13
+
+### Added
+
+- `format`
+
+- `startOfYear`
+
+## [0.9.0] - 2014-10-10
+
+### Changed
+
+- _Internal_: simplify `isWeekend`
+
+### Added
+
+- `isFuture`
+
+## [0.8.0] - 2014-10-09
+
+### Changed
+
+- _Internal_: reuse `addDays` inside of `subDays`.
+
+### Added
+
+- `addMonths`
+
+- `subMonths`
+
+- `setMonth`
+
+- `setYear`
+
+## [0.7.0] - 2014-10-08
+
+### Added
+
+- `isSameWeek`
+
+## [0.6.0] - 2014-10-07
+
+### Fixed
+
+- Inconsistent behavior of `endOfMonth`.
+
+### Added
+
+- `isFirstDayOfMonth`
+
+- `isLastDayOfMonth`
+
+- `isSameMonth`
+
+## [0.5.0] - 2014-10-07
+
+### Added
+
+- `addDays`
+
+- `subDays`
+
+## [0.4.0] - 2014-10-07
+
+### Added
+
+- `startOfWeek`
+
+- `endOfWeek`
+
+- `eachDay`
+
+## [0.3.0] - 2014-10-06
+
+### Changed
+
+- `startOfDay` now sets milliseconds as well.
+
+### Added
+
+- `endOfDay`
+
+- `startOfMonth`
+
+- `endOfMonth`
+
+## [0.2.0] - 2014-10-06
+
+### Added
+
+- `isToday`
+
+- `isWeekend`
+
+## 0.1.0 - 2014-10-06
+
+### Added
+
+- `startOfDay`
+
+[unreleased]: https://github.com/date-fns/date-fns/compare/v2.16.1...HEAD
+[2.16.1]: https://github.com/date-fns/date-fns/compare/v2.16.0...v2.16.1
+[2.16.0]: https://github.com/date-fns/date-fns/compare/v2.15.0...v2.16.0
+[2.15.0]: https://github.com/date-fns/date-fns/compare/v2.14.0...v2.15.0
+[2.14.0]: https://github.com/date-fns/date-fns/compare/v2.13.0...v2.14.0
+[2.13.0]: https://github.com/date-fns/date-fns/compare/v2.12.0...v2.13.0
+[2.12.0]: https://github.com/date-fns/date-fns/compare/v2.11.1...v2.12.0
+[2.11.1]: https://github.com/date-fns/date-fns/compare/v2.11.0...v2.11.1
+[2.11.0]: https://github.com/date-fns/date-fns/compare/v2.10.0...v2.11.0
+[2.10.0]: https://github.com/date-fns/date-fns/compare/v2.9.0...v2.10.0
+[2.9.0]: https://github.com/date-fns/date-fns/compare/v2.8.1...v2.9.0
+[2.8.1]: https://github.com/date-fns/date-fns/compare/v2.8.0...v2.8.1
+[2.8.0]: https://github.com/date-fns/date-fns/compare/v2.7.0...v2.8.0
+[2.7.0]: https://github.com/date-fns/date-fns/compare/v2.6.0...v2.7.0
+[2.6.0]: https://github.com/date-fns/date-fns/compare/v2.5.1...v2.6.0
+[2.5.1]: https://github.com/date-fns/date-fns/compare/v2.5.0...v2.5.1
+[2.5.0]: https://github.com/date-fns/date-fns/compare/v2.4.1...v2.5.0
+[2.4.1]: https://github.com/date-fns/date-fns/compare/v2.4.0...v2.4.1
+[2.4.0]: https://github.com/date-fns/date-fns/compare/v2.3.0...v2.4.0
+[2.3.0]: https://github.com/date-fns/date-fns/compare/v2.2.1...v2.3.0
+[2.2.1]: https://github.com/date-fns/date-fns/compare/v2.1.0...v2.2.1
+[2.1.0]: https://github.com/date-fns/date-fns/compare/v2.0.1...v2.1.0
+[2.0.1]: https://github.com/date-fns/date-fns/compare/v2.0.0...v2.0.1
+[2.0.0]: https://github.com/date-fns/date-fns/compare/v1.28.5...v2.0.0
+[1.28.5]: https://github.com/date-fns/date-fns/compare/v1.28.4...v1.28.5
+[1.28.4]: https://github.com/date-fns/date-fns/compare/v1.28.3...v1.28.4
+[1.28.3]: https://github.com/date-fns/date-fns/compare/v1.28.2...v1.28.3
+[1.28.2]: https://github.com/date-fns/date-fns/compare/v1.28.1...v1.28.2
+[1.28.1]: https://github.com/date-fns/date-fns/compare/v1.28.0...v1.28.1
+[1.28.0]: https://github.com/date-fns/date-fns/compare/v1.27.2...v1.28.0
+[1.27.2]: https://github.com/date-fns/date-fns/compare/v1.27.1...v1.27.2
+[1.27.1]: https://github.com/date-fns/date-fns/compare/v1.27.0...v1.27.1
+[1.27.0]: https://github.com/date-fns/date-fns/compare/v1.26.0...v1.27.0
+[1.26.0]: https://github.com/date-fns/date-fns/compare/v1.25.0...v1.26.0
+[1.25.0]: https://github.com/date-fns/date-fns/compare/v1.24.0...v1.25.0
+[1.24.0]: https://github.com/date-fns/date-fns/compare/v1.23.0...v1.24.0
+[1.23.0]: https://github.com/date-fns/date-fns/compare/v1.22.0...v1.23.0
+[1.22.0]: https://github.com/date-fns/date-fns/compare/v1.21.1...v1.22.0
+[1.21.1]: https://github.com/date-fns/date-fns/compare/v1.21.0...v1.21.1
+[1.21.0]: https://github.com/date-fns/date-fns/compare/v1.20.1...v1.21.0
+[1.20.1]: https://github.com/date-fns/date-fns/compare/v1.20.0...v1.20.1
+[1.20.0]: https://github.com/date-fns/date-fns/compare/v1.19.0...v1.20.0
+[1.19.0]: https://github.com/date-fns/date-fns/compare/v1.18.0...v1.19.0
+[1.18.0]: https://github.com/date-fns/date-fns/compare/v1.17.0...v1.18.0
+[1.17.0]: https://github.com/date-fns/date-fns/compare/v1.16.0...v1.17.0
+[1.16.0]: https://github.com/date-fns/date-fns/compare/v1.15.1...v1.16.0
+[1.15.1]: https://github.com/date-fns/date-fns/compare/v1.15.0...v1.15.1
+[1.15.0]: https://github.com/date-fns/date-fns/compare/v1.14.1...v1.15.0
+[1.14.1]: https://github.com/date-fns/date-fns/compare/v1.14.0...v1.14.1
+[1.14.0]: https://github.com/date-fns/date-fns/compare/v1.13.0...v1.14.0
+[1.13.0]: https://github.com/date-fns/date-fns/compare/v1.12.1...v1.13.0
+[1.12.1]: https://github.com/date-fns/date-fns/compare/v1.12.0...v1.12.1
+[1.12.0]: https://github.com/date-fns/date-fns/compare/v1.11.2...v1.12.0
+[1.11.2]: https://github.com/date-fns/date-fns/compare/v1.11.1...v1.11.2
+[1.11.1]: https://github.com/date-fns/date-fns/compare/v1.11.0...v1.11.1
+[1.11.0]: https://github.com/date-fns/date-fns/compare/v1.10.0...v1.11.0
+[1.10.0]: https://github.com/date-fns/date-fns/compare/v1.9.0...v1.10.0
+[1.9.0]: https://github.com/date-fns/date-fns/compare/v1.8.1...v1.9.0
+[1.8.1]: https://github.com/date-fns/date-fns/compare/v1.8.0...v1.8.1
+[1.8.0]: https://github.com/date-fns/date-fns/compare/v1.7.0...v1.8.0
+[1.7.0]: https://github.com/date-fns/date-fns/compare/v1.6.0...v1.7.0
+[1.6.0]: https://github.com/date-fns/date-fns/compare/v1.5.2...v1.6.0
+[1.5.2]: https://github.com/date-fns/date-fns/compare/v1.5.1...v1.5.2
+[1.5.1]: https://github.com/date-fns/date-fns/compare/v1.5.0...v1.5.1
+[1.5.0]: https://github.com/date-fns/date-fns/compare/v1.4.0...v1.5.0
+[1.4.0]: https://github.com/date-fns/date-fns/compare/v1.3.0...v1.4.0
+[1.3.0]: https://github.com/date-fns/date-fns/compare/v1.2.0...v1.3.0
+[1.2.0]: https://github.com/date-fns/date-fns/compare/v1.1.1...v1.2.0
+[1.1.1]: https://github.com/date-fns/date-fns/compare/v1.1.0...v1.1.1
+[1.1.0]: https://github.com/date-fns/date-fns/compare/v1.0.0...v1.1.0
+[1.0.0]: https://github.com/date-fns/date-fns/compare/v0.17.0...v1.0.0
+[0.17.0]: https://github.com/date-fns/date-fns/compare/v0.16.0...v0.17.0
+[0.16.0]: https://github.com/date-fns/date-fns/compare/v0.15.0...v0.16.0
+[0.15.0]: https://github.com/date-fns/date-fns/compare/v0.14.11...v0.15.0
+[0.14.11]: https://github.com/date-fns/date-fns/compare/v0.14.10...v0.14.11
+[0.14.10]: https://github.com/date-fns/date-fns/compare/v0.14.9...v0.14.10
+[0.14.9]: https://github.com/date-fns/date-fns/compare/v0.14.8...v0.14.9
+[0.14.8]: https://github.com/date-fns/date-fns/compare/v0.14.6...v0.14.8
+[0.14.6]: https://github.com/date-fns/date-fns/compare/v0.14.0...v0.14.6
+[0.14.0]: https://github.com/date-fns/date-fns/compare/v0.13.0...v0.14.0
+[0.13.0]: https://github.com/date-fns/date-fns/compare/v0.12.1...v0.13.0
+[0.12.1]: https://github.com/date-fns/date-fns/compare/v0.12.0...v0.12.1
+[0.12.0]: https://github.com/date-fns/date-fns/compare/v0.11.0...v0.12.0
+[0.11.0]: https://github.com/date-fns/date-fns/compare/v0.10.0...v0.11.0
+[0.10.0]: https://github.com/date-fns/date-fns/compare/v0.9.0...v0.10.0
+[0.9.0]: https://github.com/date-fns/date-fns/compare/v0.8.0...v0.9.0
+[0.8.0]: https://github.com/date-fns/date-fns/compare/v0.7.0...v0.8.0
+[0.7.0]: https://github.com/date-fns/date-fns/compare/v0.6.0...v0.7.0
+[0.6.0]: https://github.com/date-fns/date-fns/compare/v0.5.0...v0.6.0
+[0.5.0]: https://github.com/date-fns/date-fns/compare/v0.4.0...v0.5.0
+[0.4.0]: https://github.com/date-fns/date-fns/compare/v0.3.0...v0.4.0
+[0.3.0]: https://github.com/date-fns/date-fns/compare/v0.2.0...v0.3.0
+[0.2.0]: https://github.com/date-fns/date-fns/compare/v0.1.0...v0.2.0
diff --git a/date-fns/CONTRIBUTING.md b/date-fns/CONTRIBUTING.md
new file mode 100644
index 0000000..a823db7
--- /dev/null
+++ b/date-fns/CONTRIBUTING.md
@@ -0,0 +1,139 @@
+# Contributing Guide
+
+**⚠⚠⚠ Please contribute new code in TypeScript ⚠⚠⚠**
+
+[Read more about migration to TypeScript](https://github.com/date-fns/date-fns/discussions/1932)
+
+## Table of Contents
+
+- [How to Help?](#how-to-help)
+
+- [Contribution Guidelines](#contribution-guidelines)
+
+- [Getting Started](#getting-started)
+
+- [Testing](#testing)
+
+- [Code Style Guide](#code-style-guide)
+
+ - [Lint the Code](#lint-the-code)
+
+ - [Use EditorConfig](#use-editorconfig)
+
+- [Documentation](#documentation)
+
+ - [JSDoc](#jsdoc)
+
+## How to Help?
+
+Help is always welcome. There are areas where you can help:
+
+- The core functionality (performance improvements, bug fixes,
+ new features, etc.).
+
+- Documentation ([markdown documents](https://github.com/date-fns/date-fns/search?l=markdown),
+ inline JSDoc comments).
+
+- Test suite & development environment improvements.
+
+- The [website](https://github.com/date-fns/date-fns.org).
+
+If you see a gap, but don't have time, experience, or you just need help
+with the library, don't hesitate to [start a discussion](https://github.com/date-fns/date-fns/discussions/new) or
+[shoot an issue](https://github.com/date-fns/date-fns/issues/new).
+
+The date-fns functionality is comprehensive and covers most of the use cases,
+however it doesn't have an extended time zone support. Please leave a comment
+to the [Extended time zones support issue](https://github.com/date-fns/date-fns/issues/180)
+if you are interested in the functionality or want to help with development.
+
+If you are interested in Elm/ClojureScript/etc. wrappers,
+please [file an issue](https://github.com/date-fns/date-fns/issues/new).
+
+## Contribution Guidelines
+
+Due to the modular nature of date-fns, it's more than open to new features.
+However, when a new function duplicates the existing functionality, native API
+or causes significant build size increase, a PR might be rejected or
+the author can be asked to move the code to a new or another package.
+
+Please follow the main contributing rules, to maintain date-fns' top quality:
+
+- Follow style guides:
+
+ - [Lint the code](#lint-the-code).
+
+ - [Use EditorConfig](#use-editorconfig).
+
+- Write tests.
+
+- [Write documentation](#documentation).
+
+- Don't update the changelog.
+
+- Don't change the library version.
+
+## Getting Started
+
+1. Install [Node.js](https://nodejs.org/en/download) and [Yarn](https://yarnpkg.com/en/docs/install).
+
+2. Fork the project and clone the fork repo.
+
+3. Run `yarn` to install the application dependencies.
+
+## Testing
+
+Run all tests:
+
+```sh
+yarn test
+```
+
+Run tests once:
+
+```sh
+yarn test --single-run
+```
+
+To test a function in REPL, use `babel-node` located in `./node_modules/.bin` (mind the `-x` flag to support also TypeScript files):
+
+```sh
+./node_modules/.bin/babel-node -x ".js",".ts"
+
+> const toDate = require('./src/toDate')
+undefined
+> toDate(1392098430000).toString()
+'Tue Feb 11 2014 01:00:30 GMT-0500 (Eastern Standard Time)'
+>
+```
+
+Build date-fns to test in in your project:
+
+```sh
+env PACKAGE_OUTPUT_PATH="$(pwd)/../PATH-TO-YOUR-MODULE/node_modules/date-fns" ./scripts/build/package.sh
+```
+
+## Code Style Guide
+
+### Lint the Code
+
+The project follows [Prettier] code style and uses [ESLint] as the linter.
+To lint the code, run:
+
+```bash
+yarn lint
+```
+
+[prettier]: https://prettier.io/
+[eslint]: https://eslint.org/
+
+## Documentation
+
+### JSDoc
+
+[JSDoc](http://usejsdoc.org) is used for the code documentation. Along with the
+standard JSDoc tags, date-fns uses `@category` tag that allows
+to group functions.
+
+[jsdoc-parse](https://github.com/jsdoc2md/jsdoc-parse) is used to parse
+JSDoc annotations.
diff --git a/date-fns/LICENSE.md b/date-fns/LICENSE.md
new file mode 100644
index 0000000..a69dab1
--- /dev/null
+++ b/date-fns/LICENSE.md
@@ -0,0 +1,6 @@
+Copyright (C) 2020 Sasha Koss and Lesha Koss
+
+# License
+
+date-fns is licensed under the [MIT license](http://kossnocorp.mit-license.org).
+Read more about MIT at [TLDRLegal](https://tldrlegal.com/license/mit-license).
diff --git a/date-fns/README.md b/date-fns/README.md
new file mode 100644
index 0000000..8ac6395
--- /dev/null
+++ b/date-fns/README.md
@@ -0,0 +1,69 @@
+<p align="center">
+ <a href="https://date-fns.org/">
+ <img alt="date-fns" title="date-fns" src="https://raw.githubusercontent.com/date-fns/date-fns/master/docs/logotype.svg" width="300" />
+ </a>
+</p>
+
+<p align="center">
+ <b>date-fns</b> provides the most comprehensive, yet simple and consistent toolset
+ <br>
+ for manipulating <b>JavaScript dates</b> in <b>a browser</b> & <b>Node.js</b>.</b>
+</p>
+
+<div align="center">
+
+[📖&nbsp; Documentation](https://date-fns.org/docs/Getting-Started/)&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;[🧑‍💻&nbsp; JavaScript Jobs](https://jobs.date-fns.org/)
+
+</div>
+
+<hr>
+
+# It's like [Lodash](https://lodash.com) for dates
+
+- It has [**200+ functions** for all occasions](https://date-fns.org/docs/Getting-Started/).
+- **Modular**: Pick what you need. Works with webpack, Browserify, or Rollup and also supports tree-shaking.
+- **Native dates**: Uses existing native type. It doesn't extend core objects for safety's sake.
+- **Immutable & Pure**: Built using pure functions and always returns a new date instance.
+- **TypeScript & Flow**: Supports both Flow and TypeScript
+- **I18n**: Dozens of locales. Include only what you need.
+- [and many more benefits](https://date-fns.org/)
+
+```js
+import { compareAsc, format } from 'date-fns'
+
+format(new Date(2014, 1, 11), 'yyyy-MM-dd')
+//=> '2014-02-11'
+
+const dates = [
+ new Date(1995, 6, 2),
+ new Date(1987, 1, 11),
+ new Date(1989, 6, 10),
+]
+dates.sort(compareAsc)
+//=> [
+// Wed Feb 11 1987 00:00:00,
+// Mon Jul 10 1989 00:00:00,
+// Sun Jul 02 1995 00:00:00
+// ]
+```
+
+The library is available as an [npm package](https://www.npmjs.com/package/date-fns).
+To install the package run:
+
+```bash
+npm install date-fns --save
+# or with yarn
+yarn add date-fns
+```
+
+## Docs
+
+[See date-fns.org](https://date-fns.org/) for more details, API,
+and other docs.
+
+<br />
+<!-- END OF README-JOB SECTION -->
+
+## License
+
+[MIT © Sasha Koss](https://kossnocorp.mit-license.org/)
diff --git a/date-fns/benchmark.js b/date-fns/benchmark.js
new file mode 100644
index 0000000..2d65f5d
--- /dev/null
+++ b/date-fns/benchmark.js
@@ -0,0 +1,2 @@
+var testsContext = require.context('./src/', true, /\/benchmark\.js$/)
+testsContext.keys().forEach(testsContext)
diff --git a/date-fns/config/.eslintrc.js b/date-fns/config/.eslintrc.js
new file mode 100644
index 0000000..a40aaa8
--- /dev/null
+++ b/date-fns/config/.eslintrc.js
@@ -0,0 +1,5 @@
+module.exports = {
+ rules: {
+ 'no-console': 'off'
+ }
+}
diff --git a/date-fns/config/_lib/benchmarkJSONReporter.js b/date-fns/config/_lib/benchmarkJSONReporter.js
new file mode 100644
index 0000000..d435c96
--- /dev/null
+++ b/date-fns/config/_lib/benchmarkJSONReporter.js
@@ -0,0 +1,48 @@
+var fs = require('fs')
+
+var benchmarkResultFilename = './tmp/benchmark.json'
+
+function benchmarkJSONReporter () {
+ var benchmarkResult = {}
+
+ this.onSpecComplete = function (_, result) {
+ var fnName = result.benchmark.suite
+ var libraryName = result.benchmark.name
+ var operationsPerSecond = Math.floor(result.benchmark.hz)
+
+ if (!benchmarkResult[fnName]) {
+ benchmarkResult[fnName] = {}
+ }
+
+ benchmarkResult[fnName][libraryName] = operationsPerSecond
+ }
+
+ this.onRunComplete = function () {
+ var benchmarkResultArray = []
+ for (var fnName in benchmarkResult) {
+ if (benchmarkResult.hasOwnProperty(fnName)) {
+ var element = {fn: fnName}
+
+ if (benchmarkResult[fnName]['date-fns']) {
+ element.dateFns = benchmarkResult[fnName]['date-fns']
+ }
+
+ if (benchmarkResult[fnName]['Moment.js']) {
+ element.moment = benchmarkResult[fnName]['Moment.js']
+ }
+
+ benchmarkResultArray.push(element)
+ }
+ }
+
+ fs.writeFile(benchmarkResultFilename, JSON.stringify(benchmarkResultArray), 'utf-8', function (err) {
+ if (err) {
+ throw err
+ }
+
+ console.log('See results at ' + benchmarkResultFilename)
+ })
+ }
+}
+
+module.exports = benchmarkJSONReporter
diff --git a/date-fns/config/_lib/countReporter.js b/date-fns/config/_lib/countReporter.js
new file mode 100644
index 0000000..e78e238
--- /dev/null
+++ b/date-fns/config/_lib/countReporter.js
@@ -0,0 +1,34 @@
+var fs = require('fs')
+
+var countFilename = './tmp/tests_count.txt'
+
+function countReporter() {
+ this.onRunComplete = function (_, result) {
+ var runCount = result.success
+
+ fs.readFile(
+ countFilename,
+ { encoding: 'utf-8', flag: 'a+' },
+ function (err, data) {
+ if (err) {
+ throw err
+ }
+
+ var totalCount = (parseInt(data, 10) || 0) + runCount
+
+ fs.writeFile(
+ countFilename,
+ totalCount.toString(),
+ 'utf-8',
+ function (err) {
+ if (err) {
+ throw err
+ }
+ }
+ )
+ }
+ )
+ }
+}
+
+module.exports = countReporter
diff --git a/date-fns/config/karma.js b/date-fns/config/karma.js
new file mode 100644
index 0000000..e43fe80
--- /dev/null
+++ b/date-fns/config/karma.js
@@ -0,0 +1,220 @@
+process.env.PHANTOMJS_BIN = 'node_modules/.bin/phantomjs'
+process.env.NODE_ENV = 'test'
+
+const webpackConfig = require('./webpack')
+const countReporter = require('./_lib/countReporter')
+const benchmarkJSONReporter = require('./_lib/benchmarkJSONReporter')
+
+const sauceLabsLaunchers = {
+ // TODO: See if Safari became more reliable
+ safari: {
+ base: 'SauceLabs',
+ platform: 'OS X 10.11',
+ browserName: 'safari',
+ version: '9.0',
+ },
+
+ chrome: {
+ base: 'SauceLabs',
+ platform: 'Windows 8.1',
+ browserName: 'chrome',
+ version: '46.0',
+ },
+
+ firefox: {
+ base: 'SauceLabs',
+ platform: 'Windows 8.1',
+ browserName: 'firefox',
+ version: '41.0',
+ },
+
+ ie8: {
+ base: 'SauceLabs',
+ platform: 'Windows 7',
+ browserName: 'internet explorer',
+ version: '8.0',
+ },
+
+ ie9: {
+ base: 'SauceLabs',
+ platform: 'Windows 7',
+ browserName: 'internet explorer',
+ version: '9.0',
+ },
+
+ ie10: {
+ base: 'SauceLabs',
+ platform: 'Windows 7',
+ browserName: 'internet explorer',
+ version: '10.0',
+ },
+
+ ie11: {
+ base: 'SauceLabs',
+ platform: 'Windows 8.1',
+ browserName: 'internet explorer',
+ version: '11.0',
+ },
+
+ edge: {
+ base: 'SauceLabs',
+ platform: 'Windows 10',
+ browserName: 'microsoftedge',
+ version: '20.10240',
+ },
+
+ // TODO: See if iPhone became more reliable
+ // ios: {
+ // base: 'SauceLabs',
+ // browserName: 'iphone',
+ // platform: 'OS X 10.10',
+ // version: '9.1',
+ // deviceName: 'iPhone 6',
+ // deviceOrientation: 'portrait'
+ // },
+
+ android: {
+ base: 'SauceLabs',
+ browserName: 'android',
+ platform: 'Linux',
+ version: '5.1',
+ deviceName: 'Android Emulator',
+ deviceOrientation: 'portrait',
+ },
+}
+
+const localLaunchers = {
+ LocalChrome: {
+ base: 'Chrome',
+ },
+}
+
+const ciLaunchers = {
+ CIChrome: {
+ base: 'ChromeHeadless',
+ },
+}
+
+function config(config) {
+ config.set({
+ frameworks: getFrameworksConfig(),
+ files: getFilesConfig(),
+ preprocessors: getPreprocessorsConfig(),
+ webpack: webpackConfig,
+ webpackMiddleware: {
+ stats: {
+ assets: false,
+ chunks: false,
+ hash: false,
+ timings: false,
+ version: false,
+ },
+ },
+
+ // We are limited in the number of parallel VMs in SauceLabs (5)
+ // and Karma don't know how to limit parallel browser instances
+ // so waiting time must be insanely high.
+ browserNoActivityTimeout: process.env.TEST_CROSS_BROWSER
+ ? 60 * 60 * 1000 /* 1 hour */
+ : 10 * 1000 /* 10 sec */,
+ captureTimeout: process.env.TEST_CROSS_BROWSER
+ ? 120 * 1000 /* 2 min */
+ : 60 * 1000 /* 1 min */,
+
+ sauceLabs: {
+ startConnect: false,
+ tunnelIdentifier: process.env.GITHUB_RUN_ID,
+ recordScreenshots: false,
+ public: 'public',
+ },
+
+ coveageIstanbulReporter: {
+ reports: ['html', 'lcovonly'],
+ fixWebpackSourcePaths: true,
+ },
+
+ mochaReporter: {
+ output: 'minimal',
+ },
+
+ plugins: (process.env.COVERAGE_REPORT
+ ? ['karma-coverage', 'karma-coverage-istanbul-reporter']
+ : []
+ ).concat([
+ 'karma-mocha',
+ 'karma-mocha-reporter',
+ 'karma-phantomjs-launcher',
+ 'karma-chrome-launcher',
+ // TODO: Make it work
+ // 'karma-sauce-launcher',
+ 'karma-sourcemap-loader',
+ 'karma-webpack',
+ 'karma-benchmark',
+ 'karma-benchmark-reporter',
+ { 'reporter:count': ['type', countReporter] },
+ { 'reporter:benchmark-json': ['type', benchmarkJSONReporter] },
+ ]),
+
+ customLaunchers: process.env.TEST_CROSS_BROWSER
+ ? sauceLabsLaunchers
+ : process.env.CI
+ ? ciLaunchers
+ : localLaunchers,
+ browsers: getBrowsersConfig(),
+ reporters: getReportersConfig(),
+ })
+}
+
+function getFrameworksConfig() {
+ if (process.env.TEST_BENCHMARK) {
+ return ['benchmark']
+ } else {
+ return ['mocha']
+ }
+}
+
+function getFilesConfig() {
+ if (process.env.USE_STATIC_TESTS) {
+ return ['../tmp/tests.js']
+ } else if (process.env.TEST_BENCHMARK) {
+ return ['../node_modules/moment/moment.js', '../benchmark.js']
+ } else {
+ return ['../test.js']
+ }
+}
+
+function getPreprocessorsConfig() {
+ if (process.env.USE_STATIC_TESTS) {
+ return { '../tmp/tests.js': ['sourcemap'] }
+ } else if (process.env.TEST_BENCHMARK) {
+ return { '../benchmark.js': ['webpack', 'sourcemap'] }
+ } else {
+ return { '../test.js': ['webpack', 'sourcemap'] }
+ }
+}
+
+function getBrowsersConfig() {
+ if (process.env.TEST_CROSS_BROWSER) {
+ return Object.keys(sauceLabsLaunchers)
+ } else if (process.env.TEST_BENCHMARK) {
+ return ['PhantomJS']
+ } else if (process.env.CI) {
+ return Object.keys(ciLaunchers)
+ } else {
+ return Object.keys(localLaunchers)
+ }
+}
+
+function getReportersConfig() {
+ if (process.env.TEST_CROSS_BROWSER) {
+ return ['dots', 'saucelabs', 'count']
+ } else if (process.env.TEST_BENCHMARK) {
+ return ['benchmark', 'benchmark-json']
+ } else if (process.env.COVERAGE_REPORT) {
+ return ['coverage-istanbul']
+ } else {
+ return ['mocha', 'count']
+ }
+}
+
+module.exports = config
diff --git a/date-fns/config/webpack.js b/date-fns/config/webpack.js
new file mode 100644
index 0000000..327b587
--- /dev/null
+++ b/date-fns/config/webpack.js
@@ -0,0 +1,79 @@
+const path = require('path')
+const webpack = require('webpack')
+
+const isProduction = process.env.NODE_ENV === 'production'
+
+const config = {
+ mode: isProduction ? 'production' : 'development',
+ devtool: isProduction ? 'source-map' : 'inline-source-map',
+ entry: getEntryConfig(),
+ output: getOutputConfig(),
+ resolve: {
+ extensions: ['.ts', '.js']
+ },
+ module: {
+ rules: [
+ { test: /\.(js|ts)$/, exclude: /node_modules/, use: 'babel-loader' }
+ ].concat(
+ process.env.COVERAGE_REPORT
+ ? [
+ {
+ test: /\.(js|ts)$/,
+ use: {
+ loader: 'istanbul-instrumenter-loader',
+ options: { esModules: true }
+ },
+ enforce: 'post',
+ exclude: /node_modules|test.js|src\/locale$/
+ }
+ ]
+ : []
+ )
+ },
+ plugins: getPlugins()
+}
+
+module.exports = config
+
+function getEntryConfig() {
+ if (process.env.BUILD_TESTS) {
+ return {
+ tests: './testWithoutLocales.js'
+ }
+ } else if (process.env.NODE_ENV === 'test') {
+ return undefined
+ } else {
+ return {
+ date_fns: './tmp/umd/index.js'
+ }
+ }
+}
+
+function getOutputConfig() {
+ if (process.env.BUILD_TESTS) {
+ return {
+ path: path.join(process.cwd(), 'tmp'),
+ filename: '[name].js'
+ }
+ } else if (process.env.NODE_ENV === 'test') {
+ return undefined
+ } else {
+ return {
+ path: path.join(process.cwd(), 'dist'),
+ filename: '[name].js',
+ library: 'dateFns',
+ libraryTarget: 'umd'
+ }
+ }
+}
+
+function getPlugins() {
+ return process.env.NODE_ENV === 'test'
+ ? [
+ new webpack.ContextReplacementPlugin(
+ /power-assert-formatter[\\/]lib/,
+ new RegExp('^\\./.*\\.js$')
+ )
+ ]
+ : undefined
+}
diff --git a/date-fns/docs/.eslintrc.js b/date-fns/docs/.eslintrc.js
new file mode 100644
index 0000000..a40aaa8
--- /dev/null
+++ b/date-fns/docs/.eslintrc.js
@@ -0,0 +1,5 @@
+module.exports = {
+ rules: {
+ 'no-console': 'off'
+ }
+}
diff --git a/date-fns/docs/Day.js b/date-fns/docs/Day.js
new file mode 100644
index 0000000..42df02d
--- /dev/null
+++ b/date-fns/docs/Day.js
@@ -0,0 +1,15 @@
+/**
+ * @category Types
+ * @summary Day type
+ *
+ * @description
+ * The day of the week type alias (`0 | 1 | 2 | 3 | 4 | 5 | 6`). Unlike the date
+ * (the number of days since the beginningof the month), which starts with 1
+ * and is dynamic (can go up to 28, 30, or 31), the day starts with 0 and static
+ * (always ends at 6). Look at it as an index in an array where Sunday is
+ * the first element, and Saturday is the last.
+ *
+ * @typedef {0 | 1 | 2 | 3 | 4 | 5 | 6} Day
+ */
+const Day = 0
+module.exports = Day
diff --git a/date-fns/docs/Duration.js b/date-fns/docs/Duration.js
new file mode 100644
index 0000000..95702b3
--- /dev/null
+++ b/date-fns/docs/Duration.js
@@ -0,0 +1,19 @@
+/**
+ * @category Types
+ * @summary Duration object
+ *
+ * @description
+ * Duration object.
+ *
+ * @typedef {Object} Duration
+ *
+ * @property {number} [years]
+ * @property {number} [months]
+ * @property {number} [weeks]
+ * @property {number} [days]
+ * @property {number} [hours]
+ * @property {number} [minutes]
+ * @property {number} [seconds]
+ */
+const Duration = {}
+module.exports = Duration
diff --git a/date-fns/docs/Interval.js b/date-fns/docs/Interval.js
new file mode 100644
index 0000000..15347b6
--- /dev/null
+++ b/date-fns/docs/Interval.js
@@ -0,0 +1,16 @@
+/**
+ * @category Types
+ * @summary An object that combines two dates to represent the time interval.
+ *
+ * @description
+ * An object that combines two dates to represent the time interval.
+ *
+ * @typedef {Object} Interval
+ * @property {Date|Number} start - the start of the interval
+ * @property {Date|Number} end - the end of the interval
+ * @throws {RangeError} The start of an interval cannot be after its end
+ * @throws {RangeError} Date in interval cannot be `Invalid Date`
+ */
+var Interval = {}
+
+module.exports = Interval
diff --git a/date-fns/docs/Locale.js b/date-fns/docs/Locale.js
new file mode 100644
index 0000000..fe0de7b
--- /dev/null
+++ b/date-fns/docs/Locale.js
@@ -0,0 +1,64 @@
+/**
+ * @category Types
+ * @summary A locale object.
+ *
+ * @description
+ * A locale object.
+ *
+ * If you don't specify a locale in options, default locale is `en-US`.
+ *
+ * @typedef {Object} Locale
+ *
+ * @property {string} [code] - the locale code (ISO 639-1 + optional country code)
+ * @property {Function} [formatDistance] - the function that takes a token
+ * passed by `formatDistance` or `formatDistanceStrict` and payload,
+ * and returns localized distance in words.
+ * Required by `formatDistance` and `formatDistanceStrict`
+ *
+ * @property {Function} [formatRelative] - the function that takes a token
+ * passed by `formatRelative` and two dates and returns the localized relative date format.
+ * Required by `formatRelative`
+ *
+ * @property {Object} [localize] - the object with functions used to localize various values.
+ * Required by `format` and `formatRelative`
+ * @property {Function} localize.ordinalNumber - the function that localizes an ordinal number
+ * @property {Function} localize.era - the function that takes 0 or 1 and returns localized era
+ * @property {Function} localize.quarter - the function that localizes a quarter
+ * @property {Function} localize.month - the function that localizes a month
+ * @property {Function} localize.day - the function that localizes a day of the week
+ * @property {Function} localize.dayPeriod - the function that takes one of the strings
+ * 'am', 'pm', 'midnight', 'noon', 'morning', 'afternoon', 'evening' or 'night'
+ * and returns localized time of the day
+ *
+ * @property {Object} [formatLong] - the object with functions that return localized formats
+ * @property {Function} formatLong.date - the function that returns a localized long date format
+ * @property {Function} formatLong.time - the function that returns a localized long time format
+ * @property {Function} formatLong.dateTime - the function that returns a localized format of date and time combined
+ *
+ * @property {Object} [match] — the object with functions used to match and parse various localized values.
+ * Required by `parse`
+ * @property {Function} match.ordinalNumber - the function that parses a localized ordinal number
+ * @property {Function} match.era - the function that parses a localized era
+ * @property {Function} match.quarter - the function that parses a localized quarter
+ * @property {Function} match.month - the function that parses a localized month
+ * @property {Function} match.day - the function that parses a localized day of the week
+ * @property {Function} match.dayPeriod - the function that parses a localized time of the day
+ *
+ * @property {Object} [options] - an object with locale options.
+ * @property {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday).
+ * Used by `differenceInCalendarWeeks`, `endOfWeek`, `format`, `getWeek`, `getWeekOfMonth`,
+ * `getWeeksInMonth`, `isSameWeek`, `isSameWeek`, `lastDayOfWeek`, `parse`, `setDay`,
+ * `setWeek`, `startOfWeek` and `startOfWeekYear`
+ * @property {1|2|3|4|5|6|7} [options.firstWeekContainsDate=1] - the day of January,
+ * which is always in the first week of the year.
+ * Used by `format`, `getWeek`, `getWeekYear`, `parse`, `setWeek`, `setWeekYear` and `startOfWeekYear`.
+ *
+ * @throws {RangeError} `locale` must contain `localize` property. Thrown by `format` and `formatRelative`
+ * @throws {RangeError} `locale` must contain `formatLong` property. Thrown by `format` and `formatRelative`
+ * @throws {RangeError} `locale` must contain `formatRelative` property. Thrown by `formatRelative`
+ * @throws {RangeError} `locale` must contain `formatDistance` property. Thrown by `formatDistance` and `formatDistanceStrict`
+ * @throws {RangeError} `locale` must contain `match` property. Thrown by `parse`
+ */
+var Locale = {}
+
+module.exports = Locale
diff --git a/date-fns/docs/constants.md b/date-fns/docs/constants.md
new file mode 100644
index 0000000..b792fd7
--- /dev/null
+++ b/date-fns/docs/constants.md
@@ -0,0 +1,47 @@
+# Constants
+
+date-fns provides with a number of useful constants.
+
+## Usage
+
+The constants could be imported from `date-fns/constants` or directly
+from `date-fns`:
+
+```js
+import { maxTime } from 'date-fns/constants'
+import { minTime } from 'date-fns'
+
+function isAllowedTime(time) {
+ return time <= maxTime && time >= minTime
+}
+```
+
+## Constants
+
+### `maxTime`
+
+Maximum allowed time:
+
+```js
+import { maxTime } from 'date-fns'
+
+const isValid = 8640000000000001 <= maxTime
+//=> false
+
+new Date(8640000000000001)
+//=> Invalid Date
+```
+
+### `minTime`
+
+Minimum allowed time:
+
+```js
+import { minTime } from 'date-fns'
+
+const isValid = -8640000000000001 >= minTime
+//=> false
+
+new Date(-8640000000000001)
+//=> Invalid Date
+```
diff --git a/date-fns/docs/esm.md b/date-fns/docs/esm.md
new file mode 100644
index 0000000..a3fcfa8
--- /dev/null
+++ b/date-fns/docs/esm.md
@@ -0,0 +1,24 @@
+# ECMAScript Modules
+
+**date-fns** v2.x provides support for
+[ECMAScript Modules](http://www.ecma-international.org/ecma-262/6.0/#sec-modules)
+that enables tree-shaking for bundlers, like [rollup.js](http://rollupjs.org)
+and [webpack](https://webpack.js.org).
+
+If you have tree-shaking enabled in your bundler, just import functions normally:
+
+```javascript
+import { format, parse } from 'date-fns'
+import { enUS, eo } from 'date-fns/locale'
+import { addDays, addHours } from 'date-fns/fp'
+```
+
+In TypeScript, now you can import individual functions in more idiomatic way:
+
+```typescript
+// Before
+import * as format from 'date-fns/format'
+
+// Now
+import format from 'date-fns/format'
+```
diff --git a/date-fns/docs/fp.md b/date-fns/docs/fp.md
new file mode 100644
index 0000000..fc7ca56
--- /dev/null
+++ b/date-fns/docs/fp.md
@@ -0,0 +1,70 @@
+# FP Guide
+
+**date-fns** v2.x provides [functional programming](https://en.wikipedia.org/wiki/Functional_programming) (FP)
+friendly functions, like those in [lodash](https://github.com/lodash/lodash/wiki/FP-Guide),
+that support [currying](https://en.wikipedia.org/wiki/Currying).
+
+## Table of Contents
+
+- [Usage](#usage)
+
+- [Using Function Composition](#using-function-composition)
+
+## Usage
+
+FP functions are provided via `'date-fns/fp'` submodule.
+
+Functions with options (`format`, `parse`, etc.) have two FP counterparts:
+one that has the options object as its first argument and one that hasn't.
+The name of the former has `WithOptions` added to the end of its name.
+
+In **date-fns'** FP functions, the order of arguments is reversed.
+
+```javascript
+import { addYears, formatWithOptions } from 'date-fns/fp'
+import { eo } from 'date-fns/locale'
+import toUpper from 'lodash/fp/toUpper' // 'date-fns/fp' is compatible with 'lodash/fp'!
+
+// If FP function has not received enough arguments, it returns another function
+const addFiveYears = addYears(5)
+
+// Several arguments can be curried at once
+const dateToString = formatWithOptions({ locale: eo }, 'd MMMM yyyy')
+
+const dates = [
+ new Date(2017, 0 /* Jan */, 1),
+ new Date(2017, 1 /* Feb */, 11),
+ new Date(2017, 6 /* Jul */, 2)
+]
+
+const formattedDates = dates.map(addFiveYears).map(dateToString).map(toUpper)
+//=> ['1 JANUARO 2022', '11 FEBRUARO 2022', '2 JULIO 2022']
+```
+
+## Using Function Composition
+
+The main advantage of FP functions is support of functional-style
+[function composing](https://medium.com/making-internets/why-using-chain-is-a-mistake-9bc1f80d51ba).
+
+In the example above, you can compose `addFiveYears`, `dateToString` and `toUpper` into a single function:
+
+```javascript
+const formattedDates = dates.map((date) => toUpper(dateToString(addFiveYears(date))))
+```
+
+Or you can use `compose` function provided by [lodash](https://lodash.com) to do the same in more idiomatic way:
+
+```javascript
+import compose from 'lodash/fp/compose'
+
+const formattedDates = dates.map(compose(toUpper, dateToString, addFiveYears))
+```
+
+Or if you prefer natural direction of composing (as opposed to the computationally correct order),
+you can use lodash' `flow` instead:
+
+```javascript
+import flow from 'lodash/fp/flow'
+
+const formattedDates = dates.map(flow(addFiveYears, dateToString, toUpper))
+``` \ No newline at end of file
diff --git a/date-fns/docs/gettingStarted.md b/date-fns/docs/gettingStarted.md
new file mode 100644
index 0000000..51249b8
--- /dev/null
+++ b/date-fns/docs/gettingStarted.md
@@ -0,0 +1,87 @@
+# Getting Started
+
+## Table of Contents
+
+- [Introduction](#introduction)
+
+- [Submodules](#submodules)
+
+- [Installation](#installation)
+
+## Introduction
+
+**date-fns** provides the most comprehensive, yet simple and consistent toolset
+for manipulating **JavaScript dates** in **a browser** & **Node.js**.
+
+**date-fns** is like [lodash](https://lodash.com) for dates. It has
+[**140+ functions** for all occasions](https://date-fns.org/docs/).
+
+```js
+import { format, compareAsc } from 'date-fns'
+
+format(new Date(2014, 1, 11), 'MM/dd/yyyy')
+//=> '02/11/2014'
+
+const dates = [
+ new Date(1995, 6, 2),
+ new Date(1987, 1, 11),
+ new Date(1989, 6, 10),
+]
+dates.sort(compareAsc)
+//=> [
+// Wed Feb 11 1987 00:00:00,
+// Mon Jul 10 1989 00:00:00,
+// Sun Jul 02 1995 00:00:00
+// ]
+```
+
+## Submodules
+
+**date-fns** includes some optional features as submodules in the npm package.
+Here is the list of them, in order of nesting:
+
+- FP — functional programming-friendly variations of the functions. See [FP Guide](https://date-fns.org/docs/FP-Guide);
+
+- UTC (in development) — variations of the functions which calculate dates in UTC±00:00 timezone.
+
+The later submodules are also included inside the former if you want to use multiple features from the list.
+
+To use submodule features, [install the npm package](#npm) and then import a function from a submodule:
+
+```js
+// The main submodule:
+import addDays from 'date-fns/addDays'
+
+// FP variation:
+import addDays from 'date-fns/fp/addDays'
+
+// UTC variation:
+import addDays from 'date-fns/utc/addDays'
+
+// Both FP and UTC:
+import addDays from 'date-fns/fp/utc/addDays'
+
+// With tree-shaking enabled:
+import { addDays, format } from 'date-fns/fp'
+```
+
+## Installation
+
+The library is available as an [npm package](https://www.npmjs.com/package/date-fns).
+
+To install the package, run:
+
+```bash
+npm install date-fns --save
+# or
+yarn add date-fns
+```
+
+Start using:
+
+```js
+import { formatDistance, subDays } from 'date-fns'
+
+formatDistance(subDays(new Date(), 3), new Date(), { addSuffix: true })
+//=> "3 days ago"
+```
diff --git a/date-fns/docs/i18n.md b/date-fns/docs/i18n.md
new file mode 100644
index 0000000..4986e62
--- /dev/null
+++ b/date-fns/docs/i18n.md
@@ -0,0 +1,92 @@
+# Internationalization
+
+## Table of Contents
+
+- [Usage](#usage)
+
+- [Adding New Language](#adding-new-language)
+
+## Usage
+
+There are just a few functions that support I18n:
+
+- [`format`](https://date-fns.org/docs/format)
+- [`formatDistance`](https://date-fns.org/docs/formatDistance)
+- [`formatDistanceStrict`](https://date-fns.org/docs/formatDistanceStrict)
+- [`formatRelative`](https://date-fns.org/docs/formatRelative)
+
+To use a locale, you need to require it and then pass
+as an option to a function:
+
+```js
+import { formatDistance } from 'date-fns'
+// Require Esperanto locale
+import { eo } from 'date-fns/locale'
+
+const result = formatDistance(
+ new Date(2016, 7, 1),
+ new Date(2015, 0, 1),
+ {locale: eo} // Pass the locale as an option
+)
+//=> 'pli ol 1 jaro'
+```
+
+It might seem complicated to require and pass locales as options,
+but unlike Moment.js which bloats your build with all the locales
+by default date-fns forces developer to manually require locales when needed.
+To make API simple, we encourage you to write tiny wrappers and use those
+instead of original functions:
+
+```js
+// app/_lib/format.js
+
+import { format } from 'date-fns'
+import { enGB, eo, ru } from 'date-fns/locale'
+
+const locales = {enGB, eo, ru}
+
+// by providing a default string of 'PP' or any of its variants for `formatStr`
+// it will format dates in whichever way is appropriate to the locale
+export default function (date, formatStr = 'PP') {
+ return format(date, formatStr, {
+ locale: locales[window.__localeId__] // or global.__localeId__
+ })
+}
+
+// Later:
+
+import format from 'app/_lib/format'
+
+window.__localeId__ = 'enGB'
+format(friday13, 'EEEE d')
+//=> 'Friday 13'
+
+window.__localeId__ = 'eo'
+format(friday13, 'EEEE d')
+//=> 'vendredo 13'
+
+// If the format string is omitted, it will take the default for the locale.
+window.__localeId__ = 'enGB'
+format(friday13)
+//=> Jul 13, 2019
+
+window.__localeId__ = 'eo'
+format(friday13)
+//=> 2019-jul-13
+
+```
+
+## Adding New Language
+
+At the moment there is no definitive guide, so if you feel brave enough,
+use this quick guide:
+
+- First of all, [create an issue](https://github.com/date-fns/date-fns/issues/new?title=XXX%20language%20support)
+ so you won't overlap with others.
+- A detailed explanation of how to [add a new locale](https://github.com/date-fns/date-fns/blob/master/docs/i18nContributionGuide.md#adding-a-new-locale).
+- Use [English locale](https://github.com/date-fns/date-fns/tree/master/src/locale/en-US)
+ as the basis and then incrementally adjust the tests and the code.
+- Directions on [adding a locale with the same language as another locale](https://github.com/date-fns/date-fns/blob/master/docs/i18nContributionGuide.md#creating-a-locale-with-the-same-language-as-another-locale).
+- If you have questions or need guidance, leave a comment in the issue.
+
+Thank you for your support!
diff --git a/date-fns/docs/i18nContributionGuide.md b/date-fns/docs/i18nContributionGuide.md
new file mode 100644
index 0000000..3f4ef8e
--- /dev/null
+++ b/date-fns/docs/i18nContributionGuide.md
@@ -0,0 +1,921 @@
+# I18n Contribution Guide
+
+## Table of Contents
+
+- [Adding a new locale](#adding-a-new-locale)
+
+ - [Choosing a directory name for a locale](#choosing-a-directory-name-for-a-locale)
+
+ - [index.js](#index.js)
+
+ - [localize](#localize)
+
+ - [localize.ordinalNumber](#localize.ordinalnumber)
+
+ - [localize.era and using buildLocalizeFn function](#localize.era-and-using-buildlocalizefn-function)
+
+ - [Formatting localizers](#formatting-localizers)
+
+ - [localize.quarter](#localize.quarter)
+
+ - [localize.month](#localize.month)
+
+ - [localize.day](#localize.day)
+
+ - [localize.dayPeriod](#localize.dayperiod)
+
+ - [formatLong](#formatlong)
+
+ - [formatLong.dateFormats](#formatlong.dateformats)
+
+ - [formatLong.timeFormats](#formatlong.timeformats)
+
+ - [formatLong.dateTimeFormats](#formatlong.datetimeformats)
+
+ - [formatRelative](#formatrelative)
+
+ - [match](#match)
+
+ - [formatDistance](#formatdistance)
+
+ - [Tests](#tests)
+
+- [Creating a locale with the same language as another locale](#creating-a-locale-with-the-same-language-as-another-locale)
+
+## Adding a new locale
+
+To add a new locale:
+
+- [Choose a directory name for it](#choosing-a-directory-name-for-a-locale).
+
+- Copy the content of an existing locale (e.g. `en-US`) into the newly created directory.
+
+- Replace the values in the content with yours file-by-file.
+ Use [CLDR data](https://www.unicode.org/cldr/charts/32/summary/root.html)
+ as a point of reference which values to choose.
+
+All locales contain a number of properties:
+
+- [`formatDistance`](#formatdistance) — distance localizer function used by `formatDistance` and `formatDistanceStrict`.
+- [`formatLong`](#formatlong) — contains long date localizer functions used by `format` and `formatRelative`.
+- [`formatRelative`](#formatrelative) — relative date localizer function used by `formatRelative`.
+- [`localize`](#localize) — contains functions, which localize the various date values. Required by `format` and `formatRelative`.
+- [`match`](#match) — contains functions to parse date values. Required by `parse`.
+- [`options`](#indexjs) — contains the index of the first day of the week for functions such as `startOfWeek`,
+ and the value which determines the first week of the year
+ for functions like `setWeek`.
+
+### Choosing a directory name for a locale
+
+Use the four letter code for the directory name (e.g. `en-GB`),
+
+Use the two/three letter code:
+
+- if the language code and the country code are the same (e.g. `pt` instead of `pt-PT`).
+
+- if the language is used in only one country (e.g. `fil` instead of `fil-PH`).
+
+- if all countries who use the language
+also use the same regional standards: the first day of the week,
+the week numbering (see: https://en.wikipedia.org/wiki/Week#Week_numbering),
+calendar date format (see: https://en.wikipedia.org/wiki/Calendar_date)
+and date representation (see: https://en.wikipedia.org/wiki/Date_and_time_representation_by_country
+and: https://en.wikipedia.org/wiki/Date_format_by_country)
+(e.g. `ca` instead of `ca-ES` and `ca-AD`).
+
+### index.js
+
+Locale's `index.js` is where all the properties of the locale are combined in a single file,
+documented in JSDoc format.
+
+```javascript
+import formatDistance from './_lib/formatDistance/index.js'
+import formatLong from './_lib/formatLong/index.js'
+import formatRelative from './_lib/formatRelative/index.js'
+import localize from './_lib/localize/index.js'
+import match from './_lib/match/index.js'
+
+/**
+ * @type {Locale}
+ * @category Locales
+ *
+ * // Name of the locale.
+ * // Inside the parentheses - name of the country - if the locale uses the four letter code, e.g. en-US, fr-CA or pt-BR.
+ * @summary English locale (United States).
+ *
+ * // Name of the language (used by https://date-fns.org/ website)
+ * @language English
+ *
+ * // ISO 639-2 code. See the list here:
+ * // https://www.loc.gov/standards/iso639-2/php/code_list.php
+ * // Used by https://date-fns.org/ to detect the list of the countries that uses the language.
+ * @iso-639-2 eng
+ *
+ * // Authors of the locale (including anyone who corrected or fixed the locale)
+ * @author Sasha Koss [@kossnocorp]{@link https://github.com/kossnocorp}
+ * @author Lesha Koss [@leshakoss]{@link https://github.com/leshakoss}
+ */
+var locale = {
+ code: 'en',
+ formatDistance: formatDistance,
+ formatLong: formatLong,
+ formatRelative: formatRelative,
+ localize: localize,
+ match: match,
+ options: {
+ // Index of the first day of the week.
+ // Sunday is 0, Monday is 1, Saturday is 6.
+ weekStartsOn: 0,
+
+ // Nth of January which is always in the first week of the year. See:
+ // https://en.wikipedia.org/wiki/Week#Week_numbering
+ // http://www.pjh2.de/datetime/weeknumber/wnd.php?l=en
+ firstWeekContainsDate: 1
+ }
+}
+
+export default locale
+```
+
+### localize
+
+Put this object in `_lib/localize/index.js` inside your locale directory.
+Contains a number of functions for used by `format`:
+
+```js
+var localize = {
+ ordinalNumber,
+ era,
+ quarter,
+ month,
+ day,
+ dayPeriod
+}
+
+export default localize
+```
+
+#### localize.ordinalNumber
+
+Function that takes a numeric argument and returns a string with ordinal number:
+
+```js
+// In `en-US` locale:
+function ordinalNumber (dirtyNumber, dirtyOptions) {
+ var number = Number(dirtyNumber)
+
+ var rem100 = number % 100
+ if (rem100 > 20 || rem100 < 10) {
+ switch (rem100 % 10) {
+ case 1:
+ return number + 'st'
+ case 2:
+ return number + 'nd'
+ case 3:
+ return number + 'rd'
+ }
+ }
+ return number + 'th'
+}
+
+var localize = {
+ ordinalNumber: ordinalNumber,
+ // ...
+}
+```
+
+If the form of the ordinal number depends on the grammatical case (or other grammatical structures),
+use `options.unit` argument which could be one of the values 'year', 'quarter', 'month', 'week',
+'date', 'dayOfYear', 'day', 'hour', 'minute' or 'second':
+
+```js
+// In `ru` locale:
+function ordinalNumber (dirtyNumber, dirtyOptions) {
+ var options = dirtyOptions || {}
+ var unit = String(options.unit)
+ var suffix
+
+ if (unit === 'date') {
+ suffix = '-е'
+ } else if (unit === 'week' || unit === 'minute' || unit === 'second') {
+ suffix = '-я'
+ } else {
+ suffix = '-й'
+ }
+
+ return dirtyNumber + suffix
+}
+```
+
+#### localize.era and using buildLocalizeFn function
+
+Localizes a numeric era. Takes either 0 or 1 as the first argument.
+As with many of the `localize` functions, they can be generated by built-in
+`buildLocalizeFn` function.
+
+From CLDR chart, use ['Date & Time'/'Gregorian'/'Eras'](https://www.unicode.org/cldr/charts/32/summary/en.html#1771) values.
+
+```js
+// In `en-US` locale:
+import buildLocalizeFn from '../../../_lib/buildLocalizeFn/index.js'
+
+var eraValues = {
+ narrow: ['B', 'A'],
+ abbreviated: ['BC', 'AD'],
+ wide: ['Before Christ', 'Anno Domini']
+}
+
+var localize = {
+ // ...
+ era: buildLocalizeFn({
+ values: eraValues,
+ defaultWidth: 'wide'
+ }),
+ // ...
+}
+
+export default localize
+```
+
+General usage of the function:
+
+```js
+var result = locale.localize.era(1, {width: 'abbreviated'})
+//=> 'AD'
+```
+
+If `width` is not provided or the `values` object does not contain values for the provided width,
+`defaultWidth` will be used. `defaultWidth` should indicate the longest form of the localized value.
+The same is true for all other `localize` functions.
+`width` for `localize.era` function could be either 'narrow', 'abbreviated' or 'wide'.
+
+```js
+var result = locale.localize.era(1, {width: 'foobar'})
+//=> 'Anno Domini'
+```
+
+#### Formatting localizers
+
+For some languages, there is a difference for "stand-alone" localizers and "formatting" localizers.
+"Stand-alone" means that the resulting value should make grammatical sense without context.
+"Formatting" means that the resulting value should be declined using the grammar rules of the language
+as if the value was a part of a date.
+For example, for languages with grammatical cases, stand-alone month could be in the nominative case ("January"),
+and formatting month could decline as a part of phrase "1st of January".
+In this case, use parameters `formattingValues` and `defaultFormattingWidth` of `buildLocalizeFn` function.
+
+Any localizer could be stand-alone and formatting.
+Check the CLDR chart for the unit to see if stand-alone and formatting values are different for a certain unit.
+If there's no difference (usually it happens in languages without grammatical cases),
+parameters `formattingValues` and `defaultFormattingWidth` are not needed.
+
+In this example, in Russian language a stand-alone month is in the nominative case ("январь"),
+and formatting month is in the genitive case ("января" as in "1-е января"). Notice the different endings:
+
+```js
+// In `ru` locale:
+var monthValues = {
+ narrow: ['Я', 'Ф', 'М', 'А', 'М', 'И', 'И', 'А', 'С', 'О', 'Н', 'Д'],
+ abbreviated: ['янв.', 'фев.', 'март', 'апр.', 'май', 'июнь', 'июль', 'авг.', 'сент.', 'окт.', 'нояб.', 'дек.'],
+ wide: ['январь', 'февраль', 'март', 'апрель', 'май', 'июнь', 'июль', 'август', 'сентябрь', 'октябрь', 'ноябрь', 'декабрь']
+}
+var formattingMonthValues = {
+ narrow: ['Я', 'Ф', 'М', 'А', 'М', 'И', 'И', 'А', 'С', 'О', 'Н', 'Д'],
+ abbreviated: ['янв.', 'фев.', 'мар.', 'апр.', 'мая', 'июн.', 'июл.', 'авг.', 'сент.', 'окт.', 'нояб.', 'дек.'],
+ wide: ['января', 'февраля', 'марта', 'апреля', 'мая', 'июня', 'июля', 'августа', 'сентября', 'октября', 'ноября', 'декабря']
+}
+
+var localize = {
+ // ...
+ month: buildLocalizeFn({
+ values: monthValues,
+ defaultWidth: 'wide',
+ formattingValues: formattingMonthValues,
+ defaultFormattingWidth: 'wide'
+ }),
+ // ...
+}
+
+export default localize
+```
+
+#### localize.quarter
+
+Localizes a quarter. Takes 1, 2, 3 or 4 as the first argument.
+`width` could be either 'narrow', 'abbreviated' or 'wide'.
+From CLDR chart, use ['Date & Time'/'Gregorian'/'Quarters'](https://www.unicode.org/cldr/charts/32/summary/en.html#1781) values.
+
+```js
+// In `en-US` locale:
+import buildLocalizeFn from '../../../_lib/buildLocalizeFn/index.js'
+
+var quarterValues = {
+ narrow: ['1', '2', '3', '4'],
+ abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],
+ wide: ['1st quarter', '2nd quarter', '3rd quarter', '4th quarter']
+}
+
+var localize = {
+ // ...
+ quarter: buildLocalizeFn({
+ values: quarterValues,
+ defaultWidth: 'wide',
+ argumentCallback: function (quarter) {
+ return Number(quarter) - 1
+ }
+ }),
+ // ...
+}
+
+export default localize
+```
+
+Note the usage of `argumentCallback` here. It converts the value passed into `localize.quarter` function
+(one of 1, 2, 3 or 4) into the index of the values array inside `quarterValues` (one of 0, 1, 2 or 3).
+
+#### localize.month
+
+Localizes a month. Takes numbers between 0 (for January) and 11 (for December).
+`width` could be either 'narrow', 'abbreviated' or 'wide'.
+From CLDR chart, use ['Date & Time'/'Gregorian'/'Months'](https://www.unicode.org/cldr/charts/32/summary/en.html#1793) values.
+
+```js
+// In `en-US` locale:
+import buildLocalizeFn from '../../../_lib/buildLocalizeFn/index.js'
+
+var monthValues = {
+ narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],
+ abbreviated: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
+ wide: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']
+}
+
+var localize = {
+ // ...
+ month: buildLocalizeFn({
+ values: monthValues,
+ defaultWidth: 'wide'
+ }),
+ // ...
+}
+
+export default localize
+```
+
+**NOTE**: in English, the names of days of the week and months are capitalized.
+Check if the same is true for the language you're working on.
+Generally, formatted dates should look like they are in the middle of a sentence,
+e.g. in Spanish language the weekdays and months should be in the lowercase:
+
+```js
+// In `es` locale:
+var monthValues = {
+ narrow: ['E', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],
+ abbreviated: ['ene.', 'feb.', 'mar.', 'abr.', 'may.', 'jun.', 'jul.', 'ago.', 'sep.', 'oct.', 'nov.', 'dic.'],
+ wide: ['enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio', 'julio', 'agosto', 'septiembre', 'octubre', 'noviembre', 'diciembre']
+}
+```
+
+`monthValues.narrow` are usually capitalized in every language. Check the CLDR chart for your language.
+
+#### localize.day
+
+Localizes a week day. Takes numbers between 0 (for Sunday) and 6 (for Saturday).
+`width` could be either 'narrow', 'short', 'abbreviated' or 'wide'.
+From CLDR chart, use ['Date & Time'/'Gregorian'/'Days'](https://www.unicode.org/cldr/charts/32/summary/en.html#1829) values.
+
+```js
+// In `en-US` locale:
+import buildLocalizeFn from '../../../_lib/buildLocalizeFn/index.js'
+
+var dayValues = {
+ narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],
+ short: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],
+ abbreviated: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
+ wide: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']
+}
+
+var localize = {
+ // ...
+ day: buildLocalizeFn({
+ values: dayValues,
+ defaultWidth: 'wide'
+ }),
+ // ...
+}
+
+export default localize
+```
+
+**NOTE**: the rules of capitalization from `localize.month` are also true for `localize.day`.
+
+#### localize.dayPeriod
+
+Localizes a certain day period.
+Could take of these strings as the argument: 'am', 'pm', 'midnight', 'noon', 'morning', 'afternoon', 'evening', 'night'.
+`width` could be either 'narrow', 'abbreviated' or 'wide'.
+From CLDR chart, use ['Date & Time'/'Gregorian'/'Day periods'](https://www.unicode.org/cldr/charts/32/summary/en.html#1857) values.
+
+```js
+// In `en-US` locale:
+import buildLocalizeFn from '../../../_lib/buildLocalizeFn/index.js'
+
+var dayPeriodValues = {
+ narrow: {
+ am: 'a',
+ pm: 'p',
+ midnight: 'mi',
+ noon: 'n',
+ morning: 'in the morning',
+ afternoon: 'in the afternoon',
+ evening: 'in the evening',
+ night: 'at night'
+ },
+ abbreviated: {
+ am: 'AM',
+ pm: 'PM',
+ midnight: 'midnight',
+ noon: 'noon',
+ morning: 'in the morning',
+ afternoon: 'in the afternoon',
+ evening: 'in the evening',
+ night: 'at night'
+ },
+ wide: {
+ am: 'a.m.',
+ pm: 'p.m.',
+ midnight: 'midnight',
+ noon: 'noon',
+ morning: 'in the morning',
+ afternoon: 'in the afternoon',
+ evening: 'in the evening',
+ night: 'at night'
+ }
+}
+
+var localize = {
+ // ...
+ dayPeriod: buildLocalizeFn({
+ values: dayPeriodValues,
+ defaultWidth: 'wide'
+ })
+}
+
+export default localize
+```
+
+### formatLong
+
+Put this object in `_lib/formatLong/index.js` inside your locale directory.
+Locale date formats written in `format` token string format.
+See the list of tokens: https://date-fns.org/docs/format
+Use https://en.wikipedia.org/wiki/Date_format_by_country and CLDR chart as the reference.
+
+#### formatLong.dateFormats
+
+Use ['Date & Time'/'Gregorian'/'Formats - Standard - Date Formats'](https://www.unicode.org/cldr/charts/32/summary/en.html#1901) values
+from the CLDR chart as a reference.
+
+```js
+// In `en-US` locale
+import buildFormatLongFn from '../../../_lib/buildFormatLongFn/index.js'
+
+var dateFormats = {
+ full: 'EEEE, MMMM do, y',
+ long: 'MMMM do, y',
+ medium: 'MMM d, y',
+ short: 'MM/dd/yyyy'
+}
+
+var formatLong = {
+ date: buildFormatLongFn({
+ formats: dateFormats,
+ defaultWidth: 'full'
+ }),
+ // ...
+}
+
+export default formatLong
+```
+
+`dateFormats.long` usually contains the longest form of writing the year, the month, and the day of the month.
+Use ordinal day of the month ('do' token) where applicable (date-fns, unlike CLDR supports ordinal numbers).
+
+`dateFormats.full` contains the same but with the day of the week.
+
+`dateFormats.medium` contains the same values as `dateFormats.long`, but with short form of month and non-ordinal day.
+
+`dateFormats.short` usually contains strictly numerical form of the date.
+Pay attention to the order of units (big-, little- or middle-endian)
+
+#### formatLong.timeFormats
+
+Use ['Date & Time'/'Gregorian'/'Formats - Standard - Time Formats'](https://www.unicode.org/cldr/charts/32/summary/en.html#1906) values
+from the CLDR chart as a reference.
+
+Use some variation of 'h:mm aa' for 12-hour clock locales or 'H:mm' for 24-hour clock locales. Use the local time separator.
+
+```js
+// In `en-US` locale
+import buildFormatLongFn from '../../../_lib/buildFormatLongFn/index.js'
+
+var timeFormats = {
+ full: 'h:mm:ss a zzzz',
+ long: 'h:mm:ss a z',
+ medium: 'h:mm:ss a',
+ short: 'h:mm a'
+}
+
+var formatLong = {
+ // ...
+ time: buildFormatLongFn({
+ formats: timeFormats,
+ defaultWidth: 'full'
+ }),
+ // ...
+}
+
+export default formatLong
+```
+
+#### formatLong.dateTimeFormats
+
+Use
+['Date & Time'/'Gregorian'/'Formats - Standard - Date & Time Combination Formats'](https://www.unicode.org/cldr/charts/32/summary/en.html#1910)
+values from the CLDR chart.
+
+```js
+// In `en-US` locale
+import buildFormatLongFn from '../../../_lib/buildFormatLongFn/index.js'
+
+var dateTimeFormats = {
+ full: "{{date}} 'at' {{time}}",
+ long: "{{date}} 'at' {{time}}",
+ medium: '{{date}}, {{time}}',
+ short: '{{date}}, {{time}}'
+}
+
+var formatLong = {
+ // ...
+ dateTime: buildFormatLongFn({
+ formats: dateTimeFormats,
+ defaultWidth: 'full'
+ })
+}
+
+export default formatLong
+```
+
+'{{date}}' and '{{time}}' from the strings will be replaced with the date and time respectively.
+
+### formatRelative
+
+Put this function in `_lib/formatRelative/index.js` inside your locale directory.
+Relative date formats written in `format` token string format.
+See the list of tokens: https://date-fns.org/docs/format.
+Has to process `lastWeek`, `yesterday`, `today`, `tomorrow`, `nextWeek` and `other` tokens.
+
+```javascript
+// In `en-US` locale
+var formatRelativeLocale = {
+ lastWeek: "'last' eeee 'at' p",
+ yesterday: "'yesterday at' p",
+ today: "'today at' p",
+ tomorrow: "'tomorrow at' p",
+ nextWeek: "eeee 'at' p",
+ other: 'P'
+}
+
+export default function formatRelative (token, date, baseDate, options) {
+ return formatRelativeLocale[token]
+}
+```
+
+You can use `date` and `baseDate` supplied to the function for the difficult situations
+(e.g. grammatical genders and cases of the days of the week)
+Both `date` and `baseDate` are converted to UTC timezone, which means
+that you should use UTC methods to take the date values (i.e. `date.getUTCDay()` instead of `date.getDay()`).
+You can use UTC functions from `src/_lib` in date-fns root directory if they are available.
+Don't forget to pass `options` object to them!
+Example is below. Note the different grammatical case for weekdays (accusative instead of nominative)
+and declension of word "прошлый" which depends on the grammatical gender of the weekday:
+
+```javascript
+// In `ru` locale
+import isSameUTCWeek from '../../../../_lib/isSameUTCWeek/index.js'
+
+var accusativeWeekdays = ['воскресенье', 'понедельник', 'вторник', 'среду', 'четверг', 'пятницу', 'субботу']
+
+function lastWeek (day) {
+ var weekday = accusativeWeekdays[day]
+
+ switch (day) {
+ case 0:
+ return "'в прошлое " + weekday + " в' p"
+ case 1:
+ case 2:
+ case 4:
+ return "'в прошлый " + weekday + " в' p"
+ case 3:
+ case 5:
+ case 6:
+ return "'в прошлую " + weekday + " в' p"
+ }
+}
+
+function thisWeek (day) {
+ // ...
+}
+
+function nextWeek (day) {
+ // ...
+}
+
+var formatRelativeLocale = {
+ lastWeek: function (date, baseDate, options) {
+ var day = date.getUTCDay()
+ if (isSameUTCWeek(date, baseDate, options)) {
+ return thisWeek(day)
+ } else {
+ return lastWeek(day)
+ }
+ },
+ yesterday: "'вчера в' p",
+ today: "'сегодня в' p",
+ tomorrow: "'завтра в' p",
+ nextWeek: function (date, baseDate, options) {
+ var day = date.getUTCDay()
+ if (isSameUTCWeek(date, baseDate, options)) {
+ return thisWeek(day)
+ } else {
+ return nextWeek(day)
+ }
+ },
+ other: 'P'
+}
+
+export default function formatRelative (token, date, baseDate, options) {
+ var format = formatRelativeLocale[token]
+
+ if (typeof format === 'function') {
+ return format(date, baseDate, options)
+ }
+
+ return format
+}
+```
+
+### match
+
+Put this object in `_lib/match/index.js` inside your locale directory.
+Contains the functions used by `parse` to parse a localized value:
+
+```js
+// In `en-US` locale:
+import buildMatchPatternFn from '../../../_lib/buildMatchPatternFn/index.js'
+import buildMatchFn from '../../../_lib/buildMatchFn/index.js'
+
+var matchOrdinalNumberPattern = /^(\d+)(th|st|nd|rd)?/i
+var parseOrdinalNumberPattern = /\d+/i
+
+var matchEraPatterns = {
+ narrow: /^(b|a)/i,
+ abbreviated: /^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,
+ wide: /^(before christ|before common era|anno domini|common era)/i
+}
+var parseEraPatterns = {
+ any: [/^b/i, /^(a|c)/i]
+}
+
+var matchQuarterPatterns = {
+ narrow: /^[1234]/i,
+ abbreviated: /^q[1234]/i,
+ wide: /^[1234](th|st|nd|rd)? quarter/i
+}
+var parseQuarterPatterns = {
+ any: [/1/i, /2/i, /3/i, /4/i]
+}
+
+var matchMonthPatterns = {
+ narrow: /^[jfmasond]/i,
+ abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,
+ wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i
+}
+var parseMonthPatterns = {
+ narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],
+ any: [/^ja/i, /^f/i, /^mar/i, /^ap/i, /^may/i, /^jun/i, /^jul/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i]
+}
+
+var matchDayPatterns = {
+ narrow: /^[smtwf]/i,
+ short: /^(su|mo|tu|we|th|fr|sa)/i,
+ abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,
+ wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i
+}
+var parseDayPatterns = {
+ narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],
+ any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i]
+}
+
+var matchDayPeriodPatterns = {
+ narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,
+ any: /^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i
+}
+var parseDayPeriodPatterns = {
+ any: {
+ am: /^a/i,
+ pm: /^p/i,
+ midnight: /^mi/i,
+ noon: /^no/i,
+ morning: /morning/i,
+ afternoon: /afternoon/i,
+ evening: /evening/i,
+ night: /night/i
+ }
+}
+
+var match = {
+ ordinalNumber: buildMatchPatternFn({
+ matchPattern: matchOrdinalNumberPattern,
+ parsePattern: parseOrdinalNumberPattern,
+ valueCallback: function (value) {
+ return parseInt(value, 10)
+ }
+ }),
+
+ era: buildMatchFn({
+ matchPatterns: matchEraPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseEraPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ quarter: buildMatchFn({
+ matchPatterns: matchQuarterPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseQuarterPatterns,
+ defaultParseWidth: 'any',
+ valueCallback: function (index) {
+ return index + 1
+ }
+ }),
+
+ month: buildMatchFn({
+ matchPatterns: matchMonthPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseMonthPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ day: buildMatchFn({
+ matchPatterns: matchDayPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseDayPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ dayPeriod: buildMatchFn({
+ matchPatterns: matchDayPeriodPatterns,
+ defaultMatchWidth: 'any',
+ parsePatterns: parseDayPeriodPatterns,
+ defaultParseWidth: 'any'
+ })
+}
+
+export default match
+```
+
+These functions mirror those in `localize`.
+
+For `matchPatterns` the patterns should match the whole meaningful word for the parsed value
+(which will be cut from the string in the process of parsing).
+`parsePatterns` contains patterns to detect one of the values from the result of `matchPatterns`
+Note that the patterns for `parsePatterns` don't necessary contain the whole word:
+
+```javascript
+// In `en-US` locale:
+var parseDayPatterns = {
+ narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],
+ any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i]
+}
+```
+
+but only the bare minimum to parse the value.
+
+Also note that all patterns have "case-insensitive" flags
+to match as much arbitrary user input as possible. For the same reason, try to match
+any variation of diacritical marks:
+
+```javascript
+// In `eo` locale:
+var matchDayPatterns = {
+ narrow: /^[dlmĵjvs]/i,
+ short: /^(di|lu|ma|me|(ĵ|jx|jh|j)a|ve|sa)/i,
+ abbreviated: /^(dim|lun|mar|mer|(ĵ|jx|jh|j)a(ŭ|ux|uh|u)|ven|sab)/i,
+ wide: /^(diman(ĉ|cx|ch|c)o|lundo|mardo|merkredo|(ĵ|jx|jh|j)a(ŭ|ux|uh|u)do|vendredo|sabato)/i
+}
+var parseDayPatterns = {
+ narrow: [/^d/i, /^l/i, /^m/i, /^m/i, /^(j|ĵ)/i, /^v/i, /^s/i],
+ any: [/^d/i, /^l/i, /^ma/i, /^me/i, /^(j|ĵ)/i, /^v/i, /^s/i]
+}
+```
+
+Here, for the word "dimanĉo" the functions will match also "dimancxo", "dimancho"
+and even grammatically incorrect "dimanco".
+
+Try to match any possible way of writing the word. Don't forget the grammatical cases:
+
+```javascript
+// In `ru` locale:
+var matchMonthPatterns = {
+ narrow: /^[яфмаисонд]/i,
+ abbreviated: /^(янв|фев|март?|апр|ма[йя]|июн[ья]?|июл[ья]?|авг|сент?|окт|нояб?|дек)/i,
+ wide: /^(январ[ья]|феврал[ья]|марта?|апрел[ья]|ма[йя]|июн[ья]|июл[ья]|августа?|сентябр[ья]|октябр[ья]|октябр[ья]|ноябр[ья]|декабр[ья])/i
+}
+```
+
+and variations of short weekdays and months:
+
+```javascript
+// In `ru` locale:
+var matchDayPatterns = {
+ narrow: /^[впсч]/i,
+ short: /^(вс|во|пн|по|вт|ср|чт|че|пт|пя|сб|су)\.?/i,
+ abbreviated: /^(вск|вос|пнд|пон|втр|вто|срд|сре|чтв|чет|птн|пят|суб).?/i,
+ wide: /^(воскресень[ея]|понедельника?|вторника?|сред[аы]|четверга?|пятниц[аы]|суббот[аы])/i
+}
+```
+
+(here, the `abbreviated` pattern will match both `вск` and `вос` as the short of `воскресенье` {Sunday})
+
+In `match.ordinalNumber` match ordinal numbers as well as non-ordinal numbers:
+
+```javascript
+// In `en-US` locale:
+var matchOrdinalNumberPattern = /^(\d+)(th|st|nd|rd)?/i
+```
+
+Don't forget the grammatical genders:
+
+```javascript
+// In `ru` locale:
+var matchOrdinalNumberPattern = /^(\d+)(-?(е|я|й|ое|ье|ая|ья|ый|ой|ий|ый))?/i
+```
+
+### formatDistance
+
+`formatDistance` property of locale is a function which takes three arguments:
+token passed by date-fns' `formatDistance` function (e.g. 'lessThanXMinutes'),
+a number of units to be displayed by the function
+(e.g. `locale.formatDistance('lessThanXMinutes', 5)` would display localized 'less than 5 minutes')
+and object with options.
+
+Your best guess is to copy `formatDistance` property from another locale and change the values.
+
+### Tests
+
+To test locales we use snapshots. See [`en-US` snapshot](https://github.com/date-fns/date-fns/blob/master/src/locale/en-US/snapshot.md) for an example.
+
+To generate snapshots, run `yarn locale-snapshots`. The snapshot for the locale
+you're working on will appear in the root locale directory (e.g. `src/locales/ru/snapshot.md`).
+
+Once you are done with the locale, generate the snapshot and review the output values.
+
+## Creating a locale with the same language as another locale
+
+Import the locale properties already implemented for the language,
+but replace unique properties.
+
+```javascript
+// Same as en-US
+import formatDistance from '../en-US/_lib/formatDistance/index.js'
+import formatRelative from '../en-US/_lib/formatRelative/index.js'
+import localize from '../en-US/_lib/localize/index.js'
+import match from '../en-US/_lib/match/index.js'
+
+// Unique for en-GB
+import formatLong from './_lib/formatLong/index.js'
+
+/**
+ * @type {Locale}
+ * @category Locales
+ * @summary English locale (United Kingdom).
+ * @language English
+ * @iso-639-2 eng
+ * @author John Doe [@example]{@link https://github.com/example}
+ */
+var locale = {
+ formatDistance: formatDistance,
+ formatLong: formatLong,
+ formatRelative: formatRelative,
+ localize: localize,
+ match: match,
+
+ // Unique for en-GB
+ options: {
+ weekStartsOn: 1,
+ firstWeekContainsDate: 4
+ }
+}
+
+export default locale
+```
diff --git a/date-fns/docs/index.js b/date-fns/docs/index.js
new file mode 100644
index 0000000..bd8ee26
--- /dev/null
+++ b/date-fns/docs/index.js
@@ -0,0 +1,147 @@
+const path = require('path')
+
+module.exports = {
+ groups: [
+ 'General',
+ 'Types',
+ 'Common Helpers',
+ 'Conversion Helpers',
+ 'Interval Helpers',
+ 'Timestamp Helpers',
+ 'Millisecond Helpers',
+ 'Second Helpers',
+ 'Minute Helpers',
+ 'Hour Helpers',
+ 'Day Helpers',
+ 'Weekday Helpers',
+ 'Week Helpers',
+ 'ISO Week Helpers',
+ 'Month Helpers',
+ 'Quarter Helpers',
+ 'Year Helpers',
+ 'ISO Week-Numbering Year Helpers',
+ 'Decade Helpers',
+ ],
+
+ staticDocs: [
+ {
+ type: 'markdown',
+ urlId: 'Getting-Started',
+ category: 'General',
+ title: 'Getting Started',
+ description: 'Introduction & installation instructions',
+ path: path.join(__dirname, 'gettingStarted.md'),
+ },
+ {
+ type: 'markdown',
+ urlId: 'Change-Log',
+ category: 'General',
+ title: 'Change Log',
+ description: 'Changes for each version of the library',
+ path: path.join(__dirname, '..', 'CHANGELOG.md'),
+ },
+ {
+ type: 'markdown',
+ urlId: 'Contributing',
+ category: 'General',
+ title: 'Contributing',
+ description: 'Contribution manual',
+ path: path.join(__dirname, '..', 'CONTRIBUTING.md'),
+ },
+ {
+ type: 'markdown',
+ urlId: 'Constants',
+ category: 'General',
+ title: 'Constants',
+ description: 'Useful constants',
+ path: path.join(__dirname, 'constants.md'),
+ },
+ {
+ type: 'markdown',
+ urlId: 'I18n',
+ category: 'General',
+ title: 'I18n',
+ description: 'Internationalization',
+ path: path.join(__dirname, 'i18n.md'),
+ },
+ {
+ type: 'markdown',
+ urlId: 'I18n-Contribution-Guide',
+ category: 'General',
+ title: 'I18n Contribution Guide',
+ description: 'Locales manual',
+ path: path.join(__dirname, 'i18nContributionGuide.md'),
+ },
+ {
+ type: 'markdown',
+ urlId: 'Time-Zones',
+ category: 'General',
+ title: 'Time Zones',
+ description: 'Time zone functions',
+ path: path.join(__dirname, 'timeZones.md'),
+ },
+ {
+ type: 'markdown',
+ urlId: 'ECMAScript-Modules',
+ category: 'General',
+ title: 'ECMAScript Modules',
+ description: 'Tree-shaking guide',
+ path: path.join(__dirname, 'esm.md'),
+ },
+ {
+ type: 'markdown',
+ urlId: 'webpack',
+ category: 'General',
+ title: 'webpack',
+ description: 'Using date-fns with webpack',
+ path: path.join(__dirname, 'webpack.md'),
+ },
+ {
+ type: 'markdown',
+ urlId: 'FP-Guide',
+ category: 'General',
+ title: 'FP Guide',
+ description: 'Curried functions',
+ path: path.join(__dirname, 'fp.md'),
+ },
+ {
+ type: 'markdown',
+ urlId: 'Unicode-Tokens',
+ category: 'General',
+ title: 'Unicode Tokens',
+ description: 'Usage of the Unicode tokens in parse and format',
+ path: path.join(__dirname, 'unicodeTokens.md'),
+ },
+ {
+ type: 'markdown',
+ urlId: 'Upgrade-Guide',
+ category: 'General',
+ title: 'Upgrade guide',
+ description: 'Changes from v1 to v2',
+ path: path.join(__dirname, 'upgradeGuide.md'),
+ },
+ {
+ type: 'markdown',
+ urlId: 'License',
+ category: 'General',
+ title: 'License',
+ description: 'MIT © Sasha Koss',
+ path: path.join(__dirname, '..', 'LICENSE.md'),
+ },
+ ],
+
+ sharedDocs: [
+ {
+ fullPath: path.join(__dirname, 'Interval.js'),
+ },
+ {
+ fullPath: path.join(__dirname, 'Locale.js'),
+ },
+ {
+ fullPath: path.join(__dirname, 'Duration.js'),
+ },
+ {
+ fullPath: path.join(__dirname, 'Day.js'),
+ },
+ ],
+}
diff --git a/date-fns/docs/logo.svg b/date-fns/docs/logo.svg
new file mode 100644
index 0000000..212e227
--- /dev/null
+++ b/date-fns/docs/logo.svg
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg width="32px" height="26px" viewBox="0 0 32 26" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <!-- Generator: Sketch 3.7.1 (28215) - http://www.bohemiancoding.com/sketch -->
+ <title>Slice 1</title>
+ <desc>Created with Sketch.</desc>
+ <defs></defs>
+ <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+ <g id="date-fns-mini-logo" fill="#770C56">
+ <g id="Page-1">
+ <g id="logo">
+ <g id="Page-1">
+ <g id="Solid-logo">
+ <g id="White-logo">
+ <path d="M0.0773377951,12.9617647 C0.0773377951,10.4657522 0.541359926,8.11201106 1.46941811,5.90047059 C2.39747629,3.68893013 3.73386003,1.72977324 5.47860941,0.0229411764 L8.98665179,0.0229411764 C5.34866372,3.58342956 3.52969697,7.89632761 3.52969697,12.9617647 C3.52969697,18.0272018 5.34866372,22.3400999 8.98665179,25.9005883 L5.47860941,25.9005883 C3.73386003,24.1937561 2.39747629,22.2345993 1.46941811,20.0230588 C0.541359926,17.8115184 0.0773377951,15.4577772 0.0773377951,12.9617647 L0.0773377951,12.9617647 L0.0773377951,12.9617647 L0.0773377951,12.9617647 Z M31.4378137,12.9617647 C31.4378137,15.4577772 30.9737916,17.8115184 30.0457334,20.0230588 C29.1176752,22.2345993 27.7812915,24.1937561 26.0365421,25.9005883 L22.5284998,25.9005883 C26.1664878,22.3400999 27.9854545,18.0272018 27.9854545,12.9617647 C27.9854545,7.89632761 26.1664878,3.58342956 22.5284998,0.0229411764 L26.0365421,0.0229411764 C27.7812915,1.72977324 29.1176752,3.68893013 30.0457334,5.90047059 C30.9737916,8.11201106 31.4378137,10.4657522 31.4378137,12.9617647 L31.4378137,12.9617647 L31.4378137,12.9617647 L31.4378137,12.9617647 Z" id="Parans"></path>
+ <g id="Hands" transform="translate(12.954081, 1.720588)">
+ <rect id="Hand" x="0" y="0" width="2.32013386" height="13.1911764"></rect>
+ <polygon id="Hand" points="2.3189551 13.1499342 0.815087916 11.6629302 10.2484366 2.3353599 11.7523038 3.82236388 2.3189551 13.1499342"></polygon>
+ </g>
+ </g>
+ </g>
+ </g>
+ </g>
+ </g>
+ </g>
+ </g>
+</svg> \ No newline at end of file
diff --git a/date-fns/docs/logotype.svg b/date-fns/docs/logotype.svg
new file mode 100644
index 0000000..8b2a3a4
--- /dev/null
+++ b/date-fns/docs/logotype.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 176 33"><g fill="#770C56" fill-rule="evenodd"><path d="M.1 16.5A22.7 22.7 0 017.1 0h4.4a22 22 0 00-7 16.5 22 22 0 007 16.4H7A22.5 22.5 0 01.1 16.5zm40.2 0a22.7 22.7 0 01-7 16.4H29a22 22 0 007-16.4 22 22 0 00-7-16.5h4.5a22.5 22.5 0 016.9 16.5z" fill-rule="nonzero"/><path d="M16.6 2.2h3v16.7h-3z"/><path d="M19.6 18.9l-2-2L29.7 5.2l2 2zM53.4 17.5c0 2 .5 3.8 1.4 5.2.8 1.4 2.2 2 4.2 2 1.5 0 2.7-.6 3.7-1.9 1-1.3 1.4-3.1 1.4-5.5 0-2.5-.5-4.3-1.5-5.5a4.7 4.7 0 00-3.7-1.7c-1.6 0-3 .6-4 1.8-1 1.3-1.5 3.1-1.5 5.6zm5-10.3c1.4 0 2.7.3 3.7 1 .5.3 1.2 1 2 1.9V.3h3v26.6h-2.9v-2.7a7 7 0 01-2.7 2.6c-1 .5-2.2.8-3.5.8-2.2 0-4-.9-5.6-2.7a10.6 10.6 0 01-2.4-7.2c0-2.9.7-5.3 2.2-7.4a7 7 0 016.1-3zm15.1 14.6c0 1 .4 1.7 1 2.2.8.5 1.6.8 2.5.8 1.2 0 2.3-.3 3.3-.8a4.5 4.5 0 002.7-4.3V17l-1.5.6-1.8.4-2 .2c-1.2.2-2 .4-2.7.8-1 .5-1.5 1.4-1.5 2.7zm8-6.6c.7-.1 1.2-.4 1.4-1 .2-.2.2-.7.2-1.2 0-1.1-.4-1.9-1.1-2.4-.8-.5-2-.8-3.4-.8-1.7 0-3 .5-3.6 1.4-.4.5-.7 1.3-.8 2.3h-3c0-2.4.8-4 2.3-5 1.5-1 3.2-1.4 5.1-1.4 2.3 0 4.2.4 5.6 1.3 1.4.9 2.1 2.2 2.1 4v11.2c0 .3 0 .6.2.8.1.2.4.3.9.3a5 5 0 001 0V27a9 9 0 01-1.1.3h-1c-1.2 0-2-.4-2.5-1.2-.3-.4-.5-1-.6-1.7a8.8 8.8 0 01-7 3.2c-1.7 0-3.2-.6-4.3-1.7a5.4 5.4 0 01-1.8-4c0-1.9.6-3.2 1.7-4.2a8 8 0 014.4-1.9l5.2-.6zm9.9-13h3.3v5.4h3v2.6h-3V23c0 .6.2 1 .7 1.3l1.2.2a15.2 15.2 0 001.2 0v2.5l-1.2.3h-1.3c-1.5 0-2.6-.4-3.1-1.1-.6-.8-.8-1.8-.8-3V10.1h-2.6V7.6h2.6V2.2zm16.8 5a8.8 8.8 0 016.9 3.4c.7 1 1 2.1 1.3 3.4.2 1 .3 2.3.3 4.3h-14.2c0 2 .5 3.5 1.4 4.7.9 1.2 2.2 1.8 4 1.8a5.2 5.2 0 005.3-4h3.2c0 .8-.3 1.6-.8 2.4a7.6 7.6 0 01-5.3 4c-.8.3-1.7.4-2.6.4-2.4 0-4.5-.9-6.2-2.6a10.2 10.2 0 01-2.5-7.4c0-3 .9-5.6 2.6-7.6 1.6-1.9 3.8-2.9 6.6-2.9zm5.2 8.5a8.4 8.4 0 00-1-3.4c-.9-1.5-2.3-2.3-4.4-2.3a5 5 0 00-3.8 1.6c-1 1-1.5 2.4-1.6 4.1h10.8zm5.5-.8h9.1v3.4h-9v-3.4zM132 4.6c0-1.3.3-2.3.7-3 .8-1 2.2-1.6 4.4-1.6a11.4 11.4 0 011.4 0v3a26.4 26.4 0 00-1.2 0c-1 0-1.5.2-1.7.7-.2.6-.3 1.9-.3 4h3.2v2.5h-3.3V27H132V10.2h-2.7V7.7h2.7v-3zm8.6 3h3v2.7c1-1.1 2-2 3-2.4 1-.5 2.1-.8 3.4-.8 2.7 0 4.6 1 5.6 3 .5 1 .8 2.5.8 4.4V27H153V14.7c0-1.2-.2-2.1-.6-2.8-.5-1.2-1.6-1.8-3.1-1.8a4.9 4.9 0 00-4.2 1.8c-.6.6-1 1.3-1.1 2-.2.6-.3 1.6-.3 2.9v10.1h-3.2V7.6zm21.6 13.2c0 1.1.4 2 .8 2.5.8 1 2.3 1.6 4.3 1.6 1.2 0 2.2-.2 3.2-.8.9-.5 1.3-1.3 1.3-2.4a2 2 0 00-1-1.9c-.5-.3-1.5-.6-2.9-1l-2.5-.6c-1.7-.4-3-.8-3.7-1.3a4.1 4.1 0 01-2-3.7c0-1.8.6-3.3 1.9-4.4 1.3-1.2 3-1.7 5.3-1.7 3 0 5 .8 6.3 2.5.8 1.1 1.2 2.3 1.2 3.5h-3c-.1-.7-.4-1.4-.9-2-.7-.8-2-1.3-3.8-1.3-1.3 0-2.2.3-2.8.8-.7.4-1 1-1 1.8 0 .9.4 1.5 1.3 2 .4.3 1.2.6 2.1.8l2.1.6c2.4.5 4 1 4.7 1.6 1.3.8 2 2.1 2 4a6 6 0 01-2 4.4c-1.3 1.2-3.3 1.9-6 1.9-2.9 0-5-.7-6.1-2a7.4 7.4 0 01-2-4.9h3.2z"/></g></svg> \ No newline at end of file
diff --git a/date-fns/docs/timeZones.md b/date-fns/docs/timeZones.md
new file mode 100644
index 0000000..54eb90b
--- /dev/null
+++ b/date-fns/docs/timeZones.md
@@ -0,0 +1,63 @@
+# Time Zones
+
+## Table of Contents
+
+- [Overview](#overview)
+
+- [`date-fns-tz`](#date-fns-tz)
+
+## Overview
+
+Working with UTC or ISO date strings is easy, and so is working with JS dates when all times
+are displayed in a user's local time in the browser. The difficulty comes when working with another
+time zone's local time, other than the current system's, like showing the local time of an event in LA
+at 8pm PST on a Node server in Europe or a user's machine set to EST.
+
+In this case there are two relevant pieces of information:
+
+- a fixed moment in time in the form of a timestamp, UTC or ISO date string, and
+- the time zone descriptor, usually an offset or IANA time zone name (e.g. `America/Los_Angeles`).
+
+Libraries like Moment and Luxon, which provide their own date time classes, manage these timestamp and time
+zone values internally. Since `date-fns` always returns a plain JS Date, which implicitly has the current
+system's time zone, helper functions are needed for handling common time zone related use cases.
+
+## [`date-fns-tz`](https://www.npmjs.com/package/date-fns-tz)
+
+Dependency free IANA time zone support is implemented via the
+[Intl API](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl) to keep
+actual time zone data out of code bundles. Modern browsers all support the
+[necessary features](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat#Browser_compatibility),
+and for those that don't a [polyfill](https://github.com/yahoo/date-time-format-timezone) can be used.
+
+Functions are provided for converting to and from a Date instance which will have the internal UTC time
+adjusted so it prints to the correct time value in the associated time zone, regardless of the current
+system time zone. The `date-fns` `format` function is extended with support for the `z...zzzz` tokens to
+format long and short time zone names.
+
+Compatible with `date-fns` version 2
+
+License: MIT
+
+### Synopsis
+
+```js
+const { zonedTimeToUtc, utcToZonedTime, format } = require('date-fns-tz')
+
+// Set the date to "2018-09-01T16:01:36.386Z"
+const utcDate = zonedTimeToUtc('2018-09-01 18:01:36.386', 'Europe/Berlin')
+
+// Obtain a Date instance that will render the equivalent Berlin time for the UTC date
+const date = new Date('2018-09-01T16:01:36.386Z')
+const timeZone = 'Europe/Berlin'
+const zonedDate = utcToZonedTime(date, timeZone)
+// zonedDate could be used to initialize a date picker or display the formatted local date/time
+
+// Set the output to "1.9.2018 18:01:36.386 GMT+02:00 (CEST)"
+const pattern = 'd.M.yyyy HH:mm:ss.SSS \'GMT\' XXX (z)'
+const output = format(zonedDate, pattern, { timeZone: 'Europe/Berlin' })
+```
+
+### Links
+
+- [API / Usage Scenarios](https://github.com/marnusw/date-fns-tz#time-zone-helpers)
diff --git a/date-fns/docs/unicodeTokens.md b/date-fns/docs/unicodeTokens.md
new file mode 100644
index 0000000..5daf282
--- /dev/null
+++ b/date-fns/docs/unicodeTokens.md
@@ -0,0 +1,54 @@
+# Unicode Tokens
+
+Starting with v2, `format` and `parse` use [Unicode tokens].
+
+The tokens are different from Moment.js and other libraries that opted to use
+custom formatting rules. While usage of a standard ensures compatibility and
+the future of the library, it causes confusion that this document intends
+to resolve.
+
+## Popular mistakes
+
+There are 4 tokens that cause most of the confusion:
+
+- `D` and `DD` that represent the day of a year (1, 2, ..., 365, 366)
+ are often confused with `d` and `dd` that represent the day of a month
+ (1, 2, ..., 31).
+
+- `YY` and `YYYY` that represent the local week-numbering year (44, 01, 00, 17)
+ are often confused with `yy` and `yyyy` that represent the calendar year.
+
+```js
+// ❌ Wrong!
+format(new Date(), 'YYYY-MM-DD')
+//=> 2018-10-283
+
+// ✅ Correct
+format(new Date(), 'yyyy-MM-dd')
+//=> 2018-10-10
+
+// ❌ Wrong!
+parse('11.02.87', 'D.MM.YY', new Date()).toString()
+//=> 'Sat Jan 11 1986 00:00:00 GMT+0200 (EET)'
+
+// ✅ Correct
+parse('11.02.87', 'd.MM.yy', new Date()).toString()
+//=> 'Wed Feb 11 1987 00:00:00 GMT+0200 (EET)'
+```
+
+To help with the issue, `format` and `parse` functions won't accept
+these tokens without `useAdditionalDayOfYearTokens` option for `D` and `DD` and
+`useAdditionalWeekYearTokens` options for `YY` and `YYYY`:
+
+```js
+format(new Date(), 'D', { useAdditionalDayOfYearTokens: true })
+//=> '283'
+
+parse('365+1987', 'DD+YYYY', new Date(), {
+ useAdditionalDayOfYearTokens: true,
+ useAdditionalWeekYearTokens: true
+}).toString()
+//=> 'Wed Dec 31 1986 00:00:00 GMT+0200 (EET)'
+```
+
+[Unicode tokens]: https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table
diff --git a/date-fns/docs/upgradeGuide.md b/date-fns/docs/upgradeGuide.md
new file mode 100644
index 0000000..4f058b4
--- /dev/null
+++ b/date-fns/docs/upgradeGuide.md
@@ -0,0 +1,118 @@
+# v2 Upgrade Guide
+
+## Common changes
+
+This page covers a few of the most common problems people face when updating from v1 to v2. For a more detailed list of changes, look at the [change log for version 2.0.0](https://date-fns.org/docs/Change-Log#2.0.0-2019-08-20).
+
+### Camel case naming schema
+
+Function submodules now use camelCase naming schema:
+
+```javascript
+// Before v2.0.0
+import differenceInCalendarISOYears from 'date-fns/difference_in_calendar_iso_years'
+
+// v2.0.0 onward
+import differenceInCalendarISOYears from 'date-fns/differenceInCalendarISOYears'
+```
+
+### New formatting tokens
+
+Starting with v2 `format` and `parse` uses [Unicode tokens].
+
+See [Unicode Tokens doc](https://date-fns.org/docs/Unicode-Tokens) for more details.
+
+### String arguments
+
+Functions now don't accept strings as date arguments. Strings should
+be parsed using `parseISO` (ISO 8601) or `parse`.
+
+See [this post](https://blog.date-fns.org/post/we-cut-date-fns-v2-minimal-build-size-down-to-300-bytes-and-now-its-the-smallest-date-library-18f2nvh2z0yal) for more details.
+
+```javascript
+// Before v2.0.0
+addDays('2016-01-01', 1)
+
+// v2.0.0 onward
+addDays(parseISO('2016-01-01'), 1)
+```
+
+### Arguments conversion
+
+All functions now implicitly convert arguments by following rules:
+
+| | date | number | string | boolean |
+| --------- | ------------ | ------ | ----------- | ------- |
+| 0 | new Date(0) | 0 | '0' | false |
+| '0' | Invalid Date | 0 | '0' | false |
+| 1 | new Date(1) | 1 | '1' | true |
+| '1' | Invalid Date | 1 | '1' | true |
+| true | Invalid Date | NaN | 'true' | true |
+| false | Invalid Date | NaN | 'false' | false |
+| null | Invalid Date | NaN | 'null' | false |
+| undefined | Invalid Date | NaN | 'undefined' | false |
+| NaN | Invalid Date | NaN | 'NaN' | false |
+
+Notes:
+
+- as before, arguments expected to be `Date` are converted to `Date` using _date-fns'_ `toDate` function;
+- arguments expected to be numbers are converted to integer numbers using our custom `toInteger` implementation
+ (see [#765](https://github.com/date-fns/date-fns/pull/765));
+- arguments expected to be strings are converted to strings using JavaScript's `String` function;
+- arguments expected to be booleans are converted to boolean using JavaScript's `Boolean` function.
+
+`null` and `undefined` passed to optional arguments (i.e. properties of `options` argument)
+are ignored as if no argument was passed.
+
+If any argument is invalid (i.e. `NaN` for numbers and `Invalid Date` for dates),
+an invalid value will be returned:
+
+- `false` for functions that return booleans (expect `isValid`);
+- `Invalid Date` for functions that return dates;
+- `NaN` for functions that return numbers;
+- and `String('Invalid Date')` for functions that return strings.
+
+See tests and PRs [#460](https://github.com/date-fns/date-fns/pull/460) and
+[#765](https://github.com/date-fns/date-fns/pull/765) for exact behavior.
+
+### `null`
+
+`null` now is not a valid date. `isValid(null)` returns `false`;
+`toDate(null)` returns an invalid date. Since `toDate` is used internally
+by all the functions, operations over `null` will also return an invalid date.
+[See #537](https://github.com/date-fns/date-fns/issues/537) for the reasoning.
+
+### `RangeError`
+
+Functions now throw `RangeError` if optional values passed to `options`
+are not `undefined` or have expected values.
+This change is introduced for consistency with ECMAScript standard library which does the same.
+
+### `TypeError`
+
+All functions now check if the passed number of arguments is less
+than the number of required arguments and throw `TypeError` exception if so.
+
+### UMD/CDN
+
+The Bower & UMD/CDN package versions are no longer supported.
+
+### New locale format
+
+See [docs/Locale](https://date-fns.org/docs/Locale).
+
+Locales renamed:
+
+- `en` → `en-US`
+- `zh_cn` → `zh-CN`
+- `zh_tw` → `zh-TW`
+
+```javascript
+// Before v2.0.0
+import locale from 'date-fns/locale/zh_cn'
+
+// v2.0.0 onward
+import locale from 'date-fns/locale/zh-CN'
+```
+
+[unicode tokens]: https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table
diff --git a/date-fns/docs/webpack.md b/date-fns/docs/webpack.md
new file mode 100644
index 0000000..9eb1c10
--- /dev/null
+++ b/date-fns/docs/webpack.md
@@ -0,0 +1,48 @@
+# webpack
+
+## Removing unused languages from dynamic import
+
+If a locale is imported dynamically, then all locales from date-fns are loaded by webpack into a bundle (~160kb) or split across the chunks. This prolongs the build process and increases the amount of space taken. However, it is possible to use webpack to trim down languages using [ContextReplacementPlugin].
+
+Let's assume that we have a single point in which supported locales are present:
+
+`config.js`:
+
+```js
+// `see date-fns/src/locale` for available locales
+export const supportedLocales = ['en-US', 'de', 'pl', 'it']
+```
+
+We could also have a function that formats the date:
+
+```js
+const getLocale = (locale) => import(`date-fns/locale/${locale}/index.js`) // or require() if using CommonJS
+
+const formatDate = (date, formatStyle, locale) => {
+ return format(date, formatStyle, {
+ locale: getLocale(locale),
+ })
+}
+```
+
+In order to exclude unused languages we can use webpacks [ContextReplacementPlugin].
+
+`webpack.config.js`:
+
+```js
+import webpack from 'webpack'
+import { supportedLocales } from './config.js'
+
+export default const config = {
+ plugins: [
+ new webpack.ContextReplacementPlugin(
+ /date\-fns[\/\\]/,
+ new RegExp(`[/\\\\\](${supportedLocales.join('|')})[/\\\\\]index\.js$`)
+ )
+ ]
+}
+```
+
+This results in a language bundle of ~23kb .
+
+[contextreplacementplugin]: https://webpack.js.org/plugins/context-replacement-plugin/
diff --git a/date-fns/examples/.eslintrc.js b/date-fns/examples/.eslintrc.js
new file mode 100644
index 0000000..a40aaa8
--- /dev/null
+++ b/date-fns/examples/.eslintrc.js
@@ -0,0 +1,5 @@
+module.exports = {
+ rules: {
+ 'no-console': 'off'
+ }
+}
diff --git a/date-fns/examples/babel/.babelrc b/date-fns/examples/babel/.babelrc
new file mode 100644
index 0000000..3be44b0
--- /dev/null
+++ b/date-fns/examples/babel/.babelrc
@@ -0,0 +1,4 @@
+{
+ "presets": ["es2015"],
+ "plugins": ["date-fns"]
+}
diff --git a/date-fns/examples/babel/README.md b/date-fns/examples/babel/README.md
new file mode 100644
index 0000000..5a4f6e6
--- /dev/null
+++ b/date-fns/examples/babel/README.md
@@ -0,0 +1,23 @@
+# Usage With babel, webpack and babel-plugin-date-fns
+
+See [example.js](./example.js) for source code example.
+
+See [package.json scripts](./package.json) for CLI usage.
+
+## Build Example
+
+```sh
+yarn
+yarn run build
+```
+
+See ./dist for output.
+
+## Minimal Build Size
+
+You can see minimal build size (when you use just one function):
+
+```sh
+gzip-size dist/example.min.js | pretty-bytes
+#=> 6.67 kB
+```
diff --git a/date-fns/examples/babel/example.js b/date-fns/examples/babel/example.js
new file mode 100644
index 0000000..acc5e27
--- /dev/null
+++ b/date-fns/examples/babel/example.js
@@ -0,0 +1,4 @@
+import { format } from 'date-fns'
+
+const result = format(new Date(2017, 0, 25, 21, 28, 15), 'dd.MM.yyyy HH:mm:ss')
+console.log(result === '25.01.2017 21:28:15')
diff --git a/date-fns/examples/babel/package.json b/date-fns/examples/babel/package.json
new file mode 100644
index 0000000..d118276
--- /dev/null
+++ b/date-fns/examples/babel/package.json
@@ -0,0 +1,27 @@
+{
+ "name": "date-fns-example-babel",
+ "version": "0.1.0",
+ "description": "Example of date-fns usage with webpack 1.x, babel and babel-plugin-date-fns",
+ "main": "example.js",
+ "author": "Sasha Koss <koss@nocorp.me>",
+ "license": "MIT",
+ "dependencies": {
+ "babel-core": "^6.22.1",
+ "babel-loader": "6",
+ "babel-plugin-date-fns": "^0.2.1",
+ "babel-preset-babili": "^0.0.11",
+ "babel-preset-es2015": "^6.22.0",
+ "babili": "^0.0.11",
+ "gzip-size-cli": "^1.0.0",
+ "pretty-bytes-cli": "^2.0.0",
+ "webpack": "1"
+ },
+ "scripts": {
+ "build": "yarn run build-date-fns && yarn run build-webpack && yarn run build-babili",
+ "build-date-fns": "env PACKAGE_OUTPUT_PATH=\"$(pwd)/node_modules/date-fns\" ../../scripts/build/package.sh",
+ "build-webpack": "webpack",
+ "build-babili": "babili dist/example.js --out-file dist/example.min.js --minified --no-comments && yarn run stats-size",
+ "stats-size": "gzip-size dist/example.min.js | pretty-bytes",
+ "test": "test $(env TZ=UTC node ./dist/example.min.js) = true"
+ }
+}
diff --git a/date-fns/examples/babel/webpack.config.js b/date-fns/examples/babel/webpack.config.js
new file mode 100644
index 0000000..ec54003
--- /dev/null
+++ b/date-fns/examples/babel/webpack.config.js
@@ -0,0 +1,14 @@
+module.exports = {
+ entry: './example.js',
+ output: {
+ path: './dist',
+ filename: 'example.js'
+ },
+ module: {
+ loaders: [{
+ test: /\.js$/,
+ exclude: /node_modules/,
+ loader: 'babel-loader'
+ }]
+ }
+}
diff --git a/date-fns/examples/babel/yarn.lock b/date-fns/examples/babel/yarn.lock
new file mode 100644
index 0000000..0606330
--- /dev/null
+++ b/date-fns/examples/babel/yarn.lock
@@ -0,0 +1,2791 @@
+# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
+# yarn lockfile v1
+
+
+abbrev@1:
+ version "1.0.9"
+ resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.0.9.tgz#91b4792588a7738c25f35dd6f63752a2f8776135"
+ integrity sha1-kbR5JYinc4wl813W9jdSovh3YTU=
+
+acorn@^3.0.0:
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a"
+ integrity sha1-ReN/s56No/JbruP/U2niu18iAXo=
+
+align-text@^0.1.1, align-text@^0.1.3:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117"
+ integrity sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=
+ dependencies:
+ kind-of "^3.0.2"
+ longest "^1.0.1"
+ repeat-string "^1.5.2"
+
+amdefine@>=0.0.4:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5"
+ integrity sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=
+
+ansi-regex@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.0.0.tgz#c5061b6e0ef8a81775e50f5d66151bf6bf371107"
+ integrity sha1-xQYbbg74qBd15Q9dZhUb9r83EQc=
+
+ansi-styles@^2.2.1:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe"
+ integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=
+
+anymatch@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.0.tgz#a3e52fa39168c825ff57b0248126ce5a8ff95507"
+ integrity sha1-o+Uvo5FoyCX/V7AkgSbOWo/5VQc=
+ dependencies:
+ arrify "^1.0.0"
+ micromatch "^2.1.5"
+
+aproba@^1.0.3:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.0.4.tgz#2713680775e7614c8ba186c065d4e2e52d1072c0"
+ integrity sha1-JxNoB3XnYUyLoYbAZdTi5S0QcsA=
+
+are-we-there-yet@~1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.2.tgz#80e470e95a084794fe1899262c5667c6e88de1b3"
+ integrity sha1-gORw6VoIR5T+GJkmLFZnxuiN4bM=
+ dependencies:
+ delegates "^1.0.0"
+ readable-stream "^2.0.0 || ^1.1.13"
+
+arr-diff@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf"
+ integrity sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=
+ dependencies:
+ arr-flatten "^1.0.1"
+
+arr-flatten@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.0.1.tgz#e5ffe54d45e19f32f216e91eb99c8ce892bb604b"
+ integrity sha1-5f/lTUXhnzLyFukeuZyM6JK7YEs=
+
+array-find-index@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1"
+ integrity sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=
+
+array-unique@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53"
+ integrity sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=
+
+arrify@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d"
+ integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=
+
+asn1@~0.2.3:
+ version "0.2.3"
+ resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86"
+ integrity sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=
+
+assert-plus@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234"
+ integrity sha1-104bh+ev/A24qttwIfP+SBAasjQ=
+
+assert-plus@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525"
+ integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=
+
+assert@^1.1.1:
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/assert/-/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91"
+ integrity sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=
+ dependencies:
+ util "0.10.3"
+
+async-each@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d"
+ integrity sha1-GdOGodntxufByF04iu28xW0zYC0=
+
+async@^0.9.0:
+ version "0.9.2"
+ resolved "https://registry.yarnpkg.com/async/-/async-0.9.2.tgz#aea74d5e61c1f899613bf64bda66d4c78f2fd17d"
+ integrity sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=
+
+async@^1.3.0:
+ version "1.5.2"
+ resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a"
+ integrity sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=
+
+async@~0.2.6:
+ version "0.2.10"
+ resolved "https://registry.yarnpkg.com/async/-/async-0.2.10.tgz#b6bbe0b0674b9d719708ca38de8c237cb526c3d1"
+ integrity sha1-trvgsGdLnXGXCMo43owjfLUmw9E=
+
+asynckit@^0.4.0:
+ version "0.4.0"
+ resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
+ integrity sha1-x57Zf380y48robyXkLzDZkdLS3k=
+
+aws-sign2@~0.6.0:
+ version "0.6.0"
+ resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f"
+ integrity sha1-FDQt0428yU0OW4fXY81jYSwOeU8=
+
+aws4@^1.2.1:
+ version "1.5.0"
+ resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.5.0.tgz#0a29ffb79c31c9e712eeb087e8e7a64b4a56d755"
+ integrity sha1-Cin/t5wxyecS7rCH6OemS0pW11U=
+
+babel-cli@^6.10.1:
+ version "6.22.2"
+ resolved "https://registry.yarnpkg.com/babel-cli/-/babel-cli-6.22.2.tgz#3f814c8acf52759082b8fedd9627f938936ab559"
+ integrity sha1-P4FMis9SdZCCuP7dlif5OJNqtVk=
+ dependencies:
+ babel-core "^6.22.1"
+ babel-polyfill "^6.22.0"
+ babel-register "^6.22.0"
+ babel-runtime "^6.22.0"
+ commander "^2.8.1"
+ convert-source-map "^1.1.0"
+ fs-readdir-recursive "^1.0.0"
+ glob "^7.0.0"
+ lodash "^4.2.0"
+ output-file-sync "^1.1.0"
+ path-is-absolute "^1.0.0"
+ slash "^1.0.0"
+ source-map "^0.5.0"
+ v8flags "^2.0.10"
+ optionalDependencies:
+ chokidar "^1.6.1"
+
+babel-code-frame@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.22.0.tgz#027620bee567a88c32561574e7fd0801d33118e4"
+ integrity sha1-AnYgvuVnqIwyVhV05/0IAdMxGOQ=
+ dependencies:
+ chalk "^1.1.0"
+ esutils "^2.0.2"
+ js-tokens "^3.0.0"
+
+babel-core@^6.22.0, babel-core@^6.22.1:
+ version "6.22.1"
+ resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.22.1.tgz#9c5fd658ba1772d28d721f6d25d968fc7ae21648"
+ integrity sha1-nF/WWLoXctKNch9tJdlo/HriFkg=
+ dependencies:
+ babel-code-frame "^6.22.0"
+ babel-generator "^6.22.0"
+ babel-helpers "^6.22.0"
+ babel-messages "^6.22.0"
+ babel-register "^6.22.0"
+ babel-runtime "^6.22.0"
+ babel-template "^6.22.0"
+ babel-traverse "^6.22.1"
+ babel-types "^6.22.0"
+ babylon "^6.11.0"
+ convert-source-map "^1.1.0"
+ debug "^2.1.1"
+ json5 "^0.5.0"
+ lodash "^4.2.0"
+ minimatch "^3.0.2"
+ path-is-absolute "^1.0.0"
+ private "^0.1.6"
+ slash "^1.0.0"
+ source-map "^0.5.0"
+
+babel-generator@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.22.0.tgz#d642bf4961911a8adc7c692b0c9297f325cda805"
+ integrity sha1-1kK/SWGRGorcfGkrDJKX8yXNqAU=
+ dependencies:
+ babel-messages "^6.22.0"
+ babel-runtime "^6.22.0"
+ babel-types "^6.22.0"
+ detect-indent "^4.0.0"
+ jsesc "^1.3.0"
+ lodash "^4.2.0"
+ source-map "^0.5.0"
+
+babel-helper-call-delegate@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-helper-call-delegate/-/babel-helper-call-delegate-6.22.0.tgz#119921b56120f17e9dae3f74b4f5cc7bcc1b37ef"
+ integrity sha1-EZkhtWEg8X6drj90tPXMe8wbN+8=
+ dependencies:
+ babel-helper-hoist-variables "^6.22.0"
+ babel-runtime "^6.22.0"
+ babel-traverse "^6.22.0"
+ babel-types "^6.22.0"
+
+babel-helper-define-map@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-helper-define-map/-/babel-helper-define-map-6.22.0.tgz#9544e9502b2d6dfe7d00ff60e82bd5a7a89e95b7"
+ integrity sha1-lUTpUCstbf59AP9g6CvVp6ielbc=
+ dependencies:
+ babel-helper-function-name "^6.22.0"
+ babel-runtime "^6.22.0"
+ babel-types "^6.22.0"
+ lodash "^4.2.0"
+
+babel-helper-evaluate-path@^0.0.3:
+ version "0.0.3"
+ resolved "https://registry.yarnpkg.com/babel-helper-evaluate-path/-/babel-helper-evaluate-path-0.0.3.tgz#1d103ac9d4a59e5d431842212f151785f7ac547b"
+ integrity sha1-HRA6ydSlnl1DGEIhLxUXhfesVHs=
+
+babel-helper-flip-expressions@^0.0.2:
+ version "0.0.2"
+ resolved "https://registry.yarnpkg.com/babel-helper-flip-expressions/-/babel-helper-flip-expressions-0.0.2.tgz#7bab2cf61162bc92703e9b298ef512bcf77d6787"
+ integrity sha1-e6ss9hFivJJwPpspjvUSvPd9Z4c=
+
+babel-helper-function-name@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-6.22.0.tgz#51f1bdc4bb89b15f57a9b249f33d742816dcbefc"
+ integrity sha1-UfG9xLuJsV9XqbJJ8z10KBbcvvw=
+ dependencies:
+ babel-helper-get-function-arity "^6.22.0"
+ babel-runtime "^6.22.0"
+ babel-template "^6.22.0"
+ babel-traverse "^6.22.0"
+ babel-types "^6.22.0"
+
+babel-helper-get-function-arity@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.22.0.tgz#0beb464ad69dc7347410ac6ade9f03a50634f5ce"
+ integrity sha1-C+tGStadxzR0EKxq3p8DpQY09c4=
+ dependencies:
+ babel-runtime "^6.22.0"
+ babel-types "^6.22.0"
+
+babel-helper-hoist-variables@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.22.0.tgz#3eacbf731d80705845dd2e9718f600cfb9b4ba72"
+ integrity sha1-Pqy/cx2AcFhF3S6XGPYAz7m0unI=
+ dependencies:
+ babel-runtime "^6.22.0"
+ babel-types "^6.22.0"
+
+babel-helper-is-nodes-equiv@^0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/babel-helper-is-nodes-equiv/-/babel-helper-is-nodes-equiv-0.0.1.tgz#34e9b300b1479ddd98ec77ea0bbe9342dfe39684"
+ integrity sha1-NOmzALFHnd2Y7HfqC76TQt/jloQ=
+
+babel-helper-is-void-0@^0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/babel-helper-is-void-0/-/babel-helper-is-void-0-0.0.1.tgz#ed74553b883e68226ae45f989a99b02c190f105a"
+ integrity sha1-7XRVO4g+aCJq5F+YmpmwLBkPEFo=
+
+babel-helper-mark-eval-scopes@^0.0.2:
+ version "0.0.2"
+ resolved "https://registry.yarnpkg.com/babel-helper-mark-eval-scopes/-/babel-helper-mark-eval-scopes-0.0.2.tgz#909fd1f2384570cd3003283773852d9d63922a37"
+ integrity sha1-kJ/R8jhFcM0wAyg3c4UtnWOSKjc=
+
+babel-helper-optimise-call-expression@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.22.0.tgz#f8d5d4b40a6e2605a6a7f9d537b581bea3756d15"
+ integrity sha1-+NXUtApuJgWmp/nVN7WBvqN1bRU=
+ dependencies:
+ babel-runtime "^6.22.0"
+ babel-types "^6.22.0"
+
+babel-helper-regex@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-helper-regex/-/babel-helper-regex-6.22.0.tgz#79f532be1647b1f0ee3474b5f5c3da58001d247d"
+ integrity sha1-efUyvhZHsfDuNHS19cPaWAAdJH0=
+ dependencies:
+ babel-runtime "^6.22.0"
+ babel-types "^6.22.0"
+ lodash "^4.2.0"
+
+babel-helper-remove-or-void@^0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/babel-helper-remove-or-void/-/babel-helper-remove-or-void-0.0.1.tgz#f602790e465acf2dfbe84fb3dd210c43a2dd7262"
+ integrity sha1-9gJ5DkZazy376E+z3SEMQ6LdcmI=
+
+babel-helper-replace-supers@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-helper-replace-supers/-/babel-helper-replace-supers-6.22.0.tgz#1fcee2270657548908c34db16bcc345f9850cf42"
+ integrity sha1-H87iJwZXVIkIw02xa8w0X5hQz0I=
+ dependencies:
+ babel-helper-optimise-call-expression "^6.22.0"
+ babel-messages "^6.22.0"
+ babel-runtime "^6.22.0"
+ babel-template "^6.22.0"
+ babel-traverse "^6.22.0"
+ babel-types "^6.22.0"
+
+babel-helper-to-multiple-sequence-expressions@^0.0.3:
+ version "0.0.3"
+ resolved "https://registry.yarnpkg.com/babel-helper-to-multiple-sequence-expressions/-/babel-helper-to-multiple-sequence-expressions-0.0.3.tgz#c789a0faccd2669c51234be2cea7a3e5a0573c25"
+ integrity sha1-x4mg+szSZpxRI0vizqej5aBXPCU=
+
+babel-helpers@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.22.0.tgz#d275f55f2252b8101bff07bc0c556deda657392c"
+ integrity sha1-0nX1XyJSuBAb/we8DFVt7aZXOSw=
+ dependencies:
+ babel-runtime "^6.22.0"
+ babel-template "^6.22.0"
+
+babel-loader@6:
+ version "6.4.1"
+ resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-6.4.1.tgz#0b34112d5b0748a8dcdbf51acf6f9bd42d50b8ca"
+ integrity sha1-CzQRLVsHSKjc2/Uaz2+b1C1QuMo=
+ dependencies:
+ find-cache-dir "^0.1.1"
+ loader-utils "^0.2.16"
+ mkdirp "^0.5.1"
+ object-assign "^4.0.1"
+
+babel-messages@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.22.0.tgz#36066a214f1217e4ed4164867669ecb39e3ea575"
+ integrity sha1-NgZqIU8SF+TtQWSGdmnss54+pXU=
+ dependencies:
+ babel-runtime "^6.22.0"
+
+babel-plugin-check-es2015-constants@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz#35157b101426fd2ffd3da3f75c7d1e91835bbf8a"
+ integrity sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=
+ dependencies:
+ babel-runtime "^6.22.0"
+
+babel-plugin-date-fns@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-date-fns/-/babel-plugin-date-fns-0.2.1.tgz#17b6e4666a05411857ac04af4318ff5fb72895f2"
+ integrity sha512-XdcYohZbmetNsEHG32QV+uC17J3LKfE5O5/47N+Ee9zR1xdqXPRm/Am1VbGidva7dFpRzXmdk4TYofS9Qq+1Tw==
+ dependencies:
+ lodash.snakecase "^4.1.1"
+
+babel-plugin-minify-constant-folding@^0.0.4:
+ version "0.0.4"
+ resolved "https://registry.yarnpkg.com/babel-plugin-minify-constant-folding/-/babel-plugin-minify-constant-folding-0.0.4.tgz#b6e231026a6035e88ceadd206128d7db2b5c15e6"
+ integrity sha1-tuIxAmpgNeiM6t0gYSjX2ytcFeY=
+ dependencies:
+ babel-helper-evaluate-path "^0.0.3"
+ jsesc "^2.4.0"
+
+babel-plugin-minify-dead-code-elimination@^0.1.3:
+ version "0.1.3"
+ resolved "https://registry.yarnpkg.com/babel-plugin-minify-dead-code-elimination/-/babel-plugin-minify-dead-code-elimination-0.1.3.tgz#7882c014619934cb9aca69d85c968ed124ac97e3"
+ integrity sha1-eILAFGGZNMuaymnYXJaO0SSsl+M=
+ dependencies:
+ babel-helper-mark-eval-scopes "^0.0.2"
+ babel-helper-remove-or-void "^0.0.1"
+ lodash.some "^4.6.0"
+
+babel-plugin-minify-flip-comparisons@^0.0.2:
+ version "0.0.2"
+ resolved "https://registry.yarnpkg.com/babel-plugin-minify-flip-comparisons/-/babel-plugin-minify-flip-comparisons-0.0.2.tgz#7d0953aa5876ede6118966bda9edecc63bf346ab"
+ integrity sha1-fQlTqlh27eYRiWa9qe3sxjvzRqs=
+ dependencies:
+ babel-helper-is-void-0 "^0.0.1"
+
+babel-plugin-minify-guarded-expressions@^0.0.4:
+ version "0.0.4"
+ resolved "https://registry.yarnpkg.com/babel-plugin-minify-guarded-expressions/-/babel-plugin-minify-guarded-expressions-0.0.4.tgz#957104a760e6a7ffd967005a7a11621bb42fd11c"
+ integrity sha1-lXEEp2Dmp//ZZwBaehFiG7Qv0Rw=
+ dependencies:
+ babel-helper-flip-expressions "^0.0.2"
+
+babel-plugin-minify-infinity@^0.0.3:
+ version "0.0.3"
+ resolved "https://registry.yarnpkg.com/babel-plugin-minify-infinity/-/babel-plugin-minify-infinity-0.0.3.tgz#4cc99b61d12b434ce80ad675103335c589cba9a1"
+ integrity sha1-TMmbYdErQ0zoCtZ1EDM1xYnLqaE=
+
+babel-plugin-minify-mangle-names@^0.0.7:
+ version "0.0.7"
+ resolved "https://registry.yarnpkg.com/babel-plugin-minify-mangle-names/-/babel-plugin-minify-mangle-names-0.0.7.tgz#fcc5f9a4c4c9c0731e73a4a4e3d002fcb800ef41"
+ integrity sha1-/MX5pMTJwHMec6Sk49AC/LgA70E=
+ dependencies:
+ babel-helper-mark-eval-scopes "^0.0.2"
+
+babel-plugin-minify-numeric-literals@^0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-minify-numeric-literals/-/babel-plugin-minify-numeric-literals-0.0.1.tgz#9597e6c31154d7daf3744d0bd417c144b275bd53"
+ integrity sha1-lZfmwxFU19rzdE0L1BfBRLJ1vVM=
+
+babel-plugin-minify-replace@^0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-minify-replace/-/babel-plugin-minify-replace-0.0.1.tgz#5d5aea7cb9899245248d1ee9ce7a2fe556a8facc"
+ integrity sha1-XVrqfLmJkkUkjR7pznov5Vao+sw=
+
+babel-plugin-minify-simplify@^0.0.7:
+ version "0.0.7"
+ resolved "https://registry.yarnpkg.com/babel-plugin-minify-simplify/-/babel-plugin-minify-simplify-0.0.7.tgz#4198d589ea10b4bc5bf9310206619a743c0d0664"
+ integrity sha1-QZjVieoQtLxb+TECBmGadDwNBmQ=
+ dependencies:
+ babel-helper-flip-expressions "^0.0.2"
+ babel-helper-is-nodes-equiv "^0.0.1"
+ babel-helper-to-multiple-sequence-expressions "^0.0.3"
+
+babel-plugin-minify-type-constructors@^0.0.3:
+ version "0.0.3"
+ resolved "https://registry.yarnpkg.com/babel-plugin-minify-type-constructors/-/babel-plugin-minify-type-constructors-0.0.3.tgz#ab59c1ad835b6b6e8e932b875d4df4dc393d9d26"
+ integrity sha1-q1nBrYNba26OkyuHXU303Dk9nSY=
+ dependencies:
+ babel-helper-is-void-0 "^0.0.1"
+
+babel-plugin-transform-es2015-arrow-functions@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz#452692cb711d5f79dc7f85e440ce41b9f244d221"
+ integrity sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=
+ dependencies:
+ babel-runtime "^6.22.0"
+
+babel-plugin-transform-es2015-block-scoped-functions@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz#bbc51b49f964d70cb8d8e0b94e820246ce3a6141"
+ integrity sha1-u8UbSflk1wy42OC5ToICRs46YUE=
+ dependencies:
+ babel-runtime "^6.22.0"
+
+babel-plugin-transform-es2015-block-scoping@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.22.0.tgz#00d6e3a0bebdcfe7536b9d653b44a9141e63e47e"
+ integrity sha1-ANbjoL69z+dTa51lO0SpFB5j5H4=
+ dependencies:
+ babel-runtime "^6.22.0"
+ babel-template "^6.22.0"
+ babel-traverse "^6.22.0"
+ babel-types "^6.22.0"
+ lodash "^4.2.0"
+
+babel-plugin-transform-es2015-classes@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.22.0.tgz#54d44998fd823d9dca15292324161c331c1b6f14"
+ integrity sha1-VNRJmP2CPZ3KFSkjJBYcMxwbbxQ=
+ dependencies:
+ babel-helper-define-map "^6.22.0"
+ babel-helper-function-name "^6.22.0"
+ babel-helper-optimise-call-expression "^6.22.0"
+ babel-helper-replace-supers "^6.22.0"
+ babel-messages "^6.22.0"
+ babel-runtime "^6.22.0"
+ babel-template "^6.22.0"
+ babel-traverse "^6.22.0"
+ babel-types "^6.22.0"
+
+babel-plugin-transform-es2015-computed-properties@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.22.0.tgz#7c383e9629bba4820c11b0425bdd6290f7f057e7"
+ integrity sha1-fDg+lim7pIIMEbBCW91ikPfwV+c=
+ dependencies:
+ babel-runtime "^6.22.0"
+ babel-template "^6.22.0"
+
+babel-plugin-transform-es2015-destructuring@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.22.0.tgz#8e0af2f885a0b2cf999d47c4c1dd23ce88cfa4c6"
+ integrity sha1-jgry+IWgss+ZnUfEwd0jzojPpMY=
+ dependencies:
+ babel-runtime "^6.22.0"
+
+babel-plugin-transform-es2015-duplicate-keys@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.22.0.tgz#672397031c21610d72dd2bbb0ba9fb6277e1c36b"
+ integrity sha1-ZyOXAxwhYQ1y3Su7C6n7Ynfhw2s=
+ dependencies:
+ babel-runtime "^6.22.0"
+ babel-types "^6.22.0"
+
+babel-plugin-transform-es2015-for-of@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.22.0.tgz#180467ad63aeea592a1caeee4bf1c8b3e2616265"
+ integrity sha1-GARnrWOu6lkqHK7uS/HIs+JhYmU=
+ dependencies:
+ babel-runtime "^6.22.0"
+
+babel-plugin-transform-es2015-function-name@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.22.0.tgz#f5fcc8b09093f9a23c76ac3d9e392c3ec4b77104"
+ integrity sha1-9fzIsJCT+aI8dqw9njksPsS3cQQ=
+ dependencies:
+ babel-helper-function-name "^6.22.0"
+ babel-runtime "^6.22.0"
+ babel-types "^6.22.0"
+
+babel-plugin-transform-es2015-literals@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz#4f54a02d6cd66cf915280019a31d31925377ca2e"
+ integrity sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=
+ dependencies:
+ babel-runtime "^6.22.0"
+
+babel-plugin-transform-es2015-modules-amd@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.22.0.tgz#bf69cd34889a41c33d90dfb740e0091ccff52f21"
+ integrity sha1-v2nNNIiaQcM9kN+3QOAJHM/1LyE=
+ dependencies:
+ babel-plugin-transform-es2015-modules-commonjs "^6.22.0"
+ babel-runtime "^6.22.0"
+ babel-template "^6.22.0"
+
+babel-plugin-transform-es2015-modules-commonjs@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.22.0.tgz#6ca04e22b8e214fb50169730657e7a07dc941145"
+ integrity sha1-bKBOIrjiFPtQFpcwZX56B9yUEUU=
+ dependencies:
+ babel-plugin-transform-strict-mode "^6.22.0"
+ babel-runtime "^6.22.0"
+ babel-template "^6.22.0"
+ babel-types "^6.22.0"
+
+babel-plugin-transform-es2015-modules-systemjs@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.22.0.tgz#810cd0cd025a08383b84236b92c6e31f88e644ad"
+ integrity sha1-gQzQzQJaCDg7hCNrksbjH4jmRK0=
+ dependencies:
+ babel-helper-hoist-variables "^6.22.0"
+ babel-runtime "^6.22.0"
+ babel-template "^6.22.0"
+
+babel-plugin-transform-es2015-modules-umd@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.22.0.tgz#60d0ba3bd23258719c64391d9bf492d648dc0fae"
+ integrity sha1-YNC6O9IyWHGcZDkdm/SS1kjcD64=
+ dependencies:
+ babel-plugin-transform-es2015-modules-amd "^6.22.0"
+ babel-runtime "^6.22.0"
+ babel-template "^6.22.0"
+
+babel-plugin-transform-es2015-object-super@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.22.0.tgz#daa60e114a042ea769dd53fe528fc82311eb98fc"
+ integrity sha1-2qYOEUoELqdp3VP+Uo/IIxHrmPw=
+ dependencies:
+ babel-helper-replace-supers "^6.22.0"
+ babel-runtime "^6.22.0"
+
+babel-plugin-transform-es2015-parameters@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.22.0.tgz#57076069232019094f27da8c68bb7162fe208dbb"
+ integrity sha1-VwdgaSMgGQlPJ9qMaLtxYv4gjbs=
+ dependencies:
+ babel-helper-call-delegate "^6.22.0"
+ babel-helper-get-function-arity "^6.22.0"
+ babel-runtime "^6.22.0"
+ babel-template "^6.22.0"
+ babel-traverse "^6.22.0"
+ babel-types "^6.22.0"
+
+babel-plugin-transform-es2015-shorthand-properties@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.22.0.tgz#8ba776e0affaa60bff21e921403b8a652a2ff723"
+ integrity sha1-i6d24K/6pgv/IekhQDuKZSov9yM=
+ dependencies:
+ babel-runtime "^6.22.0"
+ babel-types "^6.22.0"
+
+babel-plugin-transform-es2015-spread@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz#d6d68a99f89aedc4536c81a542e8dd9f1746f8d1"
+ integrity sha1-1taKmfia7cRTbIGlQujdnxdG+NE=
+ dependencies:
+ babel-runtime "^6.22.0"
+
+babel-plugin-transform-es2015-sticky-regex@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.22.0.tgz#ab316829e866ee3f4b9eb96939757d19a5bc4593"
+ integrity sha1-qzFoKehm7j9LnrlpOXV9GaW8RZM=
+ dependencies:
+ babel-helper-regex "^6.22.0"
+ babel-runtime "^6.22.0"
+ babel-types "^6.22.0"
+
+babel-plugin-transform-es2015-template-literals@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz#a84b3450f7e9f8f1f6839d6d687da84bb1236d8d"
+ integrity sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=
+ dependencies:
+ babel-runtime "^6.22.0"
+
+babel-plugin-transform-es2015-typeof-symbol@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.22.0.tgz#87faf2336d3b6a97f68c4d906b0cd0edeae676e1"
+ integrity sha1-h/ryM207apf2jE2QawzQ7ermduE=
+ dependencies:
+ babel-runtime "^6.22.0"
+
+babel-plugin-transform-es2015-unicode-regex@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.22.0.tgz#8d9cc27e7ee1decfe65454fb986452a04a613d20"
+ integrity sha1-jZzCfn7h3s/mVFT7mGRSoEphPSA=
+ dependencies:
+ babel-helper-regex "^6.22.0"
+ babel-runtime "^6.22.0"
+ regexpu-core "^2.0.0"
+
+babel-plugin-transform-inline-consecutive-adds@^0.0.2:
+ version "0.0.2"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-inline-consecutive-adds/-/babel-plugin-transform-inline-consecutive-adds-0.0.2.tgz#a58fcecfc09c08fbf9373a5a3e70746c03d01fc1"
+ integrity sha1-pY/Oz8CcCPv5NzpaPnB0bAPQH8E=
+
+babel-plugin-transform-member-expression-literals@^6.8.1:
+ version "6.8.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-member-expression-literals/-/babel-plugin-transform-member-expression-literals-6.8.1.tgz#60b78cb2b814ac71dd6104ef51c496c62e877337"
+ integrity sha1-YLeMsrgUrHHdYQTvUcSWxi6Hczc=
+
+babel-plugin-transform-merge-sibling-variables@^6.8.2:
+ version "6.8.2"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-merge-sibling-variables/-/babel-plugin-transform-merge-sibling-variables-6.8.2.tgz#498acd07481ab340c1bad8b726c2fad1b8f644e5"
+ integrity sha1-SYrNB0gas0DButi3JsL60bj2ROU=
+
+babel-plugin-transform-minify-booleans@^6.8.0:
+ version "6.8.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-minify-booleans/-/babel-plugin-transform-minify-booleans-6.8.0.tgz#b1a48864a727847696b84eae36fa4d085a54b42b"
+ integrity sha1-saSIZKcnhHaWuE6uNvpNCFpUtCs=
+ dependencies:
+ babel-runtime "^6.0.0"
+
+babel-plugin-transform-property-literals@^6.8.1:
+ version "6.8.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-property-literals/-/babel-plugin-transform-property-literals-6.8.1.tgz#05ed01f6024820b18f1d0495c80fe287176bccd9"
+ integrity sha1-Be0B9gJIILGPHQSVyA/ihxdrzNk=
+
+babel-plugin-transform-regenerator@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.22.0.tgz#65740593a319c44522157538d690b84094617ea6"
+ integrity sha1-ZXQFk6MZxEUiFXU41pC4QJRhfqY=
+ dependencies:
+ regenerator-transform "0.9.8"
+
+babel-plugin-transform-regexp-constructors@^0.0.5:
+ version "0.0.5"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-regexp-constructors/-/babel-plugin-transform-regexp-constructors-0.0.5.tgz#74d95e0c567e6fc1d9c699a084894d40de8e581d"
+ integrity sha1-dNleDFZ+b8HZxpmghIlNQN6OWB0=
+
+babel-plugin-transform-remove-console@^6.8.0:
+ version "6.8.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-remove-console/-/babel-plugin-transform-remove-console-6.8.0.tgz#c4162f01ee169491776e64093f4dad8d61125a90"
+ integrity sha1-xBYvAe4WlJF3bmQJP02tjWESWpA=
+ dependencies:
+ babel-runtime "^6.0.0"
+
+babel-plugin-transform-remove-debugger@^6.8.0:
+ version "6.8.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-remove-debugger/-/babel-plugin-transform-remove-debugger-6.8.0.tgz#d3ece7d8400473f7a706177ba22fd3026ad7e020"
+ integrity sha1-0+zn2EAEc/enBhd7oi/TAmrX4CA=
+ dependencies:
+ babel-runtime "^6.0.0"
+
+babel-plugin-transform-remove-undefined@^0.0.5:
+ version "0.0.5"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-remove-undefined/-/babel-plugin-transform-remove-undefined-0.0.5.tgz#12ef11805e06e861dd2eb0c7cc041d2184b8f410"
+ integrity sha1-Eu8RgF4G6GHdLrDHzAQdIYS49BA=
+
+babel-plugin-transform-simplify-comparison-operators@^6.8.1:
+ version "6.8.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-simplify-comparison-operators/-/babel-plugin-transform-simplify-comparison-operators-6.8.1.tgz#a307088e0d1c728081777fba568f4107396ab25c"
+ integrity sha1-owcIjg0ccoCBd3+6Vo9BBzlqslw=
+
+babel-plugin-transform-strict-mode@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.22.0.tgz#e008df01340fdc87e959da65991b7e05970c8c7c"
+ integrity sha1-4AjfATQP3IfpWdplmRt+BZcMjHw=
+ dependencies:
+ babel-runtime "^6.22.0"
+ babel-types "^6.22.0"
+
+babel-plugin-transform-undefined-to-void@^6.8.0:
+ version "6.8.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-undefined-to-void/-/babel-plugin-transform-undefined-to-void-6.8.0.tgz#bc5b6b4908d3b1262170e67cb3963903ddce167e"
+ integrity sha1-vFtrSQjTsSYhcOZ8s5Y5A93OFn4=
+ dependencies:
+ babel-runtime "^6.0.0"
+
+babel-polyfill@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-polyfill/-/babel-polyfill-6.22.0.tgz#1ac99ebdcc6ba4db1e2618c387b2084a82154a3b"
+ integrity sha1-GsmevcxrpNseJhjDh7IISoIVSjs=
+ dependencies:
+ babel-runtime "^6.22.0"
+ core-js "^2.4.0"
+ regenerator-runtime "^0.10.0"
+
+babel-preset-babili@^0.0.11:
+ version "0.0.11"
+ resolved "https://registry.yarnpkg.com/babel-preset-babili/-/babel-preset-babili-0.0.11.tgz#9461fd902d6a3c8bc032b8f06c2f691674c12a1f"
+ integrity sha1-lGH9kC1qPIvAMrjwbC9pFnTBKh8=
+ dependencies:
+ babel-plugin-minify-constant-folding "^0.0.4"
+ babel-plugin-minify-dead-code-elimination "^0.1.3"
+ babel-plugin-minify-flip-comparisons "^0.0.2"
+ babel-plugin-minify-guarded-expressions "^0.0.4"
+ babel-plugin-minify-infinity "^0.0.3"
+ babel-plugin-minify-mangle-names "^0.0.7"
+ babel-plugin-minify-numeric-literals "^0.0.1"
+ babel-plugin-minify-replace "^0.0.1"
+ babel-plugin-minify-simplify "^0.0.7"
+ babel-plugin-minify-type-constructors "^0.0.3"
+ babel-plugin-transform-inline-consecutive-adds "^0.0.2"
+ babel-plugin-transform-member-expression-literals "^6.8.1"
+ babel-plugin-transform-merge-sibling-variables "^6.8.2"
+ babel-plugin-transform-minify-booleans "^6.8.0"
+ babel-plugin-transform-property-literals "^6.8.1"
+ babel-plugin-transform-regexp-constructors "^0.0.5"
+ babel-plugin-transform-remove-console "^6.8.0"
+ babel-plugin-transform-remove-debugger "^6.8.0"
+ babel-plugin-transform-remove-undefined "^0.0.5"
+ babel-plugin-transform-simplify-comparison-operators "^6.8.1"
+ babel-plugin-transform-undefined-to-void "^6.8.0"
+ lodash.isplainobject "^4.0.6"
+
+babel-preset-es2015@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-preset-es2015/-/babel-preset-es2015-6.22.0.tgz#af5a98ecb35eb8af764ad8a5a05eb36dc4386835"
+ integrity sha1-r1qY7LNeuK92StiloF6zbcQ4aDU=
+ dependencies:
+ babel-plugin-check-es2015-constants "^6.22.0"
+ babel-plugin-transform-es2015-arrow-functions "^6.22.0"
+ babel-plugin-transform-es2015-block-scoped-functions "^6.22.0"
+ babel-plugin-transform-es2015-block-scoping "^6.22.0"
+ babel-plugin-transform-es2015-classes "^6.22.0"
+ babel-plugin-transform-es2015-computed-properties "^6.22.0"
+ babel-plugin-transform-es2015-destructuring "^6.22.0"
+ babel-plugin-transform-es2015-duplicate-keys "^6.22.0"
+ babel-plugin-transform-es2015-for-of "^6.22.0"
+ babel-plugin-transform-es2015-function-name "^6.22.0"
+ babel-plugin-transform-es2015-literals "^6.22.0"
+ babel-plugin-transform-es2015-modules-amd "^6.22.0"
+ babel-plugin-transform-es2015-modules-commonjs "^6.22.0"
+ babel-plugin-transform-es2015-modules-systemjs "^6.22.0"
+ babel-plugin-transform-es2015-modules-umd "^6.22.0"
+ babel-plugin-transform-es2015-object-super "^6.22.0"
+ babel-plugin-transform-es2015-parameters "^6.22.0"
+ babel-plugin-transform-es2015-shorthand-properties "^6.22.0"
+ babel-plugin-transform-es2015-spread "^6.22.0"
+ babel-plugin-transform-es2015-sticky-regex "^6.22.0"
+ babel-plugin-transform-es2015-template-literals "^6.22.0"
+ babel-plugin-transform-es2015-typeof-symbol "^6.22.0"
+ babel-plugin-transform-es2015-unicode-regex "^6.22.0"
+ babel-plugin-transform-regenerator "^6.22.0"
+
+babel-register@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.22.0.tgz#a61dd83975f9ca4a9e7d6eff3059494cd5ea4c63"
+ integrity sha1-ph3YOXX5ykqefW7/MFlJTNXqTGM=
+ dependencies:
+ babel-core "^6.22.0"
+ babel-runtime "^6.22.0"
+ core-js "^2.4.0"
+ home-or-tmp "^2.0.0"
+ lodash "^4.2.0"
+ mkdirp "^0.5.1"
+ source-map-support "^0.4.2"
+
+babel-runtime@^6.0.0, babel-runtime@^6.18.0, babel-runtime@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.22.0.tgz#1cf8b4ac67c77a4ddb0db2ae1f74de52ac4ca611"
+ integrity sha1-HPi0rGfHek3bDbKuH3TeUqxMphE=
+ dependencies:
+ core-js "^2.4.0"
+ regenerator-runtime "^0.10.0"
+
+babel-template@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.22.0.tgz#403d110905a4626b317a2a1fcb8f3b73204b2edb"
+ integrity sha1-QD0RCQWkYmsxeiofy487cyBLLts=
+ dependencies:
+ babel-runtime "^6.22.0"
+ babel-traverse "^6.22.0"
+ babel-types "^6.22.0"
+ babylon "^6.11.0"
+ lodash "^4.2.0"
+
+babel-traverse@^6.22.0, babel-traverse@^6.22.1:
+ version "6.22.1"
+ resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.22.1.tgz#3b95cd6b7427d6f1f757704908f2fc9748a5f59f"
+ integrity sha1-O5XNa3Qn1vH3V3BJCPL8l0il9Z8=
+ dependencies:
+ babel-code-frame "^6.22.0"
+ babel-messages "^6.22.0"
+ babel-runtime "^6.22.0"
+ babel-types "^6.22.0"
+ babylon "^6.15.0"
+ debug "^2.2.0"
+ globals "^9.0.0"
+ invariant "^2.2.0"
+ lodash "^4.2.0"
+
+babel-types@^6.19.0, babel-types@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.22.0.tgz#2a447e8d0ea25d2512409e4175479fd78cc8b1db"
+ integrity sha1-KkR+jQ6iXSUSQJ5BdUef14zIsds=
+ dependencies:
+ babel-runtime "^6.22.0"
+ esutils "^2.0.2"
+ lodash "^4.2.0"
+ to-fast-properties "^1.0.1"
+
+babili@^0.0.11:
+ version "0.0.11"
+ resolved "https://registry.yarnpkg.com/babili/-/babili-0.0.11.tgz#887b3461c7e41aaf9f37383b5b01c82746201860"
+ integrity sha1-iHs0YcfkGq+fNzg7WwHIJ0YgGGA=
+ dependencies:
+ babel-cli "^6.10.1"
+ babel-preset-babili "^0.0.11"
+
+babylon@^6.11.0, babylon@^6.15.0:
+ version "6.15.0"
+ resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.15.0.tgz#ba65cfa1a80e1759b0e89fb562e27dccae70348e"
+ integrity sha1-umXPoagOF1mw6J+1YuJ9zK5wNI4=
+
+balanced-match@^0.4.1:
+ version "0.4.2"
+ resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838"
+ integrity sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=
+
+base64-js@^1.0.2:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.2.0.tgz#a39992d723584811982be5e290bb6a53d86700f1"
+ integrity sha1-o5mS1yNYSBGYK+XikLtqU9hnAPE=
+
+bcrypt-pbkdf@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.0.tgz#3ca76b85241c7170bf7d9703e7b9aa74630040d4"
+ integrity sha1-PKdrhSQccXC/fZcD57mqdGMAQNQ=
+ dependencies:
+ tweetnacl "^0.14.3"
+
+big.js@^3.1.3:
+ version "3.1.3"
+ resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.1.3.tgz#4cada2193652eb3ca9ec8e55c9015669c9806978"
+ integrity sha1-TK2iGTZS6zyp7I5VyQFWacmAaXg=
+
+binary-extensions@^1.0.0:
+ version "1.8.0"
+ resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.8.0.tgz#48ec8d16df4377eae5fa5884682480af4d95c774"
+ integrity sha1-SOyNFt9Dd+rl+liEaCSAr02Vx3Q=
+
+block-stream@*:
+ version "0.0.9"
+ resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a"
+ integrity sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=
+ dependencies:
+ inherits "~2.0.0"
+
+boom@2.x.x:
+ version "2.10.1"
+ resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f"
+ integrity sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=
+ dependencies:
+ hoek "2.x.x"
+
+brace-expansion@^1.0.0:
+ version "1.1.6"
+ resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.6.tgz#7197d7eaa9b87e648390ea61fc66c84427420df9"
+ integrity sha1-cZfX6qm4fmSDkOph/GbIRCdCDfk=
+ dependencies:
+ balanced-match "^0.4.1"
+ concat-map "0.0.1"
+
+braces@^1.8.2:
+ version "1.8.5"
+ resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7"
+ integrity sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=
+ dependencies:
+ expand-range "^1.8.1"
+ preserve "^0.2.0"
+ repeat-element "^1.1.2"
+
+browserify-aes@0.4.0:
+ version "0.4.0"
+ resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-0.4.0.tgz#067149b668df31c4b58533e02d01e806d8608e2c"
+ integrity sha1-BnFJtmjfMcS1hTPgLQHoBthgjiw=
+ dependencies:
+ inherits "^2.0.1"
+
+browserify-zlib@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.1.4.tgz#bb35f8a519f600e0fa6b8485241c979d0141fb2d"
+ integrity sha1-uzX4pRn2AOD6a4SFJByXnQFB+y0=
+ dependencies:
+ pako "~0.2.0"
+
+buffer-shims@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/buffer-shims/-/buffer-shims-1.0.0.tgz#9978ce317388c649ad8793028c3477ef044a8b51"
+ integrity sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=
+
+buffer@^4.9.0:
+ version "4.9.1"
+ resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298"
+ integrity sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=
+ dependencies:
+ base64-js "^1.0.2"
+ ieee754 "^1.1.4"
+ isarray "^1.0.0"
+
+builtin-modules@^1.0.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f"
+ integrity sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=
+
+builtin-status-codes@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8"
+ integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=
+
+camelcase-keys@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7"
+ integrity sha1-MIvur/3ygRkFHvodkyITyRuPkuc=
+ dependencies:
+ camelcase "^2.0.0"
+ map-obj "^1.0.0"
+
+camelcase@^1.0.2:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39"
+ integrity sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=
+
+camelcase@^2.0.0:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f"
+ integrity sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=
+
+caseless@~0.11.0:
+ version "0.11.0"
+ resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.11.0.tgz#715b96ea9841593cc33067923f5ec60ebda4f7d7"
+ integrity sha1-cVuW6phBWTzDMGeSP17GDr2k99c=
+
+center-align@^0.1.1:
+ version "0.1.3"
+ resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad"
+ integrity sha1-qg0yYptu6XIgBBHL1EYckHvCt60=
+ dependencies:
+ align-text "^0.1.3"
+ lazy-cache "^1.0.3"
+
+chalk@^1.1.0, chalk@^1.1.1:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98"
+ integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=
+ dependencies:
+ ansi-styles "^2.2.1"
+ escape-string-regexp "^1.0.2"
+ has-ansi "^2.0.0"
+ strip-ansi "^3.0.0"
+ supports-color "^2.0.0"
+
+chokidar@^1.0.0, chokidar@^1.6.1:
+ version "1.6.1"
+ resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.6.1.tgz#2f4447ab5e96e50fb3d789fd90d4c72e0e4c70c2"
+ integrity sha1-L0RHq16W5Q+z14n9kNTHLg5McMI=
+ dependencies:
+ anymatch "^1.3.0"
+ async-each "^1.0.0"
+ glob-parent "^2.0.0"
+ inherits "^2.0.1"
+ is-binary-path "^1.0.0"
+ is-glob "^2.0.0"
+ path-is-absolute "^1.0.0"
+ readdirp "^2.0.0"
+ optionalDependencies:
+ fsevents "^1.0.0"
+
+cliui@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1"
+ integrity sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=
+ dependencies:
+ center-align "^0.1.1"
+ right-align "^0.1.1"
+ wordwrap "0.0.2"
+
+clone@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.2.tgz#260b7a99ebb1edfe247538175f783243cb19d149"
+ integrity sha1-Jgt6meux7f4kdTgXX3gyQ8sZ0Uk=
+
+code-point-at@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77"
+ integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=
+
+combined-stream@^1.0.5, combined-stream@~1.0.5:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.5.tgz#938370a57b4a51dea2c77c15d5c5fdf895164009"
+ integrity sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=
+ dependencies:
+ delayed-stream "~1.0.0"
+
+commander@^2.8.1, commander@^2.9.0:
+ version "2.9.0"
+ resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4"
+ integrity sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=
+ dependencies:
+ graceful-readlink ">= 1.0.0"
+
+commondir@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b"
+ integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=
+
+concat-map@0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
+ integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
+
+console-browserify@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10"
+ integrity sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=
+ dependencies:
+ date-now "^0.1.4"
+
+console-control-strings@^1.0.0, console-control-strings@~1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e"
+ integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=
+
+constants-browserify@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75"
+ integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=
+
+convert-source-map@^1.1.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.3.0.tgz#e9f3e9c6e2728efc2676696a70eb382f73106a67"
+ integrity sha1-6fPpxuJyjvwmdmlqcOs4L3MQamc=
+
+core-js@^2.4.0:
+ version "2.4.1"
+ resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.4.1.tgz#4de911e667b0eae9124e34254b53aea6fc618d3e"
+ integrity sha1-TekR5mew6ukSTjQlS1OupvxhjT4=
+
+core-util-is@~1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
+ integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=
+
+cryptiles@2.x.x:
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8"
+ integrity sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=
+ dependencies:
+ boom "2.x.x"
+
+crypto-browserify@3.3.0:
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.3.0.tgz#b9fc75bb4a0ed61dcf1cd5dae96eb30c9c3e506c"
+ integrity sha1-ufx1u0oO1h3PHNXa6W6zDJw+UGw=
+ dependencies:
+ browserify-aes "0.4.0"
+ pbkdf2-compat "2.0.1"
+ ripemd160 "0.2.0"
+ sha.js "2.2.6"
+
+currently-unhandled@^0.4.1:
+ version "0.4.1"
+ resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea"
+ integrity sha1-mI3zP+qxke95mmE2nddsF635V+o=
+ dependencies:
+ array-find-index "^1.0.1"
+
+dashdash@^1.12.0:
+ version "1.14.1"
+ resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0"
+ integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=
+ dependencies:
+ assert-plus "^1.0.0"
+
+date-now@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b"
+ integrity sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=
+
+debug@^2.1.1, debug@^2.2.0, debug@~2.2.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da"
+ integrity sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=
+ dependencies:
+ ms "0.7.1"
+
+decamelize@^1.0.0, decamelize@^1.1.2:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
+ integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=
+
+deep-extend@~0.4.0:
+ version "0.4.1"
+ resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.1.tgz#efe4113d08085f4e6f9687759810f807469e2253"
+ integrity sha1-7+QRPQgIX05vlod1mBD4B0aeIlM=
+
+delayed-stream@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
+ integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk=
+
+delegates@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a"
+ integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=
+
+detect-indent@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208"
+ integrity sha1-920GQ1LN9Docts5hnE7jqUdd4gg=
+ dependencies:
+ repeating "^2.0.0"
+
+domain-browser@^1.1.1:
+ version "1.1.7"
+ resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.1.7.tgz#867aa4b093faa05f1de08c06f4d7b21fdf8698bc"
+ integrity sha1-hnqksJP6oF8d4IwG9NeyH9+GmLw=
+
+duplexer@^0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1"
+ integrity sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=
+
+ecc-jsbn@~0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505"
+ integrity sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=
+ dependencies:
+ jsbn "~0.1.0"
+
+emojis-list@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389"
+ integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k=
+
+enhanced-resolve@~0.9.0:
+ version "0.9.1"
+ resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-0.9.1.tgz#4d6e689b3725f86090927ccc86cd9f1635b89e2e"
+ integrity sha1-TW5omzcl+GCQknzMhs2fFjW4ni4=
+ dependencies:
+ graceful-fs "^4.1.2"
+ memory-fs "^0.2.0"
+ tapable "^0.1.8"
+
+errno@^0.1.3:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.4.tgz#b896e23a9e5e8ba33871fc996abd3635fc9a1c7d"
+ integrity sha1-uJbiOp5ei6M4cfyZar02NfyaHH0=
+ dependencies:
+ prr "~0.0.0"
+
+error-ex@^1.2.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.0.tgz#e67b43f3e82c96ea3a584ffee0b9fc3325d802d9"
+ integrity sha1-5ntD8+gsluo6WE/+4Ln8MyXYAtk=
+ dependencies:
+ is-arrayish "^0.2.1"
+
+escape-string-regexp@^1.0.2:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
+ integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
+
+esutils@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b"
+ integrity sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=
+
+events@^1.0.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924"
+ integrity sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=
+
+expand-brackets@^0.1.4:
+ version "0.1.5"
+ resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b"
+ integrity sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=
+ dependencies:
+ is-posix-bracket "^0.1.0"
+
+expand-range@^1.8.1:
+ version "1.8.2"
+ resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337"
+ integrity sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=
+ dependencies:
+ fill-range "^2.1.0"
+
+extend@~3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.0.tgz#5a474353b9f3353ddd8176dfd37b91c83a46f1d4"
+ integrity sha1-WkdDU7nzNT3dgXbf03uRyDpG8dQ=
+
+extglob@^0.3.1:
+ version "0.3.2"
+ resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1"
+ integrity sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=
+ dependencies:
+ is-extglob "^1.0.0"
+
+extsprintf@1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.0.2.tgz#e1080e0658e300b06294990cc70e1502235fd550"
+ integrity sha1-4QgOBljjALBilJkMxw4VAiNf1VA=
+
+filename-regex@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.0.tgz#996e3e80479b98b9897f15a8a58b3d084e926775"
+ integrity sha1-mW4+gEebmLmJfxWopYs9CE6SZ3U=
+
+fill-range@^2.1.0:
+ version "2.2.3"
+ resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723"
+ integrity sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=
+ dependencies:
+ is-number "^2.1.0"
+ isobject "^2.0.0"
+ randomatic "^1.1.3"
+ repeat-element "^1.1.2"
+ repeat-string "^1.5.2"
+
+find-cache-dir@^0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-0.1.1.tgz#c8defae57c8a52a8a784f9e31c57c742e993a0b9"
+ integrity sha1-yN765XyKUqinhPnjHFfHQumToLk=
+ dependencies:
+ commondir "^1.0.1"
+ mkdirp "^0.5.1"
+ pkg-dir "^1.0.0"
+
+find-up@^1.0.0:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f"
+ integrity sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=
+ dependencies:
+ path-exists "^2.0.0"
+ pinkie-promise "^2.0.0"
+
+for-in@^0.1.5:
+ version "0.1.6"
+ resolved "https://registry.yarnpkg.com/for-in/-/for-in-0.1.6.tgz#c9f96e89bfad18a545af5ec3ed352a1d9e5b4dc8"
+ integrity sha1-yfluib+tGKVFr17D7TUqHZ5bTcg=
+
+for-own@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.4.tgz#0149b41a39088c7515f51ebe1c1386d45f935072"
+ integrity sha1-AUm0GjkIjHUV9R6+HBOG1F+TUHI=
+ dependencies:
+ for-in "^0.1.5"
+
+forever-agent@~0.6.1:
+ version "0.6.1"
+ resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91"
+ integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=
+
+form-data@~2.1.1:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.2.tgz#89c3534008b97eada4cbb157d58f6f5df025eae4"
+ integrity sha1-icNTQAi5fq2ky7FX1Y9vXfAl6uQ=
+ dependencies:
+ asynckit "^0.4.0"
+ combined-stream "^1.0.5"
+ mime-types "^2.1.12"
+
+fs-readdir-recursive@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-1.0.0.tgz#8cd1745c8b4f8a29c8caec392476921ba195f560"
+ integrity sha1-jNF0XItPiinIyuw5JHaSG6GV9WA=
+
+fs.realpath@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
+ integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8=
+
+fsevents@^1.0.0:
+ version "1.0.17"
+ resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.0.17.tgz#8537f3f12272678765b4fd6528c0f1f66f8f4558"
+ integrity sha1-hTfz8SJyZ4dltP1lKMDx9m+PRVg=
+ dependencies:
+ nan "^2.3.0"
+ node-pre-gyp "^0.6.29"
+
+fstream-ignore@~1.0.5:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/fstream-ignore/-/fstream-ignore-1.0.5.tgz#9c31dae34767018fe1d249b24dada67d092da105"
+ integrity sha1-nDHa40dnAY/h0kmyTa2mfQktoQU=
+ dependencies:
+ fstream "^1.0.0"
+ inherits "2"
+ minimatch "^3.0.0"
+
+fstream@^1.0.0, fstream@^1.0.2, fstream@~1.0.10:
+ version "1.0.10"
+ resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.10.tgz#604e8a92fe26ffd9f6fae30399d4984e1ab22822"
+ integrity sha1-YE6Kkv4m/9n2+uMDmdSYThqyKCI=
+ dependencies:
+ graceful-fs "^4.1.2"
+ inherits "~2.0.0"
+ mkdirp ">=0.5 0"
+ rimraf "2"
+
+gauge@~2.7.1:
+ version "2.7.2"
+ resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.2.tgz#15cecc31b02d05345a5d6b0e171cdb3ad2307774"
+ integrity sha1-Fc7MMbAtBTRaXWsOFxzbOtIwd3Q=
+ dependencies:
+ aproba "^1.0.3"
+ console-control-strings "^1.0.0"
+ has-unicode "^2.0.0"
+ object-assign "^4.1.0"
+ signal-exit "^3.0.0"
+ string-width "^1.0.1"
+ strip-ansi "^3.0.1"
+ supports-color "^0.2.0"
+ wide-align "^1.1.0"
+
+generate-function@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/generate-function/-/generate-function-2.0.0.tgz#6858fe7c0969b7d4e9093337647ac79f60dfbe74"
+ integrity sha1-aFj+fAlpt9TpCTM3ZHrHn2DfvnQ=
+
+generate-object-property@^1.1.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/generate-object-property/-/generate-object-property-1.2.0.tgz#9c0e1c40308ce804f4783618b937fa88f99d50d0"
+ integrity sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=
+ dependencies:
+ is-property "^1.0.0"
+
+get-stdin@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe"
+ integrity sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=
+
+get-stdin@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-5.0.1.tgz#122e161591e21ff4c52530305693f20e6393a398"
+ integrity sha1-Ei4WFZHiH/TFJTAwVpPyDmOTo5g=
+
+getpass@^0.1.1:
+ version "0.1.6"
+ resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.6.tgz#283ffd9fc1256840875311c1b60e8c40187110e6"
+ integrity sha1-KD/9n8ElaECHUxHBtg6MQBhxEOY=
+ dependencies:
+ assert-plus "^1.0.0"
+
+glob-base@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4"
+ integrity sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=
+ dependencies:
+ glob-parent "^2.0.0"
+ is-glob "^2.0.0"
+
+glob-parent@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28"
+ integrity sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=
+ dependencies:
+ is-glob "^2.0.0"
+
+glob@^7.0.0, glob@^7.0.5:
+ version "7.1.1"
+ resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8"
+ integrity sha1-gFIR3wT6rxxjo2ADBs31reULLsg=
+ dependencies:
+ fs.realpath "^1.0.0"
+ inflight "^1.0.4"
+ inherits "2"
+ minimatch "^3.0.2"
+ once "^1.3.0"
+ path-is-absolute "^1.0.0"
+
+globals@^9.0.0:
+ version "9.14.0"
+ resolved "https://registry.yarnpkg.com/globals/-/globals-9.14.0.tgz#8859936af0038741263053b39d0e76ca241e4034"
+ integrity sha1-iFmTavADh0EmMFOznQ52yiQeQDQ=
+
+graceful-fs@^4.1.2, graceful-fs@^4.1.4:
+ version "4.1.11"
+ resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658"
+ integrity sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=
+
+"graceful-readlink@>= 1.0.0":
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725"
+ integrity sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=
+
+gzip-size-cli@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/gzip-size-cli/-/gzip-size-cli-1.0.0.tgz#97ef47b1600a2ad8f9c31539661eab39ec36caed"
+ integrity sha1-l+9HsWAKKtj5wxU5Zh6rOew2yu0=
+ dependencies:
+ gzip-size "^3.0.0"
+ meow "^3.3.0"
+
+gzip-size@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-3.0.0.tgz#546188e9bdc337f673772f81660464b389dce520"
+ integrity sha1-VGGI6b3DN/Zzdy+BZgRks4nc5SA=
+ dependencies:
+ duplexer "^0.1.1"
+
+har-validator@~2.0.6:
+ version "2.0.6"
+ resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-2.0.6.tgz#cdcbc08188265ad119b6a5a7c8ab70eecfb5d27d"
+ integrity sha1-zcvAgYgmWtEZtqWnyKtw7s+10n0=
+ dependencies:
+ chalk "^1.1.1"
+ commander "^2.9.0"
+ is-my-json-valid "^2.12.4"
+ pinkie-promise "^2.0.0"
+
+has-ansi@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91"
+ integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=
+ dependencies:
+ ansi-regex "^2.0.0"
+
+has-flag@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa"
+ integrity sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=
+
+has-unicode@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9"
+ integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=
+
+hawk@~3.1.3:
+ version "3.1.3"
+ resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4"
+ integrity sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=
+ dependencies:
+ boom "2.x.x"
+ cryptiles "2.x.x"
+ hoek "2.x.x"
+ sntp "1.x.x"
+
+hoek@2.x.x:
+ version "2.16.3"
+ resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed"
+ integrity sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=
+
+home-or-tmp@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8"
+ integrity sha1-42w/LSyufXRqhX440Y1fMqeILbg=
+ dependencies:
+ os-homedir "^1.0.0"
+ os-tmpdir "^1.0.1"
+
+hosted-git-info@^2.1.4:
+ version "2.1.5"
+ resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.1.5.tgz#0ba81d90da2e25ab34a332e6ec77936e1598118b"
+ integrity sha1-C6gdkNouJas0ozLm7HeTbhWYEYs=
+
+http-signature@~1.1.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf"
+ integrity sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=
+ dependencies:
+ assert-plus "^0.2.0"
+ jsprim "^1.2.2"
+ sshpk "^1.7.0"
+
+https-browserify@0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-0.0.1.tgz#3f91365cabe60b77ed0ebba24b454e3e09d95a82"
+ integrity sha1-P5E2XKvmC3ftDruiS0VOPgnZWoI=
+
+ieee754@^1.1.4:
+ version "1.1.8"
+ resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.8.tgz#be33d40ac10ef1926701f6f08a2d86fbfd1ad3e4"
+ integrity sha1-vjPUCsEO8ZJnAfbwii2G+/0a0+Q=
+
+indent-string@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80"
+ integrity sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=
+ dependencies:
+ repeating "^2.0.0"
+
+indexof@0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d"
+ integrity sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=
+
+inflight@^1.0.4:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
+ integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=
+ dependencies:
+ once "^1.3.0"
+ wrappy "1"
+
+inherits@2, inherits@^2.0.1, inherits@~2.0.0, inherits@~2.0.1:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
+ integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=
+
+inherits@2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1"
+ integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=
+
+ini@~1.3.0:
+ version "1.3.4"
+ resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e"
+ integrity sha1-BTfLedr1m1mhpRff9wbIbsA5Fi4=
+
+interpret@^0.6.4:
+ version "0.6.6"
+ resolved "https://registry.yarnpkg.com/interpret/-/interpret-0.6.6.tgz#fecd7a18e7ce5ca6abfb953e1f86213a49f1625b"
+ integrity sha1-/s16GOfOXKar+5U+H4YhOknxYls=
+
+invariant@^2.2.0:
+ version "2.2.2"
+ resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.2.tgz#9e1f56ac0acdb6bf303306f338be3b204ae60360"
+ integrity sha1-nh9WrArNtr8wMwbzOL47IErmA2A=
+ dependencies:
+ loose-envify "^1.0.0"
+
+is-arrayish@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
+ integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=
+
+is-binary-path@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898"
+ integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=
+ dependencies:
+ binary-extensions "^1.0.0"
+
+is-buffer@^1.0.2:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.4.tgz#cfc86ccd5dc5a52fa80489111c6920c457e2d98b"
+ integrity sha1-z8hszV3FpS+oBIkRHGkgxFfi2Ys=
+
+is-builtin-module@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe"
+ integrity sha1-VAVy0096wxGfj3bDDLwbHgN6/74=
+ dependencies:
+ builtin-modules "^1.0.0"
+
+is-dotfile@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.2.tgz#2c132383f39199f8edc268ca01b9b007d205cc4d"
+ integrity sha1-LBMjg/ORmfjtwmjKAbmwB9IFzE0=
+
+is-equal-shallow@^0.1.3:
+ version "0.1.3"
+ resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534"
+ integrity sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=
+ dependencies:
+ is-primitive "^2.0.0"
+
+is-extendable@^0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89"
+ integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=
+
+is-extglob@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0"
+ integrity sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=
+
+is-finite@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa"
+ integrity sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=
+ dependencies:
+ number-is-nan "^1.0.0"
+
+is-fullwidth-code-point@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb"
+ integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs=
+ dependencies:
+ number-is-nan "^1.0.0"
+
+is-glob@^2.0.0, is-glob@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863"
+ integrity sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=
+ dependencies:
+ is-extglob "^1.0.0"
+
+is-my-json-valid@^2.12.4:
+ version "2.15.0"
+ resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.15.0.tgz#936edda3ca3c211fd98f3b2d3e08da43f7b2915b"
+ integrity sha1-k27do8o8IR/ZjzstPgjaQ/eykVs=
+ dependencies:
+ generate-function "^2.0.0"
+ generate-object-property "^1.1.0"
+ jsonpointer "^4.0.0"
+ xtend "^4.0.0"
+
+is-number@^2.0.2, is-number@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f"
+ integrity sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=
+ dependencies:
+ kind-of "^3.0.2"
+
+is-posix-bracket@^0.1.0:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4"
+ integrity sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=
+
+is-primitive@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575"
+ integrity sha1-IHurkWOEmcB7Kt8kCkGochADRXU=
+
+is-property@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84"
+ integrity sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=
+
+is-typedarray@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
+ integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=
+
+is-utf8@^0.2.0:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72"
+ integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=
+
+isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
+ integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=
+
+isobject@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89"
+ integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=
+ dependencies:
+ isarray "1.0.0"
+
+isstream@~0.1.2:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
+ integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=
+
+jodid25519@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/jodid25519/-/jodid25519-1.0.2.tgz#06d4912255093419477d425633606e0e90782967"
+ integrity sha1-BtSRIlUJNBlHfUJWM2BuDpB4KWc=
+ dependencies:
+ jsbn "~0.1.0"
+
+js-tokens@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.1.tgz#08e9f132484a2c45a30907e9dc4d5567b7f114d7"
+ integrity sha1-COnxMkhKLEWjCQfp3E1VZ7fxFNc=
+
+jsbn@~0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.0.tgz#650987da0dd74f4ebf5a11377a2aa2d273e97dfd"
+ integrity sha1-ZQmH2g3XT06/WhE3eiqi0nPpff0=
+
+jsesc@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b"
+ integrity sha1-RsP+yMGJKxKwgz25vHYiF226s0s=
+
+jsesc@^2.4.0:
+ version "2.4.0"
+ resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.4.0.tgz#8568d223ff69c0b5e081b4f8edf5a23d978c9867"
+ integrity sha1-hWjSI/9pwLXggbT47fWiPZeMmGc=
+
+jsesc@~0.5.0:
+ version "0.5.0"
+ resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d"
+ integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=
+
+json-schema@0.2.3:
+ version "0.2.3"
+ resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13"
+ integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=
+
+json-stringify-safe@~5.0.1:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"
+ integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=
+
+json5@^0.5.0:
+ version "0.5.1"
+ resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821"
+ integrity sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=
+
+jsonpointer@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.0.1.tgz#4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9"
+ integrity sha1-T9kss04OnbPInIYi7PUfm5eMbLk=
+
+jsprim@^1.2.2:
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.3.1.tgz#2a7256f70412a29ee3670aaca625994c4dcff252"
+ integrity sha1-KnJW9wQSop7jZwqspiWZTE3P8lI=
+ dependencies:
+ extsprintf "1.0.2"
+ json-schema "0.2.3"
+ verror "1.3.6"
+
+kind-of@^3.0.2:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.1.0.tgz#475d698a5e49ff5e53d14e3e732429dc8bf4cf47"
+ integrity sha1-R11pil5J/15T0U4+cyQp3Iv0z0c=
+ dependencies:
+ is-buffer "^1.0.2"
+
+lazy-cache@^1.0.3:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e"
+ integrity sha1-odePw6UEdMuAhF07O24dpJpEbo4=
+
+load-json-file@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0"
+ integrity sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=
+ dependencies:
+ graceful-fs "^4.1.2"
+ parse-json "^2.2.0"
+ pify "^2.0.0"
+ pinkie-promise "^2.0.0"
+ strip-bom "^2.0.0"
+
+loader-utils@^0.2.11:
+ version "0.2.16"
+ resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-0.2.16.tgz#f08632066ed8282835dff88dfb52704765adee6d"
+ integrity sha1-8IYyBm7YKCg13/iN+1JwR2Wt7m0=
+ dependencies:
+ big.js "^3.1.3"
+ emojis-list "^2.0.0"
+ json5 "^0.5.0"
+ object-assign "^4.0.1"
+
+loader-utils@^0.2.16:
+ version "0.2.17"
+ resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-0.2.17.tgz#f86e6374d43205a6e6c60e9196f17c0299bfb348"
+ integrity sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=
+ dependencies:
+ big.js "^3.1.3"
+ emojis-list "^2.0.0"
+ json5 "^0.5.0"
+ object-assign "^4.0.1"
+
+lodash.isplainobject@^4.0.6:
+ version "4.0.6"
+ resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb"
+ integrity sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=
+
+lodash.snakecase@^4.1.1:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz#39d714a35357147837aefd64b5dcbb16becd8f8d"
+ integrity sha1-OdcUo1NXFHg3rv1ktdy7Fr7Nj40=
+
+lodash.some@^4.6.0:
+ version "4.6.0"
+ resolved "https://registry.yarnpkg.com/lodash.some/-/lodash.some-4.6.0.tgz#1bb9f314ef6b8baded13b549169b2a945eb68e4d"
+ integrity sha1-G7nzFO9ri63tE7VJFpsqlF62jk0=
+
+lodash@^4.2.0:
+ version "4.17.4"
+ resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae"
+ integrity sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=
+
+longest@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097"
+ integrity sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=
+
+loose-envify@^1.0.0:
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.3.1.tgz#d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848"
+ integrity sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=
+ dependencies:
+ js-tokens "^3.0.0"
+
+loud-rejection@^1.0.0:
+ version "1.6.0"
+ resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f"
+ integrity sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=
+ dependencies:
+ currently-unhandled "^0.4.1"
+ signal-exit "^3.0.0"
+
+map-obj@^1.0.0, map-obj@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d"
+ integrity sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=
+
+memory-fs@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.2.0.tgz#f2bb25368bc121e391c2520de92969caee0a0290"
+ integrity sha1-8rslNovBIeORwlIN6Slpyu4KApA=
+
+memory-fs@~0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.3.0.tgz#7bcc6b629e3a43e871d7e29aca6ae8a7f15cbb20"
+ integrity sha1-e8xrYp46Q+hx1+Kaymrop/FcuyA=
+ dependencies:
+ errno "^0.1.3"
+ readable-stream "^2.0.1"
+
+meow@^3.3.0, meow@^3.6.0:
+ version "3.7.0"
+ resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb"
+ integrity sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=
+ dependencies:
+ camelcase-keys "^2.0.0"
+ decamelize "^1.1.2"
+ loud-rejection "^1.0.0"
+ map-obj "^1.0.1"
+ minimist "^1.1.3"
+ normalize-package-data "^2.3.4"
+ object-assign "^4.0.1"
+ read-pkg-up "^1.0.1"
+ redent "^1.0.0"
+ trim-newlines "^1.0.0"
+
+micromatch@^2.1.5:
+ version "2.3.11"
+ resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565"
+ integrity sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=
+ dependencies:
+ arr-diff "^2.0.0"
+ array-unique "^0.2.1"
+ braces "^1.8.2"
+ expand-brackets "^0.1.4"
+ extglob "^0.3.1"
+ filename-regex "^2.0.0"
+ is-extglob "^1.0.0"
+ is-glob "^2.0.1"
+ kind-of "^3.0.2"
+ normalize-path "^2.0.1"
+ object.omit "^2.0.0"
+ parse-glob "^3.0.4"
+ regex-cache "^0.4.2"
+
+mime-db@~1.25.0:
+ version "1.25.0"
+ resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.25.0.tgz#c18dbd7c73a5dbf6f44a024dc0d165a1e7b1c392"
+ integrity sha1-wY29fHOl2/b0SgJNwNFloeexw5I=
+
+mime-types@^2.1.12, mime-types@~2.1.7:
+ version "2.1.13"
+ resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.13.tgz#e07aaa9c6c6b9a7ca3012c69003ad25a39e92a88"
+ integrity sha1-4HqqnGxrmnyjASxpADrSWjnpKog=
+ dependencies:
+ mime-db "~1.25.0"
+
+minimatch@^3.0.0, minimatch@^3.0.2:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.3.tgz#2a4e4090b96b2db06a9d7df01055a62a77c9b774"
+ integrity sha1-Kk5AkLlrLbBqnX3wEFWmKnfJt3Q=
+ dependencies:
+ brace-expansion "^1.0.0"
+
+minimist@0.0.8, minimist@~0.0.1:
+ version "0.0.8"
+ resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d"
+ integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=
+
+minimist@^1.1.3, minimist@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
+ integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=
+
+"mkdirp@>=0.5 0", mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1:
+ version "0.5.1"
+ resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903"
+ integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=
+ dependencies:
+ minimist "0.0.8"
+
+ms@0.7.1:
+ version "0.7.1"
+ resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.1.tgz#9cd13c03adbff25b65effde7ce864ee952017098"
+ integrity sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=
+
+nan@^2.3.0:
+ version "2.5.0"
+ resolved "https://registry.yarnpkg.com/nan/-/nan-2.5.0.tgz#aa8f1e34531d807e9e27755b234b4a6ec0c152a8"
+ integrity sha1-qo8eNFMdgH6eJ3VbI0tKbsDBUqg=
+
+node-libs-browser@^0.7.0:
+ version "0.7.0"
+ resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-0.7.0.tgz#3e272c0819e308935e26674408d7af0e1491b83b"
+ integrity sha1-PicsCBnjCJNeJmdECNevDhSRuDs=
+ dependencies:
+ assert "^1.1.1"
+ browserify-zlib "^0.1.4"
+ buffer "^4.9.0"
+ console-browserify "^1.1.0"
+ constants-browserify "^1.0.0"
+ crypto-browserify "3.3.0"
+ domain-browser "^1.1.1"
+ events "^1.0.0"
+ https-browserify "0.0.1"
+ os-browserify "^0.2.0"
+ path-browserify "0.0.0"
+ process "^0.11.0"
+ punycode "^1.2.4"
+ querystring-es3 "^0.2.0"
+ readable-stream "^2.0.5"
+ stream-browserify "^2.0.1"
+ stream-http "^2.3.1"
+ string_decoder "^0.10.25"
+ timers-browserify "^2.0.2"
+ tty-browserify "0.0.0"
+ url "^0.11.0"
+ util "^0.10.3"
+ vm-browserify "0.0.4"
+
+node-pre-gyp@^0.6.29:
+ version "0.6.32"
+ resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.32.tgz#fc452b376e7319b3d255f5f34853ef6fd8fe1fd5"
+ integrity sha1-/EUrN25zGbPSVfXzSFPvb9j+H9U=
+ dependencies:
+ mkdirp "~0.5.1"
+ nopt "~3.0.6"
+ npmlog "^4.0.1"
+ rc "~1.1.6"
+ request "^2.79.0"
+ rimraf "~2.5.4"
+ semver "~5.3.0"
+ tar "~2.2.1"
+ tar-pack "~3.3.0"
+
+nopt@~3.0.6:
+ version "3.0.6"
+ resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9"
+ integrity sha1-xkZdvwirzU2zWTF/eaxopkayj/k=
+ dependencies:
+ abbrev "1"
+
+normalize-package-data@^2.3.2, normalize-package-data@^2.3.4:
+ version "2.3.5"
+ resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.3.5.tgz#8d924f142960e1777e7ffe170543631cc7cb02df"
+ integrity sha1-jZJPFClg4Xd+f/4XBUNjHMfLAt8=
+ dependencies:
+ hosted-git-info "^2.1.4"
+ is-builtin-module "^1.0.0"
+ semver "2 || 3 || 4 || 5"
+ validate-npm-package-license "^3.0.1"
+
+normalize-path@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.0.1.tgz#47886ac1662760d4261b7d979d241709d3ce3f7a"
+ integrity sha1-R4hqwWYnYNQmG32XnSQXCdPOP3o=
+
+npmlog@^4.0.1:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.0.2.tgz#d03950e0e78ce1527ba26d2a7592e9348ac3e75f"
+ integrity sha1-0DlQ4OeM4VJ7om0qdZLpNIrD518=
+ dependencies:
+ are-we-there-yet "~1.1.2"
+ console-control-strings "~1.1.0"
+ gauge "~2.7.1"
+ set-blocking "~2.0.0"
+
+number-is-nan@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d"
+ integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=
+
+oauth-sign@~0.8.1:
+ version "0.8.2"
+ resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43"
+ integrity sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=
+
+object-assign@^4.0.1, object-assign@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.0.tgz#7a3b3d0e98063d43f4c03f2e8ae6cd51a86883a0"
+ integrity sha1-ejs9DpgGPUP0wD8uiubNUahog6A=
+
+object.omit@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa"
+ integrity sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=
+ dependencies:
+ for-own "^0.1.4"
+ is-extendable "^0.1.1"
+
+once@^1.3.0, once@~1.3.3:
+ version "1.3.3"
+ resolved "https://registry.yarnpkg.com/once/-/once-1.3.3.tgz#b2e261557ce4c314ec8304f3fa82663e4297ca20"
+ integrity sha1-suJhVXzkwxTsgwTz+oJmPkKXyiA=
+ dependencies:
+ wrappy "1"
+
+optimist@~0.6.0:
+ version "0.6.1"
+ resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686"
+ integrity sha1-2j6nRob6IaGaERwybpDrFaAZZoY=
+ dependencies:
+ minimist "~0.0.1"
+ wordwrap "~0.0.2"
+
+os-browserify@^0.2.0:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.2.1.tgz#63fc4ccee5d2d7763d26bbf8601078e6c2e0044f"
+ integrity sha1-Y/xMzuXS13Y9Jrv4YBB45sLgBE8=
+
+os-homedir@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3"
+ integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M=
+
+os-tmpdir@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
+ integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=
+
+output-file-sync@^1.1.0:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/output-file-sync/-/output-file-sync-1.1.2.tgz#d0a33eefe61a205facb90092e826598d5245ce76"
+ integrity sha1-0KM+7+YaIF+suQCS6CZZjVJFznY=
+ dependencies:
+ graceful-fs "^4.1.4"
+ mkdirp "^0.5.1"
+ object-assign "^4.1.0"
+
+pako@~0.2.0:
+ version "0.2.9"
+ resolved "https://registry.yarnpkg.com/pako/-/pako-0.2.9.tgz#f3f7522f4ef782348da8161bad9ecfd51bf83a75"
+ integrity sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=
+
+parse-glob@^3.0.4:
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c"
+ integrity sha1-ssN2z7EfNVE7rdFz7wu246OIORw=
+ dependencies:
+ glob-base "^0.3.0"
+ is-dotfile "^1.0.0"
+ is-extglob "^1.0.0"
+ is-glob "^2.0.0"
+
+parse-json@^2.2.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9"
+ integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=
+ dependencies:
+ error-ex "^1.2.0"
+
+path-browserify@0.0.0:
+ version "0.0.0"
+ resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a"
+ integrity sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=
+
+path-exists@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b"
+ integrity sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=
+ dependencies:
+ pinkie-promise "^2.0.0"
+
+path-is-absolute@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
+ integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
+
+path-type@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441"
+ integrity sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=
+ dependencies:
+ graceful-fs "^4.1.2"
+ pify "^2.0.0"
+ pinkie-promise "^2.0.0"
+
+pbkdf2-compat@2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/pbkdf2-compat/-/pbkdf2-compat-2.0.1.tgz#b6e0c8fa99494d94e0511575802a59a5c142f288"
+ integrity sha1-tuDI+plJTZTgURV1gCpZpcFC8og=
+
+pify@^2.0.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
+ integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw=
+
+pinkie-promise@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa"
+ integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o=
+ dependencies:
+ pinkie "^2.0.0"
+
+pinkie@^2.0.0:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870"
+ integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA=
+
+pkg-dir@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-1.0.0.tgz#7a4b508a8d5bb2d629d447056ff4e9c9314cf3d4"
+ integrity sha1-ektQio1bstYp1EcFb/TpyTFM89Q=
+ dependencies:
+ find-up "^1.0.0"
+
+preserve@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b"
+ integrity sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=
+
+pretty-bytes-cli@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/pretty-bytes-cli/-/pretty-bytes-cli-2.0.0.tgz#e705662cffdc9c75291835333bc2f89ad3c033cf"
+ integrity sha1-5wVmLP/cnHUpGDUzO8L4mtPAM88=
+ dependencies:
+ get-stdin "^5.0.1"
+ meow "^3.6.0"
+ pretty-bytes "^4.0.0"
+
+pretty-bytes@^4.0.0:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-4.0.2.tgz#b2bf82e7350d65c6c33aa95aaa5a4f6327f61cd9"
+ integrity sha1-sr+C5zUNZcbDOqlaqlpPYyf2HNk=
+
+private@^0.1.6:
+ version "0.1.7"
+ resolved "https://registry.yarnpkg.com/private/-/private-0.1.7.tgz#68ce5e8a1ef0a23bb570cc28537b5332aba63ef1"
+ integrity sha1-aM5eih7woju1cMwoU3tTMqumPvE=
+
+process-nextick-args@~1.0.6:
+ version "1.0.7"
+ resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3"
+ integrity sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=
+
+process@^0.11.0:
+ version "0.11.9"
+ resolved "https://registry.yarnpkg.com/process/-/process-0.11.9.tgz#7bd5ad21aa6253e7da8682264f1e11d11c0318c1"
+ integrity sha1-e9WtIapiU+fahoImTx4R0RwDGME=
+
+prr@~0.0.0:
+ version "0.0.0"
+ resolved "https://registry.yarnpkg.com/prr/-/prr-0.0.0.tgz#1a84b85908325501411853d0081ee3fa86e2926a"
+ integrity sha1-GoS4WQgyVQFBGFPQCB7j+obikmo=
+
+punycode@1.3.2:
+ version "1.3.2"
+ resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d"
+ integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=
+
+punycode@^1.2.4, punycode@^1.4.1:
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e"
+ integrity sha1-wNWmOycYgArY4esPpSachN1BhF4=
+
+qs@~6.3.0:
+ version "6.3.0"
+ resolved "https://registry.yarnpkg.com/qs/-/qs-6.3.0.tgz#f403b264f23bc01228c74131b407f18d5ea5d442"
+ integrity sha1-9AOyZPI7wBIox0ExtAfxjV6l1EI=
+
+querystring-es3@^0.2.0:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73"
+ integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=
+
+querystring@0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620"
+ integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=
+
+randomatic@^1.1.3:
+ version "1.1.6"
+ resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.6.tgz#110dcabff397e9dcff7c0789ccc0a49adf1ec5bb"
+ integrity sha1-EQ3Kv/OX6dz/fAeJzMCkmt8exbs=
+ dependencies:
+ is-number "^2.0.2"
+ kind-of "^3.0.2"
+
+rc@~1.1.6:
+ version "1.1.6"
+ resolved "https://registry.yarnpkg.com/rc/-/rc-1.1.6.tgz#43651b76b6ae53b5c802f1151fa3fc3b059969c9"
+ integrity sha1-Q2UbdrauU7XIAvEVH6P8OwWZack=
+ dependencies:
+ deep-extend "~0.4.0"
+ ini "~1.3.0"
+ minimist "^1.2.0"
+ strip-json-comments "~1.0.4"
+
+read-pkg-up@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02"
+ integrity sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=
+ dependencies:
+ find-up "^1.0.0"
+ read-pkg "^1.0.0"
+
+read-pkg@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28"
+ integrity sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=
+ dependencies:
+ load-json-file "^1.0.0"
+ normalize-package-data "^2.3.2"
+ path-type "^1.0.0"
+
+"readable-stream@^2.0.0 || ^1.1.13", readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.1.0:
+ version "2.2.2"
+ resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.2.2.tgz#a9e6fec3c7dda85f8bb1b3ba7028604556fc825e"
+ integrity sha1-qeb+w8fdqF+LsbO6cChgRVb8gl4=
+ dependencies:
+ buffer-shims "^1.0.0"
+ core-util-is "~1.0.0"
+ inherits "~2.0.1"
+ isarray "~1.0.0"
+ process-nextick-args "~1.0.6"
+ string_decoder "~0.10.x"
+ util-deprecate "~1.0.1"
+
+readable-stream@~2.1.4:
+ version "2.1.5"
+ resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.1.5.tgz#66fa8b720e1438b364681f2ad1a63c618448c9d0"
+ integrity sha1-ZvqLcg4UOLNkaB8q0aY8YYRIydA=
+ dependencies:
+ buffer-shims "^1.0.0"
+ core-util-is "~1.0.0"
+ inherits "~2.0.1"
+ isarray "~1.0.0"
+ process-nextick-args "~1.0.6"
+ string_decoder "~0.10.x"
+ util-deprecate "~1.0.1"
+
+readdirp@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78"
+ integrity sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=
+ dependencies:
+ graceful-fs "^4.1.2"
+ minimatch "^3.0.2"
+ readable-stream "^2.0.2"
+ set-immediate-shim "^1.0.1"
+
+redent@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde"
+ integrity sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=
+ dependencies:
+ indent-string "^2.1.0"
+ strip-indent "^1.0.1"
+
+regenerate@^1.2.1:
+ version "1.3.2"
+ resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.3.2.tgz#d1941c67bad437e1be76433add5b385f95b19260"
+ integrity sha1-0ZQcZ7rUN+G+dkM63Vs4X5WxkmA=
+
+regenerator-runtime@^0.10.0:
+ version "0.10.1"
+ resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.1.tgz#257f41961ce44558b18f7814af48c17559f9faeb"
+ integrity sha1-JX9BlhzkRVixj3gUr0jBdVn5+us=
+
+regenerator-transform@0.9.8:
+ version "0.9.8"
+ resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.9.8.tgz#0f88bb2bc03932ddb7b6b7312e68078f01026d6c"
+ integrity sha1-D4i7K8A5Mt23trcxLmgHjwECbWw=
+ dependencies:
+ babel-runtime "^6.18.0"
+ babel-types "^6.19.0"
+ private "^0.1.6"
+
+regex-cache@^0.4.2:
+ version "0.4.3"
+ resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.3.tgz#9b1a6c35d4d0dfcef5711ae651e8e9d3d7114145"
+ integrity sha1-mxpsNdTQ3871cRrmUejp09cRQUU=
+ dependencies:
+ is-equal-shallow "^0.1.3"
+ is-primitive "^2.0.0"
+
+regexpu-core@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-2.0.0.tgz#49d038837b8dcf8bfa5b9a42139938e6ea2ae240"
+ integrity sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=
+ dependencies:
+ regenerate "^1.2.1"
+ regjsgen "^0.2.0"
+ regjsparser "^0.1.4"
+
+regjsgen@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7"
+ integrity sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=
+
+regjsparser@^0.1.4:
+ version "0.1.5"
+ resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c"
+ integrity sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=
+ dependencies:
+ jsesc "~0.5.0"
+
+repeat-element@^1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a"
+ integrity sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=
+
+repeat-string@^1.5.2:
+ version "1.6.1"
+ resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637"
+ integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc=
+
+repeating@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda"
+ integrity sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=
+ dependencies:
+ is-finite "^1.0.0"
+
+request@^2.79.0:
+ version "2.79.0"
+ resolved "https://registry.yarnpkg.com/request/-/request-2.79.0.tgz#4dfe5bf6be8b8cdc37fcf93e04b65577722710de"
+ integrity sha1-Tf5b9r6LjNw3/Pk+BLZVd3InEN4=
+ dependencies:
+ aws-sign2 "~0.6.0"
+ aws4 "^1.2.1"
+ caseless "~0.11.0"
+ combined-stream "~1.0.5"
+ extend "~3.0.0"
+ forever-agent "~0.6.1"
+ form-data "~2.1.1"
+ har-validator "~2.0.6"
+ hawk "~3.1.3"
+ http-signature "~1.1.0"
+ is-typedarray "~1.0.0"
+ isstream "~0.1.2"
+ json-stringify-safe "~5.0.1"
+ mime-types "~2.1.7"
+ oauth-sign "~0.8.1"
+ qs "~6.3.0"
+ stringstream "~0.0.4"
+ tough-cookie "~2.3.0"
+ tunnel-agent "~0.4.1"
+ uuid "^3.0.0"
+
+right-align@^0.1.1:
+ version "0.1.3"
+ resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef"
+ integrity sha1-YTObci/mo1FWiSENJOFMlhSGE+8=
+ dependencies:
+ align-text "^0.1.1"
+
+rimraf@2, rimraf@~2.5.1, rimraf@~2.5.4:
+ version "2.5.4"
+ resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.5.4.tgz#96800093cbf1a0c86bd95b4625467535c29dfa04"
+ integrity sha1-loAAk8vxoMhr2VtGJUZ1NcKd+gQ=
+ dependencies:
+ glob "^7.0.5"
+
+ripemd160@0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-0.2.0.tgz#2bf198bde167cacfa51c0a928e84b68bbe171fce"
+ integrity sha1-K/GYveFnys+lHAqSjoS2i74XH84=
+
+"semver@2 || 3 || 4 || 5", semver@~5.3.0:
+ version "5.3.0"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f"
+ integrity sha1-myzl094C0XxgEq0yaqa00M9U+U8=
+
+set-blocking@~2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
+ integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc=
+
+set-immediate-shim@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61"
+ integrity sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=
+
+setimmediate@^1.0.4:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285"
+ integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=
+
+sha.js@2.2.6:
+ version "2.2.6"
+ resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.2.6.tgz#17ddeddc5f722fb66501658895461977867315ba"
+ integrity sha1-F93t3F9yL7ZlAWWIlUYZd4ZzFbo=
+
+signal-exit@^3.0.0:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d"
+ integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=
+
+slash@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55"
+ integrity sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=
+
+sntp@1.x.x:
+ version "1.0.9"
+ resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198"
+ integrity sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=
+ dependencies:
+ hoek "2.x.x"
+
+source-list-map@~0.1.7:
+ version "0.1.7"
+ resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-0.1.7.tgz#d4b5ce2a46535c72c7e8527c71a77d250618172e"
+ integrity sha1-1LXOKkZTXHLH6FJ8cad9JQYYFy4=
+
+source-map-support@^0.4.2:
+ version "0.4.11"
+ resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.11.tgz#647f939978b38535909530885303daf23279f322"
+ integrity sha1-ZH+TmXizhTWQlTCIUwPa8jJ58yI=
+ dependencies:
+ source-map "^0.5.3"
+
+source-map@^0.5.0, source-map@^0.5.3, source-map@~0.5.1:
+ version "0.5.6"
+ resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412"
+ integrity sha1-dc449SvwczxafwwRjYEzSiu19BI=
+
+source-map@~0.4.1:
+ version "0.4.4"
+ resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b"
+ integrity sha1-66T12pwNyZneaAMti092FzZSA2s=
+ dependencies:
+ amdefine ">=0.0.4"
+
+spdx-correct@~1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-1.0.2.tgz#4b3073d933ff51f3912f03ac5519498a4150db40"
+ integrity sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=
+ dependencies:
+ spdx-license-ids "^1.0.2"
+
+spdx-expression-parse@~1.0.0:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz#9bdf2f20e1f40ed447fbe273266191fced51626c"
+ integrity sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=
+
+spdx-license-ids@^1.0.2:
+ version "1.2.2"
+ resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz#c9df7a3424594ade6bd11900d596696dc06bac57"
+ integrity sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=
+
+sshpk@^1.7.0:
+ version "1.10.1"
+ resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.10.1.tgz#30e1a5d329244974a1af61511339d595af6638b0"
+ integrity sha1-MOGl0ykkSXShr2FREznVla9mOLA=
+ dependencies:
+ asn1 "~0.2.3"
+ assert-plus "^1.0.0"
+ dashdash "^1.12.0"
+ getpass "^0.1.1"
+ optionalDependencies:
+ bcrypt-pbkdf "^1.0.0"
+ ecc-jsbn "~0.1.1"
+ jodid25519 "^1.0.0"
+ jsbn "~0.1.0"
+ tweetnacl "~0.14.0"
+
+stream-browserify@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.1.tgz#66266ee5f9bdb9940a4e4514cafb43bb71e5c9db"
+ integrity sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=
+ dependencies:
+ inherits "~2.0.1"
+ readable-stream "^2.0.2"
+
+stream-http@^2.3.1:
+ version "2.6.0"
+ resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.6.0.tgz#adf3309ced17624ebfb7ef13e6ac4cfe405a8b12"
+ integrity sha1-rfMwnO0XYk6/t+8T5qxM/kBaixI=
+ dependencies:
+ builtin-status-codes "^3.0.0"
+ inherits "^2.0.1"
+ readable-stream "^2.1.0"
+ to-arraybuffer "^1.0.0"
+ xtend "^4.0.0"
+
+string-width@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3"
+ integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=
+ dependencies:
+ code-point-at "^1.0.0"
+ is-fullwidth-code-point "^1.0.0"
+ strip-ansi "^3.0.0"
+
+string_decoder@^0.10.25, string_decoder@~0.10.x:
+ version "0.10.31"
+ resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94"
+ integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=
+
+stringstream@~0.0.4:
+ version "0.0.5"
+ resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878"
+ integrity sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=
+
+strip-ansi@^3.0.0, strip-ansi@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf"
+ integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=
+ dependencies:
+ ansi-regex "^2.0.0"
+
+strip-bom@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e"
+ integrity sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=
+ dependencies:
+ is-utf8 "^0.2.0"
+
+strip-indent@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2"
+ integrity sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=
+ dependencies:
+ get-stdin "^4.0.1"
+
+strip-json-comments@~1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-1.0.4.tgz#1e15fbcac97d3ee99bf2d73b4c656b082bbafb91"
+ integrity sha1-HhX7ysl9Pumb8tc7TGVrCCu6+5E=
+
+supports-color@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-0.2.0.tgz#d92de2694eb3f67323973d7ae3d8b55b4c22190a"
+ integrity sha1-2S3iaU6z9nMjlz1649i1W0wiGQo=
+
+supports-color@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7"
+ integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=
+
+supports-color@^3.1.0:
+ version "3.1.2"
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.1.2.tgz#72a262894d9d408b956ca05ff37b2ed8a6e2a2d5"
+ integrity sha1-cqJiiU2dQIuVbKBf83su2KbiotU=
+ dependencies:
+ has-flag "^1.0.0"
+
+tapable@^0.1.8, tapable@~0.1.8:
+ version "0.1.10"
+ resolved "https://registry.yarnpkg.com/tapable/-/tapable-0.1.10.tgz#29c35707c2b70e50d07482b5d202e8ed446dafd4"
+ integrity sha1-KcNXB8K3DlDQdIK10gLo7URtr9Q=
+
+tar-pack@~3.3.0:
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.3.0.tgz#30931816418f55afc4d21775afdd6720cee45dae"
+ integrity sha1-MJMYFkGPVa/E0hd1r91nIM7kXa4=
+ dependencies:
+ debug "~2.2.0"
+ fstream "~1.0.10"
+ fstream-ignore "~1.0.5"
+ once "~1.3.3"
+ readable-stream "~2.1.4"
+ rimraf "~2.5.1"
+ tar "~2.2.1"
+ uid-number "~0.0.6"
+
+tar@~2.2.1:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1"
+ integrity sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=
+ dependencies:
+ block-stream "*"
+ fstream "^1.0.2"
+ inherits "2"
+
+timers-browserify@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.2.tgz#ab4883cf597dcd50af211349a00fbca56ac86b86"
+ integrity sha1-q0iDz1l9zVCvIRNJoA+8pWrIa4Y=
+ dependencies:
+ setimmediate "^1.0.4"
+
+to-arraybuffer@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43"
+ integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=
+
+to-fast-properties@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.2.tgz#f3f5c0c3ba7299a7ef99427e44633257ade43320"
+ integrity sha1-8/XAw7pymafvmUJ+RGMyV63kMyA=
+
+tough-cookie@~2.3.0:
+ version "2.3.2"
+ resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.2.tgz#f081f76e4c85720e6c37a5faced737150d84072a"
+ integrity sha1-8IH3bkyFcg5sN6X6ztc3FQ2EByo=
+ dependencies:
+ punycode "^1.4.1"
+
+trim-newlines@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613"
+ integrity sha1-WIeWa7WCpFA6QetST301ARgVphM=
+
+tty-browserify@0.0.0:
+ version "0.0.0"
+ resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6"
+ integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=
+
+tunnel-agent@~0.4.1:
+ version "0.4.3"
+ resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.4.3.tgz#6373db76909fe570e08d73583365ed828a74eeeb"
+ integrity sha1-Y3PbdpCf5XDgjXNYM2Xtgop07us=
+
+tweetnacl@^0.14.3, tweetnacl@~0.14.0:
+ version "0.14.5"
+ resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64"
+ integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=
+
+uglify-js@~2.7.3:
+ version "2.7.5"
+ resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.7.5.tgz#4612c0c7baaee2ba7c487de4904ae122079f2ca8"
+ integrity sha1-RhLAx7qu4rp8SH3kkErhIgefLKg=
+ dependencies:
+ async "~0.2.6"
+ source-map "~0.5.1"
+ uglify-to-browserify "~1.0.0"
+ yargs "~3.10.0"
+
+uglify-to-browserify@~1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7"
+ integrity sha1-bgkk1r2mta/jSeOabWMoUKD4grc=
+
+uid-number@~0.0.6:
+ version "0.0.6"
+ resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81"
+ integrity sha1-DqEOgDXo61uOREnwbaHHMGY7qoE=
+
+url@^0.11.0:
+ version "0.11.0"
+ resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1"
+ integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=
+ dependencies:
+ punycode "1.3.2"
+ querystring "0.2.0"
+
+user-home@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/user-home/-/user-home-1.1.1.tgz#2b5be23a32b63a7c9deb8d0f28d485724a3df190"
+ integrity sha1-K1viOjK2Onyd640PKNSFcko98ZA=
+
+util-deprecate@~1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
+ integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=
+
+util@0.10.3, util@^0.10.3:
+ version "0.10.3"
+ resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9"
+ integrity sha1-evsa/lCAUkZInj23/g7TeTNqwPk=
+ dependencies:
+ inherits "2.0.1"
+
+uuid@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.0.1.tgz#6544bba2dfda8c1cf17e629a3a305e2bb1fee6c1"
+ integrity sha1-ZUS7ot/ajBzxfmKaOjBeK7H+5sE=
+
+v8flags@^2.0.10:
+ version "2.0.11"
+ resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-2.0.11.tgz#bca8f30f0d6d60612cc2c00641e6962d42ae6881"
+ integrity sha1-vKjzDw1tYGEswsAGQeaWLUKuaIE=
+ dependencies:
+ user-home "^1.1.1"
+
+validate-npm-package-license@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz#2804babe712ad3379459acfbe24746ab2c303fbc"
+ integrity sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=
+ dependencies:
+ spdx-correct "~1.0.0"
+ spdx-expression-parse "~1.0.0"
+
+verror@1.3.6:
+ version "1.3.6"
+ resolved "https://registry.yarnpkg.com/verror/-/verror-1.3.6.tgz#cff5df12946d297d2baaefaa2689e25be01c005c"
+ integrity sha1-z/XfEpRtKX0rqu+qJoniW+AcAFw=
+ dependencies:
+ extsprintf "1.0.2"
+
+vm-browserify@0.0.4:
+ version "0.0.4"
+ resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-0.0.4.tgz#5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73"
+ integrity sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=
+ dependencies:
+ indexof "0.0.1"
+
+watchpack@^0.2.1:
+ version "0.2.9"
+ resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-0.2.9.tgz#62eaa4ab5e5ba35fdfc018275626e3c0f5e3fb0b"
+ integrity sha1-Yuqkq15bo1/fwBgnVibjwPXj+ws=
+ dependencies:
+ async "^0.9.0"
+ chokidar "^1.0.0"
+ graceful-fs "^4.1.2"
+
+webpack-core@~0.6.9:
+ version "0.6.9"
+ resolved "https://registry.yarnpkg.com/webpack-core/-/webpack-core-0.6.9.tgz#fc571588c8558da77be9efb6debdc5a3b172bdc2"
+ integrity sha1-/FcViMhVjad76e+23r3Fo7FyvcI=
+ dependencies:
+ source-list-map "~0.1.7"
+ source-map "~0.4.1"
+
+webpack@1:
+ version "1.14.0"
+ resolved "https://registry.yarnpkg.com/webpack/-/webpack-1.14.0.tgz#54f1ffb92051a328a5b2057d6ae33c289462c823"
+ integrity sha1-VPH/uSBRoyilsgV9auM8KJRiyCM=
+ dependencies:
+ acorn "^3.0.0"
+ async "^1.3.0"
+ clone "^1.0.2"
+ enhanced-resolve "~0.9.0"
+ interpret "^0.6.4"
+ loader-utils "^0.2.11"
+ memory-fs "~0.3.0"
+ mkdirp "~0.5.0"
+ node-libs-browser "^0.7.0"
+ optimist "~0.6.0"
+ supports-color "^3.1.0"
+ tapable "~0.1.8"
+ uglify-js "~2.7.3"
+ watchpack "^0.2.1"
+ webpack-core "~0.6.9"
+
+wide-align@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.0.tgz#40edde802a71fea1f070da3e62dcda2e7add96ad"
+ integrity sha1-QO3egCpx/qHwcNo+YtzaLnrdlq0=
+ dependencies:
+ string-width "^1.0.1"
+
+window-size@0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d"
+ integrity sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=
+
+wordwrap@0.0.2:
+ version "0.0.2"
+ resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f"
+ integrity sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=
+
+wordwrap@~0.0.2:
+ version "0.0.3"
+ resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107"
+ integrity sha1-o9XabNXAvAAI03I0u68b7WMFkQc=
+
+wrappy@1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
+ integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
+
+xtend@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af"
+ integrity sha1-pcbVMr5lbiPbgg77lDofBJmNY68=
+
+yargs@~3.10.0:
+ version "3.10.0"
+ resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1"
+ integrity sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=
+ dependencies:
+ camelcase "^1.0.2"
+ cliui "^2.1.0"
+ decamelize "^1.0.0"
+ window-size "0.1.0"
diff --git a/date-fns/examples/browserify/README.md b/date-fns/examples/browserify/README.md
new file mode 100644
index 0000000..a5aed20
--- /dev/null
+++ b/date-fns/examples/browserify/README.md
@@ -0,0 +1,23 @@
+# Usage With Browserify
+
+See [example.js](./example.js), [fp.js](./fp.js) and [misc.js](./misc.js) for source code examples.
+
+See [package.json scripts](./package.json) for CLI usage.
+
+## Build Example
+
+```sh
+yarn
+yarn run build
+```
+
+See ./dist for output.
+
+## Minimal Build Size
+
+You can see minimal build size (when you use just one function):
+
+```sh
+gzip-size dist/example.min.js | pretty-bytes
+#=> 7.15 kB
+```
diff --git a/date-fns/examples/browserify/example.js b/date-fns/examples/browserify/example.js
new file mode 100644
index 0000000..e09f17c
--- /dev/null
+++ b/date-fns/examples/browserify/example.js
@@ -0,0 +1,4 @@
+var format = require('date-fns/format')
+
+var result = format(new Date(2017, 0, 25, 21, 28, 15), 'dd.MM.yyyy HH:mm:ss')
+console.log(result === '25.01.2017 21:28:15')
diff --git a/date-fns/examples/browserify/fp.js b/date-fns/examples/browserify/fp.js
new file mode 100644
index 0000000..7d25ec5
--- /dev/null
+++ b/date-fns/examples/browserify/fp.js
@@ -0,0 +1,19 @@
+var addYears = require('date-fns/fp/addYears')
+var dateFns = require('date-fns/fp')
+var formatWithOptions = dateFns.formatWithOptions
+var eo = require('date-fns/locale/eo')
+
+var addFiveYears = addYears(5)
+var dateToString = formatWithOptions({locale: eo}, 'd MMMM yyyy')
+
+var dates = [
+ new Date(2017, 0 /* Jan */, 1),
+ new Date(2017, 1 /* Feb */, 11),
+ new Date(2017, 6 /* Jul */, 2)
+]
+
+var formattedDates = dates
+ .map((date) => dateToString(addFiveYears(date)))
+ .join(', ')
+
+console.log(formattedDates === '1 januaro 2022, 11 februaro 2022, 2 julio 2022')
diff --git a/date-fns/examples/browserify/misc.js b/date-fns/examples/browserify/misc.js
new file mode 100644
index 0000000..409974b
--- /dev/null
+++ b/date-fns/examples/browserify/misc.js
@@ -0,0 +1,10 @@
+var dateFns = require('date-fns')
+var format = dateFns.format
+var eo = require('date-fns/locale/eo')
+
+var result = format(
+ new Date(2017, 0, 25, 21, 28, 15),
+ 'eeee, dd MMMM HH:mm:ss',
+ { locale: eo }
+)
+console.log(result === 'merkredo, 25 januaro 21:28:15')
diff --git a/date-fns/examples/browserify/package.json b/date-fns/examples/browserify/package.json
new file mode 100644
index 0000000..a2e3ee1
--- /dev/null
+++ b/date-fns/examples/browserify/package.json
@@ -0,0 +1,31 @@
+{
+ "name": "date-fns-example-browserify",
+ "version": "0.1.0",
+ "description": "Example of date-fns usage with Browserify",
+ "main": "example.js",
+ "author": "Sasha Koss <koss@nocorp.me>",
+ "license": "MIT",
+ "dependencies": {
+ "babili": "^0.0.9",
+ "browserify": "^13.3.0",
+ "gzip-size-cli": "^1.0.0",
+ "pretty-bytes-cli": "^2.0.0"
+ },
+ "scripts": {
+ "build": "yarn run build-date-fns && yarn run build-browserify && yarn run build-babili",
+ "build-date-fns": "env PACKAGE_OUTPUT_PATH=\"$(pwd)/node_modules/date-fns\" ../../scripts/build/package.sh",
+ "build-browserify": "yarn run build-browserify-example && yarn run build-browserify-fp && yarn run build-browserify-misc",
+ "build-browserify-example": "mkdir -p dist && browserify example.js -o dist/example.js",
+ "build-browserify-fp": "mkdir -p dist && browserify fp.js -o dist/fp.js",
+ "build-browserify-misc": "mkdir -p dist && browserify misc.js -o dist/misc.js",
+ "build-babili": "yarn run build-babili-example && yarn run build-babili-fp && yarn run build-babili-misc && yarn run stats-size",
+ "build-babili-example": "babili dist/example.js --out-file dist/example.min.js --minified --no-comments",
+ "build-babili-fp": "babili dist/fp.js --out-file dist/fp.min.js --minified --no-comments",
+ "build-babili-misc": "babili dist/misc.js --out-file dist/misc.min.js --minified --no-comments",
+ "stats-size": "gzip-size dist/example.min.js | pretty-bytes",
+ "test": "yarn run test-example && yarn run test-fp && yarn run test-misc",
+ "test-example": "test $(env TZ=UTC node ./dist/example.min.js) = true",
+ "test-fp": "test $(env TZ=UTC node ./dist/fp.min.js) = true",
+ "test-misc": "test $(env TZ=UTC node ./dist/misc.min.js) = true"
+ }
+}
diff --git a/date-fns/examples/browserify/yarn.lock b/date-fns/examples/browserify/yarn.lock
new file mode 100644
index 0000000..e5f3522
--- /dev/null
+++ b/date-fns/examples/browserify/yarn.lock
@@ -0,0 +1,2454 @@
+# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
+# yarn lockfile v1
+
+
+JSONStream@^1.0.3:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.0.tgz#680ab9ac6572a8a1a207e0b38721db1c77b215e5"
+ integrity sha1-aAq5rGVyqKGiB+CzhyHbHHeyFeU=
+ dependencies:
+ jsonparse "^1.2.0"
+ through ">=2.2.7 <3"
+
+abbrev@1:
+ version "1.0.9"
+ resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.0.9.tgz#91b4792588a7738c25f35dd6f63752a2f8776135"
+ integrity sha1-kbR5JYinc4wl813W9jdSovh3YTU=
+
+acorn@^1.0.3:
+ version "1.2.2"
+ resolved "https://registry.yarnpkg.com/acorn/-/acorn-1.2.2.tgz#c8ce27de0acc76d896d2b1fad3df588d9e82f014"
+ integrity sha1-yM4n3grMdtiW0rH6099YjZ6C8BQ=
+
+acorn@^2.7.0:
+ version "2.7.0"
+ resolved "https://registry.yarnpkg.com/acorn/-/acorn-2.7.0.tgz#ab6e7d9d886aaca8b085bc3312b79a198433f0e7"
+ integrity sha1-q259nYhqrKiwhbwzEreaGYQz8Oc=
+
+acorn@^3.1.0:
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a"
+ integrity sha1-ReN/s56No/JbruP/U2niu18iAXo=
+
+ansi-regex@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.0.0.tgz#c5061b6e0ef8a81775e50f5d66151bf6bf371107"
+ integrity sha1-xQYbbg74qBd15Q9dZhUb9r83EQc=
+
+ansi-styles@^2.2.1:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe"
+ integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=
+
+anymatch@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.0.tgz#a3e52fa39168c825ff57b0248126ce5a8ff95507"
+ integrity sha1-o+Uvo5FoyCX/V7AkgSbOWo/5VQc=
+ dependencies:
+ arrify "^1.0.0"
+ micromatch "^2.1.5"
+
+aproba@^1.0.3:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.0.4.tgz#2713680775e7614c8ba186c065d4e2e52d1072c0"
+ integrity sha1-JxNoB3XnYUyLoYbAZdTi5S0QcsA=
+
+are-we-there-yet@~1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.2.tgz#80e470e95a084794fe1899262c5667c6e88de1b3"
+ integrity sha1-gORw6VoIR5T+GJkmLFZnxuiN4bM=
+ dependencies:
+ delegates "^1.0.0"
+ readable-stream "^2.0.0 || ^1.1.13"
+
+arr-diff@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf"
+ integrity sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=
+ dependencies:
+ arr-flatten "^1.0.1"
+
+arr-flatten@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.0.1.tgz#e5ffe54d45e19f32f216e91eb99c8ce892bb604b"
+ integrity sha1-5f/lTUXhnzLyFukeuZyM6JK7YEs=
+
+array-filter@~0.0.0:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/array-filter/-/array-filter-0.0.1.tgz#7da8cf2e26628ed732803581fd21f67cacd2eeec"
+ integrity sha1-fajPLiZijtcygDWB/SH2fKzS7uw=
+
+array-find-index@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1"
+ integrity sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=
+
+array-map@~0.0.0:
+ version "0.0.0"
+ resolved "https://registry.yarnpkg.com/array-map/-/array-map-0.0.0.tgz#88a2bab73d1cf7bcd5c1b118a003f66f665fa662"
+ integrity sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI=
+
+array-reduce@~0.0.0:
+ version "0.0.0"
+ resolved "https://registry.yarnpkg.com/array-reduce/-/array-reduce-0.0.0.tgz#173899d3ffd1c7d9383e4479525dbe278cab5f2b"
+ integrity sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=
+
+array-unique@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53"
+ integrity sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=
+
+arrify@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d"
+ integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=
+
+asn1@~0.2.3:
+ version "0.2.3"
+ resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86"
+ integrity sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=
+
+assert-plus@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234"
+ integrity sha1-104bh+ev/A24qttwIfP+SBAasjQ=
+
+assert-plus@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525"
+ integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=
+
+assert@^1.4.0:
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/assert/-/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91"
+ integrity sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=
+ dependencies:
+ util "0.10.3"
+
+astw@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/astw/-/astw-2.0.0.tgz#08121ac8288d35611c0ceec663f6cd545604897d"
+ integrity sha1-CBIayCiNNWEcDO7GY/bNVFYEiX0=
+ dependencies:
+ acorn "^1.0.3"
+
+async-each@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d"
+ integrity sha1-GdOGodntxufByF04iu28xW0zYC0=
+
+asynckit@^0.4.0:
+ version "0.4.0"
+ resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
+ integrity sha1-x57Zf380y48robyXkLzDZkdLS3k=
+
+aws-sign2@~0.6.0:
+ version "0.6.0"
+ resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f"
+ integrity sha1-FDQt0428yU0OW4fXY81jYSwOeU8=
+
+aws4@^1.2.1:
+ version "1.5.0"
+ resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.5.0.tgz#0a29ffb79c31c9e712eeb087e8e7a64b4a56d755"
+ integrity sha1-Cin/t5wxyecS7rCH6OemS0pW11U=
+
+babel-cli@^6.10.1:
+ version "6.18.0"
+ resolved "https://registry.yarnpkg.com/babel-cli/-/babel-cli-6.18.0.tgz#92117f341add9dead90f6fa7d0a97c0cc08ec186"
+ integrity sha1-khF/NBrdnerZD2+n0Kl8DMCOwYY=
+ dependencies:
+ babel-core "^6.18.0"
+ babel-polyfill "^6.16.0"
+ babel-register "^6.18.0"
+ babel-runtime "^6.9.0"
+ commander "^2.8.1"
+ convert-source-map "^1.1.0"
+ fs-readdir-recursive "^1.0.0"
+ glob "^5.0.5"
+ lodash "^4.2.0"
+ output-file-sync "^1.1.0"
+ path-is-absolute "^1.0.0"
+ slash "^1.0.0"
+ source-map "^0.5.0"
+ v8flags "^2.0.10"
+ optionalDependencies:
+ chokidar "^1.0.0"
+
+babel-code-frame@^6.20.0:
+ version "6.20.0"
+ resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.20.0.tgz#b968f839090f9a8bc6d41938fb96cb84f7387b26"
+ integrity sha1-uWj4OQkPmovG1Bk4+5bLhPc4eyY=
+ dependencies:
+ chalk "^1.1.0"
+ esutils "^2.0.2"
+ js-tokens "^2.0.0"
+
+babel-core@^6.18.0:
+ version "6.21.0"
+ resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.21.0.tgz#75525480c21c803f826ef3867d22c19f080a3724"
+ integrity sha1-dVJUgMIcgD+CbvOGfSLBnwgKNyQ=
+ dependencies:
+ babel-code-frame "^6.20.0"
+ babel-generator "^6.21.0"
+ babel-helpers "^6.16.0"
+ babel-messages "^6.8.0"
+ babel-register "^6.18.0"
+ babel-runtime "^6.20.0"
+ babel-template "^6.16.0"
+ babel-traverse "^6.21.0"
+ babel-types "^6.21.0"
+ babylon "^6.11.0"
+ convert-source-map "^1.1.0"
+ debug "^2.1.1"
+ json5 "^0.5.0"
+ lodash "^4.2.0"
+ minimatch "^3.0.2"
+ path-is-absolute "^1.0.0"
+ private "^0.1.6"
+ slash "^1.0.0"
+ source-map "^0.5.0"
+
+babel-generator@^6.21.0:
+ version "6.21.0"
+ resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.21.0.tgz#605f1269c489a1c75deeca7ea16d43d4656c8494"
+ integrity sha1-YF8SacSJocdd7sp+oW1D1GVshJQ=
+ dependencies:
+ babel-messages "^6.8.0"
+ babel-runtime "^6.20.0"
+ babel-types "^6.21.0"
+ detect-indent "^4.0.0"
+ jsesc "^1.3.0"
+ lodash "^4.2.0"
+ source-map "^0.5.0"
+
+babel-helper-flip-expressions@^0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/babel-helper-flip-expressions/-/babel-helper-flip-expressions-0.0.1.tgz#c2ba1599426e7928333fd5c08eee6cdf8328c848"
+ integrity sha1-wroVmUJueSgzP9XAju5s34MoyEg=
+
+babel-helper-is-nodes-equiv@^0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/babel-helper-is-nodes-equiv/-/babel-helper-is-nodes-equiv-0.0.1.tgz#34e9b300b1479ddd98ec77ea0bbe9342dfe39684"
+ integrity sha1-NOmzALFHnd2Y7HfqC76TQt/jloQ=
+
+babel-helper-is-void-0@^0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/babel-helper-is-void-0/-/babel-helper-is-void-0-0.0.1.tgz#ed74553b883e68226ae45f989a99b02c190f105a"
+ integrity sha1-7XRVO4g+aCJq5F+YmpmwLBkPEFo=
+
+babel-helper-remove-or-void@^0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/babel-helper-remove-or-void/-/babel-helper-remove-or-void-0.0.1.tgz#f602790e465acf2dfbe84fb3dd210c43a2dd7262"
+ integrity sha1-9gJ5DkZazy376E+z3SEMQ6LdcmI=
+
+babel-helper-to-multiple-sequence-expressions@^0.0.2:
+ version "0.0.2"
+ resolved "https://registry.yarnpkg.com/babel-helper-to-multiple-sequence-expressions/-/babel-helper-to-multiple-sequence-expressions-0.0.2.tgz#07d5d2e674aa62962ac9e0000b539920c301c4b9"
+ integrity sha1-B9XS5nSqYpYqyeAAC1OZIMMBxLk=
+
+babel-helpers@^6.16.0:
+ version "6.16.0"
+ resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.16.0.tgz#1095ec10d99279460553e67eb3eee9973d3867e3"
+ integrity sha1-EJXsENmSeUYFU+Z+s+7plz04Z+M=
+ dependencies:
+ babel-runtime "^6.0.0"
+ babel-template "^6.16.0"
+
+babel-messages@^6.8.0:
+ version "6.8.0"
+ resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.8.0.tgz#bf504736ca967e6d65ef0adb5a2a5f947c8e0eb9"
+ integrity sha1-v1BHNsqWfm1l7wrbWipflHyODrk=
+ dependencies:
+ babel-runtime "^6.0.0"
+
+babel-plugin-minify-constant-folding@^0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-minify-constant-folding/-/babel-plugin-minify-constant-folding-0.0.1.tgz#d4abb5b62ccfc094bdce2a318b2f94fda5a73e29"
+ integrity sha1-1Ku1tizPwJS9zioxiy+U/aWnPik=
+
+babel-plugin-minify-dead-code-elimination@^0.1.0:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-minify-dead-code-elimination/-/babel-plugin-minify-dead-code-elimination-0.1.1.tgz#1a0133fcd06c7fa477b01c193ba3213c8944ff01"
+ integrity sha1-GgEz/NBsf6R3sBwZO6MhPIlE/wE=
+ dependencies:
+ babel-helper-remove-or-void "^0.0.1"
+ lodash.some "^4.6.0"
+
+babel-plugin-minify-flip-comparisons@^0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-minify-flip-comparisons/-/babel-plugin-minify-flip-comparisons-0.0.1.tgz#679f4493a692afc705c4b79fde1dadb535c4eb08"
+ integrity sha1-Z59Ek6aSr8cFxLef3h2ttTXE6wg=
+ dependencies:
+ babel-helper-is-void-0 "^0.0.1"
+
+babel-plugin-minify-guarded-expressions@^0.0.3:
+ version "0.0.3"
+ resolved "https://registry.yarnpkg.com/babel-plugin-minify-guarded-expressions/-/babel-plugin-minify-guarded-expressions-0.0.3.tgz#6da1caa0b6abda964647377bd5e19afdbf91cae8"
+ integrity sha1-baHKoLar2pZGRzd71eGa/b+Ryug=
+ dependencies:
+ babel-helper-flip-expressions "^0.0.1"
+
+babel-plugin-minify-infinity@^0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-minify-infinity/-/babel-plugin-minify-infinity-0.0.1.tgz#9394a4defc9db56da76f13fedd5d5e2d486a4299"
+ integrity sha1-k5Sk3vydtW2nbxP+3V1eLUhqQpk=
+
+babel-plugin-minify-mangle-names@^0.0.4:
+ version "0.0.4"
+ resolved "https://registry.yarnpkg.com/babel-plugin-minify-mangle-names/-/babel-plugin-minify-mangle-names-0.0.4.tgz#94812c0c82320f7af97511b7d598527933973197"
+ integrity sha1-lIEsDIIyD3r5dRG31ZhSeTOXMZc=
+
+babel-plugin-minify-numeric-literals@^0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-minify-numeric-literals/-/babel-plugin-minify-numeric-literals-0.0.1.tgz#9597e6c31154d7daf3744d0bd417c144b275bd53"
+ integrity sha1-lZfmwxFU19rzdE0L1BfBRLJ1vVM=
+
+babel-plugin-minify-replace@^0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-minify-replace/-/babel-plugin-minify-replace-0.0.1.tgz#5d5aea7cb9899245248d1ee9ce7a2fe556a8facc"
+ integrity sha1-XVrqfLmJkkUkjR7pznov5Vao+sw=
+
+babel-plugin-minify-simplify@^0.0.4:
+ version "0.0.4"
+ resolved "https://registry.yarnpkg.com/babel-plugin-minify-simplify/-/babel-plugin-minify-simplify-0.0.4.tgz#940d0dd0db6d4c4c1c51fc34c3c6e0d0ee1d67e9"
+ integrity sha1-lA0N0NttTEwcUfw0w8bg0O4dZ+k=
+ dependencies:
+ babel-helper-flip-expressions "^0.0.1"
+ babel-helper-is-nodes-equiv "^0.0.1"
+ babel-helper-to-multiple-sequence-expressions "^0.0.2"
+
+babel-plugin-minify-type-constructors@^0.0.2:
+ version "0.0.2"
+ resolved "https://registry.yarnpkg.com/babel-plugin-minify-type-constructors/-/babel-plugin-minify-type-constructors-0.0.2.tgz#4f9a28951e776f31ac11a29cd58cf9eef8b2e292"
+ integrity sha1-T5oolR53bzGsEaKc1Yz57viy4pI=
+ dependencies:
+ babel-helper-is-void-0 "^0.0.1"
+
+babel-plugin-transform-member-expression-literals@^6.8.0:
+ version "6.8.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-member-expression-literals/-/babel-plugin-transform-member-expression-literals-6.8.0.tgz#718755a70492a895d8f41810afa9998bc09f57b9"
+ integrity sha1-cYdVpwSSqJXY9BgQr6mZi8CfV7k=
+ dependencies:
+ babel-runtime "^6.0.0"
+
+babel-plugin-transform-merge-sibling-variables@^6.8.0:
+ version "6.8.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-merge-sibling-variables/-/babel-plugin-transform-merge-sibling-variables-6.8.0.tgz#724074e4ef78b601fcf9a34165c972a1b6117e99"
+ integrity sha1-ckB05O94tgH8+aNBZclyobYRfpk=
+ dependencies:
+ babel-runtime "^6.0.0"
+
+babel-plugin-transform-minify-booleans@^6.8.0:
+ version "6.8.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-minify-booleans/-/babel-plugin-transform-minify-booleans-6.8.0.tgz#b1a48864a727847696b84eae36fa4d085a54b42b"
+ integrity sha1-saSIZKcnhHaWuE6uNvpNCFpUtCs=
+ dependencies:
+ babel-runtime "^6.0.0"
+
+babel-plugin-transform-property-literals@^6.8.0:
+ version "6.8.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-property-literals/-/babel-plugin-transform-property-literals-6.8.0.tgz#a65b2e6e1274d25df0f3a4c5e85bc8f1cdd9e019"
+ integrity sha1-plsubhJ00l3w86TF6FvI8c3Z4Bk=
+ dependencies:
+ babel-runtime "^6.0.0"
+
+babel-plugin-transform-regexp-constructors@^0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-regexp-constructors/-/babel-plugin-transform-regexp-constructors-0.0.1.tgz#c5878cc4d78437e99d02790d325f163741741ff5"
+ integrity sha1-xYeMxNeEN+mdAnkNMl8WN0F0H/U=
+
+babel-plugin-transform-simplify-comparison-operators@^6.8.0:
+ version "6.8.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-simplify-comparison-operators/-/babel-plugin-transform-simplify-comparison-operators-6.8.0.tgz#0183d65bfdc54c80d922a3a9b3008e25fa9d32a7"
+ integrity sha1-AYPWW/3FTIDZIqOpswCOJfqdMqc=
+ dependencies:
+ babel-runtime "^6.0.0"
+
+babel-plugin-transform-undefined-to-void@^6.8.0:
+ version "6.8.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-undefined-to-void/-/babel-plugin-transform-undefined-to-void-6.8.0.tgz#bc5b6b4908d3b1262170e67cb3963903ddce167e"
+ integrity sha1-vFtrSQjTsSYhcOZ8s5Y5A93OFn4=
+ dependencies:
+ babel-runtime "^6.0.0"
+
+babel-polyfill@^6.16.0:
+ version "6.20.0"
+ resolved "https://registry.yarnpkg.com/babel-polyfill/-/babel-polyfill-6.20.0.tgz#de4a371006139e20990aac0be367d398331204e7"
+ integrity sha1-3ko3EAYTniCZCqwL42fTmDMSBOc=
+ dependencies:
+ babel-runtime "^6.20.0"
+ core-js "^2.4.0"
+ regenerator-runtime "^0.10.0"
+
+babel-preset-babili@^0.0.8:
+ version "0.0.8"
+ resolved "https://registry.yarnpkg.com/babel-preset-babili/-/babel-preset-babili-0.0.8.tgz#aeba08a21171166e448fd4226c3cf03bcf682122"
+ integrity sha1-rroIohFxFm5Ej9QibDzwO89oISI=
+ dependencies:
+ babel-plugin-minify-constant-folding "^0.0.1"
+ babel-plugin-minify-dead-code-elimination "^0.1.0"
+ babel-plugin-minify-flip-comparisons "^0.0.1"
+ babel-plugin-minify-guarded-expressions "^0.0.3"
+ babel-plugin-minify-infinity "^0.0.1"
+ babel-plugin-minify-mangle-names "^0.0.4"
+ babel-plugin-minify-numeric-literals "^0.0.1"
+ babel-plugin-minify-replace "^0.0.1"
+ babel-plugin-minify-simplify "^0.0.4"
+ babel-plugin-minify-type-constructors "^0.0.2"
+ babel-plugin-transform-member-expression-literals "^6.8.0"
+ babel-plugin-transform-merge-sibling-variables "^6.8.0"
+ babel-plugin-transform-minify-booleans "^6.8.0"
+ babel-plugin-transform-property-literals "^6.8.0"
+ babel-plugin-transform-regexp-constructors "^0.0.1"
+ babel-plugin-transform-simplify-comparison-operators "^6.8.0"
+ babel-plugin-transform-undefined-to-void "^6.8.0"
+
+babel-register@^6.18.0:
+ version "6.18.0"
+ resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.18.0.tgz#892e2e03865078dd90ad2c715111ec4449b32a68"
+ integrity sha1-iS4uA4ZQeN2QrSxxURHsREmzKmg=
+ dependencies:
+ babel-core "^6.18.0"
+ babel-runtime "^6.11.6"
+ core-js "^2.4.0"
+ home-or-tmp "^2.0.0"
+ lodash "^4.2.0"
+ mkdirp "^0.5.1"
+ source-map-support "^0.4.2"
+
+babel-runtime@^6.0.0, babel-runtime@^6.11.6, babel-runtime@^6.20.0, babel-runtime@^6.9.0:
+ version "6.20.0"
+ resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.20.0.tgz#87300bdcf4cd770f09bf0048c64204e17806d16f"
+ integrity sha1-hzAL3PTNdw8JvwBIxkIE4XgG0W8=
+ dependencies:
+ core-js "^2.4.0"
+ regenerator-runtime "^0.10.0"
+
+babel-template@^6.16.0:
+ version "6.16.0"
+ resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.16.0.tgz#e149dd1a9f03a35f817ddbc4d0481988e7ebc8ca"
+ integrity sha1-4UndGp8Do1+BfdvE0EgZiOfryMo=
+ dependencies:
+ babel-runtime "^6.9.0"
+ babel-traverse "^6.16.0"
+ babel-types "^6.16.0"
+ babylon "^6.11.0"
+ lodash "^4.2.0"
+
+babel-traverse@^6.16.0, babel-traverse@^6.21.0:
+ version "6.21.0"
+ resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.21.0.tgz#69c6365804f1a4f69eb1213f85b00a818b8c21ad"
+ integrity sha1-acY2WATxpPaesSE/hbAKgYuMIa0=
+ dependencies:
+ babel-code-frame "^6.20.0"
+ babel-messages "^6.8.0"
+ babel-runtime "^6.20.0"
+ babel-types "^6.21.0"
+ babylon "^6.11.0"
+ debug "^2.2.0"
+ globals "^9.0.0"
+ invariant "^2.2.0"
+ lodash "^4.2.0"
+
+babel-types@^6.16.0, babel-types@^6.21.0:
+ version "6.21.0"
+ resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.21.0.tgz#314b92168891ef6d3806b7f7a917fdf87c11a4b2"
+ integrity sha1-MUuSFoiR7204Brf3qRf9+HwRpLI=
+ dependencies:
+ babel-runtime "^6.20.0"
+ esutils "^2.0.2"
+ lodash "^4.2.0"
+ to-fast-properties "^1.0.1"
+
+babili@^0.0.9:
+ version "0.0.9"
+ resolved "https://registry.yarnpkg.com/babili/-/babili-0.0.9.tgz#cf1277f34d8265101847e2c5ac11771684f2b1d4"
+ integrity sha1-zxJ3802CZRAYR+LFrBF3FoTysdQ=
+ dependencies:
+ babel-cli "^6.10.1"
+ babel-preset-babili "^0.0.8"
+
+babylon@^6.11.0:
+ version "6.14.1"
+ resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.14.1.tgz#956275fab72753ad9b3435d7afe58f8bf0a29815"
+ integrity sha1-lWJ1+rcnU62bNDXXr+WPi/CimBU=
+
+balanced-match@^0.4.1:
+ version "0.4.2"
+ resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838"
+ integrity sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=
+
+base64-js@^1.0.2:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.2.0.tgz#a39992d723584811982be5e290bb6a53d86700f1"
+ integrity sha1-o5mS1yNYSBGYK+XikLtqU9hnAPE=
+
+bcrypt-pbkdf@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.0.tgz#3ca76b85241c7170bf7d9703e7b9aa74630040d4"
+ integrity sha1-PKdrhSQccXC/fZcD57mqdGMAQNQ=
+ dependencies:
+ tweetnacl "^0.14.3"
+
+binary-extensions@^1.0.0:
+ version "1.8.0"
+ resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.8.0.tgz#48ec8d16df4377eae5fa5884682480af4d95c774"
+ integrity sha1-SOyNFt9Dd+rl+liEaCSAr02Vx3Q=
+
+block-stream@*:
+ version "0.0.9"
+ resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a"
+ integrity sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=
+ dependencies:
+ inherits "~2.0.0"
+
+boom@2.x.x:
+ version "2.10.1"
+ resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f"
+ integrity sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=
+ dependencies:
+ hoek "2.x.x"
+
+brace-expansion@^1.0.0:
+ version "1.1.6"
+ resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.6.tgz#7197d7eaa9b87e648390ea61fc66c84427420df9"
+ integrity sha1-cZfX6qm4fmSDkOph/GbIRCdCDfk=
+ dependencies:
+ balanced-match "^0.4.1"
+ concat-map "0.0.1"
+
+braces@^1.8.2:
+ version "1.8.5"
+ resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7"
+ integrity sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=
+ dependencies:
+ expand-range "^1.8.1"
+ preserve "^0.2.0"
+ repeat-element "^1.1.2"
+
+browser-pack@^6.0.1:
+ version "6.0.2"
+ resolved "https://registry.yarnpkg.com/browser-pack/-/browser-pack-6.0.2.tgz#f86cd6cef4f5300c8e63e07a4d512f65fbff4531"
+ integrity sha1-+GzWzvT1MAyOY+B6TVEvZfv/RTE=
+ dependencies:
+ JSONStream "^1.0.3"
+ combine-source-map "~0.7.1"
+ defined "^1.0.0"
+ through2 "^2.0.0"
+ umd "^3.0.0"
+
+browser-resolve@^1.11.0, browser-resolve@^1.7.0:
+ version "1.11.2"
+ resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.2.tgz#8ff09b0a2c421718a1051c260b32e48f442938ce"
+ integrity sha1-j/CbCixCFxihBRwmCzLkj0QpOM4=
+ dependencies:
+ resolve "1.1.7"
+
+browserify-aes@0.4.0:
+ version "0.4.0"
+ resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-0.4.0.tgz#067149b668df31c4b58533e02d01e806d8608e2c"
+ integrity sha1-BnFJtmjfMcS1hTPgLQHoBthgjiw=
+ dependencies:
+ inherits "^2.0.1"
+
+browserify-zlib@~0.1.2:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.1.4.tgz#bb35f8a519f600e0fa6b8485241c979d0141fb2d"
+ integrity sha1-uzX4pRn2AOD6a4SFJByXnQFB+y0=
+ dependencies:
+ pako "~0.2.0"
+
+browserify@^13.3.0:
+ version "13.3.0"
+ resolved "https://registry.yarnpkg.com/browserify/-/browserify-13.3.0.tgz#b5a9c9020243f0c70e4675bec8223bc627e415ce"
+ integrity sha1-tanJAgJD8McORnW+yCI7xifkFc4=
+ dependencies:
+ JSONStream "^1.0.3"
+ assert "^1.4.0"
+ browser-pack "^6.0.1"
+ browser-resolve "^1.11.0"
+ browserify-zlib "~0.1.2"
+ buffer "^4.1.0"
+ cached-path-relative "^1.0.0"
+ concat-stream "~1.5.1"
+ console-browserify "^1.1.0"
+ constants-browserify "~1.0.0"
+ crypto-browserify "^3.0.0"
+ defined "^1.0.0"
+ deps-sort "^2.0.0"
+ domain-browser "~1.1.0"
+ duplexer2 "~0.1.2"
+ events "~1.1.0"
+ glob "^7.1.0"
+ has "^1.0.0"
+ htmlescape "^1.1.0"
+ https-browserify "~0.0.0"
+ inherits "~2.0.1"
+ insert-module-globals "^7.0.0"
+ labeled-stream-splicer "^2.0.0"
+ module-deps "^4.0.8"
+ os-browserify "~0.1.1"
+ parents "^1.0.1"
+ path-browserify "~0.0.0"
+ process "~0.11.0"
+ punycode "^1.3.2"
+ querystring-es3 "~0.2.0"
+ read-only-stream "^2.0.0"
+ readable-stream "^2.0.2"
+ resolve "^1.1.4"
+ shasum "^1.0.0"
+ shell-quote "^1.6.1"
+ stream-browserify "^2.0.0"
+ stream-http "^2.0.0"
+ string_decoder "~0.10.0"
+ subarg "^1.0.0"
+ syntax-error "^1.1.1"
+ through2 "^2.0.0"
+ timers-browserify "^1.0.1"
+ tty-browserify "~0.0.0"
+ url "~0.11.0"
+ util "~0.10.1"
+ vm-browserify "~0.0.1"
+ xtend "^4.0.0"
+
+buffer-shims@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/buffer-shims/-/buffer-shims-1.0.0.tgz#9978ce317388c649ad8793028c3477ef044a8b51"
+ integrity sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=
+
+buffer@^4.1.0:
+ version "4.9.1"
+ resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298"
+ integrity sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=
+ dependencies:
+ base64-js "^1.0.2"
+ ieee754 "^1.1.4"
+ isarray "^1.0.0"
+
+builtin-modules@^1.0.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f"
+ integrity sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=
+
+builtin-status-codes@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8"
+ integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=
+
+cached-path-relative@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/cached-path-relative/-/cached-path-relative-1.0.0.tgz#d1094c577fbd9a8b8bd43c96af6188aa205d05f4"
+ integrity sha1-0QlMV3+9mouL1DyWr2GIqiBdBfQ=
+
+camelcase-keys@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7"
+ integrity sha1-MIvur/3ygRkFHvodkyITyRuPkuc=
+ dependencies:
+ camelcase "^2.0.0"
+ map-obj "^1.0.0"
+
+camelcase@^2.0.0:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f"
+ integrity sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=
+
+caseless@~0.11.0:
+ version "0.11.0"
+ resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.11.0.tgz#715b96ea9841593cc33067923f5ec60ebda4f7d7"
+ integrity sha1-cVuW6phBWTzDMGeSP17GDr2k99c=
+
+chalk@^1.1.0, chalk@^1.1.1:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98"
+ integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=
+ dependencies:
+ ansi-styles "^2.2.1"
+ escape-string-regexp "^1.0.2"
+ has-ansi "^2.0.0"
+ strip-ansi "^3.0.0"
+ supports-color "^2.0.0"
+
+chokidar@^1.0.0:
+ version "1.6.1"
+ resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.6.1.tgz#2f4447ab5e96e50fb3d789fd90d4c72e0e4c70c2"
+ integrity sha1-L0RHq16W5Q+z14n9kNTHLg5McMI=
+ dependencies:
+ anymatch "^1.3.0"
+ async-each "^1.0.0"
+ glob-parent "^2.0.0"
+ inherits "^2.0.1"
+ is-binary-path "^1.0.0"
+ is-glob "^2.0.0"
+ path-is-absolute "^1.0.0"
+ readdirp "^2.0.0"
+ optionalDependencies:
+ fsevents "^1.0.0"
+
+code-point-at@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77"
+ integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=
+
+combine-source-map@~0.7.1:
+ version "0.7.2"
+ resolved "https://registry.yarnpkg.com/combine-source-map/-/combine-source-map-0.7.2.tgz#0870312856b307a87cc4ac486f3a9a62aeccc09e"
+ integrity sha1-CHAxKFazB6h8xKxIbzqaYq7MwJ4=
+ dependencies:
+ convert-source-map "~1.1.0"
+ inline-source-map "~0.6.0"
+ lodash.memoize "~3.0.3"
+ source-map "~0.5.3"
+
+combined-stream@^1.0.5, combined-stream@~1.0.5:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.5.tgz#938370a57b4a51dea2c77c15d5c5fdf895164009"
+ integrity sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=
+ dependencies:
+ delayed-stream "~1.0.0"
+
+commander@^2.8.1, commander@^2.9.0:
+ version "2.9.0"
+ resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4"
+ integrity sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=
+ dependencies:
+ graceful-readlink ">= 1.0.0"
+
+concat-map@0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
+ integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
+
+concat-stream@~1.5.0, concat-stream@~1.5.1:
+ version "1.5.2"
+ resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.5.2.tgz#708978624d856af41a5a741defdd261da752c266"
+ integrity sha1-cIl4Yk2FavQaWnQd790mHadSwmY=
+ dependencies:
+ inherits "~2.0.1"
+ readable-stream "~2.0.0"
+ typedarray "~0.0.5"
+
+console-browserify@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10"
+ integrity sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=
+ dependencies:
+ date-now "^0.1.4"
+
+console-control-strings@^1.0.0, console-control-strings@~1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e"
+ integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=
+
+constants-browserify@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75"
+ integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=
+
+convert-source-map@^1.1.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.3.0.tgz#e9f3e9c6e2728efc2676696a70eb382f73106a67"
+ integrity sha1-6fPpxuJyjvwmdmlqcOs4L3MQamc=
+
+convert-source-map@~1.1.0:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.1.3.tgz#4829c877e9fe49b3161f3bf3673888e204699860"
+ integrity sha1-SCnId+n+SbMWHzvzZziI4gRpmGA=
+
+core-js@^2.4.0:
+ version "2.4.1"
+ resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.4.1.tgz#4de911e667b0eae9124e34254b53aea6fc618d3e"
+ integrity sha1-TekR5mew6ukSTjQlS1OupvxhjT4=
+
+core-util-is@~1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
+ integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=
+
+cryptiles@2.x.x:
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8"
+ integrity sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=
+ dependencies:
+ boom "2.x.x"
+
+crypto-browserify@^3.0.0:
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.3.0.tgz#b9fc75bb4a0ed61dcf1cd5dae96eb30c9c3e506c"
+ integrity sha1-ufx1u0oO1h3PHNXa6W6zDJw+UGw=
+ dependencies:
+ browserify-aes "0.4.0"
+ pbkdf2-compat "2.0.1"
+ ripemd160 "0.2.0"
+ sha.js "2.2.6"
+
+currently-unhandled@^0.4.1:
+ version "0.4.1"
+ resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea"
+ integrity sha1-mI3zP+qxke95mmE2nddsF635V+o=
+ dependencies:
+ array-find-index "^1.0.1"
+
+dashdash@^1.12.0:
+ version "1.14.1"
+ resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0"
+ integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=
+ dependencies:
+ assert-plus "^1.0.0"
+
+date-now@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b"
+ integrity sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=
+
+debug@^2.1.1, debug@^2.2.0, debug@~2.2.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da"
+ integrity sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=
+ dependencies:
+ ms "0.7.1"
+
+decamelize@^1.1.2:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
+ integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=
+
+deep-extend@~0.4.0:
+ version "0.4.1"
+ resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.1.tgz#efe4113d08085f4e6f9687759810f807469e2253"
+ integrity sha1-7+QRPQgIX05vlod1mBD4B0aeIlM=
+
+defined@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693"
+ integrity sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=
+
+delayed-stream@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
+ integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk=
+
+delegates@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a"
+ integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=
+
+deps-sort@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/deps-sort/-/deps-sort-2.0.0.tgz#091724902e84658260eb910748cccd1af6e21fb5"
+ integrity sha1-CRckkC6EZYJg65EHSMzNGvbiH7U=
+ dependencies:
+ JSONStream "^1.0.3"
+ shasum "^1.0.0"
+ subarg "^1.0.0"
+ through2 "^2.0.0"
+
+detect-indent@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208"
+ integrity sha1-920GQ1LN9Docts5hnE7jqUdd4gg=
+ dependencies:
+ repeating "^2.0.0"
+
+detective@^4.0.0:
+ version "4.3.2"
+ resolved "https://registry.yarnpkg.com/detective/-/detective-4.3.2.tgz#77697e2e7947ac3fe7c8e26a6d6f115235afa91c"
+ integrity sha1-d2l+LnlHrD/nyOJqbW8RUjWvqRw=
+ dependencies:
+ acorn "^3.1.0"
+ defined "^1.0.0"
+
+domain-browser@~1.1.0:
+ version "1.1.7"
+ resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.1.7.tgz#867aa4b093faa05f1de08c06f4d7b21fdf8698bc"
+ integrity sha1-hnqksJP6oF8d4IwG9NeyH9+GmLw=
+
+duplexer2@^0.1.2, duplexer2@~0.1.0, duplexer2@~0.1.2:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.1.4.tgz#8b12dab878c0d69e3e7891051662a32fc6bddcc1"
+ integrity sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=
+ dependencies:
+ readable-stream "^2.0.2"
+
+duplexer@^0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1"
+ integrity sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=
+
+ecc-jsbn@~0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505"
+ integrity sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=
+ dependencies:
+ jsbn "~0.1.0"
+
+error-ex@^1.2.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.0.tgz#e67b43f3e82c96ea3a584ffee0b9fc3325d802d9"
+ integrity sha1-5ntD8+gsluo6WE/+4Ln8MyXYAtk=
+ dependencies:
+ is-arrayish "^0.2.1"
+
+escape-string-regexp@^1.0.2:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
+ integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
+
+esutils@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b"
+ integrity sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=
+
+events@~1.1.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924"
+ integrity sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=
+
+expand-brackets@^0.1.4:
+ version "0.1.5"
+ resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b"
+ integrity sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=
+ dependencies:
+ is-posix-bracket "^0.1.0"
+
+expand-range@^1.8.1:
+ version "1.8.2"
+ resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337"
+ integrity sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=
+ dependencies:
+ fill-range "^2.1.0"
+
+extend@~3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.0.tgz#5a474353b9f3353ddd8176dfd37b91c83a46f1d4"
+ integrity sha1-WkdDU7nzNT3dgXbf03uRyDpG8dQ=
+
+extglob@^0.3.1:
+ version "0.3.2"
+ resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1"
+ integrity sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=
+ dependencies:
+ is-extglob "^1.0.0"
+
+extsprintf@1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.0.2.tgz#e1080e0658e300b06294990cc70e1502235fd550"
+ integrity sha1-4QgOBljjALBilJkMxw4VAiNf1VA=
+
+filename-regex@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.0.tgz#996e3e80479b98b9897f15a8a58b3d084e926775"
+ integrity sha1-mW4+gEebmLmJfxWopYs9CE6SZ3U=
+
+fill-range@^2.1.0:
+ version "2.2.3"
+ resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723"
+ integrity sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=
+ dependencies:
+ is-number "^2.1.0"
+ isobject "^2.0.0"
+ randomatic "^1.1.3"
+ repeat-element "^1.1.2"
+ repeat-string "^1.5.2"
+
+find-up@^1.0.0:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f"
+ integrity sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=
+ dependencies:
+ path-exists "^2.0.0"
+ pinkie-promise "^2.0.0"
+
+for-in@^0.1.5:
+ version "0.1.6"
+ resolved "https://registry.yarnpkg.com/for-in/-/for-in-0.1.6.tgz#c9f96e89bfad18a545af5ec3ed352a1d9e5b4dc8"
+ integrity sha1-yfluib+tGKVFr17D7TUqHZ5bTcg=
+
+for-own@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.4.tgz#0149b41a39088c7515f51ebe1c1386d45f935072"
+ integrity sha1-AUm0GjkIjHUV9R6+HBOG1F+TUHI=
+ dependencies:
+ for-in "^0.1.5"
+
+forever-agent@~0.6.1:
+ version "0.6.1"
+ resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91"
+ integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=
+
+form-data@~2.1.1:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.2.tgz#89c3534008b97eada4cbb157d58f6f5df025eae4"
+ integrity sha1-icNTQAi5fq2ky7FX1Y9vXfAl6uQ=
+ dependencies:
+ asynckit "^0.4.0"
+ combined-stream "^1.0.5"
+ mime-types "^2.1.12"
+
+fs-readdir-recursive@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-1.0.0.tgz#8cd1745c8b4f8a29c8caec392476921ba195f560"
+ integrity sha1-jNF0XItPiinIyuw5JHaSG6GV9WA=
+
+fs.realpath@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
+ integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8=
+
+fsevents@^1.0.0:
+ version "1.0.17"
+ resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.0.17.tgz#8537f3f12272678765b4fd6528c0f1f66f8f4558"
+ integrity sha1-hTfz8SJyZ4dltP1lKMDx9m+PRVg=
+ dependencies:
+ nan "^2.3.0"
+ node-pre-gyp "^0.6.29"
+
+fstream-ignore@~1.0.5:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/fstream-ignore/-/fstream-ignore-1.0.5.tgz#9c31dae34767018fe1d249b24dada67d092da105"
+ integrity sha1-nDHa40dnAY/h0kmyTa2mfQktoQU=
+ dependencies:
+ fstream "^1.0.0"
+ inherits "2"
+ minimatch "^3.0.0"
+
+fstream@^1.0.0, fstream@^1.0.2, fstream@~1.0.10:
+ version "1.0.10"
+ resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.10.tgz#604e8a92fe26ffd9f6fae30399d4984e1ab22822"
+ integrity sha1-YE6Kkv4m/9n2+uMDmdSYThqyKCI=
+ dependencies:
+ graceful-fs "^4.1.2"
+ inherits "~2.0.0"
+ mkdirp ">=0.5 0"
+ rimraf "2"
+
+function-bind@^1.0.2:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.0.tgz#16176714c801798e4e8f2cf7f7529467bb4a5771"
+ integrity sha1-FhdnFMgBeY5Ojyz391KUZ7tKV3E=
+
+gauge@~2.7.1:
+ version "2.7.2"
+ resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.2.tgz#15cecc31b02d05345a5d6b0e171cdb3ad2307774"
+ integrity sha1-Fc7MMbAtBTRaXWsOFxzbOtIwd3Q=
+ dependencies:
+ aproba "^1.0.3"
+ console-control-strings "^1.0.0"
+ has-unicode "^2.0.0"
+ object-assign "^4.1.0"
+ signal-exit "^3.0.0"
+ string-width "^1.0.1"
+ strip-ansi "^3.0.1"
+ supports-color "^0.2.0"
+ wide-align "^1.1.0"
+
+generate-function@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/generate-function/-/generate-function-2.0.0.tgz#6858fe7c0969b7d4e9093337647ac79f60dfbe74"
+ integrity sha1-aFj+fAlpt9TpCTM3ZHrHn2DfvnQ=
+
+generate-object-property@^1.1.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/generate-object-property/-/generate-object-property-1.2.0.tgz#9c0e1c40308ce804f4783618b937fa88f99d50d0"
+ integrity sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=
+ dependencies:
+ is-property "^1.0.0"
+
+get-stdin@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe"
+ integrity sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=
+
+get-stdin@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-5.0.1.tgz#122e161591e21ff4c52530305693f20e6393a398"
+ integrity sha1-Ei4WFZHiH/TFJTAwVpPyDmOTo5g=
+
+getpass@^0.1.1:
+ version "0.1.6"
+ resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.6.tgz#283ffd9fc1256840875311c1b60e8c40187110e6"
+ integrity sha1-KD/9n8ElaECHUxHBtg6MQBhxEOY=
+ dependencies:
+ assert-plus "^1.0.0"
+
+glob-base@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4"
+ integrity sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=
+ dependencies:
+ glob-parent "^2.0.0"
+ is-glob "^2.0.0"
+
+glob-parent@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28"
+ integrity sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=
+ dependencies:
+ is-glob "^2.0.0"
+
+glob@^5.0.5:
+ version "5.0.15"
+ resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1"
+ integrity sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=
+ dependencies:
+ inflight "^1.0.4"
+ inherits "2"
+ minimatch "2 || 3"
+ once "^1.3.0"
+ path-is-absolute "^1.0.0"
+
+glob@^7.0.5, glob@^7.1.0:
+ version "7.1.1"
+ resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8"
+ integrity sha1-gFIR3wT6rxxjo2ADBs31reULLsg=
+ dependencies:
+ fs.realpath "^1.0.0"
+ inflight "^1.0.4"
+ inherits "2"
+ minimatch "^3.0.2"
+ once "^1.3.0"
+ path-is-absolute "^1.0.0"
+
+globals@^9.0.0:
+ version "9.14.0"
+ resolved "https://registry.yarnpkg.com/globals/-/globals-9.14.0.tgz#8859936af0038741263053b39d0e76ca241e4034"
+ integrity sha1-iFmTavADh0EmMFOznQ52yiQeQDQ=
+
+graceful-fs@^4.1.2, graceful-fs@^4.1.4:
+ version "4.1.11"
+ resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658"
+ integrity sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=
+
+"graceful-readlink@>= 1.0.0":
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725"
+ integrity sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=
+
+gzip-size-cli@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/gzip-size-cli/-/gzip-size-cli-1.0.0.tgz#97ef47b1600a2ad8f9c31539661eab39ec36caed"
+ integrity sha1-l+9HsWAKKtj5wxU5Zh6rOew2yu0=
+ dependencies:
+ gzip-size "^3.0.0"
+ meow "^3.3.0"
+
+gzip-size@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-3.0.0.tgz#546188e9bdc337f673772f81660464b389dce520"
+ integrity sha1-VGGI6b3DN/Zzdy+BZgRks4nc5SA=
+ dependencies:
+ duplexer "^0.1.1"
+
+har-validator@~2.0.6:
+ version "2.0.6"
+ resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-2.0.6.tgz#cdcbc08188265ad119b6a5a7c8ab70eecfb5d27d"
+ integrity sha1-zcvAgYgmWtEZtqWnyKtw7s+10n0=
+ dependencies:
+ chalk "^1.1.1"
+ commander "^2.9.0"
+ is-my-json-valid "^2.12.4"
+ pinkie-promise "^2.0.0"
+
+has-ansi@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91"
+ integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=
+ dependencies:
+ ansi-regex "^2.0.0"
+
+has-unicode@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9"
+ integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=
+
+has@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/has/-/has-1.0.1.tgz#8461733f538b0837c9361e39a9ab9e9704dc2f28"
+ integrity sha1-hGFzP1OLCDfJNh45qauelwTcLyg=
+ dependencies:
+ function-bind "^1.0.2"
+
+hawk@~3.1.3:
+ version "3.1.3"
+ resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4"
+ integrity sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=
+ dependencies:
+ boom "2.x.x"
+ cryptiles "2.x.x"
+ hoek "2.x.x"
+ sntp "1.x.x"
+
+hoek@2.x.x:
+ version "2.16.3"
+ resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed"
+ integrity sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=
+
+home-or-tmp@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8"
+ integrity sha1-42w/LSyufXRqhX440Y1fMqeILbg=
+ dependencies:
+ os-homedir "^1.0.0"
+ os-tmpdir "^1.0.1"
+
+hosted-git-info@^2.1.4:
+ version "2.1.5"
+ resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.1.5.tgz#0ba81d90da2e25ab34a332e6ec77936e1598118b"
+ integrity sha1-C6gdkNouJas0ozLm7HeTbhWYEYs=
+
+htmlescape@^1.1.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/htmlescape/-/htmlescape-1.1.1.tgz#3a03edc2214bca3b66424a3e7959349509cb0351"
+ integrity sha1-OgPtwiFLyjtmQko+eVk0lQnLA1E=
+
+http-signature@~1.1.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf"
+ integrity sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=
+ dependencies:
+ assert-plus "^0.2.0"
+ jsprim "^1.2.2"
+ sshpk "^1.7.0"
+
+https-browserify@~0.0.0:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-0.0.1.tgz#3f91365cabe60b77ed0ebba24b454e3e09d95a82"
+ integrity sha1-P5E2XKvmC3ftDruiS0VOPgnZWoI=
+
+ieee754@^1.1.4:
+ version "1.1.8"
+ resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.8.tgz#be33d40ac10ef1926701f6f08a2d86fbfd1ad3e4"
+ integrity sha1-vjPUCsEO8ZJnAfbwii2G+/0a0+Q=
+
+indent-string@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80"
+ integrity sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=
+ dependencies:
+ repeating "^2.0.0"
+
+indexof@0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d"
+ integrity sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=
+
+inflight@^1.0.4:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
+ integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=
+ dependencies:
+ once "^1.3.0"
+ wrappy "1"
+
+inherits@2, inherits@^2.0.1, inherits@~2.0.0, inherits@~2.0.1:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
+ integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=
+
+inherits@2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1"
+ integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=
+
+ini@~1.3.0:
+ version "1.3.4"
+ resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e"
+ integrity sha1-BTfLedr1m1mhpRff9wbIbsA5Fi4=
+
+inline-source-map@~0.6.0:
+ version "0.6.2"
+ resolved "https://registry.yarnpkg.com/inline-source-map/-/inline-source-map-0.6.2.tgz#f9393471c18a79d1724f863fa38b586370ade2a5"
+ integrity sha1-+Tk0ccGKedFyT4Y/o4tYY3Ct4qU=
+ dependencies:
+ source-map "~0.5.3"
+
+insert-module-globals@^7.0.0:
+ version "7.0.1"
+ resolved "https://registry.yarnpkg.com/insert-module-globals/-/insert-module-globals-7.0.1.tgz#c03bf4e01cb086d5b5e5ace8ad0afe7889d638c3"
+ integrity sha1-wDv04BywhtW15azorQr+eInWOMM=
+ dependencies:
+ JSONStream "^1.0.3"
+ combine-source-map "~0.7.1"
+ concat-stream "~1.5.1"
+ is-buffer "^1.1.0"
+ lexical-scope "^1.2.0"
+ process "~0.11.0"
+ through2 "^2.0.0"
+ xtend "^4.0.0"
+
+invariant@^2.2.0:
+ version "2.2.2"
+ resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.2.tgz#9e1f56ac0acdb6bf303306f338be3b204ae60360"
+ integrity sha1-nh9WrArNtr8wMwbzOL47IErmA2A=
+ dependencies:
+ loose-envify "^1.0.0"
+
+is-arrayish@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
+ integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=
+
+is-binary-path@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898"
+ integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=
+ dependencies:
+ binary-extensions "^1.0.0"
+
+is-buffer@^1.0.2, is-buffer@^1.1.0:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.4.tgz#cfc86ccd5dc5a52fa80489111c6920c457e2d98b"
+ integrity sha1-z8hszV3FpS+oBIkRHGkgxFfi2Ys=
+
+is-builtin-module@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe"
+ integrity sha1-VAVy0096wxGfj3bDDLwbHgN6/74=
+ dependencies:
+ builtin-modules "^1.0.0"
+
+is-dotfile@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.2.tgz#2c132383f39199f8edc268ca01b9b007d205cc4d"
+ integrity sha1-LBMjg/ORmfjtwmjKAbmwB9IFzE0=
+
+is-equal-shallow@^0.1.3:
+ version "0.1.3"
+ resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534"
+ integrity sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=
+ dependencies:
+ is-primitive "^2.0.0"
+
+is-extendable@^0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89"
+ integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=
+
+is-extglob@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0"
+ integrity sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=
+
+is-finite@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa"
+ integrity sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=
+ dependencies:
+ number-is-nan "^1.0.0"
+
+is-fullwidth-code-point@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb"
+ integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs=
+ dependencies:
+ number-is-nan "^1.0.0"
+
+is-glob@^2.0.0, is-glob@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863"
+ integrity sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=
+ dependencies:
+ is-extglob "^1.0.0"
+
+is-my-json-valid@^2.12.4:
+ version "2.15.0"
+ resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.15.0.tgz#936edda3ca3c211fd98f3b2d3e08da43f7b2915b"
+ integrity sha1-k27do8o8IR/ZjzstPgjaQ/eykVs=
+ dependencies:
+ generate-function "^2.0.0"
+ generate-object-property "^1.1.0"
+ jsonpointer "^4.0.0"
+ xtend "^4.0.0"
+
+is-number@^2.0.2, is-number@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f"
+ integrity sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=
+ dependencies:
+ kind-of "^3.0.2"
+
+is-posix-bracket@^0.1.0:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4"
+ integrity sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=
+
+is-primitive@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575"
+ integrity sha1-IHurkWOEmcB7Kt8kCkGochADRXU=
+
+is-property@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84"
+ integrity sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=
+
+is-typedarray@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
+ integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=
+
+is-utf8@^0.2.0:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72"
+ integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=
+
+isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
+ integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=
+
+isarray@~0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf"
+ integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=
+
+isobject@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89"
+ integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=
+ dependencies:
+ isarray "1.0.0"
+
+isstream@~0.1.2:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
+ integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=
+
+jodid25519@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/jodid25519/-/jodid25519-1.0.2.tgz#06d4912255093419477d425633606e0e90782967"
+ integrity sha1-BtSRIlUJNBlHfUJWM2BuDpB4KWc=
+ dependencies:
+ jsbn "~0.1.0"
+
+js-tokens@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-2.0.0.tgz#79903f5563ee778cc1162e6dcf1a0027c97f9cb5"
+ integrity sha1-eZA/VWPud4zBFi5tzxoAJ8l/nLU=
+
+jsbn@~0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.0.tgz#650987da0dd74f4ebf5a11377a2aa2d273e97dfd"
+ integrity sha1-ZQmH2g3XT06/WhE3eiqi0nPpff0=
+
+jsesc@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b"
+ integrity sha1-RsP+yMGJKxKwgz25vHYiF226s0s=
+
+json-schema@0.2.3:
+ version "0.2.3"
+ resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13"
+ integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=
+
+json-stable-stringify@~0.0.0:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-0.0.1.tgz#611c23e814db375527df851193db59dd2af27f45"
+ integrity sha1-YRwj6BTbN1Un34URk9tZ3Sryf0U=
+ dependencies:
+ jsonify "~0.0.0"
+
+json-stringify-safe@~5.0.1:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"
+ integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=
+
+json5@^0.5.0:
+ version "0.5.1"
+ resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821"
+ integrity sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=
+
+jsonify@~0.0.0:
+ version "0.0.0"
+ resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73"
+ integrity sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=
+
+jsonparse@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.2.0.tgz#5c0c5685107160e72fe7489bddea0b44c2bc67bd"
+ integrity sha1-XAxWhRBxYOcv50ib3eoLRMK8Z70=
+
+jsonpointer@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.0.1.tgz#4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9"
+ integrity sha1-T9kss04OnbPInIYi7PUfm5eMbLk=
+
+jsprim@^1.2.2:
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.3.1.tgz#2a7256f70412a29ee3670aaca625994c4dcff252"
+ integrity sha1-KnJW9wQSop7jZwqspiWZTE3P8lI=
+ dependencies:
+ extsprintf "1.0.2"
+ json-schema "0.2.3"
+ verror "1.3.6"
+
+kind-of@^3.0.2:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.1.0.tgz#475d698a5e49ff5e53d14e3e732429dc8bf4cf47"
+ integrity sha1-R11pil5J/15T0U4+cyQp3Iv0z0c=
+ dependencies:
+ is-buffer "^1.0.2"
+
+labeled-stream-splicer@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/labeled-stream-splicer/-/labeled-stream-splicer-2.0.0.tgz#a52e1d138024c00b86b1c0c91f677918b8ae0a59"
+ integrity sha1-pS4dE4AkwAuGscDJH2d5GLiuClk=
+ dependencies:
+ inherits "^2.0.1"
+ isarray "~0.0.1"
+ stream-splicer "^2.0.0"
+
+lexical-scope@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/lexical-scope/-/lexical-scope-1.2.0.tgz#fcea5edc704a4b3a8796cdca419c3a0afaf22df4"
+ integrity sha1-/Ope3HBKSzqHls3KQZw6CvryLfQ=
+ dependencies:
+ astw "^2.0.0"
+
+load-json-file@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0"
+ integrity sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=
+ dependencies:
+ graceful-fs "^4.1.2"
+ parse-json "^2.2.0"
+ pify "^2.0.0"
+ pinkie-promise "^2.0.0"
+ strip-bom "^2.0.0"
+
+lodash.memoize@~3.0.3:
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-3.0.4.tgz#2dcbd2c287cbc0a55cc42328bd0c736150d53e3f"
+ integrity sha1-LcvSwofLwKVcxCMovQxzYVDVPj8=
+
+lodash.some@^4.6.0:
+ version "4.6.0"
+ resolved "https://registry.yarnpkg.com/lodash.some/-/lodash.some-4.6.0.tgz#1bb9f314ef6b8baded13b549169b2a945eb68e4d"
+ integrity sha1-G7nzFO9ri63tE7VJFpsqlF62jk0=
+
+lodash@^4.2.0:
+ version "4.17.4"
+ resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae"
+ integrity sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=
+
+loose-envify@^1.0.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.3.0.tgz#6b26248c42f6d4fa4b0d8542f78edfcde35642a8"
+ integrity sha1-ayYkjEL21PpLDYVC947fzeNWQqg=
+ dependencies:
+ js-tokens "^2.0.0"
+
+loud-rejection@^1.0.0:
+ version "1.6.0"
+ resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f"
+ integrity sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=
+ dependencies:
+ currently-unhandled "^0.4.1"
+ signal-exit "^3.0.0"
+
+map-obj@^1.0.0, map-obj@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d"
+ integrity sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=
+
+meow@^3.3.0, meow@^3.6.0:
+ version "3.7.0"
+ resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb"
+ integrity sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=
+ dependencies:
+ camelcase-keys "^2.0.0"
+ decamelize "^1.1.2"
+ loud-rejection "^1.0.0"
+ map-obj "^1.0.1"
+ minimist "^1.1.3"
+ normalize-package-data "^2.3.4"
+ object-assign "^4.0.1"
+ read-pkg-up "^1.0.1"
+ redent "^1.0.0"
+ trim-newlines "^1.0.0"
+
+micromatch@^2.1.5:
+ version "2.3.11"
+ resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565"
+ integrity sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=
+ dependencies:
+ arr-diff "^2.0.0"
+ array-unique "^0.2.1"
+ braces "^1.8.2"
+ expand-brackets "^0.1.4"
+ extglob "^0.3.1"
+ filename-regex "^2.0.0"
+ is-extglob "^1.0.0"
+ is-glob "^2.0.1"
+ kind-of "^3.0.2"
+ normalize-path "^2.0.1"
+ object.omit "^2.0.0"
+ parse-glob "^3.0.4"
+ regex-cache "^0.4.2"
+
+mime-db@~1.25.0:
+ version "1.25.0"
+ resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.25.0.tgz#c18dbd7c73a5dbf6f44a024dc0d165a1e7b1c392"
+ integrity sha1-wY29fHOl2/b0SgJNwNFloeexw5I=
+
+mime-types@^2.1.12, mime-types@~2.1.7:
+ version "2.1.13"
+ resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.13.tgz#e07aaa9c6c6b9a7ca3012c69003ad25a39e92a88"
+ integrity sha1-4HqqnGxrmnyjASxpADrSWjnpKog=
+ dependencies:
+ mime-db "~1.25.0"
+
+"minimatch@2 || 3", minimatch@^3.0.0, minimatch@^3.0.2:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.3.tgz#2a4e4090b96b2db06a9d7df01055a62a77c9b774"
+ integrity sha1-Kk5AkLlrLbBqnX3wEFWmKnfJt3Q=
+ dependencies:
+ brace-expansion "^1.0.0"
+
+minimist@0.0.8:
+ version "0.0.8"
+ resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d"
+ integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=
+
+minimist@^1.1.0, minimist@^1.1.3, minimist@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
+ integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=
+
+"mkdirp@>=0.5 0", mkdirp@^0.5.1, mkdirp@~0.5.1:
+ version "0.5.1"
+ resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903"
+ integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=
+ dependencies:
+ minimist "0.0.8"
+
+module-deps@^4.0.8:
+ version "4.0.8"
+ resolved "https://registry.yarnpkg.com/module-deps/-/module-deps-4.0.8.tgz#55fd70623399706c3288bef7a609ff1e8c0ed2bb"
+ integrity sha1-Vf1wYjOZcGwyiL73pgn/HowO0rs=
+ dependencies:
+ JSONStream "^1.0.3"
+ browser-resolve "^1.7.0"
+ cached-path-relative "^1.0.0"
+ concat-stream "~1.5.0"
+ defined "^1.0.0"
+ detective "^4.0.0"
+ duplexer2 "^0.1.2"
+ inherits "^2.0.1"
+ parents "^1.0.0"
+ readable-stream "^2.0.2"
+ resolve "^1.1.3"
+ stream-combiner2 "^1.1.1"
+ subarg "^1.0.0"
+ through2 "^2.0.0"
+ xtend "^4.0.0"
+
+ms@0.7.1:
+ version "0.7.1"
+ resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.1.tgz#9cd13c03adbff25b65effde7ce864ee952017098"
+ integrity sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=
+
+nan@^2.3.0:
+ version "2.5.0"
+ resolved "https://registry.yarnpkg.com/nan/-/nan-2.5.0.tgz#aa8f1e34531d807e9e27755b234b4a6ec0c152a8"
+ integrity sha1-qo8eNFMdgH6eJ3VbI0tKbsDBUqg=
+
+node-pre-gyp@^0.6.29:
+ version "0.6.32"
+ resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.32.tgz#fc452b376e7319b3d255f5f34853ef6fd8fe1fd5"
+ integrity sha1-/EUrN25zGbPSVfXzSFPvb9j+H9U=
+ dependencies:
+ mkdirp "~0.5.1"
+ nopt "~3.0.6"
+ npmlog "^4.0.1"
+ rc "~1.1.6"
+ request "^2.79.0"
+ rimraf "~2.5.4"
+ semver "~5.3.0"
+ tar "~2.2.1"
+ tar-pack "~3.3.0"
+
+nopt@~3.0.6:
+ version "3.0.6"
+ resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9"
+ integrity sha1-xkZdvwirzU2zWTF/eaxopkayj/k=
+ dependencies:
+ abbrev "1"
+
+normalize-package-data@^2.3.2, normalize-package-data@^2.3.4:
+ version "2.3.5"
+ resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.3.5.tgz#8d924f142960e1777e7ffe170543631cc7cb02df"
+ integrity sha1-jZJPFClg4Xd+f/4XBUNjHMfLAt8=
+ dependencies:
+ hosted-git-info "^2.1.4"
+ is-builtin-module "^1.0.0"
+ semver "2 || 3 || 4 || 5"
+ validate-npm-package-license "^3.0.1"
+
+normalize-path@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.0.1.tgz#47886ac1662760d4261b7d979d241709d3ce3f7a"
+ integrity sha1-R4hqwWYnYNQmG32XnSQXCdPOP3o=
+
+npmlog@^4.0.1:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.0.2.tgz#d03950e0e78ce1527ba26d2a7592e9348ac3e75f"
+ integrity sha1-0DlQ4OeM4VJ7om0qdZLpNIrD518=
+ dependencies:
+ are-we-there-yet "~1.1.2"
+ console-control-strings "~1.1.0"
+ gauge "~2.7.1"
+ set-blocking "~2.0.0"
+
+number-is-nan@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d"
+ integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=
+
+oauth-sign@~0.8.1:
+ version "0.8.2"
+ resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43"
+ integrity sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=
+
+object-assign@^4.0.1, object-assign@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.0.tgz#7a3b3d0e98063d43f4c03f2e8ae6cd51a86883a0"
+ integrity sha1-ejs9DpgGPUP0wD8uiubNUahog6A=
+
+object.omit@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa"
+ integrity sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=
+ dependencies:
+ for-own "^0.1.4"
+ is-extendable "^0.1.1"
+
+once@^1.3.0, once@~1.3.3:
+ version "1.3.3"
+ resolved "https://registry.yarnpkg.com/once/-/once-1.3.3.tgz#b2e261557ce4c314ec8304f3fa82663e4297ca20"
+ integrity sha1-suJhVXzkwxTsgwTz+oJmPkKXyiA=
+ dependencies:
+ wrappy "1"
+
+os-browserify@~0.1.1:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.1.2.tgz#49ca0293e0b19590a5f5de10c7f265a617d8fe54"
+ integrity sha1-ScoCk+CxlZCl9d4Qx/JlphfY/lQ=
+
+os-homedir@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3"
+ integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M=
+
+os-tmpdir@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
+ integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=
+
+output-file-sync@^1.1.0:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/output-file-sync/-/output-file-sync-1.1.2.tgz#d0a33eefe61a205facb90092e826598d5245ce76"
+ integrity sha1-0KM+7+YaIF+suQCS6CZZjVJFznY=
+ dependencies:
+ graceful-fs "^4.1.4"
+ mkdirp "^0.5.1"
+ object-assign "^4.1.0"
+
+pako@~0.2.0:
+ version "0.2.9"
+ resolved "https://registry.yarnpkg.com/pako/-/pako-0.2.9.tgz#f3f7522f4ef782348da8161bad9ecfd51bf83a75"
+ integrity sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=
+
+parents@^1.0.0, parents@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/parents/-/parents-1.0.1.tgz#fedd4d2bf193a77745fe71e371d73c3307d9c751"
+ integrity sha1-/t1NK/GTp3dF/nHjcdc8MwfZx1E=
+ dependencies:
+ path-platform "~0.11.15"
+
+parse-glob@^3.0.4:
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c"
+ integrity sha1-ssN2z7EfNVE7rdFz7wu246OIORw=
+ dependencies:
+ glob-base "^0.3.0"
+ is-dotfile "^1.0.0"
+ is-extglob "^1.0.0"
+ is-glob "^2.0.0"
+
+parse-json@^2.2.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9"
+ integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=
+ dependencies:
+ error-ex "^1.2.0"
+
+path-browserify@~0.0.0:
+ version "0.0.0"
+ resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a"
+ integrity sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=
+
+path-exists@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b"
+ integrity sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=
+ dependencies:
+ pinkie-promise "^2.0.0"
+
+path-is-absolute@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
+ integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
+
+path-platform@~0.11.15:
+ version "0.11.15"
+ resolved "https://registry.yarnpkg.com/path-platform/-/path-platform-0.11.15.tgz#e864217f74c36850f0852b78dc7bf7d4a5721bf2"
+ integrity sha1-6GQhf3TDaFDwhSt43Hv31KVyG/I=
+
+path-type@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441"
+ integrity sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=
+ dependencies:
+ graceful-fs "^4.1.2"
+ pify "^2.0.0"
+ pinkie-promise "^2.0.0"
+
+pbkdf2-compat@2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/pbkdf2-compat/-/pbkdf2-compat-2.0.1.tgz#b6e0c8fa99494d94e0511575802a59a5c142f288"
+ integrity sha1-tuDI+plJTZTgURV1gCpZpcFC8og=
+
+pify@^2.0.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
+ integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw=
+
+pinkie-promise@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa"
+ integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o=
+ dependencies:
+ pinkie "^2.0.0"
+
+pinkie@^2.0.0:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870"
+ integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA=
+
+preserve@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b"
+ integrity sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=
+
+pretty-bytes-cli@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/pretty-bytes-cli/-/pretty-bytes-cli-2.0.0.tgz#e705662cffdc9c75291835333bc2f89ad3c033cf"
+ integrity sha1-5wVmLP/cnHUpGDUzO8L4mtPAM88=
+ dependencies:
+ get-stdin "^5.0.1"
+ meow "^3.6.0"
+ pretty-bytes "^4.0.0"
+
+pretty-bytes@^4.0.0:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-4.0.2.tgz#b2bf82e7350d65c6c33aa95aaa5a4f6327f61cd9"
+ integrity sha1-sr+C5zUNZcbDOqlaqlpPYyf2HNk=
+
+private@^0.1.6:
+ version "0.1.6"
+ resolved "https://registry.yarnpkg.com/private/-/private-0.1.6.tgz#55c6a976d0f9bafb9924851350fe47b9b5fbb7c1"
+ integrity sha1-VcapdtD5uvuZJIUTUP5HubX7t8E=
+
+process-nextick-args@~1.0.6:
+ version "1.0.7"
+ resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3"
+ integrity sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=
+
+process@~0.11.0:
+ version "0.11.9"
+ resolved "https://registry.yarnpkg.com/process/-/process-0.11.9.tgz#7bd5ad21aa6253e7da8682264f1e11d11c0318c1"
+ integrity sha1-e9WtIapiU+fahoImTx4R0RwDGME=
+
+punycode@1.3.2:
+ version "1.3.2"
+ resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d"
+ integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=
+
+punycode@^1.3.2, punycode@^1.4.1:
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e"
+ integrity sha1-wNWmOycYgArY4esPpSachN1BhF4=
+
+qs@~6.3.0:
+ version "6.3.0"
+ resolved "https://registry.yarnpkg.com/qs/-/qs-6.3.0.tgz#f403b264f23bc01228c74131b407f18d5ea5d442"
+ integrity sha1-9AOyZPI7wBIox0ExtAfxjV6l1EI=
+
+querystring-es3@~0.2.0:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73"
+ integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=
+
+querystring@0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620"
+ integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=
+
+randomatic@^1.1.3:
+ version "1.1.6"
+ resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.6.tgz#110dcabff397e9dcff7c0789ccc0a49adf1ec5bb"
+ integrity sha1-EQ3Kv/OX6dz/fAeJzMCkmt8exbs=
+ dependencies:
+ is-number "^2.0.2"
+ kind-of "^3.0.2"
+
+rc@~1.1.6:
+ version "1.1.6"
+ resolved "https://registry.yarnpkg.com/rc/-/rc-1.1.6.tgz#43651b76b6ae53b5c802f1151fa3fc3b059969c9"
+ integrity sha1-Q2UbdrauU7XIAvEVH6P8OwWZack=
+ dependencies:
+ deep-extend "~0.4.0"
+ ini "~1.3.0"
+ minimist "^1.2.0"
+ strip-json-comments "~1.0.4"
+
+read-only-stream@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/read-only-stream/-/read-only-stream-2.0.0.tgz#2724fd6a8113d73764ac288d4386270c1dbf17f0"
+ integrity sha1-JyT9aoET1zdkrCiNQ4YnDB2/F/A=
+ dependencies:
+ readable-stream "^2.0.2"
+
+read-pkg-up@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02"
+ integrity sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=
+ dependencies:
+ find-up "^1.0.0"
+ read-pkg "^1.0.0"
+
+read-pkg@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28"
+ integrity sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=
+ dependencies:
+ load-json-file "^1.0.0"
+ normalize-package-data "^2.3.2"
+ path-type "^1.0.0"
+
+"readable-stream@^2.0.0 || ^1.1.13", readable-stream@^2.0.2, readable-stream@^2.1.0, readable-stream@^2.1.5:
+ version "2.2.2"
+ resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.2.2.tgz#a9e6fec3c7dda85f8bb1b3ba7028604556fc825e"
+ integrity sha1-qeb+w8fdqF+LsbO6cChgRVb8gl4=
+ dependencies:
+ buffer-shims "^1.0.0"
+ core-util-is "~1.0.0"
+ inherits "~2.0.1"
+ isarray "~1.0.0"
+ process-nextick-args "~1.0.6"
+ string_decoder "~0.10.x"
+ util-deprecate "~1.0.1"
+
+readable-stream@~2.0.0:
+ version "2.0.6"
+ resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.0.6.tgz#8f90341e68a53ccc928788dacfcd11b36eb9b78e"
+ integrity sha1-j5A0HmilPMySh4jaz80Rs265t44=
+ dependencies:
+ core-util-is "~1.0.0"
+ inherits "~2.0.1"
+ isarray "~1.0.0"
+ process-nextick-args "~1.0.6"
+ string_decoder "~0.10.x"
+ util-deprecate "~1.0.1"
+
+readable-stream@~2.1.4:
+ version "2.1.5"
+ resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.1.5.tgz#66fa8b720e1438b364681f2ad1a63c618448c9d0"
+ integrity sha1-ZvqLcg4UOLNkaB8q0aY8YYRIydA=
+ dependencies:
+ buffer-shims "^1.0.0"
+ core-util-is "~1.0.0"
+ inherits "~2.0.1"
+ isarray "~1.0.0"
+ process-nextick-args "~1.0.6"
+ string_decoder "~0.10.x"
+ util-deprecate "~1.0.1"
+
+readdirp@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78"
+ integrity sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=
+ dependencies:
+ graceful-fs "^4.1.2"
+ minimatch "^3.0.2"
+ readable-stream "^2.0.2"
+ set-immediate-shim "^1.0.1"
+
+redent@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde"
+ integrity sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=
+ dependencies:
+ indent-string "^2.1.0"
+ strip-indent "^1.0.1"
+
+regenerator-runtime@^0.10.0:
+ version "0.10.1"
+ resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.1.tgz#257f41961ce44558b18f7814af48c17559f9faeb"
+ integrity sha1-JX9BlhzkRVixj3gUr0jBdVn5+us=
+
+regex-cache@^0.4.2:
+ version "0.4.3"
+ resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.3.tgz#9b1a6c35d4d0dfcef5711ae651e8e9d3d7114145"
+ integrity sha1-mxpsNdTQ3871cRrmUejp09cRQUU=
+ dependencies:
+ is-equal-shallow "^0.1.3"
+ is-primitive "^2.0.0"
+
+repeat-element@^1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a"
+ integrity sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=
+
+repeat-string@^1.5.2:
+ version "1.6.1"
+ resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637"
+ integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc=
+
+repeating@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda"
+ integrity sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=
+ dependencies:
+ is-finite "^1.0.0"
+
+request@^2.79.0:
+ version "2.79.0"
+ resolved "https://registry.yarnpkg.com/request/-/request-2.79.0.tgz#4dfe5bf6be8b8cdc37fcf93e04b65577722710de"
+ integrity sha1-Tf5b9r6LjNw3/Pk+BLZVd3InEN4=
+ dependencies:
+ aws-sign2 "~0.6.0"
+ aws4 "^1.2.1"
+ caseless "~0.11.0"
+ combined-stream "~1.0.5"
+ extend "~3.0.0"
+ forever-agent "~0.6.1"
+ form-data "~2.1.1"
+ har-validator "~2.0.6"
+ hawk "~3.1.3"
+ http-signature "~1.1.0"
+ is-typedarray "~1.0.0"
+ isstream "~0.1.2"
+ json-stringify-safe "~5.0.1"
+ mime-types "~2.1.7"
+ oauth-sign "~0.8.1"
+ qs "~6.3.0"
+ stringstream "~0.0.4"
+ tough-cookie "~2.3.0"
+ tunnel-agent "~0.4.1"
+ uuid "^3.0.0"
+
+resolve@1.1.7:
+ version "1.1.7"
+ resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b"
+ integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=
+
+resolve@^1.1.3, resolve@^1.1.4:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.2.0.tgz#9589c3f2f6149d1417a40becc1663db6ec6bc26c"
+ integrity sha1-lYnD8vYUnRQXpAvswWY9tuxrwmw=
+
+rimraf@2, rimraf@~2.5.1, rimraf@~2.5.4:
+ version "2.5.4"
+ resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.5.4.tgz#96800093cbf1a0c86bd95b4625467535c29dfa04"
+ integrity sha1-loAAk8vxoMhr2VtGJUZ1NcKd+gQ=
+ dependencies:
+ glob "^7.0.5"
+
+ripemd160@0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-0.2.0.tgz#2bf198bde167cacfa51c0a928e84b68bbe171fce"
+ integrity sha1-K/GYveFnys+lHAqSjoS2i74XH84=
+
+"semver@2 || 3 || 4 || 5", semver@~5.3.0:
+ version "5.3.0"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f"
+ integrity sha1-myzl094C0XxgEq0yaqa00M9U+U8=
+
+set-blocking@~2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
+ integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc=
+
+set-immediate-shim@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61"
+ integrity sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=
+
+sha.js@2.2.6:
+ version "2.2.6"
+ resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.2.6.tgz#17ddeddc5f722fb66501658895461977867315ba"
+ integrity sha1-F93t3F9yL7ZlAWWIlUYZd4ZzFbo=
+
+sha.js@~2.4.4:
+ version "2.4.8"
+ resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.8.tgz#37068c2c476b6baf402d14a49c67f597921f634f"
+ integrity sha1-NwaMLEdra69ALRSknGf1l5IfY08=
+ dependencies:
+ inherits "^2.0.1"
+
+shasum@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/shasum/-/shasum-1.0.2.tgz#e7012310d8f417f4deb5712150e5678b87ae565f"
+ integrity sha1-5wEjENj0F/TetXEhUOVni4euVl8=
+ dependencies:
+ json-stable-stringify "~0.0.0"
+ sha.js "~2.4.4"
+
+shell-quote@^1.6.1:
+ version "1.6.1"
+ resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.6.1.tgz#f4781949cce402697127430ea3b3c5476f481767"
+ integrity sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=
+ dependencies:
+ array-filter "~0.0.0"
+ array-map "~0.0.0"
+ array-reduce "~0.0.0"
+ jsonify "~0.0.0"
+
+signal-exit@^3.0.0:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d"
+ integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=
+
+slash@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55"
+ integrity sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=
+
+sntp@1.x.x:
+ version "1.0.9"
+ resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198"
+ integrity sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=
+ dependencies:
+ hoek "2.x.x"
+
+source-map-support@^0.4.2:
+ version "0.4.8"
+ resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.8.tgz#4871918d8a3af07289182e974e32844327b2e98b"
+ integrity sha1-SHGRjYo68HKJGC6XTjKEQyey6Ys=
+ dependencies:
+ source-map "^0.5.3"
+
+source-map@^0.5.0, source-map@^0.5.3, source-map@~0.5.3:
+ version "0.5.6"
+ resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412"
+ integrity sha1-dc449SvwczxafwwRjYEzSiu19BI=
+
+spdx-correct@~1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-1.0.2.tgz#4b3073d933ff51f3912f03ac5519498a4150db40"
+ integrity sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=
+ dependencies:
+ spdx-license-ids "^1.0.2"
+
+spdx-expression-parse@~1.0.0:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz#9bdf2f20e1f40ed447fbe273266191fced51626c"
+ integrity sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=
+
+spdx-license-ids@^1.0.2:
+ version "1.2.2"
+ resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz#c9df7a3424594ade6bd11900d596696dc06bac57"
+ integrity sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=
+
+sshpk@^1.7.0:
+ version "1.10.1"
+ resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.10.1.tgz#30e1a5d329244974a1af61511339d595af6638b0"
+ integrity sha1-MOGl0ykkSXShr2FREznVla9mOLA=
+ dependencies:
+ asn1 "~0.2.3"
+ assert-plus "^1.0.0"
+ dashdash "^1.12.0"
+ getpass "^0.1.1"
+ optionalDependencies:
+ bcrypt-pbkdf "^1.0.0"
+ ecc-jsbn "~0.1.1"
+ jodid25519 "^1.0.0"
+ jsbn "~0.1.0"
+ tweetnacl "~0.14.0"
+
+stream-browserify@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.1.tgz#66266ee5f9bdb9940a4e4514cafb43bb71e5c9db"
+ integrity sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=
+ dependencies:
+ inherits "~2.0.1"
+ readable-stream "^2.0.2"
+
+stream-combiner2@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/stream-combiner2/-/stream-combiner2-1.1.1.tgz#fb4d8a1420ea362764e21ad4780397bebcb41cbe"
+ integrity sha1-+02KFCDqNidk4hrUeAOXvry0HL4=
+ dependencies:
+ duplexer2 "~0.1.0"
+ readable-stream "^2.0.2"
+
+stream-http@^2.0.0:
+ version "2.6.0"
+ resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.6.0.tgz#adf3309ced17624ebfb7ef13e6ac4cfe405a8b12"
+ integrity sha1-rfMwnO0XYk6/t+8T5qxM/kBaixI=
+ dependencies:
+ builtin-status-codes "^3.0.0"
+ inherits "^2.0.1"
+ readable-stream "^2.1.0"
+ to-arraybuffer "^1.0.0"
+ xtend "^4.0.0"
+
+stream-splicer@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/stream-splicer/-/stream-splicer-2.0.0.tgz#1b63be438a133e4b671cc1935197600175910d83"
+ integrity sha1-G2O+Q4oTPktnHMGTUZdgAXWRDYM=
+ dependencies:
+ inherits "^2.0.1"
+ readable-stream "^2.0.2"
+
+string-width@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3"
+ integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=
+ dependencies:
+ code-point-at "^1.0.0"
+ is-fullwidth-code-point "^1.0.0"
+ strip-ansi "^3.0.0"
+
+string_decoder@~0.10.0, string_decoder@~0.10.x:
+ version "0.10.31"
+ resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94"
+ integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=
+
+stringstream@~0.0.4:
+ version "0.0.5"
+ resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878"
+ integrity sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=
+
+strip-ansi@^3.0.0, strip-ansi@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf"
+ integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=
+ dependencies:
+ ansi-regex "^2.0.0"
+
+strip-bom@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e"
+ integrity sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=
+ dependencies:
+ is-utf8 "^0.2.0"
+
+strip-indent@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2"
+ integrity sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=
+ dependencies:
+ get-stdin "^4.0.1"
+
+strip-json-comments@~1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-1.0.4.tgz#1e15fbcac97d3ee99bf2d73b4c656b082bbafb91"
+ integrity sha1-HhX7ysl9Pumb8tc7TGVrCCu6+5E=
+
+subarg@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/subarg/-/subarg-1.0.0.tgz#f62cf17581e996b48fc965699f54c06ae268b8d2"
+ integrity sha1-9izxdYHplrSPyWVpn1TAauJouNI=
+ dependencies:
+ minimist "^1.1.0"
+
+supports-color@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-0.2.0.tgz#d92de2694eb3f67323973d7ae3d8b55b4c22190a"
+ integrity sha1-2S3iaU6z9nMjlz1649i1W0wiGQo=
+
+supports-color@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7"
+ integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=
+
+syntax-error@^1.1.1:
+ version "1.1.6"
+ resolved "https://registry.yarnpkg.com/syntax-error/-/syntax-error-1.1.6.tgz#b4549706d386cc1c1dc7c2423f18579b6cade710"
+ integrity sha1-tFSXBtOGzBwdx8JCPxhXm2yt5xA=
+ dependencies:
+ acorn "^2.7.0"
+
+tar-pack@~3.3.0:
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.3.0.tgz#30931816418f55afc4d21775afdd6720cee45dae"
+ integrity sha1-MJMYFkGPVa/E0hd1r91nIM7kXa4=
+ dependencies:
+ debug "~2.2.0"
+ fstream "~1.0.10"
+ fstream-ignore "~1.0.5"
+ once "~1.3.3"
+ readable-stream "~2.1.4"
+ rimraf "~2.5.1"
+ tar "~2.2.1"
+ uid-number "~0.0.6"
+
+tar@~2.2.1:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1"
+ integrity sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=
+ dependencies:
+ block-stream "*"
+ fstream "^1.0.2"
+ inherits "2"
+
+through2@^2.0.0:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.3.tgz#0004569b37c7c74ba39c43f3ced78d1ad94140be"
+ integrity sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=
+ dependencies:
+ readable-stream "^2.1.5"
+ xtend "~4.0.1"
+
+"through@>=2.2.7 <3":
+ version "2.3.8"
+ resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
+ integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=
+
+timers-browserify@^1.0.1:
+ version "1.4.2"
+ resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-1.4.2.tgz#c9c58b575be8407375cb5e2462dacee74359f41d"
+ integrity sha1-ycWLV1voQHN1y14kYtrO50NZ9B0=
+ dependencies:
+ process "~0.11.0"
+
+to-arraybuffer@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43"
+ integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=
+
+to-fast-properties@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.2.tgz#f3f5c0c3ba7299a7ef99427e44633257ade43320"
+ integrity sha1-8/XAw7pymafvmUJ+RGMyV63kMyA=
+
+tough-cookie@~2.3.0:
+ version "2.3.2"
+ resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.2.tgz#f081f76e4c85720e6c37a5faced737150d84072a"
+ integrity sha1-8IH3bkyFcg5sN6X6ztc3FQ2EByo=
+ dependencies:
+ punycode "^1.4.1"
+
+trim-newlines@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613"
+ integrity sha1-WIeWa7WCpFA6QetST301ARgVphM=
+
+tty-browserify@~0.0.0:
+ version "0.0.0"
+ resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6"
+ integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=
+
+tunnel-agent@~0.4.1:
+ version "0.4.3"
+ resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.4.3.tgz#6373db76909fe570e08d73583365ed828a74eeeb"
+ integrity sha1-Y3PbdpCf5XDgjXNYM2Xtgop07us=
+
+tweetnacl@^0.14.3, tweetnacl@~0.14.0:
+ version "0.14.5"
+ resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64"
+ integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=
+
+typedarray@~0.0.5:
+ version "0.0.6"
+ resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
+ integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=
+
+uid-number@~0.0.6:
+ version "0.0.6"
+ resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81"
+ integrity sha1-DqEOgDXo61uOREnwbaHHMGY7qoE=
+
+umd@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/umd/-/umd-3.0.1.tgz#8ae556e11011f63c2596708a8837259f01b3d60e"
+ integrity sha1-iuVW4RAR9jwllnCKiDclnwGz1g4=
+
+url@~0.11.0:
+ version "0.11.0"
+ resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1"
+ integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=
+ dependencies:
+ punycode "1.3.2"
+ querystring "0.2.0"
+
+user-home@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/user-home/-/user-home-1.1.1.tgz#2b5be23a32b63a7c9deb8d0f28d485724a3df190"
+ integrity sha1-K1viOjK2Onyd640PKNSFcko98ZA=
+
+util-deprecate@~1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
+ integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=
+
+util@0.10.3, util@~0.10.1:
+ version "0.10.3"
+ resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9"
+ integrity sha1-evsa/lCAUkZInj23/g7TeTNqwPk=
+ dependencies:
+ inherits "2.0.1"
+
+uuid@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.0.1.tgz#6544bba2dfda8c1cf17e629a3a305e2bb1fee6c1"
+ integrity sha1-ZUS7ot/ajBzxfmKaOjBeK7H+5sE=
+
+v8flags@^2.0.10:
+ version "2.0.11"
+ resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-2.0.11.tgz#bca8f30f0d6d60612cc2c00641e6962d42ae6881"
+ integrity sha1-vKjzDw1tYGEswsAGQeaWLUKuaIE=
+ dependencies:
+ user-home "^1.1.1"
+
+validate-npm-package-license@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz#2804babe712ad3379459acfbe24746ab2c303fbc"
+ integrity sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=
+ dependencies:
+ spdx-correct "~1.0.0"
+ spdx-expression-parse "~1.0.0"
+
+verror@1.3.6:
+ version "1.3.6"
+ resolved "https://registry.yarnpkg.com/verror/-/verror-1.3.6.tgz#cff5df12946d297d2baaefaa2689e25be01c005c"
+ integrity sha1-z/XfEpRtKX0rqu+qJoniW+AcAFw=
+ dependencies:
+ extsprintf "1.0.2"
+
+vm-browserify@~0.0.1:
+ version "0.0.4"
+ resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-0.0.4.tgz#5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73"
+ integrity sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=
+ dependencies:
+ indexof "0.0.1"
+
+wide-align@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.0.tgz#40edde802a71fea1f070da3e62dcda2e7add96ad"
+ integrity sha1-QO3egCpx/qHwcNo+YtzaLnrdlq0=
+ dependencies:
+ string-width "^1.0.1"
+
+wrappy@1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
+ integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
+
+xtend@^4.0.0, xtend@~4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af"
+ integrity sha1-pcbVMr5lbiPbgg77lDofBJmNY68=
diff --git a/date-fns/examples/flow/.babelrc b/date-fns/examples/flow/.babelrc
new file mode 100644
index 0000000..d42eaa2
--- /dev/null
+++ b/date-fns/examples/flow/.babelrc
@@ -0,0 +1,3 @@
+{
+ "plugins": ["transform-flow-strip-types"]
+}
diff --git a/date-fns/examples/flow/.flowconfig b/date-fns/examples/flow/.flowconfig
new file mode 100644
index 0000000..3f7e2ef
--- /dev/null
+++ b/date-fns/examples/flow/.flowconfig
@@ -0,0 +1,2 @@
+[include]
+./node_modules/date-fns/
diff --git a/date-fns/examples/flow/README.md b/date-fns/examples/flow/README.md
new file mode 100644
index 0000000..a41934d
--- /dev/null
+++ b/date-fns/examples/flow/README.md
@@ -0,0 +1,12 @@
+# Usage With flow
+
+See [example.js.flow](./example.js.flow), [fp.js.flow](./fp.js.flow) and [misc.js.flow](./misc.js.flow) for source code examples.
+
+See [package.json scripts](./package.json) for CLI usage.
+
+## Build Example
+
+```sh
+yarn
+yarn run build
+```
diff --git a/date-fns/examples/flow/constants.js.flow b/date-fns/examples/flow/constants.js.flow
new file mode 100644
index 0000000..28d3317
--- /dev/null
+++ b/date-fns/examples/flow/constants.js.flow
@@ -0,0 +1,11 @@
+// @flow
+
+const dateFns = require('date-fns')
+const constants = require('date-fns/constants')
+const { minTime: fpMinTime } = require('date-fns/fp')
+
+console.log(
+ dateFns.maxTime === 8640000000000000 &&
+ dateFns.minTime === constants.minTime &&
+ constants.minTime === fpMinTime
+)
diff --git a/date-fns/examples/flow/example.js.flow b/date-fns/examples/flow/example.js.flow
new file mode 100644
index 0000000..3b06f0a
--- /dev/null
+++ b/date-fns/examples/flow/example.js.flow
@@ -0,0 +1,8 @@
+// @flow
+
+const format = require('date-fns/format')
+
+const dateString : Date = new Date(2017, 0, 25, 21, 28, 15)
+const formatString : string = 'dd.MM.yyyy HH:mm:ss'
+const result : string = format(dateString, formatString)
+console.log(result === '25.01.2017 21:28:15')
diff --git a/date-fns/examples/flow/fp.js.flow b/date-fns/examples/flow/fp.js.flow
new file mode 100644
index 0000000..3f35e53
--- /dev/null
+++ b/date-fns/examples/flow/fp.js.flow
@@ -0,0 +1,19 @@
+const addYears = require('date-fns/fp/addYears')
+const dateFns = require('date-fns/fp')
+const formatWithOptions = dateFns.formatWithOptions
+const eo = require('date-fns/locale/eo')
+
+const addFiveYears = addYears(5)
+const dateToString = formatWithOptions({ locale: eo }, 'd MMMM yyyy')
+
+const dates: Date[] = [
+ new Date(2017, 0 /* Jan */, 1),
+ new Date(2017, 1 /* Feb */, 11),
+ new Date(2017, 6 /* Jul */, 2)
+]
+
+const formattedDates: string = dates
+ .map(date => dateToString(addFiveYears(date)))
+ .join(', ')
+
+console.log(formattedDates === '1 januaro 2022, 11 februaro 2022, 2 julio 2022')
diff --git a/date-fns/examples/flow/misc.js.flow b/date-fns/examples/flow/misc.js.flow
new file mode 100644
index 0000000..8a5d6c7
--- /dev/null
+++ b/date-fns/examples/flow/misc.js.flow
@@ -0,0 +1,9 @@
+// @flow
+
+const format = require('date-fns').format
+const eo = require('date-fns/locale/eo')
+
+const dateString : Date = new Date(2017, 0, 25, 21, 28, 15)
+const formatString : string = 'dd.MM.yyyy HH:mm:ss'
+const result : string = format(new Date(2017, 0, 25, 21, 28, 15), 'eeee, dd MMMM HH:mm:ss', {locale: eo})
+console.log(result === 'merkredo, 25 januaro 21:28:15')
diff --git a/date-fns/examples/flow/package.json b/date-fns/examples/flow/package.json
new file mode 100644
index 0000000..67c3fb9
--- /dev/null
+++ b/date-fns/examples/flow/package.json
@@ -0,0 +1,28 @@
+{
+ "name": "date-fns-example-flow",
+ "version": "0.1.0",
+ "description": "Example of date-fns usage with flow",
+ "main": "example.js.flow",
+ "author": "Sasha Koss <koss@nocorp.me>",
+ "license": "MIT",
+ "dependencies": {
+ "babel-cli": "^6.22.2",
+ "babel-plugin-transform-flow-strip-types": "^6.22.0",
+ "flow-bin": "^0.38.0"
+ },
+ "scripts": {
+ "build": "yarn run build-date-fns && yarn run flow-check && yarn run build-babel",
+ "flow-check": "flow check",
+ "build-date-fns": "env PACKAGE_OUTPUT_PATH=\"$(pwd)/node_modules/date-fns\" ../../scripts/build/package.sh",
+ "build-babel": "yarn run build-babel-example && yarn run build-babel-fp && yarn run build-babel-misc && yarn build-babel-constants",
+ "build-babel-example": "mkdir -p dist && babel example.js.flow --out-file dist/example.js",
+ "build-babel-fp": "mkdir -p dist && babel fp.js.flow --out-file dist/fp.js",
+ "build-babel-misc": "mkdir -p dist && babel misc.js.flow --out-file dist/misc.js",
+ "build-babel-constants": "mkdir -p dist && babel constants.js.flow --out-file dist/constants.js",
+ "test": "yarn run test-example && yarn run test-fp && yarn run test-misc && yarn run test-constants",
+ "test-example": "test $(env TZ=UTC node ./dist/example.js) = true",
+ "test-fp": "test $(env TZ=UTC node ./dist/fp.js) = true",
+ "test-misc": "test $(env TZ=UTC node ./dist/misc.js) = true",
+ "test-constants": "test $(node ./dist/constants.js) = true"
+ }
+}
diff --git a/date-fns/examples/flow/yarn.lock b/date-fns/examples/flow/yarn.lock
new file mode 100644
index 0000000..db8f081
--- /dev/null
+++ b/date-fns/examples/flow/yarn.lock
@@ -0,0 +1,1432 @@
+# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
+# yarn lockfile v1
+
+
+abbrev@1:
+ version "1.0.9"
+ resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.0.9.tgz#91b4792588a7738c25f35dd6f63752a2f8776135"
+ integrity sha1-kbR5JYinc4wl813W9jdSovh3YTU=
+
+ansi-regex@^2.0.0:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df"
+ integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8=
+
+ansi-styles@^2.2.1:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe"
+ integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=
+
+anymatch@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.0.tgz#a3e52fa39168c825ff57b0248126ce5a8ff95507"
+ integrity sha1-o+Uvo5FoyCX/V7AkgSbOWo/5VQc=
+ dependencies:
+ arrify "^1.0.0"
+ micromatch "^2.1.5"
+
+aproba@^1.0.3:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.1.0.tgz#4d8f047a318604e18e3c06a0e52230d3d19f147b"
+ integrity sha1-TY8EejGGBOGOPAag5SIw09GfFHs=
+
+are-we-there-yet@~1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.2.tgz#80e470e95a084794fe1899262c5667c6e88de1b3"
+ integrity sha1-gORw6VoIR5T+GJkmLFZnxuiN4bM=
+ dependencies:
+ delegates "^1.0.0"
+ readable-stream "^2.0.0 || ^1.1.13"
+
+arr-diff@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf"
+ integrity sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=
+ dependencies:
+ arr-flatten "^1.0.1"
+
+arr-flatten@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.0.1.tgz#e5ffe54d45e19f32f216e91eb99c8ce892bb604b"
+ integrity sha1-5f/lTUXhnzLyFukeuZyM6JK7YEs=
+
+array-unique@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53"
+ integrity sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=
+
+arrify@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d"
+ integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=
+
+asn1@~0.2.3:
+ version "0.2.3"
+ resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86"
+ integrity sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=
+
+assert-plus@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234"
+ integrity sha1-104bh+ev/A24qttwIfP+SBAasjQ=
+
+assert-plus@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525"
+ integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=
+
+async-each@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d"
+ integrity sha1-GdOGodntxufByF04iu28xW0zYC0=
+
+asynckit@^0.4.0:
+ version "0.4.0"
+ resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
+ integrity sha1-x57Zf380y48robyXkLzDZkdLS3k=
+
+aws-sign2@~0.6.0:
+ version "0.6.0"
+ resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f"
+ integrity sha1-FDQt0428yU0OW4fXY81jYSwOeU8=
+
+aws4@^1.2.1:
+ version "1.6.0"
+ resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e"
+ integrity sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=
+
+babel-cli@^6.22.2:
+ version "6.22.2"
+ resolved "https://registry.yarnpkg.com/babel-cli/-/babel-cli-6.22.2.tgz#3f814c8acf52759082b8fedd9627f938936ab559"
+ integrity sha1-P4FMis9SdZCCuP7dlif5OJNqtVk=
+ dependencies:
+ babel-core "^6.22.1"
+ babel-polyfill "^6.22.0"
+ babel-register "^6.22.0"
+ babel-runtime "^6.22.0"
+ commander "^2.8.1"
+ convert-source-map "^1.1.0"
+ fs-readdir-recursive "^1.0.0"
+ glob "^7.0.0"
+ lodash "^4.2.0"
+ output-file-sync "^1.1.0"
+ path-is-absolute "^1.0.0"
+ slash "^1.0.0"
+ source-map "^0.5.0"
+ v8flags "^2.0.10"
+ optionalDependencies:
+ chokidar "^1.6.1"
+
+babel-code-frame@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.22.0.tgz#027620bee567a88c32561574e7fd0801d33118e4"
+ integrity sha1-AnYgvuVnqIwyVhV05/0IAdMxGOQ=
+ dependencies:
+ chalk "^1.1.0"
+ esutils "^2.0.2"
+ js-tokens "^3.0.0"
+
+babel-core@^6.22.0, babel-core@^6.22.1:
+ version "6.22.1"
+ resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.22.1.tgz#9c5fd658ba1772d28d721f6d25d968fc7ae21648"
+ integrity sha1-nF/WWLoXctKNch9tJdlo/HriFkg=
+ dependencies:
+ babel-code-frame "^6.22.0"
+ babel-generator "^6.22.0"
+ babel-helpers "^6.22.0"
+ babel-messages "^6.22.0"
+ babel-register "^6.22.0"
+ babel-runtime "^6.22.0"
+ babel-template "^6.22.0"
+ babel-traverse "^6.22.1"
+ babel-types "^6.22.0"
+ babylon "^6.11.0"
+ convert-source-map "^1.1.0"
+ debug "^2.1.1"
+ json5 "^0.5.0"
+ lodash "^4.2.0"
+ minimatch "^3.0.2"
+ path-is-absolute "^1.0.0"
+ private "^0.1.6"
+ slash "^1.0.0"
+ source-map "^0.5.0"
+
+babel-generator@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.22.0.tgz#d642bf4961911a8adc7c692b0c9297f325cda805"
+ integrity sha1-1kK/SWGRGorcfGkrDJKX8yXNqAU=
+ dependencies:
+ babel-messages "^6.22.0"
+ babel-runtime "^6.22.0"
+ babel-types "^6.22.0"
+ detect-indent "^4.0.0"
+ jsesc "^1.3.0"
+ lodash "^4.2.0"
+ source-map "^0.5.0"
+
+babel-helpers@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.22.0.tgz#d275f55f2252b8101bff07bc0c556deda657392c"
+ integrity sha1-0nX1XyJSuBAb/we8DFVt7aZXOSw=
+ dependencies:
+ babel-runtime "^6.22.0"
+ babel-template "^6.22.0"
+
+babel-messages@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.22.0.tgz#36066a214f1217e4ed4164867669ecb39e3ea575"
+ integrity sha1-NgZqIU8SF+TtQWSGdmnss54+pXU=
+ dependencies:
+ babel-runtime "^6.22.0"
+
+babel-plugin-syntax-flow@^6.18.0:
+ version "6.18.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-syntax-flow/-/babel-plugin-syntax-flow-6.18.0.tgz#4c3ab20a2af26aa20cd25995c398c4eb70310c8d"
+ integrity sha1-TDqyCiryaqIM0lmVw5jE63AxDI0=
+
+babel-plugin-transform-flow-strip-types@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-flow-strip-types/-/babel-plugin-transform-flow-strip-types-6.22.0.tgz#84cb672935d43714fdc32bce84568d87441cf7cf"
+ integrity sha1-hMtnKTXUNxT9wyvOhFaNh0Qc988=
+ dependencies:
+ babel-plugin-syntax-flow "^6.18.0"
+ babel-runtime "^6.22.0"
+
+babel-polyfill@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-polyfill/-/babel-polyfill-6.22.0.tgz#1ac99ebdcc6ba4db1e2618c387b2084a82154a3b"
+ integrity sha1-GsmevcxrpNseJhjDh7IISoIVSjs=
+ dependencies:
+ babel-runtime "^6.22.0"
+ core-js "^2.4.0"
+ regenerator-runtime "^0.10.0"
+
+babel-register@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.22.0.tgz#a61dd83975f9ca4a9e7d6eff3059494cd5ea4c63"
+ integrity sha1-ph3YOXX5ykqefW7/MFlJTNXqTGM=
+ dependencies:
+ babel-core "^6.22.0"
+ babel-runtime "^6.22.0"
+ core-js "^2.4.0"
+ home-or-tmp "^2.0.0"
+ lodash "^4.2.0"
+ mkdirp "^0.5.1"
+ source-map-support "^0.4.2"
+
+babel-runtime@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.22.0.tgz#1cf8b4ac67c77a4ddb0db2ae1f74de52ac4ca611"
+ integrity sha1-HPi0rGfHek3bDbKuH3TeUqxMphE=
+ dependencies:
+ core-js "^2.4.0"
+ regenerator-runtime "^0.10.0"
+
+babel-template@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.22.0.tgz#403d110905a4626b317a2a1fcb8f3b73204b2edb"
+ integrity sha1-QD0RCQWkYmsxeiofy487cyBLLts=
+ dependencies:
+ babel-runtime "^6.22.0"
+ babel-traverse "^6.22.0"
+ babel-types "^6.22.0"
+ babylon "^6.11.0"
+ lodash "^4.2.0"
+
+babel-traverse@^6.22.0, babel-traverse@^6.22.1:
+ version "6.22.1"
+ resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.22.1.tgz#3b95cd6b7427d6f1f757704908f2fc9748a5f59f"
+ integrity sha1-O5XNa3Qn1vH3V3BJCPL8l0il9Z8=
+ dependencies:
+ babel-code-frame "^6.22.0"
+ babel-messages "^6.22.0"
+ babel-runtime "^6.22.0"
+ babel-types "^6.22.0"
+ babylon "^6.15.0"
+ debug "^2.2.0"
+ globals "^9.0.0"
+ invariant "^2.2.0"
+ lodash "^4.2.0"
+
+babel-types@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.22.0.tgz#2a447e8d0ea25d2512409e4175479fd78cc8b1db"
+ integrity sha1-KkR+jQ6iXSUSQJ5BdUef14zIsds=
+ dependencies:
+ babel-runtime "^6.22.0"
+ esutils "^2.0.2"
+ lodash "^4.2.0"
+ to-fast-properties "^1.0.1"
+
+babylon@^6.11.0, babylon@^6.15.0:
+ version "6.15.0"
+ resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.15.0.tgz#ba65cfa1a80e1759b0e89fb562e27dccae70348e"
+ integrity sha1-umXPoagOF1mw6J+1YuJ9zK5wNI4=
+
+balanced-match@^0.4.1:
+ version "0.4.2"
+ resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838"
+ integrity sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=
+
+bcrypt-pbkdf@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz#63bc5dcb61331b92bc05fd528953c33462a06f8d"
+ integrity sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=
+ dependencies:
+ tweetnacl "^0.14.3"
+
+binary-extensions@^1.0.0:
+ version "1.8.0"
+ resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.8.0.tgz#48ec8d16df4377eae5fa5884682480af4d95c774"
+ integrity sha1-SOyNFt9Dd+rl+liEaCSAr02Vx3Q=
+
+block-stream@*:
+ version "0.0.9"
+ resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a"
+ integrity sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=
+ dependencies:
+ inherits "~2.0.0"
+
+boom@2.x.x:
+ version "2.10.1"
+ resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f"
+ integrity sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=
+ dependencies:
+ hoek "2.x.x"
+
+brace-expansion@^1.0.0:
+ version "1.1.6"
+ resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.6.tgz#7197d7eaa9b87e648390ea61fc66c84427420df9"
+ integrity sha1-cZfX6qm4fmSDkOph/GbIRCdCDfk=
+ dependencies:
+ balanced-match "^0.4.1"
+ concat-map "0.0.1"
+
+braces@^1.8.2:
+ version "1.8.5"
+ resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7"
+ integrity sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=
+ dependencies:
+ expand-range "^1.8.1"
+ preserve "^0.2.0"
+ repeat-element "^1.1.2"
+
+buffer-shims@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/buffer-shims/-/buffer-shims-1.0.0.tgz#9978ce317388c649ad8793028c3477ef044a8b51"
+ integrity sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=
+
+caseless@~0.11.0:
+ version "0.11.0"
+ resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.11.0.tgz#715b96ea9841593cc33067923f5ec60ebda4f7d7"
+ integrity sha1-cVuW6phBWTzDMGeSP17GDr2k99c=
+
+chalk@^1.1.0, chalk@^1.1.1:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98"
+ integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=
+ dependencies:
+ ansi-styles "^2.2.1"
+ escape-string-regexp "^1.0.2"
+ has-ansi "^2.0.0"
+ strip-ansi "^3.0.0"
+ supports-color "^2.0.0"
+
+chokidar@^1.6.1:
+ version "1.6.1"
+ resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.6.1.tgz#2f4447ab5e96e50fb3d789fd90d4c72e0e4c70c2"
+ integrity sha1-L0RHq16W5Q+z14n9kNTHLg5McMI=
+ dependencies:
+ anymatch "^1.3.0"
+ async-each "^1.0.0"
+ glob-parent "^2.0.0"
+ inherits "^2.0.1"
+ is-binary-path "^1.0.0"
+ is-glob "^2.0.0"
+ path-is-absolute "^1.0.0"
+ readdirp "^2.0.0"
+ optionalDependencies:
+ fsevents "^1.0.0"
+
+code-point-at@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77"
+ integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=
+
+combined-stream@^1.0.5, combined-stream@~1.0.5:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.5.tgz#938370a57b4a51dea2c77c15d5c5fdf895164009"
+ integrity sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=
+ dependencies:
+ delayed-stream "~1.0.0"
+
+commander@^2.8.1, commander@^2.9.0:
+ version "2.9.0"
+ resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4"
+ integrity sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=
+ dependencies:
+ graceful-readlink ">= 1.0.0"
+
+concat-map@0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
+ integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
+
+console-control-strings@^1.0.0, console-control-strings@~1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e"
+ integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=
+
+convert-source-map@^1.1.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.3.0.tgz#e9f3e9c6e2728efc2676696a70eb382f73106a67"
+ integrity sha1-6fPpxuJyjvwmdmlqcOs4L3MQamc=
+
+core-js@^2.4.0:
+ version "2.4.1"
+ resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.4.1.tgz#4de911e667b0eae9124e34254b53aea6fc618d3e"
+ integrity sha1-TekR5mew6ukSTjQlS1OupvxhjT4=
+
+core-util-is@~1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
+ integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=
+
+cryptiles@2.x.x:
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8"
+ integrity sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=
+ dependencies:
+ boom "2.x.x"
+
+dashdash@^1.12.0:
+ version "1.14.1"
+ resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0"
+ integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=
+ dependencies:
+ assert-plus "^1.0.0"
+
+debug@^2.1.1, debug@^2.2.0:
+ version "2.6.0"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.0.tgz#bc596bcabe7617f11d9fa15361eded5608b8499b"
+ integrity sha1-vFlryr52F/Edn6FTYe3tVgi4SZs=
+ dependencies:
+ ms "0.7.2"
+
+debug@~2.2.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da"
+ integrity sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=
+ dependencies:
+ ms "0.7.1"
+
+deep-extend@~0.4.0:
+ version "0.4.1"
+ resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.1.tgz#efe4113d08085f4e6f9687759810f807469e2253"
+ integrity sha1-7+QRPQgIX05vlod1mBD4B0aeIlM=
+
+delayed-stream@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
+ integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk=
+
+delegates@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a"
+ integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=
+
+detect-indent@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208"
+ integrity sha1-920GQ1LN9Docts5hnE7jqUdd4gg=
+ dependencies:
+ repeating "^2.0.0"
+
+ecc-jsbn@~0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505"
+ integrity sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=
+ dependencies:
+ jsbn "~0.1.0"
+
+escape-string-regexp@^1.0.2:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
+ integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
+
+esutils@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b"
+ integrity sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=
+
+expand-brackets@^0.1.4:
+ version "0.1.5"
+ resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b"
+ integrity sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=
+ dependencies:
+ is-posix-bracket "^0.1.0"
+
+expand-range@^1.8.1:
+ version "1.8.2"
+ resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337"
+ integrity sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=
+ dependencies:
+ fill-range "^2.1.0"
+
+extend@~3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.0.tgz#5a474353b9f3353ddd8176dfd37b91c83a46f1d4"
+ integrity sha1-WkdDU7nzNT3dgXbf03uRyDpG8dQ=
+
+extglob@^0.3.1:
+ version "0.3.2"
+ resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1"
+ integrity sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=
+ dependencies:
+ is-extglob "^1.0.0"
+
+extsprintf@1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.0.2.tgz#e1080e0658e300b06294990cc70e1502235fd550"
+ integrity sha1-4QgOBljjALBilJkMxw4VAiNf1VA=
+
+filename-regex@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.0.tgz#996e3e80479b98b9897f15a8a58b3d084e926775"
+ integrity sha1-mW4+gEebmLmJfxWopYs9CE6SZ3U=
+
+fill-range@^2.1.0:
+ version "2.2.3"
+ resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723"
+ integrity sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=
+ dependencies:
+ is-number "^2.1.0"
+ isobject "^2.0.0"
+ randomatic "^1.1.3"
+ repeat-element "^1.1.2"
+ repeat-string "^1.5.2"
+
+flow-bin@^0.38.0:
+ version "0.38.0"
+ resolved "https://registry.yarnpkg.com/flow-bin/-/flow-bin-0.38.0.tgz#3ae096d401c969cc8b5798253fb82381e2d0237a"
+ integrity sha1-OuCW1AHJacyLV5glP7gjgeLQI3o=
+
+for-in@^0.1.5:
+ version "0.1.6"
+ resolved "https://registry.yarnpkg.com/for-in/-/for-in-0.1.6.tgz#c9f96e89bfad18a545af5ec3ed352a1d9e5b4dc8"
+ integrity sha1-yfluib+tGKVFr17D7TUqHZ5bTcg=
+
+for-own@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.4.tgz#0149b41a39088c7515f51ebe1c1386d45f935072"
+ integrity sha1-AUm0GjkIjHUV9R6+HBOG1F+TUHI=
+ dependencies:
+ for-in "^0.1.5"
+
+forever-agent@~0.6.1:
+ version "0.6.1"
+ resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91"
+ integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=
+
+form-data@~2.1.1:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.2.tgz#89c3534008b97eada4cbb157d58f6f5df025eae4"
+ integrity sha1-icNTQAi5fq2ky7FX1Y9vXfAl6uQ=
+ dependencies:
+ asynckit "^0.4.0"
+ combined-stream "^1.0.5"
+ mime-types "^2.1.12"
+
+fs-readdir-recursive@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-1.0.0.tgz#8cd1745c8b4f8a29c8caec392476921ba195f560"
+ integrity sha1-jNF0XItPiinIyuw5JHaSG6GV9WA=
+
+fs.realpath@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
+ integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8=
+
+fsevents@^1.0.0:
+ version "1.0.17"
+ resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.0.17.tgz#8537f3f12272678765b4fd6528c0f1f66f8f4558"
+ integrity sha1-hTfz8SJyZ4dltP1lKMDx9m+PRVg=
+ dependencies:
+ nan "^2.3.0"
+ node-pre-gyp "^0.6.29"
+
+fstream-ignore@~1.0.5:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/fstream-ignore/-/fstream-ignore-1.0.5.tgz#9c31dae34767018fe1d249b24dada67d092da105"
+ integrity sha1-nDHa40dnAY/h0kmyTa2mfQktoQU=
+ dependencies:
+ fstream "^1.0.0"
+ inherits "2"
+ minimatch "^3.0.0"
+
+fstream@^1.0.0, fstream@^1.0.2, fstream@~1.0.10:
+ version "1.0.10"
+ resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.10.tgz#604e8a92fe26ffd9f6fae30399d4984e1ab22822"
+ integrity sha1-YE6Kkv4m/9n2+uMDmdSYThqyKCI=
+ dependencies:
+ graceful-fs "^4.1.2"
+ inherits "~2.0.0"
+ mkdirp ">=0.5 0"
+ rimraf "2"
+
+gauge@~2.7.1:
+ version "2.7.3"
+ resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.3.tgz#1c23855f962f17b3ad3d0dc7443f304542edfe09"
+ integrity sha1-HCOFX5YvF7OtPQ3HRD8wRULt/gk=
+ dependencies:
+ aproba "^1.0.3"
+ console-control-strings "^1.0.0"
+ has-unicode "^2.0.0"
+ object-assign "^4.1.0"
+ signal-exit "^3.0.0"
+ string-width "^1.0.1"
+ strip-ansi "^3.0.1"
+ wide-align "^1.1.0"
+
+generate-function@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/generate-function/-/generate-function-2.0.0.tgz#6858fe7c0969b7d4e9093337647ac79f60dfbe74"
+ integrity sha1-aFj+fAlpt9TpCTM3ZHrHn2DfvnQ=
+
+generate-object-property@^1.1.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/generate-object-property/-/generate-object-property-1.2.0.tgz#9c0e1c40308ce804f4783618b937fa88f99d50d0"
+ integrity sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=
+ dependencies:
+ is-property "^1.0.0"
+
+getpass@^0.1.1:
+ version "0.1.6"
+ resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.6.tgz#283ffd9fc1256840875311c1b60e8c40187110e6"
+ integrity sha1-KD/9n8ElaECHUxHBtg6MQBhxEOY=
+ dependencies:
+ assert-plus "^1.0.0"
+
+glob-base@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4"
+ integrity sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=
+ dependencies:
+ glob-parent "^2.0.0"
+ is-glob "^2.0.0"
+
+glob-parent@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28"
+ integrity sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=
+ dependencies:
+ is-glob "^2.0.0"
+
+glob@^7.0.0, glob@^7.0.5:
+ version "7.1.1"
+ resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8"
+ integrity sha1-gFIR3wT6rxxjo2ADBs31reULLsg=
+ dependencies:
+ fs.realpath "^1.0.0"
+ inflight "^1.0.4"
+ inherits "2"
+ minimatch "^3.0.2"
+ once "^1.3.0"
+ path-is-absolute "^1.0.0"
+
+globals@^9.0.0:
+ version "9.14.0"
+ resolved "https://registry.yarnpkg.com/globals/-/globals-9.14.0.tgz#8859936af0038741263053b39d0e76ca241e4034"
+ integrity sha1-iFmTavADh0EmMFOznQ52yiQeQDQ=
+
+graceful-fs@^4.1.2, graceful-fs@^4.1.4:
+ version "4.1.11"
+ resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658"
+ integrity sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=
+
+"graceful-readlink@>= 1.0.0":
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725"
+ integrity sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=
+
+har-validator@~2.0.6:
+ version "2.0.6"
+ resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-2.0.6.tgz#cdcbc08188265ad119b6a5a7c8ab70eecfb5d27d"
+ integrity sha1-zcvAgYgmWtEZtqWnyKtw7s+10n0=
+ dependencies:
+ chalk "^1.1.1"
+ commander "^2.9.0"
+ is-my-json-valid "^2.12.4"
+ pinkie-promise "^2.0.0"
+
+has-ansi@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91"
+ integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=
+ dependencies:
+ ansi-regex "^2.0.0"
+
+has-unicode@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9"
+ integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=
+
+hawk@~3.1.3:
+ version "3.1.3"
+ resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4"
+ integrity sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=
+ dependencies:
+ boom "2.x.x"
+ cryptiles "2.x.x"
+ hoek "2.x.x"
+ sntp "1.x.x"
+
+hoek@2.x.x:
+ version "2.16.3"
+ resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed"
+ integrity sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=
+
+home-or-tmp@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8"
+ integrity sha1-42w/LSyufXRqhX440Y1fMqeILbg=
+ dependencies:
+ os-homedir "^1.0.0"
+ os-tmpdir "^1.0.1"
+
+http-signature@~1.1.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf"
+ integrity sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=
+ dependencies:
+ assert-plus "^0.2.0"
+ jsprim "^1.2.2"
+ sshpk "^1.7.0"
+
+inflight@^1.0.4:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
+ integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=
+ dependencies:
+ once "^1.3.0"
+ wrappy "1"
+
+inherits@2, inherits@^2.0.1, inherits@~2.0.0, inherits@~2.0.1:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
+ integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=
+
+ini@~1.3.0:
+ version "1.3.4"
+ resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e"
+ integrity sha1-BTfLedr1m1mhpRff9wbIbsA5Fi4=
+
+invariant@^2.2.0:
+ version "2.2.2"
+ resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.2.tgz#9e1f56ac0acdb6bf303306f338be3b204ae60360"
+ integrity sha1-nh9WrArNtr8wMwbzOL47IErmA2A=
+ dependencies:
+ loose-envify "^1.0.0"
+
+is-binary-path@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898"
+ integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=
+ dependencies:
+ binary-extensions "^1.0.0"
+
+is-buffer@^1.0.2:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.4.tgz#cfc86ccd5dc5a52fa80489111c6920c457e2d98b"
+ integrity sha1-z8hszV3FpS+oBIkRHGkgxFfi2Ys=
+
+is-dotfile@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.2.tgz#2c132383f39199f8edc268ca01b9b007d205cc4d"
+ integrity sha1-LBMjg/ORmfjtwmjKAbmwB9IFzE0=
+
+is-equal-shallow@^0.1.3:
+ version "0.1.3"
+ resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534"
+ integrity sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=
+ dependencies:
+ is-primitive "^2.0.0"
+
+is-extendable@^0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89"
+ integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=
+
+is-extglob@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0"
+ integrity sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=
+
+is-finite@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa"
+ integrity sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=
+ dependencies:
+ number-is-nan "^1.0.0"
+
+is-fullwidth-code-point@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb"
+ integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs=
+ dependencies:
+ number-is-nan "^1.0.0"
+
+is-glob@^2.0.0, is-glob@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863"
+ integrity sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=
+ dependencies:
+ is-extglob "^1.0.0"
+
+is-my-json-valid@^2.12.4:
+ version "2.15.0"
+ resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.15.0.tgz#936edda3ca3c211fd98f3b2d3e08da43f7b2915b"
+ integrity sha1-k27do8o8IR/ZjzstPgjaQ/eykVs=
+ dependencies:
+ generate-function "^2.0.0"
+ generate-object-property "^1.1.0"
+ jsonpointer "^4.0.0"
+ xtend "^4.0.0"
+
+is-number@^2.0.2, is-number@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f"
+ integrity sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=
+ dependencies:
+ kind-of "^3.0.2"
+
+is-posix-bracket@^0.1.0:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4"
+ integrity sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=
+
+is-primitive@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575"
+ integrity sha1-IHurkWOEmcB7Kt8kCkGochADRXU=
+
+is-property@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84"
+ integrity sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=
+
+is-typedarray@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
+ integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=
+
+isarray@1.0.0, isarray@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
+ integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=
+
+isobject@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89"
+ integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=
+ dependencies:
+ isarray "1.0.0"
+
+isstream@~0.1.2:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
+ integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=
+
+jodid25519@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/jodid25519/-/jodid25519-1.0.2.tgz#06d4912255093419477d425633606e0e90782967"
+ integrity sha1-BtSRIlUJNBlHfUJWM2BuDpB4KWc=
+ dependencies:
+ jsbn "~0.1.0"
+
+js-tokens@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.1.tgz#08e9f132484a2c45a30907e9dc4d5567b7f114d7"
+ integrity sha1-COnxMkhKLEWjCQfp3E1VZ7fxFNc=
+
+jsbn@~0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.0.tgz#650987da0dd74f4ebf5a11377a2aa2d273e97dfd"
+ integrity sha1-ZQmH2g3XT06/WhE3eiqi0nPpff0=
+
+jsesc@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b"
+ integrity sha1-RsP+yMGJKxKwgz25vHYiF226s0s=
+
+json-schema@0.2.3:
+ version "0.2.3"
+ resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13"
+ integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=
+
+json-stringify-safe@~5.0.1:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"
+ integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=
+
+json5@^0.5.0:
+ version "0.5.1"
+ resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821"
+ integrity sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=
+
+jsonpointer@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.0.1.tgz#4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9"
+ integrity sha1-T9kss04OnbPInIYi7PUfm5eMbLk=
+
+jsprim@^1.2.2:
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.3.1.tgz#2a7256f70412a29ee3670aaca625994c4dcff252"
+ integrity sha1-KnJW9wQSop7jZwqspiWZTE3P8lI=
+ dependencies:
+ extsprintf "1.0.2"
+ json-schema "0.2.3"
+ verror "1.3.6"
+
+kind-of@^3.0.2:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.1.0.tgz#475d698a5e49ff5e53d14e3e732429dc8bf4cf47"
+ integrity sha1-R11pil5J/15T0U4+cyQp3Iv0z0c=
+ dependencies:
+ is-buffer "^1.0.2"
+
+lodash@^4.2.0:
+ version "4.17.4"
+ resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae"
+ integrity sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=
+
+loose-envify@^1.0.0:
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.3.1.tgz#d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848"
+ integrity sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=
+ dependencies:
+ js-tokens "^3.0.0"
+
+micromatch@^2.1.5:
+ version "2.3.11"
+ resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565"
+ integrity sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=
+ dependencies:
+ arr-diff "^2.0.0"
+ array-unique "^0.2.1"
+ braces "^1.8.2"
+ expand-brackets "^0.1.4"
+ extglob "^0.3.1"
+ filename-regex "^2.0.0"
+ is-extglob "^1.0.0"
+ is-glob "^2.0.1"
+ kind-of "^3.0.2"
+ normalize-path "^2.0.1"
+ object.omit "^2.0.0"
+ parse-glob "^3.0.4"
+ regex-cache "^0.4.2"
+
+mime-db@~1.26.0:
+ version "1.26.0"
+ resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.26.0.tgz#eaffcd0e4fc6935cf8134da246e2e6c35305adff"
+ integrity sha1-6v/NDk/Gk1z4E02iRuLmw1MFrf8=
+
+mime-types@^2.1.12, mime-types@~2.1.7:
+ version "2.1.14"
+ resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.14.tgz#f7ef7d97583fcaf3b7d282b6f8b5679dab1e94ee"
+ integrity sha1-9+99l1g/yvO30oK2+LVnnaselO4=
+ dependencies:
+ mime-db "~1.26.0"
+
+minimatch@^3.0.0, minimatch@^3.0.2:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.3.tgz#2a4e4090b96b2db06a9d7df01055a62a77c9b774"
+ integrity sha1-Kk5AkLlrLbBqnX3wEFWmKnfJt3Q=
+ dependencies:
+ brace-expansion "^1.0.0"
+
+minimist@0.0.8:
+ version "0.0.8"
+ resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d"
+ integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=
+
+minimist@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
+ integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=
+
+"mkdirp@>=0.5 0", mkdirp@^0.5.1, mkdirp@~0.5.1:
+ version "0.5.1"
+ resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903"
+ integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=
+ dependencies:
+ minimist "0.0.8"
+
+ms@0.7.1:
+ version "0.7.1"
+ resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.1.tgz#9cd13c03adbff25b65effde7ce864ee952017098"
+ integrity sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=
+
+ms@0.7.2:
+ version "0.7.2"
+ resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.2.tgz#ae25cf2512b3885a1d95d7f037868d8431124765"
+ integrity sha1-riXPJRKziFodldfwN4aNhDESR2U=
+
+nan@^2.3.0:
+ version "2.5.1"
+ resolved "https://registry.yarnpkg.com/nan/-/nan-2.5.1.tgz#d5b01691253326a97a2bbee9e61c55d8d60351e2"
+ integrity sha1-1bAWkSUzJql6K77p5hxV2NYDUeI=
+
+node-pre-gyp@^0.6.29:
+ version "0.6.33"
+ resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.33.tgz#640ac55198f6a925972e0c16c4ac26a034d5ecc9"
+ integrity sha1-ZArFUZj2qSWXLgwWxKwmoDTV7Mk=
+ dependencies:
+ mkdirp "~0.5.1"
+ nopt "~3.0.6"
+ npmlog "^4.0.1"
+ rc "~1.1.6"
+ request "^2.79.0"
+ rimraf "~2.5.4"
+ semver "~5.3.0"
+ tar "~2.2.1"
+ tar-pack "~3.3.0"
+
+nopt@~3.0.6:
+ version "3.0.6"
+ resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9"
+ integrity sha1-xkZdvwirzU2zWTF/eaxopkayj/k=
+ dependencies:
+ abbrev "1"
+
+normalize-path@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.0.1.tgz#47886ac1662760d4261b7d979d241709d3ce3f7a"
+ integrity sha1-R4hqwWYnYNQmG32XnSQXCdPOP3o=
+
+npmlog@^4.0.1:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.0.2.tgz#d03950e0e78ce1527ba26d2a7592e9348ac3e75f"
+ integrity sha1-0DlQ4OeM4VJ7om0qdZLpNIrD518=
+ dependencies:
+ are-we-there-yet "~1.1.2"
+ console-control-strings "~1.1.0"
+ gauge "~2.7.1"
+ set-blocking "~2.0.0"
+
+number-is-nan@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d"
+ integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=
+
+oauth-sign@~0.8.1:
+ version "0.8.2"
+ resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43"
+ integrity sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=
+
+object-assign@^4.1.0:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
+ integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=
+
+object.omit@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa"
+ integrity sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=
+ dependencies:
+ for-own "^0.1.4"
+ is-extendable "^0.1.1"
+
+once@^1.3.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
+ integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E=
+ dependencies:
+ wrappy "1"
+
+once@~1.3.3:
+ version "1.3.3"
+ resolved "https://registry.yarnpkg.com/once/-/once-1.3.3.tgz#b2e261557ce4c314ec8304f3fa82663e4297ca20"
+ integrity sha1-suJhVXzkwxTsgwTz+oJmPkKXyiA=
+ dependencies:
+ wrappy "1"
+
+os-homedir@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3"
+ integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M=
+
+os-tmpdir@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
+ integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=
+
+output-file-sync@^1.1.0:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/output-file-sync/-/output-file-sync-1.1.2.tgz#d0a33eefe61a205facb90092e826598d5245ce76"
+ integrity sha1-0KM+7+YaIF+suQCS6CZZjVJFznY=
+ dependencies:
+ graceful-fs "^4.1.4"
+ mkdirp "^0.5.1"
+ object-assign "^4.1.0"
+
+parse-glob@^3.0.4:
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c"
+ integrity sha1-ssN2z7EfNVE7rdFz7wu246OIORw=
+ dependencies:
+ glob-base "^0.3.0"
+ is-dotfile "^1.0.0"
+ is-extglob "^1.0.0"
+ is-glob "^2.0.0"
+
+path-is-absolute@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
+ integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
+
+pinkie-promise@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa"
+ integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o=
+ dependencies:
+ pinkie "^2.0.0"
+
+pinkie@^2.0.0:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870"
+ integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA=
+
+preserve@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b"
+ integrity sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=
+
+private@^0.1.6:
+ version "0.1.7"
+ resolved "https://registry.yarnpkg.com/private/-/private-0.1.7.tgz#68ce5e8a1ef0a23bb570cc28537b5332aba63ef1"
+ integrity sha1-aM5eih7woju1cMwoU3tTMqumPvE=
+
+process-nextick-args@~1.0.6:
+ version "1.0.7"
+ resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3"
+ integrity sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=
+
+punycode@^1.4.1:
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e"
+ integrity sha1-wNWmOycYgArY4esPpSachN1BhF4=
+
+qs@~6.3.0:
+ version "6.3.0"
+ resolved "https://registry.yarnpkg.com/qs/-/qs-6.3.0.tgz#f403b264f23bc01228c74131b407f18d5ea5d442"
+ integrity sha1-9AOyZPI7wBIox0ExtAfxjV6l1EI=
+
+randomatic@^1.1.3:
+ version "1.1.6"
+ resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.6.tgz#110dcabff397e9dcff7c0789ccc0a49adf1ec5bb"
+ integrity sha1-EQ3Kv/OX6dz/fAeJzMCkmt8exbs=
+ dependencies:
+ is-number "^2.0.2"
+ kind-of "^3.0.2"
+
+rc@~1.1.6:
+ version "1.1.6"
+ resolved "https://registry.yarnpkg.com/rc/-/rc-1.1.6.tgz#43651b76b6ae53b5c802f1151fa3fc3b059969c9"
+ integrity sha1-Q2UbdrauU7XIAvEVH6P8OwWZack=
+ dependencies:
+ deep-extend "~0.4.0"
+ ini "~1.3.0"
+ minimist "^1.2.0"
+ strip-json-comments "~1.0.4"
+
+"readable-stream@^2.0.0 || ^1.1.13", readable-stream@^2.0.2:
+ version "2.2.2"
+ resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.2.2.tgz#a9e6fec3c7dda85f8bb1b3ba7028604556fc825e"
+ integrity sha1-qeb+w8fdqF+LsbO6cChgRVb8gl4=
+ dependencies:
+ buffer-shims "^1.0.0"
+ core-util-is "~1.0.0"
+ inherits "~2.0.1"
+ isarray "~1.0.0"
+ process-nextick-args "~1.0.6"
+ string_decoder "~0.10.x"
+ util-deprecate "~1.0.1"
+
+readable-stream@~2.1.4:
+ version "2.1.5"
+ resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.1.5.tgz#66fa8b720e1438b364681f2ad1a63c618448c9d0"
+ integrity sha1-ZvqLcg4UOLNkaB8q0aY8YYRIydA=
+ dependencies:
+ buffer-shims "^1.0.0"
+ core-util-is "~1.0.0"
+ inherits "~2.0.1"
+ isarray "~1.0.0"
+ process-nextick-args "~1.0.6"
+ string_decoder "~0.10.x"
+ util-deprecate "~1.0.1"
+
+readdirp@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78"
+ integrity sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=
+ dependencies:
+ graceful-fs "^4.1.2"
+ minimatch "^3.0.2"
+ readable-stream "^2.0.2"
+ set-immediate-shim "^1.0.1"
+
+regenerator-runtime@^0.10.0:
+ version "0.10.1"
+ resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.1.tgz#257f41961ce44558b18f7814af48c17559f9faeb"
+ integrity sha1-JX9BlhzkRVixj3gUr0jBdVn5+us=
+
+regex-cache@^0.4.2:
+ version "0.4.3"
+ resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.3.tgz#9b1a6c35d4d0dfcef5711ae651e8e9d3d7114145"
+ integrity sha1-mxpsNdTQ3871cRrmUejp09cRQUU=
+ dependencies:
+ is-equal-shallow "^0.1.3"
+ is-primitive "^2.0.0"
+
+repeat-element@^1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a"
+ integrity sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=
+
+repeat-string@^1.5.2:
+ version "1.6.1"
+ resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637"
+ integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc=
+
+repeating@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda"
+ integrity sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=
+ dependencies:
+ is-finite "^1.0.0"
+
+request@^2.79.0:
+ version "2.79.0"
+ resolved "https://registry.yarnpkg.com/request/-/request-2.79.0.tgz#4dfe5bf6be8b8cdc37fcf93e04b65577722710de"
+ integrity sha1-Tf5b9r6LjNw3/Pk+BLZVd3InEN4=
+ dependencies:
+ aws-sign2 "~0.6.0"
+ aws4 "^1.2.1"
+ caseless "~0.11.0"
+ combined-stream "~1.0.5"
+ extend "~3.0.0"
+ forever-agent "~0.6.1"
+ form-data "~2.1.1"
+ har-validator "~2.0.6"
+ hawk "~3.1.3"
+ http-signature "~1.1.0"
+ is-typedarray "~1.0.0"
+ isstream "~0.1.2"
+ json-stringify-safe "~5.0.1"
+ mime-types "~2.1.7"
+ oauth-sign "~0.8.1"
+ qs "~6.3.0"
+ stringstream "~0.0.4"
+ tough-cookie "~2.3.0"
+ tunnel-agent "~0.4.1"
+ uuid "^3.0.0"
+
+rimraf@2, rimraf@~2.5.1, rimraf@~2.5.4:
+ version "2.5.4"
+ resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.5.4.tgz#96800093cbf1a0c86bd95b4625467535c29dfa04"
+ integrity sha1-loAAk8vxoMhr2VtGJUZ1NcKd+gQ=
+ dependencies:
+ glob "^7.0.5"
+
+semver@~5.3.0:
+ version "5.3.0"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f"
+ integrity sha1-myzl094C0XxgEq0yaqa00M9U+U8=
+
+set-blocking@~2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
+ integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc=
+
+set-immediate-shim@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61"
+ integrity sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=
+
+signal-exit@^3.0.0:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d"
+ integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=
+
+slash@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55"
+ integrity sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=
+
+sntp@1.x.x:
+ version "1.0.9"
+ resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198"
+ integrity sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=
+ dependencies:
+ hoek "2.x.x"
+
+source-map-support@^0.4.2:
+ version "0.4.11"
+ resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.11.tgz#647f939978b38535909530885303daf23279f322"
+ integrity sha1-ZH+TmXizhTWQlTCIUwPa8jJ58yI=
+ dependencies:
+ source-map "^0.5.3"
+
+source-map@^0.5.0, source-map@^0.5.3:
+ version "0.5.6"
+ resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412"
+ integrity sha1-dc449SvwczxafwwRjYEzSiu19BI=
+
+sshpk@^1.7.0:
+ version "1.10.2"
+ resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.10.2.tgz#d5a804ce22695515638e798dbe23273de070a5fa"
+ integrity sha1-1agEziJpVRVjjnmNviMnPeBwpfo=
+ dependencies:
+ asn1 "~0.2.3"
+ assert-plus "^1.0.0"
+ dashdash "^1.12.0"
+ getpass "^0.1.1"
+ optionalDependencies:
+ bcrypt-pbkdf "^1.0.0"
+ ecc-jsbn "~0.1.1"
+ jodid25519 "^1.0.0"
+ jsbn "~0.1.0"
+ tweetnacl "~0.14.0"
+
+string-width@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3"
+ integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=
+ dependencies:
+ code-point-at "^1.0.0"
+ is-fullwidth-code-point "^1.0.0"
+ strip-ansi "^3.0.0"
+
+string_decoder@~0.10.x:
+ version "0.10.31"
+ resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94"
+ integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=
+
+stringstream@~0.0.4:
+ version "0.0.5"
+ resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878"
+ integrity sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=
+
+strip-ansi@^3.0.0, strip-ansi@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf"
+ integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=
+ dependencies:
+ ansi-regex "^2.0.0"
+
+strip-json-comments@~1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-1.0.4.tgz#1e15fbcac97d3ee99bf2d73b4c656b082bbafb91"
+ integrity sha1-HhX7ysl9Pumb8tc7TGVrCCu6+5E=
+
+supports-color@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7"
+ integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=
+
+tar-pack@~3.3.0:
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.3.0.tgz#30931816418f55afc4d21775afdd6720cee45dae"
+ integrity sha1-MJMYFkGPVa/E0hd1r91nIM7kXa4=
+ dependencies:
+ debug "~2.2.0"
+ fstream "~1.0.10"
+ fstream-ignore "~1.0.5"
+ once "~1.3.3"
+ readable-stream "~2.1.4"
+ rimraf "~2.5.1"
+ tar "~2.2.1"
+ uid-number "~0.0.6"
+
+tar@~2.2.1:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1"
+ integrity sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=
+ dependencies:
+ block-stream "*"
+ fstream "^1.0.2"
+ inherits "2"
+
+to-fast-properties@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.2.tgz#f3f5c0c3ba7299a7ef99427e44633257ade43320"
+ integrity sha1-8/XAw7pymafvmUJ+RGMyV63kMyA=
+
+tough-cookie@~2.3.0:
+ version "2.3.2"
+ resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.2.tgz#f081f76e4c85720e6c37a5faced737150d84072a"
+ integrity sha1-8IH3bkyFcg5sN6X6ztc3FQ2EByo=
+ dependencies:
+ punycode "^1.4.1"
+
+tunnel-agent@~0.4.1:
+ version "0.4.3"
+ resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.4.3.tgz#6373db76909fe570e08d73583365ed828a74eeeb"
+ integrity sha1-Y3PbdpCf5XDgjXNYM2Xtgop07us=
+
+tweetnacl@^0.14.3, tweetnacl@~0.14.0:
+ version "0.14.5"
+ resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64"
+ integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=
+
+uid-number@~0.0.6:
+ version "0.0.6"
+ resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81"
+ integrity sha1-DqEOgDXo61uOREnwbaHHMGY7qoE=
+
+user-home@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/user-home/-/user-home-1.1.1.tgz#2b5be23a32b63a7c9deb8d0f28d485724a3df190"
+ integrity sha1-K1viOjK2Onyd640PKNSFcko98ZA=
+
+util-deprecate@~1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
+ integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=
+
+uuid@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.0.1.tgz#6544bba2dfda8c1cf17e629a3a305e2bb1fee6c1"
+ integrity sha1-ZUS7ot/ajBzxfmKaOjBeK7H+5sE=
+
+v8flags@^2.0.10:
+ version "2.0.11"
+ resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-2.0.11.tgz#bca8f30f0d6d60612cc2c00641e6962d42ae6881"
+ integrity sha1-vKjzDw1tYGEswsAGQeaWLUKuaIE=
+ dependencies:
+ user-home "^1.1.1"
+
+verror@1.3.6:
+ version "1.3.6"
+ resolved "https://registry.yarnpkg.com/verror/-/verror-1.3.6.tgz#cff5df12946d297d2baaefaa2689e25be01c005c"
+ integrity sha1-z/XfEpRtKX0rqu+qJoniW+AcAFw=
+ dependencies:
+ extsprintf "1.0.2"
+
+wide-align@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.0.tgz#40edde802a71fea1f070da3e62dcda2e7add96ad"
+ integrity sha1-QO3egCpx/qHwcNo+YtzaLnrdlq0=
+ dependencies:
+ string-width "^1.0.1"
+
+wrappy@1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
+ integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
+
+xtend@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af"
+ integrity sha1-pcbVMr5lbiPbgg77lDofBJmNY68=
diff --git a/date-fns/examples/lodash-fp/.babelrc b/date-fns/examples/lodash-fp/.babelrc
new file mode 100644
index 0000000..c13c5f6
--- /dev/null
+++ b/date-fns/examples/lodash-fp/.babelrc
@@ -0,0 +1,3 @@
+{
+ "presets": ["es2015"]
+}
diff --git a/date-fns/examples/lodash-fp/README.md b/date-fns/examples/lodash-fp/README.md
new file mode 100644
index 0000000..3e8482c
--- /dev/null
+++ b/date-fns/examples/lodash-fp/README.md
@@ -0,0 +1,23 @@
+# Usage With lodash FP
+
+See [example.js](./example.js) for source code example.
+
+See [package.json scripts](./package.json) for CLI usage.
+
+## Build Example
+
+```sh
+yarn
+yarn run build
+```
+
+See ./dist for output.
+
+## Minimal Build Size
+
+You can see the build size:
+
+```sh
+gzip-size dist/example.min.js | pretty-bytes
+#=> 23.4 kB
+```
diff --git a/date-fns/examples/lodash-fp/example.js b/date-fns/examples/lodash-fp/example.js
new file mode 100644
index 0000000..3a92f22
--- /dev/null
+++ b/date-fns/examples/lodash-fp/example.js
@@ -0,0 +1,30 @@
+import addYears from 'date-fns/fp/addYears'
+import formatWithOptions from 'date-fns/fp/formatWithOptions'
+import parseISO from 'date-fns/fp/parseISO'
+import eo from 'date-fns/locale/eo'
+
+import compose from 'lodash/fp/compose'
+import toUpper from 'lodash/fp/toUpper'
+import isEqual from 'lodash/isEqual'
+
+const addFiveYears = addYears(5)
+const dateToString = formatWithOptions({ locale: eo }, 'd MMMM yyyy')
+
+const dates = ['2017-01-01', '2017-02-11', '2017-07-02']
+
+const formattedDates = dates.map(
+ compose(
+ toUpper,
+ dateToString,
+ addFiveYears,
+ parseISO
+ )
+)
+
+console.log(
+ isEqual(formattedDates, [
+ '1 JANUARO 2022',
+ '11 FEBRUARO 2022',
+ '2 JULIO 2022'
+ ])
+)
diff --git a/date-fns/examples/lodash-fp/package.json b/date-fns/examples/lodash-fp/package.json
new file mode 100644
index 0000000..b833d0c
--- /dev/null
+++ b/date-fns/examples/lodash-fp/package.json
@@ -0,0 +1,27 @@
+{
+ "name": "date-fns-example-babel",
+ "version": "0.1.0",
+ "description": "Example of date-fns usage with webpack 1.x, babel and lodash",
+ "main": "example.js",
+ "author": "Sasha Koss <koss@nocorp.me>",
+ "license": "MIT",
+ "dependencies": {
+ "babel-core": "^6.22.1",
+ "babel-loader": "6",
+ "babel-preset-babili": "^0.0.11",
+ "babel-preset-es2015": "^6.22.0",
+ "babili": "^0.0.11",
+ "gzip-size-cli": "^1.0.0",
+ "lodash": "^4.17.4",
+ "pretty-bytes-cli": "^2.0.0",
+ "webpack": "1"
+ },
+ "scripts": {
+ "build": "yarn run build-date-fns && yarn run build-webpack && yarn run build-babili",
+ "build-date-fns": "env PACKAGE_OUTPUT_PATH=\"$(pwd)/node_modules/date-fns\" ../../scripts/build/package.sh",
+ "build-webpack": "webpack",
+ "build-babili": "babili dist/example.js --out-file dist/example.min.js --minified --no-comments && yarn run stats-size",
+ "stats-size": "gzip-size dist/example.min.js | pretty-bytes",
+ "test": "test $(env TZ=UTC node ./dist/example.min.js) = true"
+ }
+}
diff --git a/date-fns/examples/lodash-fp/webpack.config.js b/date-fns/examples/lodash-fp/webpack.config.js
new file mode 100644
index 0000000..ec54003
--- /dev/null
+++ b/date-fns/examples/lodash-fp/webpack.config.js
@@ -0,0 +1,14 @@
+module.exports = {
+ entry: './example.js',
+ output: {
+ path: './dist',
+ filename: 'example.js'
+ },
+ module: {
+ loaders: [{
+ test: /\.js$/,
+ exclude: /node_modules/,
+ loader: 'babel-loader'
+ }]
+ }
+}
diff --git a/date-fns/examples/lodash-fp/yarn.lock b/date-fns/examples/lodash-fp/yarn.lock
new file mode 100644
index 0000000..48ff219
--- /dev/null
+++ b/date-fns/examples/lodash-fp/yarn.lock
@@ -0,0 +1,2779 @@
+# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
+# yarn lockfile v1
+
+
+abbrev@1:
+ version "1.0.9"
+ resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.0.9.tgz#91b4792588a7738c25f35dd6f63752a2f8776135"
+ integrity sha1-kbR5JYinc4wl813W9jdSovh3YTU=
+
+acorn@^3.0.0:
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a"
+ integrity sha1-ReN/s56No/JbruP/U2niu18iAXo=
+
+align-text@^0.1.1, align-text@^0.1.3:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117"
+ integrity sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=
+ dependencies:
+ kind-of "^3.0.2"
+ longest "^1.0.1"
+ repeat-string "^1.5.2"
+
+amdefine@>=0.0.4:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5"
+ integrity sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=
+
+ansi-regex@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.0.0.tgz#c5061b6e0ef8a81775e50f5d66151bf6bf371107"
+ integrity sha1-xQYbbg74qBd15Q9dZhUb9r83EQc=
+
+ansi-styles@^2.2.1:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe"
+ integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=
+
+anymatch@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.0.tgz#a3e52fa39168c825ff57b0248126ce5a8ff95507"
+ integrity sha1-o+Uvo5FoyCX/V7AkgSbOWo/5VQc=
+ dependencies:
+ arrify "^1.0.0"
+ micromatch "^2.1.5"
+
+aproba@^1.0.3:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.0.4.tgz#2713680775e7614c8ba186c065d4e2e52d1072c0"
+ integrity sha1-JxNoB3XnYUyLoYbAZdTi5S0QcsA=
+
+are-we-there-yet@~1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.2.tgz#80e470e95a084794fe1899262c5667c6e88de1b3"
+ integrity sha1-gORw6VoIR5T+GJkmLFZnxuiN4bM=
+ dependencies:
+ delegates "^1.0.0"
+ readable-stream "^2.0.0 || ^1.1.13"
+
+arr-diff@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf"
+ integrity sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=
+ dependencies:
+ arr-flatten "^1.0.1"
+
+arr-flatten@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.0.1.tgz#e5ffe54d45e19f32f216e91eb99c8ce892bb604b"
+ integrity sha1-5f/lTUXhnzLyFukeuZyM6JK7YEs=
+
+array-find-index@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1"
+ integrity sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=
+
+array-unique@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53"
+ integrity sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=
+
+arrify@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d"
+ integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=
+
+asn1@~0.2.3:
+ version "0.2.3"
+ resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86"
+ integrity sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=
+
+assert-plus@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234"
+ integrity sha1-104bh+ev/A24qttwIfP+SBAasjQ=
+
+assert-plus@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525"
+ integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=
+
+assert@^1.1.1:
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/assert/-/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91"
+ integrity sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=
+ dependencies:
+ util "0.10.3"
+
+async-each@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d"
+ integrity sha1-GdOGodntxufByF04iu28xW0zYC0=
+
+async@^0.9.0:
+ version "0.9.2"
+ resolved "https://registry.yarnpkg.com/async/-/async-0.9.2.tgz#aea74d5e61c1f899613bf64bda66d4c78f2fd17d"
+ integrity sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=
+
+async@^1.3.0:
+ version "1.5.2"
+ resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a"
+ integrity sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=
+
+async@~0.2.6:
+ version "0.2.10"
+ resolved "https://registry.yarnpkg.com/async/-/async-0.2.10.tgz#b6bbe0b0674b9d719708ca38de8c237cb526c3d1"
+ integrity sha1-trvgsGdLnXGXCMo43owjfLUmw9E=
+
+asynckit@^0.4.0:
+ version "0.4.0"
+ resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
+ integrity sha1-x57Zf380y48robyXkLzDZkdLS3k=
+
+aws-sign2@~0.6.0:
+ version "0.6.0"
+ resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f"
+ integrity sha1-FDQt0428yU0OW4fXY81jYSwOeU8=
+
+aws4@^1.2.1:
+ version "1.5.0"
+ resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.5.0.tgz#0a29ffb79c31c9e712eeb087e8e7a64b4a56d755"
+ integrity sha1-Cin/t5wxyecS7rCH6OemS0pW11U=
+
+babel-cli@^6.10.1:
+ version "6.22.2"
+ resolved "https://registry.yarnpkg.com/babel-cli/-/babel-cli-6.22.2.tgz#3f814c8acf52759082b8fedd9627f938936ab559"
+ integrity sha1-P4FMis9SdZCCuP7dlif5OJNqtVk=
+ dependencies:
+ babel-core "^6.22.1"
+ babel-polyfill "^6.22.0"
+ babel-register "^6.22.0"
+ babel-runtime "^6.22.0"
+ commander "^2.8.1"
+ convert-source-map "^1.1.0"
+ fs-readdir-recursive "^1.0.0"
+ glob "^7.0.0"
+ lodash "^4.2.0"
+ output-file-sync "^1.1.0"
+ path-is-absolute "^1.0.0"
+ slash "^1.0.0"
+ source-map "^0.5.0"
+ v8flags "^2.0.10"
+ optionalDependencies:
+ chokidar "^1.6.1"
+
+babel-code-frame@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.22.0.tgz#027620bee567a88c32561574e7fd0801d33118e4"
+ integrity sha1-AnYgvuVnqIwyVhV05/0IAdMxGOQ=
+ dependencies:
+ chalk "^1.1.0"
+ esutils "^2.0.2"
+ js-tokens "^3.0.0"
+
+babel-core@^6.22.0, babel-core@^6.22.1:
+ version "6.22.1"
+ resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.22.1.tgz#9c5fd658ba1772d28d721f6d25d968fc7ae21648"
+ integrity sha1-nF/WWLoXctKNch9tJdlo/HriFkg=
+ dependencies:
+ babel-code-frame "^6.22.0"
+ babel-generator "^6.22.0"
+ babel-helpers "^6.22.0"
+ babel-messages "^6.22.0"
+ babel-register "^6.22.0"
+ babel-runtime "^6.22.0"
+ babel-template "^6.22.0"
+ babel-traverse "^6.22.1"
+ babel-types "^6.22.0"
+ babylon "^6.11.0"
+ convert-source-map "^1.1.0"
+ debug "^2.1.1"
+ json5 "^0.5.0"
+ lodash "^4.2.0"
+ minimatch "^3.0.2"
+ path-is-absolute "^1.0.0"
+ private "^0.1.6"
+ slash "^1.0.0"
+ source-map "^0.5.0"
+
+babel-generator@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.22.0.tgz#d642bf4961911a8adc7c692b0c9297f325cda805"
+ integrity sha1-1kK/SWGRGorcfGkrDJKX8yXNqAU=
+ dependencies:
+ babel-messages "^6.22.0"
+ babel-runtime "^6.22.0"
+ babel-types "^6.22.0"
+ detect-indent "^4.0.0"
+ jsesc "^1.3.0"
+ lodash "^4.2.0"
+ source-map "^0.5.0"
+
+babel-helper-call-delegate@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-helper-call-delegate/-/babel-helper-call-delegate-6.22.0.tgz#119921b56120f17e9dae3f74b4f5cc7bcc1b37ef"
+ integrity sha1-EZkhtWEg8X6drj90tPXMe8wbN+8=
+ dependencies:
+ babel-helper-hoist-variables "^6.22.0"
+ babel-runtime "^6.22.0"
+ babel-traverse "^6.22.0"
+ babel-types "^6.22.0"
+
+babel-helper-define-map@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-helper-define-map/-/babel-helper-define-map-6.22.0.tgz#9544e9502b2d6dfe7d00ff60e82bd5a7a89e95b7"
+ integrity sha1-lUTpUCstbf59AP9g6CvVp6ielbc=
+ dependencies:
+ babel-helper-function-name "^6.22.0"
+ babel-runtime "^6.22.0"
+ babel-types "^6.22.0"
+ lodash "^4.2.0"
+
+babel-helper-evaluate-path@^0.0.3:
+ version "0.0.3"
+ resolved "https://registry.yarnpkg.com/babel-helper-evaluate-path/-/babel-helper-evaluate-path-0.0.3.tgz#1d103ac9d4a59e5d431842212f151785f7ac547b"
+ integrity sha1-HRA6ydSlnl1DGEIhLxUXhfesVHs=
+
+babel-helper-flip-expressions@^0.0.2:
+ version "0.0.2"
+ resolved "https://registry.yarnpkg.com/babel-helper-flip-expressions/-/babel-helper-flip-expressions-0.0.2.tgz#7bab2cf61162bc92703e9b298ef512bcf77d6787"
+ integrity sha1-e6ss9hFivJJwPpspjvUSvPd9Z4c=
+
+babel-helper-function-name@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-6.22.0.tgz#51f1bdc4bb89b15f57a9b249f33d742816dcbefc"
+ integrity sha1-UfG9xLuJsV9XqbJJ8z10KBbcvvw=
+ dependencies:
+ babel-helper-get-function-arity "^6.22.0"
+ babel-runtime "^6.22.0"
+ babel-template "^6.22.0"
+ babel-traverse "^6.22.0"
+ babel-types "^6.22.0"
+
+babel-helper-get-function-arity@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.22.0.tgz#0beb464ad69dc7347410ac6ade9f03a50634f5ce"
+ integrity sha1-C+tGStadxzR0EKxq3p8DpQY09c4=
+ dependencies:
+ babel-runtime "^6.22.0"
+ babel-types "^6.22.0"
+
+babel-helper-hoist-variables@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.22.0.tgz#3eacbf731d80705845dd2e9718f600cfb9b4ba72"
+ integrity sha1-Pqy/cx2AcFhF3S6XGPYAz7m0unI=
+ dependencies:
+ babel-runtime "^6.22.0"
+ babel-types "^6.22.0"
+
+babel-helper-is-nodes-equiv@^0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/babel-helper-is-nodes-equiv/-/babel-helper-is-nodes-equiv-0.0.1.tgz#34e9b300b1479ddd98ec77ea0bbe9342dfe39684"
+ integrity sha1-NOmzALFHnd2Y7HfqC76TQt/jloQ=
+
+babel-helper-is-void-0@^0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/babel-helper-is-void-0/-/babel-helper-is-void-0-0.0.1.tgz#ed74553b883e68226ae45f989a99b02c190f105a"
+ integrity sha1-7XRVO4g+aCJq5F+YmpmwLBkPEFo=
+
+babel-helper-mark-eval-scopes@^0.0.2:
+ version "0.0.2"
+ resolved "https://registry.yarnpkg.com/babel-helper-mark-eval-scopes/-/babel-helper-mark-eval-scopes-0.0.2.tgz#909fd1f2384570cd3003283773852d9d63922a37"
+ integrity sha1-kJ/R8jhFcM0wAyg3c4UtnWOSKjc=
+
+babel-helper-optimise-call-expression@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.22.0.tgz#f8d5d4b40a6e2605a6a7f9d537b581bea3756d15"
+ integrity sha1-+NXUtApuJgWmp/nVN7WBvqN1bRU=
+ dependencies:
+ babel-runtime "^6.22.0"
+ babel-types "^6.22.0"
+
+babel-helper-regex@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-helper-regex/-/babel-helper-regex-6.22.0.tgz#79f532be1647b1f0ee3474b5f5c3da58001d247d"
+ integrity sha1-efUyvhZHsfDuNHS19cPaWAAdJH0=
+ dependencies:
+ babel-runtime "^6.22.0"
+ babel-types "^6.22.0"
+ lodash "^4.2.0"
+
+babel-helper-remove-or-void@^0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/babel-helper-remove-or-void/-/babel-helper-remove-or-void-0.0.1.tgz#f602790e465acf2dfbe84fb3dd210c43a2dd7262"
+ integrity sha1-9gJ5DkZazy376E+z3SEMQ6LdcmI=
+
+babel-helper-replace-supers@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-helper-replace-supers/-/babel-helper-replace-supers-6.22.0.tgz#1fcee2270657548908c34db16bcc345f9850cf42"
+ integrity sha1-H87iJwZXVIkIw02xa8w0X5hQz0I=
+ dependencies:
+ babel-helper-optimise-call-expression "^6.22.0"
+ babel-messages "^6.22.0"
+ babel-runtime "^6.22.0"
+ babel-template "^6.22.0"
+ babel-traverse "^6.22.0"
+ babel-types "^6.22.0"
+
+babel-helper-to-multiple-sequence-expressions@^0.0.3:
+ version "0.0.3"
+ resolved "https://registry.yarnpkg.com/babel-helper-to-multiple-sequence-expressions/-/babel-helper-to-multiple-sequence-expressions-0.0.3.tgz#c789a0faccd2669c51234be2cea7a3e5a0573c25"
+ integrity sha1-x4mg+szSZpxRI0vizqej5aBXPCU=
+
+babel-helpers@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.22.0.tgz#d275f55f2252b8101bff07bc0c556deda657392c"
+ integrity sha1-0nX1XyJSuBAb/we8DFVt7aZXOSw=
+ dependencies:
+ babel-runtime "^6.22.0"
+ babel-template "^6.22.0"
+
+babel-loader@6:
+ version "6.4.1"
+ resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-6.4.1.tgz#0b34112d5b0748a8dcdbf51acf6f9bd42d50b8ca"
+ integrity sha1-CzQRLVsHSKjc2/Uaz2+b1C1QuMo=
+ dependencies:
+ find-cache-dir "^0.1.1"
+ loader-utils "^0.2.16"
+ mkdirp "^0.5.1"
+ object-assign "^4.0.1"
+
+babel-messages@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.22.0.tgz#36066a214f1217e4ed4164867669ecb39e3ea575"
+ integrity sha1-NgZqIU8SF+TtQWSGdmnss54+pXU=
+ dependencies:
+ babel-runtime "^6.22.0"
+
+babel-plugin-check-es2015-constants@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz#35157b101426fd2ffd3da3f75c7d1e91835bbf8a"
+ integrity sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=
+ dependencies:
+ babel-runtime "^6.22.0"
+
+babel-plugin-minify-constant-folding@^0.0.4:
+ version "0.0.4"
+ resolved "https://registry.yarnpkg.com/babel-plugin-minify-constant-folding/-/babel-plugin-minify-constant-folding-0.0.4.tgz#b6e231026a6035e88ceadd206128d7db2b5c15e6"
+ integrity sha1-tuIxAmpgNeiM6t0gYSjX2ytcFeY=
+ dependencies:
+ babel-helper-evaluate-path "^0.0.3"
+ jsesc "^2.4.0"
+
+babel-plugin-minify-dead-code-elimination@^0.1.3:
+ version "0.1.3"
+ resolved "https://registry.yarnpkg.com/babel-plugin-minify-dead-code-elimination/-/babel-plugin-minify-dead-code-elimination-0.1.3.tgz#7882c014619934cb9aca69d85c968ed124ac97e3"
+ integrity sha1-eILAFGGZNMuaymnYXJaO0SSsl+M=
+ dependencies:
+ babel-helper-mark-eval-scopes "^0.0.2"
+ babel-helper-remove-or-void "^0.0.1"
+ lodash.some "^4.6.0"
+
+babel-plugin-minify-flip-comparisons@^0.0.2:
+ version "0.0.2"
+ resolved "https://registry.yarnpkg.com/babel-plugin-minify-flip-comparisons/-/babel-plugin-minify-flip-comparisons-0.0.2.tgz#7d0953aa5876ede6118966bda9edecc63bf346ab"
+ integrity sha1-fQlTqlh27eYRiWa9qe3sxjvzRqs=
+ dependencies:
+ babel-helper-is-void-0 "^0.0.1"
+
+babel-plugin-minify-guarded-expressions@^0.0.4:
+ version "0.0.4"
+ resolved "https://registry.yarnpkg.com/babel-plugin-minify-guarded-expressions/-/babel-plugin-minify-guarded-expressions-0.0.4.tgz#957104a760e6a7ffd967005a7a11621bb42fd11c"
+ integrity sha1-lXEEp2Dmp//ZZwBaehFiG7Qv0Rw=
+ dependencies:
+ babel-helper-flip-expressions "^0.0.2"
+
+babel-plugin-minify-infinity@^0.0.3:
+ version "0.0.3"
+ resolved "https://registry.yarnpkg.com/babel-plugin-minify-infinity/-/babel-plugin-minify-infinity-0.0.3.tgz#4cc99b61d12b434ce80ad675103335c589cba9a1"
+ integrity sha1-TMmbYdErQ0zoCtZ1EDM1xYnLqaE=
+
+babel-plugin-minify-mangle-names@^0.0.7:
+ version "0.0.7"
+ resolved "https://registry.yarnpkg.com/babel-plugin-minify-mangle-names/-/babel-plugin-minify-mangle-names-0.0.7.tgz#fcc5f9a4c4c9c0731e73a4a4e3d002fcb800ef41"
+ integrity sha1-/MX5pMTJwHMec6Sk49AC/LgA70E=
+ dependencies:
+ babel-helper-mark-eval-scopes "^0.0.2"
+
+babel-plugin-minify-numeric-literals@^0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-minify-numeric-literals/-/babel-plugin-minify-numeric-literals-0.0.1.tgz#9597e6c31154d7daf3744d0bd417c144b275bd53"
+ integrity sha1-lZfmwxFU19rzdE0L1BfBRLJ1vVM=
+
+babel-plugin-minify-replace@^0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-minify-replace/-/babel-plugin-minify-replace-0.0.1.tgz#5d5aea7cb9899245248d1ee9ce7a2fe556a8facc"
+ integrity sha1-XVrqfLmJkkUkjR7pznov5Vao+sw=
+
+babel-plugin-minify-simplify@^0.0.7:
+ version "0.0.7"
+ resolved "https://registry.yarnpkg.com/babel-plugin-minify-simplify/-/babel-plugin-minify-simplify-0.0.7.tgz#4198d589ea10b4bc5bf9310206619a743c0d0664"
+ integrity sha1-QZjVieoQtLxb+TECBmGadDwNBmQ=
+ dependencies:
+ babel-helper-flip-expressions "^0.0.2"
+ babel-helper-is-nodes-equiv "^0.0.1"
+ babel-helper-to-multiple-sequence-expressions "^0.0.3"
+
+babel-plugin-minify-type-constructors@^0.0.3:
+ version "0.0.3"
+ resolved "https://registry.yarnpkg.com/babel-plugin-minify-type-constructors/-/babel-plugin-minify-type-constructors-0.0.3.tgz#ab59c1ad835b6b6e8e932b875d4df4dc393d9d26"
+ integrity sha1-q1nBrYNba26OkyuHXU303Dk9nSY=
+ dependencies:
+ babel-helper-is-void-0 "^0.0.1"
+
+babel-plugin-transform-es2015-arrow-functions@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz#452692cb711d5f79dc7f85e440ce41b9f244d221"
+ integrity sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=
+ dependencies:
+ babel-runtime "^6.22.0"
+
+babel-plugin-transform-es2015-block-scoped-functions@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz#bbc51b49f964d70cb8d8e0b94e820246ce3a6141"
+ integrity sha1-u8UbSflk1wy42OC5ToICRs46YUE=
+ dependencies:
+ babel-runtime "^6.22.0"
+
+babel-plugin-transform-es2015-block-scoping@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.22.0.tgz#00d6e3a0bebdcfe7536b9d653b44a9141e63e47e"
+ integrity sha1-ANbjoL69z+dTa51lO0SpFB5j5H4=
+ dependencies:
+ babel-runtime "^6.22.0"
+ babel-template "^6.22.0"
+ babel-traverse "^6.22.0"
+ babel-types "^6.22.0"
+ lodash "^4.2.0"
+
+babel-plugin-transform-es2015-classes@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.22.0.tgz#54d44998fd823d9dca15292324161c331c1b6f14"
+ integrity sha1-VNRJmP2CPZ3KFSkjJBYcMxwbbxQ=
+ dependencies:
+ babel-helper-define-map "^6.22.0"
+ babel-helper-function-name "^6.22.0"
+ babel-helper-optimise-call-expression "^6.22.0"
+ babel-helper-replace-supers "^6.22.0"
+ babel-messages "^6.22.0"
+ babel-runtime "^6.22.0"
+ babel-template "^6.22.0"
+ babel-traverse "^6.22.0"
+ babel-types "^6.22.0"
+
+babel-plugin-transform-es2015-computed-properties@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.22.0.tgz#7c383e9629bba4820c11b0425bdd6290f7f057e7"
+ integrity sha1-fDg+lim7pIIMEbBCW91ikPfwV+c=
+ dependencies:
+ babel-runtime "^6.22.0"
+ babel-template "^6.22.0"
+
+babel-plugin-transform-es2015-destructuring@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.22.0.tgz#8e0af2f885a0b2cf999d47c4c1dd23ce88cfa4c6"
+ integrity sha1-jgry+IWgss+ZnUfEwd0jzojPpMY=
+ dependencies:
+ babel-runtime "^6.22.0"
+
+babel-plugin-transform-es2015-duplicate-keys@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.22.0.tgz#672397031c21610d72dd2bbb0ba9fb6277e1c36b"
+ integrity sha1-ZyOXAxwhYQ1y3Su7C6n7Ynfhw2s=
+ dependencies:
+ babel-runtime "^6.22.0"
+ babel-types "^6.22.0"
+
+babel-plugin-transform-es2015-for-of@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.22.0.tgz#180467ad63aeea592a1caeee4bf1c8b3e2616265"
+ integrity sha1-GARnrWOu6lkqHK7uS/HIs+JhYmU=
+ dependencies:
+ babel-runtime "^6.22.0"
+
+babel-plugin-transform-es2015-function-name@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.22.0.tgz#f5fcc8b09093f9a23c76ac3d9e392c3ec4b77104"
+ integrity sha1-9fzIsJCT+aI8dqw9njksPsS3cQQ=
+ dependencies:
+ babel-helper-function-name "^6.22.0"
+ babel-runtime "^6.22.0"
+ babel-types "^6.22.0"
+
+babel-plugin-transform-es2015-literals@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz#4f54a02d6cd66cf915280019a31d31925377ca2e"
+ integrity sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=
+ dependencies:
+ babel-runtime "^6.22.0"
+
+babel-plugin-transform-es2015-modules-amd@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.22.0.tgz#bf69cd34889a41c33d90dfb740e0091ccff52f21"
+ integrity sha1-v2nNNIiaQcM9kN+3QOAJHM/1LyE=
+ dependencies:
+ babel-plugin-transform-es2015-modules-commonjs "^6.22.0"
+ babel-runtime "^6.22.0"
+ babel-template "^6.22.0"
+
+babel-plugin-transform-es2015-modules-commonjs@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.22.0.tgz#6ca04e22b8e214fb50169730657e7a07dc941145"
+ integrity sha1-bKBOIrjiFPtQFpcwZX56B9yUEUU=
+ dependencies:
+ babel-plugin-transform-strict-mode "^6.22.0"
+ babel-runtime "^6.22.0"
+ babel-template "^6.22.0"
+ babel-types "^6.22.0"
+
+babel-plugin-transform-es2015-modules-systemjs@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.22.0.tgz#810cd0cd025a08383b84236b92c6e31f88e644ad"
+ integrity sha1-gQzQzQJaCDg7hCNrksbjH4jmRK0=
+ dependencies:
+ babel-helper-hoist-variables "^6.22.0"
+ babel-runtime "^6.22.0"
+ babel-template "^6.22.0"
+
+babel-plugin-transform-es2015-modules-umd@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.22.0.tgz#60d0ba3bd23258719c64391d9bf492d648dc0fae"
+ integrity sha1-YNC6O9IyWHGcZDkdm/SS1kjcD64=
+ dependencies:
+ babel-plugin-transform-es2015-modules-amd "^6.22.0"
+ babel-runtime "^6.22.0"
+ babel-template "^6.22.0"
+
+babel-plugin-transform-es2015-object-super@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.22.0.tgz#daa60e114a042ea769dd53fe528fc82311eb98fc"
+ integrity sha1-2qYOEUoELqdp3VP+Uo/IIxHrmPw=
+ dependencies:
+ babel-helper-replace-supers "^6.22.0"
+ babel-runtime "^6.22.0"
+
+babel-plugin-transform-es2015-parameters@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.22.0.tgz#57076069232019094f27da8c68bb7162fe208dbb"
+ integrity sha1-VwdgaSMgGQlPJ9qMaLtxYv4gjbs=
+ dependencies:
+ babel-helper-call-delegate "^6.22.0"
+ babel-helper-get-function-arity "^6.22.0"
+ babel-runtime "^6.22.0"
+ babel-template "^6.22.0"
+ babel-traverse "^6.22.0"
+ babel-types "^6.22.0"
+
+babel-plugin-transform-es2015-shorthand-properties@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.22.0.tgz#8ba776e0affaa60bff21e921403b8a652a2ff723"
+ integrity sha1-i6d24K/6pgv/IekhQDuKZSov9yM=
+ dependencies:
+ babel-runtime "^6.22.0"
+ babel-types "^6.22.0"
+
+babel-plugin-transform-es2015-spread@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz#d6d68a99f89aedc4536c81a542e8dd9f1746f8d1"
+ integrity sha1-1taKmfia7cRTbIGlQujdnxdG+NE=
+ dependencies:
+ babel-runtime "^6.22.0"
+
+babel-plugin-transform-es2015-sticky-regex@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.22.0.tgz#ab316829e866ee3f4b9eb96939757d19a5bc4593"
+ integrity sha1-qzFoKehm7j9LnrlpOXV9GaW8RZM=
+ dependencies:
+ babel-helper-regex "^6.22.0"
+ babel-runtime "^6.22.0"
+ babel-types "^6.22.0"
+
+babel-plugin-transform-es2015-template-literals@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz#a84b3450f7e9f8f1f6839d6d687da84bb1236d8d"
+ integrity sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=
+ dependencies:
+ babel-runtime "^6.22.0"
+
+babel-plugin-transform-es2015-typeof-symbol@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.22.0.tgz#87faf2336d3b6a97f68c4d906b0cd0edeae676e1"
+ integrity sha1-h/ryM207apf2jE2QawzQ7ermduE=
+ dependencies:
+ babel-runtime "^6.22.0"
+
+babel-plugin-transform-es2015-unicode-regex@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.22.0.tgz#8d9cc27e7ee1decfe65454fb986452a04a613d20"
+ integrity sha1-jZzCfn7h3s/mVFT7mGRSoEphPSA=
+ dependencies:
+ babel-helper-regex "^6.22.0"
+ babel-runtime "^6.22.0"
+ regexpu-core "^2.0.0"
+
+babel-plugin-transform-inline-consecutive-adds@^0.0.2:
+ version "0.0.2"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-inline-consecutive-adds/-/babel-plugin-transform-inline-consecutive-adds-0.0.2.tgz#a58fcecfc09c08fbf9373a5a3e70746c03d01fc1"
+ integrity sha1-pY/Oz8CcCPv5NzpaPnB0bAPQH8E=
+
+babel-plugin-transform-member-expression-literals@^6.8.1:
+ version "6.8.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-member-expression-literals/-/babel-plugin-transform-member-expression-literals-6.8.1.tgz#60b78cb2b814ac71dd6104ef51c496c62e877337"
+ integrity sha1-YLeMsrgUrHHdYQTvUcSWxi6Hczc=
+
+babel-plugin-transform-merge-sibling-variables@^6.8.2:
+ version "6.8.2"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-merge-sibling-variables/-/babel-plugin-transform-merge-sibling-variables-6.8.2.tgz#498acd07481ab340c1bad8b726c2fad1b8f644e5"
+ integrity sha1-SYrNB0gas0DButi3JsL60bj2ROU=
+
+babel-plugin-transform-minify-booleans@^6.8.0:
+ version "6.8.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-minify-booleans/-/babel-plugin-transform-minify-booleans-6.8.0.tgz#b1a48864a727847696b84eae36fa4d085a54b42b"
+ integrity sha1-saSIZKcnhHaWuE6uNvpNCFpUtCs=
+ dependencies:
+ babel-runtime "^6.0.0"
+
+babel-plugin-transform-property-literals@^6.8.1:
+ version "6.8.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-property-literals/-/babel-plugin-transform-property-literals-6.8.1.tgz#05ed01f6024820b18f1d0495c80fe287176bccd9"
+ integrity sha1-Be0B9gJIILGPHQSVyA/ihxdrzNk=
+
+babel-plugin-transform-regenerator@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.22.0.tgz#65740593a319c44522157538d690b84094617ea6"
+ integrity sha1-ZXQFk6MZxEUiFXU41pC4QJRhfqY=
+ dependencies:
+ regenerator-transform "0.9.8"
+
+babel-plugin-transform-regexp-constructors@^0.0.5:
+ version "0.0.5"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-regexp-constructors/-/babel-plugin-transform-regexp-constructors-0.0.5.tgz#74d95e0c567e6fc1d9c699a084894d40de8e581d"
+ integrity sha1-dNleDFZ+b8HZxpmghIlNQN6OWB0=
+
+babel-plugin-transform-remove-console@^6.8.0:
+ version "6.8.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-remove-console/-/babel-plugin-transform-remove-console-6.8.0.tgz#c4162f01ee169491776e64093f4dad8d61125a90"
+ integrity sha1-xBYvAe4WlJF3bmQJP02tjWESWpA=
+ dependencies:
+ babel-runtime "^6.0.0"
+
+babel-plugin-transform-remove-debugger@^6.8.0:
+ version "6.8.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-remove-debugger/-/babel-plugin-transform-remove-debugger-6.8.0.tgz#d3ece7d8400473f7a706177ba22fd3026ad7e020"
+ integrity sha1-0+zn2EAEc/enBhd7oi/TAmrX4CA=
+ dependencies:
+ babel-runtime "^6.0.0"
+
+babel-plugin-transform-remove-undefined@^0.0.5:
+ version "0.0.5"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-remove-undefined/-/babel-plugin-transform-remove-undefined-0.0.5.tgz#12ef11805e06e861dd2eb0c7cc041d2184b8f410"
+ integrity sha1-Eu8RgF4G6GHdLrDHzAQdIYS49BA=
+
+babel-plugin-transform-simplify-comparison-operators@^6.8.1:
+ version "6.8.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-simplify-comparison-operators/-/babel-plugin-transform-simplify-comparison-operators-6.8.1.tgz#a307088e0d1c728081777fba568f4107396ab25c"
+ integrity sha1-owcIjg0ccoCBd3+6Vo9BBzlqslw=
+
+babel-plugin-transform-strict-mode@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.22.0.tgz#e008df01340fdc87e959da65991b7e05970c8c7c"
+ integrity sha1-4AjfATQP3IfpWdplmRt+BZcMjHw=
+ dependencies:
+ babel-runtime "^6.22.0"
+ babel-types "^6.22.0"
+
+babel-plugin-transform-undefined-to-void@^6.8.0:
+ version "6.8.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-undefined-to-void/-/babel-plugin-transform-undefined-to-void-6.8.0.tgz#bc5b6b4908d3b1262170e67cb3963903ddce167e"
+ integrity sha1-vFtrSQjTsSYhcOZ8s5Y5A93OFn4=
+ dependencies:
+ babel-runtime "^6.0.0"
+
+babel-polyfill@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-polyfill/-/babel-polyfill-6.22.0.tgz#1ac99ebdcc6ba4db1e2618c387b2084a82154a3b"
+ integrity sha1-GsmevcxrpNseJhjDh7IISoIVSjs=
+ dependencies:
+ babel-runtime "^6.22.0"
+ core-js "^2.4.0"
+ regenerator-runtime "^0.10.0"
+
+babel-preset-babili@^0.0.11:
+ version "0.0.11"
+ resolved "https://registry.yarnpkg.com/babel-preset-babili/-/babel-preset-babili-0.0.11.tgz#9461fd902d6a3c8bc032b8f06c2f691674c12a1f"
+ integrity sha1-lGH9kC1qPIvAMrjwbC9pFnTBKh8=
+ dependencies:
+ babel-plugin-minify-constant-folding "^0.0.4"
+ babel-plugin-minify-dead-code-elimination "^0.1.3"
+ babel-plugin-minify-flip-comparisons "^0.0.2"
+ babel-plugin-minify-guarded-expressions "^0.0.4"
+ babel-plugin-minify-infinity "^0.0.3"
+ babel-plugin-minify-mangle-names "^0.0.7"
+ babel-plugin-minify-numeric-literals "^0.0.1"
+ babel-plugin-minify-replace "^0.0.1"
+ babel-plugin-minify-simplify "^0.0.7"
+ babel-plugin-minify-type-constructors "^0.0.3"
+ babel-plugin-transform-inline-consecutive-adds "^0.0.2"
+ babel-plugin-transform-member-expression-literals "^6.8.1"
+ babel-plugin-transform-merge-sibling-variables "^6.8.2"
+ babel-plugin-transform-minify-booleans "^6.8.0"
+ babel-plugin-transform-property-literals "^6.8.1"
+ babel-plugin-transform-regexp-constructors "^0.0.5"
+ babel-plugin-transform-remove-console "^6.8.0"
+ babel-plugin-transform-remove-debugger "^6.8.0"
+ babel-plugin-transform-remove-undefined "^0.0.5"
+ babel-plugin-transform-simplify-comparison-operators "^6.8.1"
+ babel-plugin-transform-undefined-to-void "^6.8.0"
+ lodash.isplainobject "^4.0.6"
+
+babel-preset-es2015@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-preset-es2015/-/babel-preset-es2015-6.22.0.tgz#af5a98ecb35eb8af764ad8a5a05eb36dc4386835"
+ integrity sha1-r1qY7LNeuK92StiloF6zbcQ4aDU=
+ dependencies:
+ babel-plugin-check-es2015-constants "^6.22.0"
+ babel-plugin-transform-es2015-arrow-functions "^6.22.0"
+ babel-plugin-transform-es2015-block-scoped-functions "^6.22.0"
+ babel-plugin-transform-es2015-block-scoping "^6.22.0"
+ babel-plugin-transform-es2015-classes "^6.22.0"
+ babel-plugin-transform-es2015-computed-properties "^6.22.0"
+ babel-plugin-transform-es2015-destructuring "^6.22.0"
+ babel-plugin-transform-es2015-duplicate-keys "^6.22.0"
+ babel-plugin-transform-es2015-for-of "^6.22.0"
+ babel-plugin-transform-es2015-function-name "^6.22.0"
+ babel-plugin-transform-es2015-literals "^6.22.0"
+ babel-plugin-transform-es2015-modules-amd "^6.22.0"
+ babel-plugin-transform-es2015-modules-commonjs "^6.22.0"
+ babel-plugin-transform-es2015-modules-systemjs "^6.22.0"
+ babel-plugin-transform-es2015-modules-umd "^6.22.0"
+ babel-plugin-transform-es2015-object-super "^6.22.0"
+ babel-plugin-transform-es2015-parameters "^6.22.0"
+ babel-plugin-transform-es2015-shorthand-properties "^6.22.0"
+ babel-plugin-transform-es2015-spread "^6.22.0"
+ babel-plugin-transform-es2015-sticky-regex "^6.22.0"
+ babel-plugin-transform-es2015-template-literals "^6.22.0"
+ babel-plugin-transform-es2015-typeof-symbol "^6.22.0"
+ babel-plugin-transform-es2015-unicode-regex "^6.22.0"
+ babel-plugin-transform-regenerator "^6.22.0"
+
+babel-register@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.22.0.tgz#a61dd83975f9ca4a9e7d6eff3059494cd5ea4c63"
+ integrity sha1-ph3YOXX5ykqefW7/MFlJTNXqTGM=
+ dependencies:
+ babel-core "^6.22.0"
+ babel-runtime "^6.22.0"
+ core-js "^2.4.0"
+ home-or-tmp "^2.0.0"
+ lodash "^4.2.0"
+ mkdirp "^0.5.1"
+ source-map-support "^0.4.2"
+
+babel-runtime@^6.0.0, babel-runtime@^6.18.0, babel-runtime@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.22.0.tgz#1cf8b4ac67c77a4ddb0db2ae1f74de52ac4ca611"
+ integrity sha1-HPi0rGfHek3bDbKuH3TeUqxMphE=
+ dependencies:
+ core-js "^2.4.0"
+ regenerator-runtime "^0.10.0"
+
+babel-template@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.22.0.tgz#403d110905a4626b317a2a1fcb8f3b73204b2edb"
+ integrity sha1-QD0RCQWkYmsxeiofy487cyBLLts=
+ dependencies:
+ babel-runtime "^6.22.0"
+ babel-traverse "^6.22.0"
+ babel-types "^6.22.0"
+ babylon "^6.11.0"
+ lodash "^4.2.0"
+
+babel-traverse@^6.22.0, babel-traverse@^6.22.1:
+ version "6.22.1"
+ resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.22.1.tgz#3b95cd6b7427d6f1f757704908f2fc9748a5f59f"
+ integrity sha1-O5XNa3Qn1vH3V3BJCPL8l0il9Z8=
+ dependencies:
+ babel-code-frame "^6.22.0"
+ babel-messages "^6.22.0"
+ babel-runtime "^6.22.0"
+ babel-types "^6.22.0"
+ babylon "^6.15.0"
+ debug "^2.2.0"
+ globals "^9.0.0"
+ invariant "^2.2.0"
+ lodash "^4.2.0"
+
+babel-types@^6.19.0, babel-types@^6.22.0:
+ version "6.22.0"
+ resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.22.0.tgz#2a447e8d0ea25d2512409e4175479fd78cc8b1db"
+ integrity sha1-KkR+jQ6iXSUSQJ5BdUef14zIsds=
+ dependencies:
+ babel-runtime "^6.22.0"
+ esutils "^2.0.2"
+ lodash "^4.2.0"
+ to-fast-properties "^1.0.1"
+
+babili@^0.0.11:
+ version "0.0.11"
+ resolved "https://registry.yarnpkg.com/babili/-/babili-0.0.11.tgz#887b3461c7e41aaf9f37383b5b01c82746201860"
+ integrity sha1-iHs0YcfkGq+fNzg7WwHIJ0YgGGA=
+ dependencies:
+ babel-cli "^6.10.1"
+ babel-preset-babili "^0.0.11"
+
+babylon@^6.11.0, babylon@^6.15.0:
+ version "6.15.0"
+ resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.15.0.tgz#ba65cfa1a80e1759b0e89fb562e27dccae70348e"
+ integrity sha1-umXPoagOF1mw6J+1YuJ9zK5wNI4=
+
+balanced-match@^0.4.1:
+ version "0.4.2"
+ resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838"
+ integrity sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=
+
+base64-js@^1.0.2:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.2.0.tgz#a39992d723584811982be5e290bb6a53d86700f1"
+ integrity sha1-o5mS1yNYSBGYK+XikLtqU9hnAPE=
+
+bcrypt-pbkdf@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.0.tgz#3ca76b85241c7170bf7d9703e7b9aa74630040d4"
+ integrity sha1-PKdrhSQccXC/fZcD57mqdGMAQNQ=
+ dependencies:
+ tweetnacl "^0.14.3"
+
+big.js@^3.1.3:
+ version "3.1.3"
+ resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.1.3.tgz#4cada2193652eb3ca9ec8e55c9015669c9806978"
+ integrity sha1-TK2iGTZS6zyp7I5VyQFWacmAaXg=
+
+binary-extensions@^1.0.0:
+ version "1.8.0"
+ resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.8.0.tgz#48ec8d16df4377eae5fa5884682480af4d95c774"
+ integrity sha1-SOyNFt9Dd+rl+liEaCSAr02Vx3Q=
+
+block-stream@*:
+ version "0.0.9"
+ resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a"
+ integrity sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=
+ dependencies:
+ inherits "~2.0.0"
+
+boom@2.x.x:
+ version "2.10.1"
+ resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f"
+ integrity sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=
+ dependencies:
+ hoek "2.x.x"
+
+brace-expansion@^1.0.0:
+ version "1.1.6"
+ resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.6.tgz#7197d7eaa9b87e648390ea61fc66c84427420df9"
+ integrity sha1-cZfX6qm4fmSDkOph/GbIRCdCDfk=
+ dependencies:
+ balanced-match "^0.4.1"
+ concat-map "0.0.1"
+
+braces@^1.8.2:
+ version "1.8.5"
+ resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7"
+ integrity sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=
+ dependencies:
+ expand-range "^1.8.1"
+ preserve "^0.2.0"
+ repeat-element "^1.1.2"
+
+browserify-aes@0.4.0:
+ version "0.4.0"
+ resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-0.4.0.tgz#067149b668df31c4b58533e02d01e806d8608e2c"
+ integrity sha1-BnFJtmjfMcS1hTPgLQHoBthgjiw=
+ dependencies:
+ inherits "^2.0.1"
+
+browserify-zlib@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.1.4.tgz#bb35f8a519f600e0fa6b8485241c979d0141fb2d"
+ integrity sha1-uzX4pRn2AOD6a4SFJByXnQFB+y0=
+ dependencies:
+ pako "~0.2.0"
+
+buffer-shims@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/buffer-shims/-/buffer-shims-1.0.0.tgz#9978ce317388c649ad8793028c3477ef044a8b51"
+ integrity sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=
+
+buffer@^4.9.0:
+ version "4.9.1"
+ resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298"
+ integrity sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=
+ dependencies:
+ base64-js "^1.0.2"
+ ieee754 "^1.1.4"
+ isarray "^1.0.0"
+
+builtin-modules@^1.0.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f"
+ integrity sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=
+
+builtin-status-codes@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8"
+ integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=
+
+camelcase-keys@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7"
+ integrity sha1-MIvur/3ygRkFHvodkyITyRuPkuc=
+ dependencies:
+ camelcase "^2.0.0"
+ map-obj "^1.0.0"
+
+camelcase@^1.0.2:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39"
+ integrity sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=
+
+camelcase@^2.0.0:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f"
+ integrity sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=
+
+caseless@~0.11.0:
+ version "0.11.0"
+ resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.11.0.tgz#715b96ea9841593cc33067923f5ec60ebda4f7d7"
+ integrity sha1-cVuW6phBWTzDMGeSP17GDr2k99c=
+
+center-align@^0.1.1:
+ version "0.1.3"
+ resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad"
+ integrity sha1-qg0yYptu6XIgBBHL1EYckHvCt60=
+ dependencies:
+ align-text "^0.1.3"
+ lazy-cache "^1.0.3"
+
+chalk@^1.1.0, chalk@^1.1.1:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98"
+ integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=
+ dependencies:
+ ansi-styles "^2.2.1"
+ escape-string-regexp "^1.0.2"
+ has-ansi "^2.0.0"
+ strip-ansi "^3.0.0"
+ supports-color "^2.0.0"
+
+chokidar@^1.0.0, chokidar@^1.6.1:
+ version "1.6.1"
+ resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.6.1.tgz#2f4447ab5e96e50fb3d789fd90d4c72e0e4c70c2"
+ integrity sha1-L0RHq16W5Q+z14n9kNTHLg5McMI=
+ dependencies:
+ anymatch "^1.3.0"
+ async-each "^1.0.0"
+ glob-parent "^2.0.0"
+ inherits "^2.0.1"
+ is-binary-path "^1.0.0"
+ is-glob "^2.0.0"
+ path-is-absolute "^1.0.0"
+ readdirp "^2.0.0"
+ optionalDependencies:
+ fsevents "^1.0.0"
+
+cliui@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1"
+ integrity sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=
+ dependencies:
+ center-align "^0.1.1"
+ right-align "^0.1.1"
+ wordwrap "0.0.2"
+
+clone@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.2.tgz#260b7a99ebb1edfe247538175f783243cb19d149"
+ integrity sha1-Jgt6meux7f4kdTgXX3gyQ8sZ0Uk=
+
+code-point-at@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77"
+ integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=
+
+combined-stream@^1.0.5, combined-stream@~1.0.5:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.5.tgz#938370a57b4a51dea2c77c15d5c5fdf895164009"
+ integrity sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=
+ dependencies:
+ delayed-stream "~1.0.0"
+
+commander@^2.8.1, commander@^2.9.0:
+ version "2.9.0"
+ resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4"
+ integrity sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=
+ dependencies:
+ graceful-readlink ">= 1.0.0"
+
+commondir@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b"
+ integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=
+
+concat-map@0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
+ integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
+
+console-browserify@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10"
+ integrity sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=
+ dependencies:
+ date-now "^0.1.4"
+
+console-control-strings@^1.0.0, console-control-strings@~1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e"
+ integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=
+
+constants-browserify@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75"
+ integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=
+
+convert-source-map@^1.1.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.3.0.tgz#e9f3e9c6e2728efc2676696a70eb382f73106a67"
+ integrity sha1-6fPpxuJyjvwmdmlqcOs4L3MQamc=
+
+core-js@^2.4.0:
+ version "2.4.1"
+ resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.4.1.tgz#4de911e667b0eae9124e34254b53aea6fc618d3e"
+ integrity sha1-TekR5mew6ukSTjQlS1OupvxhjT4=
+
+core-util-is@~1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
+ integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=
+
+cryptiles@2.x.x:
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8"
+ integrity sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=
+ dependencies:
+ boom "2.x.x"
+
+crypto-browserify@3.3.0:
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.3.0.tgz#b9fc75bb4a0ed61dcf1cd5dae96eb30c9c3e506c"
+ integrity sha1-ufx1u0oO1h3PHNXa6W6zDJw+UGw=
+ dependencies:
+ browserify-aes "0.4.0"
+ pbkdf2-compat "2.0.1"
+ ripemd160 "0.2.0"
+ sha.js "2.2.6"
+
+currently-unhandled@^0.4.1:
+ version "0.4.1"
+ resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea"
+ integrity sha1-mI3zP+qxke95mmE2nddsF635V+o=
+ dependencies:
+ array-find-index "^1.0.1"
+
+dashdash@^1.12.0:
+ version "1.14.1"
+ resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0"
+ integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=
+ dependencies:
+ assert-plus "^1.0.0"
+
+date-now@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b"
+ integrity sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=
+
+debug@^2.1.1, debug@^2.2.0, debug@~2.2.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da"
+ integrity sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=
+ dependencies:
+ ms "0.7.1"
+
+decamelize@^1.0.0, decamelize@^1.1.2:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
+ integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=
+
+deep-extend@~0.4.0:
+ version "0.4.1"
+ resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.1.tgz#efe4113d08085f4e6f9687759810f807469e2253"
+ integrity sha1-7+QRPQgIX05vlod1mBD4B0aeIlM=
+
+delayed-stream@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
+ integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk=
+
+delegates@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a"
+ integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=
+
+detect-indent@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208"
+ integrity sha1-920GQ1LN9Docts5hnE7jqUdd4gg=
+ dependencies:
+ repeating "^2.0.0"
+
+domain-browser@^1.1.1:
+ version "1.1.7"
+ resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.1.7.tgz#867aa4b093faa05f1de08c06f4d7b21fdf8698bc"
+ integrity sha1-hnqksJP6oF8d4IwG9NeyH9+GmLw=
+
+duplexer@^0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1"
+ integrity sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=
+
+ecc-jsbn@~0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505"
+ integrity sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=
+ dependencies:
+ jsbn "~0.1.0"
+
+emojis-list@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389"
+ integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k=
+
+enhanced-resolve@~0.9.0:
+ version "0.9.1"
+ resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-0.9.1.tgz#4d6e689b3725f86090927ccc86cd9f1635b89e2e"
+ integrity sha1-TW5omzcl+GCQknzMhs2fFjW4ni4=
+ dependencies:
+ graceful-fs "^4.1.2"
+ memory-fs "^0.2.0"
+ tapable "^0.1.8"
+
+errno@^0.1.3:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.4.tgz#b896e23a9e5e8ba33871fc996abd3635fc9a1c7d"
+ integrity sha1-uJbiOp5ei6M4cfyZar02NfyaHH0=
+ dependencies:
+ prr "~0.0.0"
+
+error-ex@^1.2.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.0.tgz#e67b43f3e82c96ea3a584ffee0b9fc3325d802d9"
+ integrity sha1-5ntD8+gsluo6WE/+4Ln8MyXYAtk=
+ dependencies:
+ is-arrayish "^0.2.1"
+
+escape-string-regexp@^1.0.2:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
+ integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
+
+esutils@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b"
+ integrity sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=
+
+events@^1.0.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924"
+ integrity sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=
+
+expand-brackets@^0.1.4:
+ version "0.1.5"
+ resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b"
+ integrity sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=
+ dependencies:
+ is-posix-bracket "^0.1.0"
+
+expand-range@^1.8.1:
+ version "1.8.2"
+ resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337"
+ integrity sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=
+ dependencies:
+ fill-range "^2.1.0"
+
+extend@~3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.0.tgz#5a474353b9f3353ddd8176dfd37b91c83a46f1d4"
+ integrity sha1-WkdDU7nzNT3dgXbf03uRyDpG8dQ=
+
+extglob@^0.3.1:
+ version "0.3.2"
+ resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1"
+ integrity sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=
+ dependencies:
+ is-extglob "^1.0.0"
+
+extsprintf@1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.0.2.tgz#e1080e0658e300b06294990cc70e1502235fd550"
+ integrity sha1-4QgOBljjALBilJkMxw4VAiNf1VA=
+
+filename-regex@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.0.tgz#996e3e80479b98b9897f15a8a58b3d084e926775"
+ integrity sha1-mW4+gEebmLmJfxWopYs9CE6SZ3U=
+
+fill-range@^2.1.0:
+ version "2.2.3"
+ resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723"
+ integrity sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=
+ dependencies:
+ is-number "^2.1.0"
+ isobject "^2.0.0"
+ randomatic "^1.1.3"
+ repeat-element "^1.1.2"
+ repeat-string "^1.5.2"
+
+find-cache-dir@^0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-0.1.1.tgz#c8defae57c8a52a8a784f9e31c57c742e993a0b9"
+ integrity sha1-yN765XyKUqinhPnjHFfHQumToLk=
+ dependencies:
+ commondir "^1.0.1"
+ mkdirp "^0.5.1"
+ pkg-dir "^1.0.0"
+
+find-up@^1.0.0:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f"
+ integrity sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=
+ dependencies:
+ path-exists "^2.0.0"
+ pinkie-promise "^2.0.0"
+
+for-in@^0.1.5:
+ version "0.1.6"
+ resolved "https://registry.yarnpkg.com/for-in/-/for-in-0.1.6.tgz#c9f96e89bfad18a545af5ec3ed352a1d9e5b4dc8"
+ integrity sha1-yfluib+tGKVFr17D7TUqHZ5bTcg=
+
+for-own@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.4.tgz#0149b41a39088c7515f51ebe1c1386d45f935072"
+ integrity sha1-AUm0GjkIjHUV9R6+HBOG1F+TUHI=
+ dependencies:
+ for-in "^0.1.5"
+
+forever-agent@~0.6.1:
+ version "0.6.1"
+ resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91"
+ integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=
+
+form-data@~2.1.1:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.2.tgz#89c3534008b97eada4cbb157d58f6f5df025eae4"
+ integrity sha1-icNTQAi5fq2ky7FX1Y9vXfAl6uQ=
+ dependencies:
+ asynckit "^0.4.0"
+ combined-stream "^1.0.5"
+ mime-types "^2.1.12"
+
+fs-readdir-recursive@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-1.0.0.tgz#8cd1745c8b4f8a29c8caec392476921ba195f560"
+ integrity sha1-jNF0XItPiinIyuw5JHaSG6GV9WA=
+
+fs.realpath@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
+ integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8=
+
+fsevents@^1.0.0:
+ version "1.0.17"
+ resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.0.17.tgz#8537f3f12272678765b4fd6528c0f1f66f8f4558"
+ integrity sha1-hTfz8SJyZ4dltP1lKMDx9m+PRVg=
+ dependencies:
+ nan "^2.3.0"
+ node-pre-gyp "^0.6.29"
+
+fstream-ignore@~1.0.5:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/fstream-ignore/-/fstream-ignore-1.0.5.tgz#9c31dae34767018fe1d249b24dada67d092da105"
+ integrity sha1-nDHa40dnAY/h0kmyTa2mfQktoQU=
+ dependencies:
+ fstream "^1.0.0"
+ inherits "2"
+ minimatch "^3.0.0"
+
+fstream@^1.0.0, fstream@^1.0.2, fstream@~1.0.10:
+ version "1.0.10"
+ resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.10.tgz#604e8a92fe26ffd9f6fae30399d4984e1ab22822"
+ integrity sha1-YE6Kkv4m/9n2+uMDmdSYThqyKCI=
+ dependencies:
+ graceful-fs "^4.1.2"
+ inherits "~2.0.0"
+ mkdirp ">=0.5 0"
+ rimraf "2"
+
+gauge@~2.7.1:
+ version "2.7.2"
+ resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.2.tgz#15cecc31b02d05345a5d6b0e171cdb3ad2307774"
+ integrity sha1-Fc7MMbAtBTRaXWsOFxzbOtIwd3Q=
+ dependencies:
+ aproba "^1.0.3"
+ console-control-strings "^1.0.0"
+ has-unicode "^2.0.0"
+ object-assign "^4.1.0"
+ signal-exit "^3.0.0"
+ string-width "^1.0.1"
+ strip-ansi "^3.0.1"
+ supports-color "^0.2.0"
+ wide-align "^1.1.0"
+
+generate-function@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/generate-function/-/generate-function-2.0.0.tgz#6858fe7c0969b7d4e9093337647ac79f60dfbe74"
+ integrity sha1-aFj+fAlpt9TpCTM3ZHrHn2DfvnQ=
+
+generate-object-property@^1.1.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/generate-object-property/-/generate-object-property-1.2.0.tgz#9c0e1c40308ce804f4783618b937fa88f99d50d0"
+ integrity sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=
+ dependencies:
+ is-property "^1.0.0"
+
+get-stdin@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe"
+ integrity sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=
+
+get-stdin@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-5.0.1.tgz#122e161591e21ff4c52530305693f20e6393a398"
+ integrity sha1-Ei4WFZHiH/TFJTAwVpPyDmOTo5g=
+
+getpass@^0.1.1:
+ version "0.1.6"
+ resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.6.tgz#283ffd9fc1256840875311c1b60e8c40187110e6"
+ integrity sha1-KD/9n8ElaECHUxHBtg6MQBhxEOY=
+ dependencies:
+ assert-plus "^1.0.0"
+
+glob-base@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4"
+ integrity sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=
+ dependencies:
+ glob-parent "^2.0.0"
+ is-glob "^2.0.0"
+
+glob-parent@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28"
+ integrity sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=
+ dependencies:
+ is-glob "^2.0.0"
+
+glob@^7.0.0, glob@^7.0.5:
+ version "7.1.1"
+ resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8"
+ integrity sha1-gFIR3wT6rxxjo2ADBs31reULLsg=
+ dependencies:
+ fs.realpath "^1.0.0"
+ inflight "^1.0.4"
+ inherits "2"
+ minimatch "^3.0.2"
+ once "^1.3.0"
+ path-is-absolute "^1.0.0"
+
+globals@^9.0.0:
+ version "9.14.0"
+ resolved "https://registry.yarnpkg.com/globals/-/globals-9.14.0.tgz#8859936af0038741263053b39d0e76ca241e4034"
+ integrity sha1-iFmTavADh0EmMFOznQ52yiQeQDQ=
+
+graceful-fs@^4.1.2, graceful-fs@^4.1.4:
+ version "4.1.11"
+ resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658"
+ integrity sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=
+
+"graceful-readlink@>= 1.0.0":
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725"
+ integrity sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=
+
+gzip-size-cli@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/gzip-size-cli/-/gzip-size-cli-1.0.0.tgz#97ef47b1600a2ad8f9c31539661eab39ec36caed"
+ integrity sha1-l+9HsWAKKtj5wxU5Zh6rOew2yu0=
+ dependencies:
+ gzip-size "^3.0.0"
+ meow "^3.3.0"
+
+gzip-size@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-3.0.0.tgz#546188e9bdc337f673772f81660464b389dce520"
+ integrity sha1-VGGI6b3DN/Zzdy+BZgRks4nc5SA=
+ dependencies:
+ duplexer "^0.1.1"
+
+har-validator@~2.0.6:
+ version "2.0.6"
+ resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-2.0.6.tgz#cdcbc08188265ad119b6a5a7c8ab70eecfb5d27d"
+ integrity sha1-zcvAgYgmWtEZtqWnyKtw7s+10n0=
+ dependencies:
+ chalk "^1.1.1"
+ commander "^2.9.0"
+ is-my-json-valid "^2.12.4"
+ pinkie-promise "^2.0.0"
+
+has-ansi@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91"
+ integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=
+ dependencies:
+ ansi-regex "^2.0.0"
+
+has-flag@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa"
+ integrity sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=
+
+has-unicode@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9"
+ integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=
+
+hawk@~3.1.3:
+ version "3.1.3"
+ resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4"
+ integrity sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=
+ dependencies:
+ boom "2.x.x"
+ cryptiles "2.x.x"
+ hoek "2.x.x"
+ sntp "1.x.x"
+
+hoek@2.x.x:
+ version "2.16.3"
+ resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed"
+ integrity sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=
+
+home-or-tmp@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8"
+ integrity sha1-42w/LSyufXRqhX440Y1fMqeILbg=
+ dependencies:
+ os-homedir "^1.0.0"
+ os-tmpdir "^1.0.1"
+
+hosted-git-info@^2.1.4:
+ version "2.1.5"
+ resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.1.5.tgz#0ba81d90da2e25ab34a332e6ec77936e1598118b"
+ integrity sha1-C6gdkNouJas0ozLm7HeTbhWYEYs=
+
+http-signature@~1.1.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf"
+ integrity sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=
+ dependencies:
+ assert-plus "^0.2.0"
+ jsprim "^1.2.2"
+ sshpk "^1.7.0"
+
+https-browserify@0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-0.0.1.tgz#3f91365cabe60b77ed0ebba24b454e3e09d95a82"
+ integrity sha1-P5E2XKvmC3ftDruiS0VOPgnZWoI=
+
+ieee754@^1.1.4:
+ version "1.1.8"
+ resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.8.tgz#be33d40ac10ef1926701f6f08a2d86fbfd1ad3e4"
+ integrity sha1-vjPUCsEO8ZJnAfbwii2G+/0a0+Q=
+
+indent-string@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80"
+ integrity sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=
+ dependencies:
+ repeating "^2.0.0"
+
+indexof@0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d"
+ integrity sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=
+
+inflight@^1.0.4:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
+ integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=
+ dependencies:
+ once "^1.3.0"
+ wrappy "1"
+
+inherits@2, inherits@^2.0.1, inherits@~2.0.0, inherits@~2.0.1:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
+ integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=
+
+inherits@2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1"
+ integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=
+
+ini@~1.3.0:
+ version "1.3.4"
+ resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e"
+ integrity sha1-BTfLedr1m1mhpRff9wbIbsA5Fi4=
+
+interpret@^0.6.4:
+ version "0.6.6"
+ resolved "https://registry.yarnpkg.com/interpret/-/interpret-0.6.6.tgz#fecd7a18e7ce5ca6abfb953e1f86213a49f1625b"
+ integrity sha1-/s16GOfOXKar+5U+H4YhOknxYls=
+
+invariant@^2.2.0:
+ version "2.2.2"
+ resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.2.tgz#9e1f56ac0acdb6bf303306f338be3b204ae60360"
+ integrity sha1-nh9WrArNtr8wMwbzOL47IErmA2A=
+ dependencies:
+ loose-envify "^1.0.0"
+
+is-arrayish@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
+ integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=
+
+is-binary-path@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898"
+ integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=
+ dependencies:
+ binary-extensions "^1.0.0"
+
+is-buffer@^1.0.2:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.4.tgz#cfc86ccd5dc5a52fa80489111c6920c457e2d98b"
+ integrity sha1-z8hszV3FpS+oBIkRHGkgxFfi2Ys=
+
+is-builtin-module@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe"
+ integrity sha1-VAVy0096wxGfj3bDDLwbHgN6/74=
+ dependencies:
+ builtin-modules "^1.0.0"
+
+is-dotfile@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.2.tgz#2c132383f39199f8edc268ca01b9b007d205cc4d"
+ integrity sha1-LBMjg/ORmfjtwmjKAbmwB9IFzE0=
+
+is-equal-shallow@^0.1.3:
+ version "0.1.3"
+ resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534"
+ integrity sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=
+ dependencies:
+ is-primitive "^2.0.0"
+
+is-extendable@^0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89"
+ integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=
+
+is-extglob@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0"
+ integrity sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=
+
+is-finite@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa"
+ integrity sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=
+ dependencies:
+ number-is-nan "^1.0.0"
+
+is-fullwidth-code-point@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb"
+ integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs=
+ dependencies:
+ number-is-nan "^1.0.0"
+
+is-glob@^2.0.0, is-glob@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863"
+ integrity sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=
+ dependencies:
+ is-extglob "^1.0.0"
+
+is-my-json-valid@^2.12.4:
+ version "2.15.0"
+ resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.15.0.tgz#936edda3ca3c211fd98f3b2d3e08da43f7b2915b"
+ integrity sha1-k27do8o8IR/ZjzstPgjaQ/eykVs=
+ dependencies:
+ generate-function "^2.0.0"
+ generate-object-property "^1.1.0"
+ jsonpointer "^4.0.0"
+ xtend "^4.0.0"
+
+is-number@^2.0.2, is-number@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f"
+ integrity sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=
+ dependencies:
+ kind-of "^3.0.2"
+
+is-posix-bracket@^0.1.0:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4"
+ integrity sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=
+
+is-primitive@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575"
+ integrity sha1-IHurkWOEmcB7Kt8kCkGochADRXU=
+
+is-property@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84"
+ integrity sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=
+
+is-typedarray@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
+ integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=
+
+is-utf8@^0.2.0:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72"
+ integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=
+
+isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
+ integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=
+
+isobject@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89"
+ integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=
+ dependencies:
+ isarray "1.0.0"
+
+isstream@~0.1.2:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
+ integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=
+
+jodid25519@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/jodid25519/-/jodid25519-1.0.2.tgz#06d4912255093419477d425633606e0e90782967"
+ integrity sha1-BtSRIlUJNBlHfUJWM2BuDpB4KWc=
+ dependencies:
+ jsbn "~0.1.0"
+
+js-tokens@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.1.tgz#08e9f132484a2c45a30907e9dc4d5567b7f114d7"
+ integrity sha1-COnxMkhKLEWjCQfp3E1VZ7fxFNc=
+
+jsbn@~0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.0.tgz#650987da0dd74f4ebf5a11377a2aa2d273e97dfd"
+ integrity sha1-ZQmH2g3XT06/WhE3eiqi0nPpff0=
+
+jsesc@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b"
+ integrity sha1-RsP+yMGJKxKwgz25vHYiF226s0s=
+
+jsesc@^2.4.0:
+ version "2.4.0"
+ resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.4.0.tgz#8568d223ff69c0b5e081b4f8edf5a23d978c9867"
+ integrity sha1-hWjSI/9pwLXggbT47fWiPZeMmGc=
+
+jsesc@~0.5.0:
+ version "0.5.0"
+ resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d"
+ integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=
+
+json-schema@0.2.3:
+ version "0.2.3"
+ resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13"
+ integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=
+
+json-stringify-safe@~5.0.1:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"
+ integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=
+
+json5@^0.5.0:
+ version "0.5.1"
+ resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821"
+ integrity sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=
+
+jsonpointer@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.0.1.tgz#4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9"
+ integrity sha1-T9kss04OnbPInIYi7PUfm5eMbLk=
+
+jsprim@^1.2.2:
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.3.1.tgz#2a7256f70412a29ee3670aaca625994c4dcff252"
+ integrity sha1-KnJW9wQSop7jZwqspiWZTE3P8lI=
+ dependencies:
+ extsprintf "1.0.2"
+ json-schema "0.2.3"
+ verror "1.3.6"
+
+kind-of@^3.0.2:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.1.0.tgz#475d698a5e49ff5e53d14e3e732429dc8bf4cf47"
+ integrity sha1-R11pil5J/15T0U4+cyQp3Iv0z0c=
+ dependencies:
+ is-buffer "^1.0.2"
+
+lazy-cache@^1.0.3:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e"
+ integrity sha1-odePw6UEdMuAhF07O24dpJpEbo4=
+
+load-json-file@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0"
+ integrity sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=
+ dependencies:
+ graceful-fs "^4.1.2"
+ parse-json "^2.2.0"
+ pify "^2.0.0"
+ pinkie-promise "^2.0.0"
+ strip-bom "^2.0.0"
+
+loader-utils@^0.2.11:
+ version "0.2.16"
+ resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-0.2.16.tgz#f08632066ed8282835dff88dfb52704765adee6d"
+ integrity sha1-8IYyBm7YKCg13/iN+1JwR2Wt7m0=
+ dependencies:
+ big.js "^3.1.3"
+ emojis-list "^2.0.0"
+ json5 "^0.5.0"
+ object-assign "^4.0.1"
+
+loader-utils@^0.2.16:
+ version "0.2.17"
+ resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-0.2.17.tgz#f86e6374d43205a6e6c60e9196f17c0299bfb348"
+ integrity sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=
+ dependencies:
+ big.js "^3.1.3"
+ emojis-list "^2.0.0"
+ json5 "^0.5.0"
+ object-assign "^4.0.1"
+
+lodash.isplainobject@^4.0.6:
+ version "4.0.6"
+ resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb"
+ integrity sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=
+
+lodash.some@^4.6.0:
+ version "4.6.0"
+ resolved "https://registry.yarnpkg.com/lodash.some/-/lodash.some-4.6.0.tgz#1bb9f314ef6b8baded13b549169b2a945eb68e4d"
+ integrity sha1-G7nzFO9ri63tE7VJFpsqlF62jk0=
+
+lodash@^4.17.4, lodash@^4.2.0:
+ version "4.17.4"
+ resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae"
+ integrity sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=
+
+longest@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097"
+ integrity sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=
+
+loose-envify@^1.0.0:
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.3.1.tgz#d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848"
+ integrity sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=
+ dependencies:
+ js-tokens "^3.0.0"
+
+loud-rejection@^1.0.0:
+ version "1.6.0"
+ resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f"
+ integrity sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=
+ dependencies:
+ currently-unhandled "^0.4.1"
+ signal-exit "^3.0.0"
+
+map-obj@^1.0.0, map-obj@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d"
+ integrity sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=
+
+memory-fs@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.2.0.tgz#f2bb25368bc121e391c2520de92969caee0a0290"
+ integrity sha1-8rslNovBIeORwlIN6Slpyu4KApA=
+
+memory-fs@~0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.3.0.tgz#7bcc6b629e3a43e871d7e29aca6ae8a7f15cbb20"
+ integrity sha1-e8xrYp46Q+hx1+Kaymrop/FcuyA=
+ dependencies:
+ errno "^0.1.3"
+ readable-stream "^2.0.1"
+
+meow@^3.3.0, meow@^3.6.0:
+ version "3.7.0"
+ resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb"
+ integrity sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=
+ dependencies:
+ camelcase-keys "^2.0.0"
+ decamelize "^1.1.2"
+ loud-rejection "^1.0.0"
+ map-obj "^1.0.1"
+ minimist "^1.1.3"
+ normalize-package-data "^2.3.4"
+ object-assign "^4.0.1"
+ read-pkg-up "^1.0.1"
+ redent "^1.0.0"
+ trim-newlines "^1.0.0"
+
+micromatch@^2.1.5:
+ version "2.3.11"
+ resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565"
+ integrity sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=
+ dependencies:
+ arr-diff "^2.0.0"
+ array-unique "^0.2.1"
+ braces "^1.8.2"
+ expand-brackets "^0.1.4"
+ extglob "^0.3.1"
+ filename-regex "^2.0.0"
+ is-extglob "^1.0.0"
+ is-glob "^2.0.1"
+ kind-of "^3.0.2"
+ normalize-path "^2.0.1"
+ object.omit "^2.0.0"
+ parse-glob "^3.0.4"
+ regex-cache "^0.4.2"
+
+mime-db@~1.25.0:
+ version "1.25.0"
+ resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.25.0.tgz#c18dbd7c73a5dbf6f44a024dc0d165a1e7b1c392"
+ integrity sha1-wY29fHOl2/b0SgJNwNFloeexw5I=
+
+mime-types@^2.1.12, mime-types@~2.1.7:
+ version "2.1.13"
+ resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.13.tgz#e07aaa9c6c6b9a7ca3012c69003ad25a39e92a88"
+ integrity sha1-4HqqnGxrmnyjASxpADrSWjnpKog=
+ dependencies:
+ mime-db "~1.25.0"
+
+minimatch@^3.0.0, minimatch@^3.0.2:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.3.tgz#2a4e4090b96b2db06a9d7df01055a62a77c9b774"
+ integrity sha1-Kk5AkLlrLbBqnX3wEFWmKnfJt3Q=
+ dependencies:
+ brace-expansion "^1.0.0"
+
+minimist@0.0.8, minimist@~0.0.1:
+ version "0.0.8"
+ resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d"
+ integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=
+
+minimist@^1.1.3, minimist@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
+ integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=
+
+"mkdirp@>=0.5 0", mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1:
+ version "0.5.1"
+ resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903"
+ integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=
+ dependencies:
+ minimist "0.0.8"
+
+ms@0.7.1:
+ version "0.7.1"
+ resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.1.tgz#9cd13c03adbff25b65effde7ce864ee952017098"
+ integrity sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=
+
+nan@^2.3.0:
+ version "2.5.0"
+ resolved "https://registry.yarnpkg.com/nan/-/nan-2.5.0.tgz#aa8f1e34531d807e9e27755b234b4a6ec0c152a8"
+ integrity sha1-qo8eNFMdgH6eJ3VbI0tKbsDBUqg=
+
+node-libs-browser@^0.7.0:
+ version "0.7.0"
+ resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-0.7.0.tgz#3e272c0819e308935e26674408d7af0e1491b83b"
+ integrity sha1-PicsCBnjCJNeJmdECNevDhSRuDs=
+ dependencies:
+ assert "^1.1.1"
+ browserify-zlib "^0.1.4"
+ buffer "^4.9.0"
+ console-browserify "^1.1.0"
+ constants-browserify "^1.0.0"
+ crypto-browserify "3.3.0"
+ domain-browser "^1.1.1"
+ events "^1.0.0"
+ https-browserify "0.0.1"
+ os-browserify "^0.2.0"
+ path-browserify "0.0.0"
+ process "^0.11.0"
+ punycode "^1.2.4"
+ querystring-es3 "^0.2.0"
+ readable-stream "^2.0.5"
+ stream-browserify "^2.0.1"
+ stream-http "^2.3.1"
+ string_decoder "^0.10.25"
+ timers-browserify "^2.0.2"
+ tty-browserify "0.0.0"
+ url "^0.11.0"
+ util "^0.10.3"
+ vm-browserify "0.0.4"
+
+node-pre-gyp@^0.6.29:
+ version "0.6.32"
+ resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.32.tgz#fc452b376e7319b3d255f5f34853ef6fd8fe1fd5"
+ integrity sha1-/EUrN25zGbPSVfXzSFPvb9j+H9U=
+ dependencies:
+ mkdirp "~0.5.1"
+ nopt "~3.0.6"
+ npmlog "^4.0.1"
+ rc "~1.1.6"
+ request "^2.79.0"
+ rimraf "~2.5.4"
+ semver "~5.3.0"
+ tar "~2.2.1"
+ tar-pack "~3.3.0"
+
+nopt@~3.0.6:
+ version "3.0.6"
+ resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9"
+ integrity sha1-xkZdvwirzU2zWTF/eaxopkayj/k=
+ dependencies:
+ abbrev "1"
+
+normalize-package-data@^2.3.2, normalize-package-data@^2.3.4:
+ version "2.3.5"
+ resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.3.5.tgz#8d924f142960e1777e7ffe170543631cc7cb02df"
+ integrity sha1-jZJPFClg4Xd+f/4XBUNjHMfLAt8=
+ dependencies:
+ hosted-git-info "^2.1.4"
+ is-builtin-module "^1.0.0"
+ semver "2 || 3 || 4 || 5"
+ validate-npm-package-license "^3.0.1"
+
+normalize-path@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.0.1.tgz#47886ac1662760d4261b7d979d241709d3ce3f7a"
+ integrity sha1-R4hqwWYnYNQmG32XnSQXCdPOP3o=
+
+npmlog@^4.0.1:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.0.2.tgz#d03950e0e78ce1527ba26d2a7592e9348ac3e75f"
+ integrity sha1-0DlQ4OeM4VJ7om0qdZLpNIrD518=
+ dependencies:
+ are-we-there-yet "~1.1.2"
+ console-control-strings "~1.1.0"
+ gauge "~2.7.1"
+ set-blocking "~2.0.0"
+
+number-is-nan@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d"
+ integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=
+
+oauth-sign@~0.8.1:
+ version "0.8.2"
+ resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43"
+ integrity sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=
+
+object-assign@^4.0.1, object-assign@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.0.tgz#7a3b3d0e98063d43f4c03f2e8ae6cd51a86883a0"
+ integrity sha1-ejs9DpgGPUP0wD8uiubNUahog6A=
+
+object.omit@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa"
+ integrity sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=
+ dependencies:
+ for-own "^0.1.4"
+ is-extendable "^0.1.1"
+
+once@^1.3.0, once@~1.3.3:
+ version "1.3.3"
+ resolved "https://registry.yarnpkg.com/once/-/once-1.3.3.tgz#b2e261557ce4c314ec8304f3fa82663e4297ca20"
+ integrity sha1-suJhVXzkwxTsgwTz+oJmPkKXyiA=
+ dependencies:
+ wrappy "1"
+
+optimist@~0.6.0:
+ version "0.6.1"
+ resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686"
+ integrity sha1-2j6nRob6IaGaERwybpDrFaAZZoY=
+ dependencies:
+ minimist "~0.0.1"
+ wordwrap "~0.0.2"
+
+os-browserify@^0.2.0:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.2.1.tgz#63fc4ccee5d2d7763d26bbf8601078e6c2e0044f"
+ integrity sha1-Y/xMzuXS13Y9Jrv4YBB45sLgBE8=
+
+os-homedir@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3"
+ integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M=
+
+os-tmpdir@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
+ integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=
+
+output-file-sync@^1.1.0:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/output-file-sync/-/output-file-sync-1.1.2.tgz#d0a33eefe61a205facb90092e826598d5245ce76"
+ integrity sha1-0KM+7+YaIF+suQCS6CZZjVJFznY=
+ dependencies:
+ graceful-fs "^4.1.4"
+ mkdirp "^0.5.1"
+ object-assign "^4.1.0"
+
+pako@~0.2.0:
+ version "0.2.9"
+ resolved "https://registry.yarnpkg.com/pako/-/pako-0.2.9.tgz#f3f7522f4ef782348da8161bad9ecfd51bf83a75"
+ integrity sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=
+
+parse-glob@^3.0.4:
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c"
+ integrity sha1-ssN2z7EfNVE7rdFz7wu246OIORw=
+ dependencies:
+ glob-base "^0.3.0"
+ is-dotfile "^1.0.0"
+ is-extglob "^1.0.0"
+ is-glob "^2.0.0"
+
+parse-json@^2.2.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9"
+ integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=
+ dependencies:
+ error-ex "^1.2.0"
+
+path-browserify@0.0.0:
+ version "0.0.0"
+ resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a"
+ integrity sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=
+
+path-exists@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b"
+ integrity sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=
+ dependencies:
+ pinkie-promise "^2.0.0"
+
+path-is-absolute@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
+ integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
+
+path-type@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441"
+ integrity sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=
+ dependencies:
+ graceful-fs "^4.1.2"
+ pify "^2.0.0"
+ pinkie-promise "^2.0.0"
+
+pbkdf2-compat@2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/pbkdf2-compat/-/pbkdf2-compat-2.0.1.tgz#b6e0c8fa99494d94e0511575802a59a5c142f288"
+ integrity sha1-tuDI+plJTZTgURV1gCpZpcFC8og=
+
+pify@^2.0.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
+ integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw=
+
+pinkie-promise@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa"
+ integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o=
+ dependencies:
+ pinkie "^2.0.0"
+
+pinkie@^2.0.0:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870"
+ integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA=
+
+pkg-dir@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-1.0.0.tgz#7a4b508a8d5bb2d629d447056ff4e9c9314cf3d4"
+ integrity sha1-ektQio1bstYp1EcFb/TpyTFM89Q=
+ dependencies:
+ find-up "^1.0.0"
+
+preserve@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b"
+ integrity sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=
+
+pretty-bytes-cli@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/pretty-bytes-cli/-/pretty-bytes-cli-2.0.0.tgz#e705662cffdc9c75291835333bc2f89ad3c033cf"
+ integrity sha1-5wVmLP/cnHUpGDUzO8L4mtPAM88=
+ dependencies:
+ get-stdin "^5.0.1"
+ meow "^3.6.0"
+ pretty-bytes "^4.0.0"
+
+pretty-bytes@^4.0.0:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-4.0.2.tgz#b2bf82e7350d65c6c33aa95aaa5a4f6327f61cd9"
+ integrity sha1-sr+C5zUNZcbDOqlaqlpPYyf2HNk=
+
+private@^0.1.6:
+ version "0.1.7"
+ resolved "https://registry.yarnpkg.com/private/-/private-0.1.7.tgz#68ce5e8a1ef0a23bb570cc28537b5332aba63ef1"
+ integrity sha1-aM5eih7woju1cMwoU3tTMqumPvE=
+
+process-nextick-args@~1.0.6:
+ version "1.0.7"
+ resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3"
+ integrity sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=
+
+process@^0.11.0:
+ version "0.11.9"
+ resolved "https://registry.yarnpkg.com/process/-/process-0.11.9.tgz#7bd5ad21aa6253e7da8682264f1e11d11c0318c1"
+ integrity sha1-e9WtIapiU+fahoImTx4R0RwDGME=
+
+prr@~0.0.0:
+ version "0.0.0"
+ resolved "https://registry.yarnpkg.com/prr/-/prr-0.0.0.tgz#1a84b85908325501411853d0081ee3fa86e2926a"
+ integrity sha1-GoS4WQgyVQFBGFPQCB7j+obikmo=
+
+punycode@1.3.2:
+ version "1.3.2"
+ resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d"
+ integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=
+
+punycode@^1.2.4, punycode@^1.4.1:
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e"
+ integrity sha1-wNWmOycYgArY4esPpSachN1BhF4=
+
+qs@~6.3.0:
+ version "6.3.0"
+ resolved "https://registry.yarnpkg.com/qs/-/qs-6.3.0.tgz#f403b264f23bc01228c74131b407f18d5ea5d442"
+ integrity sha1-9AOyZPI7wBIox0ExtAfxjV6l1EI=
+
+querystring-es3@^0.2.0:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73"
+ integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=
+
+querystring@0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620"
+ integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=
+
+randomatic@^1.1.3:
+ version "1.1.6"
+ resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.6.tgz#110dcabff397e9dcff7c0789ccc0a49adf1ec5bb"
+ integrity sha1-EQ3Kv/OX6dz/fAeJzMCkmt8exbs=
+ dependencies:
+ is-number "^2.0.2"
+ kind-of "^3.0.2"
+
+rc@~1.1.6:
+ version "1.1.6"
+ resolved "https://registry.yarnpkg.com/rc/-/rc-1.1.6.tgz#43651b76b6ae53b5c802f1151fa3fc3b059969c9"
+ integrity sha1-Q2UbdrauU7XIAvEVH6P8OwWZack=
+ dependencies:
+ deep-extend "~0.4.0"
+ ini "~1.3.0"
+ minimist "^1.2.0"
+ strip-json-comments "~1.0.4"
+
+read-pkg-up@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02"
+ integrity sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=
+ dependencies:
+ find-up "^1.0.0"
+ read-pkg "^1.0.0"
+
+read-pkg@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28"
+ integrity sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=
+ dependencies:
+ load-json-file "^1.0.0"
+ normalize-package-data "^2.3.2"
+ path-type "^1.0.0"
+
+"readable-stream@^2.0.0 || ^1.1.13", readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.1.0:
+ version "2.2.2"
+ resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.2.2.tgz#a9e6fec3c7dda85f8bb1b3ba7028604556fc825e"
+ integrity sha1-qeb+w8fdqF+LsbO6cChgRVb8gl4=
+ dependencies:
+ buffer-shims "^1.0.0"
+ core-util-is "~1.0.0"
+ inherits "~2.0.1"
+ isarray "~1.0.0"
+ process-nextick-args "~1.0.6"
+ string_decoder "~0.10.x"
+ util-deprecate "~1.0.1"
+
+readable-stream@~2.1.4:
+ version "2.1.5"
+ resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.1.5.tgz#66fa8b720e1438b364681f2ad1a63c618448c9d0"
+ integrity sha1-ZvqLcg4UOLNkaB8q0aY8YYRIydA=
+ dependencies:
+ buffer-shims "^1.0.0"
+ core-util-is "~1.0.0"
+ inherits "~2.0.1"
+ isarray "~1.0.0"
+ process-nextick-args "~1.0.6"
+ string_decoder "~0.10.x"
+ util-deprecate "~1.0.1"
+
+readdirp@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78"
+ integrity sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=
+ dependencies:
+ graceful-fs "^4.1.2"
+ minimatch "^3.0.2"
+ readable-stream "^2.0.2"
+ set-immediate-shim "^1.0.1"
+
+redent@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde"
+ integrity sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=
+ dependencies:
+ indent-string "^2.1.0"
+ strip-indent "^1.0.1"
+
+regenerate@^1.2.1:
+ version "1.3.2"
+ resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.3.2.tgz#d1941c67bad437e1be76433add5b385f95b19260"
+ integrity sha1-0ZQcZ7rUN+G+dkM63Vs4X5WxkmA=
+
+regenerator-runtime@^0.10.0:
+ version "0.10.1"
+ resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.1.tgz#257f41961ce44558b18f7814af48c17559f9faeb"
+ integrity sha1-JX9BlhzkRVixj3gUr0jBdVn5+us=
+
+regenerator-transform@0.9.8:
+ version "0.9.8"
+ resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.9.8.tgz#0f88bb2bc03932ddb7b6b7312e68078f01026d6c"
+ integrity sha1-D4i7K8A5Mt23trcxLmgHjwECbWw=
+ dependencies:
+ babel-runtime "^6.18.0"
+ babel-types "^6.19.0"
+ private "^0.1.6"
+
+regex-cache@^0.4.2:
+ version "0.4.3"
+ resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.3.tgz#9b1a6c35d4d0dfcef5711ae651e8e9d3d7114145"
+ integrity sha1-mxpsNdTQ3871cRrmUejp09cRQUU=
+ dependencies:
+ is-equal-shallow "^0.1.3"
+ is-primitive "^2.0.0"
+
+regexpu-core@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-2.0.0.tgz#49d038837b8dcf8bfa5b9a42139938e6ea2ae240"
+ integrity sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=
+ dependencies:
+ regenerate "^1.2.1"
+ regjsgen "^0.2.0"
+ regjsparser "^0.1.4"
+
+regjsgen@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7"
+ integrity sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=
+
+regjsparser@^0.1.4:
+ version "0.1.5"
+ resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c"
+ integrity sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=
+ dependencies:
+ jsesc "~0.5.0"
+
+repeat-element@^1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a"
+ integrity sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=
+
+repeat-string@^1.5.2:
+ version "1.6.1"
+ resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637"
+ integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc=
+
+repeating@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda"
+ integrity sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=
+ dependencies:
+ is-finite "^1.0.0"
+
+request@^2.79.0:
+ version "2.79.0"
+ resolved "https://registry.yarnpkg.com/request/-/request-2.79.0.tgz#4dfe5bf6be8b8cdc37fcf93e04b65577722710de"
+ integrity sha1-Tf5b9r6LjNw3/Pk+BLZVd3InEN4=
+ dependencies:
+ aws-sign2 "~0.6.0"
+ aws4 "^1.2.1"
+ caseless "~0.11.0"
+ combined-stream "~1.0.5"
+ extend "~3.0.0"
+ forever-agent "~0.6.1"
+ form-data "~2.1.1"
+ har-validator "~2.0.6"
+ hawk "~3.1.3"
+ http-signature "~1.1.0"
+ is-typedarray "~1.0.0"
+ isstream "~0.1.2"
+ json-stringify-safe "~5.0.1"
+ mime-types "~2.1.7"
+ oauth-sign "~0.8.1"
+ qs "~6.3.0"
+ stringstream "~0.0.4"
+ tough-cookie "~2.3.0"
+ tunnel-agent "~0.4.1"
+ uuid "^3.0.0"
+
+right-align@^0.1.1:
+ version "0.1.3"
+ resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef"
+ integrity sha1-YTObci/mo1FWiSENJOFMlhSGE+8=
+ dependencies:
+ align-text "^0.1.1"
+
+rimraf@2, rimraf@~2.5.1, rimraf@~2.5.4:
+ version "2.5.4"
+ resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.5.4.tgz#96800093cbf1a0c86bd95b4625467535c29dfa04"
+ integrity sha1-loAAk8vxoMhr2VtGJUZ1NcKd+gQ=
+ dependencies:
+ glob "^7.0.5"
+
+ripemd160@0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-0.2.0.tgz#2bf198bde167cacfa51c0a928e84b68bbe171fce"
+ integrity sha1-K/GYveFnys+lHAqSjoS2i74XH84=
+
+"semver@2 || 3 || 4 || 5", semver@~5.3.0:
+ version "5.3.0"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f"
+ integrity sha1-myzl094C0XxgEq0yaqa00M9U+U8=
+
+set-blocking@~2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
+ integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc=
+
+set-immediate-shim@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61"
+ integrity sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=
+
+setimmediate@^1.0.4:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285"
+ integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=
+
+sha.js@2.2.6:
+ version "2.2.6"
+ resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.2.6.tgz#17ddeddc5f722fb66501658895461977867315ba"
+ integrity sha1-F93t3F9yL7ZlAWWIlUYZd4ZzFbo=
+
+signal-exit@^3.0.0:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d"
+ integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=
+
+slash@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55"
+ integrity sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=
+
+sntp@1.x.x:
+ version "1.0.9"
+ resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198"
+ integrity sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=
+ dependencies:
+ hoek "2.x.x"
+
+source-list-map@~0.1.7:
+ version "0.1.7"
+ resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-0.1.7.tgz#d4b5ce2a46535c72c7e8527c71a77d250618172e"
+ integrity sha1-1LXOKkZTXHLH6FJ8cad9JQYYFy4=
+
+source-map-support@^0.4.2:
+ version "0.4.11"
+ resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.11.tgz#647f939978b38535909530885303daf23279f322"
+ integrity sha1-ZH+TmXizhTWQlTCIUwPa8jJ58yI=
+ dependencies:
+ source-map "^0.5.3"
+
+source-map@^0.5.0, source-map@^0.5.3, source-map@~0.5.1:
+ version "0.5.6"
+ resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412"
+ integrity sha1-dc449SvwczxafwwRjYEzSiu19BI=
+
+source-map@~0.4.1:
+ version "0.4.4"
+ resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b"
+ integrity sha1-66T12pwNyZneaAMti092FzZSA2s=
+ dependencies:
+ amdefine ">=0.0.4"
+
+spdx-correct@~1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-1.0.2.tgz#4b3073d933ff51f3912f03ac5519498a4150db40"
+ integrity sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=
+ dependencies:
+ spdx-license-ids "^1.0.2"
+
+spdx-expression-parse@~1.0.0:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz#9bdf2f20e1f40ed447fbe273266191fced51626c"
+ integrity sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=
+
+spdx-license-ids@^1.0.2:
+ version "1.2.2"
+ resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz#c9df7a3424594ade6bd11900d596696dc06bac57"
+ integrity sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=
+
+sshpk@^1.7.0:
+ version "1.10.1"
+ resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.10.1.tgz#30e1a5d329244974a1af61511339d595af6638b0"
+ integrity sha1-MOGl0ykkSXShr2FREznVla9mOLA=
+ dependencies:
+ asn1 "~0.2.3"
+ assert-plus "^1.0.0"
+ dashdash "^1.12.0"
+ getpass "^0.1.1"
+ optionalDependencies:
+ bcrypt-pbkdf "^1.0.0"
+ ecc-jsbn "~0.1.1"
+ jodid25519 "^1.0.0"
+ jsbn "~0.1.0"
+ tweetnacl "~0.14.0"
+
+stream-browserify@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.1.tgz#66266ee5f9bdb9940a4e4514cafb43bb71e5c9db"
+ integrity sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=
+ dependencies:
+ inherits "~2.0.1"
+ readable-stream "^2.0.2"
+
+stream-http@^2.3.1:
+ version "2.6.0"
+ resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.6.0.tgz#adf3309ced17624ebfb7ef13e6ac4cfe405a8b12"
+ integrity sha1-rfMwnO0XYk6/t+8T5qxM/kBaixI=
+ dependencies:
+ builtin-status-codes "^3.0.0"
+ inherits "^2.0.1"
+ readable-stream "^2.1.0"
+ to-arraybuffer "^1.0.0"
+ xtend "^4.0.0"
+
+string-width@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3"
+ integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=
+ dependencies:
+ code-point-at "^1.0.0"
+ is-fullwidth-code-point "^1.0.0"
+ strip-ansi "^3.0.0"
+
+string_decoder@^0.10.25, string_decoder@~0.10.x:
+ version "0.10.31"
+ resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94"
+ integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=
+
+stringstream@~0.0.4:
+ version "0.0.5"
+ resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878"
+ integrity sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=
+
+strip-ansi@^3.0.0, strip-ansi@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf"
+ integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=
+ dependencies:
+ ansi-regex "^2.0.0"
+
+strip-bom@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e"
+ integrity sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=
+ dependencies:
+ is-utf8 "^0.2.0"
+
+strip-indent@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2"
+ integrity sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=
+ dependencies:
+ get-stdin "^4.0.1"
+
+strip-json-comments@~1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-1.0.4.tgz#1e15fbcac97d3ee99bf2d73b4c656b082bbafb91"
+ integrity sha1-HhX7ysl9Pumb8tc7TGVrCCu6+5E=
+
+supports-color@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-0.2.0.tgz#d92de2694eb3f67323973d7ae3d8b55b4c22190a"
+ integrity sha1-2S3iaU6z9nMjlz1649i1W0wiGQo=
+
+supports-color@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7"
+ integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=
+
+supports-color@^3.1.0:
+ version "3.1.2"
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.1.2.tgz#72a262894d9d408b956ca05ff37b2ed8a6e2a2d5"
+ integrity sha1-cqJiiU2dQIuVbKBf83su2KbiotU=
+ dependencies:
+ has-flag "^1.0.0"
+
+tapable@^0.1.8, tapable@~0.1.8:
+ version "0.1.10"
+ resolved "https://registry.yarnpkg.com/tapable/-/tapable-0.1.10.tgz#29c35707c2b70e50d07482b5d202e8ed446dafd4"
+ integrity sha1-KcNXB8K3DlDQdIK10gLo7URtr9Q=
+
+tar-pack@~3.3.0:
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.3.0.tgz#30931816418f55afc4d21775afdd6720cee45dae"
+ integrity sha1-MJMYFkGPVa/E0hd1r91nIM7kXa4=
+ dependencies:
+ debug "~2.2.0"
+ fstream "~1.0.10"
+ fstream-ignore "~1.0.5"
+ once "~1.3.3"
+ readable-stream "~2.1.4"
+ rimraf "~2.5.1"
+ tar "~2.2.1"
+ uid-number "~0.0.6"
+
+tar@~2.2.1:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1"
+ integrity sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=
+ dependencies:
+ block-stream "*"
+ fstream "^1.0.2"
+ inherits "2"
+
+timers-browserify@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.2.tgz#ab4883cf597dcd50af211349a00fbca56ac86b86"
+ integrity sha1-q0iDz1l9zVCvIRNJoA+8pWrIa4Y=
+ dependencies:
+ setimmediate "^1.0.4"
+
+to-arraybuffer@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43"
+ integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=
+
+to-fast-properties@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.2.tgz#f3f5c0c3ba7299a7ef99427e44633257ade43320"
+ integrity sha1-8/XAw7pymafvmUJ+RGMyV63kMyA=
+
+tough-cookie@~2.3.0:
+ version "2.3.2"
+ resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.2.tgz#f081f76e4c85720e6c37a5faced737150d84072a"
+ integrity sha1-8IH3bkyFcg5sN6X6ztc3FQ2EByo=
+ dependencies:
+ punycode "^1.4.1"
+
+trim-newlines@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613"
+ integrity sha1-WIeWa7WCpFA6QetST301ARgVphM=
+
+tty-browserify@0.0.0:
+ version "0.0.0"
+ resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6"
+ integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=
+
+tunnel-agent@~0.4.1:
+ version "0.4.3"
+ resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.4.3.tgz#6373db76909fe570e08d73583365ed828a74eeeb"
+ integrity sha1-Y3PbdpCf5XDgjXNYM2Xtgop07us=
+
+tweetnacl@^0.14.3, tweetnacl@~0.14.0:
+ version "0.14.5"
+ resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64"
+ integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=
+
+uglify-js@~2.7.3:
+ version "2.7.5"
+ resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.7.5.tgz#4612c0c7baaee2ba7c487de4904ae122079f2ca8"
+ integrity sha1-RhLAx7qu4rp8SH3kkErhIgefLKg=
+ dependencies:
+ async "~0.2.6"
+ source-map "~0.5.1"
+ uglify-to-browserify "~1.0.0"
+ yargs "~3.10.0"
+
+uglify-to-browserify@~1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7"
+ integrity sha1-bgkk1r2mta/jSeOabWMoUKD4grc=
+
+uid-number@~0.0.6:
+ version "0.0.6"
+ resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81"
+ integrity sha1-DqEOgDXo61uOREnwbaHHMGY7qoE=
+
+url@^0.11.0:
+ version "0.11.0"
+ resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1"
+ integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=
+ dependencies:
+ punycode "1.3.2"
+ querystring "0.2.0"
+
+user-home@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/user-home/-/user-home-1.1.1.tgz#2b5be23a32b63a7c9deb8d0f28d485724a3df190"
+ integrity sha1-K1viOjK2Onyd640PKNSFcko98ZA=
+
+util-deprecate@~1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
+ integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=
+
+util@0.10.3, util@^0.10.3:
+ version "0.10.3"
+ resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9"
+ integrity sha1-evsa/lCAUkZInj23/g7TeTNqwPk=
+ dependencies:
+ inherits "2.0.1"
+
+uuid@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.0.1.tgz#6544bba2dfda8c1cf17e629a3a305e2bb1fee6c1"
+ integrity sha1-ZUS7ot/ajBzxfmKaOjBeK7H+5sE=
+
+v8flags@^2.0.10:
+ version "2.0.11"
+ resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-2.0.11.tgz#bca8f30f0d6d60612cc2c00641e6962d42ae6881"
+ integrity sha1-vKjzDw1tYGEswsAGQeaWLUKuaIE=
+ dependencies:
+ user-home "^1.1.1"
+
+validate-npm-package-license@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz#2804babe712ad3379459acfbe24746ab2c303fbc"
+ integrity sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=
+ dependencies:
+ spdx-correct "~1.0.0"
+ spdx-expression-parse "~1.0.0"
+
+verror@1.3.6:
+ version "1.3.6"
+ resolved "https://registry.yarnpkg.com/verror/-/verror-1.3.6.tgz#cff5df12946d297d2baaefaa2689e25be01c005c"
+ integrity sha1-z/XfEpRtKX0rqu+qJoniW+AcAFw=
+ dependencies:
+ extsprintf "1.0.2"
+
+vm-browserify@0.0.4:
+ version "0.0.4"
+ resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-0.0.4.tgz#5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73"
+ integrity sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=
+ dependencies:
+ indexof "0.0.1"
+
+watchpack@^0.2.1:
+ version "0.2.9"
+ resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-0.2.9.tgz#62eaa4ab5e5ba35fdfc018275626e3c0f5e3fb0b"
+ integrity sha1-Yuqkq15bo1/fwBgnVibjwPXj+ws=
+ dependencies:
+ async "^0.9.0"
+ chokidar "^1.0.0"
+ graceful-fs "^4.1.2"
+
+webpack-core@~0.6.9:
+ version "0.6.9"
+ resolved "https://registry.yarnpkg.com/webpack-core/-/webpack-core-0.6.9.tgz#fc571588c8558da77be9efb6debdc5a3b172bdc2"
+ integrity sha1-/FcViMhVjad76e+23r3Fo7FyvcI=
+ dependencies:
+ source-list-map "~0.1.7"
+ source-map "~0.4.1"
+
+webpack@1:
+ version "1.14.0"
+ resolved "https://registry.yarnpkg.com/webpack/-/webpack-1.14.0.tgz#54f1ffb92051a328a5b2057d6ae33c289462c823"
+ integrity sha1-VPH/uSBRoyilsgV9auM8KJRiyCM=
+ dependencies:
+ acorn "^3.0.0"
+ async "^1.3.0"
+ clone "^1.0.2"
+ enhanced-resolve "~0.9.0"
+ interpret "^0.6.4"
+ loader-utils "^0.2.11"
+ memory-fs "~0.3.0"
+ mkdirp "~0.5.0"
+ node-libs-browser "^0.7.0"
+ optimist "~0.6.0"
+ supports-color "^3.1.0"
+ tapable "~0.1.8"
+ uglify-js "~2.7.3"
+ watchpack "^0.2.1"
+ webpack-core "~0.6.9"
+
+wide-align@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.0.tgz#40edde802a71fea1f070da3e62dcda2e7add96ad"
+ integrity sha1-QO3egCpx/qHwcNo+YtzaLnrdlq0=
+ dependencies:
+ string-width "^1.0.1"
+
+window-size@0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d"
+ integrity sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=
+
+wordwrap@0.0.2:
+ version "0.0.2"
+ resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f"
+ integrity sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=
+
+wordwrap@~0.0.2:
+ version "0.0.3"
+ resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107"
+ integrity sha1-o9XabNXAvAAI03I0u68b7WMFkQc=
+
+wrappy@1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
+ integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
+
+xtend@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af"
+ integrity sha1-pcbVMr5lbiPbgg77lDofBJmNY68=
+
+yargs@~3.10.0:
+ version "3.10.0"
+ resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1"
+ integrity sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=
+ dependencies:
+ camelcase "^1.0.2"
+ cliui "^2.1.0"
+ decamelize "^1.0.0"
+ window-size "0.1.0"
diff --git a/date-fns/examples/rollup/README.md b/date-fns/examples/rollup/README.md
new file mode 100644
index 0000000..b144f68
--- /dev/null
+++ b/date-fns/examples/rollup/README.md
@@ -0,0 +1,23 @@
+# Usage With Rollup
+
+See [example.js](./example.js), [fp.js](./fp.js) and [misc.js](./misc.js) for source code examples.
+
+See [package.json scripts](./package.json) for CLI usage.
+
+## Build Example
+
+```sh
+yarn
+yarn run build
+```
+
+See ./dist for output.
+
+## Minimal Build Size
+
+You can see minimal build size (when you use just one function):
+
+```sh
+gzip-size dist/example.min.js | pretty-bytes
+#=> 6.22 kB
+```
diff --git a/date-fns/examples/rollup/example.js b/date-fns/examples/rollup/example.js
new file mode 100644
index 0000000..5619a30
--- /dev/null
+++ b/date-fns/examples/rollup/example.js
@@ -0,0 +1,4 @@
+import format from 'date-fns/esm/format'
+
+const result = format(new Date(2017, 0, 25, 21, 28, 15), 'dd.MM.yyyy HH:mm:ss')
+console.log(result === '25.01.2017 21:28:15')
diff --git a/date-fns/examples/rollup/fp.js b/date-fns/examples/rollup/fp.js
new file mode 100644
index 0000000..41a29d0
--- /dev/null
+++ b/date-fns/examples/rollup/fp.js
@@ -0,0 +1,18 @@
+import addYears from 'date-fns/esm/fp/addYears'
+import {formatWithOptions} from 'date-fns/esm/fp'
+import {eo} from 'date-fns/esm/locale'
+
+const addFiveYears = addYears(5)
+const dateToString = formatWithOptions({locale: eo}, 'd MMMM yyyy')
+
+const dates = [
+ new Date(2017, 0 /* Jan */, 1),
+ new Date(2017, 1 /* Feb */, 11),
+ new Date(2017, 6 /* Jul */, 2)
+]
+
+const formattedDates = dates
+ .map((date) => dateToString(addFiveYears(date)))
+ .join(', ')
+
+console.log(formattedDates === '1 januaro 2022, 11 februaro 2022, 2 julio 2022')
diff --git a/date-fns/examples/rollup/misc.js b/date-fns/examples/rollup/misc.js
new file mode 100644
index 0000000..4094cb2
--- /dev/null
+++ b/date-fns/examples/rollup/misc.js
@@ -0,0 +1,9 @@
+import { format } from 'date-fns/esm'
+import { eo } from 'date-fns/esm/locale'
+
+const result = format(
+ new Date(2017, 0, 25, 21, 28, 15),
+ 'eeee, dd MMMM HH:mm:ss',
+ { locale: eo }
+)
+console.log(result === 'merkredo, 25 januaro 21:28:15')
diff --git a/date-fns/examples/rollup/package.json b/date-fns/examples/rollup/package.json
new file mode 100644
index 0000000..6b64066
--- /dev/null
+++ b/date-fns/examples/rollup/package.json
@@ -0,0 +1,33 @@
+{
+ "name": "date-fns-example-webpack2",
+ "version": "0.1.0",
+ "description": "Example of date-fns usage with Rollup",
+ "main": "example.js",
+ "author": "Sasha Koss <koss@nocorp.me>",
+ "license": "MIT",
+ "dependencies": {
+ "babili": "^0.0.9",
+ "gzip-size-cli": "^1.0.0",
+ "pretty-bytes-cli": "^2.0.0",
+ "rollup": "^0.41.1",
+ "rollup-plugin-commonjs": "^7.0.0",
+ "rollup-plugin-node-resolve": "^2.0.0"
+ },
+ "scripts": {
+ "build": "yarn run build-date-fns && yarn run build-rollup && yarn run build-babili",
+ "build-date-fns": "env PACKAGE_OUTPUT_PATH=\"$(pwd)/node_modules/date-fns\" ../../scripts/build/package.sh",
+ "build-rollup": "yarn run build-rollup-example && yarn run build-rollup-fp && yarn run build-rollup-misc",
+ "build-rollup-example": "rollup -c rollup.config.example.js",
+ "build-rollup-fp": "rollup -c rollup.config.fp.js",
+ "build-rollup-misc": "rollup -c rollup.config.misc.js",
+ "build-babili": "yarn run build-babili-example && yarn run build-babili-fp && yarn run build-babili-misc && yarn run stats-size",
+ "build-babili-example": "babili dist/example.js --out-file dist/example.min.js --minified --no-comments",
+ "build-babili-fp": "babili dist/fp.js --out-file dist/fp.min.js --minified --no-comments",
+ "build-babili-misc": "babili dist/misc.js --out-file dist/misc.min.js --minified --no-comments",
+ "stats-size": "gzip-size dist/example.min.js | pretty-bytes",
+ "test": "yarn run test-example && yarn run test-fp && yarn run test-misc",
+ "test-example": "test $(env TZ=UTC node ./dist/example.min.js) = true",
+ "test-fp": "test $(env TZ=UTC node ./dist/fp.min.js) = true",
+ "test-misc": "test $(env TZ=UTC node ./dist/misc.min.js) = true"
+ }
+}
diff --git a/date-fns/examples/rollup/rollup.config.example.js b/date-fns/examples/rollup/rollup.config.example.js
new file mode 100644
index 0000000..f9e7ee5
--- /dev/null
+++ b/date-fns/examples/rollup/rollup.config.example.js
@@ -0,0 +1,12 @@
+import resolve from 'rollup-plugin-node-resolve'
+import commonjs from 'rollup-plugin-commonjs'
+
+export default {
+ entry: 'example.js',
+ dest: 'dist/example.js',
+ format: 'cjs',
+ plugins: [
+ resolve({jsnext: true, main: true}),
+ commonjs()
+ ]
+}
diff --git a/date-fns/examples/rollup/rollup.config.fp.js b/date-fns/examples/rollup/rollup.config.fp.js
new file mode 100644
index 0000000..1f6a53d
--- /dev/null
+++ b/date-fns/examples/rollup/rollup.config.fp.js
@@ -0,0 +1,12 @@
+import resolve from 'rollup-plugin-node-resolve'
+import commonjs from 'rollup-plugin-commonjs'
+
+export default {
+ entry: 'fp.js',
+ dest: 'dist/fp.js',
+ format: 'cjs',
+ plugins: [
+ resolve({jsnext: true, main: true}),
+ commonjs()
+ ]
+}
diff --git a/date-fns/examples/rollup/rollup.config.misc.js b/date-fns/examples/rollup/rollup.config.misc.js
new file mode 100644
index 0000000..072f34a
--- /dev/null
+++ b/date-fns/examples/rollup/rollup.config.misc.js
@@ -0,0 +1,12 @@
+import resolve from 'rollup-plugin-node-resolve'
+import commonjs from 'rollup-plugin-commonjs'
+
+export default {
+ entry: 'misc.js',
+ dest: 'dist/misc.js',
+ format: 'cjs',
+ plugins: [
+ resolve({jsnext: true, main: true}),
+ commonjs()
+ ]
+}
diff --git a/date-fns/examples/rollup/yarn.lock b/date-fns/examples/rollup/yarn.lock
new file mode 100644
index 0000000..dc6cac2
--- /dev/null
+++ b/date-fns/examples/rollup/yarn.lock
@@ -0,0 +1,1932 @@
+# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
+# yarn lockfile v1
+
+
+abbrev@1:
+ version "1.0.9"
+ resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.0.9.tgz#91b4792588a7738c25f35dd6f63752a2f8776135"
+ integrity sha1-kbR5JYinc4wl813W9jdSovh3YTU=
+
+acorn@^4.0.1:
+ version "4.0.4"
+ resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.4.tgz#17a8d6a7a6c4ef538b814ec9abac2779293bf30a"
+ integrity sha1-F6jWp6bE71OLgU7Jq6wneSk78wo=
+
+ansi-regex@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.0.0.tgz#c5061b6e0ef8a81775e50f5d66151bf6bf371107"
+ integrity sha1-xQYbbg74qBd15Q9dZhUb9r83EQc=
+
+ansi-styles@^2.2.1:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe"
+ integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=
+
+anymatch@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.0.tgz#a3e52fa39168c825ff57b0248126ce5a8ff95507"
+ integrity sha1-o+Uvo5FoyCX/V7AkgSbOWo/5VQc=
+ dependencies:
+ arrify "^1.0.0"
+ micromatch "^2.1.5"
+
+aproba@^1.0.3:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.0.4.tgz#2713680775e7614c8ba186c065d4e2e52d1072c0"
+ integrity sha1-JxNoB3XnYUyLoYbAZdTi5S0QcsA=
+
+are-we-there-yet@~1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.2.tgz#80e470e95a084794fe1899262c5667c6e88de1b3"
+ integrity sha1-gORw6VoIR5T+GJkmLFZnxuiN4bM=
+ dependencies:
+ delegates "^1.0.0"
+ readable-stream "^2.0.0 || ^1.1.13"
+
+arr-diff@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf"
+ integrity sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=
+ dependencies:
+ arr-flatten "^1.0.1"
+
+arr-flatten@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.0.1.tgz#e5ffe54d45e19f32f216e91eb99c8ce892bb604b"
+ integrity sha1-5f/lTUXhnzLyFukeuZyM6JK7YEs=
+
+array-find-index@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1"
+ integrity sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=
+
+array-unique@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53"
+ integrity sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=
+
+arrify@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d"
+ integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=
+
+asn1@~0.2.3:
+ version "0.2.3"
+ resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86"
+ integrity sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=
+
+assert-plus@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234"
+ integrity sha1-104bh+ev/A24qttwIfP+SBAasjQ=
+
+assert-plus@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525"
+ integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=
+
+async-each@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d"
+ integrity sha1-GdOGodntxufByF04iu28xW0zYC0=
+
+asynckit@^0.4.0:
+ version "0.4.0"
+ resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
+ integrity sha1-x57Zf380y48robyXkLzDZkdLS3k=
+
+aws-sign2@~0.6.0:
+ version "0.6.0"
+ resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f"
+ integrity sha1-FDQt0428yU0OW4fXY81jYSwOeU8=
+
+aws4@^1.2.1:
+ version "1.5.0"
+ resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.5.0.tgz#0a29ffb79c31c9e712eeb087e8e7a64b4a56d755"
+ integrity sha1-Cin/t5wxyecS7rCH6OemS0pW11U=
+
+babel-cli@^6.10.1:
+ version "6.18.0"
+ resolved "https://registry.yarnpkg.com/babel-cli/-/babel-cli-6.18.0.tgz#92117f341add9dead90f6fa7d0a97c0cc08ec186"
+ integrity sha1-khF/NBrdnerZD2+n0Kl8DMCOwYY=
+ dependencies:
+ babel-core "^6.18.0"
+ babel-polyfill "^6.16.0"
+ babel-register "^6.18.0"
+ babel-runtime "^6.9.0"
+ commander "^2.8.1"
+ convert-source-map "^1.1.0"
+ fs-readdir-recursive "^1.0.0"
+ glob "^5.0.5"
+ lodash "^4.2.0"
+ output-file-sync "^1.1.0"
+ path-is-absolute "^1.0.0"
+ slash "^1.0.0"
+ source-map "^0.5.0"
+ v8flags "^2.0.10"
+ optionalDependencies:
+ chokidar "^1.0.0"
+
+babel-code-frame@^6.20.0:
+ version "6.20.0"
+ resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.20.0.tgz#b968f839090f9a8bc6d41938fb96cb84f7387b26"
+ integrity sha1-uWj4OQkPmovG1Bk4+5bLhPc4eyY=
+ dependencies:
+ chalk "^1.1.0"
+ esutils "^2.0.2"
+ js-tokens "^2.0.0"
+
+babel-core@^6.18.0:
+ version "6.21.0"
+ resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.21.0.tgz#75525480c21c803f826ef3867d22c19f080a3724"
+ integrity sha1-dVJUgMIcgD+CbvOGfSLBnwgKNyQ=
+ dependencies:
+ babel-code-frame "^6.20.0"
+ babel-generator "^6.21.0"
+ babel-helpers "^6.16.0"
+ babel-messages "^6.8.0"
+ babel-register "^6.18.0"
+ babel-runtime "^6.20.0"
+ babel-template "^6.16.0"
+ babel-traverse "^6.21.0"
+ babel-types "^6.21.0"
+ babylon "^6.11.0"
+ convert-source-map "^1.1.0"
+ debug "^2.1.1"
+ json5 "^0.5.0"
+ lodash "^4.2.0"
+ minimatch "^3.0.2"
+ path-is-absolute "^1.0.0"
+ private "^0.1.6"
+ slash "^1.0.0"
+ source-map "^0.5.0"
+
+babel-generator@^6.21.0:
+ version "6.21.0"
+ resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.21.0.tgz#605f1269c489a1c75deeca7ea16d43d4656c8494"
+ integrity sha1-YF8SacSJocdd7sp+oW1D1GVshJQ=
+ dependencies:
+ babel-messages "^6.8.0"
+ babel-runtime "^6.20.0"
+ babel-types "^6.21.0"
+ detect-indent "^4.0.0"
+ jsesc "^1.3.0"
+ lodash "^4.2.0"
+ source-map "^0.5.0"
+
+babel-helper-flip-expressions@^0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/babel-helper-flip-expressions/-/babel-helper-flip-expressions-0.0.1.tgz#c2ba1599426e7928333fd5c08eee6cdf8328c848"
+ integrity sha1-wroVmUJueSgzP9XAju5s34MoyEg=
+
+babel-helper-is-nodes-equiv@^0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/babel-helper-is-nodes-equiv/-/babel-helper-is-nodes-equiv-0.0.1.tgz#34e9b300b1479ddd98ec77ea0bbe9342dfe39684"
+ integrity sha1-NOmzALFHnd2Y7HfqC76TQt/jloQ=
+
+babel-helper-is-void-0@^0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/babel-helper-is-void-0/-/babel-helper-is-void-0-0.0.1.tgz#ed74553b883e68226ae45f989a99b02c190f105a"
+ integrity sha1-7XRVO4g+aCJq5F+YmpmwLBkPEFo=
+
+babel-helper-remove-or-void@^0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/babel-helper-remove-or-void/-/babel-helper-remove-or-void-0.0.1.tgz#f602790e465acf2dfbe84fb3dd210c43a2dd7262"
+ integrity sha1-9gJ5DkZazy376E+z3SEMQ6LdcmI=
+
+babel-helper-to-multiple-sequence-expressions@^0.0.2:
+ version "0.0.2"
+ resolved "https://registry.yarnpkg.com/babel-helper-to-multiple-sequence-expressions/-/babel-helper-to-multiple-sequence-expressions-0.0.2.tgz#07d5d2e674aa62962ac9e0000b539920c301c4b9"
+ integrity sha1-B9XS5nSqYpYqyeAAC1OZIMMBxLk=
+
+babel-helpers@^6.16.0:
+ version "6.16.0"
+ resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.16.0.tgz#1095ec10d99279460553e67eb3eee9973d3867e3"
+ integrity sha1-EJXsENmSeUYFU+Z+s+7plz04Z+M=
+ dependencies:
+ babel-runtime "^6.0.0"
+ babel-template "^6.16.0"
+
+babel-messages@^6.8.0:
+ version "6.8.0"
+ resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.8.0.tgz#bf504736ca967e6d65ef0adb5a2a5f947c8e0eb9"
+ integrity sha1-v1BHNsqWfm1l7wrbWipflHyODrk=
+ dependencies:
+ babel-runtime "^6.0.0"
+
+babel-plugin-minify-constant-folding@^0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-minify-constant-folding/-/babel-plugin-minify-constant-folding-0.0.1.tgz#d4abb5b62ccfc094bdce2a318b2f94fda5a73e29"
+ integrity sha1-1Ku1tizPwJS9zioxiy+U/aWnPik=
+
+babel-plugin-minify-dead-code-elimination@^0.1.0:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-minify-dead-code-elimination/-/babel-plugin-minify-dead-code-elimination-0.1.1.tgz#1a0133fcd06c7fa477b01c193ba3213c8944ff01"
+ integrity sha1-GgEz/NBsf6R3sBwZO6MhPIlE/wE=
+ dependencies:
+ babel-helper-remove-or-void "^0.0.1"
+ lodash.some "^4.6.0"
+
+babel-plugin-minify-flip-comparisons@^0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-minify-flip-comparisons/-/babel-plugin-minify-flip-comparisons-0.0.1.tgz#679f4493a692afc705c4b79fde1dadb535c4eb08"
+ integrity sha1-Z59Ek6aSr8cFxLef3h2ttTXE6wg=
+ dependencies:
+ babel-helper-is-void-0 "^0.0.1"
+
+babel-plugin-minify-guarded-expressions@^0.0.3:
+ version "0.0.3"
+ resolved "https://registry.yarnpkg.com/babel-plugin-minify-guarded-expressions/-/babel-plugin-minify-guarded-expressions-0.0.3.tgz#6da1caa0b6abda964647377bd5e19afdbf91cae8"
+ integrity sha1-baHKoLar2pZGRzd71eGa/b+Ryug=
+ dependencies:
+ babel-helper-flip-expressions "^0.0.1"
+
+babel-plugin-minify-infinity@^0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-minify-infinity/-/babel-plugin-minify-infinity-0.0.1.tgz#9394a4defc9db56da76f13fedd5d5e2d486a4299"
+ integrity sha1-k5Sk3vydtW2nbxP+3V1eLUhqQpk=
+
+babel-plugin-minify-mangle-names@^0.0.4:
+ version "0.0.4"
+ resolved "https://registry.yarnpkg.com/babel-plugin-minify-mangle-names/-/babel-plugin-minify-mangle-names-0.0.4.tgz#94812c0c82320f7af97511b7d598527933973197"
+ integrity sha1-lIEsDIIyD3r5dRG31ZhSeTOXMZc=
+
+babel-plugin-minify-numeric-literals@^0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-minify-numeric-literals/-/babel-plugin-minify-numeric-literals-0.0.1.tgz#9597e6c31154d7daf3744d0bd417c144b275bd53"
+ integrity sha1-lZfmwxFU19rzdE0L1BfBRLJ1vVM=
+
+babel-plugin-minify-replace@^0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-minify-replace/-/babel-plugin-minify-replace-0.0.1.tgz#5d5aea7cb9899245248d1ee9ce7a2fe556a8facc"
+ integrity sha1-XVrqfLmJkkUkjR7pznov5Vao+sw=
+
+babel-plugin-minify-simplify@^0.0.4:
+ version "0.0.4"
+ resolved "https://registry.yarnpkg.com/babel-plugin-minify-simplify/-/babel-plugin-minify-simplify-0.0.4.tgz#940d0dd0db6d4c4c1c51fc34c3c6e0d0ee1d67e9"
+ integrity sha1-lA0N0NttTEwcUfw0w8bg0O4dZ+k=
+ dependencies:
+ babel-helper-flip-expressions "^0.0.1"
+ babel-helper-is-nodes-equiv "^0.0.1"
+ babel-helper-to-multiple-sequence-expressions "^0.0.2"
+
+babel-plugin-minify-type-constructors@^0.0.2:
+ version "0.0.2"
+ resolved "https://registry.yarnpkg.com/babel-plugin-minify-type-constructors/-/babel-plugin-minify-type-constructors-0.0.2.tgz#4f9a28951e776f31ac11a29cd58cf9eef8b2e292"
+ integrity sha1-T5oolR53bzGsEaKc1Yz57viy4pI=
+ dependencies:
+ babel-helper-is-void-0 "^0.0.1"
+
+babel-plugin-transform-member-expression-literals@^6.8.0:
+ version "6.8.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-member-expression-literals/-/babel-plugin-transform-member-expression-literals-6.8.0.tgz#718755a70492a895d8f41810afa9998bc09f57b9"
+ integrity sha1-cYdVpwSSqJXY9BgQr6mZi8CfV7k=
+ dependencies:
+ babel-runtime "^6.0.0"
+
+babel-plugin-transform-merge-sibling-variables@^6.8.0:
+ version "6.8.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-merge-sibling-variables/-/babel-plugin-transform-merge-sibling-variables-6.8.0.tgz#724074e4ef78b601fcf9a34165c972a1b6117e99"
+ integrity sha1-ckB05O94tgH8+aNBZclyobYRfpk=
+ dependencies:
+ babel-runtime "^6.0.0"
+
+babel-plugin-transform-minify-booleans@^6.8.0:
+ version "6.8.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-minify-booleans/-/babel-plugin-transform-minify-booleans-6.8.0.tgz#b1a48864a727847696b84eae36fa4d085a54b42b"
+ integrity sha1-saSIZKcnhHaWuE6uNvpNCFpUtCs=
+ dependencies:
+ babel-runtime "^6.0.0"
+
+babel-plugin-transform-property-literals@^6.8.0:
+ version "6.8.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-property-literals/-/babel-plugin-transform-property-literals-6.8.0.tgz#a65b2e6e1274d25df0f3a4c5e85bc8f1cdd9e019"
+ integrity sha1-plsubhJ00l3w86TF6FvI8c3Z4Bk=
+ dependencies:
+ babel-runtime "^6.0.0"
+
+babel-plugin-transform-regexp-constructors@^0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-regexp-constructors/-/babel-plugin-transform-regexp-constructors-0.0.1.tgz#c5878cc4d78437e99d02790d325f163741741ff5"
+ integrity sha1-xYeMxNeEN+mdAnkNMl8WN0F0H/U=
+
+babel-plugin-transform-simplify-comparison-operators@^6.8.0:
+ version "6.8.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-simplify-comparison-operators/-/babel-plugin-transform-simplify-comparison-operators-6.8.0.tgz#0183d65bfdc54c80d922a3a9b3008e25fa9d32a7"
+ integrity sha1-AYPWW/3FTIDZIqOpswCOJfqdMqc=
+ dependencies:
+ babel-runtime "^6.0.0"
+
+babel-plugin-transform-undefined-to-void@^6.8.0:
+ version "6.8.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-undefined-to-void/-/babel-plugin-transform-undefined-to-void-6.8.0.tgz#bc5b6b4908d3b1262170e67cb3963903ddce167e"
+ integrity sha1-vFtrSQjTsSYhcOZ8s5Y5A93OFn4=
+ dependencies:
+ babel-runtime "^6.0.0"
+
+babel-polyfill@^6.16.0:
+ version "6.20.0"
+ resolved "https://registry.yarnpkg.com/babel-polyfill/-/babel-polyfill-6.20.0.tgz#de4a371006139e20990aac0be367d398331204e7"
+ integrity sha1-3ko3EAYTniCZCqwL42fTmDMSBOc=
+ dependencies:
+ babel-runtime "^6.20.0"
+ core-js "^2.4.0"
+ regenerator-runtime "^0.10.0"
+
+babel-preset-babili@^0.0.8:
+ version "0.0.8"
+ resolved "https://registry.yarnpkg.com/babel-preset-babili/-/babel-preset-babili-0.0.8.tgz#aeba08a21171166e448fd4226c3cf03bcf682122"
+ integrity sha1-rroIohFxFm5Ej9QibDzwO89oISI=
+ dependencies:
+ babel-plugin-minify-constant-folding "^0.0.1"
+ babel-plugin-minify-dead-code-elimination "^0.1.0"
+ babel-plugin-minify-flip-comparisons "^0.0.1"
+ babel-plugin-minify-guarded-expressions "^0.0.3"
+ babel-plugin-minify-infinity "^0.0.1"
+ babel-plugin-minify-mangle-names "^0.0.4"
+ babel-plugin-minify-numeric-literals "^0.0.1"
+ babel-plugin-minify-replace "^0.0.1"
+ babel-plugin-minify-simplify "^0.0.4"
+ babel-plugin-minify-type-constructors "^0.0.2"
+ babel-plugin-transform-member-expression-literals "^6.8.0"
+ babel-plugin-transform-merge-sibling-variables "^6.8.0"
+ babel-plugin-transform-minify-booleans "^6.8.0"
+ babel-plugin-transform-property-literals "^6.8.0"
+ babel-plugin-transform-regexp-constructors "^0.0.1"
+ babel-plugin-transform-simplify-comparison-operators "^6.8.0"
+ babel-plugin-transform-undefined-to-void "^6.8.0"
+
+babel-register@^6.18.0:
+ version "6.18.0"
+ resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.18.0.tgz#892e2e03865078dd90ad2c715111ec4449b32a68"
+ integrity sha1-iS4uA4ZQeN2QrSxxURHsREmzKmg=
+ dependencies:
+ babel-core "^6.18.0"
+ babel-runtime "^6.11.6"
+ core-js "^2.4.0"
+ home-or-tmp "^2.0.0"
+ lodash "^4.2.0"
+ mkdirp "^0.5.1"
+ source-map-support "^0.4.2"
+
+babel-runtime@^6.0.0, babel-runtime@^6.11.6, babel-runtime@^6.20.0, babel-runtime@^6.9.0:
+ version "6.20.0"
+ resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.20.0.tgz#87300bdcf4cd770f09bf0048c64204e17806d16f"
+ integrity sha1-hzAL3PTNdw8JvwBIxkIE4XgG0W8=
+ dependencies:
+ core-js "^2.4.0"
+ regenerator-runtime "^0.10.0"
+
+babel-template@^6.16.0:
+ version "6.16.0"
+ resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.16.0.tgz#e149dd1a9f03a35f817ddbc4d0481988e7ebc8ca"
+ integrity sha1-4UndGp8Do1+BfdvE0EgZiOfryMo=
+ dependencies:
+ babel-runtime "^6.9.0"
+ babel-traverse "^6.16.0"
+ babel-types "^6.16.0"
+ babylon "^6.11.0"
+ lodash "^4.2.0"
+
+babel-traverse@^6.16.0, babel-traverse@^6.21.0:
+ version "6.21.0"
+ resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.21.0.tgz#69c6365804f1a4f69eb1213f85b00a818b8c21ad"
+ integrity sha1-acY2WATxpPaesSE/hbAKgYuMIa0=
+ dependencies:
+ babel-code-frame "^6.20.0"
+ babel-messages "^6.8.0"
+ babel-runtime "^6.20.0"
+ babel-types "^6.21.0"
+ babylon "^6.11.0"
+ debug "^2.2.0"
+ globals "^9.0.0"
+ invariant "^2.2.0"
+ lodash "^4.2.0"
+
+babel-types@^6.16.0, babel-types@^6.21.0:
+ version "6.21.0"
+ resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.21.0.tgz#314b92168891ef6d3806b7f7a917fdf87c11a4b2"
+ integrity sha1-MUuSFoiR7204Brf3qRf9+HwRpLI=
+ dependencies:
+ babel-runtime "^6.20.0"
+ esutils "^2.0.2"
+ lodash "^4.2.0"
+ to-fast-properties "^1.0.1"
+
+babili@^0.0.9:
+ version "0.0.9"
+ resolved "https://registry.yarnpkg.com/babili/-/babili-0.0.9.tgz#cf1277f34d8265101847e2c5ac11771684f2b1d4"
+ integrity sha1-zxJ3802CZRAYR+LFrBF3FoTysdQ=
+ dependencies:
+ babel-cli "^6.10.1"
+ babel-preset-babili "^0.0.8"
+
+babylon@^6.11.0:
+ version "6.14.1"
+ resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.14.1.tgz#956275fab72753ad9b3435d7afe58f8bf0a29815"
+ integrity sha1-lWJ1+rcnU62bNDXXr+WPi/CimBU=
+
+balanced-match@^0.4.1:
+ version "0.4.2"
+ resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838"
+ integrity sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=
+
+bcrypt-pbkdf@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.0.tgz#3ca76b85241c7170bf7d9703e7b9aa74630040d4"
+ integrity sha1-PKdrhSQccXC/fZcD57mqdGMAQNQ=
+ dependencies:
+ tweetnacl "^0.14.3"
+
+binary-extensions@^1.0.0:
+ version "1.8.0"
+ resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.8.0.tgz#48ec8d16df4377eae5fa5884682480af4d95c774"
+ integrity sha1-SOyNFt9Dd+rl+liEaCSAr02Vx3Q=
+
+block-stream@*:
+ version "0.0.9"
+ resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a"
+ integrity sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=
+ dependencies:
+ inherits "~2.0.0"
+
+boom@2.x.x:
+ version "2.10.1"
+ resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f"
+ integrity sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=
+ dependencies:
+ hoek "2.x.x"
+
+brace-expansion@^1.0.0:
+ version "1.1.6"
+ resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.6.tgz#7197d7eaa9b87e648390ea61fc66c84427420df9"
+ integrity sha1-cZfX6qm4fmSDkOph/GbIRCdCDfk=
+ dependencies:
+ balanced-match "^0.4.1"
+ concat-map "0.0.1"
+
+braces@^1.8.2:
+ version "1.8.5"
+ resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7"
+ integrity sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=
+ dependencies:
+ expand-range "^1.8.1"
+ preserve "^0.2.0"
+ repeat-element "^1.1.2"
+
+browser-resolve@^1.11.0:
+ version "1.11.2"
+ resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.2.tgz#8ff09b0a2c421718a1051c260b32e48f442938ce"
+ integrity sha1-j/CbCixCFxihBRwmCzLkj0QpOM4=
+ dependencies:
+ resolve "1.1.7"
+
+buffer-shims@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/buffer-shims/-/buffer-shims-1.0.0.tgz#9978ce317388c649ad8793028c3477ef044a8b51"
+ integrity sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=
+
+builtin-modules@^1.0.0, builtin-modules@^1.1.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f"
+ integrity sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=
+
+camelcase-keys@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7"
+ integrity sha1-MIvur/3ygRkFHvodkyITyRuPkuc=
+ dependencies:
+ camelcase "^2.0.0"
+ map-obj "^1.0.0"
+
+camelcase@^2.0.0:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f"
+ integrity sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=
+
+caseless@~0.11.0:
+ version "0.11.0"
+ resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.11.0.tgz#715b96ea9841593cc33067923f5ec60ebda4f7d7"
+ integrity sha1-cVuW6phBWTzDMGeSP17GDr2k99c=
+
+chalk@^1.1.0, chalk@^1.1.1:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98"
+ integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=
+ dependencies:
+ ansi-styles "^2.2.1"
+ escape-string-regexp "^1.0.2"
+ has-ansi "^2.0.0"
+ strip-ansi "^3.0.0"
+ supports-color "^2.0.0"
+
+chokidar@^1.0.0:
+ version "1.6.1"
+ resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.6.1.tgz#2f4447ab5e96e50fb3d789fd90d4c72e0e4c70c2"
+ integrity sha1-L0RHq16W5Q+z14n9kNTHLg5McMI=
+ dependencies:
+ anymatch "^1.3.0"
+ async-each "^1.0.0"
+ glob-parent "^2.0.0"
+ inherits "^2.0.1"
+ is-binary-path "^1.0.0"
+ is-glob "^2.0.0"
+ path-is-absolute "^1.0.0"
+ readdirp "^2.0.0"
+ optionalDependencies:
+ fsevents "^1.0.0"
+
+code-point-at@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77"
+ integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=
+
+combined-stream@^1.0.5, combined-stream@~1.0.5:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.5.tgz#938370a57b4a51dea2c77c15d5c5fdf895164009"
+ integrity sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=
+ dependencies:
+ delayed-stream "~1.0.0"
+
+commander@^2.8.1, commander@^2.9.0:
+ version "2.9.0"
+ resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4"
+ integrity sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=
+ dependencies:
+ graceful-readlink ">= 1.0.0"
+
+concat-map@0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
+ integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
+
+console-control-strings@^1.0.0, console-control-strings@~1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e"
+ integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=
+
+convert-source-map@^1.1.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.3.0.tgz#e9f3e9c6e2728efc2676696a70eb382f73106a67"
+ integrity sha1-6fPpxuJyjvwmdmlqcOs4L3MQamc=
+
+core-js@^2.4.0:
+ version "2.4.1"
+ resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.4.1.tgz#4de911e667b0eae9124e34254b53aea6fc618d3e"
+ integrity sha1-TekR5mew6ukSTjQlS1OupvxhjT4=
+
+core-util-is@~1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
+ integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=
+
+cryptiles@2.x.x:
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8"
+ integrity sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=
+ dependencies:
+ boom "2.x.x"
+
+currently-unhandled@^0.4.1:
+ version "0.4.1"
+ resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea"
+ integrity sha1-mI3zP+qxke95mmE2nddsF635V+o=
+ dependencies:
+ array-find-index "^1.0.1"
+
+dashdash@^1.12.0:
+ version "1.14.1"
+ resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0"
+ integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=
+ dependencies:
+ assert-plus "^1.0.0"
+
+debug@^2.1.1, debug@^2.2.0, debug@~2.2.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da"
+ integrity sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=
+ dependencies:
+ ms "0.7.1"
+
+decamelize@^1.1.2:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
+ integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=
+
+deep-extend@~0.4.0:
+ version "0.4.1"
+ resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.1.tgz#efe4113d08085f4e6f9687759810f807469e2253"
+ integrity sha1-7+QRPQgIX05vlod1mBD4B0aeIlM=
+
+delayed-stream@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
+ integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk=
+
+delegates@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a"
+ integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=
+
+detect-indent@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208"
+ integrity sha1-920GQ1LN9Docts5hnE7jqUdd4gg=
+ dependencies:
+ repeating "^2.0.0"
+
+duplexer@^0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1"
+ integrity sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=
+
+ecc-jsbn@~0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505"
+ integrity sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=
+ dependencies:
+ jsbn "~0.1.0"
+
+error-ex@^1.2.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.0.tgz#e67b43f3e82c96ea3a584ffee0b9fc3325d802d9"
+ integrity sha1-5ntD8+gsluo6WE/+4Ln8MyXYAtk=
+ dependencies:
+ is-arrayish "^0.2.1"
+
+escape-string-regexp@^1.0.2:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
+ integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
+
+estree-walker@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.2.1.tgz#bdafe8095383d8414d5dc2ecf4c9173b6db9412e"
+ integrity sha1-va/oCVOD2EFNXcLs9MkXO225QS4=
+
+estree-walker@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.3.0.tgz#f67ca8f57b9ed66d886af816c099c779b315d4db"
+ integrity sha1-9nyo9Xue1m2IavgWwJnHebMV1Ns=
+
+esutils@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b"
+ integrity sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=
+
+expand-brackets@^0.1.4:
+ version "0.1.5"
+ resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b"
+ integrity sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=
+ dependencies:
+ is-posix-bracket "^0.1.0"
+
+expand-range@^1.8.1:
+ version "1.8.2"
+ resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337"
+ integrity sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=
+ dependencies:
+ fill-range "^2.1.0"
+
+extend@~3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.0.tgz#5a474353b9f3353ddd8176dfd37b91c83a46f1d4"
+ integrity sha1-WkdDU7nzNT3dgXbf03uRyDpG8dQ=
+
+extglob@^0.3.1:
+ version "0.3.2"
+ resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1"
+ integrity sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=
+ dependencies:
+ is-extglob "^1.0.0"
+
+extsprintf@1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.0.2.tgz#e1080e0658e300b06294990cc70e1502235fd550"
+ integrity sha1-4QgOBljjALBilJkMxw4VAiNf1VA=
+
+filename-regex@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.0.tgz#996e3e80479b98b9897f15a8a58b3d084e926775"
+ integrity sha1-mW4+gEebmLmJfxWopYs9CE6SZ3U=
+
+fill-range@^2.1.0:
+ version "2.2.3"
+ resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723"
+ integrity sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=
+ dependencies:
+ is-number "^2.1.0"
+ isobject "^2.0.0"
+ randomatic "^1.1.3"
+ repeat-element "^1.1.2"
+ repeat-string "^1.5.2"
+
+find-up@^1.0.0:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f"
+ integrity sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=
+ dependencies:
+ path-exists "^2.0.0"
+ pinkie-promise "^2.0.0"
+
+for-in@^0.1.5:
+ version "0.1.6"
+ resolved "https://registry.yarnpkg.com/for-in/-/for-in-0.1.6.tgz#c9f96e89bfad18a545af5ec3ed352a1d9e5b4dc8"
+ integrity sha1-yfluib+tGKVFr17D7TUqHZ5bTcg=
+
+for-own@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.4.tgz#0149b41a39088c7515f51ebe1c1386d45f935072"
+ integrity sha1-AUm0GjkIjHUV9R6+HBOG1F+TUHI=
+ dependencies:
+ for-in "^0.1.5"
+
+forever-agent@~0.6.1:
+ version "0.6.1"
+ resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91"
+ integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=
+
+form-data@~2.1.1:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.2.tgz#89c3534008b97eada4cbb157d58f6f5df025eae4"
+ integrity sha1-icNTQAi5fq2ky7FX1Y9vXfAl6uQ=
+ dependencies:
+ asynckit "^0.4.0"
+ combined-stream "^1.0.5"
+ mime-types "^2.1.12"
+
+fs-readdir-recursive@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-1.0.0.tgz#8cd1745c8b4f8a29c8caec392476921ba195f560"
+ integrity sha1-jNF0XItPiinIyuw5JHaSG6GV9WA=
+
+fs.realpath@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
+ integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8=
+
+fsevents@^1.0.0:
+ version "1.0.17"
+ resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.0.17.tgz#8537f3f12272678765b4fd6528c0f1f66f8f4558"
+ integrity sha1-hTfz8SJyZ4dltP1lKMDx9m+PRVg=
+ dependencies:
+ nan "^2.3.0"
+ node-pre-gyp "^0.6.29"
+
+fstream-ignore@~1.0.5:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/fstream-ignore/-/fstream-ignore-1.0.5.tgz#9c31dae34767018fe1d249b24dada67d092da105"
+ integrity sha1-nDHa40dnAY/h0kmyTa2mfQktoQU=
+ dependencies:
+ fstream "^1.0.0"
+ inherits "2"
+ minimatch "^3.0.0"
+
+fstream@^1.0.0, fstream@^1.0.2, fstream@~1.0.10:
+ version "1.0.10"
+ resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.10.tgz#604e8a92fe26ffd9f6fae30399d4984e1ab22822"
+ integrity sha1-YE6Kkv4m/9n2+uMDmdSYThqyKCI=
+ dependencies:
+ graceful-fs "^4.1.2"
+ inherits "~2.0.0"
+ mkdirp ">=0.5 0"
+ rimraf "2"
+
+gauge@~2.7.1:
+ version "2.7.2"
+ resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.2.tgz#15cecc31b02d05345a5d6b0e171cdb3ad2307774"
+ integrity sha1-Fc7MMbAtBTRaXWsOFxzbOtIwd3Q=
+ dependencies:
+ aproba "^1.0.3"
+ console-control-strings "^1.0.0"
+ has-unicode "^2.0.0"
+ object-assign "^4.1.0"
+ signal-exit "^3.0.0"
+ string-width "^1.0.1"
+ strip-ansi "^3.0.1"
+ supports-color "^0.2.0"
+ wide-align "^1.1.0"
+
+generate-function@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/generate-function/-/generate-function-2.0.0.tgz#6858fe7c0969b7d4e9093337647ac79f60dfbe74"
+ integrity sha1-aFj+fAlpt9TpCTM3ZHrHn2DfvnQ=
+
+generate-object-property@^1.1.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/generate-object-property/-/generate-object-property-1.2.0.tgz#9c0e1c40308ce804f4783618b937fa88f99d50d0"
+ integrity sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=
+ dependencies:
+ is-property "^1.0.0"
+
+get-stdin@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe"
+ integrity sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=
+
+get-stdin@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-5.0.1.tgz#122e161591e21ff4c52530305693f20e6393a398"
+ integrity sha1-Ei4WFZHiH/TFJTAwVpPyDmOTo5g=
+
+getpass@^0.1.1:
+ version "0.1.6"
+ resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.6.tgz#283ffd9fc1256840875311c1b60e8c40187110e6"
+ integrity sha1-KD/9n8ElaECHUxHBtg6MQBhxEOY=
+ dependencies:
+ assert-plus "^1.0.0"
+
+glob-base@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4"
+ integrity sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=
+ dependencies:
+ glob-parent "^2.0.0"
+ is-glob "^2.0.0"
+
+glob-parent@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28"
+ integrity sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=
+ dependencies:
+ is-glob "^2.0.0"
+
+glob@^5.0.5:
+ version "5.0.15"
+ resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1"
+ integrity sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=
+ dependencies:
+ inflight "^1.0.4"
+ inherits "2"
+ minimatch "2 || 3"
+ once "^1.3.0"
+ path-is-absolute "^1.0.0"
+
+glob@^7.0.5:
+ version "7.1.1"
+ resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8"
+ integrity sha1-gFIR3wT6rxxjo2ADBs31reULLsg=
+ dependencies:
+ fs.realpath "^1.0.0"
+ inflight "^1.0.4"
+ inherits "2"
+ minimatch "^3.0.2"
+ once "^1.3.0"
+ path-is-absolute "^1.0.0"
+
+globals@^9.0.0:
+ version "9.14.0"
+ resolved "https://registry.yarnpkg.com/globals/-/globals-9.14.0.tgz#8859936af0038741263053b39d0e76ca241e4034"
+ integrity sha1-iFmTavADh0EmMFOznQ52yiQeQDQ=
+
+graceful-fs@^4.1.2, graceful-fs@^4.1.4:
+ version "4.1.11"
+ resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658"
+ integrity sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=
+
+"graceful-readlink@>= 1.0.0":
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725"
+ integrity sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=
+
+gzip-size-cli@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/gzip-size-cli/-/gzip-size-cli-1.0.0.tgz#97ef47b1600a2ad8f9c31539661eab39ec36caed"
+ integrity sha1-l+9HsWAKKtj5wxU5Zh6rOew2yu0=
+ dependencies:
+ gzip-size "^3.0.0"
+ meow "^3.3.0"
+
+gzip-size@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-3.0.0.tgz#546188e9bdc337f673772f81660464b389dce520"
+ integrity sha1-VGGI6b3DN/Zzdy+BZgRks4nc5SA=
+ dependencies:
+ duplexer "^0.1.1"
+
+har-validator@~2.0.6:
+ version "2.0.6"
+ resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-2.0.6.tgz#cdcbc08188265ad119b6a5a7c8ab70eecfb5d27d"
+ integrity sha1-zcvAgYgmWtEZtqWnyKtw7s+10n0=
+ dependencies:
+ chalk "^1.1.1"
+ commander "^2.9.0"
+ is-my-json-valid "^2.12.4"
+ pinkie-promise "^2.0.0"
+
+has-ansi@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91"
+ integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=
+ dependencies:
+ ansi-regex "^2.0.0"
+
+has-unicode@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9"
+ integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=
+
+hawk@~3.1.3:
+ version "3.1.3"
+ resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4"
+ integrity sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=
+ dependencies:
+ boom "2.x.x"
+ cryptiles "2.x.x"
+ hoek "2.x.x"
+ sntp "1.x.x"
+
+hoek@2.x.x:
+ version "2.16.3"
+ resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed"
+ integrity sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=
+
+home-or-tmp@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8"
+ integrity sha1-42w/LSyufXRqhX440Y1fMqeILbg=
+ dependencies:
+ os-homedir "^1.0.0"
+ os-tmpdir "^1.0.1"
+
+hosted-git-info@^2.1.4:
+ version "2.1.5"
+ resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.1.5.tgz#0ba81d90da2e25ab34a332e6ec77936e1598118b"
+ integrity sha1-C6gdkNouJas0ozLm7HeTbhWYEYs=
+
+http-signature@~1.1.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf"
+ integrity sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=
+ dependencies:
+ assert-plus "^0.2.0"
+ jsprim "^1.2.2"
+ sshpk "^1.7.0"
+
+indent-string@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80"
+ integrity sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=
+ dependencies:
+ repeating "^2.0.0"
+
+inflight@^1.0.4:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
+ integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=
+ dependencies:
+ once "^1.3.0"
+ wrappy "1"
+
+inherits@2, inherits@^2.0.1, inherits@~2.0.0, inherits@~2.0.1:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
+ integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=
+
+ini@~1.3.0:
+ version "1.3.4"
+ resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e"
+ integrity sha1-BTfLedr1m1mhpRff9wbIbsA5Fi4=
+
+invariant@^2.2.0:
+ version "2.2.2"
+ resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.2.tgz#9e1f56ac0acdb6bf303306f338be3b204ae60360"
+ integrity sha1-nh9WrArNtr8wMwbzOL47IErmA2A=
+ dependencies:
+ loose-envify "^1.0.0"
+
+is-arrayish@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
+ integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=
+
+is-binary-path@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898"
+ integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=
+ dependencies:
+ binary-extensions "^1.0.0"
+
+is-buffer@^1.0.2:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.4.tgz#cfc86ccd5dc5a52fa80489111c6920c457e2d98b"
+ integrity sha1-z8hszV3FpS+oBIkRHGkgxFfi2Ys=
+
+is-builtin-module@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe"
+ integrity sha1-VAVy0096wxGfj3bDDLwbHgN6/74=
+ dependencies:
+ builtin-modules "^1.0.0"
+
+is-dotfile@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.2.tgz#2c132383f39199f8edc268ca01b9b007d205cc4d"
+ integrity sha1-LBMjg/ORmfjtwmjKAbmwB9IFzE0=
+
+is-equal-shallow@^0.1.3:
+ version "0.1.3"
+ resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534"
+ integrity sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=
+ dependencies:
+ is-primitive "^2.0.0"
+
+is-extendable@^0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89"
+ integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=
+
+is-extglob@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0"
+ integrity sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=
+
+is-finite@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa"
+ integrity sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=
+ dependencies:
+ number-is-nan "^1.0.0"
+
+is-fullwidth-code-point@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb"
+ integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs=
+ dependencies:
+ number-is-nan "^1.0.0"
+
+is-glob@^2.0.0, is-glob@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863"
+ integrity sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=
+ dependencies:
+ is-extglob "^1.0.0"
+
+is-my-json-valid@^2.12.4:
+ version "2.15.0"
+ resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.15.0.tgz#936edda3ca3c211fd98f3b2d3e08da43f7b2915b"
+ integrity sha1-k27do8o8IR/ZjzstPgjaQ/eykVs=
+ dependencies:
+ generate-function "^2.0.0"
+ generate-object-property "^1.1.0"
+ jsonpointer "^4.0.0"
+ xtend "^4.0.0"
+
+is-number@^2.0.2, is-number@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f"
+ integrity sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=
+ dependencies:
+ kind-of "^3.0.2"
+
+is-posix-bracket@^0.1.0:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4"
+ integrity sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=
+
+is-primitive@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575"
+ integrity sha1-IHurkWOEmcB7Kt8kCkGochADRXU=
+
+is-property@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84"
+ integrity sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=
+
+is-typedarray@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
+ integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=
+
+is-utf8@^0.2.0:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72"
+ integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=
+
+isarray@1.0.0, isarray@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
+ integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=
+
+isobject@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89"
+ integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=
+ dependencies:
+ isarray "1.0.0"
+
+isstream@~0.1.2:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
+ integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=
+
+jodid25519@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/jodid25519/-/jodid25519-1.0.2.tgz#06d4912255093419477d425633606e0e90782967"
+ integrity sha1-BtSRIlUJNBlHfUJWM2BuDpB4KWc=
+ dependencies:
+ jsbn "~0.1.0"
+
+js-tokens@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-2.0.0.tgz#79903f5563ee778cc1162e6dcf1a0027c97f9cb5"
+ integrity sha1-eZA/VWPud4zBFi5tzxoAJ8l/nLU=
+
+jsbn@~0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.0.tgz#650987da0dd74f4ebf5a11377a2aa2d273e97dfd"
+ integrity sha1-ZQmH2g3XT06/WhE3eiqi0nPpff0=
+
+jsesc@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b"
+ integrity sha1-RsP+yMGJKxKwgz25vHYiF226s0s=
+
+json-schema@0.2.3:
+ version "0.2.3"
+ resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13"
+ integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=
+
+json-stringify-safe@~5.0.1:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"
+ integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=
+
+json5@^0.5.0:
+ version "0.5.1"
+ resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821"
+ integrity sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=
+
+jsonpointer@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.0.1.tgz#4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9"
+ integrity sha1-T9kss04OnbPInIYi7PUfm5eMbLk=
+
+jsprim@^1.2.2:
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.3.1.tgz#2a7256f70412a29ee3670aaca625994c4dcff252"
+ integrity sha1-KnJW9wQSop7jZwqspiWZTE3P8lI=
+ dependencies:
+ extsprintf "1.0.2"
+ json-schema "0.2.3"
+ verror "1.3.6"
+
+kind-of@^3.0.2:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.1.0.tgz#475d698a5e49ff5e53d14e3e732429dc8bf4cf47"
+ integrity sha1-R11pil5J/15T0U4+cyQp3Iv0z0c=
+ dependencies:
+ is-buffer "^1.0.2"
+
+load-json-file@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0"
+ integrity sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=
+ dependencies:
+ graceful-fs "^4.1.2"
+ parse-json "^2.2.0"
+ pify "^2.0.0"
+ pinkie-promise "^2.0.0"
+ strip-bom "^2.0.0"
+
+lodash.some@^4.6.0:
+ version "4.6.0"
+ resolved "https://registry.yarnpkg.com/lodash.some/-/lodash.some-4.6.0.tgz#1bb9f314ef6b8baded13b549169b2a945eb68e4d"
+ integrity sha1-G7nzFO9ri63tE7VJFpsqlF62jk0=
+
+lodash@^4.2.0:
+ version "4.17.4"
+ resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae"
+ integrity sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=
+
+loose-envify@^1.0.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.3.0.tgz#6b26248c42f6d4fa4b0d8542f78edfcde35642a8"
+ integrity sha1-ayYkjEL21PpLDYVC947fzeNWQqg=
+ dependencies:
+ js-tokens "^2.0.0"
+
+loud-rejection@^1.0.0:
+ version "1.6.0"
+ resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f"
+ integrity sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=
+ dependencies:
+ currently-unhandled "^0.4.1"
+ signal-exit "^3.0.0"
+
+magic-string@^0.19.0:
+ version "0.19.0"
+ resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.19.0.tgz#198948217254e3e0b93080e01146b7c73b2a06b2"
+ integrity sha1-GYlIIXJU4+C5MIDgEUa3xzsqBrI=
+ dependencies:
+ vlq "^0.2.1"
+
+map-obj@^1.0.0, map-obj@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d"
+ integrity sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=
+
+meow@^3.3.0, meow@^3.6.0:
+ version "3.7.0"
+ resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb"
+ integrity sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=
+ dependencies:
+ camelcase-keys "^2.0.0"
+ decamelize "^1.1.2"
+ loud-rejection "^1.0.0"
+ map-obj "^1.0.1"
+ minimist "^1.1.3"
+ normalize-package-data "^2.3.4"
+ object-assign "^4.0.1"
+ read-pkg-up "^1.0.1"
+ redent "^1.0.0"
+ trim-newlines "^1.0.0"
+
+micromatch@^2.1.5:
+ version "2.3.11"
+ resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565"
+ integrity sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=
+ dependencies:
+ arr-diff "^2.0.0"
+ array-unique "^0.2.1"
+ braces "^1.8.2"
+ expand-brackets "^0.1.4"
+ extglob "^0.3.1"
+ filename-regex "^2.0.0"
+ is-extglob "^1.0.0"
+ is-glob "^2.0.1"
+ kind-of "^3.0.2"
+ normalize-path "^2.0.1"
+ object.omit "^2.0.0"
+ parse-glob "^3.0.4"
+ regex-cache "^0.4.2"
+
+mime-db@~1.25.0:
+ version "1.25.0"
+ resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.25.0.tgz#c18dbd7c73a5dbf6f44a024dc0d165a1e7b1c392"
+ integrity sha1-wY29fHOl2/b0SgJNwNFloeexw5I=
+
+mime-types@^2.1.12, mime-types@~2.1.7:
+ version "2.1.13"
+ resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.13.tgz#e07aaa9c6c6b9a7ca3012c69003ad25a39e92a88"
+ integrity sha1-4HqqnGxrmnyjASxpADrSWjnpKog=
+ dependencies:
+ mime-db "~1.25.0"
+
+"minimatch@2 || 3", minimatch@^3.0.0, minimatch@^3.0.2:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.3.tgz#2a4e4090b96b2db06a9d7df01055a62a77c9b774"
+ integrity sha1-Kk5AkLlrLbBqnX3wEFWmKnfJt3Q=
+ dependencies:
+ brace-expansion "^1.0.0"
+
+minimist@0.0.8:
+ version "0.0.8"
+ resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d"
+ integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=
+
+minimist@^1.1.3, minimist@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
+ integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=
+
+"mkdirp@>=0.5 0", mkdirp@^0.5.1, mkdirp@~0.5.1:
+ version "0.5.1"
+ resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903"
+ integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=
+ dependencies:
+ minimist "0.0.8"
+
+ms@0.7.1:
+ version "0.7.1"
+ resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.1.tgz#9cd13c03adbff25b65effde7ce864ee952017098"
+ integrity sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=
+
+nan@^2.3.0:
+ version "2.5.0"
+ resolved "https://registry.yarnpkg.com/nan/-/nan-2.5.0.tgz#aa8f1e34531d807e9e27755b234b4a6ec0c152a8"
+ integrity sha1-qo8eNFMdgH6eJ3VbI0tKbsDBUqg=
+
+node-pre-gyp@^0.6.29:
+ version "0.6.32"
+ resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.32.tgz#fc452b376e7319b3d255f5f34853ef6fd8fe1fd5"
+ integrity sha1-/EUrN25zGbPSVfXzSFPvb9j+H9U=
+ dependencies:
+ mkdirp "~0.5.1"
+ nopt "~3.0.6"
+ npmlog "^4.0.1"
+ rc "~1.1.6"
+ request "^2.79.0"
+ rimraf "~2.5.4"
+ semver "~5.3.0"
+ tar "~2.2.1"
+ tar-pack "~3.3.0"
+
+nopt@~3.0.6:
+ version "3.0.6"
+ resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9"
+ integrity sha1-xkZdvwirzU2zWTF/eaxopkayj/k=
+ dependencies:
+ abbrev "1"
+
+normalize-package-data@^2.3.2, normalize-package-data@^2.3.4:
+ version "2.3.5"
+ resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.3.5.tgz#8d924f142960e1777e7ffe170543631cc7cb02df"
+ integrity sha1-jZJPFClg4Xd+f/4XBUNjHMfLAt8=
+ dependencies:
+ hosted-git-info "^2.1.4"
+ is-builtin-module "^1.0.0"
+ semver "2 || 3 || 4 || 5"
+ validate-npm-package-license "^3.0.1"
+
+normalize-path@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.0.1.tgz#47886ac1662760d4261b7d979d241709d3ce3f7a"
+ integrity sha1-R4hqwWYnYNQmG32XnSQXCdPOP3o=
+
+npmlog@^4.0.1:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.0.2.tgz#d03950e0e78ce1527ba26d2a7592e9348ac3e75f"
+ integrity sha1-0DlQ4OeM4VJ7om0qdZLpNIrD518=
+ dependencies:
+ are-we-there-yet "~1.1.2"
+ console-control-strings "~1.1.0"
+ gauge "~2.7.1"
+ set-blocking "~2.0.0"
+
+number-is-nan@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d"
+ integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=
+
+oauth-sign@~0.8.1:
+ version "0.8.2"
+ resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43"
+ integrity sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=
+
+object-assign@^4.0.1, object-assign@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.0.tgz#7a3b3d0e98063d43f4c03f2e8ae6cd51a86883a0"
+ integrity sha1-ejs9DpgGPUP0wD8uiubNUahog6A=
+
+object.omit@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa"
+ integrity sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=
+ dependencies:
+ for-own "^0.1.4"
+ is-extendable "^0.1.1"
+
+once@^1.3.0, once@~1.3.3:
+ version "1.3.3"
+ resolved "https://registry.yarnpkg.com/once/-/once-1.3.3.tgz#b2e261557ce4c314ec8304f3fa82663e4297ca20"
+ integrity sha1-suJhVXzkwxTsgwTz+oJmPkKXyiA=
+ dependencies:
+ wrappy "1"
+
+os-homedir@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3"
+ integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M=
+
+os-tmpdir@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
+ integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=
+
+output-file-sync@^1.1.0:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/output-file-sync/-/output-file-sync-1.1.2.tgz#d0a33eefe61a205facb90092e826598d5245ce76"
+ integrity sha1-0KM+7+YaIF+suQCS6CZZjVJFznY=
+ dependencies:
+ graceful-fs "^4.1.4"
+ mkdirp "^0.5.1"
+ object-assign "^4.1.0"
+
+parse-glob@^3.0.4:
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c"
+ integrity sha1-ssN2z7EfNVE7rdFz7wu246OIORw=
+ dependencies:
+ glob-base "^0.3.0"
+ is-dotfile "^1.0.0"
+ is-extglob "^1.0.0"
+ is-glob "^2.0.0"
+
+parse-json@^2.2.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9"
+ integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=
+ dependencies:
+ error-ex "^1.2.0"
+
+path-exists@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b"
+ integrity sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=
+ dependencies:
+ pinkie-promise "^2.0.0"
+
+path-is-absolute@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
+ integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
+
+path-type@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441"
+ integrity sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=
+ dependencies:
+ graceful-fs "^4.1.2"
+ pify "^2.0.0"
+ pinkie-promise "^2.0.0"
+
+pify@^2.0.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
+ integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw=
+
+pinkie-promise@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa"
+ integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o=
+ dependencies:
+ pinkie "^2.0.0"
+
+pinkie@^2.0.0:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870"
+ integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA=
+
+preserve@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b"
+ integrity sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=
+
+pretty-bytes-cli@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/pretty-bytes-cli/-/pretty-bytes-cli-2.0.0.tgz#e705662cffdc9c75291835333bc2f89ad3c033cf"
+ integrity sha1-5wVmLP/cnHUpGDUzO8L4mtPAM88=
+ dependencies:
+ get-stdin "^5.0.1"
+ meow "^3.6.0"
+ pretty-bytes "^4.0.0"
+
+pretty-bytes@^4.0.0:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-4.0.2.tgz#b2bf82e7350d65c6c33aa95aaa5a4f6327f61cd9"
+ integrity sha1-sr+C5zUNZcbDOqlaqlpPYyf2HNk=
+
+private@^0.1.6:
+ version "0.1.6"
+ resolved "https://registry.yarnpkg.com/private/-/private-0.1.6.tgz#55c6a976d0f9bafb9924851350fe47b9b5fbb7c1"
+ integrity sha1-VcapdtD5uvuZJIUTUP5HubX7t8E=
+
+process-nextick-args@~1.0.6:
+ version "1.0.7"
+ resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3"
+ integrity sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=
+
+punycode@^1.4.1:
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e"
+ integrity sha1-wNWmOycYgArY4esPpSachN1BhF4=
+
+qs@~6.3.0:
+ version "6.3.0"
+ resolved "https://registry.yarnpkg.com/qs/-/qs-6.3.0.tgz#f403b264f23bc01228c74131b407f18d5ea5d442"
+ integrity sha1-9AOyZPI7wBIox0ExtAfxjV6l1EI=
+
+randomatic@^1.1.3:
+ version "1.1.6"
+ resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.6.tgz#110dcabff397e9dcff7c0789ccc0a49adf1ec5bb"
+ integrity sha1-EQ3Kv/OX6dz/fAeJzMCkmt8exbs=
+ dependencies:
+ is-number "^2.0.2"
+ kind-of "^3.0.2"
+
+rc@~1.1.6:
+ version "1.1.6"
+ resolved "https://registry.yarnpkg.com/rc/-/rc-1.1.6.tgz#43651b76b6ae53b5c802f1151fa3fc3b059969c9"
+ integrity sha1-Q2UbdrauU7XIAvEVH6P8OwWZack=
+ dependencies:
+ deep-extend "~0.4.0"
+ ini "~1.3.0"
+ minimist "^1.2.0"
+ strip-json-comments "~1.0.4"
+
+read-pkg-up@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02"
+ integrity sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=
+ dependencies:
+ find-up "^1.0.0"
+ read-pkg "^1.0.0"
+
+read-pkg@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28"
+ integrity sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=
+ dependencies:
+ load-json-file "^1.0.0"
+ normalize-package-data "^2.3.2"
+ path-type "^1.0.0"
+
+"readable-stream@^2.0.0 || ^1.1.13", readable-stream@^2.0.2:
+ version "2.2.2"
+ resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.2.2.tgz#a9e6fec3c7dda85f8bb1b3ba7028604556fc825e"
+ integrity sha1-qeb+w8fdqF+LsbO6cChgRVb8gl4=
+ dependencies:
+ buffer-shims "^1.0.0"
+ core-util-is "~1.0.0"
+ inherits "~2.0.1"
+ isarray "~1.0.0"
+ process-nextick-args "~1.0.6"
+ string_decoder "~0.10.x"
+ util-deprecate "~1.0.1"
+
+readable-stream@~2.1.4:
+ version "2.1.5"
+ resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.1.5.tgz#66fa8b720e1438b364681f2ad1a63c618448c9d0"
+ integrity sha1-ZvqLcg4UOLNkaB8q0aY8YYRIydA=
+ dependencies:
+ buffer-shims "^1.0.0"
+ core-util-is "~1.0.0"
+ inherits "~2.0.1"
+ isarray "~1.0.0"
+ process-nextick-args "~1.0.6"
+ string_decoder "~0.10.x"
+ util-deprecate "~1.0.1"
+
+readdirp@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78"
+ integrity sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=
+ dependencies:
+ graceful-fs "^4.1.2"
+ minimatch "^3.0.2"
+ readable-stream "^2.0.2"
+ set-immediate-shim "^1.0.1"
+
+redent@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde"
+ integrity sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=
+ dependencies:
+ indent-string "^2.1.0"
+ strip-indent "^1.0.1"
+
+regenerator-runtime@^0.10.0:
+ version "0.10.1"
+ resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.1.tgz#257f41961ce44558b18f7814af48c17559f9faeb"
+ integrity sha1-JX9BlhzkRVixj3gUr0jBdVn5+us=
+
+regex-cache@^0.4.2:
+ version "0.4.3"
+ resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.3.tgz#9b1a6c35d4d0dfcef5711ae651e8e9d3d7114145"
+ integrity sha1-mxpsNdTQ3871cRrmUejp09cRQUU=
+ dependencies:
+ is-equal-shallow "^0.1.3"
+ is-primitive "^2.0.0"
+
+repeat-element@^1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a"
+ integrity sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=
+
+repeat-string@^1.5.2:
+ version "1.6.1"
+ resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637"
+ integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc=
+
+repeating@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda"
+ integrity sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=
+ dependencies:
+ is-finite "^1.0.0"
+
+request@^2.79.0:
+ version "2.79.0"
+ resolved "https://registry.yarnpkg.com/request/-/request-2.79.0.tgz#4dfe5bf6be8b8cdc37fcf93e04b65577722710de"
+ integrity sha1-Tf5b9r6LjNw3/Pk+BLZVd3InEN4=
+ dependencies:
+ aws-sign2 "~0.6.0"
+ aws4 "^1.2.1"
+ caseless "~0.11.0"
+ combined-stream "~1.0.5"
+ extend "~3.0.0"
+ forever-agent "~0.6.1"
+ form-data "~2.1.1"
+ har-validator "~2.0.6"
+ hawk "~3.1.3"
+ http-signature "~1.1.0"
+ is-typedarray "~1.0.0"
+ isstream "~0.1.2"
+ json-stringify-safe "~5.0.1"
+ mime-types "~2.1.7"
+ oauth-sign "~0.8.1"
+ qs "~6.3.0"
+ stringstream "~0.0.4"
+ tough-cookie "~2.3.0"
+ tunnel-agent "~0.4.1"
+ uuid "^3.0.0"
+
+resolve@1.1.7:
+ version "1.1.7"
+ resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b"
+ integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=
+
+resolve@^1.1.6, resolve@^1.1.7:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.2.0.tgz#9589c3f2f6149d1417a40becc1663db6ec6bc26c"
+ integrity sha1-lYnD8vYUnRQXpAvswWY9tuxrwmw=
+
+rimraf@2, rimraf@~2.5.1, rimraf@~2.5.4:
+ version "2.5.4"
+ resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.5.4.tgz#96800093cbf1a0c86bd95b4625467535c29dfa04"
+ integrity sha1-loAAk8vxoMhr2VtGJUZ1NcKd+gQ=
+ dependencies:
+ glob "^7.0.5"
+
+rollup-plugin-commonjs@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/rollup-plugin-commonjs/-/rollup-plugin-commonjs-7.0.0.tgz#510762d5c423c761cd16d8e8451715b39f0ceb08"
+ integrity sha1-UQdi1cQjx2HNFtjoRRcVs58M6wg=
+ dependencies:
+ acorn "^4.0.1"
+ estree-walker "^0.3.0"
+ magic-string "^0.19.0"
+ resolve "^1.1.7"
+ rollup-pluginutils "^1.5.1"
+
+rollup-plugin-node-resolve@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-2.0.0.tgz#07e0ae94ac002a3ea36e8f33ca121d9f836b1309"
+ integrity sha1-B+CulKwAKj6jbo8zyhIdn4NrEwk=
+ dependencies:
+ browser-resolve "^1.11.0"
+ builtin-modules "^1.1.0"
+ resolve "^1.1.6"
+
+rollup-pluginutils@^1.5.1:
+ version "1.5.2"
+ resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-1.5.2.tgz#1e156e778f94b7255bfa1b3d0178be8f5c552408"
+ integrity sha1-HhVud4+UtyVb+hs9AXi+j1xVJAg=
+ dependencies:
+ estree-walker "^0.2.1"
+ minimatch "^3.0.2"
+
+rollup@^0.41.1:
+ version "0.41.1"
+ resolved "https://registry.yarnpkg.com/rollup/-/rollup-0.41.1.tgz#5be8192c196c35977551e52ec0c98c3f83280525"
+ integrity sha1-W+gZLBlsNZd1UeUuwMmMP4MoBSU=
+ dependencies:
+ source-map-support "^0.4.0"
+
+"semver@2 || 3 || 4 || 5", semver@~5.3.0:
+ version "5.3.0"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f"
+ integrity sha1-myzl094C0XxgEq0yaqa00M9U+U8=
+
+set-blocking@~2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
+ integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc=
+
+set-immediate-shim@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61"
+ integrity sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=
+
+signal-exit@^3.0.0:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d"
+ integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=
+
+slash@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55"
+ integrity sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=
+
+sntp@1.x.x:
+ version "1.0.9"
+ resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198"
+ integrity sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=
+ dependencies:
+ hoek "2.x.x"
+
+source-map-support@^0.4.0, source-map-support@^0.4.2:
+ version "0.4.8"
+ resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.8.tgz#4871918d8a3af07289182e974e32844327b2e98b"
+ integrity sha1-SHGRjYo68HKJGC6XTjKEQyey6Ys=
+ dependencies:
+ source-map "^0.5.3"
+
+source-map@^0.5.0, source-map@^0.5.3:
+ version "0.5.6"
+ resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412"
+ integrity sha1-dc449SvwczxafwwRjYEzSiu19BI=
+
+spdx-correct@~1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-1.0.2.tgz#4b3073d933ff51f3912f03ac5519498a4150db40"
+ integrity sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=
+ dependencies:
+ spdx-license-ids "^1.0.2"
+
+spdx-expression-parse@~1.0.0:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz#9bdf2f20e1f40ed447fbe273266191fced51626c"
+ integrity sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=
+
+spdx-license-ids@^1.0.2:
+ version "1.2.2"
+ resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz#c9df7a3424594ade6bd11900d596696dc06bac57"
+ integrity sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=
+
+sshpk@^1.7.0:
+ version "1.10.1"
+ resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.10.1.tgz#30e1a5d329244974a1af61511339d595af6638b0"
+ integrity sha1-MOGl0ykkSXShr2FREznVla9mOLA=
+ dependencies:
+ asn1 "~0.2.3"
+ assert-plus "^1.0.0"
+ dashdash "^1.12.0"
+ getpass "^0.1.1"
+ optionalDependencies:
+ bcrypt-pbkdf "^1.0.0"
+ ecc-jsbn "~0.1.1"
+ jodid25519 "^1.0.0"
+ jsbn "~0.1.0"
+ tweetnacl "~0.14.0"
+
+string-width@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3"
+ integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=
+ dependencies:
+ code-point-at "^1.0.0"
+ is-fullwidth-code-point "^1.0.0"
+ strip-ansi "^3.0.0"
+
+string_decoder@~0.10.x:
+ version "0.10.31"
+ resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94"
+ integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=
+
+stringstream@~0.0.4:
+ version "0.0.5"
+ resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878"
+ integrity sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=
+
+strip-ansi@^3.0.0, strip-ansi@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf"
+ integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=
+ dependencies:
+ ansi-regex "^2.0.0"
+
+strip-bom@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e"
+ integrity sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=
+ dependencies:
+ is-utf8 "^0.2.0"
+
+strip-indent@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2"
+ integrity sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=
+ dependencies:
+ get-stdin "^4.0.1"
+
+strip-json-comments@~1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-1.0.4.tgz#1e15fbcac97d3ee99bf2d73b4c656b082bbafb91"
+ integrity sha1-HhX7ysl9Pumb8tc7TGVrCCu6+5E=
+
+supports-color@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-0.2.0.tgz#d92de2694eb3f67323973d7ae3d8b55b4c22190a"
+ integrity sha1-2S3iaU6z9nMjlz1649i1W0wiGQo=
+
+supports-color@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7"
+ integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=
+
+tar-pack@~3.3.0:
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.3.0.tgz#30931816418f55afc4d21775afdd6720cee45dae"
+ integrity sha1-MJMYFkGPVa/E0hd1r91nIM7kXa4=
+ dependencies:
+ debug "~2.2.0"
+ fstream "~1.0.10"
+ fstream-ignore "~1.0.5"
+ once "~1.3.3"
+ readable-stream "~2.1.4"
+ rimraf "~2.5.1"
+ tar "~2.2.1"
+ uid-number "~0.0.6"
+
+tar@~2.2.1:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1"
+ integrity sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=
+ dependencies:
+ block-stream "*"
+ fstream "^1.0.2"
+ inherits "2"
+
+to-fast-properties@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.2.tgz#f3f5c0c3ba7299a7ef99427e44633257ade43320"
+ integrity sha1-8/XAw7pymafvmUJ+RGMyV63kMyA=
+
+tough-cookie@~2.3.0:
+ version "2.3.2"
+ resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.2.tgz#f081f76e4c85720e6c37a5faced737150d84072a"
+ integrity sha1-8IH3bkyFcg5sN6X6ztc3FQ2EByo=
+ dependencies:
+ punycode "^1.4.1"
+
+trim-newlines@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613"
+ integrity sha1-WIeWa7WCpFA6QetST301ARgVphM=
+
+tunnel-agent@~0.4.1:
+ version "0.4.3"
+ resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.4.3.tgz#6373db76909fe570e08d73583365ed828a74eeeb"
+ integrity sha1-Y3PbdpCf5XDgjXNYM2Xtgop07us=
+
+tweetnacl@^0.14.3, tweetnacl@~0.14.0:
+ version "0.14.5"
+ resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64"
+ integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=
+
+uid-number@~0.0.6:
+ version "0.0.6"
+ resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81"
+ integrity sha1-DqEOgDXo61uOREnwbaHHMGY7qoE=
+
+user-home@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/user-home/-/user-home-1.1.1.tgz#2b5be23a32b63a7c9deb8d0f28d485724a3df190"
+ integrity sha1-K1viOjK2Onyd640PKNSFcko98ZA=
+
+util-deprecate@~1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
+ integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=
+
+uuid@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.0.1.tgz#6544bba2dfda8c1cf17e629a3a305e2bb1fee6c1"
+ integrity sha1-ZUS7ot/ajBzxfmKaOjBeK7H+5sE=
+
+v8flags@^2.0.10:
+ version "2.0.11"
+ resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-2.0.11.tgz#bca8f30f0d6d60612cc2c00641e6962d42ae6881"
+ integrity sha1-vKjzDw1tYGEswsAGQeaWLUKuaIE=
+ dependencies:
+ user-home "^1.1.1"
+
+validate-npm-package-license@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz#2804babe712ad3379459acfbe24746ab2c303fbc"
+ integrity sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=
+ dependencies:
+ spdx-correct "~1.0.0"
+ spdx-expression-parse "~1.0.0"
+
+verror@1.3.6:
+ version "1.3.6"
+ resolved "https://registry.yarnpkg.com/verror/-/verror-1.3.6.tgz#cff5df12946d297d2baaefaa2689e25be01c005c"
+ integrity sha1-z/XfEpRtKX0rqu+qJoniW+AcAFw=
+ dependencies:
+ extsprintf "1.0.2"
+
+vlq@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/vlq/-/vlq-0.2.1.tgz#14439d711891e682535467f8587c5630e4222a6c"
+ integrity sha1-FEOdcRiR5oJTVGf4WHxWMOQiKmw=
+
+wide-align@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.0.tgz#40edde802a71fea1f070da3e62dcda2e7add96ad"
+ integrity sha1-QO3egCpx/qHwcNo+YtzaLnrdlq0=
+ dependencies:
+ string-width "^1.0.1"
+
+wrappy@1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
+ integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
+
+xtend@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af"
+ integrity sha1-pcbVMr5lbiPbgg77lDofBJmNY68=
diff --git a/date-fns/examples/typescript/README.md b/date-fns/examples/typescript/README.md
new file mode 100644
index 0000000..98c5ad7
--- /dev/null
+++ b/date-fns/examples/typescript/README.md
@@ -0,0 +1,14 @@
+# Usage With TypeScript
+
+See [example.ts](./example.ts), [fp.ts](./fp.ts) and [misc.ts](./misc.ts) for source code examples.
+
+See [package.json scripts](./package.json) for CLI usage
+
+## Build Example
+
+```sh
+yarn
+yarn run build
+```
+
+See ./dist for output.
diff --git a/date-fns/examples/typescript/constants.ts b/date-fns/examples/typescript/constants.ts
new file mode 100644
index 0000000..832c131
--- /dev/null
+++ b/date-fns/examples/typescript/constants.ts
@@ -0,0 +1,9 @@
+import { maxTime as rootMaxTime, minTime as rootMinTime } from 'date-fns'
+import { minTime } from 'date-fns/constants'
+import { minTime as fpMinTime } from 'date-fns/fp'
+
+console.log(
+ rootMaxTime === 8640000000000000 &&
+ rootMinTime === minTime &&
+ minTime === fpMinTime
+)
diff --git a/date-fns/examples/typescript/example.ts b/date-fns/examples/typescript/example.ts
new file mode 100644
index 0000000..ed80190
--- /dev/null
+++ b/date-fns/examples/typescript/example.ts
@@ -0,0 +1,7 @@
+import { format } from 'date-fns'
+import { eo } from 'date-fns/locale'
+
+const result = format(new Date(2017, 0, 25, 21, 28, 15), 'eeee, dd MMMM HH:mm:ss', {
+ locale: eo
+})
+console.log(result === 'merkredo, 25 januaro 21:28:15')
diff --git a/date-fns/examples/typescript/fp.ts b/date-fns/examples/typescript/fp.ts
new file mode 100644
index 0000000..79d6311
--- /dev/null
+++ b/date-fns/examples/typescript/fp.ts
@@ -0,0 +1,17 @@
+import { addYears, formatWithOptions } from 'date-fns/fp'
+import { eo } from 'date-fns/locale'
+
+const addFiveYears = addYears(5)
+const dateToString = formatWithOptions({ locale: eo }, 'd MMMM yyyy')
+
+const dates = [
+ new Date(2017, 0 /* Jan */, 1),
+ new Date(2017, 1 /* Feb */, 11),
+ new Date(2017, 6 /* Jul */, 2)
+]
+
+const formattedDates = dates
+ .map(date => dateToString(addFiveYears(date)))
+ .join(', ')
+
+console.log(formattedDates === '1 januaro 2022, 11 februaro 2022, 2 julio 2022')
diff --git a/date-fns/examples/typescript/misc.ts b/date-fns/examples/typescript/misc.ts
new file mode 100644
index 0000000..2f6cec4
--- /dev/null
+++ b/date-fns/examples/typescript/misc.ts
@@ -0,0 +1,7 @@
+import format from 'date-fns/format'
+import * as dateFns from 'date-fns'
+
+const date = dateFns.addDays(new Date(2017, 0, 25, 21, 28, 15), 1)
+
+const result = format(date, 'dd.MM.yyyy HH:mm:ss')
+console.log(result === '26.01.2017 21:28:15')
diff --git a/date-fns/examples/typescript/package.json b/date-fns/examples/typescript/package.json
new file mode 100644
index 0000000..9a23e62
--- /dev/null
+++ b/date-fns/examples/typescript/package.json
@@ -0,0 +1,23 @@
+{
+ "name": "date-fns-example-typescript",
+ "version": "0.1.0",
+ "description": "Example of date-fns usage with TypeScript",
+ "main": "example.ts",
+ "author": "Sasha Koss <koss@nocorp.me>",
+ "license": "MIT",
+ "dependencies": {
+ "typescript": "3",
+ "webpack": "^4.44.1"
+ },
+ "scripts": {
+ "build": "yarn build-date-fns && yarn build-typescript && yarn build-webpack",
+ "build-date-fns": "env PACKAGE_OUTPUT_PATH=\"$(pwd)/node_modules/date-fns\" ../../scripts/build/package.sh",
+ "build-typescript": "tsc --outDir dist example.ts fp.ts misc.ts constants.ts --lib es2015,dom --esModuleInterop",
+ "build-webpack": "webpack example=./dist/example.js fp=./dist/fp misc=./dist/misc.js constants=./dist/constants.js --mode production --output-path dist --output-filename [name].bundle.js",
+ "test": "yarn test-example && yarn test-fp && yarn test-misc && yarn test-constants",
+ "test-example": "test $(env TZ=UTC node ./dist/example.bundle.js) = true",
+ "test-fp": "test $(env TZ=UTC node ./dist/fp.bundle.js) = true",
+ "test-misc": "test $(env TZ=UTC node ./dist/misc.bundle.js) = true",
+ "test-constants": "test $(node ./dist/constants.bundle.js) = true"
+ }
+}
diff --git a/date-fns/examples/typescript/yarn.lock b/date-fns/examples/typescript/yarn.lock
new file mode 100644
index 0000000..bc4e825
--- /dev/null
+++ b/date-fns/examples/typescript/yarn.lock
@@ -0,0 +1,2634 @@
+# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
+# yarn lockfile v1
+
+
+"@webassemblyjs/ast@1.9.0":
+ version "1.9.0"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.9.0.tgz#bd850604b4042459a5a41cd7d338cbed695ed964"
+ integrity sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==
+ dependencies:
+ "@webassemblyjs/helper-module-context" "1.9.0"
+ "@webassemblyjs/helper-wasm-bytecode" "1.9.0"
+ "@webassemblyjs/wast-parser" "1.9.0"
+
+"@webassemblyjs/floating-point-hex-parser@1.9.0":
+ version "1.9.0"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz#3c3d3b271bddfc84deb00f71344438311d52ffb4"
+ integrity sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==
+
+"@webassemblyjs/helper-api-error@1.9.0":
+ version "1.9.0"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz#203f676e333b96c9da2eeab3ccef33c45928b6a2"
+ integrity sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==
+
+"@webassemblyjs/helper-buffer@1.9.0":
+ version "1.9.0"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz#a1442d269c5feb23fcbc9ef759dac3547f29de00"
+ integrity sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==
+
+"@webassemblyjs/helper-code-frame@1.9.0":
+ version "1.9.0"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz#647f8892cd2043a82ac0c8c5e75c36f1d9159f27"
+ integrity sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==
+ dependencies:
+ "@webassemblyjs/wast-printer" "1.9.0"
+
+"@webassemblyjs/helper-fsm@1.9.0":
+ version "1.9.0"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz#c05256b71244214671f4b08ec108ad63b70eddb8"
+ integrity sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==
+
+"@webassemblyjs/helper-module-context@1.9.0":
+ version "1.9.0"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz#25d8884b76839871a08a6c6f806c3979ef712f07"
+ integrity sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==
+ dependencies:
+ "@webassemblyjs/ast" "1.9.0"
+
+"@webassemblyjs/helper-wasm-bytecode@1.9.0":
+ version "1.9.0"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz#4fed8beac9b8c14f8c58b70d124d549dd1fe5790"
+ integrity sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==
+
+"@webassemblyjs/helper-wasm-section@1.9.0":
+ version "1.9.0"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz#5a4138d5a6292ba18b04c5ae49717e4167965346"
+ integrity sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==
+ dependencies:
+ "@webassemblyjs/ast" "1.9.0"
+ "@webassemblyjs/helper-buffer" "1.9.0"
+ "@webassemblyjs/helper-wasm-bytecode" "1.9.0"
+ "@webassemblyjs/wasm-gen" "1.9.0"
+
+"@webassemblyjs/ieee754@1.9.0":
+ version "1.9.0"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz#15c7a0fbaae83fb26143bbacf6d6df1702ad39e4"
+ integrity sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==
+ dependencies:
+ "@xtuc/ieee754" "^1.2.0"
+
+"@webassemblyjs/leb128@1.9.0":
+ version "1.9.0"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.9.0.tgz#f19ca0b76a6dc55623a09cffa769e838fa1e1c95"
+ integrity sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==
+ dependencies:
+ "@xtuc/long" "4.2.2"
+
+"@webassemblyjs/utf8@1.9.0":
+ version "1.9.0"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.9.0.tgz#04d33b636f78e6a6813227e82402f7637b6229ab"
+ integrity sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==
+
+"@webassemblyjs/wasm-edit@1.9.0":
+ version "1.9.0"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz#3fe6d79d3f0f922183aa86002c42dd256cfee9cf"
+ integrity sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==
+ dependencies:
+ "@webassemblyjs/ast" "1.9.0"
+ "@webassemblyjs/helper-buffer" "1.9.0"
+ "@webassemblyjs/helper-wasm-bytecode" "1.9.0"
+ "@webassemblyjs/helper-wasm-section" "1.9.0"
+ "@webassemblyjs/wasm-gen" "1.9.0"
+ "@webassemblyjs/wasm-opt" "1.9.0"
+ "@webassemblyjs/wasm-parser" "1.9.0"
+ "@webassemblyjs/wast-printer" "1.9.0"
+
+"@webassemblyjs/wasm-gen@1.9.0":
+ version "1.9.0"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz#50bc70ec68ded8e2763b01a1418bf43491a7a49c"
+ integrity sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==
+ dependencies:
+ "@webassemblyjs/ast" "1.9.0"
+ "@webassemblyjs/helper-wasm-bytecode" "1.9.0"
+ "@webassemblyjs/ieee754" "1.9.0"
+ "@webassemblyjs/leb128" "1.9.0"
+ "@webassemblyjs/utf8" "1.9.0"
+
+"@webassemblyjs/wasm-opt@1.9.0":
+ version "1.9.0"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz#2211181e5b31326443cc8112eb9f0b9028721a61"
+ integrity sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==
+ dependencies:
+ "@webassemblyjs/ast" "1.9.0"
+ "@webassemblyjs/helper-buffer" "1.9.0"
+ "@webassemblyjs/wasm-gen" "1.9.0"
+ "@webassemblyjs/wasm-parser" "1.9.0"
+
+"@webassemblyjs/wasm-parser@1.9.0":
+ version "1.9.0"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz#9d48e44826df4a6598294aa6c87469d642fff65e"
+ integrity sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==
+ dependencies:
+ "@webassemblyjs/ast" "1.9.0"
+ "@webassemblyjs/helper-api-error" "1.9.0"
+ "@webassemblyjs/helper-wasm-bytecode" "1.9.0"
+ "@webassemblyjs/ieee754" "1.9.0"
+ "@webassemblyjs/leb128" "1.9.0"
+ "@webassemblyjs/utf8" "1.9.0"
+
+"@webassemblyjs/wast-parser@1.9.0":
+ version "1.9.0"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz#3031115d79ac5bd261556cecc3fa90a3ef451914"
+ integrity sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==
+ dependencies:
+ "@webassemblyjs/ast" "1.9.0"
+ "@webassemblyjs/floating-point-hex-parser" "1.9.0"
+ "@webassemblyjs/helper-api-error" "1.9.0"
+ "@webassemblyjs/helper-code-frame" "1.9.0"
+ "@webassemblyjs/helper-fsm" "1.9.0"
+ "@xtuc/long" "4.2.2"
+
+"@webassemblyjs/wast-printer@1.9.0":
+ version "1.9.0"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz#4935d54c85fef637b00ce9f52377451d00d47899"
+ integrity sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==
+ dependencies:
+ "@webassemblyjs/ast" "1.9.0"
+ "@webassemblyjs/wast-parser" "1.9.0"
+ "@xtuc/long" "4.2.2"
+
+"@xtuc/ieee754@^1.2.0":
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790"
+ integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==
+
+"@xtuc/long@4.2.2":
+ version "4.2.2"
+ resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d"
+ integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==
+
+abbrev@1:
+ version "1.0.9"
+ resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.0.9.tgz#91b4792588a7738c25f35dd6f63752a2f8776135"
+ integrity sha1-kbR5JYinc4wl813W9jdSovh3YTU=
+
+acorn@^6.4.1:
+ version "6.4.1"
+ resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.1.tgz#531e58ba3f51b9dacb9a6646ca4debf5b14ca474"
+ integrity sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==
+
+ajv-errors@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d"
+ integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==
+
+ajv-keywords@^3.1.0, ajv-keywords@^3.4.1:
+ version "3.5.2"
+ resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d"
+ integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==
+
+ajv@^6.1.0, ajv@^6.10.2:
+ version "6.12.4"
+ resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.4.tgz#0614facc4522127fa713445c6bfd3ebd376e2234"
+ integrity sha512-eienB2c9qVQs2KWexhkrdMLVDoIQCz5KSeLxwg9Lzk4DOfBtIK9PQwwufcsn1jjGuf9WZmqPMbGxOzfcuphJCQ==
+ dependencies:
+ fast-deep-equal "^3.1.1"
+ fast-json-stable-stringify "^2.0.0"
+ json-schema-traverse "^0.4.1"
+ uri-js "^4.2.2"
+
+ansi-regex@^2.0.0:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df"
+ integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8=
+
+anymatch@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb"
+ integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==
+ dependencies:
+ micromatch "^3.1.4"
+ normalize-path "^2.1.1"
+
+anymatch@~3.1.1:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142"
+ integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==
+ dependencies:
+ normalize-path "^3.0.0"
+ picomatch "^2.0.4"
+
+aproba@^1.0.3:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.0.4.tgz#2713680775e7614c8ba186c065d4e2e52d1072c0"
+ integrity sha1-JxNoB3XnYUyLoYbAZdTi5S0QcsA=
+
+aproba@^1.1.1:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a"
+ integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==
+
+are-we-there-yet@~1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.2.tgz#80e470e95a084794fe1899262c5667c6e88de1b3"
+ integrity sha1-gORw6VoIR5T+GJkmLFZnxuiN4bM=
+ dependencies:
+ delegates "^1.0.0"
+ readable-stream "^2.0.0 || ^1.1.13"
+
+arr-diff@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520"
+ integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=
+
+arr-flatten@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1"
+ integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==
+
+arr-union@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4"
+ integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=
+
+array-unique@^0.3.2:
+ version "0.3.2"
+ resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428"
+ integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=
+
+asn1.js@^4.0.0:
+ version "4.9.1"
+ resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.9.1.tgz#48ba240b45a9280e94748990ba597d216617fd40"
+ integrity sha1-SLokC0WpKA6UdImQull9IWYX/UA=
+ dependencies:
+ bn.js "^4.0.0"
+ inherits "^2.0.1"
+ minimalistic-assert "^1.0.0"
+
+assert@^1.1.1:
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/assert/-/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91"
+ integrity sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=
+ dependencies:
+ util "0.10.3"
+
+assign-symbols@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367"
+ integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=
+
+async-each@^1.0.1:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf"
+ integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==
+
+atob@^2.1.1:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9"
+ integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==
+
+balanced-match@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
+ integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c=
+
+base64-js@^1.0.2:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.2.0.tgz#a39992d723584811982be5e290bb6a53d86700f1"
+ integrity sha1-o5mS1yNYSBGYK+XikLtqU9hnAPE=
+
+base@^0.11.1:
+ version "0.11.2"
+ resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f"
+ integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==
+ dependencies:
+ cache-base "^1.0.1"
+ class-utils "^0.3.5"
+ component-emitter "^1.2.1"
+ define-property "^1.0.0"
+ isobject "^3.0.1"
+ mixin-deep "^1.2.0"
+ pascalcase "^0.1.1"
+
+big.js@^5.2.2:
+ version "5.2.2"
+ resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328"
+ integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==
+
+binary-extensions@^1.0.0:
+ version "1.8.0"
+ resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.8.0.tgz#48ec8d16df4377eae5fa5884682480af4d95c774"
+ integrity sha1-SOyNFt9Dd+rl+liEaCSAr02Vx3Q=
+
+binary-extensions@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.1.0.tgz#30fa40c9e7fe07dbc895678cd287024dea241dd9"
+ integrity sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==
+
+bluebird@^3.5.5:
+ version "3.7.2"
+ resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f"
+ integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==
+
+bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0:
+ version "4.11.6"
+ resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.6.tgz#53344adb14617a13f6e8dd2ce28905d1c0ba3215"
+ integrity sha1-UzRK2xRhehP26N0s4okF0cC6MhU=
+
+brace-expansion@^1.1.7:
+ version "1.1.11"
+ resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
+ integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
+ dependencies:
+ balanced-match "^1.0.0"
+ concat-map "0.0.1"
+
+braces@^2.3.1, braces@^2.3.2:
+ version "2.3.2"
+ resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729"
+ integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==
+ dependencies:
+ arr-flatten "^1.1.0"
+ array-unique "^0.3.2"
+ extend-shallow "^2.0.1"
+ fill-range "^4.0.0"
+ isobject "^3.0.1"
+ repeat-element "^1.1.2"
+ snapdragon "^0.8.1"
+ snapdragon-node "^2.0.1"
+ split-string "^3.0.2"
+ to-regex "^3.0.1"
+
+braces@~3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107"
+ integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==
+ dependencies:
+ fill-range "^7.0.1"
+
+brorand@^1.0.1:
+ version "1.0.7"
+ resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.0.7.tgz#6677fa5e4901bdbf9c9ec2a748e28dca407a9bfc"
+ integrity sha1-Znf6XkkBvb+cnsKnSOKNykB6m/w=
+
+browserify-aes@^1.0.0, browserify-aes@^1.0.4:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.0.6.tgz#5e7725dbdef1fd5930d4ebab48567ce451c48a0a"
+ integrity sha1-Xncl297x/Vkw1OurSFZ85FHEigo=
+ dependencies:
+ buffer-xor "^1.0.2"
+ cipher-base "^1.0.0"
+ create-hash "^1.1.0"
+ evp_bytestokey "^1.0.0"
+ inherits "^2.0.1"
+
+browserify-cipher@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.0.tgz#9988244874bf5ed4e28da95666dcd66ac8fc363a"
+ integrity sha1-mYgkSHS/XtTijalWZtzWasj8Njo=
+ dependencies:
+ browserify-aes "^1.0.4"
+ browserify-des "^1.0.0"
+ evp_bytestokey "^1.0.0"
+
+browserify-des@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.0.tgz#daa277717470922ed2fe18594118a175439721dd"
+ integrity sha1-2qJ3cXRwki7S/hhZQRihdUOXId0=
+ dependencies:
+ cipher-base "^1.0.1"
+ des.js "^1.0.0"
+ inherits "^2.0.1"
+
+browserify-rsa@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524"
+ integrity sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=
+ dependencies:
+ bn.js "^4.1.0"
+ randombytes "^2.0.1"
+
+browserify-sign@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.0.0.tgz#10773910c3c206d5420a46aad8694f820b85968f"
+ integrity sha1-EHc5EMPCBtVCCkaq2GlPgguFlo8=
+ dependencies:
+ bn.js "^4.1.1"
+ browserify-rsa "^4.0.0"
+ create-hash "^1.1.0"
+ create-hmac "^1.1.2"
+ elliptic "^6.0.0"
+ inherits "^2.0.1"
+ parse-asn1 "^5.0.0"
+
+browserify-zlib@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f"
+ integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==
+ dependencies:
+ pako "~1.0.5"
+
+buffer-from@^1.0.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef"
+ integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==
+
+buffer-shims@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/buffer-shims/-/buffer-shims-1.0.0.tgz#9978ce317388c649ad8793028c3477ef044a8b51"
+ integrity sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=
+
+buffer-xor@^1.0.2:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9"
+ integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=
+
+buffer@^4.3.0:
+ version "4.9.1"
+ resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298"
+ integrity sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=
+ dependencies:
+ base64-js "^1.0.2"
+ ieee754 "^1.1.4"
+ isarray "^1.0.0"
+
+builtin-status-codes@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8"
+ integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=
+
+cacache@^12.0.2:
+ version "12.0.4"
+ resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.4.tgz#668bcbd105aeb5f1d92fe25570ec9525c8faa40c"
+ integrity sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==
+ dependencies:
+ bluebird "^3.5.5"
+ chownr "^1.1.1"
+ figgy-pudding "^3.5.1"
+ glob "^7.1.4"
+ graceful-fs "^4.1.15"
+ infer-owner "^1.0.3"
+ lru-cache "^5.1.1"
+ mississippi "^3.0.0"
+ mkdirp "^0.5.1"
+ move-concurrently "^1.0.1"
+ promise-inflight "^1.0.1"
+ rimraf "^2.6.3"
+ ssri "^6.0.1"
+ unique-filename "^1.1.1"
+ y18n "^4.0.0"
+
+cache-base@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2"
+ integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==
+ dependencies:
+ collection-visit "^1.0.0"
+ component-emitter "^1.2.1"
+ get-value "^2.0.6"
+ has-value "^1.0.0"
+ isobject "^3.0.1"
+ set-value "^2.0.0"
+ to-object-path "^0.3.0"
+ union-value "^1.0.0"
+ unset-value "^1.0.0"
+
+chokidar@^2.1.8:
+ version "2.1.8"
+ resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917"
+ integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==
+ dependencies:
+ anymatch "^2.0.0"
+ async-each "^1.0.1"
+ braces "^2.3.2"
+ glob-parent "^3.1.0"
+ inherits "^2.0.3"
+ is-binary-path "^1.0.0"
+ is-glob "^4.0.0"
+ normalize-path "^3.0.0"
+ path-is-absolute "^1.0.0"
+ readdirp "^2.2.1"
+ upath "^1.1.1"
+ optionalDependencies:
+ fsevents "^1.2.7"
+
+chokidar@^3.4.1:
+ version "3.4.2"
+ resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.4.2.tgz#38dc8e658dec3809741eb3ef7bb0a47fe424232d"
+ integrity sha512-IZHaDeBeI+sZJRX7lGcXsdzgvZqKv6sECqsbErJA4mHWfpRrD8B97kSFN4cQz6nGBGiuFia1MKR4d6c1o8Cv7A==
+ dependencies:
+ anymatch "~3.1.1"
+ braces "~3.0.2"
+ glob-parent "~5.1.0"
+ is-binary-path "~2.1.0"
+ is-glob "~4.0.1"
+ normalize-path "~3.0.0"
+ readdirp "~3.4.0"
+ optionalDependencies:
+ fsevents "~2.1.2"
+
+chownr@^1.1.1:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.2.tgz#a18f1e0b269c8a6a5d3c86eb298beb14c3dd7bf6"
+ integrity sha512-GkfeAQh+QNy3wquu9oIZr6SS5x7wGdSgNQvD10X3r+AZr1Oys22HW8kAmDMvNg2+Dm0TeGaEuO8gFwdBXxwO8A==
+
+chrome-trace-event@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz#234090ee97c7d4ad1a2c4beae27505deffc608a4"
+ integrity sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==
+ dependencies:
+ tslib "^1.9.0"
+
+cipher-base@^1.0.0, cipher-base@^1.0.1:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.3.tgz#eeabf194419ce900da3018c207d212f2a6df0a07"
+ integrity sha1-7qvxlEGc6QDaMBjCB9IS8qbfCgc=
+ dependencies:
+ inherits "^2.0.1"
+
+class-utils@^0.3.5:
+ version "0.3.6"
+ resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463"
+ integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==
+ dependencies:
+ arr-union "^3.1.0"
+ define-property "^0.2.5"
+ isobject "^3.0.0"
+ static-extend "^0.1.1"
+
+code-point-at@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77"
+ integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=
+
+collection-visit@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0"
+ integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=
+ dependencies:
+ map-visit "^1.0.0"
+ object-visit "^1.0.0"
+
+commander@^2.20.0:
+ version "2.20.3"
+ resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33"
+ integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==
+
+commondir@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b"
+ integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=
+
+component-emitter@^1.2.1:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0"
+ integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==
+
+concat-map@0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
+ integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
+
+concat-stream@^1.5.0:
+ version "1.6.2"
+ resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34"
+ integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==
+ dependencies:
+ buffer-from "^1.0.0"
+ inherits "^2.0.3"
+ readable-stream "^2.2.2"
+ typedarray "^0.0.6"
+
+console-browserify@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10"
+ integrity sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=
+ dependencies:
+ date-now "^0.1.4"
+
+console-control-strings@^1.0.0, console-control-strings@~1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e"
+ integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=
+
+constants-browserify@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75"
+ integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=
+
+copy-concurrently@^1.0.0:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0"
+ integrity sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==
+ dependencies:
+ aproba "^1.1.1"
+ fs-write-stream-atomic "^1.0.8"
+ iferr "^0.1.5"
+ mkdirp "^0.5.1"
+ rimraf "^2.5.4"
+ run-queue "^1.0.0"
+
+copy-descriptor@^0.1.0:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d"
+ integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=
+
+core-util-is@~1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
+ integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=
+
+create-ecdh@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.0.tgz#888c723596cdf7612f6498233eebd7a35301737d"
+ integrity sha1-iIxyNZbN92EvZJgjPuvXo1MBc30=
+ dependencies:
+ bn.js "^4.1.0"
+ elliptic "^6.0.0"
+
+create-hash@^1.1.0, create-hash@^1.1.1:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.1.2.tgz#51210062d7bb7479f6c65bb41a92208b1d61abad"
+ integrity sha1-USEAYte7dHn2xlu0GpIgix1hq60=
+ dependencies:
+ cipher-base "^1.0.1"
+ inherits "^2.0.1"
+ ripemd160 "^1.0.0"
+ sha.js "^2.3.6"
+
+create-hmac@^1.1.0, create-hmac@^1.1.2:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.4.tgz#d3fb4ba253eb8b3f56e39ea2fbcb8af747bd3170"
+ integrity sha1-0/tLolPriz9W456i+8uK90e9MXA=
+ dependencies:
+ create-hash "^1.1.0"
+ inherits "^2.0.1"
+
+crypto-browserify@^3.11.0:
+ version "3.11.0"
+ resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.11.0.tgz#3652a0906ab9b2a7e0c3ce66a408e957a2485522"
+ integrity sha1-NlKgkGq5sqfgw85mpAjpV6JIVSI=
+ dependencies:
+ browserify-cipher "^1.0.0"
+ browserify-sign "^4.0.0"
+ create-ecdh "^4.0.0"
+ create-hash "^1.1.0"
+ create-hmac "^1.1.0"
+ diffie-hellman "^5.0.0"
+ inherits "^2.0.1"
+ pbkdf2 "^3.0.3"
+ public-encrypt "^4.0.0"
+ randombytes "^2.0.0"
+
+cyclist@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9"
+ integrity sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=
+
+date-now@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b"
+ integrity sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=
+
+debug@^2.2.0, debug@^2.3.3:
+ version "2.6.9"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
+ integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
+ dependencies:
+ ms "2.0.0"
+
+debug@^3.2.6:
+ version "3.2.6"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b"
+ integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==
+ dependencies:
+ ms "^2.1.1"
+
+decode-uri-component@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545"
+ integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=
+
+deep-extend@^0.6.0:
+ version "0.6.0"
+ resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac"
+ integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==
+
+define-property@^0.2.5:
+ version "0.2.5"
+ resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116"
+ integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=
+ dependencies:
+ is-descriptor "^0.1.0"
+
+define-property@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6"
+ integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY=
+ dependencies:
+ is-descriptor "^1.0.0"
+
+define-property@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d"
+ integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==
+ dependencies:
+ is-descriptor "^1.0.2"
+ isobject "^3.0.1"
+
+delegates@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a"
+ integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=
+
+des.js@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc"
+ integrity sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=
+ dependencies:
+ inherits "^2.0.1"
+ minimalistic-assert "^1.0.0"
+
+detect-libc@^1.0.2:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b"
+ integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=
+
+diffie-hellman@^5.0.0:
+ version "5.0.2"
+ resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.2.tgz#b5835739270cfe26acf632099fded2a07f209e5e"
+ integrity sha1-tYNXOScM/ias9jIJn97SoH8gnl4=
+ dependencies:
+ bn.js "^4.1.0"
+ miller-rabin "^4.0.0"
+ randombytes "^2.0.0"
+
+domain-browser@^1.1.1:
+ version "1.1.7"
+ resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.1.7.tgz#867aa4b093faa05f1de08c06f4d7b21fdf8698bc"
+ integrity sha1-hnqksJP6oF8d4IwG9NeyH9+GmLw=
+
+duplexify@^3.4.2, duplexify@^3.6.0:
+ version "3.7.1"
+ resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309"
+ integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==
+ dependencies:
+ end-of-stream "^1.0.0"
+ inherits "^2.0.1"
+ readable-stream "^2.0.0"
+ stream-shift "^1.0.0"
+
+elliptic@^6.0.0:
+ version "6.3.3"
+ resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.3.3.tgz#5482d9646d54bcb89fd7d994fc9e2e9568876e3f"
+ integrity sha1-VILZZG1UvLif19mU/J4ulWiHbj8=
+ dependencies:
+ bn.js "^4.4.0"
+ brorand "^1.0.1"
+ hash.js "^1.0.0"
+ inherits "^2.0.1"
+
+emojis-list@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78"
+ integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==
+
+end-of-stream@^1.0.0, end-of-stream@^1.1.0:
+ version "1.4.4"
+ resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0"
+ integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==
+ dependencies:
+ once "^1.4.0"
+
+enhanced-resolve@^4.3.0:
+ version "4.3.0"
+ resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.3.0.tgz#3b806f3bfafc1ec7de69551ef93cca46c1704126"
+ integrity sha512-3e87LvavsdxyoCfGusJnrZ5G8SLPOFeHSNpZI/ATL9a5leXo2k0w6MKnbqhdBad9qTobSfB20Ld7UmgoNbAZkQ==
+ dependencies:
+ graceful-fs "^4.1.2"
+ memory-fs "^0.5.0"
+ tapable "^1.0.0"
+
+errno@^0.1.3:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.4.tgz#b896e23a9e5e8ba33871fc996abd3635fc9a1c7d"
+ integrity sha1-uJbiOp5ei6M4cfyZar02NfyaHH0=
+ dependencies:
+ prr "~0.0.0"
+
+errno@~0.1.7:
+ version "0.1.7"
+ resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618"
+ integrity sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==
+ dependencies:
+ prr "~1.0.1"
+
+eslint-scope@^4.0.3:
+ version "4.0.3"
+ resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848"
+ integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==
+ dependencies:
+ esrecurse "^4.1.0"
+ estraverse "^4.1.1"
+
+esrecurse@^4.1.0:
+ version "4.3.0"
+ resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921"
+ integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==
+ dependencies:
+ estraverse "^5.2.0"
+
+estraverse@^4.1.1:
+ version "4.3.0"
+ resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d"
+ integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==
+
+estraverse@^5.2.0:
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880"
+ integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==
+
+events@^3.0.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/events/-/events-3.2.0.tgz#93b87c18f8efcd4202a461aec4dfc0556b639379"
+ integrity sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg==
+
+evp_bytestokey@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.0.tgz#497b66ad9fef65cd7c08a6180824ba1476b66e53"
+ integrity sha1-SXtmrZ/vZc18CKYYCCS6FHa2blM=
+ dependencies:
+ create-hash "^1.1.1"
+
+expand-brackets@^2.1.4:
+ version "2.1.4"
+ resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622"
+ integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI=
+ dependencies:
+ debug "^2.3.3"
+ define-property "^0.2.5"
+ extend-shallow "^2.0.1"
+ posix-character-classes "^0.1.0"
+ regex-not "^1.0.0"
+ snapdragon "^0.8.1"
+ to-regex "^3.0.1"
+
+extend-shallow@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f"
+ integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=
+ dependencies:
+ is-extendable "^0.1.0"
+
+extend-shallow@^3.0.0, extend-shallow@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8"
+ integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=
+ dependencies:
+ assign-symbols "^1.0.0"
+ is-extendable "^1.0.1"
+
+extglob@^2.0.4:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543"
+ integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==
+ dependencies:
+ array-unique "^0.3.2"
+ define-property "^1.0.0"
+ expand-brackets "^2.1.4"
+ extend-shallow "^2.0.1"
+ fragment-cache "^0.2.1"
+ regex-not "^1.0.0"
+ snapdragon "^0.8.1"
+ to-regex "^3.0.1"
+
+fast-deep-equal@^3.1.1:
+ version "3.1.3"
+ resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
+ integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==
+
+fast-json-stable-stringify@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633"
+ integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==
+
+figgy-pudding@^3.5.1:
+ version "3.5.2"
+ resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e"
+ integrity sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==
+
+fill-range@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7"
+ integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=
+ dependencies:
+ extend-shallow "^2.0.1"
+ is-number "^3.0.0"
+ repeat-string "^1.6.1"
+ to-regex-range "^2.1.0"
+
+fill-range@^7.0.1:
+ version "7.0.1"
+ resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40"
+ integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==
+ dependencies:
+ to-regex-range "^5.0.1"
+
+find-cache-dir@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7"
+ integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==
+ dependencies:
+ commondir "^1.0.1"
+ make-dir "^2.0.0"
+ pkg-dir "^3.0.0"
+
+find-up@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73"
+ integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==
+ dependencies:
+ locate-path "^3.0.0"
+
+flush-write-stream@^1.0.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8"
+ integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==
+ dependencies:
+ inherits "^2.0.3"
+ readable-stream "^2.3.6"
+
+for-in@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80"
+ integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=
+
+fragment-cache@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19"
+ integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=
+ dependencies:
+ map-cache "^0.2.2"
+
+from2@^2.1.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af"
+ integrity sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=
+ dependencies:
+ inherits "^2.0.1"
+ readable-stream "^2.0.0"
+
+fs-minipass@^1.2.5:
+ version "1.2.6"
+ resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.6.tgz#2c5cc30ded81282bfe8a0d7c7c1853ddeb102c07"
+ integrity sha512-crhvyXcMejjv3Z5d2Fa9sf5xLYVCF5O1c71QxbVnbLsmYMBEvDAftewesN/HhY03YRoA7zOMxjNGrF5svGaaeQ==
+ dependencies:
+ minipass "^2.2.1"
+
+fs-write-stream-atomic@^1.0.8:
+ version "1.0.10"
+ resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9"
+ integrity sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=
+ dependencies:
+ graceful-fs "^4.1.2"
+ iferr "^0.1.5"
+ imurmurhash "^0.1.4"
+ readable-stream "1 || 2"
+
+fs.realpath@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
+ integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8=
+
+fsevents@^1.2.7:
+ version "1.2.9"
+ resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.9.tgz#3f5ed66583ccd6f400b5a00db6f7e861363e388f"
+ integrity sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw==
+ dependencies:
+ nan "^2.12.1"
+ node-pre-gyp "^0.12.0"
+
+fsevents@~2.1.2:
+ version "2.1.3"
+ resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e"
+ integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==
+
+gauge@~2.7.3:
+ version "2.7.4"
+ resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7"
+ integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=
+ dependencies:
+ aproba "^1.0.3"
+ console-control-strings "^1.0.0"
+ has-unicode "^2.0.0"
+ object-assign "^4.1.0"
+ signal-exit "^3.0.0"
+ string-width "^1.0.1"
+ strip-ansi "^3.0.1"
+ wide-align "^1.1.0"
+
+get-value@^2.0.3, get-value@^2.0.6:
+ version "2.0.6"
+ resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28"
+ integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=
+
+glob-parent@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae"
+ integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=
+ dependencies:
+ is-glob "^3.1.0"
+ path-dirname "^1.0.0"
+
+glob-parent@~5.1.0:
+ version "5.1.1"
+ resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229"
+ integrity sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==
+ dependencies:
+ is-glob "^4.0.1"
+
+glob@^7.1.3:
+ version "7.1.4"
+ resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255"
+ integrity sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==
+ dependencies:
+ fs.realpath "^1.0.0"
+ inflight "^1.0.4"
+ inherits "2"
+ minimatch "^3.0.4"
+ once "^1.3.0"
+ path-is-absolute "^1.0.0"
+
+glob@^7.1.4:
+ version "7.1.6"
+ resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6"
+ integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==
+ dependencies:
+ fs.realpath "^1.0.0"
+ inflight "^1.0.4"
+ inherits "2"
+ minimatch "^3.0.4"
+ once "^1.3.0"
+ path-is-absolute "^1.0.0"
+
+graceful-fs@^4.1.11:
+ version "4.2.2"
+ resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.2.tgz#6f0952605d0140c1cfdb138ed005775b92d67b02"
+ integrity sha512-IItsdsea19BoLC7ELy13q1iJFNmd7ofZH5+X/pJr90/nRoPEX0DJo1dHDbgtYWOhJhcCgMDTOw84RZ72q6lB+Q==
+
+graceful-fs@^4.1.15:
+ version "4.2.4"
+ resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb"
+ integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==
+
+graceful-fs@^4.1.2:
+ version "4.1.11"
+ resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658"
+ integrity sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=
+
+has-unicode@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9"
+ integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=
+
+has-value@^0.3.1:
+ version "0.3.1"
+ resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f"
+ integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=
+ dependencies:
+ get-value "^2.0.3"
+ has-values "^0.1.4"
+ isobject "^2.0.0"
+
+has-value@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177"
+ integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=
+ dependencies:
+ get-value "^2.0.6"
+ has-values "^1.0.0"
+ isobject "^3.0.0"
+
+has-values@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771"
+ integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E=
+
+has-values@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f"
+ integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=
+ dependencies:
+ is-number "^3.0.0"
+ kind-of "^4.0.0"
+
+hash.js@^1.0.0:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.0.3.tgz#1332ff00156c0a0ffdd8236013d07b77a0451573"
+ integrity sha1-EzL/ABVsCg/92CNgE9B7d6BFFXM=
+ dependencies:
+ inherits "^2.0.1"
+
+https-browserify@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73"
+ integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=
+
+iconv-lite@^0.4.4:
+ version "0.4.24"
+ resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
+ integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
+ dependencies:
+ safer-buffer ">= 2.1.2 < 3"
+
+ieee754@^1.1.4:
+ version "1.1.8"
+ resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.8.tgz#be33d40ac10ef1926701f6f08a2d86fbfd1ad3e4"
+ integrity sha1-vjPUCsEO8ZJnAfbwii2G+/0a0+Q=
+
+iferr@^0.1.5:
+ version "0.1.5"
+ resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501"
+ integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE=
+
+ignore-walk@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.1.tgz#a83e62e7d272ac0e3b551aaa82831a19b69f82f8"
+ integrity sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ==
+ dependencies:
+ minimatch "^3.0.4"
+
+imurmurhash@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
+ integrity sha1-khi5srkoojixPcT7a21XbyMUU+o=
+
+infer-owner@^1.0.3:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467"
+ integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==
+
+inflight@^1.0.4:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
+ integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=
+ dependencies:
+ once "^1.3.0"
+ wrappy "1"
+
+inherits@2, inherits@2.0.3, inherits@^2.0.1, inherits@~2.0.1:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
+ integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=
+
+inherits@2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1"
+ integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=
+
+inherits@^2.0.3, inherits@~2.0.3:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
+ integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
+
+ini@~1.3.0:
+ version "1.3.4"
+ resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e"
+ integrity sha1-BTfLedr1m1mhpRff9wbIbsA5Fi4=
+
+is-accessor-descriptor@^0.1.6:
+ version "0.1.6"
+ resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6"
+ integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=
+ dependencies:
+ kind-of "^3.0.2"
+
+is-accessor-descriptor@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656"
+ integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==
+ dependencies:
+ kind-of "^6.0.0"
+
+is-binary-path@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898"
+ integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=
+ dependencies:
+ binary-extensions "^1.0.0"
+
+is-binary-path@~2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09"
+ integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==
+ dependencies:
+ binary-extensions "^2.0.0"
+
+is-buffer@^1.0.2:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.4.tgz#cfc86ccd5dc5a52fa80489111c6920c457e2d98b"
+ integrity sha1-z8hszV3FpS+oBIkRHGkgxFfi2Ys=
+
+is-buffer@^1.1.5:
+ version "1.1.6"
+ resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
+ integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==
+
+is-data-descriptor@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56"
+ integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=
+ dependencies:
+ kind-of "^3.0.2"
+
+is-data-descriptor@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7"
+ integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==
+ dependencies:
+ kind-of "^6.0.0"
+
+is-descriptor@^0.1.0:
+ version "0.1.6"
+ resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca"
+ integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==
+ dependencies:
+ is-accessor-descriptor "^0.1.6"
+ is-data-descriptor "^0.1.4"
+ kind-of "^5.0.0"
+
+is-descriptor@^1.0.0, is-descriptor@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec"
+ integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==
+ dependencies:
+ is-accessor-descriptor "^1.0.0"
+ is-data-descriptor "^1.0.0"
+ kind-of "^6.0.2"
+
+is-extendable@^0.1.0, is-extendable@^0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89"
+ integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=
+
+is-extendable@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4"
+ integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==
+ dependencies:
+ is-plain-object "^2.0.4"
+
+is-extglob@^2.1.0, is-extglob@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
+ integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=
+
+is-fullwidth-code-point@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb"
+ integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs=
+ dependencies:
+ number-is-nan "^1.0.0"
+
+is-glob@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a"
+ integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=
+ dependencies:
+ is-extglob "^2.1.0"
+
+is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc"
+ integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==
+ dependencies:
+ is-extglob "^2.1.1"
+
+is-number@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195"
+ integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=
+ dependencies:
+ kind-of "^3.0.2"
+
+is-number@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
+ integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
+
+is-plain-object@^2.0.3, is-plain-object@^2.0.4:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677"
+ integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==
+ dependencies:
+ isobject "^3.0.1"
+
+is-windows@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d"
+ integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==
+
+is-wsl@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d"
+ integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=
+
+isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
+ integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=
+
+isobject@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89"
+ integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=
+ dependencies:
+ isarray "1.0.0"
+
+isobject@^3.0.0, isobject@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df"
+ integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8=
+
+json-parse-better-errors@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9"
+ integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==
+
+json-schema-traverse@^0.4.1:
+ version "0.4.1"
+ resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660"
+ integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==
+
+json5@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe"
+ integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==
+ dependencies:
+ minimist "^1.2.0"
+
+kind-of@^3.0.2:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.1.0.tgz#475d698a5e49ff5e53d14e3e732429dc8bf4cf47"
+ integrity sha1-R11pil5J/15T0U4+cyQp3Iv0z0c=
+ dependencies:
+ is-buffer "^1.0.2"
+
+kind-of@^3.0.3, kind-of@^3.2.0:
+ version "3.2.2"
+ resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64"
+ integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=
+ dependencies:
+ is-buffer "^1.1.5"
+
+kind-of@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57"
+ integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc=
+ dependencies:
+ is-buffer "^1.1.5"
+
+kind-of@^5.0.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d"
+ integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==
+
+kind-of@^6.0.0, kind-of@^6.0.2:
+ version "6.0.2"
+ resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051"
+ integrity sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==
+
+loader-runner@^2.4.0:
+ version "2.4.0"
+ resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357"
+ integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==
+
+loader-utils@^1.2.3:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613"
+ integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==
+ dependencies:
+ big.js "^5.2.2"
+ emojis-list "^3.0.0"
+ json5 "^1.0.1"
+
+locate-path@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e"
+ integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==
+ dependencies:
+ p-locate "^3.0.0"
+ path-exists "^3.0.0"
+
+lru-cache@^5.1.1:
+ version "5.1.1"
+ resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920"
+ integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==
+ dependencies:
+ yallist "^3.0.2"
+
+make-dir@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5"
+ integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==
+ dependencies:
+ pify "^4.0.1"
+ semver "^5.6.0"
+
+map-cache@^0.2.2:
+ version "0.2.2"
+ resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf"
+ integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=
+
+map-visit@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f"
+ integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=
+ dependencies:
+ object-visit "^1.0.0"
+
+memory-fs@^0.4.1:
+ version "0.4.1"
+ resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552"
+ integrity sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=
+ dependencies:
+ errno "^0.1.3"
+ readable-stream "^2.0.1"
+
+memory-fs@^0.5.0:
+ version "0.5.0"
+ resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.5.0.tgz#324c01288b88652966d161db77838720845a8e3c"
+ integrity sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==
+ dependencies:
+ errno "^0.1.3"
+ readable-stream "^2.0.1"
+
+micromatch@^3.1.10, micromatch@^3.1.4:
+ version "3.1.10"
+ resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23"
+ integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==
+ dependencies:
+ arr-diff "^4.0.0"
+ array-unique "^0.3.2"
+ braces "^2.3.1"
+ define-property "^2.0.2"
+ extend-shallow "^3.0.2"
+ extglob "^2.0.4"
+ fragment-cache "^0.2.1"
+ kind-of "^6.0.2"
+ nanomatch "^1.2.9"
+ object.pick "^1.3.0"
+ regex-not "^1.0.0"
+ snapdragon "^0.8.1"
+ to-regex "^3.0.2"
+
+miller-rabin@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.0.tgz#4a62fb1d42933c05583982f4c716f6fb9e6c6d3d"
+ integrity sha1-SmL7HUKTPAVYOYL0xxb2+55sbT0=
+ dependencies:
+ bn.js "^4.0.0"
+ brorand "^1.0.1"
+
+minimalistic-assert@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz#702be2dda6b37f4836bcb3f5db56641b64a1d3d3"
+ integrity sha1-cCvi3aazf0g2vLP121ZkG2Sh09M=
+
+minimatch@^3.0.4:
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
+ integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==
+ dependencies:
+ brace-expansion "^1.1.7"
+
+minimist@0.0.8:
+ version "0.0.8"
+ resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d"
+ integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=
+
+minimist@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
+ integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=
+
+minimist@^1.2.5:
+ version "1.2.5"
+ resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602"
+ integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==
+
+minipass@^2.2.1, minipass@^2.3.5:
+ version "2.3.5"
+ resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.5.tgz#cacebe492022497f656b0f0f51e2682a9ed2d848"
+ integrity sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA==
+ dependencies:
+ safe-buffer "^5.1.2"
+ yallist "^3.0.0"
+
+minizlib@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.2.1.tgz#dd27ea6136243c7c880684e8672bb3a45fd9b614"
+ integrity sha512-7+4oTUOWKg7AuL3vloEWekXY2/D20cevzsrNT2kGWm+39J9hGTCBv8VI5Pm5lXZ/o3/mdR4f8rflAPhnQb8mPA==
+ dependencies:
+ minipass "^2.2.1"
+
+mississippi@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022"
+ integrity sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==
+ dependencies:
+ concat-stream "^1.5.0"
+ duplexify "^3.4.2"
+ end-of-stream "^1.1.0"
+ flush-write-stream "^1.0.0"
+ from2 "^2.1.0"
+ parallel-transform "^1.1.0"
+ pump "^3.0.0"
+ pumpify "^1.3.3"
+ stream-each "^1.1.0"
+ through2 "^2.0.0"
+
+mixin-deep@^1.2.0:
+ version "1.3.2"
+ resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566"
+ integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==
+ dependencies:
+ for-in "^1.0.2"
+ is-extendable "^1.0.1"
+
+mkdirp@^0.5.0, mkdirp@^0.5.1:
+ version "0.5.1"
+ resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903"
+ integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=
+ dependencies:
+ minimist "0.0.8"
+
+mkdirp@^0.5.3:
+ version "0.5.5"
+ resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def"
+ integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==
+ dependencies:
+ minimist "^1.2.5"
+
+move-concurrently@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92"
+ integrity sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=
+ dependencies:
+ aproba "^1.1.1"
+ copy-concurrently "^1.0.0"
+ fs-write-stream-atomic "^1.0.8"
+ mkdirp "^0.5.1"
+ rimraf "^2.5.4"
+ run-queue "^1.0.3"
+
+ms@2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
+ integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=
+
+ms@^2.1.1:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
+ integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
+
+nan@^2.12.1:
+ version "2.14.0"
+ resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.0.tgz#7818f722027b2459a86f0295d434d1fc2336c52c"
+ integrity sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==
+
+nanomatch@^1.2.9:
+ version "1.2.13"
+ resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119"
+ integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==
+ dependencies:
+ arr-diff "^4.0.0"
+ array-unique "^0.3.2"
+ define-property "^2.0.2"
+ extend-shallow "^3.0.2"
+ fragment-cache "^0.2.1"
+ is-windows "^1.0.2"
+ kind-of "^6.0.2"
+ object.pick "^1.3.0"
+ regex-not "^1.0.0"
+ snapdragon "^0.8.1"
+ to-regex "^3.0.1"
+
+needle@^2.2.1:
+ version "2.4.0"
+ resolved "https://registry.yarnpkg.com/needle/-/needle-2.4.0.tgz#6833e74975c444642590e15a750288c5f939b57c"
+ integrity sha512-4Hnwzr3mi5L97hMYeNl8wRW/Onhy4nUKR/lVemJ8gJedxxUyBLm9kkrDColJvoSfwi0jCNhD+xCdOtiGDQiRZg==
+ dependencies:
+ debug "^3.2.6"
+ iconv-lite "^0.4.4"
+ sax "^1.2.4"
+
+neo-async@^2.5.0:
+ version "2.6.1"
+ resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c"
+ integrity sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==
+
+neo-async@^2.6.1:
+ version "2.6.2"
+ resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f"
+ integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==
+
+node-libs-browser@^2.2.1:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425"
+ integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==
+ dependencies:
+ assert "^1.1.1"
+ browserify-zlib "^0.2.0"
+ buffer "^4.3.0"
+ console-browserify "^1.1.0"
+ constants-browserify "^1.0.0"
+ crypto-browserify "^3.11.0"
+ domain-browser "^1.1.1"
+ events "^3.0.0"
+ https-browserify "^1.0.0"
+ os-browserify "^0.3.0"
+ path-browserify "0.0.1"
+ process "^0.11.10"
+ punycode "^1.2.4"
+ querystring-es3 "^0.2.0"
+ readable-stream "^2.3.3"
+ stream-browserify "^2.0.1"
+ stream-http "^2.7.2"
+ string_decoder "^1.0.0"
+ timers-browserify "^2.0.4"
+ tty-browserify "0.0.0"
+ url "^0.11.0"
+ util "^0.11.0"
+ vm-browserify "^1.0.1"
+
+node-pre-gyp@^0.12.0:
+ version "0.12.0"
+ resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.12.0.tgz#39ba4bb1439da030295f899e3b520b7785766149"
+ integrity sha512-4KghwV8vH5k+g2ylT+sLTjy5wmUOb9vPhnM8NHvRf9dHmnW/CndrFXy2aRPaPST6dugXSdHXfeaHQm77PIz/1A==
+ dependencies:
+ detect-libc "^1.0.2"
+ mkdirp "^0.5.1"
+ needle "^2.2.1"
+ nopt "^4.0.1"
+ npm-packlist "^1.1.6"
+ npmlog "^4.0.2"
+ rc "^1.2.7"
+ rimraf "^2.6.1"
+ semver "^5.3.0"
+ tar "^4"
+
+nopt@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d"
+ integrity sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=
+ dependencies:
+ abbrev "1"
+ osenv "^0.1.4"
+
+normalize-path@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9"
+ integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=
+ dependencies:
+ remove-trailing-separator "^1.0.1"
+
+normalize-path@^3.0.0, normalize-path@~3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
+ integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==
+
+npm-bundled@^1.0.1:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.6.tgz#e7ba9aadcef962bb61248f91721cd932b3fe6bdd"
+ integrity sha512-8/JCaftHwbd//k6y2rEWp6k1wxVfpFzB6t1p825+cUb7Ym2XQfhwIC5KwhrvzZRJu+LtDE585zVaS32+CGtf0g==
+
+npm-packlist@^1.1.6:
+ version "1.4.4"
+ resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.4.tgz#866224233850ac534b63d1a6e76050092b5d2f44"
+ integrity sha512-zTLo8UcVYtDU3gdeaFu2Xu0n0EvelfHDGuqtNIn5RO7yQj4H1TqNdBc/yZjxnWA0PVB8D3Woyp0i5B43JwQ6Vw==
+ dependencies:
+ ignore-walk "^3.0.1"
+ npm-bundled "^1.0.1"
+
+npmlog@^4.0.2:
+ version "4.1.2"
+ resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b"
+ integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==
+ dependencies:
+ are-we-there-yet "~1.1.2"
+ console-control-strings "~1.1.0"
+ gauge "~2.7.3"
+ set-blocking "~2.0.0"
+
+number-is-nan@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d"
+ integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=
+
+object-assign@^4.1.0:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
+ integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=
+
+object-copy@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c"
+ integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw=
+ dependencies:
+ copy-descriptor "^0.1.0"
+ define-property "^0.2.5"
+ kind-of "^3.0.3"
+
+object-visit@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb"
+ integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=
+ dependencies:
+ isobject "^3.0.0"
+
+object.pick@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747"
+ integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=
+ dependencies:
+ isobject "^3.0.1"
+
+once@^1.3.0:
+ version "1.3.3"
+ resolved "https://registry.yarnpkg.com/once/-/once-1.3.3.tgz#b2e261557ce4c314ec8304f3fa82663e4297ca20"
+ integrity sha1-suJhVXzkwxTsgwTz+oJmPkKXyiA=
+ dependencies:
+ wrappy "1"
+
+once@^1.3.1, once@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
+ integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E=
+ dependencies:
+ wrappy "1"
+
+os-browserify@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27"
+ integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=
+
+os-homedir@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3"
+ integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M=
+
+os-tmpdir@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
+ integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=
+
+osenv@^0.1.4:
+ version "0.1.5"
+ resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410"
+ integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==
+ dependencies:
+ os-homedir "^1.0.0"
+ os-tmpdir "^1.0.0"
+
+p-limit@^2.0.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1"
+ integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==
+ dependencies:
+ p-try "^2.0.0"
+
+p-locate@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4"
+ integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==
+ dependencies:
+ p-limit "^2.0.0"
+
+p-try@^2.0.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6"
+ integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==
+
+pako@~1.0.5:
+ version "1.0.11"
+ resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf"
+ integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==
+
+parallel-transform@^1.1.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.2.0.tgz#9049ca37d6cb2182c3b1d2c720be94d14a5814fc"
+ integrity sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==
+ dependencies:
+ cyclist "^1.0.1"
+ inherits "^2.0.3"
+ readable-stream "^2.1.5"
+
+parse-asn1@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.0.0.tgz#35060f6d5015d37628c770f4e091a0b5a278bc23"
+ integrity sha1-NQYPbVAV03Yox3D04JGgtaJ4vCM=
+ dependencies:
+ asn1.js "^4.0.0"
+ browserify-aes "^1.0.0"
+ create-hash "^1.1.0"
+ evp_bytestokey "^1.0.0"
+ pbkdf2 "^3.0.3"
+
+pascalcase@^0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14"
+ integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=
+
+path-browserify@0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a"
+ integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==
+
+path-dirname@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0"
+ integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=
+
+path-exists@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515"
+ integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=
+
+path-is-absolute@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
+ integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
+
+pbkdf2@^3.0.3:
+ version "3.0.9"
+ resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.9.tgz#f2c4b25a600058b3c3773c086c37dbbee1ffe693"
+ integrity sha1-8sSyWmAAWLPDdzwIbDfbvuH/5pM=
+ dependencies:
+ create-hmac "^1.1.2"
+
+picomatch@^2.0.4, picomatch@^2.2.1:
+ version "2.2.2"
+ resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad"
+ integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==
+
+pify@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231"
+ integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==
+
+pkg-dir@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3"
+ integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==
+ dependencies:
+ find-up "^3.0.0"
+
+posix-character-classes@^0.1.0:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab"
+ integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=
+
+process-nextick-args@~1.0.6:
+ version "1.0.7"
+ resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3"
+ integrity sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=
+
+process-nextick-args@~2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2"
+ integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==
+
+process@^0.11.10:
+ version "0.11.10"
+ resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182"
+ integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI=
+
+promise-inflight@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3"
+ integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM=
+
+prr@~0.0.0:
+ version "0.0.0"
+ resolved "https://registry.yarnpkg.com/prr/-/prr-0.0.0.tgz#1a84b85908325501411853d0081ee3fa86e2926a"
+ integrity sha1-GoS4WQgyVQFBGFPQCB7j+obikmo=
+
+prr@~1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476"
+ integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY=
+
+public-encrypt@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.0.tgz#39f699f3a46560dd5ebacbca693caf7c65c18cc6"
+ integrity sha1-OfaZ86RlYN1eusvKaTyvfGXBjMY=
+ dependencies:
+ bn.js "^4.1.0"
+ browserify-rsa "^4.0.0"
+ create-hash "^1.1.0"
+ parse-asn1 "^5.0.0"
+ randombytes "^2.0.1"
+
+pump@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909"
+ integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==
+ dependencies:
+ end-of-stream "^1.1.0"
+ once "^1.3.1"
+
+pump@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64"
+ integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==
+ dependencies:
+ end-of-stream "^1.1.0"
+ once "^1.3.1"
+
+pumpify@^1.3.3:
+ version "1.5.1"
+ resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce"
+ integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==
+ dependencies:
+ duplexify "^3.6.0"
+ inherits "^2.0.3"
+ pump "^2.0.0"
+
+punycode@1.3.2:
+ version "1.3.2"
+ resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d"
+ integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=
+
+punycode@^1.2.4:
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e"
+ integrity sha1-wNWmOycYgArY4esPpSachN1BhF4=
+
+punycode@^2.1.0:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
+ integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==
+
+querystring-es3@^0.2.0:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73"
+ integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=
+
+querystring@0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620"
+ integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=
+
+randombytes@^2.0.0, randombytes@^2.0.1:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.0.3.tgz#674c99760901c3c4112771a31e521dc349cc09ec"
+ integrity sha1-Z0yZdgkBw8QRJ3GjHlIdw0nMCew=
+
+randombytes@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a"
+ integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==
+ dependencies:
+ safe-buffer "^5.1.0"
+
+rc@^1.2.7:
+ version "1.2.8"
+ resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed"
+ integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==
+ dependencies:
+ deep-extend "^0.6.0"
+ ini "~1.3.0"
+ minimist "^1.2.0"
+ strip-json-comments "~2.0.1"
+
+"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6:
+ version "2.3.7"
+ resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57"
+ integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==
+ dependencies:
+ core-util-is "~1.0.0"
+ inherits "~2.0.3"
+ isarray "~1.0.0"
+ process-nextick-args "~2.0.0"
+ safe-buffer "~5.1.1"
+ string_decoder "~1.1.1"
+ util-deprecate "~1.0.1"
+
+"readable-stream@^2.0.0 || ^1.1.13", readable-stream@^2.0.1, readable-stream@^2.0.2:
+ version "2.2.2"
+ resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.2.2.tgz#a9e6fec3c7dda85f8bb1b3ba7028604556fc825e"
+ integrity sha1-qeb+w8fdqF+LsbO6cChgRVb8gl4=
+ dependencies:
+ buffer-shims "^1.0.0"
+ core-util-is "~1.0.0"
+ inherits "~2.0.1"
+ isarray "~1.0.0"
+ process-nextick-args "~1.0.6"
+ string_decoder "~0.10.x"
+ util-deprecate "~1.0.1"
+
+readdirp@^2.2.1:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525"
+ integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==
+ dependencies:
+ graceful-fs "^4.1.11"
+ micromatch "^3.1.10"
+ readable-stream "^2.0.2"
+
+readdirp@~3.4.0:
+ version "3.4.0"
+ resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.4.0.tgz#9fdccdf9e9155805449221ac645e8303ab5b9ada"
+ integrity sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ==
+ dependencies:
+ picomatch "^2.2.1"
+
+regex-not@^1.0.0, regex-not@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c"
+ integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==
+ dependencies:
+ extend-shallow "^3.0.2"
+ safe-regex "^1.1.0"
+
+remove-trailing-separator@^1.0.1:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef"
+ integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8=
+
+repeat-element@^1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a"
+ integrity sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=
+
+repeat-string@^1.6.1:
+ version "1.6.1"
+ resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637"
+ integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc=
+
+resolve-url@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a"
+ integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=
+
+ret@~0.1.10:
+ version "0.1.15"
+ resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc"
+ integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==
+
+rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.3:
+ version "2.7.1"
+ resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec"
+ integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==
+ dependencies:
+ glob "^7.1.3"
+
+ripemd160@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-1.0.1.tgz#93a4bbd4942bc574b69a8fa57c71de10ecca7d6e"
+ integrity sha1-k6S71JQrxXS2mo+lfHHeEOzKfW4=
+
+run-queue@^1.0.0, run-queue@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47"
+ integrity sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=
+ dependencies:
+ aproba "^1.1.1"
+
+safe-buffer@^5.1.0, safe-buffer@~5.2.0:
+ version "5.2.1"
+ resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
+ integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
+
+safe-buffer@^5.1.2:
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519"
+ integrity sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==
+
+safe-buffer@~5.1.0, safe-buffer@~5.1.1:
+ version "5.1.2"
+ resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
+ integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
+
+safe-regex@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e"
+ integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4=
+ dependencies:
+ ret "~0.1.10"
+
+"safer-buffer@>= 2.1.2 < 3":
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
+ integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
+
+sax@^1.2.4:
+ version "1.2.4"
+ resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
+ integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==
+
+schema-utils@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770"
+ integrity sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==
+ dependencies:
+ ajv "^6.1.0"
+ ajv-errors "^1.0.0"
+ ajv-keywords "^3.1.0"
+
+semver@^5.3.0, semver@^5.6.0:
+ version "5.7.1"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
+ integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==
+
+serialize-javascript@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa"
+ integrity sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==
+ dependencies:
+ randombytes "^2.1.0"
+
+set-blocking@~2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
+ integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc=
+
+set-value@^2.0.0, set-value@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b"
+ integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==
+ dependencies:
+ extend-shallow "^2.0.1"
+ is-extendable "^0.1.1"
+ is-plain-object "^2.0.3"
+ split-string "^3.0.1"
+
+setimmediate@^1.0.4:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285"
+ integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=
+
+sha.js@^2.3.6:
+ version "2.4.8"
+ resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.8.tgz#37068c2c476b6baf402d14a49c67f597921f634f"
+ integrity sha1-NwaMLEdra69ALRSknGf1l5IfY08=
+ dependencies:
+ inherits "^2.0.1"
+
+signal-exit@^3.0.0:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d"
+ integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=
+
+snapdragon-node@^2.0.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b"
+ integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==
+ dependencies:
+ define-property "^1.0.0"
+ isobject "^3.0.0"
+ snapdragon-util "^3.0.1"
+
+snapdragon-util@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2"
+ integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==
+ dependencies:
+ kind-of "^3.2.0"
+
+snapdragon@^0.8.1:
+ version "0.8.2"
+ resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d"
+ integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==
+ dependencies:
+ base "^0.11.1"
+ debug "^2.2.0"
+ define-property "^0.2.5"
+ extend-shallow "^2.0.1"
+ map-cache "^0.2.2"
+ source-map "^0.5.6"
+ source-map-resolve "^0.5.0"
+ use "^3.1.0"
+
+source-list-map@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34"
+ integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==
+
+source-map-resolve@^0.5.0:
+ version "0.5.2"
+ resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.2.tgz#72e2cc34095543e43b2c62b2c4c10d4a9054f259"
+ integrity sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==
+ dependencies:
+ atob "^2.1.1"
+ decode-uri-component "^0.2.0"
+ resolve-url "^0.2.1"
+ source-map-url "^0.4.0"
+ urix "^0.1.0"
+
+source-map-support@~0.5.12:
+ version "0.5.19"
+ resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61"
+ integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==
+ dependencies:
+ buffer-from "^1.0.0"
+ source-map "^0.6.0"
+
+source-map-url@^0.4.0:
+ version "0.4.0"
+ resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3"
+ integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=
+
+source-map@^0.5.6:
+ version "0.5.7"
+ resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
+ integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=
+
+source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1:
+ version "0.6.1"
+ resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
+ integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
+
+split-string@^3.0.1, split-string@^3.0.2:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2"
+ integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==
+ dependencies:
+ extend-shallow "^3.0.0"
+
+ssri@^6.0.1:
+ version "6.0.1"
+ resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.1.tgz#2a3c41b28dd45b62b63676ecb74001265ae9edd8"
+ integrity sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==
+ dependencies:
+ figgy-pudding "^3.5.1"
+
+static-extend@^0.1.1:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6"
+ integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=
+ dependencies:
+ define-property "^0.2.5"
+ object-copy "^0.1.0"
+
+stream-browserify@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.1.tgz#66266ee5f9bdb9940a4e4514cafb43bb71e5c9db"
+ integrity sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=
+ dependencies:
+ inherits "~2.0.1"
+ readable-stream "^2.0.2"
+
+stream-each@^1.1.0:
+ version "1.2.3"
+ resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae"
+ integrity sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==
+ dependencies:
+ end-of-stream "^1.1.0"
+ stream-shift "^1.0.0"
+
+stream-http@^2.7.2:
+ version "2.8.3"
+ resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc"
+ integrity sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==
+ dependencies:
+ builtin-status-codes "^3.0.0"
+ inherits "^2.0.1"
+ readable-stream "^2.3.6"
+ to-arraybuffer "^1.0.0"
+ xtend "^4.0.0"
+
+stream-shift@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d"
+ integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==
+
+string-width@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3"
+ integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=
+ dependencies:
+ code-point-at "^1.0.0"
+ is-fullwidth-code-point "^1.0.0"
+ strip-ansi "^3.0.0"
+
+string_decoder@^1.0.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e"
+ integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==
+ dependencies:
+ safe-buffer "~5.2.0"
+
+string_decoder@~0.10.x:
+ version "0.10.31"
+ resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94"
+ integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=
+
+string_decoder@~1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8"
+ integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==
+ dependencies:
+ safe-buffer "~5.1.0"
+
+strip-ansi@^3.0.0, strip-ansi@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf"
+ integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=
+ dependencies:
+ ansi-regex "^2.0.0"
+
+strip-json-comments@~2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
+ integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo=
+
+tapable@^1.0.0, tapable@^1.1.3:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2"
+ integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==
+
+tar@^4:
+ version "4.4.10"
+ resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.10.tgz#946b2810b9a5e0b26140cf78bea6b0b0d689eba1"
+ integrity sha512-g2SVs5QIxvo6OLp0GudTqEf05maawKUxXru104iaayWA09551tFCTI8f1Asb4lPfkBr91k07iL4c11XO3/b0tA==
+ dependencies:
+ chownr "^1.1.1"
+ fs-minipass "^1.2.5"
+ minipass "^2.3.5"
+ minizlib "^1.2.1"
+ mkdirp "^0.5.0"
+ safe-buffer "^5.1.2"
+ yallist "^3.0.3"
+
+terser-webpack-plugin@^1.4.3:
+ version "1.4.5"
+ resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz#a217aefaea330e734ffacb6120ec1fa312d6040b"
+ integrity sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw==
+ dependencies:
+ cacache "^12.0.2"
+ find-cache-dir "^2.1.0"
+ is-wsl "^1.1.0"
+ schema-utils "^1.0.0"
+ serialize-javascript "^4.0.0"
+ source-map "^0.6.1"
+ terser "^4.1.2"
+ webpack-sources "^1.4.0"
+ worker-farm "^1.7.0"
+
+terser@^4.1.2:
+ version "4.8.0"
+ resolved "https://registry.yarnpkg.com/terser/-/terser-4.8.0.tgz#63056343d7c70bb29f3af665865a46fe03a0df17"
+ integrity sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==
+ dependencies:
+ commander "^2.20.0"
+ source-map "~0.6.1"
+ source-map-support "~0.5.12"
+
+through2@^2.0.0:
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd"
+ integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==
+ dependencies:
+ readable-stream "~2.3.6"
+ xtend "~4.0.1"
+
+timers-browserify@^2.0.4:
+ version "2.0.11"
+ resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.11.tgz#800b1f3eee272e5bc53ee465a04d0e804c31211f"
+ integrity sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ==
+ dependencies:
+ setimmediate "^1.0.4"
+
+to-arraybuffer@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43"
+ integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=
+
+to-object-path@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af"
+ integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=
+ dependencies:
+ kind-of "^3.0.2"
+
+to-regex-range@^2.1.0:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38"
+ integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=
+ dependencies:
+ is-number "^3.0.0"
+ repeat-string "^1.6.1"
+
+to-regex-range@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4"
+ integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==
+ dependencies:
+ is-number "^7.0.0"
+
+to-regex@^3.0.1, to-regex@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce"
+ integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==
+ dependencies:
+ define-property "^2.0.2"
+ extend-shallow "^3.0.2"
+ regex-not "^1.0.2"
+ safe-regex "^1.1.0"
+
+tslib@^1.9.0:
+ version "1.13.0"
+ resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.13.0.tgz#c881e13cc7015894ed914862d276436fa9a47043"
+ integrity sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==
+
+tty-browserify@0.0.0:
+ version "0.0.0"
+ resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6"
+ integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=
+
+typedarray@^0.0.6:
+ version "0.0.6"
+ resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
+ integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=
+
+typescript@3:
+ version "3.9.7"
+ resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.7.tgz#98d600a5ebdc38f40cb277522f12dc800e9e25fa"
+ integrity sha512-BLbiRkiBzAwsjut4x/dsibSTB6yWpwT5qWmC2OfuCg3GgVQCSgMs4vEctYPhsaGtd0AeuuHMkjZ2h2WG8MSzRw==
+
+union-value@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847"
+ integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==
+ dependencies:
+ arr-union "^3.1.0"
+ get-value "^2.0.6"
+ is-extendable "^0.1.1"
+ set-value "^2.0.1"
+
+unique-filename@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230"
+ integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==
+ dependencies:
+ unique-slug "^2.0.0"
+
+unique-slug@^2.0.0:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c"
+ integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==
+ dependencies:
+ imurmurhash "^0.1.4"
+
+unset-value@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559"
+ integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=
+ dependencies:
+ has-value "^0.3.1"
+ isobject "^3.0.0"
+
+upath@^1.1.1:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/upath/-/upath-1.1.2.tgz#3db658600edaeeccbe6db5e684d67ee8c2acd068"
+ integrity sha512-kXpym8nmDmlCBr7nKdIx8P2jNBa+pBpIUFRnKJ4dr8htyYGJFokkr2ZvERRtUN+9SY+JqXouNgUPtv6JQva/2Q==
+
+uri-js@^4.2.2:
+ version "4.4.0"
+ resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.0.tgz#aa714261de793e8a82347a7bcc9ce74e86f28602"
+ integrity sha512-B0yRTzYdUCCn9n+F4+Gh4yIDtMQcaJsmYBDsTSG8g/OejKBodLQ2IHfN3bM7jUsRXndopT7OIXWdYqc1fjmV6g==
+ dependencies:
+ punycode "^2.1.0"
+
+urix@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72"
+ integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=
+
+url@^0.11.0:
+ version "0.11.0"
+ resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1"
+ integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=
+ dependencies:
+ punycode "1.3.2"
+ querystring "0.2.0"
+
+use@^3.1.0:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f"
+ integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==
+
+util-deprecate@~1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
+ integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=
+
+util@0.10.3:
+ version "0.10.3"
+ resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9"
+ integrity sha1-evsa/lCAUkZInj23/g7TeTNqwPk=
+ dependencies:
+ inherits "2.0.1"
+
+util@^0.11.0:
+ version "0.11.1"
+ resolved "https://registry.yarnpkg.com/util/-/util-0.11.1.tgz#3236733720ec64bb27f6e26f421aaa2e1b588d61"
+ integrity sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==
+ dependencies:
+ inherits "2.0.3"
+
+vm-browserify@^1.0.1:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0"
+ integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==
+
+watchpack-chokidar2@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/watchpack-chokidar2/-/watchpack-chokidar2-2.0.0.tgz#9948a1866cbbd6cb824dea13a7ed691f6c8ddff0"
+ integrity sha512-9TyfOyN/zLUbA288wZ8IsMZ+6cbzvsNyEzSBp6e/zkifi6xxbl8SmQ/CxQq32k8NNqrdVEVUVSEf56L4rQ/ZxA==
+ dependencies:
+ chokidar "^2.1.8"
+
+watchpack@^1.7.4:
+ version "1.7.4"
+ resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.7.4.tgz#6e9da53b3c80bb2d6508188f5b200410866cd30b"
+ integrity sha512-aWAgTW4MoSJzZPAicljkO1hsi1oKj/RRq/OJQh2PKI2UKL04c2Bs+MBOB+BBABHTXJpf9mCwHN7ANCvYsvY2sg==
+ dependencies:
+ graceful-fs "^4.1.2"
+ neo-async "^2.5.0"
+ optionalDependencies:
+ chokidar "^3.4.1"
+ watchpack-chokidar2 "^2.0.0"
+
+webpack-sources@^1.4.0, webpack-sources@^1.4.1:
+ version "1.4.3"
+ resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933"
+ integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==
+ dependencies:
+ source-list-map "^2.0.0"
+ source-map "~0.6.1"
+
+webpack@^4.44.1:
+ version "4.44.1"
+ resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.44.1.tgz#17e69fff9f321b8f117d1fda714edfc0b939cc21"
+ integrity sha512-4UOGAohv/VGUNQJstzEywwNxqX417FnjZgZJpJQegddzPmTvph37eBIRbRTfdySXzVtJXLJfbMN3mMYhM6GdmQ==
+ dependencies:
+ "@webassemblyjs/ast" "1.9.0"
+ "@webassemblyjs/helper-module-context" "1.9.0"
+ "@webassemblyjs/wasm-edit" "1.9.0"
+ "@webassemblyjs/wasm-parser" "1.9.0"
+ acorn "^6.4.1"
+ ajv "^6.10.2"
+ ajv-keywords "^3.4.1"
+ chrome-trace-event "^1.0.2"
+ enhanced-resolve "^4.3.0"
+ eslint-scope "^4.0.3"
+ json-parse-better-errors "^1.0.2"
+ loader-runner "^2.4.0"
+ loader-utils "^1.2.3"
+ memory-fs "^0.4.1"
+ micromatch "^3.1.10"
+ mkdirp "^0.5.3"
+ neo-async "^2.6.1"
+ node-libs-browser "^2.2.1"
+ schema-utils "^1.0.0"
+ tapable "^1.1.3"
+ terser-webpack-plugin "^1.4.3"
+ watchpack "^1.7.4"
+ webpack-sources "^1.4.1"
+
+wide-align@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.0.tgz#40edde802a71fea1f070da3e62dcda2e7add96ad"
+ integrity sha1-QO3egCpx/qHwcNo+YtzaLnrdlq0=
+ dependencies:
+ string-width "^1.0.1"
+
+worker-farm@^1.7.0:
+ version "1.7.0"
+ resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8"
+ integrity sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==
+ dependencies:
+ errno "~0.1.7"
+
+wrappy@1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
+ integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
+
+xtend@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af"
+ integrity sha1-pcbVMr5lbiPbgg77lDofBJmNY68=
+
+xtend@~4.0.1:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54"
+ integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==
+
+y18n@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b"
+ integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==
+
+yallist@^3.0.0, yallist@^3.0.3:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.3.tgz#b4b049e314be545e3ce802236d6cd22cd91c3de9"
+ integrity sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==
+
+yallist@^3.0.2:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd"
+ integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==
diff --git a/date-fns/examples/webpack-1.x/README.md b/date-fns/examples/webpack-1.x/README.md
new file mode 100644
index 0000000..77019c5
--- /dev/null
+++ b/date-fns/examples/webpack-1.x/README.md
@@ -0,0 +1,23 @@
+# Usage With webpack 1.x
+
+See [example.js](./example.js), [fp.js](./fp.js) and [misc.js](./misc.js) for source code examples.
+
+See [package.json scripts](./package.json) for CLI usage.
+
+## Build Example
+
+```sh
+yarn
+yarn run build
+```
+
+See ./dist for output.
+
+## Minimal Build Size
+
+You can see minimal build size (when you use just one function):
+
+```sh
+gzip-size dist/example.min.js | pretty-bytes
+#=> 6.61 kB
+```
diff --git a/date-fns/examples/webpack-1.x/constants.js b/date-fns/examples/webpack-1.x/constants.js
new file mode 100644
index 0000000..6942f28
--- /dev/null
+++ b/date-fns/examples/webpack-1.x/constants.js
@@ -0,0 +1,9 @@
+const dateFns = require('date-fns')
+const constants = require('date-fns/constants')
+const { minTime: fpMinTime } = require('date-fns/fp')
+
+console.log(
+ dateFns.maxTime === 8640000000000000 &&
+ dateFns.minTime === constants.minTime &&
+ constants.minTime === fpMinTime
+)
diff --git a/date-fns/examples/webpack-1.x/example.js b/date-fns/examples/webpack-1.x/example.js
new file mode 100644
index 0000000..e09f17c
--- /dev/null
+++ b/date-fns/examples/webpack-1.x/example.js
@@ -0,0 +1,4 @@
+var format = require('date-fns/format')
+
+var result = format(new Date(2017, 0, 25, 21, 28, 15), 'dd.MM.yyyy HH:mm:ss')
+console.log(result === '25.01.2017 21:28:15')
diff --git a/date-fns/examples/webpack-1.x/fp.js b/date-fns/examples/webpack-1.x/fp.js
new file mode 100644
index 0000000..7d25ec5
--- /dev/null
+++ b/date-fns/examples/webpack-1.x/fp.js
@@ -0,0 +1,19 @@
+var addYears = require('date-fns/fp/addYears')
+var dateFns = require('date-fns/fp')
+var formatWithOptions = dateFns.formatWithOptions
+var eo = require('date-fns/locale/eo')
+
+var addFiveYears = addYears(5)
+var dateToString = formatWithOptions({locale: eo}, 'd MMMM yyyy')
+
+var dates = [
+ new Date(2017, 0 /* Jan */, 1),
+ new Date(2017, 1 /* Feb */, 11),
+ new Date(2017, 6 /* Jul */, 2)
+]
+
+var formattedDates = dates
+ .map((date) => dateToString(addFiveYears(date)))
+ .join(', ')
+
+console.log(formattedDates === '1 januaro 2022, 11 februaro 2022, 2 julio 2022')
diff --git a/date-fns/examples/webpack-1.x/misc.js b/date-fns/examples/webpack-1.x/misc.js
new file mode 100644
index 0000000..409974b
--- /dev/null
+++ b/date-fns/examples/webpack-1.x/misc.js
@@ -0,0 +1,10 @@
+var dateFns = require('date-fns')
+var format = dateFns.format
+var eo = require('date-fns/locale/eo')
+
+var result = format(
+ new Date(2017, 0, 25, 21, 28, 15),
+ 'eeee, dd MMMM HH:mm:ss',
+ { locale: eo }
+)
+console.log(result === 'merkredo, 25 januaro 21:28:15')
diff --git a/date-fns/examples/webpack-1.x/package.json b/date-fns/examples/webpack-1.x/package.json
new file mode 100644
index 0000000..cad4bcc
--- /dev/null
+++ b/date-fns/examples/webpack-1.x/package.json
@@ -0,0 +1,30 @@
+{
+ "name": "date-fns-example-webpack1",
+ "version": "0.1.0",
+ "description": "Example of date-fns usage with webpack 1.x",
+ "main": "example.js",
+ "author": "Sasha Koss <koss@nocorp.me>",
+ "license": "MIT",
+ "dependencies": {
+ "babili": "^0.0.9",
+ "gzip-size-cli": "^1.0.0",
+ "pretty-bytes-cli": "^2.0.0",
+ "webpack": "1"
+ },
+ "scripts": {
+ "build": "yarn run build-date-fns && yarn run build-webpack && yarn run build-babili",
+ "build-date-fns": "env PACKAGE_OUTPUT_PATH=\"$(pwd)/node_modules/date-fns\" ../../scripts/build/package.sh",
+ "build-webpack": "webpack example=./example.js fp=./fp.js misc=./misc.js constants=./constants.js --output-path dist --output-file [name].js",
+ "build-babili": "yarn run build-babili-example && yarn run build-babili-fp && yarn run build-babili-misc && yarn build-babili-constants && yarn run stats-size",
+ "build-babili-example": "babili dist/example.js --out-file dist/example.min.js --minified --no-comments",
+ "build-babili-fp": "babili dist/fp.js --out-file dist/fp.min.js --minified --no-comments",
+ "build-babili-misc": "babili dist/misc.js --out-file dist/misc.min.js --minified --no-comments",
+ "build-babili-constants": "babili dist/constants.js --out-file dist/constants.min.js --minified --no-comments",
+ "stats-size": "gzip-size dist/example.min.js | pretty-bytes",
+ "test": "yarn test-example && yarn test-fp && yarn test-misc && yarn test-constants",
+ "test-example": "test $(env TZ=UTC node ./dist/example.min.js) = true",
+ "test-fp": "test $(env TZ=UTC node ./dist/fp.min.js) = true",
+ "test-misc": "test $(env TZ=UTC node ./dist/misc.min.js) = true",
+ "test-constants": "test $(node ./dist/constants.min.js) = true"
+ }
+}
diff --git a/date-fns/examples/webpack-1.x/yarn.lock b/date-fns/examples/webpack-1.x/yarn.lock
new file mode 100644
index 0000000..c565611
--- /dev/null
+++ b/date-fns/examples/webpack-1.x/yarn.lock
@@ -0,0 +1,2344 @@
+# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
+# yarn lockfile v1
+
+
+abbrev@1:
+ version "1.0.9"
+ resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.0.9.tgz#91b4792588a7738c25f35dd6f63752a2f8776135"
+ integrity sha1-kbR5JYinc4wl813W9jdSovh3YTU=
+
+acorn@^3.0.0:
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a"
+ integrity sha1-ReN/s56No/JbruP/U2niu18iAXo=
+
+align-text@^0.1.1, align-text@^0.1.3:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117"
+ integrity sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=
+ dependencies:
+ kind-of "^3.0.2"
+ longest "^1.0.1"
+ repeat-string "^1.5.2"
+
+amdefine@>=0.0.4:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5"
+ integrity sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=
+
+ansi-regex@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.0.0.tgz#c5061b6e0ef8a81775e50f5d66151bf6bf371107"
+ integrity sha1-xQYbbg74qBd15Q9dZhUb9r83EQc=
+
+ansi-styles@^2.2.1:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe"
+ integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=
+
+anymatch@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.0.tgz#a3e52fa39168c825ff57b0248126ce5a8ff95507"
+ integrity sha1-o+Uvo5FoyCX/V7AkgSbOWo/5VQc=
+ dependencies:
+ arrify "^1.0.0"
+ micromatch "^2.1.5"
+
+aproba@^1.0.3:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.0.4.tgz#2713680775e7614c8ba186c065d4e2e52d1072c0"
+ integrity sha1-JxNoB3XnYUyLoYbAZdTi5S0QcsA=
+
+are-we-there-yet@~1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.2.tgz#80e470e95a084794fe1899262c5667c6e88de1b3"
+ integrity sha1-gORw6VoIR5T+GJkmLFZnxuiN4bM=
+ dependencies:
+ delegates "^1.0.0"
+ readable-stream "^2.0.0 || ^1.1.13"
+
+arr-diff@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf"
+ integrity sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=
+ dependencies:
+ arr-flatten "^1.0.1"
+
+arr-flatten@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.0.1.tgz#e5ffe54d45e19f32f216e91eb99c8ce892bb604b"
+ integrity sha1-5f/lTUXhnzLyFukeuZyM6JK7YEs=
+
+array-find-index@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1"
+ integrity sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=
+
+array-unique@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53"
+ integrity sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=
+
+arrify@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d"
+ integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=
+
+asn1@~0.2.3:
+ version "0.2.3"
+ resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86"
+ integrity sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=
+
+assert-plus@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234"
+ integrity sha1-104bh+ev/A24qttwIfP+SBAasjQ=
+
+assert-plus@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525"
+ integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=
+
+assert@^1.1.1:
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/assert/-/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91"
+ integrity sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=
+ dependencies:
+ util "0.10.3"
+
+async-each@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d"
+ integrity sha1-GdOGodntxufByF04iu28xW0zYC0=
+
+async@^0.9.0:
+ version "0.9.2"
+ resolved "https://registry.yarnpkg.com/async/-/async-0.9.2.tgz#aea74d5e61c1f899613bf64bda66d4c78f2fd17d"
+ integrity sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=
+
+async@^1.3.0:
+ version "1.5.2"
+ resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a"
+ integrity sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=
+
+async@~0.2.6:
+ version "0.2.10"
+ resolved "https://registry.yarnpkg.com/async/-/async-0.2.10.tgz#b6bbe0b0674b9d719708ca38de8c237cb526c3d1"
+ integrity sha1-trvgsGdLnXGXCMo43owjfLUmw9E=
+
+asynckit@^0.4.0:
+ version "0.4.0"
+ resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
+ integrity sha1-x57Zf380y48robyXkLzDZkdLS3k=
+
+aws-sign2@~0.6.0:
+ version "0.6.0"
+ resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f"
+ integrity sha1-FDQt0428yU0OW4fXY81jYSwOeU8=
+
+aws4@^1.2.1:
+ version "1.5.0"
+ resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.5.0.tgz#0a29ffb79c31c9e712eeb087e8e7a64b4a56d755"
+ integrity sha1-Cin/t5wxyecS7rCH6OemS0pW11U=
+
+babel-cli@^6.10.1:
+ version "6.18.0"
+ resolved "https://registry.yarnpkg.com/babel-cli/-/babel-cli-6.18.0.tgz#92117f341add9dead90f6fa7d0a97c0cc08ec186"
+ integrity sha1-khF/NBrdnerZD2+n0Kl8DMCOwYY=
+ dependencies:
+ babel-core "^6.18.0"
+ babel-polyfill "^6.16.0"
+ babel-register "^6.18.0"
+ babel-runtime "^6.9.0"
+ commander "^2.8.1"
+ convert-source-map "^1.1.0"
+ fs-readdir-recursive "^1.0.0"
+ glob "^5.0.5"
+ lodash "^4.2.0"
+ output-file-sync "^1.1.0"
+ path-is-absolute "^1.0.0"
+ slash "^1.0.0"
+ source-map "^0.5.0"
+ v8flags "^2.0.10"
+ optionalDependencies:
+ chokidar "^1.0.0"
+
+babel-code-frame@^6.20.0:
+ version "6.20.0"
+ resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.20.0.tgz#b968f839090f9a8bc6d41938fb96cb84f7387b26"
+ integrity sha1-uWj4OQkPmovG1Bk4+5bLhPc4eyY=
+ dependencies:
+ chalk "^1.1.0"
+ esutils "^2.0.2"
+ js-tokens "^2.0.0"
+
+babel-core@^6.18.0:
+ version "6.21.0"
+ resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.21.0.tgz#75525480c21c803f826ef3867d22c19f080a3724"
+ integrity sha1-dVJUgMIcgD+CbvOGfSLBnwgKNyQ=
+ dependencies:
+ babel-code-frame "^6.20.0"
+ babel-generator "^6.21.0"
+ babel-helpers "^6.16.0"
+ babel-messages "^6.8.0"
+ babel-register "^6.18.0"
+ babel-runtime "^6.20.0"
+ babel-template "^6.16.0"
+ babel-traverse "^6.21.0"
+ babel-types "^6.21.0"
+ babylon "^6.11.0"
+ convert-source-map "^1.1.0"
+ debug "^2.1.1"
+ json5 "^0.5.0"
+ lodash "^4.2.0"
+ minimatch "^3.0.2"
+ path-is-absolute "^1.0.0"
+ private "^0.1.6"
+ slash "^1.0.0"
+ source-map "^0.5.0"
+
+babel-generator@^6.21.0:
+ version "6.21.0"
+ resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.21.0.tgz#605f1269c489a1c75deeca7ea16d43d4656c8494"
+ integrity sha1-YF8SacSJocdd7sp+oW1D1GVshJQ=
+ dependencies:
+ babel-messages "^6.8.0"
+ babel-runtime "^6.20.0"
+ babel-types "^6.21.0"
+ detect-indent "^4.0.0"
+ jsesc "^1.3.0"
+ lodash "^4.2.0"
+ source-map "^0.5.0"
+
+babel-helper-flip-expressions@^0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/babel-helper-flip-expressions/-/babel-helper-flip-expressions-0.0.1.tgz#c2ba1599426e7928333fd5c08eee6cdf8328c848"
+ integrity sha1-wroVmUJueSgzP9XAju5s34MoyEg=
+
+babel-helper-is-nodes-equiv@^0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/babel-helper-is-nodes-equiv/-/babel-helper-is-nodes-equiv-0.0.1.tgz#34e9b300b1479ddd98ec77ea0bbe9342dfe39684"
+ integrity sha1-NOmzALFHnd2Y7HfqC76TQt/jloQ=
+
+babel-helper-is-void-0@^0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/babel-helper-is-void-0/-/babel-helper-is-void-0-0.0.1.tgz#ed74553b883e68226ae45f989a99b02c190f105a"
+ integrity sha1-7XRVO4g+aCJq5F+YmpmwLBkPEFo=
+
+babel-helper-remove-or-void@^0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/babel-helper-remove-or-void/-/babel-helper-remove-or-void-0.0.1.tgz#f602790e465acf2dfbe84fb3dd210c43a2dd7262"
+ integrity sha1-9gJ5DkZazy376E+z3SEMQ6LdcmI=
+
+babel-helper-to-multiple-sequence-expressions@^0.0.2:
+ version "0.0.2"
+ resolved "https://registry.yarnpkg.com/babel-helper-to-multiple-sequence-expressions/-/babel-helper-to-multiple-sequence-expressions-0.0.2.tgz#07d5d2e674aa62962ac9e0000b539920c301c4b9"
+ integrity sha1-B9XS5nSqYpYqyeAAC1OZIMMBxLk=
+
+babel-helpers@^6.16.0:
+ version "6.16.0"
+ resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.16.0.tgz#1095ec10d99279460553e67eb3eee9973d3867e3"
+ integrity sha1-EJXsENmSeUYFU+Z+s+7plz04Z+M=
+ dependencies:
+ babel-runtime "^6.0.0"
+ babel-template "^6.16.0"
+
+babel-messages@^6.8.0:
+ version "6.8.0"
+ resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.8.0.tgz#bf504736ca967e6d65ef0adb5a2a5f947c8e0eb9"
+ integrity sha1-v1BHNsqWfm1l7wrbWipflHyODrk=
+ dependencies:
+ babel-runtime "^6.0.0"
+
+babel-plugin-minify-constant-folding@^0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-minify-constant-folding/-/babel-plugin-minify-constant-folding-0.0.1.tgz#d4abb5b62ccfc094bdce2a318b2f94fda5a73e29"
+ integrity sha1-1Ku1tizPwJS9zioxiy+U/aWnPik=
+
+babel-plugin-minify-dead-code-elimination@^0.1.0:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-minify-dead-code-elimination/-/babel-plugin-minify-dead-code-elimination-0.1.1.tgz#1a0133fcd06c7fa477b01c193ba3213c8944ff01"
+ integrity sha1-GgEz/NBsf6R3sBwZO6MhPIlE/wE=
+ dependencies:
+ babel-helper-remove-or-void "^0.0.1"
+ lodash.some "^4.6.0"
+
+babel-plugin-minify-flip-comparisons@^0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-minify-flip-comparisons/-/babel-plugin-minify-flip-comparisons-0.0.1.tgz#679f4493a692afc705c4b79fde1dadb535c4eb08"
+ integrity sha1-Z59Ek6aSr8cFxLef3h2ttTXE6wg=
+ dependencies:
+ babel-helper-is-void-0 "^0.0.1"
+
+babel-plugin-minify-guarded-expressions@^0.0.3:
+ version "0.0.3"
+ resolved "https://registry.yarnpkg.com/babel-plugin-minify-guarded-expressions/-/babel-plugin-minify-guarded-expressions-0.0.3.tgz#6da1caa0b6abda964647377bd5e19afdbf91cae8"
+ integrity sha1-baHKoLar2pZGRzd71eGa/b+Ryug=
+ dependencies:
+ babel-helper-flip-expressions "^0.0.1"
+
+babel-plugin-minify-infinity@^0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-minify-infinity/-/babel-plugin-minify-infinity-0.0.1.tgz#9394a4defc9db56da76f13fedd5d5e2d486a4299"
+ integrity sha1-k5Sk3vydtW2nbxP+3V1eLUhqQpk=
+
+babel-plugin-minify-mangle-names@^0.0.4:
+ version "0.0.4"
+ resolved "https://registry.yarnpkg.com/babel-plugin-minify-mangle-names/-/babel-plugin-minify-mangle-names-0.0.4.tgz#94812c0c82320f7af97511b7d598527933973197"
+ integrity sha1-lIEsDIIyD3r5dRG31ZhSeTOXMZc=
+
+babel-plugin-minify-numeric-literals@^0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-minify-numeric-literals/-/babel-plugin-minify-numeric-literals-0.0.1.tgz#9597e6c31154d7daf3744d0bd417c144b275bd53"
+ integrity sha1-lZfmwxFU19rzdE0L1BfBRLJ1vVM=
+
+babel-plugin-minify-replace@^0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-minify-replace/-/babel-plugin-minify-replace-0.0.1.tgz#5d5aea7cb9899245248d1ee9ce7a2fe556a8facc"
+ integrity sha1-XVrqfLmJkkUkjR7pznov5Vao+sw=
+
+babel-plugin-minify-simplify@^0.0.4:
+ version "0.0.4"
+ resolved "https://registry.yarnpkg.com/babel-plugin-minify-simplify/-/babel-plugin-minify-simplify-0.0.4.tgz#940d0dd0db6d4c4c1c51fc34c3c6e0d0ee1d67e9"
+ integrity sha1-lA0N0NttTEwcUfw0w8bg0O4dZ+k=
+ dependencies:
+ babel-helper-flip-expressions "^0.0.1"
+ babel-helper-is-nodes-equiv "^0.0.1"
+ babel-helper-to-multiple-sequence-expressions "^0.0.2"
+
+babel-plugin-minify-type-constructors@^0.0.2:
+ version "0.0.2"
+ resolved "https://registry.yarnpkg.com/babel-plugin-minify-type-constructors/-/babel-plugin-minify-type-constructors-0.0.2.tgz#4f9a28951e776f31ac11a29cd58cf9eef8b2e292"
+ integrity sha1-T5oolR53bzGsEaKc1Yz57viy4pI=
+ dependencies:
+ babel-helper-is-void-0 "^0.0.1"
+
+babel-plugin-transform-member-expression-literals@^6.8.0:
+ version "6.8.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-member-expression-literals/-/babel-plugin-transform-member-expression-literals-6.8.0.tgz#718755a70492a895d8f41810afa9998bc09f57b9"
+ integrity sha1-cYdVpwSSqJXY9BgQr6mZi8CfV7k=
+ dependencies:
+ babel-runtime "^6.0.0"
+
+babel-plugin-transform-merge-sibling-variables@^6.8.0:
+ version "6.8.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-merge-sibling-variables/-/babel-plugin-transform-merge-sibling-variables-6.8.0.tgz#724074e4ef78b601fcf9a34165c972a1b6117e99"
+ integrity sha1-ckB05O94tgH8+aNBZclyobYRfpk=
+ dependencies:
+ babel-runtime "^6.0.0"
+
+babel-plugin-transform-minify-booleans@^6.8.0:
+ version "6.8.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-minify-booleans/-/babel-plugin-transform-minify-booleans-6.8.0.tgz#b1a48864a727847696b84eae36fa4d085a54b42b"
+ integrity sha1-saSIZKcnhHaWuE6uNvpNCFpUtCs=
+ dependencies:
+ babel-runtime "^6.0.0"
+
+babel-plugin-transform-property-literals@^6.8.0:
+ version "6.8.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-property-literals/-/babel-plugin-transform-property-literals-6.8.0.tgz#a65b2e6e1274d25df0f3a4c5e85bc8f1cdd9e019"
+ integrity sha1-plsubhJ00l3w86TF6FvI8c3Z4Bk=
+ dependencies:
+ babel-runtime "^6.0.0"
+
+babel-plugin-transform-regexp-constructors@^0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-regexp-constructors/-/babel-plugin-transform-regexp-constructors-0.0.1.tgz#c5878cc4d78437e99d02790d325f163741741ff5"
+ integrity sha1-xYeMxNeEN+mdAnkNMl8WN0F0H/U=
+
+babel-plugin-transform-simplify-comparison-operators@^6.8.0:
+ version "6.8.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-simplify-comparison-operators/-/babel-plugin-transform-simplify-comparison-operators-6.8.0.tgz#0183d65bfdc54c80d922a3a9b3008e25fa9d32a7"
+ integrity sha1-AYPWW/3FTIDZIqOpswCOJfqdMqc=
+ dependencies:
+ babel-runtime "^6.0.0"
+
+babel-plugin-transform-undefined-to-void@^6.8.0:
+ version "6.8.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-undefined-to-void/-/babel-plugin-transform-undefined-to-void-6.8.0.tgz#bc5b6b4908d3b1262170e67cb3963903ddce167e"
+ integrity sha1-vFtrSQjTsSYhcOZ8s5Y5A93OFn4=
+ dependencies:
+ babel-runtime "^6.0.0"
+
+babel-polyfill@^6.16.0:
+ version "6.20.0"
+ resolved "https://registry.yarnpkg.com/babel-polyfill/-/babel-polyfill-6.20.0.tgz#de4a371006139e20990aac0be367d398331204e7"
+ integrity sha1-3ko3EAYTniCZCqwL42fTmDMSBOc=
+ dependencies:
+ babel-runtime "^6.20.0"
+ core-js "^2.4.0"
+ regenerator-runtime "^0.10.0"
+
+babel-preset-babili@^0.0.8:
+ version "0.0.8"
+ resolved "https://registry.yarnpkg.com/babel-preset-babili/-/babel-preset-babili-0.0.8.tgz#aeba08a21171166e448fd4226c3cf03bcf682122"
+ integrity sha1-rroIohFxFm5Ej9QibDzwO89oISI=
+ dependencies:
+ babel-plugin-minify-constant-folding "^0.0.1"
+ babel-plugin-minify-dead-code-elimination "^0.1.0"
+ babel-plugin-minify-flip-comparisons "^0.0.1"
+ babel-plugin-minify-guarded-expressions "^0.0.3"
+ babel-plugin-minify-infinity "^0.0.1"
+ babel-plugin-minify-mangle-names "^0.0.4"
+ babel-plugin-minify-numeric-literals "^0.0.1"
+ babel-plugin-minify-replace "^0.0.1"
+ babel-plugin-minify-simplify "^0.0.4"
+ babel-plugin-minify-type-constructors "^0.0.2"
+ babel-plugin-transform-member-expression-literals "^6.8.0"
+ babel-plugin-transform-merge-sibling-variables "^6.8.0"
+ babel-plugin-transform-minify-booleans "^6.8.0"
+ babel-plugin-transform-property-literals "^6.8.0"
+ babel-plugin-transform-regexp-constructors "^0.0.1"
+ babel-plugin-transform-simplify-comparison-operators "^6.8.0"
+ babel-plugin-transform-undefined-to-void "^6.8.0"
+
+babel-register@^6.18.0:
+ version "6.18.0"
+ resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.18.0.tgz#892e2e03865078dd90ad2c715111ec4449b32a68"
+ integrity sha1-iS4uA4ZQeN2QrSxxURHsREmzKmg=
+ dependencies:
+ babel-core "^6.18.0"
+ babel-runtime "^6.11.6"
+ core-js "^2.4.0"
+ home-or-tmp "^2.0.0"
+ lodash "^4.2.0"
+ mkdirp "^0.5.1"
+ source-map-support "^0.4.2"
+
+babel-runtime@^6.0.0, babel-runtime@^6.11.6, babel-runtime@^6.20.0, babel-runtime@^6.9.0:
+ version "6.20.0"
+ resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.20.0.tgz#87300bdcf4cd770f09bf0048c64204e17806d16f"
+ integrity sha1-hzAL3PTNdw8JvwBIxkIE4XgG0W8=
+ dependencies:
+ core-js "^2.4.0"
+ regenerator-runtime "^0.10.0"
+
+babel-template@^6.16.0:
+ version "6.16.0"
+ resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.16.0.tgz#e149dd1a9f03a35f817ddbc4d0481988e7ebc8ca"
+ integrity sha1-4UndGp8Do1+BfdvE0EgZiOfryMo=
+ dependencies:
+ babel-runtime "^6.9.0"
+ babel-traverse "^6.16.0"
+ babel-types "^6.16.0"
+ babylon "^6.11.0"
+ lodash "^4.2.0"
+
+babel-traverse@^6.16.0, babel-traverse@^6.21.0:
+ version "6.21.0"
+ resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.21.0.tgz#69c6365804f1a4f69eb1213f85b00a818b8c21ad"
+ integrity sha1-acY2WATxpPaesSE/hbAKgYuMIa0=
+ dependencies:
+ babel-code-frame "^6.20.0"
+ babel-messages "^6.8.0"
+ babel-runtime "^6.20.0"
+ babel-types "^6.21.0"
+ babylon "^6.11.0"
+ debug "^2.2.0"
+ globals "^9.0.0"
+ invariant "^2.2.0"
+ lodash "^4.2.0"
+
+babel-types@^6.16.0, babel-types@^6.21.0:
+ version "6.21.0"
+ resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.21.0.tgz#314b92168891ef6d3806b7f7a917fdf87c11a4b2"
+ integrity sha1-MUuSFoiR7204Brf3qRf9+HwRpLI=
+ dependencies:
+ babel-runtime "^6.20.0"
+ esutils "^2.0.2"
+ lodash "^4.2.0"
+ to-fast-properties "^1.0.1"
+
+babili@^0.0.9:
+ version "0.0.9"
+ resolved "https://registry.yarnpkg.com/babili/-/babili-0.0.9.tgz#cf1277f34d8265101847e2c5ac11771684f2b1d4"
+ integrity sha1-zxJ3802CZRAYR+LFrBF3FoTysdQ=
+ dependencies:
+ babel-cli "^6.10.1"
+ babel-preset-babili "^0.0.8"
+
+babylon@^6.11.0:
+ version "6.14.1"
+ resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.14.1.tgz#956275fab72753ad9b3435d7afe58f8bf0a29815"
+ integrity sha1-lWJ1+rcnU62bNDXXr+WPi/CimBU=
+
+balanced-match@^0.4.1:
+ version "0.4.2"
+ resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838"
+ integrity sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=
+
+base64-js@^1.0.2:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.2.0.tgz#a39992d723584811982be5e290bb6a53d86700f1"
+ integrity sha1-o5mS1yNYSBGYK+XikLtqU9hnAPE=
+
+bcrypt-pbkdf@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.0.tgz#3ca76b85241c7170bf7d9703e7b9aa74630040d4"
+ integrity sha1-PKdrhSQccXC/fZcD57mqdGMAQNQ=
+ dependencies:
+ tweetnacl "^0.14.3"
+
+big.js@^3.1.3:
+ version "3.1.3"
+ resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.1.3.tgz#4cada2193652eb3ca9ec8e55c9015669c9806978"
+ integrity sha1-TK2iGTZS6zyp7I5VyQFWacmAaXg=
+
+binary-extensions@^1.0.0:
+ version "1.8.0"
+ resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.8.0.tgz#48ec8d16df4377eae5fa5884682480af4d95c774"
+ integrity sha1-SOyNFt9Dd+rl+liEaCSAr02Vx3Q=
+
+block-stream@*:
+ version "0.0.9"
+ resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a"
+ integrity sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=
+ dependencies:
+ inherits "~2.0.0"
+
+boom@2.x.x:
+ version "2.10.1"
+ resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f"
+ integrity sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=
+ dependencies:
+ hoek "2.x.x"
+
+brace-expansion@^1.0.0:
+ version "1.1.6"
+ resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.6.tgz#7197d7eaa9b87e648390ea61fc66c84427420df9"
+ integrity sha1-cZfX6qm4fmSDkOph/GbIRCdCDfk=
+ dependencies:
+ balanced-match "^0.4.1"
+ concat-map "0.0.1"
+
+braces@^1.8.2:
+ version "1.8.5"
+ resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7"
+ integrity sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=
+ dependencies:
+ expand-range "^1.8.1"
+ preserve "^0.2.0"
+ repeat-element "^1.1.2"
+
+browserify-aes@0.4.0:
+ version "0.4.0"
+ resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-0.4.0.tgz#067149b668df31c4b58533e02d01e806d8608e2c"
+ integrity sha1-BnFJtmjfMcS1hTPgLQHoBthgjiw=
+ dependencies:
+ inherits "^2.0.1"
+
+browserify-zlib@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.1.4.tgz#bb35f8a519f600e0fa6b8485241c979d0141fb2d"
+ integrity sha1-uzX4pRn2AOD6a4SFJByXnQFB+y0=
+ dependencies:
+ pako "~0.2.0"
+
+buffer-shims@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/buffer-shims/-/buffer-shims-1.0.0.tgz#9978ce317388c649ad8793028c3477ef044a8b51"
+ integrity sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=
+
+buffer@^4.9.0:
+ version "4.9.1"
+ resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298"
+ integrity sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=
+ dependencies:
+ base64-js "^1.0.2"
+ ieee754 "^1.1.4"
+ isarray "^1.0.0"
+
+builtin-modules@^1.0.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f"
+ integrity sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=
+
+builtin-status-codes@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8"
+ integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=
+
+camelcase-keys@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7"
+ integrity sha1-MIvur/3ygRkFHvodkyITyRuPkuc=
+ dependencies:
+ camelcase "^2.0.0"
+ map-obj "^1.0.0"
+
+camelcase@^1.0.2:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39"
+ integrity sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=
+
+camelcase@^2.0.0:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f"
+ integrity sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=
+
+caseless@~0.11.0:
+ version "0.11.0"
+ resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.11.0.tgz#715b96ea9841593cc33067923f5ec60ebda4f7d7"
+ integrity sha1-cVuW6phBWTzDMGeSP17GDr2k99c=
+
+center-align@^0.1.1:
+ version "0.1.3"
+ resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad"
+ integrity sha1-qg0yYptu6XIgBBHL1EYckHvCt60=
+ dependencies:
+ align-text "^0.1.3"
+ lazy-cache "^1.0.3"
+
+chalk@^1.1.0, chalk@^1.1.1:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98"
+ integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=
+ dependencies:
+ ansi-styles "^2.2.1"
+ escape-string-regexp "^1.0.2"
+ has-ansi "^2.0.0"
+ strip-ansi "^3.0.0"
+ supports-color "^2.0.0"
+
+chokidar@^1.0.0:
+ version "1.6.1"
+ resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.6.1.tgz#2f4447ab5e96e50fb3d789fd90d4c72e0e4c70c2"
+ integrity sha1-L0RHq16W5Q+z14n9kNTHLg5McMI=
+ dependencies:
+ anymatch "^1.3.0"
+ async-each "^1.0.0"
+ glob-parent "^2.0.0"
+ inherits "^2.0.1"
+ is-binary-path "^1.0.0"
+ is-glob "^2.0.0"
+ path-is-absolute "^1.0.0"
+ readdirp "^2.0.0"
+ optionalDependencies:
+ fsevents "^1.0.0"
+
+cliui@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1"
+ integrity sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=
+ dependencies:
+ center-align "^0.1.1"
+ right-align "^0.1.1"
+ wordwrap "0.0.2"
+
+clone@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.2.tgz#260b7a99ebb1edfe247538175f783243cb19d149"
+ integrity sha1-Jgt6meux7f4kdTgXX3gyQ8sZ0Uk=
+
+code-point-at@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77"
+ integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=
+
+combined-stream@^1.0.5, combined-stream@~1.0.5:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.5.tgz#938370a57b4a51dea2c77c15d5c5fdf895164009"
+ integrity sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=
+ dependencies:
+ delayed-stream "~1.0.0"
+
+commander@^2.8.1, commander@^2.9.0:
+ version "2.9.0"
+ resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4"
+ integrity sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=
+ dependencies:
+ graceful-readlink ">= 1.0.0"
+
+concat-map@0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
+ integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
+
+console-browserify@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10"
+ integrity sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=
+ dependencies:
+ date-now "^0.1.4"
+
+console-control-strings@^1.0.0, console-control-strings@~1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e"
+ integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=
+
+constants-browserify@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75"
+ integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=
+
+convert-source-map@^1.1.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.3.0.tgz#e9f3e9c6e2728efc2676696a70eb382f73106a67"
+ integrity sha1-6fPpxuJyjvwmdmlqcOs4L3MQamc=
+
+core-js@^2.4.0:
+ version "2.4.1"
+ resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.4.1.tgz#4de911e667b0eae9124e34254b53aea6fc618d3e"
+ integrity sha1-TekR5mew6ukSTjQlS1OupvxhjT4=
+
+core-util-is@~1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
+ integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=
+
+cryptiles@2.x.x:
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8"
+ integrity sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=
+ dependencies:
+ boom "2.x.x"
+
+crypto-browserify@3.3.0:
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.3.0.tgz#b9fc75bb4a0ed61dcf1cd5dae96eb30c9c3e506c"
+ integrity sha1-ufx1u0oO1h3PHNXa6W6zDJw+UGw=
+ dependencies:
+ browserify-aes "0.4.0"
+ pbkdf2-compat "2.0.1"
+ ripemd160 "0.2.0"
+ sha.js "2.2.6"
+
+currently-unhandled@^0.4.1:
+ version "0.4.1"
+ resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea"
+ integrity sha1-mI3zP+qxke95mmE2nddsF635V+o=
+ dependencies:
+ array-find-index "^1.0.1"
+
+dashdash@^1.12.0:
+ version "1.14.1"
+ resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0"
+ integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=
+ dependencies:
+ assert-plus "^1.0.0"
+
+date-now@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b"
+ integrity sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=
+
+debug@^2.1.1, debug@^2.2.0, debug@~2.2.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da"
+ integrity sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=
+ dependencies:
+ ms "0.7.1"
+
+decamelize@^1.0.0, decamelize@^1.1.2:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
+ integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=
+
+deep-extend@~0.4.0:
+ version "0.4.1"
+ resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.1.tgz#efe4113d08085f4e6f9687759810f807469e2253"
+ integrity sha1-7+QRPQgIX05vlod1mBD4B0aeIlM=
+
+delayed-stream@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
+ integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk=
+
+delegates@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a"
+ integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=
+
+detect-indent@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208"
+ integrity sha1-920GQ1LN9Docts5hnE7jqUdd4gg=
+ dependencies:
+ repeating "^2.0.0"
+
+domain-browser@^1.1.1:
+ version "1.1.7"
+ resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.1.7.tgz#867aa4b093faa05f1de08c06f4d7b21fdf8698bc"
+ integrity sha1-hnqksJP6oF8d4IwG9NeyH9+GmLw=
+
+duplexer@^0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1"
+ integrity sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=
+
+ecc-jsbn@~0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505"
+ integrity sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=
+ dependencies:
+ jsbn "~0.1.0"
+
+emojis-list@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389"
+ integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k=
+
+enhanced-resolve@~0.9.0:
+ version "0.9.1"
+ resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-0.9.1.tgz#4d6e689b3725f86090927ccc86cd9f1635b89e2e"
+ integrity sha1-TW5omzcl+GCQknzMhs2fFjW4ni4=
+ dependencies:
+ graceful-fs "^4.1.2"
+ memory-fs "^0.2.0"
+ tapable "^0.1.8"
+
+errno@^0.1.3:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.4.tgz#b896e23a9e5e8ba33871fc996abd3635fc9a1c7d"
+ integrity sha1-uJbiOp5ei6M4cfyZar02NfyaHH0=
+ dependencies:
+ prr "~0.0.0"
+
+error-ex@^1.2.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.0.tgz#e67b43f3e82c96ea3a584ffee0b9fc3325d802d9"
+ integrity sha1-5ntD8+gsluo6WE/+4Ln8MyXYAtk=
+ dependencies:
+ is-arrayish "^0.2.1"
+
+escape-string-regexp@^1.0.2:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
+ integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
+
+esutils@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b"
+ integrity sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=
+
+events@^1.0.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924"
+ integrity sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=
+
+expand-brackets@^0.1.4:
+ version "0.1.5"
+ resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b"
+ integrity sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=
+ dependencies:
+ is-posix-bracket "^0.1.0"
+
+expand-range@^1.8.1:
+ version "1.8.2"
+ resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337"
+ integrity sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=
+ dependencies:
+ fill-range "^2.1.0"
+
+extend@~3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.0.tgz#5a474353b9f3353ddd8176dfd37b91c83a46f1d4"
+ integrity sha1-WkdDU7nzNT3dgXbf03uRyDpG8dQ=
+
+extglob@^0.3.1:
+ version "0.3.2"
+ resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1"
+ integrity sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=
+ dependencies:
+ is-extglob "^1.0.0"
+
+extsprintf@1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.0.2.tgz#e1080e0658e300b06294990cc70e1502235fd550"
+ integrity sha1-4QgOBljjALBilJkMxw4VAiNf1VA=
+
+filename-regex@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.0.tgz#996e3e80479b98b9897f15a8a58b3d084e926775"
+ integrity sha1-mW4+gEebmLmJfxWopYs9CE6SZ3U=
+
+fill-range@^2.1.0:
+ version "2.2.3"
+ resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723"
+ integrity sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=
+ dependencies:
+ is-number "^2.1.0"
+ isobject "^2.0.0"
+ randomatic "^1.1.3"
+ repeat-element "^1.1.2"
+ repeat-string "^1.5.2"
+
+find-up@^1.0.0:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f"
+ integrity sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=
+ dependencies:
+ path-exists "^2.0.0"
+ pinkie-promise "^2.0.0"
+
+for-in@^0.1.5:
+ version "0.1.6"
+ resolved "https://registry.yarnpkg.com/for-in/-/for-in-0.1.6.tgz#c9f96e89bfad18a545af5ec3ed352a1d9e5b4dc8"
+ integrity sha1-yfluib+tGKVFr17D7TUqHZ5bTcg=
+
+for-own@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.4.tgz#0149b41a39088c7515f51ebe1c1386d45f935072"
+ integrity sha1-AUm0GjkIjHUV9R6+HBOG1F+TUHI=
+ dependencies:
+ for-in "^0.1.5"
+
+forever-agent@~0.6.1:
+ version "0.6.1"
+ resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91"
+ integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=
+
+form-data@~2.1.1:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.2.tgz#89c3534008b97eada4cbb157d58f6f5df025eae4"
+ integrity sha1-icNTQAi5fq2ky7FX1Y9vXfAl6uQ=
+ dependencies:
+ asynckit "^0.4.0"
+ combined-stream "^1.0.5"
+ mime-types "^2.1.12"
+
+fs-readdir-recursive@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-1.0.0.tgz#8cd1745c8b4f8a29c8caec392476921ba195f560"
+ integrity sha1-jNF0XItPiinIyuw5JHaSG6GV9WA=
+
+fs.realpath@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
+ integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8=
+
+fsevents@^1.0.0:
+ version "1.0.17"
+ resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.0.17.tgz#8537f3f12272678765b4fd6528c0f1f66f8f4558"
+ integrity sha1-hTfz8SJyZ4dltP1lKMDx9m+PRVg=
+ dependencies:
+ nan "^2.3.0"
+ node-pre-gyp "^0.6.29"
+
+fstream-ignore@~1.0.5:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/fstream-ignore/-/fstream-ignore-1.0.5.tgz#9c31dae34767018fe1d249b24dada67d092da105"
+ integrity sha1-nDHa40dnAY/h0kmyTa2mfQktoQU=
+ dependencies:
+ fstream "^1.0.0"
+ inherits "2"
+ minimatch "^3.0.0"
+
+fstream@^1.0.0, fstream@^1.0.2, fstream@~1.0.10:
+ version "1.0.10"
+ resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.10.tgz#604e8a92fe26ffd9f6fae30399d4984e1ab22822"
+ integrity sha1-YE6Kkv4m/9n2+uMDmdSYThqyKCI=
+ dependencies:
+ graceful-fs "^4.1.2"
+ inherits "~2.0.0"
+ mkdirp ">=0.5 0"
+ rimraf "2"
+
+gauge@~2.7.1:
+ version "2.7.2"
+ resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.2.tgz#15cecc31b02d05345a5d6b0e171cdb3ad2307774"
+ integrity sha1-Fc7MMbAtBTRaXWsOFxzbOtIwd3Q=
+ dependencies:
+ aproba "^1.0.3"
+ console-control-strings "^1.0.0"
+ has-unicode "^2.0.0"
+ object-assign "^4.1.0"
+ signal-exit "^3.0.0"
+ string-width "^1.0.1"
+ strip-ansi "^3.0.1"
+ supports-color "^0.2.0"
+ wide-align "^1.1.0"
+
+generate-function@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/generate-function/-/generate-function-2.0.0.tgz#6858fe7c0969b7d4e9093337647ac79f60dfbe74"
+ integrity sha1-aFj+fAlpt9TpCTM3ZHrHn2DfvnQ=
+
+generate-object-property@^1.1.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/generate-object-property/-/generate-object-property-1.2.0.tgz#9c0e1c40308ce804f4783618b937fa88f99d50d0"
+ integrity sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=
+ dependencies:
+ is-property "^1.0.0"
+
+get-stdin@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe"
+ integrity sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=
+
+get-stdin@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-5.0.1.tgz#122e161591e21ff4c52530305693f20e6393a398"
+ integrity sha1-Ei4WFZHiH/TFJTAwVpPyDmOTo5g=
+
+getpass@^0.1.1:
+ version "0.1.6"
+ resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.6.tgz#283ffd9fc1256840875311c1b60e8c40187110e6"
+ integrity sha1-KD/9n8ElaECHUxHBtg6MQBhxEOY=
+ dependencies:
+ assert-plus "^1.0.0"
+
+glob-base@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4"
+ integrity sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=
+ dependencies:
+ glob-parent "^2.0.0"
+ is-glob "^2.0.0"
+
+glob-parent@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28"
+ integrity sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=
+ dependencies:
+ is-glob "^2.0.0"
+
+glob@^5.0.5:
+ version "5.0.15"
+ resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1"
+ integrity sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=
+ dependencies:
+ inflight "^1.0.4"
+ inherits "2"
+ minimatch "2 || 3"
+ once "^1.3.0"
+ path-is-absolute "^1.0.0"
+
+glob@^7.0.5:
+ version "7.1.1"
+ resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8"
+ integrity sha1-gFIR3wT6rxxjo2ADBs31reULLsg=
+ dependencies:
+ fs.realpath "^1.0.0"
+ inflight "^1.0.4"
+ inherits "2"
+ minimatch "^3.0.2"
+ once "^1.3.0"
+ path-is-absolute "^1.0.0"
+
+globals@^9.0.0:
+ version "9.14.0"
+ resolved "https://registry.yarnpkg.com/globals/-/globals-9.14.0.tgz#8859936af0038741263053b39d0e76ca241e4034"
+ integrity sha1-iFmTavADh0EmMFOznQ52yiQeQDQ=
+
+graceful-fs@^4.1.2, graceful-fs@^4.1.4:
+ version "4.1.11"
+ resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658"
+ integrity sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=
+
+"graceful-readlink@>= 1.0.0":
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725"
+ integrity sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=
+
+gzip-size-cli@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/gzip-size-cli/-/gzip-size-cli-1.0.0.tgz#97ef47b1600a2ad8f9c31539661eab39ec36caed"
+ integrity sha1-l+9HsWAKKtj5wxU5Zh6rOew2yu0=
+ dependencies:
+ gzip-size "^3.0.0"
+ meow "^3.3.0"
+
+gzip-size@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-3.0.0.tgz#546188e9bdc337f673772f81660464b389dce520"
+ integrity sha1-VGGI6b3DN/Zzdy+BZgRks4nc5SA=
+ dependencies:
+ duplexer "^0.1.1"
+
+har-validator@~2.0.6:
+ version "2.0.6"
+ resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-2.0.6.tgz#cdcbc08188265ad119b6a5a7c8ab70eecfb5d27d"
+ integrity sha1-zcvAgYgmWtEZtqWnyKtw7s+10n0=
+ dependencies:
+ chalk "^1.1.1"
+ commander "^2.9.0"
+ is-my-json-valid "^2.12.4"
+ pinkie-promise "^2.0.0"
+
+has-ansi@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91"
+ integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=
+ dependencies:
+ ansi-regex "^2.0.0"
+
+has-flag@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa"
+ integrity sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=
+
+has-unicode@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9"
+ integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=
+
+hawk@~3.1.3:
+ version "3.1.3"
+ resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4"
+ integrity sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=
+ dependencies:
+ boom "2.x.x"
+ cryptiles "2.x.x"
+ hoek "2.x.x"
+ sntp "1.x.x"
+
+hoek@2.x.x:
+ version "2.16.3"
+ resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed"
+ integrity sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=
+
+home-or-tmp@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8"
+ integrity sha1-42w/LSyufXRqhX440Y1fMqeILbg=
+ dependencies:
+ os-homedir "^1.0.0"
+ os-tmpdir "^1.0.1"
+
+hosted-git-info@^2.1.4:
+ version "2.1.5"
+ resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.1.5.tgz#0ba81d90da2e25ab34a332e6ec77936e1598118b"
+ integrity sha1-C6gdkNouJas0ozLm7HeTbhWYEYs=
+
+http-signature@~1.1.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf"
+ integrity sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=
+ dependencies:
+ assert-plus "^0.2.0"
+ jsprim "^1.2.2"
+ sshpk "^1.7.0"
+
+https-browserify@0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-0.0.1.tgz#3f91365cabe60b77ed0ebba24b454e3e09d95a82"
+ integrity sha1-P5E2XKvmC3ftDruiS0VOPgnZWoI=
+
+ieee754@^1.1.4:
+ version "1.1.8"
+ resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.8.tgz#be33d40ac10ef1926701f6f08a2d86fbfd1ad3e4"
+ integrity sha1-vjPUCsEO8ZJnAfbwii2G+/0a0+Q=
+
+indent-string@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80"
+ integrity sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=
+ dependencies:
+ repeating "^2.0.0"
+
+indexof@0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d"
+ integrity sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=
+
+inflight@^1.0.4:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
+ integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=
+ dependencies:
+ once "^1.3.0"
+ wrappy "1"
+
+inherits@2, inherits@^2.0.1, inherits@~2.0.0, inherits@~2.0.1:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
+ integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=
+
+inherits@2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1"
+ integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=
+
+ini@~1.3.0:
+ version "1.3.4"
+ resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e"
+ integrity sha1-BTfLedr1m1mhpRff9wbIbsA5Fi4=
+
+interpret@^0.6.4:
+ version "0.6.6"
+ resolved "https://registry.yarnpkg.com/interpret/-/interpret-0.6.6.tgz#fecd7a18e7ce5ca6abfb953e1f86213a49f1625b"
+ integrity sha1-/s16GOfOXKar+5U+H4YhOknxYls=
+
+invariant@^2.2.0:
+ version "2.2.2"
+ resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.2.tgz#9e1f56ac0acdb6bf303306f338be3b204ae60360"
+ integrity sha1-nh9WrArNtr8wMwbzOL47IErmA2A=
+ dependencies:
+ loose-envify "^1.0.0"
+
+is-arrayish@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
+ integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=
+
+is-binary-path@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898"
+ integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=
+ dependencies:
+ binary-extensions "^1.0.0"
+
+is-buffer@^1.0.2:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.4.tgz#cfc86ccd5dc5a52fa80489111c6920c457e2d98b"
+ integrity sha1-z8hszV3FpS+oBIkRHGkgxFfi2Ys=
+
+is-builtin-module@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe"
+ integrity sha1-VAVy0096wxGfj3bDDLwbHgN6/74=
+ dependencies:
+ builtin-modules "^1.0.0"
+
+is-dotfile@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.2.tgz#2c132383f39199f8edc268ca01b9b007d205cc4d"
+ integrity sha1-LBMjg/ORmfjtwmjKAbmwB9IFzE0=
+
+is-equal-shallow@^0.1.3:
+ version "0.1.3"
+ resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534"
+ integrity sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=
+ dependencies:
+ is-primitive "^2.0.0"
+
+is-extendable@^0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89"
+ integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=
+
+is-extglob@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0"
+ integrity sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=
+
+is-finite@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa"
+ integrity sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=
+ dependencies:
+ number-is-nan "^1.0.0"
+
+is-fullwidth-code-point@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb"
+ integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs=
+ dependencies:
+ number-is-nan "^1.0.0"
+
+is-glob@^2.0.0, is-glob@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863"
+ integrity sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=
+ dependencies:
+ is-extglob "^1.0.0"
+
+is-my-json-valid@^2.12.4:
+ version "2.15.0"
+ resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.15.0.tgz#936edda3ca3c211fd98f3b2d3e08da43f7b2915b"
+ integrity sha1-k27do8o8IR/ZjzstPgjaQ/eykVs=
+ dependencies:
+ generate-function "^2.0.0"
+ generate-object-property "^1.1.0"
+ jsonpointer "^4.0.0"
+ xtend "^4.0.0"
+
+is-number@^2.0.2, is-number@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f"
+ integrity sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=
+ dependencies:
+ kind-of "^3.0.2"
+
+is-posix-bracket@^0.1.0:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4"
+ integrity sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=
+
+is-primitive@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575"
+ integrity sha1-IHurkWOEmcB7Kt8kCkGochADRXU=
+
+is-property@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84"
+ integrity sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=
+
+is-typedarray@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
+ integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=
+
+is-utf8@^0.2.0:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72"
+ integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=
+
+isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
+ integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=
+
+isobject@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89"
+ integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=
+ dependencies:
+ isarray "1.0.0"
+
+isstream@~0.1.2:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
+ integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=
+
+jodid25519@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/jodid25519/-/jodid25519-1.0.2.tgz#06d4912255093419477d425633606e0e90782967"
+ integrity sha1-BtSRIlUJNBlHfUJWM2BuDpB4KWc=
+ dependencies:
+ jsbn "~0.1.0"
+
+js-tokens@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-2.0.0.tgz#79903f5563ee778cc1162e6dcf1a0027c97f9cb5"
+ integrity sha1-eZA/VWPud4zBFi5tzxoAJ8l/nLU=
+
+jsbn@~0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.0.tgz#650987da0dd74f4ebf5a11377a2aa2d273e97dfd"
+ integrity sha1-ZQmH2g3XT06/WhE3eiqi0nPpff0=
+
+jsesc@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b"
+ integrity sha1-RsP+yMGJKxKwgz25vHYiF226s0s=
+
+json-schema@0.2.3:
+ version "0.2.3"
+ resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13"
+ integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=
+
+json-stringify-safe@~5.0.1:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"
+ integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=
+
+json5@^0.5.0:
+ version "0.5.1"
+ resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821"
+ integrity sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=
+
+jsonpointer@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.0.1.tgz#4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9"
+ integrity sha1-T9kss04OnbPInIYi7PUfm5eMbLk=
+
+jsprim@^1.2.2:
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.3.1.tgz#2a7256f70412a29ee3670aaca625994c4dcff252"
+ integrity sha1-KnJW9wQSop7jZwqspiWZTE3P8lI=
+ dependencies:
+ extsprintf "1.0.2"
+ json-schema "0.2.3"
+ verror "1.3.6"
+
+kind-of@^3.0.2:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.1.0.tgz#475d698a5e49ff5e53d14e3e732429dc8bf4cf47"
+ integrity sha1-R11pil5J/15T0U4+cyQp3Iv0z0c=
+ dependencies:
+ is-buffer "^1.0.2"
+
+lazy-cache@^1.0.3:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e"
+ integrity sha1-odePw6UEdMuAhF07O24dpJpEbo4=
+
+load-json-file@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0"
+ integrity sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=
+ dependencies:
+ graceful-fs "^4.1.2"
+ parse-json "^2.2.0"
+ pify "^2.0.0"
+ pinkie-promise "^2.0.0"
+ strip-bom "^2.0.0"
+
+loader-utils@^0.2.11:
+ version "0.2.16"
+ resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-0.2.16.tgz#f08632066ed8282835dff88dfb52704765adee6d"
+ integrity sha1-8IYyBm7YKCg13/iN+1JwR2Wt7m0=
+ dependencies:
+ big.js "^3.1.3"
+ emojis-list "^2.0.0"
+ json5 "^0.5.0"
+ object-assign "^4.0.1"
+
+lodash.some@^4.6.0:
+ version "4.6.0"
+ resolved "https://registry.yarnpkg.com/lodash.some/-/lodash.some-4.6.0.tgz#1bb9f314ef6b8baded13b549169b2a945eb68e4d"
+ integrity sha1-G7nzFO9ri63tE7VJFpsqlF62jk0=
+
+lodash@^4.2.0:
+ version "4.17.4"
+ resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae"
+ integrity sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=
+
+longest@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097"
+ integrity sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=
+
+loose-envify@^1.0.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.3.0.tgz#6b26248c42f6d4fa4b0d8542f78edfcde35642a8"
+ integrity sha1-ayYkjEL21PpLDYVC947fzeNWQqg=
+ dependencies:
+ js-tokens "^2.0.0"
+
+loud-rejection@^1.0.0:
+ version "1.6.0"
+ resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f"
+ integrity sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=
+ dependencies:
+ currently-unhandled "^0.4.1"
+ signal-exit "^3.0.0"
+
+map-obj@^1.0.0, map-obj@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d"
+ integrity sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=
+
+memory-fs@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.2.0.tgz#f2bb25368bc121e391c2520de92969caee0a0290"
+ integrity sha1-8rslNovBIeORwlIN6Slpyu4KApA=
+
+memory-fs@~0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.3.0.tgz#7bcc6b629e3a43e871d7e29aca6ae8a7f15cbb20"
+ integrity sha1-e8xrYp46Q+hx1+Kaymrop/FcuyA=
+ dependencies:
+ errno "^0.1.3"
+ readable-stream "^2.0.1"
+
+meow@^3.3.0, meow@^3.6.0:
+ version "3.7.0"
+ resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb"
+ integrity sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=
+ dependencies:
+ camelcase-keys "^2.0.0"
+ decamelize "^1.1.2"
+ loud-rejection "^1.0.0"
+ map-obj "^1.0.1"
+ minimist "^1.1.3"
+ normalize-package-data "^2.3.4"
+ object-assign "^4.0.1"
+ read-pkg-up "^1.0.1"
+ redent "^1.0.0"
+ trim-newlines "^1.0.0"
+
+micromatch@^2.1.5:
+ version "2.3.11"
+ resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565"
+ integrity sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=
+ dependencies:
+ arr-diff "^2.0.0"
+ array-unique "^0.2.1"
+ braces "^1.8.2"
+ expand-brackets "^0.1.4"
+ extglob "^0.3.1"
+ filename-regex "^2.0.0"
+ is-extglob "^1.0.0"
+ is-glob "^2.0.1"
+ kind-of "^3.0.2"
+ normalize-path "^2.0.1"
+ object.omit "^2.0.0"
+ parse-glob "^3.0.4"
+ regex-cache "^0.4.2"
+
+mime-db@~1.25.0:
+ version "1.25.0"
+ resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.25.0.tgz#c18dbd7c73a5dbf6f44a024dc0d165a1e7b1c392"
+ integrity sha1-wY29fHOl2/b0SgJNwNFloeexw5I=
+
+mime-types@^2.1.12, mime-types@~2.1.7:
+ version "2.1.13"
+ resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.13.tgz#e07aaa9c6c6b9a7ca3012c69003ad25a39e92a88"
+ integrity sha1-4HqqnGxrmnyjASxpADrSWjnpKog=
+ dependencies:
+ mime-db "~1.25.0"
+
+"minimatch@2 || 3", minimatch@^3.0.0, minimatch@^3.0.2:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.3.tgz#2a4e4090b96b2db06a9d7df01055a62a77c9b774"
+ integrity sha1-Kk5AkLlrLbBqnX3wEFWmKnfJt3Q=
+ dependencies:
+ brace-expansion "^1.0.0"
+
+minimist@0.0.8, minimist@~0.0.1:
+ version "0.0.8"
+ resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d"
+ integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=
+
+minimist@^1.1.3, minimist@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
+ integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=
+
+"mkdirp@>=0.5 0", mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1:
+ version "0.5.1"
+ resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903"
+ integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=
+ dependencies:
+ minimist "0.0.8"
+
+ms@0.7.1:
+ version "0.7.1"
+ resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.1.tgz#9cd13c03adbff25b65effde7ce864ee952017098"
+ integrity sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=
+
+nan@^2.3.0:
+ version "2.5.0"
+ resolved "https://registry.yarnpkg.com/nan/-/nan-2.5.0.tgz#aa8f1e34531d807e9e27755b234b4a6ec0c152a8"
+ integrity sha1-qo8eNFMdgH6eJ3VbI0tKbsDBUqg=
+
+node-libs-browser@^0.7.0:
+ version "0.7.0"
+ resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-0.7.0.tgz#3e272c0819e308935e26674408d7af0e1491b83b"
+ integrity sha1-PicsCBnjCJNeJmdECNevDhSRuDs=
+ dependencies:
+ assert "^1.1.1"
+ browserify-zlib "^0.1.4"
+ buffer "^4.9.0"
+ console-browserify "^1.1.0"
+ constants-browserify "^1.0.0"
+ crypto-browserify "3.3.0"
+ domain-browser "^1.1.1"
+ events "^1.0.0"
+ https-browserify "0.0.1"
+ os-browserify "^0.2.0"
+ path-browserify "0.0.0"
+ process "^0.11.0"
+ punycode "^1.2.4"
+ querystring-es3 "^0.2.0"
+ readable-stream "^2.0.5"
+ stream-browserify "^2.0.1"
+ stream-http "^2.3.1"
+ string_decoder "^0.10.25"
+ timers-browserify "^2.0.2"
+ tty-browserify "0.0.0"
+ url "^0.11.0"
+ util "^0.10.3"
+ vm-browserify "0.0.4"
+
+node-pre-gyp@^0.6.29:
+ version "0.6.32"
+ resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.32.tgz#fc452b376e7319b3d255f5f34853ef6fd8fe1fd5"
+ integrity sha1-/EUrN25zGbPSVfXzSFPvb9j+H9U=
+ dependencies:
+ mkdirp "~0.5.1"
+ nopt "~3.0.6"
+ npmlog "^4.0.1"
+ rc "~1.1.6"
+ request "^2.79.0"
+ rimraf "~2.5.4"
+ semver "~5.3.0"
+ tar "~2.2.1"
+ tar-pack "~3.3.0"
+
+nopt@~3.0.6:
+ version "3.0.6"
+ resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9"
+ integrity sha1-xkZdvwirzU2zWTF/eaxopkayj/k=
+ dependencies:
+ abbrev "1"
+
+normalize-package-data@^2.3.2, normalize-package-data@^2.3.4:
+ version "2.3.5"
+ resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.3.5.tgz#8d924f142960e1777e7ffe170543631cc7cb02df"
+ integrity sha1-jZJPFClg4Xd+f/4XBUNjHMfLAt8=
+ dependencies:
+ hosted-git-info "^2.1.4"
+ is-builtin-module "^1.0.0"
+ semver "2 || 3 || 4 || 5"
+ validate-npm-package-license "^3.0.1"
+
+normalize-path@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.0.1.tgz#47886ac1662760d4261b7d979d241709d3ce3f7a"
+ integrity sha1-R4hqwWYnYNQmG32XnSQXCdPOP3o=
+
+npmlog@^4.0.1:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.0.2.tgz#d03950e0e78ce1527ba26d2a7592e9348ac3e75f"
+ integrity sha1-0DlQ4OeM4VJ7om0qdZLpNIrD518=
+ dependencies:
+ are-we-there-yet "~1.1.2"
+ console-control-strings "~1.1.0"
+ gauge "~2.7.1"
+ set-blocking "~2.0.0"
+
+number-is-nan@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d"
+ integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=
+
+oauth-sign@~0.8.1:
+ version "0.8.2"
+ resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43"
+ integrity sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=
+
+object-assign@^4.0.1, object-assign@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.0.tgz#7a3b3d0e98063d43f4c03f2e8ae6cd51a86883a0"
+ integrity sha1-ejs9DpgGPUP0wD8uiubNUahog6A=
+
+object.omit@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa"
+ integrity sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=
+ dependencies:
+ for-own "^0.1.4"
+ is-extendable "^0.1.1"
+
+once@^1.3.0, once@~1.3.3:
+ version "1.3.3"
+ resolved "https://registry.yarnpkg.com/once/-/once-1.3.3.tgz#b2e261557ce4c314ec8304f3fa82663e4297ca20"
+ integrity sha1-suJhVXzkwxTsgwTz+oJmPkKXyiA=
+ dependencies:
+ wrappy "1"
+
+optimist@~0.6.0:
+ version "0.6.1"
+ resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686"
+ integrity sha1-2j6nRob6IaGaERwybpDrFaAZZoY=
+ dependencies:
+ minimist "~0.0.1"
+ wordwrap "~0.0.2"
+
+os-browserify@^0.2.0:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.2.1.tgz#63fc4ccee5d2d7763d26bbf8601078e6c2e0044f"
+ integrity sha1-Y/xMzuXS13Y9Jrv4YBB45sLgBE8=
+
+os-homedir@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3"
+ integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M=
+
+os-tmpdir@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
+ integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=
+
+output-file-sync@^1.1.0:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/output-file-sync/-/output-file-sync-1.1.2.tgz#d0a33eefe61a205facb90092e826598d5245ce76"
+ integrity sha1-0KM+7+YaIF+suQCS6CZZjVJFznY=
+ dependencies:
+ graceful-fs "^4.1.4"
+ mkdirp "^0.5.1"
+ object-assign "^4.1.0"
+
+pako@~0.2.0:
+ version "0.2.9"
+ resolved "https://registry.yarnpkg.com/pako/-/pako-0.2.9.tgz#f3f7522f4ef782348da8161bad9ecfd51bf83a75"
+ integrity sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=
+
+parse-glob@^3.0.4:
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c"
+ integrity sha1-ssN2z7EfNVE7rdFz7wu246OIORw=
+ dependencies:
+ glob-base "^0.3.0"
+ is-dotfile "^1.0.0"
+ is-extglob "^1.0.0"
+ is-glob "^2.0.0"
+
+parse-json@^2.2.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9"
+ integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=
+ dependencies:
+ error-ex "^1.2.0"
+
+path-browserify@0.0.0:
+ version "0.0.0"
+ resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a"
+ integrity sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=
+
+path-exists@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b"
+ integrity sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=
+ dependencies:
+ pinkie-promise "^2.0.0"
+
+path-is-absolute@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
+ integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
+
+path-type@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441"
+ integrity sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=
+ dependencies:
+ graceful-fs "^4.1.2"
+ pify "^2.0.0"
+ pinkie-promise "^2.0.0"
+
+pbkdf2-compat@2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/pbkdf2-compat/-/pbkdf2-compat-2.0.1.tgz#b6e0c8fa99494d94e0511575802a59a5c142f288"
+ integrity sha1-tuDI+plJTZTgURV1gCpZpcFC8og=
+
+pify@^2.0.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
+ integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw=
+
+pinkie-promise@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa"
+ integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o=
+ dependencies:
+ pinkie "^2.0.0"
+
+pinkie@^2.0.0:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870"
+ integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA=
+
+preserve@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b"
+ integrity sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=
+
+pretty-bytes-cli@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/pretty-bytes-cli/-/pretty-bytes-cli-2.0.0.tgz#e705662cffdc9c75291835333bc2f89ad3c033cf"
+ integrity sha1-5wVmLP/cnHUpGDUzO8L4mtPAM88=
+ dependencies:
+ get-stdin "^5.0.1"
+ meow "^3.6.0"
+ pretty-bytes "^4.0.0"
+
+pretty-bytes@^4.0.0:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-4.0.2.tgz#b2bf82e7350d65c6c33aa95aaa5a4f6327f61cd9"
+ integrity sha1-sr+C5zUNZcbDOqlaqlpPYyf2HNk=
+
+private@^0.1.6:
+ version "0.1.6"
+ resolved "https://registry.yarnpkg.com/private/-/private-0.1.6.tgz#55c6a976d0f9bafb9924851350fe47b9b5fbb7c1"
+ integrity sha1-VcapdtD5uvuZJIUTUP5HubX7t8E=
+
+process-nextick-args@~1.0.6:
+ version "1.0.7"
+ resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3"
+ integrity sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=
+
+process@^0.11.0:
+ version "0.11.9"
+ resolved "https://registry.yarnpkg.com/process/-/process-0.11.9.tgz#7bd5ad21aa6253e7da8682264f1e11d11c0318c1"
+ integrity sha1-e9WtIapiU+fahoImTx4R0RwDGME=
+
+prr@~0.0.0:
+ version "0.0.0"
+ resolved "https://registry.yarnpkg.com/prr/-/prr-0.0.0.tgz#1a84b85908325501411853d0081ee3fa86e2926a"
+ integrity sha1-GoS4WQgyVQFBGFPQCB7j+obikmo=
+
+punycode@1.3.2:
+ version "1.3.2"
+ resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d"
+ integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=
+
+punycode@^1.2.4, punycode@^1.4.1:
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e"
+ integrity sha1-wNWmOycYgArY4esPpSachN1BhF4=
+
+qs@~6.3.0:
+ version "6.3.0"
+ resolved "https://registry.yarnpkg.com/qs/-/qs-6.3.0.tgz#f403b264f23bc01228c74131b407f18d5ea5d442"
+ integrity sha1-9AOyZPI7wBIox0ExtAfxjV6l1EI=
+
+querystring-es3@^0.2.0:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73"
+ integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=
+
+querystring@0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620"
+ integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=
+
+randomatic@^1.1.3:
+ version "1.1.6"
+ resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.6.tgz#110dcabff397e9dcff7c0789ccc0a49adf1ec5bb"
+ integrity sha1-EQ3Kv/OX6dz/fAeJzMCkmt8exbs=
+ dependencies:
+ is-number "^2.0.2"
+ kind-of "^3.0.2"
+
+rc@~1.1.6:
+ version "1.1.6"
+ resolved "https://registry.yarnpkg.com/rc/-/rc-1.1.6.tgz#43651b76b6ae53b5c802f1151fa3fc3b059969c9"
+ integrity sha1-Q2UbdrauU7XIAvEVH6P8OwWZack=
+ dependencies:
+ deep-extend "~0.4.0"
+ ini "~1.3.0"
+ minimist "^1.2.0"
+ strip-json-comments "~1.0.4"
+
+read-pkg-up@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02"
+ integrity sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=
+ dependencies:
+ find-up "^1.0.0"
+ read-pkg "^1.0.0"
+
+read-pkg@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28"
+ integrity sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=
+ dependencies:
+ load-json-file "^1.0.0"
+ normalize-package-data "^2.3.2"
+ path-type "^1.0.0"
+
+"readable-stream@^2.0.0 || ^1.1.13", readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.1.0:
+ version "2.2.2"
+ resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.2.2.tgz#a9e6fec3c7dda85f8bb1b3ba7028604556fc825e"
+ integrity sha1-qeb+w8fdqF+LsbO6cChgRVb8gl4=
+ dependencies:
+ buffer-shims "^1.0.0"
+ core-util-is "~1.0.0"
+ inherits "~2.0.1"
+ isarray "~1.0.0"
+ process-nextick-args "~1.0.6"
+ string_decoder "~0.10.x"
+ util-deprecate "~1.0.1"
+
+readable-stream@~2.1.4:
+ version "2.1.5"
+ resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.1.5.tgz#66fa8b720e1438b364681f2ad1a63c618448c9d0"
+ integrity sha1-ZvqLcg4UOLNkaB8q0aY8YYRIydA=
+ dependencies:
+ buffer-shims "^1.0.0"
+ core-util-is "~1.0.0"
+ inherits "~2.0.1"
+ isarray "~1.0.0"
+ process-nextick-args "~1.0.6"
+ string_decoder "~0.10.x"
+ util-deprecate "~1.0.1"
+
+readdirp@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78"
+ integrity sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=
+ dependencies:
+ graceful-fs "^4.1.2"
+ minimatch "^3.0.2"
+ readable-stream "^2.0.2"
+ set-immediate-shim "^1.0.1"
+
+redent@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde"
+ integrity sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=
+ dependencies:
+ indent-string "^2.1.0"
+ strip-indent "^1.0.1"
+
+regenerator-runtime@^0.10.0:
+ version "0.10.1"
+ resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.1.tgz#257f41961ce44558b18f7814af48c17559f9faeb"
+ integrity sha1-JX9BlhzkRVixj3gUr0jBdVn5+us=
+
+regex-cache@^0.4.2:
+ version "0.4.3"
+ resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.3.tgz#9b1a6c35d4d0dfcef5711ae651e8e9d3d7114145"
+ integrity sha1-mxpsNdTQ3871cRrmUejp09cRQUU=
+ dependencies:
+ is-equal-shallow "^0.1.3"
+ is-primitive "^2.0.0"
+
+repeat-element@^1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a"
+ integrity sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=
+
+repeat-string@^1.5.2:
+ version "1.6.1"
+ resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637"
+ integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc=
+
+repeating@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda"
+ integrity sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=
+ dependencies:
+ is-finite "^1.0.0"
+
+request@^2.79.0:
+ version "2.79.0"
+ resolved "https://registry.yarnpkg.com/request/-/request-2.79.0.tgz#4dfe5bf6be8b8cdc37fcf93e04b65577722710de"
+ integrity sha1-Tf5b9r6LjNw3/Pk+BLZVd3InEN4=
+ dependencies:
+ aws-sign2 "~0.6.0"
+ aws4 "^1.2.1"
+ caseless "~0.11.0"
+ combined-stream "~1.0.5"
+ extend "~3.0.0"
+ forever-agent "~0.6.1"
+ form-data "~2.1.1"
+ har-validator "~2.0.6"
+ hawk "~3.1.3"
+ http-signature "~1.1.0"
+ is-typedarray "~1.0.0"
+ isstream "~0.1.2"
+ json-stringify-safe "~5.0.1"
+ mime-types "~2.1.7"
+ oauth-sign "~0.8.1"
+ qs "~6.3.0"
+ stringstream "~0.0.4"
+ tough-cookie "~2.3.0"
+ tunnel-agent "~0.4.1"
+ uuid "^3.0.0"
+
+right-align@^0.1.1:
+ version "0.1.3"
+ resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef"
+ integrity sha1-YTObci/mo1FWiSENJOFMlhSGE+8=
+ dependencies:
+ align-text "^0.1.1"
+
+rimraf@2, rimraf@~2.5.1, rimraf@~2.5.4:
+ version "2.5.4"
+ resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.5.4.tgz#96800093cbf1a0c86bd95b4625467535c29dfa04"
+ integrity sha1-loAAk8vxoMhr2VtGJUZ1NcKd+gQ=
+ dependencies:
+ glob "^7.0.5"
+
+ripemd160@0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-0.2.0.tgz#2bf198bde167cacfa51c0a928e84b68bbe171fce"
+ integrity sha1-K/GYveFnys+lHAqSjoS2i74XH84=
+
+"semver@2 || 3 || 4 || 5", semver@~5.3.0:
+ version "5.3.0"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f"
+ integrity sha1-myzl094C0XxgEq0yaqa00M9U+U8=
+
+set-blocking@~2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
+ integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc=
+
+set-immediate-shim@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61"
+ integrity sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=
+
+setimmediate@^1.0.4:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285"
+ integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=
+
+sha.js@2.2.6:
+ version "2.2.6"
+ resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.2.6.tgz#17ddeddc5f722fb66501658895461977867315ba"
+ integrity sha1-F93t3F9yL7ZlAWWIlUYZd4ZzFbo=
+
+signal-exit@^3.0.0:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d"
+ integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=
+
+slash@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55"
+ integrity sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=
+
+sntp@1.x.x:
+ version "1.0.9"
+ resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198"
+ integrity sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=
+ dependencies:
+ hoek "2.x.x"
+
+source-list-map@~0.1.7:
+ version "0.1.7"
+ resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-0.1.7.tgz#d4b5ce2a46535c72c7e8527c71a77d250618172e"
+ integrity sha1-1LXOKkZTXHLH6FJ8cad9JQYYFy4=
+
+source-map-support@^0.4.2:
+ version "0.4.8"
+ resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.8.tgz#4871918d8a3af07289182e974e32844327b2e98b"
+ integrity sha1-SHGRjYo68HKJGC6XTjKEQyey6Ys=
+ dependencies:
+ source-map "^0.5.3"
+
+source-map@^0.5.0, source-map@^0.5.3, source-map@~0.5.1:
+ version "0.5.6"
+ resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412"
+ integrity sha1-dc449SvwczxafwwRjYEzSiu19BI=
+
+source-map@~0.4.1:
+ version "0.4.4"
+ resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b"
+ integrity sha1-66T12pwNyZneaAMti092FzZSA2s=
+ dependencies:
+ amdefine ">=0.0.4"
+
+spdx-correct@~1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-1.0.2.tgz#4b3073d933ff51f3912f03ac5519498a4150db40"
+ integrity sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=
+ dependencies:
+ spdx-license-ids "^1.0.2"
+
+spdx-expression-parse@~1.0.0:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz#9bdf2f20e1f40ed447fbe273266191fced51626c"
+ integrity sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=
+
+spdx-license-ids@^1.0.2:
+ version "1.2.2"
+ resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz#c9df7a3424594ade6bd11900d596696dc06bac57"
+ integrity sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=
+
+sshpk@^1.7.0:
+ version "1.10.1"
+ resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.10.1.tgz#30e1a5d329244974a1af61511339d595af6638b0"
+ integrity sha1-MOGl0ykkSXShr2FREznVla9mOLA=
+ dependencies:
+ asn1 "~0.2.3"
+ assert-plus "^1.0.0"
+ dashdash "^1.12.0"
+ getpass "^0.1.1"
+ optionalDependencies:
+ bcrypt-pbkdf "^1.0.0"
+ ecc-jsbn "~0.1.1"
+ jodid25519 "^1.0.0"
+ jsbn "~0.1.0"
+ tweetnacl "~0.14.0"
+
+stream-browserify@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.1.tgz#66266ee5f9bdb9940a4e4514cafb43bb71e5c9db"
+ integrity sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=
+ dependencies:
+ inherits "~2.0.1"
+ readable-stream "^2.0.2"
+
+stream-http@^2.3.1:
+ version "2.6.0"
+ resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.6.0.tgz#adf3309ced17624ebfb7ef13e6ac4cfe405a8b12"
+ integrity sha1-rfMwnO0XYk6/t+8T5qxM/kBaixI=
+ dependencies:
+ builtin-status-codes "^3.0.0"
+ inherits "^2.0.1"
+ readable-stream "^2.1.0"
+ to-arraybuffer "^1.0.0"
+ xtend "^4.0.0"
+
+string-width@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3"
+ integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=
+ dependencies:
+ code-point-at "^1.0.0"
+ is-fullwidth-code-point "^1.0.0"
+ strip-ansi "^3.0.0"
+
+string_decoder@^0.10.25, string_decoder@~0.10.x:
+ version "0.10.31"
+ resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94"
+ integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=
+
+stringstream@~0.0.4:
+ version "0.0.5"
+ resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878"
+ integrity sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=
+
+strip-ansi@^3.0.0, strip-ansi@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf"
+ integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=
+ dependencies:
+ ansi-regex "^2.0.0"
+
+strip-bom@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e"
+ integrity sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=
+ dependencies:
+ is-utf8 "^0.2.0"
+
+strip-indent@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2"
+ integrity sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=
+ dependencies:
+ get-stdin "^4.0.1"
+
+strip-json-comments@~1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-1.0.4.tgz#1e15fbcac97d3ee99bf2d73b4c656b082bbafb91"
+ integrity sha1-HhX7ysl9Pumb8tc7TGVrCCu6+5E=
+
+supports-color@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-0.2.0.tgz#d92de2694eb3f67323973d7ae3d8b55b4c22190a"
+ integrity sha1-2S3iaU6z9nMjlz1649i1W0wiGQo=
+
+supports-color@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7"
+ integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=
+
+supports-color@^3.1.0:
+ version "3.1.2"
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.1.2.tgz#72a262894d9d408b956ca05ff37b2ed8a6e2a2d5"
+ integrity sha1-cqJiiU2dQIuVbKBf83su2KbiotU=
+ dependencies:
+ has-flag "^1.0.0"
+
+tapable@^0.1.8, tapable@~0.1.8:
+ version "0.1.10"
+ resolved "https://registry.yarnpkg.com/tapable/-/tapable-0.1.10.tgz#29c35707c2b70e50d07482b5d202e8ed446dafd4"
+ integrity sha1-KcNXB8K3DlDQdIK10gLo7URtr9Q=
+
+tar-pack@~3.3.0:
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.3.0.tgz#30931816418f55afc4d21775afdd6720cee45dae"
+ integrity sha1-MJMYFkGPVa/E0hd1r91nIM7kXa4=
+ dependencies:
+ debug "~2.2.0"
+ fstream "~1.0.10"
+ fstream-ignore "~1.0.5"
+ once "~1.3.3"
+ readable-stream "~2.1.4"
+ rimraf "~2.5.1"
+ tar "~2.2.1"
+ uid-number "~0.0.6"
+
+tar@~2.2.1:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1"
+ integrity sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=
+ dependencies:
+ block-stream "*"
+ fstream "^1.0.2"
+ inherits "2"
+
+timers-browserify@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.2.tgz#ab4883cf597dcd50af211349a00fbca56ac86b86"
+ integrity sha1-q0iDz1l9zVCvIRNJoA+8pWrIa4Y=
+ dependencies:
+ setimmediate "^1.0.4"
+
+to-arraybuffer@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43"
+ integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=
+
+to-fast-properties@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.2.tgz#f3f5c0c3ba7299a7ef99427e44633257ade43320"
+ integrity sha1-8/XAw7pymafvmUJ+RGMyV63kMyA=
+
+tough-cookie@~2.3.0:
+ version "2.3.2"
+ resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.2.tgz#f081f76e4c85720e6c37a5faced737150d84072a"
+ integrity sha1-8IH3bkyFcg5sN6X6ztc3FQ2EByo=
+ dependencies:
+ punycode "^1.4.1"
+
+trim-newlines@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613"
+ integrity sha1-WIeWa7WCpFA6QetST301ARgVphM=
+
+tty-browserify@0.0.0:
+ version "0.0.0"
+ resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6"
+ integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=
+
+tunnel-agent@~0.4.1:
+ version "0.4.3"
+ resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.4.3.tgz#6373db76909fe570e08d73583365ed828a74eeeb"
+ integrity sha1-Y3PbdpCf5XDgjXNYM2Xtgop07us=
+
+tweetnacl@^0.14.3, tweetnacl@~0.14.0:
+ version "0.14.5"
+ resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64"
+ integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=
+
+uglify-js@~2.7.3:
+ version "2.7.5"
+ resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.7.5.tgz#4612c0c7baaee2ba7c487de4904ae122079f2ca8"
+ integrity sha1-RhLAx7qu4rp8SH3kkErhIgefLKg=
+ dependencies:
+ async "~0.2.6"
+ source-map "~0.5.1"
+ uglify-to-browserify "~1.0.0"
+ yargs "~3.10.0"
+
+uglify-to-browserify@~1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7"
+ integrity sha1-bgkk1r2mta/jSeOabWMoUKD4grc=
+
+uid-number@~0.0.6:
+ version "0.0.6"
+ resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81"
+ integrity sha1-DqEOgDXo61uOREnwbaHHMGY7qoE=
+
+url@^0.11.0:
+ version "0.11.0"
+ resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1"
+ integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=
+ dependencies:
+ punycode "1.3.2"
+ querystring "0.2.0"
+
+user-home@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/user-home/-/user-home-1.1.1.tgz#2b5be23a32b63a7c9deb8d0f28d485724a3df190"
+ integrity sha1-K1viOjK2Onyd640PKNSFcko98ZA=
+
+util-deprecate@~1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
+ integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=
+
+util@0.10.3, util@^0.10.3:
+ version "0.10.3"
+ resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9"
+ integrity sha1-evsa/lCAUkZInj23/g7TeTNqwPk=
+ dependencies:
+ inherits "2.0.1"
+
+uuid@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.0.1.tgz#6544bba2dfda8c1cf17e629a3a305e2bb1fee6c1"
+ integrity sha1-ZUS7ot/ajBzxfmKaOjBeK7H+5sE=
+
+v8flags@^2.0.10:
+ version "2.0.11"
+ resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-2.0.11.tgz#bca8f30f0d6d60612cc2c00641e6962d42ae6881"
+ integrity sha1-vKjzDw1tYGEswsAGQeaWLUKuaIE=
+ dependencies:
+ user-home "^1.1.1"
+
+validate-npm-package-license@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz#2804babe712ad3379459acfbe24746ab2c303fbc"
+ integrity sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=
+ dependencies:
+ spdx-correct "~1.0.0"
+ spdx-expression-parse "~1.0.0"
+
+verror@1.3.6:
+ version "1.3.6"
+ resolved "https://registry.yarnpkg.com/verror/-/verror-1.3.6.tgz#cff5df12946d297d2baaefaa2689e25be01c005c"
+ integrity sha1-z/XfEpRtKX0rqu+qJoniW+AcAFw=
+ dependencies:
+ extsprintf "1.0.2"
+
+vm-browserify@0.0.4:
+ version "0.0.4"
+ resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-0.0.4.tgz#5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73"
+ integrity sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=
+ dependencies:
+ indexof "0.0.1"
+
+watchpack@^0.2.1:
+ version "0.2.9"
+ resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-0.2.9.tgz#62eaa4ab5e5ba35fdfc018275626e3c0f5e3fb0b"
+ integrity sha1-Yuqkq15bo1/fwBgnVibjwPXj+ws=
+ dependencies:
+ async "^0.9.0"
+ chokidar "^1.0.0"
+ graceful-fs "^4.1.2"
+
+webpack-core@~0.6.9:
+ version "0.6.9"
+ resolved "https://registry.yarnpkg.com/webpack-core/-/webpack-core-0.6.9.tgz#fc571588c8558da77be9efb6debdc5a3b172bdc2"
+ integrity sha1-/FcViMhVjad76e+23r3Fo7FyvcI=
+ dependencies:
+ source-list-map "~0.1.7"
+ source-map "~0.4.1"
+
+webpack@1:
+ version "1.14.0"
+ resolved "https://registry.yarnpkg.com/webpack/-/webpack-1.14.0.tgz#54f1ffb92051a328a5b2057d6ae33c289462c823"
+ integrity sha1-VPH/uSBRoyilsgV9auM8KJRiyCM=
+ dependencies:
+ acorn "^3.0.0"
+ async "^1.3.0"
+ clone "^1.0.2"
+ enhanced-resolve "~0.9.0"
+ interpret "^0.6.4"
+ loader-utils "^0.2.11"
+ memory-fs "~0.3.0"
+ mkdirp "~0.5.0"
+ node-libs-browser "^0.7.0"
+ optimist "~0.6.0"
+ supports-color "^3.1.0"
+ tapable "~0.1.8"
+ uglify-js "~2.7.3"
+ watchpack "^0.2.1"
+ webpack-core "~0.6.9"
+
+wide-align@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.0.tgz#40edde802a71fea1f070da3e62dcda2e7add96ad"
+ integrity sha1-QO3egCpx/qHwcNo+YtzaLnrdlq0=
+ dependencies:
+ string-width "^1.0.1"
+
+window-size@0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d"
+ integrity sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=
+
+wordwrap@0.0.2:
+ version "0.0.2"
+ resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f"
+ integrity sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=
+
+wordwrap@~0.0.2:
+ version "0.0.3"
+ resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107"
+ integrity sha1-o9XabNXAvAAI03I0u68b7WMFkQc=
+
+wrappy@1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
+ integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
+
+xtend@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af"
+ integrity sha1-pcbVMr5lbiPbgg77lDofBJmNY68=
+
+yargs@~3.10.0:
+ version "3.10.0"
+ resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1"
+ integrity sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=
+ dependencies:
+ camelcase "^1.0.2"
+ cliui "^2.1.0"
+ decamelize "^1.0.0"
+ window-size "0.1.0"
diff --git a/date-fns/examples/webpack-2.x/README.md b/date-fns/examples/webpack-2.x/README.md
new file mode 100644
index 0000000..5445742
--- /dev/null
+++ b/date-fns/examples/webpack-2.x/README.md
@@ -0,0 +1,26 @@
+# Usage With webpack 2.x
+
+**Important**: as at webpack 2.2.0, tree-shaking is not removing all unused imports.
+See [webpack issue #2867](https://github.com/webpack/webpack/issues/2867)
+
+See [example.js](./example.js), [fp.js](./fp.js) and [misc.js](./misc.js) for source code examples.
+
+See [package.json scripts](./package.json) for CLI usage.
+
+## Build Example
+
+```sh
+yarn
+yarn run build
+```
+
+See ./dist for output.
+
+## Minimal Build Size
+
+You can see minimal build size (when you use just one function):
+
+```sh
+gzip-size dist/example.min.js | pretty-bytes
+#=> 13.1 kB
+```
diff --git a/date-fns/examples/webpack-2.x/example.js b/date-fns/examples/webpack-2.x/example.js
new file mode 100644
index 0000000..3afa67b
--- /dev/null
+++ b/date-fns/examples/webpack-2.x/example.js
@@ -0,0 +1,4 @@
+import { format } from 'date-fns/esm'
+
+const result = format(new Date(2017, 0, 25, 21, 28, 15), 'dd.MM.yyyy HH:mm:ss')
+console.log(result === '25.01.2017 21:28:15')
diff --git a/date-fns/examples/webpack-2.x/fp.js b/date-fns/examples/webpack-2.x/fp.js
new file mode 100644
index 0000000..41a29d0
--- /dev/null
+++ b/date-fns/examples/webpack-2.x/fp.js
@@ -0,0 +1,18 @@
+import addYears from 'date-fns/esm/fp/addYears'
+import {formatWithOptions} from 'date-fns/esm/fp'
+import {eo} from 'date-fns/esm/locale'
+
+const addFiveYears = addYears(5)
+const dateToString = formatWithOptions({locale: eo}, 'd MMMM yyyy')
+
+const dates = [
+ new Date(2017, 0 /* Jan */, 1),
+ new Date(2017, 1 /* Feb */, 11),
+ new Date(2017, 6 /* Jul */, 2)
+]
+
+const formattedDates = dates
+ .map((date) => dateToString(addFiveYears(date)))
+ .join(', ')
+
+console.log(formattedDates === '1 januaro 2022, 11 februaro 2022, 2 julio 2022')
diff --git a/date-fns/examples/webpack-2.x/misc.js b/date-fns/examples/webpack-2.x/misc.js
new file mode 100644
index 0000000..d096f16
--- /dev/null
+++ b/date-fns/examples/webpack-2.x/misc.js
@@ -0,0 +1,9 @@
+import format from 'date-fns/esm/format'
+import eo from 'date-fns/esm/locale/eo'
+
+const result = format(
+ new Date(2017, 0, 25, 21, 28, 15),
+ 'eeee, dd MMMM HH:mm:ss',
+ { locale: eo }
+)
+console.log(result === 'merkredo, 25 januaro 21:28:15')
diff --git a/date-fns/examples/webpack-2.x/package.json b/date-fns/examples/webpack-2.x/package.json
new file mode 100644
index 0000000..637de0b
--- /dev/null
+++ b/date-fns/examples/webpack-2.x/package.json
@@ -0,0 +1,28 @@
+{
+ "name": "date-fns-example-webpack2",
+ "version": "0.1.0",
+ "description": "Example of date-fns usage with webpack 2.x",
+ "main": "example.js",
+ "author": "Sasha Koss <koss@nocorp.me>",
+ "license": "MIT",
+ "dependencies": {
+ "babili": "^0.0.9",
+ "gzip-size-cli": "^1.0.0",
+ "pretty-bytes-cli": "^2.0.0",
+ "webpack": "^2.2.0"
+ },
+ "scripts": {
+ "build": "yarn run build-date-fns && yarn run build-webpack && yarn run build-babili",
+ "build-date-fns": "env PACKAGE_OUTPUT_PATH=\"$(pwd)/node_modules/date-fns\" ../../scripts/build/package.sh",
+ "build-webpack": "webpack example=./example.js fp=./fp.js misc=./misc.js --output-path dist --output-filename [name].js",
+ "build-babili": "yarn run build-babili-example && yarn run build-babili-fp && yarn run build-babili-misc && yarn run stats-size",
+ "build-babili-example": "babili dist/example.js --out-file dist/example.min.js --minified --no-comments",
+ "build-babili-fp": "babili dist/fp.js --out-file dist/fp.min.js --minified --no-comments",
+ "build-babili-misc": "babili dist/misc.js --out-file dist/misc.min.js --minified --no-comments",
+ "stats-size": "gzip-size dist/example.min.js | pretty-bytes",
+ "test": "yarn run test-example && yarn run test-fp && yarn run test-misc",
+ "test-example": "test $(env TZ=UTC node ./dist/example.min.js) = true",
+ "test-fp": "test $(env TZ=UTC node ./dist/fp.min.js) = true",
+ "test-misc": "test $(env TZ=UTC node ./dist/misc.min.js) = true"
+ }
+}
diff --git a/date-fns/examples/webpack-2.x/yarn.lock b/date-fns/examples/webpack-2.x/yarn.lock
new file mode 100644
index 0000000..bb16224
--- /dev/null
+++ b/date-fns/examples/webpack-2.x/yarn.lock
@@ -0,0 +1,2642 @@
+# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
+# yarn lockfile v1
+
+
+abbrev@1:
+ version "1.0.9"
+ resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.0.9.tgz#91b4792588a7738c25f35dd6f63752a2f8776135"
+ integrity sha1-kbR5JYinc4wl813W9jdSovh3YTU=
+
+acorn-dynamic-import@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-2.0.1.tgz#23f671eb6e650dab277fef477c321b1178a8cca2"
+ integrity sha1-I/Zx625lDasnf+9HfDIbEXiozKI=
+ dependencies:
+ acorn "^4.0.3"
+
+acorn@^4.0.3, acorn@^4.0.4:
+ version "4.0.4"
+ resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.4.tgz#17a8d6a7a6c4ef538b814ec9abac2779293bf30a"
+ integrity sha1-F6jWp6bE71OLgU7Jq6wneSk78wo=
+
+ajv-keywords@^1.1.1:
+ version "1.5.0"
+ resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-1.5.0.tgz#c11e6859eafff83e0dafc416929472eca946aa2c"
+ integrity sha1-wR5oWer/+D4Nr8QWkpRy7KlGqiw=
+
+ajv@^4.7.0:
+ version "4.10.4"
+ resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.10.4.tgz#c0974dd00b3464984892d6010aa9c2c945933254"
+ integrity sha1-wJdN0As0ZJhIktYBCqnCyUWTMlQ=
+ dependencies:
+ co "^4.6.0"
+ json-stable-stringify "^1.0.1"
+
+align-text@^0.1.1, align-text@^0.1.3:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117"
+ integrity sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=
+ dependencies:
+ kind-of "^3.0.2"
+ longest "^1.0.1"
+ repeat-string "^1.5.2"
+
+ansi-regex@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.0.0.tgz#c5061b6e0ef8a81775e50f5d66151bf6bf371107"
+ integrity sha1-xQYbbg74qBd15Q9dZhUb9r83EQc=
+
+ansi-styles@^2.2.1:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe"
+ integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=
+
+anymatch@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.0.tgz#a3e52fa39168c825ff57b0248126ce5a8ff95507"
+ integrity sha1-o+Uvo5FoyCX/V7AkgSbOWo/5VQc=
+ dependencies:
+ arrify "^1.0.0"
+ micromatch "^2.1.5"
+
+aproba@^1.0.3:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.0.4.tgz#2713680775e7614c8ba186c065d4e2e52d1072c0"
+ integrity sha1-JxNoB3XnYUyLoYbAZdTi5S0QcsA=
+
+are-we-there-yet@~1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.2.tgz#80e470e95a084794fe1899262c5667c6e88de1b3"
+ integrity sha1-gORw6VoIR5T+GJkmLFZnxuiN4bM=
+ dependencies:
+ delegates "^1.0.0"
+ readable-stream "^2.0.0 || ^1.1.13"
+
+arr-diff@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf"
+ integrity sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=
+ dependencies:
+ arr-flatten "^1.0.1"
+
+arr-flatten@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.0.1.tgz#e5ffe54d45e19f32f216e91eb99c8ce892bb604b"
+ integrity sha1-5f/lTUXhnzLyFukeuZyM6JK7YEs=
+
+array-find-index@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1"
+ integrity sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=
+
+array-unique@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53"
+ integrity sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=
+
+arrify@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d"
+ integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=
+
+asn1.js@^4.0.0:
+ version "4.9.1"
+ resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.9.1.tgz#48ba240b45a9280e94748990ba597d216617fd40"
+ integrity sha1-SLokC0WpKA6UdImQull9IWYX/UA=
+ dependencies:
+ bn.js "^4.0.0"
+ inherits "^2.0.1"
+ minimalistic-assert "^1.0.0"
+
+asn1@~0.2.3:
+ version "0.2.3"
+ resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86"
+ integrity sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=
+
+assert-plus@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234"
+ integrity sha1-104bh+ev/A24qttwIfP+SBAasjQ=
+
+assert-plus@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525"
+ integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=
+
+assert@^1.1.1:
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/assert/-/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91"
+ integrity sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=
+ dependencies:
+ util "0.10.3"
+
+async-each@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d"
+ integrity sha1-GdOGodntxufByF04iu28xW0zYC0=
+
+async@^2.1.2:
+ version "2.1.4"
+ resolved "https://registry.yarnpkg.com/async/-/async-2.1.4.tgz#2d2160c7788032e4dd6cbe2502f1f9a2c8f6cde4"
+ integrity sha1-LSFgx3iAMuTdbL4lAvH5osj2zeQ=
+ dependencies:
+ lodash "^4.14.0"
+
+async@~0.2.6:
+ version "0.2.10"
+ resolved "https://registry.yarnpkg.com/async/-/async-0.2.10.tgz#b6bbe0b0674b9d719708ca38de8c237cb526c3d1"
+ integrity sha1-trvgsGdLnXGXCMo43owjfLUmw9E=
+
+asynckit@^0.4.0:
+ version "0.4.0"
+ resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
+ integrity sha1-x57Zf380y48robyXkLzDZkdLS3k=
+
+aws-sign2@~0.6.0:
+ version "0.6.0"
+ resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f"
+ integrity sha1-FDQt0428yU0OW4fXY81jYSwOeU8=
+
+aws4@^1.2.1:
+ version "1.5.0"
+ resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.5.0.tgz#0a29ffb79c31c9e712eeb087e8e7a64b4a56d755"
+ integrity sha1-Cin/t5wxyecS7rCH6OemS0pW11U=
+
+babel-cli@^6.10.1:
+ version "6.18.0"
+ resolved "https://registry.yarnpkg.com/babel-cli/-/babel-cli-6.18.0.tgz#92117f341add9dead90f6fa7d0a97c0cc08ec186"
+ integrity sha1-khF/NBrdnerZD2+n0Kl8DMCOwYY=
+ dependencies:
+ babel-core "^6.18.0"
+ babel-polyfill "^6.16.0"
+ babel-register "^6.18.0"
+ babel-runtime "^6.9.0"
+ commander "^2.8.1"
+ convert-source-map "^1.1.0"
+ fs-readdir-recursive "^1.0.0"
+ glob "^5.0.5"
+ lodash "^4.2.0"
+ output-file-sync "^1.1.0"
+ path-is-absolute "^1.0.0"
+ slash "^1.0.0"
+ source-map "^0.5.0"
+ v8flags "^2.0.10"
+ optionalDependencies:
+ chokidar "^1.0.0"
+
+babel-code-frame@^6.20.0:
+ version "6.20.0"
+ resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.20.0.tgz#b968f839090f9a8bc6d41938fb96cb84f7387b26"
+ integrity sha1-uWj4OQkPmovG1Bk4+5bLhPc4eyY=
+ dependencies:
+ chalk "^1.1.0"
+ esutils "^2.0.2"
+ js-tokens "^2.0.0"
+
+babel-core@^6.18.0:
+ version "6.21.0"
+ resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.21.0.tgz#75525480c21c803f826ef3867d22c19f080a3724"
+ integrity sha1-dVJUgMIcgD+CbvOGfSLBnwgKNyQ=
+ dependencies:
+ babel-code-frame "^6.20.0"
+ babel-generator "^6.21.0"
+ babel-helpers "^6.16.0"
+ babel-messages "^6.8.0"
+ babel-register "^6.18.0"
+ babel-runtime "^6.20.0"
+ babel-template "^6.16.0"
+ babel-traverse "^6.21.0"
+ babel-types "^6.21.0"
+ babylon "^6.11.0"
+ convert-source-map "^1.1.0"
+ debug "^2.1.1"
+ json5 "^0.5.0"
+ lodash "^4.2.0"
+ minimatch "^3.0.2"
+ path-is-absolute "^1.0.0"
+ private "^0.1.6"
+ slash "^1.0.0"
+ source-map "^0.5.0"
+
+babel-generator@^6.21.0:
+ version "6.21.0"
+ resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.21.0.tgz#605f1269c489a1c75deeca7ea16d43d4656c8494"
+ integrity sha1-YF8SacSJocdd7sp+oW1D1GVshJQ=
+ dependencies:
+ babel-messages "^6.8.0"
+ babel-runtime "^6.20.0"
+ babel-types "^6.21.0"
+ detect-indent "^4.0.0"
+ jsesc "^1.3.0"
+ lodash "^4.2.0"
+ source-map "^0.5.0"
+
+babel-helper-flip-expressions@^0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/babel-helper-flip-expressions/-/babel-helper-flip-expressions-0.0.1.tgz#c2ba1599426e7928333fd5c08eee6cdf8328c848"
+ integrity sha1-wroVmUJueSgzP9XAju5s34MoyEg=
+
+babel-helper-is-nodes-equiv@^0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/babel-helper-is-nodes-equiv/-/babel-helper-is-nodes-equiv-0.0.1.tgz#34e9b300b1479ddd98ec77ea0bbe9342dfe39684"
+ integrity sha1-NOmzALFHnd2Y7HfqC76TQt/jloQ=
+
+babel-helper-is-void-0@^0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/babel-helper-is-void-0/-/babel-helper-is-void-0-0.0.1.tgz#ed74553b883e68226ae45f989a99b02c190f105a"
+ integrity sha1-7XRVO4g+aCJq5F+YmpmwLBkPEFo=
+
+babel-helper-remove-or-void@^0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/babel-helper-remove-or-void/-/babel-helper-remove-or-void-0.0.1.tgz#f602790e465acf2dfbe84fb3dd210c43a2dd7262"
+ integrity sha1-9gJ5DkZazy376E+z3SEMQ6LdcmI=
+
+babel-helper-to-multiple-sequence-expressions@^0.0.2:
+ version "0.0.2"
+ resolved "https://registry.yarnpkg.com/babel-helper-to-multiple-sequence-expressions/-/babel-helper-to-multiple-sequence-expressions-0.0.2.tgz#07d5d2e674aa62962ac9e0000b539920c301c4b9"
+ integrity sha1-B9XS5nSqYpYqyeAAC1OZIMMBxLk=
+
+babel-helpers@^6.16.0:
+ version "6.16.0"
+ resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.16.0.tgz#1095ec10d99279460553e67eb3eee9973d3867e3"
+ integrity sha1-EJXsENmSeUYFU+Z+s+7plz04Z+M=
+ dependencies:
+ babel-runtime "^6.0.0"
+ babel-template "^6.16.0"
+
+babel-messages@^6.8.0:
+ version "6.8.0"
+ resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.8.0.tgz#bf504736ca967e6d65ef0adb5a2a5f947c8e0eb9"
+ integrity sha1-v1BHNsqWfm1l7wrbWipflHyODrk=
+ dependencies:
+ babel-runtime "^6.0.0"
+
+babel-plugin-minify-constant-folding@^0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-minify-constant-folding/-/babel-plugin-minify-constant-folding-0.0.1.tgz#d4abb5b62ccfc094bdce2a318b2f94fda5a73e29"
+ integrity sha1-1Ku1tizPwJS9zioxiy+U/aWnPik=
+
+babel-plugin-minify-dead-code-elimination@^0.1.0:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-minify-dead-code-elimination/-/babel-plugin-minify-dead-code-elimination-0.1.1.tgz#1a0133fcd06c7fa477b01c193ba3213c8944ff01"
+ integrity sha1-GgEz/NBsf6R3sBwZO6MhPIlE/wE=
+ dependencies:
+ babel-helper-remove-or-void "^0.0.1"
+ lodash.some "^4.6.0"
+
+babel-plugin-minify-flip-comparisons@^0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-minify-flip-comparisons/-/babel-plugin-minify-flip-comparisons-0.0.1.tgz#679f4493a692afc705c4b79fde1dadb535c4eb08"
+ integrity sha1-Z59Ek6aSr8cFxLef3h2ttTXE6wg=
+ dependencies:
+ babel-helper-is-void-0 "^0.0.1"
+
+babel-plugin-minify-guarded-expressions@^0.0.3:
+ version "0.0.3"
+ resolved "https://registry.yarnpkg.com/babel-plugin-minify-guarded-expressions/-/babel-plugin-minify-guarded-expressions-0.0.3.tgz#6da1caa0b6abda964647377bd5e19afdbf91cae8"
+ integrity sha1-baHKoLar2pZGRzd71eGa/b+Ryug=
+ dependencies:
+ babel-helper-flip-expressions "^0.0.1"
+
+babel-plugin-minify-infinity@^0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-minify-infinity/-/babel-plugin-minify-infinity-0.0.1.tgz#9394a4defc9db56da76f13fedd5d5e2d486a4299"
+ integrity sha1-k5Sk3vydtW2nbxP+3V1eLUhqQpk=
+
+babel-plugin-minify-mangle-names@^0.0.4:
+ version "0.0.4"
+ resolved "https://registry.yarnpkg.com/babel-plugin-minify-mangle-names/-/babel-plugin-minify-mangle-names-0.0.4.tgz#94812c0c82320f7af97511b7d598527933973197"
+ integrity sha1-lIEsDIIyD3r5dRG31ZhSeTOXMZc=
+
+babel-plugin-minify-numeric-literals@^0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-minify-numeric-literals/-/babel-plugin-minify-numeric-literals-0.0.1.tgz#9597e6c31154d7daf3744d0bd417c144b275bd53"
+ integrity sha1-lZfmwxFU19rzdE0L1BfBRLJ1vVM=
+
+babel-plugin-minify-replace@^0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-minify-replace/-/babel-plugin-minify-replace-0.0.1.tgz#5d5aea7cb9899245248d1ee9ce7a2fe556a8facc"
+ integrity sha1-XVrqfLmJkkUkjR7pznov5Vao+sw=
+
+babel-plugin-minify-simplify@^0.0.4:
+ version "0.0.4"
+ resolved "https://registry.yarnpkg.com/babel-plugin-minify-simplify/-/babel-plugin-minify-simplify-0.0.4.tgz#940d0dd0db6d4c4c1c51fc34c3c6e0d0ee1d67e9"
+ integrity sha1-lA0N0NttTEwcUfw0w8bg0O4dZ+k=
+ dependencies:
+ babel-helper-flip-expressions "^0.0.1"
+ babel-helper-is-nodes-equiv "^0.0.1"
+ babel-helper-to-multiple-sequence-expressions "^0.0.2"
+
+babel-plugin-minify-type-constructors@^0.0.2:
+ version "0.0.2"
+ resolved "https://registry.yarnpkg.com/babel-plugin-minify-type-constructors/-/babel-plugin-minify-type-constructors-0.0.2.tgz#4f9a28951e776f31ac11a29cd58cf9eef8b2e292"
+ integrity sha1-T5oolR53bzGsEaKc1Yz57viy4pI=
+ dependencies:
+ babel-helper-is-void-0 "^0.0.1"
+
+babel-plugin-transform-member-expression-literals@^6.8.0:
+ version "6.8.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-member-expression-literals/-/babel-plugin-transform-member-expression-literals-6.8.0.tgz#718755a70492a895d8f41810afa9998bc09f57b9"
+ integrity sha1-cYdVpwSSqJXY9BgQr6mZi8CfV7k=
+ dependencies:
+ babel-runtime "^6.0.0"
+
+babel-plugin-transform-merge-sibling-variables@^6.8.0:
+ version "6.8.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-merge-sibling-variables/-/babel-plugin-transform-merge-sibling-variables-6.8.0.tgz#724074e4ef78b601fcf9a34165c972a1b6117e99"
+ integrity sha1-ckB05O94tgH8+aNBZclyobYRfpk=
+ dependencies:
+ babel-runtime "^6.0.0"
+
+babel-plugin-transform-minify-booleans@^6.8.0:
+ version "6.8.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-minify-booleans/-/babel-plugin-transform-minify-booleans-6.8.0.tgz#b1a48864a727847696b84eae36fa4d085a54b42b"
+ integrity sha1-saSIZKcnhHaWuE6uNvpNCFpUtCs=
+ dependencies:
+ babel-runtime "^6.0.0"
+
+babel-plugin-transform-property-literals@^6.8.0:
+ version "6.8.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-property-literals/-/babel-plugin-transform-property-literals-6.8.0.tgz#a65b2e6e1274d25df0f3a4c5e85bc8f1cdd9e019"
+ integrity sha1-plsubhJ00l3w86TF6FvI8c3Z4Bk=
+ dependencies:
+ babel-runtime "^6.0.0"
+
+babel-plugin-transform-regexp-constructors@^0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-regexp-constructors/-/babel-plugin-transform-regexp-constructors-0.0.1.tgz#c5878cc4d78437e99d02790d325f163741741ff5"
+ integrity sha1-xYeMxNeEN+mdAnkNMl8WN0F0H/U=
+
+babel-plugin-transform-simplify-comparison-operators@^6.8.0:
+ version "6.8.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-simplify-comparison-operators/-/babel-plugin-transform-simplify-comparison-operators-6.8.0.tgz#0183d65bfdc54c80d922a3a9b3008e25fa9d32a7"
+ integrity sha1-AYPWW/3FTIDZIqOpswCOJfqdMqc=
+ dependencies:
+ babel-runtime "^6.0.0"
+
+babel-plugin-transform-undefined-to-void@^6.8.0:
+ version "6.8.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-undefined-to-void/-/babel-plugin-transform-undefined-to-void-6.8.0.tgz#bc5b6b4908d3b1262170e67cb3963903ddce167e"
+ integrity sha1-vFtrSQjTsSYhcOZ8s5Y5A93OFn4=
+ dependencies:
+ babel-runtime "^6.0.0"
+
+babel-polyfill@^6.16.0:
+ version "6.20.0"
+ resolved "https://registry.yarnpkg.com/babel-polyfill/-/babel-polyfill-6.20.0.tgz#de4a371006139e20990aac0be367d398331204e7"
+ integrity sha1-3ko3EAYTniCZCqwL42fTmDMSBOc=
+ dependencies:
+ babel-runtime "^6.20.0"
+ core-js "^2.4.0"
+ regenerator-runtime "^0.10.0"
+
+babel-preset-babili@^0.0.8:
+ version "0.0.8"
+ resolved "https://registry.yarnpkg.com/babel-preset-babili/-/babel-preset-babili-0.0.8.tgz#aeba08a21171166e448fd4226c3cf03bcf682122"
+ integrity sha1-rroIohFxFm5Ej9QibDzwO89oISI=
+ dependencies:
+ babel-plugin-minify-constant-folding "^0.0.1"
+ babel-plugin-minify-dead-code-elimination "^0.1.0"
+ babel-plugin-minify-flip-comparisons "^0.0.1"
+ babel-plugin-minify-guarded-expressions "^0.0.3"
+ babel-plugin-minify-infinity "^0.0.1"
+ babel-plugin-minify-mangle-names "^0.0.4"
+ babel-plugin-minify-numeric-literals "^0.0.1"
+ babel-plugin-minify-replace "^0.0.1"
+ babel-plugin-minify-simplify "^0.0.4"
+ babel-plugin-minify-type-constructors "^0.0.2"
+ babel-plugin-transform-member-expression-literals "^6.8.0"
+ babel-plugin-transform-merge-sibling-variables "^6.8.0"
+ babel-plugin-transform-minify-booleans "^6.8.0"
+ babel-plugin-transform-property-literals "^6.8.0"
+ babel-plugin-transform-regexp-constructors "^0.0.1"
+ babel-plugin-transform-simplify-comparison-operators "^6.8.0"
+ babel-plugin-transform-undefined-to-void "^6.8.0"
+
+babel-register@^6.18.0:
+ version "6.18.0"
+ resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.18.0.tgz#892e2e03865078dd90ad2c715111ec4449b32a68"
+ integrity sha1-iS4uA4ZQeN2QrSxxURHsREmzKmg=
+ dependencies:
+ babel-core "^6.18.0"
+ babel-runtime "^6.11.6"
+ core-js "^2.4.0"
+ home-or-tmp "^2.0.0"
+ lodash "^4.2.0"
+ mkdirp "^0.5.1"
+ source-map-support "^0.4.2"
+
+babel-runtime@^6.0.0, babel-runtime@^6.11.6, babel-runtime@^6.20.0, babel-runtime@^6.9.0:
+ version "6.20.0"
+ resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.20.0.tgz#87300bdcf4cd770f09bf0048c64204e17806d16f"
+ integrity sha1-hzAL3PTNdw8JvwBIxkIE4XgG0W8=
+ dependencies:
+ core-js "^2.4.0"
+ regenerator-runtime "^0.10.0"
+
+babel-template@^6.16.0:
+ version "6.16.0"
+ resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.16.0.tgz#e149dd1a9f03a35f817ddbc4d0481988e7ebc8ca"
+ integrity sha1-4UndGp8Do1+BfdvE0EgZiOfryMo=
+ dependencies:
+ babel-runtime "^6.9.0"
+ babel-traverse "^6.16.0"
+ babel-types "^6.16.0"
+ babylon "^6.11.0"
+ lodash "^4.2.0"
+
+babel-traverse@^6.16.0, babel-traverse@^6.21.0:
+ version "6.21.0"
+ resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.21.0.tgz#69c6365804f1a4f69eb1213f85b00a818b8c21ad"
+ integrity sha1-acY2WATxpPaesSE/hbAKgYuMIa0=
+ dependencies:
+ babel-code-frame "^6.20.0"
+ babel-messages "^6.8.0"
+ babel-runtime "^6.20.0"
+ babel-types "^6.21.0"
+ babylon "^6.11.0"
+ debug "^2.2.0"
+ globals "^9.0.0"
+ invariant "^2.2.0"
+ lodash "^4.2.0"
+
+babel-types@^6.16.0, babel-types@^6.21.0:
+ version "6.21.0"
+ resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.21.0.tgz#314b92168891ef6d3806b7f7a917fdf87c11a4b2"
+ integrity sha1-MUuSFoiR7204Brf3qRf9+HwRpLI=
+ dependencies:
+ babel-runtime "^6.20.0"
+ esutils "^2.0.2"
+ lodash "^4.2.0"
+ to-fast-properties "^1.0.1"
+
+babili@^0.0.9:
+ version "0.0.9"
+ resolved "https://registry.yarnpkg.com/babili/-/babili-0.0.9.tgz#cf1277f34d8265101847e2c5ac11771684f2b1d4"
+ integrity sha1-zxJ3802CZRAYR+LFrBF3FoTysdQ=
+ dependencies:
+ babel-cli "^6.10.1"
+ babel-preset-babili "^0.0.8"
+
+babylon@^6.11.0:
+ version "6.14.1"
+ resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.14.1.tgz#956275fab72753ad9b3435d7afe58f8bf0a29815"
+ integrity sha1-lWJ1+rcnU62bNDXXr+WPi/CimBU=
+
+balanced-match@^0.4.1:
+ version "0.4.2"
+ resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838"
+ integrity sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=
+
+base64-js@^1.0.2:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.2.0.tgz#a39992d723584811982be5e290bb6a53d86700f1"
+ integrity sha1-o5mS1yNYSBGYK+XikLtqU9hnAPE=
+
+bcrypt-pbkdf@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.0.tgz#3ca76b85241c7170bf7d9703e7b9aa74630040d4"
+ integrity sha1-PKdrhSQccXC/fZcD57mqdGMAQNQ=
+ dependencies:
+ tweetnacl "^0.14.3"
+
+big.js@^3.1.3:
+ version "3.1.3"
+ resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.1.3.tgz#4cada2193652eb3ca9ec8e55c9015669c9806978"
+ integrity sha1-TK2iGTZS6zyp7I5VyQFWacmAaXg=
+
+binary-extensions@^1.0.0:
+ version "1.8.0"
+ resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.8.0.tgz#48ec8d16df4377eae5fa5884682480af4d95c774"
+ integrity sha1-SOyNFt9Dd+rl+liEaCSAr02Vx3Q=
+
+block-stream@*:
+ version "0.0.9"
+ resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a"
+ integrity sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=
+ dependencies:
+ inherits "~2.0.0"
+
+bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0:
+ version "4.11.6"
+ resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.6.tgz#53344adb14617a13f6e8dd2ce28905d1c0ba3215"
+ integrity sha1-UzRK2xRhehP26N0s4okF0cC6MhU=
+
+boom@2.x.x:
+ version "2.10.1"
+ resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f"
+ integrity sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=
+ dependencies:
+ hoek "2.x.x"
+
+brace-expansion@^1.0.0:
+ version "1.1.6"
+ resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.6.tgz#7197d7eaa9b87e648390ea61fc66c84427420df9"
+ integrity sha1-cZfX6qm4fmSDkOph/GbIRCdCDfk=
+ dependencies:
+ balanced-match "^0.4.1"
+ concat-map "0.0.1"
+
+braces@^1.8.2:
+ version "1.8.5"
+ resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7"
+ integrity sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=
+ dependencies:
+ expand-range "^1.8.1"
+ preserve "^0.2.0"
+ repeat-element "^1.1.2"
+
+brorand@^1.0.1:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.0.6.tgz#4028706b915f91f7b349a2e0bf3c376039d216e5"
+ integrity sha1-QChwa5FfkfezSaLgvzw3YDnSFuU=
+
+browserify-aes@^1.0.0, browserify-aes@^1.0.4:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.0.6.tgz#5e7725dbdef1fd5930d4ebab48567ce451c48a0a"
+ integrity sha1-Xncl297x/Vkw1OurSFZ85FHEigo=
+ dependencies:
+ buffer-xor "^1.0.2"
+ cipher-base "^1.0.0"
+ create-hash "^1.1.0"
+ evp_bytestokey "^1.0.0"
+ inherits "^2.0.1"
+
+browserify-cipher@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.0.tgz#9988244874bf5ed4e28da95666dcd66ac8fc363a"
+ integrity sha1-mYgkSHS/XtTijalWZtzWasj8Njo=
+ dependencies:
+ browserify-aes "^1.0.4"
+ browserify-des "^1.0.0"
+ evp_bytestokey "^1.0.0"
+
+browserify-des@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.0.tgz#daa277717470922ed2fe18594118a175439721dd"
+ integrity sha1-2qJ3cXRwki7S/hhZQRihdUOXId0=
+ dependencies:
+ cipher-base "^1.0.1"
+ des.js "^1.0.0"
+ inherits "^2.0.1"
+
+browserify-rsa@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524"
+ integrity sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=
+ dependencies:
+ bn.js "^4.1.0"
+ randombytes "^2.0.1"
+
+browserify-sign@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.0.0.tgz#10773910c3c206d5420a46aad8694f820b85968f"
+ integrity sha1-EHc5EMPCBtVCCkaq2GlPgguFlo8=
+ dependencies:
+ bn.js "^4.1.1"
+ browserify-rsa "^4.0.0"
+ create-hash "^1.1.0"
+ create-hmac "^1.1.2"
+ elliptic "^6.0.0"
+ inherits "^2.0.1"
+ parse-asn1 "^5.0.0"
+
+browserify-zlib@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.1.4.tgz#bb35f8a519f600e0fa6b8485241c979d0141fb2d"
+ integrity sha1-uzX4pRn2AOD6a4SFJByXnQFB+y0=
+ dependencies:
+ pako "~0.2.0"
+
+buffer-shims@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/buffer-shims/-/buffer-shims-1.0.0.tgz#9978ce317388c649ad8793028c3477ef044a8b51"
+ integrity sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=
+
+buffer-xor@^1.0.2:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9"
+ integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=
+
+buffer@^4.3.0:
+ version "4.9.1"
+ resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298"
+ integrity sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=
+ dependencies:
+ base64-js "^1.0.2"
+ ieee754 "^1.1.4"
+ isarray "^1.0.0"
+
+builtin-modules@^1.0.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f"
+ integrity sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=
+
+builtin-status-codes@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8"
+ integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=
+
+camelcase-keys@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7"
+ integrity sha1-MIvur/3ygRkFHvodkyITyRuPkuc=
+ dependencies:
+ camelcase "^2.0.0"
+ map-obj "^1.0.0"
+
+camelcase@^1.0.2:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39"
+ integrity sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=
+
+camelcase@^2.0.0:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f"
+ integrity sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=
+
+camelcase@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a"
+ integrity sha1-MvxLn82vhF/N9+c7uXysImHwqwo=
+
+caseless@~0.11.0:
+ version "0.11.0"
+ resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.11.0.tgz#715b96ea9841593cc33067923f5ec60ebda4f7d7"
+ integrity sha1-cVuW6phBWTzDMGeSP17GDr2k99c=
+
+center-align@^0.1.1:
+ version "0.1.3"
+ resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad"
+ integrity sha1-qg0yYptu6XIgBBHL1EYckHvCt60=
+ dependencies:
+ align-text "^0.1.3"
+ lazy-cache "^1.0.3"
+
+chalk@^1.1.0, chalk@^1.1.1:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98"
+ integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=
+ dependencies:
+ ansi-styles "^2.2.1"
+ escape-string-regexp "^1.0.2"
+ has-ansi "^2.0.0"
+ strip-ansi "^3.0.0"
+ supports-color "^2.0.0"
+
+chokidar@^1.0.0, chokidar@^1.4.3:
+ version "1.6.1"
+ resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.6.1.tgz#2f4447ab5e96e50fb3d789fd90d4c72e0e4c70c2"
+ integrity sha1-L0RHq16W5Q+z14n9kNTHLg5McMI=
+ dependencies:
+ anymatch "^1.3.0"
+ async-each "^1.0.0"
+ glob-parent "^2.0.0"
+ inherits "^2.0.1"
+ is-binary-path "^1.0.0"
+ is-glob "^2.0.0"
+ path-is-absolute "^1.0.0"
+ readdirp "^2.0.0"
+ optionalDependencies:
+ fsevents "^1.0.0"
+
+cipher-base@^1.0.0, cipher-base@^1.0.1:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.3.tgz#eeabf194419ce900da3018c207d212f2a6df0a07"
+ integrity sha1-7qvxlEGc6QDaMBjCB9IS8qbfCgc=
+ dependencies:
+ inherits "^2.0.1"
+
+cliui@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1"
+ integrity sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=
+ dependencies:
+ center-align "^0.1.1"
+ right-align "^0.1.1"
+ wordwrap "0.0.2"
+
+cliui@^3.2.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d"
+ integrity sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=
+ dependencies:
+ string-width "^1.0.1"
+ strip-ansi "^3.0.1"
+ wrap-ansi "^2.0.0"
+
+co@^4.6.0:
+ version "4.6.0"
+ resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184"
+ integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=
+
+code-point-at@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77"
+ integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=
+
+combined-stream@^1.0.5, combined-stream@~1.0.5:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.5.tgz#938370a57b4a51dea2c77c15d5c5fdf895164009"
+ integrity sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=
+ dependencies:
+ delayed-stream "~1.0.0"
+
+commander@^2.8.1, commander@^2.9.0:
+ version "2.9.0"
+ resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4"
+ integrity sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=
+ dependencies:
+ graceful-readlink ">= 1.0.0"
+
+concat-map@0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
+ integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
+
+console-browserify@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10"
+ integrity sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=
+ dependencies:
+ date-now "^0.1.4"
+
+console-control-strings@^1.0.0, console-control-strings@~1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e"
+ integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=
+
+constants-browserify@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75"
+ integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=
+
+convert-source-map@^1.1.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.3.0.tgz#e9f3e9c6e2728efc2676696a70eb382f73106a67"
+ integrity sha1-6fPpxuJyjvwmdmlqcOs4L3MQamc=
+
+core-js@^2.4.0:
+ version "2.4.1"
+ resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.4.1.tgz#4de911e667b0eae9124e34254b53aea6fc618d3e"
+ integrity sha1-TekR5mew6ukSTjQlS1OupvxhjT4=
+
+core-util-is@~1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
+ integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=
+
+create-ecdh@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.0.tgz#888c723596cdf7612f6498233eebd7a35301737d"
+ integrity sha1-iIxyNZbN92EvZJgjPuvXo1MBc30=
+ dependencies:
+ bn.js "^4.1.0"
+ elliptic "^6.0.0"
+
+create-hash@^1.1.0, create-hash@^1.1.1:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.1.2.tgz#51210062d7bb7479f6c65bb41a92208b1d61abad"
+ integrity sha1-USEAYte7dHn2xlu0GpIgix1hq60=
+ dependencies:
+ cipher-base "^1.0.1"
+ inherits "^2.0.1"
+ ripemd160 "^1.0.0"
+ sha.js "^2.3.6"
+
+create-hmac@^1.1.0, create-hmac@^1.1.2:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.4.tgz#d3fb4ba253eb8b3f56e39ea2fbcb8af747bd3170"
+ integrity sha1-0/tLolPriz9W456i+8uK90e9MXA=
+ dependencies:
+ create-hash "^1.1.0"
+ inherits "^2.0.1"
+
+cryptiles@2.x.x:
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8"
+ integrity sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=
+ dependencies:
+ boom "2.x.x"
+
+crypto-browserify@^3.11.0:
+ version "3.11.0"
+ resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.11.0.tgz#3652a0906ab9b2a7e0c3ce66a408e957a2485522"
+ integrity sha1-NlKgkGq5sqfgw85mpAjpV6JIVSI=
+ dependencies:
+ browserify-cipher "^1.0.0"
+ browserify-sign "^4.0.0"
+ create-ecdh "^4.0.0"
+ create-hash "^1.1.0"
+ create-hmac "^1.1.0"
+ diffie-hellman "^5.0.0"
+ inherits "^2.0.1"
+ pbkdf2 "^3.0.3"
+ public-encrypt "^4.0.0"
+ randombytes "^2.0.0"
+
+currently-unhandled@^0.4.1:
+ version "0.4.1"
+ resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea"
+ integrity sha1-mI3zP+qxke95mmE2nddsF635V+o=
+ dependencies:
+ array-find-index "^1.0.1"
+
+dashdash@^1.12.0:
+ version "1.14.1"
+ resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0"
+ integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=
+ dependencies:
+ assert-plus "^1.0.0"
+
+date-now@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b"
+ integrity sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=
+
+debug@^2.1.1, debug@^2.2.0, debug@~2.2.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da"
+ integrity sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=
+ dependencies:
+ ms "0.7.1"
+
+decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.1.2:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
+ integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=
+
+deep-extend@~0.4.0:
+ version "0.4.1"
+ resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.1.tgz#efe4113d08085f4e6f9687759810f807469e2253"
+ integrity sha1-7+QRPQgIX05vlod1mBD4B0aeIlM=
+
+delayed-stream@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
+ integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk=
+
+delegates@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a"
+ integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=
+
+des.js@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc"
+ integrity sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=
+ dependencies:
+ inherits "^2.0.1"
+ minimalistic-assert "^1.0.0"
+
+detect-indent@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208"
+ integrity sha1-920GQ1LN9Docts5hnE7jqUdd4gg=
+ dependencies:
+ repeating "^2.0.0"
+
+diffie-hellman@^5.0.0:
+ version "5.0.2"
+ resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.2.tgz#b5835739270cfe26acf632099fded2a07f209e5e"
+ integrity sha1-tYNXOScM/ias9jIJn97SoH8gnl4=
+ dependencies:
+ bn.js "^4.1.0"
+ miller-rabin "^4.0.0"
+ randombytes "^2.0.0"
+
+domain-browser@^1.1.1:
+ version "1.1.7"
+ resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.1.7.tgz#867aa4b093faa05f1de08c06f4d7b21fdf8698bc"
+ integrity sha1-hnqksJP6oF8d4IwG9NeyH9+GmLw=
+
+duplexer@^0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1"
+ integrity sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=
+
+ecc-jsbn@~0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505"
+ integrity sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=
+ dependencies:
+ jsbn "~0.1.0"
+
+elliptic@^6.0.0:
+ version "6.3.2"
+ resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.3.2.tgz#e4c81e0829cf0a65ab70e998b8232723b5c1bc48"
+ integrity sha1-5MgeCCnPCmWrcOmYuCMnI7XBvEg=
+ dependencies:
+ bn.js "^4.4.0"
+ brorand "^1.0.1"
+ hash.js "^1.0.0"
+ inherits "^2.0.1"
+
+emojis-list@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389"
+ integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k=
+
+enhanced-resolve@^3.0.0:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-3.0.2.tgz#0fa709f29e59ee23e6bbcb070c85f992d6247cd1"
+ integrity sha1-D6cJ8p5Z7iPmu8sHDIX5ktYkfNE=
+ dependencies:
+ graceful-fs "^4.1.2"
+ memory-fs "^0.4.0"
+ object-assign "^4.0.1"
+ tapable "^0.2.5"
+
+errno@^0.1.3:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.4.tgz#b896e23a9e5e8ba33871fc996abd3635fc9a1c7d"
+ integrity sha1-uJbiOp5ei6M4cfyZar02NfyaHH0=
+ dependencies:
+ prr "~0.0.0"
+
+error-ex@^1.2.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.0.tgz#e67b43f3e82c96ea3a584ffee0b9fc3325d802d9"
+ integrity sha1-5ntD8+gsluo6WE/+4Ln8MyXYAtk=
+ dependencies:
+ is-arrayish "^0.2.1"
+
+escape-string-regexp@^1.0.2:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
+ integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
+
+esutils@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b"
+ integrity sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=
+
+events@^1.0.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924"
+ integrity sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=
+
+evp_bytestokey@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.0.tgz#497b66ad9fef65cd7c08a6180824ba1476b66e53"
+ integrity sha1-SXtmrZ/vZc18CKYYCCS6FHa2blM=
+ dependencies:
+ create-hash "^1.1.1"
+
+expand-brackets@^0.1.4:
+ version "0.1.5"
+ resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b"
+ integrity sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=
+ dependencies:
+ is-posix-bracket "^0.1.0"
+
+expand-range@^1.8.1:
+ version "1.8.2"
+ resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337"
+ integrity sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=
+ dependencies:
+ fill-range "^2.1.0"
+
+extend@~3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.0.tgz#5a474353b9f3353ddd8176dfd37b91c83a46f1d4"
+ integrity sha1-WkdDU7nzNT3dgXbf03uRyDpG8dQ=
+
+extglob@^0.3.1:
+ version "0.3.2"
+ resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1"
+ integrity sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=
+ dependencies:
+ is-extglob "^1.0.0"
+
+extsprintf@1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.0.2.tgz#e1080e0658e300b06294990cc70e1502235fd550"
+ integrity sha1-4QgOBljjALBilJkMxw4VAiNf1VA=
+
+filename-regex@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.0.tgz#996e3e80479b98b9897f15a8a58b3d084e926775"
+ integrity sha1-mW4+gEebmLmJfxWopYs9CE6SZ3U=
+
+fill-range@^2.1.0:
+ version "2.2.3"
+ resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723"
+ integrity sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=
+ dependencies:
+ is-number "^2.1.0"
+ isobject "^2.0.0"
+ randomatic "^1.1.3"
+ repeat-element "^1.1.2"
+ repeat-string "^1.5.2"
+
+find-up@^1.0.0:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f"
+ integrity sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=
+ dependencies:
+ path-exists "^2.0.0"
+ pinkie-promise "^2.0.0"
+
+for-in@^0.1.5:
+ version "0.1.6"
+ resolved "https://registry.yarnpkg.com/for-in/-/for-in-0.1.6.tgz#c9f96e89bfad18a545af5ec3ed352a1d9e5b4dc8"
+ integrity sha1-yfluib+tGKVFr17D7TUqHZ5bTcg=
+
+for-own@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.4.tgz#0149b41a39088c7515f51ebe1c1386d45f935072"
+ integrity sha1-AUm0GjkIjHUV9R6+HBOG1F+TUHI=
+ dependencies:
+ for-in "^0.1.5"
+
+forever-agent@~0.6.1:
+ version "0.6.1"
+ resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91"
+ integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=
+
+form-data@~2.1.1:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.2.tgz#89c3534008b97eada4cbb157d58f6f5df025eae4"
+ integrity sha1-icNTQAi5fq2ky7FX1Y9vXfAl6uQ=
+ dependencies:
+ asynckit "^0.4.0"
+ combined-stream "^1.0.5"
+ mime-types "^2.1.12"
+
+fs-readdir-recursive@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-1.0.0.tgz#8cd1745c8b4f8a29c8caec392476921ba195f560"
+ integrity sha1-jNF0XItPiinIyuw5JHaSG6GV9WA=
+
+fs.realpath@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
+ integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8=
+
+fsevents@^1.0.0:
+ version "1.0.17"
+ resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.0.17.tgz#8537f3f12272678765b4fd6528c0f1f66f8f4558"
+ integrity sha1-hTfz8SJyZ4dltP1lKMDx9m+PRVg=
+ dependencies:
+ nan "^2.3.0"
+ node-pre-gyp "^0.6.29"
+
+fstream-ignore@~1.0.5:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/fstream-ignore/-/fstream-ignore-1.0.5.tgz#9c31dae34767018fe1d249b24dada67d092da105"
+ integrity sha1-nDHa40dnAY/h0kmyTa2mfQktoQU=
+ dependencies:
+ fstream "^1.0.0"
+ inherits "2"
+ minimatch "^3.0.0"
+
+fstream@^1.0.0, fstream@^1.0.2, fstream@~1.0.10:
+ version "1.0.10"
+ resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.10.tgz#604e8a92fe26ffd9f6fae30399d4984e1ab22822"
+ integrity sha1-YE6Kkv4m/9n2+uMDmdSYThqyKCI=
+ dependencies:
+ graceful-fs "^4.1.2"
+ inherits "~2.0.0"
+ mkdirp ">=0.5 0"
+ rimraf "2"
+
+gauge@~2.7.1:
+ version "2.7.2"
+ resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.2.tgz#15cecc31b02d05345a5d6b0e171cdb3ad2307774"
+ integrity sha1-Fc7MMbAtBTRaXWsOFxzbOtIwd3Q=
+ dependencies:
+ aproba "^1.0.3"
+ console-control-strings "^1.0.0"
+ has-unicode "^2.0.0"
+ object-assign "^4.1.0"
+ signal-exit "^3.0.0"
+ string-width "^1.0.1"
+ strip-ansi "^3.0.1"
+ supports-color "^0.2.0"
+ wide-align "^1.1.0"
+
+generate-function@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/generate-function/-/generate-function-2.0.0.tgz#6858fe7c0969b7d4e9093337647ac79f60dfbe74"
+ integrity sha1-aFj+fAlpt9TpCTM3ZHrHn2DfvnQ=
+
+generate-object-property@^1.1.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/generate-object-property/-/generate-object-property-1.2.0.tgz#9c0e1c40308ce804f4783618b937fa88f99d50d0"
+ integrity sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=
+ dependencies:
+ is-property "^1.0.0"
+
+get-caller-file@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5"
+ integrity sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=
+
+get-stdin@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe"
+ integrity sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=
+
+get-stdin@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-5.0.1.tgz#122e161591e21ff4c52530305693f20e6393a398"
+ integrity sha1-Ei4WFZHiH/TFJTAwVpPyDmOTo5g=
+
+getpass@^0.1.1:
+ version "0.1.6"
+ resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.6.tgz#283ffd9fc1256840875311c1b60e8c40187110e6"
+ integrity sha1-KD/9n8ElaECHUxHBtg6MQBhxEOY=
+ dependencies:
+ assert-plus "^1.0.0"
+
+glob-base@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4"
+ integrity sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=
+ dependencies:
+ glob-parent "^2.0.0"
+ is-glob "^2.0.0"
+
+glob-parent@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28"
+ integrity sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=
+ dependencies:
+ is-glob "^2.0.0"
+
+glob@^5.0.5:
+ version "5.0.15"
+ resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1"
+ integrity sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=
+ dependencies:
+ inflight "^1.0.4"
+ inherits "2"
+ minimatch "2 || 3"
+ once "^1.3.0"
+ path-is-absolute "^1.0.0"
+
+glob@^7.0.5:
+ version "7.1.1"
+ resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8"
+ integrity sha1-gFIR3wT6rxxjo2ADBs31reULLsg=
+ dependencies:
+ fs.realpath "^1.0.0"
+ inflight "^1.0.4"
+ inherits "2"
+ minimatch "^3.0.2"
+ once "^1.3.0"
+ path-is-absolute "^1.0.0"
+
+globals@^9.0.0:
+ version "9.14.0"
+ resolved "https://registry.yarnpkg.com/globals/-/globals-9.14.0.tgz#8859936af0038741263053b39d0e76ca241e4034"
+ integrity sha1-iFmTavADh0EmMFOznQ52yiQeQDQ=
+
+graceful-fs@^4.1.2, graceful-fs@^4.1.4:
+ version "4.1.11"
+ resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658"
+ integrity sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=
+
+"graceful-readlink@>= 1.0.0":
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725"
+ integrity sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=
+
+gzip-size-cli@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/gzip-size-cli/-/gzip-size-cli-1.0.0.tgz#97ef47b1600a2ad8f9c31539661eab39ec36caed"
+ integrity sha1-l+9HsWAKKtj5wxU5Zh6rOew2yu0=
+ dependencies:
+ gzip-size "^3.0.0"
+ meow "^3.3.0"
+
+gzip-size@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-3.0.0.tgz#546188e9bdc337f673772f81660464b389dce520"
+ integrity sha1-VGGI6b3DN/Zzdy+BZgRks4nc5SA=
+ dependencies:
+ duplexer "^0.1.1"
+
+har-validator@~2.0.6:
+ version "2.0.6"
+ resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-2.0.6.tgz#cdcbc08188265ad119b6a5a7c8ab70eecfb5d27d"
+ integrity sha1-zcvAgYgmWtEZtqWnyKtw7s+10n0=
+ dependencies:
+ chalk "^1.1.1"
+ commander "^2.9.0"
+ is-my-json-valid "^2.12.4"
+ pinkie-promise "^2.0.0"
+
+has-ansi@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91"
+ integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=
+ dependencies:
+ ansi-regex "^2.0.0"
+
+has-flag@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa"
+ integrity sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=
+
+has-unicode@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9"
+ integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=
+
+hash.js@^1.0.0:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.0.3.tgz#1332ff00156c0a0ffdd8236013d07b77a0451573"
+ integrity sha1-EzL/ABVsCg/92CNgE9B7d6BFFXM=
+ dependencies:
+ inherits "^2.0.1"
+
+hawk@~3.1.3:
+ version "3.1.3"
+ resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4"
+ integrity sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=
+ dependencies:
+ boom "2.x.x"
+ cryptiles "2.x.x"
+ hoek "2.x.x"
+ sntp "1.x.x"
+
+hoek@2.x.x:
+ version "2.16.3"
+ resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed"
+ integrity sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=
+
+home-or-tmp@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8"
+ integrity sha1-42w/LSyufXRqhX440Y1fMqeILbg=
+ dependencies:
+ os-homedir "^1.0.0"
+ os-tmpdir "^1.0.1"
+
+hosted-git-info@^2.1.4:
+ version "2.1.5"
+ resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.1.5.tgz#0ba81d90da2e25ab34a332e6ec77936e1598118b"
+ integrity sha1-C6gdkNouJas0ozLm7HeTbhWYEYs=
+
+http-signature@~1.1.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf"
+ integrity sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=
+ dependencies:
+ assert-plus "^0.2.0"
+ jsprim "^1.2.2"
+ sshpk "^1.7.0"
+
+https-browserify@0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-0.0.1.tgz#3f91365cabe60b77ed0ebba24b454e3e09d95a82"
+ integrity sha1-P5E2XKvmC3ftDruiS0VOPgnZWoI=
+
+ieee754@^1.1.4:
+ version "1.1.8"
+ resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.8.tgz#be33d40ac10ef1926701f6f08a2d86fbfd1ad3e4"
+ integrity sha1-vjPUCsEO8ZJnAfbwii2G+/0a0+Q=
+
+indent-string@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80"
+ integrity sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=
+ dependencies:
+ repeating "^2.0.0"
+
+indexof@0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d"
+ integrity sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=
+
+inflight@^1.0.4:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
+ integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=
+ dependencies:
+ once "^1.3.0"
+ wrappy "1"
+
+inherits@2, inherits@^2.0.1, inherits@~2.0.0, inherits@~2.0.1:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
+ integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=
+
+inherits@2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1"
+ integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=
+
+ini@~1.3.0:
+ version "1.3.4"
+ resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e"
+ integrity sha1-BTfLedr1m1mhpRff9wbIbsA5Fi4=
+
+interpret@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.0.1.tgz#d579fb7f693b858004947af39fa0db49f795602c"
+ integrity sha1-1Xn7f2k7hYAElHrzn6DbSfeVYCw=
+
+invariant@^2.2.0:
+ version "2.2.2"
+ resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.2.tgz#9e1f56ac0acdb6bf303306f338be3b204ae60360"
+ integrity sha1-nh9WrArNtr8wMwbzOL47IErmA2A=
+ dependencies:
+ loose-envify "^1.0.0"
+
+invert-kv@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6"
+ integrity sha1-EEqOSqym09jNFXqO+L+rLXo//bY=
+
+is-arrayish@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
+ integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=
+
+is-binary-path@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898"
+ integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=
+ dependencies:
+ binary-extensions "^1.0.0"
+
+is-buffer@^1.0.2:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.4.tgz#cfc86ccd5dc5a52fa80489111c6920c457e2d98b"
+ integrity sha1-z8hszV3FpS+oBIkRHGkgxFfi2Ys=
+
+is-builtin-module@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe"
+ integrity sha1-VAVy0096wxGfj3bDDLwbHgN6/74=
+ dependencies:
+ builtin-modules "^1.0.0"
+
+is-dotfile@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.2.tgz#2c132383f39199f8edc268ca01b9b007d205cc4d"
+ integrity sha1-LBMjg/ORmfjtwmjKAbmwB9IFzE0=
+
+is-equal-shallow@^0.1.3:
+ version "0.1.3"
+ resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534"
+ integrity sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=
+ dependencies:
+ is-primitive "^2.0.0"
+
+is-extendable@^0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89"
+ integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=
+
+is-extglob@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0"
+ integrity sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=
+
+is-finite@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa"
+ integrity sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=
+ dependencies:
+ number-is-nan "^1.0.0"
+
+is-fullwidth-code-point@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb"
+ integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs=
+ dependencies:
+ number-is-nan "^1.0.0"
+
+is-glob@^2.0.0, is-glob@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863"
+ integrity sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=
+ dependencies:
+ is-extglob "^1.0.0"
+
+is-my-json-valid@^2.12.4:
+ version "2.15.0"
+ resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.15.0.tgz#936edda3ca3c211fd98f3b2d3e08da43f7b2915b"
+ integrity sha1-k27do8o8IR/ZjzstPgjaQ/eykVs=
+ dependencies:
+ generate-function "^2.0.0"
+ generate-object-property "^1.1.0"
+ jsonpointer "^4.0.0"
+ xtend "^4.0.0"
+
+is-number@^2.0.2, is-number@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f"
+ integrity sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=
+ dependencies:
+ kind-of "^3.0.2"
+
+is-posix-bracket@^0.1.0:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4"
+ integrity sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=
+
+is-primitive@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575"
+ integrity sha1-IHurkWOEmcB7Kt8kCkGochADRXU=
+
+is-property@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84"
+ integrity sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=
+
+is-typedarray@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
+ integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=
+
+is-utf8@^0.2.0:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72"
+ integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=
+
+isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
+ integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=
+
+isobject@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89"
+ integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=
+ dependencies:
+ isarray "1.0.0"
+
+isstream@~0.1.2:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
+ integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=
+
+jodid25519@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/jodid25519/-/jodid25519-1.0.2.tgz#06d4912255093419477d425633606e0e90782967"
+ integrity sha1-BtSRIlUJNBlHfUJWM2BuDpB4KWc=
+ dependencies:
+ jsbn "~0.1.0"
+
+js-tokens@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-2.0.0.tgz#79903f5563ee778cc1162e6dcf1a0027c97f9cb5"
+ integrity sha1-eZA/VWPud4zBFi5tzxoAJ8l/nLU=
+
+jsbn@~0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.0.tgz#650987da0dd74f4ebf5a11377a2aa2d273e97dfd"
+ integrity sha1-ZQmH2g3XT06/WhE3eiqi0nPpff0=
+
+jsesc@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b"
+ integrity sha1-RsP+yMGJKxKwgz25vHYiF226s0s=
+
+json-loader@^0.5.4:
+ version "0.5.4"
+ resolved "https://registry.yarnpkg.com/json-loader/-/json-loader-0.5.4.tgz#8baa1365a632f58a3c46d20175fc6002c96e37de"
+ integrity sha1-i6oTZaYy9Yo8RtIBdfxgAsluN94=
+
+json-schema@0.2.3:
+ version "0.2.3"
+ resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13"
+ integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=
+
+json-stable-stringify@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af"
+ integrity sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=
+ dependencies:
+ jsonify "~0.0.0"
+
+json-stringify-safe@~5.0.1:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"
+ integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=
+
+json5@^0.5.0:
+ version "0.5.1"
+ resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821"
+ integrity sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=
+
+jsonify@~0.0.0:
+ version "0.0.0"
+ resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73"
+ integrity sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=
+
+jsonpointer@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.0.1.tgz#4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9"
+ integrity sha1-T9kss04OnbPInIYi7PUfm5eMbLk=
+
+jsprim@^1.2.2:
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.3.1.tgz#2a7256f70412a29ee3670aaca625994c4dcff252"
+ integrity sha1-KnJW9wQSop7jZwqspiWZTE3P8lI=
+ dependencies:
+ extsprintf "1.0.2"
+ json-schema "0.2.3"
+ verror "1.3.6"
+
+kind-of@^3.0.2:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.1.0.tgz#475d698a5e49ff5e53d14e3e732429dc8bf4cf47"
+ integrity sha1-R11pil5J/15T0U4+cyQp3Iv0z0c=
+ dependencies:
+ is-buffer "^1.0.2"
+
+lazy-cache@^1.0.3:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e"
+ integrity sha1-odePw6UEdMuAhF07O24dpJpEbo4=
+
+lcid@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835"
+ integrity sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=
+ dependencies:
+ invert-kv "^1.0.0"
+
+load-json-file@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0"
+ integrity sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=
+ dependencies:
+ graceful-fs "^4.1.2"
+ parse-json "^2.2.0"
+ pify "^2.0.0"
+ pinkie-promise "^2.0.0"
+ strip-bom "^2.0.0"
+
+loader-runner@^2.2.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.2.0.tgz#824c1b699c4e7a2b6501b85902d5b862bf45b3fa"
+ integrity sha1-gkwbaZxOeitlAbhZAtW4Yr9Fs/o=
+
+loader-utils@^0.2.16:
+ version "0.2.16"
+ resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-0.2.16.tgz#f08632066ed8282835dff88dfb52704765adee6d"
+ integrity sha1-8IYyBm7YKCg13/iN+1JwR2Wt7m0=
+ dependencies:
+ big.js "^3.1.3"
+ emojis-list "^2.0.0"
+ json5 "^0.5.0"
+ object-assign "^4.0.1"
+
+lodash.some@^4.6.0:
+ version "4.6.0"
+ resolved "https://registry.yarnpkg.com/lodash.some/-/lodash.some-4.6.0.tgz#1bb9f314ef6b8baded13b549169b2a945eb68e4d"
+ integrity sha1-G7nzFO9ri63tE7VJFpsqlF62jk0=
+
+lodash@^4.14.0, lodash@^4.2.0:
+ version "4.17.4"
+ resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae"
+ integrity sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=
+
+longest@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097"
+ integrity sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=
+
+loose-envify@^1.0.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.3.0.tgz#6b26248c42f6d4fa4b0d8542f78edfcde35642a8"
+ integrity sha1-ayYkjEL21PpLDYVC947fzeNWQqg=
+ dependencies:
+ js-tokens "^2.0.0"
+
+loud-rejection@^1.0.0:
+ version "1.6.0"
+ resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f"
+ integrity sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=
+ dependencies:
+ currently-unhandled "^0.4.1"
+ signal-exit "^3.0.0"
+
+map-obj@^1.0.0, map-obj@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d"
+ integrity sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=
+
+memory-fs@^0.4.0, memory-fs@~0.4.1:
+ version "0.4.1"
+ resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552"
+ integrity sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=
+ dependencies:
+ errno "^0.1.3"
+ readable-stream "^2.0.1"
+
+meow@^3.3.0, meow@^3.6.0:
+ version "3.7.0"
+ resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb"
+ integrity sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=
+ dependencies:
+ camelcase-keys "^2.0.0"
+ decamelize "^1.1.2"
+ loud-rejection "^1.0.0"
+ map-obj "^1.0.1"
+ minimist "^1.1.3"
+ normalize-package-data "^2.3.4"
+ object-assign "^4.0.1"
+ read-pkg-up "^1.0.1"
+ redent "^1.0.0"
+ trim-newlines "^1.0.0"
+
+micromatch@^2.1.5:
+ version "2.3.11"
+ resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565"
+ integrity sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=
+ dependencies:
+ arr-diff "^2.0.0"
+ array-unique "^0.2.1"
+ braces "^1.8.2"
+ expand-brackets "^0.1.4"
+ extglob "^0.3.1"
+ filename-regex "^2.0.0"
+ is-extglob "^1.0.0"
+ is-glob "^2.0.1"
+ kind-of "^3.0.2"
+ normalize-path "^2.0.1"
+ object.omit "^2.0.0"
+ parse-glob "^3.0.4"
+ regex-cache "^0.4.2"
+
+miller-rabin@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.0.tgz#4a62fb1d42933c05583982f4c716f6fb9e6c6d3d"
+ integrity sha1-SmL7HUKTPAVYOYL0xxb2+55sbT0=
+ dependencies:
+ bn.js "^4.0.0"
+ brorand "^1.0.1"
+
+mime-db@~1.25.0:
+ version "1.25.0"
+ resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.25.0.tgz#c18dbd7c73a5dbf6f44a024dc0d165a1e7b1c392"
+ integrity sha1-wY29fHOl2/b0SgJNwNFloeexw5I=
+
+mime-types@^2.1.12, mime-types@~2.1.7:
+ version "2.1.13"
+ resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.13.tgz#e07aaa9c6c6b9a7ca3012c69003ad25a39e92a88"
+ integrity sha1-4HqqnGxrmnyjASxpADrSWjnpKog=
+ dependencies:
+ mime-db "~1.25.0"
+
+minimalistic-assert@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz#702be2dda6b37f4836bcb3f5db56641b64a1d3d3"
+ integrity sha1-cCvi3aazf0g2vLP121ZkG2Sh09M=
+
+"minimatch@2 || 3", minimatch@^3.0.0, minimatch@^3.0.2:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.3.tgz#2a4e4090b96b2db06a9d7df01055a62a77c9b774"
+ integrity sha1-Kk5AkLlrLbBqnX3wEFWmKnfJt3Q=
+ dependencies:
+ brace-expansion "^1.0.0"
+
+minimist@0.0.8:
+ version "0.0.8"
+ resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d"
+ integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=
+
+minimist@^1.1.3, minimist@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
+ integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=
+
+"mkdirp@>=0.5 0", mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1:
+ version "0.5.1"
+ resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903"
+ integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=
+ dependencies:
+ minimist "0.0.8"
+
+ms@0.7.1:
+ version "0.7.1"
+ resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.1.tgz#9cd13c03adbff25b65effde7ce864ee952017098"
+ integrity sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=
+
+nan@^2.3.0:
+ version "2.5.0"
+ resolved "https://registry.yarnpkg.com/nan/-/nan-2.5.0.tgz#aa8f1e34531d807e9e27755b234b4a6ec0c152a8"
+ integrity sha1-qo8eNFMdgH6eJ3VbI0tKbsDBUqg=
+
+node-libs-browser@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.0.0.tgz#a3a59ec97024985b46e958379646f96c4b616646"
+ integrity sha1-o6WeyXAkmFtG6Vg3lkb5bEthZkY=
+ dependencies:
+ assert "^1.1.1"
+ browserify-zlib "^0.1.4"
+ buffer "^4.3.0"
+ console-browserify "^1.1.0"
+ constants-browserify "^1.0.0"
+ crypto-browserify "^3.11.0"
+ domain-browser "^1.1.1"
+ events "^1.0.0"
+ https-browserify "0.0.1"
+ os-browserify "^0.2.0"
+ path-browserify "0.0.0"
+ process "^0.11.0"
+ punycode "^1.2.4"
+ querystring-es3 "^0.2.0"
+ readable-stream "^2.0.5"
+ stream-browserify "^2.0.1"
+ stream-http "^2.3.1"
+ string_decoder "^0.10.25"
+ timers-browserify "^2.0.2"
+ tty-browserify "0.0.0"
+ url "^0.11.0"
+ util "^0.10.3"
+ vm-browserify "0.0.4"
+
+node-pre-gyp@^0.6.29:
+ version "0.6.32"
+ resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.32.tgz#fc452b376e7319b3d255f5f34853ef6fd8fe1fd5"
+ integrity sha1-/EUrN25zGbPSVfXzSFPvb9j+H9U=
+ dependencies:
+ mkdirp "~0.5.1"
+ nopt "~3.0.6"
+ npmlog "^4.0.1"
+ rc "~1.1.6"
+ request "^2.79.0"
+ rimraf "~2.5.4"
+ semver "~5.3.0"
+ tar "~2.2.1"
+ tar-pack "~3.3.0"
+
+nopt@~3.0.6:
+ version "3.0.6"
+ resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9"
+ integrity sha1-xkZdvwirzU2zWTF/eaxopkayj/k=
+ dependencies:
+ abbrev "1"
+
+normalize-package-data@^2.3.2, normalize-package-data@^2.3.4:
+ version "2.3.5"
+ resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.3.5.tgz#8d924f142960e1777e7ffe170543631cc7cb02df"
+ integrity sha1-jZJPFClg4Xd+f/4XBUNjHMfLAt8=
+ dependencies:
+ hosted-git-info "^2.1.4"
+ is-builtin-module "^1.0.0"
+ semver "2 || 3 || 4 || 5"
+ validate-npm-package-license "^3.0.1"
+
+normalize-path@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.0.1.tgz#47886ac1662760d4261b7d979d241709d3ce3f7a"
+ integrity sha1-R4hqwWYnYNQmG32XnSQXCdPOP3o=
+
+npmlog@^4.0.1:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.0.2.tgz#d03950e0e78ce1527ba26d2a7592e9348ac3e75f"
+ integrity sha1-0DlQ4OeM4VJ7om0qdZLpNIrD518=
+ dependencies:
+ are-we-there-yet "~1.1.2"
+ console-control-strings "~1.1.0"
+ gauge "~2.7.1"
+ set-blocking "~2.0.0"
+
+number-is-nan@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d"
+ integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=
+
+oauth-sign@~0.8.1:
+ version "0.8.2"
+ resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43"
+ integrity sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=
+
+object-assign@^4.0.1, object-assign@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.0.tgz#7a3b3d0e98063d43f4c03f2e8ae6cd51a86883a0"
+ integrity sha1-ejs9DpgGPUP0wD8uiubNUahog6A=
+
+object.omit@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa"
+ integrity sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=
+ dependencies:
+ for-own "^0.1.4"
+ is-extendable "^0.1.1"
+
+once@^1.3.0, once@~1.3.3:
+ version "1.3.3"
+ resolved "https://registry.yarnpkg.com/once/-/once-1.3.3.tgz#b2e261557ce4c314ec8304f3fa82663e4297ca20"
+ integrity sha1-suJhVXzkwxTsgwTz+oJmPkKXyiA=
+ dependencies:
+ wrappy "1"
+
+os-browserify@^0.2.0:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.2.1.tgz#63fc4ccee5d2d7763d26bbf8601078e6c2e0044f"
+ integrity sha1-Y/xMzuXS13Y9Jrv4YBB45sLgBE8=
+
+os-homedir@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3"
+ integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M=
+
+os-locale@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9"
+ integrity sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=
+ dependencies:
+ lcid "^1.0.0"
+
+os-tmpdir@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
+ integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=
+
+output-file-sync@^1.1.0:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/output-file-sync/-/output-file-sync-1.1.2.tgz#d0a33eefe61a205facb90092e826598d5245ce76"
+ integrity sha1-0KM+7+YaIF+suQCS6CZZjVJFznY=
+ dependencies:
+ graceful-fs "^4.1.4"
+ mkdirp "^0.5.1"
+ object-assign "^4.1.0"
+
+pako@~0.2.0:
+ version "0.2.9"
+ resolved "https://registry.yarnpkg.com/pako/-/pako-0.2.9.tgz#f3f7522f4ef782348da8161bad9ecfd51bf83a75"
+ integrity sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=
+
+parse-asn1@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.0.0.tgz#35060f6d5015d37628c770f4e091a0b5a278bc23"
+ integrity sha1-NQYPbVAV03Yox3D04JGgtaJ4vCM=
+ dependencies:
+ asn1.js "^4.0.0"
+ browserify-aes "^1.0.0"
+ create-hash "^1.1.0"
+ evp_bytestokey "^1.0.0"
+ pbkdf2 "^3.0.3"
+
+parse-glob@^3.0.4:
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c"
+ integrity sha1-ssN2z7EfNVE7rdFz7wu246OIORw=
+ dependencies:
+ glob-base "^0.3.0"
+ is-dotfile "^1.0.0"
+ is-extglob "^1.0.0"
+ is-glob "^2.0.0"
+
+parse-json@^2.2.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9"
+ integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=
+ dependencies:
+ error-ex "^1.2.0"
+
+path-browserify@0.0.0:
+ version "0.0.0"
+ resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a"
+ integrity sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=
+
+path-exists@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b"
+ integrity sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=
+ dependencies:
+ pinkie-promise "^2.0.0"
+
+path-is-absolute@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
+ integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
+
+path-type@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441"
+ integrity sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=
+ dependencies:
+ graceful-fs "^4.1.2"
+ pify "^2.0.0"
+ pinkie-promise "^2.0.0"
+
+pbkdf2@^3.0.3:
+ version "3.0.9"
+ resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.9.tgz#f2c4b25a600058b3c3773c086c37dbbee1ffe693"
+ integrity sha1-8sSyWmAAWLPDdzwIbDfbvuH/5pM=
+ dependencies:
+ create-hmac "^1.1.2"
+
+pify@^2.0.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
+ integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw=
+
+pinkie-promise@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa"
+ integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o=
+ dependencies:
+ pinkie "^2.0.0"
+
+pinkie@^2.0.0:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870"
+ integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA=
+
+preserve@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b"
+ integrity sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=
+
+pretty-bytes-cli@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/pretty-bytes-cli/-/pretty-bytes-cli-2.0.0.tgz#e705662cffdc9c75291835333bc2f89ad3c033cf"
+ integrity sha1-5wVmLP/cnHUpGDUzO8L4mtPAM88=
+ dependencies:
+ get-stdin "^5.0.1"
+ meow "^3.6.0"
+ pretty-bytes "^4.0.0"
+
+pretty-bytes@^4.0.0:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-4.0.2.tgz#b2bf82e7350d65c6c33aa95aaa5a4f6327f61cd9"
+ integrity sha1-sr+C5zUNZcbDOqlaqlpPYyf2HNk=
+
+private@^0.1.6:
+ version "0.1.6"
+ resolved "https://registry.yarnpkg.com/private/-/private-0.1.6.tgz#55c6a976d0f9bafb9924851350fe47b9b5fbb7c1"
+ integrity sha1-VcapdtD5uvuZJIUTUP5HubX7t8E=
+
+process-nextick-args@~1.0.6:
+ version "1.0.7"
+ resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3"
+ integrity sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=
+
+process@^0.11.0:
+ version "0.11.9"
+ resolved "https://registry.yarnpkg.com/process/-/process-0.11.9.tgz#7bd5ad21aa6253e7da8682264f1e11d11c0318c1"
+ integrity sha1-e9WtIapiU+fahoImTx4R0RwDGME=
+
+prr@~0.0.0:
+ version "0.0.0"
+ resolved "https://registry.yarnpkg.com/prr/-/prr-0.0.0.tgz#1a84b85908325501411853d0081ee3fa86e2926a"
+ integrity sha1-GoS4WQgyVQFBGFPQCB7j+obikmo=
+
+public-encrypt@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.0.tgz#39f699f3a46560dd5ebacbca693caf7c65c18cc6"
+ integrity sha1-OfaZ86RlYN1eusvKaTyvfGXBjMY=
+ dependencies:
+ bn.js "^4.1.0"
+ browserify-rsa "^4.0.0"
+ create-hash "^1.1.0"
+ parse-asn1 "^5.0.0"
+ randombytes "^2.0.1"
+
+punycode@1.3.2:
+ version "1.3.2"
+ resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d"
+ integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=
+
+punycode@^1.2.4, punycode@^1.4.1:
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e"
+ integrity sha1-wNWmOycYgArY4esPpSachN1BhF4=
+
+qs@~6.3.0:
+ version "6.3.0"
+ resolved "https://registry.yarnpkg.com/qs/-/qs-6.3.0.tgz#f403b264f23bc01228c74131b407f18d5ea5d442"
+ integrity sha1-9AOyZPI7wBIox0ExtAfxjV6l1EI=
+
+querystring-es3@^0.2.0:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73"
+ integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=
+
+querystring@0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620"
+ integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=
+
+randomatic@^1.1.3:
+ version "1.1.6"
+ resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.6.tgz#110dcabff397e9dcff7c0789ccc0a49adf1ec5bb"
+ integrity sha1-EQ3Kv/OX6dz/fAeJzMCkmt8exbs=
+ dependencies:
+ is-number "^2.0.2"
+ kind-of "^3.0.2"
+
+randombytes@^2.0.0, randombytes@^2.0.1:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.0.3.tgz#674c99760901c3c4112771a31e521dc349cc09ec"
+ integrity sha1-Z0yZdgkBw8QRJ3GjHlIdw0nMCew=
+
+rc@~1.1.6:
+ version "1.1.6"
+ resolved "https://registry.yarnpkg.com/rc/-/rc-1.1.6.tgz#43651b76b6ae53b5c802f1151fa3fc3b059969c9"
+ integrity sha1-Q2UbdrauU7XIAvEVH6P8OwWZack=
+ dependencies:
+ deep-extend "~0.4.0"
+ ini "~1.3.0"
+ minimist "^1.2.0"
+ strip-json-comments "~1.0.4"
+
+read-pkg-up@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02"
+ integrity sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=
+ dependencies:
+ find-up "^1.0.0"
+ read-pkg "^1.0.0"
+
+read-pkg@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28"
+ integrity sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=
+ dependencies:
+ load-json-file "^1.0.0"
+ normalize-package-data "^2.3.2"
+ path-type "^1.0.0"
+
+"readable-stream@^2.0.0 || ^1.1.13", readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.1.0:
+ version "2.2.2"
+ resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.2.2.tgz#a9e6fec3c7dda85f8bb1b3ba7028604556fc825e"
+ integrity sha1-qeb+w8fdqF+LsbO6cChgRVb8gl4=
+ dependencies:
+ buffer-shims "^1.0.0"
+ core-util-is "~1.0.0"
+ inherits "~2.0.1"
+ isarray "~1.0.0"
+ process-nextick-args "~1.0.6"
+ string_decoder "~0.10.x"
+ util-deprecate "~1.0.1"
+
+readable-stream@~2.1.4:
+ version "2.1.5"
+ resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.1.5.tgz#66fa8b720e1438b364681f2ad1a63c618448c9d0"
+ integrity sha1-ZvqLcg4UOLNkaB8q0aY8YYRIydA=
+ dependencies:
+ buffer-shims "^1.0.0"
+ core-util-is "~1.0.0"
+ inherits "~2.0.1"
+ isarray "~1.0.0"
+ process-nextick-args "~1.0.6"
+ string_decoder "~0.10.x"
+ util-deprecate "~1.0.1"
+
+readdirp@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78"
+ integrity sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=
+ dependencies:
+ graceful-fs "^4.1.2"
+ minimatch "^3.0.2"
+ readable-stream "^2.0.2"
+ set-immediate-shim "^1.0.1"
+
+redent@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde"
+ integrity sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=
+ dependencies:
+ indent-string "^2.1.0"
+ strip-indent "^1.0.1"
+
+regenerator-runtime@^0.10.0:
+ version "0.10.1"
+ resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.1.tgz#257f41961ce44558b18f7814af48c17559f9faeb"
+ integrity sha1-JX9BlhzkRVixj3gUr0jBdVn5+us=
+
+regex-cache@^0.4.2:
+ version "0.4.3"
+ resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.3.tgz#9b1a6c35d4d0dfcef5711ae651e8e9d3d7114145"
+ integrity sha1-mxpsNdTQ3871cRrmUejp09cRQUU=
+ dependencies:
+ is-equal-shallow "^0.1.3"
+ is-primitive "^2.0.0"
+
+repeat-element@^1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a"
+ integrity sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=
+
+repeat-string@^1.5.2:
+ version "1.6.1"
+ resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637"
+ integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc=
+
+repeating@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda"
+ integrity sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=
+ dependencies:
+ is-finite "^1.0.0"
+
+request@^2.79.0:
+ version "2.79.0"
+ resolved "https://registry.yarnpkg.com/request/-/request-2.79.0.tgz#4dfe5bf6be8b8cdc37fcf93e04b65577722710de"
+ integrity sha1-Tf5b9r6LjNw3/Pk+BLZVd3InEN4=
+ dependencies:
+ aws-sign2 "~0.6.0"
+ aws4 "^1.2.1"
+ caseless "~0.11.0"
+ combined-stream "~1.0.5"
+ extend "~3.0.0"
+ forever-agent "~0.6.1"
+ form-data "~2.1.1"
+ har-validator "~2.0.6"
+ hawk "~3.1.3"
+ http-signature "~1.1.0"
+ is-typedarray "~1.0.0"
+ isstream "~0.1.2"
+ json-stringify-safe "~5.0.1"
+ mime-types "~2.1.7"
+ oauth-sign "~0.8.1"
+ qs "~6.3.0"
+ stringstream "~0.0.4"
+ tough-cookie "~2.3.0"
+ tunnel-agent "~0.4.1"
+ uuid "^3.0.0"
+
+require-directory@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
+ integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I=
+
+require-main-filename@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1"
+ integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=
+
+right-align@^0.1.1:
+ version "0.1.3"
+ resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef"
+ integrity sha1-YTObci/mo1FWiSENJOFMlhSGE+8=
+ dependencies:
+ align-text "^0.1.1"
+
+rimraf@2, rimraf@~2.5.1, rimraf@~2.5.4:
+ version "2.5.4"
+ resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.5.4.tgz#96800093cbf1a0c86bd95b4625467535c29dfa04"
+ integrity sha1-loAAk8vxoMhr2VtGJUZ1NcKd+gQ=
+ dependencies:
+ glob "^7.0.5"
+
+ripemd160@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-1.0.1.tgz#93a4bbd4942bc574b69a8fa57c71de10ecca7d6e"
+ integrity sha1-k6S71JQrxXS2mo+lfHHeEOzKfW4=
+
+"semver@2 || 3 || 4 || 5", semver@~5.3.0:
+ version "5.3.0"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f"
+ integrity sha1-myzl094C0XxgEq0yaqa00M9U+U8=
+
+set-blocking@^2.0.0, set-blocking@~2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
+ integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc=
+
+set-immediate-shim@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61"
+ integrity sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=
+
+setimmediate@^1.0.4:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285"
+ integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=
+
+sha.js@^2.3.6:
+ version "2.4.8"
+ resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.8.tgz#37068c2c476b6baf402d14a49c67f597921f634f"
+ integrity sha1-NwaMLEdra69ALRSknGf1l5IfY08=
+ dependencies:
+ inherits "^2.0.1"
+
+signal-exit@^3.0.0:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d"
+ integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=
+
+slash@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55"
+ integrity sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=
+
+sntp@1.x.x:
+ version "1.0.9"
+ resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198"
+ integrity sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=
+ dependencies:
+ hoek "2.x.x"
+
+source-list-map@~0.1.7:
+ version "0.1.8"
+ resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-0.1.8.tgz#c550b2ab5427f6b3f21f5afead88c4f5587b2106"
+ integrity sha1-xVCyq1Qn9rPyH1r+rYjE9Vh7IQY=
+
+source-map-support@^0.4.2:
+ version "0.4.8"
+ resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.8.tgz#4871918d8a3af07289182e974e32844327b2e98b"
+ integrity sha1-SHGRjYo68HKJGC6XTjKEQyey6Ys=
+ dependencies:
+ source-map "^0.5.3"
+
+source-map@^0.5.0, source-map@^0.5.3, source-map@~0.5.1, source-map@~0.5.3:
+ version "0.5.6"
+ resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412"
+ integrity sha1-dc449SvwczxafwwRjYEzSiu19BI=
+
+spdx-correct@~1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-1.0.2.tgz#4b3073d933ff51f3912f03ac5519498a4150db40"
+ integrity sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=
+ dependencies:
+ spdx-license-ids "^1.0.2"
+
+spdx-expression-parse@~1.0.0:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz#9bdf2f20e1f40ed447fbe273266191fced51626c"
+ integrity sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=
+
+spdx-license-ids@^1.0.2:
+ version "1.2.2"
+ resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz#c9df7a3424594ade6bd11900d596696dc06bac57"
+ integrity sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=
+
+sshpk@^1.7.0:
+ version "1.10.1"
+ resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.10.1.tgz#30e1a5d329244974a1af61511339d595af6638b0"
+ integrity sha1-MOGl0ykkSXShr2FREznVla9mOLA=
+ dependencies:
+ asn1 "~0.2.3"
+ assert-plus "^1.0.0"
+ dashdash "^1.12.0"
+ getpass "^0.1.1"
+ optionalDependencies:
+ bcrypt-pbkdf "^1.0.0"
+ ecc-jsbn "~0.1.1"
+ jodid25519 "^1.0.0"
+ jsbn "~0.1.0"
+ tweetnacl "~0.14.0"
+
+stream-browserify@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.1.tgz#66266ee5f9bdb9940a4e4514cafb43bb71e5c9db"
+ integrity sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=
+ dependencies:
+ inherits "~2.0.1"
+ readable-stream "^2.0.2"
+
+stream-http@^2.3.1:
+ version "2.6.0"
+ resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.6.0.tgz#adf3309ced17624ebfb7ef13e6ac4cfe405a8b12"
+ integrity sha1-rfMwnO0XYk6/t+8T5qxM/kBaixI=
+ dependencies:
+ builtin-status-codes "^3.0.0"
+ inherits "^2.0.1"
+ readable-stream "^2.1.0"
+ to-arraybuffer "^1.0.0"
+ xtend "^4.0.0"
+
+string-width@^1.0.1, string-width@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3"
+ integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=
+ dependencies:
+ code-point-at "^1.0.0"
+ is-fullwidth-code-point "^1.0.0"
+ strip-ansi "^3.0.0"
+
+string_decoder@^0.10.25, string_decoder@~0.10.x:
+ version "0.10.31"
+ resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94"
+ integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=
+
+stringstream@~0.0.4:
+ version "0.0.5"
+ resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878"
+ integrity sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=
+
+strip-ansi@^3.0.0, strip-ansi@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf"
+ integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=
+ dependencies:
+ ansi-regex "^2.0.0"
+
+strip-bom@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e"
+ integrity sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=
+ dependencies:
+ is-utf8 "^0.2.0"
+
+strip-indent@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2"
+ integrity sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=
+ dependencies:
+ get-stdin "^4.0.1"
+
+strip-json-comments@~1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-1.0.4.tgz#1e15fbcac97d3ee99bf2d73b4c656b082bbafb91"
+ integrity sha1-HhX7ysl9Pumb8tc7TGVrCCu6+5E=
+
+supports-color@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-0.2.0.tgz#d92de2694eb3f67323973d7ae3d8b55b4c22190a"
+ integrity sha1-2S3iaU6z9nMjlz1649i1W0wiGQo=
+
+supports-color@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7"
+ integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=
+
+supports-color@^3.1.0:
+ version "3.1.2"
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.1.2.tgz#72a262894d9d408b956ca05ff37b2ed8a6e2a2d5"
+ integrity sha1-cqJiiU2dQIuVbKBf83su2KbiotU=
+ dependencies:
+ has-flag "^1.0.0"
+
+tapable@^0.2.5, tapable@~0.2.5:
+ version "0.2.5"
+ resolved "https://registry.yarnpkg.com/tapable/-/tapable-0.2.5.tgz#1ff6ce7ade58e734ca9bfe36ba342304b377a4d0"
+ integrity sha1-H/bOet5Y5zTKm/42ujQjBLN3pNA=
+
+tar-pack@~3.3.0:
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.3.0.tgz#30931816418f55afc4d21775afdd6720cee45dae"
+ integrity sha1-MJMYFkGPVa/E0hd1r91nIM7kXa4=
+ dependencies:
+ debug "~2.2.0"
+ fstream "~1.0.10"
+ fstream-ignore "~1.0.5"
+ once "~1.3.3"
+ readable-stream "~2.1.4"
+ rimraf "~2.5.1"
+ tar "~2.2.1"
+ uid-number "~0.0.6"
+
+tar@~2.2.1:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1"
+ integrity sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=
+ dependencies:
+ block-stream "*"
+ fstream "^1.0.2"
+ inherits "2"
+
+timers-browserify@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.2.tgz#ab4883cf597dcd50af211349a00fbca56ac86b86"
+ integrity sha1-q0iDz1l9zVCvIRNJoA+8pWrIa4Y=
+ dependencies:
+ setimmediate "^1.0.4"
+
+to-arraybuffer@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43"
+ integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=
+
+to-fast-properties@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.2.tgz#f3f5c0c3ba7299a7ef99427e44633257ade43320"
+ integrity sha1-8/XAw7pymafvmUJ+RGMyV63kMyA=
+
+tough-cookie@~2.3.0:
+ version "2.3.2"
+ resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.2.tgz#f081f76e4c85720e6c37a5faced737150d84072a"
+ integrity sha1-8IH3bkyFcg5sN6X6ztc3FQ2EByo=
+ dependencies:
+ punycode "^1.4.1"
+
+trim-newlines@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613"
+ integrity sha1-WIeWa7WCpFA6QetST301ARgVphM=
+
+tty-browserify@0.0.0:
+ version "0.0.0"
+ resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6"
+ integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=
+
+tunnel-agent@~0.4.1:
+ version "0.4.3"
+ resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.4.3.tgz#6373db76909fe570e08d73583365ed828a74eeeb"
+ integrity sha1-Y3PbdpCf5XDgjXNYM2Xtgop07us=
+
+tweetnacl@^0.14.3, tweetnacl@~0.14.0:
+ version "0.14.5"
+ resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64"
+ integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=
+
+uglify-js@^2.7.5:
+ version "2.7.5"
+ resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.7.5.tgz#4612c0c7baaee2ba7c487de4904ae122079f2ca8"
+ integrity sha1-RhLAx7qu4rp8SH3kkErhIgefLKg=
+ dependencies:
+ async "~0.2.6"
+ source-map "~0.5.1"
+ uglify-to-browserify "~1.0.0"
+ yargs "~3.10.0"
+
+uglify-to-browserify@~1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7"
+ integrity sha1-bgkk1r2mta/jSeOabWMoUKD4grc=
+
+uid-number@~0.0.6:
+ version "0.0.6"
+ resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81"
+ integrity sha1-DqEOgDXo61uOREnwbaHHMGY7qoE=
+
+url@^0.11.0:
+ version "0.11.0"
+ resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1"
+ integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=
+ dependencies:
+ punycode "1.3.2"
+ querystring "0.2.0"
+
+user-home@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/user-home/-/user-home-1.1.1.tgz#2b5be23a32b63a7c9deb8d0f28d485724a3df190"
+ integrity sha1-K1viOjK2Onyd640PKNSFcko98ZA=
+
+util-deprecate@~1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
+ integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=
+
+util@0.10.3, util@^0.10.3:
+ version "0.10.3"
+ resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9"
+ integrity sha1-evsa/lCAUkZInj23/g7TeTNqwPk=
+ dependencies:
+ inherits "2.0.1"
+
+uuid@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.0.1.tgz#6544bba2dfda8c1cf17e629a3a305e2bb1fee6c1"
+ integrity sha1-ZUS7ot/ajBzxfmKaOjBeK7H+5sE=
+
+v8flags@^2.0.10:
+ version "2.0.11"
+ resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-2.0.11.tgz#bca8f30f0d6d60612cc2c00641e6962d42ae6881"
+ integrity sha1-vKjzDw1tYGEswsAGQeaWLUKuaIE=
+ dependencies:
+ user-home "^1.1.1"
+
+validate-npm-package-license@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz#2804babe712ad3379459acfbe24746ab2c303fbc"
+ integrity sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=
+ dependencies:
+ spdx-correct "~1.0.0"
+ spdx-expression-parse "~1.0.0"
+
+verror@1.3.6:
+ version "1.3.6"
+ resolved "https://registry.yarnpkg.com/verror/-/verror-1.3.6.tgz#cff5df12946d297d2baaefaa2689e25be01c005c"
+ integrity sha1-z/XfEpRtKX0rqu+qJoniW+AcAFw=
+ dependencies:
+ extsprintf "1.0.2"
+
+vm-browserify@0.0.4:
+ version "0.0.4"
+ resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-0.0.4.tgz#5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73"
+ integrity sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=
+ dependencies:
+ indexof "0.0.1"
+
+watchpack@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.2.0.tgz#15d4620f1e7471f13fcb551d5c030d2c3eb42dbb"
+ integrity sha1-FdRiDx50cfE/y1UdXAMNLD60Lbs=
+ dependencies:
+ async "^2.1.2"
+ chokidar "^1.4.3"
+ graceful-fs "^4.1.2"
+
+webpack-sources@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-0.1.4.tgz#ccc2c817e08e5fa393239412690bb481821393cd"
+ integrity sha1-zMLIF+COX6OTI5QSaQu0gYITk80=
+ dependencies:
+ source-list-map "~0.1.7"
+ source-map "~0.5.3"
+
+webpack@^2.2.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/webpack/-/webpack-2.2.0.tgz#09246336b5581c9002353f75bcadb598a648f977"
+ integrity sha1-CSRjNrVYHJACNT91vK21mKZI+Xc=
+ dependencies:
+ acorn "^4.0.4"
+ acorn-dynamic-import "^2.0.0"
+ ajv "^4.7.0"
+ ajv-keywords "^1.1.1"
+ async "^2.1.2"
+ enhanced-resolve "^3.0.0"
+ interpret "^1.0.0"
+ json-loader "^0.5.4"
+ loader-runner "^2.2.0"
+ loader-utils "^0.2.16"
+ memory-fs "~0.4.1"
+ mkdirp "~0.5.0"
+ node-libs-browser "^2.0.0"
+ source-map "^0.5.3"
+ supports-color "^3.1.0"
+ tapable "~0.2.5"
+ uglify-js "^2.7.5"
+ watchpack "^1.2.0"
+ webpack-sources "^0.1.4"
+ yargs "^6.0.0"
+
+which-module@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f"
+ integrity sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=
+
+wide-align@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.0.tgz#40edde802a71fea1f070da3e62dcda2e7add96ad"
+ integrity sha1-QO3egCpx/qHwcNo+YtzaLnrdlq0=
+ dependencies:
+ string-width "^1.0.1"
+
+window-size@0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d"
+ integrity sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=
+
+wordwrap@0.0.2:
+ version "0.0.2"
+ resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f"
+ integrity sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=
+
+wrap-ansi@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85"
+ integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=
+ dependencies:
+ string-width "^1.0.1"
+ strip-ansi "^3.0.1"
+
+wrappy@1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
+ integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
+
+xtend@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af"
+ integrity sha1-pcbVMr5lbiPbgg77lDofBJmNY68=
+
+y18n@^3.2.1:
+ version "3.2.1"
+ resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41"
+ integrity sha1-bRX7qITAhnnA136I53WegR4H+kE=
+
+yargs-parser@^4.2.0:
+ version "4.2.1"
+ resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-4.2.1.tgz#29cceac0dc4f03c6c87b4a9f217dd18c9f74871c"
+ integrity sha1-KczqwNxPA8bIe0qfIX3RjJ90hxw=
+ dependencies:
+ camelcase "^3.0.0"
+
+yargs@^6.0.0:
+ version "6.6.0"
+ resolved "https://registry.yarnpkg.com/yargs/-/yargs-6.6.0.tgz#782ec21ef403345f830a808ca3d513af56065208"
+ integrity sha1-eC7CHvQDNF+DCoCMo9UTr1YGUgg=
+ dependencies:
+ camelcase "^3.0.0"
+ cliui "^3.2.0"
+ decamelize "^1.1.1"
+ get-caller-file "^1.0.1"
+ os-locale "^1.4.0"
+ read-pkg-up "^1.0.1"
+ require-directory "^2.1.1"
+ require-main-filename "^1.0.1"
+ set-blocking "^2.0.0"
+ string-width "^1.0.2"
+ which-module "^1.0.0"
+ y18n "^3.2.1"
+ yargs-parser "^4.2.0"
+
+yargs@~3.10.0:
+ version "3.10.0"
+ resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1"
+ integrity sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=
+ dependencies:
+ camelcase "^1.0.2"
+ cliui "^2.1.0"
+ decamelize "^1.0.0"
+ window-size "0.1.0"
diff --git a/date-fns/examples/webpack-4.x/README.md b/date-fns/examples/webpack-4.x/README.md
new file mode 100644
index 0000000..3a88eb1
--- /dev/null
+++ b/date-fns/examples/webpack-4.x/README.md
@@ -0,0 +1,29 @@
+# Usage with webpack 4.x
+
+See [example.js], [fp.js], [misc.js] and [minimal.js] for source code examples.
+
+See [package.json scripts](./package.json) for CLI usage.
+
+[example.js]: ./example.js
+[fp.js]: ./fp.js
+[misc.js]: ./misc.js
+[minimal.js]: ./minimal.js
+[package.json scripts]: ./package.json
+
+## Build example
+
+```sh
+yarn
+yarn build
+```
+
+See `./dist` for the output.
+
+## Minimal build size
+
+You can see the build size stats by running `yarn stats-size`:
+
+```
+Minimal size: 1.41 kB
+Format size: 6.18 kB
+```
diff --git a/date-fns/examples/webpack-4.x/constants.js b/date-fns/examples/webpack-4.x/constants.js
new file mode 100644
index 0000000..832c131
--- /dev/null
+++ b/date-fns/examples/webpack-4.x/constants.js
@@ -0,0 +1,9 @@
+import { maxTime as rootMaxTime, minTime as rootMinTime } from 'date-fns'
+import { minTime } from 'date-fns/constants'
+import { minTime as fpMinTime } from 'date-fns/fp'
+
+console.log(
+ rootMaxTime === 8640000000000000 &&
+ rootMinTime === minTime &&
+ minTime === fpMinTime
+)
diff --git a/date-fns/examples/webpack-4.x/example.js b/date-fns/examples/webpack-4.x/example.js
new file mode 100644
index 0000000..acc5e27
--- /dev/null
+++ b/date-fns/examples/webpack-4.x/example.js
@@ -0,0 +1,4 @@
+import { format } from 'date-fns'
+
+const result = format(new Date(2017, 0, 25, 21, 28, 15), 'dd.MM.yyyy HH:mm:ss')
+console.log(result === '25.01.2017 21:28:15')
diff --git a/date-fns/examples/webpack-4.x/fp.js b/date-fns/examples/webpack-4.x/fp.js
new file mode 100644
index 0000000..79d6311
--- /dev/null
+++ b/date-fns/examples/webpack-4.x/fp.js
@@ -0,0 +1,17 @@
+import { addYears, formatWithOptions } from 'date-fns/fp'
+import { eo } from 'date-fns/locale'
+
+const addFiveYears = addYears(5)
+const dateToString = formatWithOptions({ locale: eo }, 'd MMMM yyyy')
+
+const dates = [
+ new Date(2017, 0 /* Jan */, 1),
+ new Date(2017, 1 /* Feb */, 11),
+ new Date(2017, 6 /* Jul */, 2)
+]
+
+const formattedDates = dates
+ .map(date => dateToString(addFiveYears(date)))
+ .join(', ')
+
+console.log(formattedDates === '1 januaro 2022, 11 februaro 2022, 2 julio 2022')
diff --git a/date-fns/examples/webpack-4.x/minimal.js b/date-fns/examples/webpack-4.x/minimal.js
new file mode 100644
index 0000000..8144bd3
--- /dev/null
+++ b/date-fns/examples/webpack-4.x/minimal.js
@@ -0,0 +1,3 @@
+import { toDate } from 'date-fns'
+
+console.log(toDate(null).toString() === 'Invalid Date')
diff --git a/date-fns/examples/webpack-4.x/misc.js b/date-fns/examples/webpack-4.x/misc.js
new file mode 100644
index 0000000..62fbd61
--- /dev/null
+++ b/date-fns/examples/webpack-4.x/misc.js
@@ -0,0 +1,11 @@
+import { format } from 'date-fns'
+import { eo } from 'date-fns/locale'
+
+const result = format(
+ new Date(2017, 0, 25, 21, 28, 15),
+ 'eeee, dd MMMM HH:mm:ss',
+ {
+ locale: eo
+ }
+)
+console.log(result === 'merkredo, 25 januaro 21:28:15')
diff --git a/date-fns/examples/webpack-4.x/package.json b/date-fns/examples/webpack-4.x/package.json
new file mode 100644
index 0000000..bb4f97d
--- /dev/null
+++ b/date-fns/examples/webpack-4.x/package.json
@@ -0,0 +1,31 @@
+{
+ "name": "date-fns-example-webpack4",
+ "version": "0.1.0",
+ "description": "Example of date-fns usage with webpack 4.x",
+ "main": "example.js",
+ "author": "Sasha Koss <koss@nocorp.me>",
+ "license": "MIT",
+ "dependencies": {
+ "gzip-size-cli": "^2.1.0",
+ "uglify-es": "^3.1.1",
+ "webpack": "4",
+ "webpack-cli": "^3.1.2"
+ },
+ "scripts": {
+ "build": "yarn build-date-fns && yarn build-webpack && yarn build-uglify",
+ "build-date-fns": "env PACKAGE_OUTPUT_PATH=\"$(pwd)/node_modules/date-fns\" ../../scripts/build/package.sh",
+ "build-webpack": "webpack example=./example.js fp=./fp.js misc=./misc.js minimal=./minimal.js constants=./constants.js --output-path dist --output-filename [name].js",
+ "build-uglify": "yarn build-uglify-example && yarn build-uglify-fp && yarn build-uglify-misc && yarn build-uglify-minimal && yarn build-uglify-constants && yarn stats-size",
+ "build-uglify-example": "node_modules/uglify-es/bin/uglifyjs --compress --mangle --output dist/example.min.js dist/example.js",
+ "build-uglify-fp": "node_modules/uglify-es/bin/uglifyjs --compress --mangle --output dist/fp.min.js dist/fp.js",
+ "build-uglify-misc": "node_modules/uglify-es/bin/uglifyjs --compress --mangle --output dist/misc.min.js dist/misc.js",
+ "build-uglify-minimal": "node_modules/uglify-es/bin/uglifyjs --compress --mangle --output dist/minimal.min.js dist/minimal.js",
+ "build-uglify-constants": "node_modules/uglify-es/bin/uglifyjs --compress --mangle --output dist/constants.min.js dist/constants.js",
+ "stats-size": "echo \"Minimal size: $(gzip-size dist/minimal.min.js)\nFormat size: $(gzip-size dist/example.min.js)\nFP size: $(gzip-size dist/fp.min.js)\nMisc size: $(gzip-size dist/misc.min.js)\"",
+ "test": "yarn test-example && yarn test-fp && yarn test-misc && yarn test-constants",
+ "test-example": "test $(env TZ=UTC node ./dist/example.min.js) = true",
+ "test-fp": "test $(env TZ=UTC node ./dist/fp.min.js) = true",
+ "test-misc": "test $(env TZ=UTC node ./dist/misc.min.js) = true",
+ "test-constants": "test $(env TZ=UTC node ./dist/constants.min.js) = true"
+ }
+}
diff --git a/date-fns/examples/webpack-4.x/yarn.lock b/date-fns/examples/webpack-4.x/yarn.lock
new file mode 100644
index 0000000..41dd513
--- /dev/null
+++ b/date-fns/examples/webpack-4.x/yarn.lock
@@ -0,0 +1,3163 @@
+# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
+# yarn lockfile v1
+
+
+"@webassemblyjs/ast@1.7.8":
+ version "1.7.8"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.7.8.tgz#f31f480debeef957f01b623f27eabc695fa4fe8f"
+ integrity sha512-dOrtdtEyB8sInpl75yLPNksY4sRl0j/+t6aHyB/YA+ab9hV3Fo7FmG12FHzP+2MvWVAJtDb+6eXR5EZbZJ+uVg==
+ dependencies:
+ "@webassemblyjs/helper-module-context" "1.7.8"
+ "@webassemblyjs/helper-wasm-bytecode" "1.7.8"
+ "@webassemblyjs/wast-parser" "1.7.8"
+
+"@webassemblyjs/floating-point-hex-parser@1.7.8":
+ version "1.7.8"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.7.8.tgz#1b3ed0e27e384032254e9322fc646dd3e70ef1b9"
+ integrity sha512-kn2zNKGsbql5i56VAgRYkpG+VazqHhQQZQycT2uXAazrAEDs23gy+Odkh5VblybjnwX2/BITkDtNmSO76hdIvQ==
+
+"@webassemblyjs/helper-api-error@1.7.8":
+ version "1.7.8"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.7.8.tgz#a2b49c11f615e736f815ec927f035dcfa690d572"
+ integrity sha512-xUwxDXsd1dUKArJEP5wWM5zxgCSwZApSOJyP1XO7M8rNUChUDblcLQ4FpzTpWG2YeylMwMl1MlP5Ztryiz1x4g==
+
+"@webassemblyjs/helper-buffer@1.7.8":
+ version "1.7.8"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.7.8.tgz#3fc66bfa09c1c60e824cf3d5887826fac062877d"
+ integrity sha512-WXiIMnuvuwlhWvVOm8xEXU9DnHaa3AgAU0ZPfvY8vO1cSsmYb2WbGbHnMLgs43vXnA7XAob9b56zuZaMkxpCBg==
+
+"@webassemblyjs/helper-code-frame@1.7.8":
+ version "1.7.8"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.7.8.tgz#cc5a7e9522b70e7580df056dfd34020cf29645b0"
+ integrity sha512-TLQxyD9qGOIdX5LPQOPo0Ernd88U5rHkFb8WAjeMIeA0sPjCHeVPaGqUGGIXjUcblUkjuDAc07bruCcNHUrHDA==
+ dependencies:
+ "@webassemblyjs/wast-printer" "1.7.8"
+
+"@webassemblyjs/helper-fsm@1.7.8":
+ version "1.7.8"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.7.8.tgz#fe4607430af466912797c21acafd3046080182ea"
+ integrity sha512-TjK0CnD8hAPkV5mbSp5aWl6SO1+H3WFcjWtixWoy8EMA99YnNzYhpc/WSYWhf7yrhpzkq5tZB0tvLK3Svr3IXA==
+
+"@webassemblyjs/helper-module-context@1.7.8":
+ version "1.7.8"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.7.8.tgz#3c2e7ee93d14ff4768ba66fb1be42fdc9dc7160a"
+ integrity sha512-uCutAKR7Nm0VsFixcvnB4HhAyHouNbj0Dx1p7eRjFjXGGZ+N7ftTaG1ZbWCasAEbtwGj54LP8+lkBZdTCPmLGg==
+
+"@webassemblyjs/helper-wasm-bytecode@1.7.8":
+ version "1.7.8"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.7.8.tgz#89bdb78cd6dd5209ae2ed2925de78d0f0e00b6f0"
+ integrity sha512-AdCCE3BMW6V34WYaKUmPgVHa88t2Z14P4/0LjLwuGkI0X6pf7nzp0CehzVVk51cKm2ymVXjl9dCG+gR1yhITIQ==
+
+"@webassemblyjs/helper-wasm-section@1.7.8":
+ version "1.7.8"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.7.8.tgz#c68ef7d26a6fc12421b2e6e56f9bc810dfb33e87"
+ integrity sha512-BkBhYQuzyl4hgTGOKo87Vdw6f9nj8HhI7WYpI0MCC5qFa5ahrAPOGgyETVdnRbv+Rjukl9MxxfDmVcVC435lDg==
+ dependencies:
+ "@webassemblyjs/ast" "1.7.8"
+ "@webassemblyjs/helper-buffer" "1.7.8"
+ "@webassemblyjs/helper-wasm-bytecode" "1.7.8"
+ "@webassemblyjs/wasm-gen" "1.7.8"
+
+"@webassemblyjs/ieee754@1.7.8":
+ version "1.7.8"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.7.8.tgz#1f37974b13cb486a9237e73ce04cac7a2f1265ed"
+ integrity sha512-tOarWChdG1a3y1yqCX0JMDKzrat5tQe4pV6K/TX19BcXsBLYxFQOL1DEDa5KG9syeyvCrvZ+i1+Mv1ExngvktQ==
+ dependencies:
+ "@xtuc/ieee754" "^1.2.0"
+
+"@webassemblyjs/leb128@1.7.8":
+ version "1.7.8"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.7.8.tgz#1bee83426819192db2ea1a234b84c7ebc6d34c1f"
+ integrity sha512-GCYeGPgUFWJiZuP4NICbcyUQNxNLJIf476Ei+K+jVuuebtLpfvwkvYT6iTUE7oZYehhkor4Zz2g7SJ/iZaPudQ==
+ dependencies:
+ "@xtuc/long" "4.2.1"
+
+"@webassemblyjs/utf8@1.7.8":
+ version "1.7.8"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.7.8.tgz#2b489d5cf43e0aebb93d8e2d792aff9879c61f05"
+ integrity sha512-9X+f0VV+xNXW2ujfIRSXBJENGE6Qh7bNVKqu3yDjTFB3ar3nsThsGBBKdTG58aXOm2iUH6v28VIf88ymPXODHA==
+
+"@webassemblyjs/wasm-edit@1.7.8":
+ version "1.7.8"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.7.8.tgz#f8bdbe7088718eca27b1c349bb7c06b8a457950c"
+ integrity sha512-6D3Hm2gFixrfyx9XjSON4ml1FZTugqpkIz5Awvrou8fnpyprVzcm4X8pyGRtA2Piixjl3DqmX/HB1xdWyE097A==
+ dependencies:
+ "@webassemblyjs/ast" "1.7.8"
+ "@webassemblyjs/helper-buffer" "1.7.8"
+ "@webassemblyjs/helper-wasm-bytecode" "1.7.8"
+ "@webassemblyjs/helper-wasm-section" "1.7.8"
+ "@webassemblyjs/wasm-gen" "1.7.8"
+ "@webassemblyjs/wasm-opt" "1.7.8"
+ "@webassemblyjs/wasm-parser" "1.7.8"
+ "@webassemblyjs/wast-printer" "1.7.8"
+
+"@webassemblyjs/wasm-gen@1.7.8":
+ version "1.7.8"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.7.8.tgz#7e8abf1545eae74ac6781d545c034af3cfd0c7d5"
+ integrity sha512-a7O/wE6eBeVKKUYgpMK7NOHmMADD85rSXLe3CqrWRDwWff5y3cSVbzpN6Qv3z6C4hdkpq9qyij1Ga1kemOZGvQ==
+ dependencies:
+ "@webassemblyjs/ast" "1.7.8"
+ "@webassemblyjs/helper-wasm-bytecode" "1.7.8"
+ "@webassemblyjs/ieee754" "1.7.8"
+ "@webassemblyjs/leb128" "1.7.8"
+ "@webassemblyjs/utf8" "1.7.8"
+
+"@webassemblyjs/wasm-opt@1.7.8":
+ version "1.7.8"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.7.8.tgz#7ada6e211914728fce02ff0ff9c344edc6d41f26"
+ integrity sha512-3lbQ0PT81NHCdi1sR/7+SNpZadM4qYcTSr62nFFAA7e5lFwJr14M1Gi+A/Y3PgcDWOHYjsaNGPpPU0H03N6Blg==
+ dependencies:
+ "@webassemblyjs/ast" "1.7.8"
+ "@webassemblyjs/helper-buffer" "1.7.8"
+ "@webassemblyjs/wasm-gen" "1.7.8"
+ "@webassemblyjs/wasm-parser" "1.7.8"
+
+"@webassemblyjs/wasm-parser@1.7.8":
+ version "1.7.8"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.7.8.tgz#dac47c291fb6a3e63529aecd647592cd34afbf94"
+ integrity sha512-rZ/zlhp9DHR/05zh1MbAjT2t624sjrPP/OkJCjXqzm7ynH+nIdNcn9Ixc+qzPMFXhIrk0rBoQ3to6sEIvHh9jQ==
+ dependencies:
+ "@webassemblyjs/ast" "1.7.8"
+ "@webassemblyjs/helper-api-error" "1.7.8"
+ "@webassemblyjs/helper-wasm-bytecode" "1.7.8"
+ "@webassemblyjs/ieee754" "1.7.8"
+ "@webassemblyjs/leb128" "1.7.8"
+ "@webassemblyjs/utf8" "1.7.8"
+
+"@webassemblyjs/wast-parser@1.7.8":
+ version "1.7.8"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.7.8.tgz#f8aab9a450c048c1f9537695c89faeb92fabfba5"
+ integrity sha512-Q/zrvtUvzWuSiJMcSp90fi6gp2nraiHXjTV2VgAluVdVapM4gy1MQn7akja2p6eSBDQpKJPJ6P4TxRkghRS5dg==
+ dependencies:
+ "@webassemblyjs/ast" "1.7.8"
+ "@webassemblyjs/floating-point-hex-parser" "1.7.8"
+ "@webassemblyjs/helper-api-error" "1.7.8"
+ "@webassemblyjs/helper-code-frame" "1.7.8"
+ "@webassemblyjs/helper-fsm" "1.7.8"
+ "@xtuc/long" "4.2.1"
+
+"@webassemblyjs/wast-printer@1.7.8":
+ version "1.7.8"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.7.8.tgz#e7e965782c1912f6a965f14a53ff43d8ad0403a5"
+ integrity sha512-GllIthRtwTxRDAURRNXscu7Napzmdf1jt1gpiZiK/QN4fH0lSGs3OTmvdfsMNP7tqI4B3ZtfaaWRlNIQug6Xyg==
+ dependencies:
+ "@webassemblyjs/ast" "1.7.8"
+ "@webassemblyjs/wast-parser" "1.7.8"
+ "@xtuc/long" "4.2.1"
+
+"@xtuc/ieee754@^1.2.0":
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790"
+ integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==
+
+"@xtuc/long@4.2.1":
+ version "4.2.1"
+ resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.1.tgz#5c85d662f76fa1d34575766c5dcd6615abcd30d8"
+ integrity sha512-FZdkNBDqBRHKQ2MEbSC17xnPFOhZxeJ2YGSfr2BKf3sujG49Qe3bB+rGCwQfIaA7WHnGeGkSijX4FuBCdrzW/g==
+
+abbrev@1:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.0.tgz#d0554c2256636e2f56e7c2e5ad183f859428d81f"
+ integrity sha1-0FVMIlZjbi9W58LlrRg/hZQo2B8=
+
+acorn-dynamic-import@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-3.0.0.tgz#901ceee4c7faaef7e07ad2a47e890675da50a278"
+ integrity sha512-zVWV8Z8lislJoOKKqdNMOB+s6+XV5WERty8MnKBeFgwA+19XJjJHs2RP5dzM57FftIs+jQnRToLiWazKr6sSWg==
+ dependencies:
+ acorn "^5.0.0"
+
+acorn@^5.0.0:
+ version "5.1.2"
+ resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.1.2.tgz#911cb53e036807cf0fa778dc5d370fbd864246d7"
+ integrity sha512-o96FZLJBPY1lvTuJylGA9Bk3t/GKPPJG8H0ydQQl01crzwJgspa4AEIq/pVTXigmK0PHVQhiAtn8WMBLL9D2WA==
+
+acorn@^5.6.2:
+ version "5.7.3"
+ resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.3.tgz#67aa231bf8812974b85235a96771eb6bd07ea279"
+ integrity sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==
+
+ajv-keywords@^3.1.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.2.0.tgz#e86b819c602cf8821ad637413698f1dec021847a"
+ integrity sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo=
+
+ajv@^6.1.0:
+ version "6.5.4"
+ resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.5.4.tgz#247d5274110db653706b550fcc2b797ca28cfc59"
+ integrity sha512-4Wyjt8+t6YszqaXnLDfMmG/8AlO5Zbcsy3ATHncCzjW/NoPzAId8AK6749Ybjmdt+kUY1gP60fCu46oDxPv/mg==
+ dependencies:
+ fast-deep-equal "^2.0.1"
+ fast-json-stable-stringify "^2.0.0"
+ json-schema-traverse "^0.4.1"
+ uri-js "^4.2.2"
+
+ansi-regex@^2.0.0:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df"
+ integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8=
+
+ansi-regex@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998"
+ integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=
+
+ansi-styles@^3.2.1:
+ version "3.2.1"
+ resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
+ integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==
+ dependencies:
+ color-convert "^1.9.0"
+
+anymatch@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb"
+ integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==
+ dependencies:
+ micromatch "^3.1.4"
+ normalize-path "^2.1.1"
+
+aproba@^1.0.3:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.1.2.tgz#45c6629094de4e96f693ef7eab74ae079c240fc1"
+ integrity sha512-ZpYajIfO0j2cOFTO955KUMIKNmj6zhX8kVztMAxFsDaMwz+9Z9SV0uou2pC9HJqcfpffOsjnbrDMvkNy+9RXPw==
+
+aproba@^1.1.1:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a"
+ integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==
+
+are-we-there-yet@~1.1.2:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz#bb5dca382bb94f05e15194373d16fd3ba1ca110d"
+ integrity sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=
+ dependencies:
+ delegates "^1.0.0"
+ readable-stream "^2.0.6"
+
+arr-diff@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520"
+ integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=
+
+arr-flatten@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1"
+ integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==
+
+arr-union@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4"
+ integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=
+
+array-find-index@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1"
+ integrity sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=
+
+array-unique@^0.3.2:
+ version "0.3.2"
+ resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428"
+ integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=
+
+asn1.js@^4.0.0:
+ version "4.9.1"
+ resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.9.1.tgz#48ba240b45a9280e94748990ba597d216617fd40"
+ integrity sha1-SLokC0WpKA6UdImQull9IWYX/UA=
+ dependencies:
+ bn.js "^4.0.0"
+ inherits "^2.0.1"
+ minimalistic-assert "^1.0.0"
+
+assert@^1.1.1:
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/assert/-/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91"
+ integrity sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=
+ dependencies:
+ util "0.10.3"
+
+assign-symbols@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367"
+ integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=
+
+async-each@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d"
+ integrity sha1-GdOGodntxufByF04iu28xW0zYC0=
+
+atob@^2.1.1:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9"
+ integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==
+
+balanced-match@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
+ integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c=
+
+base64-js@^1.0.2:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.2.1.tgz#a91947da1f4a516ea38e5b4ec0ec3773675e0886"
+ integrity sha512-dwVUVIXsBZXwTuwnXI9RK8sBmgq09NDHzyR9SAph9eqk76gKK2JSQmZARC2zRC81JC2QTtxD0ARU5qTS25gIGw==
+
+base@^0.11.1:
+ version "0.11.2"
+ resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f"
+ integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==
+ dependencies:
+ cache-base "^1.0.1"
+ class-utils "^0.3.5"
+ component-emitter "^1.2.1"
+ define-property "^1.0.0"
+ isobject "^3.0.1"
+ mixin-deep "^1.2.0"
+ pascalcase "^0.1.1"
+
+big.js@^3.1.3:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.2.0.tgz#a5fc298b81b9e0dca2e458824784b65c52ba588e"
+ integrity sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==
+
+binary-extensions@^1.0.0:
+ version "1.10.0"
+ resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.10.0.tgz#9aeb9a6c5e88638aad171e167f5900abe24835d0"
+ integrity sha1-muuabF6IY4qtFx4Wf1kAq+JINdA=
+
+bluebird@^3.5.1:
+ version "3.5.2"
+ resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.2.tgz#1be0908e054a751754549c270489c1505d4ab15a"
+ integrity sha512-dhHTWMI7kMx5whMQntl7Vr9C6BvV10lFXDAasnqnrMYhXVCzzk6IO9Fo2L75jXHT07WrOngL1WDXOp+yYS91Yg==
+
+bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0:
+ version "4.11.8"
+ resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f"
+ integrity sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==
+
+brace-expansion@^1.1.7:
+ version "1.1.8"
+ resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.8.tgz#c07b211c7c952ec1f8efd51a77ef0d1d3990a292"
+ integrity sha1-wHshHHyVLsH479Uad+8NHTmQopI=
+ dependencies:
+ balanced-match "^1.0.0"
+ concat-map "0.0.1"
+
+braces@^2.3.0, braces@^2.3.1:
+ version "2.3.2"
+ resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729"
+ integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==
+ dependencies:
+ arr-flatten "^1.1.0"
+ array-unique "^0.3.2"
+ extend-shallow "^2.0.1"
+ fill-range "^4.0.0"
+ isobject "^3.0.1"
+ repeat-element "^1.1.2"
+ snapdragon "^0.8.1"
+ snapdragon-node "^2.0.1"
+ split-string "^3.0.2"
+ to-regex "^3.0.1"
+
+brorand@^1.0.1:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f"
+ integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=
+
+browserify-aes@^1.0.0, browserify-aes@^1.0.4:
+ version "1.0.8"
+ resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.0.8.tgz#c8fa3b1b7585bb7ba77c5560b60996ddec6d5309"
+ integrity sha512-WYCMOT/PtGTlpOKFht0YJFYcPy6pLCR98CtWfzK13zoynLlBMvAdEMSRGmgnJCw2M2j/5qxBkinZQFobieM8dQ==
+ dependencies:
+ buffer-xor "^1.0.3"
+ cipher-base "^1.0.0"
+ create-hash "^1.1.0"
+ evp_bytestokey "^1.0.3"
+ inherits "^2.0.1"
+ safe-buffer "^5.0.1"
+
+browserify-cipher@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.0.tgz#9988244874bf5ed4e28da95666dcd66ac8fc363a"
+ integrity sha1-mYgkSHS/XtTijalWZtzWasj8Njo=
+ dependencies:
+ browserify-aes "^1.0.4"
+ browserify-des "^1.0.0"
+ evp_bytestokey "^1.0.0"
+
+browserify-des@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.0.tgz#daa277717470922ed2fe18594118a175439721dd"
+ integrity sha1-2qJ3cXRwki7S/hhZQRihdUOXId0=
+ dependencies:
+ cipher-base "^1.0.1"
+ des.js "^1.0.0"
+ inherits "^2.0.1"
+
+browserify-rsa@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524"
+ integrity sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=
+ dependencies:
+ bn.js "^4.1.0"
+ randombytes "^2.0.1"
+
+browserify-sign@^4.0.0:
+ version "4.0.4"
+ resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.0.4.tgz#aa4eb68e5d7b658baa6bf6a57e630cbd7a93d298"
+ integrity sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=
+ dependencies:
+ bn.js "^4.1.1"
+ browserify-rsa "^4.0.0"
+ create-hash "^1.1.0"
+ create-hmac "^1.1.2"
+ elliptic "^6.0.0"
+ inherits "^2.0.1"
+ parse-asn1 "^5.0.0"
+
+browserify-zlib@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.1.4.tgz#bb35f8a519f600e0fa6b8485241c979d0141fb2d"
+ integrity sha1-uzX4pRn2AOD6a4SFJByXnQFB+y0=
+ dependencies:
+ pako "~0.2.0"
+
+buffer-from@^1.0.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef"
+ integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==
+
+buffer-xor@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9"
+ integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=
+
+buffer@^4.3.0:
+ version "4.9.1"
+ resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298"
+ integrity sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=
+ dependencies:
+ base64-js "^1.0.2"
+ ieee754 "^1.1.4"
+ isarray "^1.0.0"
+
+builtin-modules@^1.0.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f"
+ integrity sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=
+
+builtin-status-codes@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8"
+ integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=
+
+cacache@^10.0.4:
+ version "10.0.4"
+ resolved "https://registry.yarnpkg.com/cacache/-/cacache-10.0.4.tgz#6452367999eff9d4188aefd9a14e9d7c6a263460"
+ integrity sha512-Dph0MzuH+rTQzGPNT9fAnrPmMmjKfST6trxJeK7NQuHRaVw24VzPRWTmg9MpcwOVQZO0E1FBICUlFeNaKPIfHA==
+ dependencies:
+ bluebird "^3.5.1"
+ chownr "^1.0.1"
+ glob "^7.1.2"
+ graceful-fs "^4.1.11"
+ lru-cache "^4.1.1"
+ mississippi "^2.0.0"
+ mkdirp "^0.5.1"
+ move-concurrently "^1.0.1"
+ promise-inflight "^1.0.1"
+ rimraf "^2.6.2"
+ ssri "^5.2.4"
+ unique-filename "^1.1.0"
+ y18n "^4.0.0"
+
+cache-base@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2"
+ integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==
+ dependencies:
+ collection-visit "^1.0.0"
+ component-emitter "^1.2.1"
+ get-value "^2.0.6"
+ has-value "^1.0.0"
+ isobject "^3.0.1"
+ set-value "^2.0.0"
+ to-object-path "^0.3.0"
+ union-value "^1.0.0"
+ unset-value "^1.0.0"
+
+camelcase-keys@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7"
+ integrity sha1-MIvur/3ygRkFHvodkyITyRuPkuc=
+ dependencies:
+ camelcase "^2.0.0"
+ map-obj "^1.0.0"
+
+camelcase@^2.0.0:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f"
+ integrity sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=
+
+camelcase@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd"
+ integrity sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=
+
+chalk@^2.4.1:
+ version "2.4.1"
+ resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.1.tgz#18c49ab16a037b6eb0152cc83e3471338215b66e"
+ integrity sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==
+ dependencies:
+ ansi-styles "^3.2.1"
+ escape-string-regexp "^1.0.5"
+ supports-color "^5.3.0"
+
+chokidar@^2.0.2:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.0.4.tgz#356ff4e2b0e8e43e322d18a372460bbcf3accd26"
+ integrity sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ==
+ dependencies:
+ anymatch "^2.0.0"
+ async-each "^1.0.0"
+ braces "^2.3.0"
+ glob-parent "^3.1.0"
+ inherits "^2.0.1"
+ is-binary-path "^1.0.0"
+ is-glob "^4.0.0"
+ lodash.debounce "^4.0.8"
+ normalize-path "^2.1.1"
+ path-is-absolute "^1.0.0"
+ readdirp "^2.0.0"
+ upath "^1.0.5"
+ optionalDependencies:
+ fsevents "^1.2.2"
+
+chownr@^1.0.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.1.tgz#54726b8b8fff4df053c42187e801fb4412df1494"
+ integrity sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g==
+
+chrome-trace-event@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.0.tgz#45a91bd2c20c9411f0963b5aaeb9a1b95e09cc48"
+ integrity sha512-xDbVgyfDTT2piup/h8dK/y4QZfJRSa73bw1WZ8b4XM1o7fsFubUVGYcE+1ANtOzJJELGpYoG2961z0Z6OAld9A==
+ dependencies:
+ tslib "^1.9.0"
+
+cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de"
+ integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==
+ dependencies:
+ inherits "^2.0.1"
+ safe-buffer "^5.0.1"
+
+class-utils@^0.3.5:
+ version "0.3.6"
+ resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463"
+ integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==
+ dependencies:
+ arr-union "^3.1.0"
+ define-property "^0.2.5"
+ isobject "^3.0.0"
+ static-extend "^0.1.1"
+
+cliui@^4.0.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49"
+ integrity sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==
+ dependencies:
+ string-width "^2.1.1"
+ strip-ansi "^4.0.0"
+ wrap-ansi "^2.0.0"
+
+code-point-at@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77"
+ integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=
+
+collection-visit@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0"
+ integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=
+ dependencies:
+ map-visit "^1.0.0"
+ object-visit "^1.0.0"
+
+color-convert@^1.9.0:
+ version "1.9.3"
+ resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
+ integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==
+ dependencies:
+ color-name "1.1.3"
+
+color-name@1.1.3:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
+ integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=
+
+commander@~2.11.0:
+ version "2.11.0"
+ resolved "https://registry.yarnpkg.com/commander/-/commander-2.11.0.tgz#157152fd1e7a6c8d98a5b715cf376df928004563"
+ integrity sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ==
+
+commander@~2.13.0:
+ version "2.13.0"
+ resolved "https://registry.yarnpkg.com/commander/-/commander-2.13.0.tgz#6964bca67685df7c1f1430c584f07d7597885b9c"
+ integrity sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==
+
+commondir@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b"
+ integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=
+
+component-emitter@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6"
+ integrity sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=
+
+concat-map@0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
+ integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
+
+concat-stream@^1.5.0:
+ version "1.6.2"
+ resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34"
+ integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==
+ dependencies:
+ buffer-from "^1.0.0"
+ inherits "^2.0.3"
+ readable-stream "^2.2.2"
+ typedarray "^0.0.6"
+
+console-browserify@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10"
+ integrity sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=
+ dependencies:
+ date-now "^0.1.4"
+
+console-control-strings@^1.0.0, console-control-strings@~1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e"
+ integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=
+
+constants-browserify@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75"
+ integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=
+
+copy-concurrently@^1.0.0:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0"
+ integrity sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==
+ dependencies:
+ aproba "^1.1.1"
+ fs-write-stream-atomic "^1.0.8"
+ iferr "^0.1.5"
+ mkdirp "^0.5.1"
+ rimraf "^2.5.4"
+ run-queue "^1.0.0"
+
+copy-descriptor@^0.1.0:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d"
+ integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=
+
+core-util-is@~1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
+ integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=
+
+create-ecdh@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.0.tgz#888c723596cdf7612f6498233eebd7a35301737d"
+ integrity sha1-iIxyNZbN92EvZJgjPuvXo1MBc30=
+ dependencies:
+ bn.js "^4.1.0"
+ elliptic "^6.0.0"
+
+create-hash@^1.1.0, create-hash@^1.1.2:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.1.3.tgz#606042ac8b9262750f483caddab0f5819172d8fd"
+ integrity sha1-YGBCrIuSYnUPSDyt2rD1gZFy2P0=
+ dependencies:
+ cipher-base "^1.0.1"
+ inherits "^2.0.1"
+ ripemd160 "^2.0.0"
+ sha.js "^2.4.0"
+
+create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4:
+ version "1.1.6"
+ resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.6.tgz#acb9e221a4e17bdb076e90657c42b93e3726cf06"
+ integrity sha1-rLniIaThe9sHbpBlfEK5PjcmzwY=
+ dependencies:
+ cipher-base "^1.0.3"
+ create-hash "^1.1.0"
+ inherits "^2.0.1"
+ ripemd160 "^2.0.0"
+ safe-buffer "^5.0.1"
+ sha.js "^2.4.8"
+
+cross-spawn@^6.0.0, cross-spawn@^6.0.5:
+ version "6.0.5"
+ resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4"
+ integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==
+ dependencies:
+ nice-try "^1.0.4"
+ path-key "^2.0.1"
+ semver "^5.5.0"
+ shebang-command "^1.2.0"
+ which "^1.2.9"
+
+crypto-browserify@^3.11.0:
+ version "3.11.1"
+ resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.11.1.tgz#948945efc6757a400d6e5e5af47194d10064279f"
+ integrity sha512-Na7ZlwCOqoaW5RwUK1WpXws2kv8mNhWdTlzob0UXulk6G9BDbyiJaGTYBIX61Ozn9l1EPPJpICZb4DaOpT9NlQ==
+ dependencies:
+ browserify-cipher "^1.0.0"
+ browserify-sign "^4.0.0"
+ create-ecdh "^4.0.0"
+ create-hash "^1.1.0"
+ create-hmac "^1.1.0"
+ diffie-hellman "^5.0.0"
+ inherits "^2.0.1"
+ pbkdf2 "^3.0.3"
+ public-encrypt "^4.0.0"
+ randombytes "^2.0.0"
+
+currently-unhandled@^0.4.1:
+ version "0.4.1"
+ resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea"
+ integrity sha1-mI3zP+qxke95mmE2nddsF635V+o=
+ dependencies:
+ array-find-index "^1.0.1"
+
+cyclist@~0.2.2:
+ version "0.2.2"
+ resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-0.2.2.tgz#1b33792e11e914a2fd6d6ed6447464444e5fa640"
+ integrity sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=
+
+date-now@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b"
+ integrity sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=
+
+debug@^2.1.2, debug@^2.3.3:
+ version "2.6.9"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
+ integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
+ dependencies:
+ ms "2.0.0"
+
+debug@^2.2.0:
+ version "2.6.8"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.8.tgz#e731531ca2ede27d188222427da17821d68ff4fc"
+ integrity sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=
+ dependencies:
+ ms "2.0.0"
+
+decamelize@^1.1.2:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
+ integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=
+
+decamelize@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-2.0.0.tgz#656d7bbc8094c4c788ea53c5840908c9c7d063c7"
+ integrity sha512-Ikpp5scV3MSYxY39ymh45ZLEecsTdv/Xj2CaQfI8RLMuwi7XvjX9H/fhraiSuU+C5w5NTDu4ZU72xNiZnurBPg==
+ dependencies:
+ xregexp "4.0.0"
+
+decode-uri-component@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545"
+ integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=
+
+deep-extend@^0.6.0:
+ version "0.6.0"
+ resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac"
+ integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==
+
+define-property@^0.2.5:
+ version "0.2.5"
+ resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116"
+ integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=
+ dependencies:
+ is-descriptor "^0.1.0"
+
+define-property@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6"
+ integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY=
+ dependencies:
+ is-descriptor "^1.0.0"
+
+define-property@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d"
+ integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==
+ dependencies:
+ is-descriptor "^1.0.2"
+ isobject "^3.0.1"
+
+delegates@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a"
+ integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=
+
+des.js@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc"
+ integrity sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=
+ dependencies:
+ inherits "^2.0.1"
+ minimalistic-assert "^1.0.0"
+
+detect-libc@^1.0.2:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b"
+ integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=
+
+diffie-hellman@^5.0.0:
+ version "5.0.2"
+ resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.2.tgz#b5835739270cfe26acf632099fded2a07f209e5e"
+ integrity sha1-tYNXOScM/ias9jIJn97SoH8gnl4=
+ dependencies:
+ bn.js "^4.1.0"
+ miller-rabin "^4.0.0"
+ randombytes "^2.0.0"
+
+domain-browser@^1.1.1:
+ version "1.1.7"
+ resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.1.7.tgz#867aa4b093faa05f1de08c06f4d7b21fdf8698bc"
+ integrity sha1-hnqksJP6oF8d4IwG9NeyH9+GmLw=
+
+duplexer@^0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1"
+ integrity sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=
+
+duplexify@^3.4.2, duplexify@^3.6.0:
+ version "3.6.0"
+ resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.6.0.tgz#592903f5d80b38d037220541264d69a198fb3410"
+ integrity sha512-fO3Di4tBKJpYTFHAxTU00BcfWMY9w24r/x21a6rZRbsD/ToUgGxsMbiGRmB7uVAXeGKXD9MwiLZa5E97EVgIRQ==
+ dependencies:
+ end-of-stream "^1.0.0"
+ inherits "^2.0.1"
+ readable-stream "^2.0.0"
+ stream-shift "^1.0.0"
+
+elliptic@^6.0.0:
+ version "6.4.0"
+ resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.4.0.tgz#cac9af8762c85836187003c8dfe193e5e2eae5df"
+ integrity sha1-ysmvh2LIWDYYcAPI3+GT5eLq5d8=
+ dependencies:
+ bn.js "^4.4.0"
+ brorand "^1.0.1"
+ hash.js "^1.0.0"
+ hmac-drbg "^1.0.0"
+ inherits "^2.0.1"
+ minimalistic-assert "^1.0.0"
+ minimalistic-crypto-utils "^1.0.0"
+
+emojis-list@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389"
+ integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k=
+
+end-of-stream@^1.0.0, end-of-stream@^1.1.0:
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43"
+ integrity sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==
+ dependencies:
+ once "^1.4.0"
+
+enhanced-resolve@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz#41c7e0bfdfe74ac1ffe1e57ad6a5c6c9f3742a7f"
+ integrity sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng==
+ dependencies:
+ graceful-fs "^4.1.2"
+ memory-fs "^0.4.0"
+ tapable "^1.0.0"
+
+errno@^0.1.3:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.4.tgz#b896e23a9e5e8ba33871fc996abd3635fc9a1c7d"
+ integrity sha1-uJbiOp5ei6M4cfyZar02NfyaHH0=
+ dependencies:
+ prr "~0.0.0"
+
+errno@~0.1.7:
+ version "0.1.7"
+ resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618"
+ integrity sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==
+ dependencies:
+ prr "~1.0.1"
+
+error-ex@^1.2.0:
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.1.tgz#f855a86ce61adc4e8621c3cda21e7a7612c3a8dc"
+ integrity sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=
+ dependencies:
+ is-arrayish "^0.2.1"
+
+escape-string-regexp@^1.0.5:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
+ integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
+
+eslint-scope@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.0.tgz#50bf3071e9338bcdc43331794a0cb533f0136172"
+ integrity sha512-1G6UTDi7Jc1ELFwnR58HV4fK9OQK4S6N985f166xqXxpjU6plxFISJa2Ba9KCQuFa8RCnj/lSFJbHo7UFDBnUA==
+ dependencies:
+ esrecurse "^4.1.0"
+ estraverse "^4.1.1"
+
+esrecurse@^4.1.0:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.0.tgz#fa9568d98d3823f9a41d91e902dcab9ea6e5b163"
+ integrity sha1-+pVo2Y04I/mkHZHpAtyrnqblsWM=
+ dependencies:
+ estraverse "^4.1.0"
+ object-assign "^4.0.1"
+
+estraverse@^4.1.0, estraverse@^4.1.1:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13"
+ integrity sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=
+
+events@^1.0.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924"
+ integrity sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=
+
+evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02"
+ integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==
+ dependencies:
+ md5.js "^1.3.4"
+ safe-buffer "^5.1.1"
+
+execa@^0.10.0:
+ version "0.10.0"
+ resolved "https://registry.yarnpkg.com/execa/-/execa-0.10.0.tgz#ff456a8f53f90f8eccc71a96d11bdfc7f082cb50"
+ integrity sha512-7XOMnz8Ynx1gGo/3hyV9loYNPWM94jG3+3T3Y8tsfSstFmETmENCMU/A/zj8Lyaj1lkgEepKepvd6240tBRvlw==
+ dependencies:
+ cross-spawn "^6.0.0"
+ get-stream "^3.0.0"
+ is-stream "^1.1.0"
+ npm-run-path "^2.0.0"
+ p-finally "^1.0.0"
+ signal-exit "^3.0.0"
+ strip-eof "^1.0.0"
+
+expand-brackets@^2.1.4:
+ version "2.1.4"
+ resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622"
+ integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI=
+ dependencies:
+ debug "^2.3.3"
+ define-property "^0.2.5"
+ extend-shallow "^2.0.1"
+ posix-character-classes "^0.1.0"
+ regex-not "^1.0.0"
+ snapdragon "^0.8.1"
+ to-regex "^3.0.1"
+
+extend-shallow@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f"
+ integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=
+ dependencies:
+ is-extendable "^0.1.0"
+
+extend-shallow@^3.0.0, extend-shallow@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8"
+ integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=
+ dependencies:
+ assign-symbols "^1.0.0"
+ is-extendable "^1.0.1"
+
+extglob@^2.0.4:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543"
+ integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==
+ dependencies:
+ array-unique "^0.3.2"
+ define-property "^1.0.0"
+ expand-brackets "^2.1.4"
+ extend-shallow "^2.0.1"
+ fragment-cache "^0.2.1"
+ regex-not "^1.0.0"
+ snapdragon "^0.8.1"
+ to-regex "^3.0.1"
+
+fast-deep-equal@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49"
+ integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=
+
+fast-json-stable-stringify@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2"
+ integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I=
+
+fill-range@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7"
+ integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=
+ dependencies:
+ extend-shallow "^2.0.1"
+ is-number "^3.0.0"
+ repeat-string "^1.6.1"
+ to-regex-range "^2.1.0"
+
+find-cache-dir@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-1.0.0.tgz#9288e3e9e3cc3748717d39eade17cf71fc30ee6f"
+ integrity sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=
+ dependencies:
+ commondir "^1.0.1"
+ make-dir "^1.0.0"
+ pkg-dir "^2.0.0"
+
+find-up@^1.0.0:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f"
+ integrity sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=
+ dependencies:
+ path-exists "^2.0.0"
+ pinkie-promise "^2.0.0"
+
+find-up@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7"
+ integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c=
+ dependencies:
+ locate-path "^2.0.0"
+
+find-up@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73"
+ integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==
+ dependencies:
+ locate-path "^3.0.0"
+
+flush-write-stream@^1.0.0:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.0.3.tgz#c5d586ef38af6097650b49bc41b55fabb19f35bd"
+ integrity sha512-calZMC10u0FMUqoiunI2AiGIIUtUIvifNwkHhNupZH4cbNnW1Itkoh/Nf5HFYmDrwWPjrUxpkZT0KhuCq0jmGw==
+ dependencies:
+ inherits "^2.0.1"
+ readable-stream "^2.0.4"
+
+for-in@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80"
+ integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=
+
+fragment-cache@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19"
+ integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=
+ dependencies:
+ map-cache "^0.2.2"
+
+from2@^2.1.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af"
+ integrity sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=
+ dependencies:
+ inherits "^2.0.1"
+ readable-stream "^2.0.0"
+
+fs-minipass@^1.2.5:
+ version "1.2.5"
+ resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.5.tgz#06c277218454ec288df77ada54a03b8702aacb9d"
+ integrity sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ==
+ dependencies:
+ minipass "^2.2.1"
+
+fs-write-stream-atomic@^1.0.8:
+ version "1.0.10"
+ resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9"
+ integrity sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=
+ dependencies:
+ graceful-fs "^4.1.2"
+ iferr "^0.1.5"
+ imurmurhash "^0.1.4"
+ readable-stream "1 || 2"
+
+fs.realpath@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
+ integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8=
+
+fsevents@^1.2.2:
+ version "1.2.4"
+ resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.4.tgz#f41dcb1af2582af3692da36fc55cbd8e1041c426"
+ integrity sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg==
+ dependencies:
+ nan "^2.9.2"
+ node-pre-gyp "^0.10.0"
+
+gauge@~2.7.3:
+ version "2.7.4"
+ resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7"
+ integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=
+ dependencies:
+ aproba "^1.0.3"
+ console-control-strings "^1.0.0"
+ has-unicode "^2.0.0"
+ object-assign "^4.1.0"
+ signal-exit "^3.0.0"
+ string-width "^1.0.1"
+ strip-ansi "^3.0.1"
+ wide-align "^1.1.0"
+
+get-caller-file@^1.0.1:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a"
+ integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==
+
+get-stdin@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe"
+ integrity sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=
+
+get-stream@^3.0.0:
+ version "3.0.0"
+ resolved "http://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14"
+ integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=
+
+get-value@^2.0.3, get-value@^2.0.6:
+ version "2.0.6"
+ resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28"
+ integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=
+
+glob-parent@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae"
+ integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=
+ dependencies:
+ is-glob "^3.1.0"
+ path-dirname "^1.0.0"
+
+glob@^7.0.5:
+ version "7.1.2"
+ resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15"
+ integrity sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==
+ dependencies:
+ fs.realpath "^1.0.0"
+ inflight "^1.0.4"
+ inherits "2"
+ minimatch "^3.0.4"
+ once "^1.3.0"
+ path-is-absolute "^1.0.0"
+
+glob@^7.1.2:
+ version "7.1.3"
+ resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1"
+ integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==
+ dependencies:
+ fs.realpath "^1.0.0"
+ inflight "^1.0.4"
+ inherits "2"
+ minimatch "^3.0.4"
+ once "^1.3.0"
+ path-is-absolute "^1.0.0"
+
+global-modules-path@^2.3.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/global-modules-path/-/global-modules-path-2.3.0.tgz#b0e2bac6beac39745f7db5c59d26a36a0b94f7dc"
+ integrity sha512-HchvMJNYh9dGSCy8pOQ2O8u/hoXaL+0XhnrwH0RyLiSXMMTl9W3N6KUU73+JFOg5PGjtzl6VZzUQsnrpm7Szag==
+
+graceful-fs@^4.1.11, graceful-fs@^4.1.2:
+ version "4.1.11"
+ resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658"
+ integrity sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=
+
+gzip-size-cli@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/gzip-size-cli/-/gzip-size-cli-2.1.0.tgz#78a1fc3dc399e9d39d9f1f63a7aae38a817e917d"
+ integrity sha512-2aFj16SGdAD5FTTqJe4Wdzs5d05MnHYLr5lwmxdFjiWzJWhUI+L48beS0Vmlg6s9Kqe+bfQ42WskPZdzTwPH4w==
+ dependencies:
+ gzip-size "^4.0.0"
+ meow "^3.7.0"
+ pretty-bytes "^4.0.2"
+
+gzip-size@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-4.0.0.tgz#a80e13e18938bcb2e6702fec606f5cf8b666db3a"
+ integrity sha512-6SWfFRd8r8VTKTpJCR7h/T6IbCaK+jM/n2gB1+pV3IrKcrLO1WTb8ZWdaRy1T/nwOz80cp4gAJf8sujpZxfA1w==
+ dependencies:
+ duplexer "^0.1.1"
+ pify "^3.0.0"
+
+has-flag@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
+ integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0=
+
+has-unicode@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9"
+ integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=
+
+has-value@^0.3.1:
+ version "0.3.1"
+ resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f"
+ integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=
+ dependencies:
+ get-value "^2.0.3"
+ has-values "^0.1.4"
+ isobject "^2.0.0"
+
+has-value@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177"
+ integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=
+ dependencies:
+ get-value "^2.0.6"
+ has-values "^1.0.0"
+ isobject "^3.0.0"
+
+has-values@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771"
+ integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E=
+
+has-values@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f"
+ integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=
+ dependencies:
+ is-number "^3.0.0"
+ kind-of "^4.0.0"
+
+hash-base@^2.0.0:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-2.0.2.tgz#66ea1d856db4e8a5470cadf6fce23ae5244ef2e1"
+ integrity sha1-ZuodhW206KVHDK32/OI65SRO8uE=
+ dependencies:
+ inherits "^2.0.1"
+
+hash-base@^3.0.0:
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.0.4.tgz#5fc8686847ecd73499403319a6b0a3f3f6ae4918"
+ integrity sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=
+ dependencies:
+ inherits "^2.0.1"
+ safe-buffer "^5.0.1"
+
+hash.js@^1.0.0, hash.js@^1.0.3:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.3.tgz#340dedbe6290187151c1ea1d777a3448935df846"
+ integrity sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==
+ dependencies:
+ inherits "^2.0.3"
+ minimalistic-assert "^1.0.0"
+
+hmac-drbg@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1"
+ integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=
+ dependencies:
+ hash.js "^1.0.3"
+ minimalistic-assert "^1.0.0"
+ minimalistic-crypto-utils "^1.0.1"
+
+hosted-git-info@^2.1.4:
+ version "2.5.0"
+ resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.5.0.tgz#6d60e34b3abbc8313062c3b798ef8d901a07af3c"
+ integrity sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==
+
+https-browserify@0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-0.0.1.tgz#3f91365cabe60b77ed0ebba24b454e3e09d95a82"
+ integrity sha1-P5E2XKvmC3ftDruiS0VOPgnZWoI=
+
+iconv-lite@^0.4.4:
+ version "0.4.24"
+ resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
+ integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
+ dependencies:
+ safer-buffer ">= 2.1.2 < 3"
+
+ieee754@^1.1.4:
+ version "1.1.8"
+ resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.8.tgz#be33d40ac10ef1926701f6f08a2d86fbfd1ad3e4"
+ integrity sha1-vjPUCsEO8ZJnAfbwii2G+/0a0+Q=
+
+iferr@^0.1.5:
+ version "0.1.5"
+ resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501"
+ integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE=
+
+ignore-walk@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.1.tgz#a83e62e7d272ac0e3b551aaa82831a19b69f82f8"
+ integrity sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ==
+ dependencies:
+ minimatch "^3.0.4"
+
+import-local@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d"
+ integrity sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==
+ dependencies:
+ pkg-dir "^3.0.0"
+ resolve-cwd "^2.0.0"
+
+imurmurhash@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
+ integrity sha1-khi5srkoojixPcT7a21XbyMUU+o=
+
+indent-string@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80"
+ integrity sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=
+ dependencies:
+ repeating "^2.0.0"
+
+indexof@0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d"
+ integrity sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=
+
+inflight@^1.0.4:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
+ integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=
+ dependencies:
+ once "^1.3.0"
+ wrappy "1"
+
+inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.1, inherits@~2.0.3:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
+ integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=
+
+inherits@2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1"
+ integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=
+
+ini@~1.3.0:
+ version "1.3.4"
+ resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e"
+ integrity sha1-BTfLedr1m1mhpRff9wbIbsA5Fi4=
+
+interpret@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.1.0.tgz#7ed1b1410c6a0e0f78cf95d3b8440c63f78b8614"
+ integrity sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=
+
+invert-kv@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02"
+ integrity sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==
+
+is-accessor-descriptor@^0.1.6:
+ version "0.1.6"
+ resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6"
+ integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=
+ dependencies:
+ kind-of "^3.0.2"
+
+is-accessor-descriptor@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656"
+ integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==
+ dependencies:
+ kind-of "^6.0.0"
+
+is-arrayish@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
+ integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=
+
+is-binary-path@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898"
+ integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=
+ dependencies:
+ binary-extensions "^1.0.0"
+
+is-buffer@^1.1.5:
+ version "1.1.5"
+ resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.5.tgz#1f3b26ef613b214b88cbca23cc6c01d87961eecc"
+ integrity sha1-Hzsm72E7IUuIy8ojzGwB2Hlh7sw=
+
+is-builtin-module@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe"
+ integrity sha1-VAVy0096wxGfj3bDDLwbHgN6/74=
+ dependencies:
+ builtin-modules "^1.0.0"
+
+is-data-descriptor@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56"
+ integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=
+ dependencies:
+ kind-of "^3.0.2"
+
+is-data-descriptor@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7"
+ integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==
+ dependencies:
+ kind-of "^6.0.0"
+
+is-descriptor@^0.1.0:
+ version "0.1.6"
+ resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca"
+ integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==
+ dependencies:
+ is-accessor-descriptor "^0.1.6"
+ is-data-descriptor "^0.1.4"
+ kind-of "^5.0.0"
+
+is-descriptor@^1.0.0, is-descriptor@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec"
+ integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==
+ dependencies:
+ is-accessor-descriptor "^1.0.0"
+ is-data-descriptor "^1.0.0"
+ kind-of "^6.0.2"
+
+is-extendable@^0.1.0, is-extendable@^0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89"
+ integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=
+
+is-extendable@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4"
+ integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==
+ dependencies:
+ is-plain-object "^2.0.4"
+
+is-extglob@^2.1.0, is-extglob@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
+ integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=
+
+is-finite@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa"
+ integrity sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=
+ dependencies:
+ number-is-nan "^1.0.0"
+
+is-fullwidth-code-point@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb"
+ integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs=
+ dependencies:
+ number-is-nan "^1.0.0"
+
+is-fullwidth-code-point@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f"
+ integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=
+
+is-glob@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a"
+ integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=
+ dependencies:
+ is-extglob "^2.1.0"
+
+is-glob@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.0.tgz#9521c76845cc2610a85203ddf080a958c2ffabc0"
+ integrity sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=
+ dependencies:
+ is-extglob "^2.1.1"
+
+is-number@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195"
+ integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=
+ dependencies:
+ kind-of "^3.0.2"
+
+is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677"
+ integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==
+ dependencies:
+ isobject "^3.0.1"
+
+is-stream@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"
+ integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ=
+
+is-utf8@^0.2.0:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72"
+ integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=
+
+is-windows@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d"
+ integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==
+
+isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
+ integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=
+
+isexe@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
+ integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=
+
+isobject@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89"
+ integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=
+ dependencies:
+ isarray "1.0.0"
+
+isobject@^3.0.0, isobject@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df"
+ integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8=
+
+json-parse-better-errors@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9"
+ integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==
+
+json-schema-traverse@^0.4.1:
+ version "0.4.1"
+ resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660"
+ integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==
+
+json5@^0.5.0:
+ version "0.5.1"
+ resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821"
+ integrity sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=
+
+kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0:
+ version "3.2.2"
+ resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64"
+ integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=
+ dependencies:
+ is-buffer "^1.1.5"
+
+kind-of@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57"
+ integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc=
+ dependencies:
+ is-buffer "^1.1.5"
+
+kind-of@^5.0.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d"
+ integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==
+
+kind-of@^6.0.0, kind-of@^6.0.2:
+ version "6.0.2"
+ resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051"
+ integrity sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==
+
+lcid@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/lcid/-/lcid-2.0.0.tgz#6ef5d2df60e52f82eb228a4c373e8d1f397253cf"
+ integrity sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==
+ dependencies:
+ invert-kv "^2.0.0"
+
+load-json-file@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0"
+ integrity sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=
+ dependencies:
+ graceful-fs "^4.1.2"
+ parse-json "^2.2.0"
+ pify "^2.0.0"
+ pinkie-promise "^2.0.0"
+ strip-bom "^2.0.0"
+
+loader-runner@^2.3.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.3.0.tgz#f482aea82d543e07921700d5a46ef26fdac6b8a2"
+ integrity sha1-9IKuqC1UPgeSFwDVpG7yb9rGuKI=
+
+loader-utils@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.1.0.tgz#c98aef488bcceda2ffb5e2de646d6a754429f5cd"
+ integrity sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=
+ dependencies:
+ big.js "^3.1.3"
+ emojis-list "^2.0.0"
+ json5 "^0.5.0"
+
+locate-path@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e"
+ integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=
+ dependencies:
+ p-locate "^2.0.0"
+ path-exists "^3.0.0"
+
+locate-path@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e"
+ integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==
+ dependencies:
+ p-locate "^3.0.0"
+ path-exists "^3.0.0"
+
+lodash.debounce@^4.0.8:
+ version "4.0.8"
+ resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af"
+ integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168=
+
+loud-rejection@^1.0.0:
+ version "1.6.0"
+ resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f"
+ integrity sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=
+ dependencies:
+ currently-unhandled "^0.4.1"
+ signal-exit "^3.0.0"
+
+lru-cache@^4.1.1:
+ version "4.1.3"
+ resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.3.tgz#a1175cf3496dfc8436c156c334b4955992bce69c"
+ integrity sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==
+ dependencies:
+ pseudomap "^1.0.2"
+ yallist "^2.1.2"
+
+make-dir@^1.0.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c"
+ integrity sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==
+ dependencies:
+ pify "^3.0.0"
+
+map-age-cleaner@^0.1.1:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.2.tgz#098fb15538fd3dbe461f12745b0ca8568d4e3f74"
+ integrity sha512-UN1dNocxQq44IhJyMI4TU8phc2m9BddacHRPRjKGLYaF0jqd3xLz0jS0skpAU9WgYyoR4gHtUpzytNBS385FWQ==
+ dependencies:
+ p-defer "^1.0.0"
+
+map-cache@^0.2.2:
+ version "0.2.2"
+ resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf"
+ integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=
+
+map-obj@^1.0.0, map-obj@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d"
+ integrity sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=
+
+map-visit@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f"
+ integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=
+ dependencies:
+ object-visit "^1.0.0"
+
+md5.js@^1.3.4:
+ version "1.3.4"
+ resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.4.tgz#e9bdbde94a20a5ac18b04340fc5764d5b09d901d"
+ integrity sha1-6b296UogpawYsENA/Fdk1bCdkB0=
+ dependencies:
+ hash-base "^3.0.0"
+ inherits "^2.0.1"
+
+mem@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/mem/-/mem-4.0.0.tgz#6437690d9471678f6cc83659c00cbafcd6b0cdaf"
+ integrity sha512-WQxG/5xYc3tMbYLXoXPm81ET2WDULiU5FxbuIoNbJqLOOI8zehXFdZuiUEgfdrU2mVB1pxBZUGlYORSrpuJreA==
+ dependencies:
+ map-age-cleaner "^0.1.1"
+ mimic-fn "^1.0.0"
+ p-is-promise "^1.1.0"
+
+memory-fs@^0.4.0, memory-fs@~0.4.1:
+ version "0.4.1"
+ resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552"
+ integrity sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=
+ dependencies:
+ errno "^0.1.3"
+ readable-stream "^2.0.1"
+
+meow@^3.7.0:
+ version "3.7.0"
+ resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb"
+ integrity sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=
+ dependencies:
+ camelcase-keys "^2.0.0"
+ decamelize "^1.1.2"
+ loud-rejection "^1.0.0"
+ map-obj "^1.0.1"
+ minimist "^1.1.3"
+ normalize-package-data "^2.3.4"
+ object-assign "^4.0.1"
+ read-pkg-up "^1.0.1"
+ redent "^1.0.0"
+ trim-newlines "^1.0.0"
+
+micromatch@^3.1.4, micromatch@^3.1.8:
+ version "3.1.10"
+ resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23"
+ integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==
+ dependencies:
+ arr-diff "^4.0.0"
+ array-unique "^0.3.2"
+ braces "^2.3.1"
+ define-property "^2.0.2"
+ extend-shallow "^3.0.2"
+ extglob "^2.0.4"
+ fragment-cache "^0.2.1"
+ kind-of "^6.0.2"
+ nanomatch "^1.2.9"
+ object.pick "^1.3.0"
+ regex-not "^1.0.0"
+ snapdragon "^0.8.1"
+ to-regex "^3.0.2"
+
+miller-rabin@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.0.tgz#4a62fb1d42933c05583982f4c716f6fb9e6c6d3d"
+ integrity sha1-SmL7HUKTPAVYOYL0xxb2+55sbT0=
+ dependencies:
+ bn.js "^4.0.0"
+ brorand "^1.0.1"
+
+mimic-fn@^1.0.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022"
+ integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==
+
+minimalistic-assert@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz#702be2dda6b37f4836bcb3f5db56641b64a1d3d3"
+ integrity sha1-cCvi3aazf0g2vLP121ZkG2Sh09M=
+
+minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a"
+ integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=
+
+minimatch@^3.0.2, minimatch@^3.0.4:
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
+ integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==
+ dependencies:
+ brace-expansion "^1.1.7"
+
+minimist@0.0.8:
+ version "0.0.8"
+ resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d"
+ integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=
+
+minimist@^1.1.3, minimist@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
+ integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=
+
+minipass@^2.2.1, minipass@^2.3.3:
+ version "2.3.4"
+ resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.4.tgz#4768d7605ed6194d6d576169b9e12ef71e9d9957"
+ integrity sha512-mlouk1OHlaUE8Odt1drMtG1bAJA4ZA6B/ehysgV0LUIrDHdKgo1KorZq3pK0b/7Z7LJIQ12MNM6aC+Tn6lUZ5w==
+ dependencies:
+ safe-buffer "^5.1.2"
+ yallist "^3.0.0"
+
+minizlib@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.1.0.tgz#11e13658ce46bc3a70a267aac58359d1e0c29ceb"
+ integrity sha512-4T6Ur/GctZ27nHfpt9THOdRZNgyJ9FZchYO1ceg5S8Q3DNLCKYy44nCZzgCJgcvx2UM8czmqak5BCxJMrq37lA==
+ dependencies:
+ minipass "^2.2.1"
+
+mississippi@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-2.0.0.tgz#3442a508fafc28500486feea99409676e4ee5a6f"
+ integrity sha512-zHo8v+otD1J10j/tC+VNoGK9keCuByhKovAvdn74dmxJl9+mWHnx6EMsDN4lgRoMI/eYo2nchAxniIbUPb5onw==
+ dependencies:
+ concat-stream "^1.5.0"
+ duplexify "^3.4.2"
+ end-of-stream "^1.1.0"
+ flush-write-stream "^1.0.0"
+ from2 "^2.1.0"
+ parallel-transform "^1.1.0"
+ pump "^2.0.1"
+ pumpify "^1.3.3"
+ stream-each "^1.1.0"
+ through2 "^2.0.0"
+
+mixin-deep@^1.2.0:
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.1.tgz#a49e7268dce1a0d9698e45326c5626df3543d0fe"
+ integrity sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==
+ dependencies:
+ for-in "^1.0.2"
+ is-extendable "^1.0.1"
+
+mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0:
+ version "0.5.1"
+ resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903"
+ integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=
+ dependencies:
+ minimist "0.0.8"
+
+move-concurrently@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92"
+ integrity sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=
+ dependencies:
+ aproba "^1.1.1"
+ copy-concurrently "^1.0.0"
+ fs-write-stream-atomic "^1.0.8"
+ mkdirp "^0.5.1"
+ rimraf "^2.5.4"
+ run-queue "^1.0.3"
+
+ms@2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
+ integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=
+
+nan@^2.9.2:
+ version "2.11.1"
+ resolved "https://registry.yarnpkg.com/nan/-/nan-2.11.1.tgz#90e22bccb8ca57ea4cd37cc83d3819b52eea6766"
+ integrity sha512-iji6k87OSXa0CcrLl9z+ZiYSuR2o+c0bGuNmXdrhTQTakxytAFsC56SArGYoiHlJlFoHSnvmhpceZJaXkVuOtA==
+
+nanomatch@^1.2.9:
+ version "1.2.13"
+ resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119"
+ integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==
+ dependencies:
+ arr-diff "^4.0.0"
+ array-unique "^0.3.2"
+ define-property "^2.0.2"
+ extend-shallow "^3.0.2"
+ fragment-cache "^0.2.1"
+ is-windows "^1.0.2"
+ kind-of "^6.0.2"
+ object.pick "^1.3.0"
+ regex-not "^1.0.0"
+ snapdragon "^0.8.1"
+ to-regex "^3.0.1"
+
+needle@^2.2.1:
+ version "2.2.4"
+ resolved "https://registry.yarnpkg.com/needle/-/needle-2.2.4.tgz#51931bff82533b1928b7d1d69e01f1b00ffd2a4e"
+ integrity sha512-HyoqEb4wr/rsoaIDfTH2aVL9nWtQqba2/HvMv+++m8u0dz808MaagKILxtfeSN7QU7nvbQ79zk3vYOJp9zsNEA==
+ dependencies:
+ debug "^2.1.2"
+ iconv-lite "^0.4.4"
+ sax "^1.2.4"
+
+neo-async@^2.5.0:
+ version "2.5.2"
+ resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.5.2.tgz#489105ce7bc54e709d736b195f82135048c50fcc"
+ integrity sha512-vdqTKI9GBIYcAEbFAcpKPErKINfPF5zIuz3/niBfq8WUZjpT2tytLlFVrBgWdOtqI4uaA/Rb6No0hux39XXDuw==
+
+nice-try@^1.0.4:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366"
+ integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==
+
+node-libs-browser@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.0.0.tgz#a3a59ec97024985b46e958379646f96c4b616646"
+ integrity sha1-o6WeyXAkmFtG6Vg3lkb5bEthZkY=
+ dependencies:
+ assert "^1.1.1"
+ browserify-zlib "^0.1.4"
+ buffer "^4.3.0"
+ console-browserify "^1.1.0"
+ constants-browserify "^1.0.0"
+ crypto-browserify "^3.11.0"
+ domain-browser "^1.1.1"
+ events "^1.0.0"
+ https-browserify "0.0.1"
+ os-browserify "^0.2.0"
+ path-browserify "0.0.0"
+ process "^0.11.0"
+ punycode "^1.2.4"
+ querystring-es3 "^0.2.0"
+ readable-stream "^2.0.5"
+ stream-browserify "^2.0.1"
+ stream-http "^2.3.1"
+ string_decoder "^0.10.25"
+ timers-browserify "^2.0.2"
+ tty-browserify "0.0.0"
+ url "^0.11.0"
+ util "^0.10.3"
+ vm-browserify "0.0.4"
+
+node-pre-gyp@^0.10.0:
+ version "0.10.3"
+ resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.10.3.tgz#3070040716afdc778747b61b6887bf78880b80fc"
+ integrity sha512-d1xFs+C/IPS8Id0qPTZ4bUT8wWryfR/OzzAFxweG+uLN85oPzyo2Iw6bVlLQ/JOdgNonXLCoRyqDzDWq4iw72A==
+ dependencies:
+ detect-libc "^1.0.2"
+ mkdirp "^0.5.1"
+ needle "^2.2.1"
+ nopt "^4.0.1"
+ npm-packlist "^1.1.6"
+ npmlog "^4.0.2"
+ rc "^1.2.7"
+ rimraf "^2.6.1"
+ semver "^5.3.0"
+ tar "^4"
+
+nopt@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d"
+ integrity sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=
+ dependencies:
+ abbrev "1"
+ osenv "^0.1.4"
+
+normalize-package-data@^2.3.2, normalize-package-data@^2.3.4:
+ version "2.4.0"
+ resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.0.tgz#12f95a307d58352075a04907b84ac8be98ac012f"
+ integrity sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==
+ dependencies:
+ hosted-git-info "^2.1.4"
+ is-builtin-module "^1.0.0"
+ semver "2 || 3 || 4 || 5"
+ validate-npm-package-license "^3.0.1"
+
+normalize-path@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9"
+ integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=
+ dependencies:
+ remove-trailing-separator "^1.0.1"
+
+npm-bundled@^1.0.1:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.5.tgz#3c1732b7ba936b3a10325aef616467c0ccbcc979"
+ integrity sha512-m/e6jgWu8/v5niCUKQi9qQl8QdeEduFA96xHDDzFGqly0OOjI7c+60KM/2sppfnUU9JJagf+zs+yGhqSOFj71g==
+
+npm-packlist@^1.1.6:
+ version "1.1.11"
+ resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.1.11.tgz#84e8c683cbe7867d34b1d357d893ce29e28a02de"
+ integrity sha512-CxKlZ24urLkJk+9kCm48RTQ7L4hsmgSVzEk0TLGPzzyuFxD7VNgy5Sl24tOLMzQv773a/NeJ1ce1DKeacqffEA==
+ dependencies:
+ ignore-walk "^3.0.1"
+ npm-bundled "^1.0.1"
+
+npm-run-path@^2.0.0:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f"
+ integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=
+ dependencies:
+ path-key "^2.0.0"
+
+npmlog@^4.0.2:
+ version "4.1.2"
+ resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b"
+ integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==
+ dependencies:
+ are-we-there-yet "~1.1.2"
+ console-control-strings "~1.1.0"
+ gauge "~2.7.3"
+ set-blocking "~2.0.0"
+
+number-is-nan@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d"
+ integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=
+
+object-assign@^4.0.1, object-assign@^4.1.0:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
+ integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=
+
+object-copy@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c"
+ integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw=
+ dependencies:
+ copy-descriptor "^0.1.0"
+ define-property "^0.2.5"
+ kind-of "^3.0.3"
+
+object-visit@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb"
+ integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=
+ dependencies:
+ isobject "^3.0.0"
+
+object.pick@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747"
+ integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=
+ dependencies:
+ isobject "^3.0.1"
+
+once@^1.3.0, once@^1.3.1, once@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
+ integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E=
+ dependencies:
+ wrappy "1"
+
+os-browserify@^0.2.0:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.2.1.tgz#63fc4ccee5d2d7763d26bbf8601078e6c2e0044f"
+ integrity sha1-Y/xMzuXS13Y9Jrv4YBB45sLgBE8=
+
+os-homedir@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3"
+ integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M=
+
+os-locale@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.0.1.tgz#3b014fbf01d87f60a1e5348d80fe870dc82c4620"
+ integrity sha512-7g5e7dmXPtzcP4bgsZ8ixDVqA7oWYuEz4lOSujeWyliPai4gfVDiFIcwBg3aGCPnmSGfzOKTK3ccPn0CKv3DBw==
+ dependencies:
+ execa "^0.10.0"
+ lcid "^2.0.0"
+ mem "^4.0.0"
+
+os-tmpdir@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
+ integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=
+
+osenv@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.4.tgz#42fe6d5953df06c8064be6f176c3d05aaaa34644"
+ integrity sha1-Qv5tWVPfBsgGS+bxdsPQWqqjRkQ=
+ dependencies:
+ os-homedir "^1.0.0"
+ os-tmpdir "^1.0.0"
+
+p-defer@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c"
+ integrity sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=
+
+p-finally@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae"
+ integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=
+
+p-is-promise@^1.1.0:
+ version "1.1.0"
+ resolved "http://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz#9c9456989e9f6588017b0434d56097675c3da05e"
+ integrity sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4=
+
+p-limit@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.1.0.tgz#b07ff2d9a5d88bec806035895a2bab66a27988bc"
+ integrity sha1-sH/y2aXYi+yAYDWJWiurZqJ5iLw=
+
+p-limit@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.0.0.tgz#e624ed54ee8c460a778b3c9f3670496ff8a57aec"
+ integrity sha512-fl5s52lI5ahKCernzzIyAP0QAZbGIovtVHGwpcu1Jr/EpzLVDI2myISHwGqK7m8uQFugVWSrbxH7XnhGtvEc+A==
+ dependencies:
+ p-try "^2.0.0"
+
+p-locate@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43"
+ integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=
+ dependencies:
+ p-limit "^1.1.0"
+
+p-locate@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4"
+ integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==
+ dependencies:
+ p-limit "^2.0.0"
+
+p-try@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.0.0.tgz#85080bb87c64688fa47996fe8f7dfbe8211760b1"
+ integrity sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==
+
+pako@~0.2.0:
+ version "0.2.9"
+ resolved "https://registry.yarnpkg.com/pako/-/pako-0.2.9.tgz#f3f7522f4ef782348da8161bad9ecfd51bf83a75"
+ integrity sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=
+
+parallel-transform@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.1.0.tgz#d410f065b05da23081fcd10f28854c29bda33b06"
+ integrity sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY=
+ dependencies:
+ cyclist "~0.2.2"
+ inherits "^2.0.3"
+ readable-stream "^2.1.5"
+
+parse-asn1@^5.0.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.0.tgz#37c4f9b7ed3ab65c74817b5f2480937fbf97c712"
+ integrity sha1-N8T5t+06tlx0gXtfJICTf7+XxxI=
+ dependencies:
+ asn1.js "^4.0.0"
+ browserify-aes "^1.0.0"
+ create-hash "^1.1.0"
+ evp_bytestokey "^1.0.0"
+ pbkdf2 "^3.0.3"
+
+parse-json@^2.2.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9"
+ integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=
+ dependencies:
+ error-ex "^1.2.0"
+
+pascalcase@^0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14"
+ integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=
+
+path-browserify@0.0.0:
+ version "0.0.0"
+ resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a"
+ integrity sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=
+
+path-dirname@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0"
+ integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=
+
+path-exists@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b"
+ integrity sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=
+ dependencies:
+ pinkie-promise "^2.0.0"
+
+path-exists@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515"
+ integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=
+
+path-is-absolute@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
+ integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
+
+path-key@^2.0.0, path-key@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40"
+ integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=
+
+path-type@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441"
+ integrity sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=
+ dependencies:
+ graceful-fs "^4.1.2"
+ pify "^2.0.0"
+ pinkie-promise "^2.0.0"
+
+pbkdf2@^3.0.3:
+ version "3.0.14"
+ resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.14.tgz#a35e13c64799b06ce15320f459c230e68e73bade"
+ integrity sha512-gjsZW9O34fm0R7PaLHRJmLLVfSoesxztjPjE9o6R+qtVJij90ltg1joIovN9GKrRW3t1PzhDDG3UMEMFfZ+1wA==
+ dependencies:
+ create-hash "^1.1.2"
+ create-hmac "^1.1.4"
+ ripemd160 "^2.0.1"
+ safe-buffer "^5.0.1"
+ sha.js "^2.4.8"
+
+pify@^2.0.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
+ integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw=
+
+pify@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176"
+ integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=
+
+pinkie-promise@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa"
+ integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o=
+ dependencies:
+ pinkie "^2.0.0"
+
+pinkie@^2.0.0:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870"
+ integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA=
+
+pkg-dir@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b"
+ integrity sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=
+ dependencies:
+ find-up "^2.1.0"
+
+pkg-dir@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3"
+ integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==
+ dependencies:
+ find-up "^3.0.0"
+
+posix-character-classes@^0.1.0:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab"
+ integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=
+
+pretty-bytes@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-4.0.2.tgz#b2bf82e7350d65c6c33aa95aaa5a4f6327f61cd9"
+ integrity sha1-sr+C5zUNZcbDOqlaqlpPYyf2HNk=
+
+process-nextick-args@~1.0.6:
+ version "1.0.7"
+ resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3"
+ integrity sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=
+
+process-nextick-args@~2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa"
+ integrity sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==
+
+process@^0.11.0:
+ version "0.11.10"
+ resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182"
+ integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI=
+
+promise-inflight@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3"
+ integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM=
+
+prr@~0.0.0:
+ version "0.0.0"
+ resolved "https://registry.yarnpkg.com/prr/-/prr-0.0.0.tgz#1a84b85908325501411853d0081ee3fa86e2926a"
+ integrity sha1-GoS4WQgyVQFBGFPQCB7j+obikmo=
+
+prr@~1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476"
+ integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY=
+
+pseudomap@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3"
+ integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM=
+
+public-encrypt@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.0.tgz#39f699f3a46560dd5ebacbca693caf7c65c18cc6"
+ integrity sha1-OfaZ86RlYN1eusvKaTyvfGXBjMY=
+ dependencies:
+ bn.js "^4.1.0"
+ browserify-rsa "^4.0.0"
+ create-hash "^1.1.0"
+ parse-asn1 "^5.0.0"
+ randombytes "^2.0.1"
+
+pump@^2.0.0, pump@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909"
+ integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==
+ dependencies:
+ end-of-stream "^1.1.0"
+ once "^1.3.1"
+
+pumpify@^1.3.3:
+ version "1.5.1"
+ resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce"
+ integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==
+ dependencies:
+ duplexify "^3.6.0"
+ inherits "^2.0.3"
+ pump "^2.0.0"
+
+punycode@1.3.2:
+ version "1.3.2"
+ resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d"
+ integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=
+
+punycode@^1.2.4:
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e"
+ integrity sha1-wNWmOycYgArY4esPpSachN1BhF4=
+
+punycode@^2.1.0:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
+ integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==
+
+querystring-es3@^0.2.0:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73"
+ integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=
+
+querystring@0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620"
+ integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=
+
+randombytes@^2.0.0, randombytes@^2.0.1:
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.0.5.tgz#dc009a246b8d09a177b4b7a0ae77bc570f4b1b79"
+ integrity sha512-8T7Zn1AhMsQ/HI1SjcCfT/t4ii3eAqco3yOcSzS4mozsOz69lHLsoMXmF9nZgnFanYscnSlUSgs8uZyKzpE6kg==
+ dependencies:
+ safe-buffer "^5.1.0"
+
+rc@^1.2.7:
+ version "1.2.8"
+ resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed"
+ integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==
+ dependencies:
+ deep-extend "^0.6.0"
+ ini "~1.3.0"
+ minimist "^1.2.0"
+ strip-json-comments "~2.0.1"
+
+read-pkg-up@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02"
+ integrity sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=
+ dependencies:
+ find-up "^1.0.0"
+ read-pkg "^1.0.0"
+
+read-pkg@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28"
+ integrity sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=
+ dependencies:
+ load-json-file "^1.0.0"
+ normalize-package-data "^2.3.2"
+ path-type "^1.0.0"
+
+"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.4, readable-stream@^2.1.5, readable-stream@^2.2.2:
+ version "2.3.6"
+ resolved "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf"
+ integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==
+ dependencies:
+ core-util-is "~1.0.0"
+ inherits "~2.0.3"
+ isarray "~1.0.0"
+ process-nextick-args "~2.0.0"
+ safe-buffer "~5.1.1"
+ string_decoder "~1.1.1"
+ util-deprecate "~1.0.1"
+
+readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.2.6:
+ version "2.3.3"
+ resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.3.tgz#368f2512d79f9d46fdfc71349ae7878bbc1eb95c"
+ integrity sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==
+ dependencies:
+ core-util-is "~1.0.0"
+ inherits "~2.0.3"
+ isarray "~1.0.0"
+ process-nextick-args "~1.0.6"
+ safe-buffer "~5.1.1"
+ string_decoder "~1.0.3"
+ util-deprecate "~1.0.1"
+
+readdirp@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78"
+ integrity sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=
+ dependencies:
+ graceful-fs "^4.1.2"
+ minimatch "^3.0.2"
+ readable-stream "^2.0.2"
+ set-immediate-shim "^1.0.1"
+
+redent@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde"
+ integrity sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=
+ dependencies:
+ indent-string "^2.1.0"
+ strip-indent "^1.0.1"
+
+regex-not@^1.0.0, regex-not@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c"
+ integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==
+ dependencies:
+ extend-shallow "^3.0.2"
+ safe-regex "^1.1.0"
+
+remove-trailing-separator@^1.0.1:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef"
+ integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8=
+
+repeat-element@^1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a"
+ integrity sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=
+
+repeat-string@^1.6.1:
+ version "1.6.1"
+ resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637"
+ integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc=
+
+repeating@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda"
+ integrity sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=
+ dependencies:
+ is-finite "^1.0.0"
+
+require-directory@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
+ integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I=
+
+require-main-filename@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1"
+ integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=
+
+resolve-cwd@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a"
+ integrity sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=
+ dependencies:
+ resolve-from "^3.0.0"
+
+resolve-from@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748"
+ integrity sha1-six699nWiBvItuZTM17rywoYh0g=
+
+resolve-url@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a"
+ integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=
+
+ret@~0.1.10:
+ version "0.1.15"
+ resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc"
+ integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==
+
+rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2:
+ version "2.6.2"
+ resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36"
+ integrity sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==
+ dependencies:
+ glob "^7.0.5"
+
+ripemd160@^2.0.0, ripemd160@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.1.tgz#0f4584295c53a3628af7e6d79aca21ce57d1c6e7"
+ integrity sha1-D0WEKVxTo2KK9+bXmsohzlfRxuc=
+ dependencies:
+ hash-base "^2.0.0"
+ inherits "^2.0.1"
+
+run-queue@^1.0.0, run-queue@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47"
+ integrity sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=
+ dependencies:
+ aproba "^1.1.1"
+
+safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@~5.1.0, safe-buffer@~5.1.1:
+ version "5.1.1"
+ resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853"
+ integrity sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==
+
+safe-buffer@^5.1.2:
+ version "5.1.2"
+ resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
+ integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
+
+safe-regex@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e"
+ integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4=
+ dependencies:
+ ret "~0.1.10"
+
+"safer-buffer@>= 2.1.2 < 3":
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
+ integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
+
+sax@^1.2.4:
+ version "1.2.4"
+ resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
+ integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==
+
+schema-utils@^0.4.4, schema-utils@^0.4.5:
+ version "0.4.7"
+ resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-0.4.7.tgz#ba74f597d2be2ea880131746ee17d0a093c68187"
+ integrity sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ==
+ dependencies:
+ ajv "^6.1.0"
+ ajv-keywords "^3.1.0"
+
+"semver@2 || 3 || 4 || 5", semver@^5.3.0:
+ version "5.4.1"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e"
+ integrity sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==
+
+semver@^5.5.0:
+ version "5.5.1"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.1.tgz#7dfdd8814bdb7cabc7be0fb1d734cfb66c940477"
+ integrity sha512-PqpAxfrEhlSUWge8dwIp4tZnQ25DIOthpiaHNIthsjEFQD6EvqUKUDM7L8O2rShkFccYo1VjJR0coWfNkCubRw==
+
+serialize-javascript@^1.4.0:
+ version "1.5.0"
+ resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-1.5.0.tgz#1aa336162c88a890ddad5384baebc93a655161fe"
+ integrity sha512-Ga8c8NjAAp46Br4+0oZ2WxJCwIzwP60Gq1YPgU+39PiTVxyed/iKE/zyZI6+UlVYH5Q4PaQdHhcegIFPZTUfoQ==
+
+set-blocking@^2.0.0, set-blocking@~2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
+ integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc=
+
+set-immediate-shim@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61"
+ integrity sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=
+
+set-value@^0.4.3:
+ version "0.4.3"
+ resolved "https://registry.yarnpkg.com/set-value/-/set-value-0.4.3.tgz#7db08f9d3d22dc7f78e53af3c3bf4666ecdfccf1"
+ integrity sha1-fbCPnT0i3H945Trzw79GZuzfzPE=
+ dependencies:
+ extend-shallow "^2.0.1"
+ is-extendable "^0.1.1"
+ is-plain-object "^2.0.1"
+ to-object-path "^0.3.0"
+
+set-value@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.0.tgz#71ae4a88f0feefbbf52d1ea604f3fb315ebb6274"
+ integrity sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==
+ dependencies:
+ extend-shallow "^2.0.1"
+ is-extendable "^0.1.1"
+ is-plain-object "^2.0.3"
+ split-string "^3.0.1"
+
+setimmediate@^1.0.4:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285"
+ integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=
+
+sha.js@^2.4.0, sha.js@^2.4.8:
+ version "2.4.8"
+ resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.8.tgz#37068c2c476b6baf402d14a49c67f597921f634f"
+ integrity sha1-NwaMLEdra69ALRSknGf1l5IfY08=
+ dependencies:
+ inherits "^2.0.1"
+
+shebang-command@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea"
+ integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=
+ dependencies:
+ shebang-regex "^1.0.0"
+
+shebang-regex@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3"
+ integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=
+
+signal-exit@^3.0.0:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d"
+ integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=
+
+snapdragon-node@^2.0.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b"
+ integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==
+ dependencies:
+ define-property "^1.0.0"
+ isobject "^3.0.0"
+ snapdragon-util "^3.0.1"
+
+snapdragon-util@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2"
+ integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==
+ dependencies:
+ kind-of "^3.2.0"
+
+snapdragon@^0.8.1:
+ version "0.8.2"
+ resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d"
+ integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==
+ dependencies:
+ base "^0.11.1"
+ debug "^2.2.0"
+ define-property "^0.2.5"
+ extend-shallow "^2.0.1"
+ map-cache "^0.2.2"
+ source-map "^0.5.6"
+ source-map-resolve "^0.5.0"
+ use "^3.1.0"
+
+source-list-map@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.0.tgz#aaa47403f7b245a92fbc97ea08f250d6087ed085"
+ integrity sha512-I2UmuJSRr/T8jisiROLU3A3ltr+swpniSmNPI4Ml3ZCX6tVnDsuZzK7F2hl5jTqbZBWCEKlj5HRQiPExXLgE8A==
+
+source-map-resolve@^0.5.0:
+ version "0.5.2"
+ resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.2.tgz#72e2cc34095543e43b2c62b2c4c10d4a9054f259"
+ integrity sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==
+ dependencies:
+ atob "^2.1.1"
+ decode-uri-component "^0.2.0"
+ resolve-url "^0.2.1"
+ source-map-url "^0.4.0"
+ urix "^0.1.0"
+
+source-map-url@^0.4.0:
+ version "0.4.0"
+ resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3"
+ integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=
+
+source-map@^0.5.6, source-map@~0.5.1:
+ version "0.5.7"
+ resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
+ integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=
+
+source-map@^0.6.1, source-map@~0.6.1:
+ version "0.6.1"
+ resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
+ integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
+
+spdx-correct@~1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-1.0.2.tgz#4b3073d933ff51f3912f03ac5519498a4150db40"
+ integrity sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=
+ dependencies:
+ spdx-license-ids "^1.0.2"
+
+spdx-expression-parse@~1.0.0:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz#9bdf2f20e1f40ed447fbe273266191fced51626c"
+ integrity sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=
+
+spdx-license-ids@^1.0.2:
+ version "1.2.2"
+ resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz#c9df7a3424594ade6bd11900d596696dc06bac57"
+ integrity sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=
+
+split-string@^3.0.1, split-string@^3.0.2:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2"
+ integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==
+ dependencies:
+ extend-shallow "^3.0.0"
+
+ssri@^5.2.4:
+ version "5.3.0"
+ resolved "https://registry.yarnpkg.com/ssri/-/ssri-5.3.0.tgz#ba3872c9c6d33a0704a7d71ff045e5ec48999d06"
+ integrity sha512-XRSIPqLij52MtgoQavH/x/dU1qVKtWUAAZeOHsR9c2Ddi4XerFy3mc1alf+dLJKl9EUIm/Ht+EowFkTUOA6GAQ==
+ dependencies:
+ safe-buffer "^5.1.1"
+
+static-extend@^0.1.1:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6"
+ integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=
+ dependencies:
+ define-property "^0.2.5"
+ object-copy "^0.1.0"
+
+stream-browserify@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.1.tgz#66266ee5f9bdb9940a4e4514cafb43bb71e5c9db"
+ integrity sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=
+ dependencies:
+ inherits "~2.0.1"
+ readable-stream "^2.0.2"
+
+stream-each@^1.1.0:
+ version "1.2.3"
+ resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae"
+ integrity sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==
+ dependencies:
+ end-of-stream "^1.1.0"
+ stream-shift "^1.0.0"
+
+stream-http@^2.3.1:
+ version "2.7.2"
+ resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.7.2.tgz#40a050ec8dc3b53b33d9909415c02c0bf1abfbad"
+ integrity sha512-c0yTD2rbQzXtSsFSVhtpvY/vS6u066PcXOX9kBB3mSO76RiUQzL340uJkGBWnlBg4/HZzqiUXtaVA7wcRcJgEw==
+ dependencies:
+ builtin-status-codes "^3.0.0"
+ inherits "^2.0.1"
+ readable-stream "^2.2.6"
+ to-arraybuffer "^1.0.0"
+ xtend "^4.0.0"
+
+stream-shift@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952"
+ integrity sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=
+
+string-width@^1.0.1, string-width@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3"
+ integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=
+ dependencies:
+ code-point-at "^1.0.0"
+ is-fullwidth-code-point "^1.0.0"
+ strip-ansi "^3.0.0"
+
+string-width@^2.0.0, string-width@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e"
+ integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==
+ dependencies:
+ is-fullwidth-code-point "^2.0.0"
+ strip-ansi "^4.0.0"
+
+string_decoder@^0.10.25:
+ version "0.10.31"
+ resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94"
+ integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=
+
+string_decoder@~1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.3.tgz#0fc67d7c141825de94282dd536bec6b9bce860ab"
+ integrity sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==
+ dependencies:
+ safe-buffer "~5.1.0"
+
+string_decoder@~1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8"
+ integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==
+ dependencies:
+ safe-buffer "~5.1.0"
+
+strip-ansi@^3.0.0, strip-ansi@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf"
+ integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=
+ dependencies:
+ ansi-regex "^2.0.0"
+
+strip-ansi@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f"
+ integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8=
+ dependencies:
+ ansi-regex "^3.0.0"
+
+strip-bom@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e"
+ integrity sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=
+ dependencies:
+ is-utf8 "^0.2.0"
+
+strip-eof@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf"
+ integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=
+
+strip-indent@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2"
+ integrity sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=
+ dependencies:
+ get-stdin "^4.0.1"
+
+strip-json-comments@~2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
+ integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo=
+
+supports-color@^5.3.0, supports-color@^5.5.0:
+ version "5.5.0"
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
+ integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==
+ dependencies:
+ has-flag "^3.0.0"
+
+tapable@^1.0.0, tapable@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.0.tgz#0d076a172e3d9ba088fd2272b2668fb8d194b78c"
+ integrity sha512-IlqtmLVaZA2qab8epUXbVWRn3aB1imbDMJtjB3nu4X0NqPkcY/JH9ZtCBWKHWPxs8Svi9tyo8w2dBoi07qZbBA==
+
+tar@^4:
+ version "4.4.6"
+ resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.6.tgz#63110f09c00b4e60ac8bcfe1bf3c8660235fbc9b"
+ integrity sha512-tMkTnh9EdzxyfW+6GK6fCahagXsnYk6kE6S9Gr9pjVdys769+laCTbodXDhPAjzVtEBazRgP0gYqOjnk9dQzLg==
+ dependencies:
+ chownr "^1.0.1"
+ fs-minipass "^1.2.5"
+ minipass "^2.3.3"
+ minizlib "^1.1.0"
+ mkdirp "^0.5.0"
+ safe-buffer "^5.1.2"
+ yallist "^3.0.2"
+
+through2@^2.0.0:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.3.tgz#0004569b37c7c74ba39c43f3ced78d1ad94140be"
+ integrity sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=
+ dependencies:
+ readable-stream "^2.1.5"
+ xtend "~4.0.1"
+
+timers-browserify@^2.0.2:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.4.tgz#96ca53f4b794a5e7c0e1bd7cc88a372298fa01e6"
+ integrity sha512-uZYhyU3EX8O7HQP+J9fTVYwsq90Vr68xPEFo7yrVImIxYvHgukBEgOB/SgGoorWVTzGM/3Z+wUNnboA4M8jWrg==
+ dependencies:
+ setimmediate "^1.0.4"
+
+to-arraybuffer@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43"
+ integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=
+
+to-object-path@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af"
+ integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=
+ dependencies:
+ kind-of "^3.0.2"
+
+to-regex-range@^2.1.0:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38"
+ integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=
+ dependencies:
+ is-number "^3.0.0"
+ repeat-string "^1.6.1"
+
+to-regex@^3.0.1, to-regex@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce"
+ integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==
+ dependencies:
+ define-property "^2.0.2"
+ extend-shallow "^3.0.2"
+ regex-not "^1.0.2"
+ safe-regex "^1.1.0"
+
+trim-newlines@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613"
+ integrity sha1-WIeWa7WCpFA6QetST301ARgVphM=
+
+tslib@^1.9.0:
+ version "1.9.3"
+ resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286"
+ integrity sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==
+
+tty-browserify@0.0.0:
+ version "0.0.0"
+ resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6"
+ integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=
+
+typedarray@^0.0.6:
+ version "0.0.6"
+ resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
+ integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=
+
+uglify-es@^3.1.1:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/uglify-es/-/uglify-es-3.1.1.tgz#27615a1203cd0b351d8b5bda743ac92ed482b826"
+ integrity sha512-oESWzXRJ5cHfxZnj1wS4WAy1Tcn4RbMhSX6lhMpzkHN+6SrO6Wmlg9dK4M+K/MXHIwndOD7wme7fEGuFcEf4BQ==
+ dependencies:
+ commander "~2.11.0"
+ source-map "~0.5.1"
+
+uglify-es@^3.3.4:
+ version "3.3.9"
+ resolved "https://registry.yarnpkg.com/uglify-es/-/uglify-es-3.3.9.tgz#0c1c4f0700bed8dbc124cdb304d2592ca203e677"
+ integrity sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ==
+ dependencies:
+ commander "~2.13.0"
+ source-map "~0.6.1"
+
+uglifyjs-webpack-plugin@^1.2.4:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.3.0.tgz#75f548160858163a08643e086d5fefe18a5d67de"
+ integrity sha512-ovHIch0AMlxjD/97j9AYovZxG5wnHOPkL7T1GKochBADp/Zwc44pEWNqpKl1Loupp1WhFg7SlYmHZRUfdAacgw==
+ dependencies:
+ cacache "^10.0.4"
+ find-cache-dir "^1.0.0"
+ schema-utils "^0.4.5"
+ serialize-javascript "^1.4.0"
+ source-map "^0.6.1"
+ uglify-es "^3.3.4"
+ webpack-sources "^1.1.0"
+ worker-farm "^1.5.2"
+
+union-value@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.0.tgz#5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4"
+ integrity sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=
+ dependencies:
+ arr-union "^3.1.0"
+ get-value "^2.0.6"
+ is-extendable "^0.1.1"
+ set-value "^0.4.3"
+
+unique-filename@^1.1.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230"
+ integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==
+ dependencies:
+ unique-slug "^2.0.0"
+
+unique-slug@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.1.tgz#5e9edc6d1ce8fb264db18a507ef9bd8544451ca6"
+ integrity sha512-n9cU6+gITaVu7VGj1Z8feKMmfAjEAQGhwD9fE3zvpRRa0wEIx8ODYkVGfSc94M2OX00tUFV8wH3zYbm1I8mxFg==
+ dependencies:
+ imurmurhash "^0.1.4"
+
+unset-value@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559"
+ integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=
+ dependencies:
+ has-value "^0.3.1"
+ isobject "^3.0.0"
+
+upath@^1.0.5:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/upath/-/upath-1.1.0.tgz#35256597e46a581db4793d0ce47fa9aebfc9fabd"
+ integrity sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw==
+
+uri-js@^4.2.2:
+ version "4.2.2"
+ resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0"
+ integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==
+ dependencies:
+ punycode "^2.1.0"
+
+urix@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72"
+ integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=
+
+url@^0.11.0:
+ version "0.11.0"
+ resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1"
+ integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=
+ dependencies:
+ punycode "1.3.2"
+ querystring "0.2.0"
+
+use@^3.1.0:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f"
+ integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==
+
+util-deprecate@~1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
+ integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=
+
+util@0.10.3, util@^0.10.3:
+ version "0.10.3"
+ resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9"
+ integrity sha1-evsa/lCAUkZInj23/g7TeTNqwPk=
+ dependencies:
+ inherits "2.0.1"
+
+v8-compile-cache@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.0.2.tgz#a428b28bb26790734c4fc8bc9fa106fccebf6a6c"
+ integrity sha512-1wFuMUIM16MDJRCrpbpuEPTUGmM5QMUg0cr3KFwra2XgOgFcPGDQHDh3CszSCD2Zewc/dh/pamNEW8CbfDebUw==
+
+validate-npm-package-license@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz#2804babe712ad3379459acfbe24746ab2c303fbc"
+ integrity sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=
+ dependencies:
+ spdx-correct "~1.0.0"
+ spdx-expression-parse "~1.0.0"
+
+vm-browserify@0.0.4:
+ version "0.0.4"
+ resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-0.0.4.tgz#5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73"
+ integrity sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=
+ dependencies:
+ indexof "0.0.1"
+
+watchpack@^1.5.0:
+ version "1.6.0"
+ resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.6.0.tgz#4bc12c2ebe8aa277a71f1d3f14d685c7b446cd00"
+ integrity sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA==
+ dependencies:
+ chokidar "^2.0.2"
+ graceful-fs "^4.1.2"
+ neo-async "^2.5.0"
+
+webpack-cli@^3.1.2:
+ version "3.1.2"
+ resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-3.1.2.tgz#17d7e01b77f89f884a2bbf9db545f0f6a648e746"
+ integrity sha512-Cnqo7CeqeSvC6PTdts+dywNi5CRlIPbLx1AoUPK2T6vC1YAugMG3IOoO9DmEscd+Dghw7uRlnzV1KwOe5IrtgQ==
+ dependencies:
+ chalk "^2.4.1"
+ cross-spawn "^6.0.5"
+ enhanced-resolve "^4.1.0"
+ global-modules-path "^2.3.0"
+ import-local "^2.0.0"
+ interpret "^1.1.0"
+ loader-utils "^1.1.0"
+ supports-color "^5.5.0"
+ v8-compile-cache "^2.0.2"
+ yargs "^12.0.2"
+
+webpack-sources@^1.1.0, webpack-sources@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.3.0.tgz#2a28dcb9f1f45fe960d8f1493252b5ee6530fa85"
+ integrity sha512-OiVgSrbGu7NEnEvQJJgdSFPl2qWKkWq5lHMhgiToIiN9w34EBnjYzSYs+VbL5KoYiLNtFFa7BZIKxRED3I32pA==
+ dependencies:
+ source-list-map "^2.0.0"
+ source-map "~0.6.1"
+
+webpack@4:
+ version "4.20.2"
+ resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.20.2.tgz#89f6486b6bb276a91b0823453d377501fc625b5a"
+ integrity sha512-75WFUMblcWYcocjSLlXCb71QuGyH7egdBZu50FtBGl2Nso8CK3Ej+J7bTZz2FPFq5l6fzCisD9modB7t30ikuA==
+ dependencies:
+ "@webassemblyjs/ast" "1.7.8"
+ "@webassemblyjs/helper-module-context" "1.7.8"
+ "@webassemblyjs/wasm-edit" "1.7.8"
+ "@webassemblyjs/wasm-parser" "1.7.8"
+ acorn "^5.6.2"
+ acorn-dynamic-import "^3.0.0"
+ ajv "^6.1.0"
+ ajv-keywords "^3.1.0"
+ chrome-trace-event "^1.0.0"
+ enhanced-resolve "^4.1.0"
+ eslint-scope "^4.0.0"
+ json-parse-better-errors "^1.0.2"
+ loader-runner "^2.3.0"
+ loader-utils "^1.1.0"
+ memory-fs "~0.4.1"
+ micromatch "^3.1.8"
+ mkdirp "~0.5.0"
+ neo-async "^2.5.0"
+ node-libs-browser "^2.0.0"
+ schema-utils "^0.4.4"
+ tapable "^1.1.0"
+ uglifyjs-webpack-plugin "^1.2.4"
+ watchpack "^1.5.0"
+ webpack-sources "^1.3.0"
+
+which-module@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a"
+ integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=
+
+which@^1.2.9:
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"
+ integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==
+ dependencies:
+ isexe "^2.0.0"
+
+wide-align@^1.1.0:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.2.tgz#571e0f1b0604636ebc0dfc21b0339bbe31341710"
+ integrity sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w==
+ dependencies:
+ string-width "^1.0.2"
+
+worker-farm@^1.5.2:
+ version "1.6.0"
+ resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.6.0.tgz#aecc405976fab5a95526180846f0dba288f3a4a0"
+ integrity sha512-6w+3tHbM87WnSWnENBUvA2pxJPLhQUg5LKwUQHq3r+XPhIM+Gh2R5ycbwPCyuGbNg+lPgdcnQUhuC02kJCvffQ==
+ dependencies:
+ errno "~0.1.7"
+
+wrap-ansi@^2.0.0:
+ version "2.1.0"
+ resolved "http://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85"
+ integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=
+ dependencies:
+ string-width "^1.0.1"
+ strip-ansi "^3.0.1"
+
+wrappy@1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
+ integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
+
+xregexp@4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-4.0.0.tgz#e698189de49dd2a18cc5687b05e17c8e43943020"
+ integrity sha512-PHyM+sQouu7xspQQwELlGwwd05mXUFqwFYfqPO0cC7x4fxyHnnuetmQr6CjJiafIDoH4MogHb9dOoJzR/Y4rFg==
+
+xtend@^4.0.0, xtend@~4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af"
+ integrity sha1-pcbVMr5lbiPbgg77lDofBJmNY68=
+
+"y18n@^3.2.1 || ^4.0.0", y18n@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b"
+ integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==
+
+yallist@^2.1.2:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52"
+ integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=
+
+yallist@^3.0.0, yallist@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.2.tgz#8452b4bb7e83c7c188d8041c1a837c773d6d8bb9"
+ integrity sha1-hFK0u36Dx8GI2AQcGoN8dz1ti7k=
+
+yargs-parser@^10.1.0:
+ version "10.1.0"
+ resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-10.1.0.tgz#7202265b89f7e9e9f2e5765e0fe735a905edbaa8"
+ integrity sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==
+ dependencies:
+ camelcase "^4.1.0"
+
+yargs@^12.0.2:
+ version "12.0.2"
+ resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.2.tgz#fe58234369392af33ecbef53819171eff0f5aadc"
+ integrity sha512-e7SkEx6N6SIZ5c5H22RTZae61qtn3PYUE8JYbBFlK9sYmh3DMQ6E5ygtaG/2BW0JZi4WGgTR2IV5ChqlqrDGVQ==
+ dependencies:
+ cliui "^4.0.0"
+ decamelize "^2.0.0"
+ find-up "^3.0.0"
+ get-caller-file "^1.0.1"
+ os-locale "^3.0.0"
+ require-directory "^2.1.1"
+ require-main-filename "^1.0.1"
+ set-blocking "^2.0.0"
+ string-width "^2.0.0"
+ which-module "^2.0.0"
+ y18n "^3.2.1 || ^4.0.0"
+ yargs-parser "^10.1.0"
diff --git a/date-fns/flow-typed/benchmark.js.flow b/date-fns/flow-typed/benchmark.js.flow
new file mode 100644
index 0000000..aeaad7e
--- /dev/null
+++ b/date-fns/flow-typed/benchmark.js.flow
@@ -0,0 +1,6 @@
+// @flow
+declare var suite: (description: string, spec: () => void, options?: Object) => void
+declare var benchmark: (description: string, spec: () => any) => void
+declare module 'moment' {
+ declare module.exports: (value: any, message?: string) => void
+}
diff --git a/date-fns/flow-typed/mocha.js.flow b/date-fns/flow-typed/mocha.js.flow
new file mode 100644
index 0000000..3cebc53
--- /dev/null
+++ b/date-fns/flow-typed/mocha.js.flow
@@ -0,0 +1,7 @@
+// @flow
+declare var xdescribe: (description: string, spec: () => void) => void
+declare var describe: (description: string, spec: () => void) => void
+declare var it: (description: string, spec: () => void) => void
+declare var context: (description: string, spec: () => void) => void
+declare var beforeEach: (action: () => void) => void
+declare var afterEach: (action: () => void) => void
diff --git a/date-fns/flow-typed/power-assert.js.flow b/date-fns/flow-typed/power-assert.js.flow
new file mode 100644
index 0000000..d9e2e5e
--- /dev/null
+++ b/date-fns/flow-typed/power-assert.js.flow
@@ -0,0 +1,3 @@
+declare module 'power-assert' {
+ declare module.exports: (value: any, message?: string) => void
+}
diff --git a/date-fns/flow-typed/sinon.js.flow b/date-fns/flow-typed/sinon.js.flow
new file mode 100644
index 0000000..e6a8743
--- /dev/null
+++ b/date-fns/flow-typed/sinon.js.flow
@@ -0,0 +1,2 @@
+// @flow
+declare var sinon: any
diff --git a/date-fns/jest.config.js b/date-fns/jest.config.js
new file mode 100644
index 0000000..6a32f38
--- /dev/null
+++ b/date-fns/jest.config.js
@@ -0,0 +1,4 @@
+module.exports = {
+ verbose: false,
+ testPathIgnorePatterns: ['<rootDir>/test.js'],
+}
diff --git a/date-fns/jsdoc2md.json b/date-fns/jsdoc2md.json
new file mode 100644
index 0000000..244e56e
--- /dev/null
+++ b/date-fns/jsdoc2md.json
@@ -0,0 +1,20 @@
+{
+ "source": {
+ "includePattern": ".+\\.(ts|js)?$",
+ "excludePattern": ".+\\.(test|spec).ts"
+ },
+ "plugins": ["node_modules/jsdoc-babel"],
+ "babel": {
+ "extensions": ["ts", "tsx", "js"],
+ "ignore": ["**/*.(test|spec).ts"],
+ "babelrc": false,
+ "presets": [
+ ["@babel/preset-env", { "targets": { "node": true } }],
+ "@babel/preset-typescript"
+ ],
+ "plugins": [
+ "@babel/proposal-class-properties",
+ "@babel/proposal-object-rest-spread"
+ ]
+ }
+}
diff --git a/date-fns/outdatedLocales.json b/date-fns/outdatedLocales.json
new file mode 100644
index 0000000..af12588
--- /dev/null
+++ b/date-fns/outdatedLocales.json
@@ -0,0 +1 @@
+["ar", "fil"] \ No newline at end of file
diff --git a/date-fns/package.json b/date-fns/package.json
new file mode 100644
index 0000000..6d2fe5e
--- /dev/null
+++ b/date-fns/package.json
@@ -0,0 +1,122 @@
+{
+ "name": "date-fns",
+ "version": "DON'T CHANGE; IT'S SET AUTOMATICALLY DURING DEPLOYMENT; ALSO, USE YARN FOR DEVELOPMENT",
+ "sideEffects": false,
+ "contributors": [
+ "Sasha Koss <koss@nocorp.me>",
+ "Lesha Koss <regiusprod@gmail.com>"
+ ],
+ "license": "MIT",
+ "description": "Modern JavaScript date utility library",
+ "repository": "https://github.com/date-fns/date-fns",
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/date-fns"
+ },
+ "engines": {
+ "node": ">=0.11"
+ },
+ "typings": "./typings.d.ts",
+ "main": "index.js",
+ "module": "esm/index.js",
+ "scripts": {
+ "test": "karma start config/karma.js",
+ "lint": "eslint .",
+ "lint-types": "eslint --config=.ts-eslintrc.js typings.d.ts",
+ "locale-snapshots": "env TZ=utc babel-node --extensions .ts,.js ./scripts/build/localeSnapshots/index.js",
+ "benchmark": "env TEST_BENCHMARK=true yarn test --single-run",
+ "stats": "cloc . --exclude-dir=node_modules,tmp,.git"
+ },
+ "husky": {
+ "hooks": {
+ "pre-commit": "lint-staged"
+ }
+ },
+ "lint-staged": {
+ "*.js": [
+ "prettier --write",
+ "git add"
+ ]
+ },
+ "dependencies": {},
+ "devDependencies": {
+ "@babel/cli": "^7.5.5",
+ "@babel/core": "^7.5.5",
+ "@babel/node": "^7.5.5",
+ "@babel/plugin-proposal-object-rest-spread": "^7.13.8",
+ "@babel/plugin-proposal-optional-chaining": "^7.12.7",
+ "@babel/plugin-transform-arrow-functions": "^7.2.0",
+ "@babel/plugin-transform-block-scoping": "^7.5.5",
+ "@babel/plugin-transform-destructuring": "^7.5.0",
+ "@babel/plugin-transform-modules-commonjs": "^7.5.0",
+ "@babel/plugin-transform-parameters": "^7.4.4",
+ "@babel/plugin-transform-template-literals": "^7.4.4",
+ "@babel/preset-env": "^7.11.5",
+ "@babel/preset-typescript": "^7.10.4",
+ "@date-fns/date-fns-scripts": "0.0.4",
+ "@octokit/core": "^3.2.5",
+ "@types/jest": "^26.0.13",
+ "@types/node": "^14.6.3",
+ "@types/power-assert": "^1.5.3",
+ "@types/sinon": "^9.0.6",
+ "@typescript-eslint/eslint-plugin": "^2.9.0",
+ "@typescript-eslint/parser": "^2.9.0",
+ "babel-eslint": "^10.0.2",
+ "babel-loader": "8.0.6",
+ "babel-plugin-add-import-extension": "^1.4.3",
+ "babel-plugin-add-module-exports": "^1.0.2",
+ "babel-preset-power-assert": "^3.0.0",
+ "cloc": "^2.2.0",
+ "coveralls": "^3.0.6",
+ "eslint": "^5.16.0",
+ "eslint-config-prettier": "^4.3.0",
+ "firebase": "^3.7.1",
+ "flow-bin": "0.84.0",
+ "glob-promise": "^2.0.0",
+ "globby": "^11.0.3",
+ "gzip-size-cli": "^1.0.0",
+ "husky": "^1.0.1",
+ "istanbul-instrumenter-loader": "^3.0.1",
+ "jest": "^24.8.0",
+ "js-beautify": "^1.5.10",
+ "js-fns": "^2.5.1",
+ "jsdoc-babel": "^0.5.0",
+ "jsdoc-to-markdown": "7",
+ "karma": "^3.1.4",
+ "karma-benchmark": "^1.0.4",
+ "karma-benchmark-reporter": "^0.1.1",
+ "karma-chrome-launcher": "2.2",
+ "karma-cli": "^1.0.1",
+ "karma-coverage": "^1.1.2",
+ "karma-coverage-istanbul-reporter": "^2.1.0",
+ "karma-mocha": "^1.3.0",
+ "karma-mocha-reporter": "^2.2.5",
+ "karma-phantomjs-launcher": "^1.0.4",
+ "karma-sauce-launcher": "^1.2.0",
+ "karma-sourcemap-loader": "^0.3.5",
+ "karma-webpack": "^4.0.2",
+ "lint-staged": "^7.3.0",
+ "lodash": "^4.17.15",
+ "lodash.clonedeep": "^4.5.0",
+ "mocha": "^3.5.3",
+ "moment": "^2.24.0",
+ "mz": "^2.7.0",
+ "node-fetch": "^1.7.3",
+ "p-limit": "^3.1.0",
+ "power-assert": "^1.6.1",
+ "prettier": "2",
+ "rimraf": "^2.7.1",
+ "simple-git": "^2.35.2",
+ "sinon": "^7.4.1",
+ "size-limit": "^0.21.0",
+ "snazzy": "^7.0.0",
+ "ts-node": "^9.1.1",
+ "typescript": "^4.0.2",
+ "webpack": "4",
+ "webpack-cli": "^3.1.2",
+ "world-countries": "^1.8.1"
+ },
+ "resolutions": {
+ "ajv": "6.8.1"
+ }
+}
diff --git a/date-fns/scripts/.eslintrc.js b/date-fns/scripts/.eslintrc.js
new file mode 100644
index 0000000..a40aaa8
--- /dev/null
+++ b/date-fns/scripts/.eslintrc.js
@@ -0,0 +1,5 @@
+module.exports = {
+ rules: {
+ 'no-console': 'off'
+ }
+}
diff --git a/date-fns/scripts/_lib/getConstants.js b/date-fns/scripts/_lib/getConstants.js
new file mode 100644
index 0000000..56387fd
--- /dev/null
+++ b/date-fns/scripts/_lib/getConstants.js
@@ -0,0 +1,14 @@
+const path = require('path')
+const jsDocParser = require('jsdoc-to-markdown')
+
+module.exports = getConstants
+
+function getConstants() {
+ return jsDocParser
+ .getJsdocDataSync({
+ files: path.resolve(process.cwd(), 'src/constants/index.ts'),
+ 'no-cache': true,
+ configure: path.resolve(process.cwd(), 'jsdoc2md.json'),
+ })
+ .filter((c) => c.kind === 'constant' && !c.undocumented)
+}
diff --git a/date-fns/scripts/_lib/listFPFns.js b/date-fns/scripts/_lib/listFPFns.js
new file mode 100644
index 0000000..d33180e
--- /dev/null
+++ b/date-fns/scripts/_lib/listFPFns.js
@@ -0,0 +1,17 @@
+const path = require('path')
+const fs = require('fs')
+
+module.exports = listFPFns
+
+const ignoredFiles = ['index.js', 'test.js', 'index.js.flow', 'package.json']
+
+function listFPFns() {
+ const files = fs.readdirSync(path.join(process.cwd(), 'src', 'fp'))
+ return files
+ .filter(file => /^[^._]/.test(file) && !ignoredFiles.includes(file))
+ .map(file => ({
+ name: file,
+ path: `./${file}`,
+ fullPath: `./src/fp/${file}/index.js`
+ }))
+}
diff --git a/date-fns/scripts/_lib/listFns.js b/date-fns/scripts/_lib/listFns.js
new file mode 100644
index 0000000..7ed93a4
--- /dev/null
+++ b/date-fns/scripts/_lib/listFns.js
@@ -0,0 +1,38 @@
+const path = require('path')
+const fs = require('fs')
+const { promisify } = require('util')
+
+const exists = promisify(fs.exists)
+const readDir = promisify(fs.readdir)
+
+module.exports = listFns
+
+const ignoredFiles = [
+ 'locale',
+ 'esm',
+ 'fp',
+ 'constants',
+ 'index.js',
+ 'test.js',
+ 'index.js.flow',
+ 'package.json',
+ 'types.ts'
+]
+
+async function listFns() {
+ const srcPath = path.join(process.cwd(), 'src')
+ const files = await readDir(srcPath)
+
+ return Promise.all(
+ files
+ .filter(file => /^[^._]/.test(file) && !ignoredFiles.includes(file))
+ .map(async file => {
+ const isTs = await exists(path.join(srcPath, file, 'index.ts'))
+ return {
+ name: file,
+ path: `./${file}`,
+ fullPath: `./src/${file}/index.${isTs ? 'ts' : 'js'}`
+ }
+ })
+ )
+}
diff --git a/date-fns/scripts/_lib/listLocales.js b/date-fns/scripts/_lib/listLocales.js
new file mode 100644
index 0000000..81c8cc8
--- /dev/null
+++ b/date-fns/scripts/_lib/listLocales.js
@@ -0,0 +1,24 @@
+const path = require('path')
+const fs = require('fs')
+
+const ignoredFiles = [
+ 'index.js',
+ 'test.js',
+ 'index.js.flow',
+ 'package.json',
+ 'types.ts',
+]
+
+module.exports = listLocales
+
+function listLocales() {
+ const locales = fs.readdirSync(path.join(process.cwd(), 'src', 'locale'))
+ return locales
+ .filter((file) => /^[^._]/.test(file) && !ignoredFiles.includes(file))
+ .map((locale) => ({
+ name: locale.replace(/-/g, ''),
+ code: locale,
+ path: `./${locale}`,
+ fullPath: `./src/locale/${locale}/index.js`,
+ }))
+}
diff --git a/date-fns/scripts/build/_lib/addDenoExtensions.ts b/date-fns/scripts/build/_lib/addDenoExtensions.ts
new file mode 100644
index 0000000..f0e43d6
--- /dev/null
+++ b/date-fns/scripts/build/_lib/addDenoExtensions.ts
@@ -0,0 +1,79 @@
+import { resolve, dirname } from 'path'
+import fs from 'fs'
+import globby from 'globby'
+import ts, {
+ ExportDeclaration,
+ ImportDeclaration,
+ StringLiteral,
+} from 'typescript'
+
+const { readFile, writeFile, stat } = fs.promises
+
+const pattern = /\.(ts|js)$/
+const ignore = [/\.d\.ts$/]
+
+const resolvedExtensions: Record<string, string> = {}
+
+globby('deno')
+ .then((files) =>
+ files.filter(
+ (file) => pattern.test(file) && !ignore.find((p) => p.test(file))
+ )
+ )
+ .then((files) =>
+ Promise.all(
+ files.map((file) =>
+ readFile(file, 'utf8').then(async (content) => {
+ const source = ts.createSourceFile(
+ file,
+ content,
+ ts.ScriptTarget.Latest
+ )
+ const imports: string[] = []
+
+ source.forEachChild((node) => {
+ if (
+ [
+ ts.SyntaxKind.ImportDeclaration,
+ ts.SyntaxKind.ExportDeclaration,
+ ].includes(node.kind)
+ ) {
+ const importNode = node as ImportDeclaration | ExportDeclaration
+ const specifier = importNode.moduleSpecifier as StringLiteral
+ const importPath = specifier.text
+ const isLocal = /\.\/.+/
+ if (isLocal) imports.push(importPath)
+ }
+ })
+
+ await Promise.all(
+ imports.map(async (importPath) => {
+ if (resolvedExtensions[importPath]) return
+ const fullPath = resolveFullPath(file, importPath)
+ let isTs = false
+ try {
+ await stat(fullPath + '.ts')
+ isTs = true
+ } catch (_) {}
+ resolvedExtensions[fullPath] = isTs ? '.ts' : '.js'
+ })
+ )
+
+ return writeFile(
+ file,
+ imports.reduce((acc, importPath) => {
+ const fullPath = resolveFullPath(file, importPath)
+ return acc.replace(
+ new RegExp(importPath, 'g'),
+ importPath + resolvedExtensions[fullPath]
+ )
+ }, content)
+ )
+ })
+ )
+ )
+ )
+
+function resolveFullPath(file: string, importPath: string) {
+ return resolve(dirname(file), importPath)
+}
diff --git a/date-fns/scripts/build/_lib/prettier.js b/date-fns/scripts/build/_lib/prettier.js
new file mode 100644
index 0000000..a8fb388
--- /dev/null
+++ b/date-fns/scripts/build/_lib/prettier.js
@@ -0,0 +1,6 @@
+const prettier = require('prettier')
+const config = require('../../../.prettierrc')
+
+module.exports = (code, parser = 'babel') => {
+ return prettier.format(code, Object.assign(config, { parser }))
+}
diff --git a/date-fns/scripts/build/_lib/typings/common.js b/date-fns/scripts/build/_lib/typings/common.js
new file mode 100644
index 0000000..cd56267
--- /dev/null
+++ b/date-fns/scripts/build/_lib/typings/common.js
@@ -0,0 +1,92 @@
+const { addSeparator, formatBlock } = require('./formatBlock')
+
+const lowerCaseTypes = ['String', 'Number', 'Boolean']
+
+function correctTypeCase(type) {
+ if (lowerCaseTypes.includes(type)) {
+ return type.toLowerCase()
+ }
+ return type
+}
+
+function getParams(params, { leftBorder = '{', rightBorder = '}' } = {}) {
+ if (!params || params.length === 0) {
+ return leftBorder + rightBorder
+ }
+
+ const formattedParams = addSeparator(
+ params.map(param => {
+ const {
+ name,
+ props,
+ optional,
+ variable,
+ type: { names: typeNames }
+ } = param
+ const type = getType(typeNames, { props, forceArray: variable })
+ return `${variable ? '...' : ''}${name}${optional ? '?' : ''}: ${type}`
+ }),
+ ','
+ )
+
+ return formatBlock`
+ ${leftBorder}
+ ${formattedParams}
+ ${rightBorder}
+ `
+}
+
+function getType(types, { props = [], forceArray = false } = {}) {
+ const typeStrings = types.map(type => {
+ if (type === '*') {
+ return 'any'
+ }
+
+ if (type === 'function') {
+ return '(...args: Array<any>) => any'
+ }
+
+ if (type.startsWith('Array.')) {
+ const [, arrayType] = type.match(/^Array\.<(\w+)>$/i)
+ return `${correctTypeCase(arrayType)}[]`
+ }
+
+ if (type === 'Object' && props.length > 0) {
+ return getParams(props)
+ }
+
+ const caseCorrectedType = correctTypeCase(type)
+ if (forceArray) {
+ return `${caseCorrectedType}[]`
+ }
+
+ return caseCorrectedType
+ })
+
+ const allArrayTypes =
+ typeStrings.length > 1 && typeStrings.every(type => type.endsWith('[]'))
+ if (allArrayTypes) {
+ return `(${typeStrings.map(type => type.replace('[]', '')).join(' | ')})[]`
+ }
+
+ return typeStrings.join(' | ')
+}
+
+function getFPFnType(params, returns) {
+ const fpParamTypes = params.map(param =>
+ getType(param.type.names, { props: param.props })
+ )
+
+ const arity = fpParamTypes.length
+
+ fpParamTypes.push(getType(returns))
+
+ return `CurriedFn${arity}<${fpParamTypes.join(', ')}>`
+}
+
+module.exports = {
+ correctTypeCase,
+ getParams,
+ getType,
+ getFPFnType
+}
diff --git a/date-fns/scripts/build/_lib/typings/flow.js b/date-fns/scripts/build/_lib/typings/flow.js
new file mode 100644
index 0000000..8eca3b7
--- /dev/null
+++ b/date-fns/scripts/build/_lib/typings/flow.js
@@ -0,0 +1,190 @@
+const fs = require('fs')
+const path = require('path')
+const prettier = require('../prettier')
+
+const { getParams, getType, getFPFnType } = require('./common')
+
+const { addSeparator, formatBlock, formatFlowFile } = require('./formatBlock')
+
+/**
+ * Return curried function type aliases for a specific FP function arity.
+ * @param {Number} [arity=4]
+ */
+const getFlowFPTypeAliases = (arity = 4) =>
+ [
+ 'type CurriedFn1<A, R> = <A>(a: A) => R',
+
+ formatBlock`
+ type CurriedFn2<A, B, R> = <A>(a: A) => CurriedFn1<B, R>
+ | <A, B>(a: A, b: B) => R
+ `,
+
+ formatBlock`
+ type CurriedFn3<A, B, C, R> = <A>(a: A) => CurriedFn2<B, C, R>
+ | <A,B>(a: A, b: B) => CurriedFn1<C, R>
+ | <A,B,C>(a: A, b: B, c: C) => R
+ `,
+
+ formatBlock`
+ type CurriedFn4<A, B, C, D, R> = <A>(a: A) => CurriedFn3<B, C, D, R>
+ | <A,B>(a: A, b: B) => CurriedFn2<C, D, R>
+ | <A,B,C>(a: A, b: B, c: C) => CurriedFn1<D, R>
+ | <A,B,C,D>(a: A, b: B, c: C, d: D) => R
+ `,
+ ].slice(0, arity)
+
+function getFlowTypeAlias(type) {
+ const { title, properties, content } = type
+ return `export type ${title} = ${
+ properties ? getParams(properties) : content.type.names.join(' | ')
+ }`
+}
+
+function generateFlowFnTyping(fn, aliasDeclarations) {
+ const { title, args, content } = fn
+
+ const params = getParams(args, { leftBorder: '(', rightBorder: ')' })
+ const returns = getType(content.returns[0].type.names)
+
+ const moduleDeclaration = `declare module.exports: ${params} => ${returns}`
+
+ const typingFile = formatFlowFile`
+ ${addSeparator(aliasDeclarations, '\n')}
+
+ ${moduleDeclaration}
+ `
+
+ writeFile(`src/${title}/index.js.flow`, typingFile)
+}
+
+function generateFlowFnIndexTyping(fns, aliasDeclarations, constants) {
+ const fnsDeclarations = fns.map(({ title, args, content }) => {
+ const params = getParams(args, { leftBorder: '(', rightBorder: ')' })
+ const returns = getType(content.returns[0].type.names)
+ return `${title}: ${params} => ${returns}`
+ })
+
+ const typingFile = formatFlowFile`
+ ${addSeparator(aliasDeclarations, '\n')}
+
+ declare module.exports: {
+ ${addSeparator(
+ fnsDeclarations.concat(generateConstantsDeclarations(constants)),
+ ',\n'
+ )}
+ }
+ `
+
+ writeFile(`src/index.js.flow`, typingFile)
+}
+
+function generateFlowFPFnTyping(fn, aliasDeclarations) {
+ const { title, args, content } = fn
+
+ const type = getFPFnType(args, content.returns[0].type.names)
+
+ const typingFile = formatFlowFile`
+ ${addSeparator(aliasDeclarations, '\n')}
+
+ ${addSeparator(getFlowFPTypeAliases(args.length), '\n')}
+
+ declare module.exports: ${type}
+ `
+
+ writeFile(`src/fp/${title}/index.js.flow`, typingFile)
+}
+
+function generateFlowFPFnIndexTyping(fns, aliasDeclarations, constants) {
+ const fnsDeclarations = fns.map(
+ ({ title, args, content }) =>
+ `${title}: ${getFPFnType(args, content.returns[0].type.names)}`
+ )
+
+ const typingFile = formatFlowFile`
+ ${addSeparator(aliasDeclarations, '\n')}
+
+ ${addSeparator(getFlowFPTypeAliases(), '\n')}
+
+ declare module.exports: {
+ ${addSeparator(
+ fnsDeclarations.concat(generateConstantsDeclarations(constants)),
+ ','
+ )}
+ }
+ `
+
+ writeFile(`src/fp/index.js.flow`, typingFile)
+}
+
+function generateFlowLocaleTyping(locale, localeAliasDeclaration) {
+ const { fullPath } = locale
+
+ const typingFile = formatFlowFile`
+ ${localeAliasDeclaration}
+
+ declare module.exports: Locale
+ `
+
+ writeFile(`${fullPath}.flow`, typingFile)
+}
+
+function generateFlowLocaleIndexTyping(locales, localeAliasDeclaration) {
+ const typingFile = formatFlowFile`
+ ${localeAliasDeclaration}
+
+ declare module.exports: {
+ ${addSeparator(
+ locales.map(({ name }) => `${name}: Locale`),
+ ','
+ )}
+ }
+ `
+
+ writeFile('src/locale/index.js.flow', typingFile)
+}
+
+function generateFlowTypings(fns, aliases, locales, constants) {
+ const aliasDeclarations = aliases.map(getFlowTypeAlias)
+ const localeAliasDeclaration = getFlowTypeAlias(
+ aliases.find((alias) => alias.title === 'Locale')
+ )
+
+ fns.forEach((fn) => {
+ if (fn.isFPFn) {
+ generateFlowFPFnTyping(fn, aliasDeclarations)
+ } else {
+ generateFlowFnTyping(fn, aliasDeclarations)
+ }
+ })
+
+ locales.forEach((locale) => {
+ generateFlowLocaleTyping(locale, localeAliasDeclaration)
+ })
+
+ generateFlowFnIndexTyping(
+ fns.filter(({ isFPFn }) => !isFPFn),
+ aliasDeclarations,
+ constants
+ )
+ generateFlowFPFnIndexTyping(
+ fns.filter(({ isFPFn }) => isFPFn),
+ aliasDeclarations,
+ constants
+ )
+ generateFlowLocaleIndexTyping(locales, localeAliasDeclaration)
+}
+
+function generateConstantsDeclarations(constants) {
+ return constants.map((c) => `${c.name}: ${c.type.names.join(' | ')}`)
+}
+
+function writeFile(relativePath, content) {
+ return fs.writeFileSync(
+ path.resolve(process.cwd(), relativePath),
+ prettier(content, 'flow')
+ )
+}
+
+module.exports = {
+ generateFlowTypings,
+}
diff --git a/date-fns/scripts/build/_lib/typings/formatBlock.js b/date-fns/scripts/build/_lib/typings/formatBlock.js
new file mode 100644
index 0000000..4e1aa32
--- /dev/null
+++ b/date-fns/scripts/build/_lib/typings/formatBlock.js
@@ -0,0 +1,149 @@
+const flowHeader = '// @flow'
+const generatedAutomaticallyMessage = "// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it."
+
+const id = x => x
+
+const trimLeft = string =>
+ string.replace(/^\s*/, '')
+
+const trimRight = string =>
+ string.replace(/\s*$/, '')
+
+const removeIndent = (string, indent) => {
+ return trimLeft(string.slice(0, indent)) + string.slice(indent)
+}
+
+const addIndent = (string, indent) =>
+ string.length > 0
+ ? ' '.repeat(indent) + string
+ : string
+
+const detectIndent = (string) => {
+ const matchResult = string.match(/^\n*(\s+)/)
+ const indent = matchResult
+ ? matchResult[1].length
+ : 0
+ return indent
+}
+
+const addIndentToMultilineString = (string, indent, ignoreFirstLine) =>
+ string
+ .split('\n')
+ .map((line, index) =>
+ (ignoreFirstLine && index === 0)
+ ? line
+ : addIndent(line, indent)
+ )
+ .join('\n')
+
+const addIndentToArray = (array, indent, ignoreFirstElement) =>
+ array
+ .map((element, index) =>
+ addIndentToMultilineString(element, indent, ignoreFirstElement && index === 0)
+ )
+
+const removeIndentFromArray = (array, indent, ignoreFirstElement) =>
+ array
+ .map((element, index) =>
+ (ignoreFirstElement && index === 0)
+ ? element
+ : removeIndent(element, indent)
+ )
+
+/**
+ * Add a specified separator to the end of every string in the array, except the last one
+ * @param {String[]} stringsArray
+ * @returns {String[]} stringsArray with added separators
+ */
+const addSeparator = (stringsArray, separator) =>
+ stringsArray.map((string, index) =>
+ index === stringsArray.length - 1
+ ? string
+ : string + separator
+ )
+
+/**
+ * Tag function that formats a code block by putting correct indentation to it
+ * @param {String[]} rawStrings
+ * @param {...String} substitutions
+ * @returns {String} formatted code block
+ *
+ * @example
+ * const result = formatBlock`
+ * while (true) {
+ * ${addSeparator(
+ * ['Hello', 'world', '!'].map(s => `console.log('${s}')`),
+ * ';'
+ * )}
+ * }
+ * `
+ * console.log(result)
+ * //=>
+ * while (true) {
+ * console.log('Hello');
+ * console.log('world');
+ * console.log('!')
+ * }
+ */
+const formatBlock = (rawStrings, ...substitutions) => {
+ const firstLineIndent = detectIndent(rawStrings[0])
+ let lastLineIndent = 0
+
+ const result = [...substitutions, ''].map((substitution, index) => {
+ const rawString = rawStrings[index]
+
+ // Trim left if it is the first string, and right if it is the last string
+ const maybeTrimLeft = index === 0 ? trimLeft : id
+ const maybeTrimRight = index === substitutions.length ? trimRight : id
+ const string = maybeTrimLeft(maybeTrimRight(rawString))
+
+ const lines = removeIndentFromArray(string.split('\n'), firstLineIndent, true)
+
+ if (lines.length > 1) {
+ const lastLine = lines[lines.length - 1]
+ lastLineIndent = detectIndent(lastLine)
+ }
+
+ const indentedSubstitution =
+ Array.isArray(substitution)
+ ? addIndentToArray(substitution, lastLineIndent, true).join('\n')
+ : addIndentToMultilineString(substitution, lastLineIndent, true)
+
+ return lines.join('\n') + indentedSubstitution
+ }).join('')
+
+ return result
+}
+
+/**
+ * Tag function that formats a Flow file by putting the correct indentation, header and footer to it
+ * @param {String[]} rawStrings
+ * @param {...String} substitutions
+ * @returns {String} formatted file content
+ */
+const formatFlowFile = (...args) =>
+ flowHeader +
+ '\n' +
+ generatedAutomaticallyMessage +
+ '\n\n' +
+ formatBlock(...args) +
+ '\n'
+
+/**
+ * Tag function that formats a TypeScript file by putting the correct indentation, header and footer to it
+ * @param {String[]} rawStrings
+ * @param {...String} substitutions
+ * @returns {String} formatted file content
+ */
+const formatTypeScriptFile = (...args) =>
+ generatedAutomaticallyMessage +
+ '\n\n' +
+ formatBlock(...args) +
+ '\n'
+
+module.exports = {
+ addSeparator,
+ formatBlock,
+ formatFlowFile,
+ formatTypeScriptFile
+}
diff --git a/date-fns/scripts/build/_lib/typings/typeScript.js b/date-fns/scripts/build/_lib/typings/typeScript.js
new file mode 100644
index 0000000..4e93155
--- /dev/null
+++ b/date-fns/scripts/build/_lib/typings/typeScript.js
@@ -0,0 +1,460 @@
+const fs = require('fs')
+const path = require('path')
+const prettier = require('../prettier')
+
+const { getParams, getType, getFPFnType } = require('./common')
+
+const {
+ addSeparator,
+ formatBlock,
+ formatTypeScriptFile,
+} = require('./formatBlock')
+
+/**
+ * Return curried function interfaces for a specific FP function arity.
+ * @param {Number} [arity=4]
+ * @returns {String[arity]} an array of code blocks
+ */
+const getTypeScriptFPInterfaces = (arity = 4) =>
+ [
+ formatBlock`
+ interface CurriedFn1<A, R> {
+ (a: A): R
+ }
+ `,
+
+ formatBlock`
+ interface CurriedFn2<A, B, R> {
+ (a: A): CurriedFn1<B, R>
+ (a: A, b: B): R
+ }
+ `,
+
+ formatBlock`
+ interface CurriedFn3<A, B, C, R> {
+ (a: A): CurriedFn2<B, C, R>
+ (a: A, b: B): CurriedFn1<C, R>
+ (a: A, b: B, c: C): R
+ }
+ `,
+
+ formatBlock`
+ interface CurriedFn4<A, B, C, D, R> {
+ (a: A): CurriedFn3<B, C, D, R>
+ (a: A, b: B): CurriedFn2<C, D, R>
+ (a: A, b: B, c: C): CurriedFn1<D, R>
+ (a: A, b: B, c: C, d: D): R
+ }
+ `,
+ ].slice(0, arity)
+
+function getTypeScriptTypeAlias(type) {
+ const { title, properties, content } = type
+
+ return formatBlock`
+ type ${title} = ${
+ properties ? getParams(properties) : content.type.names.join(' | ')
+ }
+ type ${title}Aliased = ${title}
+ `
+}
+
+function getExportedTypeScriptTypeAlias(type) {
+ const { title } = type
+
+ return formatBlock`
+ export type ${title} = ${title}Aliased
+ `
+}
+
+function getExportedTypeScriptTypeAliases(aliases) {
+ return formatBlock`
+ declare module 'date-fns' {
+ ${addSeparator(aliases.map(getExportedTypeScriptTypeAlias), '\n')}
+ }
+ `
+}
+
+function getTypeScriptDateFnsModuleDefinition(
+ submodule,
+ fns,
+ constantsDefinitions
+) {
+ const moduleName = `date-fns${submodule}`
+
+ const definition = formatBlock`
+ declare module '${moduleName}' {
+ ${addSeparator(
+ fns.map(getTypeScriptFnDefinition).concat(constantsDefinitions),
+ '\n'
+ )}
+ }
+ `
+
+ return {
+ name: moduleName,
+ definition,
+ }
+}
+
+function getTypeScriptDateFnsFPModuleDefinition(
+ submodule,
+ fns,
+ constantsDefinitions
+) {
+ const moduleName = `date-fns${submodule}/fp`
+
+ const fnDefinitions = fns.map(getTypeScriptFPFnDefinition)
+
+ const definition = formatBlock`
+ declare module '${moduleName}' {
+ ${addSeparator(fnDefinitions.concat(constantsDefinitions), '\n')}
+ }
+ `
+
+ return {
+ name: moduleName,
+ definition,
+ }
+}
+
+function getTypeScriptFnModuleDefinition(submodule, fnSuffix, fn) {
+ const name = fn.content.name
+ const moduleName = `date-fns${submodule}/${name}${fnSuffix}`
+
+ const definition = formatBlock`
+ declare module '${moduleName}' {
+ import {${name}} from 'date-fns${submodule}'
+ export default ${name}
+ }
+ `
+
+ return {
+ name: moduleName,
+ definition,
+ }
+}
+
+function getTypeScriptFnDefinition(fn) {
+ const { title, args, content } = fn
+
+ const params = getParams(args, { leftBorder: '(', rightBorder: ')' })
+ const returns = getType(content.returns[0].type.names)
+
+ return formatBlock`
+ function ${title} ${params}: ${returns}
+ namespace ${title} {}
+ `
+}
+
+function getTypeScriptFPFnDefinition(fn) {
+ const { title, args, content } = fn
+
+ const type = getFPFnType(args, content.returns[0].type.names)
+
+ return formatBlock`
+ const ${title}: ${type}
+ namespace ${title} {}
+ `
+}
+
+function getTypeScriptFPFnModuleDefinition(submodule, fnSuffix, isDefault, fn) {
+ const { title } = fn
+ const moduleName = `date-fns${submodule}/fp/${title}${fnSuffix}`
+
+ const definition = formatBlock`
+ declare module '${moduleName}' {
+ import {${title}} from 'date-fns${submodule}/fp'
+ export default ${title}
+ }
+ `
+
+ return {
+ name: moduleName,
+ definition,
+ }
+}
+
+function getTypeScriptLocaleIndexModuleDefinition(submodule, locales) {
+ const moduleName = `date-fns${submodule}/locale`
+
+ const localesDefinitions = locales.map(getTypeScriptLocaleDefinition)
+
+ const definition = formatBlock`
+ declare module '${moduleName}' {
+ ${addSeparator(localesDefinitions, '\n')}
+ }
+ `
+
+ return {
+ name: moduleName,
+ definition,
+ }
+}
+
+function getTypeScriptLocaleDefinition(locale) {
+ const { name } = locale
+
+ return formatBlock`
+ const ${name}: Locale
+ namespace ${name} {}
+ `
+}
+
+function getTypeScriptLocaleModuleDefinition(
+ submodule,
+ localeSuffix,
+ isDefault,
+ locale
+) {
+ const code = locale.code
+ const moduleName = `date-fns${submodule}/locale/${code}${localeSuffix}`
+ const { name } = locale
+
+ const definition = formatBlock`
+ declare module '${moduleName}' {
+ import {${name}} from 'date-fns${submodule}/locale'
+ export default ${name}
+ }
+ `
+
+ return {
+ name: moduleName,
+ definition,
+ }
+}
+
+function getTypeScriptInterfaceDefinition(fn) {
+ const { title, args, content } = fn
+ const params = getParams(args, { leftBorder: '(', rightBorder: ')' })
+ const returns = getType(content.returns[0].type.names)
+
+ return `${title}${params}: ${returns}`
+}
+
+function generateTypescriptFnTyping(fn) {
+ const typingFile = formatTypeScriptFile`
+ import {${fn.title}} from 'date-fns'
+ export default ${fn.title}
+ `
+ writeFile(`./src/${fn.title}/index.d.ts`, typingFile)
+}
+
+function generateTypescriptFPFnTyping(fn) {
+ const typingFile = formatTypeScriptFile`
+ import {${fn.title}} from 'date-fns/fp'
+ export default ${fn.title}
+ `
+ writeFile(`./src/fp/${fn.title}/index.d.ts`, typingFile)
+}
+
+function generateTypescriptLocaleTyping(locale) {
+ const typingFile = formatTypeScriptFile`
+ import {${locale.name}} from 'date-fns/locale'
+ export default ${locale.name}
+ `
+ writeFile(`src/locale/${locale.code}/index.d.ts`, typingFile)
+}
+
+function generateTypeScriptTypings(fns, aliases, locales, constants) {
+ const nonFPFns = fns.filter((fn) => !fn.isFPFn)
+ const fpFns = fns.filter((fn) => fn.isFPFn)
+ const constantsDefinitions = constants.map(
+ (c) => `const ${c.name}: ${c.type.names.join(' | ')}`
+ )
+
+ const moduleDefinitions = [
+ getTypeScriptDateFnsModuleDefinition('', nonFPFns, constantsDefinitions),
+ ]
+ .concat(nonFPFns.map(getTypeScriptFnModuleDefinition.bind(null, '', '')))
+ .concat(
+ nonFPFns.map(getTypeScriptFnModuleDefinition.bind(null, '', '/index'))
+ )
+ .concat(
+ nonFPFns.map(getTypeScriptFnModuleDefinition.bind(null, '', '/index.js'))
+ )
+ .map((module) => module.definition)
+
+ const fpModuleDefinitions = [
+ getTypeScriptDateFnsFPModuleDefinition('', fpFns, constantsDefinitions),
+ ]
+ .concat(
+ fpFns.map(getTypeScriptFPFnModuleDefinition.bind(null, '', '', false))
+ )
+ .concat(
+ fpFns.map(
+ getTypeScriptFPFnModuleDefinition.bind(null, '', '/index', false)
+ )
+ )
+ .concat(
+ fpFns.map(
+ getTypeScriptFPFnModuleDefinition.bind(null, '', '/index.js', false)
+ )
+ )
+ .map((module) => module.definition)
+
+ const esmModuleDefinitions = [
+ getTypeScriptDateFnsModuleDefinition(
+ '/esm',
+ nonFPFns,
+ constantsDefinitions
+ ),
+ ]
+ .concat(
+ nonFPFns.map(getTypeScriptFnModuleDefinition.bind(null, '/esm', ''))
+ )
+ .concat(
+ nonFPFns.map(getTypeScriptFnModuleDefinition.bind(null, '/esm', '/index'))
+ )
+ .concat(
+ nonFPFns.map(
+ getTypeScriptFnModuleDefinition.bind(null, '/esm', '/index.js')
+ )
+ )
+ .map((module) => module.definition)
+
+ const esmFPModuleDefinitions = [
+ getTypeScriptDateFnsFPModuleDefinition('/esm', fpFns, constantsDefinitions),
+ ]
+ .concat(
+ fpFns.map(getTypeScriptFPFnModuleDefinition.bind(null, '/esm', '', true))
+ )
+ .concat(
+ fpFns.map(
+ getTypeScriptFPFnModuleDefinition.bind(null, '/esm', '/index', true)
+ )
+ )
+ .concat(
+ fpFns.map(
+ getTypeScriptFPFnModuleDefinition.bind(null, '/esm', '/index.js', true)
+ )
+ )
+ .map((module) => module.definition)
+
+ const aliasDefinitions = aliases.map(getTypeScriptTypeAlias)
+
+ const exportedAliasDefinitions = [getExportedTypeScriptTypeAliases(aliases)]
+
+ const localeModuleDefinitions = [
+ getTypeScriptLocaleIndexModuleDefinition('', locales),
+ ]
+ .concat(
+ locales.map(getTypeScriptLocaleModuleDefinition.bind(null, '', '', false))
+ )
+ .concat(
+ locales.map(
+ getTypeScriptLocaleModuleDefinition.bind(null, '', '/index', false)
+ )
+ )
+ .concat(
+ locales.map(
+ getTypeScriptLocaleModuleDefinition.bind(null, '', '/index.js', false)
+ )
+ )
+ .map((module) => module.definition)
+
+ const esmLocaleModuleDefinitions = [
+ getTypeScriptLocaleIndexModuleDefinition('/esm', locales),
+ ]
+ .concat(
+ locales.map(
+ getTypeScriptLocaleModuleDefinition.bind(null, '/esm', '', true)
+ )
+ )
+ .concat(
+ locales.map(
+ getTypeScriptLocaleModuleDefinition.bind(null, '/esm', '/index', true)
+ )
+ )
+ .concat(
+ locales.map(
+ getTypeScriptLocaleModuleDefinition.bind(
+ null,
+ '/esm',
+ '/index.js',
+ true
+ )
+ )
+ )
+ .map((module) => module.definition)
+
+ const globalInterfaceDefinition = formatBlock`
+ interface dateFns {
+ ${addSeparator(
+ nonFPFns
+ .map(getTypeScriptInterfaceDefinition)
+ .concat(
+ constants.map((c) => `${c.name}: ${c.type.names.join(' | ')}`)
+ ),
+ '\n'
+ )}
+ }
+ `
+
+ const typingFile = formatTypeScriptFile`
+ // FP Interfaces
+
+ ${addSeparator(getTypeScriptFPInterfaces(), '\n')}
+
+ // Type Aliases
+
+ ${addSeparator(aliasDefinitions, '\n')}
+
+ // Exported Type Aliases
+
+ ${addSeparator(exportedAliasDefinitions, '\n')}
+
+ // Regular Functions
+
+ ${addSeparator(moduleDefinitions, '\n')}
+
+ // FP Functions
+
+ ${addSeparator(fpModuleDefinitions, '\n')}
+
+ // ECMAScript Module Functions
+
+ ${addSeparator(esmModuleDefinitions, '\n')}
+
+ // ECMAScript Module FP Functions
+
+ ${addSeparator(esmFPModuleDefinitions, '\n')}
+
+ // Regular Locales
+
+ ${addSeparator(localeModuleDefinitions, '\n')}
+
+ // ECMAScript Module Locales
+
+ ${addSeparator(esmLocaleModuleDefinitions, '\n')}
+
+ // dateFns Global Interface
+
+ ${globalInterfaceDefinition}
+ `
+
+ writeFile('typings.d.ts', typingFile)
+
+ fns.forEach((fn) => {
+ if (fn.isFPFn) {
+ generateTypescriptFPFnTyping(fn)
+ } else {
+ generateTypescriptFnTyping(fn)
+ }
+ })
+
+ locales.forEach((locale) => {
+ generateTypescriptLocaleTyping(locale)
+ })
+}
+
+function writeFile(relativePath, content) {
+ return fs.writeFileSync(
+ path.resolve(process.cwd(), relativePath),
+ prettier(content, 'typescript')
+ )
+}
+
+module.exports = {
+ generateTypeScriptTypings,
+}
diff --git a/date-fns/scripts/build/build.sh b/date-fns/scripts/build/build.sh
new file mode 100755
index 0000000..d4b3726
--- /dev/null
+++ b/date-fns/scripts/build/build.sh
@@ -0,0 +1,12 @@
+#!/bin/bash
+
+# The script unifies the build scripts.
+#
+# It's the entry point for the build process.
+
+set -ex
+
+./scripts/build/docs.js
+./scripts/build/fp.js
+./scripts/build/typings.js
+./scripts/build/indices.js
diff --git a/date-fns/scripts/build/deno.sh b/date-fns/scripts/build/deno.sh
new file mode 100755
index 0000000..f76b52d
--- /dev/null
+++ b/date-fns/scripts/build/deno.sh
@@ -0,0 +1,7 @@
+#!/bin/bash
+
+# The script builds the Deno package.
+
+rsync --archive --prune-empty-dirs --relative --exclude={'*.flow','benchmark.*','test.*','snapshot.md'} src/./ deno
+cp {CHANGELOG.md,LICENSE.md,typings.d.ts} deno
+yarn ts-node scripts/build/_lib/addDenoExtensions.ts \ No newline at end of file
diff --git a/date-fns/scripts/build/docs.js b/date-fns/scripts/build/docs.js
new file mode 100755
index 0000000..85c99eb
--- /dev/null
+++ b/date-fns/scripts/build/docs.js
@@ -0,0 +1,380 @@
+#!/usr/bin/env node
+
+/**
+ * @file
+ * The script generates docs.json used as the source of truth
+ * for the source code generators (FP, typings, etc.).
+ *
+ * It's a part of the build process.
+ */
+
+const os = require('os')
+const pLimit = require('p-limit')
+const fs = require('fs/promises')
+const path = require('path')
+const cloneDeep = require('lodash.clonedeep')
+const jsDocParser = require('jsdoc-to-markdown')
+const listFns = require('../_lib/listFns')
+const docsConfig = require('../../docs/index.js')
+
+const docsPath = path.resolve(process.cwd(), 'tmp/docs.json')
+
+generateDocsFromSource()
+ .then(generatedDocsObj)
+ .then(injectStaticDocsToDocsObj)
+ .then(injectSharedDocsToDocsObj)
+ .then(writeDocsFile)
+ .catch(reportErrors)
+
+/**
+ * Generates docs object from a list of functions using extended JSDoc format.
+ */
+async function generateDocsFromSource() {
+ const fns = await listFns()
+
+ const limit = pLimit(os.cpus().length)
+
+ const configFile = path.resolve(process.cwd(), 'jsdoc2md.json')
+
+ const jobs = fns.map((fn) => {
+ return limit(() =>
+ jsDocParser
+ .getTemplateData({
+ files: fn.fullPath,
+ 'no-cache': true,
+ configure: configFile,
+ })
+ .then((result) => result[0])
+ )
+ })
+
+ const docsResult = await Promise.all(jobs)
+
+ return docsResult
+ .map((doc) => {
+ const pureTag =
+ doc.customTags && doc.customTags.find((t) => t.tag === 'pure')
+ const pure = (pureTag && pureTag.value) !== 'false'
+ return {
+ type: 'jsdoc',
+ kind: 'function',
+ urlId: doc.name,
+ category: doc.category,
+ title: doc.name,
+ description: doc.summary,
+ content: doc,
+ pure,
+ }
+ })
+ .reduce(
+ (array, doc) =>
+ array
+ .concat(generateFnDoc(doc))
+ .concat(
+ doc.pure
+ ? [generateFPFnDoc(doc)].concat(
+ generateFPFnWithOptionsDoc(doc) || []
+ )
+ : []
+ ),
+ []
+ )
+}
+
+/**
+ * Generates docs object.
+ */
+function generatedDocsObj(docs) {
+ return groupDocs(docs, docsConfig.groups)
+}
+
+/**
+ * Injects static docs (markdown documents specified in the config file)
+ * to docs object.
+ */
+function injectStaticDocsToDocsObj(docsFileObj) {
+ return getListOfStaticDocs()
+ .then((staticDocs) => {
+ staticDocs.forEach((staticDoc) => {
+ docsFileObj[staticDoc.category].push(staticDoc)
+ })
+ return docsFileObj
+ })
+ .catch(reportErrors)
+}
+
+/**
+ * Injects shared docs to docs object.
+ */
+function injectSharedDocsToDocsObj(docsFileObj) {
+ return generateSharedDocs()
+ .then((sharedDocs) => {
+ sharedDocs.forEach((sharedDoc) => {
+ docsFileObj[sharedDoc.category].push(sharedDoc)
+ })
+ return docsFileObj
+ })
+ .catch(reportErrors)
+}
+
+/**
+ * Prints an error and exits the process with 1 status code.
+ */
+function reportErrors(err) {
+ console.error(err.stack)
+ process.exit(1)
+}
+
+/**
+ * Writes docs file.
+ */
+function writeDocsFile(docsFileObj) {
+ return fs.writeFile(docsPath, JSON.stringify(docsFileObj))
+}
+
+/**
+ * Groups passed docs list.
+ */
+function groupDocs(docs, groups) {
+ return docs.reduce((acc, doc) => {
+ ;(acc[doc.category] = acc[doc.category] || []).push(doc)
+ return acc
+ }, buildGroupsTemplate(groups))
+}
+
+/**
+ * Builds an object where the key is a group name and the value is
+ * an empty array. Pre-generated docs object allows to preserve the desired
+ * groups order.
+ */
+function buildGroupsTemplate(groups) {
+ return groups.reduce((acc, group) => {
+ acc[group] = []
+ return acc
+ }, {})
+}
+
+/**
+ * Returns promise to list of static docs with its contents.
+ */
+function getListOfStaticDocs() {
+ return Promise.all(
+ docsConfig.staticDocs.map((staticDoc) => {
+ return fs
+ .readFile(staticDoc.path)
+ .then((docContent) => docContent.toString())
+ .then((content) => Object.assign({ content }, staticDoc))
+ .catch(reportErrors)
+ })
+ )
+}
+
+/**
+ * Returns promise to list of shared docs with its contents.
+ */
+function generateSharedDocs() {
+ const docs = docsConfig.sharedDocs
+ .map(
+ (fn) =>
+ jsDocParser.getTemplateDataSync({
+ files: fn.fullPath,
+ 'no-cache': true,
+ })[0]
+ )
+ .map((doc) => ({
+ type: 'jsdoc',
+ kind: 'typedef',
+ urlId: doc.name,
+ category: doc.category,
+ title: doc.name,
+ description: doc.summary,
+ content: doc,
+ properties: paramsToTree(doc.properties),
+ }))
+
+ return Promise.resolve(docs)
+}
+
+function generateFnDoc(dirtyDoc) {
+ const doc = cloneDeep(dirtyDoc)
+
+ const isFPFn = false
+ const { urlId, title } = doc
+ const args = paramsToTree(doc.content.params)
+
+ return Object.assign(doc, {
+ isFPFn,
+ args,
+ relatedDocs: Object.assign(
+ { default: urlId, fp: `fp/${urlId}` },
+ withOptions(args) ? { fpWithOptions: `fp/${urlId}WithOptions` } : {}
+ ),
+ usage: generateUsage(title, isFPFn),
+ usageTabs: generateUsageTabs(isFPFn),
+ syntax: generateSyntaxString(title, args, isFPFn),
+ })
+}
+
+function generateFPFnDoc(dirtyDoc) {
+ const doc = cloneDeep(dirtyDoc)
+
+ const isFPFn = true
+ const { urlId, title } = doc
+ const exceptions = doc.content.exceptions.filter(
+ (exception) => !exception.description.includes('options.')
+ )
+ const params = doc.content.params
+ .filter((param) => !param.name.startsWith('options'))
+ .reverse()
+ const args = paramsToTree(params)
+
+ return Object.assign(doc, {
+ isFPFn,
+ args,
+ generatedFrom: title,
+ urlId: `fp/${urlId}`,
+ relatedDocs: Object.assign(
+ { default: urlId, fp: `fp/${urlId}` },
+ withOptions(args) ? { fpWithOptions: `fp/${urlId}WithOptions` } : {}
+ ),
+ usage: generateUsage(title, isFPFn),
+ usageTabs: generateUsageTabs(isFPFn),
+ syntax: generateSyntaxString(title, args, isFPFn),
+
+ content: Object.assign(doc.content, {
+ exceptions,
+ params,
+ examples:
+ 'See [FP Guide](https://date-fns.org/docs/FP-Guide) for more information',
+ }),
+ })
+}
+
+function generateFPFnWithOptionsDoc(dirtyDoc) {
+ const doc = cloneDeep(dirtyDoc)
+
+ const isFPFn = true
+ const { urlId, title } = doc
+ const params = doc.content.params
+ .map((param) => {
+ if (!param.name.includes('.')) {
+ param.optional = false
+ }
+ return param
+ })
+ .reverse()
+ const args = paramsToTree(params)
+
+ if (!withOptions(args)) return
+
+ return Object.assign(doc, {
+ isFPFn,
+ args,
+ generatedFrom: title,
+ title: `${title}WithOptions`,
+ urlId: `fp/${urlId}WithOptions`,
+ relatedDocs: {
+ default: urlId,
+ fp: `fp/${urlId}`,
+ fpWithOptions: `fp/${urlId}WithOptions`,
+ },
+ usage: generateUsage(title, isFPFn),
+ usageTabs: generateUsageTabs(isFPFn),
+ syntax: generateSyntaxString(title, args, isFPFn),
+
+ content: Object.assign(doc.content, {
+ params,
+ id: `${doc.content.id}WithOptions`,
+ longname: `${doc.content.longname}WithOptions`,
+ name: `${doc.content.name}WithOptions`,
+ examples:
+ 'See [FP Guide](https://date-fns.org/docs/FP-Guide) for more information',
+ }),
+ })
+}
+
+function withOptions(args) {
+ return args && args[0].name === 'options'
+}
+
+function generateUsageTabs(isFPFn) {
+ return isFPFn
+ ? ['commonjs', 'es2015', 'esm']
+ : ['commonjs', 'umd', 'es2015', 'esm']
+}
+
+function generateUsage(name, isFPFn) {
+ const submodule = isFPFn ? '/fp' : ''
+
+ let usage = {
+ commonjs: {
+ title: 'CommonJS',
+ code: `var ${name} = require('date-fns${submodule}/${name}')`,
+ },
+
+ es2015: {
+ title: 'ES 2015',
+ code: `import ${name} from 'date-fns${submodule}/${name}'`,
+ },
+
+ esm: {
+ title: 'ESM',
+ code: `import { ${name} } from 'date-fns${
+ submodule && `/esm/${submodule}`
+ }'`,
+ text:
+ 'See [ECMAScript Modules guide](https://date-fns.org/docs/ECMAScript-Modules) for more information',
+ },
+ }
+
+ return usage
+}
+
+function paramsToTree(dirtyParams) {
+ if (!dirtyParams) {
+ return null
+ }
+
+ const params = cloneDeep(dirtyParams)
+
+ const paramIndices = params.reduce((result, { name }, index) => {
+ result[name] = index
+ return result
+ }, {})
+
+ return params
+ .map((param) => {
+ const { name, isProperty } = param
+
+ const indexOfDot = name.indexOf('.')
+
+ if (indexOfDot >= 0 && !isProperty) {
+ const parentIndex = paramIndices[name.substring(0, indexOfDot)]
+ const parent = params[parentIndex]
+
+ param.name = name.substring(indexOfDot + 1)
+ param.isProperty = true
+ if (!parent.props) {
+ parent.props = [param]
+ } else {
+ parent.props.push(param)
+ }
+ }
+
+ return param
+ })
+ .filter((param) => !param.isProperty)
+}
+
+function generateSyntaxString(name, args, isFPFn) {
+ if (!args) {
+ return undefined
+ } else if (isFPFn) {
+ return args.reduce((acc, arg) => acc.concat(`(${arg.name})`), name)
+ } else {
+ const argsString = args
+ .map((arg) => (arg.optional ? `[${arg.name}]` : arg.name))
+ .join(', ')
+ return `${name}(${argsString})`
+ }
+}
diff --git a/date-fns/scripts/build/fp.js b/date-fns/scripts/build/fp.js
new file mode 100755
index 0000000..f3e5a5a
--- /dev/null
+++ b/date-fns/scripts/build/fp.js
@@ -0,0 +1,51 @@
+#!/usr/bin/env node
+
+/**
+ * @file
+ * The script generates the FP functions using the docs JSON file.
+ *
+ * It's a part of the build process.
+ */
+
+const fs = require('fs')
+const path = require('path')
+const prettier = require('./_lib/prettier')
+const jsDocs = require(path.resolve(process.cwd(), 'tmp/docs.json'))
+
+const generatedAutomaticallyMessage =
+ "// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it."
+const FP_DIR = './src/fp'
+
+const fpFns = Object.keys(jsDocs)
+ .map((category) => jsDocs[category])
+ .reduce((previousValue, newValue) => [...previousValue, ...newValue], [])
+ .filter((doc) => doc.kind === 'function' && doc.isFPFn)
+
+buildFP(fpFns)
+
+function getFPFn(resultFnName, initialFnName, arity) {
+ return [generatedAutomaticallyMessage]
+ .concat('')
+ .concat(`import fn from '../../${initialFnName}/index'`)
+ .concat(`import convertToFP from '../_lib/convertToFP/index'`)
+ .concat('')
+ .concat(`var ${resultFnName} = convertToFP(fn, ${arity})`)
+ .concat('')
+ .concat(`export default ${resultFnName}`)
+ .concat('')
+ .join('\n')
+}
+
+function buildFPFn({ title, generatedFrom, args: { length } }) {
+ const fpFnLines = getFPFn(title, generatedFrom, length)
+ const fpFnDir = `${FP_DIR}/${title}`
+
+ if (!fs.existsSync(fpFnDir)) {
+ fs.mkdirSync(fpFnDir)
+ }
+ fs.writeFileSync(`${fpFnDir}/index.js`, prettier(fpFnLines))
+}
+
+function buildFP(fns) {
+ fns.forEach(buildFPFn)
+}
diff --git a/date-fns/scripts/build/indices.js b/date-fns/scripts/build/indices.js
new file mode 100755
index 0000000..45767fb
--- /dev/null
+++ b/date-fns/scripts/build/indices.js
@@ -0,0 +1,61 @@
+#!/usr/bin/env node
+
+/**
+ * @file
+ * The script generates index files for submodules.
+ *
+ * It's a part of the build process.
+ */
+
+const fs = require('fs')
+const path = require('path')
+const prettier = require('./_lib/prettier')
+const listFns = require('../_lib/listFns')
+const listFPFns = require('../_lib/listFPFns')
+const listLocales = require('../_lib/listLocales')
+
+const outdatedLocales = require('../../outdatedLocales.json')
+
+const generatedAutomaticallyMessage =
+ "// This file is generated automatically by `scripts/build/indices.js`. Please, don't change it."
+
+listFns().then((fns) => {
+ const fpFns = listFPFns()
+ const locales = listLocales().filter(
+ ({ code }) => !outdatedLocales.includes(code)
+ )
+
+ writeFile('src/index.js', generateIndex(fns, false, true))
+ writeFile('src/fp/index.js', generateIndex(fpFns, true, true))
+ writeFile('src/locale/index.js', generateIndex(locales, false, false))
+})
+
+function writeFile(relativePath, content) {
+ return fs.writeFileSync(
+ path.resolve(process.cwd(), relativePath),
+ prettier(content)
+ )
+}
+
+function generateIndex(files, isFP, includeConstants) {
+ const fileLines = files
+ .map(
+ (fn) =>
+ `export { default as ${fn.name} } from '${fn.path.replace(
+ /\.js$/,
+ ''
+ )}/index'`
+ )
+ .concat(
+ includeConstants
+ ? `export * from '${isFP ? '..' : '.'}/constants/index'`
+ : []
+ )
+
+ const indexLines = [generatedAutomaticallyMessage]
+ .concat('')
+ .concat(fileLines)
+ .join('\n')
+
+ return `${indexLines}\n`
+}
diff --git a/date-fns/scripts/build/localeSnapshots/_lib/distanceDates.js b/date-fns/scripts/build/localeSnapshots/_lib/distanceDates.js
new file mode 100644
index 0000000..4f104a0
--- /dev/null
+++ b/date-fns/scripts/build/localeSnapshots/_lib/distanceDates.js
@@ -0,0 +1,59 @@
+export const baseDate = new Date(2000, 0, 1)
+
+export const dates = [
+ new Date(2006, 0, 1),
+ new Date(2005, 0, 1),
+ new Date(2004, 0, 1),
+ new Date(2003, 0, 1),
+ new Date(2002, 0, 1),
+ new Date(2001, 5, 1),
+ new Date(2001, 1, 1),
+ new Date(2001, 0, 1),
+ new Date(2000, 5, 1),
+ new Date(2000, 2, 1),
+ new Date(2000, 1, 1),
+ new Date(2000, 0, 15),
+ new Date(2000, 0, 2),
+ new Date(2000, 0, 1, 6),
+ new Date(2000, 0, 1, 1),
+ new Date(2000, 0, 1, 0, 45),
+ new Date(2000, 0, 1, 0, 30),
+ new Date(2000, 0, 1, 0, 15),
+ new Date(2000, 0, 1, 0, 1),
+ new Date(2000, 0, 1, 0, 0, 25),
+ new Date(2000, 0, 1, 0, 0, 15),
+ new Date(2000, 0, 1, 0, 0, 5),
+ baseDate,
+ new Date(1999, 11, 31, 23, 59, 55),
+ new Date(1999, 11, 31, 23, 59, 45),
+ new Date(1999, 11, 31, 23, 59, 35),
+ new Date(1999, 11, 31, 23, 59),
+ new Date(1999, 11, 31, 23, 45),
+ new Date(1999, 11, 31, 23, 30),
+ new Date(1999, 11, 31, 23, 15),
+ new Date(1999, 11, 31, 23),
+ new Date(1999, 11, 31, 18),
+ new Date(1999, 11, 30),
+ new Date(1999, 11, 15),
+ new Date(1999, 11, 1),
+ new Date(1999, 10, 1),
+ new Date(1999, 5, 1),
+ new Date(1999, 0, 1),
+ new Date(1998, 11, 1),
+ new Date(1998, 5, 1),
+ new Date(1998, 0, 1),
+ new Date(1997, 0, 1),
+ new Date(1996, 0, 1),
+ new Date(1995, 0, 1),
+ new Date(1994, 0, 1)
+]
+
+export const relativeDates = [
+ new Date(2000, 0, 10),
+ new Date(2000, 0, 5),
+ new Date(2000, 0, 2),
+ baseDate,
+ new Date(1999, 11, 31),
+ new Date(1999, 11, 27),
+ new Date(1999, 11, 21)
+]
diff --git a/date-fns/scripts/build/localeSnapshots/index.js b/date-fns/scripts/build/localeSnapshots/index.js
new file mode 100755
index 0000000..7581d95
--- /dev/null
+++ b/date-fns/scripts/build/localeSnapshots/index.js
@@ -0,0 +1,69 @@
+#!/usr/bin/env babel-node
+
+/**
+ * @file
+ * The script generates the locale snapshots.
+ *
+ * It's a part of the build process.
+ */
+
+import { readFile, readFileSync, writeFile } from 'mz/fs'
+import path from 'path'
+import listLocales from '../../_lib/listLocales'
+import prettier from '../_lib/prettier'
+import renderFormatDistance from './renderFormatDistance'
+import renderFormatDistanceStrict from './renderFormatDistanceStrict'
+import renderFormatParse from './renderFormatParse'
+import renderFormatRelative from './renderFormatRelative'
+
+const mode = process.argv[2] || 'generate'
+
+if (process.env.TZ.toLowerCase() !== 'utc')
+ throw new Error('The locale snapshots generation must be run with TZ=utc')
+
+const outdatedLocales = JSON.parse(
+ readFileSync(path.join(process.cwd(), 'outdatedLocales.json'), 'utf8')
+)
+const locales = listLocales().filter(
+ ({ code }) => !outdatedLocales.includes(code)
+)
+
+Promise.all(
+ locales.map(localeObj => {
+ const { code, fullPath } = localeObj
+ const locale = require(`../../../src/locale/${code}`)
+ const source = readFileSync(path.join(process.cwd(), fullPath)).toString()
+ const languageName = source.match(/\* @language (.*)/)[1]
+
+ const snapshot = `# ${languageName} (${code}) locale
+
+${renderFormatParse(locale)}
+
+${renderFormatDistance(locale)}
+
+${renderFormatDistanceStrict(locale)}
+
+${renderFormatRelative(locale)}
+`
+
+ const snapshotPath = path.join(
+ path.resolve(process.cwd(), path.dirname(fullPath)),
+ 'snapshot.md'
+ )
+ const formattedSnapshot = prettier(snapshot, 'markdown')
+
+ if (mode === 'test') {
+ return readFile(snapshotPath, 'utf8').then(snapshotFileContent => {
+ if (snapshotFileContent !== formattedSnapshot)
+ throw new Error(
+ `The snapshot on the disk doesn't match the generated snapshot: ${snapshotPath}. Please run yarn locale-snapshots and commit the results.`
+ )
+ })
+ } else {
+ return writeFile(snapshotPath, formattedSnapshot)
+ }
+ })
+).catch(err => {
+ console.error(err.stack)
+ process.exit(1)
+})
diff --git a/date-fns/scripts/build/localeSnapshots/renderFormatDistance/index.js b/date-fns/scripts/build/localeSnapshots/renderFormatDistance/index.js
new file mode 100644
index 0000000..f59d312
--- /dev/null
+++ b/date-fns/scripts/build/localeSnapshots/renderFormatDistance/index.js
@@ -0,0 +1,26 @@
+import formatDistance from '../../../../src/formatDistance'
+import { baseDate, dates } from '../_lib/distanceDates'
+
+export default function renderFormatDistance(locale) {
+ return `## \`formatDistance\`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | \`includeSeconds: true\` | \`addSuffix: true\` |
+|-|-|-|-|
+${dates
+ .map(date => {
+ const dateString = date.toISOString()
+ const result = formatDistance(date, baseDate, { locale })
+ const resultIncludeSeconds = formatDistance(date, baseDate, {
+ locale,
+ includeSeconds: true
+ })
+ const resultAddSuffix = formatDistance(date, baseDate, {
+ locale,
+ addSuffix: true
+ })
+ return `| ${dateString} | ${result} | ${resultIncludeSeconds} | ${resultAddSuffix} |`
+ })
+ .join('\n')}`
+}
diff --git a/date-fns/scripts/build/localeSnapshots/renderFormatDistanceStrict/index.js b/date-fns/scripts/build/localeSnapshots/renderFormatDistanceStrict/index.js
new file mode 100644
index 0000000..3dc03ab
--- /dev/null
+++ b/date-fns/scripts/build/localeSnapshots/renderFormatDistanceStrict/index.js
@@ -0,0 +1,26 @@
+import formatDistanceStrict from '../../../../src/formatDistanceStrict'
+import { baseDate, dates } from '../_lib/distanceDates'
+
+export default function renderFormatDistanceStrict(locale) {
+ return `## \`formatDistanceStrict\`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | \`addSuffix: true\` | With forced unit (i.e. \`hour\`)
+|-|-|-|-|
+${dates
+ .map(date => {
+ const dateString = date.toISOString()
+ const result = formatDistanceStrict(date, baseDate, { locale })
+ const resultAddSuffix = formatDistanceStrict(date, baseDate, {
+ locale,
+ addSuffix: true
+ })
+ const resultForcedUnit = formatDistanceStrict(date, baseDate, {
+ locale,
+ unit: 'hour'
+ })
+ return `| ${dateString} | ${result} | ${resultAddSuffix} | ${resultForcedUnit} |`
+ })
+ .join('\n')}`
+}
diff --git a/date-fns/scripts/build/localeSnapshots/renderFormatParse/formatParseTokens.js b/date-fns/scripts/build/localeSnapshots/renderFormatParse/formatParseTokens.js
new file mode 100644
index 0000000..5631d95
--- /dev/null
+++ b/date-fns/scripts/build/localeSnapshots/renderFormatParse/formatParseTokens.js
@@ -0,0 +1,218 @@
+const yearDates = [
+ new Date(1987, 1, 11, 12, 13, 14, 15),
+ new Date(0, 0, 1, 12, 13, 14, 15).setFullYear(5, 0, 1)
+]
+
+const quarterDates = [
+ new Date(2019, 0, 1, 12, 13, 14, 15),
+ new Date(2019, 3, 1, 12, 13, 14, 15)
+]
+
+const monthDates = [
+ new Date(2019, 1, 11, 12, 13, 14, 15),
+ new Date(2019, 6, 10, 12, 13, 14, 15)
+]
+
+const weekOfYearDates = [
+ new Date(2019, 0, 1, 12, 13, 14, 15),
+ new Date(2019, 11, 1, 12, 13, 14, 15)
+]
+
+const dayOfMonthDates = [
+ new Date(2019, 1, 11, 12, 13, 14, 15),
+ new Date(2019, 1, 28, 12, 13, 14, 15)
+]
+
+const dayOfYearDates = [
+ new Date(2019, 1, 11, 12, 13, 14, 15),
+ new Date(2019, 11, 31, 12, 13, 14, 15)
+]
+
+const dayOfWeekDates = [
+ new Date(2019, 1, 11, 12, 13, 14, 15),
+ new Date(2019, 1, 15, 12, 13, 14, 15)
+]
+
+const timeOfDayDates = [
+ new Date(2019, 1, 11, 11, 13, 14, 15),
+ new Date(2019, 1, 11, 14, 13, 14, 15),
+ new Date(2019, 1, 11, 19, 13, 14, 15),
+ new Date(2019, 1, 11, 2, 13, 14, 15)
+]
+
+const hourDates = [
+ new Date(2019, 1, 11, 11, 13, 14, 15),
+ new Date(2019, 1, 11, 23, 13, 14, 15)
+]
+
+const localizedDates = [
+ new Date(1987, 1, 11, 12, 13, 14, 15),
+ new Date(1453, 4, 29, 23, 59, 59, 999)
+]
+
+const formatParseTokens = [
+ {
+ title: 'Calendar year',
+ tokens: ['yo'],
+ dates: yearDates
+ },
+
+ {
+ title: 'Local week-numbering year',
+ tokens: ['Yo'],
+ dates: yearDates,
+ options: { useAdditionalWeekYearTokens: true }
+ },
+
+ {
+ title: 'Quarter (formatting)',
+ tokens: ['Qo', 'QQQ', 'QQQQ', 'QQQQQ'],
+ dates: quarterDates
+ },
+
+ {
+ title: 'Quarter (stand-alone)',
+ tokens: ['qo', 'qqq', 'qqqq'],
+ dates: quarterDates
+ },
+
+ {
+ title: 'Month (formatting)',
+ tokens: ['Mo', 'MMM', 'MMMM', 'MMMMM'],
+ dates: monthDates
+ },
+
+ {
+ title: 'Month (stand-alone) ',
+ tokens: ['Lo', 'LLL', 'LLLL', 'LLLLL'],
+ dates: monthDates
+ },
+
+ {
+ title: 'Local week of year',
+ tokens: ['wo'],
+ dates: weekOfYearDates
+ },
+
+ {
+ title: 'ISO week of year',
+ tokens: ['Io'],
+ dates: weekOfYearDates
+ },
+
+ {
+ title: 'Day of month',
+ tokens: ['do'],
+ dates: dayOfMonthDates
+ },
+
+ {
+ title: 'Day of year',
+ tokens: ['Do'],
+ dates: dayOfYearDates,
+ options: { useAdditionalDayOfYearTokens: true }
+ },
+
+ {
+ title: 'Day of week (formatting)',
+ tokens: ['E', 'EE', 'EEE', 'EEEE', 'EEEEE', 'EEEEEE'],
+ dates: dayOfWeekDates
+ },
+
+ {
+ title: 'ISO day of week (formatting)',
+ tokens: ['io', 'iii', 'iiii', 'iiiii', 'iiiiii'],
+ dates: dayOfWeekDates
+ },
+
+ {
+ title: 'Local day of week (formatting)',
+ tokens: ['eo', 'eee', 'eeee', 'eeeee', 'eeeeee'],
+ dates: dayOfWeekDates
+ },
+
+ {
+ title: 'Local day of week (stand-alone)',
+ tokens: ['co', 'ccc', 'cccc', 'ccccc', 'cccccc'],
+ dates: dayOfWeekDates
+ },
+
+ {
+ title: 'AM, PM',
+ tokens: ['a', 'aa', 'aaa', 'aaaa', 'aaaaa'],
+ dates: timeOfDayDates
+ },
+
+ {
+ title: 'AM, PM, noon, midnight',
+ tokens: ['b', 'bb', 'bbb', 'bbbb', 'bbbbb'],
+ dates: timeOfDayDates
+ },
+
+ {
+ title: 'Flexible day period',
+ tokens: ['B', 'BB', 'BBB', 'BBBB', 'BBBBB'],
+ dates: timeOfDayDates
+ },
+
+ {
+ title: 'Hour [1-12]',
+ tokens: ['ho'],
+ dates: hourDates
+ },
+
+ {
+ title: 'Hour [0-23]',
+ tokens: ['Ho'],
+ dates: hourDates
+ },
+
+ {
+ title: 'Hour [0-11]',
+ tokens: ['Ko'],
+ dates: hourDates
+ },
+
+ {
+ title: 'Hour [1-24]',
+ tokens: ['ko'],
+ dates: hourDates
+ },
+
+ {
+ title: 'Minute',
+ tokens: ['mo'],
+ dates: [
+ new Date(2019, 0, 1, 12, 1, 14, 15),
+ new Date(2019, 3, 1, 12, 55, 14, 15)
+ ]
+ },
+
+ {
+ title: 'Second',
+ tokens: ['so'],
+ dates: [
+ new Date(2019, 0, 1, 12, 13, 1, 15),
+ new Date(2019, 3, 1, 12, 13, 55, 15)
+ ]
+ },
+
+ {
+ title: 'Long localized date',
+ tokens: ['P', 'PP', 'PPP', 'PPPP'],
+ dates: localizedDates
+ },
+
+ {
+ title: 'Long localized time',
+ tokens: ['p', 'pp', 'ppp', 'pppp'],
+ dates: localizedDates
+ },
+
+ {
+ title: 'Combination of date and time',
+ tokens: ['Pp', 'PPpp', 'PPPppp', 'PPPPpppp'],
+ dates: localizedDates
+ }
+]
+export default formatParseTokens
diff --git a/date-fns/scripts/build/localeSnapshots/renderFormatParse/index.js b/date-fns/scripts/build/localeSnapshots/renderFormatParse/index.js
new file mode 100644
index 0000000..2ddcb10
--- /dev/null
+++ b/date-fns/scripts/build/localeSnapshots/renderFormatParse/index.js
@@ -0,0 +1,59 @@
+import format from '../../../../src/format'
+import isValid from '../../../../src/isValid'
+import parse from '../../../../src/parse'
+import toDate from '../../../../src/toDate'
+import formatParseTokens from './formatParseTokens'
+
+export default function renderFormatParse(locale) {
+ return `## \`format\` and \`parse\`
+
+| Title | Token string | Date | \`format\` result | \`parse\` result |
+|-|-|-|-|-|
+${formatParseTokens
+ .map(({ title, tokens, dates, options = {}, skipParse }) => {
+ return tokens
+ .map((token, tokenIndex) => {
+ return dates
+ .map((date, dateIndex) => {
+ const dateString = toDate(date).toISOString()
+ const formatResult = format(
+ date,
+ token,
+ Object.assign({ locale }, options)
+ )
+ let parsedDate
+ try {
+ parsedDate =
+ !skipParse &&
+ parse(
+ formatResult,
+ token,
+ date,
+ Object.assign({ locale }, options)
+ )
+ } catch (_err) {
+ parsedDate = 'Errored'
+ }
+
+ const parseResult = skipParse
+ ? 'NA'
+ : parsedDate === 'Errored'
+ ? parsedDate
+ : isValid(parsedDate)
+ ? parsedDate.toISOString()
+ : 'Invalid Date'
+
+ if (dateIndex === 0 && tokenIndex === 0) {
+ return `| ${title} | ${token} | ${dateString} | ${formatResult} | ${parseResult} |`
+ } else if (dateIndex === 0) {
+ return `| | ${token} | ${dateString} | ${formatResult} | ${parseResult} |`
+ } else {
+ return `| | | ${dateString} | ${formatResult} | ${parseResult} |`
+ }
+ })
+ .join('\n')
+ })
+ .join('\n')
+ })
+ .join('\n')}`
+}
diff --git a/date-fns/scripts/build/localeSnapshots/renderFormatRelative/index.js b/date-fns/scripts/build/localeSnapshots/renderFormatRelative/index.js
new file mode 100644
index 0000000..68e558e
--- /dev/null
+++ b/date-fns/scripts/build/localeSnapshots/renderFormatRelative/index.js
@@ -0,0 +1,23 @@
+import formatRelative from '../../../../src/formatRelative'
+import { baseDate, relativeDates } from '../_lib/distanceDates'
+
+export default function renderFormatRelative(locale) {
+ return `## \`formatRelative\`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result |
+|-|-|
+${relativeDates
+ .map(date => {
+ const dateString = date.toISOString()
+ let result
+ try {
+ result = formatRelative(date, baseDate, { locale })
+ } catch (_err) {
+ result = 'Errored'
+ }
+ return `| ${dateString} | ${result} |`
+ })
+ .join('\n')}`
+}
diff --git a/date-fns/scripts/build/package.sh b/date-fns/scripts/build/package.sh
new file mode 100755
index 0000000..5f7a831
--- /dev/null
+++ b/date-fns/scripts/build/package.sh
@@ -0,0 +1,51 @@
+#!/bin/bash
+
+# The script generates the package in the given directory.
+#
+# It's addition to the build process. The script is used in examples.
+# It also could be used to build date-fns from a git checkout.
+
+set -e
+
+# cd to the root dir
+root="$(pwd)/$(dirname "$0")/../.."
+cd "$root" || exit 1
+
+PATH="$(npm bin):$PATH"
+# XXX: $PACKAGE_OUTPUT_PATH must be an absolute path!
+dir=${PACKAGE_OUTPUT_PATH:-"$root/tmp/package"}
+
+# Clean up output dir
+rm -rf "$dir"
+mkdir -p "$dir"
+
+# Traspile CommonJS versions of files
+env BABEL_ENV='commonjs' babel src --source-root src --out-dir "$dir" --extensions .ts,.js --ignore test.js,benchmark.js,snapshot.md --copy-files --quiet
+
+# Traspile ESM versions of files
+env BABEL_ENV='esm' babel src --source-root src --out-dir "$dir/esm" --extensions .ts,.js --ignore test.js,benchmark.js,snapshot.md,package.json --copy-files --quiet
+
+# Copy basic files
+for pattern in CHANGELOG.md \
+ package.json \
+ docs \
+ LICENSE.md \
+ README.md \
+ typings.d.ts
+do
+ cp -r "$pattern" "$dir"
+done
+
+# Remove clean up code when this issues is resolved:
+# https://github.com/babel/babel/issues/6226
+
+# Clean up dev code
+find "$dir" -type f -name "test.js" -delete
+find "$dir" -type f -name "benchmark.js" -delete
+find "$dir" -type f -name "snapshot.md" -delete
+
+# Clean up package.json pointing to the modules
+find "$dir/esm" -type f -name "package.json" -delete
+
+./scripts/build/packages.js
+./scripts/build/removeOutdatedLocales.js $dir
diff --git a/date-fns/scripts/build/packages.js b/date-fns/scripts/build/packages.js
new file mode 100755
index 0000000..154754c
--- /dev/null
+++ b/date-fns/scripts/build/packages.js
@@ -0,0 +1,92 @@
+#!/usr/bin/env node
+
+/**
+ * @file
+ * The script generates package.json files that points to correct ESM modules
+ * and TypeScript typings.
+ *
+ * It's a part of the build process.
+ */
+
+const { writeFile } = require('mz/fs')
+const path = require('path')
+const listFns = require('../_lib/listFns')
+const listFPFns = require('../_lib/listFPFns')
+const listLocales = require('../_lib/listLocales')
+const rootPath =
+ process.env.PACKAGE_OUTPUT_PATH || path.resolve(process.cwd(), 'tmp/package')
+
+const extraModules = [
+ { fullPath: './src/fp/index.js' },
+ { fullPath: './src/locale/index.js' },
+]
+
+writePackages()
+
+async function writePackages() {
+ const initialPackages = await getInitialPackages()
+ const modules = await listAll()
+ await Promise.all(
+ modules.map(async (module) =>
+ writePackage(module.fullPath, initialPackages[module.fullPath])
+ )
+ )
+ console.log('package.json files are generated')
+}
+
+function writePackage(fullPath, initialPackage) {
+ const dirPath = path.dirname(fullPath)
+ const typingsRelativePath = path.relative(dirPath, `./src/typings.d.ts`)
+ const packagePath = path.resolve(
+ rootPath,
+ `${dirPath.replace('./src/', './')}/package.json`
+ )
+
+ return writeFile(
+ packagePath,
+ JSON.stringify(
+ Object.assign({ sideEffects: false }, initialPackage || {}, {
+ typings: typingsRelativePath,
+ }),
+ null,
+ 2
+ )
+ )
+}
+
+async function getInitialPackages() {
+ const fns = await listFns()
+ return fns
+ .concat(listFPFns())
+ .concat(listLocales())
+ .concat(extraModules)
+ .reduce((acc, module) => {
+ acc[module.fullPath] = getModulePackage(module.fullPath)
+ return acc
+ }, {})
+}
+
+function getModulePackage(fullPath) {
+ const dirPath = path.dirname(fullPath)
+ const subPath = dirPath.match(/^\.\/src\/(.+)$/)[1]
+ const esmRelativePath = path.relative(
+ dirPath,
+ `./src/esm/${subPath}/index.js`
+ )
+ return { module: esmRelativePath }
+}
+
+async function listAll() {
+ const fns = await listFns()
+ return fns
+ .concat(listFPFns())
+ .concat(listLocales())
+ .concat(extraModules)
+ .reduce((acc, module) => {
+ const esmModule = Object.assign({}, module, {
+ fullPath: module.fullPath.replace('./src/', './src/esm/'),
+ })
+ return acc.concat([module, esmModule])
+ }, [])
+ .concat([])
+}
diff --git a/date-fns/scripts/build/removeOutdatedLocales.js b/date-fns/scripts/build/removeOutdatedLocales.js
new file mode 100755
index 0000000..5285f11
--- /dev/null
+++ b/date-fns/scripts/build/removeOutdatedLocales.js
@@ -0,0 +1,20 @@
+#!/usr/bin/env node
+
+/**
+ * @file
+ * The script removes outdated locales from the package.
+ *
+ * It's a part of the build process.
+ */
+
+const path = require('path')
+const rimraf = require('rimraf')
+
+const packageDir = process.argv[2]
+if (!packageDir) throw new Error('Package dir should be passed as an argument')
+
+const locales = require('../../outdatedLocales.json')
+locales.forEach(locale => {
+ rimraf.sync(path.resolve(packageDir, `locale/${locale}`))
+ rimraf.sync(path.resolve(packageDir, `locale/esm/${locale}`))
+})
diff --git a/date-fns/scripts/build/typings.js b/date-fns/scripts/build/typings.js
new file mode 100755
index 0000000..ea0dde5
--- /dev/null
+++ b/date-fns/scripts/build/typings.js
@@ -0,0 +1,31 @@
+#!/usr/bin/env node
+
+/**
+ * @file
+ * The script generates Flow and TypeScript typing files.
+ *
+ * It's a part of the build process.
+ */
+
+const path = require('path')
+const listLocales = require('../_lib/listLocales')
+const getConstants = require('../_lib/getConstants')
+const jsDocs = require(path.resolve(process.cwd(), 'tmp/docs.json'))
+
+const { generateTypeScriptTypings } = require('./_lib/typings/typeScript')
+const { generateFlowTypings } = require('./_lib/typings/flow')
+
+const locales = listLocales()
+
+const fns = Object.keys(jsDocs)
+ .map(category => jsDocs[category])
+ .reduce((previousValue, newValue) => [...previousValue, ...newValue], [])
+ .filter(doc => doc.kind === 'function')
+ .sort((a, b) => a.title.localeCompare(b.title, 'en-US'))
+
+const constants = getConstants()
+
+const aliases = jsDocs['Types']
+
+generateTypeScriptTypings(fns, aliases, locales, constants)
+generateFlowTypings(fns, aliases, locales, constants)
diff --git a/date-fns/scripts/release/buildChangelog.ts b/date-fns/scripts/release/buildChangelog.ts
new file mode 100644
index 0000000..b745951
--- /dev/null
+++ b/date-fns/scripts/release/buildChangelog.ts
@@ -0,0 +1,289 @@
+import { fromEntries, last, sample, uniq } from 'js-fns'
+import sg from 'simple-git'
+import { Octokit } from '@octokit/core'
+import format from '../../src/format'
+
+const git = sg()
+const gh = new Octokit({ auth: process.env.GITHUB_TOKEN })
+
+;(async () => {
+ const changelog = await buildChangelog()
+ console.log(renderChangelog(changelog))
+})()
+
+function renderChangelog(changelog: ChangelogVersion) {
+ let markdown = `## ${renderVersion(changelog.version)} - ${format(
+ Date.now(),
+ 'yyyy-MM-dd'
+ )}
+
+${sample(thanksOptions)!(renderAuthors(changelog.authors))}`
+
+ if (changelog.fixed.length)
+ markdown += `
+
+### Fixed
+
+${changelog.fixed.map(renderItem).join('\n\n')}`
+
+ if (changelog.changed.length)
+ markdown += `
+
+### Changed
+
+${changelog.changed.map(renderItem).join('\n\n')}`
+
+ if (changelog.added.length)
+ markdown += `
+
+### Added
+
+${changelog.added.map(renderItem).join('\n\n')}`
+ return markdown
+}
+
+async function buildChangelog(): Promise<ChangelogVersion> {
+ const lastTag = last((await git.tags()).all)
+ if (!lastTag) throw new Error("Can't find tags")
+
+ const commits = await git.log({ from: lastTag, to: 'HEAD' })
+
+ const authorsMap: { [hash: string]: string } = fromEntries(
+ await Promise.all(
+ commits.all.map((c) =>
+ gh
+ .request('GET /repos/{owner}/{repo}/commits/{ref}', {
+ owner: 'date-fns',
+ repo: 'date-fns',
+ ref: c.hash,
+ })
+ .then(({ data }) => [c.hash, data.author?.login] as [string, string])
+ )
+ )
+ )
+
+ const items: ChangelogItem[] = []
+ const authors: Author[] = []
+
+ commits.all.forEach((commit) => {
+ const author: Author = {
+ login: authorsMap[commit.hash],
+ email: commit.author_email,
+ name: commit.author_name,
+ }
+
+ const prCaptures = commit.message.match(/\(#(\d+)\)/)
+ const pr = prCaptures ? parseInt(prCaptures[1]) : undefined
+
+ let issues: number[] | undefined
+ commit.message.match(new RegExp(closesRegExp, 'g'))?.forEach((str) => {
+ const issueCaptures = str.match(closesRegExp)
+ if (issueCaptures)
+ issues = (issues || []).concat(
+ issueCaptures.slice(1).map((issue) => parseInt(issue))
+ )
+ })
+ if (!issues?.length) issues = undefined
+
+ const commitItems = extractItems(commit.body.trim(), { author, pr, issues })
+
+ if (!authors.find((a) => a.login === author.login)) authors.push(author)
+ items.push(...commitItems)
+ })
+
+ const changed = items.filter((i) => i.type === 'changed')
+ const fixed = items.filter((i) => i.type === 'fixed')
+ const added = items.filter((i) => i.type === 'added')
+
+ const lastVersion = parseVersion(lastTag)
+ let version: Version
+ if (items.find((i) => i.breaking)) {
+ version = { major: lastVersion.major + 1, minor: 0, patch: 0 }
+ } else if (changed.length || added.length) {
+ version = {
+ major: lastVersion.major,
+ minor: lastVersion.minor + 1,
+ patch: 0,
+ }
+ } else {
+ version = {
+ major: lastVersion.major,
+ minor: lastVersion.minor,
+ patch: lastVersion.patch + 1,
+ }
+ }
+
+ return { version, changed, fixed, added, authors }
+}
+
+function parseVersion(tag: string): Version {
+ const captures = tag.match(/v(\d+)\.(\d+).(\d+)/)
+ if (!captures) throw new Error(`Can't parse version from tag "${tag}"`)
+ return {
+ major: parseInt(captures[1]),
+ minor: parseInt(captures[2]),
+ patch: parseInt(captures[3]),
+ }
+}
+
+function extractItems(
+ message: string,
+ {
+ author,
+ pr,
+ issues,
+ }: { author: Author; pr: number | undefined; issues: number[] | undefined }
+): ChangelogItem[] {
+ const item = ({
+ type,
+ message,
+ }: {
+ type: ChangelogType
+ message: string
+ }) => {
+ const issuesCaptures = message.match(issuesRegExp)
+ const messageIssues = issuesCaptures?.reduce<number[]>(
+ (acc, capture) =>
+ acc.concat(
+ (capture.match(/#\d+/g) || []).map((str) => parseInt(str.slice(1)))
+ ),
+ []
+ )
+ const itemIssues = messageIssues?.length
+ ? uniq(messageIssues.concat(issues || []))
+ : issues
+
+ const breaking = /^breaking:\s?/i.test(message)
+
+ return {
+ type,
+ author,
+ message: message.replace(issuesRegExp, ''),
+ pr,
+ issues: itemIssues,
+ breaking,
+ }
+ }
+
+ switch (true) {
+ // Fixed
+ case fixedSentenceRegExp.test(message): {
+ const captures = message.match(fixedSentenceRegExp)!
+ return [item({ type: 'fixed', message: captures[2] })]
+ }
+ case fixedOneLinerRegExp.test(message): {
+ const captures = message.match(fixedOneLinerRegExp)!
+ return [item({ type: 'fixed', message: captures[1] })]
+ }
+
+ // Changed
+ case changedSentenceRegExp.test(message): {
+ const captures = message.match(changedSentenceRegExp)!
+ return [item({ type: 'changed', message: captures[2] })]
+ }
+ case changedOneLinerRegExp.test(message): {
+ const captures = message.match(changedOneLinerRegExp)!
+ return [item({ type: 'changed', message: captures[1] })]
+ }
+
+ // Added
+ case addedSentenceRegExp.test(message): {
+ const captures = message.match(addedSentenceRegExp)!
+ return [item({ type: 'added', message: captures[2] })]
+ }
+ case addedOneLinerRegExp.test(message): {
+ const captures = message.match(addedOneLinerRegExp)!
+ return [item({ type: 'added', message: captures[1] })]
+ }
+
+ default:
+ return []
+ }
+}
+
+function renderVersion({ major, minor, patch }: Version) {
+ return `v${major}.${minor}.${patch}`
+}
+
+function renderAuthors(authors: Author[]) {
+ if (authors.length > 1) {
+ return (
+ authors
+ .slice(0, authors.length - 1)
+ .map(renderAuthor)
+ .join(', ') +
+ ' and ' +
+ renderAuthor(last(authors)!)
+ )
+ } else {
+ return renderAuthor(authors[0])
+ }
+}
+
+function renderAuthor(author: Author) {
+ return `[${author.name}](http://github.com/${author.login})`
+}
+
+function renderItem(item: ChangelogItem) {
+ const message = item.pr
+ ? `[${item.message}](https://github.com/date-fns/date-fns/pull/${item.pr})`
+ : item.message
+ const issues = item.issues
+ ? ` (${item.issues
+ .map((i) => `[#${i}](https://github.com/date-fns/date-fns/issues/${i})`)
+ .join(', ')})`
+ : ''
+
+ return `- ${message}${issues}`
+}
+
+type ChangelogType = 'changed' | 'fixed' | 'added'
+
+interface Version {
+ major: number
+ minor: number
+ patch: number
+}
+
+interface ChangelogItem {
+ type: ChangelogType
+ author: Author
+ message: string
+ pr?: number
+ issues?: number[]
+ breaking: boolean
+}
+
+interface ChangelogVersion {
+ version: Version
+ changed: ChangelogItem[]
+ fixed: ChangelogItem[]
+ added: ChangelogItem[]
+ authors: Author[]
+}
+
+interface Author {
+ login: string
+ name: string
+ email: string
+}
+
+var closesRegExp = /(?:closes|fixes) #(\d+)/
+
+var issuesRegExp = /\s?\(((?:#\d+(?:,\s?)?)+)\)/g
+
+var thanksOptions = [
+ (authors: string) => `Kudos to ${authors} for working on the release.`,
+ (authors: string) => `Thanks to ${authors} for working on the release.`,
+ (authors: string) => `This release is brought to you by ${authors}.`,
+ (authors: string) => `On this release worked ${authors}.`,
+]
+
+var fixedSentenceRegExp = /^(breaking:\s?)?(fixed\s.+)/i
+var fixedOneLinerRegExp = /^fixed:\s(.+)/i
+
+var changedSentenceRegExp = /^(breaking:\s?)?(changed\s.+)/i
+var changedOneLinerRegExp = /^changed:\s(.+)/i
+
+var addedSentenceRegExp = /^(breaking:\s?)?(added\s.+)/i
+var addedOneLinerRegExp = /^added:\s(.+)/i
diff --git a/date-fns/scripts/release/release.sh b/date-fns/scripts/release/release.sh
new file mode 100755
index 0000000..b7e53a7
--- /dev/null
+++ b/date-fns/scripts/release/release.sh
@@ -0,0 +1,45 @@
+#!/bin/bash
+
+# The script builds the package and publishes it to npm.
+#
+# It's the entry point for the release process.
+
+set -e
+
+if [ -z "${APP_ENV+x}" ];
+then
+ echo 'APP_ENV is unset; please set to staging or production'
+ exit 1
+fi
+
+# A pre-release is a version with a label i.e. v2.0.0-alpha.1
+if [[ "$VERSION" =~ ^v[0-9]+\.[0-9]+\.[0-9]+-.+$ ]]
+then
+ IS_PRE_RELEASE=true
+else
+ IS_PRE_RELEASE=false
+fi
+
+PACKAGE_PATH="$(pwd)/../../tmp/package"
+./scripts/release/writeVersion.js
+
+env PACKAGE_OUTPUT_PATH="$PACKAGE_PATH" ./scripts/build/package.sh
+
+# Right now, we do releases manually, but when we move to GitHub Actions we'll need this line:
+# echo "//registry.npmjs.org/:_authToken=$NPM_KEY" > ~/.npmrc
+cd "$PACKAGE_PATH" || exit 1
+if [ "$IS_PRE_RELEASE" = true ]
+then
+ npm publish --tag next
+else
+ npm publish
+fi
+cd - || exit
+
+./scripts/build/docs.js
+./scripts/release/updateFirebase.js
+# TODO: Reanimate it
+# if [ "$IS_PRE_RELEASE" = false ]
+# then
+# ./scripts/release/tweet.js
+# fi
diff --git a/date-fns/scripts/release/tweet.js b/date-fns/scripts/release/tweet.js
new file mode 100755
index 0000000..8947712
--- /dev/null
+++ b/date-fns/scripts/release/tweet.js
@@ -0,0 +1,36 @@
+#!/usr/bin/env node
+
+/**
+ * @file
+ * The script posts a tweet as @date_fns about the release
+ * with a link to the change log entry.
+ *
+ * It's a part of the release process.
+ */
+
+const fetch = require('node-fetch')
+const { execSync } = require('child_process')
+const formatDate = require('../../src/format')
+
+const zapierHookURL = `https://zapier.com/hooks/catch/${process.env.ZAPIER_TWEET_RELEASE_HOOK_ID}/`
+const tag =
+ process.env.VERSION ||
+ execSync('git describe --abbrev=0 --tags').toString().trim()
+const formattedDate = formatDate(new Date(), 'YYYY-MM-DD')
+const changelogUrl = `https://date-fns.org/docs/Change-Log#${tag.replace(
+ /^v/,
+ ''
+)}-${formattedDate}`
+
+console.log('Posting release tweet...')
+
+fetch(zapierHookURL, {
+ method: 'POST',
+ body: JSON.stringify({
+ tweet: `date-fns ${tag} is published! See changelog: ${changelogUrl}.`,
+ }),
+ headers: { 'Content-Type': 'application/json' },
+}).catch((err) => {
+ console.error(err)
+ process.exit(1)
+})
diff --git a/date-fns/scripts/release/updateFirebase.js b/date-fns/scripts/release/updateFirebase.js
new file mode 100755
index 0000000..ee53561
--- /dev/null
+++ b/date-fns/scripts/release/updateFirebase.js
@@ -0,0 +1,116 @@
+#!/usr/bin/env node
+
+/**
+ * @file
+ * The script generates the site data (docs, versions, etc.)
+ * and writes it to Firebase.
+ *
+ * It's a part of the release process.
+ */
+
+const path = require('path')
+const fs = require('fs')
+const childProcess = require('child_process')
+const listLocales = require('../_lib/listLocales')
+const countries = require('world-countries')
+const publishVersion = require('@date-fns/date-fns-scripts').publishVersion
+const { version } = require('../../package.json')
+
+const prereleaseRegExp = /(test|alpha|beta|rc)/
+
+const features = {
+ docs: true,
+ i18n: true,
+ benchmarks: true,
+ camelCase: true,
+ fp: true,
+ esm: true,
+ utc: false,
+}
+
+function generateLocale(tag, locale) {
+ const { code, fullPath } = locale
+ const source = fs.readFileSync(path.join(process.cwd(), fullPath)).toString()
+ const languageName = source.match(/\* @language (.*)/)[1]
+ const iso639dash2 = source.match(/\* @iso-639-2 (.*)/)[1]
+
+ if (iso639dash2) {
+ return {
+ code,
+ url: `https://github.com/date-fns/date-fns/tree/${tag}/src/locale/${code}`,
+ name: languageName,
+ countries: countries.reduce((acc, country) => {
+ if (Object.keys(country.languages).includes(iso639dash2)) {
+ return acc.concat(country.cca2)
+ } else {
+ return acc
+ }
+ }, []),
+ }
+ } else {
+ return null
+ }
+}
+
+function generateVersionData() {
+ const tag = `v${version}`
+
+ const commit = childProcess
+ .execSync('git rev-parse HEAD')
+ .toString()
+ .replace(/[\s\n]/g, '')
+
+ const date =
+ parseInt(
+ childProcess
+ .execSync('git show -s --format=%ct')
+ .toString()
+ .replace(/[\s\n]/g, ''),
+ 10
+ ) * 1000
+
+ const docsJSON = fs
+ .readFileSync(path.resolve(process.cwd(), 'tmp/docs.json'))
+ .toString()
+ const docs = JSON.parse(docsJSON)
+ const docsCategories = Object.keys(docs)
+ const docsPages = docsCategories.reduce(
+ (acc, category) => acc.concat(docs[category]),
+ []
+ )
+ const docsKeys = docsPages.map(
+ ({ urlId, category, title, description }, index) => ({
+ urlId,
+ category,
+ title,
+ description,
+ key: index,
+ })
+ )
+
+ const locales = listLocales().map(generateLocale.bind(null, tag))
+
+ return {
+ tag,
+ date,
+ prerelease: Boolean(prereleaseRegExp.exec(tag)),
+ commit,
+ docsPages,
+ docsKeys,
+ docsCategories,
+ locales,
+ features,
+ }
+}
+
+const data = generateVersionData()
+
+publishVersion(data)
+ .then(() => {
+ console.log('Done!')
+ process.exit(0)
+ })
+ .catch((err) => {
+ console.log(err)
+ process.exit(1)
+ })
diff --git a/date-fns/scripts/release/writeVersion.js b/date-fns/scripts/release/writeVersion.js
new file mode 100755
index 0000000..c796d18
--- /dev/null
+++ b/date-fns/scripts/release/writeVersion.js
@@ -0,0 +1,35 @@
+#!/usr/bin/env node
+
+/**
+ * @file
+ * The script extracts the actual package version from $VERSION
+ * and writes it to package.json
+ *
+ * It's a part of the release process.
+ */
+
+const path = require('path')
+const fs = require('fs')
+const beautify = require('js-beautify')['js_beautify']
+
+// Extract version from VERSION
+let version
+try {
+ ;[, version] = process.env.VERSION.match(/v(.+)/)
+} catch (err) {
+ console.error(`Can not extract version from VERSION (${process.env.VERSION})`)
+ console.error(err)
+ process.exit(1)
+}
+
+console.log(`Version: ${version}`)
+
+console.log('Writing to package.json...')
+// Write package.json with the version equal to the version encoded in the tag name
+const packagePath = path.join(process.cwd(), 'package.json')
+const packageContent = JSON.parse(fs.readFileSync(packagePath).toString())
+Object.assign(packageContent, { version })
+const newPackageContentStr = beautify(JSON.stringify(packageContent), {
+ indent_size: 2,
+})
+fs.writeFileSync(packagePath, `${newPackageContentStr}\n`)
diff --git a/date-fns/scripts/test/ci.sh b/date-fns/scripts/test/ci.sh
new file mode 100755
index 0000000..6ec5bfc
--- /dev/null
+++ b/date-fns/scripts/test/ci.sh
@@ -0,0 +1,50 @@
+#!/bin/bash
+
+# The script unifies the test scripts.
+#
+# It's used as the main CI script.
+
+set -ex
+
+export PATH="$(yarn bin):$PATH"
+
+function prebuild {
+ env BUILD_TESTS=true webpack-cli --config ./config/webpack.js
+}
+
+if [ "$TEST_SUITE" == "main" ]
+then
+ yarn lint
+ yarn lint-types
+ yarn locale-snapshots test
+ ./scripts/test/smoke.sh
+
+ yarn test --single-run
+
+ ./scripts/test/dst.sh
+ ./scripts/test/formatISO.sh
+ ./scripts/test/formatRFC3339.sh
+
+ prebuild
+ ./scripts/test/tz.sh
+
+elif [ "$TEST_SUITE" == "tz" ]
+then
+ prebuild
+ ./scripts/test/tzExtended.sh
+
+elif [ "$TEST_SUITE" == "cross_browser" ] && [ "$SAUCE_USERNAME" != "" ]
+then
+ yarn test-cross-browser
+ env TEST_CROSS_BROWSER=true yarn test --single-run
+
+elif [ "$TEST_SUITE" == "node" ]
+then
+ ./scripts/test/node.sh
+
+else
+ printf "\n\033[0;31m" "UNKNOWN SUITE!" "\033[0m\n"
+ exit 1
+fi
+
+./scripts/test/countTests.sh
diff --git a/date-fns/scripts/test/countTests.sh b/date-fns/scripts/test/countTests.sh
new file mode 100755
index 0000000..3db4daa
--- /dev/null
+++ b/date-fns/scripts/test/countTests.sh
@@ -0,0 +1,14 @@
+#!/bin/bash
+
+# The script prints the total number of the examples in the test process.
+#
+# It's a part of the test process
+#
+# TODO: Write stats to Firebase and display the stats at the site.
+
+count=$( cat tmp/tests_count.txt 2> /dev/null || echo 0 )
+
+printf "\n%bSUITE: %s%b\n" "\x1B[32m" "$TEST_SUITE" "\x1B[0m"
+printf "\n%bTOTAL TESTS COMPLETED: %s%b\n" "\x1B[32m" "$count" "\x1B[0m"
+
+rm -f tmp/tests_count.txt
diff --git a/date-fns/scripts/test/coverageReport.sh b/date-fns/scripts/test/coverageReport.sh
new file mode 100755
index 0000000..0e7e6a3
--- /dev/null
+++ b/date-fns/scripts/test/coverageReport.sh
@@ -0,0 +1,12 @@
+#!/bin/bash
+
+# The script generates coverage report and uploads it to Coveralls.
+#
+# It's a part of the test process
+
+set -ex
+
+export PATH="$(yarn bin):$PATH"
+
+env COVERAGE_REPORT=true yarn test --single-run
+cat ./coverage/lcov.info | coveralls
diff --git a/date-fns/scripts/test/dst.sh b/date-fns/scripts/test/dst.sh
new file mode 100755
index 0000000..5e645b9
--- /dev/null
+++ b/date-fns/scripts/test/dst.sh
@@ -0,0 +1,18 @@
+#!/bin/bash
+
+# The script runs the DST tests.
+#
+# It's a part of the test process.
+
+set -ex
+
+export PATH="$(yarn bin):$PATH"
+export NODE_ENV=test
+
+env TZ=America/Sao_Paulo babel-node --extensions .ts,.js ./test/dst/parseISO/basic.js
+env TZ=Australia/Sydney babel-node --extensions .ts,.js ./test/dst/parseISO/sydney.js
+env TZ=Pacific/Apia babel-node --extensions .ts,.js ./test/dst/parseISO/samoa.js
+env TZ=Asia/Damascus babel-node --extensions .ts,.js ./test/dst/eachDayOfInterval/basic.js
+env TZ=America/Santiago babel-node --extensions .ts,.js ./test/dst/addBusinessDays/basic.js
+env TZ=Australia/Melbourne ts-node ./test/dst/formatDistanceStrict/melbourne.ts
+env TZ=Africa/Cairo ts-node ./test/dst/formatDistanceStrict/cairo.ts \ No newline at end of file
diff --git a/date-fns/scripts/test/formatISO.sh b/date-fns/scripts/test/formatISO.sh
new file mode 100755
index 0000000..28fc09e
--- /dev/null
+++ b/date-fns/scripts/test/formatISO.sh
@@ -0,0 +1,12 @@
+#!/bin/bash
+
+# The script runs formatISO in a non%60 timezone offset
+#
+# It's a part of the test process.
+
+set -ex
+
+export PATH="$(yarn bin):$PATH"
+export NODE_ENV=test
+
+env TZ=Asia/Kolkata babel-node --extensions .ts,.js ./test/formatISO/india.js
diff --git a/date-fns/scripts/test/formatRFC3339.sh b/date-fns/scripts/test/formatRFC3339.sh
new file mode 100755
index 0000000..df8b4cf
--- /dev/null
+++ b/date-fns/scripts/test/formatRFC3339.sh
@@ -0,0 +1,17 @@
+#!/bin/bash
+
+# The script runs formatRFC3339 in a non%60 timezone offset
+#
+# It's a part of the test process.
+
+set -ex
+
+export PATH="$(yarn bin):$PATH"
+export NODE_ENV=test
+
+env TZ=Asia/Kolkata babel-node --extensions .ts,.js ./test/formatRFC3339/india.js
+env TZ=America/St_Johns babel-node --extensions .ts,.js ./test/formatRFC3339/newfoundland.js
+env TZ=Australia/Eucla babel-node --extensions .ts,.js ./test/formatRFC3339/australia.js
+env TZ=Pacific/Chatham babel-node --extensions .ts,.js ./test/formatRFC3339/newzealand.js
+env TZ=Europe/Warsaw babel-node --extensions .ts,.js ./test/formatRFC3339/poland.js
+
diff --git a/date-fns/scripts/test/node.sh b/date-fns/scripts/test/node.sh
new file mode 100755
index 0000000..182b72e
--- /dev/null
+++ b/date-fns/scripts/test/node.sh
@@ -0,0 +1,19 @@
+#!/bin/bash
+
+# The script runs the test suite using Jest in different Node.js versions.
+#
+# It's a part of the test process.
+
+export PATH="$(yarn bin):$PATH"
+
+# Update and source nvm
+curl -o ~/.nvm/nvm.sh https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/nvm.sh
+source ~/.nvm/nvm.sh
+
+for version in 8 9 10 11 12
+do
+ echo "Running tests using Node.js $version"
+ nvm install $version
+ npm rebuild
+ jest || exit 1
+done \ No newline at end of file
diff --git a/date-fns/scripts/test/smoke.sh b/date-fns/scripts/test/smoke.sh
new file mode 100755
index 0000000..b718edd
--- /dev/null
+++ b/date-fns/scripts/test/smoke.sh
@@ -0,0 +1,23 @@
+#!/bin/bash
+
+# The script runs the smoke test against every supported builder configuration.
+#
+# It's a part of the test process.
+
+dir="$(pwd)/examples"
+
+ok_message="\n\033[0;32m✓ OK!\033[0m\n"
+error_message="\n\033[0;31m✗ Something went wrong!\033[0m\n"
+
+cd "$dir" || exit 1
+
+for example in `ls`
+do
+ printf "\n\033[0;32mTesting $example...\033[0m\n\n"
+ cd "$example" || exit 1
+ yarn
+ yarn build
+ yarn test || (printf "$error_message" && exit 1) || exit 1
+ cd - || exit 1
+ printf "$ok_message"
+done
diff --git a/date-fns/scripts/test/tz.sh b/date-fns/scripts/test/tz.sh
new file mode 100755
index 0000000..90d1bd3
--- /dev/null
+++ b/date-fns/scripts/test/tz.sh
@@ -0,0 +1,20 @@
+#!/bin/bash
+
+# The script runs the test suite against every possible time zone offset.
+#
+# It's a part of the test process.
+
+printf "\n"
+
+for tz in UTC-12:00 UTC-11:00 UTC-10:00 UTC-09:30 UTC-09:00 \
+ UTC-08:00 UTC-07:00 UTC-06:00 UTC-05:00 UTC-04:30 UTC-04:00 \
+ UTC-03:30 UTC-03:00 UTC-02:00 UTC-01:00 UTC UTC+01:00 UTC+02:00 \
+ UTC+03:00 UTC+03:30 UTC+04:00 UTC+04:30 UTC+05:00 UTC+05:30 \
+ UTC+05:45 UTC+06:00 UTC+06:30 UTC+07:00 UTC+08:00 UTC+08:30 \
+ UTC+08:45 UTC+09:00 UTC+09:30 UTC+10:00 UTC+10:30 UTC+11:00 \
+ UTC+11:30 UTC+12:00 UTC+12:45 UTC+13:00 UTC+14:00
+do
+ printf "Run test in time zone $tz\n"
+ env TEST_TZ=true USE_STATIC_TESTS=true TZ=$tz yarn test --single-run \
+ &>tmp/last_test_output.txt || (cat tmp/last_test_output.txt && exit 1) || exit 1
+done
diff --git a/date-fns/scripts/test/tzExtended.sh b/date-fns/scripts/test/tzExtended.sh
new file mode 100755
index 0000000..4a20e63
--- /dev/null
+++ b/date-fns/scripts/test/tzExtended.sh
@@ -0,0 +1,368 @@
+#!/bin/bash
+
+# The script runs the test suite against every time zone
+# in the IANA database.
+#
+# It's a part of the test process.
+
+printf "\n"
+
+tz_array=(
+ "Africa/Abidjan"
+ "Africa/Accra"
+ "Africa/Algiers"
+ "Africa/Bissau"
+ "Africa/Cairo"
+ "Africa/Casablanca"
+ "Africa/Ceuta"
+ "Africa/El_Aaiun"
+ "Africa/Johannesburg"
+ "Africa/Khartoum"
+ "Africa/Lagos"
+ "Africa/Maputo"
+ "Africa/Monrovia"
+ "Africa/Nairobi"
+ "Africa/Ndjamena"
+ "Africa/Tripoli"
+ "Africa/Tunis"
+ "Africa/Windhoek"
+ "America/Adak"
+ "America/Anchorage"
+ "America/Araguaina"
+ "America/Argentina/Buenos_Aires"
+ "America/Argentina/Catamarca"
+ "America/Argentina/Cordoba"
+ "America/Argentina/Jujuy"
+ "America/Argentina/La_Rioja"
+ "America/Argentina/Mendoza"
+ "America/Argentina/Rio_Gallegos"
+ "America/Argentina/Salta"
+ "America/Argentina/San_Juan"
+ "America/Argentina/San_Luis"
+ "America/Argentina/Tucuman"
+ "America/Argentina/Ushuaia"
+ "America/Asuncion"
+ "America/Atikokan"
+ "America/Bahia"
+ "America/Bahia_Banderas"
+ "America/Barbados"
+ "America/Belem"
+ "America/Belize"
+ "America/Blanc-Sablon"
+ "America/Boa_Vista"
+ "America/Bogota"
+ "America/Boise"
+ "America/Cambridge_Bay"
+ "America/Campo_Grande"
+ "America/Cancun"
+ "America/Caracas"
+ "America/Cayenne"
+ "America/Cayman"
+ "America/Chicago"
+ "America/Chihuahua"
+ "America/Costa_Rica"
+ "America/Creston"
+ "America/Cuiaba"
+ "America/Curacao"
+ "America/Danmarkshavn"
+ "America/Dawson"
+ "America/Dawson_Creek"
+ "America/Denver"
+ "America/Detroit"
+ "America/Edmonton"
+ "America/Eirunepe"
+ "America/El_Salvador"
+ "America/Fortaleza"
+ "America/Glace_Bay"
+ "America/Godthab"
+ "America/Goose_Bay"
+ "America/Grand_Turk"
+ "America/Guatemala"
+ "America/Guayaquil"
+ "America/Guyana"
+ "America/Halifax"
+ "America/Havana"
+ "America/Hermosillo"
+ "America/Indiana/Indianapolis"
+ "America/Indiana/Knox"
+ "America/Indiana/Marengo"
+ "America/Indiana/Petersburg"
+ "America/Indiana/Tell_City"
+ "America/Indiana/Vevay"
+ "America/Indiana/Vincennes"
+ "America/Indiana/Winamac"
+ "America/Inuvik"
+ "America/Iqaluit"
+ "America/Jamaica"
+ "America/Juneau"
+ "America/Kentucky/Louisville"
+ "America/Kentucky/Monticello"
+ "America/La_Paz"
+ "America/Lima"
+ "America/Los_Angeles"
+ "America/Maceio"
+ "America/Managua"
+ "America/Manaus"
+ "America/Martinique"
+ "America/Matamoros"
+ "America/Mazatlan"
+ "America/Menominee"
+ "America/Merida"
+ "America/Metlakatla"
+ "America/Mexico_City"
+ "America/Miquelon"
+ "America/Moncton"
+ "America/Monterrey"
+ "America/Montevideo"
+ "America/Nassau"
+ "America/New_York"
+ "America/Nipigon"
+ "America/Nome"
+ "America/Noronha"
+ "America/North_Dakota/Beulah"
+ "America/North_Dakota/Center"
+ "America/North_Dakota/New_Salem"
+ "America/Ojinaga"
+ "America/Panama"
+ "America/Pangnirtung"
+ "America/Paramaribo"
+ "America/Phoenix"
+ "America/Port-au-Prince"
+ "America/Port_of_Spain"
+ "America/Porto_Velho"
+ "America/Puerto_Rico"
+ "America/Rainy_River"
+ "America/Rankin_Inlet"
+ "America/Recife"
+ "America/Regina"
+ "America/Resolute"
+ "America/Rio_Branco"
+ "America/Santa_Isabel"
+ "America/Santarem"
+ "America/Santiago"
+ "America/Santo_Domingo"
+ "America/Sao_Paulo"
+ "America/Scoresbysund"
+ "America/Sitka"
+ "America/St_Johns"
+ "America/Swift_Current"
+ "America/Tegucigalpa"
+ "America/Thule"
+ "America/Thunder_Bay"
+ "America/Tijuana"
+ "America/Toronto"
+ "America/Vancouver"
+ "America/Whitehorse"
+ "America/Winnipeg"
+ "America/Yakutat"
+ "America/Yellowknife"
+ "Antarctica/Casey"
+ "Antarctica/Davis"
+ "Antarctica/DumontDUrville"
+ "Antarctica/Macquarie"
+ "Antarctica/Mawson"
+ "Antarctica/Palmer"
+ "Antarctica/Rothera"
+ "Antarctica/Syowa"
+ "Antarctica/Troll"
+ "Antarctica/Vostok"
+ "Asia/Almaty"
+ "Asia/Amman"
+ "Asia/Anadyr"
+ "Asia/Aqtau"
+ "Asia/Aqtobe"
+ "Asia/Ashgabat"
+ "Asia/Baghdad"
+ "Asia/Baku"
+ "Asia/Bangkok"
+ "Asia/Beirut"
+ "Asia/Bishkek"
+ "Asia/Brunei"
+ "Asia/Chita"
+ "Asia/Choibalsan"
+ "Asia/Colombo"
+ "Asia/Damascus"
+ "Asia/Dhaka"
+ "Asia/Dili"
+ "Asia/Dubai"
+ "Asia/Dushanbe"
+ "Asia/Gaza"
+ "Asia/Hebron"
+ "Asia/Ho_Chi_Minh"
+ "Asia/Hong_Kong"
+ "Asia/Hovd"
+ "Asia/Irkutsk"
+ "Asia/Jakarta"
+ "Asia/Jayapura"
+ "Asia/Jerusalem"
+ "Asia/Kabul"
+ "Asia/Kamchatka"
+ "Asia/Karachi"
+ "Asia/Kathmandu"
+ "Asia/Khandyga"
+ "Asia/Kolkata"
+ "Asia/Krasnoyarsk"
+ "Asia/Kuala_Lumpur"
+ "Asia/Kuching"
+ "Asia/Macau"
+ "Asia/Magadan"
+ "Asia/Makassar"
+ "Asia/Manila"
+ "Asia/Nicosia"
+ "Asia/Novokuznetsk"
+ "Asia/Novosibirsk"
+ "Asia/Omsk"
+ "Asia/Oral"
+ "Asia/Pontianak"
+ "Asia/Pyongyang"
+ "Asia/Qatar"
+ "Asia/Qyzylorda"
+ "Asia/Rangoon"
+ "Asia/Riyadh"
+ "Asia/Sakhalin"
+ "Asia/Samarkand"
+ "Asia/Seoul"
+ "Asia/Shanghai"
+ "Asia/Singapore"
+ "Asia/Srednekolymsk"
+ "Asia/Taipei"
+ "Asia/Tashkent"
+ "Asia/Tbilisi"
+ "Asia/Tehran"
+ "Asia/Thimphu"
+ "Asia/Tokyo"
+ "Asia/Ulaanbaatar"
+ "Asia/Urumqi"
+ "Asia/Ust-Nera"
+ "Asia/Vladivostok"
+ "Asia/Yakutsk"
+ "Asia/Yekaterinburg"
+ "Asia/Yerevan"
+ "Atlantic/Azores"
+ "Atlantic/Bermuda"
+ "Atlantic/Canary"
+ "Atlantic/Cape_Verde"
+ "Atlantic/Faroe"
+ "Atlantic/Madeira"
+ "Atlantic/Reykjavik"
+ "Atlantic/South_Georgia"
+ "Atlantic/Stanley"
+ "Australia/Adelaide"
+ "Australia/Brisbane"
+ "Australia/Broken_Hill"
+ "Australia/Currie"
+ "Australia/Darwin"
+ "Australia/Eucla"
+ "Australia/Hobart"
+ "Australia/Lindeman"
+ "Australia/Lord_Howe"
+ "Australia/Melbourne"
+ "Australia/Perth"
+ "Australia/Sydney"
+ "Europe/Amsterdam"
+ "Europe/Andorra"
+ "Europe/Athens"
+ "Europe/Belgrade"
+ "Europe/Berlin"
+ "Europe/Brussels"
+ "Europe/Bucharest"
+ "Europe/Budapest"
+ "Europe/Chisinau"
+ "Europe/Copenhagen"
+ "Europe/Dublin"
+ "Europe/Gibraltar"
+ "Europe/Helsinki"
+ "Europe/Istanbul"
+ "Europe/Kaliningrad"
+ "Europe/Kiev"
+ "Europe/Lisbon"
+ "Europe/London"
+ "Europe/Luxembourg"
+ "Europe/Madrid"
+ "Europe/Malta"
+ "Europe/Minsk"
+ "Europe/Monaco"
+ "Europe/Moscow"
+ "Europe/Oslo"
+ "Europe/Paris"
+ "Europe/Prague"
+ "Europe/Riga"
+ "Europe/Rome"
+ "Europe/Samara"
+ "Europe/Simferopol"
+ "Europe/Sofia"
+ "Europe/Stockholm"
+ "Europe/Tallinn"
+ "Europe/Tirane"
+ "Europe/Uzhgorod"
+ "Europe/Vienna"
+ "Europe/Vilnius"
+ "Europe/Volgograd"
+ "Europe/Warsaw"
+ "Europe/Zaporozhye"
+ "Europe/Zurich"
+ "Indian/Chagos"
+ "Indian/Christmas"
+ "Indian/Cocos"
+ "Indian/Kerguelen"
+ "Indian/Mahe"
+ "Indian/Maldives"
+ "Indian/Mauritius"
+ "Indian/Reunion"
+ "Pacific/Apia"
+ "Pacific/Auckland"
+ "Pacific/Bougainville"
+ "Pacific/Chatham"
+ "Pacific/Chuuk"
+ "Pacific/Easter"
+ "Pacific/Efate"
+ "Pacific/Enderbury"
+ "Pacific/Fakaofo"
+ "Pacific/Fiji"
+ "Pacific/Funafuti"
+ "Pacific/Galapagos"
+ "Pacific/Gambier"
+ "Pacific/Guadalcanal"
+ "Pacific/Guam"
+ "Pacific/Honolulu"
+ "Pacific/Kiritimati"
+ "Pacific/Kosrae"
+ "Pacific/Kwajalein"
+ "Pacific/Majuro"
+ "Pacific/Marquesas"
+ "Pacific/Nauru"
+ "Pacific/Niue"
+ "Pacific/Norfolk"
+ "Pacific/Noumea"
+ "Pacific/Pago_Pago"
+ "Pacific/Palau"
+ "Pacific/Pitcairn"
+ "Pacific/Pohnpei"
+ "Pacific/Port_Moresby"
+ "Pacific/Rarotonga"
+ "Pacific/Tahiti"
+ "Pacific/Tarawa"
+ "Pacific/Tongatapu"
+ "Pacific/Wake"
+ "Pacific/Wallis"
+)
+
+# Split array by max $TZ_LENGTH elements and take array with index $TZ_INDEX
+if [ "$TZ_LENGTH" != "" ] && [ "$TZ_INDEX" != "" ]
+then
+ tz_array_length="${#tz_array[@]}"
+
+ # divide $tz_array_length by $TZ_LENGTH and round up
+ tz_limit="$((($tz_array_length + $TZ_LENGTH - 1) / $TZ_LENGTH))"
+
+ tz_offset="$(($TZ_INDEX * $tz_limit))"
+
+ tz_array=("${tz_array[@]:$tz_offset:$tz_limit}")
+fi
+
+for tz in "${tz_array[@]}"
+do
+ printf "Run test in time zone $tz\n"
+ env TEST_TZ=true USE_STATIC_TESTS=true TZ=$tz yarn test --single-run \
+ &>tmp/last_test_output.txt || (cat tmp/last_test_output.txt && exit 1) || exit 1
+done
diff --git a/date-fns/src/_lib/addLeadingZeros/index.js b/date-fns/src/_lib/addLeadingZeros/index.js
new file mode 100644
index 0000000..62f812b
--- /dev/null
+++ b/date-fns/src/_lib/addLeadingZeros/index.js
@@ -0,0 +1,8 @@
+export default function addLeadingZeros(number, targetLength) {
+ var sign = number < 0 ? '-' : ''
+ var output = Math.abs(number).toString()
+ while (output.length < targetLength) {
+ output = '0' + output
+ }
+ return sign + output
+}
diff --git a/date-fns/src/_lib/assign/index.js b/date-fns/src/_lib/assign/index.js
new file mode 100644
index 0000000..6fd8782
--- /dev/null
+++ b/date-fns/src/_lib/assign/index.js
@@ -0,0 +1,17 @@
+export default function assign(target, dirtyObject) {
+ if (target == null) {
+ throw new TypeError(
+ 'assign requires that input parameter not be null or undefined'
+ )
+ }
+
+ dirtyObject = dirtyObject || {}
+
+ for (var property in dirtyObject) {
+ if (dirtyObject.hasOwnProperty(property)) {
+ target[property] = dirtyObject[property]
+ }
+ }
+
+ return target
+}
diff --git a/date-fns/src/_lib/assign/test.js b/date-fns/src/_lib/assign/test.js
new file mode 100644
index 0000000..629358f
--- /dev/null
+++ b/date-fns/src/_lib/assign/test.js
@@ -0,0 +1,30 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import assign from '.'
+
+describe('assign', function() {
+ it('assigns properties of the second argument to the first argument', function() {
+ var object = {}
+ assign(object, { a: 1, b: 2, c: 3 })
+ assert.deepEqual(object, { a: 1, b: 2, c: 3 })
+ })
+
+ it('the object passed as 2nd argument remains unchanged when the result is mutated', function() {
+ var object = { a: 1, b: 2, c: 3 }
+ var result = assign({}, object)
+ result.c = 4
+ assert.deepEqual(object, { a: 1, b: 2, c: 3 })
+ })
+
+ it('returns the first argument when the second argument is `undefined`', function() {
+ var original = { a: 1, b: 2, c: 3 }
+ var result = assign(original, undefined)
+ assert(original === result)
+ })
+
+ it('throws TypeError exception if the first argument is `undefined', function() {
+ assert.throws(assign.bind(null, undefined, { a: 1, b: 2, c: 3 }), TypeError)
+ })
+})
diff --git a/date-fns/src/_lib/cloneObject/index.js b/date-fns/src/_lib/cloneObject/index.js
new file mode 100644
index 0000000..34dd17b
--- /dev/null
+++ b/date-fns/src/_lib/cloneObject/index.js
@@ -0,0 +1,5 @@
+import assign from '../assign/index'
+
+export default function cloneObject(dirtyObject) {
+ return assign({}, dirtyObject)
+}
diff --git a/date-fns/src/_lib/cloneObject/test.js b/date-fns/src/_lib/cloneObject/test.js
new file mode 100644
index 0000000..96302bb
--- /dev/null
+++ b/date-fns/src/_lib/cloneObject/test.js
@@ -0,0 +1,31 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import cloneObject from '.'
+
+describe('cloneObject', function () {
+ it('makes a copy of an object', function () {
+ var result = cloneObject({a: 1, b: 2, c: 3})
+ assert.deepEqual(result, {a: 1, b: 2, c: 3})
+ })
+
+ it('the copy remains unchanged when the original is changed', function () {
+ var original = {a: 1, b: 2, c: 3}
+ var copy = cloneObject(original)
+ original.c = 4
+ assert.deepEqual(copy, {a: 1, b: 2, c: 3})
+ })
+
+ it('the original remains unchanged when the copy is changed', function () {
+ var original = {a: 1, b: 2, c: 3}
+ var copy = cloneObject(original)
+ copy.c = 4
+ assert.deepEqual(original, {a: 1, b: 2, c: 3})
+ })
+
+ it('returns an empty object when argument is `undefined`', function () {
+ var result = cloneObject(undefined)
+ assert.deepEqual(result, {})
+ })
+})
diff --git a/date-fns/src/_lib/format/formatters/index.js b/date-fns/src/_lib/format/formatters/index.js
new file mode 100644
index 0000000..4638060
--- /dev/null
+++ b/date-fns/src/_lib/format/formatters/index.js
@@ -0,0 +1,768 @@
+import lightFormatters from '../lightFormatters/index'
+import getUTCDayOfYear from '../../../_lib/getUTCDayOfYear/index'
+import getUTCISOWeek from '../../../_lib/getUTCISOWeek/index'
+import getUTCISOWeekYear from '../../../_lib/getUTCISOWeekYear/index'
+import getUTCWeek from '../../../_lib/getUTCWeek/index'
+import getUTCWeekYear from '../../../_lib/getUTCWeekYear/index'
+import addLeadingZeros from '../../addLeadingZeros/index'
+
+var dayPeriodEnum = {
+ am: 'am',
+ pm: 'pm',
+ midnight: 'midnight',
+ noon: 'noon',
+ morning: 'morning',
+ afternoon: 'afternoon',
+ evening: 'evening',
+ night: 'night'
+}
+
+/*
+ * | | Unit | | Unit |
+ * |-----|--------------------------------|-----|--------------------------------|
+ * | a | AM, PM | A* | Milliseconds in day |
+ * | b | AM, PM, noon, midnight | B | Flexible day period |
+ * | c | Stand-alone local day of week | C* | Localized hour w/ day period |
+ * | d | Day of month | D | Day of year |
+ * | e | Local day of week | E | Day of week |
+ * | f | | F* | Day of week in month |
+ * | g* | Modified Julian day | G | Era |
+ * | h | Hour [1-12] | H | Hour [0-23] |
+ * | i! | ISO day of week | I! | ISO week of year |
+ * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |
+ * | k | Hour [1-24] | K | Hour [0-11] |
+ * | l* | (deprecated) | L | Stand-alone month |
+ * | m | Minute | M | Month |
+ * | n | | N | |
+ * | o! | Ordinal number modifier | O | Timezone (GMT) |
+ * | p! | Long localized time | P! | Long localized date |
+ * | q | Stand-alone quarter | Q | Quarter |
+ * | r* | Related Gregorian year | R! | ISO week-numbering year |
+ * | s | Second | S | Fraction of second |
+ * | t! | Seconds timestamp | T! | Milliseconds timestamp |
+ * | u | Extended year | U* | Cyclic year |
+ * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |
+ * | w | Local week of year | W* | Week of month |
+ * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |
+ * | y | Year (abs) | Y | Local week-numbering year |
+ * | z | Timezone (specific non-locat.) | Z* | Timezone (aliases) |
+ *
+ * Letters marked by * are not implemented but reserved by Unicode standard.
+ *
+ * Letters marked by ! are non-standard, but implemented by date-fns:
+ * - `o` modifies the previous token to turn it into an ordinal (see `format` docs)
+ * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,
+ * i.e. 7 for Sunday, 1 for Monday, etc.
+ * - `I` is ISO week of year, as opposed to `w` which is local week of year.
+ * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.
+ * `R` is supposed to be used in conjunction with `I` and `i`
+ * for universal ISO week-numbering date, whereas
+ * `Y` is supposed to be used in conjunction with `w` and `e`
+ * for week-numbering date specific to the locale.
+ * - `P` is long localized date format
+ * - `p` is long localized time format
+ */
+
+var formatters = {
+ // Era
+ G: function(date, token, localize) {
+ var era = date.getUTCFullYear() > 0 ? 1 : 0
+ switch (token) {
+ // AD, BC
+ case 'G':
+ case 'GG':
+ case 'GGG':
+ return localize.era(era, { width: 'abbreviated' })
+ // A, B
+ case 'GGGGG':
+ return localize.era(era, { width: 'narrow' })
+ // Anno Domini, Before Christ
+ case 'GGGG':
+ default:
+ return localize.era(era, { width: 'wide' })
+ }
+ },
+
+ // Year
+ y: function(date, token, localize) {
+ // Ordinal number
+ if (token === 'yo') {
+ var signedYear = date.getUTCFullYear()
+ // Returns 1 for 1 BC (which is year 0 in JavaScript)
+ var year = signedYear > 0 ? signedYear : 1 - signedYear
+ return localize.ordinalNumber(year, { unit: 'year' })
+ }
+
+ return lightFormatters.y(date, token)
+ },
+
+ // Local week-numbering year
+ Y: function(date, token, localize, options) {
+ var signedWeekYear = getUTCWeekYear(date, options)
+ // Returns 1 for 1 BC (which is year 0 in JavaScript)
+ var weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear
+
+ // Two digit year
+ if (token === 'YY') {
+ var twoDigitYear = weekYear % 100
+ return addLeadingZeros(twoDigitYear, 2)
+ }
+
+ // Ordinal number
+ if (token === 'Yo') {
+ return localize.ordinalNumber(weekYear, { unit: 'year' })
+ }
+
+ // Padding
+ return addLeadingZeros(weekYear, token.length)
+ },
+
+ // ISO week-numbering year
+ R: function(date, token) {
+ var isoWeekYear = getUTCISOWeekYear(date)
+
+ // Padding
+ return addLeadingZeros(isoWeekYear, token.length)
+ },
+
+ // Extended year. This is a single number designating the year of this calendar system.
+ // The main difference between `y` and `u` localizers are B.C. years:
+ // | Year | `y` | `u` |
+ // |------|-----|-----|
+ // | AC 1 | 1 | 1 |
+ // | BC 1 | 1 | 0 |
+ // | BC 2 | 2 | -1 |
+ // Also `yy` always returns the last two digits of a year,
+ // while `uu` pads single digit years to 2 characters and returns other years unchanged.
+ u: function(date, token) {
+ var year = date.getUTCFullYear()
+ return addLeadingZeros(year, token.length)
+ },
+
+ // Quarter
+ Q: function(date, token, localize) {
+ var quarter = Math.ceil((date.getUTCMonth() + 1) / 3)
+ switch (token) {
+ // 1, 2, 3, 4
+ case 'Q':
+ return String(quarter)
+ // 01, 02, 03, 04
+ case 'QQ':
+ return addLeadingZeros(quarter, 2)
+ // 1st, 2nd, 3rd, 4th
+ case 'Qo':
+ return localize.ordinalNumber(quarter, { unit: 'quarter' })
+ // Q1, Q2, Q3, Q4
+ case 'QQQ':
+ return localize.quarter(quarter, {
+ width: 'abbreviated',
+ context: 'formatting'
+ })
+ // 1, 2, 3, 4 (narrow quarter; could be not numerical)
+ case 'QQQQQ':
+ return localize.quarter(quarter, {
+ width: 'narrow',
+ context: 'formatting'
+ })
+ // 1st quarter, 2nd quarter, ...
+ case 'QQQQ':
+ default:
+ return localize.quarter(quarter, {
+ width: 'wide',
+ context: 'formatting'
+ })
+ }
+ },
+
+ // Stand-alone quarter
+ q: function(date, token, localize) {
+ var quarter = Math.ceil((date.getUTCMonth() + 1) / 3)
+ switch (token) {
+ // 1, 2, 3, 4
+ case 'q':
+ return String(quarter)
+ // 01, 02, 03, 04
+ case 'qq':
+ return addLeadingZeros(quarter, 2)
+ // 1st, 2nd, 3rd, 4th
+ case 'qo':
+ return localize.ordinalNumber(quarter, { unit: 'quarter' })
+ // Q1, Q2, Q3, Q4
+ case 'qqq':
+ return localize.quarter(quarter, {
+ width: 'abbreviated',
+ context: 'standalone'
+ })
+ // 1, 2, 3, 4 (narrow quarter; could be not numerical)
+ case 'qqqqq':
+ return localize.quarter(quarter, {
+ width: 'narrow',
+ context: 'standalone'
+ })
+ // 1st quarter, 2nd quarter, ...
+ case 'qqqq':
+ default:
+ return localize.quarter(quarter, {
+ width: 'wide',
+ context: 'standalone'
+ })
+ }
+ },
+
+ // Month
+ M: function(date, token, localize) {
+ var month = date.getUTCMonth()
+ switch (token) {
+ case 'M':
+ case 'MM':
+ return lightFormatters.M(date, token)
+ // 1st, 2nd, ..., 12th
+ case 'Mo':
+ return localize.ordinalNumber(month + 1, { unit: 'month' })
+ // Jan, Feb, ..., Dec
+ case 'MMM':
+ return localize.month(month, {
+ width: 'abbreviated',
+ context: 'formatting'
+ })
+ // J, F, ..., D
+ case 'MMMMM':
+ return localize.month(month, { width: 'narrow', context: 'formatting' })
+ // January, February, ..., December
+ case 'MMMM':
+ default:
+ return localize.month(month, { width: 'wide', context: 'formatting' })
+ }
+ },
+
+ // Stand-alone month
+ L: function(date, token, localize) {
+ var month = date.getUTCMonth()
+ switch (token) {
+ // 1, 2, ..., 12
+ case 'L':
+ return String(month + 1)
+ // 01, 02, ..., 12
+ case 'LL':
+ return addLeadingZeros(month + 1, 2)
+ // 1st, 2nd, ..., 12th
+ case 'Lo':
+ return localize.ordinalNumber(month + 1, { unit: 'month' })
+ // Jan, Feb, ..., Dec
+ case 'LLL':
+ return localize.month(month, {
+ width: 'abbreviated',
+ context: 'standalone'
+ })
+ // J, F, ..., D
+ case 'LLLLL':
+ return localize.month(month, { width: 'narrow', context: 'standalone' })
+ // January, February, ..., December
+ case 'LLLL':
+ default:
+ return localize.month(month, { width: 'wide', context: 'standalone' })
+ }
+ },
+
+ // Local week of year
+ w: function(date, token, localize, options) {
+ var week = getUTCWeek(date, options)
+
+ if (token === 'wo') {
+ return localize.ordinalNumber(week, { unit: 'week' })
+ }
+
+ return addLeadingZeros(week, token.length)
+ },
+
+ // ISO week of year
+ I: function(date, token, localize) {
+ var isoWeek = getUTCISOWeek(date)
+
+ if (token === 'Io') {
+ return localize.ordinalNumber(isoWeek, { unit: 'week' })
+ }
+
+ return addLeadingZeros(isoWeek, token.length)
+ },
+
+ // Day of the month
+ d: function(date, token, localize) {
+ if (token === 'do') {
+ return localize.ordinalNumber(date.getUTCDate(), { unit: 'date' })
+ }
+
+ return lightFormatters.d(date, token)
+ },
+
+ // Day of year
+ D: function(date, token, localize) {
+ var dayOfYear = getUTCDayOfYear(date)
+
+ if (token === 'Do') {
+ return localize.ordinalNumber(dayOfYear, { unit: 'dayOfYear' })
+ }
+
+ return addLeadingZeros(dayOfYear, token.length)
+ },
+
+ // Day of week
+ E: function(date, token, localize) {
+ var dayOfWeek = date.getUTCDay()
+ switch (token) {
+ // Tue
+ case 'E':
+ case 'EE':
+ case 'EEE':
+ return localize.day(dayOfWeek, {
+ width: 'abbreviated',
+ context: 'formatting'
+ })
+ // T
+ case 'EEEEE':
+ return localize.day(dayOfWeek, {
+ width: 'narrow',
+ context: 'formatting'
+ })
+ // Tu
+ case 'EEEEEE':
+ return localize.day(dayOfWeek, {
+ width: 'short',
+ context: 'formatting'
+ })
+ // Tuesday
+ case 'EEEE':
+ default:
+ return localize.day(dayOfWeek, { width: 'wide', context: 'formatting' })
+ }
+ },
+
+ // Local day of week
+ e: function(date, token, localize, options) {
+ var dayOfWeek = date.getUTCDay()
+ var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7
+ switch (token) {
+ // Numerical value (Nth day of week with current locale or weekStartsOn)
+ case 'e':
+ return String(localDayOfWeek)
+ // Padded numerical value
+ case 'ee':
+ return addLeadingZeros(localDayOfWeek, 2)
+ // 1st, 2nd, ..., 7th
+ case 'eo':
+ return localize.ordinalNumber(localDayOfWeek, { unit: 'day' })
+ case 'eee':
+ return localize.day(dayOfWeek, {
+ width: 'abbreviated',
+ context: 'formatting'
+ })
+ // T
+ case 'eeeee':
+ return localize.day(dayOfWeek, {
+ width: 'narrow',
+ context: 'formatting'
+ })
+ // Tu
+ case 'eeeeee':
+ return localize.day(dayOfWeek, {
+ width: 'short',
+ context: 'formatting'
+ })
+ // Tuesday
+ case 'eeee':
+ default:
+ return localize.day(dayOfWeek, { width: 'wide', context: 'formatting' })
+ }
+ },
+
+ // Stand-alone local day of week
+ c: function(date, token, localize, options) {
+ var dayOfWeek = date.getUTCDay()
+ var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7
+ switch (token) {
+ // Numerical value (same as in `e`)
+ case 'c':
+ return String(localDayOfWeek)
+ // Padded numerical value
+ case 'cc':
+ return addLeadingZeros(localDayOfWeek, token.length)
+ // 1st, 2nd, ..., 7th
+ case 'co':
+ return localize.ordinalNumber(localDayOfWeek, { unit: 'day' })
+ case 'ccc':
+ return localize.day(dayOfWeek, {
+ width: 'abbreviated',
+ context: 'standalone'
+ })
+ // T
+ case 'ccccc':
+ return localize.day(dayOfWeek, {
+ width: 'narrow',
+ context: 'standalone'
+ })
+ // Tu
+ case 'cccccc':
+ return localize.day(dayOfWeek, {
+ width: 'short',
+ context: 'standalone'
+ })
+ // Tuesday
+ case 'cccc':
+ default:
+ return localize.day(dayOfWeek, { width: 'wide', context: 'standalone' })
+ }
+ },
+
+ // ISO day of week
+ i: function(date, token, localize) {
+ var dayOfWeek = date.getUTCDay()
+ var isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek
+ switch (token) {
+ // 2
+ case 'i':
+ return String(isoDayOfWeek)
+ // 02
+ case 'ii':
+ return addLeadingZeros(isoDayOfWeek, token.length)
+ // 2nd
+ case 'io':
+ return localize.ordinalNumber(isoDayOfWeek, { unit: 'day' })
+ // Tue
+ case 'iii':
+ return localize.day(dayOfWeek, {
+ width: 'abbreviated',
+ context: 'formatting'
+ })
+ // T
+ case 'iiiii':
+ return localize.day(dayOfWeek, {
+ width: 'narrow',
+ context: 'formatting'
+ })
+ // Tu
+ case 'iiiiii':
+ return localize.day(dayOfWeek, {
+ width: 'short',
+ context: 'formatting'
+ })
+ // Tuesday
+ case 'iiii':
+ default:
+ return localize.day(dayOfWeek, { width: 'wide', context: 'formatting' })
+ }
+ },
+
+ // AM or PM
+ a: function(date, token, localize) {
+ var hours = date.getUTCHours()
+ var dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am'
+
+ switch (token) {
+ case 'a':
+ case 'aa':
+ return localize.dayPeriod(dayPeriodEnumValue, {
+ width: 'abbreviated',
+ context: 'formatting'
+ })
+ case 'aaa':
+ return localize
+ .dayPeriod(dayPeriodEnumValue, {
+ width: 'abbreviated',
+ context: 'formatting'
+ })
+ .toLowerCase()
+ case 'aaaaa':
+ return localize.dayPeriod(dayPeriodEnumValue, {
+ width: 'narrow',
+ context: 'formatting'
+ })
+ case 'aaaa':
+ default:
+ return localize.dayPeriod(dayPeriodEnumValue, {
+ width: 'wide',
+ context: 'formatting'
+ })
+ }
+ },
+
+ // AM, PM, midnight, noon
+ b: function(date, token, localize) {
+ var hours = date.getUTCHours()
+ var dayPeriodEnumValue
+ if (hours === 12) {
+ dayPeriodEnumValue = dayPeriodEnum.noon
+ } else if (hours === 0) {
+ dayPeriodEnumValue = dayPeriodEnum.midnight
+ } else {
+ dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am'
+ }
+
+ switch (token) {
+ case 'b':
+ case 'bb':
+ return localize.dayPeriod(dayPeriodEnumValue, {
+ width: 'abbreviated',
+ context: 'formatting'
+ })
+ case 'bbb':
+ return localize
+ .dayPeriod(dayPeriodEnumValue, {
+ width: 'abbreviated',
+ context: 'formatting'
+ })
+ .toLowerCase()
+ case 'bbbbb':
+ return localize.dayPeriod(dayPeriodEnumValue, {
+ width: 'narrow',
+ context: 'formatting'
+ })
+ case 'bbbb':
+ default:
+ return localize.dayPeriod(dayPeriodEnumValue, {
+ width: 'wide',
+ context: 'formatting'
+ })
+ }
+ },
+
+ // in the morning, in the afternoon, in the evening, at night
+ B: function(date, token, localize) {
+ var hours = date.getUTCHours()
+ var dayPeriodEnumValue
+ if (hours >= 17) {
+ dayPeriodEnumValue = dayPeriodEnum.evening
+ } else if (hours >= 12) {
+ dayPeriodEnumValue = dayPeriodEnum.afternoon
+ } else if (hours >= 4) {
+ dayPeriodEnumValue = dayPeriodEnum.morning
+ } else {
+ dayPeriodEnumValue = dayPeriodEnum.night
+ }
+
+ switch (token) {
+ case 'B':
+ case 'BB':
+ case 'BBB':
+ return localize.dayPeriod(dayPeriodEnumValue, {
+ width: 'abbreviated',
+ context: 'formatting'
+ })
+ case 'BBBBB':
+ return localize.dayPeriod(dayPeriodEnumValue, {
+ width: 'narrow',
+ context: 'formatting'
+ })
+ case 'BBBB':
+ default:
+ return localize.dayPeriod(dayPeriodEnumValue, {
+ width: 'wide',
+ context: 'formatting'
+ })
+ }
+ },
+
+ // Hour [1-12]
+ h: function(date, token, localize) {
+ if (token === 'ho') {
+ var hours = date.getUTCHours() % 12
+ if (hours === 0) hours = 12
+ return localize.ordinalNumber(hours, { unit: 'hour' })
+ }
+
+ return lightFormatters.h(date, token)
+ },
+
+ // Hour [0-23]
+ H: function(date, token, localize) {
+ if (token === 'Ho') {
+ return localize.ordinalNumber(date.getUTCHours(), { unit: 'hour' })
+ }
+
+ return lightFormatters.H(date, token)
+ },
+
+ // Hour [0-11]
+ K: function(date, token, localize) {
+ var hours = date.getUTCHours() % 12
+
+ if (token === 'Ko') {
+ return localize.ordinalNumber(hours, { unit: 'hour' })
+ }
+
+ return addLeadingZeros(hours, token.length)
+ },
+
+ // Hour [1-24]
+ k: function(date, token, localize) {
+ var hours = date.getUTCHours()
+ if (hours === 0) hours = 24
+
+ if (token === 'ko') {
+ return localize.ordinalNumber(hours, { unit: 'hour' })
+ }
+
+ return addLeadingZeros(hours, token.length)
+ },
+
+ // Minute
+ m: function(date, token, localize) {
+ if (token === 'mo') {
+ return localize.ordinalNumber(date.getUTCMinutes(), { unit: 'minute' })
+ }
+
+ return lightFormatters.m(date, token)
+ },
+
+ // Second
+ s: function(date, token, localize) {
+ if (token === 'so') {
+ return localize.ordinalNumber(date.getUTCSeconds(), { unit: 'second' })
+ }
+
+ return lightFormatters.s(date, token)
+ },
+
+ // Fraction of second
+ S: function(date, token) {
+ return lightFormatters.S(date, token)
+ },
+
+ // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)
+ X: function(date, token, _localize, options) {
+ var originalDate = options._originalDate || date
+ var timezoneOffset = originalDate.getTimezoneOffset()
+
+ if (timezoneOffset === 0) {
+ return 'Z'
+ }
+
+ switch (token) {
+ // Hours and optional minutes
+ case 'X':
+ return formatTimezoneWithOptionalMinutes(timezoneOffset)
+
+ // Hours, minutes and optional seconds without `:` delimiter
+ // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets
+ // so this token always has the same output as `XX`
+ case 'XXXX':
+ case 'XX': // Hours and minutes without `:` delimiter
+ return formatTimezone(timezoneOffset)
+
+ // Hours, minutes and optional seconds with `:` delimiter
+ // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets
+ // so this token always has the same output as `XXX`
+ case 'XXXXX':
+ case 'XXX': // Hours and minutes with `:` delimiter
+ default:
+ return formatTimezone(timezoneOffset, ':')
+ }
+ },
+
+ // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)
+ x: function(date, token, _localize, options) {
+ var originalDate = options._originalDate || date
+ var timezoneOffset = originalDate.getTimezoneOffset()
+
+ switch (token) {
+ // Hours and optional minutes
+ case 'x':
+ return formatTimezoneWithOptionalMinutes(timezoneOffset)
+
+ // Hours, minutes and optional seconds without `:` delimiter
+ // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets
+ // so this token always has the same output as `xx`
+ case 'xxxx':
+ case 'xx': // Hours and minutes without `:` delimiter
+ return formatTimezone(timezoneOffset)
+
+ // Hours, minutes and optional seconds with `:` delimiter
+ // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets
+ // so this token always has the same output as `xxx`
+ case 'xxxxx':
+ case 'xxx': // Hours and minutes with `:` delimiter
+ default:
+ return formatTimezone(timezoneOffset, ':')
+ }
+ },
+
+ // Timezone (GMT)
+ O: function(date, token, _localize, options) {
+ var originalDate = options._originalDate || date
+ var timezoneOffset = originalDate.getTimezoneOffset()
+
+ switch (token) {
+ // Short
+ case 'O':
+ case 'OO':
+ case 'OOO':
+ return 'GMT' + formatTimezoneShort(timezoneOffset, ':')
+ // Long
+ case 'OOOO':
+ default:
+ return 'GMT' + formatTimezone(timezoneOffset, ':')
+ }
+ },
+
+ // Timezone (specific non-location)
+ z: function(date, token, _localize, options) {
+ var originalDate = options._originalDate || date
+ var timezoneOffset = originalDate.getTimezoneOffset()
+
+ switch (token) {
+ // Short
+ case 'z':
+ case 'zz':
+ case 'zzz':
+ return 'GMT' + formatTimezoneShort(timezoneOffset, ':')
+ // Long
+ case 'zzzz':
+ default:
+ return 'GMT' + formatTimezone(timezoneOffset, ':')
+ }
+ },
+
+ // Seconds timestamp
+ t: function(date, token, _localize, options) {
+ var originalDate = options._originalDate || date
+ var timestamp = Math.floor(originalDate.getTime() / 1000)
+ return addLeadingZeros(timestamp, token.length)
+ },
+
+ // Milliseconds timestamp
+ T: function(date, token, _localize, options) {
+ var originalDate = options._originalDate || date
+ var timestamp = originalDate.getTime()
+ return addLeadingZeros(timestamp, token.length)
+ }
+}
+
+function formatTimezoneShort(offset, dirtyDelimiter) {
+ var sign = offset > 0 ? '-' : '+'
+ var absOffset = Math.abs(offset)
+ var hours = Math.floor(absOffset / 60)
+ var minutes = absOffset % 60
+ if (minutes === 0) {
+ return sign + String(hours)
+ }
+ var delimiter = dirtyDelimiter || ''
+ return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2)
+}
+
+function formatTimezoneWithOptionalMinutes(offset, dirtyDelimiter) {
+ if (offset % 60 === 0) {
+ var sign = offset > 0 ? '-' : '+'
+ return sign + addLeadingZeros(Math.abs(offset) / 60, 2)
+ }
+ return formatTimezone(offset, dirtyDelimiter)
+}
+
+function formatTimezone(offset, dirtyDelimiter) {
+ var delimiter = dirtyDelimiter || ''
+ var sign = offset > 0 ? '-' : '+'
+ var absOffset = Math.abs(offset)
+ var hours = addLeadingZeros(Math.floor(absOffset / 60), 2)
+ var minutes = addLeadingZeros(absOffset % 60, 2)
+ return sign + hours + delimiter + minutes
+}
+
+export default formatters
diff --git a/date-fns/src/_lib/format/lightFormatters/index.ts b/date-fns/src/_lib/format/lightFormatters/index.ts
new file mode 100644
index 0000000..9e7138e
--- /dev/null
+++ b/date-fns/src/_lib/format/lightFormatters/index.ts
@@ -0,0 +1,94 @@
+import addLeadingZeros from '../../addLeadingZeros/index'
+
+/*
+ * | | Unit | | Unit |
+ * |-----|--------------------------------|-----|--------------------------------|
+ * | a | AM, PM | A* | |
+ * | d | Day of month | D | |
+ * | h | Hour [1-12] | H | Hour [0-23] |
+ * | m | Minute | M | Month |
+ * | s | Second | S | Fraction of second |
+ * | y | Year (abs) | Y | |
+ *
+ * Letters marked by * are not implemented but reserved by Unicode standard.
+ */
+
+const formatters = {
+ // Year
+ y(date: Date, token: string): string {
+ // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens
+ // | Year | y | yy | yyy | yyyy | yyyyy |
+ // |----------|-------|----|-------|-------|-------|
+ // | AD 1 | 1 | 01 | 001 | 0001 | 00001 |
+ // | AD 12 | 12 | 12 | 012 | 0012 | 00012 |
+ // | AD 123 | 123 | 23 | 123 | 0123 | 00123 |
+ // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |
+ // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |
+
+ const signedYear = date.getUTCFullYear()
+ // Returns 1 for 1 BC (which is year 0 in JavaScript)
+ const year = signedYear > 0 ? signedYear : 1 - signedYear
+ return addLeadingZeros(token === 'yy' ? year % 100 : year, token.length)
+ },
+
+ // Month
+ M(date: Date, token: string): string {
+ const month = date.getUTCMonth()
+ return token === 'M' ? String(month + 1) : addLeadingZeros(month + 1, 2)
+ },
+
+ // Day of the month
+ d(date: Date, token: string): string {
+ return addLeadingZeros(date.getUTCDate(), token.length)
+ },
+
+ // AM or PM
+ a(date: Date, token: string): string {
+ const dayPeriodEnumValue = date.getUTCHours() / 12 >= 1 ? 'pm' : 'am'
+
+ switch (token) {
+ case 'a':
+ case 'aa':
+ return dayPeriodEnumValue.toUpperCase()
+ case 'aaa':
+ return dayPeriodEnumValue
+ case 'aaaaa':
+ return dayPeriodEnumValue[0]
+ case 'aaaa':
+ default:
+ return dayPeriodEnumValue === 'am' ? 'a.m.' : 'p.m.'
+ }
+ },
+
+ // Hour [1-12]
+ h(date: Date, token: string): string {
+ return addLeadingZeros(date.getUTCHours() % 12 || 12, token.length)
+ },
+
+ // Hour [0-23]
+ H(date: Date, token: string): string {
+ return addLeadingZeros(date.getUTCHours(), token.length)
+ },
+
+ // Minute
+ m(date: Date, token: string): string {
+ return addLeadingZeros(date.getUTCMinutes(), token.length)
+ },
+
+ // Second
+ s(date: Date, token: string): string {
+ return addLeadingZeros(date.getUTCSeconds(), token.length)
+ },
+
+ // Fraction of second
+ S(date: Date, token: string): string {
+ const numberOfDigits = token.length
+ const milliseconds = date.getUTCMilliseconds()
+ const fractionalSeconds = Math.floor(
+ milliseconds * Math.pow(10, numberOfDigits - 3)
+ )
+ return addLeadingZeros(fractionalSeconds, token.length)
+ },
+}
+
+export default formatters
diff --git a/date-fns/src/_lib/format/longFormatters/index.js b/date-fns/src/_lib/format/longFormatters/index.js
new file mode 100644
index 0000000..ff84163
--- /dev/null
+++ b/date-fns/src/_lib/format/longFormatters/index.js
@@ -0,0 +1,66 @@
+function dateLongFormatter(pattern, formatLong) {
+ switch (pattern) {
+ case 'P':
+ return formatLong.date({ width: 'short' })
+ case 'PP':
+ return formatLong.date({ width: 'medium' })
+ case 'PPP':
+ return formatLong.date({ width: 'long' })
+ case 'PPPP':
+ default:
+ return formatLong.date({ width: 'full' })
+ }
+}
+
+function timeLongFormatter(pattern, formatLong) {
+ switch (pattern) {
+ case 'p':
+ return formatLong.time({ width: 'short' })
+ case 'pp':
+ return formatLong.time({ width: 'medium' })
+ case 'ppp':
+ return formatLong.time({ width: 'long' })
+ case 'pppp':
+ default:
+ return formatLong.time({ width: 'full' })
+ }
+}
+
+function dateTimeLongFormatter(pattern, formatLong) {
+ var matchResult = pattern.match(/(P+)(p+)?/)
+ var datePattern = matchResult[1]
+ var timePattern = matchResult[2]
+
+ if (!timePattern) {
+ return dateLongFormatter(pattern, formatLong)
+ }
+
+ var dateTimeFormat
+
+ switch (datePattern) {
+ case 'P':
+ dateTimeFormat = formatLong.dateTime({ width: 'short' })
+ break
+ case 'PP':
+ dateTimeFormat = formatLong.dateTime({ width: 'medium' })
+ break
+ case 'PPP':
+ dateTimeFormat = formatLong.dateTime({ width: 'long' })
+ break
+ case 'PPPP':
+ default:
+ dateTimeFormat = formatLong.dateTime({ width: 'full' })
+ break
+ }
+
+ return dateTimeFormat
+ .replace('{{date}}', dateLongFormatter(datePattern, formatLong))
+ .replace('{{time}}', timeLongFormatter(timePattern, formatLong))
+}
+
+var longFormatters = {
+ p: timeLongFormatter,
+ P: dateTimeLongFormatter
+}
+
+export default longFormatters
diff --git a/date-fns/src/_lib/getTimezoneOffsetInMilliseconds/index.js b/date-fns/src/_lib/getTimezoneOffsetInMilliseconds/index.js
new file mode 100644
index 0000000..0b637c4
--- /dev/null
+++ b/date-fns/src/_lib/getTimezoneOffsetInMilliseconds/index.js
@@ -0,0 +1,26 @@
+/**
+ * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.
+ * They usually appear for dates that denote time before the timezones were introduced
+ * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891
+ * and GMT+01:00:00 after that date)
+ *
+ * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,
+ * which would lead to incorrect calculations.
+ *
+ * This function returns the timezone offset in milliseconds that takes seconds in account.
+ */
+export default function getTimezoneOffsetInMilliseconds(date) {
+ const utcDate = new Date(
+ Date.UTC(
+ date.getFullYear(),
+ date.getMonth(),
+ date.getDate(),
+ date.getHours(),
+ date.getMinutes(),
+ date.getSeconds(),
+ date.getMilliseconds()
+ )
+ )
+ utcDate.setUTCFullYear(date.getFullYear())
+ return date.getTime() - utcDate.getTime()
+}
diff --git a/date-fns/src/_lib/getTimezoneOffsetInMilliseconds/test.js b/date-fns/src/_lib/getTimezoneOffsetInMilliseconds/test.js
new file mode 100644
index 0000000..821e16f
--- /dev/null
+++ b/date-fns/src/_lib/getTimezoneOffsetInMilliseconds/test.js
@@ -0,0 +1,28 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import getTimezoneOffsetInMilliseconds from '.'
+
+describe('getTimezoneOffsetInMilliseconds', function () {
+ it('works for a modern date', function () {
+ var date = new Date(2018, 0 /* Jan */, 1, 12, 34, 56, 789)
+ var result = date.getTime() - getTimezoneOffsetInMilliseconds(date)
+ var expectedResult = Date.UTC(2018, 0 /* Jan */, 1, 12, 34, 56, 789)
+ assert(result === expectedResult)
+ })
+
+ it('works for a date before standardized timezones', function () {
+ var date = new Date(1800, 0 /* Jan */, 1, 12, 34, 56, 789)
+ var result = date.getTime() - getTimezoneOffsetInMilliseconds(date)
+ var expectedResult = Date.UTC(1800, 0 /* Jan */, 1, 12, 34, 56, 789)
+ assert(result === expectedResult)
+ })
+
+ it('works for a date BC', function () {
+ var date = new Date(-500, 0 /* Jan */, 1, 12, 34, 56, 789)
+ var result = date.getTime() - getTimezoneOffsetInMilliseconds(date)
+ var expectedResult = Date.UTC(-500, 0 /* Jan */, 1, 12, 34, 56, 789)
+ assert(result === expectedResult)
+ })
+})
diff --git a/date-fns/src/_lib/getUTCDayOfYear/index.js b/date-fns/src/_lib/getUTCDayOfYear/index.js
new file mode 100644
index 0000000..37cdc0e
--- /dev/null
+++ b/date-fns/src/_lib/getUTCDayOfYear/index.js
@@ -0,0 +1,18 @@
+import toDate from '../../toDate/index'
+import requiredArgs from '../requiredArgs/index'
+
+var MILLISECONDS_IN_DAY = 86400000
+
+// This function will be a part of public API when UTC function will be implemented.
+// See issue: https://github.com/date-fns/date-fns/issues/376
+export default function getUTCDayOfYear(dirtyDate) {
+ requiredArgs(1, arguments)
+
+ var date = toDate(dirtyDate)
+ var timestamp = date.getTime()
+ date.setUTCMonth(0, 1)
+ date.setUTCHours(0, 0, 0, 0)
+ var startOfYearTimestamp = date.getTime()
+ var difference = timestamp - startOfYearTimestamp
+ return Math.floor(difference / MILLISECONDS_IN_DAY) + 1
+}
diff --git a/date-fns/src/_lib/getUTCDayOfYear/test.js b/date-fns/src/_lib/getUTCDayOfYear/test.js
new file mode 100644
index 0000000..b4f2963
--- /dev/null
+++ b/date-fns/src/_lib/getUTCDayOfYear/test.js
@@ -0,0 +1,36 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import getUTCDayOfYear from '.'
+
+describe('getUTCDayOfYear', function() {
+ it('returns the day of the year of the given date', function() {
+ var result = getUTCDayOfYear(new Date(Date.UTC(2014, 6 /* Jul */, 2)))
+ assert(result === 183)
+ })
+
+ it('accepts a timestamp', function() {
+ var result = getUTCDayOfYear(
+ new Date(Date.UTC(2014, 0 /* Jan */, 2)).getTime()
+ )
+ assert(result === 2)
+ })
+
+ it('handles dates before 100 AD', function() {
+ var initialDate = new Date(0)
+ initialDate.setUTCFullYear(0, 11 /* Dec */, 31)
+ initialDate.setUTCHours(0, 0, 0, 0)
+ var result = getUTCDayOfYear(initialDate)
+ assert(result === 366)
+ })
+
+ it('returns NaN if the given date is invalid', function() {
+ var result = getUTCDayOfYear(new Date(NaN))
+ assert(isNaN(result))
+ })
+
+ it('throws TypeError exception if passed less than 1 argument', function() {
+ assert.throws(getUTCDayOfYear.bind(null), TypeError)
+ })
+})
diff --git a/date-fns/src/_lib/getUTCISOWeek/index.js b/date-fns/src/_lib/getUTCISOWeek/index.js
new file mode 100644
index 0000000..ab17ea2
--- /dev/null
+++ b/date-fns/src/_lib/getUTCISOWeek/index.js
@@ -0,0 +1,21 @@
+import toDate from '../../toDate/index'
+import startOfUTCISOWeek from '../startOfUTCISOWeek/index'
+import startOfUTCISOWeekYear from '../startOfUTCISOWeekYear/index'
+import requiredArgs from '../requiredArgs/index'
+
+var MILLISECONDS_IN_WEEK = 604800000
+
+// This function will be a part of public API when UTC function will be implemented.
+// See issue: https://github.com/date-fns/date-fns/issues/376
+export default function getUTCISOWeek(dirtyDate) {
+ requiredArgs(1, arguments)
+
+ var date = toDate(dirtyDate)
+ var diff =
+ startOfUTCISOWeek(date).getTime() - startOfUTCISOWeekYear(date).getTime()
+
+ // Round the number of days to the nearest integer
+ // because the number of milliseconds in a week is not constant
+ // (e.g. it's different in the week of the daylight saving time clock shift)
+ return Math.round(diff / MILLISECONDS_IN_WEEK) + 1
+}
diff --git a/date-fns/src/_lib/getUTCISOWeek/test.js b/date-fns/src/_lib/getUTCISOWeek/test.js
new file mode 100644
index 0000000..29dc6b2
--- /dev/null
+++ b/date-fns/src/_lib/getUTCISOWeek/test.js
@@ -0,0 +1,58 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import getUTCISOWeek from '.'
+
+describe('getUTCISOWeek', function() {
+ it('returns the ISO week of the given date', function() {
+ var result = getUTCISOWeek(new Date(Date.UTC(2005, 0 /* Jan */, 2)))
+ assert(result === 53)
+ })
+
+ it('accepts a timestamp', function() {
+ var result = getUTCISOWeek(
+ new Date(Date.UTC(2008, 11 /* Dec */, 29)).getTime()
+ )
+ assert(result === 1)
+ })
+
+ describe('edge cases', function() {
+ it('returns the ISO week at 1 January 2016', function() {
+ var result = getUTCISOWeek(new Date(Date.UTC(2016, 0 /* Jan */, 1)))
+ assert(result === 53)
+ })
+
+ it('returns the ISO week at 1 May 2016', function() {
+ var result = getUTCISOWeek(new Date(Date.UTC(2016, 4 /* May */, 1)))
+ assert(result === 17)
+ })
+
+ it('returns the ISO week at 2 May 2016', function() {
+ var result = getUTCISOWeek(new Date(Date.UTC(2016, 4 /* May */, 2)))
+ assert(result === 18)
+ })
+
+ it('returns the ISO week at 31 May 2016', function() {
+ var result = getUTCISOWeek(new Date(Date.UTC(2016, 4 /* May */, 31)))
+ assert(result === 22)
+ })
+ })
+
+ it('handles dates before 100 AD', function() {
+ var initialDate = new Date(0)
+ initialDate.setUTCFullYear(7, 11 /* Dec */, 30)
+ initialDate.setUTCHours(0, 0, 0, 0)
+ var result = getUTCISOWeek(initialDate)
+ assert(result === 52)
+ })
+
+ it('returns NaN if the given date is invalid', function() {
+ var result = getUTCISOWeek(new Date(NaN))
+ assert(isNaN(result))
+ })
+
+ it('throws TypeError exception if passed less than 1 argument', function() {
+ assert.throws(getUTCISOWeek.bind(null), TypeError)
+ })
+})
diff --git a/date-fns/src/_lib/getUTCISOWeekYear/index.js b/date-fns/src/_lib/getUTCISOWeekYear/index.js
new file mode 100644
index 0000000..e098159
--- /dev/null
+++ b/date-fns/src/_lib/getUTCISOWeekYear/index.js
@@ -0,0 +1,30 @@
+import toDate from '../../toDate/index'
+import startOfUTCISOWeek from '../startOfUTCISOWeek/index'
+import requiredArgs from '../requiredArgs/index'
+
+// This function will be a part of public API when UTC function will be implemented.
+// See issue: https://github.com/date-fns/date-fns/issues/376
+export default function getUTCISOWeekYear(dirtyDate) {
+ requiredArgs(1, arguments)
+
+ var date = toDate(dirtyDate)
+ var year = date.getUTCFullYear()
+
+ var fourthOfJanuaryOfNextYear = new Date(0)
+ fourthOfJanuaryOfNextYear.setUTCFullYear(year + 1, 0, 4)
+ fourthOfJanuaryOfNextYear.setUTCHours(0, 0, 0, 0)
+ var startOfNextYear = startOfUTCISOWeek(fourthOfJanuaryOfNextYear)
+
+ var fourthOfJanuaryOfThisYear = new Date(0)
+ fourthOfJanuaryOfThisYear.setUTCFullYear(year, 0, 4)
+ fourthOfJanuaryOfThisYear.setUTCHours(0, 0, 0, 0)
+ var startOfThisYear = startOfUTCISOWeek(fourthOfJanuaryOfThisYear)
+
+ if (date.getTime() >= startOfNextYear.getTime()) {
+ return year + 1
+ } else if (date.getTime() >= startOfThisYear.getTime()) {
+ return year
+ } else {
+ return year - 1
+ }
+}
diff --git a/date-fns/src/_lib/getUTCISOWeekYear/test.js b/date-fns/src/_lib/getUTCISOWeekYear/test.js
new file mode 100644
index 0000000..07aab97
--- /dev/null
+++ b/date-fns/src/_lib/getUTCISOWeekYear/test.js
@@ -0,0 +1,36 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import getUTCISOWeekYear from '.'
+
+describe('getUTCISOWeekYear', function() {
+ it('returns the ISO week-numbering year of the given date', function() {
+ var result = getUTCISOWeekYear(new Date(Date.UTC(2007, 11 /* Dec */, 31)))
+ assert(result === 2008)
+ })
+
+ it('accepts a timestamp', function() {
+ var result = getUTCISOWeekYear(
+ new Date(Date.UTC(2005, 0 /* Jan */, 1)).getTime()
+ )
+ assert(result === 2004)
+ })
+
+ it('handles dates before 100 AD', function() {
+ var initialDate = new Date(0)
+ initialDate.setUTCFullYear(7, 11 /* Dec */, 31)
+ initialDate.setUTCHours(0, 0, 0, 0)
+ var result = getUTCISOWeekYear(initialDate)
+ assert(result === 8)
+ })
+
+ it('returns NaN if the given date is invalid', function() {
+ var result = getUTCISOWeekYear(new Date(NaN))
+ assert(isNaN(result))
+ })
+
+ it('throws TypeError exception if passed less than 1 argument', function() {
+ assert.throws(getUTCISOWeekYear.bind(null), TypeError)
+ })
+})
diff --git a/date-fns/src/_lib/getUTCWeek/index.js b/date-fns/src/_lib/getUTCWeek/index.js
new file mode 100644
index 0000000..0b69ba2
--- /dev/null
+++ b/date-fns/src/_lib/getUTCWeek/index.js
@@ -0,0 +1,22 @@
+import toDate from '../../toDate/index'
+import startOfUTCWeek from '../startOfUTCWeek/index'
+import startOfUTCWeekYear from '../startOfUTCWeekYear/index'
+import requiredArgs from '../requiredArgs/index'
+
+var MILLISECONDS_IN_WEEK = 604800000
+
+// This function will be a part of public API when UTC function will be implemented.
+// See issue: https://github.com/date-fns/date-fns/issues/376
+export default function getUTCWeek(dirtyDate, options) {
+ requiredArgs(1, arguments)
+
+ var date = toDate(dirtyDate)
+ var diff =
+ startOfUTCWeek(date, options).getTime() -
+ startOfUTCWeekYear(date, options).getTime()
+
+ // Round the number of days to the nearest integer
+ // because the number of milliseconds in a week is not constant
+ // (e.g. it's different in the week of the daylight saving time clock shift)
+ return Math.round(diff / MILLISECONDS_IN_WEEK) + 1
+}
diff --git a/date-fns/src/_lib/getUTCWeek/test.js b/date-fns/src/_lib/getUTCWeek/test.js
new file mode 100644
index 0000000..0814368
--- /dev/null
+++ b/date-fns/src/_lib/getUTCWeek/test.js
@@ -0,0 +1,70 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import getUTCWeek from '.'
+
+describe('getUTCWeek', function() {
+ it('returns the local week of year of the given date', function() {
+ var result = getUTCWeek(new Date(Date.UTC(2005, 0 /* Jan */, 2)))
+ assert(result === 2)
+ })
+
+ it('accepts a timestamp', function() {
+ var result = getUTCWeek(Date.UTC(2008, 11 /* Dec */, 29))
+ assert(result === 1)
+ })
+
+ it('handles dates before 100 AD', function() {
+ var initialDate = new Date(0)
+ initialDate.setUTCFullYear(7, 11 /* Dec */, 30)
+ initialDate.setUTCHours(0, 0, 0, 0)
+ var result = getUTCWeek(initialDate)
+ assert(result === 1)
+ })
+
+ it('returns NaN if the given date is invalid', function() {
+ var result = getUTCWeek(new Date(NaN))
+ assert(isNaN(result))
+ })
+
+ it('allows to specify `weekStartsOn` and `firstWeekContainsDate` in locale', function() {
+ var date = new Date(Date.UTC(2005, 0 /* Jan */, 2))
+ var result = getUTCWeek(date, {
+ locale: {
+ options: { weekStartsOn: 1, firstWeekContainsDate: 4 }
+ }
+ })
+ assert(result === 53)
+ })
+
+ it('`options.weekStartsOn` overwrites the first day of the week specified in locale', function() {
+ var date = new Date(Date.UTC(2005, 0 /* Jan */, 2))
+ var result = getUTCWeek(date, {
+ weekStartsOn: 1,
+ firstWeekContainsDate: 4,
+ locale: {
+ options: { weekStartsOn: 0, firstWeekContainsDate: 1 }
+ }
+ })
+ assert(result === 53)
+ })
+
+ it('throws `RangeError` if `options.weekStartsOn` is not convertable to 0, 1, ..., 6 or undefined', function() {
+ var block = getUTCWeek.bind(null, new Date(2007, 11 /* Dec */, 31), {
+ weekStartsOn: NaN
+ })
+ assert.throws(block, RangeError)
+ })
+
+ it('throws `RangeError` if `options.firstWeekContainsDate` is not convertable to 1, 2, ..., 7 or undefined', function() {
+ var block = getUTCWeek.bind(null, new Date(2007, 11 /* Dec */, 31), {
+ firstWeekContainsDate: NaN
+ })
+ assert.throws(block, RangeError)
+ })
+
+ it('throws TypeError exception if passed less than 1 argument', function() {
+ assert.throws(getUTCWeek.bind(null), TypeError)
+ })
+})
diff --git a/date-fns/src/_lib/getUTCWeekYear/index.js b/date-fns/src/_lib/getUTCWeekYear/index.js
new file mode 100644
index 0000000..1f561c7
--- /dev/null
+++ b/date-fns/src/_lib/getUTCWeekYear/index.js
@@ -0,0 +1,51 @@
+import toInteger from '../toInteger/index'
+import toDate from '../../toDate/index'
+import startOfUTCWeek from '../startOfUTCWeek/index'
+import requiredArgs from '../requiredArgs/index'
+
+// This function will be a part of public API when UTC function will be implemented.
+// See issue: https://github.com/date-fns/date-fns/issues/376
+export default function getUTCWeekYear(dirtyDate, dirtyOptions) {
+ requiredArgs(1, arguments)
+
+ var date = toDate(dirtyDate, dirtyOptions)
+ var year = date.getUTCFullYear()
+
+ var options = dirtyOptions || {}
+ var locale = options.locale
+ var localeFirstWeekContainsDate =
+ locale && locale.options && locale.options.firstWeekContainsDate
+ var defaultFirstWeekContainsDate =
+ localeFirstWeekContainsDate == null
+ ? 1
+ : toInteger(localeFirstWeekContainsDate)
+ var firstWeekContainsDate =
+ options.firstWeekContainsDate == null
+ ? defaultFirstWeekContainsDate
+ : toInteger(options.firstWeekContainsDate)
+
+ // Test if weekStartsOn is between 1 and 7 _and_ is not NaN
+ if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {
+ throw new RangeError(
+ 'firstWeekContainsDate must be between 1 and 7 inclusively'
+ )
+ }
+
+ var firstWeekOfNextYear = new Date(0)
+ firstWeekOfNextYear.setUTCFullYear(year + 1, 0, firstWeekContainsDate)
+ firstWeekOfNextYear.setUTCHours(0, 0, 0, 0)
+ var startOfNextYear = startOfUTCWeek(firstWeekOfNextYear, dirtyOptions)
+
+ var firstWeekOfThisYear = new Date(0)
+ firstWeekOfThisYear.setUTCFullYear(year, 0, firstWeekContainsDate)
+ firstWeekOfThisYear.setUTCHours(0, 0, 0, 0)
+ var startOfThisYear = startOfUTCWeek(firstWeekOfThisYear, dirtyOptions)
+
+ if (date.getTime() >= startOfNextYear.getTime()) {
+ return year + 1
+ } else if (date.getTime() >= startOfThisYear.getTime()) {
+ return year
+ } else {
+ return year - 1
+ }
+}
diff --git a/date-fns/src/_lib/getUTCWeekYear/test.js b/date-fns/src/_lib/getUTCWeekYear/test.js
new file mode 100644
index 0000000..3b45fc4
--- /dev/null
+++ b/date-fns/src/_lib/getUTCWeekYear/test.js
@@ -0,0 +1,70 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import getUTCWeekYear from '.'
+
+describe('getUTCWeekYear', function() {
+ it('returns the local week-numbering year of the given date', function() {
+ var result = getUTCWeekYear(new Date(Date.UTC(2004, 11 /* Dec */, 26)))
+ assert(result === 2005)
+ })
+
+ it('accepts a timestamp', function() {
+ var result = getUTCWeekYear(Date.UTC(2000, 11 /* Dec */, 30))
+ assert(result === 2000)
+ })
+
+ it('handles dates before 100 AD', function() {
+ var initialDate = new Date(0)
+ initialDate.setUTCFullYear(7, 11 /* Dec */, 31)
+ initialDate.setUTCHours(0, 0, 0, 0)
+ var result = getUTCWeekYear(initialDate)
+ assert(result === 8)
+ })
+
+ it('returns NaN if the given date is invalid', function() {
+ var result = getUTCWeekYear(new Date(NaN))
+ assert(isNaN(result))
+ })
+
+ it('allows to specify `weekStartsOn` and `firstWeekContainsDate` in locale', function() {
+ var date = new Date(Date.UTC(2004, 11 /* Dec */, 26))
+ var result = getUTCWeekYear(date, {
+ locale: {
+ options: { weekStartsOn: 1, firstWeekContainsDate: 4 }
+ }
+ })
+ assert(result === 2004)
+ })
+
+ it('`options.weekStartsOn` overwrites the first day of the week specified in locale', function() {
+ var date = new Date(Date.UTC(2004, 11 /* Dec */, 26))
+ var result = getUTCWeekYear(date, {
+ weekStartsOn: 1,
+ firstWeekContainsDate: 4,
+ locale: {
+ options: { weekStartsOn: 0, firstWeekContainsDate: 1 }
+ }
+ })
+ assert(result === 2004)
+ })
+
+ it('throws `RangeError` if `options.weekStartsOn` is not convertable to 0, 1, ..., 6 or undefined', function() {
+ var block = getUTCWeekYear.bind(null, new Date(2007, 11 /* Dec */, 31), {
+ weekStartsOn: NaN
+ })
+ assert.throws(block, RangeError)
+ })
+
+ it('throws `RangeError` if `options.firstWeekContainsDate` is not convertable to 1, 2, ..., 7 or undefined', function() {
+ var block = getUTCWeekYear.bind(null, new Date(2007, 11 /* Dec */, 31), {
+ firstWeekContainsDate: NaN
+ })
+ assert.throws(block, RangeError)
+ })
+
+ it('throws TypeError exception if passed less than 1 argument', function() {
+ assert.throws(getUTCWeekYear.bind(null), TypeError)
+ })
+})
diff --git a/date-fns/src/_lib/isSameUTCWeek/index.js b/date-fns/src/_lib/isSameUTCWeek/index.js
new file mode 100644
index 0000000..699806f
--- /dev/null
+++ b/date-fns/src/_lib/isSameUTCWeek/index.js
@@ -0,0 +1,13 @@
+import startOfUTCWeek from '../startOfUTCWeek/index'
+import requiredArgs from '../requiredArgs/index'
+
+// This function will be a part of public API when UTC function will be implemented.
+// See issue: https://github.com/date-fns/date-fns/issues/376
+export default function isSameUTCWeek(dirtyDateLeft, dirtyDateRight, options) {
+ requiredArgs(2, arguments)
+
+ var dateLeftStartOfWeek = startOfUTCWeek(dirtyDateLeft, options)
+ var dateRightStartOfWeek = startOfUTCWeek(dirtyDateRight, options)
+
+ return dateLeftStartOfWeek.getTime() === dateRightStartOfWeek.getTime()
+}
diff --git a/date-fns/src/_lib/isSameUTCWeek/test.js b/date-fns/src/_lib/isSameUTCWeek/test.js
new file mode 100644
index 0000000..909d034
--- /dev/null
+++ b/date-fns/src/_lib/isSameUTCWeek/test.js
@@ -0,0 +1,111 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import isSameUTCWeek from '.'
+
+describe('isSameUTCWeek', function() {
+ it('returns true if the given dates have the same week', function() {
+ var result = isSameUTCWeek(
+ new Date(Date.UTC(2014, 7 /* Aug */, 31)),
+ new Date(Date.UTC(2014, 8 /* Sep */, 4))
+ )
+ assert(result === true)
+ })
+
+ it('returns false if the given dates have different weeks', function() {
+ var result = isSameUTCWeek(
+ new Date(Date.UTC(2014, 7 /* Aug */, 30)),
+ new Date(Date.UTC(2014, 8 /* Sep */, 4))
+ )
+ assert(result === false)
+ })
+
+ it('allows to specify which day is the first day of the week', function() {
+ var result = isSameUTCWeek(
+ new Date(Date.UTC(2014, 7 /* Aug */, 31)),
+ new Date(Date.UTC(2014, 8 /* Sep */, 4)),
+ { weekStartsOn: 1 }
+ )
+ assert(result === false)
+ })
+
+ it('allows to specify which day is the first day of the week in locale', function() {
+ var result = isSameUTCWeek(
+ new Date(Date.UTC(2014, 7 /* Aug */, 31)),
+ new Date(Date.UTC(2014, 8 /* Sep */, 4)),
+ {
+ locale: {
+ options: { weekStartsOn: 1 }
+ }
+ }
+ )
+ assert(result === false)
+ })
+
+ it('`options.weekStartsOn` overwrites the first day of the week specified in locale', function() {
+ var result = isSameUTCWeek(
+ new Date(Date.UTC(2014, 7 /* Aug */, 31)),
+ new Date(Date.UTC(2014, 8 /* Sep */, 4)),
+ {
+ weekStartsOn: 1,
+ locale: {
+ options: { weekStartsOn: 0 }
+ }
+ }
+ )
+ assert(result === false)
+ })
+
+ it('implicitly converts options', function() {
+ var result = isSameUTCWeek(
+ new Date(Date.UTC(2014, 7 /* Aug */, 31)),
+ new Date(Date.UTC(2014, 8 /* Sep */, 4)),
+ { weekStartsOn: '1' }
+ )
+ assert(result === false)
+ })
+
+ it('accepts a timestamp', function() {
+ var result = isSameUTCWeek(
+ Date.UTC(2014, 7 /* Aug */, 31),
+ Date.UTC(2014, 8 /* Sep */, 4)
+ )
+ assert(result === true)
+ })
+
+ it('returns false if the first date is `Invalid Date`', function() {
+ var result = isSameUTCWeek(
+ new Date(NaN),
+ new Date(Date.UTC(1989, 6 /* Jul */, 10))
+ )
+ assert(result === false)
+ })
+
+ it('returns false if the second date is `Invalid Date`', function() {
+ var result = isSameUTCWeek(
+ new Date(Date.UTC(1987, 1 /* Feb */, 11)),
+ new Date(NaN)
+ )
+ assert(result === false)
+ })
+
+ it('returns false if the both dates are `Invalid Date`', function() {
+ var result = isSameUTCWeek(new Date(NaN), new Date(NaN))
+ assert(result === false)
+ })
+
+ it('throws `RangeError` if `options.weekStartsOn` is not convertable to 0, 1, ..., 6 or undefined', function() {
+ var block = isSameUTCWeek.bind(
+ null,
+ new Date(Date.UTC(2014, 7 /* Aug */, 31)),
+ new Date(Date.UTC(2014, 8 /* Sep */, 4)),
+ { weekStartsOn: NaN }
+ )
+ assert.throws(block, RangeError)
+ })
+
+ it('throws TypeError exception if passed less than 1 argument', function() {
+ assert.throws(isSameUTCWeek.bind(null, 1), TypeError)
+ })
+})
diff --git a/date-fns/src/_lib/protectedTokens/index.js b/date-fns/src/_lib/protectedTokens/index.js
new file mode 100644
index 0000000..c62313f
--- /dev/null
+++ b/date-fns/src/_lib/protectedTokens/index.js
@@ -0,0 +1,30 @@
+var protectedDayOfYearTokens = ['D', 'DD']
+var protectedWeekYearTokens = ['YY', 'YYYY']
+
+export function isProtectedDayOfYearToken(token) {
+ return protectedDayOfYearTokens.indexOf(token) !== -1
+}
+
+export function isProtectedWeekYearToken(token) {
+ return protectedWeekYearTokens.indexOf(token) !== -1
+}
+
+export function throwProtectedError(token, format, input) {
+ if (token === 'YYYY') {
+ throw new RangeError(
+ `Use \`yyyy\` instead of \`YYYY\` (in \`${format}\`) for formatting years to the input \`${input}\`; see: https://git.io/fxCyr`
+ )
+ } else if (token === 'YY') {
+ throw new RangeError(
+ `Use \`yy\` instead of \`YY\` (in \`${format}\`) for formatting years to the input \`${input}\`; see: https://git.io/fxCyr`
+ )
+ } else if (token === 'D') {
+ throw new RangeError(
+ `Use \`d\` instead of \`D\` (in \`${format}\`) for formatting days of the month to the input \`${input}\`; see: https://git.io/fxCyr`
+ )
+ } else if (token === 'DD') {
+ throw new RangeError(
+ `Use \`dd\` instead of \`DD\` (in \`${format}\`) for formatting days of the month to the input \`${input}\`; see: https://git.io/fxCyr`
+ )
+ }
+}
diff --git a/date-fns/src/_lib/requiredArgs/index.ts b/date-fns/src/_lib/requiredArgs/index.ts
new file mode 100644
index 0000000..bdbb950
--- /dev/null
+++ b/date-fns/src/_lib/requiredArgs/index.ts
@@ -0,0 +1,12 @@
+export default function requiredArgs(required: number, args: IArguments) {
+ if (args.length < required) {
+ throw new TypeError(
+ required +
+ ' argument' +
+ (required > 1 ? 's' : '') +
+ ' required, but only ' +
+ args.length +
+ ' present'
+ )
+ }
+}
diff --git a/date-fns/src/_lib/requiredArgs/test.js b/date-fns/src/_lib/requiredArgs/test.js
new file mode 100644
index 0000000..a6cbe4a
--- /dev/null
+++ b/date-fns/src/_lib/requiredArgs/test.js
@@ -0,0 +1,37 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import requiredArgs from '.'
+
+describe('requiredArgs', function () {
+ function wrapperFn(required) {
+ // $ExpectedMistake
+ return function () {
+ requiredArgs(required, arguments)
+ }
+ }
+ const twoArgsRequired = wrapperFn(2)
+
+ describe('with correct number of passed arguments', function () {
+ it('does not throw an error', function () {
+ assert.doesNotThrow(() => twoArgsRequired(1, 2))
+ })
+ })
+
+ describe('with wrong number of arguments', function () {
+ it('throws correct error message', function () {
+ assert.throws(
+ function () {
+ twoArgsRequired(1)
+ },
+ function (err) {
+ return (
+ err instanceof TypeError &&
+ err.message === '2 arguments required, but only 1 present'
+ )
+ }
+ )
+ })
+ })
+})
diff --git a/date-fns/src/_lib/setUTCDay/index.js b/date-fns/src/_lib/setUTCDay/index.js
new file mode 100644
index 0000000..6e4e472
--- /dev/null
+++ b/date-fns/src/_lib/setUTCDay/index.js
@@ -0,0 +1,38 @@
+import toInteger from '../toInteger/index'
+import toDate from '../../toDate/index'
+import requiredArgs from '../requiredArgs/index'
+
+// This function will be a part of public API when UTC function will be implemented.
+// See issue: https://github.com/date-fns/date-fns/issues/376
+export default function setUTCDay(dirtyDate, dirtyDay, dirtyOptions) {
+ requiredArgs(2, arguments)
+
+ var options = dirtyOptions || {}
+ var locale = options.locale
+ var localeWeekStartsOn =
+ locale && locale.options && locale.options.weekStartsOn
+ var defaultWeekStartsOn =
+ localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn)
+ var weekStartsOn =
+ options.weekStartsOn == null
+ ? defaultWeekStartsOn
+ : toInteger(options.weekStartsOn)
+
+ // Test if weekStartsOn is between 0 and 6 _and_ is not NaN
+ if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {
+ throw new RangeError('weekStartsOn must be between 0 and 6 inclusively')
+ }
+
+ var date = toDate(dirtyDate)
+ var day = toInteger(dirtyDay)
+
+ var currentDay = date.getUTCDay()
+
+ var remainder = day % 7
+ var dayIndex = (remainder + 7) % 7
+
+ var diff = (dayIndex < weekStartsOn ? 7 : 0) + day - currentDay
+
+ date.setUTCDate(date.getUTCDate() + diff)
+ return date
+}
diff --git a/date-fns/src/_lib/setUTCDay/test.js b/date-fns/src/_lib/setUTCDay/test.js
new file mode 100644
index 0000000..a34074b
--- /dev/null
+++ b/date-fns/src/_lib/setUTCDay/test.js
@@ -0,0 +1,132 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import setUTCDay from '.'
+
+describe('setUTCDay', function () {
+ it('sets the day of the week', function () {
+ var result = setUTCDay(new Date(Date.UTC(2014, 8 /* Sep */, 1)), 0)
+ assert.deepEqual(result, new Date(Date.UTC(2014, 7 /* Aug */, 31)))
+ })
+
+ it('allows to specify which day is the first day of the week', function () {
+ var result = setUTCDay(new Date(Date.UTC(2014, 8 /* Sep */, 1)), 0, {
+ weekStartsOn: 1,
+ })
+ assert.deepEqual(result, new Date(Date.UTC(2014, 8 /* Sep */, 7)))
+ })
+
+ it('allows to specify which day is the first day of the week in locale', function () {
+ var result = setUTCDay(new Date(Date.UTC(2014, 8 /* Sep */, 1)), 0, {
+ locale: {
+ options: { weekStartsOn: 1 },
+ },
+ })
+ assert.deepEqual(result, new Date(Date.UTC(2014, 8 /* Sep */, 7)))
+ })
+
+ it('`options.weekStartsOn` overwrites the first day of the week specified in locale', function () {
+ var result = setUTCDay(new Date(Date.UTC(2014, 8 /* Sep */, 1)), 0, {
+ weekStartsOn: 1,
+ locale: {
+ options: { weekStartsOn: 0 },
+ },
+ })
+ assert.deepEqual(result, new Date(Date.UTC(2014, 8 /* Sep */, 7)))
+ })
+
+ describe('the day index is more than 6', function () {
+ it('sets the day of the next week', function () {
+ var result = setUTCDay(new Date(Date.UTC(2014, 8 /* Sep */, 1)), 8)
+ assert.deepEqual(result, new Date(Date.UTC(2014, 8 /* Sep */, 8)))
+ })
+
+ it('allows to specify which day is the first day of the week', function () {
+ var result = setUTCDay(new Date(Date.UTC(2014, 8 /* Sep */, 1)), 7, {
+ weekStartsOn: 1,
+ })
+ assert.deepEqual(result, new Date(Date.UTC(2014, 8 /* Sep */, 14)))
+ })
+
+ it('sets the day of another week in the future', function () {
+ var result = setUTCDay(new Date(Date.UTC(2014, 8 /* Sep */, 1)), 14, {
+ weekStartsOn: 1,
+ })
+ assert.deepEqual(result, new Date(Date.UTC(2014, 8 /* Sep */, 21)))
+ })
+ })
+
+ describe('the day index is less than 0', function () {
+ it('sets the day of the last week', function () {
+ var result = setUTCDay(new Date(Date.UTC(2014, 8 /* Sep */, 1)), -6)
+ assert.deepEqual(result, new Date(Date.UTC(2014, 7 /* Aug */, 25)))
+ })
+
+ it('allows to specify which day is the first day of the week', function () {
+ var result = setUTCDay(new Date(Date.UTC(2014, 8 /* Sep */, 1)), -7, {
+ weekStartsOn: 1,
+ })
+ assert.deepEqual(result, new Date(Date.UTC(2014, 7 /* Aug */, 31)))
+ })
+
+ it('set the day of another week in the past', function () {
+ var result = setUTCDay(new Date(Date.UTC(2014, 8 /* Sep */, 1)), -14, {
+ weekStartsOn: 1,
+ })
+ assert.deepEqual(result, new Date(Date.UTC(2014, 7 /* Aug */, 24)))
+ })
+ })
+
+ it('accepts a timestamp', function () {
+ var result = setUTCDay(
+ new Date(Date.UTC(2014, 8 /* Sep */, 1)).getTime(),
+ 3
+ )
+ assert.deepEqual(result, new Date(Date.UTC(2014, 8 /* Sep */, 3)))
+ })
+
+ it('converts a fractional number to an integer', function () {
+ var result = setUTCDay(new Date(Date.UTC(2014, 8 /* Sep */, 1)), 0.9)
+ assert.deepEqual(result, new Date(Date.UTC(2014, 7 /* Aug */, 31)))
+ })
+
+ it('implicitly converts number arguments', function () {
+ var result = setUTCDay(new Date(Date.UTC(2014, 8 /* Sep */, 1)), '0')
+ assert.deepEqual(result, new Date(Date.UTC(2014, 7 /* Aug */, 31)))
+ })
+
+ it('implicitly converts options', function () {
+ var result = setUTCDay(new Date(Date.UTC(2014, 8 /* Sep */, 1)), 0, {
+ weekStartsOn: '1',
+ })
+ assert.deepEqual(result, new Date(Date.UTC(2014, 8 /* Sep */, 7)))
+ })
+
+ it('does not mutate the original date', function () {
+ var date = new Date(Date.UTC(2014, 8 /* Sep */, 1))
+ setUTCDay(date, 3)
+ assert.deepEqual(date, new Date(Date.UTC(2014, 8 /* Sep */, 1)))
+ })
+
+ it('returns `Invalid Date` if the given date is invalid', function () {
+ var result = setUTCDay(new Date(NaN), 0)
+ assert(result instanceof Date && isNaN(result))
+ })
+
+ it('returns `Invalid Date` if the given amount is NaN', function () {
+ var result = setUTCDay(new Date(2014, 8 /* Sep */, 1), NaN)
+ assert(result instanceof Date && isNaN(result))
+ })
+
+ it('throws `RangeError` if `options.weekStartsOn` is not convertable to 0, 1, ..., 6 or undefined', function () {
+ var block = setUTCDay.bind(null, new Date(2014, 8 /* Sep */, 1), 0, {
+ weekStartsOn: NaN,
+ })
+ assert.throws(block, RangeError)
+ })
+
+ it('throws TypeError exception if passed less than 1 argument', function () {
+ assert.throws(setUTCDay.bind(null, 1), TypeError)
+ })
+})
diff --git a/date-fns/src/_lib/setUTCISODay/index.js b/date-fns/src/_lib/setUTCISODay/index.js
new file mode 100644
index 0000000..cbd2fbc
--- /dev/null
+++ b/date-fns/src/_lib/setUTCISODay/index.js
@@ -0,0 +1,27 @@
+import toInteger from '../toInteger/index'
+import toDate from '../../toDate/index'
+import requiredArgs from '../requiredArgs/index'
+
+// This function will be a part of public API when UTC function will be implemented.
+// See issue: https://github.com/date-fns/date-fns/issues/376
+export default function setUTCISODay(dirtyDate, dirtyDay) {
+ requiredArgs(2, arguments)
+
+ var day = toInteger(dirtyDay)
+
+ if (day % 7 === 0) {
+ day = day - 7
+ }
+
+ var weekStartsOn = 1
+ var date = toDate(dirtyDate)
+ var currentDay = date.getUTCDay()
+
+ var remainder = day % 7
+ var dayIndex = (remainder + 7) % 7
+
+ var diff = (dayIndex < weekStartsOn ? 7 : 0) + day - currentDay
+
+ date.setUTCDate(date.getUTCDate() + diff)
+ return date
+}
diff --git a/date-fns/src/_lib/setUTCISODay/test.js b/date-fns/src/_lib/setUTCISODay/test.js
new file mode 100644
index 0000000..11b6019
--- /dev/null
+++ b/date-fns/src/_lib/setUTCISODay/test.js
@@ -0,0 +1,79 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import setUTCISODay from '.'
+
+describe('setUTCISODay', function () {
+ it('sets the day of the ISO week', function () {
+ var result = setUTCISODay(new Date(Date.UTC(2014, 8 /* Sep */, 1)), 3)
+ assert.deepEqual(result, new Date(Date.UTC(2014, 8 /* Sep */, 3)))
+ })
+
+ it('sets the day to Sunday of this ISO week if the index is 7', function () {
+ var result = setUTCISODay(new Date(Date.UTC(2014, 8 /* Sep */, 1)), 7)
+ assert.deepEqual(result, new Date(Date.UTC(2014, 8 /* Sep */, 7)))
+ })
+
+ describe('the day index is more than 7', function () {
+ it('sets the day of the next ISO week', function () {
+ var result = setUTCISODay(new Date(Date.UTC(2014, 8 /* Sep */, 1)), 8)
+ assert.deepEqual(result, new Date(Date.UTC(2014, 8 /* Sep */, 8)))
+ })
+
+ it('sets the day of another ISO week in the future', function () {
+ var result = setUTCISODay(new Date(Date.UTC(2014, 8 /* Sep */, 1)), 21)
+ assert.deepEqual(result, new Date(Date.UTC(2014, 8 /* Sep */, 21)))
+ })
+ })
+
+ describe('the day index is less than 1', function () {
+ it('sets the day of the last ISO week', function () {
+ var result = setUTCISODay(new Date(Date.UTC(2014, 8 /* Sep */, 1)), 0)
+ assert.deepEqual(result, new Date(Date.UTC(2014, 7 /* Aug */, 31)))
+ })
+
+ it('set the day of another ISO week in the past', function () {
+ var result = setUTCISODay(new Date(Date.UTC(2014, 8 /* Sep */, 1)), -13)
+ assert.deepEqual(result, new Date(Date.UTC(2014, 7 /* Aug */, 18)))
+ })
+ })
+
+ it('accepts a timestamp', function () {
+ var result = setUTCISODay(
+ new Date(Date.UTC(2014, 8 /* Sep */, 1)).getTime(),
+ 3
+ )
+ assert.deepEqual(result, new Date(Date.UTC(2014, 8 /* Sep */, 3)))
+ })
+
+ it('converts a fractional number to an integer', function () {
+ var result = setUTCISODay(new Date(Date.UTC(2014, 8 /* Sep */, 1)), 3.33)
+ assert.deepEqual(result, new Date(Date.UTC(2014, 8 /* Sep */, 3)))
+ })
+
+ it('implicitly converts number arguments', function () {
+ var result = setUTCISODay(new Date(Date.UTC(2014, 8 /* Sep */, 1)), '3')
+ assert.deepEqual(result, new Date(Date.UTC(2014, 8 /* Sep */, 3)))
+ })
+
+ it('does not mutate the original date', function () {
+ var date = new Date(Date.UTC(2014, 8 /* Sep */, 1))
+ setUTCISODay(date, 3)
+ assert.deepEqual(date, new Date(Date.UTC(2014, 8 /* Sep */, 1)))
+ })
+
+ it('returns `Invalid Date` if the given date is invalid', function () {
+ var result = setUTCISODay(new Date(NaN), 3)
+ assert(result instanceof Date && isNaN(result))
+ })
+
+ it('returns `Invalid Date` if the given amount is NaN', function () {
+ var result = setUTCISODay(new Date(2014, 8 /* Sep */, 1), NaN)
+ assert(result instanceof Date && isNaN(result))
+ })
+
+ it('throws TypeError exception if passed less than 1 argument', function () {
+ assert.throws(setUTCISODay.bind(null, 1), TypeError)
+ })
+})
diff --git a/date-fns/src/_lib/setUTCISOWeek/index.js b/date-fns/src/_lib/setUTCISOWeek/index.js
new file mode 100644
index 0000000..99ce6da
--- /dev/null
+++ b/date-fns/src/_lib/setUTCISOWeek/index.js
@@ -0,0 +1,16 @@
+import toInteger from '../toInteger/index'
+import toDate from '../../toDate/index'
+import getUTCISOWeek from '../getUTCISOWeek/index'
+import requiredArgs from '../requiredArgs/index'
+
+// This function will be a part of public API when UTC function will be implemented.
+// See issue: https://github.com/date-fns/date-fns/issues/376
+export default function setUTCISOWeek(dirtyDate, dirtyISOWeek) {
+ requiredArgs(2, arguments)
+
+ var date = toDate(dirtyDate)
+ var isoWeek = toInteger(dirtyISOWeek)
+ var diff = getUTCISOWeek(date) - isoWeek
+ date.setUTCDate(date.getUTCDate() - diff * 7)
+ return date
+}
diff --git a/date-fns/src/_lib/setUTCISOWeek/test.js b/date-fns/src/_lib/setUTCISOWeek/test.js
new file mode 100644
index 0000000..07b7276
--- /dev/null
+++ b/date-fns/src/_lib/setUTCISOWeek/test.js
@@ -0,0 +1,61 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import setUTCISOWeek from '.'
+
+describe('setUTCISOWeek', function() {
+ it('sets the ISO week', function() {
+ var result = setUTCISOWeek(new Date(Date.UTC(2004, 7 /* Aug */, 7)), 53)
+ assert.deepEqual(result, new Date(Date.UTC(2005, 0 /* Jan */, 1)))
+ })
+
+ it('accepts a timestamp', function() {
+ var result = setUTCISOWeek(
+ new Date(Date.UTC(2009, 11 /* Dec */, 2)).getTime(),
+ 1
+ )
+ assert.deepEqual(result, new Date(Date.UTC(2008, 11 /* Dec */, 31)))
+ })
+
+ it('converts a fractional number to an integer', function() {
+ var result = setUTCISOWeek(new Date(Date.UTC(2004, 7 /* Aug */, 7)), 53.53)
+ assert.deepEqual(result, new Date(Date.UTC(2005, 0 /* Jan */, 1)))
+ })
+
+ it('implicitly converts number arguments', function() {
+ var result = setUTCISOWeek(new Date(Date.UTC(2004, 7 /* Aug */, 7)), '53')
+ assert.deepEqual(result, new Date(Date.UTC(2005, 0 /* Jan */, 1)))
+ })
+
+ it('does not mutate the original date', function() {
+ var date = new Date(Date.UTC(2014, 6 /* Jul */, 2))
+ setUTCISOWeek(date, 52)
+ assert.deepEqual(date, new Date(Date.UTC(2014, 6 /* Jul */, 2)))
+ })
+
+ it('handles dates before 100 AD', function() {
+ var initialDate = new Date(0)
+ initialDate.setUTCFullYear(4, 0 /* Jan */, 4)
+ initialDate.setUTCHours(0, 0, 0, 0)
+ var expectedResult = new Date(0)
+ expectedResult.setUTCFullYear(4, 11 /* Dec */, 26)
+ expectedResult.setUTCHours(0, 0, 0, 0)
+ var result = setUTCISOWeek(initialDate, 52)
+ assert.deepEqual(result, expectedResult)
+ })
+
+ it('returns `Invalid Date` if the given date is invalid', function() {
+ var result = setUTCISOWeek(new Date(NaN), 53)
+ assert(result instanceof Date && isNaN(result))
+ })
+
+ it('returns `Invalid Date` if the given amount is NaN', function() {
+ var result = setUTCISOWeek(new Date(2004, 7 /* Aug */, 7), NaN)
+ assert(result instanceof Date && isNaN(result))
+ })
+
+ it('throws TypeError exception if passed less than 1 argument', function() {
+ assert.throws(setUTCISOWeek.bind(null, 1), TypeError)
+ })
+})
diff --git a/date-fns/src/_lib/setUTCWeek/index.js b/date-fns/src/_lib/setUTCWeek/index.js
new file mode 100644
index 0000000..606d817
--- /dev/null
+++ b/date-fns/src/_lib/setUTCWeek/index.js
@@ -0,0 +1,16 @@
+import toInteger from '../toInteger/index'
+import toDate from '../../toDate/index'
+import getUTCWeek from '../getUTCWeek/index'
+import requiredArgs from '../requiredArgs/index'
+
+// This function will be a part of public API when UTC function will be implemented.
+// See issue: https://github.com/date-fns/date-fns/issues/376
+export default function setUTCWeek(dirtyDate, dirtyWeek, options) {
+ requiredArgs(2, arguments)
+
+ var date = toDate(dirtyDate)
+ var week = toInteger(dirtyWeek)
+ var diff = getUTCWeek(date, options) - week
+ date.setUTCDate(date.getUTCDate() - diff * 7)
+ return date
+}
diff --git a/date-fns/src/_lib/setUTCWeek/test.js b/date-fns/src/_lib/setUTCWeek/test.js
new file mode 100644
index 0000000..58aea10
--- /dev/null
+++ b/date-fns/src/_lib/setUTCWeek/test.js
@@ -0,0 +1,95 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import setUTCWeek from '.'
+
+describe('setUTCWeek', function() {
+ it('sets the local week', function() {
+ var result = setUTCWeek(new Date(Date.UTC(2005, 0 /* Jan */, 2)), 1)
+ assert.deepEqual(result, new Date(Date.UTC(2004, 11 /* Dec */, 26)))
+ })
+
+ it('accepts a timestamp', function() {
+ var result = setUTCWeek(Date.UTC(2009, 11 /* Dec */, 2), 1)
+ assert.deepEqual(result, new Date(Date.UTC(2008, 11 /* Dec */, 31)))
+ })
+
+ it('converts a fractional number to an integer', function() {
+ var result = setUTCWeek(new Date(Date.UTC(2005, 0 /* Jan */, 2)), 1.1)
+ assert.deepEqual(result, new Date(Date.UTC(2004, 11 /* Dec */, 26)))
+ })
+
+ it('implicitly converts number arguments', function() {
+ var result = setUTCWeek(new Date(Date.UTC(2004, 7 /* Aug */, 7)), '53')
+ assert.deepEqual(result, new Date(Date.UTC(2005, 0 /* Jan */, 1)))
+ })
+
+ it('does not mutate the original date', function() {
+ var date = new Date(2014, 6 /* Jul */, 2)
+ setUTCWeek(date, 52)
+ assert.deepEqual(date, new Date(2014, 6 /* Jul */, 2))
+ })
+
+ it('handles dates before 100 AD', function() {
+ var initialDate = new Date(0)
+ initialDate.setUTCFullYear(4, 0 /* Jan */, 4)
+ initialDate.setUTCHours(0, 0, 0, 0)
+ var expectedResult = new Date(0)
+ expectedResult.setUTCFullYear(4, 11 /* Dec */, 19)
+ expectedResult.setUTCHours(0, 0, 0, 0)
+ var result = setUTCWeek(initialDate, 52)
+ assert.deepEqual(result, expectedResult)
+ })
+
+ it('returns `Invalid Date` if the given date is invalid', function() {
+ var result = setUTCWeek(new Date(NaN), 53)
+ assert(result instanceof Date && isNaN(result))
+ })
+
+ it('returns `Invalid Date` if the given amount is NaN', function() {
+ var result = setUTCWeek(new Date(2004, 7 /* Aug */, 7), NaN)
+ assert(result instanceof Date && isNaN(result))
+ })
+
+ it('allows to specify `weekStartsOn` and `firstWeekContainsDate` in locale', function() {
+ var date = new Date(Date.UTC(2005, 0 /* Jan */, 2))
+ var result = setUTCWeek(date, 1, {
+ locale: {
+ options: { weekStartsOn: 1, firstWeekContainsDate: 4 }
+ }
+ })
+ assert.deepEqual(result, new Date(Date.UTC(2004, 0 /* Jan */, 4)))
+ })
+
+ it('`options.weekStartsOn` overwrites the first day of the week specified in locale', function() {
+ var date = new Date(Date.UTC(2005, 0 /* Jan */, 2))
+ var result = setUTCWeek(date, 1, {
+ weekStartsOn: 1,
+ firstWeekContainsDate: 4,
+ locale: {
+ options: { weekStartsOn: 0, firstWeekContainsDate: 1 }
+ }
+ })
+ assert.deepEqual(result, new Date(Date.UTC(2004, 0 /* Jan */, 4)))
+ })
+
+ it('throws `RangeError` if `options.weekStartsOn` is not convertable to 0, 1, ..., 6 or undefined', function() {
+ var block = setUTCWeek.bind(null, new Date(2004, 7 /* Aug */, 7), 53, {
+ weekStartsOn: NaN
+ })
+ assert.throws(block, RangeError)
+ })
+
+ it('throws `RangeError` if `options.firstWeekContainsDate` is not convertable to 1, 2, ..., 7 or undefined', function() {
+ var block = setUTCWeek.bind(null, new Date(2004, 7 /* Aug */, 7), 53, {
+ firstWeekContainsDate: NaN
+ })
+ assert.throws(block, RangeError)
+ })
+
+ it('throws TypeError exception if passed less than 2 arguments', function() {
+ assert.throws(setUTCWeek.bind(null), TypeError)
+ assert.throws(setUTCWeek.bind(null, 1), TypeError)
+ })
+})
diff --git a/date-fns/src/_lib/startOfUTCISOWeek/index.js b/date-fns/src/_lib/startOfUTCISOWeek/index.js
new file mode 100644
index 0000000..4633c38
--- /dev/null
+++ b/date-fns/src/_lib/startOfUTCISOWeek/index.js
@@ -0,0 +1,18 @@
+import toDate from '../../toDate/index'
+import requiredArgs from '../requiredArgs/index'
+
+// This function will be a part of public API when UTC function will be implemented.
+// See issue: https://github.com/date-fns/date-fns/issues/376
+export default function startOfUTCISOWeek(dirtyDate) {
+ requiredArgs(1, arguments)
+
+ var weekStartsOn = 1
+
+ var date = toDate(dirtyDate)
+ var day = date.getUTCDay()
+ var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn
+
+ date.setUTCDate(date.getUTCDate() - diff)
+ date.setUTCHours(0, 0, 0, 0)
+ return date
+}
diff --git a/date-fns/src/_lib/startOfUTCISOWeek/test.js b/date-fns/src/_lib/startOfUTCISOWeek/test.js
new file mode 100644
index 0000000..1c93535
--- /dev/null
+++ b/date-fns/src/_lib/startOfUTCISOWeek/test.js
@@ -0,0 +1,34 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import startOfUTCISOWeek from '.'
+
+describe('startOfUTCISOWeek', function() {
+ it('returns the date with the time set to 00:00:00 and the date set to the first day of an ISO week', function() {
+ var date = new Date(Date.UTC(2014, 8 /* Sep */, 2, 11, 55, 0))
+ var result = startOfUTCISOWeek(date)
+ assert.deepEqual(result, new Date(Date.UTC(2014, 8 /* Sep */, 1)))
+ })
+
+ it('accepts a timestamp', function() {
+ var date = new Date(Date.UTC(2014, 1 /* Feb */, 11, 11, 55, 0)).getTime()
+ var result = startOfUTCISOWeek(date)
+ assert.deepEqual(result, new Date(Date.UTC(2014, 1 /* Feb */, 10)))
+ })
+
+ it('does not mutate the original date', function() {
+ var date = new Date(Date.UTC(2014, 8 /* Sep */, 2, 11, 55, 0))
+ startOfUTCISOWeek(date)
+ assert.deepEqual(date, new Date(Date.UTC(2014, 8 /* Sep */, 2, 11, 55, 0)))
+ })
+
+ it('returns `Invalid Date` if the given date is invalid', function() {
+ var result = startOfUTCISOWeek(new Date(NaN))
+ assert(result instanceof Date && isNaN(result))
+ })
+
+ it('throws TypeError exception if passed less than 1 argument', function() {
+ assert.throws(startOfUTCISOWeek.bind(null), TypeError)
+ })
+})
diff --git a/date-fns/src/_lib/startOfUTCISOWeekYear/index.js b/date-fns/src/_lib/startOfUTCISOWeekYear/index.js
new file mode 100644
index 0000000..db3313c
--- /dev/null
+++ b/date-fns/src/_lib/startOfUTCISOWeekYear/index.js
@@ -0,0 +1,16 @@
+import getUTCISOWeekYear from '../getUTCISOWeekYear/index'
+import startOfUTCISOWeek from '../startOfUTCISOWeek/index'
+import requiredArgs from '../requiredArgs/index'
+
+// This function will be a part of public API when UTC function will be implemented.
+// See issue: https://github.com/date-fns/date-fns/issues/376
+export default function startOfUTCISOWeekYear(dirtyDate) {
+ requiredArgs(1, arguments)
+
+ var year = getUTCISOWeekYear(dirtyDate)
+ var fourthOfJanuary = new Date(0)
+ fourthOfJanuary.setUTCFullYear(year, 0, 4)
+ fourthOfJanuary.setUTCHours(0, 0, 0, 0)
+ var date = startOfUTCISOWeek(fourthOfJanuary)
+ return date
+}
diff --git a/date-fns/src/_lib/startOfUTCISOWeekYear/test.js b/date-fns/src/_lib/startOfUTCISOWeekYear/test.js
new file mode 100644
index 0000000..5d0485f
--- /dev/null
+++ b/date-fns/src/_lib/startOfUTCISOWeekYear/test.js
@@ -0,0 +1,58 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import startOfUTCISOWeekYear from '.'
+
+describe('startOfUTCISOWeekYear', function() {
+ it('returns the date with the time set to 00:00:00 and the date set to the first day of an ISO year', function() {
+ var result = startOfUTCISOWeekYear(
+ new Date(Date.UTC(2009, 0 /* Jan */, 1, 16, 0))
+ )
+ assert.deepEqual(
+ result,
+ new Date(Date.UTC(2008, 11 /* Dec */, 29, 0, 0, 0, 0))
+ )
+ })
+
+ it('accepts a timestamp', function() {
+ var result = startOfUTCISOWeekYear(
+ new Date(Date.UTC(2005, 0 /* Jan */, 1, 6, 0)).getTime()
+ )
+ assert.deepEqual(
+ result,
+ new Date(Date.UTC(2003, 11 /* Dec */, 29, 0, 0, 0, 0))
+ )
+ })
+
+ it('does not mutate the original date', function() {
+ var date = new Date(Date.UTC(2014, 6 /* Jul */, 2))
+ startOfUTCISOWeekYear(date)
+ assert.deepEqual(date, new Date(Date.UTC(2014, 6 /* Jul */, 2)))
+ })
+
+ it('handles dates before 100 AD', function() {
+ var initialDate = new Date(0)
+ initialDate.setUTCFullYear(9, 0 /* Jan */, 1)
+ initialDate.setUTCHours(0, 0, 0, 0)
+ var expectedResult = new Date(0)
+ expectedResult.setUTCFullYear(8, 11 /* Dec */, 29)
+ expectedResult.setUTCHours(0, 0, 0, 0)
+ var result = startOfUTCISOWeekYear(initialDate)
+ assert.deepEqual(result, expectedResult)
+ })
+
+ it('correctly handles years in which 4 January is Sunday', function() {
+ var result = startOfUTCISOWeekYear(new Date(Date.UTC(2009, 6 /* Jul */, 2)))
+ assert.deepEqual(result, new Date(Date.UTC(2008, 11 /* Dec */, 29)))
+ })
+
+ it('returns `Invalid Date` if the given date is invalid', function() {
+ var result = startOfUTCISOWeekYear(new Date(NaN))
+ assert(result instanceof Date && isNaN(result))
+ })
+
+ it('throws TypeError exception if passed less than 1 argument', function() {
+ assert.throws(startOfUTCISOWeekYear.bind(null), TypeError)
+ })
+})
diff --git a/date-fns/src/_lib/startOfUTCWeek/index.js b/date-fns/src/_lib/startOfUTCWeek/index.js
new file mode 100644
index 0000000..fb5db75
--- /dev/null
+++ b/date-fns/src/_lib/startOfUTCWeek/index.js
@@ -0,0 +1,33 @@
+import toInteger from '../toInteger/index'
+import toDate from '../../toDate/index'
+import requiredArgs from '../requiredArgs/index'
+
+// This function will be a part of public API when UTC function will be implemented.
+// See issue: https://github.com/date-fns/date-fns/issues/376
+export default function startOfUTCWeek(dirtyDate, dirtyOptions) {
+ requiredArgs(1, arguments)
+
+ var options = dirtyOptions || {}
+ var locale = options.locale
+ var localeWeekStartsOn =
+ locale && locale.options && locale.options.weekStartsOn
+ var defaultWeekStartsOn =
+ localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn)
+ var weekStartsOn =
+ options.weekStartsOn == null
+ ? defaultWeekStartsOn
+ : toInteger(options.weekStartsOn)
+
+ // Test if weekStartsOn is between 0 and 6 _and_ is not NaN
+ if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {
+ throw new RangeError('weekStartsOn must be between 0 and 6 inclusively')
+ }
+
+ var date = toDate(dirtyDate)
+ var day = date.getUTCDay()
+ var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn
+
+ date.setUTCDate(date.getUTCDate() - diff)
+ date.setUTCHours(0, 0, 0, 0)
+ return date
+}
diff --git a/date-fns/src/_lib/startOfUTCWeek/test.js b/date-fns/src/_lib/startOfUTCWeek/test.js
new file mode 100644
index 0000000..15680f0
--- /dev/null
+++ b/date-fns/src/_lib/startOfUTCWeek/test.js
@@ -0,0 +1,108 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import startOfUTCWeek from '.'
+
+describe('startOfUTCWeek', function () {
+ it('returns the date with the time set to 00:00:00 and the date set to the first day of a week', function () {
+ var date = new Date(Date.UTC(2014, 8 /* Sep */, 2, 11, 55, 0))
+ var result = startOfUTCWeek(date)
+ assert.deepEqual(result, new Date(Date.UTC(2014, 7 /* Aug */, 31)))
+ })
+
+ it('allows to specify which day is the first day of the week', function () {
+ var date = new Date(Date.UTC(2014, 8 /* Sep */, 2, 11, 55, 0))
+ var result = startOfUTCWeek(date, { weekStartsOn: 1 })
+ assert.deepEqual(result, new Date(Date.UTC(2014, 8 /* Sep */, 1)))
+ })
+
+ it('allows to specify which day is the first day of the week in locale', function () {
+ var date = new Date(Date.UTC(2014, 8 /* Sep */, 2, 11, 55, 0))
+ var result = startOfUTCWeek(date, {
+ locale: {
+ options: { weekStartsOn: 1 },
+ },
+ })
+ assert.deepEqual(result, new Date(Date.UTC(2014, 8 /* Sep */, 1)))
+ })
+
+ it('`options.weekStartsOn` overwrites the first day of the week specified in locale', function () {
+ var date = new Date(Date.UTC(2014, 8 /* Sep */, 2, 11, 55, 0))
+ var result = startOfUTCWeek(date, {
+ weekStartsOn: 1,
+ locale: {
+ options: { weekStartsOn: 0 },
+ },
+ })
+ assert.deepEqual(result, new Date(Date.UTC(2014, 8 /* Sep */, 1)))
+ })
+
+ it('implicitly converts options', function () {
+ var date = new Date(Date.UTC(2014, 8 /* Sep */, 2, 11, 55, 0))
+ var result = startOfUTCWeek(date, { weekStartsOn: '1' })
+ assert.deepEqual(result, new Date(Date.UTC(2014, 8 /* Sep */, 1)))
+ })
+
+ it('accepts a timestamp', function () {
+ var date = new Date(Date.UTC(2014, 8 /* Sep */, 2, 11, 55, 0)).getTime()
+ var result = startOfUTCWeek(date)
+ assert.deepEqual(result, new Date(Date.UTC(2014, 7 /* Aug */, 31)))
+ })
+
+ it('does not mutate the original date', function () {
+ var date = new Date(Date.UTC(2014, 8 /* Sep */, 2, 11, 55, 0))
+ startOfUTCWeek(date)
+ assert.deepEqual(date, new Date(Date.UTC(2014, 8 /* Sep */, 2, 11, 55, 0)))
+ })
+
+ describe('edge cases', function () {
+ describe('when the given day is before the start of a week', function () {
+ it('it returns the start of a week', function () {
+ var date = new Date(Date.UTC(2014, 9 /* Oct */, 6))
+ var result = startOfUTCWeek(date, { weekStartsOn: 3 })
+ assert.deepEqual(result, new Date(Date.UTC(2014, 9 /* Oct */, 1)))
+ })
+ })
+
+ describe('when the given day is the start of a week', function () {
+ it('it returns the start of a week', function () {
+ var date = new Date(Date.UTC(2014, 9 /* Oct */, 8))
+ var result = startOfUTCWeek(date, { weekStartsOn: 3 })
+ assert.deepEqual(result, new Date(Date.UTC(2014, 9 /* Oct */, 8)))
+ })
+ })
+
+ describe('when the given day is after the start of a week', function () {
+ it('it returns the start of a week', function () {
+ var date = new Date(Date.UTC(2014, 9 /* Oct */, 10))
+ var result = startOfUTCWeek(date, { weekStartsOn: 3 })
+ assert.deepEqual(result, new Date(Date.UTC(2014, 9 /* Oct */, 8)))
+ })
+ })
+
+ it('handles the week at the start of a year', function () {
+ var date = new Date(Date.UTC(2014, 0 /* Jan */, 1))
+ var result = startOfUTCWeek(date)
+ assert.deepEqual(result, new Date(Date.UTC(2013, 11 /* Dec */, 29)))
+ })
+ })
+
+ it('returns `Invalid Date` if the given date is invalid', function () {
+ var result = startOfUTCWeek(new Date(NaN))
+ assert(result instanceof Date && isNaN(result))
+ })
+
+ it('throws `RangeError` if `options.weekStartsOn` is not convertable to 0, 1, ..., 6 or undefined', function () {
+ var block = startOfUTCWeek.bind(
+ null,
+ new Date(Date.UTC(2014, 8 /* Sep */, 2, 11, 55, 0)),
+ { weekStartsOn: NaN }
+ )
+ assert.throws(block, RangeError)
+ })
+
+ it('throws TypeError exception if passed less than 1 argument', function () {
+ assert.throws(startOfUTCWeek.bind(null), TypeError)
+ })
+})
diff --git a/date-fns/src/_lib/startOfUTCWeekYear/index.js b/date-fns/src/_lib/startOfUTCWeekYear/index.js
new file mode 100644
index 0000000..5b505db
--- /dev/null
+++ b/date-fns/src/_lib/startOfUTCWeekYear/index.js
@@ -0,0 +1,30 @@
+import toInteger from '../toInteger/index'
+import getUTCWeekYear from '../getUTCWeekYear/index'
+import startOfUTCWeek from '../startOfUTCWeek/index'
+import requiredArgs from '../requiredArgs/index'
+
+// This function will be a part of public API when UTC function will be implemented.
+// See issue: https://github.com/date-fns/date-fns/issues/376
+export default function startOfUTCWeekYear(dirtyDate, dirtyOptions) {
+ requiredArgs(1, arguments)
+
+ var options = dirtyOptions || {}
+ var locale = options.locale
+ var localeFirstWeekContainsDate =
+ locale && locale.options && locale.options.firstWeekContainsDate
+ var defaultFirstWeekContainsDate =
+ localeFirstWeekContainsDate == null
+ ? 1
+ : toInteger(localeFirstWeekContainsDate)
+ var firstWeekContainsDate =
+ options.firstWeekContainsDate == null
+ ? defaultFirstWeekContainsDate
+ : toInteger(options.firstWeekContainsDate)
+
+ var year = getUTCWeekYear(dirtyDate, dirtyOptions)
+ var firstWeek = new Date(0)
+ firstWeek.setUTCFullYear(year, 0, firstWeekContainsDate)
+ firstWeek.setUTCHours(0, 0, 0, 0)
+ var date = startOfUTCWeek(firstWeek, dirtyOptions)
+ return date
+}
diff --git a/date-fns/src/_lib/startOfUTCWeekYear/test.js b/date-fns/src/_lib/startOfUTCWeekYear/test.js
new file mode 100644
index 0000000..73bb518
--- /dev/null
+++ b/date-fns/src/_lib/startOfUTCWeekYear/test.js
@@ -0,0 +1,95 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import startOfUTCWeekYear from '.'
+
+describe('startOfUTCWeekYear', function() {
+ it('returns the date with the time set to 00:00:00 and the date set to the first day of a week year', function() {
+ var result = startOfUTCWeekYear(new Date(Date.UTC(2005, 6 /* Jul */, 2)))
+ assert.deepEqual(
+ result,
+ new Date(Date.UTC(2004, 11 /* Dec */, 26, 0, 0, 0, 0))
+ )
+ })
+
+ it('accepts a timestamp', function() {
+ var result = startOfUTCWeekYear(Date.UTC(2005, 0 /* Jan */, 1, 6, 0))
+ assert.deepEqual(
+ result,
+ new Date(Date.UTC(2004, 11 /* Dec */, 26, 0, 0, 0, 0))
+ )
+ })
+
+ it('does not mutate the original date', function() {
+ var date = new Date(Date.UTC(2014, 6 /* Jul */, 2))
+ startOfUTCWeekYear(date)
+ assert.deepEqual(date, new Date(Date.UTC(2014, 6 /* Jul */, 2)))
+ })
+
+ it('handles dates before 100 AD', function() {
+ var initialDate = new Date(0)
+ initialDate.setUTCFullYear(9, 0 /* Jan */, 1)
+ initialDate.setUTCHours(0, 0, 0, 0)
+ var expectedResult = new Date(0)
+ expectedResult.setUTCFullYear(8, 11 /* Dec */, 28)
+ expectedResult.setUTCHours(0, 0, 0, 0)
+ var result = startOfUTCWeekYear(initialDate)
+ assert.deepEqual(result, expectedResult)
+ })
+
+ it('returns `Invalid Date` if the given date is invalid', function() {
+ var result = startOfUTCWeekYear(new Date(NaN))
+ assert(result instanceof Date && isNaN(result))
+ })
+
+ it('allows to specify `weekStartsOn` and `firstWeekContainsDate` in locale', function() {
+ var date = new Date(Date.UTC(2005, 6 /* Jul */, 2))
+ var result = startOfUTCWeekYear(date, {
+ locale: {
+ options: { weekStartsOn: 1, firstWeekContainsDate: 4 }
+ }
+ })
+ assert.deepEqual(
+ result,
+ new Date(Date.UTC(2005, 0 /* Jan */, 3, 0, 0, 0, 0))
+ )
+ })
+
+ it('`options.weekStartsOn` overwrites the first day of the week specified in locale', function() {
+ var date = new Date(2005, 6 /* Jul */, 2)
+ var result = startOfUTCWeekYear(date, {
+ weekStartsOn: 1,
+ firstWeekContainsDate: 4,
+ locale: {
+ options: { weekStartsOn: 0, firstWeekContainsDate: 1 }
+ }
+ })
+ assert.deepEqual(
+ result,
+ new Date(Date.UTC(2005, 0 /* Jan */, 3, 0, 0, 0, 0))
+ )
+ })
+
+ it('throws `RangeError` if `options.weekStartsOn` is not convertable to 0, 1, ..., 6 or undefined', function() {
+ var block = startOfUTCWeekYear.bind(
+ null,
+ new Date(2007, 11 /* Dec */, 31),
+ { weekStartsOn: NaN }
+ )
+ assert.throws(block, RangeError)
+ })
+
+ it('throws `RangeError` if `options.firstWeekContainsDate` is not convertable to 1, 2, ..., 7 or undefined', function() {
+ var block = startOfUTCWeekYear.bind(
+ null,
+ new Date(2007, 11 /* Dec */, 31),
+ { firstWeekContainsDate: NaN }
+ )
+ assert.throws(block, RangeError)
+ })
+
+ it('throws TypeError exception if passed less than 1 argument', function() {
+ assert.throws(startOfUTCWeekYear.bind(null), TypeError)
+ })
+})
diff --git a/date-fns/src/_lib/test/index.ts b/date-fns/src/_lib/test/index.ts
new file mode 100644
index 0000000..ecd8f8c
--- /dev/null
+++ b/date-fns/src/_lib/test/index.ts
@@ -0,0 +1 @@
+export function assertType<T>(_: T) {}
diff --git a/date-fns/src/_lib/toInteger/index.ts b/date-fns/src/_lib/toInteger/index.ts
new file mode 100644
index 0000000..e9a9359
--- /dev/null
+++ b/date-fns/src/_lib/toInteger/index.ts
@@ -0,0 +1,13 @@
+export default function toInteger(dirtyNumber: unknown) {
+ if (dirtyNumber === null || dirtyNumber === true || dirtyNumber === false) {
+ return NaN
+ }
+
+ const number = Number(dirtyNumber)
+
+ if (isNaN(number)) {
+ return number
+ }
+
+ return number < 0 ? Math.ceil(number) : Math.floor(number)
+}
diff --git a/date-fns/src/_lib/toInteger/test.js b/date-fns/src/_lib/toInteger/test.js
new file mode 100644
index 0000000..6542890
--- /dev/null
+++ b/date-fns/src/_lib/toInteger/test.js
@@ -0,0 +1,64 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import toInteger from '.'
+
+describe('toInteger', function () {
+ it('truncates positive numbers', function () {
+ var result = toInteger(10.99)
+ assert(result === 10)
+ })
+
+ it('truncates negative numbers', function () {
+ var result = toInteger(-5.5)
+ assert(result === -5)
+ })
+
+ it('converts convertable strings', function () {
+ var result = toInteger('-10.75')
+ assert(result === -10)
+ })
+
+ it('returns NaN for non-convertable strings', function () {
+ var result = toInteger('Foobar')
+ assert(typeof result === 'number' && isNaN(result))
+ })
+
+ it('returns NaN for false', function () {
+ var result = toInteger(false)
+ assert(typeof result === 'number' && isNaN(result))
+ })
+
+ it('returns NaN for true', function () {
+ var result = toInteger(true)
+ assert(typeof result === 'number' && isNaN(result))
+ })
+
+ it('returns NaN for null', function () {
+ var result = toInteger(null)
+ assert(typeof result === 'number' && isNaN(result))
+ })
+
+ it('returns NaN for undefined', function () {
+ var result = toInteger(undefined)
+ assert(typeof result === 'number' && isNaN(result))
+ })
+
+ it('returns NaN for NaN', function () {
+ var result = toInteger(NaN)
+ assert(typeof result === 'number' && isNaN(result))
+ })
+
+ it('converts convertable objects', function () {
+ // eslint-disable-next-line no-new-wrappers
+ var result = toInteger(new Number(123))
+ assert(result === 123)
+ })
+
+ it('returns NaN for non-convertable objects', function () {
+ // eslint-disable-next-line no-new-wrappers
+ var result = toInteger({})
+ assert(typeof result === 'number' && isNaN(result))
+ })
+})
diff --git a/date-fns/src/add/benchmark.js b/date-fns/src/add/benchmark.js
new file mode 100644
index 0000000..20544ae
--- /dev/null
+++ b/date-fns/src/add/benchmark.js
@@ -0,0 +1,25 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import add from '.'
+import moment from 'moment'
+
+suite(
+ 'add',
+ function() {
+ benchmark('date-fns', function() {
+ return add(this.date, { hours: 5, minutes: 10 })
+ })
+
+ benchmark('Moment.js', function() {
+ return this.moment.add({ hours: 5, minutes: 10 }, 'seconds')
+ })
+ },
+ {
+ setup: function() {
+ this.date = new Date()
+ this.moment = moment()
+ }
+ }
+)
diff --git a/date-fns/src/add/index.d.ts b/date-fns/src/add/index.d.ts
new file mode 100644
index 0000000..f620aa0
--- /dev/null
+++ b/date-fns/src/add/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { add } from 'date-fns'
+export default add
diff --git a/date-fns/src/add/index.js.flow b/date-fns/src/add/index.js.flow
new file mode 100644
index 0000000..e79df7c
--- /dev/null
+++ b/date-fns/src/add/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (date: Date | number, duration: Duration) => Date
diff --git a/date-fns/src/add/index.ts b/date-fns/src/add/index.ts
new file mode 100644
index 0000000..5a4f019
--- /dev/null
+++ b/date-fns/src/add/index.ts
@@ -0,0 +1,79 @@
+import addDays from '../addDays/index'
+import addMonths from '../addMonths/index'
+import toDate from '../toDate/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+import toInteger from '../_lib/toInteger/index'
+import { Duration } from '../types'
+
+/**
+ * @name add
+ * @category Common Helpers
+ * @summary Add the specified years, months, weeks, days, hours, minutes and seconds to the given date.
+ *
+ * @description
+ * Add the specified years, months, weeks, days, hours, minutes and seconds to the given date.
+ *
+ * @param {Date|Number} date - the date to be changed
+ * @param {Duration} duration - the object with years, months, weeks, days, hours, minutes and seconds to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.
+ *
+ * | Key | Description |
+ * |----------------|------------------------------------|
+ * | years | Amount of years to be added |
+ * | months | Amount of months to be added |
+ * | weeks | Amount of weeks to be added |
+ * | days | Amount of days to be added |
+ * | hours | Amount of hours to be added |
+ * | minutes | Amount of minutes to be added |
+ * | seconds | Amount of seconds to be added |
+ *
+ * All values default to 0
+ *
+ * @returns {Date} the new date with the seconds added
+ * @throws {TypeError} 2 arguments required
+ *
+ * @example
+ * // Add the following duration to 1 September 2014, 10:19:50
+ * const result = add(new Date(2014, 8, 1, 10, 19, 50), {
+ * years: 2,
+ * months: 9,
+ * weeks: 1,
+ * days: 7,
+ * hours: 5,
+ * minutes: 9,
+ * seconds: 30,
+ * })
+ * //=> Thu Jun 15 2017 15:29:20
+ */
+export default function add(
+ dirtyDate: Date | number,
+ duration: Duration
+): Date {
+ requiredArgs(2, arguments)
+
+ if (!duration || typeof duration !== 'object') return new Date(NaN)
+
+ const years = 'years' in duration ? toInteger(duration.years) : 0
+ const months = 'months' in duration ? toInteger(duration.months) : 0
+ const weeks = 'weeks' in duration ? toInteger(duration.weeks) : 0
+ const days = 'days' in duration ? toInteger(duration.days) : 0
+ const hours = 'hours' in duration ? toInteger(duration.hours) : 0
+ const minutes = 'minutes' in duration ? toInteger(duration.minutes) : 0
+ const seconds = 'seconds' in duration ? toInteger(duration.seconds) : 0
+
+ // Add years and months
+ const date = toDate(dirtyDate)
+ const dateWithMonths =
+ months || years ? addMonths(date, months + years * 12) : date
+
+ // Add weeks and days
+ const dateWithDays =
+ days || weeks ? addDays(dateWithMonths, days + weeks * 7) : dateWithMonths
+
+ // Add days, hours, minutes and seconds
+ const minutesToAdd = minutes + hours * 60
+ const secondsToAdd = seconds + minutesToAdd * 60
+ const msToAdd = secondsToAdd * 1000
+ const finalDate = new Date(dateWithDays.getTime() + msToAdd)
+
+ return finalDate
+}
diff --git a/date-fns/src/add/test.ts b/date-fns/src/add/test.ts
new file mode 100644
index 0000000..8c8d7a9
--- /dev/null
+++ b/date-fns/src/add/test.ts
@@ -0,0 +1,99 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'assert'
+import add from '.'
+import { getDstTransitions } from '../../test/dst/tzOffsetTransitions'
+
+describe('add', function() {
+ it('adds the values from the given object', function() {
+ const result = add(new Date(2014, 8 /* Sep */, 1, 10, 19, 50), {
+ years: 2,
+ months: 9,
+ weeks: 1,
+ days: 7,
+ hours: 5,
+ minutes: 9,
+ seconds: 30
+ })
+ assert.deepStrictEqual(result, new Date(2017, 5 /* June */, 15, 15, 29, 20))
+ })
+
+ it('returns same date object when passed empty duration values', function() {
+ const result = add(new Date(2014, 8 /* Sep */, 1, 10).getTime(), {})
+ assert.deepStrictEqual(result, new Date(2014, 8 /* Sep */, 1, 10))
+ })
+
+ it('accepts a timestamp', function() {
+ const result = add(new Date(2014, 8 /* Sep */, 1, 10).getTime(), {
+ hours: 4
+ })
+ assert.deepStrictEqual(result, new Date(2014, 8 /* Sep */, 1, 14))
+ })
+
+ it('converts a fractional number to an integer', function() {
+ const result = add(new Date(2014, 8 /* Sep */, 1, 10), { hours: 4.2 })
+ assert.deepStrictEqual(result, new Date(2014, 8 /* Sep */, 1, 14))
+ })
+
+ it('implicitly converts number arguments', function() {
+ // @ts-expect-error
+ const result = add(new Date(2014, 8 /* Sep */, 1, 10), { hours: '4.2' })
+ assert.deepStrictEqual(result, new Date(2014, 8 /* Sep */, 1, 14))
+ })
+
+ it('does not mutate the original date', function() {
+ const date = new Date(2014, 8 /* Sep */, 1, 10)
+ add(date, { hours: 4 })
+ assert.deepStrictEqual(date, new Date(2014, 8 /* Sep */, 1, 10))
+ })
+
+ it('works well if the desired month has fewer days and the provided date is in the last day of a month', function() {
+ const date = new Date(2014, 11 /* Dec */, 31)
+ const result = add(date, { months: 9 })
+ assert.deepStrictEqual(result, new Date(2015, 8 /* Sep */, 30))
+ })
+
+ const dstTransitions = getDstTransitions(2017)
+ const dstOnly = dstTransitions.start && dstTransitions.end ? it : it.skip
+ const tz = Intl.DateTimeFormat().resolvedOptions().timeZone || process.env.tz
+ const HOUR = 1000 * 60 * 60
+
+ dstOnly(
+ `works at DST-end boundary in local timezone: ${tz || '(unknown)'}`,
+ function() {
+ const date = dstTransitions.end
+ const result = add(date!, { hours: 1 })
+ assert.deepStrictEqual(result, new Date(date!.getTime() + HOUR))
+ }
+ )
+
+ it('handles dates before 100 AD', function() {
+ const initialDate = new Date(0)
+ initialDate.setFullYear(-1, 10 /* Nov */, 30)
+ initialDate.setHours(0, 0, 0, 0)
+ const expectedResult = new Date(0)
+ expectedResult.setFullYear(0, 1 /* Feb */, 29)
+ expectedResult.setHours(0, 0, 0, 0)
+ const result = add(initialDate, { months: 3 })
+ assert.deepStrictEqual(result, expectedResult)
+ })
+
+ it('returns `Invalid Date` if the given date is invalid', function() {
+ const result = add(new Date(NaN), { hours: 5 })
+ assert(result instanceof Date && isNaN(result.getTime()))
+ })
+
+ it('throws RangeError exception if passed Number as duration', function() {
+ // @ts-expect-error
+ const result = add(new Date(2014, 8, 1), 'wut')
+ assert(result instanceof Date && isNaN(result.getTime()))
+ })
+
+ it('throws TypeError exception if passed less than 2 arguments', function() {
+ // @ts-expect-error
+ assert.throws(add.bind(null), TypeError)
+ // @ts-expect-error
+ assert.throws(add.bind(null, 1), TypeError)
+ })
+})
diff --git a/date-fns/src/addBusinessDays/index.d.ts b/date-fns/src/addBusinessDays/index.d.ts
new file mode 100644
index 0000000..b1c084e
--- /dev/null
+++ b/date-fns/src/addBusinessDays/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { addBusinessDays } from 'date-fns'
+export default addBusinessDays
diff --git a/date-fns/src/addBusinessDays/index.js.flow b/date-fns/src/addBusinessDays/index.js.flow
new file mode 100644
index 0000000..f568f0d
--- /dev/null
+++ b/date-fns/src/addBusinessDays/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (date: Date | number, amount: number) => Date
diff --git a/date-fns/src/addBusinessDays/index.ts b/date-fns/src/addBusinessDays/index.ts
new file mode 100644
index 0000000..0cfdf5c
--- /dev/null
+++ b/date-fns/src/addBusinessDays/index.ts
@@ -0,0 +1,67 @@
+import isWeekend from '../isWeekend/index'
+import toDate from '../toDate/index'
+import toInteger from '../_lib/toInteger/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+import isSunday from '../isSunday/index'
+import isSaturday from '../isSaturday/index'
+
+/**
+ * @name addBusinessDays
+ * @category Day Helpers
+ * @summary Add the specified number of business days (mon - fri) to the given date.
+ *
+ * @description
+ * Add the specified number of business days (mon - fri) to the given date, ignoring weekends.
+ *
+ * @param {Date|Number} date - the date to be changed
+ * @param {Number} amount - the amount of business days to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.
+ * @returns {Date} the new date with the business days added
+ * @throws {TypeError} 2 arguments required
+ *
+ * @example
+ * // Add 10 business days to 1 September 2014:
+ * const result = addBusinessDays(new Date(2014, 8, 1), 10)
+ * //=> Mon Sep 15 2014 00:00:00 (skipped weekend days)
+ */
+export default function addBusinessDays(
+ dirtyDate: Date | number,
+ dirtyAmount: number
+): Date {
+ requiredArgs(2, arguments)
+
+ const date = toDate(dirtyDate)
+ const startedOnWeekend = isWeekend(date)
+ const amount = toInteger(dirtyAmount)
+
+ if (isNaN(amount)) return new Date(NaN)
+
+ const hours = date.getHours()
+ const sign = amount < 0 ? -1 : 1
+ const fullWeeks = toInteger(amount / 5)
+
+ date.setDate(date.getDate() + fullWeeks * 7)
+
+ // Get remaining days not part of a full week
+ let restDays = Math.abs(amount % 5)
+
+ // Loops over remaining days
+ while (restDays > 0) {
+ date.setDate(date.getDate() + sign)
+ if (!isWeekend(date)) restDays -= 1
+ }
+
+ // If the date is a weekend day and we reduce a dividable of
+ // 5 from it, we land on a weekend date.
+ // To counter this, we add days accordingly to land on the next business day
+ if (startedOnWeekend && isWeekend(date) && amount !== 0) {
+ // If we're reducing days, we want to add days until we land on a weekday
+ // If we're adding days we want to reduce days until we land on a weekday
+ if (isSaturday(date)) date.setDate(date.getDate() + (sign < 0 ? 2 : -1))
+ if (isSunday(date)) date.setDate(date.getDate() + (sign < 0 ? 1 : -2))
+ }
+
+ // Restore hours to avoid DST lag
+ date.setHours(hours)
+
+ return date
+}
diff --git a/date-fns/src/addBusinessDays/test.ts b/date-fns/src/addBusinessDays/test.ts
new file mode 100644
index 0000000..e23bc11
--- /dev/null
+++ b/date-fns/src/addBusinessDays/test.ts
@@ -0,0 +1,95 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'assert'
+import addBusinessDays from '.'
+
+describe('addBusinessDays', function() {
+ it('adds the given number of business days', function() {
+ const result = addBusinessDays(new Date(2014, 8 /* Sep */, 1), 10)
+ assert.deepStrictEqual(result, new Date(2014, 8 /* Sep */, 15))
+ })
+
+ it('handles negative amount', function() {
+ const result = addBusinessDays(new Date(2014, 8 /* Sep */, 15), -10)
+ assert.deepStrictEqual(result, new Date(2014, 8 /* Sep */, 1))
+ })
+
+ it('returns the Monday when 1 day is added on the Friday', () => {
+ assert.deepStrictEqual(
+ addBusinessDays(new Date(2020, 0 /* Jan */, 10), 1), // Friday
+ new Date(2020, 0 /* Jan */, 13) // Monday
+ )
+ })
+
+ it('returns the Monday when 1 day is added on the Satuday', () => {
+ assert.deepStrictEqual(
+ addBusinessDays(new Date(2020, 0 /* Jan */, 11), 1), // Saturday
+ new Date(2020, 0 /* Jan */, 13) // Monday
+ )
+ })
+
+ it('returns the Monday when 1 day is added on the Sunday', () => {
+ assert.deepStrictEqual(
+ addBusinessDays(new Date(2020, 0 /* Jan */, 12), 1), // Sunday
+ new Date(2020, 0 /* Jan */, 13) // Monday
+ )
+ })
+
+ it('can handle a large number of business days', function() {
+ // @ts-ignore
+ if (typeof this.timeout === 'function') {
+ // @ts-ignore
+ this.timeout(500 /* 500 ms test timeout */)
+ }
+
+ const result = addBusinessDays(new Date(2014, 0 /* Jan */, 1), 3387885)
+ assert.deepStrictEqual(result, new Date(15000, 0 /* Jan */, 1))
+ })
+
+ it('accepts a timestamp', function() {
+ const result = addBusinessDays(new Date(2014, 8 /* Sep */, 1).getTime(), 10)
+ assert.deepStrictEqual(result, new Date(2014, 8 /* Sep */, 15))
+ })
+
+ it('converts a fractional number to an integer', function() {
+ const result = addBusinessDays(new Date(2014, 8 /* Sep */, 1), 10.5)
+ assert.deepStrictEqual(result, new Date(2014, 8 /* Sep */, 15))
+ })
+
+ it('implicitly converts number arguments', function() {
+ // @ts-expect-error
+ const result = addBusinessDays(new Date(2014, 8 /* Sep */, 1), '10')
+ assert.deepStrictEqual(result, new Date(2014, 8 /* Sep */, 15))
+ })
+
+ it('does not mutate the original date', function() {
+ const date = new Date(2014, 8 /* Sep */, 1)
+ addBusinessDays(date, 11)
+ assert.deepStrictEqual(date, new Date(2014, 8 /* Sep */, 1))
+ })
+
+ it('returns `Invalid Date` if the given date is invalid', function() {
+ const result = addBusinessDays(new Date(NaN), 10)
+ assert(result instanceof Date && isNaN(result.getTime()))
+ })
+
+ it('returns `Invalid Date` if the given amount is NaN', function() {
+ const result = addBusinessDays(new Date(2014, 8 /* Sep */, 1), NaN)
+ assert(result instanceof Date && isNaN(result.getTime()))
+ })
+
+ it('throws TypeError exception if passed less than 2 arguments', function() {
+ // @ts-expect-error
+ assert.throws(addBusinessDays.bind(null), TypeError)
+ // @ts-expect-error
+ assert.throws(addBusinessDays.bind(null, 1), TypeError)
+ })
+ it('starting from a weekend day should land on a weekday when reducing a divisible by 5', function() {
+ const substractResult = addBusinessDays(new Date(2019, 7, 18), -5)
+ assert.deepStrictEqual(substractResult, new Date(2019, 7, 12))
+
+ const addResult = addBusinessDays(new Date(2019, 7, 18), 5)
+ assert.deepStrictEqual(addResult, new Date(2019, 7, 23))
+ })
+})
diff --git a/date-fns/src/addDays/benchmark.js b/date-fns/src/addDays/benchmark.js
new file mode 100644
index 0000000..6501f56
--- /dev/null
+++ b/date-fns/src/addDays/benchmark.js
@@ -0,0 +1,21 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import addDays from '.'
+import moment from 'moment'
+
+suite('addDays', function () {
+ benchmark('date-fns', function () {
+ return addDays(this.date, 7)
+ })
+
+ benchmark('Moment.js', function () {
+ return this.moment.add(7, 'days')
+ })
+}, {
+ setup: function () {
+ this.date = new Date()
+ this.moment = moment()
+ }
+})
diff --git a/date-fns/src/addDays/index.d.ts b/date-fns/src/addDays/index.d.ts
new file mode 100644
index 0000000..fd7fb3d
--- /dev/null
+++ b/date-fns/src/addDays/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { addDays } from 'date-fns'
+export default addDays
diff --git a/date-fns/src/addDays/index.js.flow b/date-fns/src/addDays/index.js.flow
new file mode 100644
index 0000000..f568f0d
--- /dev/null
+++ b/date-fns/src/addDays/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (date: Date | number, amount: number) => Date
diff --git a/date-fns/src/addDays/index.ts b/date-fns/src/addDays/index.ts
new file mode 100644
index 0000000..110ad51
--- /dev/null
+++ b/date-fns/src/addDays/index.ts
@@ -0,0 +1,44 @@
+import toInteger from '../_lib/toInteger/index'
+import toDate from '../toDate/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name addDays
+ * @category Day Helpers
+ * @summary Add the specified number of days to the given date.
+ *
+ * @description
+ * Add the specified number of days to the given date.
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} date - the date to be changed
+ * @param {Number} amount - the amount of days to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.
+ * @returns {Date} - the new date with the days added
+ * @throws {TypeError} - 2 arguments required
+ *
+ * @example
+ * // Add 10 days to 1 September 2014:
+ * const result = addDays(new Date(2014, 8, 1), 10)
+ * //=> Thu Sep 11 2014 00:00:00
+ */
+export default function addDays(
+ dirtyDate: Date | number,
+ dirtyAmount: number
+): Date {
+ requiredArgs(2, arguments)
+
+ const date = toDate(dirtyDate)
+ const amount = toInteger(dirtyAmount)
+ if (isNaN(amount)) {
+ return new Date(NaN)
+ }
+ if (!amount) {
+ // If 0 days, no-op to avoid changing times in the hour before end of DST
+ return date
+ }
+ date.setDate(date.getDate() + amount)
+ return date
+}
diff --git a/date-fns/src/addDays/test.ts b/date-fns/src/addDays/test.ts
new file mode 100644
index 0000000..5795dcd
--- /dev/null
+++ b/date-fns/src/addDays/test.ts
@@ -0,0 +1,129 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'assert'
+import addDays from '.'
+import { getDstTransitions } from '../../test/dst/tzOffsetTransitions'
+
+describe('addDays', function() {
+ it('adds the given number of days', function() {
+ const result = addDays(new Date(2014, 8 /* Sep */, 1), 10)
+ assert.deepStrictEqual(result, new Date(2014, 8 /* Sep */, 11))
+ })
+
+ it('accepts a timestamp', function() {
+ const result = addDays(new Date(2014, 8 /* Sep */, 1).getTime(), 10)
+ assert.deepStrictEqual(result, new Date(2014, 8 /* Sep */, 11))
+ })
+
+ it('converts a fractional number to an integer', function() {
+ const result = addDays(new Date(2014, 8 /* Sep */, 1), 10.5)
+ assert.deepStrictEqual(result, new Date(2014, 8 /* Sep */, 11))
+ })
+
+ it('implicitly converts number arguments', function() {
+ // @ts-expect-error
+ const result = addDays(new Date(2014, 8 /* Sep */, 1), '10')
+ assert.deepStrictEqual(result, new Date(2014, 8 /* Sep */, 11))
+ })
+
+ it('does not mutate the original date', function() {
+ const date = new Date(2014, 8 /* Sep */, 1)
+ addDays(date, 11)
+ assert.deepStrictEqual(date, new Date(2014, 8 /* Sep */, 1))
+ })
+
+ it('returns `Invalid Date` if the given date is invalid', function() {
+ const result = addDays(new Date(NaN), 10)
+ assert(result instanceof Date && isNaN(result.getTime()))
+ })
+
+ it('returns `Invalid Date` if the given amount is NaN', function() {
+ const result = addDays(new Date(2014, 8 /* Sep */, 1), NaN)
+ assert(result instanceof Date && isNaN(result.getTime()))
+ })
+
+ it('throws TypeError exception if passed less than 2 arguments', function () {
+ // @ts-expect-error
+ assert.throws(addDays.bind(null), TypeError)
+ // @ts-expect-error
+ assert.throws(addDays.bind(null, 1), TypeError)
+ })
+
+ const dstTransitions = getDstTransitions(2017)
+ const dstOnly = dstTransitions.start && dstTransitions.end ? it : it.skip
+ const tz = Intl.DateTimeFormat().resolvedOptions().timeZone || process.env.tz
+ const HOUR = 1000 * 60 * 60
+ const MINUTE = 1000 * 60
+ // It's usually 1 hour, but for some timezones, e.g. Australia/Lord_Howe, it is 30 minutes
+ const dstOffset = dstTransitions.start && dstTransitions.end ? ((dstTransitions.end.getTimezoneOffset() - dstTransitions.start.getTimezoneOffset()) * MINUTE) : NaN
+
+ dstOnly(
+ `works at DST-start boundary in local timezone: ${tz || '(unknown)'}`,
+ function() {
+ const date = dstTransitions.start
+ const result = addDays(date!, 1)
+ assert.deepStrictEqual(result, new Date(date!.getTime() + 24 * HOUR))
+ }
+ )
+
+ dstOnly(
+ `works at DST-start - 30 mins in local timezone: ${tz || '(unknown)'}`,
+ function() {
+ const date = new Date(dstTransitions.start!.getTime() - 0.5 * HOUR)
+ const result = addDays(date, 1)
+ // started before the transition so will only be 23 hours later in local time
+ assert.deepStrictEqual(result, new Date(date.getTime() + 24 * HOUR - dstOffset))
+ }
+ )
+
+ dstOnly(
+ `works at DST-start - 60 mins in local timezone: ${tz || '(unknown)'}`,
+ function() {
+ const date = new Date(dstTransitions.start!.getTime() - 1 * HOUR)
+ const result = addDays(date, 1)
+ // started before the transition so will only be 23 hours later in local time
+ assert.deepStrictEqual(result, new Date(date.getTime() + 24 * HOUR - dstOffset))
+ }
+ )
+
+ dstOnly(
+ `works at DST-end boundary in local timezone: ${tz || '(unknown)'}`,
+ function() {
+ const date = dstTransitions.end
+ const result = addDays(date!, 1)
+ assert.deepStrictEqual(result, new Date(date!.getTime() + 24 * HOUR))
+ }
+ )
+
+ dstOnly(
+ `works at DST-end - 30 mins in local timezone: ${tz || '(unknown)'}`,
+ function() {
+ const date = new Date(dstTransitions.end!.getTime() - 0.5 * HOUR)
+ const result = addDays(date, 1)
+ // started before the transition so will be 25 hours later in local
+ // time because one hour repeats after DST ends.
+ assert.deepStrictEqual(result, new Date(date.getTime() + 24 * HOUR + dstOffset))
+ }
+ )
+
+ dstOnly(
+ `works at DST-end - 60 mins in local timezone: ${tz || '(unknown)'}`,
+ function() {
+ const date = new Date(dstTransitions.end!.getTime() - 1 * HOUR)
+ const result = addDays(date, 1)
+ // started before the transition so will be 25 hours later in local
+ // time because one hour repeats after DST ends.
+ assert.deepStrictEqual(result, new Date(date.getTime() + 24 * HOUR + dstOffset))
+ }
+ )
+
+ dstOnly(
+ `doesn't mutate if zero increment is used: ${tz || '(unknown)'}`,
+ function() {
+ const date = new Date(dstTransitions.end!)
+ const result = addDays(date, 0)
+ assert.deepStrictEqual(result, date)
+ }
+ )
+})
diff --git a/date-fns/src/addHours/benchmark.js b/date-fns/src/addHours/benchmark.js
new file mode 100644
index 0000000..f706c9e
--- /dev/null
+++ b/date-fns/src/addHours/benchmark.js
@@ -0,0 +1,21 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import addHours from '.'
+import moment from 'moment'
+
+suite('addHours', function () {
+ benchmark('date-fns', function () {
+ return addHours(this.date, 3)
+ })
+
+ benchmark('Moment.js', function () {
+ return this.moment.add(3, 'hours')
+ })
+}, {
+ setup: function () {
+ this.date = new Date()
+ this.moment = moment()
+ }
+})
diff --git a/date-fns/src/addHours/index.d.ts b/date-fns/src/addHours/index.d.ts
new file mode 100644
index 0000000..b3b6066
--- /dev/null
+++ b/date-fns/src/addHours/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { addHours } from 'date-fns'
+export default addHours
diff --git a/date-fns/src/addHours/index.js.flow b/date-fns/src/addHours/index.js.flow
new file mode 100644
index 0000000..f568f0d
--- /dev/null
+++ b/date-fns/src/addHours/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (date: Date | number, amount: number) => Date
diff --git a/date-fns/src/addHours/index.ts b/date-fns/src/addHours/index.ts
new file mode 100644
index 0000000..d7de0e3
--- /dev/null
+++ b/date-fns/src/addHours/index.ts
@@ -0,0 +1,37 @@
+import toInteger from '../_lib/toInteger/index'
+import addMilliseconds from '../addMilliseconds/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+const MILLISECONDS_IN_HOUR = 3600000
+
+/**
+ * @name addHours
+ * @category Hour Helpers
+ * @summary Add the specified number of hours to the given date.
+ *
+ * @description
+ * Add the specified number of hours to the given date.
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} date - the date to be changed
+ * @param {Number} amount - the amount of hours to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.
+ * @returns {Date} the new date with the hours added
+ * @throws {TypeError} 2 arguments required
+ *
+ * @example
+ * // Add 2 hours to 10 July 2014 23:00:00:
+ * const result = addHours(new Date(2014, 6, 10, 23, 0), 2)
+ * //=> Fri Jul 11 2014 01:00:00
+ */
+export default function addHours(
+ dirtyDate: Date | number,
+ dirtyAmount: number
+): Date {
+ requiredArgs(2, arguments)
+
+ const amount = toInteger(dirtyAmount)
+ return addMilliseconds(dirtyDate, amount * MILLISECONDS_IN_HOUR)
+}
diff --git a/date-fns/src/addHours/test.ts b/date-fns/src/addHours/test.ts
new file mode 100644
index 0000000..c920a64
--- /dev/null
+++ b/date-fns/src/addHours/test.ts
@@ -0,0 +1,54 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'assert'
+import addHours from '.'
+
+describe('addHours', function() {
+ it('adds the given numbers of hours', function() {
+ const result = addHours(new Date(2014, 6 /* Jul */, 10, 23, 0), 2)
+ assert.deepStrictEqual(result, new Date(2014, 6 /* Jul */, 11, 1, 0))
+ })
+
+ it('accepts a timestamp', function() {
+ const result = addHours(
+ new Date(2014, 6 /* Jul */, 10, 23, 0).getTime(),
+ 26
+ )
+ assert.deepStrictEqual(result, new Date(2014, 6 /* Jul */, 12, 1, 0))
+ })
+
+ it('converts a fractional number to an integer', function() {
+ const result = addHours(new Date(2014, 6 /* Jul */, 10, 23, 0), 2.5)
+ assert.deepStrictEqual(result, new Date(2014, 6 /* Jul */, 11, 1, 0))
+ })
+
+ it('implicitly converts number arguments', function() {
+ // @ts-expect-error
+ const result = addHours(new Date(2014, 6 /* Jul */, 10, 23, 0), '2')
+ assert.deepStrictEqual(result, new Date(2014, 6 /* Jul */, 11, 1, 0))
+ })
+
+ it('does not mutate the original date', function() {
+ const date = new Date(2014, 6 /* Jul */, 10, 23, 0)
+ addHours(date, 10)
+ assert.deepStrictEqual(date, new Date(2014, 6 /* Jul */, 10, 23, 0))
+ })
+
+ it('returns `Invalid Date` if the given date is invalid', function() {
+ const result = addHours(new Date(NaN), 2)
+ assert(result instanceof Date && isNaN(result.getTime()))
+ })
+
+ it('returns `Invalid Date` if the given amount is NaN', function() {
+ const result = addHours(new Date(2014, 6 /* Jul */, 10, 23, 0), NaN)
+ assert(result instanceof Date && isNaN(result.getTime()))
+ })
+
+ it('throws TypeError exception if passed less than 2 arguments', function() {
+ // @ts-expect-error
+ assert.throws(addHours.bind(null), TypeError)
+ // @ts-expect-error
+ assert.throws(addHours.bind(null, 1), TypeError)
+ })
+})
diff --git a/date-fns/src/addISOWeekYears/benchmark.js b/date-fns/src/addISOWeekYears/benchmark.js
new file mode 100644
index 0000000..c52596d
--- /dev/null
+++ b/date-fns/src/addISOWeekYears/benchmark.js
@@ -0,0 +1,15 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import addISOWeekYears from '.'
+
+suite('addISOWeekYears', function () {
+ benchmark('date-fns', function () {
+ return addISOWeekYears(this.date, 7)
+ })
+}, {
+ setup: function () {
+ this.date = new Date()
+ }
+})
diff --git a/date-fns/src/addISOWeekYears/index.d.ts b/date-fns/src/addISOWeekYears/index.d.ts
new file mode 100644
index 0000000..e1e6e09
--- /dev/null
+++ b/date-fns/src/addISOWeekYears/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { addISOWeekYears } from 'date-fns'
+export default addISOWeekYears
diff --git a/date-fns/src/addISOWeekYears/index.js.flow b/date-fns/src/addISOWeekYears/index.js.flow
new file mode 100644
index 0000000..f568f0d
--- /dev/null
+++ b/date-fns/src/addISOWeekYears/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (date: Date | number, amount: number) => Date
diff --git a/date-fns/src/addISOWeekYears/index.ts b/date-fns/src/addISOWeekYears/index.ts
new file mode 100644
index 0000000..297b613
--- /dev/null
+++ b/date-fns/src/addISOWeekYears/index.ts
@@ -0,0 +1,43 @@
+import toInteger from '../_lib/toInteger/index'
+import getISOWeekYear from '../getISOWeekYear/index'
+import setISOWeekYear from '../setISOWeekYear/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name addISOWeekYears
+ * @category ISO Week-Numbering Year Helpers
+ * @summary Add the specified number of ISO week-numbering years to the given date.
+ *
+ * @description
+ * Add the specified number of ISO week-numbering years to the given date.
+ *
+ * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * - The function was renamed from `addISOYears` to `addISOWeekYears`.
+ * "ISO week year" is short for [ISO week-numbering year](https://en.wikipedia.org/wiki/ISO_week_date).
+ * This change makes the name consistent with
+ * locale-dependent week-numbering year helpers, e.g., `addWeekYears`.
+ *
+ * @param {Date|Number} date - the date to be changed
+ * @param {Number} amount - the amount of ISO week-numbering years to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.
+ * @returns {Date} the new date with the ISO week-numbering years added
+ * @throws {TypeError} 2 arguments required
+ *
+ * @example
+ * // Add 5 ISO week-numbering years to 2 July 2010:
+ * const result = addISOWeekYears(new Date(2010, 6, 2), 5)
+ * //=> Fri Jun 26 2015 00:00:00
+ */
+export default function addISOWeekYears(
+ dirtyDate: Date | number,
+ dirtyAmount: number
+): Date {
+ requiredArgs(2, arguments)
+
+ const amount = toInteger(dirtyAmount)
+ return setISOWeekYear(dirtyDate, getISOWeekYear(dirtyDate) + amount)
+}
diff --git a/date-fns/src/addISOWeekYears/test.ts b/date-fns/src/addISOWeekYears/test.ts
new file mode 100644
index 0000000..a122d71
--- /dev/null
+++ b/date-fns/src/addISOWeekYears/test.ts
@@ -0,0 +1,64 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'assert'
+import addISOWeekYears from '.'
+
+describe('addISOWeekYears', function() {
+ it('adds the given number of ISO week-numbering years', function() {
+ const result = addISOWeekYears(new Date(2010, 6 /* Jul */, 2), 5)
+ assert.deepStrictEqual(result, new Date(2015, 5 /* Jun */, 26))
+ })
+
+ it('accepts a timestamp', function() {
+ const result = addISOWeekYears(new Date(2014, 8 /* Sep */, 1).getTime(), 12)
+ assert.deepStrictEqual(result, new Date(2026, 7 /* Aug */, 31))
+ })
+
+ it('converts a fractional number to an integer', function() {
+ const result = addISOWeekYears(new Date(2010, 6 /* Jul */, 2), 5.6)
+ assert.deepStrictEqual(result, new Date(2015, 5 /* Jun */, 26))
+ })
+
+ it('implicitly converts number arguments', function() {
+ // @ts-expect-error
+ const result = addISOWeekYears(new Date(2010, 6 /* Jul */, 2), '5')
+ assert.deepStrictEqual(result, new Date(2015, 5 /* Jun */, 26))
+ })
+
+ it('does not mutate the original date', function() {
+ const date = new Date(2014, 8 /* Sep */, 1)
+ addISOWeekYears(date, 12)
+ assert.deepStrictEqual(date, new Date(2014, 8 /* Sep */, 1))
+ })
+
+ it('handles dates before 100 AD', function() {
+ const initialDate = new Date(0)
+ initialDate.setFullYear(10, 6 /* Jul */, 2)
+ initialDate.setHours(0, 0, 0, 0)
+ const expectedResult = new Date(0)
+ expectedResult.setFullYear(15, 5 /* Jun */, 26)
+ expectedResult.setHours(0, 0, 0, 0)
+ const result = addISOWeekYears(initialDate, 5)
+ assert.deepStrictEqual(result, expectedResult)
+ })
+
+ it('returns `Invalid Date` if the given date is invalid', function() {
+ const result = addISOWeekYears(new Date(NaN), 5)
+ // @ts-expect-error
+ assert(result instanceof Date && isNaN(result))
+ })
+
+ it('returns `Invalid Date` if the given amount is NaN', function() {
+ const result = addISOWeekYears(new Date(2010, 6 /* Jul */, 2), NaN)
+ // @ts-expect-error
+ assert(result instanceof Date && isNaN(result))
+ })
+
+ it('throws TypeError exception if passed less than 2 arguments', function() {
+ // @ts-expect-error
+ assert.throws(addISOWeekYears.bind(null), TypeError)
+ // @ts-expect-error
+ assert.throws(addISOWeekYears.bind(null, 1), TypeError)
+ })
+})
diff --git a/date-fns/src/addMilliseconds/benchmark.js b/date-fns/src/addMilliseconds/benchmark.js
new file mode 100644
index 0000000..b7271d5
--- /dev/null
+++ b/date-fns/src/addMilliseconds/benchmark.js
@@ -0,0 +1,21 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import addMilliseconds from '.'
+import moment from 'moment'
+
+suite('addMilliseconds', function () {
+ benchmark('date-fns', function () {
+ return addMilliseconds(this.date, 500)
+ })
+
+ benchmark('Moment.js', function () {
+ return this.moment.add(500, 'milliseconds')
+ })
+}, {
+ setup: function () {
+ this.date = new Date()
+ this.moment = moment()
+ }
+})
diff --git a/date-fns/src/addMilliseconds/index.d.ts b/date-fns/src/addMilliseconds/index.d.ts
new file mode 100644
index 0000000..1afb956
--- /dev/null
+++ b/date-fns/src/addMilliseconds/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { addMilliseconds } from 'date-fns'
+export default addMilliseconds
diff --git a/date-fns/src/addMilliseconds/index.js.flow b/date-fns/src/addMilliseconds/index.js.flow
new file mode 100644
index 0000000..f568f0d
--- /dev/null
+++ b/date-fns/src/addMilliseconds/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (date: Date | number, amount: number) => Date
diff --git a/date-fns/src/addMilliseconds/index.ts b/date-fns/src/addMilliseconds/index.ts
new file mode 100644
index 0000000..18aefe5
--- /dev/null
+++ b/date-fns/src/addMilliseconds/index.ts
@@ -0,0 +1,36 @@
+import toInteger from '../_lib/toInteger/index'
+import toDate from '../toDate/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name addMilliseconds
+ * @category Millisecond Helpers
+ * @summary Add the specified number of milliseconds to the given date.
+ *
+ * @description
+ * Add the specified number of milliseconds to the given date.
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} date - the date to be changed
+ * @param {Number} amount - the amount of milliseconds to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.
+ * @returns {Date} the new date with the milliseconds added
+ * @throws {TypeError} 2 arguments required
+ *
+ * @example
+ * // Add 750 milliseconds to 10 July 2014 12:45:30.000:
+ * const result = addMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)
+ * //=> Thu Jul 10 2014 12:45:30.750
+ */
+export default function addMilliseconds(
+ dirtyDate: Date | number,
+ dirtyAmount: number
+): Date {
+ requiredArgs(2, arguments)
+
+ const timestamp = toDate(dirtyDate).getTime()
+ const amount = toInteger(dirtyAmount)
+ return new Date(timestamp + amount)
+}
diff --git a/date-fns/src/addMilliseconds/test.ts b/date-fns/src/addMilliseconds/test.ts
new file mode 100644
index 0000000..997a5c6
--- /dev/null
+++ b/date-fns/src/addMilliseconds/test.ts
@@ -0,0 +1,80 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'assert'
+import addMilliseconds from '.'
+
+describe('addMilliseconds', function() {
+ it('adds the given number of milliseconds', function() {
+ const result = addMilliseconds(
+ new Date(2014, 6 /* Jul */, 10, 12, 45, 30, 0),
+ 750
+ )
+ assert.deepStrictEqual(
+ result,
+ new Date(2014, 6 /* Jul */, 10, 12, 45, 30, 750)
+ )
+ })
+
+ it('accepts a timestamp', function() {
+ const result = addMilliseconds(
+ new Date(2014, 6 /* Jul */, 10, 12, 45, 30, 0).getTime(),
+ 500
+ )
+ assert.deepStrictEqual(
+ result,
+ new Date(2014, 6 /* Jul */, 10, 12, 45, 30, 500)
+ )
+ })
+
+ it('converts a fractional number to an integer', function() {
+ const result = addMilliseconds(
+ new Date(2014, 6 /* Jul */, 10, 12, 45, 30, 0),
+ 750.75
+ )
+ assert.deepStrictEqual(
+ result,
+ new Date(2014, 6 /* Jul */, 10, 12, 45, 30, 750)
+ )
+ })
+
+ it('implicitly converts number arguments', function() {
+ const result = addMilliseconds(
+ new Date(2014, 6 /* Jul */, 10, 12, 45, 30, 5),
+ //@ts-expect-error
+ '750'
+ )
+ assert.deepStrictEqual(
+ result,
+ new Date(2014, 6 /* Jul */, 10, 12, 45, 30, 755)
+ )
+ })
+
+ it('does not mutate the original date', function() {
+ const date = new Date(2014, 6 /* Jul */, 10, 12, 45, 30, 0)
+ addMilliseconds(date, 250)
+ assert.deepStrictEqual(date, new Date(2014, 6 /* Jul */, 10, 12, 45, 30, 0))
+ })
+
+ it('returns `Invalid Date` if the given date is invalid', function() {
+ const result = addMilliseconds(new Date(NaN), 750)
+ //@ts-expect-error
+ assert(result instanceof Date && isNaN(result))
+ })
+
+ it('returns `Invalid Date` if the given amount is NaN', function() {
+ const result = addMilliseconds(
+ new Date(2014, 6 /* Jul */, 10, 12, 45, 30, 0),
+ NaN
+ )
+ //@ts-expect-error
+ assert(result instanceof Date && isNaN(result))
+ })
+
+ it('throws TypeError exception if passed less than 2 arguments', function() {
+ //@ts-expect-error
+ assert.throws(addMilliseconds.bind(null), TypeError)
+ //@ts-expect-error
+ assert.throws(addMilliseconds.bind(null, 1), TypeError)
+ })
+})
diff --git a/date-fns/src/addMinutes/benchmark.js b/date-fns/src/addMinutes/benchmark.js
new file mode 100644
index 0000000..281e06c
--- /dev/null
+++ b/date-fns/src/addMinutes/benchmark.js
@@ -0,0 +1,21 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import addMinutes from '.'
+import moment from 'moment'
+
+suite('addMinutes', function () {
+ benchmark('date-fns', function () {
+ return addMinutes(this.date, 30)
+ })
+
+ benchmark('Moment.js', function () {
+ return this.moment.add(30, 'minutes')
+ })
+}, {
+ setup: function () {
+ this.date = new Date()
+ this.moment = moment()
+ }
+})
diff --git a/date-fns/src/addMinutes/index.d.ts b/date-fns/src/addMinutes/index.d.ts
new file mode 100644
index 0000000..fcf15e5
--- /dev/null
+++ b/date-fns/src/addMinutes/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { addMinutes } from 'date-fns'
+export default addMinutes
diff --git a/date-fns/src/addMinutes/index.js.flow b/date-fns/src/addMinutes/index.js.flow
new file mode 100644
index 0000000..f568f0d
--- /dev/null
+++ b/date-fns/src/addMinutes/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (date: Date | number, amount: number) => Date
diff --git a/date-fns/src/addMinutes/index.ts b/date-fns/src/addMinutes/index.ts
new file mode 100644
index 0000000..41ecc48
--- /dev/null
+++ b/date-fns/src/addMinutes/index.ts
@@ -0,0 +1,37 @@
+import toInteger from '../_lib/toInteger/index'
+import addMilliseconds from '../addMilliseconds/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+const MILLISECONDS_IN_MINUTE = 60000
+
+/**
+ * @name addMinutes
+ * @category Minute Helpers
+ * @summary Add the specified number of minutes to the given date.
+ *
+ * @description
+ * Add the specified number of minutes to the given date.
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} date - the date to be changed
+ * @param {Number} amount - the amount of minutes to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.
+ * @returns {Date} the new date with the minutes added
+ * @throws {TypeError} 2 arguments required
+ *
+ * @example
+ * // Add 30 minutes to 10 July 2014 12:00:00:
+ * const result = addMinutes(new Date(2014, 6, 10, 12, 0), 30)
+ * //=> Thu Jul 10 2014 12:30:00
+ */
+export default function addMinutes(
+ dirtyDate: Date | number,
+ dirtyAmount: number
+): Date {
+ requiredArgs(2, arguments)
+
+ const amount = toInteger(dirtyAmount)
+ return addMilliseconds(dirtyDate, amount * MILLISECONDS_IN_MINUTE)
+}
diff --git a/date-fns/src/addMinutes/test.ts b/date-fns/src/addMinutes/test.ts
new file mode 100644
index 0000000..f4b515c
--- /dev/null
+++ b/date-fns/src/addMinutes/test.ts
@@ -0,0 +1,57 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'assert'
+import addMinutes from '.'
+
+describe('addMinutes', function() {
+ it('adds the given number of minutes', function() {
+ const result = addMinutes(new Date(2014, 6 /* Jul */, 10, 12, 0), 30)
+ assert.deepStrictEqual(result, new Date(2014, 6 /* Jul */, 10, 12, 30))
+ })
+
+ it('accepts a timestamp', function() {
+ const result = addMinutes(
+ new Date(2014, 6 /* Jul */, 10, 12, 0).getTime(),
+ 20
+ )
+ assert.deepStrictEqual(result, new Date(2014, 6 /* Jul */, 10, 12, 20))
+ })
+
+ it('converts a fractional number to an integer', function() {
+ const result = addMinutes(new Date(2014, 6 /* Jul */, 10, 12, 0), 30.99)
+ assert.deepStrictEqual(result, new Date(2014, 6 /* Jul */, 10, 12, 30))
+ })
+
+ it('implicitly converts number arguments', function() {
+ // @ts-expect-error
+ const result = addMinutes(new Date(2014, 6 /* Jul */, 10, 12, 5), '30')
+ assert.deepStrictEqual(result, new Date(2014, 6 /* Jul */, 10, 12, 35))
+ })
+
+ it('does not mutate the original date', function() {
+ const date = new Date(2014, 6 /* Jul */, 10, 12, 0)
+ addMinutes(date, 25)
+ assert.deepStrictEqual(date, new Date(2014, 6 /* Jul */, 10, 12, 0))
+ })
+
+ it('returns `Invalid Date` if the given date is invalid', function() {
+ const result = addMinutes(new Date(NaN), 30)
+ // @ts-expect-error
+ assert(result instanceof Date && isNaN(result))
+ })
+
+ it('returns `Invalid Date` if the given amount is NaN', function() {
+ const result = addMinutes(new Date(2014, 6 /* Jul */, 10, 12, 0), NaN)
+ // @ts-expect-error
+ assert(result instanceof Date && isNaN(result))
+ })
+
+ it('throws TypeError exception if passed less than 2 arguments', function() {
+ // @ts-expect-error
+ assert.throws(addMinutes.bind(null), TypeError)
+
+ // @ts-expect-error
+ assert.throws(addMinutes.bind(null, 1), TypeError)
+ })
+})
diff --git a/date-fns/src/addMonths/benchmark.js b/date-fns/src/addMonths/benchmark.js
new file mode 100644
index 0000000..13f5203
--- /dev/null
+++ b/date-fns/src/addMonths/benchmark.js
@@ -0,0 +1,21 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import addMonths from '.'
+import moment from 'moment'
+
+suite('addMonths', function () {
+ benchmark('date-fns', function () {
+ return addMonths(this.date, 4)
+ })
+
+ benchmark('Moment.js', function () {
+ return this.moment.add(4, 'months')
+ })
+}, {
+ setup: function () {
+ this.date = new Date()
+ this.moment = moment()
+ }
+})
diff --git a/date-fns/src/addMonths/index.d.ts b/date-fns/src/addMonths/index.d.ts
new file mode 100644
index 0000000..1308e13
--- /dev/null
+++ b/date-fns/src/addMonths/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { addMonths } from 'date-fns'
+export default addMonths
diff --git a/date-fns/src/addMonths/index.js.flow b/date-fns/src/addMonths/index.js.flow
new file mode 100644
index 0000000..f568f0d
--- /dev/null
+++ b/date-fns/src/addMonths/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (date: Date | number, amount: number) => Date
diff --git a/date-fns/src/addMonths/index.ts b/date-fns/src/addMonths/index.ts
new file mode 100644
index 0000000..7b34369
--- /dev/null
+++ b/date-fns/src/addMonths/index.ts
@@ -0,0 +1,74 @@
+import toInteger from '../_lib/toInteger/index'
+import toDate from '../toDate/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name addMonths
+ * @category Month Helpers
+ * @summary Add the specified number of months to the given date.
+ *
+ * @description
+ * Add the specified number of months to the given date.
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} date - the date to be changed
+ * @param {Number} amount - the amount of months to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.
+ * @returns {Date} the new date with the months added
+ * @throws {TypeError} 2 arguments required
+ *
+ * @example
+ * // Add 5 months to 1 September 2014:
+ * const result = addMonths(new Date(2014, 8, 1), 5)
+ * //=> Sun Feb 01 2015 00:00:00
+ */
+export default function addMonths(
+ dirtyDate: Date | number,
+ dirtyAmount: number
+): Date {
+ requiredArgs(2, arguments)
+
+ const date = toDate(dirtyDate)
+ const amount = toInteger(dirtyAmount)
+ if (isNaN(amount)) {
+ return new Date(NaN)
+ }
+ if (!amount) {
+ // If 0 months, no-op to avoid changing times in the hour before end of DST
+ return date
+ }
+ const dayOfMonth = date.getDate()
+
+ // The JS Date object supports date math by accepting out-of-bounds values for
+ // month, day, etc. For example, new Date(2020, 0, 0) returns 31 Dec 2019 and
+ // new Date(2020, 13, 1) returns 1 Feb 2021. This is *almost* the behavior we
+ // want except that dates will wrap around the end of a month, meaning that
+ // new Date(2020, 13, 31) will return 3 Mar 2021 not 28 Feb 2021 as desired. So
+ // we'll default to the end of the desired month by adding 1 to the desired
+ // month and using a date of 0 to back up one day to the end of the desired
+ // month.
+ const endOfDesiredMonth = new Date(date.getTime())
+ endOfDesiredMonth.setMonth(date.getMonth() + amount + 1, 0)
+ const daysInMonth = endOfDesiredMonth.getDate()
+ if (dayOfMonth >= daysInMonth) {
+ // If we're already at the end of the month, then this is the correct date
+ // and we're done.
+ return endOfDesiredMonth
+ } else {
+ // Otherwise, we now know that setting the original day-of-month value won't
+ // cause an overflow, so set the desired day-of-month. Note that we can't
+ // just set the date of `endOfDesiredMonth` because that object may have had
+ // its time changed in the unusual case where where a DST transition was on
+ // the last day of the month and its local time was in the hour skipped or
+ // repeated next to a DST transition. So we use `date` instead which is
+ // guaranteed to still have the original time.
+ date.setFullYear(
+ endOfDesiredMonth.getFullYear(),
+ endOfDesiredMonth.getMonth(),
+ dayOfMonth
+ )
+ return date
+ }
+}
diff --git a/date-fns/src/addMonths/test.ts b/date-fns/src/addMonths/test.ts
new file mode 100644
index 0000000..fb1afb6
--- /dev/null
+++ b/date-fns/src/addMonths/test.ts
@@ -0,0 +1,173 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'assert'
+import addMonths from '.'
+import { getDstTransitions } from '../../test/dst/tzOffsetTransitions'
+
+describe('addMonths', function() {
+ it('adds the given number of months', function() {
+ const result = addMonths(new Date(2014, 8 /* Sep */, 1), 5)
+ assert.deepStrictEqual(result, new Date(2015, 1 /* Feb */, 1))
+ })
+
+ it('accepts a timestamp', function() {
+ const result = addMonths(new Date(2014, 8 /* Sep */, 1).getTime(), 12)
+ assert.deepStrictEqual(result, new Date(2015, 8 /* Sep */, 1))
+ })
+
+ it('converts a fractional number to an integer', function() {
+ const result = addMonths(new Date(2014, 8 /* Sep */, 1), 5.75)
+ assert.deepStrictEqual(result, new Date(2015, 1 /* Feb */, 1))
+ })
+
+ it('implicitly converts number arguments', function() {
+ // @ts-expect-error
+ const result = addMonths(new Date(2014, 8 /* Sep */, 1), '5')
+ assert.deepStrictEqual(result, new Date(2015, 1 /* Feb */, 1))
+ })
+
+ it('does not mutate the original date', function() {
+ const date = new Date(2014, 8 /* Sep */, 1)
+ addMonths(date, 12)
+ assert.deepStrictEqual(date, new Date(2014, 8 /* Sep */, 1))
+ })
+
+ it('works well if the desired month has fewer days and the provided date is in the last day of a month', function() {
+ const date = new Date(2014, 11 /* Dec */, 31)
+ const result = addMonths(date, 2)
+ assert.deepStrictEqual(result, new Date(2015, 1 /* Feb */, 28))
+ })
+
+ it('handles dates before 100 AD', function() {
+ const initialDate = new Date(0)
+ initialDate.setFullYear(0, 0 /* Jan */, 31)
+ initialDate.setHours(0, 0, 0, 0)
+ const expectedResult = new Date(0)
+ expectedResult.setFullYear(0, 1 /* Feb */, 29)
+ expectedResult.setHours(0, 0, 0, 0)
+ const result = addMonths(initialDate, 1)
+ assert.deepStrictEqual(result, expectedResult)
+ })
+
+ it('returns `Invalid Date` if the given date is invalid', function() {
+ const result = addMonths(new Date(NaN), 5)
+ // @ts-expect-error
+ assert(result instanceof Date && isNaN(result))
+ })
+
+ it('returns `Invalid Date` if the given amount is NaN', function() {
+ const result = addMonths(new Date(2014, 8 /* Sep */, 1), NaN)
+ // @ts-expect-error
+ assert(result instanceof Date && isNaN(result))
+ })
+
+ it('throws TypeError exception if passed less than 2 arguments', function() {
+ // @ts-expect-error
+ assert.throws(addMonths.bind(null), TypeError)
+ // @ts-expect-error
+ assert.throws(addMonths.bind(null, 1), TypeError)
+ })
+
+ const dstTransitions = getDstTransitions(2017)
+ const dstOnly = dstTransitions.start && dstTransitions.end ? it : it.skip
+ const tz = Intl.DateTimeFormat().resolvedOptions().timeZone || process.env.tz
+ const HOUR = 1000 * 60 * 60
+ const override = (
+ base: Date,
+ year = base.getFullYear(),
+ month = base.getMonth(),
+ day = base.getDate(),
+ hour = base.getHours(),
+ minute = base.getMinutes()
+ ) => new Date(year, month, day, hour, minute)
+
+ dstOnly(
+ `works at DST-start boundary in local timezone: ${tz || '(unknown)'}`,
+ function() {
+ const date = dstTransitions.start
+ const result = addMonths(date!, 2)
+ assert.deepStrictEqual(
+ result,
+ override(date!, date!.getFullYear(), date!.getMonth() + 2)
+ )
+ }
+ )
+
+ dstOnly(
+ `works at DST-start - 30 mins in local timezone: ${tz || '(unknown)'}`,
+ function() {
+ const date = new Date(dstTransitions.start!.getTime() - 0.5 * HOUR)
+ const result = addMonths(date, 2)
+ const expected = override(date, date.getFullYear(), date.getMonth() + 2)
+ assert.deepStrictEqual(result, expected)
+ }
+ )
+
+ dstOnly(
+ `works at DST-start - 60 mins in local timezone: ${tz || '(unknown)'}`,
+ function() {
+ const date = new Date(dstTransitions.start!.getTime() - 1 * HOUR)
+ const result = addMonths(date, 2)
+ const expected = override(date, date.getFullYear(), date.getMonth() + 2)
+ assert.deepStrictEqual(result, expected)
+ }
+ )
+
+ dstOnly(
+ `works at DST-end boundary in local timezone: ${tz || '(unknown)'}`,
+ function() {
+ const date = dstTransitions.end
+ const result = addMonths(date!, 2)
+ assert.deepStrictEqual(
+ result,
+ override(
+ date!,
+ date!.getFullYear() + (date!.getMonth() >= 10 ? 1 : 0),
+ (date!.getMonth() + 2) % 12 // protect against wrap for Nov.
+ )
+ )
+ }
+ )
+
+ dstOnly(
+ `works at DST-end - 30 mins in local timezone: ${tz || '(unknown)'}`,
+ function() {
+ const date = new Date(dstTransitions.end!.getTime() - 0.5 * HOUR)
+ const result = addMonths(date, 2)
+ assert.deepStrictEqual(
+ result,
+ override(
+ date,
+ date.getFullYear() + (date.getMonth() >= 10 ? 1 : 0),
+ (date.getMonth() + 2) % 12 // protect against wrap for Nov.
+ )
+ )
+ }
+ )
+
+ dstOnly(
+ `works at DST-end - 60 mins in local timezone: ${tz || '(unknown)'}`,
+ function() {
+ const date = new Date(dstTransitions.end!.getTime() - 1 * HOUR)
+ const result = addMonths(date, 2)
+ assert.deepStrictEqual(
+ result,
+ override(
+ date,
+ date.getFullYear() + (date.getMonth() >= 10 ? 1 : 0),
+ (date.getMonth() + 2) % 12 // protect against wrap for Nov.
+ )
+ )
+ }
+ )
+
+ dstOnly(
+ `doesn't mutate if zero increment is used: ${tz || '(unknown)'}`,
+ function() {
+ const date = new Date(dstTransitions.end!)
+ const result = addMonths(date, 0)
+ assert.deepStrictEqual(result, date)
+ }
+ )
+})
diff --git a/date-fns/src/addQuarters/benchmark.js b/date-fns/src/addQuarters/benchmark.js
new file mode 100644
index 0000000..8e90c2f
--- /dev/null
+++ b/date-fns/src/addQuarters/benchmark.js
@@ -0,0 +1,21 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import addQuarters from '.'
+import moment from 'moment'
+
+suite('addQuarters', function () {
+ benchmark('date-fns', function () {
+ return addQuarters(this.date, 2)
+ })
+
+ benchmark('Moment.js', function () {
+ return this.moment.add(2, 'quarters')
+ })
+}, {
+ setup: function () {
+ this.date = new Date()
+ this.moment = moment()
+ }
+})
diff --git a/date-fns/src/addQuarters/index.d.ts b/date-fns/src/addQuarters/index.d.ts
new file mode 100644
index 0000000..a046e67
--- /dev/null
+++ b/date-fns/src/addQuarters/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { addQuarters } from 'date-fns'
+export default addQuarters
diff --git a/date-fns/src/addQuarters/index.js.flow b/date-fns/src/addQuarters/index.js.flow
new file mode 100644
index 0000000..f568f0d
--- /dev/null
+++ b/date-fns/src/addQuarters/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (date: Date | number, amount: number) => Date
diff --git a/date-fns/src/addQuarters/index.ts b/date-fns/src/addQuarters/index.ts
new file mode 100644
index 0000000..4eaebf0
--- /dev/null
+++ b/date-fns/src/addQuarters/index.ts
@@ -0,0 +1,36 @@
+import toInteger from '../_lib/toInteger/index'
+import addMonths from '../addMonths/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name addQuarters
+ * @category Quarter Helpers
+ * @summary Add the specified number of year quarters to the given date.
+ *
+ * @description
+ * Add the specified number of year quarters to the given date.
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} date - the date to be changed
+ * @param {Number} amount - the amount of quarters to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.
+ * @returns {Date} the new date with the quarters added
+ * @throws {TypeError} 2 arguments required
+ *
+ * @example
+ * // Add 1 quarter to 1 September 2014:
+ * const result = addQuarters(new Date(2014, 8, 1), 1)
+ * //=> Mon Dec 01 2014 00:00:00
+ */
+export default function addQuarters(
+ dirtyDate: Date | number,
+ dirtyAmount: number
+): Date {
+ requiredArgs(2, arguments)
+
+ const amount = toInteger(dirtyAmount)
+ const months = amount * 3
+ return addMonths(dirtyDate, months)
+}
diff --git a/date-fns/src/addQuarters/test.ts b/date-fns/src/addQuarters/test.ts
new file mode 100644
index 0000000..a09434e
--- /dev/null
+++ b/date-fns/src/addQuarters/test.ts
@@ -0,0 +1,70 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'assert'
+import addQuarters from '.'
+
+describe('addQuarters', function() {
+ it('adds the given number of quarters', function() {
+ const result = addQuarters(new Date(2014, 8 /* Sep */, 1), 1)
+ assert.deepStrictEqual(result, new Date(2014, 11 /* Dec */, 1))
+ })
+
+ it('accepts a timestamp', function() {
+ const result = addQuarters(new Date(2014, 8 /* Sep */, 1).getTime(), 4)
+ assert.deepStrictEqual(result, new Date(2015, 8 /* Sep */, 1))
+ })
+
+ it('converts a fractional number to an integer', function() {
+ const result = addQuarters(new Date(2014, 8 /* Sep */, 1), 1.91)
+ assert.deepStrictEqual(result, new Date(2014, 11 /* Dec */, 1))
+ })
+
+ it('implicitly converts number arguments', function() {
+ // @ts-expect-error
+ const result = addQuarters(new Date(2014, 8 /* Sep */, 1), '1')
+ assert.deepStrictEqual(result, new Date(2014, 11 /* Dec */, 1))
+ })
+
+ it('does not mutate the original date', function() {
+ const date = new Date(2014, 8 /* Sep */, 1)
+ addQuarters(date, 4)
+ assert.deepStrictEqual(date, new Date(2014, 8 /* Sep */, 1))
+ })
+
+ it('works well if the desired month has fewer days and the provided date is in the last day of a month', function() {
+ const date = new Date(2014, 11 /* Dec */, 31)
+ const result = addQuarters(date, 3)
+ assert.deepStrictEqual(result, new Date(2015, 8 /* Sep */, 30))
+ })
+
+ it('handles dates before 100 AD', function() {
+ const initialDate = new Date(0)
+ initialDate.setFullYear(-1, 10 /* Nov */, 30)
+ initialDate.setHours(0, 0, 0, 0)
+ const expectedResult = new Date(0)
+ expectedResult.setFullYear(0, 1 /* Feb */, 29)
+ expectedResult.setHours(0, 0, 0, 0)
+ const result = addQuarters(initialDate, 1)
+ assert.deepStrictEqual(result, expectedResult)
+ })
+
+ it('returns `Invalid Date` if the given date is invalid', function() {
+ const result = addQuarters(new Date(NaN), 1)
+ // @ts-expect-error
+ assert(result instanceof Date && isNaN(result))
+ })
+
+ it('returns `Invalid Date` if the given amount is NaN', function() {
+ const result = addQuarters(new Date(2014, 8 /* Sep */, 1), NaN)
+ // @ts-expect-error
+ assert(result instanceof Date && isNaN(result))
+ })
+
+ it('throws TypeError exception if passed less than 2 arguments', function() {
+ // @ts-expect-error
+ assert.throws(addQuarters.bind(null), TypeError)
+ // @ts-expect-error
+ assert.throws(addQuarters.bind(null, 1), TypeError)
+ })
+})
diff --git a/date-fns/src/addSeconds/benchmark.js b/date-fns/src/addSeconds/benchmark.js
new file mode 100644
index 0000000..799bb3c
--- /dev/null
+++ b/date-fns/src/addSeconds/benchmark.js
@@ -0,0 +1,21 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import addSeconds from '.'
+import moment from 'moment'
+
+suite('addSeconds', function () {
+ benchmark('date-fns', function () {
+ return addSeconds(this.date, 15)
+ })
+
+ benchmark('Moment.js', function () {
+ return this.moment.add(15, 'seconds')
+ })
+}, {
+ setup: function () {
+ this.date = new Date()
+ this.moment = moment()
+ }
+})
diff --git a/date-fns/src/addSeconds/index.d.ts b/date-fns/src/addSeconds/index.d.ts
new file mode 100644
index 0000000..9b1e669
--- /dev/null
+++ b/date-fns/src/addSeconds/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { addSeconds } from 'date-fns'
+export default addSeconds
diff --git a/date-fns/src/addSeconds/index.js.flow b/date-fns/src/addSeconds/index.js.flow
new file mode 100644
index 0000000..f568f0d
--- /dev/null
+++ b/date-fns/src/addSeconds/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (date: Date | number, amount: number) => Date
diff --git a/date-fns/src/addSeconds/index.ts b/date-fns/src/addSeconds/index.ts
new file mode 100644
index 0000000..c858a04
--- /dev/null
+++ b/date-fns/src/addSeconds/index.ts
@@ -0,0 +1,35 @@
+import toInteger from '../_lib/toInteger/index'
+import addMilliseconds from '../addMilliseconds/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name addSeconds
+ * @category Second Helpers
+ * @summary Add the specified number of seconds to the given date.
+ *
+ * @description
+ * Add the specified number of seconds to the given date.
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} date - the date to be changed
+ * @param {Number} amount - the amount of seconds to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.
+ * @returns {Date} the new date with the seconds added
+ * @throws {TypeError} 2 arguments required
+ *
+ * @example
+ * // Add 30 seconds to 10 July 2014 12:45:00:
+ * const result = addSeconds(new Date(2014, 6, 10, 12, 45, 0), 30)
+ * //=> Thu Jul 10 2014 12:45:30
+ */
+export default function addSeconds(
+ dirtyDate: Date | number,
+ dirtyAmount: number
+): Date {
+ requiredArgs(2, arguments)
+
+ const amount = toInteger(dirtyAmount)
+ return addMilliseconds(dirtyDate, amount * 1000)
+}
diff --git a/date-fns/src/addSeconds/test.ts b/date-fns/src/addSeconds/test.ts
new file mode 100644
index 0000000..86032ed
--- /dev/null
+++ b/date-fns/src/addSeconds/test.ts
@@ -0,0 +1,59 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'assert'
+import addSeconds from '.'
+
+describe('addSeconds', function() {
+ it('adds the given number of seconds', function() {
+ const result = addSeconds(new Date(2014, 6 /* Jul */, 10, 12, 45, 0), 30)
+ assert.deepStrictEqual(result, new Date(2014, 6 /* Jul */, 10, 12, 45, 30))
+ })
+
+ it('accepts a timestamp', function() {
+ const result = addSeconds(
+ new Date(2014, 6 /* Jul */, 10, 12, 45, 0).getTime(),
+ 20
+ )
+ assert.deepStrictEqual(result, new Date(2014, 6 /* Jul */, 10, 12, 45, 20))
+ })
+
+ it('converts a fractional number to an integer', function() {
+ const result = addSeconds(
+ new Date(2014, 6 /* Jul */, 10, 12, 45, 0),
+ 30.777
+ )
+ assert.deepStrictEqual(result, new Date(2014, 6 /* Jul */, 10, 12, 45, 30))
+ })
+
+ it('implicitly converts number arguments', function() {
+ // @ts-expect-error
+ const result = addSeconds(new Date(2014, 6 /* Jul */, 10, 12, 45, 5), '30')
+ assert.deepStrictEqual(result, new Date(2014, 6 /* Jul */, 10, 12, 45, 35))
+ })
+
+ it('does not mutate the original date', function() {
+ const date = new Date(2014, 6 /* Jul */, 10, 12, 45, 0)
+ addSeconds(date, 15)
+ assert.deepStrictEqual(date, new Date(2014, 6 /* Jul */, 10, 12, 45, 0))
+ })
+
+ it('returns `Invalid Date` if the given date is invalid', function() {
+ const result = addSeconds(new Date(NaN), 30)
+ // @ts-expect-error
+ assert(result instanceof Date && isNaN(result))
+ })
+
+ it('returns `Invalid Date` if the given amount is NaN', function() {
+ const result = addSeconds(new Date(2014, 6 /* Jul */, 10, 12, 45, 0), NaN)
+ // @ts-expect-error
+ assert(result instanceof Date && isNaN(result))
+ })
+
+ it('throws TypeError exception if passed less than 2 arguments', function() {
+ // @ts-expect-error
+ assert.throws(addSeconds.bind(null), TypeError)
+ // @ts-expect-error
+ assert.throws(addSeconds.bind(null, 1), TypeError)
+ })
+})
diff --git a/date-fns/src/addWeeks/benchmark.js b/date-fns/src/addWeeks/benchmark.js
new file mode 100644
index 0000000..a6dfed7
--- /dev/null
+++ b/date-fns/src/addWeeks/benchmark.js
@@ -0,0 +1,21 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import addWeeks from '.'
+import moment from 'moment'
+
+suite('addWeeks', function () {
+ benchmark('date-fns', function () {
+ return addWeeks(this.date, 2)
+ })
+
+ benchmark('Moment.js', function () {
+ return this.moment.add(2, 'weeks')
+ })
+}, {
+ setup: function () {
+ this.date = new Date()
+ this.moment = moment()
+ }
+})
diff --git a/date-fns/src/addWeeks/index.d.ts b/date-fns/src/addWeeks/index.d.ts
new file mode 100644
index 0000000..25bb83a
--- /dev/null
+++ b/date-fns/src/addWeeks/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { addWeeks } from 'date-fns'
+export default addWeeks
diff --git a/date-fns/src/addWeeks/index.js.flow b/date-fns/src/addWeeks/index.js.flow
new file mode 100644
index 0000000..f568f0d
--- /dev/null
+++ b/date-fns/src/addWeeks/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (date: Date | number, amount: number) => Date
diff --git a/date-fns/src/addWeeks/index.ts b/date-fns/src/addWeeks/index.ts
new file mode 100644
index 0000000..0b52616
--- /dev/null
+++ b/date-fns/src/addWeeks/index.ts
@@ -0,0 +1,36 @@
+import toInteger from '../_lib/toInteger/index'
+import addDays from '../addDays/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name addWeeks
+ * @category Week Helpers
+ * @summary Add the specified number of weeks to the given date.
+ *
+ * @description
+ * Add the specified number of week to the given date.
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} date - the date to be changed
+ * @param {Number} amount - the amount of weeks to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.
+ * @returns {Date} the new date with the weeks added
+ * @throws {TypeError} 2 arguments required
+ *
+ * @example
+ * // Add 4 weeks to 1 September 2014:
+ * const result = addWeeks(new Date(2014, 8, 1), 4)
+ * //=> Mon Sep 29 2014 00:00:00
+ */
+export default function addWeeks(
+ dirtyDate: Date | number,
+ dirtyAmount: number
+): Date {
+ requiredArgs(2, arguments)
+
+ const amount = toInteger(dirtyAmount)
+ const days = amount * 7
+ return addDays(dirtyDate, days)
+}
diff --git a/date-fns/src/addWeeks/test.ts b/date-fns/src/addWeeks/test.ts
new file mode 100644
index 0000000..cd0b916
--- /dev/null
+++ b/date-fns/src/addWeeks/test.ts
@@ -0,0 +1,53 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'assert'
+import addWeeks from '.'
+
+describe('addWeeks', function() {
+ it('adds the given number of weeks', function() {
+ const result = addWeeks(new Date(2014, 8 /* Sep */, 1), 4)
+ assert.deepStrictEqual(result, new Date(2014, 8 /* Sep */, 29))
+ })
+
+ it('accepts a timestamp', function() {
+ const result = addWeeks(new Date(2014, 8 /* Sep */, 1).getTime(), 1)
+ assert.deepStrictEqual(result, new Date(2014, 8 /* Sep */, 8))
+ })
+
+ it('converts a fractional number to an integer', function() {
+ const result = addWeeks(new Date(2014, 8 /* Sep */, 1), 4.95)
+ assert.deepStrictEqual(result, new Date(2014, 8 /* Sep */, 29))
+ })
+
+ it('implicitly converts number arguments', function() {
+ // @ts-expect-error
+ const result = addWeeks(new Date(2014, 8 /* Sep */, 1), '4')
+ assert.deepStrictEqual(result, new Date(2014, 8 /* Sep */, 29))
+ })
+
+ it('does not mutate the original date', function() {
+ const date = new Date(2014, 8 /* Sep */, 1)
+ addWeeks(date, 2)
+ assert.deepStrictEqual(date, new Date(2014, 8 /* Sep */, 1))
+ })
+
+ it('returns `Invalid Date` if the given date is invalid', function() {
+ const result = addWeeks(new Date(NaN), 4)
+ // @ts-expect-error
+ assert(result instanceof Date && isNaN(result))
+ })
+
+ it('returns `Invalid Date` if the given amount is NaN', function() {
+ const result = addWeeks(new Date(2014, 8 /* Sep */, 1), NaN)
+ // @ts-expect-error
+ assert(result instanceof Date && isNaN(result))
+ })
+
+ it('throws TypeError exception if passed less than 2 arguments', function() {
+ // @ts-expect-error
+ assert.throws(addWeeks.bind(null), TypeError)
+ // @ts-expect-error
+ assert.throws(addWeeks.bind(null, 1), TypeError)
+ })
+})
diff --git a/date-fns/src/addYears/benchmark.js b/date-fns/src/addYears/benchmark.js
new file mode 100644
index 0000000..26d8b99
--- /dev/null
+++ b/date-fns/src/addYears/benchmark.js
@@ -0,0 +1,21 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import addYears from '.'
+import moment from 'moment'
+
+suite('addYears', function () {
+ benchmark('date-fns', function () {
+ return addYears(this.date, 20)
+ })
+
+ benchmark('Moment.js', function () {
+ return this.moment.add(20, 'years')
+ })
+}, {
+ setup: function () {
+ this.date = new Date()
+ this.moment = moment()
+ }
+})
diff --git a/date-fns/src/addYears/index.d.ts b/date-fns/src/addYears/index.d.ts
new file mode 100644
index 0000000..df7255f
--- /dev/null
+++ b/date-fns/src/addYears/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { addYears } from 'date-fns'
+export default addYears
diff --git a/date-fns/src/addYears/index.js.flow b/date-fns/src/addYears/index.js.flow
new file mode 100644
index 0000000..f568f0d
--- /dev/null
+++ b/date-fns/src/addYears/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (date: Date | number, amount: number) => Date
diff --git a/date-fns/src/addYears/index.ts b/date-fns/src/addYears/index.ts
new file mode 100644
index 0000000..84e1b94
--- /dev/null
+++ b/date-fns/src/addYears/index.ts
@@ -0,0 +1,35 @@
+import toInteger from '../_lib/toInteger/index'
+import addMonths from '../addMonths/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name addYears
+ * @category Year Helpers
+ * @summary Add the specified number of years to the given date.
+ *
+ * @description
+ * Add the specified number of years to the given date.
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} date - the date to be changed
+ * @param {Number} amount - the amount of years to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.
+ * @returns {Date} the new date with the years added
+ * @throws {TypeError} 2 arguments required
+ *
+ * @example
+ * // Add 5 years to 1 September 2014:
+ * const result = addYears(new Date(2014, 8, 1), 5)
+ * //=> Sun Sep 01 2019 00:00:00
+ */
+export default function addYears(
+ dirtyDate: Date | number,
+ dirtyAmount: number
+): Date {
+ requiredArgs(2, arguments)
+
+ const amount = toInteger(dirtyAmount)
+ return addMonths(dirtyDate, amount * 12)
+}
diff --git a/date-fns/src/addYears/test.ts b/date-fns/src/addYears/test.ts
new file mode 100644
index 0000000..30031f6
--- /dev/null
+++ b/date-fns/src/addYears/test.ts
@@ -0,0 +1,69 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'assert'
+import addYears from '.'
+
+describe('addYears', function() {
+ it('adds the given number of years', function() {
+ const result = addYears(new Date(2014, 8 /* Sep */, 1), 5)
+ assert.deepStrictEqual(result, new Date(2019, 8 /* Sep */, 1))
+ })
+
+ it('accepts a timestamp', function() {
+ const result = addYears(new Date(2014, 8 /* Sep */, 1).getTime(), 12)
+ assert.deepStrictEqual(result, new Date(2026, 8 /* Sep */, 1))
+ })
+
+ it('converts a fractional number to an integer', function() {
+ const result = addYears(new Date(2014, 8 /* Sep */, 1), 5.555)
+ assert.deepStrictEqual(result, new Date(2019, 8 /* Sep */, 1))
+ })
+
+ it('implicitly converts number arguments', function() {
+ // @ts-expect-error
+ const result = addYears(new Date(2014, 8 /* Sep */, 1), '5')
+ assert.deepStrictEqual(result, new Date(2019, 8 /* Sep */, 1))
+ })
+
+ it('does not mutate the original date', function() {
+ const date = new Date(2014, 8 /* Sep */, 1)
+ addYears(date, 12)
+ assert.deepStrictEqual(date, new Date(2014, 8 /* Sep */, 1))
+ })
+
+ it('handles the leap years properly', function() {
+ const result = addYears(new Date(2016, 1 /* Feb */, 29), 1)
+ assert.deepStrictEqual(result, new Date(2017, 1 /* Feb */, 28))
+ })
+
+ it('handles dates before 100 AD', function() {
+ const initialDate = new Date(0)
+ initialDate.setFullYear(0, 1 /* Feb */, 29)
+ initialDate.setHours(0, 0, 0, 0)
+ const expectedResult = new Date(0)
+ expectedResult.setFullYear(1, 1 /* Feb */, 28)
+ expectedResult.setHours(0, 0, 0, 0)
+ const result = addYears(initialDate, 1)
+ assert.deepStrictEqual(result, expectedResult)
+ })
+
+ it('returns `Invalid Date` if the given date is invalid', function() {
+ const result = addYears(new Date(NaN), 5)
+ // @ts-expect-error
+ assert(result instanceof Date && isNaN(result))
+ })
+
+ it('returns `Invalid Date` if the given amount is NaN', function() {
+ const result = addYears(new Date(2014, 8 /* Sep */, 1), NaN)
+ // @ts-expect-error
+ assert(result instanceof Date && isNaN(result))
+ })
+
+ it('throws TypeError exception if passed less than 2 arguments', function() {
+ // @ts-expect-error
+ assert.throws(addYears.bind(null), TypeError)
+ // @ts-expect-error
+ assert.throws(addYears.bind(null, 1), TypeError)
+ })
+})
diff --git a/date-fns/src/areIntervalsOverlapping/index.d.ts b/date-fns/src/areIntervalsOverlapping/index.d.ts
new file mode 100644
index 0000000..8cc0fd1
--- /dev/null
+++ b/date-fns/src/areIntervalsOverlapping/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { areIntervalsOverlapping } from 'date-fns'
+export default areIntervalsOverlapping
diff --git a/date-fns/src/areIntervalsOverlapping/index.js.flow b/date-fns/src/areIntervalsOverlapping/index.js.flow
new file mode 100644
index 0000000..9cab45d
--- /dev/null
+++ b/date-fns/src/areIntervalsOverlapping/index.js.flow
@@ -0,0 +1,58 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (
+ intervalLeft: Interval,
+ intervalRight: Interval,
+ options?: {
+ inclusive?: boolean,
+ }
+) => boolean
diff --git a/date-fns/src/areIntervalsOverlapping/index.ts b/date-fns/src/areIntervalsOverlapping/index.ts
new file mode 100644
index 0000000..3dfcbb4
--- /dev/null
+++ b/date-fns/src/areIntervalsOverlapping/index.ts
@@ -0,0 +1,117 @@
+import toDate from '../toDate/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name areIntervalsOverlapping
+ * @category Interval Helpers
+ * @summary Is the given time interval overlapping with another time interval?
+ *
+ * @description
+ * Is the given time interval overlapping with another time interval? Adjacent intervals do not count as overlapping.
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * - The function was renamed from `areRangesOverlapping` to `areIntervalsOverlapping`.
+ * This change was made to mirror the use of the word "interval" in standard ISO 8601:2004 terminology:
+ *
+ * ```
+ * 2.1.3
+ * time interval
+ * part of the time axis limited by two instants
+ * ```
+ *
+ * Also, this function now accepts an object with `start` and `end` properties
+ * instead of two arguments as an interval.
+ * This function now throws `RangeError` if the start of the interval is after its end
+ * or if any date in the interval is `Invalid Date`.
+ *
+ * ```javascript
+ * // Before v2.0.0
+ *
+ * areRangesOverlapping(
+ * new Date(2014, 0, 10), new Date(2014, 0, 20),
+ * new Date(2014, 0, 17), new Date(2014, 0, 21)
+ * )
+ *
+ * // v2.0.0 onward
+ *
+ * areIntervalsOverlapping(
+ * { start: new Date(2014, 0, 10), end: new Date(2014, 0, 20) },
+ * { start: new Date(2014, 0, 17), end: new Date(2014, 0, 21) }
+ * )
+ * ```
+ *
+ * @param {Interval} intervalLeft - the first interval to compare. See [Interval]{@link https://date-fns.org/docs/Interval}
+ * @param {Interval} intervalRight - the second interval to compare. See [Interval]{@link https://date-fns.org/docs/Interval}
+ * @param {Object} [options] - the object with options
+ * @param {Boolean} [options.inclusive=false] - whether the comparison is inclusive or not
+ * @returns {Boolean} whether the time intervals are overlapping
+ * @throws {TypeError} 2 arguments required
+ * @throws {RangeError} The start of an interval cannot be after its end
+ * @throws {RangeError} Date in interval cannot be `Invalid Date`
+ *
+ * @example
+ * // For overlapping time intervals:
+ * areIntervalsOverlapping(
+ * { start: new Date(2014, 0, 10), end: new Date(2014, 0, 20) },
+ * { start: new Date(2014, 0, 17), end: new Date(2014, 0, 21) }
+ * )
+ * //=> true
+ *
+ * @example
+ * // For non-overlapping time intervals:
+ * areIntervalsOverlapping(
+ * { start: new Date(2014, 0, 10), end: new Date(2014, 0, 20) },
+ * { start: new Date(2014, 0, 21), end: new Date(2014, 0, 22) }
+ * )
+ * //=> false
+ *
+ * @example
+ * // For adjacent time intervals:
+ * areIntervalsOverlapping(
+ * { start: new Date(2014, 0, 10), end: new Date(2014, 0, 20) },
+ * { start: new Date(2014, 0, 20), end: new Date(2014, 0, 30) }
+ * )
+ * //=> false
+ *
+ * @example
+ * // Using the inclusive option:
+ * areIntervalsOverlapping(
+ * { start: new Date(2014, 0, 10), end: new Date(2014, 0, 20) },
+ * { start: new Date(2014, 0, 20), end: new Date(2014, 0, 24) }
+ * )
+ * //=> false
+ * areIntervalsOverlapping(
+ * { start: new Date(2014, 0, 10), end: new Date(2014, 0, 20) },
+ * { start: new Date(2014, 0, 20), end: new Date(2014, 0, 24) },
+ * { inclusive: true }
+ * )
+ * //=> true
+ */
+export default function areIntervalsOverlapping(
+ dirtyIntervalLeft: Interval,
+ dirtyIntervalRight: Interval,
+ options = { inclusive: false }
+): boolean {
+ requiredArgs(2, arguments)
+
+ const intervalLeft = dirtyIntervalLeft || {}
+ const intervalRight = dirtyIntervalRight || {}
+ const leftStartTime = toDate(intervalLeft.start).getTime()
+ const leftEndTime = toDate(intervalLeft.end).getTime()
+ const rightStartTime = toDate(intervalRight.start).getTime()
+ const rightEndTime = toDate(intervalRight.end).getTime()
+
+ // Throw an exception if start date is after end date or if any date is `Invalid Date`
+ if (!(leftStartTime <= leftEndTime && rightStartTime <= rightEndTime)) {
+ throw new RangeError('Invalid interval')
+ }
+
+ if (options.inclusive) {
+ return leftStartTime <= rightEndTime && rightStartTime <= leftEndTime
+ }
+
+ return leftStartTime < rightEndTime && rightStartTime < leftEndTime
+}
diff --git a/date-fns/src/areIntervalsOverlapping/test.ts b/date-fns/src/areIntervalsOverlapping/test.ts
new file mode 100644
index 0000000..1ff7c32
--- /dev/null
+++ b/date-fns/src/areIntervalsOverlapping/test.ts
@@ -0,0 +1,253 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'assert'
+import areIntervalsOverlapping from '.'
+import context from 'assert'
+
+describe('areIntervalsOverlapping', function () {
+ const initialIntervalStart = new Date(2016, 10, 10, 13, 0, 0)
+ const initialIntervalEnd = new Date(2016, 11, 3, 15, 0, 0)
+
+ describe("when the time intervals don't overlap", function () {
+ it('returns false for a valid non overlapping interval before another interval', function () {
+ const earlierIntervalStart = new Date(2016, 9, 25)
+ const earlierIntervalEnd = new Date(2016, 10, 9)
+
+ const isOverlapping = areIntervalsOverlapping(
+ { start: initialIntervalStart, end: initialIntervalEnd },
+ { start: earlierIntervalStart, end: earlierIntervalEnd }
+ )
+ assert(isOverlapping === false)
+ })
+
+ it('returns false for a valid non overlapping interval after another interval', function () {
+ const laterIntervalStart = new Date(2016, 11, 4)
+ const laterIntervalEnd = new Date(2016, 11, 9)
+
+ const isOverlapping = areIntervalsOverlapping(
+ { start: initialIntervalStart, end: initialIntervalEnd },
+ { start: laterIntervalStart, end: laterIntervalEnd }
+ )
+ assert(isOverlapping === false)
+ })
+
+ it('returns false for a non overlapping same-day interval', function () {
+ const sameDayIntervalStart = new Date(2016, 11, 4, 9, 0, 0)
+ const sameDayIntervalEnd = new Date(2016, 11, 4, 18, 0, 0)
+
+ const isOverlapping = areIntervalsOverlapping(
+ { start: initialIntervalStart, end: initialIntervalEnd },
+ { start: sameDayIntervalStart, end: sameDayIntervalEnd }
+ )
+ assert(isOverlapping === false)
+ })
+
+ it('returns false for an interval differing by a few hours', function () {
+ const oneDayOverlappingIntervalStart = new Date(2016, 11, 3, 18, 0, 0)
+ const oneDayOverlappingIntervalEnd = new Date(2016, 11, 14, 13, 0, 0)
+
+ const isOverlapping = areIntervalsOverlapping(
+ { start: initialIntervalStart, end: initialIntervalEnd },
+ {
+ start: oneDayOverlappingIntervalStart,
+ end: oneDayOverlappingIntervalEnd,
+ }
+ )
+ assert(isOverlapping === false)
+ })
+
+ it("returns false for an interval with the same startDateTime as the initial time intervals's endDateTime", function () {
+ const oneDayOverlapIntervalStart = new Date(2016, 11, 3, 15, 0, 0)
+ const oneDayOverlapIntervalEnd = new Date(2016, 11, 14, 13, 0, 0)
+
+ const isOverlapping = areIntervalsOverlapping(
+ { start: initialIntervalStart, end: initialIntervalEnd },
+ { start: oneDayOverlapIntervalStart, end: oneDayOverlapIntervalEnd }
+ )
+ assert(isOverlapping === false)
+ })
+
+ it("returns false for an interval with the same endDateTime as the initial time interval's startDateTime", function () {
+ const oneDayOverlapIntervalStart = new Date(2016, 10, 3, 15, 0, 0)
+ const oneDayOverlapIntervalEnd = new Date(2016, 10, 10, 13, 0, 0)
+
+ const isOverlapping = areIntervalsOverlapping(
+ { start: initialIntervalStart, end: initialIntervalEnd },
+ { start: oneDayOverlapIntervalStart, end: oneDayOverlapIntervalEnd }
+ )
+ assert(isOverlapping === false)
+ })
+ })
+
+ describe('when the time intervals overlap', function () {
+ it('returns true for an interval included within another interval', function () {
+ const includedIntervalStart = new Date(2016, 10, 14)
+ const includedIntervalEnd = new Date(2016, 10, 14)
+
+ const isOverlapping = areIntervalsOverlapping(
+ { start: initialIntervalStart, end: initialIntervalEnd },
+ { start: includedIntervalStart, end: includedIntervalEnd }
+ )
+ assert(isOverlapping === true)
+ })
+
+ it('returns true for an interval overlapping at the end', function () {
+ const endOverlappingIntervalStart = new Date(2016, 10, 5)
+ const endOverlappingIntervalEnd = new Date(2016, 10, 14)
+
+ const isOverlapping = areIntervalsOverlapping(
+ { start: initialIntervalStart, end: initialIntervalEnd },
+ { start: endOverlappingIntervalStart, end: endOverlappingIntervalEnd }
+ )
+ assert(isOverlapping === true)
+ })
+
+ it('returns true for an interval overlapping at the beginning', function () {
+ const startOverlappingIntervalStart = new Date(2016, 10, 20)
+ const startOverlappingIntervalEnd = new Date(2016, 11, 14)
+
+ const isOverlapping = areIntervalsOverlapping(
+ { start: initialIntervalStart, end: initialIntervalEnd },
+ {
+ start: startOverlappingIntervalStart,
+ end: startOverlappingIntervalEnd,
+ }
+ )
+ assert(isOverlapping === true)
+ })
+
+ it('returns true for an interval including another interval', function () {
+ const includingIntervalStart = new Date(2016, 10, 5)
+ const includingIntervalEnd = new Date(2016, 11, 15)
+
+ const isOverlapping = areIntervalsOverlapping(
+ { start: initialIntervalStart, end: initialIntervalEnd },
+ { start: includingIntervalStart, end: includingIntervalEnd }
+ )
+ assert(isOverlapping === true)
+ })
+ })
+
+ it('accepts timestamp', function () {
+ const initialIntervalStart = new Date(2016, 10, 10, 13, 0, 0).getTime()
+ const initialIntervalEnd = new Date(2016, 11, 3, 15, 0, 0).getTime()
+
+ const endOverlappingIntervalStart = new Date(2016, 10, 5).getTime()
+ const endOverlappingIntervalEnd = new Date(2016, 10, 14).getTime()
+
+ const isOverlapping = areIntervalsOverlapping(
+ { start: initialIntervalStart, end: initialIntervalEnd },
+ { start: endOverlappingIntervalStart, end: endOverlappingIntervalEnd }
+ )
+ assert(isOverlapping === true)
+ })
+
+ it('throws an exception if the start date of the initial time interval is after the end date', function () {
+ const block = areIntervalsOverlapping.bind(
+ null,
+ { start: new Date(2016, 10, 7), end: new Date(2016, 10, 3) },
+ { start: new Date(2016, 10, 5), end: new Date(2016, 10, 15) }
+ )
+ assert.throws(block, RangeError)
+ })
+
+ it('throws an exception if the start date of the compared time interval is after the end date', function () {
+ const block = areIntervalsOverlapping.bind(
+ null,
+ { start: new Date(2016, 10, 3), end: new Date(2016, 10, 7) },
+ { start: new Date(2016, 10, 15), end: new Date(2016, 10, 5) }
+ )
+ assert.throws(block, RangeError)
+ })
+
+ it('throws an exception if the initial interval is undefined', function () {
+ // @ts-expect-error
+ const block = areIntervalsOverlapping.bind(null, undefined, {
+ start: new Date(2016, 10, 5),
+ end: new Date(2016, 10, 15),
+ })
+ assert.throws(block, RangeError)
+ })
+
+ it('throws an exception if the compared interval is undefined', function () {
+ // @ts-expect-error
+ const block = areIntervalsOverlapping.bind(
+ null,
+ { start: new Date(2016, 10, 3), end: new Date(2016, 10, 7) },
+ undefined
+ )
+ assert.throws(block, RangeError)
+ })
+
+ describe('when the inclusive option is true', function () {
+ it("returns true for an interval with the same startDateTime as the initial time interval's endDateTime", function () {
+ const oneDayOverlapIntervalStart = new Date(2016, 11, 3, 15, 0, 0)
+ const oneDayOverlapIntervalEnd = new Date(2016, 11, 14, 13, 0, 0)
+
+ const isOverlapping = areIntervalsOverlapping(
+ { start: initialIntervalStart, end: initialIntervalEnd },
+ { start: oneDayOverlapIntervalStart, end: oneDayOverlapIntervalEnd },
+ { inclusive: true }
+ )
+ assert(isOverlapping)
+ })
+
+ it("returns true for an interval with the same endDateTime as the initial time interval's startDateTime", function () {
+ const oneDayOverlapIntervalStart = new Date(2016, 10, 3, 15, 0, 0)
+ const oneDayOverlapIntervalEnd = new Date(2016, 10, 10, 13, 0, 0)
+
+ const isOverlapping = areIntervalsOverlapping(
+ { start: initialIntervalStart, end: initialIntervalEnd },
+ { start: oneDayOverlapIntervalStart, end: oneDayOverlapIntervalEnd },
+ { inclusive: true }
+ )
+ assert(isOverlapping)
+ })
+ })
+
+ describe('one of the dates is `Invalid Date`', function () {
+ it('throws an exception if the start date of the initial time interval is `Invalid Date`', function () {
+ const block = areIntervalsOverlapping.bind(
+ null,
+ { start: new Date(NaN), end: new Date(2016, 10, 3) },
+ { start: new Date(2016, 10, 5), end: new Date(2016, 10, 15) }
+ )
+ assert.throws(block, RangeError)
+ })
+
+ it('throws an exception if the end date of the initial time interval is `Invalid Date`', function () {
+ const block = areIntervalsOverlapping.bind(
+ null,
+ { start: new Date(2016, 10, 3), end: new Date(NaN) },
+ { start: new Date(2016, 10, 5), end: new Date(2016, 10, 15) }
+ )
+ assert.throws(block, RangeError)
+ })
+
+ it('throws an exception if the start date of the compared time interval is `Invalid Date`', function () {
+ const block = areIntervalsOverlapping.bind(
+ null,
+ { start: new Date(2016, 10, 3), end: new Date(2016, 10, 7) },
+ { start: new Date(NaN), end: new Date(2016, 10, 5) }
+ )
+ assert.throws(block, RangeError)
+ })
+
+ it('throws an exception if the end date of the compared time interval is `Invalid Date`', function () {
+ const block = areIntervalsOverlapping.bind(
+ null,
+ { start: new Date(2016, 10, 3), end: new Date(2016, 10, 7) },
+ { start: new Date(2016, 10, 5), end: new Date(NaN) }
+ )
+ assert.throws(block, RangeError)
+ })
+ })
+
+ it('throws TypeError exception if passed less than 2 arguments', function () {
+ // @ts-expect-error
+ assert.throws(areIntervalsOverlapping.bind(null), TypeError)
+ // @ts-expect-error
+ assert.throws(areIntervalsOverlapping.bind(null, 1), TypeError)
+ })
+})
diff --git a/date-fns/src/closestIndexTo/benchmark.js b/date-fns/src/closestIndexTo/benchmark.js
new file mode 100644
index 0000000..c9a91a3
--- /dev/null
+++ b/date-fns/src/closestIndexTo/benchmark.js
@@ -0,0 +1,19 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import closestIndexTo from '.'
+
+suite('closestIndexTo', function () {
+ benchmark('date-fns', function () {
+ return closestIndexTo(this.date, this.array)
+ })
+}, {
+ setup: function () {
+ this.date = new Date()
+ this.array = [
+ new Date(this.date.getTime() + 604800001),
+ new Date(this.date.getTime() - 604800000)
+ ]
+ }
+})
diff --git a/date-fns/src/closestIndexTo/index.d.ts b/date-fns/src/closestIndexTo/index.d.ts
new file mode 100644
index 0000000..672d132
--- /dev/null
+++ b/date-fns/src/closestIndexTo/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { closestIndexTo } from 'date-fns'
+export default closestIndexTo
diff --git a/date-fns/src/closestIndexTo/index.js b/date-fns/src/closestIndexTo/index.js
new file mode 100644
index 0000000..2b6b73c
--- /dev/null
+++ b/date-fns/src/closestIndexTo/index.js
@@ -0,0 +1,79 @@
+import toDate from '../toDate/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name closestIndexTo
+ * @category Common Helpers
+ * @summary Return an index of the closest date from the array comparing to the given date.
+ *
+ * @description
+ * Return an index of the closest date from the array comparing to the given date.
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * - Now, `closestIndexTo` doesn't throw an exception
+ * when the second argument is not an array, and returns Invalid Date instead.
+ *
+ * @param {Date|Number} dateToCompare - the date to compare with
+ * @param {Date[]|Number[]} datesArray - the array to search
+ * @returns {Number} an index of the date closest to the given date
+ * @throws {TypeError} 2 arguments required
+ *
+ * @example
+ * // Which date is closer to 6 September 2015?
+ * var dateToCompare = new Date(2015, 8, 6)
+ * var datesArray = [
+ * new Date(2015, 0, 1),
+ * new Date(2016, 0, 1),
+ * new Date(2017, 0, 1)
+ * ]
+ * var result = closestIndexTo(dateToCompare, datesArray)
+ * //=> 1
+ */
+export default function closestIndexTo(dirtyDateToCompare, dirtyDatesArray) {
+ requiredArgs(2, arguments)
+
+ var dateToCompare = toDate(dirtyDateToCompare)
+
+ if (isNaN(dateToCompare)) {
+ return NaN
+ }
+
+ var timeToCompare = dateToCompare.getTime()
+
+ var datesArray
+ // `dirtyDatesArray` is undefined or null
+ if (dirtyDatesArray == null) {
+ datesArray = []
+
+ // `dirtyDatesArray` is Array, Set or Map, or object with custom `forEach` method
+ } else if (typeof dirtyDatesArray.forEach === 'function') {
+ datesArray = dirtyDatesArray
+
+ // If `dirtyDatesArray` is Array-like Object, convert to Array. Otherwise, make it empty Array
+ } else {
+ datesArray = Array.prototype.slice.call(dirtyDatesArray)
+ }
+
+ var result
+ var minDistance
+ datesArray.forEach(function(dirtyDate, index) {
+ var currentDate = toDate(dirtyDate)
+
+ if (isNaN(currentDate)) {
+ result = NaN
+ minDistance = NaN
+ return
+ }
+
+ var distance = Math.abs(timeToCompare - currentDate.getTime())
+ if (result == null || distance < minDistance) {
+ result = index
+ minDistance = distance
+ }
+ })
+
+ return result
+}
diff --git a/date-fns/src/closestIndexTo/index.js.flow b/date-fns/src/closestIndexTo/index.js.flow
new file mode 100644
index 0000000..335e082
--- /dev/null
+++ b/date-fns/src/closestIndexTo/index.js.flow
@@ -0,0 +1,55 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (
+ dateToCompare: Date | number,
+ datesArray: (Date | number)[]
+) => number
diff --git a/date-fns/src/closestIndexTo/test.js b/date-fns/src/closestIndexTo/test.js
new file mode 100644
index 0000000..d070c4c
--- /dev/null
+++ b/date-fns/src/closestIndexTo/test.js
@@ -0,0 +1,102 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import closestIndexTo from '.'
+
+describe('closestIndexTo', function() {
+ it('returns the date index from the given array closest to the given date', function() {
+ var date = new Date(2014, 6 /* Jul */, 2)
+ var result = closestIndexTo(date, [
+ new Date(2015, 7 /* Aug */, 31),
+ new Date(2012, 6 /* Jul */, 2)
+ ])
+ assert.equal(result, 0)
+ })
+
+ it('works if the closest date from the given array is before the given date', function() {
+ var date = new Date(2014, 6 /* Jul */, 2, 6, 30, 4, 500)
+ var result = closestIndexTo(date, [
+ new Date(2014, 6 /* Jul */, 2, 6, 30, 5, 900),
+ new Date(2014, 6 /* Jul */, 2, 6, 30, 3, 900),
+ new Date(2014, 6 /* Jul */, 2, 6, 30, 10)
+ ])
+ assert.equal(result, 1)
+ })
+
+ it('accepts timestamps', function() {
+ var date = new Date(2014, 6 /* Jul */, 2).getTime()
+ var result = closestIndexTo(date, [
+ new Date(2015, 7 /* Aug */, 31).getTime(),
+ new Date(2012, 6 /* Jul */, 2).getTime()
+ ])
+ assert.equal(result, 0)
+ })
+
+ it('returns undefined if the given array is empty', function() {
+ var date = new Date(2014, 6 /* Jul */, 2).getTime()
+ var result = closestIndexTo(date, [])
+ assert(result == null)
+ })
+
+ it('returns NaN if the given date is `Invalid Date`', function() {
+ var date = new Date(NaN)
+ var result = closestIndexTo(date, [
+ new Date(2015, 7 /* Aug */, 31),
+ new Date(2012, 6 /* Jul */, 2)
+ ])
+ assert(isNaN(result))
+ })
+
+ it('returns NaN if any date in the given array is `Invalid Date`', function() {
+ var date = new Date(2014, 6 /* Jul */, 2)
+ var result = closestIndexTo(date, [
+ new Date(2015, 7 /* Aug */, 31),
+ new Date(NaN),
+ new Date(2012, 6 /* Jul */, 2)
+ ])
+ assert(isNaN(result))
+ })
+
+ it('returns NaN if any value in the given array is undefined', function() {
+ var date = new Date(2014, 6 /* Jul */, 2)
+ var result = closestIndexTo(date, [
+ new Date(2015, 7 /* Aug */, 31),
+ // $ExpectedMistake
+ undefined,
+ new Date(2012, 6 /* Jul */, 2)
+ ])
+ assert(isNaN(result))
+ })
+
+ it('converts Array-like objects into Array', function() {
+ var date = new Date(2014, 6 /* Jul */, 2)
+ var object = {
+ '0': new Date(2015, 7 /* Aug */, 31),
+ '1': new Date(2012, 6 /* Jul */, 2),
+ length: 2
+ }
+ // $ExpectedMistake
+ var result = closestIndexTo(date, object)
+ assert.equal(result, 0)
+ })
+
+ it('converts undefined into empty array', function() {
+ var date = new Date(2014, 6 /* Jul */, 2).getTime()
+ // $ExpectedMistake
+ var result = closestIndexTo(date, undefined)
+ assert(result == null)
+ })
+
+ it('converts null into empty array', function() {
+ var date = new Date(2014, 6 /* Jul */, 2).getTime()
+ // $ExpectedMistake
+ var result = closestIndexTo(date, null)
+ assert(result == null)
+ })
+
+ it('throws TypeError exception if passed less than 2 arguments', function() {
+ assert.throws(closestIndexTo.bind(null), TypeError)
+ assert.throws(closestIndexTo.bind(null, 1), TypeError)
+ })
+})
diff --git a/date-fns/src/closestTo/benchmark.js b/date-fns/src/closestTo/benchmark.js
new file mode 100644
index 0000000..79ab881
--- /dev/null
+++ b/date-fns/src/closestTo/benchmark.js
@@ -0,0 +1,19 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import closestTo from '.'
+
+suite('closestTo', function () {
+ benchmark('date-fns', function () {
+ return closestTo(this.date, this.array)
+ })
+}, {
+ setup: function () {
+ this.date = new Date()
+ this.array = [
+ new Date(this.date.getTime() + 604800001),
+ new Date(this.date.getTime() - 604800000)
+ ]
+ }
+})
diff --git a/date-fns/src/closestTo/index.d.ts b/date-fns/src/closestTo/index.d.ts
new file mode 100644
index 0000000..d4e084e
--- /dev/null
+++ b/date-fns/src/closestTo/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { closestTo } from 'date-fns'
+export default closestTo
diff --git a/date-fns/src/closestTo/index.js b/date-fns/src/closestTo/index.js
new file mode 100644
index 0000000..64bfff1
--- /dev/null
+++ b/date-fns/src/closestTo/index.js
@@ -0,0 +1,77 @@
+import toDate from '../toDate/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name closestTo
+ * @category Common Helpers
+ * @summary Return a date from the array closest to the given date.
+ *
+ * @description
+ * Return a date from the array closest to the given date.
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * - Now, `closestTo` doesn't throw an exception
+ * when the second argument is not an array, and returns Invalid Date instead.
+ *
+ * @param {Date|Number} dateToCompare - the date to compare with
+ * @param {Date[]|Number[]} datesArray - the array to search
+ * @returns {Date} the date from the array closest to the given date
+ * @throws {TypeError} 2 arguments required
+ *
+ * @example
+ * // Which date is closer to 6 September 2015: 1 January 2000 or 1 January 2030?
+ * var dateToCompare = new Date(2015, 8, 6)
+ * var result = closestTo(dateToCompare, [
+ * new Date(2000, 0, 1),
+ * new Date(2030, 0, 1)
+ * ])
+ * //=> Tue Jan 01 2030 00:00:00
+ */
+export default function closestTo(dirtyDateToCompare, dirtyDatesArray) {
+ requiredArgs(2, arguments)
+
+ var dateToCompare = toDate(dirtyDateToCompare)
+
+ if (isNaN(dateToCompare)) {
+ return new Date(NaN)
+ }
+
+ var timeToCompare = dateToCompare.getTime()
+
+ var datesArray
+ // `dirtyDatesArray` is undefined or null
+ if (dirtyDatesArray == null) {
+ datesArray = []
+
+ // `dirtyDatesArray` is Array, Set or Map, or object with custom `forEach` method
+ } else if (typeof dirtyDatesArray.forEach === 'function') {
+ datesArray = dirtyDatesArray
+
+ // If `dirtyDatesArray` is Array-like Object, convert to Array. Otherwise, make it empty Array
+ } else {
+ datesArray = Array.prototype.slice.call(dirtyDatesArray)
+ }
+
+ var result
+ var minDistance
+ datesArray.forEach(function(dirtyDate) {
+ var currentDate = toDate(dirtyDate)
+
+ if (isNaN(currentDate)) {
+ result = new Date(NaN)
+ minDistance = NaN
+ return
+ }
+
+ var distance = Math.abs(timeToCompare - currentDate.getTime())
+ if (result == null || distance < minDistance) {
+ result = currentDate
+ minDistance = distance
+ }
+ })
+
+ return result
+}
diff --git a/date-fns/src/closestTo/index.js.flow b/date-fns/src/closestTo/index.js.flow
new file mode 100644
index 0000000..318e080
--- /dev/null
+++ b/date-fns/src/closestTo/index.js.flow
@@ -0,0 +1,55 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (
+ dateToCompare: Date | number,
+ datesArray: (Date | number)[]
+) => Date
diff --git a/date-fns/src/closestTo/test.js b/date-fns/src/closestTo/test.js
new file mode 100644
index 0000000..1924972
--- /dev/null
+++ b/date-fns/src/closestTo/test.js
@@ -0,0 +1,112 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import closestTo from '.'
+
+describe('closestTo', function() {
+ it('returns the date from the given array closest to the given date', function() {
+ var date = new Date(2014, 6 /* Jul */, 2)
+ var result = closestTo(date, [
+ new Date(2015, 7 /* Aug */, 31),
+ new Date(2012, 6 /* Jul */, 2)
+ ])
+ assert.deepEqual(result, new Date(2015, 7 /* Aug */, 31))
+ })
+
+ it('works if the closest date from the given array is before the given date', function() {
+ var date = new Date(2014, 6 /* Jul */, 2, 6, 30, 4, 500)
+ var result = closestTo(date, [
+ new Date(2014, 6 /* Jul */, 2, 6, 30, 5, 900),
+ new Date(2014, 6 /* Jul */, 2, 6, 30, 3, 900),
+ new Date(2014, 6 /* Jul */, 2, 6, 30, 10)
+ ])
+ assert.deepEqual(result, new Date(2014, 6 /* Jul */, 2, 6, 30, 3, 900))
+ })
+
+ it('accepts timestamps', function() {
+ var date = new Date(2014, 6 /* Jul */, 2).getTime()
+ var result = closestTo(date, [
+ new Date(2015, 7 /* Aug */, 31).getTime(),
+ new Date(2012, 6 /* Jul */, 2).getTime()
+ ])
+ assert.deepEqual(result, new Date(2015, 7 /* Aug */, 31))
+ })
+
+ it('returns undefined if the given array is empty', function() {
+ var date = new Date(2014, 6 /* Jul */, 2).getTime()
+ var result = closestTo(date, [])
+ assert(result == null)
+ })
+
+ it('returns `Invalid Date` if the given date is `Invalid Date`', function() {
+ var date = new Date(NaN)
+ var result = closestTo(date, [
+ new Date(2015, 7 /* Aug */, 31),
+ new Date(2012, 6 /* Jul */, 2)
+ ])
+ assert(result instanceof Date && isNaN(result))
+ })
+
+ it('returns `Invalid Date` if any date in the given array is `Invalid Date`', function() {
+ var date = new Date(2014, 6 /* Jul */, 2)
+ var result = closestTo(date, [
+ new Date(2015, 7 /* Aug */, 31),
+ new Date(NaN),
+ new Date(2012, 6 /* Jul */, 2)
+ ])
+ assert(result instanceof Date && isNaN(result))
+ })
+
+ it('returns `Invalid Date` if any date in the given array is `Invalid Date`', function() {
+ var date = new Date(2014, 6 /* Jul */, 2)
+ var result = closestTo(date, [
+ new Date(2015, 7 /* Aug */, 31),
+ new Date(NaN),
+ new Date(2012, 6 /* Jul */, 2)
+ ])
+ assert(result instanceof Date && isNaN(result))
+ })
+
+ it('returns `Invalid Date` if any value in the given array is undefined', function() {
+ var date = new Date(2014, 6 /* Jul */, 2)
+ var result = closestTo(date, [
+ new Date(2015, 7 /* Aug */, 31),
+ // $ExpectedMistake
+ undefined,
+ new Date(2012, 6 /* Jul */, 2)
+ ])
+ assert(result instanceof Date && isNaN(result))
+ })
+
+ it('converts Array-like objects into Array', function() {
+ var date = new Date(2014, 6 /* Jul */, 2)
+ var object = {
+ '0': new Date(2015, 7 /* Aug */, 31),
+ '1': new Date(2012, 6 /* Jul */, 2),
+ length: 2
+ }
+ // $ExpectedMistake
+ var result = closestTo(date, object)
+ assert.deepEqual(result, new Date(2015, 7 /* Aug */, 31))
+ })
+
+ it('converts undefined into empty array', function() {
+ var date = new Date(2014, 6 /* Jul */, 2).getTime()
+ // $ExpectedMistake
+ var result = closestTo(date, undefined)
+ assert(result == null)
+ })
+
+ it('converts null into empty array', function() {
+ var date = new Date(2014, 6 /* Jul */, 2).getTime()
+ // $ExpectedMistake
+ var result = closestTo(date, null)
+ assert(result == null)
+ })
+
+ it('throws TypeError exception if passed less than 2 arguments', function() {
+ assert.throws(closestTo.bind(null), TypeError)
+ assert.throws(closestTo.bind(null, 1), TypeError)
+ })
+})
diff --git a/date-fns/src/compareAsc/benchmark.js b/date-fns/src/compareAsc/benchmark.js
new file mode 100644
index 0000000..479f252
--- /dev/null
+++ b/date-fns/src/compareAsc/benchmark.js
@@ -0,0 +1,16 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import compareAsc from '.'
+
+suite('compareAsc', function () {
+ benchmark('date-fns', function () {
+ return compareAsc(this.dateA, this.dateB)
+ })
+}, {
+ setup: function () {
+ this.dateA = new Date()
+ this.dateB = new Date(this.dateA.getTime() + 604800000)
+ }
+})
diff --git a/date-fns/src/compareAsc/index.d.ts b/date-fns/src/compareAsc/index.d.ts
new file mode 100644
index 0000000..ff920e6
--- /dev/null
+++ b/date-fns/src/compareAsc/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { compareAsc } from 'date-fns'
+export default compareAsc
diff --git a/date-fns/src/compareAsc/index.js.flow b/date-fns/src/compareAsc/index.js.flow
new file mode 100644
index 0000000..c799819
--- /dev/null
+++ b/date-fns/src/compareAsc/index.js.flow
@@ -0,0 +1,55 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (
+ dateLeft: Date | number,
+ dateRight: Date | number
+) => number
diff --git a/date-fns/src/compareAsc/index.ts b/date-fns/src/compareAsc/index.ts
new file mode 100644
index 0000000..0fa1fcb
--- /dev/null
+++ b/date-fns/src/compareAsc/index.ts
@@ -0,0 +1,59 @@
+import toDate from '../toDate/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name compareAsc
+ * @category Common Helpers
+ * @summary Compare the two dates and return -1, 0 or 1.
+ *
+ * @description
+ * Compare the two dates and return 1 if the first date is after the second,
+ * -1 if the first date is before the second or 0 if dates are equal.
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} dateLeft - the first date to compare
+ * @param {Date|Number} dateRight - the second date to compare
+ * @returns {Number} the result of the comparison
+ * @throws {TypeError} 2 arguments required
+ *
+ * @example
+ * // Compare 11 February 1987 and 10 July 1989:
+ * const result = compareAsc(new Date(1987, 1, 11), new Date(1989, 6, 10))
+ * //=> -1
+ *
+ * @example
+ * // Sort the array of dates:
+ * const result = [
+ * new Date(1995, 6, 2),
+ * new Date(1987, 1, 11),
+ * new Date(1989, 6, 10)
+ * ].sort(compareAsc)
+ * //=> [
+ * // Wed Feb 11 1987 00:00:00,
+ * // Mon Jul 10 1989 00:00:00,
+ * // Sun Jul 02 1995 00:00:00
+ * // ]
+ */
+export default function compareAsc(
+ dirtyDateLeft: Date | number,
+ dirtyDateRight: Date | number
+): number {
+ requiredArgs(2, arguments)
+
+ const dateLeft = toDate(dirtyDateLeft)
+ const dateRight = toDate(dirtyDateRight)
+
+ const diff = dateLeft.getTime() - dateRight.getTime()
+
+ if (diff < 0) {
+ return -1
+ } else if (diff > 0) {
+ return 1
+ // Return 0 if diff is 0; return NaN if diff is NaN
+ } else {
+ return diff
+ }
+}
diff --git a/date-fns/src/compareAsc/test.ts b/date-fns/src/compareAsc/test.ts
new file mode 100644
index 0000000..c12c560
--- /dev/null
+++ b/date-fns/src/compareAsc/test.ts
@@ -0,0 +1,81 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'assert'
+import compareAsc from '.'
+
+describe('compareAsc', function() {
+ it('returns 0 if the given dates are equal', function() {
+ const result = compareAsc(
+ new Date(1989, 6 /* Jul */, 10),
+ new Date(1989, 6 /* Jul */, 10)
+ )
+ assert(result === 0)
+ })
+
+ it('returns -1 if the first date is before the second one', function() {
+ const result = compareAsc(
+ new Date(1987, 1 /* Feb */, 11),
+ new Date(1989, 6 /* Jul */, 10)
+ )
+ assert(result === -1)
+ })
+
+ it('returns 1 if the first date is after the second one', function() {
+ const result = compareAsc(
+ new Date(1989, 6 /* Jul */, 10),
+ new Date(1987, 1 /* Feb */, 11)
+ )
+ assert(result === 1)
+ })
+
+ it('sorts the dates array in the chronological order when function is passed as the argument to Array.prototype.sort()', function() {
+ const unsortedArray = [
+ new Date(1995, 6 /* Jul */, 2),
+ new Date(1987, 1 /* Feb */, 11),
+ new Date(1989, 6 /* Jul */, 10)
+ ]
+
+ const sortedArray = [
+ new Date(1987, 1 /* Feb */, 11),
+ new Date(1989, 6 /* Jul */, 10),
+ new Date(1995, 6 /* Jul */, 2)
+ ]
+
+
+ unsortedArray.sort(compareAsc)
+ const result = unsortedArray
+
+ assert.deepStrictEqual(result, sortedArray)
+ })
+
+ it('accepts timestamps', function() {
+ const result = compareAsc(
+ new Date(1987, 1 /* Feb */, 11).getTime(),
+ new Date(1989, 6 /* Jul */, 10).getTime()
+ )
+ assert(result === -1)
+ })
+
+ it('returns NaN if the first date is `Invalid Date`', function() {
+ const result = compareAsc(new Date(NaN), new Date(1989, 6 /* Jul */, 10))
+ assert(isNaN(result))
+ })
+
+ it('returns NaN if the second date is `Invalid Date`', function() {
+ const result = compareAsc(new Date(1989, 6 /* Jul */, 10), new Date(NaN))
+ assert(isNaN(result))
+ })
+
+ it('returns NaN if the both dates are `Invalid Date`', function() {
+ const result = compareAsc(new Date(NaN), new Date(NaN))
+ assert(isNaN(result))
+ })
+
+ it('throws TypeError exception if passed less than 2 arguments', function() {
+ //@ts-expect-error
+ assert.throws(compareAsc.bind(null), TypeError)
+ //@ts-expect-error
+ assert.throws(compareAsc.bind(null, 1), TypeError)
+ })
+})
diff --git a/date-fns/src/compareDesc/benchmark.js b/date-fns/src/compareDesc/benchmark.js
new file mode 100644
index 0000000..c67d4bc
--- /dev/null
+++ b/date-fns/src/compareDesc/benchmark.js
@@ -0,0 +1,16 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import compareDesc from '.'
+
+suite('compareDesc', function () {
+ benchmark('date-fns', function () {
+ return compareDesc(this.dateA, this.dateB)
+ })
+}, {
+ setup: function () {
+ this.dateA = new Date()
+ this.dateB = new Date(this.dateA.getTime() + 604800000)
+ }
+})
diff --git a/date-fns/src/compareDesc/index.d.ts b/date-fns/src/compareDesc/index.d.ts
new file mode 100644
index 0000000..673fab5
--- /dev/null
+++ b/date-fns/src/compareDesc/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { compareDesc } from 'date-fns'
+export default compareDesc
diff --git a/date-fns/src/compareDesc/index.js.flow b/date-fns/src/compareDesc/index.js.flow
new file mode 100644
index 0000000..c799819
--- /dev/null
+++ b/date-fns/src/compareDesc/index.js.flow
@@ -0,0 +1,55 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (
+ dateLeft: Date | number,
+ dateRight: Date | number
+) => number
diff --git a/date-fns/src/compareDesc/index.ts b/date-fns/src/compareDesc/index.ts
new file mode 100644
index 0000000..bdedfa9
--- /dev/null
+++ b/date-fns/src/compareDesc/index.ts
@@ -0,0 +1,59 @@
+import toDate from '../toDate/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name compareDesc
+ * @category Common Helpers
+ * @summary Compare the two dates reverse chronologically and return -1, 0 or 1.
+ *
+ * @description
+ * Compare the two dates and return -1 if the first date is after the second,
+ * 1 if the first date is before the second or 0 if dates are equal.
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} dateLeft - the first date to compare
+ * @param {Date|Number} dateRight - the second date to compare
+ * @returns {Number} the result of the comparison
+ * @throws {TypeError} 2 arguments required
+ *
+ * @example
+ * // Compare 11 February 1987 and 10 July 1989 reverse chronologically:
+ * const result = compareDesc(new Date(1987, 1, 11), new Date(1989, 6, 10))
+ * //=> 1
+ *
+ * @example
+ * // Sort the array of dates in reverse chronological order:
+ * const result = [
+ * new Date(1995, 6, 2),
+ * new Date(1987, 1, 11),
+ * new Date(1989, 6, 10)
+ * ].sort(compareDesc)
+ * //=> [
+ * // Sun Jul 02 1995 00:00:00,
+ * // Mon Jul 10 1989 00:00:00,
+ * // Wed Feb 11 1987 00:00:00
+ * // ]
+ */
+export default function compareDesc(
+ dirtyDateLeft: Date | number,
+ dirtyDateRight: Date | number
+): number {
+ requiredArgs(2, arguments)
+
+ const dateLeft = toDate(dirtyDateLeft)
+ const dateRight = toDate(dirtyDateRight)
+
+ const diff = dateLeft.getTime() - dateRight.getTime()
+
+ if (diff > 0) {
+ return -1
+ } else if (diff < 0) {
+ return 1
+ // Return 0 if diff is 0; return NaN if diff is NaN
+ } else {
+ return diff
+ }
+}
diff --git a/date-fns/src/compareDesc/test.ts b/date-fns/src/compareDesc/test.ts
new file mode 100644
index 0000000..1ecb557
--- /dev/null
+++ b/date-fns/src/compareDesc/test.ts
@@ -0,0 +1,80 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'assert'
+import compareDesc from '.'
+
+describe('compareDesc', function() {
+ it('returns 0 if the given dates are equal', function() {
+ const result = compareDesc(
+ new Date(1989, 6 /* Jul */, 10),
+ new Date(1989, 6 /* Jul */, 10)
+ )
+ assert(result === 0)
+ })
+
+ it('returns 1 if the first date is before the second one', function() {
+ const result = compareDesc(
+ new Date(1987, 1 /* Feb */, 11),
+ new Date(1989, 6 /* Jul */, 10)
+ )
+ assert(result === 1)
+ })
+
+ it('returns -1 if the first date is after the second one', function() {
+ const result = compareDesc(
+ new Date(1989, 6 /* Jul */, 10),
+ new Date(1987, 1 /* Feb */, 11)
+ )
+ assert(result === -1)
+ })
+
+ it('sorts the dates array in the reverse chronological order when function is passed as the argument to Array.prototype.sort()', function() {
+ const unsortedArray = [
+ new Date(1995, 6 /* Jul */, 2),
+ new Date(1987, 1 /* Feb */, 11),
+ new Date(1989, 6 /* Jul */, 10)
+ ]
+
+ const sortedArray = [
+ new Date(1995, 6 /* Jul */, 2),
+ new Date(1989, 6 /* Jul */, 10),
+ new Date(1987, 1 /* Feb */, 11)
+ ]
+
+ unsortedArray.sort(compareDesc)
+ const result = unsortedArray
+
+ assert.deepStrictEqual(result, sortedArray)
+ })
+
+ it('accepts timestamps', function() {
+ const result = compareDesc(
+ new Date(1987, 1 /* Feb */, 11).getTime(),
+ new Date(1989, 6 /* Jul */, 10).getTime()
+ )
+ assert(result === 1)
+ })
+
+ it('returns NaN if the first date is `Invalid Date`', function() {
+ const result = compareDesc(new Date(NaN), new Date(1989, 6 /* Jul */, 10))
+ assert(isNaN(result))
+ })
+
+ it('returns NaN if the second date is `Invalid Date`', function() {
+ const result = compareDesc(new Date(1989, 6 /* Jul */, 10), new Date(NaN))
+ assert(isNaN(result))
+ })
+
+ it('returns NaN if the both dates are `Invalid Date`', function() {
+ const result = compareDesc(new Date(1989, 6 /* Jul */, 10), new Date(NaN))
+ assert(isNaN(result))
+ })
+
+ it('throws TypeError exception if passed less than 2 arguments', function() {
+ //@ts-expect-error
+ assert.throws(compareDesc.bind(null), TypeError)
+ //@ts-expect-error
+ assert.throws(compareDesc.bind(null, 1), TypeError)
+ })
+})
diff --git a/date-fns/src/constants/index.d.ts b/date-fns/src/constants/index.d.ts
new file mode 100644
index 0000000..64e4bfa
--- /dev/null
+++ b/date-fns/src/constants/index.d.ts
@@ -0,0 +1,2 @@
+export const maxTime: number
+export const minTime: number
diff --git a/date-fns/src/constants/index.js.flow b/date-fns/src/constants/index.js.flow
new file mode 100644
index 0000000..d57a406
--- /dev/null
+++ b/date-fns/src/constants/index.js.flow
@@ -0,0 +1,4 @@
+// @flow
+
+declare export var maxTime: number
+declare export var minTime: number
diff --git a/date-fns/src/constants/index.ts b/date-fns/src/constants/index.ts
new file mode 100644
index 0000000..fc643b8
--- /dev/null
+++ b/date-fns/src/constants/index.ts
@@ -0,0 +1,119 @@
+/**
+ * Days in 1 week.
+ *
+ * @name daysInWeek
+ * @constant
+ * @type {number}
+ * @default
+ */
+export const daysInWeek = 7
+
+/**
+ * Maximum allowed time.
+ *
+ * @name maxTime
+ * @constant
+ * @type {number}
+ * @default
+ */
+export const maxTime = Math.pow(10, 8) * 24 * 60 * 60 * 1000
+
+/**
+ * Milliseconds in 1 minute
+ *
+ * @name millisecondsInMinute
+ * @constant
+ * @type {number}
+ * @default
+ */
+export const millisecondsInMinute = 60000
+
+/**
+ * Milliseconds in 1 hour
+ *
+ * @name millisecondsInHour
+ * @constant
+ * @type {number}
+ * @default
+ */
+export const millisecondsInHour = 3600000
+
+/**
+ * Milliseconds in 1 second
+ *
+ * @name millisecondsInSecond
+ * @constant
+ * @type {number}
+ * @default
+ */
+export const millisecondsInSecond = 1000
+
+/**
+ * Minimum allowed time.
+ *
+ * @name minTime
+ * @constant
+ * @type {number}
+ * @default
+ */
+export const minTime = -maxTime
+
+/**
+ * Minutes in 1 hour
+ *
+ * @name minutesInHour
+ * @constant
+ * @type {number}
+ * @default
+ */
+export const minutesInHour = 60
+
+/**
+ * Months in 1 quarter
+ *
+ * @name monthsInQuarter
+ * @constant
+ * @type {number}
+ * @default
+ */
+export const monthsInQuarter = 3
+
+/**
+ * Months in 1 year
+ *
+ * @name monthsInYear
+ * @constant
+ * @type {number}
+ * @default
+ */
+export const monthsInYear = 12
+
+/**
+ * Quarters in 1 year
+ *
+ * @name quartersInYear
+ * @constant
+ * @type {number}
+ * @default
+ */
+export const quartersInYear = 4
+
+/**
+ * Seconds in 1 hour
+ *
+ * @name secondsInHour
+ * @constant
+ * @type {number}
+ * @default
+ */
+export const secondsInHour = 3600
+
+/**
+ * Seconds in 1 minute
+ *
+ * @name secondsInMinute
+ * @constant
+ * @type {number}
+ * @default
+ */
+export const secondsInMinute = 60
diff --git a/date-fns/src/daysToWeeks/index.d.ts b/date-fns/src/daysToWeeks/index.d.ts
new file mode 100644
index 0000000..666112f
--- /dev/null
+++ b/date-fns/src/daysToWeeks/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { daysToWeeks } from 'date-fns'
+export default daysToWeeks
diff --git a/date-fns/src/daysToWeeks/index.js.flow b/date-fns/src/daysToWeeks/index.js.flow
new file mode 100644
index 0000000..181aec6
--- /dev/null
+++ b/date-fns/src/daysToWeeks/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (days: number) => number
diff --git a/date-fns/src/daysToWeeks/index.ts b/date-fns/src/daysToWeeks/index.ts
new file mode 100644
index 0000000..b7b7efb
--- /dev/null
+++ b/date-fns/src/daysToWeeks/index.ts
@@ -0,0 +1,31 @@
+import requiredArgs from '../_lib/requiredArgs/index'
+import { daysInWeek } from '../constants/index'
+
+/**
+ * @name daysToWeeks
+ * @category Conversion Helpers
+ * @summary Convert days to weeks.
+ *
+ * @description
+ * Convert a number of days to a full number of weeks.
+ *
+ * @param {number} days - number of days to be converted
+ *
+ * @returns {number} the number of days converted in weeks
+ * @throws {TypeError} 1 argument required
+ *
+ * @example
+ * // Convert 14 days to weeks:
+ * const result = daysToWeeks(14)
+ * //=> 2
+ *
+ * @example
+ * // It uses floor rounding:
+ * const result = daysToWeeks(13)
+ * //=> 1
+ */
+export default function daysToWeeks(days: number): number {
+ requiredArgs(1, arguments)
+ const weeks = days / daysInWeek
+ return Math.floor(weeks)
+}
diff --git a/date-fns/src/daysToWeeks/test.ts b/date-fns/src/daysToWeeks/test.ts
new file mode 100644
index 0000000..837d60c
--- /dev/null
+++ b/date-fns/src/daysToWeeks/test.ts
@@ -0,0 +1,21 @@
+/* eslint-env mocha */
+
+import assert from 'assert'
+import daysToWeeks from '.'
+
+describe('daysToWeeks', () => {
+ it('converts days to weeks', function () {
+ assert(daysToWeeks(7) === 1)
+ assert(daysToWeeks(14) === 2)
+ })
+
+ it('uses floor rounding', () => {
+ assert(daysToWeeks(8) === 1)
+ assert(daysToWeeks(6) === 0)
+ })
+
+ it('handles border values', () => {
+ assert(daysToWeeks(7.5) === 1)
+ assert(daysToWeeks(0) === 0)
+ })
+}) \ No newline at end of file
diff --git a/date-fns/src/differenceInBusinessDays/index.d.ts b/date-fns/src/differenceInBusinessDays/index.d.ts
new file mode 100644
index 0000000..8decd89
--- /dev/null
+++ b/date-fns/src/differenceInBusinessDays/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { differenceInBusinessDays } from 'date-fns'
+export default differenceInBusinessDays
diff --git a/date-fns/src/differenceInBusinessDays/index.js.flow b/date-fns/src/differenceInBusinessDays/index.js.flow
new file mode 100644
index 0000000..c799819
--- /dev/null
+++ b/date-fns/src/differenceInBusinessDays/index.js.flow
@@ -0,0 +1,55 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (
+ dateLeft: Date | number,
+ dateRight: Date | number
+) => number
diff --git a/date-fns/src/differenceInBusinessDays/index.ts b/date-fns/src/differenceInBusinessDays/index.ts
new file mode 100644
index 0000000..46fd575
--- /dev/null
+++ b/date-fns/src/differenceInBusinessDays/index.ts
@@ -0,0 +1,62 @@
+import isValid from '../isValid/index'
+import isWeekend from '../isWeekend/index'
+import toDate from '../toDate/index'
+import differenceInCalendarDays from '../differenceInCalendarDays/index'
+import addDays from '../addDays/index'
+import isSameDay from '../isSameDay/index'
+import toInteger from '../_lib/toInteger/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name differenceInBusinessDays
+ * @category Day Helpers
+ * @summary Get the number of business days between the given dates.
+ *
+ * @description
+ * Get the number of business day periods between the given dates.
+ * Business days being days that arent in the weekend.
+ * Like `differenceInCalendarDays`, the function removes the times from
+ * the dates before calculating the difference.
+ *
+ * @param {Date|Number} dateLeft - the later date
+ * @param {Date|Number} dateRight - the earlier date
+ * @returns {Number} the number of business days
+ * @throws {TypeError} 2 arguments required
+ *
+ * @example
+ * // How many business days are between
+ * // 10 January 2014 and 20 July 2014?
+ * var result = differenceInBusinessDays(
+ * new Date(2014, 6, 20),
+ * new Date(2014, 0, 10)
+ * )
+ * //=> 136
+ */
+export default function differenceInBusinessDays(
+ dirtyDateLeft: Date | number,
+ dirtyDateRight: Date | number
+): number {
+ requiredArgs(2, arguments)
+
+ const dateLeft = toDate(dirtyDateLeft)
+ let dateRight = toDate(dirtyDateRight)
+
+ if (!isValid(dateLeft) || !isValid(dateRight)) return NaN
+
+ const calendarDifference = differenceInCalendarDays(dateLeft, dateRight)
+ const sign = calendarDifference < 0 ? -1 : 1
+
+ const weeks = toInteger(calendarDifference / 7)
+
+ let result = weeks * 5
+ dateRight = addDays(dateRight, weeks * 7)
+
+ // the loop below will run at most 6 times to account for the remaining days that don't makeup a full week
+ while (!isSameDay(dateLeft, dateRight)) {
+ // sign is used to account for both negative and positive differences
+ result += isWeekend(dateRight) ? 0 : sign
+ dateRight = addDays(dateRight, sign)
+ }
+
+ return result === 0 ? 0 : result
+}
diff --git a/date-fns/src/differenceInBusinessDays/test.ts b/date-fns/src/differenceInBusinessDays/test.ts
new file mode 100644
index 0000000..f30e671
--- /dev/null
+++ b/date-fns/src/differenceInBusinessDays/test.ts
@@ -0,0 +1,141 @@
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import differenceInBusinessDays from '.'
+
+describe('differenceInBusinessDays', function () {
+ it('returns the number of business days between the given dates, excluding weekends', function () {
+ const result = differenceInBusinessDays(
+ new Date(2014, 6 /* Jul */, 18),
+ new Date(2014, 0 /* Jan */, 10)
+ )
+ assert(result === 135)
+ })
+
+ it('can handle long ranges', function () {
+ // @ts-ignore
+ if (typeof this.timeout === 'function') {
+ // @ts-ignore
+ this.timeout(500 /* 500 ms test timeout */)
+ }
+ const result = differenceInBusinessDays(
+ new Date(15000, 0 /* Jan */, 1),
+ new Date(2014, 0 /* Jan */, 1)
+ )
+ assert(result === 3387885)
+ })
+
+ it('the same except given first date falls on a weekend', function () {
+ const result = differenceInBusinessDays(
+ new Date(2019, 6 /* Jul */, 20),
+ new Date(2019, 6 /* Jul */, 18)
+ )
+ assert(result === 2)
+ })
+
+ it('the same except given second date falls on a weekend', function () {
+ const result = differenceInBusinessDays(
+ new Date(2019, 6 /* Jul */, 23),
+ new Date(2019, 6 /* Jul */, 20)
+ )
+ assert(result === 1)
+ })
+
+ it('the same except both given dates fall on a weekend', function () {
+ const result = differenceInBusinessDays(
+ new Date(2019, 6 /* Jul */, 28),
+ new Date(2019, 6 /* Jul */, 20)
+ )
+ assert(result === 5)
+ })
+
+ it('returns a negative number if the time value of the first date is smaller', function () {
+ const result = differenceInBusinessDays(
+ new Date(2014, 0 /* Jan */, 10),
+ new Date(2014, 6 /* Jul */, 20)
+ )
+ assert(result === -135)
+ })
+
+ it('accepts timestamps', function () {
+ const result = differenceInBusinessDays(
+ new Date(2014, 6, 18).getTime(),
+ new Date(2014, 0, 10).getTime()
+ )
+ assert(result === 135)
+ })
+
+ describe('edge cases', function () {
+ it('the difference is less than a day, but the given dates are in different calendar days', function () {
+ const result = differenceInBusinessDays(
+ new Date(2014, 8 /* Sep */, 5, 0, 0),
+ new Date(2014, 8 /* Sep */, 4, 23, 59)
+ )
+ assert(result === 1)
+ })
+
+ it('the same for the swapped dates', function () {
+ const result = differenceInBusinessDays(
+ new Date(2014, 8 /* Sep */, 4, 23, 59),
+ new Date(2014, 8 /* Sep */, 5, 0, 0)
+ )
+ assert(result === -1)
+ })
+
+ it('the time values of the given dates are the same', function () {
+ const result = differenceInBusinessDays(
+ new Date(2014, 8 /* Sep */, 5, 0, 0),
+ new Date(2014, 8 /* Sep */, 4, 0, 0)
+ )
+ assert(result === 1)
+ })
+
+ it('the given dates are the same', function () {
+ const result = differenceInBusinessDays(
+ new Date(2014, 8 /* Sep */, 5, 0, 0),
+ new Date(2014, 8 /* Sep */, 5, 0, 0)
+ )
+ assert(result === 0)
+ })
+
+ it('does not return -0 when the given dates are the same', () => {
+ function isNegativeZero(x: number) {
+ return x === 0 && 1 / x < 0
+ }
+
+ const result = differenceInBusinessDays(
+ new Date(2014, 8 /* Sep */, 5, 0, 0),
+ new Date(2014, 8 /* Sep */, 5, 0, 0)
+ )
+
+ const resultIsNegative = isNegativeZero(result)
+ assert(resultIsNegative === false)
+ })
+
+ it('returns NaN if the first date is `Invalid Date`', function () {
+ const result = differenceInBusinessDays(
+ new Date(NaN),
+ new Date(2017, 0 /* Jan */, 1)
+ )
+ assert(isNaN(result))
+ })
+
+ it('returns NaN if the second date is `Invalid Date`', function () {
+ const result = differenceInBusinessDays(
+ new Date(2017, 0 /* Jan */, 1),
+ new Date(NaN)
+ )
+ assert(isNaN(result))
+ })
+
+ it('returns NaN if the both dates are `Invalid Date`', function () {
+ const result = differenceInBusinessDays(new Date(NaN), new Date(NaN))
+ assert(isNaN(result))
+ })
+
+ it('throws TypeError exception if passed less than 2 arguments', function () {
+ assert.throws(differenceInBusinessDays.bind(null), TypeError)
+ assert.throws(differenceInBusinessDays.bind(null, 1), TypeError)
+ })
+ })
+})
diff --git a/date-fns/src/differenceInCalendarDays/benchmark.js b/date-fns/src/differenceInCalendarDays/benchmark.js
new file mode 100644
index 0000000..ed704ed
--- /dev/null
+++ b/date-fns/src/differenceInCalendarDays/benchmark.js
@@ -0,0 +1,16 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import differenceInCalendarDays from '.'
+
+suite('differenceInCalendarDays', function () {
+ benchmark('date-fns', function () {
+ return differenceInCalendarDays(this.dateA, this.dateB)
+ })
+}, {
+ setup: function () {
+ this.dateA = new Date()
+ this.dateB = new Date(this.dateA.getTime() + 604800000)
+ }
+})
diff --git a/date-fns/src/differenceInCalendarDays/index.d.ts b/date-fns/src/differenceInCalendarDays/index.d.ts
new file mode 100644
index 0000000..384b796
--- /dev/null
+++ b/date-fns/src/differenceInCalendarDays/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { differenceInCalendarDays } from 'date-fns'
+export default differenceInCalendarDays
diff --git a/date-fns/src/differenceInCalendarDays/index.js.flow b/date-fns/src/differenceInCalendarDays/index.js.flow
new file mode 100644
index 0000000..c799819
--- /dev/null
+++ b/date-fns/src/differenceInCalendarDays/index.js.flow
@@ -0,0 +1,55 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (
+ dateLeft: Date | number,
+ dateRight: Date | number
+) => number
diff --git a/date-fns/src/differenceInCalendarDays/index.ts b/date-fns/src/differenceInCalendarDays/index.ts
new file mode 100644
index 0000000..488c4ca
--- /dev/null
+++ b/date-fns/src/differenceInCalendarDays/index.ts
@@ -0,0 +1,59 @@
+import getTimezoneOffsetInMilliseconds from '../_lib/getTimezoneOffsetInMilliseconds/index'
+import startOfDay from '../startOfDay/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+const MILLISECONDS_IN_DAY = 86400000
+
+/**
+ * @name differenceInCalendarDays
+ * @category Day Helpers
+ * @summary Get the number of calendar days between the given dates.
+ *
+ * @description
+ * Get the number of calendar days between the given dates. This means that the times are removed
+ * from the dates and then the difference in days is calculated.
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} dateLeft - the later date
+ * @param {Date|Number} dateRight - the earlier date
+ * @returns {Number} the number of calendar days
+ * @throws {TypeError} 2 arguments required
+ *
+ * @example
+ * // How many calendar days are between
+ * // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?
+ * const result = differenceInCalendarDays(
+ * new Date(2012, 6, 2, 0, 0),
+ * new Date(2011, 6, 2, 23, 0)
+ * )
+ * //=> 366
+ * // How many calendar days are between
+ * // 2 July 2011 23:59:00 and 3 July 2011 00:01:00?
+ * const result = differenceInCalendarDays(
+ * new Date(2011, 6, 3, 0, 1),
+ * new Date(2011, 6, 2, 23, 59)
+ * )
+ * //=> 1
+ */
+export default function differenceInCalendarDays(
+ dirtyDateLeft: Date | number,
+ dirtyDateRight: Date | number
+): number {
+ requiredArgs(2, arguments)
+
+ const startOfDayLeft = startOfDay(dirtyDateLeft)
+ const startOfDayRight = startOfDay(dirtyDateRight)
+
+ const timestampLeft =
+ startOfDayLeft.getTime() - getTimezoneOffsetInMilliseconds(startOfDayLeft)
+ const timestampRight =
+ startOfDayRight.getTime() - getTimezoneOffsetInMilliseconds(startOfDayRight)
+
+ // Round the number of days to the nearest integer
+ // because the number of milliseconds in a day is not constant
+ // (e.g. it's different in the day of the daylight saving time clock shift)
+ return Math.round((timestampLeft - timestampRight) / MILLISECONDS_IN_DAY)
+}
diff --git a/date-fns/src/differenceInCalendarDays/test.ts b/date-fns/src/differenceInCalendarDays/test.ts
new file mode 100644
index 0000000..c122d1a
--- /dev/null
+++ b/date-fns/src/differenceInCalendarDays/test.ts
@@ -0,0 +1,215 @@
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import differenceInCalendarDays from '.'
+import { getDstTransitions } from '../../test/dst/tzOffsetTransitions'
+
+describe('differenceInCalendarDays', function () {
+ it('returns the number of calendar days between the given dates', function () {
+ const result = differenceInCalendarDays(
+ new Date(2012, 6 /* Jul */, 2, 18, 0),
+ new Date(2011, 6 /* Jul */, 2, 6, 0)
+ )
+ assert(result === 366)
+ })
+
+ it('returns a negative number if the time value of the first date is smaller', function () {
+ const result = differenceInCalendarDays(
+ new Date(2011, 6 /* Jul */, 2, 6, 0),
+ new Date(2012, 6 /* Jul */, 2, 18, 0)
+ )
+ assert(result === -366)
+ })
+
+ it('accepts timestamps', function () {
+ const result = differenceInCalendarDays(
+ new Date(2014, 8 /* Sep */, 5, 18, 0).getTime(),
+ new Date(2014, 8 /* Sep */, 4, 6, 0).getTime()
+ )
+ assert(result === 1)
+ })
+
+ describe('edge cases', function () {
+ it('the difference is less than a day, but the given dates are in different calendar days', function () {
+ const result = differenceInCalendarDays(
+ new Date(2014, 8 /* Sep */, 5, 0, 0),
+ new Date(2014, 8 /* Sep */, 4, 23, 59)
+ )
+ assert(result === 1)
+ })
+
+ it('the same for the swapped dates', function () {
+ const result = differenceInCalendarDays(
+ new Date(2014, 8 /* Sep */, 4, 23, 59),
+ new Date(2014, 8 /* Sep */, 5, 0, 0)
+ )
+ assert(result === -1)
+ })
+
+ it('the time values of the given the given dates are the same', function () {
+ const result = differenceInCalendarDays(
+ new Date(2014, 8 /* Sep */, 6, 0, 0),
+ new Date(2014, 8 /* Sep */, 5, 0, 0)
+ )
+ assert(result === 1)
+ })
+
+ it('the given the given dates are the same', function () {
+ const result = differenceInCalendarDays(
+ new Date(2014, 8 /* Sep */, 5, 0, 0),
+ new Date(2014, 8 /* Sep */, 5, 0, 0)
+ )
+ assert(result === 0)
+ })
+
+ it('does not return -0 when the given dates are the same', () => {
+ function isNegativeZero(x: number): boolean {
+ return x === 0 && 1 / x < 0
+ }
+
+ const result = differenceInCalendarDays(
+ new Date(2014, 8 /* Sep */, 5, 0, 0),
+ new Date(2014, 8 /* Sep */, 5, 0, 0)
+ )
+
+ const resultIsNegative = isNegativeZero(result)
+ assert(resultIsNegative === false)
+ })
+ })
+
+ it('returns NaN if the first date is `Invalid Date`', function () {
+ const result = differenceInCalendarDays(
+ new Date(NaN),
+ new Date(2017, 0 /* Jan */, 1)
+ )
+ assert(isNaN(result))
+ })
+
+ it('returns NaN if the second date is `Invalid Date`', function () {
+ const result = differenceInCalendarDays(
+ new Date(2017, 0 /* Jan */, 1),
+ new Date(NaN)
+ )
+ assert(isNaN(result))
+ })
+
+ it('returns NaN if the both dates are `Invalid Date`', function () {
+ const result = differenceInCalendarDays(new Date(NaN), new Date(NaN))
+ assert(isNaN(result))
+ })
+
+ it('throws TypeError exception if passed less than 2 arguments', function () {
+ assert.throws(differenceInCalendarDays.bind(null), TypeError)
+ assert.throws(differenceInCalendarDays.bind(null, 1), TypeError)
+ })
+
+ // These tests were copy-pasted almost unchanged from DST tests for
+ // `differenceInDays`
+ const dstTransitions = getDstTransitions(2017)
+ const dstOnly = dstTransitions.start && dstTransitions.end ? it : it.skip
+ const tz = Intl.DateTimeFormat().resolvedOptions().timeZone || process.env.tz
+ dstOnly(
+ `works across DST start & end in local timezone: ${tz || '(unknown)'}`,
+ function () {
+ const { start, end } = dstTransitions
+ const HOUR = 1000 * 60 * 60
+ const MINUTE = 1000 * 60
+ function sameTime(t1: Date, t2: Date): boolean {
+ return (
+ t1.getHours() === t2.getHours() &&
+ t1.getMinutes() === t2.getMinutes() &&
+ t1.getSeconds() === t2.getSeconds() &&
+ t1.getMilliseconds() === t2.getMilliseconds()
+ )
+ }
+
+ assert(start !== undefined)
+ assert(end !== undefined)
+
+ if (start === undefined || end === undefined) {
+ return
+ }
+
+ // It's usually 1 hour, but for some timezones, e.g. Australia/Lord_Howe, it is 30 minutes
+ const dstOffset =
+ (end.getTimezoneOffset() - start.getTimezoneOffset()) * MINUTE
+
+ // TEST DST START (SPRING)
+
+ // anchor to one hour before the boundary
+ {
+ const a = new Date(start.getTime() - HOUR) // 1 hour before DST
+ const b = new Date(a.getTime() + 24 * HOUR - dstOffset) // 1 day later, same local time
+ const c = new Date(a.getTime() + 48 * HOUR - dstOffset) // 2 days later, same local time
+
+ assert(sameTime(a, b))
+ assert(sameTime(a, c))
+ assert(sameTime(b, c))
+ assert(differenceInCalendarDays(c, b) === 1) // normal 24-hour day
+ assert(differenceInCalendarDays(b, a) === 1) // 23 hours -> 1 day
+ assert(differenceInCalendarDays(c, a) === 2) // 47 hours -> 2 days
+ }
+ // anchor exactly at the boundary
+ {
+ const a = start // exactly when DST starts
+ const b = new Date(a.getTime() + 24 * HOUR) // 1 day later, same local time
+ const c = new Date(a.getTime() + 48 * HOUR) // 2 days later, same local time
+
+ assert(sameTime(a, b))
+ assert(sameTime(a, c))
+ assert(sameTime(b, c))
+ assert(differenceInCalendarDays(c, b) === 1) // normal 24-hour day
+ assert(differenceInCalendarDays(b, a) === 1) // normal 24-hour day
+ assert(differenceInCalendarDays(c, a) === 2) // 2 normal 24-hour days
+ }
+
+ // TEST DST END (FALL)
+
+ // make sure that diffs across a "fall back" DST boundary won't report a full day
+ // until 25 hours have elapsed.
+ {
+ const a = new Date(end.getTime() - HOUR / 2) // 1 hour before Standard Time starts
+ const b = new Date(a.getTime() + 24 * HOUR + dstOffset - 15 * MINUTE) // 1 day later, 15 mins earlier local time
+ const c = new Date(a.getTime() + 48 * HOUR + dstOffset - 15 * MINUTE) // 2 days later, 15 mins earlier local time
+
+ assert(differenceInCalendarDays(c, b) === 1) // normal 24-hour day
+ assert(differenceInCalendarDays(b, a) === 1) // 24.75 hours but 1 calendar days
+ assert(differenceInCalendarDays(c, a) === 2) // 49.75 hours but 2 calendar days
+ }
+ // anchor to one hour before the boundary
+ {
+ const a = new Date(end.getTime() - HOUR) // 1 hour before Standard Time starts
+ const b = new Date(a.getTime() + 24 * HOUR + dstOffset) // 1 day later, same local time
+ const c = new Date(a.getTime() + 48 * HOUR + dstOffset) // 2 days later, same local time
+
+ assert(sameTime(a, b))
+ assert(sameTime(a, c))
+ assert(sameTime(b, c))
+ assert(differenceInCalendarDays(c, b) === 1) // normal 24-hour day
+ assert(differenceInCalendarDays(b, a) === 1) // 25 hours -> 1 day
+ assert(differenceInCalendarDays(c, a) === 2) // 49 hours -> 2 days
+ }
+ // anchor to one hour after the boundary
+ {
+ const a = new Date(end.getTime() + HOUR) // 1 hour after Standard Time starts
+ const b = new Date(a.getTime() + 24 * HOUR) // 1 day later, same local time
+ const c = new Date(a.getTime() + 48 * HOUR) // 2 days later, same local time
+
+ assert(sameTime(a, b))
+ assert(sameTime(a, c))
+ assert(sameTime(b, c))
+ assert(differenceInCalendarDays(c, b) === 1) // normal 24-hour day
+ assert(differenceInCalendarDays(b, a) === 1) // normal 24-hour day
+ assert(differenceInCalendarDays(c, a) === 2) // 2 normal 24-hour days
+ }
+ // anchor exactly at the boundary
+ {
+ const a = end // exactly when Standard Time starts
+ const b = new Date(a.getTime() + 24 * HOUR) // 1 day later, same local time
+ const c = new Date(a.getTime() + 48 * HOUR) // 2 days later, same local time
+ assert(differenceInCalendarDays(b, a) === 1) // normal 24-hour day
+ assert(differenceInCalendarDays(c, a) === 2) // 2 normal 24-hour days
+ }
+ }
+ )
+})
diff --git a/date-fns/src/differenceInCalendarISOWeekYears/benchmark.js b/date-fns/src/differenceInCalendarISOWeekYears/benchmark.js
new file mode 100644
index 0000000..9f06d40
--- /dev/null
+++ b/date-fns/src/differenceInCalendarISOWeekYears/benchmark.js
@@ -0,0 +1,16 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import differenceInCalendarISOWeekYears from '.'
+
+suite('differenceInCalendarISOWeekYears', function () {
+ benchmark('date-fns', function () {
+ return differenceInCalendarISOWeekYears(this.dateA, this.dateB)
+ })
+}, {
+ setup: function () {
+ this.dateA = new Date()
+ this.dateB = new Date(this.dateA.getTime() + 604800000)
+ }
+})
diff --git a/date-fns/src/differenceInCalendarISOWeekYears/index.d.ts b/date-fns/src/differenceInCalendarISOWeekYears/index.d.ts
new file mode 100644
index 0000000..bd8325c
--- /dev/null
+++ b/date-fns/src/differenceInCalendarISOWeekYears/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { differenceInCalendarISOWeekYears } from 'date-fns'
+export default differenceInCalendarISOWeekYears
diff --git a/date-fns/src/differenceInCalendarISOWeekYears/index.js.flow b/date-fns/src/differenceInCalendarISOWeekYears/index.js.flow
new file mode 100644
index 0000000..c799819
--- /dev/null
+++ b/date-fns/src/differenceInCalendarISOWeekYears/index.js.flow
@@ -0,0 +1,55 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (
+ dateLeft: Date | number,
+ dateRight: Date | number
+) => number
diff --git a/date-fns/src/differenceInCalendarISOWeekYears/index.ts b/date-fns/src/differenceInCalendarISOWeekYears/index.ts
new file mode 100644
index 0000000..609657e
--- /dev/null
+++ b/date-fns/src/differenceInCalendarISOWeekYears/index.ts
@@ -0,0 +1,43 @@
+import getISOWeekYear from '../getISOWeekYear/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name differenceInCalendarISOWeekYears
+ * @category ISO Week-Numbering Year Helpers
+ * @summary Get the number of calendar ISO week-numbering years between the given dates.
+ *
+ * @description
+ * Get the number of calendar ISO week-numbering years between the given dates.
+ *
+ * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * - The function was renamed from `differenceInCalendarISOYears` to `differenceInCalendarISOWeekYears`.
+ * "ISO week year" is short for [ISO week-numbering year](https://en.wikipedia.org/wiki/ISO_week_date).
+ * This change makes the name consistent with
+ * locale-dependent week-numbering year helpers, e.g., `addWeekYears`.
+ *
+ * @param {Date|Number} dateLeft - the later date
+ * @param {Date|Number} dateRight - the earlier date
+ * @returns {Number} the number of calendar ISO week-numbering years
+ * @throws {TypeError} 2 arguments required
+ *
+ * @example
+ * // How many calendar ISO week-numbering years are 1 January 2010 and 1 January 2012?
+ * const result = differenceInCalendarISOWeekYears(
+ * new Date(2012, 0, 1),
+ * new Date(2010, 0, 1)
+ * )
+ * //=> 2
+ */
+export default function differenceInCalendarISOWeekYears(
+ dirtyDateLeft: Date | number,
+ dirtyDateRight: Date | number
+): number {
+ requiredArgs(2, arguments)
+
+ return getISOWeekYear(dirtyDateLeft) - getISOWeekYear(dirtyDateRight)
+}
diff --git a/date-fns/src/differenceInCalendarISOWeekYears/test.ts b/date-fns/src/differenceInCalendarISOWeekYears/test.ts
new file mode 100644
index 0000000..db38e28
--- /dev/null
+++ b/date-fns/src/differenceInCalendarISOWeekYears/test.ts
@@ -0,0 +1,118 @@
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import differenceInCalendarISOWeekYears from '.'
+
+describe('differenceInCalendarISOWeekYears', function () {
+ it('returns the number of calendar ISO week-numbering years between the given dates', function () {
+ const result = differenceInCalendarISOWeekYears(
+ new Date(2012, 6 /* Jul */, 2, 18, 0),
+ new Date(2011, 6 /* Jul */, 2, 6, 0)
+ )
+ assert(result === 1)
+ })
+
+ it('returns a negative number if the time value of the first date is smaller', function () {
+ const result = differenceInCalendarISOWeekYears(
+ new Date(2011, 6 /* Jul */, 2, 6, 0),
+ new Date(2012, 6 /* Jul */, 2, 18, 0)
+ )
+ assert(result === -1)
+ })
+
+ it('accepts timestamps', function () {
+ const result = differenceInCalendarISOWeekYears(
+ new Date(2014, 6 /* Jul */, 2).getTime(),
+ new Date(2010, 6 /* Jul */, 2).getTime()
+ )
+ assert(result === 4)
+ })
+
+ it('handles dates before 100 AD', function () {
+ const firstDate = new Date(0)
+ firstDate.setFullYear(14, 0 /* Jan */, 1)
+ firstDate.setHours(0, 0, 0, 0)
+ const secondDate = new Date(0)
+ secondDate.setFullYear(0, 0 /* Jan */, 1)
+ secondDate.setHours(0, 0, 0, 0)
+ const result = differenceInCalendarISOWeekYears(firstDate, secondDate)
+ assert(result === 15)
+ })
+
+ describe('edge cases', function () {
+ it('the difference is less than an ISO year, but the given dates are in different calendar ISO years', function () {
+ const result = differenceInCalendarISOWeekYears(
+ new Date(2012, 0 /* Jan */, 2),
+ new Date(2012, 0 /* Jan */, 1)
+ )
+ assert(result === 1)
+ })
+
+ it('the same for the swapped dates', function () {
+ const result = differenceInCalendarISOWeekYears(
+ new Date(2012, 0 /* Jan */, 1),
+ new Date(2012, 0 /* Jan */, 2)
+ )
+ assert(result === -1)
+ })
+
+ it('the ISO weeks and weekdays of the given dates are the same', function () {
+ const result = differenceInCalendarISOWeekYears(
+ new Date(2013, 11 /* Dec */, 30),
+ new Date(2012, 0 /* Jan */, 2)
+ )
+ assert(result === 2)
+ })
+
+ it('the given dates are the same', function () {
+ const result = differenceInCalendarISOWeekYears(
+ new Date(2014, 8 /* Sep */, 5, 0, 0),
+ new Date(2014, 8 /* Sep */, 5, 0, 0)
+ )
+ assert(result === 0)
+ })
+
+ it('does not return -0 when the given dates are the same', () => {
+ function isNegativeZero(x: number): boolean {
+ return x === 0 && 1 / x < 0
+ }
+
+ const result = differenceInCalendarISOWeekYears(
+ new Date(2014, 8 /* Sep */, 5, 0, 0),
+ new Date(2014, 8 /* Sep */, 5, 0, 0)
+ )
+
+ const resultIsNegative = isNegativeZero(result)
+ assert(resultIsNegative === false)
+ })
+ })
+
+ it('returns NaN if the first date is `Invalid Date`', function () {
+ const result = differenceInCalendarISOWeekYears(
+ new Date(NaN),
+ new Date(2017, 0 /* Jan */, 1)
+ )
+ assert(isNaN(result))
+ })
+
+ it('returns NaN if the second date is `Invalid Date`', function () {
+ const result = differenceInCalendarISOWeekYears(
+ new Date(2017, 0 /* Jan */, 1),
+ new Date(NaN)
+ )
+ assert(isNaN(result))
+ })
+
+ it('returns NaN if the both dates are `Invalid Date`', function () {
+ const result = differenceInCalendarISOWeekYears(
+ new Date(NaN),
+ new Date(NaN)
+ )
+ assert(isNaN(result))
+ })
+
+ it('throws TypeError exception if passed less than 2 arguments', function () {
+ assert.throws(differenceInCalendarISOWeekYears.bind(null), TypeError)
+ assert.throws(differenceInCalendarISOWeekYears.bind(null, 1), TypeError)
+ })
+})
diff --git a/date-fns/src/differenceInCalendarISOWeeks/benchmark.js b/date-fns/src/differenceInCalendarISOWeeks/benchmark.js
new file mode 100644
index 0000000..a9f5243
--- /dev/null
+++ b/date-fns/src/differenceInCalendarISOWeeks/benchmark.js
@@ -0,0 +1,16 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import differenceInCalendarISOWeeks from '.'
+
+suite('differenceInCalendarISOWeeks', function () {
+ benchmark('date-fns', function () {
+ return differenceInCalendarISOWeeks(this.dateA, this.dateB)
+ })
+}, {
+ setup: function () {
+ this.dateA = new Date()
+ this.dateB = new Date(this.dateA.getTime() + 604800000)
+ }
+})
diff --git a/date-fns/src/differenceInCalendarISOWeeks/index.d.ts b/date-fns/src/differenceInCalendarISOWeeks/index.d.ts
new file mode 100644
index 0000000..7364227
--- /dev/null
+++ b/date-fns/src/differenceInCalendarISOWeeks/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { differenceInCalendarISOWeeks } from 'date-fns'
+export default differenceInCalendarISOWeeks
diff --git a/date-fns/src/differenceInCalendarISOWeeks/index.js.flow b/date-fns/src/differenceInCalendarISOWeeks/index.js.flow
new file mode 100644
index 0000000..c799819
--- /dev/null
+++ b/date-fns/src/differenceInCalendarISOWeeks/index.js.flow
@@ -0,0 +1,55 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (
+ dateLeft: Date | number,
+ dateRight: Date | number
+) => number
diff --git a/date-fns/src/differenceInCalendarISOWeeks/index.ts b/date-fns/src/differenceInCalendarISOWeeks/index.ts
new file mode 100644
index 0000000..d761914
--- /dev/null
+++ b/date-fns/src/differenceInCalendarISOWeeks/index.ts
@@ -0,0 +1,54 @@
+import getTimezoneOffsetInMilliseconds from '../_lib/getTimezoneOffsetInMilliseconds/index'
+import startOfISOWeek from '../startOfISOWeek/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+const MILLISECONDS_IN_WEEK = 604800000
+
+/**
+ * @name differenceInCalendarISOWeeks
+ * @category ISO Week Helpers
+ * @summary Get the number of calendar ISO weeks between the given dates.
+ *
+ * @description
+ * Get the number of calendar ISO weeks between the given dates.
+ *
+ * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} dateLeft - the later date
+ * @param {Date|Number} dateRight - the earlier date
+ * @returns {Number} the number of calendar ISO weeks
+ * @throws {TypeError} 2 arguments required
+ *
+ * @example
+ * // How many calendar ISO weeks are between 6 July 2014 and 21 July 2014?
+ * const result = differenceInCalendarISOWeeks(
+ * new Date(2014, 6, 21),
+ * new Date(2014, 6, 6)
+ * )
+ * //=> 3
+ */
+export default function differenceInCalendarISOWeeks(
+ dirtyDateLeft: Date | number,
+ dirtyDateRight: Date | number
+): number {
+ requiredArgs(2, arguments)
+
+ const startOfISOWeekLeft = startOfISOWeek(dirtyDateLeft)
+ const startOfISOWeekRight = startOfISOWeek(dirtyDateRight)
+
+ const timestampLeft =
+ startOfISOWeekLeft.getTime() -
+ getTimezoneOffsetInMilliseconds(startOfISOWeekLeft)
+ const timestampRight =
+ startOfISOWeekRight.getTime() -
+ getTimezoneOffsetInMilliseconds(startOfISOWeekRight)
+
+ // Round the number of days to the nearest integer
+ // because the number of milliseconds in a week is not constant
+ // (e.g. it's different in the week of the daylight saving time clock shift)
+ return Math.round((timestampLeft - timestampRight) / MILLISECONDS_IN_WEEK)
+}
diff --git a/date-fns/src/differenceInCalendarISOWeeks/test.ts b/date-fns/src/differenceInCalendarISOWeeks/test.ts
new file mode 100644
index 0000000..5318cad
--- /dev/null
+++ b/date-fns/src/differenceInCalendarISOWeeks/test.ts
@@ -0,0 +1,104 @@
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import differenceInCalendarISOWeeks from '.'
+
+describe('differenceInCalendarISOWeeks', function () {
+ it('returns the number of calendar ISO weeks between the given dates', function () {
+ const result = differenceInCalendarISOWeeks(
+ new Date(2014, 6 /* Jul */, 8, 18, 0),
+ new Date(2014, 5 /* Jun */, 29, 6, 0)
+ )
+ assert(result === 2)
+ })
+
+ it('returns a negative number if the time value of the first date is smaller', function () {
+ const result = differenceInCalendarISOWeeks(
+ new Date(2014, 5 /* Jun */, 29, 6, 0),
+ new Date(2014, 6 /* Jul */, 8, 18, 0)
+ )
+ assert(result === -2)
+ })
+
+ it('accepts timestamps', function () {
+ const result = differenceInCalendarISOWeeks(
+ new Date(2014, 6 /* Jul */, 12).getTime(),
+ new Date(2014, 6 /* Jul */, 2).getTime()
+ )
+ assert(result === 1)
+ })
+
+ describe('edge cases', function () {
+ it('the difference is less than an ISO week, but the given dates are in different calendar ISO weeks', function () {
+ const result = differenceInCalendarISOWeeks(
+ new Date(2014, 6 /* Jul */, 7),
+ new Date(2014, 6 /* Jul */, 6)
+ )
+ assert(result === 1)
+ })
+
+ it('the same for the swapped dates', function () {
+ const result = differenceInCalendarISOWeeks(
+ new Date(2014, 6 /* Jul */, 6),
+ new Date(2014, 6 /* Jul */, 7)
+ )
+ assert(result === -1)
+ })
+
+ it('the days of weeks of the given dates are the same', function () {
+ const result = differenceInCalendarISOWeeks(
+ new Date(2014, 6 /* Jul */, 9),
+ new Date(2014, 6 /* Jul */, 2)
+ )
+ assert(result === 1)
+ })
+
+ it('the given dates are the same', function () {
+ const result = differenceInCalendarISOWeeks(
+ new Date(2014, 8 /* Sep */, 5, 0, 0),
+ new Date(2014, 8 /* Sep */, 5, 0, 0)
+ )
+ assert(result === 0)
+ })
+
+ it('does not return -0 when the given dates are the same', () => {
+ function isNegativeZero(x: number): boolean {
+ return x === 0 && 1 / x < 0
+ }
+
+ const result = differenceInCalendarISOWeeks(
+ new Date(2014, 8 /* Sep */, 5, 0, 0),
+ new Date(2014, 8 /* Sep */, 5, 0, 0)
+ )
+
+ const resultIsNegative = isNegativeZero(result)
+ assert(resultIsNegative === false)
+ })
+ })
+
+ it('returns NaN if the first date is `Invalid Date`', function () {
+ const result = differenceInCalendarISOWeeks(
+ new Date(NaN),
+ new Date(2017, 0 /* Jan */, 1)
+ )
+ assert(isNaN(result))
+ })
+
+ it('returns NaN if the second date is `Invalid Date`', function () {
+ const result = differenceInCalendarISOWeeks(
+ new Date(2017, 0 /* Jan */, 1),
+ new Date(NaN)
+ )
+ assert(isNaN(result))
+ })
+
+ it('returns NaN if the both dates are `Invalid Date`', function () {
+ const result = differenceInCalendarISOWeeks(new Date(NaN), new Date(NaN))
+ assert(isNaN(result))
+ })
+
+ it('throws TypeError exception if passed less than 2 arguments', function () {
+ assert.throws(differenceInCalendarISOWeeks.bind(null), TypeError)
+ assert.throws(differenceInCalendarISOWeeks.bind(null, 1), TypeError)
+ })
+})
diff --git a/date-fns/src/differenceInCalendarMonths/benchmark.js b/date-fns/src/differenceInCalendarMonths/benchmark.js
new file mode 100644
index 0000000..7530bf0
--- /dev/null
+++ b/date-fns/src/differenceInCalendarMonths/benchmark.js
@@ -0,0 +1,16 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import differenceInCalendarMonths from '.'
+
+suite('differenceInCalendarMonths', function () {
+ benchmark('date-fns', function () {
+ return differenceInCalendarMonths(this.dateA, this.dateB)
+ })
+}, {
+ setup: function () {
+ this.dateA = new Date()
+ this.dateB = new Date(this.dateA.getTime() + 604800000)
+ }
+})
diff --git a/date-fns/src/differenceInCalendarMonths/index.d.ts b/date-fns/src/differenceInCalendarMonths/index.d.ts
new file mode 100644
index 0000000..743bf76
--- /dev/null
+++ b/date-fns/src/differenceInCalendarMonths/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { differenceInCalendarMonths } from 'date-fns'
+export default differenceInCalendarMonths
diff --git a/date-fns/src/differenceInCalendarMonths/index.js.flow b/date-fns/src/differenceInCalendarMonths/index.js.flow
new file mode 100644
index 0000000..c799819
--- /dev/null
+++ b/date-fns/src/differenceInCalendarMonths/index.js.flow
@@ -0,0 +1,55 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (
+ dateLeft: Date | number,
+ dateRight: Date | number
+) => number
diff --git a/date-fns/src/differenceInCalendarMonths/index.ts b/date-fns/src/differenceInCalendarMonths/index.ts
new file mode 100644
index 0000000..dcf1c44
--- /dev/null
+++ b/date-fns/src/differenceInCalendarMonths/index.ts
@@ -0,0 +1,42 @@
+import toDate from '../toDate/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name differenceInCalendarMonths
+ * @category Month Helpers
+ * @summary Get the number of calendar months between the given dates.
+ *
+ * @description
+ * Get the number of calendar months between the given dates.
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} dateLeft - the later date
+ * @param {Date|Number} dateRight - the earlier date
+ * @returns {Number} the number of calendar months
+ * @throws {TypeError} 2 arguments required
+ *
+ * @example
+ * // How many calendar months are between 31 January 2014 and 1 September 2014?
+ * var result = differenceInCalendarMonths(
+ * new Date(2014, 8, 1),
+ * new Date(2014, 0, 31)
+ * )
+ * //=> 8
+ */
+export default function differenceInCalendarMonths(
+ dirtyDateLeft: Date | number,
+ dirtyDateRight: Date | number
+): number {
+ requiredArgs(2, arguments)
+
+ const dateLeft = toDate(dirtyDateLeft)
+ const dateRight = toDate(dirtyDateRight)
+
+ const yearDiff = dateLeft.getFullYear() - dateRight.getFullYear()
+ const monthDiff = dateLeft.getMonth() - dateRight.getMonth()
+
+ return yearDiff * 12 + monthDiff
+}
diff --git a/date-fns/src/differenceInCalendarMonths/test.ts b/date-fns/src/differenceInCalendarMonths/test.ts
new file mode 100644
index 0000000..9174c58
--- /dev/null
+++ b/date-fns/src/differenceInCalendarMonths/test.ts
@@ -0,0 +1,104 @@
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import differenceInCalendarMonths from '.'
+
+describe('differenceInCalendarMonths', function () {
+ it('returns the number of calendar months between the given dates', function () {
+ const result = differenceInCalendarMonths(
+ new Date(2012, 6 /* Jul */, 2, 18, 0),
+ new Date(2011, 6 /* Jul */, 2, 6, 0)
+ )
+ assert(result === 12)
+ })
+
+ it('returns a negative number if the time value of the first date is smaller', function () {
+ const result = differenceInCalendarMonths(
+ new Date(2011, 6 /* Jul */, 2, 6, 0),
+ new Date(2012, 6 /* Jul */, 2, 18, 0)
+ )
+ assert(result === -12)
+ })
+
+ it('accepts timestamps', function () {
+ const result = differenceInCalendarMonths(
+ new Date(2014, 7 /* Aug */, 2).getTime(),
+ new Date(2010, 6 /* Jul */, 2).getTime()
+ )
+ assert(result === 49)
+ })
+
+ describe('edge cases', function () {
+ it('the difference is less than a month, but the given dates are in different calendar months', function () {
+ const result = differenceInCalendarMonths(
+ new Date(2014, 8 /* Sep */, 1),
+ new Date(2014, 7 /* Aug */, 31)
+ )
+ assert(result === 1)
+ })
+
+ it('the same for the swapped dates', function () {
+ const result = differenceInCalendarMonths(
+ new Date(2014, 7 /* Aug */, 31),
+ new Date(2014, 8 /* Sep */, 1)
+ )
+ assert(result === -1)
+ })
+
+ it('the days of months of the given dates are the same', function () {
+ const result = differenceInCalendarMonths(
+ new Date(2014, 8 /* Sep */, 6),
+ new Date(2014, 7 /* Aug */, 6)
+ )
+ assert(result === 1)
+ })
+
+ it('the given dates are the same', function () {
+ const result = differenceInCalendarMonths(
+ new Date(2014, 8 /* Sep */, 5, 0, 0),
+ new Date(2014, 8 /* Sep */, 5, 0, 0)
+ )
+ assert(result === 0)
+ })
+
+ it('does not return -0 when the given dates are the same', () => {
+ function isNegativeZero(x: number): boolean {
+ return x === 0 && 1 / x < 0
+ }
+
+ const result = differenceInCalendarMonths(
+ new Date(2014, 8 /* Sep */, 5, 0, 0),
+ new Date(2014, 8 /* Sep */, 5, 0, 0)
+ )
+
+ const resultIsNegative = isNegativeZero(result)
+ assert(resultIsNegative === false)
+ })
+ })
+
+ it('returns NaN if the first date is `Invalid Date`', function () {
+ const result = differenceInCalendarMonths(
+ new Date(NaN),
+ new Date(2017, 0 /* Jan */, 1)
+ )
+ assert(isNaN(result))
+ })
+
+ it('returns NaN if the second date is `Invalid Date`', function () {
+ const result = differenceInCalendarMonths(
+ new Date(2017, 0 /* Jan */, 1),
+ new Date(NaN)
+ )
+ assert(isNaN(result))
+ })
+
+ it('returns NaN if the both dates are `Invalid Date`', function () {
+ const result = differenceInCalendarMonths(new Date(NaN), new Date(NaN))
+ assert(isNaN(result))
+ })
+
+ it('throws TypeError exception if passed less than 2 arguments', function () {
+ assert.throws(differenceInCalendarMonths.bind(null), TypeError)
+ assert.throws(differenceInCalendarMonths.bind(null, 1), TypeError)
+ })
+})
diff --git a/date-fns/src/differenceInCalendarQuarters/benchmark.js b/date-fns/src/differenceInCalendarQuarters/benchmark.js
new file mode 100644
index 0000000..098a4ee
--- /dev/null
+++ b/date-fns/src/differenceInCalendarQuarters/benchmark.js
@@ -0,0 +1,16 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import differenceInCalendarQuarters from '.'
+
+suite('differenceInCalendarQuarters', function () {
+ benchmark('date-fns', function () {
+ return differenceInCalendarQuarters(this.dateA, this.dateB)
+ })
+}, {
+ setup: function () {
+ this.dateA = new Date()
+ this.dateB = new Date(this.dateA.getTime() + 604800000)
+ }
+})
diff --git a/date-fns/src/differenceInCalendarQuarters/index.d.ts b/date-fns/src/differenceInCalendarQuarters/index.d.ts
new file mode 100644
index 0000000..177e072
--- /dev/null
+++ b/date-fns/src/differenceInCalendarQuarters/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { differenceInCalendarQuarters } from 'date-fns'
+export default differenceInCalendarQuarters
diff --git a/date-fns/src/differenceInCalendarQuarters/index.js.flow b/date-fns/src/differenceInCalendarQuarters/index.js.flow
new file mode 100644
index 0000000..c799819
--- /dev/null
+++ b/date-fns/src/differenceInCalendarQuarters/index.js.flow
@@ -0,0 +1,55 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (
+ dateLeft: Date | number,
+ dateRight: Date | number
+) => number
diff --git a/date-fns/src/differenceInCalendarQuarters/index.ts b/date-fns/src/differenceInCalendarQuarters/index.ts
new file mode 100644
index 0000000..d3569fd
--- /dev/null
+++ b/date-fns/src/differenceInCalendarQuarters/index.ts
@@ -0,0 +1,43 @@
+import getQuarter from '../getQuarter/index'
+import toDate from '../toDate/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name differenceInCalendarQuarters
+ * @category Quarter Helpers
+ * @summary Get the number of calendar quarters between the given dates.
+ *
+ * @description
+ * Get the number of calendar quarters between the given dates.
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} dateLeft - the later date
+ * @param {Date|Number} dateRight - the earlier date
+ * @returns {Number} the number of calendar quarters
+ * @throws {TypeError} 2 arguments required
+ *
+ * @example
+ * // How many calendar quarters are between 31 December 2013 and 2 July 2014?
+ * var result = differenceInCalendarQuarters(
+ * new Date(2014, 6, 2),
+ * new Date(2013, 11, 31)
+ * )
+ * //=> 3
+ */
+export default function differenceInCalendarQuarters(
+ dirtyDateLeft: Date | number,
+ dirtyDateRight: Date | number
+): number {
+ requiredArgs(2, arguments)
+
+ const dateLeft = toDate(dirtyDateLeft)
+ const dateRight = toDate(dirtyDateRight)
+
+ const yearDiff = dateLeft.getFullYear() - dateRight.getFullYear()
+ const quarterDiff = getQuarter(dateLeft) - getQuarter(dateRight)
+
+ return yearDiff * 4 + quarterDiff
+}
diff --git a/date-fns/src/differenceInCalendarQuarters/test.ts b/date-fns/src/differenceInCalendarQuarters/test.ts
new file mode 100644
index 0000000..f889687
--- /dev/null
+++ b/date-fns/src/differenceInCalendarQuarters/test.ts
@@ -0,0 +1,104 @@
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import differenceInCalendarQuarters from '.'
+
+describe('differenceInCalendarQuarters', function () {
+ it('returns the number of calendar quarters between the given dates', function () {
+ const result = differenceInCalendarQuarters(
+ new Date(2012, 6 /* Jul */, 2, 18, 0),
+ new Date(2011, 6 /* Jul */, 2, 6, 0)
+ )
+ assert(result === 4)
+ })
+
+ it('returns a negative number if the time value of the first date is smaller', function () {
+ const result = differenceInCalendarQuarters(
+ new Date(2011, 6 /* Jul */, 2, 6, 0),
+ new Date(2012, 6 /* Jul */, 2, 18, 0)
+ )
+ assert(result === -4)
+ })
+
+ it('accepts timestamps', function () {
+ const result = differenceInCalendarQuarters(
+ new Date(2014, 9 /* Oct */, 2).getTime(),
+ new Date(2010, 6 /* Jul */, 2).getTime()
+ )
+ assert(result === 17)
+ })
+
+ describe('edge cases', function () {
+ it('the difference is less than a quarter, but the given dates are in different calendar quarters', function () {
+ const result = differenceInCalendarQuarters(
+ new Date(2014, 6 /* Jul */, 1),
+ new Date(2014, 5 /* Jun */, 30)
+ )
+ assert(result === 1)
+ })
+
+ it('the same for the swapped dates', function () {
+ const result = differenceInCalendarQuarters(
+ new Date(2014, 5 /* Jun */, 30),
+ new Date(2014, 6 /* Jul */, 1)
+ )
+ assert(result === -1)
+ })
+
+ it('the days of months of the given dates are the same', function () {
+ const result = differenceInCalendarQuarters(
+ new Date(2014, 3 /* Apr */, 6),
+ new Date(2014, 0 /* Jan */, 6)
+ )
+ assert(result === 1)
+ })
+
+ it('the given dates are the same', function () {
+ const result = differenceInCalendarQuarters(
+ new Date(2014, 8 /* Sep */, 5, 0, 0),
+ new Date(2014, 8 /* Sep */, 5, 0, 0)
+ )
+ assert(result === 0)
+ })
+
+ it('does not return -0 when the given dates are the same', () => {
+ function isNegativeZero(x: number): boolean {
+ return x === 0 && 1 / x < 0
+ }
+
+ const result = differenceInCalendarQuarters(
+ new Date(2014, 8 /* Sep */, 5, 0, 0),
+ new Date(2014, 8 /* Sep */, 5, 0, 0)
+ )
+
+ const resultIsNegative = isNegativeZero(result)
+ assert(resultIsNegative === false)
+ })
+ })
+
+ it('returns NaN if the first date is `Invalid Date`', function () {
+ const result = differenceInCalendarQuarters(
+ new Date(NaN),
+ new Date(2017, 0 /* Jan */, 1)
+ )
+ assert(isNaN(result))
+ })
+
+ it('returns NaN if the second date is `Invalid Date`', function () {
+ const result = differenceInCalendarQuarters(
+ new Date(2017, 0 /* Jan */, 1),
+ new Date(NaN)
+ )
+ assert(isNaN(result))
+ })
+
+ it('returns NaN if the both dates are `Invalid Date`', function () {
+ const result = differenceInCalendarQuarters(new Date(NaN), new Date(NaN))
+ assert(isNaN(result))
+ })
+
+ it('throws TypeError exception if passed less than 2 arguments', function () {
+ assert.throws(differenceInCalendarQuarters.bind(null), TypeError)
+ assert.throws(differenceInCalendarQuarters.bind(null, 1), TypeError)
+ })
+})
diff --git a/date-fns/src/differenceInCalendarWeeks/benchmark.js b/date-fns/src/differenceInCalendarWeeks/benchmark.js
new file mode 100644
index 0000000..d014aee
--- /dev/null
+++ b/date-fns/src/differenceInCalendarWeeks/benchmark.js
@@ -0,0 +1,16 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import differenceInCalendarWeeks from '.'
+
+suite('differenceInCalendarWeeks', function () {
+ benchmark('date-fns', function () {
+ return differenceInCalendarWeeks(this.dateA, this.dateB)
+ })
+}, {
+ setup: function () {
+ this.dateA = new Date()
+ this.dateB = new Date(this.dateA.getTime() + 604800000)
+ }
+})
diff --git a/date-fns/src/differenceInCalendarWeeks/index.d.ts b/date-fns/src/differenceInCalendarWeeks/index.d.ts
new file mode 100644
index 0000000..c370dd6
--- /dev/null
+++ b/date-fns/src/differenceInCalendarWeeks/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { differenceInCalendarWeeks } from 'date-fns'
+export default differenceInCalendarWeeks
diff --git a/date-fns/src/differenceInCalendarWeeks/index.js.flow b/date-fns/src/differenceInCalendarWeeks/index.js.flow
new file mode 100644
index 0000000..e4968a9
--- /dev/null
+++ b/date-fns/src/differenceInCalendarWeeks/index.js.flow
@@ -0,0 +1,59 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (
+ dateLeft: Date | number,
+ dateRight: Date | number,
+ options?: {
+ locale?: Locale,
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ }
+) => number
diff --git a/date-fns/src/differenceInCalendarWeeks/index.ts b/date-fns/src/differenceInCalendarWeeks/index.ts
new file mode 100644
index 0000000..da15cb7
--- /dev/null
+++ b/date-fns/src/differenceInCalendarWeeks/index.ts
@@ -0,0 +1,67 @@
+import startOfWeek from '../startOfWeek/index'
+import getTimezoneOffsetInMilliseconds from '../_lib/getTimezoneOffsetInMilliseconds/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+import { LocaleOptions, WeekStartOptions } from '../types'
+
+const MILLISECONDS_IN_WEEK = 604800000
+
+/**
+ * @name differenceInCalendarWeeks
+ * @category Week Helpers
+ * @summary Get the number of calendar weeks between the given dates.
+ *
+ * @description
+ * Get the number of calendar weeks between the given dates.
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} dateLeft - the later date
+ * @param {Date|Number} dateRight - the earlier date
+ * @param {Object} [options] - an object with options.
+ * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}
+ * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)
+ * @returns {Number} the number of calendar weeks
+ * @throws {TypeError} 2 arguments required
+ * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6
+ *
+ * @example
+ * // How many calendar weeks are between 5 July 2014 and 20 July 2014?
+ * const result = differenceInCalendarWeeks(
+ * new Date(2014, 6, 20),
+ * new Date(2014, 6, 5)
+ * )
+ * //=> 3
+ *
+ * @example
+ * // If the week starts on Monday,
+ * // how many calendar weeks are between 5 July 2014 and 20 July 2014?
+ * const result = differenceInCalendarWeeks(
+ * new Date(2014, 6, 20),
+ * new Date(2014, 6, 5),
+ * { weekStartsOn: 1 }
+ * )
+ * //=> 2
+ */
+export default function differenceInCalendarWeeks(
+ dirtyDateLeft: Date | number,
+ dirtyDateRight: Date | number,
+ dirtyOptions?: LocaleOptions & WeekStartOptions
+): number {
+ requiredArgs(2, arguments)
+
+ const startOfWeekLeft = startOfWeek(dirtyDateLeft, dirtyOptions)
+ const startOfWeekRight = startOfWeek(dirtyDateRight, dirtyOptions)
+
+ const timestampLeft =
+ startOfWeekLeft.getTime() - getTimezoneOffsetInMilliseconds(startOfWeekLeft)
+ const timestampRight =
+ startOfWeekRight.getTime() -
+ getTimezoneOffsetInMilliseconds(startOfWeekRight)
+
+ // Round the number of days to the nearest integer
+ // because the number of milliseconds in a week is not constant
+ // (e.g. it's different in the week of the daylight saving time clock shift)
+ return Math.round((timestampLeft - timestampRight) / MILLISECONDS_IN_WEEK)
+}
diff --git a/date-fns/src/differenceInCalendarWeeks/test.ts b/date-fns/src/differenceInCalendarWeeks/test.ts
new file mode 100644
index 0000000..8a1f6e2
--- /dev/null
+++ b/date-fns/src/differenceInCalendarWeeks/test.ts
@@ -0,0 +1,164 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import differenceInCalendarWeeks from '.'
+
+describe('differenceInCalendarWeeks', function () {
+ it('returns the number of calendar weeks between the given dates', function () {
+ const result = differenceInCalendarWeeks(
+ new Date(2014, 6 /* Jul */, 8, 18, 0),
+ new Date(2014, 5 /* Jun */, 29, 6, 0)
+ )
+ assert(result === 1)
+ })
+
+ it('allows to specify which day is the first day of the week', function () {
+ const result = differenceInCalendarWeeks(
+ new Date(2014, 6 /* Jul */, 8, 18, 0),
+ new Date(2014, 5 /* Jun */, 29, 6, 0),
+ { weekStartsOn: 1 }
+ )
+ assert(result === 2)
+ })
+
+ it('allows to specify which day is the first day of the week in locale', function () {
+ const result = differenceInCalendarWeeks(
+ new Date(2014, 6 /* Jul */, 8, 18, 0),
+ new Date(2014, 5 /* Jun */, 29, 6, 0),
+ {
+ // @ts-expect-error
+ locale: {
+ options: { weekStartsOn: 1 },
+ },
+ }
+ )
+ assert(result === 2)
+ })
+
+ it('`options.weekStartsOn` overwrites the first day of the week specified in locale', function () {
+ const result = differenceInCalendarWeeks(
+ new Date(2014, 6 /* Jul */, 8, 18, 0),
+ new Date(2014, 5 /* Jun */, 29, 6, 0),
+ {
+ weekStartsOn: 1,
+ // @ts-expect-error
+ locale: {
+ options: { weekStartsOn: 0 },
+ },
+ }
+ )
+ assert(result === 2)
+ })
+
+ it('returns a positive number if the time value of the second date is smaller', function () {
+ const result = differenceInCalendarWeeks(
+ new Date(2014, 6 /* Jul */, 8, 18, 0),
+ new Date(2014, 5 /* Jun */, 29, 6, 0),
+ // @ts-expect-error
+ { weekStartsOn: '1' }
+ )
+ assert(result === 2)
+ })
+
+ it('returns a negative number if the time value of the first date is smaller', function () {
+ const result = differenceInCalendarWeeks(
+ new Date(2014, 5 /* Jun */, 29, 6, 0),
+ new Date(2014, 6 /* Jul */, 8, 18, 0)
+ )
+ assert(result === -1)
+ })
+
+ it('accepts timestamps', function () {
+ const result = differenceInCalendarWeeks(
+ new Date(2014, 6 /* Jul */, 12).getTime(),
+ new Date(2014, 6 /* Jul */, 2).getTime()
+ )
+ assert(result === 1)
+ })
+
+ describe('edge cases', function () {
+ it('the difference is less than a week, but the given dates are in different calendar weeks', function () {
+ const result = differenceInCalendarWeeks(
+ new Date(2014, 6 /* Jul */, 6),
+ new Date(2014, 6 /* Jul */, 5)
+ )
+ assert(result === 1)
+ })
+
+ it('the same for the swapped dates', function () {
+ const result = differenceInCalendarWeeks(
+ new Date(2014, 6 /* Jul */, 5),
+ new Date(2014, 6 /* Jul */, 6)
+ )
+ assert(result === -1)
+ })
+
+ it('the days of weeks of the given dates are the same', function () {
+ const result = differenceInCalendarWeeks(
+ new Date(2014, 6 /* Jul */, 9),
+ new Date(2014, 6 /* Jul */, 2)
+ )
+ assert(result === 1)
+ })
+
+ it('the given dates are the same', function () {
+ const result = differenceInCalendarWeeks(
+ new Date(2014, 8 /* Sep */, 5, 0, 0),
+ new Date(2014, 8 /* Sep */, 5, 0, 0)
+ )
+ assert(result === 0)
+ })
+
+ it('does not return -0 when the given dates are the same', () => {
+ function isNegativeZero(x: number): boolean {
+ return x === 0 && 1 / x < 0
+ }
+
+ const result = differenceInCalendarWeeks(
+ new Date(2014, 8 /* Sep */, 5, 0, 0),
+ new Date(2014, 8 /* Sep */, 5, 0, 0)
+ )
+
+ const resultIsNegative = isNegativeZero(result)
+ assert(resultIsNegative === false)
+ })
+ })
+
+ it('returns NaN if the first date is `Invalid Date`', function () {
+ const result = differenceInCalendarWeeks(
+ new Date(NaN),
+ new Date(2017, 0 /* Jan */, 1)
+ )
+ assert(isNaN(result))
+ })
+
+ it('returns NaN if the second date is `Invalid Date`', function () {
+ const result = differenceInCalendarWeeks(
+ new Date(2017, 0 /* Jan */, 1),
+ new Date(NaN)
+ )
+ assert(isNaN(result))
+ })
+
+ it('returns NaN if the both dates are `Invalid Date`', function () {
+ const result = differenceInCalendarWeeks(new Date(NaN), new Date(NaN))
+ assert(isNaN(result))
+ })
+
+ it('throws `RangeError` if `options.weekStartsOn` is not convertable to 0, 1, ..., 6 or undefined', function () {
+ // @ts-expect-error
+ const block = differenceInCalendarWeeks.bind(
+ null,
+ new Date(2014, 6 /* Jul */, 8, 18, 0),
+ new Date(2014, 5 /* Jun */, 29, 6, 0),
+ { weekStartsOn: NaN }
+ )
+ assert.throws(block, RangeError)
+ })
+
+ it('throws TypeError exception if passed less than 2 arguments', function () {
+ assert.throws(differenceInCalendarWeeks.bind(null), TypeError)
+ assert.throws(differenceInCalendarWeeks.bind(null, 1), TypeError)
+ })
+})
diff --git a/date-fns/src/differenceInCalendarYears/benchmark.js b/date-fns/src/differenceInCalendarYears/benchmark.js
new file mode 100644
index 0000000..74f42ba
--- /dev/null
+++ b/date-fns/src/differenceInCalendarYears/benchmark.js
@@ -0,0 +1,16 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import differenceInCalendarYears from '.'
+
+suite('differenceInCalendarYears', function () {
+ benchmark('date-fns', function () {
+ return differenceInCalendarYears(this.dateA, this.dateB)
+ })
+}, {
+ setup: function () {
+ this.dateA = new Date()
+ this.dateB = new Date(this.dateA.getTime() + 604800000)
+ }
+})
diff --git a/date-fns/src/differenceInCalendarYears/index.d.ts b/date-fns/src/differenceInCalendarYears/index.d.ts
new file mode 100644
index 0000000..3692b07
--- /dev/null
+++ b/date-fns/src/differenceInCalendarYears/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { differenceInCalendarYears } from 'date-fns'
+export default differenceInCalendarYears
diff --git a/date-fns/src/differenceInCalendarYears/index.js.flow b/date-fns/src/differenceInCalendarYears/index.js.flow
new file mode 100644
index 0000000..c799819
--- /dev/null
+++ b/date-fns/src/differenceInCalendarYears/index.js.flow
@@ -0,0 +1,55 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (
+ dateLeft: Date | number,
+ dateRight: Date | number
+) => number
diff --git a/date-fns/src/differenceInCalendarYears/index.ts b/date-fns/src/differenceInCalendarYears/index.ts
new file mode 100644
index 0000000..586b0fd
--- /dev/null
+++ b/date-fns/src/differenceInCalendarYears/index.ts
@@ -0,0 +1,39 @@
+import toDate from '../toDate/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name differenceInCalendarYears
+ * @category Year Helpers
+ * @summary Get the number of calendar years between the given dates.
+ *
+ * @description
+ * Get the number of calendar years between the given dates.
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} dateLeft - the later date
+ * @param {Date|Number} dateRight - the earlier date
+ * @returns {Number} the number of calendar years
+ * @throws {TypeError} 2 arguments required
+ *
+ * @example
+ * // How many calendar years are between 31 December 2013 and 11 February 2015?
+ * const result = differenceInCalendarYears(
+ * new Date(2015, 1, 11),
+ * new Date(2013, 11, 31)
+ * )
+ * //=> 2
+ */
+export default function differenceInCalendarYears(
+ dirtyDateLeft: Date | number,
+ dirtyDateRight: Date | number
+): number {
+ requiredArgs(2, arguments)
+
+ const dateLeft = toDate(dirtyDateLeft)
+ const dateRight = toDate(dirtyDateRight)
+
+ return dateLeft.getFullYear() - dateRight.getFullYear()
+}
diff --git a/date-fns/src/differenceInCalendarYears/test.ts b/date-fns/src/differenceInCalendarYears/test.ts
new file mode 100644
index 0000000..7a27322
--- /dev/null
+++ b/date-fns/src/differenceInCalendarYears/test.ts
@@ -0,0 +1,105 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import differenceInCalendarYears from '.'
+
+describe('differenceInCalendarYears', function () {
+ it('returns the number of calendar years between the given dates', function () {
+ const result = differenceInCalendarYears(
+ new Date(2012, 6 /* Jul */, 2, 18, 0),
+ new Date(2011, 6 /* Jul */, 2, 6, 0)
+ )
+ assert(result === 1)
+ })
+
+ it('returns a negative number if the time value of the first date is smaller', function () {
+ const result = differenceInCalendarYears(
+ new Date(2011, 6 /* Jul */, 2, 6, 0),
+ new Date(2012, 6 /* Jul */, 2, 18, 0)
+ )
+ assert(result === -1)
+ })
+
+ it('accepts timestamps', function () {
+ const result = differenceInCalendarYears(
+ new Date(2014, 6 /* Jul */, 2).getTime(),
+ new Date(2010, 6 /* Jul */, 2).getTime()
+ )
+ assert(result === 4)
+ })
+
+ describe('edge cases', function () {
+ it('the difference is less than a year, but the given dates are in different calendar years', function () {
+ const result = differenceInCalendarYears(
+ new Date(2015, 0 /* Jan */, 1),
+ new Date(2014, 11 /* Dec */, 31)
+ )
+ assert(result === 1)
+ })
+
+ it('the same for the swapped dates', function () {
+ const result = differenceInCalendarYears(
+ new Date(2014, 11 /* Dec */, 31),
+ new Date(2015, 0 /* Jan */, 1)
+ )
+ assert(result === -1)
+ })
+
+ it('the days and months of the given dates are the same', function () {
+ const result = differenceInCalendarYears(
+ new Date(2014, 8 /* Sep */, 5),
+ new Date(2012, 8 /* Sep */, 5)
+ )
+ assert(result === 2)
+ })
+
+ it('the given dates are the same', function () {
+ const result = differenceInCalendarYears(
+ new Date(2014, 8 /* Sep */, 5, 0, 0),
+ new Date(2014, 8 /* Sep */, 5, 0, 0)
+ )
+ assert(result === 0)
+ })
+
+ it('does not return -0 when the given dates are the same', () => {
+ function isNegativeZero(x: number): boolean {
+ return x === 0 && 1 / x < 0
+ }
+
+ const result = differenceInCalendarYears(
+ new Date(2014, 8 /* Sep */, 5, 0, 0),
+ new Date(2014, 8 /* Sep */, 5, 0, 0)
+ )
+
+ const resultIsNegative = isNegativeZero(result)
+ assert(resultIsNegative === false)
+ })
+ })
+
+ it('returns NaN if the first date is `Invalid Date`', function () {
+ const result = differenceInCalendarYears(
+ new Date(NaN),
+ new Date(2017, 0 /* Jan */, 1)
+ )
+ assert(isNaN(result))
+ })
+
+ it('returns NaN if the second date is `Invalid Date`', function () {
+ const result = differenceInCalendarYears(
+ new Date(2017, 0 /* Jan */, 1),
+ new Date(NaN)
+ )
+ assert(isNaN(result))
+ })
+
+ it('returns NaN if the both dates are `Invalid Date`', function () {
+ const result = differenceInCalendarYears(new Date(NaN), new Date(NaN))
+ assert(isNaN(result))
+ })
+
+ it('throws TypeError exception if passed less than 2 arguments', function () {
+ assert.throws(differenceInCalendarYears.bind(null), TypeError)
+ assert.throws(differenceInCalendarYears.bind(null, 1), TypeError)
+ })
+})
diff --git a/date-fns/src/differenceInDays/benchmark.js b/date-fns/src/differenceInDays/benchmark.js
new file mode 100644
index 0000000..2bc0f44
--- /dev/null
+++ b/date-fns/src/differenceInDays/benchmark.js
@@ -0,0 +1,23 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import differenceInDays from '.'
+import moment from 'moment'
+
+suite('differenceInDays', function () {
+ benchmark('date-fns', function () {
+ return differenceInDays(this.dateA, this.dateB)
+ })
+
+ benchmark('Moment.js', function () {
+ return this.momentA.diff(this.momentB, 'day')
+ })
+}, {
+ setup: function () {
+ this.dateA = new Date()
+ this.momentA = moment()
+ this.dateB = new Date(this.dateA.getTime() + 604800000)
+ this.momentB = this.momentA.clone().add(7, 'days')
+ }
+})
diff --git a/date-fns/src/differenceInDays/index.d.ts b/date-fns/src/differenceInDays/index.d.ts
new file mode 100644
index 0000000..de04cde
--- /dev/null
+++ b/date-fns/src/differenceInDays/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { differenceInDays } from 'date-fns'
+export default differenceInDays
diff --git a/date-fns/src/differenceInDays/index.js.flow b/date-fns/src/differenceInDays/index.js.flow
new file mode 100644
index 0000000..c799819
--- /dev/null
+++ b/date-fns/src/differenceInDays/index.js.flow
@@ -0,0 +1,55 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (
+ dateLeft: Date | number,
+ dateRight: Date | number
+) => number
diff --git a/date-fns/src/differenceInDays/index.ts b/date-fns/src/differenceInDays/index.ts
new file mode 100644
index 0000000..5851836
--- /dev/null
+++ b/date-fns/src/differenceInDays/index.ts
@@ -0,0 +1,104 @@
+import toDate from '../toDate/index'
+import differenceInCalendarDays from '../differenceInCalendarDays/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+// Like `compareAsc` but uses local time not UTC, which is needed
+// for accurate equality comparisons of UTC timestamps that end up
+// having the same representation in local time, e.g. one hour before
+// DST ends vs. the instant that DST ends.
+function compareLocalAsc(dateLeft: Date, dateRight: Date): number {
+ const diff =
+ dateLeft.getFullYear() - dateRight.getFullYear() ||
+ dateLeft.getMonth() - dateRight.getMonth() ||
+ dateLeft.getDate() - dateRight.getDate() ||
+ dateLeft.getHours() - dateRight.getHours() ||
+ dateLeft.getMinutes() - dateRight.getMinutes() ||
+ dateLeft.getSeconds() - dateRight.getSeconds() ||
+ dateLeft.getMilliseconds() - dateRight.getMilliseconds()
+
+ if (diff < 0) {
+ return -1
+ } else if (diff > 0) {
+ return 1
+ // Return 0 if diff is 0; return NaN if diff is NaN
+ } else {
+ return diff
+ }
+}
+
+/**
+ * @name differenceInDays
+ * @category Day Helpers
+ * @summary Get the number of full days between the given dates.
+ *
+ * @description
+ * Get the number of full day periods between two dates. Fractional days are
+ * truncated towards zero.
+ *
+ * One "full day" is the distance between a local time in one day to the same
+ * local time on the next or previous day. A full day can sometimes be less than
+ * or more than 24 hours if a daylight savings change happens between two dates.
+ *
+ * To ignore DST and only measure exact 24-hour periods, use this instead:
+ * `Math.floor(differenceInHours(dateLeft, dateRight)/24)|0`.
+ *
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} dateLeft - the later date
+ * @param {Date|Number} dateRight - the earlier date
+ * @returns {Number} the number of full days according to the local timezone
+ * @throws {TypeError} 2 arguments required
+ *
+ * @example
+ * // How many full days are between
+ * // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?
+ * const result = differenceInDays(
+ * new Date(2012, 6, 2, 0, 0),
+ * new Date(2011, 6, 2, 23, 0)
+ * )
+ * //=> 365
+ * // How many full days are between
+ * // 2 July 2011 23:59:00 and 3 July 2011 00:01:00?
+ * const result = differenceInDays(
+ * new Date(2011, 6, 3, 0, 1),
+ * new Date(2011, 6, 2, 23, 59)
+ * )
+ * //=> 0
+ * // How many full days are between
+ * // 1 March 2020 0:00 and 1 June 2020 0:00 ?
+ * // Note: because local time is used, the
+ * // result will always be 92 days, even in
+ * // time zones where DST starts and the
+ * // period has only 92*24-1 hours.
+ * const result = differenceInDays(
+ * new Date(2020, 5, 1),
+ * new Date(2020, 2, 1)
+ * )
+//=> 92
+ */
+export default function differenceInDays(
+ dirtyDateLeft: Date | number,
+ dirtyDateRight: Date | number
+): number {
+ requiredArgs(2, arguments)
+
+ const dateLeft = toDate(dirtyDateLeft)
+ const dateRight = toDate(dirtyDateRight)
+
+ const sign = compareLocalAsc(dateLeft, dateRight)
+ const difference = Math.abs(differenceInCalendarDays(dateLeft, dateRight))
+
+ dateLeft.setDate(dateLeft.getDate() - sign * difference)
+
+ // Math.abs(diff in full days - diff in calendar days) === 1 if last calendar day is not full
+ // If so, result must be decreased by 1 in absolute value
+ const isLastDayNotFull = Number(
+ compareLocalAsc(dateLeft, dateRight) === -sign
+ )
+ const result = sign * (difference - isLastDayNotFull)
+ // Prevent negative zero
+ return result === 0 ? 0 : result
+}
diff --git a/date-fns/src/differenceInDays/test.ts b/date-fns/src/differenceInDays/test.ts
new file mode 100644
index 0000000..4afa6f8
--- /dev/null
+++ b/date-fns/src/differenceInDays/test.ts
@@ -0,0 +1,214 @@
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import differenceInDays from '.'
+import { getDstTransitions } from '../../test/dst/tzOffsetTransitions'
+
+describe('differenceInDays', function () {
+ it('returns the number of full days between the given dates', function () {
+ const result = differenceInDays(
+ new Date(2012, 6 /* Jul */, 2, 18, 0),
+ new Date(2011, 6 /* Jul */, 2, 6, 0)
+ )
+ assert(result === 366)
+ })
+
+ it('returns a negative number if the time value of the first date is smaller', function () {
+ const result = differenceInDays(
+ new Date(2011, 6 /* Jul */, 2, 6, 0),
+ new Date(2012, 6 /* Jul */, 2, 18, 0)
+ )
+ assert(result === -366)
+ })
+
+ it('accepts timestamps', function () {
+ const result = differenceInDays(
+ new Date(2014, 8 /* Sep */, 5, 18, 0).getTime(),
+ new Date(2014, 8 /* Sep */, 4, 6, 0).getTime()
+ )
+ assert(result === 1)
+ })
+
+ describe('edge cases', function () {
+ it('the difference is less than a day, but the given dates are in different calendar days', function () {
+ const result = differenceInDays(
+ new Date(2014, 8 /* Sep */, 5, 0, 0),
+ new Date(2014, 8 /* Sep */, 4, 23, 59)
+ )
+ assert(result === 0)
+ })
+
+ it('the same for the swapped dates', function () {
+ const result = differenceInDays(
+ new Date(2014, 8 /* Sep */, 4, 23, 59),
+ new Date(2014, 8 /* Sep */, 5, 0, 0)
+ )
+ assert(result === 0)
+ })
+
+ it('the time values of the given dates are the same', function () {
+ const result = differenceInDays(
+ new Date(2014, 8 /* Sep */, 6, 0, 0),
+ new Date(2014, 8 /* Sep */, 5, 0, 0)
+ )
+ assert(result === 1)
+ })
+
+ it('the given dates are the same', function () {
+ const result = differenceInDays(
+ new Date(2014, 8 /* Sep */, 5, 0, 0),
+ new Date(2014, 8 /* Sep */, 5, 0, 0)
+ )
+ assert(result === 0)
+ })
+
+ const dstTransitions = getDstTransitions(2017)
+ const dstOnly = dstTransitions.start && dstTransitions.end ? it : it.skip
+ const tz =
+ Intl.DateTimeFormat().resolvedOptions().timeZone || process.env.tz
+ dstOnly(
+ `works across DST start & end in local timezone: ${tz || '(unknown)'}`,
+ function () {
+ const { start, end } = dstTransitions
+ const HOUR = 1000 * 60 * 60
+ const MINUTE = 1000 * 60
+ function sameTime(t1: Date, t2: Date): boolean {
+ return (
+ t1.getHours() === t2.getHours() &&
+ t1.getMinutes() === t2.getMinutes() &&
+ t1.getSeconds() === t2.getSeconds() &&
+ t1.getMilliseconds() === t2.getMilliseconds()
+ )
+ }
+
+ assert(start !== undefined)
+ assert(end !== undefined)
+
+ if (start === undefined || end === undefined) {
+ return
+ }
+
+ // It's usually 1 hour, but for some timezones, e.g. Australia/Lord_Howe, it is 30 minutes
+ const dstOffset =
+ (end.getTimezoneOffset() - start.getTimezoneOffset()) * MINUTE
+
+ // TEST DST START (SPRING)
+
+ // anchor to one hour before the boundary
+ {
+ const a = new Date(start.getTime() - HOUR) // 1 hour before DST
+ const b = new Date(a.getTime() + 24 * HOUR - dstOffset) // 1 day later, same local time
+ const c = new Date(a.getTime() + 48 * HOUR - dstOffset) // 2 days later, same local time
+
+ assert(sameTime(a, b))
+ assert(sameTime(a, c))
+ assert(sameTime(b, c))
+ assert(differenceInDays(c, b) === 1) // normal 24-hour day
+ assert(differenceInDays(b, a) === 1) // 23 hours -> 1 day
+ assert(differenceInDays(c, a) === 2) // 47 hours -> 2 days
+ }
+ // anchor exactly, the boundary
+ {
+ const a = start // exactly when DST starts
+ const b = new Date(a.getTime() + 24 * HOUR) // 1 day later, same local time
+ const c = new Date(a.getTime() + 48 * HOUR) // 2 days later, same local time
+
+ assert(sameTime(a, b))
+ assert(sameTime(a, c))
+ assert(sameTime(b, c))
+ assert(differenceInDays(c, b) === 1) // normal 24-hour day
+ assert(differenceInDays(b, a) === 1) // normal 24-hour day
+ assert(differenceInDays(c, a) === 2) // 2 normal 24-hour days
+ }
+
+ // TEST DST END (FALL)
+
+ // make sure that diffs across a "fall back" DST boundary won't report a full day
+ // until 25 hours have elapsed.
+ {
+ const a = new Date(end.getTime() - HOUR / 2) // 1 hour before Standard Time starts
+ const b = new Date(a.getTime() + 24 * HOUR + dstOffset - 15 * MINUTE) // 1 day later, 15 mins earlier local time
+ const c = new Date(a.getTime() + 48 * HOUR + dstOffset - 15 * MINUTE) // 2 days later, 15 mins earlier local time
+
+ assert(differenceInDays(c, b) === 1) // normal 24-hour day
+ assert(differenceInDays(b, a) === 0) // 24.75 hours -> 0 full days (because hour lost to DST)
+ assert(differenceInDays(c, a) === 1) // 48.75 hours -> 1 full day (because hour lost to DST)
+ }
+ // anchor to one hour before the boundary
+ {
+ const a = new Date(end.getTime() - HOUR) // 1 hour before Standard Time start
+ const b = new Date(a.getTime() + 24 * HOUR + dstOffset) // 1 day later, same local time
+ const c = new Date(a.getTime() + 48 * HOUR + dstOffset) // 2 days later, same local time
+
+ assert(sameTime(a, b))
+ assert(sameTime(a, c))
+ assert(sameTime(b, c))
+ assert(differenceInDays(c, b) === 1) // normal 24-hour day
+ assert(differenceInDays(b, a) === 1) // 25 hours -> 1 day
+ assert(differenceInDays(c, a) === 2) // 49 hours -> 2 days
+ }
+ // anchor to one hour after the boundary
+ {
+ const a = new Date(end.getTime() + HOUR) // 1 hour after Standard Time start
+ const b = new Date(a.getTime() + 24 * HOUR) // 1 day later, same local time
+ const c = new Date(a.getTime() + 48 * HOUR) // 2 days later, same local time
+
+ assert(sameTime(a, b))
+ assert(sameTime(a, c))
+ assert(sameTime(b, c))
+ assert(differenceInDays(c, b) === 1) // normal 24-hour day
+ assert(differenceInDays(b, a) === 1) // normal 24-hour day
+ assert(differenceInDays(c, a) === 2) // 2 normal 24-hour days
+ }
+ // anchor exactly at the boundary
+ {
+ const a = end // exactly when Standard Time starts
+ const b = new Date(a.getTime() + 24 * HOUR) // 1 day later, same local time
+ const c = new Date(a.getTime() + 48 * HOUR) // 2 days later, same local time
+ assert(differenceInDays(b, a) === 1) // normal 24-hour day
+ assert(differenceInDays(c, a) === 2) // 2 normal 24-hour days
+ }
+ }
+ )
+
+ it('does not return -0 when the given dates are the same', () => {
+ function isNegativeZero(x: number): boolean {
+ return x === 0 && 1 / x < 0
+ }
+
+ const result = differenceInDays(
+ new Date(2014, 8 /* Sep */, 5, 0, 0),
+ new Date(2014, 8 /* Sep */, 5, 0, 0)
+ )
+
+ const resultIsNegative = isNegativeZero(result)
+ assert(resultIsNegative === false)
+ })
+ })
+
+ it('returns NaN if the first date is `Invalid Date`', function () {
+ const result = differenceInDays(
+ new Date(NaN),
+ new Date(2017, 0 /* Jan */, 1)
+ )
+ assert(isNaN(result))
+ })
+
+ it('returns NaN if the second date is `Invalid Date`', function () {
+ const result = differenceInDays(
+ new Date(2017, 0 /* Jan */, 1),
+ new Date(NaN)
+ )
+ assert(isNaN(result))
+ })
+
+ it('returns NaN if the both dates are `Invalid Date`', function () {
+ const result = differenceInDays(new Date(NaN), new Date(NaN))
+ assert(isNaN(result))
+ })
+
+ it('throws TypeError exception if passed less than 2 arguments', function () {
+ assert.throws(differenceInDays.bind(null), TypeError)
+ assert.throws(differenceInDays.bind(null, 1), TypeError)
+ })
+})
diff --git a/date-fns/src/differenceInHours/benchmark.js b/date-fns/src/differenceInHours/benchmark.js
new file mode 100644
index 0000000..895a26b
--- /dev/null
+++ b/date-fns/src/differenceInHours/benchmark.js
@@ -0,0 +1,23 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import differenceInHours from '.'
+import moment from 'moment'
+
+suite('differenceInHours', function () {
+ benchmark('date-fns', function () {
+ return differenceInHours(this.dateA, this.dateB)
+ })
+
+ benchmark('Moment.js', function () {
+ return this.momentA.diff(this.momentB, 'hour')
+ })
+}, {
+ setup: function () {
+ this.dateA = new Date()
+ this.momentA = moment()
+ this.dateB = new Date(this.dateA.getTime() + 604800000)
+ this.momentB = this.momentA.clone().add(7, 'days')
+ }
+})
diff --git a/date-fns/src/differenceInHours/index.d.ts b/date-fns/src/differenceInHours/index.d.ts
new file mode 100644
index 0000000..4559ab9
--- /dev/null
+++ b/date-fns/src/differenceInHours/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { differenceInHours } from 'date-fns'
+export default differenceInHours
diff --git a/date-fns/src/differenceInHours/index.js.flow b/date-fns/src/differenceInHours/index.js.flow
new file mode 100644
index 0000000..c799819
--- /dev/null
+++ b/date-fns/src/differenceInHours/index.js.flow
@@ -0,0 +1,55 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (
+ dateLeft: Date | number,
+ dateRight: Date | number
+) => number
diff --git a/date-fns/src/differenceInHours/index.ts b/date-fns/src/differenceInHours/index.ts
new file mode 100644
index 0000000..3c940b1
--- /dev/null
+++ b/date-fns/src/differenceInHours/index.ts
@@ -0,0 +1,38 @@
+import differenceInMilliseconds from '../differenceInMilliseconds/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+const MILLISECONDS_IN_HOUR = 3600000
+
+/**
+ * @name differenceInHours
+ * @category Hour Helpers
+ * @summary Get the number of hours between the given dates.
+ *
+ * @description
+ * Get the number of hours between the given dates.
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} dateLeft - the later date
+ * @param {Date|Number} dateRight - the earlier date
+ * @returns {Number} the number of hours
+ * @throws {TypeError} 2 arguments required
+ *
+ * @example
+ * // How many hours are between 2 July 2014 06:50:00 and 2 July 2014 19:00:00?
+ * var result = differenceInHours(
+ * new Date(2014, 6, 2, 19, 0),
+ * new Date(2014, 6, 2, 6, 50)
+ * )
+ * //=> 12
+ */
+export default function differenceInHours(dirtyDateLeft: Date | number, dirtyDateRight: Date | number): number {
+ requiredArgs(2, arguments)
+
+ const diff =
+ differenceInMilliseconds(dirtyDateLeft, dirtyDateRight) /
+ MILLISECONDS_IN_HOUR
+ return diff > 0 ? Math.floor(diff) : Math.ceil(diff)
+}
diff --git a/date-fns/src/differenceInHours/test.ts b/date-fns/src/differenceInHours/test.ts
new file mode 100644
index 0000000..303b7fa
--- /dev/null
+++ b/date-fns/src/differenceInHours/test.ts
@@ -0,0 +1,107 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'assert'
+import differenceInHours from '.'
+
+describe('differenceInHours', function() {
+ it('returns the number of hours between the given dates', function() {
+ const result = differenceInHours(
+ new Date(2014, 6 /* Jul */, 2, 20, 0),
+ new Date(2014, 6 /* Jul */, 2, 6, 0)
+ )
+ assert(result === 14)
+ })
+
+ it('returns a negative number if the time value of the first date is smaller', function() {
+ const result = differenceInHours(
+ new Date(2014, 6 /* Jul */, 2, 6, 0),
+ new Date(2014, 6 /* Jul */, 2, 20, 0)
+ )
+ assert(result === -14)
+ })
+
+ it('accepts timestamps', function() {
+ const result = differenceInHours(
+ new Date(2014, 8 /* Sep */, 5, 18, 0).getTime(),
+ new Date(2014, 8 /* Sep */, 5, 6, 0).getTime()
+ )
+ assert(result === 12)
+ })
+
+ describe('edge cases', function() {
+ it('the difference is less than an hour, but the given dates are in different calendar hours', function() {
+ const result = differenceInHours(
+ new Date(2014, 8 /* Sep */, 5, 12),
+ new Date(2014, 8 /* Sep */, 5, 11, 59)
+ )
+ assert(result === 0)
+ })
+
+ it('the same for the swapped dates', function() {
+ const result = differenceInHours(
+ new Date(2014, 8 /* Sep */, 5, 11, 59),
+ new Date(2014, 8 /* Sep */, 5, 12)
+ )
+ assert(result === 0)
+ })
+
+ it('the difference is an integral number of hours', function() {
+ const result = differenceInHours(
+ new Date(2014, 8 /* Sep */, 5, 13, 0),
+ new Date(2014, 8 /* Sep */, 5, 12, 0)
+ )
+ assert(result === 1)
+ })
+
+ it('the given dates are the same', function() {
+ const result = differenceInHours(
+ new Date(2014, 8 /* Sep */, 5, 0, 0),
+ new Date(2014, 8 /* Sep */, 5, 0, 0)
+ )
+ assert(result === 0)
+ })
+
+ it('does not return -0 when the given dates are the same', () => {
+ function isNegativeZero(x: number): boolean {
+ return x === 0 && 1 / x < 0
+ }
+
+ const result = differenceInHours(
+ new Date(2014, 8 /* Sep */, 5, 0, 0),
+ new Date(2014, 8 /* Sep */, 5, 0, 0)
+ )
+
+ const resultIsNegative = isNegativeZero(result)
+ assert(resultIsNegative === false)
+ })
+ })
+
+ it('returns NaN if the first date is `Invalid Date`', function() {
+ const result = differenceInHours(
+ new Date(NaN),
+ new Date(2017, 0 /* Jan */, 1)
+ )
+ assert(isNaN(result))
+ })
+
+ it('returns NaN if the second date is `Invalid Date`', function() {
+ const result = differenceInHours(
+ new Date(2017, 0 /* Jan */, 1),
+ new Date(NaN)
+ )
+ assert(isNaN(result))
+ })
+
+ it('returns NaN if the both dates are `Invalid Date`', function() {
+ const result = differenceInHours(new Date(NaN), new Date(NaN))
+ assert(isNaN(result))
+ })
+
+ it('throws TypeError exception if passed less than 2 arguments', function() {
+ //@ts-expect-error
+ assert.throws(differenceInHours.bind(null), TypeError)
+ //@ts-expect-error
+ assert.throws(differenceInHours.bind(null, 1), TypeError)
+ })
+})
diff --git a/date-fns/src/differenceInISOWeekYears/benchmark.js b/date-fns/src/differenceInISOWeekYears/benchmark.js
new file mode 100644
index 0000000..bd3804e
--- /dev/null
+++ b/date-fns/src/differenceInISOWeekYears/benchmark.js
@@ -0,0 +1,16 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import differenceInISOWeekYears from '.'
+
+suite('differenceInISOWeekYears', function () {
+ benchmark('date-fns', function () {
+ return differenceInISOWeekYears(this.dateA, this.dateB)
+ })
+}, {
+ setup: function () {
+ this.dateA = new Date()
+ this.dateB = new Date(this.dateA.getTime() + 604800000)
+ }
+})
diff --git a/date-fns/src/differenceInISOWeekYears/index.d.ts b/date-fns/src/differenceInISOWeekYears/index.d.ts
new file mode 100644
index 0000000..ce7cb57
--- /dev/null
+++ b/date-fns/src/differenceInISOWeekYears/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { differenceInISOWeekYears } from 'date-fns'
+export default differenceInISOWeekYears
diff --git a/date-fns/src/differenceInISOWeekYears/index.js.flow b/date-fns/src/differenceInISOWeekYears/index.js.flow
new file mode 100644
index 0000000..c799819
--- /dev/null
+++ b/date-fns/src/differenceInISOWeekYears/index.js.flow
@@ -0,0 +1,55 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (
+ dateLeft: Date | number,
+ dateRight: Date | number
+) => number
diff --git a/date-fns/src/differenceInISOWeekYears/index.ts b/date-fns/src/differenceInISOWeekYears/index.ts
new file mode 100644
index 0000000..75f268c
--- /dev/null
+++ b/date-fns/src/differenceInISOWeekYears/index.ts
@@ -0,0 +1,63 @@
+import toDate from '../toDate/index'
+import differenceInCalendarISOWeekYears from '../differenceInCalendarISOWeekYears/index'
+import compareAsc from '../compareAsc/index'
+import subISOWeekYears from '../subISOWeekYears/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name differenceInISOWeekYears
+ * @category ISO Week-Numbering Year Helpers
+ * @summary Get the number of full ISO week-numbering years between the given dates.
+ *
+ * @description
+ * Get the number of full ISO week-numbering years between the given dates.
+ *
+ * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * - The function was renamed from `differenceInISOYears` to `differenceInISOWeekYears`.
+ * "ISO week year" is short for [ISO week-numbering year](https://en.wikipedia.org/wiki/ISO_week_date).
+ * This change makes the name consistent with
+ * locale-dependent week-numbering year helpers, e.g., `addWeekYears`.
+ *
+ * @param {Date|Number} dateLeft - the later date
+ * @param {Date|Number} dateRight - the earlier date
+ * @returns {Number} the number of full ISO week-numbering years
+ * @throws {TypeError} 2 arguments required
+ *
+ * @example
+ * // How many full ISO week-numbering years are between 1 January 2010 and 1 January 2012?
+ * var result = differenceInISOWeekYears(
+ * new Date(2012, 0, 1),
+ * new Date(2010, 0, 1)
+ * )
+ * //=> 1
+ */
+export default function differenceInISOWeekYears(
+ dirtyDateLeft: Date | number,
+ dirtyDateRight: Date | number
+): number {
+ requiredArgs(2, arguments)
+
+ let dateLeft = toDate(dirtyDateLeft)
+ const dateRight = toDate(dirtyDateRight)
+
+ const sign = compareAsc(dateLeft, dateRight)
+ const difference = Math.abs(
+ differenceInCalendarISOWeekYears(dateLeft, dateRight)
+ )
+ dateLeft = subISOWeekYears(dateLeft, sign * difference)
+
+ // Math.abs(diff in full ISO years - diff in calendar ISO years) === 1
+ // if last calendar ISO year is not full
+ // If so, result must be decreased by 1 in absolute value
+ const isLastISOWeekYearNotFull = Number(
+ compareAsc(dateLeft, dateRight) === -sign
+ )
+ const result = sign * (difference - isLastISOWeekYearNotFull)
+ // Prevent negative zero
+ return result === 0 ? 0 : result
+}
diff --git a/date-fns/src/differenceInISOWeekYears/test.ts b/date-fns/src/differenceInISOWeekYears/test.ts
new file mode 100644
index 0000000..f4192ee
--- /dev/null
+++ b/date-fns/src/differenceInISOWeekYears/test.ts
@@ -0,0 +1,115 @@
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import differenceInISOWeekYears from '.'
+
+describe('differenceInISOWeekYears', function () {
+ it('returns the number of full ISO week-numbering years between the given dates', function () {
+ const result = differenceInISOWeekYears(
+ new Date(2012, 6 /* Jul */, 2, 18, 0),
+ new Date(2011, 6 /* Jul */, 2, 6, 0)
+ )
+ assert(result === 1)
+ })
+
+ it('returns a negative number if the time value of the first date is smaller', function () {
+ const result = differenceInISOWeekYears(
+ new Date(2011, 6 /* Jul */, 2, 6, 0),
+ new Date(2012, 6 /* Jul */, 2, 18, 0)
+ )
+ assert(result === -1)
+ })
+
+ it('accepts timestamps', function () {
+ const result = differenceInISOWeekYears(
+ new Date(2014, 6 /* Jul */, 2).getTime(),
+ new Date(2010, 6 /* Jul */, 2).getTime()
+ )
+ assert(result === 4)
+ })
+
+ it('handles dates before 100 AD', function () {
+ const firstDate = new Date(0)
+ firstDate.setFullYear(14, 0 /* Jan */, 1)
+ firstDate.setHours(0, 0, 0, 0)
+ const secondDate = new Date(0)
+ secondDate.setFullYear(0, 0 /* Jan */, 1)
+ secondDate.setHours(0, 0, 0, 0)
+ const result = differenceInISOWeekYears(firstDate, secondDate)
+ assert(result === 14)
+ })
+
+ describe('edge cases', function () {
+ it('the difference is less than an ISO year, but the given dates are in different calendar years', function () {
+ const result = differenceInISOWeekYears(
+ new Date(2012, 0 /* Jan */, 2),
+ new Date(2012, 0 /* Jan */, 1)
+ )
+ assert(result === 0)
+ })
+
+ it('the same for the swapped dates', function () {
+ const result = differenceInISOWeekYears(
+ new Date(2012, 0 /* Jan */, 1),
+ new Date(2012, 0 /* Jan */, 2)
+ )
+ assert(result === 0)
+ })
+
+ it('the ISO weeks and weekdays of the given dates are the same', function () {
+ const result = differenceInISOWeekYears(
+ new Date(2013, 11 /* Dec */, 30),
+ new Date(2012, 0 /* Jan */, 2)
+ )
+ assert(result === 2)
+ })
+
+ it('the given dates are the same', function () {
+ const result = differenceInISOWeekYears(
+ new Date(2014, 8 /* Sep */, 5, 0, 0),
+ new Date(2014, 8 /* Sep */, 5, 0, 0)
+ )
+ assert(result === 0)
+ })
+
+ it('does not return -0 when the given dates are the same', () => {
+ function isNegativeZero(x: number): boolean {
+ return x === 0 && 1 / x < 0
+ }
+
+ const result = differenceInISOWeekYears(
+ new Date(2014, 8 /* Sep */, 5, 0, 0),
+ new Date(2014, 8 /* Sep */, 5, 0, 0)
+ )
+
+ const resultIsNegative = isNegativeZero(result)
+ assert(resultIsNegative === false)
+ })
+ })
+
+ it('returns NaN if the first date is `Invalid Date`', function () {
+ const result = differenceInISOWeekYears(
+ new Date(NaN),
+ new Date(2017, 0 /* Jan */, 1)
+ )
+ assert(isNaN(result))
+ })
+
+ it('returns NaN if the second date is `Invalid Date`', function () {
+ const result = differenceInISOWeekYears(
+ new Date(2017, 0 /* Jan */, 1),
+ new Date(NaN)
+ )
+ assert(isNaN(result))
+ })
+
+ it('returns NaN if the both dates are `Invalid Date`', function () {
+ const result = differenceInISOWeekYears(new Date(NaN), new Date(NaN))
+ assert(isNaN(result))
+ })
+
+ it('throws TypeError exception if passed less than 2 arguments', function () {
+ assert.throws(differenceInISOWeekYears.bind(null), TypeError)
+ assert.throws(differenceInISOWeekYears.bind(null, 1), TypeError)
+ })
+})
diff --git a/date-fns/src/differenceInMilliseconds/benchmark.js b/date-fns/src/differenceInMilliseconds/benchmark.js
new file mode 100644
index 0000000..ab4d05a
--- /dev/null
+++ b/date-fns/src/differenceInMilliseconds/benchmark.js
@@ -0,0 +1,23 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import differenceInMilliseconds from '.'
+import moment from 'moment'
+
+suite('differenceInMilliseconds', function () {
+ benchmark('date-fns', function () {
+ return differenceInMilliseconds(this.dateA, this.dateB)
+ })
+
+ benchmark('Moment.js', function () {
+ return this.momentA.diff(this.momentB)
+ })
+}, {
+ setup: function () {
+ this.dateA = new Date()
+ this.momentA = moment()
+ this.dateB = new Date(this.dateA.getTime() + 604800000)
+ this.momentB = this.momentA.clone().add(7, 'days')
+ }
+})
diff --git a/date-fns/src/differenceInMilliseconds/index.d.ts b/date-fns/src/differenceInMilliseconds/index.d.ts
new file mode 100644
index 0000000..c72a3ab
--- /dev/null
+++ b/date-fns/src/differenceInMilliseconds/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { differenceInMilliseconds } from 'date-fns'
+export default differenceInMilliseconds
diff --git a/date-fns/src/differenceInMilliseconds/index.js.flow b/date-fns/src/differenceInMilliseconds/index.js.flow
new file mode 100644
index 0000000..c799819
--- /dev/null
+++ b/date-fns/src/differenceInMilliseconds/index.js.flow
@@ -0,0 +1,55 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (
+ dateLeft: Date | number,
+ dateRight: Date | number
+) => number
diff --git a/date-fns/src/differenceInMilliseconds/index.ts b/date-fns/src/differenceInMilliseconds/index.ts
new file mode 100644
index 0000000..a0fc552
--- /dev/null
+++ b/date-fns/src/differenceInMilliseconds/index.ts
@@ -0,0 +1,39 @@
+import toDate from '../toDate/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name differenceInMilliseconds
+ * @category Millisecond Helpers
+ * @summary Get the number of milliseconds between the given dates.
+ *
+ * @description
+ * Get the number of milliseconds between the given dates.
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} dateLeft - the later date
+ * @param {Date|Number} dateRight - the earlier date
+ * @returns {Number} the number of milliseconds
+ * @throws {TypeError} 2 arguments required
+ *
+ * @example
+ * // How many milliseconds are between
+ * // 2 July 2014 12:30:20.600 and 2 July 2014 12:30:21.700?
+ * const result = differenceInMilliseconds(
+ * new Date(2014, 6, 2, 12, 30, 21, 700),
+ * new Date(2014, 6, 2, 12, 30, 20, 600)
+ * )
+ * //=> 1100
+ */
+export default function differenceInMilliseconds(
+ dirtyDateLeft: Date | number,
+ dirtyDateRight: Date | number
+): number {
+ requiredArgs(2, arguments)
+
+ const dateLeft = toDate(dirtyDateLeft)
+ const dateRight = toDate(dirtyDateRight)
+ return dateLeft.getTime() - dateRight.getTime()
+}
diff --git a/date-fns/src/differenceInMilliseconds/test.ts b/date-fns/src/differenceInMilliseconds/test.ts
new file mode 100644
index 0000000..366c03b
--- /dev/null
+++ b/date-fns/src/differenceInMilliseconds/test.ts
@@ -0,0 +1,70 @@
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import differenceInMilliseconds from '.'
+
+describe('differenceInMilliseconds', function () {
+ it('returns the number of milliseconds between the given dates', function () {
+ const result = differenceInMilliseconds(
+ new Date(2014, 6 /* Jul */, 2, 12, 30, 20, 700),
+ new Date(2014, 6 /* Jul */, 2, 12, 30, 20, 600)
+ )
+ assert(result === 100)
+ })
+
+ it('returns a negative number if the time value of the first date is smaller', function () {
+ const result = differenceInMilliseconds(
+ new Date(2014, 6 /* Jul */, 2, 12, 30, 20, 600),
+ new Date(2014, 6 /* Jul */, 2, 12, 30, 20, 700)
+ )
+ assert(result === -100)
+ })
+
+ it('accepts timestamps', function () {
+ const result = differenceInMilliseconds(
+ new Date(2014, 8 /* Sep */, 5, 18, 30, 45, 500).getTime(),
+ new Date(2014, 8 /* Sep */, 5, 18, 30, 45, 500).getTime()
+ )
+ assert(result === 0)
+ })
+
+ it('does not return -0 when the given dates are the same', () => {
+ function isNegativeZero(x: number): boolean {
+ return x === 0 && 1 / x < 0
+ }
+
+ const result = differenceInMilliseconds(
+ new Date(2014, 8 /* Sep */, 5, 0, 0),
+ new Date(2014, 8 /* Sep */, 5, 0, 0)
+ )
+
+ const resultIsNegative = isNegativeZero(result)
+ assert(resultIsNegative === false)
+ })
+
+ it('returns NaN if the first date is `Invalid Date`', function () {
+ const result = differenceInMilliseconds(
+ new Date(NaN),
+ new Date(2017, 0 /* Jan */, 1)
+ )
+ assert(isNaN(result))
+ })
+
+ it('returns NaN if the second date is `Invalid Date`', function () {
+ const result = differenceInMilliseconds(
+ new Date(2017, 0 /* Jan */, 1),
+ new Date(NaN)
+ )
+ assert(isNaN(result))
+ })
+
+ it('returns NaN if the both dates are `Invalid Date`', function () {
+ const result = differenceInMilliseconds(new Date(NaN), new Date(NaN))
+ assert(isNaN(result))
+ })
+
+ it('throws TypeError exception if passed less than 2 arguments', function () {
+ assert.throws(differenceInMilliseconds.bind(null), TypeError)
+ assert.throws(differenceInMilliseconds.bind(null, 1), TypeError)
+ })
+})
diff --git a/date-fns/src/differenceInMinutes/benchmark.js b/date-fns/src/differenceInMinutes/benchmark.js
new file mode 100644
index 0000000..8c77a49
--- /dev/null
+++ b/date-fns/src/differenceInMinutes/benchmark.js
@@ -0,0 +1,23 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import differenceInMinutes from '.'
+import moment from 'moment'
+
+suite('differenceInMinutes', function () {
+ benchmark('date-fns', function () {
+ return differenceInMinutes(this.dateA, this.dateB)
+ })
+
+ benchmark('Moment.js', function () {
+ return this.momentA.diff(this.momentB, 'minute')
+ })
+}, {
+ setup: function () {
+ this.dateA = new Date()
+ this.momentA = moment()
+ this.dateB = new Date(this.dateA.getTime() + 604800000)
+ this.momentB = this.momentA.clone().add(7, 'days')
+ }
+})
diff --git a/date-fns/src/differenceInMinutes/index.d.ts b/date-fns/src/differenceInMinutes/index.d.ts
new file mode 100644
index 0000000..28348fc
--- /dev/null
+++ b/date-fns/src/differenceInMinutes/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { differenceInMinutes } from 'date-fns'
+export default differenceInMinutes
diff --git a/date-fns/src/differenceInMinutes/index.js b/date-fns/src/differenceInMinutes/index.js
new file mode 100644
index 0000000..c1b103c
--- /dev/null
+++ b/date-fns/src/differenceInMinutes/index.js
@@ -0,0 +1,46 @@
+import differenceInMilliseconds from '../differenceInMilliseconds/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+var MILLISECONDS_IN_MINUTE = 60000
+
+/**
+ * @name differenceInMinutes
+ * @category Minute Helpers
+ * @summary Get the number of minutes between the given dates.
+ *
+ * @description
+ * Get the signed number of full (rounded towards 0) minutes between the given dates.
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} dateLeft - the later date
+ * @param {Date|Number} dateRight - the earlier date
+ * @returns {Number} the number of minutes
+ * @throws {TypeError} 2 arguments required
+ *
+ * @example
+ * // How many minutes are between 2 July 2014 12:07:59 and 2 July 2014 12:20:00?
+ * var result = differenceInMinutes(
+ * new Date(2014, 6, 2, 12, 20, 0),
+ * new Date(2014, 6, 2, 12, 7, 59)
+ * )
+ * //=> 12
+ *
+ * @example
+ * // How many minutes are from 10:01:59 to 10:00:00
+ * var result = differenceInMinutes(
+ * new Date(2000, 0, 1, 10, 0, 0),
+ * new Date(2000, 0, 1, 10, 1, 59)
+ * )
+ * //=> -1
+ */
+export default function differenceInMinutes(dirtyDateLeft, dirtyDateRight) {
+ requiredArgs(2, arguments)
+
+ var diff =
+ differenceInMilliseconds(dirtyDateLeft, dirtyDateRight) /
+ MILLISECONDS_IN_MINUTE
+ return diff > 0 ? Math.floor(diff) : Math.ceil(diff)
+}
diff --git a/date-fns/src/differenceInMinutes/index.js.flow b/date-fns/src/differenceInMinutes/index.js.flow
new file mode 100644
index 0000000..c799819
--- /dev/null
+++ b/date-fns/src/differenceInMinutes/index.js.flow
@@ -0,0 +1,55 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (
+ dateLeft: Date | number,
+ dateRight: Date | number
+) => number
diff --git a/date-fns/src/differenceInMinutes/test.js b/date-fns/src/differenceInMinutes/test.js
new file mode 100644
index 0000000..ff6a6c3
--- /dev/null
+++ b/date-fns/src/differenceInMinutes/test.js
@@ -0,0 +1,105 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import differenceInMinutes from '.'
+
+describe('differenceInMinutes', function() {
+ it('returns the number of minutes between the given dates', function() {
+ var result = differenceInMinutes(
+ new Date(2014, 6 /* Jul */, 2, 12, 20),
+ new Date(2014, 6 /* Jul */, 2, 12, 6)
+ )
+ assert(result === 14)
+ })
+
+ it('returns a negative number if the time value of the first date is smaller', function() {
+ var result = differenceInMinutes(
+ new Date(2014, 6 /* Jul */, 2, 12, 6),
+ new Date(2014, 6 /* Jul */, 2, 12, 20)
+ )
+ assert(result === -14)
+ })
+
+ it('accepts timestamps', function() {
+ var result = differenceInMinutes(
+ new Date(2014, 8 /* Sep */, 5, 18, 45).getTime(),
+ new Date(2014, 8 /* Sep */, 5, 18, 15).getTime()
+ )
+ assert(result === 30)
+ })
+
+ describe('edge cases', function() {
+ it('the difference is less than a minute, but the given dates are in different calendar minutes', function() {
+ var result = differenceInMinutes(
+ new Date(2014, 8 /* Sep */, 5, 12, 12),
+ new Date(2014, 8 /* Sep */, 5, 12, 11, 59)
+ )
+ assert(result === 0)
+ })
+
+ it('the same for the swapped dates', function() {
+ var result = differenceInMinutes(
+ new Date(2014, 8 /* Sep */, 5, 12, 11, 59),
+ new Date(2014, 8 /* Sep */, 5, 12, 12)
+ )
+ assert(result === 0)
+ })
+
+ it('the difference is an integral number of minutes', function() {
+ var result = differenceInMinutes(
+ new Date(2014, 8 /* Sep */, 5, 12, 25),
+ new Date(2014, 8 /* Sep */, 5, 12, 15)
+ )
+ assert(result === 10)
+ })
+
+ it('the given dates are the same', function() {
+ var result = differenceInMinutes(
+ new Date(2014, 8 /* Sep */, 5, 0, 0),
+ new Date(2014, 8 /* Sep */, 5, 0, 0)
+ )
+ assert(result === 0)
+ })
+
+ it('does not return -0 when the given dates are the same', () => {
+ function isNegativeZero(x) {
+ return x === 0 && 1 / x < 0
+ }
+
+ var result = differenceInMinutes(
+ new Date(2014, 8 /* Sep */, 5, 0, 0),
+ new Date(2014, 8 /* Sep */, 5, 0, 0)
+ )
+
+ var resultIsNegative = isNegativeZero(result)
+ assert(resultIsNegative === false)
+ })
+ })
+
+ it('returns NaN if the first date is `Invalid Date`', function() {
+ var result = differenceInMinutes(
+ new Date(NaN),
+ new Date(2017, 0 /* Jan */, 1)
+ )
+ assert(isNaN(result))
+ })
+
+ it('returns NaN if the second date is `Invalid Date`', function() {
+ var result = differenceInMinutes(
+ new Date(2017, 0 /* Jan */, 1),
+ new Date(NaN)
+ )
+ assert(isNaN(result))
+ })
+
+ it('returns NaN if the both dates are `Invalid Date`', function() {
+ var result = differenceInMinutes(new Date(NaN), new Date(NaN))
+ assert(isNaN(result))
+ })
+
+ it('throws TypeError exception if passed less than 2 arguments', function() {
+ assert.throws(differenceInMinutes.bind(null), TypeError)
+ assert.throws(differenceInMinutes.bind(null, 1), TypeError)
+ })
+})
diff --git a/date-fns/src/differenceInMonths/benchmark.js b/date-fns/src/differenceInMonths/benchmark.js
new file mode 100644
index 0000000..4c2f1c7
--- /dev/null
+++ b/date-fns/src/differenceInMonths/benchmark.js
@@ -0,0 +1,23 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import differenceInMonths from '.'
+import moment from 'moment'
+
+suite('differenceInMonths', function () {
+ benchmark('date-fns', function () {
+ return differenceInMonths(this.dateA, this.dateB)
+ })
+
+ benchmark('Moment.js', function () {
+ return this.momentA.diff(this.momentB, 'month')
+ })
+}, {
+ setup: function () {
+ this.dateA = new Date()
+ this.momentA = moment()
+ this.dateB = new Date(this.dateA.getTime() + 604800000)
+ this.momentB = this.momentA.clone().add(7, 'days')
+ }
+})
diff --git a/date-fns/src/differenceInMonths/index.d.ts b/date-fns/src/differenceInMonths/index.d.ts
new file mode 100644
index 0000000..8fbe977
--- /dev/null
+++ b/date-fns/src/differenceInMonths/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { differenceInMonths } from 'date-fns'
+export default differenceInMonths
diff --git a/date-fns/src/differenceInMonths/index.js.flow b/date-fns/src/differenceInMonths/index.js.flow
new file mode 100644
index 0000000..c799819
--- /dev/null
+++ b/date-fns/src/differenceInMonths/index.js.flow
@@ -0,0 +1,55 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (
+ dateLeft: Date | number,
+ dateRight: Date | number
+) => number
diff --git a/date-fns/src/differenceInMonths/index.ts b/date-fns/src/differenceInMonths/index.ts
new file mode 100644
index 0000000..c8a5c14
--- /dev/null
+++ b/date-fns/src/differenceInMonths/index.ts
@@ -0,0 +1,72 @@
+import toDate from '../toDate/index'
+import differenceInCalendarMonths from '../differenceInCalendarMonths/index'
+import compareAsc from '../compareAsc/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+import isLastDayOfMonth from '../isLastDayOfMonth/index'
+
+/**
+ * @name differenceInMonths
+ * @category Month Helpers
+ * @summary Get the number of full months between the given dates.
+ *
+ * @description
+ * Get the number of full months between the given dates.
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} dateLeft - the later date
+ * @param {Date|Number} dateRight - the earlier date
+ * @returns {Number} the number of full months
+ * @throws {TypeError} 2 arguments required
+ *
+ * @example
+ * // How many full months are between 31 January 2014 and 1 September 2014?
+ * var result = differenceInMonths(new Date(2014, 8, 1), new Date(2014, 0, 31))
+ * //=> 7
+ */
+export default function differenceInMonths(
+ dirtyDateLeft: Date | number,
+ dirtyDateRight: Date | number
+): number {
+ requiredArgs(2, arguments)
+
+ const dateLeft = toDate(dirtyDateLeft)
+ const dateRight = toDate(dirtyDateRight)
+
+ const sign = compareAsc(dateLeft, dateRight)
+ const difference = Math.abs(differenceInCalendarMonths(dateLeft, dateRight))
+ let result
+
+ // Check for the difference of less than month
+ if (difference < 1) {
+ result = 0
+ } else {
+ if (dateLeft.getMonth() === 1 && dateLeft.getDate() > 27) {
+ // This will check if the date is end of Feb and assign a higher end of month date
+ // to compare it with Jan
+ dateLeft.setDate(30)
+ }
+
+ dateLeft.setMonth(dateLeft.getMonth() - sign * difference)
+
+ // Math.abs(diff in full months - diff in calendar months) === 1 if last calendar month is not full
+ // If so, result must be decreased by 1 in absolute value
+ let isLastMonthNotFull = compareAsc(dateLeft, dateRight) === -sign
+
+ // Check for cases of one full calendar month
+ if (
+ isLastDayOfMonth(toDate(dirtyDateLeft)) &&
+ difference === 1 &&
+ compareAsc(dirtyDateLeft, dateRight) === 1
+ ) {
+ isLastMonthNotFull = false
+ }
+
+ result = sign * (difference - Number(isLastMonthNotFull))
+ }
+
+ // Prevent negative zero
+ return result === 0 ? 0 : result
+}
diff --git a/date-fns/src/differenceInMonths/test.ts b/date-fns/src/differenceInMonths/test.ts
new file mode 100644
index 0000000..edebb59
--- /dev/null
+++ b/date-fns/src/differenceInMonths/test.ts
@@ -0,0 +1,188 @@
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import differenceInMonths from '.'
+
+describe('differenceInMonths', function () {
+ it('returns the number of full months between the given dates', function () {
+ const result = differenceInMonths(
+ new Date(2012, 6 /* Jul */, 2, 18, 0),
+ new Date(2011, 6 /* Jul */, 2, 6, 0)
+ )
+ assert(result === 12)
+ })
+
+ it('returns a negative number if the time value of the first date is smaller', function () {
+ const result = differenceInMonths(
+ new Date(2011, 6 /* Jul */, 2, 6, 0),
+ new Date(2012, 6 /* Jul */, 2, 18, 0)
+ )
+ assert(result === -12)
+ })
+
+ it('accepts timestamps', function () {
+ const result = differenceInMonths(
+ new Date(2014, 7 /* Aug */, 2).getTime(),
+ new Date(2010, 6 /* Jul */, 2).getTime()
+ )
+ assert(result === 49)
+ })
+
+ describe('edge cases', function () {
+ it('it returns diff of 1 month between Feb 28 2021 and Jan 30 2021', function () {
+ const result = differenceInMonths(
+ new Date(2021, 1 /* Feb */, 28),
+ new Date(2021, 0 /* Jan */, 30)
+ )
+ assert(result === 1)
+ })
+
+ it('it returns diff of 1 month between Feb 28 2021 and Jan 31 2021', function () {
+ const result = differenceInMonths(
+ new Date(2021, 1 /* Feb */, 28),
+ new Date(2021, 0 /* Jan */, 31)
+ )
+ assert(result === 1)
+ })
+
+ it('it returns diff of 1 month between Nov, 30 2021 and Oct, 31 2021', function () {
+ const result = differenceInMonths(
+ new Date(2021, 10 /* Nov */, 30),
+ new Date(2021, 9 /* Oct */, 31)
+ )
+ assert(result === 1)
+ })
+
+ it('it returns diff of 1 month between Oct, 31 2021 and Sep, 30 2021', function () {
+ const result = differenceInMonths(
+ new Date(2021, 9 /* Oct */, 31),
+ new Date(2021, 8 /* Sep */, 30)
+ )
+ assert(result === 1)
+ })
+
+ it('it returns diff of 6 month between Oct, 31 2021 and Apr, 30 2021', function () {
+ const result = differenceInMonths(
+ new Date(2021, 9 /* Oct */, 31),
+ new Date(2021, 3 /* Apr */, 30)
+ )
+ assert(result === 6)
+ })
+
+ it('it returns diff of -1 month between Sep, 30 2021 and Oct, 31 2021', function () {
+ const result = differenceInMonths(
+ new Date(2021, 8 /* Sep */, 30),
+ new Date(2021, 9 /* Oct */, 31)
+ )
+ assert(result === -1)
+ })
+
+ it('the difference is less than a month, but the given dates are in different calendar months', function () {
+ const result = differenceInMonths(
+ new Date(2014, 7 /* Aug */, 1),
+ new Date(2014, 6 /* Jul */, 31)
+ )
+ assert(result === 0)
+ })
+
+ it('the same for the swapped dates', function () {
+ const result = differenceInMonths(
+ new Date(2014, 6 /* Jul */, 31),
+ new Date(2014, 7 /* Aug */, 1)
+ )
+ assert(result === 0)
+ })
+
+ it('the days of months of the given dates are the same', function () {
+ const result = differenceInMonths(
+ new Date(2014, 8 /* Sep */, 6),
+ new Date(2014, 7 /* Aug */, 6)
+ )
+ assert(result === 1)
+ })
+
+ it('the given dates are the same', function () {
+ const result = differenceInMonths(
+ new Date(2014, 8 /* Sep */, 5, 0, 0),
+ new Date(2014, 8 /* Sep */, 5, 0, 0)
+ )
+ assert(result === 0)
+ })
+
+ it('does not return -0 when the given dates are the same', () => {
+ function isNegativeZero(x: number): boolean {
+ return x === 0 && 1 / x < 0
+ }
+
+ const result = differenceInMonths(
+ new Date(2014, 8 /* Sep */, 5, 0, 0),
+ new Date(2014, 8 /* Sep */, 5, 0, 0)
+ )
+
+ const resultIsNegative = isNegativeZero(result)
+ assert(resultIsNegative === false)
+ })
+ })
+
+ it('returns NaN if the first date is `Invalid Date`', function () {
+ const result = differenceInMonths(
+ new Date(NaN),
+ new Date(2017, 0 /* Jan */, 1)
+ )
+ assert(isNaN(result))
+ })
+
+ it('returns NaN if the second date is `Invalid Date`', function () {
+ const result = differenceInMonths(
+ new Date(2017, 0 /* Jan */, 1),
+ new Date(NaN)
+ )
+ assert(isNaN(result))
+ })
+
+ it('returns NaN if the both dates are `Invalid Date`', function () {
+ const result = differenceInMonths(new Date(NaN), new Date(NaN))
+ assert(isNaN(result))
+ })
+
+ it('throws TypeError exception if passed less than 2 arguments', function () {
+ assert.throws(differenceInMonths.bind(null), TypeError)
+ assert.throws(differenceInMonths.bind(null, 1), TypeError)
+ })
+
+ describe('edge cases', function () {
+ it('returns the number of full months between the given dates - end of Feb', function () {
+ assert(
+ differenceInMonths(
+ new Date(2012, 1 /* Feb */, 29, 9, 0, 0),
+ new Date(2012, 1 /* Feb */, 29, 10, 0, 0)
+ ) === 0
+ )
+ assert(
+ differenceInMonths(
+ new Date(2012, 1 /* Feb */, 28, 9, 0, 0),
+ new Date(2012, 1 /* Feb */, 29, 10, 0, 0)
+ ) === 0
+ )
+ assert(
+ differenceInMonths(
+ new Date(2012, 1 /* Feb */, 27, 9, 0, 0),
+ new Date(2012, 1 /* Feb */, 27, 10, 0, 0)
+ ) === 0
+ )
+ assert(
+ differenceInMonths(
+ new Date(2012, 1 /* Feb */, 28, 9, 0, 0),
+ new Date(2012, 1 /* Feb */, 28, 10, 0, 0)
+ ) === 0
+ )
+ })
+
+ assert(
+ differenceInMonths(
+ new Date(2021, 1 /* Feb */, 28, 7, 23, 7),
+ new Date(2021, 1 /* Feb */, 28, 7, 38, 18)
+ ) === 0
+ )
+ })
+})
diff --git a/date-fns/src/differenceInQuarters/benchmark.js b/date-fns/src/differenceInQuarters/benchmark.js
new file mode 100644
index 0000000..5210147
--- /dev/null
+++ b/date-fns/src/differenceInQuarters/benchmark.js
@@ -0,0 +1,23 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import differenceInQuarters from '.'
+import moment from 'moment'
+
+suite('differenceInQuarters', function () {
+ benchmark('date-fns', function () {
+ return differenceInQuarters(this.dateA, this.dateB)
+ })
+
+ benchmark('Moment.js', function () {
+ return this.momentA.diff(this.momentB, 'quarter')
+ })
+}, {
+ setup: function () {
+ this.dateA = new Date()
+ this.momentA = moment()
+ this.dateB = new Date(this.dateA.getTime() + 604800000)
+ this.momentB = this.momentA.clone().add(7, 'days')
+ }
+})
diff --git a/date-fns/src/differenceInQuarters/index.d.ts b/date-fns/src/differenceInQuarters/index.d.ts
new file mode 100644
index 0000000..9cc693b
--- /dev/null
+++ b/date-fns/src/differenceInQuarters/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { differenceInQuarters } from 'date-fns'
+export default differenceInQuarters
diff --git a/date-fns/src/differenceInQuarters/index.js.flow b/date-fns/src/differenceInQuarters/index.js.flow
new file mode 100644
index 0000000..c799819
--- /dev/null
+++ b/date-fns/src/differenceInQuarters/index.js.flow
@@ -0,0 +1,55 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (
+ dateLeft: Date | number,
+ dateRight: Date | number
+) => number
diff --git a/date-fns/src/differenceInQuarters/index.ts b/date-fns/src/differenceInQuarters/index.ts
new file mode 100644
index 0000000..b53a934
--- /dev/null
+++ b/date-fns/src/differenceInQuarters/index.ts
@@ -0,0 +1,34 @@
+import differenceInMonths from '../differenceInMonths/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name differenceInQuarters
+ * @category Quarter Helpers
+ * @summary Get the number of full quarters between the given dates.
+ *
+ * @description
+ * Get the number of full quarters between the given dates.
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} dateLeft - the later date
+ * @param {Date|Number} dateRight - the earlier date
+ * @returns {Number} the number of full quarters
+ * @throws {TypeError} 2 arguments required
+ *
+ * @example
+ * // How many full quarters are between 31 December 2013 and 2 July 2014?
+ * var result = differenceInQuarters(new Date(2014, 6, 2), new Date(2013, 11, 31))
+ * //=> 2
+ */
+export default function differenceInQuarters(
+ dirtyDateLeft: Date | number,
+ dirtyDateRight: Date | number
+): number {
+ requiredArgs(2, arguments)
+
+ const diff = differenceInMonths(dirtyDateLeft, dirtyDateRight) / 3
+ return diff > 0 ? Math.floor(diff) : Math.ceil(diff)
+}
diff --git a/date-fns/src/differenceInQuarters/test.ts b/date-fns/src/differenceInQuarters/test.ts
new file mode 100644
index 0000000..2cdb8d0
--- /dev/null
+++ b/date-fns/src/differenceInQuarters/test.ts
@@ -0,0 +1,104 @@
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import differenceInQuarters from '.'
+
+describe('differenceInQuarters', function () {
+ it('returns the number of full quarters between the given dates', function () {
+ const result = differenceInQuarters(
+ new Date(2012, 6 /* Jul */, 2, 18, 0),
+ new Date(2011, 6 /* Jul */, 2, 6, 0)
+ )
+ assert(result === 4)
+ })
+
+ it('returns a negative number if the time value of the first date is smaller', function () {
+ const result = differenceInQuarters(
+ new Date(2011, 6 /* Jul */, 2, 6, 0),
+ new Date(2012, 6 /* Jul */, 2, 18, 0)
+ )
+ assert(result === -4)
+ })
+
+ it('accepts timestamps', function () {
+ const result = differenceInQuarters(
+ new Date(2014, 9 /* Oct */, 2).getTime(),
+ new Date(2010, 6 /* Jul */, 2).getTime()
+ )
+ assert(result === 17)
+ })
+
+ describe('edge cases', function () {
+ it('the difference is less than a quarter, but the given dates are in different calendar quarters', function () {
+ const result = differenceInQuarters(
+ new Date(2014, 6 /* Jul */, 1),
+ new Date(2014, 5 /* Jun */, 30)
+ )
+ assert(result === 0)
+ })
+
+ it('the same for the swapped dates', function () {
+ const result = differenceInQuarters(
+ new Date(2014, 5 /* Jun */, 30),
+ new Date(2014, 6 /* Jul */, 1)
+ )
+ assert(result === 0)
+ })
+
+ it('the days of months of the given dates are the same', function () {
+ const result = differenceInQuarters(
+ new Date(2014, 3 /* Apr */, 6),
+ new Date(2014, 0 /* Jan */, 6)
+ )
+ assert(result === 1)
+ })
+
+ it('the given dates are the same', function () {
+ const result = differenceInQuarters(
+ new Date(2014, 8 /* Sep */, 5, 0, 0),
+ new Date(2014, 8 /* Sep */, 5, 0, 0)
+ )
+ assert(result === 0)
+ })
+
+ it('does not return -0 when the given dates are the same', () => {
+ function isNegativeZero(x: number): boolean {
+ return x === 0 && 1 / x < 0
+ }
+
+ const result = differenceInQuarters(
+ new Date(2014, 8 /* Sep */, 5, 0, 0),
+ new Date(2014, 8 /* Sep */, 5, 0, 0)
+ )
+
+ const resultIsNegative = isNegativeZero(result)
+ assert(resultIsNegative === false)
+ })
+ })
+
+ it('returns NaN if the first date is `Invalid Date`', function () {
+ const result = differenceInQuarters(
+ new Date(NaN),
+ new Date(2017, 0 /* Jan */, 1)
+ )
+ assert(isNaN(result))
+ })
+
+ it('returns NaN if the second date is `Invalid Date`', function () {
+ const result = differenceInQuarters(
+ new Date(2017, 0 /* Jan */, 1),
+ new Date(NaN)
+ )
+ assert(isNaN(result))
+ })
+
+ it('returns NaN if the both dates are `Invalid Date`', function () {
+ const result = differenceInQuarters(new Date(NaN), new Date(NaN))
+ assert(isNaN(result))
+ })
+
+ it('throws TypeError exception if passed less than 2 arguments', function () {
+ assert.throws(differenceInQuarters.bind(null), TypeError)
+ assert.throws(differenceInQuarters.bind(null, 1), TypeError)
+ })
+})
diff --git a/date-fns/src/differenceInSeconds/benchmark.js b/date-fns/src/differenceInSeconds/benchmark.js
new file mode 100644
index 0000000..ff52acf
--- /dev/null
+++ b/date-fns/src/differenceInSeconds/benchmark.js
@@ -0,0 +1,23 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import differenceInSeconds from '.'
+import moment from 'moment'
+
+suite('differenceInSeconds', function () {
+ benchmark('date-fns', function () {
+ return differenceInSeconds(this.dateA, this.dateB)
+ })
+
+ benchmark('Moment.js', function () {
+ return this.momentA.diff(this.momentB, 'second')
+ })
+}, {
+ setup: function () {
+ this.dateA = new Date()
+ this.momentA = moment()
+ this.dateB = new Date(this.dateA.getTime() + 604800000)
+ this.momentB = this.momentA.clone().add(7, 'days')
+ }
+})
diff --git a/date-fns/src/differenceInSeconds/index.d.ts b/date-fns/src/differenceInSeconds/index.d.ts
new file mode 100644
index 0000000..e317fe2
--- /dev/null
+++ b/date-fns/src/differenceInSeconds/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { differenceInSeconds } from 'date-fns'
+export default differenceInSeconds
diff --git a/date-fns/src/differenceInSeconds/index.js.flow b/date-fns/src/differenceInSeconds/index.js.flow
new file mode 100644
index 0000000..c799819
--- /dev/null
+++ b/date-fns/src/differenceInSeconds/index.js.flow
@@ -0,0 +1,55 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (
+ dateLeft: Date | number,
+ dateRight: Date | number
+) => number
diff --git a/date-fns/src/differenceInSeconds/index.ts b/date-fns/src/differenceInSeconds/index.ts
new file mode 100644
index 0000000..d76b0e3
--- /dev/null
+++ b/date-fns/src/differenceInSeconds/index.ts
@@ -0,0 +1,38 @@
+import differenceInMilliseconds from '../differenceInMilliseconds/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name differenceInSeconds
+ * @category Second Helpers
+ * @summary Get the number of seconds between the given dates.
+ *
+ * @description
+ * Get the number of seconds between the given dates.
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} dateLeft - the later date
+ * @param {Date|Number} dateRight - the earlier date
+ * @returns {Number} the number of seconds
+ * @throws {TypeError} 2 arguments required
+ *
+ * @example
+ * // How many seconds are between
+ * // 2 July 2014 12:30:07.999 and 2 July 2014 12:30:20.000?
+ * const result = differenceInSeconds(
+ * new Date(2014, 6, 2, 12, 30, 20, 0),
+ * new Date(2014, 6, 2, 12, 30, 7, 999)
+ * )
+ * //=> 12
+ */
+export default function differenceInSeconds(
+ dirtyDateLeft: Date | number,
+ dirtyDateRight: Date | number
+): number {
+ requiredArgs(2, arguments)
+
+ const diff = differenceInMilliseconds(dirtyDateLeft, dirtyDateRight) / 1000
+ return diff > 0 ? Math.floor(diff) : Math.ceil(diff)
+}
diff --git a/date-fns/src/differenceInSeconds/test.ts b/date-fns/src/differenceInSeconds/test.ts
new file mode 100644
index 0000000..8e40a32
--- /dev/null
+++ b/date-fns/src/differenceInSeconds/test.ts
@@ -0,0 +1,104 @@
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import differenceInSeconds from '.'
+
+describe('differenceInSeconds', function () {
+ it('returns the number of seconds between the given dates', function () {
+ const result = differenceInSeconds(
+ new Date(2014, 6 /* Jul */, 2, 12, 30, 20),
+ new Date(2014, 6 /* Jul */, 2, 12, 30, 6)
+ )
+ assert(result === 14)
+ })
+
+ it('returns a negative number if the time value of the first date is smaller', function () {
+ const result = differenceInSeconds(
+ new Date(2014, 6 /* Jul */, 2, 12, 30, 6),
+ new Date(2014, 6 /* Jul */, 2, 12, 30, 20)
+ )
+ assert(result === -14)
+ })
+
+ it('accepts timestamps', function () {
+ const result = differenceInSeconds(
+ new Date(2014, 8 /* Sep */, 5, 18, 30, 45).getTime(),
+ new Date(2014, 8 /* Sep */, 5, 18, 30, 15).getTime()
+ )
+ assert(result === 30)
+ })
+
+ describe('edge cases', function () {
+ it('the difference is less than a second, but the given dates are in different calendar seconds', function () {
+ const result = differenceInSeconds(
+ new Date(2014, 8 /* Sep */, 5, 12, 30, 12),
+ new Date(2014, 8 /* Sep */, 5, 12, 30, 11, 999)
+ )
+ assert(result === 0)
+ })
+
+ it('the same for the swapped dates', function () {
+ const result = differenceInSeconds(
+ new Date(2014, 8 /* Sep */, 5, 12, 30, 11, 999),
+ new Date(2014, 8 /* Sep */, 5, 12, 30, 12)
+ )
+ assert(result === 0)
+ })
+
+ it('the difference is an integral number of seconds', function () {
+ const result = differenceInSeconds(
+ new Date(2014, 8 /* Sep */, 5, 12, 30, 25),
+ new Date(2014, 8 /* Sep */, 5, 12, 30, 15)
+ )
+ assert(result === 10)
+ })
+
+ it('the given dates are the same', function () {
+ const result = differenceInSeconds(
+ new Date(2014, 8 /* Sep */, 5, 0, 0),
+ new Date(2014, 8 /* Sep */, 5, 0, 0)
+ )
+ assert(result === 0)
+ })
+
+ it('does not return -0 when the given dates are the same', () => {
+ function isNegativeZero(x: number): boolean {
+ return x === 0 && 1 / x < 0
+ }
+
+ const result = differenceInSeconds(
+ new Date(2014, 8 /* Sep */, 5, 0, 0),
+ new Date(2014, 8 /* Sep */, 5, 0, 0)
+ )
+
+ const resultIsNegative = isNegativeZero(result)
+ assert(resultIsNegative === false)
+ })
+ })
+
+ it('returns NaN if the first date is `Invalid Date`', function () {
+ const result = differenceInSeconds(
+ new Date(NaN),
+ new Date(2017, 0 /* Jan */, 1)
+ )
+ assert(isNaN(result))
+ })
+
+ it('returns NaN if the second date is `Invalid Date`', function () {
+ const result = differenceInSeconds(
+ new Date(2017, 0 /* Jan */, 1),
+ new Date(NaN)
+ )
+ assert(isNaN(result))
+ })
+
+ it('returns NaN if the both dates are `Invalid Date`', function () {
+ const result = differenceInSeconds(new Date(NaN), new Date(NaN))
+ assert(isNaN(result))
+ })
+
+ it('throws TypeError exception if passed less than 2 arguments', function () {
+ assert.throws(differenceInSeconds.bind(null), TypeError)
+ assert.throws(differenceInSeconds.bind(null, 1), TypeError)
+ })
+})
diff --git a/date-fns/src/differenceInWeeks/benchmark.js b/date-fns/src/differenceInWeeks/benchmark.js
new file mode 100644
index 0000000..c29909c
--- /dev/null
+++ b/date-fns/src/differenceInWeeks/benchmark.js
@@ -0,0 +1,23 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import differenceInWeeks from '.'
+import moment from 'moment'
+
+suite('differenceInWeeks', function () {
+ benchmark('date-fns', function () {
+ return differenceInWeeks(this.dateA, this.dateB)
+ })
+
+ benchmark('Moment.js', function () {
+ return this.momentA.diff(this.momentB, 'week')
+ })
+}, {
+ setup: function () {
+ this.dateA = new Date()
+ this.momentA = moment()
+ this.dateB = new Date(this.dateA.getTime() + 604800000)
+ this.momentB = this.momentA.clone().add(7, 'days')
+ }
+})
diff --git a/date-fns/src/differenceInWeeks/index.d.ts b/date-fns/src/differenceInWeeks/index.d.ts
new file mode 100644
index 0000000..a42614c
--- /dev/null
+++ b/date-fns/src/differenceInWeeks/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { differenceInWeeks } from 'date-fns'
+export default differenceInWeeks
diff --git a/date-fns/src/differenceInWeeks/index.js.flow b/date-fns/src/differenceInWeeks/index.js.flow
new file mode 100644
index 0000000..c799819
--- /dev/null
+++ b/date-fns/src/differenceInWeeks/index.js.flow
@@ -0,0 +1,55 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (
+ dateLeft: Date | number,
+ dateRight: Date | number
+) => number
diff --git a/date-fns/src/differenceInWeeks/index.ts b/date-fns/src/differenceInWeeks/index.ts
new file mode 100644
index 0000000..350da2f
--- /dev/null
+++ b/date-fns/src/differenceInWeeks/index.ts
@@ -0,0 +1,55 @@
+import differenceInDays from '../differenceInDays/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name differenceInWeeks
+ * @category Week Helpers
+ * @summary Get the number of full weeks between the given dates.
+ *
+ * @description
+ * Get the number of full weeks between two dates. Fractional weeks are
+ * truncated towards zero.
+ *
+ * One "full week" is the distance between a local time in one day to the same
+ * local time 7 days earlier or later. A full week can sometimes be less than
+ * or more than 7*24 hours if a daylight savings change happens between two dates.
+ *
+ * To ignore DST and only measure exact 7*24-hour periods, use this instead:
+ * `Math.floor(differenceInHours(dateLeft, dateRight)/(7*24))|0`.
+ *
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} dateLeft - the later date
+ * @param {Date|Number} dateRight - the earlier date
+ * @returns {Number} the number of full weeks
+ * @throws {TypeError} 2 arguments required
+ *
+ * @example
+ * // How many full weeks are between 5 July 2014 and 20 July 2014?
+ * const result = differenceInWeeks(new Date(2014, 6, 20), new Date(2014, 6, 5))
+ * //=> 2
+ *
+ * // How many full weeks are between
+ * // 1 March 2020 0:00 and 6 June 2020 0:00 ?
+ * // Note: because local time is used, the
+ * // result will always be 8 weeks (54 days),
+ * // even if DST starts and the period has
+ * // only 54*24-1 hours.
+ * const result = differenceInWeeks(
+ * new Date(2020, 5, 1),
+ * new Date(2020, 2, 6)
+ * )
+ * //=> 8
+ */
+export default function differenceInWeeks(
+ dirtyDateLeft: Date | number,
+ dirtyDateRight: Date | number
+): number {
+ requiredArgs(2, arguments)
+
+ const diff = differenceInDays(dirtyDateLeft, dirtyDateRight) / 7
+ return diff > 0 ? Math.floor(diff) : Math.ceil(diff)
+}
diff --git a/date-fns/src/differenceInWeeks/test.ts b/date-fns/src/differenceInWeeks/test.ts
new file mode 100644
index 0000000..6e8e05e
--- /dev/null
+++ b/date-fns/src/differenceInWeeks/test.ts
@@ -0,0 +1,104 @@
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import differenceInWeeks from '.'
+
+describe('differenceInWeeks', function () {
+ it('returns the number of full weeks between the given dates', function () {
+ const result = differenceInWeeks(
+ new Date(2014, 6 /* Jul */, 8, 18, 0),
+ new Date(2014, 5 /* Jun */, 29, 6, 0)
+ )
+ assert(result === 1)
+ })
+
+ it('returns a negative number if the time value of the first date is smaller', function () {
+ const result = differenceInWeeks(
+ new Date(2014, 5 /* Jun */, 29, 6, 0),
+ new Date(2014, 6 /* Jul */, 8, 18, 0)
+ )
+ assert(result === -1)
+ })
+
+ it('accepts timestamps', function () {
+ const result = differenceInWeeks(
+ new Date(2014, 6 /* Jul */, 12).getTime(),
+ new Date(2014, 6 /* Jul */, 2).getTime()
+ )
+ assert(result === 1)
+ })
+
+ describe('edge cases', function () {
+ it('the difference is less than a week, but the given dates are in different calendar weeks', function () {
+ const result = differenceInWeeks(
+ new Date(2014, 6 /* Jul */, 6),
+ new Date(2014, 6 /* Jul */, 5)
+ )
+ assert(result === 0)
+ })
+
+ it('the same for the swapped dates', function () {
+ const result = differenceInWeeks(
+ new Date(2014, 6 /* Jul */, 5),
+ new Date(2014, 6 /* Jul */, 6)
+ )
+ assert(result === 0)
+ })
+
+ it('days of weeks of the given dates are the same', function () {
+ const result = differenceInWeeks(
+ new Date(2014, 6 /* Jul */, 9),
+ new Date(2014, 6 /* Jul */, 2)
+ )
+ assert(result === 1)
+ })
+
+ it('the given dates are the same', function () {
+ const result = differenceInWeeks(
+ new Date(2014, 8 /* Sep */, 5, 0, 0),
+ new Date(2014, 8 /* Sep */, 5, 0, 0)
+ )
+ assert(result === 0)
+ })
+
+ it('does not return -0 when the given dates are the same', () => {
+ function isNegativeZero(x: number): boolean {
+ return x === 0 && 1 / x < 0
+ }
+
+ const result = differenceInWeeks(
+ new Date(2014, 8 /* Sep */, 5, 0, 0),
+ new Date(2014, 8 /* Sep */, 5, 0, 0)
+ )
+
+ const resultIsNegative = isNegativeZero(result)
+ assert(resultIsNegative === false)
+ })
+ })
+
+ it('returns NaN if the first date is `Invalid Date`', function () {
+ const result = differenceInWeeks(
+ new Date(NaN),
+ new Date(2017, 0 /* Jan */, 1)
+ )
+ assert(isNaN(result))
+ })
+
+ it('returns NaN if the second date is `Invalid Date`', function () {
+ const result = differenceInWeeks(
+ new Date(2017, 0 /* Jan */, 1),
+ new Date(NaN)
+ )
+ assert(isNaN(result))
+ })
+
+ it('returns NaN if the both dates are `Invalid Date`', function () {
+ const result = differenceInWeeks(new Date(NaN), new Date(NaN))
+ assert(isNaN(result))
+ })
+
+ it('throws TypeError exception if passed less than 2 arguments', function () {
+ assert.throws(differenceInWeeks.bind(null), TypeError)
+ assert.throws(differenceInWeeks.bind(null, 1), TypeError)
+ })
+})
diff --git a/date-fns/src/differenceInYears/benchmark.js b/date-fns/src/differenceInYears/benchmark.js
new file mode 100644
index 0000000..32e905c
--- /dev/null
+++ b/date-fns/src/differenceInYears/benchmark.js
@@ -0,0 +1,23 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import differenceInYears from '.'
+import moment from 'moment'
+
+suite('differenceInYears', function () {
+ benchmark('date-fns', function () {
+ return differenceInYears(this.dateA, this.dateB)
+ })
+
+ benchmark('Moment.js', function () {
+ return this.momentA.diff(this.momentB, 'year')
+ })
+}, {
+ setup: function () {
+ this.dateA = new Date()
+ this.momentA = moment()
+ this.dateB = new Date(this.dateA.getTime() + 604800000)
+ this.momentB = this.momentA.clone().add(7, 'days')
+ }
+})
diff --git a/date-fns/src/differenceInYears/index.d.ts b/date-fns/src/differenceInYears/index.d.ts
new file mode 100644
index 0000000..df839f6
--- /dev/null
+++ b/date-fns/src/differenceInYears/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { differenceInYears } from 'date-fns'
+export default differenceInYears
diff --git a/date-fns/src/differenceInYears/index.js.flow b/date-fns/src/differenceInYears/index.js.flow
new file mode 100644
index 0000000..c799819
--- /dev/null
+++ b/date-fns/src/differenceInYears/index.js.flow
@@ -0,0 +1,55 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (
+ dateLeft: Date | number,
+ dateRight: Date | number
+) => number
diff --git a/date-fns/src/differenceInYears/index.ts b/date-fns/src/differenceInYears/index.ts
new file mode 100644
index 0000000..111df3d
--- /dev/null
+++ b/date-fns/src/differenceInYears/index.ts
@@ -0,0 +1,51 @@
+import toDate from '../toDate/index'
+import differenceInCalendarYears from '../differenceInCalendarYears/index'
+import compareAsc from '../compareAsc/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name differenceInYears
+ * @category Year Helpers
+ * @summary Get the number of full years between the given dates.
+ *
+ * @description
+ * Get the number of full years between the given dates.
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} dateLeft - the later date
+ * @param {Date|Number} dateRight - the earlier date
+ * @returns {Number} the number of full years
+ * @throws {TypeError} 2 arguments required
+ *
+ * @example
+ * // How many full years are between 31 December 2013 and 11 February 2015?
+ * const result = differenceInYears(new Date(2015, 1, 11), new Date(2013, 11, 31))
+ * //=> 1
+ */
+export default function differenceInYears(
+ dirtyDateLeft: Date | number,
+ dirtyDateRight: Date | number
+): number {
+ requiredArgs(2, arguments)
+
+ const dateLeft = toDate(dirtyDateLeft)
+ const dateRight = toDate(dirtyDateRight)
+
+ const sign = compareAsc(dateLeft, dateRight)
+ const difference = Math.abs(differenceInCalendarYears(dateLeft, dateRight))
+
+ // Set both dates to a valid leap year for accurate comparison when dealing
+ // with leap days
+ dateLeft.setFullYear(1584)
+ dateRight.setFullYear(1584)
+
+ // Math.abs(diff in full years - diff in calendar years) === 1 if last calendar year is not full
+ // If so, result must be decreased by 1 in absolute value
+ const isLastYearNotFull = compareAsc(dateLeft, dateRight) === -sign
+ const result = sign * (difference - Number(isLastYearNotFull))
+ // Prevent negative zero
+ return result === 0 ? 0 : result
+}
diff --git a/date-fns/src/differenceInYears/test.ts b/date-fns/src/differenceInYears/test.ts
new file mode 100644
index 0000000..60a3866
--- /dev/null
+++ b/date-fns/src/differenceInYears/test.ts
@@ -0,0 +1,146 @@
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import differenceInYears from '.'
+
+describe('differenceInYears', function () {
+ it('returns the number of full years between the given dates', function () {
+ const result = differenceInYears(
+ new Date(2012, 6 /* Jul */, 2, 18, 0),
+ new Date(2011, 6 /* Jul */, 2, 6, 0)
+ )
+ assert(result === 1)
+ })
+
+ it('returns a negative number if the time value of the first date is smaller', function () {
+ const result = differenceInYears(
+ new Date(2011, 6 /* Jul */, 2, 6, 0),
+ new Date(2012, 6 /* Jul */, 2, 18, 0)
+ )
+ assert(result === -1)
+ })
+
+ it('accepts timestamps', function () {
+ const result = differenceInYears(
+ new Date(2014, 6 /* Jul */, 2).getTime(),
+ new Date(2010, 6 /* Jul */, 2).getTime()
+ )
+ assert(result === 4)
+ })
+
+ describe('leap days', function () {
+ it('supports past dates with right side after leap day', () => {
+ const result = differenceInYears(
+ new Date(2004, 1 /* Feb */, 29, 0, 0),
+ new Date(2002, 2 /* Mar */, 1, 0, 0)
+ )
+ assert(result === 1)
+ })
+
+ it('supports past dates with right side before leap day', () => {
+ const result = differenceInYears(
+ new Date(2004, 1 /* Feb */, 29, 0, 0),
+ new Date(2002, 1 /* Feb */, 28, 0, 0)
+ )
+ assert(result === 2)
+ })
+
+ it('supports future dates', () => {
+ const result = differenceInYears(
+ new Date(2004, 1 /* Feb */, 29, 0, 0),
+ new Date(2006, 2 /* Mar */, 1, 0, 0)
+ )
+ assert(result === -2)
+ })
+
+ it('supports equal dates of same year', () => {
+ const result = differenceInYears(
+ new Date(2004, 1 /* Feb */, 29, 0, 0),
+ new Date(2004, 1 /* Feb */, 29, 0, 0)
+ )
+ assert(result === 0)
+ })
+
+ it('supports equal dates of different years', () => {
+ const result = differenceInYears(
+ new Date(2008, 1 /* Feb */, 29, 0, 0),
+ new Date(2004, 1 /* Feb */, 29, 0, 0)
+ )
+ assert(result === 4)
+ })
+ })
+
+ describe('edge cases', function () {
+ it('the difference is less than a year, but the given dates are in different calendar years', function () {
+ const result = differenceInYears(
+ new Date(2015, 0 /* Jan */, 1),
+ new Date(2014, 11 /* Dec */, 31)
+ )
+ assert(result === 0)
+ })
+
+ it('the same for the swapped dates', function () {
+ const result = differenceInYears(
+ new Date(2014, 11 /* Dec */, 31),
+ new Date(2015, 0 /* Jan */, 1)
+ )
+ assert(result === 0)
+ })
+
+ it('the days and months of the given dates are the same', function () {
+ const result = differenceInYears(
+ new Date(2014, 8 /* Sep */, 5),
+ new Date(2012, 8 /* Sep */, 5)
+ )
+ assert(result === 2)
+ })
+
+ it('the given dates are the same', function () {
+ const result = differenceInYears(
+ new Date(2014, 8 /* Sep */, 5, 0, 0),
+ new Date(2014, 8 /* Sep */, 5, 0, 0)
+ )
+ assert(result === 0)
+ })
+
+ it('does not return -0 when the given dates are the same', () => {
+ function isNegativeZero(x: number): boolean {
+ return x === 0 && 1 / x < 0
+ }
+
+ const result = differenceInYears(
+ new Date(2014, 8 /* Sep */, 5, 0, 0),
+ new Date(2014, 8 /* Sep */, 5, 0, 0)
+ )
+
+ const resultIsNegative = isNegativeZero(result)
+ assert(resultIsNegative === false)
+ })
+ })
+
+ it('returns NaN if the first date is `Invalid Date`', function () {
+ const result = differenceInYears(
+ new Date(NaN),
+ new Date(2017, 0 /* Jan */, 1)
+ )
+ assert(isNaN(result))
+ })
+
+ it('returns NaN if the second date is `Invalid Date`', function () {
+ const result = differenceInYears(
+ new Date(2017, 0 /* Jan */, 1),
+ new Date(NaN)
+ )
+ assert(isNaN(result))
+ })
+
+ it('returns NaN if the both dates are `Invalid Date`', function () {
+ const result = differenceInYears(new Date(NaN), new Date(NaN))
+ assert(isNaN(result))
+ })
+
+ it('throws TypeError exception if passed less than 2 arguments', function () {
+ assert.throws(differenceInYears.bind(null), TypeError)
+ assert.throws(differenceInYears.bind(null, 1), TypeError)
+ })
+})
diff --git a/date-fns/src/eachDayOfInterval/benchmark.js b/date-fns/src/eachDayOfInterval/benchmark.js
new file mode 100644
index 0000000..45d8e44
--- /dev/null
+++ b/date-fns/src/eachDayOfInterval/benchmark.js
@@ -0,0 +1,16 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import eachDayOfInterval from '.'
+
+suite('eachDayOfInterval', function () {
+ benchmark('date-fns', function () {
+ return eachDayOfInterval({start: this.dateA, end: this.dateB})
+ })
+}, {
+ setup: function () {
+ this.dateA = new Date()
+ this.dateB = new Date(this.dateA.getTime() + 604800000)
+ }
+})
diff --git a/date-fns/src/eachDayOfInterval/index.d.ts b/date-fns/src/eachDayOfInterval/index.d.ts
new file mode 100644
index 0000000..80fc0dc
--- /dev/null
+++ b/date-fns/src/eachDayOfInterval/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { eachDayOfInterval } from 'date-fns'
+export default eachDayOfInterval
diff --git a/date-fns/src/eachDayOfInterval/index.js.flow b/date-fns/src/eachDayOfInterval/index.js.flow
new file mode 100644
index 0000000..5a9b8e4
--- /dev/null
+++ b/date-fns/src/eachDayOfInterval/index.js.flow
@@ -0,0 +1,57 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (
+ interval: Interval,
+ options?: {
+ step?: number,
+ }
+) => Date[]
diff --git a/date-fns/src/eachDayOfInterval/index.ts b/date-fns/src/eachDayOfInterval/index.ts
new file mode 100644
index 0000000..fded968
--- /dev/null
+++ b/date-fns/src/eachDayOfInterval/index.ts
@@ -0,0 +1,98 @@
+import toDate from '../toDate/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name eachDayOfInterval
+ * @category Interval Helpers
+ * @summary Return the array of dates within the specified time interval.
+ *
+ * @description
+ * Return the array of dates within the specified time interval.
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * - The function was renamed from `eachDay` to `eachDayOfInterval`.
+ * This change was made to mirror the use of the word "interval" in standard ISO 8601:2004 terminology:
+ *
+ * ```
+ * 2.1.3
+ * time interval
+ * part of the time axis limited by two instants
+ * ```
+ *
+ * Also, this function now accepts an object with `start` and `end` properties
+ * instead of two arguments as an interval.
+ * This function now throws `RangeError` if the start of the interval is after its end
+ * or if any date in the interval is `Invalid Date`.
+ *
+ * ```javascript
+ * // Before v2.0.0
+ *
+ * eachDay(new Date(2014, 0, 10), new Date(2014, 0, 20))
+ *
+ * // v2.0.0 onward
+ *
+ * eachDayOfInterval(
+ * { start: new Date(2014, 0, 10), end: new Date(2014, 0, 20) }
+ * )
+ * ```
+ *
+ * @param {Interval} interval - the interval. See [Interval]{@link https://date-fns.org/docs/Interval}
+ * @param {Object} [options] - an object with options.
+ * @param {Number} [options.step=1] - the step to increment by. The value should be more than 1.
+ * @returns {Date[]} the array with starts of days from the day of the interval start to the day of the interval end
+ * @throws {TypeError} 1 argument required
+ * @throws {RangeError} `options.step` must be a number greater than 1
+ * @throws {RangeError} The start of an interval cannot be after its end
+ * @throws {RangeError} Date in interval cannot be `Invalid Date`
+ *
+ * @example
+ * // Each day between 6 October 2014 and 10 October 2014:
+ * const result = eachDayOfInterval({
+ * start: new Date(2014, 9, 6),
+ * end: new Date(2014, 9, 10)
+ * })
+ * //=> [
+ * // Mon Oct 06 2014 00:00:00,
+ * // Tue Oct 07 2014 00:00:00,
+ * // Wed Oct 08 2014 00:00:00,
+ * // Thu Oct 09 2014 00:00:00,
+ * // Fri Oct 10 2014 00:00:00
+ * // ]
+ */
+export default function eachDayOfInterval(
+ dirtyInterval: Interval,
+ options?: { step?: number }
+): Date[] {
+ requiredArgs(1, arguments)
+
+ const interval = dirtyInterval || {}
+ const startDate = toDate(interval.start)
+ const endDate = toDate(interval.end)
+
+ const endTime = endDate.getTime()
+
+ // Throw an exception if start date is after end date or if any date is `Invalid Date`
+ if (!(startDate.getTime() <= endTime)) {
+ throw new RangeError('Invalid interval')
+ }
+
+ const dates = []
+
+ const currentDate = startDate
+ currentDate.setHours(0, 0, 0, 0)
+
+ const step = options && 'step' in options ? Number(options.step) : 1
+ if (step < 1 || isNaN(step))
+ throw new RangeError('`options.step` must be a number greater than 1')
+
+ while (currentDate.getTime() <= endTime) {
+ dates.push(toDate(currentDate))
+ currentDate.setDate(currentDate.getDate() + step)
+ currentDate.setHours(0, 0, 0, 0)
+ }
+
+ return dates
+}
diff --git a/date-fns/src/eachDayOfInterval/test.ts b/date-fns/src/eachDayOfInterval/test.ts
new file mode 100644
index 0000000..2ace8e1
--- /dev/null
+++ b/date-fns/src/eachDayOfInterval/test.ts
@@ -0,0 +1,137 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'assert'
+import eachDayOfInterval from '.'
+
+describe('eachDayOfInterval', () => {
+ it('returns an array with starts of days from the day of the start date to the day of the end date', () => {
+ const result = eachDayOfInterval({
+ start: new Date(2014, 9 /* Oct */, 6),
+ end: new Date(2014, 9 /* Oct */, 12)
+ })
+ assert.deepStrictEqual(result, [
+ new Date(2014, 9 /* Oct */, 6),
+ new Date(2014, 9 /* Oct */, 7),
+ new Date(2014, 9 /* Oct */, 8),
+ new Date(2014, 9 /* Oct */, 9),
+ new Date(2014, 9 /* Oct */, 10),
+ new Date(2014, 9 /* Oct */, 11),
+ new Date(2014, 9 /* Oct */, 12)
+ ])
+ })
+
+ it('accepts timestamps', () => {
+ const result = eachDayOfInterval({
+ start: new Date(2014, 9 /* Oct */, 6).getTime(),
+ end: new Date(2014, 9 /* Oct */, 12).getTime()
+ })
+ assert.deepStrictEqual(result, [
+ new Date(2014, 9 /* Oct */, 6),
+ new Date(2014, 9 /* Oct */, 7),
+ new Date(2014, 9 /* Oct */, 8),
+ new Date(2014, 9 /* Oct */, 9),
+ new Date(2014, 9 /* Oct */, 10),
+ new Date(2014, 9 /* Oct */, 11),
+ new Date(2014, 9 /* Oct */, 12)
+ ])
+ })
+
+ it('handles the dates that are not starts of days', () => {
+ const result = eachDayOfInterval({
+ start: new Date(2014, 9 /* Oct */, 6, 6, 35),
+ end: new Date(2014, 9 /* Oct */, 12, 22, 15)
+ })
+ assert.deepStrictEqual(result, [
+ new Date(2014, 9 /* Oct */, 6),
+ new Date(2014, 9 /* Oct */, 7),
+ new Date(2014, 9 /* Oct */, 8),
+ new Date(2014, 9 /* Oct */, 9),
+ new Date(2014, 9 /* Oct */, 10),
+ new Date(2014, 9 /* Oct */, 11),
+ new Date(2014, 9 /* Oct */, 12)
+ ])
+ })
+
+ it('returns one day if the both arguments are on the same day', () => {
+ const result = eachDayOfInterval({
+ start: new Date(2014, 9 /* Oct */, 6, 14),
+ end: new Date(2014, 9 /* Oct */, 6, 15)
+ })
+ assert.deepStrictEqual(result, [new Date(2014, 9 /* Oct */, 6)])
+ })
+
+ it('returns one day if the both arguments are the same', () => {
+ const result = eachDayOfInterval({
+ start: new Date(2014, 9 /* Oct */, 6, 14),
+ end: new Date(2014, 9 /* Oct */, 6, 14)
+ })
+ assert.deepStrictEqual(result, [new Date(2014, 9 /* Oct */, 6)])
+ })
+
+ it('throws an exception if the start date is after the end date', () => {
+ const block = eachDayOfInterval.bind(null, {
+ start: new Date(2014, 9 /* Oct */, 12),
+ end: new Date(2014, 9 /* Oct */, 6)
+ })
+ assert.throws(block, RangeError)
+ })
+
+ it('throws an exception if the start date is `Invalid Date`', () => {
+ var block = eachDayOfInterval.bind(null, {
+ start: new Date(NaN),
+ end: new Date(2014, 9 /* Oct */, 6)
+ })
+ assert.throws(block, RangeError)
+ })
+
+ it('throws an exception if the end date is `Invalid Date`', () => {
+ var block = eachDayOfInterval.bind(null, {
+ start: new Date(2014, 9 /* Oct */, 12),
+ end: new Date(NaN)
+ })
+ assert.throws(block, RangeError)
+ })
+
+ it('throws an exception if the interval is undefined', () => {
+ var block = eachDayOfInterval.bind(
+ null,
+ //@ts-expect-error
+ undefined
+ )
+ assert.throws(block, RangeError)
+ })
+
+ it('throws TypeError exception if passed less than 1 argument', () => {
+ assert.throws(eachDayOfInterval.bind(null), TypeError)
+ })
+
+ describe('options.step', () => {
+ const interval = {
+ start: new Date(2014, 9 /* Oct */, 6),
+ end: new Date(2014, 9 /* Oct */, 13)
+ }
+
+ const stepError = /^RangeError: `options.step` must be a number greater than 1$/
+
+ it('returns an array with starts of days from the day of the start date to the day of the end date with the given step', () => {
+ const result = eachDayOfInterval(interval, { step: 3 })
+ assert.deepStrictEqual(result, [
+ new Date(2014, 9 /* Oct */, 6),
+ new Date(2014, 9 /* Oct */, 9),
+ new Date(2014, 9 /* Oct */, 12)
+ ])
+ })
+
+ it('throws TypeError error if `options.step` is less than 1', () => {
+ assert.throws(() => eachDayOfInterval(interval, { step: 0 }), stepError)
+ assert.throws(() => eachDayOfInterval(interval, { step: -3 }), stepError)
+ })
+
+ it('throws TypeError error if `options.step` is NaN', () => {
+ //@ts-expect-error
+ assert.throws(() => eachDayOfInterval(interval, { step: 'w' }), stepError)
+ assert.throws(() => eachDayOfInterval(interval, { step: NaN }), stepError)
+ })
+ })
+})
diff --git a/date-fns/src/eachHourOfInterval/benchmark.js b/date-fns/src/eachHourOfInterval/benchmark.js
new file mode 100644
index 0000000..c96c557
--- /dev/null
+++ b/date-fns/src/eachHourOfInterval/benchmark.js
@@ -0,0 +1,20 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import eachHourOfInterval from '.'
+
+suite(
+ 'eachHourOfInterval',
+ function() {
+ benchmark('date-fns', function() {
+ return eachHourOfInterval({ start: this.dateA, end: this.dateB })
+ })
+ },
+ {
+ setup: function() {
+ this.dateA = new Date()
+ this.dateB = new Date(this.dateA.getTime() + 604800000)
+ }
+ }
+)
diff --git a/date-fns/src/eachHourOfInterval/index.d.ts b/date-fns/src/eachHourOfInterval/index.d.ts
new file mode 100644
index 0000000..4c3addd
--- /dev/null
+++ b/date-fns/src/eachHourOfInterval/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { eachHourOfInterval } from 'date-fns'
+export default eachHourOfInterval
diff --git a/date-fns/src/eachHourOfInterval/index.js.flow b/date-fns/src/eachHourOfInterval/index.js.flow
new file mode 100644
index 0000000..5a9b8e4
--- /dev/null
+++ b/date-fns/src/eachHourOfInterval/index.js.flow
@@ -0,0 +1,57 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (
+ interval: Interval,
+ options?: {
+ step?: number,
+ }
+) => Date[]
diff --git a/date-fns/src/eachHourOfInterval/index.ts b/date-fns/src/eachHourOfInterval/index.ts
new file mode 100644
index 0000000..27ad6dc
--- /dev/null
+++ b/date-fns/src/eachHourOfInterval/index.ts
@@ -0,0 +1,69 @@
+import addHours from '../addHours/index'
+import toDate from '../toDate/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+import { Interval, StepOptions } from '../types'
+
+/**
+ * @name eachHourOfInterval
+ * @category Interval Helpers
+ * @summary Return the array of hours within the specified time interval.
+ *
+ * @description
+ * Return the array of hours within the specified time interval.
+ *
+ * @param {Interval} interval - the interval. See [Interval]{@link https://date-fns.org/docs/Interval}
+ * @param {Object} [options] - an object with options.
+ * @param {Number} [options.step=1] - the step to increment by. The value should be more than 1.
+ * @returns {Date[]} the array with starts of hours from the hour of the interval start to the hour of the interval end
+ * @throws {TypeError} 1 argument required
+ * @throws {RangeError} `options.step` must be a number greater than 1
+ * @throws {RangeError} The start of an interval cannot be after its end
+ * @throws {RangeError} Date in interval cannot be `Invalid Date`
+ *
+ * @example
+ * // Each hour between 6 October 2014, 12:00 and 6 October 2014, 15:00
+ * var result = eachHourOfInterval({
+ * start: new Date(2014, 9, 6, 12),
+ * end: new Date(2014, 9, 6, 15)
+ * })
+ * //=> [
+ * // Mon Oct 06 2014 12:00:00,
+ * // Mon Oct 06 2014 13:00:00,
+ * // Mon Oct 06 2014 14:00:00,
+ * // Mon Oct 06 2014 15:00:00
+ * // ]
+ */
+export default function eachHourOfInterval(
+ dirtyInterval: Interval,
+ options?: StepOptions
+): Date[] {
+ requiredArgs(1, arguments)
+
+ const interval = dirtyInterval || {}
+ const startDate = toDate(interval.start)
+ const endDate = toDate(interval.end)
+
+ const startTime = startDate.getTime()
+ const endTime = endDate.getTime()
+
+ // Throw an exception if start date is after end date or if any date is `Invalid Date`
+ if (!(startTime <= endTime)) {
+ throw new RangeError('Invalid interval')
+ }
+
+ const dates = []
+
+ let currentDate = startDate
+ currentDate.setMinutes(0, 0, 0)
+
+ const step = options && 'step' in options ? Number(options.step) : 1
+ if (step < 1 || isNaN(step))
+ throw new RangeError('`options.step` must be a number greater than 1')
+
+ while (currentDate.getTime() <= endTime) {
+ dates.push(toDate(currentDate))
+ currentDate = addHours(currentDate, step)
+ }
+
+ return dates
+}
diff --git a/date-fns/src/eachHourOfInterval/test.ts b/date-fns/src/eachHourOfInterval/test.ts
new file mode 100644
index 0000000..4bdaa05
--- /dev/null
+++ b/date-fns/src/eachHourOfInterval/test.ts
@@ -0,0 +1,134 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'assert'
+import eachHourOfInterval from '.'
+
+describe('eachHourOfInterval', () => {
+ it('returns an array with starts of hours from the hour of the start date to the hour of the end date', () => {
+ const result = eachHourOfInterval({
+ start: new Date(2014, 9 /* Oct */, 6, 12),
+ end: new Date(2014, 9 /* Oct */, 6, 15)
+ })
+ assert.deepEqual(result, [
+ new Date(2014, 9 /* Oct */, 6, 12),
+ new Date(2014, 9 /* Oct */, 6, 13),
+ new Date(2014, 9 /* Oct */, 6, 14),
+ new Date(2014, 9 /* Oct */, 6, 15)
+ ])
+ })
+
+ it('accepts timestamps', () => {
+ const result = eachHourOfInterval({
+ start: new Date(2014, 9 /* Oct */, 6, 12).getTime(),
+ end: new Date(2014, 9 /* Oct */, 6, 15).getTime()
+ })
+ assert.deepEqual(result, [
+ new Date(2014, 9 /* Oct */, 6, 12),
+ new Date(2014, 9 /* Oct */, 6, 13),
+ new Date(2014, 9 /* Oct */, 6, 14),
+ new Date(2014, 9 /* Oct */, 6, 15)
+ ])
+ })
+
+ it('handles the hours that are not starts of hours', () => {
+ const result = eachHourOfInterval({
+ start: new Date(2014, 9 /* Oct */, 6, 12, 59, 59, 999),
+ end: new Date(2014, 9 /* Oct */, 6, 15, 59, 59, 999)
+ })
+ assert.deepEqual(result, [
+ new Date(2014, 9 /* Oct */, 6, 12),
+ new Date(2014, 9 /* Oct */, 6, 13),
+ new Date(2014, 9 /* Oct */, 6, 14),
+ new Date(2014, 9 /* Oct */, 6, 15)
+ ])
+ })
+
+ it('returns one hour if the both arguments are on the same hour', () => {
+ const result = eachHourOfInterval({
+ start: new Date(2014, 9 /* Oct */, 6, 12, 35),
+ end: new Date(2014, 9 /* Oct */, 6, 12, 47)
+ })
+ assert.deepEqual(result, [new Date(2014, 9 /* Oct */, 6, 12)])
+ })
+
+ it('returns one hour if the both arguments are the same', () => {
+ const result = eachHourOfInterval({
+ start: new Date(2014, 9 /* Oct */, 6, 12, 35),
+ end: new Date(2014, 9 /* Oct */, 6, 12, 35)
+ })
+ assert.deepEqual(result, [new Date(2014, 9 /* Oct */, 6, 12)])
+ })
+
+ it('throws an exception if the start date is after the end date', () => {
+ const block = eachHourOfInterval.bind(null, {
+ start: new Date(2014, 9 /* Oct */, 12, 35, 0, 0, 1),
+ end: new Date(2014, 9 /* Oct */, 12, 35, 0, 0, 0)
+ })
+ assert.throws(block, RangeError)
+ })
+
+ it('throws an exception if the start date is `Invalid Date`', () => {
+ const block = eachHourOfInterval.bind(null, {
+ start: new Date(NaN),
+ end: new Date(2014, 9 /* Oct */, 6, 12)
+ })
+ assert.throws(block, RangeError)
+ })
+
+ it('throws an exception if the end date is `Invalid Date`', () => {
+ const block = eachHourOfInterval.bind(null, {
+ start: new Date(2014, 9 /* Oct */, 12, 12),
+ end: new Date(NaN)
+ })
+ assert.throws(block, RangeError)
+ })
+
+ it('throws an exception if the interval is undefined', () => {
+ const block = eachHourOfInterval.bind(
+ null,
+ // $ExpectedMistake
+ undefined
+ )
+ assert.throws(block, RangeError)
+ })
+
+ it('throws TypeError exception if passed less than 1 argument', () => {
+ assert.throws(eachHourOfInterval.bind(null), TypeError)
+ })
+
+ describe('options.step', () => {
+ const interval = {
+ start: new Date(2014, 9 /* Oct */, 6, 12),
+ end: new Date(2014, 9 /* Oct */, 6, 18)
+ }
+
+ const stepError = /^RangeError: `options.step` must be a number greater than 1$/
+
+ it('returns an array with starts of hours from the hour of the start date to the hour of the end date with the given step', () => {
+ const result = eachHourOfInterval(interval, { step: 3 })
+ assert.deepEqual(result, [
+ new Date(2014, 9 /* Oct */, 6, 12),
+ new Date(2014, 9 /* Oct */, 6, 15),
+ new Date(2014, 9 /* Oct */, 6, 18)
+ ])
+ })
+
+ it('throws TypeError error if `options.step` is less than 1', () => {
+ assert.throws(() => eachHourOfInterval(interval, { step: 0 }), stepError)
+ assert.throws(() => eachHourOfInterval(interval, { step: -3 }), stepError)
+ })
+
+ it('throws TypeError error if `options.step` is NaN', () => {
+ // $ExpectedMistake
+ assert.throws(
+ () => eachHourOfInterval(interval, { step: 'w' }),
+ stepError
+ )
+ assert.throws(
+ () => eachHourOfInterval(interval, { step: NaN }),
+ stepError
+ )
+ })
+ })
+})
diff --git a/date-fns/src/eachMinuteOfInterval/benchmark.js b/date-fns/src/eachMinuteOfInterval/benchmark.js
new file mode 100644
index 0000000..0277233
--- /dev/null
+++ b/date-fns/src/eachMinuteOfInterval/benchmark.js
@@ -0,0 +1,20 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import eachMinuteOfInterval from '.'
+
+suite(
+ 'eachMinuteOfInterval',
+ function() {
+ benchmark('date-fns', function() {
+ return eachMinuteOfInterval({ start: this.dateA, end: this.dateB })
+ })
+ },
+ {
+ setup: function() {
+ this.dateA = new Date()
+ this.dateB = new Date(this.dateA.getTime() + 300000)
+ }
+ }
+)
diff --git a/date-fns/src/eachMinuteOfInterval/index.d.ts b/date-fns/src/eachMinuteOfInterval/index.d.ts
new file mode 100644
index 0000000..f96a5e9
--- /dev/null
+++ b/date-fns/src/eachMinuteOfInterval/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { eachMinuteOfInterval } from 'date-fns'
+export default eachMinuteOfInterval
diff --git a/date-fns/src/eachMinuteOfInterval/index.js.flow b/date-fns/src/eachMinuteOfInterval/index.js.flow
new file mode 100644
index 0000000..5a9b8e4
--- /dev/null
+++ b/date-fns/src/eachMinuteOfInterval/index.js.flow
@@ -0,0 +1,57 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (
+ interval: Interval,
+ options?: {
+ step?: number,
+ }
+) => Date[]
diff --git a/date-fns/src/eachMinuteOfInterval/index.ts b/date-fns/src/eachMinuteOfInterval/index.ts
new file mode 100644
index 0000000..682b6c0
--- /dev/null
+++ b/date-fns/src/eachMinuteOfInterval/index.ts
@@ -0,0 +1,70 @@
+import addMinutes from '../addMinutes/index'
+import toDate from '../toDate/index'
+import startOfMinute from '../startOfMinute/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+import { Interval, StepOptions } from '../types'
+
+/**
+ * @name eachMinuteOfInterval
+ * @category Interval Helpers
+ * @summary Return the array of minutes within the specified time interval.
+ *
+ * @description
+ * Returns the array of minutes within the specified time interval.
+ *
+ * @param {Interval} interval - the interval. See [Interval]{@link https://date-fns.org/docs/Interval}
+ * @param {Object} [options] - an object with options.
+ * @param {Number} [options.step=1] - the step to increment by. The starts of minutes from the hour of the interval start to the hour of the interval end
+ * @throws {TypeError} 1 argument requie value should be more than 1.
+ * @returns {Date[]} the array withred
+ * @throws {RangeError} `options.step` must be a number equal or greater than 1
+ * @throws {RangeError} The start of an interval cannot be after its end
+ * @throws {RangeError} Date in interval cannot be `Invalid Date`
+ *
+ * @example
+ * // Each minute between 14 October 2020, 13:00 and 14 October 2020, 13:03
+ * const result = eachMinuteOfInterval({
+ * start: new Date(2014, 9, 14, 13),
+ * end: new Date(2014, 9, 14, 13, 3)
+ * })
+ * //=> [
+ * // Wed Oct 14 2014 13:00:00,
+ * // Wed Oct 14 2014 13:01:00,
+ * // Wed Oct 14 2014 13:02:00,
+ * // Wed Oct 14 2014 13:03:00
+ * // ]
+ */
+export default function eachMinuteOfInterval(
+ interval: Interval,
+ options?: StepOptions
+): Date[] {
+ requiredArgs(1, arguments)
+
+ const startDate = startOfMinute(toDate(interval.start))
+ const endDate = startOfMinute(toDate(interval.end))
+
+ const startTime = startDate.getTime()
+ const endTime = endDate.getTime()
+
+ if (startTime >= endTime) {
+ throw new RangeError('Invalid interval')
+ }
+
+ const dates = []
+
+ let currentDate = startDate
+
+ const step = options && 'step' in options ? Number(options.step) : 1
+ if (step < 1 || isNaN(step))
+ throw new RangeError(
+ '`options.step` must be a number equal or greater than 1'
+ )
+
+ while (currentDate.getTime() <= endTime) {
+ dates.push(toDate(currentDate))
+ currentDate = addMinutes(currentDate, step)
+ }
+
+ return dates
+}
diff --git a/date-fns/src/eachMinuteOfInterval/test.ts b/date-fns/src/eachMinuteOfInterval/test.ts
new file mode 100644
index 0000000..c4dab70
--- /dev/null
+++ b/date-fns/src/eachMinuteOfInterval/test.ts
@@ -0,0 +1,99 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+
+import eachMinuteOfInterval from '.'
+
+describe('eachMinuteOfInterval', () => {
+ it('should return an array of Date objects containing a Date for each minute between the interval', () => {
+ const result = eachMinuteOfInterval({
+ start: new Date(2020, 10, 14, 13, 0),
+ end: new Date(2020, 10, 14, 13, 5)
+ })
+
+ assert.deepEqual(result, [
+ new Date(2020, 10, 14, 13, 0),
+ new Date(2020, 10, 14, 13, 1),
+ new Date(2020, 10, 14, 13, 2),
+ new Date(2020, 10, 14, 13, 3),
+ new Date(2020, 10, 14, 13, 4),
+ new Date(2020, 10, 14, 13, 5)
+ ])
+ })
+
+ it('should handle all the minutes that are not in the begining', () => {
+ const result = eachMinuteOfInterval({
+ start: new Date(2020, 10, 14, 13, 0, 33),
+ end: new Date(2020, 10, 14, 13, 2)
+ })
+
+ assert.deepEqual(result[0], new Date(2020, 10, 14, 13))
+ assert.deepEqual(result[2], new Date(2020, 10, 14, 13, 2))
+ })
+
+ it('should accept timestamps', () => {
+ const start = new Date(2020, 10, 14, 13, 0).getTime()
+ const end = new Date(2020, 10, 14, 13, 2).getTime()
+
+ const result = eachMinuteOfInterval({
+ start,
+ end
+ })
+
+ assert.deepEqual(result, [
+ new Date(2020, 10, 14, 13, 0),
+ new Date(2020, 10, 14, 13, 1),
+ new Date(2020, 10, 14, 13, 2)
+ ])
+ })
+
+ it('throws an exception if the start date is after the end date', () => {
+ const block = eachMinuteOfInterval.bind(null, {
+ start: new Date(2014, 10, 14, 10),
+ end: new Date(2014, 10, 14, 5)
+ })
+ assert.throws(block, RangeError)
+ })
+
+ describe('options.step', () => {
+ const interval = {
+ start: new Date(2020, 9, 14, 13, 1),
+ end: new Date(2020, 9, 14, 13, 7)
+ }
+
+ const stepError = /^RangeError: `options.step` must be a number equal or greater than 1$/
+
+ it('returns an array with starts of hours from the hour of the start date to the hour of the end date with the given step', () => {
+ const result = eachMinuteOfInterval(interval, { step: 3 })
+ assert.deepEqual(result, [
+ new Date(2020, 9, 14, 13, 1),
+ new Date(2020, 9, 14, 13, 4),
+ new Date(2020, 9, 14, 13, 7)
+ ])
+ })
+
+ it('throws TypeError error if `options.step` is less than 1', () => {
+ assert.throws(
+ () => eachMinuteOfInterval(interval, { step: 0 }),
+ stepError
+ )
+ assert.throws(
+ () => eachMinuteOfInterval(interval, { step: -3 }),
+ stepError
+ )
+ })
+
+ it('throws TypeError error if `options.step` is NaN', () => {
+ // $ExpectedMistake
+ assert.throws(
+ () => eachMinuteOfInterval(interval, { step: 'w' }),
+ stepError
+ )
+ assert.throws(
+ () => eachMinuteOfInterval(interval, { step: NaN }),
+ stepError
+ )
+ })
+ })
+})
diff --git a/date-fns/src/eachMonthOfInterval/index.d.ts b/date-fns/src/eachMonthOfInterval/index.d.ts
new file mode 100644
index 0000000..bda4a18
--- /dev/null
+++ b/date-fns/src/eachMonthOfInterval/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { eachMonthOfInterval } from 'date-fns'
+export default eachMonthOfInterval
diff --git a/date-fns/src/eachMonthOfInterval/index.js.flow b/date-fns/src/eachMonthOfInterval/index.js.flow
new file mode 100644
index 0000000..30230a5
--- /dev/null
+++ b/date-fns/src/eachMonthOfInterval/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (interval: Interval) => Date[]
diff --git a/date-fns/src/eachMonthOfInterval/index.ts b/date-fns/src/eachMonthOfInterval/index.ts
new file mode 100644
index 0000000..f946338
--- /dev/null
+++ b/date-fns/src/eachMonthOfInterval/index.ts
@@ -0,0 +1,59 @@
+import toDate from '../toDate/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name eachMonthOfInterval
+ * @category Interval Helpers
+ * @summary Return the array of months within the specified time interval.
+ *
+ * @description
+ * Return the array of months within the specified time interval.
+ *
+ * @param {Interval} interval - the interval. See [Interval]{@link https://date-fns.org/docs/Interval}
+ * @returns {Date[]} the array with starts of months from the month of the interval start to the month of the interval end
+ * @throws {TypeError} 1 argument required
+ * @throws {RangeError} The start of an interval cannot be after its end
+ * @throws {RangeError} Date in interval cannot be `Invalid Date`
+ *
+ * @example
+ * // Each month between 6 February 2014 and 10 August 2014:
+ * var result = eachMonthOfInterval({
+ * start: new Date(2014, 1, 6),
+ * end: new Date(2014, 7, 10)
+ * })
+ * //=> [
+ * // Sat Feb 01 2014 00:00:00,
+ * // Sat Mar 01 2014 00:00:00,
+ * // Tue Apr 01 2014 00:00:00,
+ * // Thu May 01 2014 00:00:00,
+ * // Sun Jun 01 2014 00:00:00,
+ * // Tue Jul 01 2014 00:00:00,
+ * // Fri Aug 01 2014 00:00:00
+ * // ]
+ */
+export default function eachMonthOfInterval(dirtyInterval: Interval) {
+ requiredArgs(1, arguments)
+
+ const interval = dirtyInterval || {}
+ const startDate = toDate(interval.start)
+ const endDate = toDate(interval.end)
+
+ const endTime = endDate.getTime()
+ const dates = []
+
+ // Throw an exception if start date is after end date or if any date is `Invalid Date`
+ if (!(startDate.getTime() <= endTime)) {
+ throw new RangeError('Invalid interval')
+ }
+
+ const currentDate = startDate
+ currentDate.setHours(0, 0, 0, 0)
+ currentDate.setDate(1)
+
+ while (currentDate.getTime() <= endTime) {
+ dates.push(toDate(currentDate))
+ currentDate.setMonth(currentDate.getMonth() + 1)
+ }
+
+ return dates
+}
diff --git a/date-fns/src/eachMonthOfInterval/test.ts b/date-fns/src/eachMonthOfInterval/test.ts
new file mode 100644
index 0000000..45f58db
--- /dev/null
+++ b/date-fns/src/eachMonthOfInterval/test.ts
@@ -0,0 +1,120 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'assert'
+import eachMonthOfInterval from '.'
+
+describe('eachMonthOfInterval', function() {
+ it('returns an array with starts of months from the month of the start date to the month of the end date', function() {
+ const result = eachMonthOfInterval({
+ start: new Date(2014, 2 /* Mar */, 6),
+ end: new Date(2014, 7 /* Aug */, 12)
+ })
+ assert.deepEqual(result, [
+ new Date(2014, 2 /* Mar */, 1),
+ new Date(2014, 3 /* Apr */, 1),
+ new Date(2014, 4 /* May */, 1),
+ new Date(2014, 5 /* Jun */, 1),
+ new Date(2014, 6 /* Jul */, 1),
+ new Date(2014, 7 /* Aug */, 1)
+ ])
+ })
+
+ it('accepts timestamps', function() {
+ const result = eachMonthOfInterval({
+ start: new Date(2014, 2 /* Mar */, 6).getTime(),
+ end: new Date(2014, 7 /* Aug */, 12).getTime()
+ })
+ assert.deepEqual(result, [
+ new Date(2014, 2 /* Mar */, 1),
+ new Date(2014, 3 /* Apr */, 1),
+ new Date(2014, 4 /* May */, 1),
+ new Date(2014, 5 /* Jun */, 1),
+ new Date(2014, 6 /* Jul */, 1),
+ new Date(2014, 7 /* Aug */, 1)
+ ])
+ })
+
+ it('handles the dates that are not starts of days', function() {
+ const result = eachMonthOfInterval({
+ start: new Date(2014, 2 /* Mar */, 6, 6, 35),
+ end: new Date(2014, 7 /* Aug */, 12, 22, 15)
+ })
+ assert.deepEqual(result, [
+ new Date(2014, 2 /* Mar */, 1),
+ new Date(2014, 3 /* Apr */, 1),
+ new Date(2014, 4 /* May */, 1),
+ new Date(2014, 5 /* Jun */, 1),
+ new Date(2014, 6 /* Jul */, 1),
+ new Date(2014, 7 /* Aug */, 1)
+ ])
+ })
+
+ it('handles the dates that are not containing days', function() {
+ const result = eachMonthOfInterval({
+ start: new Date(2014, 2 /* Mar */),
+ end: new Date(2014, 7 /* Aug */)
+ })
+ assert.deepEqual(result, [
+ new Date(2014, 2 /* Mar */, 1),
+ new Date(2014, 3 /* Apr */, 1),
+ new Date(2014, 4 /* May */, 1),
+ new Date(2014, 5 /* Jun */, 1),
+ new Date(2014, 6 /* Jul */, 1),
+ new Date(2014, 7 /* Aug */, 1)
+ ])
+ })
+
+ it('returns one month if the both arguments are on the same month', function() {
+ const result = eachMonthOfInterval({
+ start: new Date(2014, 9 /* Oct */, 6, 14),
+ end: new Date(2014, 9 /* Oct */, 9, 15)
+ })
+ assert.deepEqual(result, [new Date(2014, 9 /* Oct */, 1)])
+ })
+
+ it('returns one month if the both arguments are the same', function() {
+ const result = eachMonthOfInterval({
+ start: new Date(2014, 9 /* Oct */, 6, 14),
+ end: new Date(2014, 9 /* Oct */, 6, 14)
+ })
+ assert.deepEqual(result, [new Date(2014, 9 /* Oct */, 1)])
+ })
+
+ it('throws an exception if the start date is after the end date', function() {
+ const block = eachMonthOfInterval.bind(null, {
+ start: new Date(2014, 9 /* Oct */, 12),
+ end: new Date(2014, 9 /* Oct */, 6)
+ })
+ assert.throws(block, RangeError)
+ })
+
+ it('throws an exception if the start date is `Invalid Date`', function() {
+ const block = eachMonthOfInterval.bind(null, {
+ start: new Date(NaN),
+ end: new Date(2014, 9 /* Oct */, 6)
+ })
+ assert.throws(block, RangeError)
+ })
+
+ it('throws an exception if the end date is `Invalid Date`', function() {
+ const block = eachMonthOfInterval.bind(null, {
+ start: new Date(2014, 9 /* Oct */, 12),
+ end: new Date(NaN)
+ })
+ assert.throws(block, RangeError)
+ })
+
+ it('throws an exception if the interval is undefined', function() {
+ const block = eachMonthOfInterval.bind(
+ null,
+ // $ExpectedMistake
+ undefined
+ )
+ assert.throws(block, RangeError)
+ })
+
+ it('throws TypeError exception if passed less than 1 argument', function() {
+ assert.throws(eachMonthOfInterval.bind(null), TypeError)
+ })
+})
diff --git a/date-fns/src/eachQuarterOfInterval/index.d.ts b/date-fns/src/eachQuarterOfInterval/index.d.ts
new file mode 100644
index 0000000..879b548
--- /dev/null
+++ b/date-fns/src/eachQuarterOfInterval/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { eachQuarterOfInterval } from 'date-fns'
+export default eachQuarterOfInterval
diff --git a/date-fns/src/eachQuarterOfInterval/index.js.flow b/date-fns/src/eachQuarterOfInterval/index.js.flow
new file mode 100644
index 0000000..30230a5
--- /dev/null
+++ b/date-fns/src/eachQuarterOfInterval/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (interval: Interval) => Date[]
diff --git a/date-fns/src/eachQuarterOfInterval/index.ts b/date-fns/src/eachQuarterOfInterval/index.ts
new file mode 100644
index 0000000..cf70f20
--- /dev/null
+++ b/date-fns/src/eachQuarterOfInterval/index.ts
@@ -0,0 +1,61 @@
+import addQuarters from '../addQuarters/index'
+import startOfQuarter from '../startOfQuarter/index'
+import toDate from '../toDate/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name eachQuarterOfInterval
+ * @category Interval Helpers
+ * @summary Return the array of quarters within the specified time interval.
+ *
+ * @description
+ * Return the array of quarters within the specified time interval.
+ *
+ * @param {Interval} interval - the interval. See [Interval]{@link https://date-fns.org/docs/Interval}
+ * @returns {Date[]} the array with starts of quarters from the quarter of the interval start to the quarter of the interval end
+ * @throws {TypeError} 1 argument required
+ * @throws {RangeError} The start of an interval cannot be after its end
+ * @throws {RangeError} Date in interval cannot be `Invalid Date`
+ *
+ * @example
+ * // Each quarter within interval 6 February 2014 - 10 August 2014:
+ * var result = eachQuarterOfInterval({
+ * start: new Date(2014, 1, 6),
+ * end: new Date(2014, 7, 10)
+ * })
+ * //=> [
+ * // Wed Jan 01 2014 00:00:00,
+ * // Tue Apr 01 2014 00:00:00,
+ * // Tue Jul 01 2014 00:00:00,
+ * // ]
+ */
+export default function eachQuarterOfInterval(dirtyInterval: Interval): Date[] {
+ requiredArgs(1, arguments)
+
+ const interval = dirtyInterval || {}
+ const startDate = toDate(interval.start)
+ const endDate = toDate(interval.end)
+
+ var endTime = endDate.getTime()
+
+ // Throw an exception if start date is after end date or if any date is `Invalid Date`
+ if (!(startDate.getTime() <= endTime)) {
+ throw new RangeError('Invalid interval')
+ }
+
+ const startDateQuarter = startOfQuarter(startDate)
+ const endDateQuarter = startOfQuarter(endDate)
+
+ endTime = endDateQuarter.getTime()
+
+ const quarters = []
+
+ var currentQuarter = startDateQuarter
+
+ while (currentQuarter.getTime() <= endTime) {
+ quarters.push(toDate(currentQuarter))
+ currentQuarter = addQuarters(currentQuarter, 1)
+ }
+
+ return quarters
+}
diff --git a/date-fns/src/eachQuarterOfInterval/test.ts b/date-fns/src/eachQuarterOfInterval/test.ts
new file mode 100644
index 0000000..a9edbcb
--- /dev/null
+++ b/date-fns/src/eachQuarterOfInterval/test.ts
@@ -0,0 +1,108 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'assert'
+import eachQuarterOfInterval from '.'
+
+describe('eachQuarterOfInterval', function() {
+ it('returns an array with starts of quarters from the quarter of the start date to the quarter of the end date', function() {
+ const result = eachQuarterOfInterval({
+ start: new Date(2014, 2 /* Mar */, 6),
+ end: new Date(2014, 7 /* Aug */, 12)
+ })
+ assert.deepEqual(result, [
+ new Date(2014, 0 /* Jan */, 1),
+ new Date(2014, 3 /* Apr */, 1),
+ new Date(2014, 6 /* Jul */, 1)
+ ])
+ })
+
+ it('accepts timestamps', function() {
+ const result = eachQuarterOfInterval({
+ start: new Date(2014, 2 /* Mar */, 6).getTime(),
+ end: new Date(2014, 7 /* Aug */, 12).getTime()
+ })
+ assert.deepEqual(result, [
+ new Date(2014, 0 /* Jan */, 1),
+ new Date(2014, 3 /* Apr */, 1),
+ new Date(2014, 6 /* Jul */, 1)
+ ])
+ })
+
+ it('handles the dates that are not starts of days', function() {
+ const result = eachQuarterOfInterval({
+ start: new Date(2014, 2 /* Mar */, 6, 6, 35),
+ end: new Date(2014, 7 /* Aug */, 12, 22, 15)
+ })
+ assert.deepEqual(result, [
+ new Date(2014, 0 /* Jan */, 1),
+ new Date(2014, 3 /* Apr */, 1),
+ new Date(2014, 6 /* Jul */, 1)
+ ])
+ })
+
+ it('handles the dates that are not containing days', function() {
+ const result = eachQuarterOfInterval({
+ start: new Date(2014, 2 /* Mar */),
+ end: new Date(2014, 7 /* Oct */)
+ })
+ assert.deepEqual(result, [
+ new Date(2014, 0 /* Jan */, 1),
+ new Date(2014, 3 /* Apr */, 1),
+ new Date(2014, 6 /* Jul */, 1)
+ ])
+ })
+
+ it('returns one quarter if the both arguments are on the same quarter', function() {
+ const result = eachQuarterOfInterval({
+ start: new Date(2014, 0 /* Jan */, 6, 14),
+ end: new Date(2014, 2 /* Feb */, 9, 15)
+ })
+ assert.deepEqual(result, [new Date(2014, 0 /* Jan */, 1)])
+ })
+
+ it('returns one quarter if the both arguments are the same', function() {
+ const result = eachQuarterOfInterval({
+ start: new Date(2014, 9 /* Oct */, 6, 14),
+ end: new Date(2014, 9 /* Oct */, 6, 14)
+ })
+ assert.deepEqual(result, [new Date(2014, 9 /* Oct */, 1)])
+ })
+
+ it('throws an exception if the start date is after the end date', function() {
+ const block = eachQuarterOfInterval.bind(null, {
+ start: new Date(2014, 9 /* Oct */, 12),
+ end: new Date(2014, 9 /* Oct */, 6)
+ })
+ assert.throws(block, RangeError)
+ })
+
+ it('throws an exception if the start date is `Invalid Date`', function() {
+ const block = eachQuarterOfInterval.bind(null, {
+ start: new Date(NaN),
+ end: new Date(2014, 9 /* Oct */, 6)
+ })
+ assert.throws(block, RangeError)
+ })
+
+ it('throws an exception if the end date is `Invalid Date`', function() {
+ const block = eachQuarterOfInterval.bind(null, {
+ start: new Date(2014, 9 /* Oct */, 12),
+ end: new Date(NaN)
+ })
+ assert.throws(block, RangeError)
+ })
+
+ it('throws an exception if the interval is undefined', function() {
+ const block = eachQuarterOfInterval.bind(
+ null,
+ // $ExpectedMistake
+ undefined
+ )
+ assert.throws(block, RangeError)
+ })
+
+ it('throws TypeError exception if passed less than 1 argument', function() {
+ assert.throws(eachQuarterOfInterval.bind(null), TypeError)
+ })
+})
diff --git a/date-fns/src/eachWeekOfInterval/benchmark.js b/date-fns/src/eachWeekOfInterval/benchmark.js
new file mode 100644
index 0000000..65e0830
--- /dev/null
+++ b/date-fns/src/eachWeekOfInterval/benchmark.js
@@ -0,0 +1,16 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import eachWeekOfInterval from '.'
+
+suite('eachWeekOfInterval', function () {
+ benchmark('date-fns', function () {
+ return eachWeekOfInterval({start: this.dateA, end: this.dateB})
+ })
+}, {
+ setup: function () {
+ this.dateA = new Date()
+ this.dateB = new Date(this.dateA.getTime() + 4233600000)
+ }
+})
diff --git a/date-fns/src/eachWeekOfInterval/index.d.ts b/date-fns/src/eachWeekOfInterval/index.d.ts
new file mode 100644
index 0000000..24d1a8a
--- /dev/null
+++ b/date-fns/src/eachWeekOfInterval/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { eachWeekOfInterval } from 'date-fns'
+export default eachWeekOfInterval
diff --git a/date-fns/src/eachWeekOfInterval/index.js.flow b/date-fns/src/eachWeekOfInterval/index.js.flow
new file mode 100644
index 0000000..bc8cd5a
--- /dev/null
+++ b/date-fns/src/eachWeekOfInterval/index.js.flow
@@ -0,0 +1,58 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (
+ interval: Interval,
+ options?: {
+ locale?: Locale,
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ }
+) => Date[]
diff --git a/date-fns/src/eachWeekOfInterval/index.ts b/date-fns/src/eachWeekOfInterval/index.ts
new file mode 100644
index 0000000..1045dd9
--- /dev/null
+++ b/date-fns/src/eachWeekOfInterval/index.ts
@@ -0,0 +1,84 @@
+import { WeekStartOptions } from '../types'
+import addWeeks from '../addWeeks/index'
+import startOfWeek from '../startOfWeek/index'
+import toDate from '../toDate/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name eachWeekOfInterval
+ * @category Interval Helpers
+ * @summary Return the array of weeks within the specified time interval.
+ *
+ * @description
+ * Return the array of weeks within the specified time interval.
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Interval} interval - the interval. See [Interval]{@link https://date-fns.org/docs/Interval}
+ * @param {Object} [options] - an object with options.
+ * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}
+ * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)
+ * @returns {Date[]} the array with starts of weeks from the week of the interval start to the week of the interval end
+ * @throws {TypeError} 1 argument required
+ * @throws {RangeError} `options.weekStartsOn` must be 0, 1, ..., 6
+ * @throws {RangeError} The start of an interval cannot be after its end
+ * @throws {RangeError} Date in interval cannot be `Invalid Date`
+ *
+ * @example
+ * // Each week within interval 6 October 2014 - 23 November 2014:
+ * var result = eachWeekOfInterval({
+ * start: new Date(2014, 9, 6),
+ * end: new Date(2014, 10, 23)
+ * })
+ * //=> [
+ * // Sun Oct 05 2014 00:00:00,
+ * // Sun Oct 12 2014 00:00:00,
+ * // Sun Oct 19 2014 00:00:00,
+ * // Sun Oct 26 2014 00:00:00,
+ * // Sun Nov 02 2014 00:00:00,
+ * // Sun Nov 09 2014 00:00:00,
+ * // Sun Nov 16 2014 00:00:00,
+ * // Sun Nov 23 2014 00:00:00
+ * // ]
+ */
+export default function eachWeekOfInterval(
+ dirtyInterval: Interval,
+ options?: WeekStartOptions
+): Date[] {
+ requiredArgs(1, arguments)
+
+ const interval = dirtyInterval || {}
+ const startDate = toDate(interval.start)
+ const endDate = toDate(interval.end)
+
+ var endTime = endDate.getTime()
+
+ // Throw an exception if start date is after end date or if any date is `Invalid Date`
+ if (!(startDate.getTime() <= endTime)) {
+ throw new RangeError('Invalid interval')
+ }
+
+ const startDateWeek = startOfWeek(startDate, options)
+ const endDateWeek = startOfWeek(endDate, options)
+
+ // Some timezones switch DST at midnight, making start of day unreliable in these timezones, 3pm is a safe bet
+ startDateWeek.setHours(15)
+ endDateWeek.setHours(15)
+
+ endTime = endDateWeek.getTime()
+
+ const weeks = []
+
+ let currentWeek = startDateWeek
+
+ while (currentWeek.getTime() <= endTime) {
+ currentWeek.setHours(0)
+ weeks.push(toDate(currentWeek))
+ currentWeek = addWeeks(currentWeek, 1)
+ currentWeek.setHours(15)
+ }
+
+ return weeks
+}
diff --git a/date-fns/src/eachWeekOfInterval/test.ts b/date-fns/src/eachWeekOfInterval/test.ts
new file mode 100644
index 0000000..4bcf5b1
--- /dev/null
+++ b/date-fns/src/eachWeekOfInterval/test.ts
@@ -0,0 +1,145 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'assert'
+import eachWeekOfInterval from '.'
+
+describe('eachWeekOfInterval', function() {
+ it('returns an array with starts of weeks from the week of the start date to the week of the end date', function() {
+ const result = eachWeekOfInterval({
+ start: new Date(2014, 9 /* Oct */, 6),
+ end: new Date(2014, 10 /* Nov */, 23)
+ })
+ assert.deepEqual(result, [
+ new Date(2014, 9 /* Oct */, 5),
+ new Date(2014, 9 /* Oct */, 12),
+ new Date(2014, 9 /* Oct */, 19),
+ new Date(2014, 9 /* Oct */, 26),
+ new Date(2014, 10 /* Nov */, 2),
+ new Date(2014, 10 /* Nov */, 9),
+ new Date(2014, 10 /* Nov */, 16),
+ new Date(2014, 10 /* Nov */, 23)
+ ])
+ })
+
+ it('accepts timestamps', function() {
+ const result = eachWeekOfInterval({
+ start: new Date(2014, 9 /* Oct */, 6).getTime(),
+ end: new Date(2014, 10 /* Nov */, 23).getTime()
+ })
+ assert.deepEqual(result, [
+ new Date(2014, 9 /* Oct */, 5),
+ new Date(2014, 9 /* Oct */, 12),
+ new Date(2014, 9 /* Oct */, 19),
+ new Date(2014, 9 /* Oct */, 26),
+ new Date(2014, 10 /* Nov */, 2),
+ new Date(2014, 10 /* Nov */, 9),
+ new Date(2014, 10 /* Nov */, 16),
+ new Date(2014, 10 /* Nov */, 23)
+ ])
+ })
+
+ it('handles the dates that are not starts/ends of days and weeks', function() {
+ const result = eachWeekOfInterval({
+ start: new Date(2014, 9 /* Oct */, 6, 6, 35),
+ end: new Date(2014, 10 /* Nov */, 25, 22, 16)
+ })
+ assert.deepEqual(result, [
+ new Date(2014, 9 /* Oct */, 5),
+ new Date(2014, 9 /* Oct */, 12),
+ new Date(2014, 9 /* Oct */, 19),
+ new Date(2014, 9 /* Oct */, 26),
+ new Date(2014, 10 /* Nov */, 2),
+ new Date(2014, 10 /* Nov */, 9),
+ new Date(2014, 10 /* Nov */, 16),
+ new Date(2014, 10 /* Nov */, 23)
+ ])
+ })
+
+ it('considers the weekStartsOn option', function() {
+ const result = eachWeekOfInterval(
+ {
+ start: new Date(2014, 9 /* Oct */, 6, 6, 35),
+ end: new Date(2014, 10 /* Nov */, 25, 22, 15)
+ },
+ { weekStartsOn: 2 }
+ )
+ assert.deepEqual(result, [
+ new Date(2014, 8 /* Sep */, 30),
+ new Date(2014, 9 /* Oct */, 7),
+ new Date(2014, 9 /* Oct */, 14),
+ new Date(2014, 9 /* Oct */, 21),
+ new Date(2014, 9 /* Oct */, 28),
+ new Date(2014, 10 /* Nov */, 4),
+ new Date(2014, 10 /* Nov */, 11),
+ new Date(2014, 10 /* Nov */, 18),
+ new Date(2014, 10 /* Nov */, 25)
+ ])
+ })
+
+ it('returns one week if the both arguments are on the same week', function() {
+ const result = eachWeekOfInterval({
+ start: new Date(2014, 9 /* Oct */, 6, 14),
+ end: new Date(2014, 9 /* Oct */, 8, 15)
+ })
+ assert.deepEqual(result, [new Date(2014, 9 /* Oct */, 5)])
+ })
+
+ it('returns one day if the both arguments are the same', function() {
+ const result = eachWeekOfInterval({
+ start: new Date(2014, 9 /* Oct */, 6, 14),
+ end: new Date(2014, 9 /* Oct */, 6, 14)
+ })
+ assert.deepEqual(result, [new Date(2014, 9 /* Oct */, 5)])
+ })
+
+ it('throws an exception if the start date is after the end date', function() {
+ const block = eachWeekOfInterval.bind(null, {
+ start: new Date(2014, 9 /* Oct */, 12),
+ end: new Date(2014, 9 /* Oct */, 6)
+ })
+ assert.throws(block, RangeError)
+ })
+
+ it('throws an exception if the start date is `Invalid Date`', function() {
+ const block = eachWeekOfInterval.bind(null, {
+ start: new Date(NaN),
+ end: new Date(2014, 9 /* Oct */, 6)
+ })
+ assert.throws(block, RangeError)
+ })
+
+ it('throws an exception if the end date is `Invalid Date`', function() {
+ const block = eachWeekOfInterval.bind(null, {
+ start: new Date(2014, 9 /* Oct */, 12),
+ end: new Date(NaN)
+ })
+ assert.throws(block, RangeError)
+ })
+
+ it('throws an exception if the interval is undefined', function() {
+ const block = eachWeekOfInterval.bind(
+ null,
+ // $ExpectedMistake
+ undefined
+ )
+ assert.throws(block, RangeError)
+ })
+
+ it('throws `RangeError` if `options.weekStartsOn` is not convertible to 0, 1, ..., 6 or undefined', function() {
+ const block = eachWeekOfInterval.bind(
+ null,
+ {
+ start: new Date(2014, 9 /* Oct */, 6, 6, 35),
+ end: new Date(2014, 10 /* Nov */, 25, 22, 15)
+ },
+ // $ExpectedMistake
+ { weekStartsOn: NaN }
+ )
+ assert.throws(block, RangeError)
+ })
+
+ it('throws TypeError exception if passed less than 1 argument', function() {
+ assert.throws(eachWeekOfInterval.bind(null), TypeError)
+ })
+})
diff --git a/date-fns/src/eachWeekendOfInterval/benchmark.js b/date-fns/src/eachWeekendOfInterval/benchmark.js
new file mode 100755
index 0000000..df23caf
--- /dev/null
+++ b/date-fns/src/eachWeekendOfInterval/benchmark.js
@@ -0,0 +1,16 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import eachWeekendOfInterval from '.'
+
+suite('eachWeekendOfInterval', function () {
+ benchmark('date-fns', function () {
+ return eachWeekendOfInterval({start: this.dateStart, end: this.dateEnd})
+ })
+}, {
+ setup: function () {
+ this.dateStart = new Date(2022, 0, 1)
+ this.dateEnd = new Date(2022, 11, 31)
+ }
+})
diff --git a/date-fns/src/eachWeekendOfInterval/index.d.ts b/date-fns/src/eachWeekendOfInterval/index.d.ts
new file mode 100644
index 0000000..c0b3fea
--- /dev/null
+++ b/date-fns/src/eachWeekendOfInterval/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { eachWeekendOfInterval } from 'date-fns'
+export default eachWeekendOfInterval
diff --git a/date-fns/src/eachWeekendOfInterval/index.js.flow b/date-fns/src/eachWeekendOfInterval/index.js.flow
new file mode 100755
index 0000000..30230a5
--- /dev/null
+++ b/date-fns/src/eachWeekendOfInterval/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (interval: Interval) => Date[]
diff --git a/date-fns/src/eachWeekendOfInterval/index.ts b/date-fns/src/eachWeekendOfInterval/index.ts
new file mode 100644
index 0000000..ffd2873
--- /dev/null
+++ b/date-fns/src/eachWeekendOfInterval/index.ts
@@ -0,0 +1,47 @@
+import eachDayOfInterval from '../eachDayOfInterval/index'
+import isSunday from '../isSunday/index'
+import isWeekend from '../isWeekend/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name eachWeekendOfInterval
+ * @category Interval Helpers
+ * @summary List all the Saturdays and Sundays in the given date interval.
+ *
+ * @description
+ * Get all the Saturdays and Sundays in the given date interval.
+ *
+ * @param {Interval} interval - the given interval. See [Interval]{@link https://date-fns.org/docs/Interval}
+ * @returns {Date[]} an array containing all the Saturdays and Sundays
+ * @throws {TypeError} 1 argument required
+ * @throws {RangeError} The start of an interval cannot be after its end
+ * @throws {RangeError} Date in interval cannot be `Invalid Date`
+ *
+ * @example
+ * // Lists all Saturdays and Sundays in the given date interval
+ * const result = eachWeekendOfInterval({
+ * start: new Date(2018, 8, 17),
+ * end: new Date(2018, 8, 30)
+ * })
+ * //=> [
+ * // Sat Sep 22 2018 00:00:00,
+ * // Sun Sep 23 2018 00:00:00,
+ * // Sat Sep 29 2018 00:00:00,
+ * // Sun Sep 30 2018 00:00:00
+ * // ]
+ */
+export default function eachWeekendOfInterval(interval: Interval): Date[] {
+ requiredArgs(1, arguments)
+
+ const dateInterval = eachDayOfInterval(interval)
+ const weekends = []
+ let index = 0
+ while (index < dateInterval.length) {
+ const date = dateInterval[index++]
+ if (isWeekend(date)) {
+ weekends.push(date)
+ if (isSunday(date)) index = index + 5
+ }
+ }
+ return weekends
+}
diff --git a/date-fns/src/eachWeekendOfInterval/test.ts b/date-fns/src/eachWeekendOfInterval/test.ts
new file mode 100644
index 0000000..75df655
--- /dev/null
+++ b/date-fns/src/eachWeekendOfInterval/test.ts
@@ -0,0 +1,67 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'assert'
+import eachWeekendOfInterval from '.'
+
+describe('eachWeekendOfInterval', function () {
+ it('returns all weekends within the interval', function () {
+ const result = eachWeekendOfInterval({
+ start: new Date(2018, 8 /* Sept */, 17),
+ end: new Date(2018, 8 /* Sept */, 30)
+ })
+ assert.deepEqual(result, [
+ new Date(2018, 8 /* Sept */, 22),
+ new Date(2018, 8 /* Sept */, 23),
+ new Date(2018, 8 /* Sept */, 29),
+ new Date(2018, 8 /* Sept */, 30)
+ ])
+ })
+
+ it('returns all weekends within the interval when starting on a weekend', function () {
+ const result = eachWeekendOfInterval({
+ start: new Date(2018, 8 /* Sept */, 22),
+ end: new Date(2018, 8 /* Sept */, 30)
+ })
+ assert.deepEqual(result, [
+ new Date(2018, 8 /* Sept */, 22),
+ new Date(2018, 8 /* Sept */, 23),
+ new Date(2018, 8 /* Sept */, 29),
+ new Date(2018, 8 /* Sept */, 30)
+ ])
+ })
+
+ it('throws `RangeError` invalid interval start date is used', function () {
+ // $ExpectedMistake
+ const block = eachWeekendOfInterval.bind(null, {
+ start: new Date(NaN),
+ end: new Date(2019, 11 /* Dec */, 31)
+ })
+ assert.throws(block, RangeError)
+ })
+
+ it('throws `RangeError` invalid interval end date is used', function () {
+ // $ExpectedMistake
+ const block = eachWeekendOfInterval.bind(null, {
+ start: new Date(2019, 0 /* Jan */, 1),
+ end: new Date(NaN)
+ })
+ assert.throws(block, RangeError)
+ })
+
+ it('throws TypeError exception if passed less than 1 argument', function () {
+ assert.throws(eachWeekendOfInterval, TypeError)
+ })
+
+ it('throws `RangeError` if start of an interval is after its end', function () {
+ const block = eachWeekendOfInterval.bind(
+ null,
+ // $ExpectedMistake
+ {
+ start: new Date(2018, 8 /* Sept */, 25),
+ end: new Date(2018, 8 /* Sept */, 6)
+ }
+ )
+ assert.throws(block, RangeError)
+ })
+})
diff --git a/date-fns/src/eachWeekendOfMonth/benchmark.js b/date-fns/src/eachWeekendOfMonth/benchmark.js
new file mode 100644
index 0000000..e5aa4a3
--- /dev/null
+++ b/date-fns/src/eachWeekendOfMonth/benchmark.js
@@ -0,0 +1,15 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import eachWeekendOfMonth from '.'
+
+suite('eachWeekendOfMonth', function () {
+ benchmark('date-fns', function () {
+ return eachWeekendOfMonth(this.date)
+ })
+}, {
+ setup: function () {
+ this.date = new Date(2020, 3, 20)
+ }
+})
diff --git a/date-fns/src/eachWeekendOfMonth/index.d.ts b/date-fns/src/eachWeekendOfMonth/index.d.ts
new file mode 100644
index 0000000..cb01c45
--- /dev/null
+++ b/date-fns/src/eachWeekendOfMonth/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { eachWeekendOfMonth } from 'date-fns'
+export default eachWeekendOfMonth
diff --git a/date-fns/src/eachWeekendOfMonth/index.js.flow b/date-fns/src/eachWeekendOfMonth/index.js.flow
new file mode 100644
index 0000000..7073332
--- /dev/null
+++ b/date-fns/src/eachWeekendOfMonth/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (date: Date | number) => Date[]
diff --git a/date-fns/src/eachWeekendOfMonth/index.ts b/date-fns/src/eachWeekendOfMonth/index.ts
new file mode 100644
index 0000000..1cfdfb7
--- /dev/null
+++ b/date-fns/src/eachWeekendOfMonth/index.ts
@@ -0,0 +1,42 @@
+import eachWeekendOfInterval from '../eachWeekendOfInterval/index'
+import startOfMonth from '../startOfMonth/index'
+import endOfMonth from '../endOfMonth/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name eachWeekendOfMonth
+ * @category Month Helpers
+ * @summary List all the Saturdays and Sundays in the given month.
+ *
+ * @description
+ * Get all the Saturdays and Sundays in the given month.
+ *
+ * @param {Date|Number} date - the given month
+ * @returns {Date[]} an array containing all the Saturdays and Sundays
+ * @throws {TypeError} 1 argument required
+ * @throws {RangeError} The passed date is invalid
+ *
+ * @example
+ * // Lists all Saturdays and Sundays in the given month
+ * const result = eachWeekendOfMonth(new Date(2022, 1, 1))
+ * //=> [
+ * // Sat Feb 05 2022 00:00:00,
+ * // Sun Feb 06 2022 00:00:00,
+ * // Sat Feb 12 2022 00:00:00,
+ * // Sun Feb 13 2022 00:00:00,
+ * // Sat Feb 19 2022 00:00:00,
+ * // Sun Feb 20 2022 00:00:00,
+ * // Sat Feb 26 2022 00:00:00,
+ * // Sun Feb 27 2022 00:00:00
+ * // ]
+ */
+export default function eachWeekendOfMonth(dirtyDate: Date): Date[] {
+ requiredArgs(1, arguments)
+
+ const startDate = startOfMonth(dirtyDate)
+ if (isNaN(startDate.getTime()))
+ throw new RangeError('The passed date is invalid')
+
+ const endDate = endOfMonth(dirtyDate)
+ return eachWeekendOfInterval({ start: startDate, end: endDate })
+}
diff --git a/date-fns/src/eachWeekendOfMonth/test.ts b/date-fns/src/eachWeekendOfMonth/test.ts
new file mode 100644
index 0000000..018f2e6
--- /dev/null
+++ b/date-fns/src/eachWeekendOfMonth/test.ts
@@ -0,0 +1,31 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'assert'
+import eachWeekendOfMonth from '.'
+
+describe('eachWeekendOfMonth', () => {
+ it('returns all weekends of the given month', () => {
+ var result = eachWeekendOfMonth(new Date(2022, 1, 20))
+ assert.deepStrictEqual(result, [
+ new Date(2022, 1, 5),
+ new Date(2022, 1, 6),
+ new Date(2022, 1, 12),
+ new Date(2022, 1, 13),
+ new Date(2022, 1, 19),
+ new Date(2022, 1, 20),
+ new Date(2022, 1, 26),
+ new Date(2022, 1, 27)
+ ])
+ })
+
+ it('throws TypeError exception when passed less than 1 argument', () => {
+ // @ts-expect-error
+ assert.throws(eachWeekendOfMonth.bind(null), TypeError)
+ })
+
+ it('throws RangeError when the expected year is an invalid date', () => {
+ // @ts-expect-error
+ assert.throws(eachWeekendOfMonth.bind(1, NaN), RangeError)
+ })
+})
diff --git a/date-fns/src/eachWeekendOfYear/benchmark.js b/date-fns/src/eachWeekendOfYear/benchmark.js
new file mode 100644
index 0000000..c490d95
--- /dev/null
+++ b/date-fns/src/eachWeekendOfYear/benchmark.js
@@ -0,0 +1,14 @@
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import eachWeekendOfYear from '.'
+
+suite('eachWeekendOfYear', function () {
+ benchmark('date-fns', function () {
+ return eachWeekendOfYear(this.date)
+ })
+}, {
+ setup: function () {
+ this.date = new Date(2022, 7, 12)
+ }
+})
diff --git a/date-fns/src/eachWeekendOfYear/index.d.ts b/date-fns/src/eachWeekendOfYear/index.d.ts
new file mode 100644
index 0000000..7cda9d1
--- /dev/null
+++ b/date-fns/src/eachWeekendOfYear/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { eachWeekendOfYear } from 'date-fns'
+export default eachWeekendOfYear
diff --git a/date-fns/src/eachWeekendOfYear/index.js b/date-fns/src/eachWeekendOfYear/index.js
new file mode 100644
index 0000000..291e158
--- /dev/null
+++ b/date-fns/src/eachWeekendOfYear/index.js
@@ -0,0 +1,38 @@
+import eachWeekendOfInterval from '../eachWeekendOfInterval/index'
+import startOfYear from '../startOfYear/index'
+import endOfYear from '../endOfYear/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name eachWeekendOfYear
+ * @category Year Helpers
+ * @summary List all the Saturdays and Sundays in the year.
+ *
+ * @description
+ * Get all the Saturdays and Sundays in the year.
+ *
+ * @param {Date|Number} date - the given year
+ * @returns {Date[]} an array containing all the Saturdays and Sundays
+ * @throws {TypeError} 1 argument required
+ * @throws {RangeError} The passed date is invalid
+ *
+ * @example
+ * // Lists all Saturdays and Sundays in the year
+ * var result = eachWeekendOfYear(new Date(2020, 1, 1))
+ * //=> [
+ * // Sat Jan 03 2020 00:00:00,
+ * // Sun Jan 04 2020 00:00:00,
+ * // ...
+ * // Sun Dec 27 2020 00:00:00
+ * // ]
+ * ]
+ */
+export default function eachWeekendOfYear(dirtyDate) {
+ requiredArgs(1, arguments)
+
+ var startDate = startOfYear(dirtyDate)
+ if (isNaN(startDate)) throw new RangeError('The passed date is invalid')
+
+ var endDate = endOfYear(dirtyDate)
+ return eachWeekendOfInterval({ start: startDate, end: endDate })
+}
diff --git a/date-fns/src/eachWeekendOfYear/index.js.flow b/date-fns/src/eachWeekendOfYear/index.js.flow
new file mode 100644
index 0000000..7073332
--- /dev/null
+++ b/date-fns/src/eachWeekendOfYear/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (date: Date | number) => Date[]
diff --git a/date-fns/src/eachWeekendOfYear/test.js b/date-fns/src/eachWeekendOfYear/test.js
new file mode 100644
index 0000000..81ebbfe
--- /dev/null
+++ b/date-fns/src/eachWeekendOfYear/test.js
@@ -0,0 +1,24 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import eachWeekendOfYear from '.'
+import isWeekend from '../isWeekend'
+
+describe('eachWeekendOfYear', () => {
+ it('returns all weekends of the given year', () => {
+ var result = eachWeekendOfYear(new Date(2020, 0, 1))
+ assert(result.length === 104)
+ assert(result.every(isWeekend))
+ assert.deepEqual(result[0], new Date(2020, 0, 4))
+ assert.deepEqual(result[103], new Date(2020, 11, 27))
+ })
+
+ it('throws TypeError exception when no argument is passed in', () => {
+ assert.throws(eachWeekendOfYear.bind(null), TypeError)
+ })
+
+ it('throws RangeError exception when date is invalid', () => {
+ assert.throws(eachWeekendOfYear.bind(null, new Date(NaN)), RangeError)
+ })
+})
diff --git a/date-fns/src/eachYearOfInterval/index.d.ts b/date-fns/src/eachYearOfInterval/index.d.ts
new file mode 100644
index 0000000..d6d5d5d
--- /dev/null
+++ b/date-fns/src/eachYearOfInterval/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { eachYearOfInterval } from 'date-fns'
+export default eachYearOfInterval
diff --git a/date-fns/src/eachYearOfInterval/index.js b/date-fns/src/eachYearOfInterval/index.js
new file mode 100644
index 0000000..a1eaf50
--- /dev/null
+++ b/date-fns/src/eachYearOfInterval/index.js
@@ -0,0 +1,57 @@
+import toDate from '../toDate/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name eachYearOfInterval
+ * @category Interval Helpers
+ * @summary Return the array of yearly timestamps within the specified time interval.
+ *
+ * @description
+ * Return the array of yearly timestamps within the specified time interval.
+ *
+ * @param {Interval} interval - the interval. See [Interval]{@link https://date-fns.org/docs/Interval}
+ * @returns {Date[]} the array with starts of yearly timestamps from the month of the interval start to the month of the interval end
+ * @throws {TypeError} 1 argument required
+ * @throws {RangeError} The start of an interval cannot be after its end
+ * @throws {RangeError} Date in interval cannot be `Invalid Date`
+ *
+ * @example
+ * // Each year between 6 February 2014 and 10 August 2017:
+ * var result = eachYearOfInterval({
+ * start: new Date(2014, 1, 6),
+ * end: new Date(2017, 7, 10)
+ * })
+ * //=> [
+ * // Wed Jan 01 2014 00:00:00,
+ * // Thu Jan 01 2015 00:00:00,
+ * // Fri Jan 01 2016 00:00:00,
+ * // Sun Jan 01 2017 00:00:00
+ * // ]
+ */
+export default function eachYearOfInterval(dirtyInterval) {
+ requiredArgs(1, arguments)
+
+ var interval = dirtyInterval || {}
+ var startDate = toDate(interval.start)
+ var endDate = toDate(interval.end)
+
+ var endTime = endDate.getTime()
+
+ // Throw an exception if start date is after end date or if any date is `Invalid Date`
+ if (!(startDate.getTime() <= endTime)) {
+ throw new RangeError('Invalid interval')
+ }
+
+ var dates = []
+
+ var currentDate = startDate
+ currentDate.setHours(0, 0, 0, 0)
+ currentDate.setMonth(0, 1)
+
+ while (currentDate.getTime() <= endTime) {
+ dates.push(toDate(currentDate))
+ currentDate.setFullYear(currentDate.getFullYear() + 1)
+ }
+
+ return dates
+}
diff --git a/date-fns/src/eachYearOfInterval/index.js.flow b/date-fns/src/eachYearOfInterval/index.js.flow
new file mode 100644
index 0000000..30230a5
--- /dev/null
+++ b/date-fns/src/eachYearOfInterval/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (interval: Interval) => Date[]
diff --git a/date-fns/src/eachYearOfInterval/test.js b/date-fns/src/eachYearOfInterval/test.js
new file mode 100644
index 0000000..2de5e8b
--- /dev/null
+++ b/date-fns/src/eachYearOfInterval/test.js
@@ -0,0 +1,105 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import eachYearOfInterval from '.'
+
+describe('eachYearOfInterval', function() {
+ it('returns an array with starts of days from the day of the start date to the day of the end date', function() {
+ var result = eachYearOfInterval({
+ start: new Date(2012, 9 /* Oct */, 6),
+ end: new Date(2017, 9 /* Oct */, 12)
+ })
+ assert.deepEqual(result, [
+ new Date(2012, 0 /* Jan */, 1),
+ new Date(2013, 0 /* Jan */, 1),
+ new Date(2014, 0 /* Jan */, 1),
+ new Date(2015, 0 /* Jan */, 1),
+ new Date(2016, 0 /* Jan */, 1),
+ new Date(2017, 0 /* Jan */, 1)
+ ])
+ })
+
+ it('accepts timestamps', function() {
+ var result = eachYearOfInterval({
+ start: new Date(2012, 9 /* Oct */, 6).getTime(),
+ end: new Date(2017, 9 /* Oct */, 12).getTime()
+ })
+ assert.deepEqual(result, [
+ new Date(2012, 0 /* Jan */, 1),
+ new Date(2013, 0 /* Jan */, 1),
+ new Date(2014, 0 /* Jan */, 1),
+ new Date(2015, 0 /* Jan */, 1),
+ new Date(2016, 0 /* Jan */, 1),
+ new Date(2017, 0 /* Jan */, 1)
+ ])
+ })
+
+ it('handles the dates that are not starts of days', function() {
+ var result = eachYearOfInterval({
+ start: new Date(2012, 9 /* Oct */, 6, 6, 35),
+ end: new Date(2017, 9 /* Oct */, 12, 22, 15)
+ })
+ assert.deepEqual(result, [
+ new Date(2012, 0 /* Jan */, 1),
+ new Date(2013, 0 /* Jan */, 1),
+ new Date(2014, 0 /* Jan */, 1),
+ new Date(2015, 0 /* Jan */, 1),
+ new Date(2016, 0 /* Jan */, 1),
+ new Date(2017, 0 /* Jan */, 1)
+ ])
+ })
+
+ it('returns one year if the both arguments are on the same year', function() {
+ var result = eachYearOfInterval({
+ start: new Date(2014, 9 /* Oct */, 6, 14),
+ end: new Date(2014, 9 /* Oct */, 6, 15)
+ })
+ assert.deepEqual(result, [new Date(2014, 0 /* Jan */, 1)])
+ })
+
+ it('returns one year if the both arguments are the same', function() {
+ var result = eachYearOfInterval({
+ start: new Date(2014, 9 /* Oct */, 6, 14),
+ end: new Date(2014, 9 /* Oct */, 6, 14)
+ })
+ assert.deepEqual(result, [new Date(2014, 0 /* Jan */, 1)])
+ })
+
+ it('throws an exception if the start date is after the end date', function() {
+ var block = eachYearOfInterval.bind(null, {
+ start: new Date(2014, 9 /* Oct */, 12),
+ end: new Date(2014, 9 /* Oct */, 6)
+ })
+ assert.throws(block, RangeError)
+ })
+
+ it('throws an exception if the start date is `Invalid Date`', function() {
+ var block = eachYearOfInterval.bind(null, {
+ start: new Date(NaN),
+ end: new Date(2014, 9 /* Oct */, 6)
+ })
+ assert.throws(block, RangeError)
+ })
+
+ it('throws an exception if the end date is `Invalid Date`', function() {
+ var block = eachYearOfInterval.bind(null, {
+ start: new Date(2014, 9 /* Oct */, 12),
+ end: new Date(NaN)
+ })
+ assert.throws(block, RangeError)
+ })
+
+ it('throws an exception if the interval is undefined', function() {
+ var block = eachYearOfInterval.bind(
+ null,
+ // $ExpectedMistake
+ undefined
+ )
+ assert.throws(block, RangeError)
+ })
+
+ it('throws TypeError exception if passed less than 1 argument', function() {
+ assert.throws(eachYearOfInterval.bind(null), TypeError)
+ })
+})
diff --git a/date-fns/src/endOfDay/benchmark.js b/date-fns/src/endOfDay/benchmark.js
new file mode 100644
index 0000000..88cc738
--- /dev/null
+++ b/date-fns/src/endOfDay/benchmark.js
@@ -0,0 +1,21 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import endOfDay from '.'
+import moment from 'moment'
+
+suite('endOfDay', function () {
+ benchmark('date-fns', function () {
+ return endOfDay(this.date)
+ })
+
+ benchmark('Moment.js', function () {
+ return this.moment.endOf('day')
+ })
+}, {
+ setup: function () {
+ this.date = new Date()
+ this.moment = moment()
+ }
+})
diff --git a/date-fns/src/endOfDay/index.d.ts b/date-fns/src/endOfDay/index.d.ts
new file mode 100644
index 0000000..2ce6172
--- /dev/null
+++ b/date-fns/src/endOfDay/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { endOfDay } from 'date-fns'
+export default endOfDay
diff --git a/date-fns/src/endOfDay/index.js.flow b/date-fns/src/endOfDay/index.js.flow
new file mode 100644
index 0000000..4b7c616
--- /dev/null
+++ b/date-fns/src/endOfDay/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (date: Date | number) => Date
diff --git a/date-fns/src/endOfDay/index.ts b/date-fns/src/endOfDay/index.ts
new file mode 100644
index 0000000..e8fe6cc
--- /dev/null
+++ b/date-fns/src/endOfDay/index.ts
@@ -0,0 +1,32 @@
+import toDate from '../toDate/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name endOfDay
+ * @category Day Helpers
+ * @summary Return the end of a day for the given date.
+ *
+ * @description
+ * Return the end of a day for the given date.
+ * The result will be in the local timezone.
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} date - the original date
+ * @returns {Date} the end of a day
+ * @throws {TypeError} 1 argument required
+ *
+ * @example
+ * // The end of a day for 2 September 2014 11:55:00:
+ * const result = endOfDay(new Date(2014, 8, 2, 11, 55, 0))
+ * //=> Tue Sep 02 2014 23:59:59.999
+ */
+export default function endOfDay(dirtyDate: Date | number): Date {
+ requiredArgs(1, arguments)
+
+ const date = toDate(dirtyDate)
+ date.setHours(23, 59, 59, 999)
+ return date
+}
diff --git a/date-fns/src/endOfDay/test.ts b/date-fns/src/endOfDay/test.ts
new file mode 100644
index 0000000..9a9f2a8
--- /dev/null
+++ b/date-fns/src/endOfDay/test.ts
@@ -0,0 +1,35 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import endOfDay from '.'
+
+describe('endOfDay', function() {
+ it('returns the date with the time set to 23:59:59.999', function() {
+ const date = new Date(2014, 8 /* Sep */, 2, 11, 55, 0)
+ const result = endOfDay(date)
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */, 2, 23, 59, 59, 999))
+ })
+
+ it('accepts a timestamp', function() {
+ const date = new Date(2014, 8 /* Sep */, 2, 11, 55, 0).getTime()
+ const result = endOfDay(date)
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */, 2, 23, 59, 59, 999))
+ })
+
+ it('does not mutate the original date', function() {
+ const date = new Date(2014, 8 /* Sep */, 2, 11, 55, 0)
+ endOfDay(date)
+ assert.deepEqual(date, new Date(2014, 8 /* Sep */, 2, 11, 55, 0))
+ })
+
+ it('returns `Invalid Date` if the given date is invalid', function() {
+ const result = endOfDay(new Date(NaN))
+ //@ts-expect-error
+ assert(result instanceof Date && isNaN(result))
+ })
+
+ it('throws TypeError exception if passed less than 1 argument', function() {
+ assert.throws(endOfDay.bind(null), TypeError)
+ })
+})
diff --git a/date-fns/src/endOfDecade/benchmark.js b/date-fns/src/endOfDecade/benchmark.js
new file mode 100644
index 0000000..43296e1
--- /dev/null
+++ b/date-fns/src/endOfDecade/benchmark.js
@@ -0,0 +1,15 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import endOfDecade from '.'
+
+suite('endOfDecade', function () {
+ benchmark('date-fns', function () {
+ return endOfDecade(this.date)
+ })
+}, {
+ setup: function () {
+ this.date = new Date()
+ }
+})
diff --git a/date-fns/src/endOfDecade/index.d.ts b/date-fns/src/endOfDecade/index.d.ts
new file mode 100644
index 0000000..c723f13
--- /dev/null
+++ b/date-fns/src/endOfDecade/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { endOfDecade } from 'date-fns'
+export default endOfDecade
diff --git a/date-fns/src/endOfDecade/index.js.flow b/date-fns/src/endOfDecade/index.js.flow
new file mode 100644
index 0000000..364a3bb
--- /dev/null
+++ b/date-fns/src/endOfDecade/index.js.flow
@@ -0,0 +1,57 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (
+ date: Date | number,
+ options?: {
+ additionalDigits?: 0 | 1 | 2,
+ }
+) => Date
diff --git a/date-fns/src/endOfDecade/index.ts b/date-fns/src/endOfDecade/index.ts
new file mode 100644
index 0000000..11c5ddb
--- /dev/null
+++ b/date-fns/src/endOfDecade/index.ts
@@ -0,0 +1,37 @@
+import toDate from '../toDate/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name endOfDecade
+ * @category Decade Helpers
+ * @summary Return the end of a decade for the given date.
+ *
+ * @description
+ * Return the end of a decade for the given date.
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} date - the original date
+ * @returns {Date} the end of a decade
+ * @param {Object} [options] - an object with options.
+ * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}
+ * @throws {TypeError} 1 argument required
+ * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2
+ *
+ * @example
+ * // The end of a decade for 12 May 1984 00:00:00:
+ * const result = endOfDecade(new Date(1984, 4, 12, 00, 00, 00))
+ * //=> Dec 31 1989 23:59:59.999
+ */
+export default function endOfDecade(dirtyDate: Date | number): Date {
+ requiredArgs(1, arguments)
+
+ const date = toDate(dirtyDate)
+ const year = date.getFullYear()
+ const decade = 9 + Math.floor(year / 10) * 10
+ date.setFullYear(decade, 11, 31)
+ date.setHours(23, 59, 59, 999)
+ return date
+}
diff --git a/date-fns/src/endOfDecade/test.ts b/date-fns/src/endOfDecade/test.ts
new file mode 100644
index 0000000..6328154
--- /dev/null
+++ b/date-fns/src/endOfDecade/test.ts
@@ -0,0 +1,35 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import endOfDecade from '.'
+
+describe('endOfDecade', function() {
+ it('returns the date with the time set to 23:59:59.999 and the date set to the last millisecond of a decade', function() {
+ const date = new Date(2017, 3 /* Apr */, 10, 0, 0, 0)
+ const result = endOfDecade(date)
+ assert.deepEqual(result, new Date(2019, 11 /* Dec */, 31, 23, 59, 59, 999))
+ })
+
+ it('accepts a timestamp', function() {
+ const date = new Date(2007, 9 /* Oct */, 10, 0, 0, 0).getTime()
+ const result = endOfDecade(date)
+ assert.deepEqual(result, new Date(2009, 11 /* Dec */, 31, 23, 59, 59, 999))
+ })
+
+ it('does not mutate the original date', function() {
+ const date = new Date(2038, 0 /* Jan */, 19, 3, 14, 8)
+ endOfDecade(date)
+ assert.deepEqual(date, new Date(2038, 0 /* Jan */, 19, 3, 14, 8))
+ })
+
+ it('returns `Invalid Date` if the given date is invalid', function() {
+ const result = endOfDecade(new Date(NaN))
+ //@ts-expect-error
+ assert(result instanceof Date && isNaN(result))
+ })
+
+ it('throws TypeError exception if passed less than 1 argument', function() {
+ assert.throws(endOfDecade.bind(null), TypeError)
+ })
+})
diff --git a/date-fns/src/endOfHour/benchmark.js b/date-fns/src/endOfHour/benchmark.js
new file mode 100644
index 0000000..096fbe0
--- /dev/null
+++ b/date-fns/src/endOfHour/benchmark.js
@@ -0,0 +1,21 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import endOfHour from '.'
+import moment from 'moment'
+
+suite('endOfHour', function () {
+ benchmark('date-fns', function () {
+ return endOfHour(this.date)
+ })
+
+ benchmark('Moment.js', function () {
+ return this.moment.endOf('hour')
+ })
+}, {
+ setup: function () {
+ this.date = new Date()
+ this.moment = moment()
+ }
+})
diff --git a/date-fns/src/endOfHour/index.d.ts b/date-fns/src/endOfHour/index.d.ts
new file mode 100644
index 0000000..10ab321
--- /dev/null
+++ b/date-fns/src/endOfHour/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { endOfHour } from 'date-fns'
+export default endOfHour
diff --git a/date-fns/src/endOfHour/index.js.flow b/date-fns/src/endOfHour/index.js.flow
new file mode 100644
index 0000000..4b7c616
--- /dev/null
+++ b/date-fns/src/endOfHour/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (date: Date | number) => Date
diff --git a/date-fns/src/endOfHour/index.ts b/date-fns/src/endOfHour/index.ts
new file mode 100644
index 0000000..2d0f5cd
--- /dev/null
+++ b/date-fns/src/endOfHour/index.ts
@@ -0,0 +1,32 @@
+import toDate from '../toDate/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name endOfHour
+ * @category Hour Helpers
+ * @summary Return the end of an hour for the given date.
+ *
+ * @description
+ * Return the end of an hour for the given date.
+ * The result will be in the local timezone.
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} date - the original date
+ * @returns {Date} the end of an hour
+ * @throws {TypeError} 1 argument required
+ *
+ * @example
+ * // The end of an hour for 2 September 2014 11:55:00:
+ * const result = endOfHour(new Date(2014, 8, 2, 11, 55))
+ * //=> Tue Sep 02 2014 11:59:59.999
+ */
+export default function endOfHour(dirtyDate: Date | number): Date {
+ requiredArgs(1, arguments)
+
+ const date = toDate(dirtyDate)
+ date.setMinutes(59, 59, 999)
+ return date
+}
diff --git a/date-fns/src/endOfHour/test.ts b/date-fns/src/endOfHour/test.ts
new file mode 100644
index 0000000..d3f1ab4
--- /dev/null
+++ b/date-fns/src/endOfHour/test.ts
@@ -0,0 +1,34 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import endOfHour from '.'
+
+describe('endOfHour', function() {
+ it('returns the date with the time set to the last millisecond before an hour ends', function() {
+ const date = new Date(2014, 11, 1, 22, 15)
+ const result = endOfHour(date)
+ assert.deepEqual(result, new Date(2014, 11, 1, 22, 59, 59, 999))
+ })
+
+ it('accepts a timestamp', function() {
+ const result = endOfHour(new Date(2014, 11, 1, 22, 15).getTime())
+ assert.deepEqual(result, new Date(2014, 11, 1, 22, 59, 59, 999))
+ })
+
+ it('does not mutate the original date', function() {
+ const date = new Date(2014, 11, 1, 22, 15)
+ endOfHour(date)
+ assert.deepEqual(date, new Date(2014, 11, 1, 22, 15))
+ })
+
+ it('returns `Invalid Date` if the given date is invalid', function() {
+ const result = endOfHour(new Date(NaN))
+ //@ts-expect-error
+ assert(result instanceof Date && isNaN(result))
+ })
+
+ it('throws TypeError exception if passed less than 1 argument', function() {
+ assert.throws(endOfHour.bind(null), TypeError)
+ })
+})
diff --git a/date-fns/src/endOfISOWeek/benchmark.js b/date-fns/src/endOfISOWeek/benchmark.js
new file mode 100644
index 0000000..5cea940
--- /dev/null
+++ b/date-fns/src/endOfISOWeek/benchmark.js
@@ -0,0 +1,21 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import endOfISOWeek from '.'
+import moment from 'moment'
+
+suite('endOfISOWeek', function () {
+ benchmark('date-fns', function () {
+ return endOfISOWeek(this.date)
+ })
+
+ benchmark('Moment.js', function () {
+ return this.moment.endOf('isoWeek')
+ })
+}, {
+ setup: function () {
+ this.date = new Date()
+ this.moment = moment()
+ }
+})
diff --git a/date-fns/src/endOfISOWeek/index.d.ts b/date-fns/src/endOfISOWeek/index.d.ts
new file mode 100644
index 0000000..10c3365
--- /dev/null
+++ b/date-fns/src/endOfISOWeek/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { endOfISOWeek } from 'date-fns'
+export default endOfISOWeek
diff --git a/date-fns/src/endOfISOWeek/index.js.flow b/date-fns/src/endOfISOWeek/index.js.flow
new file mode 100644
index 0000000..4b7c616
--- /dev/null
+++ b/date-fns/src/endOfISOWeek/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (date: Date | number) => Date
diff --git a/date-fns/src/endOfISOWeek/index.ts b/date-fns/src/endOfISOWeek/index.ts
new file mode 100644
index 0000000..91ac05c
--- /dev/null
+++ b/date-fns/src/endOfISOWeek/index.ts
@@ -0,0 +1,32 @@
+import endOfWeek from '../endOfWeek/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name endOfISOWeek
+ * @category ISO Week Helpers
+ * @summary Return the end of an ISO week for the given date.
+ *
+ * @description
+ * Return the end of an ISO week for the given date.
+ * The result will be in the local timezone.
+ *
+ * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} date - the original date
+ * @returns {Date} the end of an ISO week
+ * @throws {TypeError} 1 argument required
+ *
+ * @example
+ * // The end of an ISO week for 2 September 2014 11:55:00:
+ * var result = endOfISOWeek(new Date(2014, 8, 2, 11, 55, 0))
+ * //=> Sun Sep 07 2014 23:59:59.999
+ */
+export default function endOfISOWeek(dirtyDate: Date | number): Date {
+ requiredArgs(1, arguments)
+
+ return endOfWeek(dirtyDate, { weekStartsOn: 1 })
+}
diff --git a/date-fns/src/endOfISOWeek/test.ts b/date-fns/src/endOfISOWeek/test.ts
new file mode 100644
index 0000000..56f6531
--- /dev/null
+++ b/date-fns/src/endOfISOWeek/test.ts
@@ -0,0 +1,35 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import endOfISOWeek from '.'
+
+describe('endOfISOWeek', function() {
+ it('returns the date with the time set to 23:59:59:999 and the date set to the last day of an ISO week', function() {
+ const date = new Date(2014, 8 /* Sep */, 2, 11, 55, 0)
+ const result = endOfISOWeek(date)
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */, 7, 23, 59, 59, 999))
+ })
+
+ it('accepts a timestamp', function() {
+ const date = new Date(2014, 1 /* Feb */, 11, 11, 55, 0).getTime()
+ const result = endOfISOWeek(date)
+ assert.deepEqual(result, new Date(2014, 1 /* Feb */, 16, 23, 59, 59, 999))
+ })
+
+ it('does not mutate the original date', function() {
+ const date = new Date(2014, 8 /* Sep */, 2, 11, 55, 0)
+ endOfISOWeek(date)
+ assert.deepEqual(date, new Date(2014, 8 /* Sep */, 2, 11, 55, 0))
+ })
+
+ it('returns `Invalid Date` if the given date is invalid', function() {
+ const result = endOfISOWeek(new Date(NaN))
+ //@ts-expect-error
+ assert(result instanceof Date && isNaN(result))
+ })
+
+ it('throws TypeError exception if passed less than 1 argument', function() {
+ assert.throws(endOfISOWeek.bind(null), TypeError)
+ })
+})
diff --git a/date-fns/src/endOfISOWeekYear/benchmark.js b/date-fns/src/endOfISOWeekYear/benchmark.js
new file mode 100644
index 0000000..89749ac
--- /dev/null
+++ b/date-fns/src/endOfISOWeekYear/benchmark.js
@@ -0,0 +1,15 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import endOfISOWeekYear from '.'
+
+suite('endOfISOWeekYear', function () {
+ benchmark('date-fns', function () {
+ return endOfISOWeekYear(this.date)
+ })
+}, {
+ setup: function () {
+ this.date = new Date()
+ }
+})
diff --git a/date-fns/src/endOfISOWeekYear/index.d.ts b/date-fns/src/endOfISOWeekYear/index.d.ts
new file mode 100644
index 0000000..1878308
--- /dev/null
+++ b/date-fns/src/endOfISOWeekYear/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { endOfISOWeekYear } from 'date-fns'
+export default endOfISOWeekYear
diff --git a/date-fns/src/endOfISOWeekYear/index.js.flow b/date-fns/src/endOfISOWeekYear/index.js.flow
new file mode 100644
index 0000000..4b7c616
--- /dev/null
+++ b/date-fns/src/endOfISOWeekYear/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (date: Date | number) => Date
diff --git a/date-fns/src/endOfISOWeekYear/index.ts b/date-fns/src/endOfISOWeekYear/index.ts
new file mode 100644
index 0000000..5454ba6
--- /dev/null
+++ b/date-fns/src/endOfISOWeekYear/index.ts
@@ -0,0 +1,45 @@
+import getISOWeekYear from '../getISOWeekYear/index'
+import startOfISOWeek from '../startOfISOWeek/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name endOfISOWeekYear
+ * @category ISO Week-Numbering Year Helpers
+ * @summary Return the end of an ISO week-numbering year for the given date.
+ *
+ * @description
+ * Return the end of an ISO week-numbering year,
+ * which always starts 3 days before the year's first Thursday.
+ * The result will be in the local timezone.
+ *
+ * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * - The function was renamed from `endOfISOYear` to `endOfISOWeekYear`.
+ * "ISO week year" is short for [ISO week-numbering year](https://en.wikipedia.org/wiki/ISO_week_date).
+ * This change makes the name consistent with
+ * locale-dependent week-numbering year helpers, e.g., `addWeekYears`.
+ *
+ * @param {Date|Number} date - the original date
+ * @returns {Date} the end of an ISO week-numbering year
+ * @throws {TypeError} 1 argument required
+ *
+ * @example
+ * // The end of an ISO week-numbering year for 2 July 2005:
+ * const result = endOfISOWeekYear(new Date(2005, 6, 2))
+ * //=> Sun Jan 01 2006 23:59:59.999
+ */
+export default function endOfISOWeekYear(dirtyDate: Date | number): Date {
+ requiredArgs(1, arguments)
+
+ const year = getISOWeekYear(dirtyDate)
+ const fourthOfJanuaryOfNextYear = new Date(0)
+ fourthOfJanuaryOfNextYear.setFullYear(year + 1, 0, 4)
+ fourthOfJanuaryOfNextYear.setHours(0, 0, 0, 0)
+ const date = startOfISOWeek(fourthOfJanuaryOfNextYear)
+ date.setMilliseconds(date.getMilliseconds() - 1)
+ return date
+}
diff --git a/date-fns/src/endOfISOWeekYear/test.ts b/date-fns/src/endOfISOWeekYear/test.ts
new file mode 100644
index 0000000..5a155c9
--- /dev/null
+++ b/date-fns/src/endOfISOWeekYear/test.ts
@@ -0,0 +1,46 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import endOfISOWeekYear from '.'
+
+describe('endOfISOWeekYear', function() {
+ it('returns the date with the time set to 23:59:59.999 and the date set to the last day of an ISO year', function() {
+ const result = endOfISOWeekYear(new Date(2009, 0 /* Jan */, 1, 16, 0))
+ assert.deepEqual(result, new Date(2010, 0 /* Jan */, 3, 23, 59, 59, 999))
+ })
+
+ it('accepts a timestamp', function() {
+ const result = endOfISOWeekYear(
+ new Date(2005, 0 /* Jan */, 1, 6, 0).getTime()
+ )
+ assert.deepEqual(result, new Date(2005, 0 /* Jan */, 2, 23, 59, 59, 999))
+ })
+
+ it('does not mutate the original date', function() {
+ const date = new Date(2014, 6 /* Jul */, 2)
+ endOfISOWeekYear(date)
+ assert.deepEqual(date, new Date(2014, 6 /* Jul */, 2))
+ })
+
+ it('handles dates before 100 AD', function() {
+ const initialDate = new Date(0)
+ initialDate.setFullYear(5, 0 /* Jan */, 4)
+ initialDate.setHours(16, 0, 0, 0)
+ const expectedResult = new Date(0)
+ expectedResult.setFullYear(6, 0 /* Jan */, 1)
+ expectedResult.setHours(23, 59, 59, 999)
+ const result = endOfISOWeekYear(initialDate)
+ assert.deepEqual(result, expectedResult)
+ })
+
+ it('returns `Invalid Date` if the given date is invalid', function() {
+ const result = endOfISOWeekYear(new Date(NaN))
+ //@ts-expect-error
+ assert(result instanceof Date && isNaN(result))
+ })
+
+ it('throws TypeError exception if passed less than 1 argument', function() {
+ assert.throws(endOfISOWeekYear.bind(null), TypeError)
+ })
+})
diff --git a/date-fns/src/endOfMinute/benchmark.js b/date-fns/src/endOfMinute/benchmark.js
new file mode 100644
index 0000000..49b936c
--- /dev/null
+++ b/date-fns/src/endOfMinute/benchmark.js
@@ -0,0 +1,21 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import endOfMinute from '.'
+import moment from 'moment'
+
+suite('endOfMinute', function () {
+ benchmark('date-fns', function () {
+ return endOfMinute(this.date)
+ })
+
+ benchmark('Moment.js', function () {
+ return this.moment.endOf('minute')
+ })
+}, {
+ setup: function () {
+ this.date = new Date()
+ this.moment = moment()
+ }
+})
diff --git a/date-fns/src/endOfMinute/index.d.ts b/date-fns/src/endOfMinute/index.d.ts
new file mode 100644
index 0000000..82d1b5d
--- /dev/null
+++ b/date-fns/src/endOfMinute/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { endOfMinute } from 'date-fns'
+export default endOfMinute
diff --git a/date-fns/src/endOfMinute/index.js.flow b/date-fns/src/endOfMinute/index.js.flow
new file mode 100644
index 0000000..4b7c616
--- /dev/null
+++ b/date-fns/src/endOfMinute/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (date: Date | number) => Date
diff --git a/date-fns/src/endOfMinute/index.ts b/date-fns/src/endOfMinute/index.ts
new file mode 100644
index 0000000..5e28e69
--- /dev/null
+++ b/date-fns/src/endOfMinute/index.ts
@@ -0,0 +1,32 @@
+import toDate from '../toDate/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name endOfMinute
+ * @category Minute Helpers
+ * @summary Return the end of a minute for the given date.
+ *
+ * @description
+ * Return the end of a minute for the given date.
+ * The result will be in the local timezone.
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} date - the original date
+ * @returns {Date} the end of a minute
+ * @throws {TypeError} 1 argument required
+ *
+ * @example
+ * // The end of a minute for 1 December 2014 22:15:45.400:
+ * const result = endOfMinute(new Date(2014, 11, 1, 22, 15, 45, 400))
+ * //=> Mon Dec 01 2014 22:15:59.999
+ */
+export default function endOfMinute(dirtyDate: Date | number): Date {
+ requiredArgs(1, arguments)
+
+ const date = toDate(dirtyDate)
+ date.setSeconds(59, 999)
+ return date
+}
diff --git a/date-fns/src/endOfMinute/test.ts b/date-fns/src/endOfMinute/test.ts
new file mode 100644
index 0000000..13f19ee
--- /dev/null
+++ b/date-fns/src/endOfMinute/test.ts
@@ -0,0 +1,34 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import endOfMinute from '.'
+
+describe('endOfMinute', function() {
+ it('returns the date with the time set to the last millisecond before a minute ends', function() {
+ const date = new Date(2014, 11, 1, 22, 15)
+ const result = endOfMinute(date)
+ assert.deepEqual(result, new Date(2014, 11, 1, 22, 15, 59, 999))
+ })
+
+ it('accepts a timestamp', function() {
+ const result = endOfMinute(new Date(2014, 11, 1, 22, 15).getTime())
+ assert.deepEqual(result, new Date(2014, 11, 1, 22, 15, 59, 999))
+ })
+
+ it('does not mutate the original date', function() {
+ const date = new Date(2014, 11, 1, 22, 15)
+ endOfMinute(date)
+ assert.deepEqual(date, new Date(2014, 11, 1, 22, 15))
+ })
+
+ it('returns `Invalid Date` if the given date is invalid', function() {
+ const result = endOfMinute(new Date(NaN))
+ //@ts-expect-error
+ assert(result instanceof Date && isNaN(result))
+ })
+
+ it('throws TypeError exception if passed less than 1 argument', function() {
+ assert.throws(endOfMinute.bind(null), TypeError)
+ })
+})
diff --git a/date-fns/src/endOfMonth/benchmark.js b/date-fns/src/endOfMonth/benchmark.js
new file mode 100644
index 0000000..30791dd
--- /dev/null
+++ b/date-fns/src/endOfMonth/benchmark.js
@@ -0,0 +1,21 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import endOfMonth from '.'
+import moment from 'moment'
+
+suite('endOfMonth', function () {
+ benchmark('date-fns', function () {
+ return endOfMonth(this.date)
+ })
+
+ benchmark('Moment.js', function () {
+ return this.moment.endOf('month')
+ })
+}, {
+ setup: function () {
+ this.date = new Date()
+ this.moment = moment()
+ }
+})
diff --git a/date-fns/src/endOfMonth/index.d.ts b/date-fns/src/endOfMonth/index.d.ts
new file mode 100644
index 0000000..59e7354
--- /dev/null
+++ b/date-fns/src/endOfMonth/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { endOfMonth } from 'date-fns'
+export default endOfMonth
diff --git a/date-fns/src/endOfMonth/index.js.flow b/date-fns/src/endOfMonth/index.js.flow
new file mode 100644
index 0000000..4b7c616
--- /dev/null
+++ b/date-fns/src/endOfMonth/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (date: Date | number) => Date
diff --git a/date-fns/src/endOfMonth/index.ts b/date-fns/src/endOfMonth/index.ts
new file mode 100644
index 0000000..e5b8f9c
--- /dev/null
+++ b/date-fns/src/endOfMonth/index.ts
@@ -0,0 +1,34 @@
+import toDate from '../toDate/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name endOfMonth
+ * @category Month Helpers
+ * @summary Return the end of a month for the given date.
+ *
+ * @description
+ * Return the end of a month for the given date.
+ * The result will be in the local timezone.
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} date - the original date
+ * @returns {Date} the end of a month
+ * @throws {TypeError} 1 argument required
+ *
+ * @example
+ * // The end of a month for 2 September 2014 11:55:00:
+ * const result = endOfMonth(new Date(2014, 8, 2, 11, 55, 0))
+ * //=> Tue Sep 30 2014 23:59:59.999
+ */
+export default function endOfMonth(dirtyDate: Date | number): Date {
+ requiredArgs(1, arguments)
+
+ const date = toDate(dirtyDate)
+ const month = date.getMonth()
+ date.setFullYear(date.getFullYear(), month + 1, 0)
+ date.setHours(23, 59, 59, 999)
+ return date
+}
diff --git a/date-fns/src/endOfMonth/test.ts b/date-fns/src/endOfMonth/test.ts
new file mode 100644
index 0000000..bdc8494
--- /dev/null
+++ b/date-fns/src/endOfMonth/test.ts
@@ -0,0 +1,52 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import endOfMonth from '.'
+
+describe('endOfMonth', function() {
+ it('returns the date with the time set to 23:59:59.999 and the date set to the last day of a month', function() {
+ const date = new Date(2014, 8 /* Sep */, 2, 11, 55, 0)
+ const result = endOfMonth(date)
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */, 30, 23, 59, 59, 999))
+ })
+
+ it('accepts a timestamp', function() {
+ const date = new Date(2014, 8 /* Sep */, 2, 11, 55, 0).getTime()
+ const result = endOfMonth(date)
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */, 30, 23, 59, 59, 999))
+ })
+
+ it('does not mutate the original date', function() {
+ const date = new Date(2014, 8 /* Sep */, 2, 11, 55, 0)
+ endOfMonth(date)
+ assert.deepEqual(date, new Date(2014, 8 /* Sep */, 2, 11, 55, 0))
+ })
+
+ describe('edge cases', function() {
+ it('works for last month in year', function() {
+ const date = new Date(2014, 11 /* Dec */, 1, 0, 0, 0)
+ const result = endOfMonth(date)
+ assert.deepEqual(
+ result,
+ new Date(2014, 11 /* Dec */, 31, 23, 59, 59, 999)
+ )
+ })
+
+ it('works for last day of month', function() {
+ const date = new Date(2014, 9 /* Oct */, 31)
+ const result = endOfMonth(date)
+ assert.deepEqual(result, new Date(2014, 9 /* Oct */, 31, 23, 59, 59, 999))
+ })
+ })
+
+ it('returns `Invalid Date` if the given date is invalid', function() {
+ const result = endOfMonth(new Date(NaN))
+ //@ts-expect-error
+ assert(result instanceof Date && isNaN(result))
+ })
+
+ it('throws TypeError exception if passed less than 1 argument', function() {
+ assert.throws(endOfMonth.bind(null), TypeError)
+ })
+})
diff --git a/date-fns/src/endOfQuarter/benchmark.js b/date-fns/src/endOfQuarter/benchmark.js
new file mode 100644
index 0000000..6ec16a5
--- /dev/null
+++ b/date-fns/src/endOfQuarter/benchmark.js
@@ -0,0 +1,21 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import endOfQuarter from '.'
+import moment from 'moment'
+
+suite('endOfQuarter', function () {
+ benchmark('date-fns', function () {
+ return endOfQuarter(this.date)
+ })
+
+ benchmark('Moment.js', function () {
+ return this.moment.endOf('quarter')
+ })
+}, {
+ setup: function () {
+ this.date = new Date()
+ this.moment = moment()
+ }
+})
diff --git a/date-fns/src/endOfQuarter/index.d.ts b/date-fns/src/endOfQuarter/index.d.ts
new file mode 100644
index 0000000..c91ac76
--- /dev/null
+++ b/date-fns/src/endOfQuarter/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { endOfQuarter } from 'date-fns'
+export default endOfQuarter
diff --git a/date-fns/src/endOfQuarter/index.js.flow b/date-fns/src/endOfQuarter/index.js.flow
new file mode 100644
index 0000000..4b7c616
--- /dev/null
+++ b/date-fns/src/endOfQuarter/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (date: Date | number) => Date
diff --git a/date-fns/src/endOfQuarter/index.ts b/date-fns/src/endOfQuarter/index.ts
new file mode 100644
index 0000000..f0ad8a3
--- /dev/null
+++ b/date-fns/src/endOfQuarter/index.ts
@@ -0,0 +1,35 @@
+import toDate from '../toDate/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name endOfQuarter
+ * @category Quarter Helpers
+ * @summary Return the end of a year quarter for the given date.
+ *
+ * @description
+ * Return the end of a year quarter for the given date.
+ * The result will be in the local timezone.
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} date - the original date
+ * @returns {Date} the end of a quarter
+ * @throws {TypeError} 1 argument required
+ *
+ * @example
+ * // The end of a quarter for 2 September 2014 11:55:00:
+ * const result = endOfQuarter(new Date(2014, 8, 2, 11, 55, 0))
+ * //=> Tue Sep 30 2014 23:59:59.999
+ */
+export default function endOfQuarter(dirtyDate: Date | number): Date {
+ requiredArgs(1, arguments)
+
+ const date = toDate(dirtyDate)
+ const currentMonth = date.getMonth()
+ const month = currentMonth - (currentMonth % 3) + 3
+ date.setMonth(month, 0)
+ date.setHours(23, 59, 59, 999)
+ return date
+}
diff --git a/date-fns/src/endOfQuarter/test.ts b/date-fns/src/endOfQuarter/test.ts
new file mode 100644
index 0000000..11d2e5c
--- /dev/null
+++ b/date-fns/src/endOfQuarter/test.ts
@@ -0,0 +1,35 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import endOfQuarter from '.'
+
+describe('endOfQuarter', function() {
+ it('returns the date with the time set to 23:59:59.999 and the date set to the last day of a quarter', function() {
+ const date = new Date(2014, 8 /* Sep */, 2, 11, 55, 0)
+ const result = endOfQuarter(date)
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */, 30, 23, 59, 59, 999))
+ })
+
+ it('accepts a timestamp', function() {
+ const date = new Date(2014, 8 /* Sep */, 2, 11, 55, 0).getTime()
+ const result = endOfQuarter(date)
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */, 30, 23, 59, 59, 999))
+ })
+
+ it('does not mutate the original date', function() {
+ const date = new Date(2014, 8 /* Sep */, 2, 11, 55, 0)
+ endOfQuarter(date)
+ assert.deepEqual(date, new Date(2014, 8 /* Sep */, 2, 11, 55, 0))
+ })
+
+ it('returns `Invalid Date` if the given date is invalid', function() {
+ const result = endOfQuarter(new Date(NaN))
+ //@ts-expect-error
+ assert(result instanceof Date && isNaN(result))
+ })
+
+ it('throws TypeError exception if passed less than 1 argument', function() {
+ assert.throws(endOfQuarter.bind(null), TypeError)
+ })
+})
diff --git a/date-fns/src/endOfSecond/benchmark.js b/date-fns/src/endOfSecond/benchmark.js
new file mode 100644
index 0000000..ce9cc65
--- /dev/null
+++ b/date-fns/src/endOfSecond/benchmark.js
@@ -0,0 +1,21 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import endOfSecond from '.'
+import moment from 'moment'
+
+suite('endOfSecond', function () {
+ benchmark('date-fns', function () {
+ return endOfSecond(this.date)
+ })
+
+ benchmark('Moment.js', function () {
+ return this.moment.endOf('second')
+ })
+}, {
+ setup: function () {
+ this.date = new Date()
+ this.moment = moment()
+ }
+})
diff --git a/date-fns/src/endOfSecond/index.d.ts b/date-fns/src/endOfSecond/index.d.ts
new file mode 100644
index 0000000..3af9fbd
--- /dev/null
+++ b/date-fns/src/endOfSecond/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { endOfSecond } from 'date-fns'
+export default endOfSecond
diff --git a/date-fns/src/endOfSecond/index.js.flow b/date-fns/src/endOfSecond/index.js.flow
new file mode 100644
index 0000000..4b7c616
--- /dev/null
+++ b/date-fns/src/endOfSecond/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (date: Date | number) => Date
diff --git a/date-fns/src/endOfSecond/index.ts b/date-fns/src/endOfSecond/index.ts
new file mode 100644
index 0000000..2f185be
--- /dev/null
+++ b/date-fns/src/endOfSecond/index.ts
@@ -0,0 +1,32 @@
+import toDate from '../toDate/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name endOfSecond
+ * @category Second Helpers
+ * @summary Return the end of a second for the given date.
+ *
+ * @description
+ * Return the end of a second for the given date.
+ * The result will be in the local timezone.
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} date - the original date
+ * @returns {Date} the end of a second
+ * @throws {TypeError} 1 argument required
+ *
+ * @example
+ * // The end of a second for 1 December 2014 22:15:45.400:
+ * const result = endOfSecond(new Date(2014, 11, 1, 22, 15, 45, 400))
+ * //=> Mon Dec 01 2014 22:15:45.999
+ */
+export default function endOfSecond(dirtyDate: Date | number): Date {
+ requiredArgs(1, arguments)
+
+ const date = toDate(dirtyDate)
+ date.setMilliseconds(999)
+ return date
+}
diff --git a/date-fns/src/endOfSecond/test.ts b/date-fns/src/endOfSecond/test.ts
new file mode 100644
index 0000000..bd67ecd
--- /dev/null
+++ b/date-fns/src/endOfSecond/test.ts
@@ -0,0 +1,34 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import endOfSecond from '.'
+
+describe('endOfSecond', function() {
+ it('returns the date with the time set to the last millisecond before a second ends', function() {
+ const date = new Date(2014, 11, 1, 22, 15, 30)
+ const result = endOfSecond(date)
+ assert.deepEqual(result, new Date(2014, 11, 1, 22, 15, 30, 999))
+ })
+
+ it('accepts a timestamp', function() {
+ const result = endOfSecond(new Date(2014, 11, 1, 22, 15, 45).getTime())
+ assert.deepEqual(result, new Date(2014, 11, 1, 22, 15, 45, 999))
+ })
+
+ it('does not mutate the original date', function() {
+ const date = new Date(2014, 11, 1, 22, 15, 15, 300)
+ endOfSecond(date)
+ assert.deepEqual(date, new Date(2014, 11, 1, 22, 15, 15, 300))
+ })
+
+ it('returns `Invalid Date` if the given date is invalid', function() {
+ const result = endOfSecond(new Date(NaN))
+ //@ts-expect-error
+ assert(result instanceof Date && isNaN(result))
+ })
+
+ it('throws TypeError exception if passed less than 1 argument', function() {
+ assert.throws(endOfSecond.bind(null), TypeError)
+ })
+})
diff --git a/date-fns/src/endOfToday/benchmark.js b/date-fns/src/endOfToday/benchmark.js
new file mode 100644
index 0000000..515c528
--- /dev/null
+++ b/date-fns/src/endOfToday/benchmark.js
@@ -0,0 +1,9 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import endOfToday from '.'
+
+suite('endOfToday', () => {
+ benchmark('date-fns', () => endOfToday())
+})
diff --git a/date-fns/src/endOfToday/index.d.ts b/date-fns/src/endOfToday/index.d.ts
new file mode 100644
index 0000000..30de098
--- /dev/null
+++ b/date-fns/src/endOfToday/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { endOfToday } from 'date-fns'
+export default endOfToday
diff --git a/date-fns/src/endOfToday/index.js.flow b/date-fns/src/endOfToday/index.js.flow
new file mode 100644
index 0000000..26bde32
--- /dev/null
+++ b/date-fns/src/endOfToday/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: () => Date
diff --git a/date-fns/src/endOfToday/index.ts b/date-fns/src/endOfToday/index.ts
new file mode 100644
index 0000000..9d0c180
--- /dev/null
+++ b/date-fns/src/endOfToday/index.ts
@@ -0,0 +1,28 @@
+import endOfDay from '../endOfDay/index'
+
+/**
+ * @name endOfToday
+ * @category Day Helpers
+ * @summary Return the end of today.
+ * @pure false
+ *
+ * @description
+ * Return the end of today.
+ *
+ * > ⚠️ Please note that this function is not present in the FP submodule as
+ * > it uses `Date.now()` internally hence impure and can't be safely curried.
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @returns {Date} the end of today
+ *
+ * @example
+ * // If today is 6 October 2014:
+ * var result = endOfToday()
+ * //=> Mon Oct 6 2014 23:59:59.999
+ */
+export default function endOfToday(): Date {
+ return endOfDay(Date.now())
+}
diff --git a/date-fns/src/endOfToday/test.ts b/date-fns/src/endOfToday/test.ts
new file mode 100644
index 0000000..8aa0e69
--- /dev/null
+++ b/date-fns/src/endOfToday/test.ts
@@ -0,0 +1,24 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'assert'
+import sinon, { SinonFakeTimers } from 'sinon'
+import endOfToday from '.'
+
+describe('endOfToday', () => {
+ let clock: SinonFakeTimers
+ beforeEach(() => {
+ clock = sinon.useFakeTimers(
+ new Date(2014, 8 /* Sep */, 25, 14, 30, 45, 500).getTime()
+ )
+ })
+
+ afterEach(() => {
+ clock.restore()
+ })
+
+ it('returns the current date with the time settled to 23:59:59.999', () => {
+ const result = endOfToday()
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */, 25, 23, 59, 59, 999))
+ })
+})
diff --git a/date-fns/src/endOfTomorrow/benchmark.js b/date-fns/src/endOfTomorrow/benchmark.js
new file mode 100644
index 0000000..c2b7e6b
--- /dev/null
+++ b/date-fns/src/endOfTomorrow/benchmark.js
@@ -0,0 +1,9 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import endOfTomorrow from '.'
+
+suite('endOfTomorrow', () => {
+ benchmark('date-fns', () => endOfTomorrow())
+})
diff --git a/date-fns/src/endOfTomorrow/index.d.ts b/date-fns/src/endOfTomorrow/index.d.ts
new file mode 100644
index 0000000..df5619e
--- /dev/null
+++ b/date-fns/src/endOfTomorrow/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { endOfTomorrow } from 'date-fns'
+export default endOfTomorrow
diff --git a/date-fns/src/endOfTomorrow/index.js.flow b/date-fns/src/endOfTomorrow/index.js.flow
new file mode 100644
index 0000000..26bde32
--- /dev/null
+++ b/date-fns/src/endOfTomorrow/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: () => Date
diff --git a/date-fns/src/endOfTomorrow/index.ts b/date-fns/src/endOfTomorrow/index.ts
new file mode 100644
index 0000000..a196b1d
--- /dev/null
+++ b/date-fns/src/endOfTomorrow/index.ts
@@ -0,0 +1,34 @@
+/**
+ * @name endOfTomorrow
+ * @category Day Helpers
+ * @summary Return the end of tomorrow.
+ * @pure false
+ *
+ * @description
+ * Return the end of tomorrow.
+ *
+ * > ⚠️ Please note that this function is not present in the FP submodule as
+ * > it uses `new Date()` internally hence impure and can't be safely curried.
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @returns {Date} the end of tomorrow
+ *
+ * @example
+ * // If today is 6 October 2014:
+ * const result = endOfTomorrow()
+ * //=> Tue Oct 7 2014 23:59:59.999
+ */
+export default function endOfTomorrow(): Date {
+ const now = new Date()
+ const year = now.getFullYear()
+ const month = now.getMonth()
+ const day = now.getDate()
+
+ const date = new Date(0)
+ date.setFullYear(year, month, day + 1)
+ date.setHours(23, 59, 59, 999)
+ return date
+}
diff --git a/date-fns/src/endOfTomorrow/test.ts b/date-fns/src/endOfTomorrow/test.ts
new file mode 100644
index 0000000..01e5afe
--- /dev/null
+++ b/date-fns/src/endOfTomorrow/test.ts
@@ -0,0 +1,34 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'assert'
+import sinon from 'sinon'
+import endOfTomorrow from '.'
+
+describe('endOfTomorrow', function() {
+ it('returns tomorrow with the time settled to 23:59:59.999', function() {
+ const clock = sinon.useFakeTimers(
+ new Date(2014, 8 /* Sep */, 25, 14, 30, 45, 500).getTime()
+ )
+
+ const result = endOfTomorrow()
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */, 26, 23, 59, 59, 999))
+
+ clock.restore()
+ })
+
+ it('handles dates before 100 AD', function() {
+ const now = new Date(0)
+ now.setFullYear(14, 8 /* Sep */, 25)
+ now.setHours(14, 30, 45, 500)
+ const clock = sinon.useFakeTimers(now.getTime())
+
+ const expectedResult = new Date(0)
+ expectedResult.setFullYear(14, 8 /* Sep */, 26)
+ expectedResult.setHours(23, 59, 59, 999)
+ const result = endOfTomorrow()
+ assert.deepEqual(result, expectedResult)
+
+ clock.restore()
+ })
+})
diff --git a/date-fns/src/endOfWeek/benchmark.js b/date-fns/src/endOfWeek/benchmark.js
new file mode 100644
index 0000000..4731dc7
--- /dev/null
+++ b/date-fns/src/endOfWeek/benchmark.js
@@ -0,0 +1,21 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import endOfWeek from '.'
+import moment from 'moment'
+
+suite('endOfWeek', function () {
+ benchmark('date-fns', function () {
+ return endOfWeek(this.date)
+ })
+
+ benchmark('Moment.js', function () {
+ return this.moment.endOf('week')
+ })
+}, {
+ setup: function () {
+ this.date = new Date()
+ this.moment = moment()
+ }
+})
diff --git a/date-fns/src/endOfWeek/index.d.ts b/date-fns/src/endOfWeek/index.d.ts
new file mode 100644
index 0000000..50a77a3
--- /dev/null
+++ b/date-fns/src/endOfWeek/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { endOfWeek } from 'date-fns'
+export default endOfWeek
diff --git a/date-fns/src/endOfWeek/index.js.flow b/date-fns/src/endOfWeek/index.js.flow
new file mode 100644
index 0000000..9285b67
--- /dev/null
+++ b/date-fns/src/endOfWeek/index.js.flow
@@ -0,0 +1,58 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (
+ date: Date | number,
+ options?: {
+ locale?: Locale,
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ }
+) => Date
diff --git a/date-fns/src/endOfWeek/index.ts b/date-fns/src/endOfWeek/index.ts
new file mode 100644
index 0000000..f04a6f0
--- /dev/null
+++ b/date-fns/src/endOfWeek/index.ts
@@ -0,0 +1,67 @@
+import toDate from '../toDate/index'
+import toInteger from '../_lib/toInteger/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+import { LocaleOptions, WeekStartOptions } from '../types'
+
+/**
+ * @name endOfWeek
+ * @category Week Helpers
+ * @summary Return the end of a week for the given date.
+ *
+ * @description
+ * Return the end of a week for the given date.
+ * The result will be in the local timezone.
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} date - the original date
+ * @param {Object} [options] - an object with options.
+ * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}
+ * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)
+ * @returns {Date} the end of a week
+ * @throws {TypeError} 1 argument required
+ * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6
+ *
+ * @example
+ * // The end of a week for 2 September 2014 11:55:00:
+ * const result = endOfWeek(new Date(2014, 8, 2, 11, 55, 0))
+ * //=> Sat Sep 06 2014 23:59:59.999
+ *
+ * @example
+ * // If the week starts on Monday, the end of the week for 2 September 2014 11:55:00:
+ * const result = endOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })
+ * //=> Sun Sep 07 2014 23:59:59.999
+ */
+export default function endOfWeek(
+ dirtyDate: Date | number,
+ dirtyOptions?: LocaleOptions & WeekStartOptions
+): Date {
+ requiredArgs(1, arguments)
+
+ const options = dirtyOptions || {}
+
+ const locale = options.locale
+ const localeWeekStartsOn =
+ locale && locale.options && locale.options.weekStartsOn
+ const defaultWeekStartsOn =
+ localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn)
+ const weekStartsOn =
+ options.weekStartsOn == null
+ ? defaultWeekStartsOn
+ : toInteger(options.weekStartsOn)
+
+ // Test if weekStartsOn is between 0 and 6 _and_ is not NaN
+ if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {
+ throw new RangeError('weekStartsOn must be between 0 and 6 inclusively')
+ }
+
+ const date = toDate(dirtyDate)
+ const day = date.getDay()
+ const diff = (day < weekStartsOn ? -7 : 0) + 6 - (day - weekStartsOn)
+
+ date.setDate(date.getDate() + diff)
+ date.setHours(23, 59, 59, 999)
+ return date
+}
diff --git a/date-fns/src/endOfWeek/test.ts b/date-fns/src/endOfWeek/test.ts
new file mode 100644
index 0000000..83e1e2c
--- /dev/null
+++ b/date-fns/src/endOfWeek/test.ts
@@ -0,0 +1,144 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'assert'
+import endOfWeek from '.'
+
+describe('endOfWeek', function () {
+ it('returns the date with the time set to 23:59:59:999 and the date set to the last day of a week', function () {
+ var date = new Date(2014, 8 /* Sep */, 2, 11, 55, 0)
+ var result = endOfWeek(date)
+ assert.deepStrictEqual(
+ result,
+ new Date(2014, 8 /* Sep */, 6, 23, 59, 59, 999)
+ )
+ })
+
+ it('allows to specify which day is the first day of the week', function () {
+ var date = new Date(2014, 8 /* Sep */, 2, 11, 55, 0)
+ var result = endOfWeek(date, { weekStartsOn: 1 })
+ assert.deepStrictEqual(
+ result,
+ new Date(2014, 8 /* Sep */, 7, 23, 59, 59, 999)
+ )
+ })
+
+ it('allows to specify which day is the first day of the week in locale', function () {
+ var date = new Date(2014, 8 /* Sep */, 2, 11, 55, 0)
+ var result = endOfWeek(date, {
+ // @ts-expect-error
+ locale: {
+ options: { weekStartsOn: 1 },
+ },
+ })
+ assert.deepStrictEqual(
+ result,
+ new Date(2014, 8 /* Sep */, 7, 23, 59, 59, 999)
+ )
+ })
+
+ it('`options.weekStartsOn` overwrites the first day of the week specified in locale', function () {
+ var date = new Date(2014, 8 /* Sep */, 2, 11, 55, 0)
+ var result = endOfWeek(date, {
+ weekStartsOn: 1,
+ // @ts-expect-error
+ locale: {
+ options: { weekStartsOn: 0 },
+ },
+ })
+ assert.deepStrictEqual(
+ result,
+ new Date(2014, 8 /* Sep */, 7, 23, 59, 59, 999)
+ )
+ })
+
+ it('implicitly converts options', function () {
+ var date = new Date(2014, 8 /* Sep */, 2, 11, 55, 0)
+ // @ts-expect-error
+ var result = endOfWeek(date, { weekStartsOn: '1' })
+ assert.deepStrictEqual(
+ result,
+ new Date(2014, 8 /* Sep */, 7, 23, 59, 59, 999)
+ )
+ })
+
+ it('accepts a timestamp', function () {
+ var date = new Date(2014, 8 /* Sep */, 2, 11, 55, 0).getTime()
+ var result = endOfWeek(date)
+ assert.deepStrictEqual(
+ result,
+ new Date(2014, 8 /* Sep */, 6, 23, 59, 59, 999)
+ )
+ })
+
+ it('does not mutate the original date', function () {
+ var date = new Date(2014, 8 /* Sep */, 2, 11, 55, 0)
+ endOfWeek(date)
+ assert.deepStrictEqual(date, new Date(2014, 8 /* Sep */, 2, 11, 55, 0))
+ })
+
+ describe('edge cases', function () {
+ describe('when the given day is before the start of a week', function () {
+ it('it returns the end of a week', function () {
+ var date = new Date(2014, 9 /* Oct */, 6)
+ var result = endOfWeek(date, { weekStartsOn: 3 })
+ assert.deepStrictEqual(
+ result,
+ new Date(2014, 9 /* Oct */, 7, 23, 59, 59, 999)
+ )
+ })
+ })
+
+ describe('when the given day is the start of a week', function () {
+ it('it returns the end of a week', function () {
+ var date = new Date(2014, 9 /* Oct */, 8)
+ var result = endOfWeek(date, { weekStartsOn: 3 })
+ assert.deepStrictEqual(
+ result,
+ new Date(2014, 9 /* Oct */, 14, 23, 59, 59, 999)
+ )
+ })
+ })
+
+ describe('when the given day is after the start of a week', function () {
+ it('it returns the end of a week', function () {
+ var date = new Date(2014, 9 /* Oct */, 10)
+ var result = endOfWeek(date, { weekStartsOn: 3 })
+ assert.deepStrictEqual(
+ result,
+ new Date(2014, 9 /* Oct */, 14, 23, 59, 59, 999)
+ )
+ })
+ })
+
+ it('handles the week at the end of a year', function () {
+ var date = new Date(2014, 11 /* Dec */, 29)
+ var result = endOfWeek(date, { weekStartsOn: 5 })
+ assert.deepStrictEqual(
+ result,
+ new Date(2015, 0 /* Jan */, 1, 23, 59, 59, 999)
+ )
+ })
+ })
+
+ it('returns `Invalid Date` if the given date is invalid', function () {
+ var result = endOfWeek(new Date(NaN))
+ assert(result instanceof Date && isNaN(result.getTime()))
+ })
+
+ it('throws `RangeError` if `options.weekStartsOn` is not convertable to 0, 1, ..., 6 or undefined', function () {
+ // @ts-expect-error
+ var block = endOfWeek.bind(
+ null,
+ new Date(2014, 8 /* Sep */, 2, 11, 55, 0),
+ // $ExpectedMistake
+ { weekStartsOn: NaN }
+ )
+ assert.throws(block, RangeError)
+ })
+
+ it('throws TypeError exception if passed less than 1 argument', function () {
+ // @ts-expect-error
+ assert.throws(endOfWeek.bind(null), TypeError)
+ })
+})
diff --git a/date-fns/src/endOfYear/benchmark.js b/date-fns/src/endOfYear/benchmark.js
new file mode 100644
index 0000000..c39cc5c
--- /dev/null
+++ b/date-fns/src/endOfYear/benchmark.js
@@ -0,0 +1,21 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import endOfYear from '.'
+import moment from 'moment'
+
+suite('endOfYear', function () {
+ benchmark('date-fns', function () {
+ return endOfYear(this.date)
+ })
+
+ benchmark('Moment.js', function () {
+ return this.moment.endOf('year')
+ })
+}, {
+ setup: function () {
+ this.date = new Date()
+ this.moment = moment()
+ }
+})
diff --git a/date-fns/src/endOfYear/index.d.ts b/date-fns/src/endOfYear/index.d.ts
new file mode 100644
index 0000000..63d5191
--- /dev/null
+++ b/date-fns/src/endOfYear/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { endOfYear } from 'date-fns'
+export default endOfYear
diff --git a/date-fns/src/endOfYear/index.js.flow b/date-fns/src/endOfYear/index.js.flow
new file mode 100644
index 0000000..4b7c616
--- /dev/null
+++ b/date-fns/src/endOfYear/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (date: Date | number) => Date
diff --git a/date-fns/src/endOfYear/index.ts b/date-fns/src/endOfYear/index.ts
new file mode 100644
index 0000000..48034ee
--- /dev/null
+++ b/date-fns/src/endOfYear/index.ts
@@ -0,0 +1,34 @@
+import toDate from '../toDate/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name endOfYear
+ * @category Year Helpers
+ * @summary Return the end of a year for the given date.
+ *
+ * @description
+ * Return the end of a year for the given date.
+ * The result will be in the local timezone.
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} date - the original date
+ * @returns {Date} the end of a year
+ * @throws {TypeError} 1 argument required
+ *
+ * @example
+ * // The end of a year for 2 September 2014 11:55:00:
+ * var result = endOfYear(new Date(2014, 8, 2, 11, 55, 00))
+ * //=> Wed Dec 31 2014 23:59:59.999
+ */
+export default function endOfYear(dirtyDate: Date | number): Date {
+ requiredArgs(1, arguments)
+
+ var date = toDate(dirtyDate)
+ var year = date.getFullYear()
+ date.setFullYear(year + 1, 0, 0)
+ date.setHours(23, 59, 59, 999)
+ return date
+}
diff --git a/date-fns/src/endOfYear/test.ts b/date-fns/src/endOfYear/test.ts
new file mode 100644
index 0000000..223dba8
--- /dev/null
+++ b/date-fns/src/endOfYear/test.ts
@@ -0,0 +1,35 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import endOfYear from '.'
+
+describe('endOfYear', function() {
+ it('returns the date with the time set to 23:59:59.999 and the date set to the last day of a year', function() {
+ const date = new Date(2014, 8 /* Sep */, 2, 11, 55, 0)
+ const result = endOfYear(date)
+ assert.deepEqual(result, new Date(2014, 11 /* Dec */, 31, 23, 59, 59, 999))
+ })
+
+ it('accepts a timestamp', function() {
+ const date = new Date(2014, 8 /* Sep */, 2, 11, 55, 0).getTime()
+ const result = endOfYear(date)
+ assert.deepEqual(result, new Date(2014, 11 /* Dec */, 31, 23, 59, 59, 999))
+ })
+
+ it('does not mutate the original date', function() {
+ const date = new Date(2014, 8 /* Sep */, 2, 11, 55, 0)
+ endOfYear(date)
+ assert.deepEqual(date, new Date(2014, 8 /* Sep */, 2, 11, 55, 0))
+ })
+
+ it('returns `Invalid Date` if the given date is invalid', function() {
+ const result = endOfYear(new Date(NaN))
+ //@ts-expect-error
+ assert(result instanceof Date && isNaN(result))
+ })
+
+ it('throws TypeError exception if passed less than 1 argument', function() {
+ assert.throws(endOfYear.bind(null), TypeError)
+ })
+})
diff --git a/date-fns/src/endOfYesterday/benchmark.js b/date-fns/src/endOfYesterday/benchmark.js
new file mode 100644
index 0000000..e3681e5
--- /dev/null
+++ b/date-fns/src/endOfYesterday/benchmark.js
@@ -0,0 +1,9 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import endOfYesterday from '.'
+
+suite('endOfYesterday', () => {
+ benchmark('date-fns', () => endOfYesterday())
+})
diff --git a/date-fns/src/endOfYesterday/index.d.ts b/date-fns/src/endOfYesterday/index.d.ts
new file mode 100644
index 0000000..b06935b
--- /dev/null
+++ b/date-fns/src/endOfYesterday/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { endOfYesterday } from 'date-fns'
+export default endOfYesterday
diff --git a/date-fns/src/endOfYesterday/index.js.flow b/date-fns/src/endOfYesterday/index.js.flow
new file mode 100644
index 0000000..26bde32
--- /dev/null
+++ b/date-fns/src/endOfYesterday/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: () => Date
diff --git a/date-fns/src/endOfYesterday/index.ts b/date-fns/src/endOfYesterday/index.ts
new file mode 100644
index 0000000..6207cc5
--- /dev/null
+++ b/date-fns/src/endOfYesterday/index.ts
@@ -0,0 +1,34 @@
+/**
+ * @name endOfYesterday
+ * @category Day Helpers
+ * @summary Return the end of yesterday.
+ * @pure false
+ *
+ * @description
+ * Return the end of yesterday.
+ *
+ * > ⚠️ Please note that this function is not present in the FP submodule as
+ * > it uses `new Date()` internally hence impure and can't be safely curried.
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @returns {Date} the end of yesterday
+ *
+ * @example
+ * // If today is 6 October 2014:
+ * const result = endOfYesterday()
+ * //=> Sun Oct 5 2014 23:59:59.999
+ */
+export default function endOfYesterday(): Date {
+ const now = new Date()
+ const year = now.getFullYear()
+ const month = now.getMonth()
+ const day = now.getDate()
+
+ const date = new Date(0)
+ date.setFullYear(year, month, day - 1)
+ date.setHours(23, 59, 59, 999)
+ return date
+}
diff --git a/date-fns/src/endOfYesterday/test.ts b/date-fns/src/endOfYesterday/test.ts
new file mode 100644
index 0000000..4046e64
--- /dev/null
+++ b/date-fns/src/endOfYesterday/test.ts
@@ -0,0 +1,34 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'assert'
+import sinon from 'sinon'
+import endOfYesterday from '.'
+
+describe('endOfYesterday', () => {
+ it('returns yesterday with the time settled to 23:59:59.999', () => {
+ const clock = sinon.useFakeTimers(
+ new Date(2014, 8 /* Sep */, 25, 14, 30, 45, 500).getTime()
+ )
+
+ const result = endOfYesterday()
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */, 24, 23, 59, 59, 999))
+
+ clock.restore()
+ })
+
+ it('handles dates before 100 AD', () => {
+ const now = new Date(0)
+ now.setFullYear(14, 8 /* Sep */, 25)
+ now.setHours(14, 30, 45, 500)
+ const clock = sinon.useFakeTimers(now.getTime())
+
+ const expectedResult = new Date(0)
+ expectedResult.setFullYear(14, 8 /* Sep */, 24)
+ expectedResult.setHours(23, 59, 59, 999)
+ const result = endOfYesterday()
+ assert.deepEqual(result, expectedResult)
+
+ clock.restore()
+ })
+})
diff --git a/date-fns/src/format/benchmark.js b/date-fns/src/format/benchmark.js
new file mode 100644
index 0000000..38a9f86
--- /dev/null
+++ b/date-fns/src/format/benchmark.js
@@ -0,0 +1,21 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import format from '.'
+import moment from 'moment'
+
+suite('format', function () {
+ benchmark('date-fns', function () {
+ return format(this.date, 'dddd, MMMM Do YYYY, h:mm:ss a')
+ })
+
+ benchmark('Moment.js', function () {
+ return this.moment.format('dddd, MMMM Do YYYY, h:mm:ss a')
+ })
+}, {
+ setup: function () {
+ this.date = new Date()
+ this.moment = moment()
+ }
+})
diff --git a/date-fns/src/format/index.d.ts b/date-fns/src/format/index.d.ts
new file mode 100644
index 0000000..06d38ce
--- /dev/null
+++ b/date-fns/src/format/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { format } from 'date-fns'
+export default format
diff --git a/date-fns/src/format/index.js b/date-fns/src/format/index.js
new file mode 100644
index 0000000..5a532ea
--- /dev/null
+++ b/date-fns/src/format/index.js
@@ -0,0 +1,471 @@
+import isValid from '../isValid/index'
+import defaultLocale from '../locale/en-US/index'
+import subMilliseconds from '../subMilliseconds/index'
+import toDate from '../toDate/index'
+import formatters from '../_lib/format/formatters/index'
+import longFormatters from '../_lib/format/longFormatters/index'
+import getTimezoneOffsetInMilliseconds from '../_lib/getTimezoneOffsetInMilliseconds/index'
+import {
+ isProtectedDayOfYearToken,
+ isProtectedWeekYearToken,
+ throwProtectedError
+} from '../_lib/protectedTokens/index'
+import toInteger from '../_lib/toInteger/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+// This RegExp consists of three parts separated by `|`:
+// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token
+// (one of the certain letters followed by `o`)
+// - (\w)\1* matches any sequences of the same letter
+// - '' matches two quote characters in a row
+// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),
+// except a single quote symbol, which ends the sequence.
+// Two quote characters do not end the sequence.
+// If there is no matching single quote
+// then the sequence will continue until the end of the string.
+// - . matches any single character unmatched by previous parts of the RegExps
+var formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g
+
+// This RegExp catches symbols escaped by quotes, and also
+// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`
+var longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g
+
+var escapedStringRegExp = /^'([^]*?)'?$/
+var doubleQuoteRegExp = /''/g
+var unescapedLatinCharacterRegExp = /[a-zA-Z]/
+
+/**
+ * @name format
+ * @category Common Helpers
+ * @summary Format the date.
+ *
+ * @description
+ * Return the formatted date string in the given format. The result may vary by locale.
+ *
+ * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.
+ * > See: https://git.io/fxCyr
+ *
+ * The characters wrapped between two single quotes characters (') are escaped.
+ * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.
+ * (see the last example)
+ *
+ * Format of the string is based on Unicode Technical Standard #35:
+ * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table
+ * with a few additions (see note 7 below the table).
+ *
+ * Accepted patterns:
+ * | Unit | Pattern | Result examples | Notes |
+ * |---------------------------------|---------|-----------------------------------|-------|
+ * | Era | G..GGG | AD, BC | |
+ * | | GGGG | Anno Domini, Before Christ | 2 |
+ * | | GGGGG | A, B | |
+ * | Calendar year | y | 44, 1, 1900, 2017 | 5 |
+ * | | yo | 44th, 1st, 0th, 17th | 5,7 |
+ * | | yy | 44, 01, 00, 17 | 5 |
+ * | | yyy | 044, 001, 1900, 2017 | 5 |
+ * | | yyyy | 0044, 0001, 1900, 2017 | 5 |
+ * | | yyyyy | ... | 3,5 |
+ * | Local week-numbering year | Y | 44, 1, 1900, 2017 | 5 |
+ * | | Yo | 44th, 1st, 1900th, 2017th | 5,7 |
+ * | | YY | 44, 01, 00, 17 | 5,8 |
+ * | | YYY | 044, 001, 1900, 2017 | 5 |
+ * | | YYYY | 0044, 0001, 1900, 2017 | 5,8 |
+ * | | YYYYY | ... | 3,5 |
+ * | ISO week-numbering year | R | -43, 0, 1, 1900, 2017 | 5,7 |
+ * | | RR | -43, 00, 01, 1900, 2017 | 5,7 |
+ * | | RRR | -043, 000, 001, 1900, 2017 | 5,7 |
+ * | | RRRR | -0043, 0000, 0001, 1900, 2017 | 5,7 |
+ * | | RRRRR | ... | 3,5,7 |
+ * | Extended year | u | -43, 0, 1, 1900, 2017 | 5 |
+ * | | uu | -43, 01, 1900, 2017 | 5 |
+ * | | uuu | -043, 001, 1900, 2017 | 5 |
+ * | | uuuu | -0043, 0001, 1900, 2017 | 5 |
+ * | | uuuuu | ... | 3,5 |
+ * | Quarter (formatting) | Q | 1, 2, 3, 4 | |
+ * | | Qo | 1st, 2nd, 3rd, 4th | 7 |
+ * | | QQ | 01, 02, 03, 04 | |
+ * | | QQQ | Q1, Q2, Q3, Q4 | |
+ * | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |
+ * | | QQQQQ | 1, 2, 3, 4 | 4 |
+ * | Quarter (stand-alone) | q | 1, 2, 3, 4 | |
+ * | | qo | 1st, 2nd, 3rd, 4th | 7 |
+ * | | qq | 01, 02, 03, 04 | |
+ * | | qqq | Q1, Q2, Q3, Q4 | |
+ * | | qqqq | 1st quarter, 2nd quarter, ... | 2 |
+ * | | qqqqq | 1, 2, 3, 4 | 4 |
+ * | Month (formatting) | M | 1, 2, ..., 12 | |
+ * | | Mo | 1st, 2nd, ..., 12th | 7 |
+ * | | MM | 01, 02, ..., 12 | |
+ * | | MMM | Jan, Feb, ..., Dec | |
+ * | | MMMM | January, February, ..., December | 2 |
+ * | | MMMMM | J, F, ..., D | |
+ * | Month (stand-alone) | L | 1, 2, ..., 12 | |
+ * | | Lo | 1st, 2nd, ..., 12th | 7 |
+ * | | LL | 01, 02, ..., 12 | |
+ * | | LLL | Jan, Feb, ..., Dec | |
+ * | | LLLL | January, February, ..., December | 2 |
+ * | | LLLLL | J, F, ..., D | |
+ * | Local week of year | w | 1, 2, ..., 53 | |
+ * | | wo | 1st, 2nd, ..., 53th | 7 |
+ * | | ww | 01, 02, ..., 53 | |
+ * | ISO week of year | I | 1, 2, ..., 53 | 7 |
+ * | | Io | 1st, 2nd, ..., 53th | 7 |
+ * | | II | 01, 02, ..., 53 | 7 |
+ * | Day of month | d | 1, 2, ..., 31 | |
+ * | | do | 1st, 2nd, ..., 31st | 7 |
+ * | | dd | 01, 02, ..., 31 | |
+ * | Day of year | D | 1, 2, ..., 365, 366 | 9 |
+ * | | Do | 1st, 2nd, ..., 365th, 366th | 7 |
+ * | | DD | 01, 02, ..., 365, 366 | 9 |
+ * | | DDD | 001, 002, ..., 365, 366 | |
+ * | | DDDD | ... | 3 |
+ * | Day of week (formatting) | E..EEE | Mon, Tue, Wed, ..., Sun | |
+ * | | EEEE | Monday, Tuesday, ..., Sunday | 2 |
+ * | | EEEEE | M, T, W, T, F, S, S | |
+ * | | EEEEEE | Mo, Tu, We, Th, Fr, Su, Sa | |
+ * | ISO day of week (formatting) | i | 1, 2, 3, ..., 7 | 7 |
+ * | | io | 1st, 2nd, ..., 7th | 7 |
+ * | | ii | 01, 02, ..., 07 | 7 |
+ * | | iii | Mon, Tue, Wed, ..., Sun | 7 |
+ * | | iiii | Monday, Tuesday, ..., Sunday | 2,7 |
+ * | | iiiii | M, T, W, T, F, S, S | 7 |
+ * | | iiiiii | Mo, Tu, We, Th, Fr, Su, Sa | 7 |
+ * | Local day of week (formatting) | e | 2, 3, 4, ..., 1 | |
+ * | | eo | 2nd, 3rd, ..., 1st | 7 |
+ * | | ee | 02, 03, ..., 01 | |
+ * | | eee | Mon, Tue, Wed, ..., Sun | |
+ * | | eeee | Monday, Tuesday, ..., Sunday | 2 |
+ * | | eeeee | M, T, W, T, F, S, S | |
+ * | | eeeeee | Mo, Tu, We, Th, Fr, Su, Sa | |
+ * | Local day of week (stand-alone) | c | 2, 3, 4, ..., 1 | |
+ * | | co | 2nd, 3rd, ..., 1st | 7 |
+ * | | cc | 02, 03, ..., 01 | |
+ * | | ccc | Mon, Tue, Wed, ..., Sun | |
+ * | | cccc | Monday, Tuesday, ..., Sunday | 2 |
+ * | | ccccc | M, T, W, T, F, S, S | |
+ * | | cccccc | Mo, Tu, We, Th, Fr, Su, Sa | |
+ * | AM, PM | a..aa | AM, PM | |
+ * | | aaa | am, pm | |
+ * | | aaaa | a.m., p.m. | 2 |
+ * | | aaaaa | a, p | |
+ * | AM, PM, noon, midnight | b..bb | AM, PM, noon, midnight | |
+ * | | bbb | am, pm, noon, midnight | |
+ * | | bbbb | a.m., p.m., noon, midnight | 2 |
+ * | | bbbbb | a, p, n, mi | |
+ * | Flexible day period | B..BBB | at night, in the morning, ... | |
+ * | | BBBB | at night, in the morning, ... | 2 |
+ * | | BBBBB | at night, in the morning, ... | |
+ * | Hour [1-12] | h | 1, 2, ..., 11, 12 | |
+ * | | ho | 1st, 2nd, ..., 11th, 12th | 7 |
+ * | | hh | 01, 02, ..., 11, 12 | |
+ * | Hour [0-23] | H | 0, 1, 2, ..., 23 | |
+ * | | Ho | 0th, 1st, 2nd, ..., 23rd | 7 |
+ * | | HH | 00, 01, 02, ..., 23 | |
+ * | Hour [0-11] | K | 1, 2, ..., 11, 0 | |
+ * | | Ko | 1st, 2nd, ..., 11th, 0th | 7 |
+ * | | KK | 01, 02, ..., 11, 00 | |
+ * | Hour [1-24] | k | 24, 1, 2, ..., 23 | |
+ * | | ko | 24th, 1st, 2nd, ..., 23rd | 7 |
+ * | | kk | 24, 01, 02, ..., 23 | |
+ * | Minute | m | 0, 1, ..., 59 | |
+ * | | mo | 0th, 1st, ..., 59th | 7 |
+ * | | mm | 00, 01, ..., 59 | |
+ * | Second | s | 0, 1, ..., 59 | |
+ * | | so | 0th, 1st, ..., 59th | 7 |
+ * | | ss | 00, 01, ..., 59 | |
+ * | Fraction of second | S | 0, 1, ..., 9 | |
+ * | | SS | 00, 01, ..., 99 | |
+ * | | SSS | 000, 001, ..., 999 | |
+ * | | SSSS | ... | 3 |
+ * | Timezone (ISO-8601 w/ Z) | X | -08, +0530, Z | |
+ * | | XX | -0800, +0530, Z | |
+ * | | XXX | -08:00, +05:30, Z | |
+ * | | XXXX | -0800, +0530, Z, +123456 | 2 |
+ * | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |
+ * | Timezone (ISO-8601 w/o Z) | x | -08, +0530, +00 | |
+ * | | xx | -0800, +0530, +0000 | |
+ * | | xxx | -08:00, +05:30, +00:00 | 2 |
+ * | | xxxx | -0800, +0530, +0000, +123456 | |
+ * | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |
+ * | Timezone (GMT) | O...OOO | GMT-8, GMT+5:30, GMT+0 | |
+ * | | OOOO | GMT-08:00, GMT+05:30, GMT+00:00 | 2 |
+ * | Timezone (specific non-locat.) | z...zzz | GMT-8, GMT+5:30, GMT+0 | 6 |
+ * | | zzzz | GMT-08:00, GMT+05:30, GMT+00:00 | 2,6 |
+ * | Seconds timestamp | t | 512969520 | 7 |
+ * | | tt | ... | 3,7 |
+ * | Milliseconds timestamp | T | 512969520900 | 7 |
+ * | | TT | ... | 3,7 |
+ * | Long localized date | P | 04/29/1453 | 7 |
+ * | | PP | Apr 29, 1453 | 7 |
+ * | | PPP | April 29th, 1453 | 7 |
+ * | | PPPP | Friday, April 29th, 1453 | 2,7 |
+ * | Long localized time | p | 12:00 AM | 7 |
+ * | | pp | 12:00:00 AM | 7 |
+ * | | ppp | 12:00:00 AM GMT+2 | 7 |
+ * | | pppp | 12:00:00 AM GMT+02:00 | 2,7 |
+ * | Combination of date and time | Pp | 04/29/1453, 12:00 AM | 7 |
+ * | | PPpp | Apr 29, 1453, 12:00:00 AM | 7 |
+ * | | PPPppp | April 29th, 1453 at ... | 7 |
+ * | | PPPPpppp| Friday, April 29th, 1453 at ... | 2,7 |
+ * Notes:
+ * 1. "Formatting" units (e.g. formatting quarter) in the default en-US locale
+ * are the same as "stand-alone" units, but are different in some languages.
+ * "Formatting" units are declined according to the rules of the language
+ * in the context of a date. "Stand-alone" units are always nominative singular:
+ *
+ * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`
+ *
+ * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`
+ *
+ * 2. Any sequence of the identical letters is a pattern, unless it is escaped by
+ * the single quote characters (see below).
+ * If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)
+ * the output will be the same as default pattern for this unit, usually
+ * the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units
+ * are marked with "2" in the last column of the table.
+ *
+ * `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`
+ *
+ * `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`
+ *
+ * `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`
+ *
+ * `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`
+ *
+ * `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`
+ *
+ * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).
+ * The output will be padded with zeros to match the length of the pattern.
+ *
+ * `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`
+ *
+ * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.
+ * These tokens represent the shortest form of the quarter.
+ *
+ * 5. The main difference between `y` and `u` patterns are B.C. years:
+ *
+ * | Year | `y` | `u` |
+ * |------|-----|-----|
+ * | AC 1 | 1 | 1 |
+ * | BC 1 | 1 | 0 |
+ * | BC 2 | 2 | -1 |
+ *
+ * Also `yy` always returns the last two digits of a year,
+ * while `uu` pads single digit years to 2 characters and returns other years unchanged:
+ *
+ * | Year | `yy` | `uu` |
+ * |------|------|------|
+ * | 1 | 01 | 01 |
+ * | 14 | 14 | 14 |
+ * | 376 | 76 | 376 |
+ * | 1453 | 53 | 1453 |
+ *
+ * The same difference is true for local and ISO week-numbering years (`Y` and `R`),
+ * except local week-numbering years are dependent on `options.weekStartsOn`
+ * and `options.firstWeekContainsDate` (compare [getISOWeekYear]{@link https://date-fns.org/docs/getISOWeekYear}
+ * and [getWeekYear]{@link https://date-fns.org/docs/getWeekYear}).
+ *
+ * 6. Specific non-location timezones are currently unavailable in `date-fns`,
+ * so right now these tokens fall back to GMT timezones.
+ *
+ * 7. These patterns are not in the Unicode Technical Standard #35:
+ * - `i`: ISO day of week
+ * - `I`: ISO week of year
+ * - `R`: ISO week-numbering year
+ * - `t`: seconds timestamp
+ * - `T`: milliseconds timestamp
+ * - `o`: ordinal number modifier
+ * - `P`: long localized date
+ * - `p`: long localized time
+ *
+ * 8. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.
+ * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://git.io/fxCyr
+ *
+ * 9. `D` and `DD` tokens represent days of the year but they are ofthen confused with days of the month.
+ * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://git.io/fxCyr
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * - The second argument is now required for the sake of explicitness.
+ *
+ * ```javascript
+ * // Before v2.0.0
+ * format(new Date(2016, 0, 1))
+ *
+ * // v2.0.0 onward
+ * format(new Date(2016, 0, 1), "yyyy-MM-dd'T'HH:mm:ss.SSSxxx")
+ * ```
+ *
+ * - New format string API for `format` function
+ * which is based on [Unicode Technical Standard #35](https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table).
+ * See [this post](https://blog.date-fns.org/post/unicode-tokens-in-date-fns-v2-sreatyki91jg) for more details.
+ *
+ * - Characters are now escaped using single quote symbols (`'`) instead of square brackets.
+ *
+ * @param {Date|Number} date - the original date
+ * @param {String} format - the string of tokens
+ * @param {Object} [options] - an object with options.
+ * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}
+ * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)
+ * @param {Number} [options.firstWeekContainsDate=1] - the day of January, which is
+ * @param {Boolean} [options.useAdditionalWeekYearTokens=false] - if true, allows usage of the week-numbering year tokens `YY` and `YYYY`;
+ * see: https://git.io/fxCyr
+ * @param {Boolean} [options.useAdditionalDayOfYearTokens=false] - if true, allows usage of the day of year tokens `D` and `DD`;
+ * see: https://git.io/fxCyr
+ * @returns {String} the formatted date string
+ * @throws {TypeError} 2 arguments required
+ * @throws {RangeError} `date` must not be Invalid Date
+ * @throws {RangeError} `options.locale` must contain `localize` property
+ * @throws {RangeError} `options.locale` must contain `formatLong` property
+ * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6
+ * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7
+ * @throws {RangeError} use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://git.io/fxCyr
+ * @throws {RangeError} use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://git.io/fxCyr
+ * @throws {RangeError} use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://git.io/fxCyr
+ * @throws {RangeError} use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://git.io/fxCyr
+ * @throws {RangeError} format string contains an unescaped latin alphabet character
+ *
+ * @example
+ * // Represent 11 February 2014 in middle-endian format:
+ * var result = format(new Date(2014, 1, 11), 'MM/dd/yyyy')
+ * //=> '02/11/2014'
+ *
+ * @example
+ * // Represent 2 July 2014 in Esperanto:
+ * import { eoLocale } from 'date-fns/locale/eo'
+ * var result = format(new Date(2014, 6, 2), "do 'de' MMMM yyyy", {
+ * locale: eoLocale
+ * })
+ * //=> '2-a de julio 2014'
+ *
+ * @example
+ * // Escape string by single quote characters:
+ * var result = format(new Date(2014, 6, 2, 15), "h 'o''clock'")
+ * //=> "3 o'clock"
+ */
+export default function format(dirtyDate, dirtyFormatStr, dirtyOptions) {
+ requiredArgs(2, arguments)
+
+ var formatStr = String(dirtyFormatStr)
+ var options = dirtyOptions || {}
+
+ var locale = options.locale || defaultLocale
+
+ var localeFirstWeekContainsDate =
+ locale.options && locale.options.firstWeekContainsDate
+ var defaultFirstWeekContainsDate =
+ localeFirstWeekContainsDate == null
+ ? 1
+ : toInteger(localeFirstWeekContainsDate)
+ var firstWeekContainsDate =
+ options.firstWeekContainsDate == null
+ ? defaultFirstWeekContainsDate
+ : toInteger(options.firstWeekContainsDate)
+
+ // Test if weekStartsOn is between 1 and 7 _and_ is not NaN
+ if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {
+ throw new RangeError(
+ 'firstWeekContainsDate must be between 1 and 7 inclusively'
+ )
+ }
+
+ var localeWeekStartsOn = locale.options && locale.options.weekStartsOn
+ var defaultWeekStartsOn =
+ localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn)
+ var weekStartsOn =
+ options.weekStartsOn == null
+ ? defaultWeekStartsOn
+ : toInteger(options.weekStartsOn)
+
+ // Test if weekStartsOn is between 0 and 6 _and_ is not NaN
+ if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {
+ throw new RangeError('weekStartsOn must be between 0 and 6 inclusively')
+ }
+
+ if (!locale.localize) {
+ throw new RangeError('locale must contain localize property')
+ }
+
+ if (!locale.formatLong) {
+ throw new RangeError('locale must contain formatLong property')
+ }
+
+ var originalDate = toDate(dirtyDate)
+
+ if (!isValid(originalDate)) {
+ throw new RangeError('Invalid time value')
+ }
+
+ // Convert the date in system timezone to the same date in UTC+00:00 timezone.
+ // This ensures that when UTC functions will be implemented, locales will be compatible with them.
+ // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/376
+ var timezoneOffset = getTimezoneOffsetInMilliseconds(originalDate)
+ var utcDate = subMilliseconds(originalDate, timezoneOffset)
+
+ var formatterOptions = {
+ firstWeekContainsDate: firstWeekContainsDate,
+ weekStartsOn: weekStartsOn,
+ locale: locale,
+ _originalDate: originalDate
+ }
+
+ var result = formatStr
+ .match(longFormattingTokensRegExp)
+ .map(function(substring) {
+ var firstCharacter = substring[0]
+ if (firstCharacter === 'p' || firstCharacter === 'P') {
+ var longFormatter = longFormatters[firstCharacter]
+ return longFormatter(substring, locale.formatLong, formatterOptions)
+ }
+ return substring
+ })
+ .join('')
+ .match(formattingTokensRegExp)
+ .map(function(substring) {
+ // Replace two single quote characters with one single quote character
+ if (substring === "''") {
+ return "'"
+ }
+
+ var firstCharacter = substring[0]
+ if (firstCharacter === "'") {
+ return cleanEscapedString(substring)
+ }
+
+ var formatter = formatters[firstCharacter]
+ if (formatter) {
+ if (
+ !options.useAdditionalWeekYearTokens &&
+ isProtectedWeekYearToken(substring)
+ ) {
+ throwProtectedError(substring, dirtyFormatStr, dirtyDate)
+ }
+ if (
+ !options.useAdditionalDayOfYearTokens &&
+ isProtectedDayOfYearToken(substring)
+ ) {
+ throwProtectedError(substring, dirtyFormatStr, dirtyDate)
+ }
+ return formatter(utcDate, substring, locale.localize, formatterOptions)
+ }
+
+ if (firstCharacter.match(unescapedLatinCharacterRegExp)) {
+ throw new RangeError(
+ 'Format string contains an unescaped latin alphabet character `' +
+ firstCharacter +
+ '`'
+ )
+ }
+
+ return substring
+ })
+ .join('')
+
+ return result
+}
+
+function cleanEscapedString(input) {
+ return input.match(escapedStringRegExp)[1].replace(doubleQuoteRegExp, "'")
+}
diff --git a/date-fns/src/format/index.js.flow b/date-fns/src/format/index.js.flow
new file mode 100644
index 0000000..ca79393
--- /dev/null
+++ b/date-fns/src/format/index.js.flow
@@ -0,0 +1,62 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (
+ date: Date | number,
+ format: string,
+ options?: {
+ locale?: Locale,
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: number,
+ useAdditionalWeekYearTokens?: boolean,
+ useAdditionalDayOfYearTokens?: boolean,
+ }
+) => string
diff --git a/date-fns/src/format/test.js b/date-fns/src/format/test.js
new file mode 100644
index 0000000..97ad003
--- /dev/null
+++ b/date-fns/src/format/test.js
@@ -0,0 +1,813 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import format from '.'
+
+describe('format', function () {
+ var date = new Date(1986, 3 /* Apr */, 4, 10, 32, 55, 123)
+
+ var offset = date.getTimezoneOffset()
+ var absoluteOffset = Math.abs(offset)
+ var hours = Math.floor(absoluteOffset / 60)
+ var hoursLeadingZero = hours < 10 ? '0' : ''
+ var minutes = absoluteOffset % 60
+ var minutesLeadingZero = minutes < 10 ? '0' : ''
+ var sign = offset > 0 ? '-' : '+'
+
+ var timezone =
+ sign + hoursLeadingZero + hours + ':' + minutesLeadingZero + minutes
+ var timezoneShort = timezone.replace(':', '')
+ var timezoneWithOptionalMinutesShort =
+ minutes === 0 ? sign + hoursLeadingZero + hours : timezoneShort
+
+ var timezoneWithZ = offset === 0 ? 'Z' : timezone
+ var timezoneWithZShort = offset === 0 ? 'Z' : timezoneShort
+ var timezoneWithOptionalMinutesAndZShort =
+ offset === 0 ? 'Z' : timezoneWithOptionalMinutesShort
+
+ var timezoneGMTShort =
+ minutes === 0
+ ? 'GMT' + sign + hours
+ : 'GMT' + sign + hours + ':' + minutesLeadingZero + minutes
+ var timezoneGMT = 'GMT' + timezone
+
+ var timestamp = date.getTime().toString()
+ var secondsTimestamp = Math.floor(date.getTime() / 1000).toString()
+
+ it('accepts a timestamp', function () {
+ var date = new Date(2014, 3, 4).getTime()
+ assert(format(date, 'yyyy-MM-dd') === '2014-04-04')
+ })
+
+ it('escapes characters between the single quote characters', function () {
+ var result = format(date, "'yyyy-'MM-dd'THH:mm:ss.SSSX' yyyy-'MM-dd'")
+ assert(result === 'yyyy-04-04THH:mm:ss.SSSX 1986-MM-dd')
+ })
+
+ it('two single quote characters are transformed into a "real" single quote', function () {
+ var date = new Date(2014, 3, 4, 5)
+ assert(format(date, "''h 'o''clock'''") === "'5 o'clock'")
+ })
+
+ it('accepts new line charactor', function () {
+ var date = new Date(2014, 3, 4, 5)
+ assert.equal(format(date, "yyyy-MM-dd'\n'HH:mm:ss"), '2014-04-04\n05:00:00')
+ })
+
+ describe('ordinal numbers', function () {
+ it('ordinal day of an ordinal month', function () {
+ var result = format(date, "do 'day of the' Mo 'month of' yyyy")
+ assert(result === '4th day of the 4th month of 1986')
+ })
+
+ it('should return a correct ordinal number', function () {
+ var result = []
+ for (var i = 1; i <= 31; i++) {
+ result.push(format(new Date(2015, 0, i), 'do'))
+ }
+ var expected = [
+ '1st',
+ '2nd',
+ '3rd',
+ '4th',
+ '5th',
+ '6th',
+ '7th',
+ '8th',
+ '9th',
+ '10th',
+ '11th',
+ '12th',
+ '13th',
+ '14th',
+ '15th',
+ '16th',
+ '17th',
+ '18th',
+ '19th',
+ '20th',
+ '21st',
+ '22nd',
+ '23rd',
+ '24th',
+ '25th',
+ '26th',
+ '27th',
+ '28th',
+ '29th',
+ '30th',
+ '31st',
+ ]
+ assert.deepEqual(result, expected)
+ })
+ })
+
+ it('era', function () {
+ var result = format(date, 'G GG GGG GGGG GGGGG')
+ assert(result === 'AD AD AD Anno Domini A')
+ })
+
+ describe('year', function () {
+ describe('regular year', function () {
+ it('works as expected', function () {
+ var result = format(date, 'y yo yy yyy yyyy yyyyy')
+ assert(result === '1986 1986th 86 1986 1986 01986')
+ })
+
+ it('1 BC formats as 1', function () {
+ var date = new Date(0)
+ date.setFullYear(0, 0 /* Jan */, 1)
+ date.setHours(0, 0, 0, 0)
+ var result = format(date, 'y')
+ assert(result === '1')
+ })
+
+ it('2 BC formats as 2', function () {
+ var date = new Date(0)
+ date.setFullYear(-1, 0 /* Jan */, 1)
+ date.setHours(0, 0, 0, 0)
+ var result = format(date, 'y')
+ assert(result === '2')
+ })
+ })
+
+ describe('local week-numbering year', function () {
+ it('works as expected', function () {
+ var result = format(date, 'Y Yo YY YYY YYYY YYYYY', {
+ useAdditionalWeekYearTokens: true,
+ })
+ assert(result === '1986 1986th 86 1986 1986 01986')
+ })
+
+ it('the first week of the next year', function () {
+ var result = format(new Date(2013, 11 /* Dec */, 29), 'YYYY', {
+ useAdditionalWeekYearTokens: true,
+ })
+ assert(result === '2014')
+ })
+
+ it('allows to specify `weekStartsOn` and `firstWeekContainsDate` in options', function () {
+ var result = format(new Date(2013, 11 /* Dec */, 29), 'YYYY', {
+ weekStartsOn: 1,
+ firstWeekContainsDate: 4,
+ useAdditionalWeekYearTokens: true,
+ })
+ assert(result === '2013')
+ })
+
+ it('the first week of year', function () {
+ var result = format(new Date(2016, 0 /* Jan */, 1), 'YYYY', {
+ useAdditionalWeekYearTokens: true,
+ })
+ assert(result === '2016')
+ })
+
+ it('1 BC formats as 1', function () {
+ var date = new Date(0)
+ date.setFullYear(0, 6 /* Jul */, 2)
+ date.setHours(0, 0, 0, 0)
+ var result = format(date, 'Y')
+ assert(result === '1')
+ })
+
+ it('2 BC formats as 2', function () {
+ var date = new Date(0)
+ date.setFullYear(-1, 6 /* Jul */, 2)
+ date.setHours(0, 0, 0, 0)
+ var result = format(date, 'Y')
+ assert(result === '2')
+ })
+ })
+
+ describe('ISO week-numbering year', function () {
+ it('works as expected', function () {
+ var result = format(date, 'R RR RRR RRRR RRRRR')
+ assert(result === '1986 1986 1986 1986 01986')
+ })
+
+ it('the first week of the next year', function () {
+ var result = format(new Date(2013, 11 /* Dec */, 30), 'RRRR')
+ assert(result === '2014')
+ })
+
+ it('the last week of the previous year', function () {
+ var result = format(new Date(2016, 0 /* Jan */, 1), 'RRRR')
+ assert(result === '2015')
+ })
+
+ it('1 BC formats as 0', function () {
+ var date = new Date(0)
+ date.setFullYear(0, 6 /* Jul */, 2)
+ date.setHours(0, 0, 0, 0)
+ var result = format(date, 'R')
+ assert(result === '0')
+ })
+
+ it('2 BC formats as -1', function () {
+ var date = new Date(0)
+ date.setFullYear(-1, 6 /* Jul */, 2)
+ date.setHours(0, 0, 0, 0)
+ var result = format(date, 'R')
+ assert(result === '-1')
+ })
+ })
+
+ describe('extended year', function () {
+ it('works as expected', function () {
+ var result = format(date, 'u uu uuu uuuu uuuuu')
+ assert(result === '1986 1986 1986 1986 01986')
+ })
+
+ it('1 BC formats as 0', function () {
+ var date = new Date(0)
+ date.setFullYear(0, 0, 1)
+ date.setHours(0, 0, 0, 0)
+ var result = format(date, 'u')
+ assert(result === '0')
+ })
+
+ it('2 BC formats as -1', function () {
+ var date = new Date(0)
+ date.setFullYear(-1, 0, 1)
+ date.setHours(0, 0, 0, 0)
+ var result = format(date, 'u')
+ assert(result === '-1')
+ })
+ })
+ })
+
+ describe('quarter', function () {
+ it('formatting quarter', function () {
+ var result = format(date, 'Q Qo QQ QQQ QQQQ QQQQQ')
+ assert(result === '2 2nd 02 Q2 2nd quarter 2')
+ })
+
+ it('stand-alone quarter', function () {
+ var result = format(date, 'q qo qq qqq qqqq qqqqq')
+ assert(result === '2 2nd 02 Q2 2nd quarter 2')
+ })
+
+ it('returns a correct quarter for each month', function () {
+ var result = []
+ for (var i = 0; i <= 11; i++) {
+ result.push(format(new Date(1986, i, 1), 'Q'))
+ }
+ var expected = [
+ '1',
+ '1',
+ '1',
+ '2',
+ '2',
+ '2',
+ '3',
+ '3',
+ '3',
+ '4',
+ '4',
+ '4',
+ ]
+ assert.deepEqual(result, expected)
+ })
+ })
+
+ describe('month', function () {
+ it('formatting month', function () {
+ var result = format(date, 'M Mo MM MMM MMMM MMMMM')
+ assert(result === '4 4th 04 Apr April A')
+ })
+
+ it('stand-alone month', function () {
+ var result = format(date, 'L Lo LL LLL LLLL LLLLL')
+ assert(result === '4 4th 04 Apr April A')
+ })
+ })
+
+ describe('week', function () {
+ describe('local week of year', function () {
+ it('works as expected', function () {
+ var date = new Date(1986, 3 /* Apr */, 6)
+ var result = format(date, 'w wo ww')
+ assert(result === '15 15th 15')
+ })
+
+ it('allows to specify `weekStartsOn` and `firstWeekContainsDate` in options', function () {
+ var date = new Date(1986, 3 /* Apr */, 6)
+ var result = format(date, 'w wo ww', {
+ weekStartsOn: 1,
+ firstWeekContainsDate: 4,
+ })
+ assert(result === '14 14th 14')
+ })
+ })
+
+ it('ISO week of year', function () {
+ var date = new Date(1986, 3 /* Apr */, 6)
+ var result = format(date, 'I Io II')
+ assert(result === '14 14th 14')
+ })
+ })
+
+ describe('day', function () {
+ it('date', function () {
+ var result = format(date, 'd do dd')
+ assert(result === '4 4th 04')
+ })
+
+ describe('day of year', function () {
+ it('works as expected', function () {
+ var result = format(date, 'D Do DD DDD DDDDD', {
+ useAdditionalDayOfYearTokens: true,
+ })
+ assert(result === '94 94th 94 094 00094')
+ })
+
+ it('returns a correct day number for the last day of a leap year', function () {
+ var result = format(
+ new Date(1992, 11 /* Dec */, 31, 23, 59, 59, 999),
+ 'D',
+ { useAdditionalDayOfYearTokens: true }
+ )
+ assert(result === '366')
+ })
+ })
+ })
+
+ describe('week day', function () {
+ describe('day of week', function () {
+ it('works as expected', function () {
+ var result = format(date, 'E EE EEE EEEE EEEEE EEEEEE')
+ assert(result === 'Fri Fri Fri Friday F Fr')
+ })
+ })
+
+ describe('ISO day of week', function () {
+ it('works as expected', function () {
+ var result = format(date, 'i io ii iii iiii iiiii iiiiii')
+ assert(result === '5 5th 05 Fri Friday F Fr')
+ })
+
+ it('returns a correct day of an ISO week', function () {
+ var result = []
+ for (var i = 1; i <= 7; i++) {
+ result.push(format(new Date(1986, 8 /* Sep */, i), 'i'))
+ }
+ var expected = ['1', '2', '3', '4', '5', '6', '7']
+ assert.deepEqual(result, expected)
+ })
+ })
+
+ describe('formatting day of week', function () {
+ it('works as expected', function () {
+ var result = format(date, 'e eo ee eee eeee eeeee eeeeee')
+ assert(result === '6 6th 06 Fri Friday F Fr')
+ })
+
+ it('by default, 1 is Sunday, 2 is Monday, ...', function () {
+ var result = []
+ for (var i = 7; i <= 13; i++) {
+ result.push(format(new Date(1986, 8 /* Sep */, i), 'e'))
+ }
+ var expected = ['1', '2', '3', '4', '5', '6', '7']
+ assert.deepEqual(result, expected)
+ })
+
+ it('allows to specify which day is the first day of the week', function () {
+ var result = []
+ for (var i = 1; i <= 7; i++) {
+ result.push(
+ format(new Date(1986, 8 /* Sep */, i), 'e', { weekStartsOn: 1 })
+ )
+ }
+ var expected = ['1', '2', '3', '4', '5', '6', '7']
+ assert.deepEqual(result, expected)
+ })
+ })
+
+ describe('stand-alone day of week', function () {
+ it('works as expected', function () {
+ var result = format(date, 'c co cc ccc cccc ccccc cccccc')
+ assert(result === '6 6th 06 Fri Friday F Fr')
+ })
+
+ it('by default, 1 is Sunday, 2 is Monday, ...', function () {
+ var result = []
+ for (var i = 7; i <= 13; i++) {
+ result.push(format(new Date(1986, 8 /* Sep */, i), 'c'))
+ }
+ var expected = ['1', '2', '3', '4', '5', '6', '7']
+ assert.deepEqual(result, expected)
+ })
+
+ it('allows to specify which day is the first day of the week', function () {
+ var result = []
+ for (var i = 1; i <= 7; i++) {
+ result.push(
+ format(new Date(1986, 8 /* Sep */, i), 'c', { weekStartsOn: 1 })
+ )
+ }
+ var expected = ['1', '2', '3', '4', '5', '6', '7']
+ assert.deepEqual(result, expected)
+ })
+ })
+ })
+
+ describe('day period and hour', function () {
+ it('hour [1-12]', function () {
+ var result = format(new Date(2018, 0 /* Jan */, 1, 0, 0, 0, 0), 'h ho hh')
+ assert(result === '12 12th 12')
+ })
+
+ it('hour [0-23]', function () {
+ var result = format(new Date(2018, 0 /* Jan */, 1, 0, 0, 0, 0), 'H Ho HH')
+ assert(result === '0 0th 00')
+ })
+
+ it('hour [0-11]', function () {
+ var result = format(new Date(2018, 0 /* Jan */, 1, 0, 0, 0, 0), 'K Ko KK')
+ assert(result === '0 0th 00')
+ })
+
+ it('hour [1-24]', function () {
+ var result = format(new Date(2018, 0 /* Jan */, 1, 0, 0, 0, 0), 'k ko kk')
+ assert(result === '24 24th 24')
+ })
+
+ describe('AM, PM', function () {
+ it('works as expected', function () {
+ var result = format(
+ new Date(2018, 0 /* Jan */, 1, 0, 0, 0, 0),
+ 'a aa aaa aaaa aaaaa'
+ )
+ assert(result === 'AM AM am a.m. a')
+ })
+
+ it('12 PM', function () {
+ var date = new Date(1986, 3 /* Apr */, 4, 12, 0, 0, 900)
+ assert(format(date, 'h H K k a') === '12 12 0 12 PM')
+ })
+
+ it('12 AM', function () {
+ var date = new Date(1986, 3 /* Apr */, 6, 0, 0, 0, 900)
+ assert(format(date, 'h H K k a') === '12 0 0 24 AM')
+ })
+ })
+
+ describe('AM, PM, noon, midnight', function () {
+ it('works as expected', function () {
+ var result = format(
+ new Date(1986, 3 /* Apr */, 6, 2, 0, 0, 900),
+ 'b bb bbb bbbb bbbbb'
+ )
+ assert(result === 'AM AM am a.m. a')
+ })
+
+ it('12 PM', function () {
+ var date = new Date(1986, 3 /* Apr */, 4, 12, 0, 0, 900)
+ assert(format(date, 'b bb bbb bbbb bbbbb') === 'noon noon noon noon n')
+ })
+
+ it('12 AM', function () {
+ var date = new Date(1986, 3 /* Apr */, 6, 0, 0, 0, 900)
+ assert(
+ format(date, 'b bb bbb bbbb bbbbb') ===
+ 'midnight midnight midnight midnight mi'
+ )
+ })
+ })
+
+ describe('flexible day periods', function () {
+ it('works as expected', function () {
+ var result = format(date, 'B, BB, BBB, BBBB, BBBBB')
+ assert(
+ result ===
+ 'in the morning, in the morning, in the morning, in the morning, in the morning'
+ )
+ })
+
+ it('12 PM', function () {
+ var date = new Date(1986, 3 /* Apr */, 4, 12, 0, 0, 900)
+ assert(format(date, 'h B') === '12 in the afternoon')
+ })
+
+ it('5 PM', function () {
+ var date = new Date(1986, 3 /* Apr */, 6, 17, 0, 0, 900)
+ assert(format(date, 'h B') === '5 in the evening')
+ })
+
+ it('12 AM', function () {
+ var date = new Date(1986, 3 /* Apr */, 6, 0, 0, 0, 900)
+ assert(format(date, 'h B') === '12 at night')
+ })
+
+ it('4 AM', function () {
+ var date = new Date(1986, 3 /* Apr */, 6, 4, 0, 0, 900)
+ assert(format(date, 'h B') === '4 in the morning')
+ })
+ })
+ })
+
+ it('minute', function () {
+ var result = format(date, 'm mo mm')
+ assert(result === '32 32nd 32')
+ })
+
+ describe('second', function () {
+ it('second', function () {
+ var result = format(date, 's so ss')
+ assert(result === '55 55th 55')
+ })
+
+ it('fractional seconds', function () {
+ var result = format(date, 'S SS SSS SSSS')
+ assert(result === '1 12 123 1230')
+ })
+ })
+
+ describe('time zone', function () {
+ it('ISO-8601 with Z', function () {
+ var result = format(date, 'X XX XXX XXXX XXXXX')
+ var expectedResult = [
+ timezoneWithOptionalMinutesAndZShort,
+ timezoneWithZShort,
+ timezoneWithZ,
+ timezoneWithZShort,
+ timezoneWithZ,
+ ].join(' ')
+ assert(result === expectedResult)
+ })
+
+ it('ISO-8601 without Z', function () {
+ var result = format(date, 'x xx xxx xxxx xxxxx')
+ var expectedResult = [
+ timezoneWithOptionalMinutesShort,
+ timezoneShort,
+ timezone,
+ timezoneShort,
+ timezone,
+ ].join(' ')
+ assert(result === expectedResult)
+ })
+
+ it('GMT', function () {
+ var result = format(date, 'O OO OOO OOOO')
+ var expectedResult = [
+ timezoneGMTShort,
+ timezoneGMTShort,
+ timezoneGMTShort,
+ timezoneGMT,
+ ].join(' ')
+ assert(result === expectedResult)
+ })
+
+ it('Specific non-location', function () {
+ var result = format(date, 'z zz zzz zzzz')
+ var expectedResult = [
+ timezoneGMTShort,
+ timezoneGMTShort,
+ timezoneGMTShort,
+ timezoneGMT,
+ ].join(' ')
+ assert(result === expectedResult)
+ })
+ })
+
+ describe('timestamp', function () {
+ it('seconds timestamp', function () {
+ var result = format(date, 't')
+ assert(result === secondsTimestamp)
+ })
+
+ it('milliseconds timestamp', function () {
+ var result = format(date, 'T')
+ assert(result === timestamp)
+ })
+ })
+
+ describe('long format', function () {
+ it('short date', function () {
+ var result = format(date, 'P')
+ assert(result === '04/04/1986')
+ })
+
+ it('medium date', function () {
+ var result = format(date, 'PP')
+ assert(result === 'Apr 4, 1986')
+ })
+
+ it('long date', function () {
+ var result = format(date, 'PPP')
+ assert(result === 'April 4th, 1986')
+ })
+
+ it('full date', function () {
+ var result = format(date, 'PPPP')
+ assert(result === 'Friday, April 4th, 1986')
+ })
+
+ it('short time', function () {
+ var result = format(date, 'p')
+ assert(result === '10:32 AM')
+ })
+
+ it('medium time', function () {
+ var result = format(date, 'pp')
+ assert(result === '10:32:55 AM')
+ })
+
+ it('long time', function () {
+ var result = format(date, 'ppp')
+ assert(result === '10:32:55 AM ' + timezoneGMTShort)
+ })
+
+ it('full time', function () {
+ var result = format(date, 'pppp')
+ assert(result === '10:32:55 AM ' + timezoneGMT)
+ })
+
+ it('short date + time', function () {
+ var result = format(date, 'Pp')
+ assert(result === '04/04/1986, 10:32 AM')
+ })
+
+ it('medium date + time', function () {
+ var result = format(date, 'PPpp')
+ assert(result === 'Apr 4, 1986, 10:32:55 AM')
+ })
+
+ it('long date + time', function () {
+ var result = format(date, 'PPPppp')
+ assert(result === 'April 4th, 1986 at 10:32:55 AM ' + timezoneGMTShort)
+ })
+
+ it('full date + time', function () {
+ var result = format(date, 'PPPPpppp')
+ assert(result === 'Friday, April 4th, 1986 at 10:32:55 AM ' + timezoneGMT)
+ })
+
+ it('allows arbitrary combination of date and time', function () {
+ var result = format(date, 'Ppppp')
+ assert(result === '04/04/1986, 10:32:55 AM ' + timezoneGMT)
+ })
+ })
+
+ describe('edge cases', function () {
+ it('throws RangeError if the time value is invalid', () => {
+ assert.throws(
+ format.bind(null, new Date(NaN), 'MMMM d, yyyy'),
+ RangeError
+ )
+ })
+
+ it('handles dates before 100 AD', function () {
+ var initialDate = new Date(0)
+ initialDate.setFullYear(7, 11 /* Dec */, 31)
+ initialDate.setHours(0, 0, 0, 0)
+ assert(format(initialDate, 'Y ww i') === '8 01 1')
+ })
+ })
+
+ it('implicitly converts `formatString`', function () {
+ // eslint-disable-next-line no-new-wrappers
+ var formatString = new String('yyyy-MM-dd')
+
+ var date = new Date(2014, 3, 4)
+
+ // $ExpectedMistake
+ assert(format(date, formatString) === '2014-04-04')
+ })
+
+ describe('custom locale', function () {
+ it('allows to pass a custom locale', function () {
+ var customLocale = {
+ localize: {
+ month: function () {
+ return 'works'
+ },
+ },
+ formatLong: {
+ date: function () {
+ return "'It' MMMM!"
+ },
+ },
+ }
+ // $ExpectedMistake
+ var result = format(date, 'PPPP', { locale: customLocale })
+ assert(result === 'It works!')
+ })
+
+ it("throws `RangeError` if `options.locale` doesn't have `localize` property", function () {
+ var customLocale = {
+ formatLong: {},
+ }
+ // $ExpectedMistake
+ var block = format.bind(null, date, 'yyyy-MM-dd', {
+ locale: customLocale,
+ })
+ assert.throws(block, RangeError)
+ })
+
+ it("throws `RangeError` if `options.locale` doesn't have `formatLong` property", function () {
+ var customLocale = {
+ // $ExpectedMistake
+ localize: {},
+ }
+ // $ExpectedMistake
+ var block = format.bind(null, date, 'yyyy-MM-dd', {
+ locale: customLocale,
+ })
+ assert.throws(block, RangeError)
+ })
+ })
+
+ it('throws `RangeError` if `options.weekStartsOn` is not convertable to 0, 1, ..., 6 or undefined', function () {
+ // $ExpectedMistake
+ var block = format.bind(null, new Date(2007, 11 /* Dec */, 31), 'yyyy', {
+ weekStartsOn: NaN,
+ })
+ assert.throws(block, RangeError)
+ })
+
+ it('throws `RangeError` if `options.firstWeekContainsDate` is not convertable to 1, 2, ..., 7 or undefined', function () {
+ // $ExpectedMistake
+ var block = format.bind(null, new Date(2007, 11 /* Dec */, 31), 'yyyy', {
+ firstWeekContainsDate: NaN,
+ })
+ assert.throws(block, RangeError)
+ })
+
+ it('throws RangeError exception if the format string contains an unescaped latin alphabet character', function () {
+ assert.throws(format.bind(null, date, 'yyyy-MM-dd-nnnn'), RangeError)
+ })
+
+ it('throws TypeError exception if passed less than 2 arguments', function () {
+ assert.throws(format.bind(null), TypeError)
+ assert.throws(format.bind(null, 1), TypeError)
+ })
+
+ describe('useAdditionalWeekYearTokens and useAdditionalDayOfYearTokens options', () => {
+ it('throws an error if D token is used', () => {
+ const block = format.bind(null, date, 'yyyy-MM-D')
+ assert.throws(block, RangeError)
+ assert.throws(
+ block,
+ /(Use `d` instead of `D` \(in `yyyy-MM-D`\) for formatting days of the month to the input `Fri Apr 04 1986 10:32:55).*(`; see: https:\/\/git.io\/fxCyr)/g
+ )
+ })
+
+ it('allows D token if useAdditionalDayOfYearTokens is set to true', () => {
+ const result = format(date, 'yyyy-MM-D', {
+ useAdditionalDayOfYearTokens: true,
+ })
+ assert.deepEqual(result, '1986-04-94')
+ })
+
+ it('throws an error if DD token is used', () => {
+ const block = format.bind(null, date, 'yyyy-MM-DD')
+ assert.throws(block, RangeError)
+ assert.throws(
+ block,
+ /(Use `dd` instead of `DD` \(in `yyyy-MM-DD`\) for formatting days of the month to the input `Fri Apr 04 1986 10:32:55).*(`; see: https:\/\/git.io\/fxCyr)/g
+ )
+ })
+
+ it('allows DD token if useAdditionalDayOfYearTokens is set to true', () => {
+ const result = format(date, 'yyyy-MM-DD', {
+ useAdditionalDayOfYearTokens: true,
+ })
+ assert.deepEqual(result, '1986-04-94')
+ })
+
+ it('throws an error if YY token is used', () => {
+ const block = format.bind(null, date, 'YY-MM-dd')
+ assert.throws(block, RangeError)
+ assert.throws(
+ block,
+ /(Use `yy` instead of `YY` \(in `YY-MM-dd`\) for formatting years to the input `Fri Apr 04 1986 10:32:55).*(`; see: https:\/\/git.io\/fxCyr)/g
+ )
+ })
+
+ it('allows YY token if useAdditionalWeekYearTokens is set to true', () => {
+ const result = format(date, 'YY-MM-dd', {
+ useAdditionalWeekYearTokens: true,
+ })
+ assert.deepEqual(result, '86-04-04')
+ })
+
+ it('throws an error if YYYY token is used', () => {
+ const block = format.bind(null, date, 'YYYY-MM-dd')
+ assert.throws(block, RangeError)
+ assert.throws(
+ block,
+ /(Use `yyyy` instead of `YYYY` \(in `YYYY-MM-dd`\) for formatting years to the input `Fri Apr 04 1986 10:32:55).*(`; see: https:\/\/git.io\/fxCyr)/g
+ )
+ })
+
+ it('allows YYYY token if useAdditionalWeekYearTokens is set to true', () => {
+ const result = format(date, 'YYYY-MM-dd', {
+ useAdditionalWeekYearTokens: true,
+ })
+ assert.deepEqual(result, '1986-04-04')
+ })
+ })
+})
diff --git a/date-fns/src/formatDistance/benchmark.js b/date-fns/src/formatDistance/benchmark.js
new file mode 100644
index 0000000..94f5ab0
--- /dev/null
+++ b/date-fns/src/formatDistance/benchmark.js
@@ -0,0 +1,23 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import formatDistance from '.'
+import moment from 'moment'
+
+suite('formatDistance', function () {
+ benchmark('date-fns', function () {
+ return formatDistance(this.dateA, this.dateB)
+ })
+
+ benchmark('Moment.js', function () {
+ return this.momentA.from(this.momentB)
+ })
+}, {
+ setup: function () {
+ this.dateA = new Date()
+ this.momentA = moment()
+ this.dateB = new Date(this.dateA.getTime() + 604800000)
+ this.momentB = this.momentA.clone().add(7, 'days')
+ }
+})
diff --git a/date-fns/src/formatDistance/index.d.ts b/date-fns/src/formatDistance/index.d.ts
new file mode 100644
index 0000000..656c64a
--- /dev/null
+++ b/date-fns/src/formatDistance/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { formatDistance } from 'date-fns'
+export default formatDistance
diff --git a/date-fns/src/formatDistance/index.js.flow b/date-fns/src/formatDistance/index.js.flow
new file mode 100644
index 0000000..b18d1ba
--- /dev/null
+++ b/date-fns/src/formatDistance/index.js.flow
@@ -0,0 +1,60 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (
+ date: Date | number,
+ baseDate: Date | number,
+ options?: {
+ includeSeconds?: boolean,
+ addSuffix?: boolean,
+ locale?: Locale,
+ }
+) => string
diff --git a/date-fns/src/formatDistance/index.ts b/date-fns/src/formatDistance/index.ts
new file mode 100644
index 0000000..214087d
--- /dev/null
+++ b/date-fns/src/formatDistance/index.ts
@@ -0,0 +1,240 @@
+import compareAsc from '../compareAsc/index'
+import differenceInMonths from '../differenceInMonths/index'
+import differenceInSeconds from '../differenceInSeconds/index'
+import defaultLocale from '../locale/en-US/index'
+import toDate from '../toDate/index'
+import cloneObject from '../_lib/cloneObject/index'
+import getTimezoneOffsetInMilliseconds from '../_lib/getTimezoneOffsetInMilliseconds/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+import { LocaleOptions } from '../types';
+
+const MINUTES_IN_DAY = 1440
+const MINUTES_IN_ALMOST_TWO_DAYS = 2520
+const MINUTES_IN_MONTH = 43200
+const MINUTES_IN_TWO_MONTHS = 86400
+
+/**
+ * @name formatDistance
+ * @category Common Helpers
+ * @summary Return the distance between the given dates in words.
+ *
+ * @description
+ * Return the distance between the given dates in words.
+ *
+ * | Distance between dates | Result |
+ * |-------------------------------------------------------------------|---------------------|
+ * | 0 ... 30 secs | less than a minute |
+ * | 30 secs ... 1 min 30 secs | 1 minute |
+ * | 1 min 30 secs ... 44 mins 30 secs | [2..44] minutes |
+ * | 44 mins ... 30 secs ... 89 mins 30 secs | about 1 hour |
+ * | 89 mins 30 secs ... 23 hrs 59 mins 30 secs | about [2..24] hours |
+ * | 23 hrs 59 mins 30 secs ... 41 hrs 59 mins 30 secs | 1 day |
+ * | 41 hrs 59 mins 30 secs ... 29 days 23 hrs 59 mins 30 secs | [2..30] days |
+ * | 29 days 23 hrs 59 mins 30 secs ... 44 days 23 hrs 59 mins 30 secs | about 1 month |
+ * | 44 days 23 hrs 59 mins 30 secs ... 59 days 23 hrs 59 mins 30 secs | about 2 months |
+ * | 59 days 23 hrs 59 mins 30 secs ... 1 yr | [2..12] months |
+ * | 1 yr ... 1 yr 3 months | about 1 year |
+ * | 1 yr 3 months ... 1 yr 9 month s | over 1 year |
+ * | 1 yr 9 months ... 2 yrs | almost 2 years |
+ * | N yrs ... N yrs 3 months | about N years |
+ * | N yrs 3 months ... N yrs 9 months | over N years |
+ * | N yrs 9 months ... N+1 yrs | almost N+1 years |
+ *
+ * With `options.includeSeconds == true`:
+ * | Distance between dates | Result |
+ * |------------------------|----------------------|
+ * | 0 secs ... 5 secs | less than 5 seconds |
+ * | 5 secs ... 10 secs | less than 10 seconds |
+ * | 10 secs ... 20 secs | less than 20 seconds |
+ * | 20 secs ... 40 secs | half a minute |
+ * | 40 secs ... 60 secs | less than a minute |
+ * | 60 secs ... 90 secs | 1 minute |
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * - The function was renamed from `distanceInWords ` to `formatDistance`
+ * to make its name consistent with `format` and `formatRelative`.
+ *
+ * - The order of arguments is swapped to make the function
+ * consistent with `differenceIn...` functions.
+ *
+ * ```javascript
+ * // Before v2.0.0
+ *
+ * distanceInWords(
+ * new Date(1986, 3, 4, 10, 32, 0),
+ * new Date(1986, 3, 4, 11, 32, 0),
+ * { addSuffix: true }
+ * ) //=> 'in about 1 hour'
+ *
+ * // v2.0.0 onward
+ *
+ * formatDistance(
+ * new Date(1986, 3, 4, 11, 32, 0),
+ * new Date(1986, 3, 4, 10, 32, 0),
+ * { addSuffix: true }
+ * ) //=> 'in about 1 hour'
+ * ```
+ *
+ * @param {Date|Number} date - the date
+ * @param {Date|Number} baseDate - the date to compare with
+ * @param {Object} [options] - an object with options.
+ * @param {Boolean} [options.includeSeconds=false] - distances less than a minute are more detailed
+ * @param {Boolean} [options.addSuffix=false] - result indicates if the second date is earlier or later than the first
+ * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}
+ * @returns {String} the distance in words
+ * @throws {TypeError} 2 arguments required
+ * @throws {RangeError} `date` must not be Invalid Date
+ * @throws {RangeError} `baseDate` must not be Invalid Date
+ * @throws {RangeError} `options.locale` must contain `formatDistance` property
+ *
+ * @example
+ * // What is the distance between 2 July 2014 and 1 January 2015?
+ * const result = formatDistance(new Date(2014, 6, 2), new Date(2015, 0, 1))
+ * //=> '6 months'
+ *
+ * @example
+ * // What is the distance between 1 January 2015 00:00:15
+ * // and 1 January 2015 00:00:00, including seconds?
+ * const result = formatDistance(
+ * new Date(2015, 0, 1, 0, 0, 15),
+ * new Date(2015, 0, 1, 0, 0, 0),
+ * { includeSeconds: true }
+ * )
+ * //=> 'less than 20 seconds'
+ *
+ * @example
+ * // What is the distance from 1 January 2016
+ * // to 1 January 2015, with a suffix?
+ * const result = formatDistance(new Date(2015, 0, 1), new Date(2016, 0, 1), {
+ * addSuffix: true
+ * })
+ * //=> 'about 1 year ago'
+ *
+ * @example
+ * // What is the distance between 1 August 2016 and 1 January 2015 in Esperanto?
+ * import { eoLocale } from 'date-fns/locale/eo'
+ * const result = formatDistance(new Date(2016, 7, 1), new Date(2015, 0, 1), {
+ * locale: eoLocale
+ * })
+ * //=> 'pli ol 1 jaro'
+ */
+
+
+export default function formatDistance(dirtyDate: Date | number, dirtyBaseDate: Date | number, options: LocaleOptions & { includeSeconds?: boolean, addSuffix?: boolean } = {}): string {
+ requiredArgs(2, arguments)
+
+ const locale = options.locale || defaultLocale
+
+ if (!locale.formatDistance) {
+ throw new RangeError('locale must contain formatDistance property')
+ }
+
+ const comparison = compareAsc(dirtyDate, dirtyBaseDate)
+
+ if (isNaN(comparison)) {
+ throw new RangeError('Invalid time value')
+ }
+
+ const localizeOptions = cloneObject(options)
+ localizeOptions.addSuffix = Boolean(options.addSuffix)
+ localizeOptions.comparison = comparison
+
+ let dateLeft
+ let dateRight
+ if (comparison > 0) {
+ dateLeft = toDate(dirtyBaseDate)
+ dateRight = toDate(dirtyDate)
+ } else {
+ dateLeft = toDate(dirtyDate)
+ dateRight = toDate(dirtyBaseDate)
+ }
+
+ const seconds = differenceInSeconds(dateRight, dateLeft)
+ const offsetInSeconds =
+ (getTimezoneOffsetInMilliseconds(dateRight) -
+ getTimezoneOffsetInMilliseconds(dateLeft)) /
+ 1000
+ const minutes = Math.round((seconds - offsetInSeconds) / 60)
+ let months
+
+ // 0 up to 2 mins
+ if (minutes < 2) {
+ if (options.includeSeconds) {
+ if (seconds < 5) {
+ return locale.formatDistance('lessThanXSeconds', 5, localizeOptions)
+ } else if (seconds < 10) {
+ return locale.formatDistance('lessThanXSeconds', 10, localizeOptions)
+ } else if (seconds < 20) {
+ return locale.formatDistance('lessThanXSeconds', 20, localizeOptions)
+ } else if (seconds < 40) {
+ return locale.formatDistance('halfAMinute', null, localizeOptions)
+ } else if (seconds < 60) {
+ return locale.formatDistance('lessThanXMinutes', 1, localizeOptions)
+ } else {
+ return locale.formatDistance('xMinutes', 1, localizeOptions)
+ }
+ } else {
+ if (minutes === 0) {
+ return locale.formatDistance('lessThanXMinutes', 1, localizeOptions)
+ } else {
+ return locale.formatDistance('xMinutes', minutes, localizeOptions)
+ }
+ }
+
+ // 2 mins up to 0.75 hrs
+ } else if (minutes < 45) {
+ return locale.formatDistance('xMinutes', minutes, localizeOptions)
+
+ // 0.75 hrs up to 1.5 hrs
+ } else if (minutes < 90) {
+ return locale.formatDistance('aboutXHours', 1, localizeOptions)
+
+ // 1.5 hrs up to 24 hrs
+ } else if (minutes < MINUTES_IN_DAY) {
+ const hours = Math.round(minutes / 60)
+ return locale.formatDistance('aboutXHours', hours, localizeOptions)
+
+ // 1 day up to 1.75 days
+ } else if (minutes < MINUTES_IN_ALMOST_TWO_DAYS) {
+ return locale.formatDistance('xDays', 1, localizeOptions)
+
+ // 1.75 days up to 30 days
+ } else if (minutes < MINUTES_IN_MONTH) {
+ const days = Math.round(minutes / MINUTES_IN_DAY)
+ return locale.formatDistance('xDays', days, localizeOptions)
+
+ // 1 month up to 2 months
+ } else if (minutes < MINUTES_IN_TWO_MONTHS) {
+ months = Math.round(minutes / MINUTES_IN_MONTH)
+ return locale.formatDistance('aboutXMonths', months, localizeOptions)
+ }
+
+ months = differenceInMonths(dateRight, dateLeft)
+
+ // 2 months up to 12 months
+ if (months < 12) {
+ const nearestMonth = Math.round(minutes / MINUTES_IN_MONTH)
+ return locale.formatDistance('xMonths', nearestMonth, localizeOptions)
+
+ // 1 year up to max Date
+ } else {
+ const monthsSinceStartOfYear = months % 12
+ const years = Math.floor(months / 12)
+
+ // N years up to 1 years 3 months
+ if (monthsSinceStartOfYear < 3) {
+ return locale.formatDistance('aboutXYears', years, localizeOptions)
+
+ // N years 3 months up to N years 9 months
+ } else if (monthsSinceStartOfYear < 9) {
+ return locale.formatDistance('overXYears', years, localizeOptions)
+
+ // N years 9 months up to N year 12 months
+ } else {
+ return locale.formatDistance('almostXYears', years + 1, localizeOptions)
+ }
+ }
+}
diff --git a/date-fns/src/formatDistance/test.ts b/date-fns/src/formatDistance/test.ts
new file mode 100644
index 0000000..2e2cfaa
--- /dev/null
+++ b/date-fns/src/formatDistance/test.ts
@@ -0,0 +1,299 @@
+/* eslint-env mocha */
+
+import assert from 'assert'
+import formatDistance from '.'
+
+describe('formatDistance', function () {
+ describe('seconds', function () {
+ describe('when the includeSeconds option is true', function () {
+ it('less than 5 seconds', function () {
+ const result = formatDistance(
+ new Date(1986, 3, 4, 10, 32, 0),
+ new Date(1986, 3, 4, 10, 32, 3),
+ { includeSeconds: true }
+ )
+ assert(result === 'less than 5 seconds')
+ })
+
+ it('less than 10 seconds', function () {
+ const result = formatDistance(
+ new Date(1986, 3, 4, 10, 32, 0),
+ new Date(1986, 3, 4, 10, 32, 7),
+ { includeSeconds: true }
+ )
+ assert(result === 'less than 10 seconds')
+ })
+
+ it('less than 20 seconds', function () {
+ const result = formatDistance(
+ new Date(1986, 3, 4, 10, 32, 0),
+ new Date(1986, 3, 4, 10, 32, 15),
+ { includeSeconds: true }
+ )
+ assert(result === 'less than 20 seconds')
+ })
+
+ it('half a minute', function () {
+ const result = formatDistance(
+ new Date(1986, 3, 4, 10, 32, 0),
+ new Date(1986, 3, 4, 10, 32, 25),
+ { includeSeconds: true }
+ )
+ assert(result === 'half a minute')
+ })
+
+ it('less than a minute', function () {
+ const result = formatDistance(
+ new Date(1986, 3, 4, 10, 32, 0),
+ new Date(1986, 3, 4, 10, 32, 45),
+ { includeSeconds: true }
+ )
+ assert(result === 'less than a minute')
+ })
+
+ it('1 minute', function () {
+ const result = formatDistance(
+ new Date(1986, 3, 4, 10, 32, 0),
+ new Date(1986, 3, 4, 10, 33, 0),
+ { includeSeconds: true }
+ )
+ assert(result === '1 minute')
+ })
+ })
+ })
+
+ describe('minutes', function () {
+ it('less than a minute', function () {
+ const result = formatDistance(
+ new Date(1986, 3, 4, 10, 32, 0),
+ new Date(1986, 3, 4, 10, 32, 20)
+ )
+ assert(result === 'less than a minute')
+ })
+
+ it('1 minute', function () {
+ const result = formatDistance(
+ new Date(1986, 3, 4, 10, 32, 0),
+ new Date(1986, 3, 4, 10, 32, 50)
+ )
+ assert(result === '1 minute')
+ })
+
+ it('n minutes', function () {
+ const result = formatDistance(
+ new Date(1986, 3, 4, 10, 32, 0),
+ new Date(1986, 3, 4, 10, 34, 50)
+ )
+ assert(result === '3 minutes')
+ })
+ })
+
+ describe('hours', function () {
+ it('about 1 hour', function () {
+ const result = formatDistance(
+ new Date(1986, 3, 4, 10, 32, 0),
+ new Date(1986, 3, 4, 11, 32, 0)
+ )
+ assert(result === 'about 1 hour')
+ })
+
+ it('about n hours', function () {
+ const result = formatDistance(
+ new Date(1986, 3, 4, 10, 32, 0),
+ new Date(1986, 3, 4, 13, 32, 0)
+ )
+ assert(result === 'about 3 hours')
+ })
+ })
+
+ describe('days', function () {
+ it('1 day', function () {
+ const result = formatDistance(
+ new Date(1986, 3, 4, 10, 32, 0),
+ new Date(1986, 3, 5, 10, 32, 0)
+ )
+ assert(result === '1 day')
+ })
+
+ it('n days', function () {
+ const result = formatDistance(
+ new Date(1986, 3, 4, 10, 32, 0),
+ new Date(1986, 3, 7, 10, 32, 0)
+ )
+ assert(result === '3 days')
+ })
+ })
+
+ describe('months', function () {
+ it('about 1 month', function () {
+ const result = formatDistance(
+ new Date(1986, 3, 4, 10, 32, 0),
+ new Date(1986, 4, 4, 10, 32, 0)
+ )
+ assert(result === 'about 1 month')
+ })
+
+ it('n months', function () {
+ const result = formatDistance(
+ new Date(1986, 3, 4, 10, 32, 0),
+ new Date(1986, 6, 4, 10, 32, 0)
+ )
+ assert(result === '3 months')
+ })
+ })
+
+ describe('years', function () {
+ it('about 1 year', function () {
+ const result = formatDistance(
+ new Date(1986, 3, 4, 10, 32, 0),
+ new Date(1987, 3, 4, 10, 32, 0)
+ )
+ assert(result === 'about 1 year')
+ })
+
+ it('over 1 year', function () {
+ const result = formatDistance(
+ new Date(1986, 3, 4, 10, 32, 0),
+ new Date(1987, 9, 4, 10, 32, 0)
+ )
+ assert(result === 'over 1 year')
+ })
+
+ it('almost n years', function () {
+ const result = formatDistance(
+ new Date(1986, 3, 4, 10, 32, 0),
+ new Date(1989, 2, 4, 10, 32, 0)
+ )
+ assert(result === 'almost 3 years')
+ })
+
+ it('about n years', function () {
+ const result = formatDistance(
+ new Date(1986, 3, 4, 10, 32, 0),
+ new Date(1989, 3, 4, 10, 32, 0)
+ )
+ assert(result === 'about 3 years')
+ })
+
+ it('over n years', function () {
+ const result = formatDistance(
+ new Date(1986, 3, 4, 10, 32, 0),
+ new Date(1989, 9, 4, 10, 32, 0)
+ )
+ assert(result === 'over 3 years')
+ })
+ })
+
+ it('accepts timestamps', function () {
+ const result = formatDistance(
+ new Date(1986, 3, 4, 10, 32, 0).getTime(),
+ new Date(1986, 3, 4, 11, 32, 0).getTime()
+ )
+ assert(result === 'about 1 hour')
+ })
+
+ describe('when the addSuffix option is true', function () {
+ it('adds a past suffix', function () {
+ const result = formatDistance(
+ new Date(1986, 3, 4, 10, 32, 0),
+ new Date(1986, 3, 4, 10, 32, 25),
+ { includeSeconds: true, addSuffix: true }
+ )
+ assert(result === 'half a minute ago')
+ })
+
+ it('adds a future suffix', function () {
+ const result = formatDistance(
+ new Date(1986, 3, 4, 11, 32, 0),
+ new Date(1986, 3, 4, 10, 32, 0),
+ { addSuffix: true }
+ )
+ assert(result === 'in about 1 hour')
+ })
+ })
+
+ describe('implicit conversion of options', function () {
+ it('`options.includeSeconds`', function () {
+ const result = formatDistance(
+ new Date(1986, 3, 4, 10, 32, 0),
+ new Date(1986, 3, 4, 10, 32, 7),
+ // @ts-expect-error
+ { includeSeconds: 1 }
+ )
+ assert(result === 'less than 10 seconds')
+ })
+
+ it('`options.addSuffix`', function () {
+ const result = formatDistance(
+ new Date(1986, 3, 4, 11, 32, 0),
+ new Date(1986, 3, 4, 10, 32, 0),
+ // @ts-expect-error
+ { addSuffix: 1 }
+ )
+ assert(result === 'in about 1 hour')
+ })
+ })
+
+ describe('custom locale', function () {
+ it('can be passed to the function', function () {
+ function localizeDistance(token, count, options) {
+ assert(token === 'lessThanXSeconds')
+ assert(count === 5)
+ assert(options.addSuffix === true)
+ assert(options.comparison > 0)
+ return 'It works!'
+ }
+
+ const customLocale = {
+ formatDistance: localizeDistance,
+ }
+
+ const result = formatDistance(
+ new Date(1986, 3, 4, 10, 32, 3),
+ new Date(1986, 3, 4, 10, 32, 0),
+ { includeSeconds: true, addSuffix: true, locale: customLocale }
+ )
+
+ assert(result === 'It works!')
+ })
+
+ describe('does not contain `formatDistance` property', function () {
+ it('throws `RangeError`', function () {
+ const customLocale = {}
+ const block = formatDistance.bind(
+ null,
+ new Date(1986, 3, 4, 10, 32, 0),
+ new Date(1986, 3, 4, 10, 32, 3),
+ { includeSeconds: true, locale: customLocale }
+ )
+ assert.throws(block, RangeError)
+ })
+ })
+ })
+
+ it('throws RangeError if the first date is `Invalid Date`', function () {
+ assert.throws(
+ formatDistance.bind(null, new Date(NaN), new Date(1986, 3, 7, 10, 32, 0)),
+ RangeError
+ )
+ })
+
+ it('throws RangeError if the second date is `Invalid Date`', function () {
+ assert.throws(
+ formatDistance.bind(null, new Date(1986, 3, 4, 10, 32, 0), new Date(NaN)),
+ RangeError
+ )
+ })
+
+ it('throws RangeError if the both dates are `Invalid Date`', function () {
+ assert.throws(
+ formatDistance.bind(null, new Date(NaN), new Date(NaN)),
+ RangeError
+ )
+ })
+
+ it('throws TypeError exception if passed less than 2 arguments', function () {
+ assert.throws(formatDistance.bind(null), TypeError)
+ assert.throws(formatDistance.bind(null, 1), TypeError)
+ })
+})
diff --git a/date-fns/src/formatDistanceStrict/benchmark.js b/date-fns/src/formatDistanceStrict/benchmark.js
new file mode 100644
index 0000000..d468a03
--- /dev/null
+++ b/date-fns/src/formatDistanceStrict/benchmark.js
@@ -0,0 +1,23 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import formatDistanceStrict from '.'
+import moment from 'moment'
+
+suite('formatDistanceStrict', function () {
+ benchmark('date-fns', function () {
+ return formatDistanceStrict(this.dateA, this.dateB)
+ })
+
+ benchmark('Moment.js', function () {
+ return this.momentA.from(this.momentB)
+ })
+}, {
+ setup: function () {
+ this.dateA = new Date()
+ this.momentA = moment()
+ this.dateB = new Date(this.dateA.getTime() + 604800000)
+ this.momentB = this.momentA.clone().add(7, 'days')
+ }
+})
diff --git a/date-fns/src/formatDistanceStrict/index.d.ts b/date-fns/src/formatDistanceStrict/index.d.ts
new file mode 100644
index 0000000..89cce20
--- /dev/null
+++ b/date-fns/src/formatDistanceStrict/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { formatDistanceStrict } from 'date-fns'
+export default formatDistanceStrict
diff --git a/date-fns/src/formatDistanceStrict/index.js.flow b/date-fns/src/formatDistanceStrict/index.js.flow
new file mode 100644
index 0000000..26c4b15
--- /dev/null
+++ b/date-fns/src/formatDistanceStrict/index.js.flow
@@ -0,0 +1,61 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (
+ date: Date | number,
+ baseDate: Date | number,
+ options?: {
+ addSuffix?: boolean,
+ unit?: 'second' | 'minute' | 'hour' | 'day' | 'month' | 'year',
+ roundingMethod?: 'floor' | 'ceil' | 'round',
+ locale?: Locale,
+ }
+) => string
diff --git a/date-fns/src/formatDistanceStrict/index.ts b/date-fns/src/formatDistanceStrict/index.ts
new file mode 100644
index 0000000..d792e73
--- /dev/null
+++ b/date-fns/src/formatDistanceStrict/index.ts
@@ -0,0 +1,283 @@
+import getTimezoneOffsetInMilliseconds from '../_lib/getTimezoneOffsetInMilliseconds/index'
+import compareAsc from '../compareAsc/index'
+import toDate from '../toDate/index'
+import cloneObject from '../_lib/cloneObject/index'
+import defaultLocale from '../locale/en-US/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+import { LocaleOptions, Unit } from '../types';
+
+const MILLISECONDS_IN_MINUTE = 1000 * 60
+const MINUTES_IN_DAY = 60 * 24
+const MINUTES_IN_MONTH = MINUTES_IN_DAY * 30
+const MINUTES_IN_YEAR = MINUTES_IN_DAY * 365
+
+/**
+ * @name formatDistanceStrict
+ * @category Common Helpers
+ * @summary Return the distance between the given dates in words.
+ *
+ * @description
+ * Return the distance between the given dates in words, using strict units.
+ * This is like `formatDistance`, but does not use helpers like 'almost', 'over',
+ * 'less than' and the like.
+ *
+ * | Distance between dates | Result |
+ * |------------------------|---------------------|
+ * | 0 ... 59 secs | [0..59] seconds |
+ * | 1 ... 59 mins | [1..59] minutes |
+ * | 1 ... 23 hrs | [1..23] hours |
+ * | 1 ... 29 days | [1..29] days |
+ * | 1 ... 11 months | [1..11] months |
+ * | 1 ... N years | [1..N] years |
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * - The function was renamed from `distanceInWordsStrict` to `formatDistanceStrict`
+ * to make its name consistent with `format` and `formatRelative`.
+ *
+ * - The order of arguments is swapped to make the function
+ * consistent with `differenceIn...` functions.
+ *
+ * ```javascript
+ * // Before v2.0.0
+ *
+ * distanceInWordsStrict(
+ * new Date(2015, 0, 2),
+ * new Date(2014, 6, 2)
+ * ) //=> '6 months'
+ *
+ * // v2.0.0 onward
+ *
+ * formatDistanceStrict(
+ * new Date(2014, 6, 2),
+ * new Date(2015, 0, 2)
+ * ) //=> '6 months'
+ * ```
+ *
+ * - `partialMethod` option is renamed to `roundingMethod`.
+ *
+ * ```javascript
+ * // Before v2.0.0
+ *
+ * distanceInWordsStrict(
+ * new Date(1986, 3, 4, 10, 32, 0),
+ * new Date(1986, 3, 4, 10, 33, 1),
+ * { partialMethod: 'ceil' }
+ * ) //=> '2 minutes'
+ *
+ * // v2.0.0 onward
+ *
+ * formatDistanceStrict(
+ * new Date(1986, 3, 4, 10, 33, 1),
+ * new Date(1986, 3, 4, 10, 32, 0),
+ * { roundingMethod: 'ceil' }
+ * ) //=> '2 minutes'
+ * ```
+ *
+ * - If `roundingMethod` is not specified, it now defaults to `round` instead of `floor`.
+ *
+ * - `unit` option now accepts one of the strings:
+ * 'second', 'minute', 'hour', 'day', 'month' or 'year' instead of 's', 'm', 'h', 'd', 'M' or 'Y'
+ *
+ * ```javascript
+ * // Before v2.0.0
+ *
+ * distanceInWordsStrict(
+ * new Date(1986, 3, 4, 10, 32, 0),
+ * new Date(1986, 3, 4, 10, 33, 1),
+ * { unit: 'm' }
+ * )
+ *
+ * // v2.0.0 onward
+ *
+ * formatDistanceStrict(
+ * new Date(1986, 3, 4, 10, 33, 1),
+ * new Date(1986, 3, 4, 10, 32, 0),
+ * { unit: 'minute' }
+ * )
+ * ```
+ *
+ * @param {Date|Number} date - the date
+ * @param {Date|Number} baseDate - the date to compare with
+ * @param {Object} [options] - an object with options.
+ * @param {Boolean} [options.addSuffix=false] - result indicates if the second date is earlier or later than the first
+ * @param {'second'|'minute'|'hour'|'day'|'month'|'year'} [options.unit] - if specified, will force a unit
+ * @param {'floor'|'ceil'|'round'} [options.roundingMethod='round'] - which way to round partial units
+ * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}
+ * @returns {String} the distance in words
+ * @throws {TypeError} 2 arguments required
+ * @throws {RangeError} `date` must not be Invalid Date
+ * @throws {RangeError} `baseDate` must not be Invalid Date
+ * @throws {RangeError} `options.roundingMethod` must be 'floor', 'ceil' or 'round'
+ * @throws {RangeError} `options.unit` must be 'second', 'minute', 'hour', 'day', 'month' or 'year'
+ * @throws {RangeError} `options.locale` must contain `formatDistance` property
+ *
+ * @example
+ * // What is the distance between 2 July 2014 and 1 January 2015?
+ * const result = formatDistanceStrict(new Date(2014, 6, 2), new Date(2015, 0, 2))
+ * //=> '6 months'
+ *
+ * @example
+ * // What is the distance between 1 January 2015 00:00:15
+ * // and 1 January 2015 00:00:00?
+ * const result = formatDistanceStrict(
+ * new Date(2015, 0, 1, 0, 0, 15),
+ * new Date(2015, 0, 1, 0, 0, 0)
+ * )
+ * //=> '15 seconds'
+ *
+ * @example
+ * // What is the distance from 1 January 2016
+ * // to 1 January 2015, with a suffix?
+ * const result = formatDistanceStrict(new Date(2015, 0, 1), new Date(2016, 0, 1), {
+ * addSuffix: true
+ * })
+ * //=> '1 year ago'
+ *
+ * @example
+ * // What is the distance from 1 January 2016
+ * // to 1 January 2015, in minutes?
+ * const result = formatDistanceStrict(new Date(2016, 0, 1), new Date(2015, 0, 1), {
+ * unit: 'minute'
+ * })
+ * //=> '525600 minutes'
+ *
+ * @example
+ * // What is the distance from 1 January 2015
+ * // to 28 January 2015, in months, rounded up?
+ * const result = formatDistanceStrict(new Date(2015, 0, 28), new Date(2015, 0, 1), {
+ * unit: 'month',
+ * roundingMethod: 'ceil'
+ * })
+ * //=> '1 month'
+ *
+ * @example
+ * // What is the distance between 1 August 2016 and 1 January 2015 in Esperanto?
+ * import { eoLocale } from 'date-fns/locale/eo'
+ * const result = formatDistanceStrict(new Date(2016, 7, 1), new Date(2015, 0, 1), {
+ * locale: eoLocale
+ * })
+ * //=> '1 jaro'
+ */
+
+export default function formatDistanceStrict(
+ dirtyDate: Date | number,
+ dirtyBaseDate: Date | number,
+ options: LocaleOptions & {
+ addSuffix?: boolean,
+ unit?: Unit,
+ roundingMethod?: 'floor' | 'ceil' | 'round',
+ } = {}
+): string {
+ requiredArgs(2, arguments)
+
+ const locale = options.locale || defaultLocale
+
+ if (!locale.formatDistance) {
+ throw new RangeError('locale must contain localize.formatDistance property')
+ }
+
+ const comparison = compareAsc(dirtyDate, dirtyBaseDate)
+
+ if (isNaN(comparison)) {
+ throw new RangeError('Invalid time value')
+ }
+
+ const localizeOptions = cloneObject(options)
+ localizeOptions.addSuffix = Boolean(options.addSuffix)
+ localizeOptions.comparison = comparison
+
+ let dateLeft
+ let dateRight
+ if (comparison > 0) {
+ dateLeft = toDate(dirtyBaseDate)
+ dateRight = toDate(dirtyDate)
+ } else {
+ dateLeft = toDate(dirtyDate)
+ dateRight = toDate(dirtyBaseDate)
+ }
+
+ const roundingMethod =
+ options.roundingMethod == null ? 'round' : String(options.roundingMethod)
+ let roundingMethodFn
+
+ if (roundingMethod === 'floor') {
+ roundingMethodFn = Math.floor
+ } else if (roundingMethod === 'ceil') {
+ roundingMethodFn = Math.ceil
+ } else if (roundingMethod === 'round') {
+ roundingMethodFn = Math.round
+ } else {
+ throw new RangeError("roundingMethod must be 'floor', 'ceil' or 'round'")
+ }
+
+ const milliseconds = dateRight.getTime() - dateLeft.getTime()
+ const minutes = milliseconds / MILLISECONDS_IN_MINUTE
+
+ const timezoneOffset =
+ getTimezoneOffsetInMilliseconds(dateRight) -
+ getTimezoneOffsetInMilliseconds(dateLeft)
+
+ // Use DST-normalized difference in minutes for years, months and days;
+ // use regular difference in minutes for hours, minutes and seconds.
+ const dstNormalizedMinutes =
+ (milliseconds - timezoneOffset) / MILLISECONDS_IN_MINUTE
+
+ let unit
+ if (options.unit == null) {
+ if (minutes < 1) {
+ unit = 'second'
+ } else if (minutes < 60) {
+ unit = 'minute'
+ } else if (minutes < MINUTES_IN_DAY) {
+ unit = 'hour'
+ } else if (dstNormalizedMinutes < MINUTES_IN_MONTH) {
+ unit = 'day'
+ } else if (dstNormalizedMinutes < MINUTES_IN_YEAR) {
+ unit = 'month'
+ } else {
+ unit = 'year'
+ }
+ } else {
+ unit = String(options.unit)
+ }
+
+ // 0 up to 60 seconds
+ if (unit === 'second') {
+ const seconds = roundingMethodFn(milliseconds / 1000)
+ return locale.formatDistance('xSeconds', seconds, localizeOptions)
+
+ // 1 up to 60 mins
+ } else if (unit === 'minute') {
+ const roundedMinutes = roundingMethodFn(minutes)
+ return locale.formatDistance('xMinutes', roundedMinutes, localizeOptions)
+
+ // 1 up to 24 hours
+ } else if (unit === 'hour') {
+ const hours = roundingMethodFn(minutes / 60)
+ return locale.formatDistance('xHours', hours, localizeOptions)
+
+ // 1 up to 30 days
+ } else if (unit === 'day') {
+ const days = roundingMethodFn(dstNormalizedMinutes / MINUTES_IN_DAY)
+ return locale.formatDistance('xDays', days, localizeOptions)
+
+ // 1 up to 12 months
+ } else if (unit === 'month') {
+ const months = roundingMethodFn(dstNormalizedMinutes / MINUTES_IN_MONTH)
+ return months === 12 && options.unit !== 'month'
+ ? locale.formatDistance('xYears', 1, localizeOptions)
+ : locale.formatDistance('xMonths', months, localizeOptions)
+
+ // 1 year up to max Date
+ } else if (unit === 'year') {
+ const years = roundingMethodFn(dstNormalizedMinutes / MINUTES_IN_YEAR)
+ return locale.formatDistance('xYears', years, localizeOptions)
+ }
+
+ throw new RangeError(
+ "unit must be 'second', 'minute', 'hour', 'day', 'month' or 'year'"
+ )
+}
diff --git a/date-fns/src/formatDistanceStrict/test.ts b/date-fns/src/formatDistanceStrict/test.ts
new file mode 100644
index 0000000..52bb2bd
--- /dev/null
+++ b/date-fns/src/formatDistanceStrict/test.ts
@@ -0,0 +1,524 @@
+/* eslint-env mocha */
+
+import assert from 'assert'
+import formatDistanceStrict from '.'
+
+describe('formatDistanceStrict', function () {
+ describe('seconds', function () {
+ describe('when no unit is set', function () {
+ it('0 seconds', function () {
+ const result = formatDistanceStrict(
+ new Date(1986, 3, 4, 10, 32, 5),
+ new Date(1986, 3, 4, 10, 32, 5)
+ )
+ assert(result === '0 seconds')
+ })
+
+ it('5 seconds', function () {
+ const result = formatDistanceStrict(
+ new Date(1986, 3, 4, 10, 32, 0),
+ new Date(1986, 3, 4, 10, 32, 5)
+ )
+ assert(result === '5 seconds')
+ })
+ })
+ })
+
+ describe('minutes', function () {
+ it('1 minute', function () {
+ const result = formatDistanceStrict(
+ new Date(1986, 3, 4, 10, 32, 0),
+ new Date(1986, 3, 4, 10, 33, 0)
+ )
+ assert(result === '1 minute')
+ })
+
+ it('n minutes', function () {
+ const result = formatDistanceStrict(
+ new Date(1986, 3, 4, 10, 32, 0),
+ new Date(1986, 3, 4, 10, 35, 0)
+ )
+ assert(result === '3 minutes')
+ })
+ })
+
+ describe('hours', function () {
+ it('1 hour', function () {
+ const result = formatDistanceStrict(
+ new Date(1986, 3, 4, 10, 32, 0),
+ new Date(1986, 3, 4, 11, 32, 0)
+ )
+ assert(result === '1 hour')
+ })
+
+ it('n hours', function () {
+ const result = formatDistanceStrict(
+ new Date(1986, 3, 4, 10, 32, 0),
+ new Date(1986, 3, 4, 13, 32, 0)
+ )
+ assert(result === '3 hours')
+ })
+ })
+
+ describe('days', function () {
+ it('1 day', function () {
+ const result = formatDistanceStrict(
+ new Date(1986, 3, 4, 10, 32, 0),
+ new Date(1986, 3, 5, 10, 32, 0)
+ )
+ assert(result === '1 day')
+ })
+
+ it('n days', function () {
+ const result = formatDistanceStrict(
+ new Date(1986, 3, 4, 10, 32, 0),
+ new Date(1986, 3, 7, 10, 32, 0)
+ )
+ assert(result === '3 days')
+ })
+ })
+
+ describe('months', function () {
+ it('1 month', function () {
+ const result = formatDistanceStrict(
+ new Date(1986, 3, 4, 10, 32, 0),
+ new Date(1986, 4, 4, 10, 32, 0)
+ )
+ assert(result === '1 month')
+ })
+
+ it('n months', function () {
+ const result = formatDistanceStrict(
+ new Date(1986, 3, 4, 10, 32, 0),
+ new Date(1986, 6, 4, 10, 32, 0)
+ )
+ assert(result === '3 months')
+ })
+ })
+
+ describe('years', function () {
+ it('returns `1 year` - see issue 2388', () => {
+ const result = formatDistanceStrict(
+ new Date(2015, 0, 2),
+ new Date(2016, 0, 1)
+ )
+ assert(result === '1 year')
+ })
+
+ it('returns `2 years` - see issue 2388', () => {
+ const result = formatDistanceStrict(
+ new Date(2014, 0, 2),
+ new Date(2016, 0, 1)
+ )
+ assert(result === '2 years')
+ })
+
+ it('1 year', function () {
+ const result = formatDistanceStrict(
+ new Date(1986, 3, 4, 10, 32, 0),
+ new Date(1987, 3, 4, 10, 32, 0)
+ )
+ assert(result === '1 year')
+ })
+
+ it('n years', function () {
+ const result = formatDistanceStrict(
+ new Date(1986, 3, 4, 10, 32, 0),
+ new Date(1991, 3, 4, 10, 32, 0)
+ )
+ assert(result === '5 years')
+ })
+ })
+
+ describe('when the unit option is supplied', function () {
+ describe('second', function () {
+ it('0 seconds', function () {
+ const result = formatDistanceStrict(
+ new Date(1986, 3, 4, 10, 32, 0),
+ new Date(1986, 3, 4, 10, 32, 0),
+ { unit: 'second' }
+ )
+ assert(result === '0 seconds')
+ })
+
+ it('5 seconds', function () {
+ const result = formatDistanceStrict(
+ new Date(1986, 3, 4, 10, 32, 0),
+ new Date(1986, 3, 4, 10, 32, 5),
+ { unit: 'second' }
+ )
+ assert(result === '5 seconds')
+ })
+
+ it('120 seconds', function () {
+ const result = formatDistanceStrict(
+ new Date(1986, 3, 4, 10, 32, 0),
+ new Date(1986, 3, 4, 10, 34, 0),
+ { unit: 'second' }
+ )
+ assert(result === '120 seconds')
+ })
+ })
+
+ describe('minute', function () {
+ it('0 minutes', function () {
+ const result = formatDistanceStrict(
+ new Date(1986, 3, 4, 10, 32, 0),
+ new Date(1986, 3, 4, 10, 32, 0),
+ { unit: 'minute' }
+ )
+ assert(result === '0 minutes')
+ })
+
+ it('5 minutes', function () {
+ const result = formatDistanceStrict(
+ new Date(1986, 3, 4, 10, 32, 0),
+ new Date(1986, 3, 4, 10, 37, 0),
+ { unit: 'minute' }
+ )
+ assert(result === '5 minutes')
+ })
+
+ it('120 minutes', function () {
+ const result = formatDistanceStrict(
+ new Date(1986, 3, 4, 10, 32, 0),
+ new Date(1986, 3, 4, 12, 32, 0),
+ { unit: 'minute' }
+ )
+ assert(result === '120 minutes')
+ })
+ })
+
+ describe('hour', function () {
+ it('0 hours', function () {
+ const result = formatDistanceStrict(
+ new Date(1986, 3, 4, 10, 32, 0),
+ new Date(1986, 3, 4, 10, 32, 0),
+ { unit: 'hour' }
+ )
+ assert(result === '0 hours')
+ })
+
+ it('5 hours', function () {
+ const result = formatDistanceStrict(
+ new Date(1986, 3, 4, 10, 32, 0),
+ new Date(1986, 3, 4, 15, 32, 0),
+ { unit: 'hour' }
+ )
+ assert(result === '5 hours')
+ })
+
+ it('48 hours', function () {
+ const result = formatDistanceStrict(
+ new Date(1986, 3, 4, 10, 32, 0),
+ new Date(1986, 3, 6, 10, 32, 0),
+ { unit: 'hour' }
+ )
+ assert(result === '48 hours')
+ })
+ })
+
+ describe('day', function () {
+ it('0 days', function () {
+ const result = formatDistanceStrict(
+ new Date(1986, 3, 4, 10, 32, 0),
+ new Date(1986, 3, 4, 10, 32, 0),
+ { unit: 'day' }
+ )
+ assert(result === '0 days')
+ })
+
+ it('5 days', function () {
+ const result = formatDistanceStrict(
+ new Date(1986, 3, 4, 10, 32, 0),
+ new Date(1986, 3, 9, 10, 32, 0),
+ { unit: 'day' }
+ )
+ assert(result === '5 days')
+ })
+
+ it('60 days', function () {
+ const result = formatDistanceStrict(
+ new Date(1986, 3, 4, 10, 32, 0),
+ new Date(1986, 5, 3, 10, 32, 0),
+ { unit: 'day' }
+ )
+ assert(result === '60 days')
+ })
+ })
+ describe('month', function () {
+ it('0 months', function () {
+ const result = formatDistanceStrict(
+ new Date(1986, 3, 4, 10, 32, 0),
+ new Date(1986, 3, 4, 10, 32, 0),
+ { unit: 'month' }
+ )
+ assert(result === '0 months')
+ })
+
+ it('5 months', function () {
+ const result = formatDistanceStrict(
+ new Date(1986, 3, 4, 10, 32, 0),
+ new Date(1986, 7, 4, 10, 32, 0),
+ { unit: 'month' }
+ )
+ assert(result === '4 months')
+ })
+
+ it('12 months - see issue 2388', function () {
+ const result = formatDistanceStrict(
+ new Date(1986, 7, 4, 10, 32, 0),
+ new Date(1985, 7, 4, 10, 32, 0),
+ { unit: 'month' }
+ )
+ assert(result === '12 months')
+ })
+
+ it('24 months', function () {
+ const result = formatDistanceStrict(
+ new Date(1986, 3, 4, 10, 32, 0),
+ new Date(1988, 3, 4, 10, 32, 0),
+ { unit: 'month' }
+ )
+ assert(result === '24 months')
+ })
+ })
+
+ describe('year', function () {
+ it('0 years', function () {
+ const result = formatDistanceStrict(
+ new Date(1986, 3, 4, 10, 32, 0),
+ new Date(1986, 3, 4, 10, 32, 0),
+ { unit: 'year' }
+ )
+ assert(result === '0 years')
+ })
+
+ it('5 years', function () {
+ const result = formatDistanceStrict(
+ new Date(1986, 3, 4, 10, 32, 0),
+ new Date(1991, 3, 4, 15, 32, 0),
+ { unit: 'year' }
+ )
+ assert(result === '5 years')
+ })
+ })
+ })
+
+ it('accepts timestamps', function () {
+ const result = formatDistanceStrict(
+ new Date(1986, 3, 4, 10, 32, 0).getTime(),
+ new Date(1986, 3, 4, 11, 32, 0).getTime()
+ )
+ assert(result === '1 hour')
+ })
+
+ describe('when the addSuffix option is true', function () {
+ it('adds a past suffix', function () {
+ const result = formatDistanceStrict(
+ new Date(1986, 3, 4, 10, 32, 0),
+ new Date(1986, 3, 4, 10, 32, 25),
+ { addSuffix: true }
+ )
+ assert(result === '25 seconds ago')
+ })
+
+ it('adds a future suffix', function () {
+ const result = formatDistanceStrict(
+ new Date(1986, 3, 4, 11, 32, 0),
+ new Date(1986, 3, 4, 10, 32, 0),
+ { addSuffix: true }
+ )
+ assert(result === 'in 1 hour')
+ })
+ })
+
+ describe('when the roundingMethod option is supplied', function () {
+ it('default is "round"', function () {
+ const result = formatDistanceStrict(
+ new Date(1986, 3, 4, 10, 32, 0),
+ new Date(1986, 3, 4, 10, 33, 59)
+ )
+ assert(result === '2 minutes')
+ })
+
+ it('"floor"', function () {
+ const result = formatDistanceStrict(
+ new Date(1986, 3, 4, 10, 32, 0),
+ new Date(1986, 3, 4, 10, 33, 59),
+ { roundingMethod: 'floor' }
+ )
+ assert(result === '1 minute')
+ })
+
+ it('"ceil"', function () {
+ const result = formatDistanceStrict(
+ new Date(1986, 3, 4, 10, 32, 0),
+ new Date(1986, 3, 4, 10, 33, 1),
+ { roundingMethod: 'ceil' }
+ )
+ assert(result === '2 minutes')
+ })
+
+ it('"round" (down)', function () {
+ const result = formatDistanceStrict(
+ new Date(1986, 3, 4, 10, 32, 0),
+ new Date(1986, 3, 4, 10, 33, 29),
+ { roundingMethod: 'round' }
+ )
+ assert(result === '1 minute')
+ })
+
+ it('"round" (up)', function () {
+ const result = formatDistanceStrict(
+ new Date(1986, 3, 4, 10, 32, 0),
+ new Date(1986, 3, 4, 10, 33, 30),
+ { roundingMethod: 'round' }
+ )
+ assert(result === '2 minutes')
+ })
+ })
+
+ describe('implicit conversion of options', function () {
+ it('`options.unit`', function () {
+ // eslint-disable-next-line no-new-wrappers
+ const unit = new String('year')
+
+ const result = formatDistanceStrict(
+ new Date(1986, 3, 4, 10, 32, 0),
+ new Date(1986, 3, 4, 10, 32, 0),
+ // @ts-expect-error
+ { unit: unit }
+ )
+ assert(result === '0 years')
+ })
+
+ it('`options.addSuffix`', function () {
+ const result = formatDistanceStrict(
+ new Date(1986, 3, 4, 10, 32, 0),
+ new Date(1986, 3, 4, 10, 32, 25),
+ // @ts-expect-error
+ { addSuffix: 1 }
+ )
+ assert(result === '25 seconds ago')
+ })
+
+ it('`options.ceil`', function () {
+ // eslint-disable-next-line no-new-wrappers
+ const roundingMethod = new String('ceil')
+
+ const result = formatDistanceStrict(
+ new Date(1986, 3, 4, 10, 32, 0),
+ new Date(1986, 3, 4, 10, 33, 1),
+ // @ts-expect-error
+ { roundingMethod: roundingMethod }
+ )
+ assert(result === '2 minutes')
+ })
+ })
+
+ describe('custom locale', function () {
+ it('can be passed to the function', function () {
+ function localizeDistance(token: string, count: number, options: { addSuffix: boolean; comparison: number }) {
+ assert(token === 'xSeconds')
+ assert(count === 25)
+ assert(options.addSuffix === true)
+ assert(options.comparison < 0)
+ return 'It works!'
+ }
+
+ const customLocale = {
+ formatDistance: localizeDistance,
+ }
+
+ const result = formatDistanceStrict(
+ new Date(1986, 3, 4, 10, 32, 0),
+ new Date(1986, 3, 4, 10, 32, 25),
+ // @ts-expect-error
+ { addSuffix: true, locale: customLocale }
+ )
+
+ assert(result === 'It works!')
+ })
+
+ describe('does not contain `formatDistance` property', function () {
+ it('throws `RangeError`', function () {
+ const customLocale = {}
+ // @ts-expect-error
+ const block = formatDistanceStrict.bind(
+ null,
+ new Date(1986, 3, 4, 10, 32, 0),
+ new Date(1986, 3, 4, 10, 37, 0),
+ { unit: 'minute', locale: customLocale }
+ )
+ assert.throws(block, RangeError)
+ })
+ })
+ })
+
+ describe('edge cases', function () {
+ it('detects unit correctly for short months', function () {
+ const result = formatDistanceStrict(
+ new Date(2018, 1 /* Feb */, 1),
+ new Date(2018, 2 /* Mar */, 1)
+ )
+ assert(result === '28 days')
+ })
+ })
+
+ it('throws `RangeError` if the first date is `Invalid Date`', function () {
+ assert.throws(
+ formatDistanceStrict.bind(
+ null,
+ new Date(NaN),
+ new Date(1986, 3, 7, 10, 32, 0)
+ ),
+ RangeError
+ )
+ })
+
+ it('throws `RangeError` if the second date is `Invalid Date`', function () {
+ assert.throws(
+ formatDistanceStrict.bind(
+ null,
+ new Date(1986, 3, 4, 10, 32, 0),
+ new Date(NaN)
+ ),
+ RangeError
+ )
+ })
+
+ it('throws `RangeError` if the both dates are `Invalid Date`', function () {
+ assert.throws(
+ formatDistanceStrict.bind(null, new Date(NaN), new Date(NaN)),
+ RangeError
+ )
+ })
+
+ it("throws `RangeError` if `options.roundingMethod` is not 'floor', 'ceil', 'round' or undefined", function () {
+ const block = () => formatDistanceStrict(
+ new Date(1986, 3, 4, 10, 32, 0),
+ new Date(1986, 3, 4, 10, 33, 29),
+ // @ts-expect-error
+ { roundingMethod: 'foobar' }
+ )
+ assert.throws(block, RangeError)
+ })
+
+ it("throws `RangeError` if `options.unit` is not 's', 'm', 'h', 'd', 'M', 'Y' or undefined", function () {
+ const block = () => formatDistanceStrict(
+ new Date(1986, 3, 4, 10, 32, 0),
+ new Date(1986, 3, 4, 10, 33, 29),
+ // @ts-expect-error
+ { unit: 'foobar' }
+ )
+ assert.throws(block, RangeError)
+ })
+
+ it('throws TypeError exception if passed less than 2 arguments', function () {
+ // @ts-expect-error
+ assert.throws(formatDistanceStrict.bind(null), TypeError)
+ // @ts-expect-error
+ assert.throws(formatDistanceStrict.bind(null, 1), TypeError)
+ })
+})
diff --git a/date-fns/src/formatDistanceToNow/benchmark.js b/date-fns/src/formatDistanceToNow/benchmark.js
new file mode 100644
index 0000000..8a6f444
--- /dev/null
+++ b/date-fns/src/formatDistanceToNow/benchmark.js
@@ -0,0 +1,25 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import moment from 'moment'
+import formatDistanceToNow from '.'
+
+suite(
+ 'formatDistanceToNow',
+ () => {
+ benchmark('date-fns', function() {
+ return formatDistanceToNow(this.date)
+ })
+
+ benchmark('Moment.js', function() {
+ return this.moment.toNow()
+ })
+ },
+ {
+ setup: function() {
+ this.date = new Date()
+ this.moment = moment()
+ }
+ }
+)
diff --git a/date-fns/src/formatDistanceToNow/index.d.ts b/date-fns/src/formatDistanceToNow/index.d.ts
new file mode 100644
index 0000000..1d8b750
--- /dev/null
+++ b/date-fns/src/formatDistanceToNow/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { formatDistanceToNow } from 'date-fns'
+export default formatDistanceToNow
diff --git a/date-fns/src/formatDistanceToNow/index.js b/date-fns/src/formatDistanceToNow/index.js
new file mode 100644
index 0000000..1df29c1
--- /dev/null
+++ b/date-fns/src/formatDistanceToNow/index.js
@@ -0,0 +1,113 @@
+import distanceInWords from '../formatDistance/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name formatDistanceToNow
+ * @category Common Helpers
+ * @summary Return the distance between the given date and now in words.
+ * @pure false
+ *
+ * @description
+ * Return the distance between the given date and now in words.
+ *
+ * | Distance to now | Result |
+ * |-------------------------------------------------------------------|---------------------|
+ * | 0 ... 30 secs | less than a minute |
+ * | 30 secs ... 1 min 30 secs | 1 minute |
+ * | 1 min 30 secs ... 44 mins 30 secs | [2..44] minutes |
+ * | 44 mins ... 30 secs ... 89 mins 30 secs | about 1 hour |
+ * | 89 mins 30 secs ... 23 hrs 59 mins 30 secs | about [2..24] hours |
+ * | 23 hrs 59 mins 30 secs ... 41 hrs 59 mins 30 secs | 1 day |
+ * | 41 hrs 59 mins 30 secs ... 29 days 23 hrs 59 mins 30 secs | [2..30] days |
+ * | 29 days 23 hrs 59 mins 30 secs ... 44 days 23 hrs 59 mins 30 secs | about 1 month |
+ * | 44 days 23 hrs 59 mins 30 secs ... 59 days 23 hrs 59 mins 30 secs | about 2 months |
+ * | 59 days 23 hrs 59 mins 30 secs ... 1 yr | [2..12] months |
+ * | 1 yr ... 1 yr 3 months | about 1 year |
+ * | 1 yr 3 months ... 1 yr 9 month s | over 1 year |
+ * | 1 yr 9 months ... 2 yrs | almost 2 years |
+ * | N yrs ... N yrs 3 months | about N years |
+ * | N yrs 3 months ... N yrs 9 months | over N years |
+ * | N yrs 9 months ... N+1 yrs | almost N+1 years |
+ *
+ * With `options.includeSeconds == true`:
+ * | Distance to now | Result |
+ * |---------------------|----------------------|
+ * | 0 secs ... 5 secs | less than 5 seconds |
+ * | 5 secs ... 10 secs | less than 10 seconds |
+ * | 10 secs ... 20 secs | less than 20 seconds |
+ * | 20 secs ... 40 secs | half a minute |
+ * | 40 secs ... 60 secs | less than a minute |
+ * | 60 secs ... 90 secs | 1 minute |
+ *
+ * > ⚠️ Please note that this function is not present in the FP submodule as
+ * > it uses `Date.now()` internally hence impure and can't be safely curried.
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * - The function was renamed from `distanceInWordsToNow ` to `formatDistanceToNow`
+ * to make its name consistent with `format` and `formatRelative`.
+ *
+ * ```javascript
+ * // Before v2.0.0
+ *
+ * distanceInWordsToNow(new Date(2014, 6, 2), { addSuffix: true })
+ * //=> 'in 6 months'
+ *
+ * // v2.0.0 onward
+ *
+ * formatDistanceToNow(new Date(2014, 6, 2), { addSuffix: true })
+ * //=> 'in 6 months'
+ * ```
+ *
+ * @param {Date|Number} date - the given date
+ * @param {Object} [options] - the object with options
+ * @param {Boolean} [options.includeSeconds=false] - distances less than a minute are more detailed
+ * @param {Boolean} [options.addSuffix=false] - result specifies if now is earlier or later than the passed date
+ * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}
+ * @returns {String} the distance in words
+ * @throws {TypeError} 1 argument required
+ * @throws {RangeError} `date` must not be Invalid Date
+ * @throws {RangeError} `options.locale` must contain `formatDistance` property
+ *
+ * @example
+ * // If today is 1 January 2015, what is the distance to 2 July 2014?
+ * var result = formatDistanceToNow(
+ * new Date(2014, 6, 2)
+ * )
+ * //=> '6 months'
+ *
+ * @example
+ * // If now is 1 January 2015 00:00:00,
+ * // what is the distance to 1 January 2015 00:00:15, including seconds?
+ * var result = formatDistanceToNow(
+ * new Date(2015, 0, 1, 0, 0, 15),
+ * {includeSeconds: true}
+ * )
+ * //=> 'less than 20 seconds'
+ *
+ * @example
+ * // If today is 1 January 2015,
+ * // what is the distance to 1 January 2016, with a suffix?
+ * var result = formatDistanceToNow(
+ * new Date(2016, 0, 1),
+ * {addSuffix: true}
+ * )
+ * //=> 'in about 1 year'
+ *
+ * @example
+ * // If today is 1 January 2015,
+ * // what is the distance to 1 August 2016 in Esperanto?
+ * var eoLocale = require('date-fns/locale/eo')
+ * var result = formatDistanceToNow(
+ * new Date(2016, 7, 1),
+ * {locale: eoLocale}
+ * )
+ * //=> 'pli ol 1 jaro'
+ */
+export default function formatDistanceToNow(dirtyDate, dirtyOptions) {
+ requiredArgs(1, arguments)
+
+ return distanceInWords(dirtyDate, Date.now(), dirtyOptions)
+}
diff --git a/date-fns/src/formatDistanceToNow/index.js.flow b/date-fns/src/formatDistanceToNow/index.js.flow
new file mode 100644
index 0000000..08687be
--- /dev/null
+++ b/date-fns/src/formatDistanceToNow/index.js.flow
@@ -0,0 +1,59 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (
+ date: Date | number,
+ options?: {
+ includeSeconds?: boolean,
+ addSuffix?: boolean,
+ locale?: Locale,
+ }
+) => string
diff --git a/date-fns/src/formatDistanceToNow/test.js b/date-fns/src/formatDistanceToNow/test.js
new file mode 100644
index 0000000..5d85b18
--- /dev/null
+++ b/date-fns/src/formatDistanceToNow/test.js
@@ -0,0 +1,232 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'assert'
+import sinon from 'sinon'
+import formatDistanceToNow from '.'
+
+describe('formatDistanceToNow', () => {
+ let clock
+ beforeEach(() => {
+ clock = sinon.useFakeTimers(new Date(1986, 3, 4, 10, 32, 0).getTime())
+ })
+
+ afterEach(() => {
+ clock.restore()
+ })
+
+ describe('seconds', () => {
+ describe('when the includeSeconds option is true', () => {
+ it('less than 5 seconds', () => {
+ const result = formatDistanceToNow(new Date(1986, 3, 4, 10, 31, 58), {
+ includeSeconds: true,
+ })
+ assert(result === 'less than 5 seconds')
+ })
+
+ it('less than 10 seconds', () => {
+ const result = formatDistanceToNow(new Date(1986, 3, 4, 10, 31, 52), {
+ includeSeconds: true,
+ })
+ assert(result === 'less than 10 seconds')
+ })
+
+ it('less than 20 seconds', () => {
+ const result = formatDistanceToNow(new Date(1986, 3, 4, 10, 31, 45), {
+ includeSeconds: true,
+ })
+ assert(result === 'less than 20 seconds')
+ })
+
+ it('half a minute', () => {
+ const result = formatDistanceToNow(new Date(1986, 3, 4, 10, 31, 35), {
+ includeSeconds: true,
+ })
+ assert(result === 'half a minute')
+ })
+
+ it('less than a minute', () => {
+ const result = formatDistanceToNow(new Date(1986, 3, 4, 10, 31, 15), {
+ includeSeconds: true,
+ })
+ assert(result === 'less than a minute')
+ })
+
+ it('1 minute', () => {
+ const result = formatDistanceToNow(new Date(1986, 3, 4, 10, 31, 0), {
+ includeSeconds: true,
+ })
+ assert(result === '1 minute')
+ })
+ })
+ })
+
+ describe('minutes', () => {
+ it('less than a minute', () => {
+ const result = formatDistanceToNow(new Date(1986, 3, 4, 10, 31, 40))
+ assert(result === 'less than a minute')
+ })
+
+ it('1 minute', () => {
+ const result = formatDistanceToNow(new Date(1986, 3, 4, 10, 31, 10))
+ assert(result === '1 minute')
+ })
+
+ it('n minutes', () => {
+ const result = formatDistanceToNow(new Date(1986, 3, 4, 10, 29, 10))
+ assert(result === '3 minutes')
+ })
+ })
+
+ describe('hours', () => {
+ it('about 1 hour', () => {
+ const result = formatDistanceToNow(new Date(1986, 3, 4, 9, 32, 0))
+ assert(result === 'about 1 hour')
+ })
+
+ it('about n hours', () => {
+ const result = formatDistanceToNow(new Date(1986, 3, 4, 7, 32, 0))
+ assert(result === 'about 3 hours')
+ })
+ })
+
+ describe('days', () => {
+ it('1 day', () => {
+ const result = formatDistanceToNow(new Date(1986, 3, 3, 10, 32, 0))
+ assert(result === '1 day')
+ })
+
+ it('n days', () => {
+ const result = formatDistanceToNow(new Date(1986, 3, 1, 10, 32, 0))
+ assert(result === '3 days')
+ })
+ })
+
+ describe('months', () => {
+ it('about 1 month', () => {
+ const result = formatDistanceToNow(new Date(1986, 2, 4, 10, 32, 0))
+ assert(result === 'about 1 month')
+ })
+
+ it('n months', () => {
+ const result = formatDistanceToNow(new Date(1986, 0, 4, 10, 32, 0))
+ assert(result === '3 months')
+ })
+ })
+
+ describe('years', () => {
+ it('about 1 year', () => {
+ const result = formatDistanceToNow(new Date(1985, 3, 4, 10, 32, 0))
+ assert(result === 'about 1 year')
+ })
+
+ it('over 1 year', () => {
+ const result = formatDistanceToNow(new Date(1984, 10, 4, 10, 32, 0))
+ assert(result === 'over 1 year')
+ })
+
+ it('almost n years', () => {
+ const result = formatDistanceToNow(new Date(1983, 4, 4, 10, 32, 0))
+ assert(result === 'almost 3 years')
+ })
+
+ it('about n years', () => {
+ const result = formatDistanceToNow(new Date(1983, 3, 4, 10, 32, 0))
+ assert(result === 'about 3 years')
+ })
+
+ it('over n years', () => {
+ const result = formatDistanceToNow(new Date(1982, 10, 4, 10, 32, 0))
+ assert(result === 'over 3 years')
+ })
+ })
+
+ it('accepts a timestamp', () => {
+ const result = formatDistanceToNow(
+ new Date(1986, 3, 4, 10, 31, 40).getTime()
+ )
+ assert(result === 'less than a minute')
+ })
+
+ describe('when the addSuffix option is true', () => {
+ it('adds a past suffix', () => {
+ const result = formatDistanceToNow(new Date(1986, 3, 4, 10, 31, 35), {
+ includeSeconds: true,
+ addSuffix: true,
+ })
+ assert(result === 'half a minute ago')
+ })
+
+ it('adds a future suffix', () => {
+ const result = formatDistanceToNow(new Date(1986, 3, 4, 11, 32, 0), {
+ addSuffix: true,
+ })
+ assert(result === 'in about 1 hour')
+ })
+ })
+
+ describe('implicit conversion of options', () => {
+ it('`options.includeSeconds`', () => {
+ const result = formatDistanceToNow(
+ new Date(1986, 3, 4, 10, 31, 52),
+ // $ExpectedMistake
+ { includeSeconds: 1 }
+ )
+ assert(result === 'less than 10 seconds')
+ })
+
+ it('`options.addSuffix`', () => {
+ const result = formatDistanceToNow(
+ new Date(1986, 3, 4, 11, 32, 0),
+ // $ExpectedMistake
+ { addSuffix: 1 }
+ )
+ assert(result === 'in about 1 hour')
+ })
+ })
+
+ describe('custom locale', () => {
+ it('can be passed to the function', () => {
+ function localizeDistance(token, count, options) {
+ assert(token === 'aboutXHours')
+ assert(count === 1)
+ assert(options.addSuffix === true)
+ assert(options.comparison > 0)
+ return 'It works!'
+ }
+
+ const customLocale = {
+ formatDistance: localizeDistance,
+ }
+
+ const result = formatDistanceToNow(new Date(1986, 3, 4, 11, 32, 0), {
+ addSuffix: true,
+ // $ExpectedMistake
+ locale: customLocale,
+ })
+
+ assert(result === 'It works!')
+ })
+
+ describe('does not contain `distanceInWords` property', () => {
+ it('throws `RangeError`', function () {
+ const customLocale = {}
+ const block = formatDistanceToNow.bind(
+ null,
+ // $ExpectedMistake
+ new Date(1986, 3, 4, 10, 32, 0),
+ { includeSeconds: true, locale: customLocale }
+ )
+ assert.throws(block, RangeError)
+ })
+ })
+ })
+
+ it('throws RangeError if the passed date is `Invalid Date`', function () {
+ assert.throws(formatDistanceToNow.bind(null, new Date(NaN)), RangeError)
+ })
+
+ it('throws TypeError exception if passed less than 1 argument', () => {
+ assert.throws(formatDistanceToNow.bind(null), TypeError)
+ })
+})
diff --git a/date-fns/src/formatDistanceToNowStrict/benchmark.js b/date-fns/src/formatDistanceToNowStrict/benchmark.js
new file mode 100644
index 0000000..47d9e08
--- /dev/null
+++ b/date-fns/src/formatDistanceToNowStrict/benchmark.js
@@ -0,0 +1,25 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import formatDistanceToNowStrict from '.'
+import moment from 'moment'
+
+suite(
+ 'formatDistanceToNowStrict',
+ function() {
+ benchmark('date-fns', function() {
+ return formatDistanceToNowStrict(this.date)
+ })
+
+ benchmark('Moment.js', function() {
+ return this.moment.toNow()
+ })
+ },
+ {
+ setup: function() {
+ this.date = new Date()
+ this.moment = moment()
+ }
+ }
+)
diff --git a/date-fns/src/formatDistanceToNowStrict/index.d.ts b/date-fns/src/formatDistanceToNowStrict/index.d.ts
new file mode 100644
index 0000000..4f00e65
--- /dev/null
+++ b/date-fns/src/formatDistanceToNowStrict/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { formatDistanceToNowStrict } from 'date-fns'
+export default formatDistanceToNowStrict
diff --git a/date-fns/src/formatDistanceToNowStrict/index.js b/date-fns/src/formatDistanceToNowStrict/index.js
new file mode 100644
index 0000000..2f61d88
--- /dev/null
+++ b/date-fns/src/formatDistanceToNowStrict/index.js
@@ -0,0 +1,82 @@
+import formatDistanceStrict from '../formatDistanceStrict/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name formatDistanceToNowStrict
+ * @category Common Helpers
+ * @summary Return the distance between the given date and now in words.
+ * @pure false
+ *
+ * @description
+ * Return the distance between the given dates in words, using strict units.
+ * This is like `formatDistance`, but does not use helpers like 'almost', 'over',
+ * 'less than' and the like.
+ *
+ * | Distance between dates | Result |
+ * |------------------------|---------------------|
+ * | 0 ... 59 secs | [0..59] seconds |
+ * | 1 ... 59 mins | [1..59] minutes |
+ * | 1 ... 23 hrs | [1..23] hours |
+ * | 1 ... 29 days | [1..29] days |
+ * | 1 ... 11 months | [1..11] months |
+ * | 1 ... N years | [1..N] years |
+ *
+ * @param {Date|Number} date - the given date
+ * @param {Object} [options] - an object with options.
+ * @param {Boolean} [options.addSuffix=false] - result indicates if the second date is earlier or later than the first
+ * @param {'second'|'minute'|'hour'|'day'|'month'|'year'} [options.unit] - if specified, will force a unit
+ * @param {'floor'|'ceil'|'round'} [options.roundingMethod='round'] - which way to round partial units
+ * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}
+ * @returns {String} the distance in words
+ * @throws {TypeError} 1 argument required
+ * @throws {RangeError} `date` must not be Invalid Date
+ * @throws {RangeError} `options.locale` must contain `formatDistance` property
+ *
+ * @example
+ * // If today is 1 January 2015, what is the distance to 2 July 2014?
+ * var result = formatDistanceToNowStrict(
+ * new Date(2014, 6, 2)
+ * )
+ * //=> '6 months'
+ *
+ * @example
+ * // If now is 1 January 2015 00:00:00,
+ * // what is the distance to 1 January 2015 00:00:15, including seconds?
+ * var result = formatDistanceToNowStrict(
+ * new Date(2015, 0, 1, 0, 0, 15)
+ * )
+ * //=> '20 seconds'
+ *
+ * @example
+ * // If today is 1 January 2015,
+ * // what is the distance to 1 January 2016, with a suffix?
+ * var result = formatDistanceToNowStrict(
+ * new Date(2016, 0, 1),
+ * {addSuffix: true}
+ * )
+ * //=> 'in 1 year'
+ *
+ * @example
+ * // If today is 28 January 2015,
+ * // what is the distance to 1 January 2015, in months, rounded up??
+ * var result = formatDistanceToNowStrict(new Date(2015, 0, 1), {
+ * unit: 'month',
+ * roundingMethod: 'ceil'
+ * })
+ * //=> '1 month'
+ *
+ * @example
+ * // If today is 1 January 2015,
+ * // what is the distance to 1 August 2016 in Esperanto?
+ * var eoLocale = require('date-fns/locale/eo')
+ * var result = formatDistanceToNowStrict(
+ * new Date(2016, 7, 1),
+ * {locale: eoLocale}
+ * )
+ * //=> '1 jaro'
+ */
+export default function formatDistanceToNowStrict(dirtyDate, dirtyOptions) {
+ requiredArgs(1, arguments)
+
+ return formatDistanceStrict(dirtyDate, Date.now(), dirtyOptions)
+}
diff --git a/date-fns/src/formatDistanceToNowStrict/index.js.flow b/date-fns/src/formatDistanceToNowStrict/index.js.flow
new file mode 100644
index 0000000..49fbade
--- /dev/null
+++ b/date-fns/src/formatDistanceToNowStrict/index.js.flow
@@ -0,0 +1,60 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (
+ date: Date | number,
+ options?: {
+ addSuffix?: boolean,
+ unit?: 'second' | 'minute' | 'hour' | 'day' | 'month' | 'year',
+ roundingMethod?: 'floor' | 'ceil' | 'round',
+ locale?: Locale,
+ }
+) => string
diff --git a/date-fns/src/formatDistanceToNowStrict/test.js b/date-fns/src/formatDistanceToNowStrict/test.js
new file mode 100644
index 0000000..016476f
--- /dev/null
+++ b/date-fns/src/formatDistanceToNowStrict/test.js
@@ -0,0 +1,422 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import sinon from 'sinon'
+import formatDistanceToNowStrict from '.'
+
+describe('formatDistanceToNowStrict', function () {
+ let clock
+ beforeEach(() => {
+ clock = sinon.useFakeTimers(new Date(1986, 3, 4, 10, 32, 0).getTime())
+ })
+
+ afterEach(() => {
+ clock.restore()
+ })
+
+ describe('seconds', function () {
+ describe('when no unit is set', function () {
+ it('0 seconds', function () {
+ var result = formatDistanceToNowStrict(new Date(1986, 3, 4, 10, 32, 0))
+ assert(result === '0 seconds')
+ })
+
+ it('5 seconds', function () {
+ var result = formatDistanceToNowStrict(new Date(1986, 3, 4, 10, 32, 5))
+ assert(result === '5 seconds')
+ })
+ })
+ })
+
+ describe('minutes', function () {
+ it('1 minute', function () {
+ var result = formatDistanceToNowStrict(new Date(1986, 3, 4, 10, 33, 0))
+ assert(result === '1 minute')
+ })
+
+ it('n minutes', function () {
+ var result = formatDistanceToNowStrict(new Date(1986, 3, 4, 10, 35, 0))
+ assert(result === '3 minutes')
+ })
+ })
+
+ describe('hours', function () {
+ it('1 hour', function () {
+ var result = formatDistanceToNowStrict(new Date(1986, 3, 4, 11, 32, 0))
+ assert(result === '1 hour')
+ })
+
+ it('n hours', function () {
+ var result = formatDistanceToNowStrict(new Date(1986, 3, 4, 13, 32, 0))
+ assert(result === '3 hours')
+ })
+ })
+
+ describe('days', function () {
+ it('1 day', function () {
+ var result = formatDistanceToNowStrict(new Date(1986, 3, 5, 10, 32, 0))
+ assert(result === '1 day')
+ })
+
+ it('n days', function () {
+ var result = formatDistanceToNowStrict(new Date(1986, 3, 7, 10, 32, 0))
+ assert(result === '3 days')
+ })
+ })
+
+ describe('months', function () {
+ it('1 month', function () {
+ var result = formatDistanceToNowStrict(new Date(1986, 4, 4, 10, 32, 0))
+ assert(result === '1 month')
+ })
+
+ it('n months', function () {
+ var result = formatDistanceToNowStrict(new Date(1986, 6, 4, 10, 32, 0))
+ assert(result === '3 months')
+ })
+ })
+
+ describe('years', function () {
+ it('1 year', function () {
+ var result = formatDistanceToNowStrict(new Date(1987, 3, 4, 10, 32, 0))
+ assert(result === '1 year')
+ })
+
+ it('n years', function () {
+ var result = formatDistanceToNowStrict(new Date(1991, 3, 4, 10, 32, 0))
+ assert(result === '5 years')
+ })
+ })
+
+ describe('when the unit option is supplied', function () {
+ describe('second', function () {
+ it('0 seconds', function () {
+ var result = formatDistanceToNowStrict(
+ new Date(1986, 3, 4, 10, 32, 0),
+ { unit: 'second' }
+ )
+ assert(result === '0 seconds')
+ })
+
+ it('5 seconds', function () {
+ var result = formatDistanceToNowStrict(
+ new Date(1986, 3, 4, 10, 32, 5),
+ { unit: 'second' }
+ )
+ assert(result === '5 seconds')
+ })
+
+ it('120 seconds', function () {
+ var result = formatDistanceToNowStrict(
+ new Date(1986, 3, 4, 10, 34, 0),
+ { unit: 'second' }
+ )
+ assert(result === '120 seconds')
+ })
+ })
+
+ describe('minute', function () {
+ it('0 minutes', function () {
+ var result = formatDistanceToNowStrict(
+ new Date(1986, 3, 4, 10, 32, 0),
+ { unit: 'minute' }
+ )
+ assert(result === '0 minutes')
+ })
+
+ it('5 minutes', function () {
+ var result = formatDistanceToNowStrict(
+ new Date(1986, 3, 4, 10, 37, 0),
+ { unit: 'minute' }
+ )
+ assert(result === '5 minutes')
+ })
+
+ it('120 minutes', function () {
+ var result = formatDistanceToNowStrict(
+ new Date(1986, 3, 4, 12, 32, 0),
+ { unit: 'minute' }
+ )
+ assert(result === '120 minutes')
+ })
+ })
+
+ describe('hour', function () {
+ it('0 hours', function () {
+ var result = formatDistanceToNowStrict(
+ new Date(1986, 3, 4, 10, 32, 0),
+ { unit: 'hour' }
+ )
+ assert(result === '0 hours')
+ })
+
+ it('5 hours', function () {
+ var result = formatDistanceToNowStrict(
+ new Date(1986, 3, 4, 15, 32, 0),
+ { unit: 'hour' }
+ )
+ assert(result === '5 hours')
+ })
+
+ it('48 hours', function () {
+ var result = formatDistanceToNowStrict(
+ new Date(1986, 3, 6, 10, 32, 0),
+ { unit: 'hour' }
+ )
+ assert(result === '48 hours')
+ })
+ })
+
+ describe('day', function () {
+ it('0 days', function () {
+ var result = formatDistanceToNowStrict(
+ new Date(1986, 3, 4, 10, 32, 0),
+ { unit: 'day' }
+ )
+ assert(result === '0 days')
+ })
+
+ it('5 days', function () {
+ var result = formatDistanceToNowStrict(
+ new Date(1986, 3, 9, 10, 32, 0),
+ { unit: 'day' }
+ )
+ assert(result === '5 days')
+ })
+
+ it('60 days', function () {
+ var result = formatDistanceToNowStrict(
+ new Date(1986, 5, 3, 10, 32, 0),
+ { unit: 'day' }
+ )
+ assert(result === '60 days')
+ })
+ })
+ describe('month', function () {
+ it('0 months', function () {
+ var result = formatDistanceToNowStrict(
+ new Date(1986, 3, 4, 10, 32, 0),
+ { unit: 'month' }
+ )
+ assert(result === '0 months')
+ })
+
+ it('5 months', function () {
+ var result = formatDistanceToNowStrict(
+ new Date(1986, 7, 4, 10, 32, 0),
+ { unit: 'month' }
+ )
+ assert(result === '4 months')
+ })
+
+ it('24 months', function () {
+ var result = formatDistanceToNowStrict(
+ new Date(1988, 3, 4, 10, 32, 0),
+ { unit: 'month' }
+ )
+ assert(result === '24 months')
+ })
+ })
+
+ describe('year', function () {
+ it('returns `1 year` - see issue 2388', () => {
+ const result = formatDistanceToNowStrict(
+ new Date(1985, 3, 4, 10, 32, 0)
+ )
+ assert(result === '1 year')
+ })
+
+ it('returns `2 years` - see issue 2388', () => {
+ const result = formatDistanceToNowStrict(
+ new Date(1984, 3, 4, 10, 32, 0)
+ )
+ assert(result === '2 years')
+ })
+
+ it('0 years', function () {
+ var result = formatDistanceToNowStrict(
+ new Date(1986, 3, 4, 10, 32, 0),
+ { unit: 'year' }
+ )
+ assert(result === '0 years')
+ })
+
+ it('5 years', function () {
+ var result = formatDistanceToNowStrict(
+ new Date(1991, 3, 4, 15, 32, 0),
+ { unit: 'year' }
+ )
+ assert(result === '5 years')
+ })
+ })
+ })
+
+ it('accepts timestamps', function () {
+ var result = formatDistanceToNowStrict(
+ new Date(1986, 3, 4, 11, 32, 0).getTime()
+ )
+ assert(result === '1 hour')
+ })
+
+ describe('when the addSuffix option is true', function () {
+ it('adds a past suffix', function () {
+ var result = formatDistanceToNowStrict(new Date(1986, 3, 4, 10, 31, 35), {
+ addSuffix: true,
+ })
+ assert(result === '25 seconds ago')
+ })
+
+ it('adds a future suffix', function () {
+ var result = formatDistanceToNowStrict(new Date(1986, 3, 4, 11, 32, 0), {
+ addSuffix: true,
+ })
+ assert(result === 'in 1 hour')
+ })
+ })
+
+ describe('when the roundingMethod option is supplied', function () {
+ it('default is "round"', function () {
+ var result = formatDistanceToNowStrict(new Date(1986, 3, 4, 10, 33, 59))
+ assert(result === '2 minutes')
+ })
+
+ it('"floor"', function () {
+ var result = formatDistanceToNowStrict(new Date(1986, 3, 4, 10, 33, 59), {
+ roundingMethod: 'floor',
+ })
+ assert(result === '1 minute')
+ })
+
+ it('"ceil"', function () {
+ var result = formatDistanceToNowStrict(new Date(1986, 3, 4, 10, 33, 1), {
+ roundingMethod: 'ceil',
+ })
+ assert(result === '2 minutes')
+ })
+
+ it('"round" (down)', function () {
+ var result = formatDistanceToNowStrict(new Date(1986, 3, 4, 10, 33, 29), {
+ roundingMethod: 'round',
+ })
+ assert(result === '1 minute')
+ })
+
+ it('"round" (up)', function () {
+ var result = formatDistanceToNowStrict(new Date(1986, 3, 4, 10, 33, 30), {
+ roundingMethod: 'round',
+ })
+ assert(result === '2 minutes')
+ })
+ })
+
+ describe('implicit conversion of options', function () {
+ it('`options.unit`', function () {
+ // eslint-disable-next-line no-new-wrappers
+ var unit = new String('year')
+
+ var result = formatDistanceToNowStrict(
+ new Date(1986, 3, 4, 10, 32, 0),
+ // $ExpectedMistake
+ { unit: unit }
+ )
+ assert(result === '0 years')
+ })
+
+ it('`options.addSuffix`', function () {
+ var result = formatDistanceToNowStrict(
+ new Date(1986, 3, 4, 10, 31, 35),
+ // $ExpectedMistake
+ { addSuffix: 1 }
+ )
+ assert(result === '25 seconds ago')
+ })
+
+ it('`options.ceil`', function () {
+ // eslint-disable-next-line no-new-wrappers
+ var roundingMethod = new String('ceil')
+
+ var result = formatDistanceToNowStrict(
+ new Date(1986, 3, 4, 10, 33, 1),
+ // $ExpectedMistake
+ { roundingMethod: roundingMethod }
+ )
+ assert(result === '2 minutes')
+ })
+ })
+
+ describe('custom locale', function () {
+ it('can be passed to the function', function () {
+ function localizeDistance(token, count, options) {
+ assert(token === 'xSeconds')
+ assert(count === 15)
+ assert(options.addSuffix === true)
+ assert(options.comparison < 0)
+ return 'It works!'
+ }
+
+ var customLocale = {
+ formatDistance: localizeDistance,
+ }
+
+ var result = formatDistanceToNowStrict(
+ new Date(1986, 3, 4, 10, 31, 45),
+ // $ExpectedMistake
+ { addSuffix: true, locale: customLocale }
+ )
+
+ assert(result === 'It works!')
+ })
+
+ describe('does not contain `formatDistance` property', function () {
+ it('throws `RangeError`', function () {
+ var customLocale = {}
+ var block = formatDistanceToNowStrict.bind(
+ null,
+ // $ExpectedMistake
+ new Date(1986, 3, 4, 10, 37, 0),
+ { unit: 'minute', locale: customLocale }
+ )
+ assert.throws(block, RangeError)
+ })
+ })
+ })
+
+ describe('edge cases', function () {
+ it('detects unit correctly for short months', function () {
+ var result = formatDistanceToNowStrict(new Date(1986, 2 /* Mar */, 7))
+ assert(result === '28 days')
+ })
+ })
+
+ it('throws `RangeError` if the date is `Invalid Date`', function () {
+ assert.throws(
+ formatDistanceToNowStrict.bind(null, new Date(NaN)),
+ RangeError
+ )
+ })
+
+ it("throws `RangeError` if `options.roundingMethod` is not 'floor', 'ceil', 'round' or undefined", function () {
+ var block = formatDistanceToNowStrict.bind(
+ null,
+ new Date(1986, 3, 4, 10, 33, 29),
+ // $ExpectedMistake
+ { roundingMethod: 'foobar' }
+ )
+ assert.throws(block, RangeError)
+ })
+
+ it("throws `RangeError` if `options.unit` is not 's', 'm', 'h', 'd', 'M', 'Y' or undefined", function () {
+ var block = formatDistanceToNowStrict.bind(
+ null,
+ new Date(1986, 3, 4, 10, 33, 29),
+ // $ExpectedMistake
+ { unit: 'foobar' }
+ )
+ assert.throws(block, RangeError)
+ })
+
+ it('throws TypeError exception if passed less than 1 arguments', function () {
+ assert.throws(formatDistanceToNowStrict.bind(null), TypeError)
+ })
+})
diff --git a/date-fns/src/formatDuration/index.d.ts b/date-fns/src/formatDuration/index.d.ts
new file mode 100644
index 0000000..be96776
--- /dev/null
+++ b/date-fns/src/formatDuration/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { formatDuration } from 'date-fns'
+export default formatDuration
diff --git a/date-fns/src/formatDuration/index.js b/date-fns/src/formatDuration/index.js
new file mode 100644
index 0000000..c4130a6
--- /dev/null
+++ b/date-fns/src/formatDuration/index.js
@@ -0,0 +1,100 @@
+import defaultLocale from '../locale/en-US/index'
+
+const defaultFormat = [
+ 'years',
+ 'months',
+ 'weeks',
+ 'days',
+ 'hours',
+ 'minutes',
+ 'seconds',
+]
+
+/**
+ * @name formatDuration
+ * @category Common Helpers
+ * @summary Formats a duration in human-readable format
+ *
+ * @description
+ * Return human-readable duration string i.e. "9 months 2 days"
+ *
+ * @param {Duration} duration - the duration to format
+ * @param {Object} [options] - an object with options.
+
+ * @param {string[]} [options.format=['years', 'months', 'weeks', 'days', 'hours', 'minutes', 'seconds']] - the array of units to format
+ * @param {boolean} [options.zero=false] - should be zeros be included in the output?
+ * @param {string} [options.delimiter=' '] - delimiter string
+ * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}
+ * @returns {string} the formatted date string
+ * @throws {TypeError} 1 argument required
+ *
+ * @example
+ * // Format full duration
+ * formatDuration({
+ * years: 2,
+ * months: 9,
+ * weeks: 1,
+ * days: 7,
+ * hours: 5,
+ * minutes: 9,
+ * seconds: 30
+ * })
+ * //=> '2 years 9 months 1 week 7 days 5 hours 9 minutes 30 seconds
+ *
+ * @example
+ * // Format partial duration
+ * formatDuration({ months: 9, days: 2 })
+ * //=> '9 months 2 days'
+ *
+ * @example
+ * // Customize the format
+ * formatDuration(
+ * {
+ * years: 2,
+ * months: 9,
+ * weeks: 1,
+ * days: 7,
+ * hours: 5,
+ * minutes: 9,
+ * seconds: 30
+ * },
+ * { format: ['months', 'weeks'] }
+ * ) === '9 months 1 week'
+ *
+ * @example
+ * // Customize the zeros presence
+ * formatDuration({ years: 0, months: 9 })
+ * //=> '9 months'
+ * formatDuration({ years: 0, months: 9 }, { zero: true })
+ * //=> '0 years 9 months'
+ *
+ * @example
+ * // Customize the delimiter
+ * formatDuration({ years: 2, months: 9, weeks: 3 }, { delimiter: ', ' })
+ * //=> '2 years, 9 months, 3 weeks'
+ */
+export default function formatDuration(duration, options) {
+ if (arguments.length < 1) {
+ throw new TypeError(
+ `1 argument required, but only ${arguments.length} present`
+ )
+ }
+
+ const format = options?.format || defaultFormat
+ const locale = options?.locale || defaultLocale
+ const zero = options?.zero || false
+ const delimiter = options?.delimiter || ' '
+
+ const result = format
+ .reduce((acc, unit) => {
+ const token = `x${unit.replace(/(^.)/, (m) => m.toUpperCase())}`
+ const addChunk =
+ typeof duration[unit] === 'number' && (zero || duration[unit])
+ return addChunk
+ ? acc.concat(locale.formatDistance(token, duration[unit]))
+ : acc
+ }, [])
+ .join(delimiter)
+
+ return result
+}
diff --git a/date-fns/src/formatDuration/index.js.flow b/date-fns/src/formatDuration/index.js.flow
new file mode 100644
index 0000000..022ea8e
--- /dev/null
+++ b/date-fns/src/formatDuration/index.js.flow
@@ -0,0 +1,60 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (
+ duration: Duration,
+ options?: {
+ format?: string[],
+ zero?: boolean,
+ delimiter?: string,
+ locale?: Locale,
+ }
+) => string
diff --git a/date-fns/src/formatDuration/test.js b/date-fns/src/formatDuration/test.js
new file mode 100644
index 0000000..f9bb7af
--- /dev/null
+++ b/date-fns/src/formatDuration/test.js
@@ -0,0 +1,80 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import formatDuration from '.'
+
+describe('formatDuration', () => {
+ it('formats full duration', () => {
+ assert(
+ formatDuration({
+ years: 2,
+ months: 9,
+ weeks: 1,
+ days: 7,
+ hours: 5,
+ minutes: 9,
+ seconds: 30
+ }) === '2 years 9 months 1 week 7 days 5 hours 9 minutes 30 seconds'
+ )
+ })
+
+ it('formats partial duration', () => {
+ assert(formatDuration({ months: 9, days: 2 }) === '9 months 2 days')
+ })
+
+ it('allows to customize the format', () => {
+ assert(
+ formatDuration(
+ {
+ years: 2,
+ months: 9,
+ weeks: 1,
+ days: 7,
+ hours: 5,
+ minutes: 9,
+ seconds: 30
+ },
+ { format: ['months', 'weeks'] }
+ ) === '9 months 1 week'
+ )
+ })
+
+ it('does not include zeros by default', () => {
+ assert(
+ formatDuration({
+ years: 0,
+ months: 0,
+ weeks: 1,
+ days: 0,
+ hours: 0,
+ minutes: 0,
+ seconds: 0
+ }) === '1 week'
+ )
+ })
+
+ it('allows to include zeros', () => {
+ assert(
+ formatDuration(
+ {
+ years: 0,
+ months: 0,
+ weeks: 1,
+ days: 0,
+ hours: 0,
+ minutes: 0,
+ seconds: 0
+ },
+ { zero: true }
+ ) === '0 years 0 months 1 week 0 days 0 hours 0 minutes 0 seconds'
+ )
+ })
+
+ it('allows to customize the delimiter', () => {
+ assert(
+ formatDuration({ months: 9, days: 2 }, { delimiter: ', ' }) ===
+ '9 months, 2 days'
+ )
+ })
+})
diff --git a/date-fns/src/formatISO/index.d.ts b/date-fns/src/formatISO/index.d.ts
new file mode 100644
index 0000000..4ed5a00
--- /dev/null
+++ b/date-fns/src/formatISO/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { formatISO } from 'date-fns'
+export default formatISO
diff --git a/date-fns/src/formatISO/index.js b/date-fns/src/formatISO/index.js
new file mode 100644
index 0000000..e12288f
--- /dev/null
+++ b/date-fns/src/formatISO/index.js
@@ -0,0 +1,121 @@
+import toDate from '../toDate/index'
+import isValid from '../isValid/index'
+import addLeadingZeros from '../_lib/addLeadingZeros/index'
+
+/**
+ * @name formatISO
+ * @category Common Helpers
+ * @summary Format the date according to the ISO 8601 standard (http://support.sas.com/documentation/cdl/en/lrdict/64316/HTML/default/viewer.htm#a003169814.htm).
+ *
+ * @description
+ * Return the formatted date string in ISO 8601 format. Options may be passed to control the parts and notations of the date.
+ *
+ * @param {Date|Number} date - the original date
+ * @param {Object} [options] - an object with options.
+ * @param {'extended'|'basic'} [options.format='extended'] - if 'basic', hide delimiters between date and time values.
+ * @param {'complete'|'date'|'time'} [options.representation='complete'] - format date, time with time zone, or both.
+ * @returns {String} the formatted date string
+ * @throws {TypeError} 1 argument required
+ * @throws {RangeError} `date` must not be Invalid Date
+ * @throws {RangeError} `options.format` must be 'extended' or 'basic'
+ * @throws {RangeError} `options.represenation` must be 'date', 'time' or 'complete'
+ *
+ * @example
+ * // Represent 18 September 2019 in ISO 8601 format (UTC):
+ * const result = formatISO(new Date(2019, 8, 18, 19, 0, 52))
+ * //=> '2019-09-18T19:00:52Z'
+ *
+ * @example
+ * // Represent 18 September 2019 in ISO 8601, short format (UTC):
+ * const result = formatISO(new Date(2019, 8, 18, 19, 0, 52), { format: 'basic' })
+ * //=> '20190918T190052'
+ *
+ * @example
+ * // Represent 18 September 2019 in ISO 8601 format, date only:
+ * const result = formatISO(new Date(2019, 8, 18, 19, 0, 52), { representation: 'date' })
+ * //=> '2019-09-18'
+ *
+ * @example
+ * // Represent 18 September 2019 in ISO 8601 format, time only (UTC):
+ * const result = formatISO(new Date(2019, 8, 18, 19, 0, 52), { representation: 'time' })
+ * //=> '19:00:52Z'
+ */
+export default function formatISO(dirtyDate, dirtyOptions) {
+ if (arguments.length < 1) {
+ throw new TypeError(
+ `1 argument required, but only ${arguments.length} present`
+ )
+ }
+
+ const originalDate = toDate(dirtyDate)
+
+ if (!isValid(originalDate)) {
+ throw new RangeError('Invalid time value')
+ }
+
+ const options = dirtyOptions || {}
+ const format = options.format == null ? 'extended' : String(options.format)
+ const representation =
+ options.representation == null ? 'complete' : String(options.representation)
+
+ if (format !== 'extended' && format !== 'basic') {
+ throw new RangeError("format must be 'extended' or 'basic'")
+ }
+
+ if (
+ representation !== 'date' &&
+ representation !== 'time' &&
+ representation !== 'complete'
+ ) {
+ throw new RangeError("representation must be 'date', 'time', or 'complete'")
+ }
+
+ let result = ''
+ let tzOffset = ''
+
+ const dateDelimiter = format === 'extended' ? '-' : ''
+ const timeDelimiter = format === 'extended' ? ':' : ''
+
+ // Representation is either 'date' or 'complete'
+ if (representation !== 'time') {
+ const day = addLeadingZeros(originalDate.getDate(), 2)
+ const month = addLeadingZeros(originalDate.getMonth() + 1, 2)
+ const year = addLeadingZeros(originalDate.getFullYear(), 4)
+
+ // yyyyMMdd or yyyy-MM-dd.
+ result = `${year}${dateDelimiter}${month}${dateDelimiter}${day}`
+ }
+
+ // Representation is either 'time' or 'complete'
+ if (representation !== 'date') {
+ // Add the timezone.
+ const offset = originalDate.getTimezoneOffset()
+
+ if (offset !== 0) {
+ const absoluteOffset = Math.abs(offset)
+ const hourOffset = addLeadingZeros(Math.floor(absoluteOffset / 60), 2)
+ const minuteOffset = addLeadingZeros(absoluteOffset % 60, 2)
+ // If less than 0, the sign is +, because it is ahead of time.
+ const sign = offset < 0 ? '+' : '-'
+
+ tzOffset = `${sign}${hourOffset}:${minuteOffset}`
+ } else {
+ tzOffset = 'Z'
+ }
+
+ const hour = addLeadingZeros(originalDate.getHours(), 2)
+ const minute = addLeadingZeros(originalDate.getMinutes(), 2)
+ const second = addLeadingZeros(originalDate.getSeconds(), 2)
+
+ // If there's also date, separate it with time with 'T'
+ const separator = result === '' ? '' : 'T'
+
+ // Creates a time string consisting of hour, minute, and second, separated by delimiters, if defined.
+ const time = [hour, minute, second].join(timeDelimiter)
+
+ // HHmmss or HH:mm:ss.
+ result = `${result}${separator}${time}${tzOffset}`
+ }
+
+ return result
+}
diff --git a/date-fns/src/formatISO/index.js.flow b/date-fns/src/formatISO/index.js.flow
new file mode 100644
index 0000000..5d1e860
--- /dev/null
+++ b/date-fns/src/formatISO/index.js.flow
@@ -0,0 +1,58 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (
+ date: Date | number,
+ options?: {
+ format?: 'extended' | 'basic',
+ representation?: 'complete' | 'date' | 'time',
+ }
+) => string
diff --git a/date-fns/src/formatISO/test.js b/date-fns/src/formatISO/test.js
new file mode 100644
index 0000000..08193eb
--- /dev/null
+++ b/date-fns/src/formatISO/test.js
@@ -0,0 +1,122 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import formatISO from '.'
+import addLeadingZeros from '../_lib/addLeadingZeros'
+
+// This makes sure we create the consistent offsets across timezones, no matter where these tests are ran.
+function generateOffset(originalDate) {
+ // Add the timezone.
+ let offset = ''
+ const tzOffset = originalDate.getTimezoneOffset()
+
+ if (tzOffset !== 0) {
+ const absoluteOffset = Math.abs(tzOffset)
+ const hourOffset = addLeadingZeros(Math.floor(absoluteOffset / 60), 2)
+ const minuteOffset = addLeadingZeros(absoluteOffset % 60, 2)
+ // If less than 0, the sign is +, because it is ahead of time.
+ const sign = tzOffset < 0 ? '+' : '-'
+
+ offset = `${sign}${hourOffset}:${minuteOffset}`
+ } else {
+ offset = 'Z'
+ }
+
+ return offset
+}
+
+describe('formatISO', () => {
+ it('formats ISO-8601 extended format', () => {
+ const date = new Date(2019, 2 /* Mar */, 3, 19, 0, 52, 123)
+ const tzOffsetExtended = generateOffset(date)
+ assert(formatISO(date) === `2019-03-03T19:00:52${tzOffsetExtended}`)
+ })
+
+ it('accepts a timestamp', () => {
+ const date = new Date(2019, 2 /* Mar */, 3, 19, 0, 52, 123).getTime()
+ const tzOffsetExtended = generateOffset(new Date(date))
+ assert(formatISO(date) === `2019-03-03T19:00:52${tzOffsetExtended}`)
+ })
+
+ it('formats ISO-8601 basic format', () => {
+ const date = new Date(2019, 9 /* Oct */, 4, 12, 30, 13, 456)
+ const tzOffsetBasic = generateOffset(date)
+ assert(
+ formatISO(date, { format: 'basic' }) === `20191004T123013${tzOffsetBasic}`
+ )
+ })
+
+ it('formats only date', () => {
+ const date = new Date(2019, 11 /* Dec */, 11, 1, 0, 0, 789)
+
+ assert(
+ formatISO(date, { representation: 'date', format: 'extended' }) ===
+ '2019-12-11'
+ )
+ assert(
+ formatISO(date, { representation: 'date', format: 'basic' }) ===
+ '20191211'
+ )
+ })
+
+ it('formats only time', () => {
+ const date = new Date(2019, 2 /* Mar */, 3, 19, 0, 52, 123)
+ const tzOffset = generateOffset(date)
+
+ assert(
+ formatISO(date, { representation: 'time', format: 'extended' }) ===
+ `19:00:52${tzOffset}`
+ )
+ assert(
+ formatISO(date, { representation: 'time', format: 'basic' }) ===
+ `190052${tzOffset}`
+ )
+ })
+
+ describe('implicitly converts options', function() {
+ it('`format`', function() {
+ // eslint-disable-next-line no-new-wrappers
+ var format = new String('basic')
+ var date = new Date(2019, 9 /* Oct */, 4, 12, 30, 13, 456)
+ const tzOffsetExtended = generateOffset(date)
+ // $ExpectedMistake
+ var result = formatISO(date, { format: format })
+ assert(result === `20191004T123013${tzOffsetExtended}`)
+ })
+
+ it('`representation`', function() {
+ // eslint-disable-next-line no-new-wrappers
+ var representation = new String('time')
+ var date = new Date(2019, 9 /* Oct */, 4, 12, 30, 13, 456)
+ const tzOffsetExtended = generateOffset(date)
+ // $ExpectedMistake
+ var result = formatISO(date, { representation: representation })
+ assert(result === `12:30:13${tzOffsetExtended}`)
+ })
+ })
+
+ it("throws `RangeError` if `options.format` is not 'extended' or 'basic'", function() {
+ // $ExpectedMistake
+ var block = formatISO.bind(null, new Date(2019, 2 /* Mar */, 3), {
+ format: 'something else'
+ })
+ assert.throws(block, RangeError)
+ })
+
+ it("throws `RangeError` if `options.representation` is not 'date', 'time' or 'complete'", function() {
+ // $ExpectedMistake
+ var block = formatISO.bind(null, new Date(2019, 2 /* Mar */, 3), {
+ representation: 'something else'
+ })
+ assert.throws(block, RangeError)
+ })
+
+ it('throws RangeError if the time value is invalid', () => {
+ assert.throws(formatISO.bind(null, new Date(NaN)), RangeError)
+ })
+
+ it('throws TypeError exception if passed less than 1 argument', function() {
+ assert.throws(formatISO.bind(null), TypeError)
+ })
+})
diff --git a/date-fns/src/formatISO9075/index.d.ts b/date-fns/src/formatISO9075/index.d.ts
new file mode 100644
index 0000000..cc8dc89
--- /dev/null
+++ b/date-fns/src/formatISO9075/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { formatISO9075 } from 'date-fns'
+export default formatISO9075
diff --git a/date-fns/src/formatISO9075/index.js b/date-fns/src/formatISO9075/index.js
new file mode 100644
index 0000000..2b6da7f
--- /dev/null
+++ b/date-fns/src/formatISO9075/index.js
@@ -0,0 +1,102 @@
+import toDate from '../toDate/index'
+import isValid from '../isValid/index'
+import addLeadingZeros from '../_lib/addLeadingZeros/index'
+
+/**
+ * @name formatISO9075
+ * @category Common Helpers
+ * @summary Format the date according to the ISO 9075 standard (https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_get-format).
+ *
+ * @description
+ * Return the formatted date string in ISO 9075 format. Options may be passed to control the parts and notations of the date.
+ *
+ * @param {Date|Number} date - the original date
+ * @param {Object} [options] - an object with options.
+ * @param {'extended'|'basic'} [options.format='extended'] - if 'basic', hide delimiters between date and time values.
+ * @param {'complete'|'date'|'time'} [options.representation='complete'] - format date, time, or both.
+ * @returns {String} the formatted date string
+ * @throws {TypeError} 1 argument required
+ * @throws {RangeError} `date` must not be Invalid Date
+ * @throws {RangeError} `options.format` must be 'extended' or 'basic'
+ * @throws {RangeError} `options.represenation` must be 'date', 'time' or 'complete'
+ *
+ * @example
+ * // Represent 18 September 2019 in ISO 9075 format:
+ * const result = formatISO9075(new Date(2019, 8, 18, 19, 0, 52))
+ * //=> '2019-09-18 19:00:52'
+ *
+ * @example
+ * // Represent 18 September 2019 in ISO 9075, short format:
+ * const result = formatISO9075(new Date(2019, 8, 18, 19, 0, 52), { format: 'basic' })
+ * //=> '20190918 190052'
+ *
+ * @example
+ * // Represent 18 September 2019 in ISO 9075 format, date only:
+ * const result = formatISO9075(new Date(2019, 8, 18, 19, 0, 52), { representation: 'date' })
+ * //=> '2019-09-18'
+ *
+ * @example
+ * // Represent 18 September 2019 in ISO 9075 format, time only:
+ * const result = formatISO9075(new Date(2019, 8, 18, 19, 0, 52), { representation: 'time' })
+ * //=> '19:00:52'
+ */
+export default function formatISO9075(dirtyDate, dirtyOptions) {
+ if (arguments.length < 1) {
+ throw new TypeError(
+ `1 argument required, but only ${arguments.length} present`
+ )
+ }
+
+ const originalDate = toDate(dirtyDate)
+
+ if (!isValid(originalDate)) {
+ throw new RangeError('Invalid time value')
+ }
+
+ const options = dirtyOptions || {}
+ const format = options.format == null ? 'extended' : String(options.format)
+ const representation =
+ options.representation == null ? 'complete' : String(options.representation)
+
+ if (format !== 'extended' && format !== 'basic') {
+ throw new RangeError("format must be 'extended' or 'basic'")
+ }
+
+ if (
+ representation !== 'date' &&
+ representation !== 'time' &&
+ representation !== 'complete'
+ ) {
+ throw new RangeError("representation must be 'date', 'time', or 'complete'")
+ }
+
+ let result = ''
+
+ const dateDelimiter = format === 'extended' ? '-' : ''
+ const timeDelimiter = format === 'extended' ? ':' : ''
+
+ // Representation is either 'date' or 'complete'
+ if (representation !== 'time') {
+ const day = addLeadingZeros(originalDate.getDate(), 2)
+ const month = addLeadingZeros(originalDate.getMonth() + 1, 2)
+ const year = addLeadingZeros(originalDate.getFullYear(), 4)
+
+ // yyyyMMdd or yyyy-MM-dd.
+ result = `${year}${dateDelimiter}${month}${dateDelimiter}${day}`
+ }
+
+ // Representation is either 'time' or 'complete'
+ if (representation !== 'date') {
+ const hour = addLeadingZeros(originalDate.getHours(), 2)
+ const minute = addLeadingZeros(originalDate.getMinutes(), 2)
+ const second = addLeadingZeros(originalDate.getSeconds(), 2)
+
+ // If there's also date, separate it with time with a space
+ const separator = result === '' ? '' : ' '
+
+ // HHmmss or HH:mm:ss.
+ result = `${result}${separator}${hour}${timeDelimiter}${minute}${timeDelimiter}${second}`
+ }
+
+ return result
+}
diff --git a/date-fns/src/formatISO9075/index.js.flow b/date-fns/src/formatISO9075/index.js.flow
new file mode 100644
index 0000000..5d1e860
--- /dev/null
+++ b/date-fns/src/formatISO9075/index.js.flow
@@ -0,0 +1,58 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (
+ date: Date | number,
+ options?: {
+ format?: 'extended' | 'basic',
+ representation?: 'complete' | 'date' | 'time',
+ }
+) => string
diff --git a/date-fns/src/formatISO9075/test.js b/date-fns/src/formatISO9075/test.js
new file mode 100644
index 0000000..6362e50
--- /dev/null
+++ b/date-fns/src/formatISO9075/test.js
@@ -0,0 +1,90 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import formatISO9075 from '.'
+
+describe('formatISO9075', () => {
+ it('formats ISO-9075 extended date format', () => {
+ const date = new Date(2019, 2 /* Mar */, 3, 19, 0, 52, 123)
+ assert(formatISO9075(date) === '2019-03-03 19:00:52')
+ })
+
+ it('accepts a timestamp', () => {
+ const date = new Date(2019, 2 /* Mar */, 3, 19, 0, 52, 123).getTime()
+ assert(formatISO9075(date) === '2019-03-03 19:00:52')
+ })
+
+ it('formats ISO-8601 basic date format', () => {
+ const date = new Date(2019, 9 /* Oct */, 4, 12, 30, 13, 456)
+ assert(formatISO9075(date, { format: 'basic' }) === '20191004 123013')
+ })
+
+ it('formats only date', () => {
+ const date = new Date(2019, 11 /* Dec */, 11, 1, 0, 0, 789)
+ assert(
+ formatISO9075(date, { representation: 'date', format: 'extended' }) ===
+ '2019-12-11'
+ )
+ assert(
+ formatISO9075(date, { representation: 'date', format: 'basic' }) ===
+ '20191211'
+ )
+ })
+
+ it('formats only time', () => {
+ const date = new Date(2019, 2 /* Mar */, 3, 19, 0, 52, 123)
+ assert(
+ formatISO9075(date, { representation: 'time', format: 'extended' }) ===
+ '19:00:52'
+ )
+ assert(
+ formatISO9075(date, { representation: 'time', format: 'basic' }) ===
+ '190052'
+ )
+ })
+
+ describe('implicitly converts options', function() {
+ it('`format`', function() {
+ // eslint-disable-next-line no-new-wrappers
+ var format = new String('basic')
+ var date = new Date(2019, 9 /* Oct */, 4, 12, 30, 13, 456)
+ // $ExpectedMistake
+ var result = formatISO9075(date, { format: format })
+ assert(result === '20191004 123013')
+ })
+
+ it('`representation`', function() {
+ // eslint-disable-next-line no-new-wrappers
+ var representation = new String('time')
+ var date = new Date(2019, 9 /* Oct */, 4, 12, 30, 13, 456)
+ // $ExpectedMistake
+ var result = formatISO9075(date, { representation: representation })
+ assert(result === '12:30:13')
+ })
+ })
+
+ it("throws `RangeError` if `options.format` is not 'extended' or 'basic'", function() {
+ // $ExpectedMistake
+ var block = formatISO9075.bind(null, new Date(2019, 2 /* Mar */, 3), {
+ format: 'something else'
+ })
+ assert.throws(block, RangeError)
+ })
+
+ it("throws `RangeError` if `options.representation` is not 'date', 'time' or 'complete'", function() {
+ // $ExpectedMistake
+ var block = formatISO9075.bind(null, new Date(2019, 2 /* Mar */, 3), {
+ representation: 'something else'
+ })
+ assert.throws(block, RangeError)
+ })
+
+ it('throws RangeError if the time value is invalid', () => {
+ assert.throws(formatISO9075.bind(null, new Date(NaN)), RangeError)
+ })
+
+ it('throws TypeError exception if passed less than 1 argument', function() {
+ assert.throws(formatISO9075.bind(null), TypeError)
+ })
+})
diff --git a/date-fns/src/formatISODuration/index.d.ts b/date-fns/src/formatISODuration/index.d.ts
new file mode 100644
index 0000000..dfbd333
--- /dev/null
+++ b/date-fns/src/formatISODuration/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { formatISODuration } from 'date-fns'
+export default formatISODuration
diff --git a/date-fns/src/formatISODuration/index.js b/date-fns/src/formatISODuration/index.js
new file mode 100644
index 0000000..0702457
--- /dev/null
+++ b/date-fns/src/formatISODuration/index.js
@@ -0,0 +1,46 @@
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name formatISODuration
+ * @category Common Helpers
+ * @summary Format a duration object according as ISO 8601 duration string
+ *
+ * @description
+ * Format a duration object according to the ISO 8601 duration standard (https://www.digi.com/resources/documentation/digidocs/90001437-13/reference/r_iso_8601_duration_format.htm)
+ *
+ * @param {Duration} duration - the duration to format
+ *
+ * @returns {String} The ISO 8601 duration string
+ * @throws {TypeError} Requires 1 argument
+ * @throws {Error} Argument must be an object
+ *
+ * @example
+ * // Format the given duration as ISO 8601 string
+ * formatISODuration({
+ * years: 39,
+ * months: 2,
+ * days: 20,
+ * hours: 7,
+ * minutes: 5,
+ * seconds: 0
+ * })
+ * //=> 'P39Y2M20DT0H0M0S'
+ */
+
+export default function formatISODuration(duration) {
+ requiredArgs(1, arguments)
+
+ if (typeof duration !== 'object')
+ throw new Error('Duration must be an object')
+
+ const {
+ years = 0,
+ months = 0,
+ days = 0,
+ hours = 0,
+ minutes = 0,
+ seconds = 0
+ } = duration
+
+ return `P${years}Y${months}M${days}DT${hours}H${minutes}M${seconds}S`
+}
diff --git a/date-fns/src/formatISODuration/index.js.flow b/date-fns/src/formatISODuration/index.js.flow
new file mode 100644
index 0000000..3f8bb2c
--- /dev/null
+++ b/date-fns/src/formatISODuration/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (duration: Duration) => string
diff --git a/date-fns/src/formatISODuration/test.js b/date-fns/src/formatISODuration/test.js
new file mode 100644
index 0000000..ecea358
--- /dev/null
+++ b/date-fns/src/formatISODuration/test.js
@@ -0,0 +1,78 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import formatISODuration from '.'
+import intervalToDuration from '../intervalToDuration'
+
+describe('formatISODuration', function() {
+ it('Everything returns correct duration for arbitrary dates', function() {
+ const start = new Date(1929, 0, 15, 12, 0, 0)
+ const end = new Date(1968, 3, 4, 19, 5, 0)
+ const result = formatISODuration(intervalToDuration({ start, end }))
+
+ assert(result === 'P39Y2M20DT7H5M0S')
+ })
+ it('Everything returns P1Y1M1DT1H1M1S (1 of everything)', function() {
+ const start = new Date(2020, 2, 1, 12, 0, 0)
+ const end = new Date(2021, 3, 2, 13, 1, 1)
+ const result = formatISODuration(intervalToDuration({ start, end }))
+
+ assert(result === 'P1Y1M1DT1H1M1S')
+ })
+ it('Returns P0Y0M0DT0H0M0S when the dates are the same', function() {
+ const start = new Date(2020, 2, 1, 12, 0, 0)
+ const end = new Date(2020, 2, 1, 12, 0, 0)
+ const result = formatISODuration(intervalToDuration({ start, end }))
+
+ assert(result === 'P0Y0M0DT0H0M0S')
+ })
+ it('Seconds returns P0Y0M0DT0H0M1S (1 second)', function() {
+ const start = new Date(2020, 2, 1, 12, 0, 0)
+ const end = new Date(2020, 2, 1, 12, 0, 1)
+ const result = formatISODuration(intervalToDuration({ start, end }))
+
+ assert(result === 'P0Y0M0DT0H0M1S')
+ })
+ it('Minutes returns P0Y0M0DT0H1M0S (1 minute)', function() {
+ const start = new Date(2020, 2, 1, 12, 0, 0)
+ const end = new Date(2020, 2, 1, 12, 1, 0)
+ const result = formatISODuration(intervalToDuration({ start, end }))
+
+ assert(result === 'P0Y0M0DT0H1M0S')
+ })
+ it('Hours returns P0Y0M0DT1H0M0S (1 hour)', function() {
+ const start = new Date(2020, 2, 1, 12, 0, 0)
+ const end = new Date(2020, 2, 1, 13, 0, 0)
+ const result = formatISODuration(intervalToDuration({ start, end }))
+
+ assert(result === 'P0Y0M0DT1H0M0S')
+ })
+ it('Days returns P0Y0M1DT0H0M0S (1 day)', function() {
+ const start = new Date(2020, 2, 1, 12, 0, 0)
+ const end = new Date(2020, 2, 2, 12, 0, 0)
+ const result = formatISODuration(intervalToDuration({ start, end }))
+
+ assert(result === 'P0Y0M1DT0H0M0S')
+ })
+ it('Months returns P0Y1M0DT0H0M0S (1 month)', function() {
+ const start = new Date(2020, 2, 1, 12, 0, 0)
+ const end = new Date(2020, 3, 1, 12, 0, 0)
+ const result = formatISODuration(intervalToDuration({ start, end }))
+
+ assert(result === 'P0Y1M0DT0H0M0S')
+ })
+ it('Years returns P1Y0M0DT0H0M1S (1 year)', function() {
+ const start = new Date(2020, 2, 1, 12, 0, 0)
+ const end = new Date(2021, 2, 1, 12, 0, 0)
+ const result = formatISODuration(intervalToDuration({ start, end }))
+
+ assert(result === 'P1Y0M0DT0H0M0S')
+ })
+
+ it('returns P0Y0M0DT0H0M0S when given an empty object', function() {
+ const result = formatISODuration({})
+
+ assert(result === 'P0Y0M0DT0H0M0S')
+ })
+})
diff --git a/date-fns/src/formatRFC3339/index.d.ts b/date-fns/src/formatRFC3339/index.d.ts
new file mode 100644
index 0000000..2454cd2
--- /dev/null
+++ b/date-fns/src/formatRFC3339/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { formatRFC3339 } from 'date-fns'
+export default formatRFC3339
diff --git a/date-fns/src/formatRFC3339/index.js b/date-fns/src/formatRFC3339/index.js
new file mode 100644
index 0000000..7513ba4
--- /dev/null
+++ b/date-fns/src/formatRFC3339/index.js
@@ -0,0 +1,92 @@
+import toDate from '../toDate/index'
+import isValid from '../isValid/index'
+import addLeadingZeros from '../_lib/addLeadingZeros/index'
+import toInteger from '../_lib/toInteger/index'
+
+/**
+ * @name formatRFC3339
+ * @category Common Helpers
+ * @summary Format the date according to the RFC 3339 standard (https://tools.ietf.org/html/rfc3339#section-5.6).
+ *
+ * @description
+ * Return the formatted date string in RFC 3339 format. Options may be passed to control the parts and notations of the date.
+ *
+ * @param {Date|Number} date - the original date
+ * @param {Object} [options] - an object with options.
+ * @param {0|1|2|3} [options.fractionDigits=0] - number of digits after the decimal point after seconds
+ * @returns {String} the formatted date string
+ * @throws {TypeError} 1 argument required
+ * @throws {RangeError} `date` must not be Invalid Date
+ * @throws {RangeError} `options.fractionDigits` must be between 0 and 3
+ *
+ * @example
+ * // Represent 18 September 2019 in RFC 3339 format:
+ * const result = formatRFC3339(new Date(2019, 8, 18, 19, 0, 52))
+ * //=> '2019-09-18T19:00:52Z'
+ *
+ * @example
+ * // Represent 18 September 2019 in RFC 3339 format, 2 digits of second fraction:
+ * const result = formatRFC3339(new Date(2019, 8, 18, 19, 0, 52, 234), { fractionDigits: 2 })
+ * //=> '2019-09-18T19:00:52.23Z'
+ *
+ * @example
+ * // Represent 18 September 2019 in RFC 3339 format, 3 digits of second fraction
+ * const result = formatRFC3339(new Date(2019, 8, 18, 19, 0, 52, 234), { fractionDigits: 3 })
+ * //=> '2019-09-18T19:00:52.234Z'
+ */
+export default function formatRFC3339(dirtyDate, dirtyOptions) {
+ if (arguments.length < 1) {
+ throw new TypeError(
+ `1 arguments required, but only ${arguments.length} present`
+ )
+ }
+
+ const originalDate = toDate(dirtyDate)
+
+ if (!isValid(originalDate)) {
+ throw new RangeError('Invalid time value')
+ }
+
+ const options = dirtyOptions || {}
+ const fractionDigits =
+ options.fractionDigits == null ? 0 : toInteger(options.fractionDigits)
+
+ // Test if fractionDigits is between 0 and 3 _and_ is not NaN
+ if (!(fractionDigits >= 0 && fractionDigits <= 3)) {
+ throw new RangeError('fractionDigits must be between 0 and 3 inclusively')
+ }
+
+ const day = addLeadingZeros(originalDate.getDate(), 2)
+ const month = addLeadingZeros(originalDate.getMonth() + 1, 2)
+ const year = originalDate.getFullYear()
+
+ const hour = addLeadingZeros(originalDate.getHours(), 2)
+ const minute = addLeadingZeros(originalDate.getMinutes(), 2)
+ const second = addLeadingZeros(originalDate.getSeconds(), 2)
+
+ let fractionalSecond = ''
+ if (fractionDigits > 0) {
+ const milliseconds = originalDate.getMilliseconds()
+ const fractionalSeconds = Math.floor(
+ milliseconds * Math.pow(10, fractionDigits - 3)
+ )
+ fractionalSecond = '.' + addLeadingZeros(fractionalSeconds, fractionDigits)
+ }
+
+ let offset = ''
+ const tzOffset = originalDate.getTimezoneOffset()
+
+ if (tzOffset !== 0) {
+ const absoluteOffset = Math.abs(tzOffset)
+ const hourOffset = addLeadingZeros(toInteger(absoluteOffset / 60), 2)
+ const minuteOffset = addLeadingZeros(absoluteOffset % 60, 2)
+ // If less than 0, the sign is +, because it is ahead of time.
+ const sign = tzOffset < 0 ? '+' : '-'
+
+ offset = `${sign}${hourOffset}:${minuteOffset}`
+ } else {
+ offset = 'Z'
+ }
+
+ return `${year}-${month}-${day}T${hour}:${minute}:${second}${fractionalSecond}${offset}`
+}
diff --git a/date-fns/src/formatRFC3339/index.js.flow b/date-fns/src/formatRFC3339/index.js.flow
new file mode 100644
index 0000000..9bb2748
--- /dev/null
+++ b/date-fns/src/formatRFC3339/index.js.flow
@@ -0,0 +1,57 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (
+ date: Date | number,
+ options?: {
+ fractionDigits?: 0 | 1 | 2 | 3,
+ }
+) => string
diff --git a/date-fns/src/formatRFC3339/test.js b/date-fns/src/formatRFC3339/test.js
new file mode 100644
index 0000000..5d9e468
--- /dev/null
+++ b/date-fns/src/formatRFC3339/test.js
@@ -0,0 +1,81 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import formatRFC3339 from '.'
+import toInteger from '../_lib/toInteger/index'
+import addLeadingZeros from '../_lib/addLeadingZeros/index'
+
+// This makes sure we create the consistent offsets across timezones, no matter where these tests are ran.
+function generateOffset(date) {
+ let offset = ''
+ const tzOffset = date.getTimezoneOffset()
+
+ if (tzOffset !== 0) {
+ const absoluteOffset = Math.abs(tzOffset)
+ const hourOffset = addLeadingZeros(toInteger(absoluteOffset / 60), 2)
+ const minuteOffset = addLeadingZeros(absoluteOffset % 60, 2)
+ // If less than 0, the sign is +, because it is ahead of time.
+ const sign = tzOffset < 0 ? '+' : '-'
+
+ offset = `${sign}${hourOffset}:${minuteOffset}`
+ } else {
+ offset = 'Z'
+ }
+
+ return offset
+}
+
+describe('formatRFC3339', () => {
+ it('formats RFC-3339 date string', () => {
+ var date = new Date(2019, 2 /* Mar */, 3, 19, 0, 52, 123)
+ assert(formatRFC3339(date) === `2019-03-03T19:00:52${generateOffset(date)}`)
+ })
+
+ it('accepts a timestamp', function() {
+ var date = new Date(2019, 9 /* Oct */, 4, 12, 30, 13, 456)
+ var time = date.getTime()
+ assert(formatRFC3339(time) === `2019-10-04T12:30:13${generateOffset(date)}`)
+ })
+
+ it('allows to specify digits of second fractions', function() {
+ var date = new Date(2019, 11 /* Dec */, 11, 1, 0, 0, 789)
+ assert(
+ formatRFC3339(date, { fractionDigits: 3 }) ===
+ `2019-12-11T01:00:00.789${generateOffset(date)}`
+ )
+ })
+
+ it('works when ms < 100', function() {
+ var date = new Date(2019, 11 /* Dec */, 11, 1, 0, 0, 12)
+ assert(
+ formatRFC3339(date, { fractionDigits: 2 }) ===
+ `2019-12-11T01:00:00.01${generateOffset(date)}`
+ )
+ })
+
+ it('implicitly converts options', function() {
+ var date = new Date(2019, 2 /* Mar */, 3, 19, 0, 52, 123)
+ // $ExpectedMistake
+ var result = formatRFC3339(date, {
+ fractionDigits: '2'
+ })
+ assert.equal(result, `2019-03-03T19:00:52.12${generateOffset(date)}`)
+ })
+
+ it('throws `RangeError` if `options.fractionDigits` is not convertable to 0, 1, 2, 3 or undefined', function() {
+ // $ExpectedMistake
+ var block = formatRFC3339.bind(null, new Date(2019, 2 /* Mar */, 3), {
+ fractionDigits: NaN
+ })
+ assert.throws(block, RangeError)
+ })
+
+ it('throws RangeError if the time value is invalid', () => {
+ assert.throws(formatRFC3339.bind(null, new Date(NaN)), RangeError)
+ })
+
+ it('throws TypeError exception if passed less than 1 argument', function() {
+ assert.throws(formatRFC3339.bind(null), TypeError)
+ })
+})
diff --git a/date-fns/src/formatRFC7231/index.d.ts b/date-fns/src/formatRFC7231/index.d.ts
new file mode 100644
index 0000000..2caa714
--- /dev/null
+++ b/date-fns/src/formatRFC7231/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { formatRFC7231 } from 'date-fns'
+export default formatRFC7231
diff --git a/date-fns/src/formatRFC7231/index.js b/date-fns/src/formatRFC7231/index.js
new file mode 100644
index 0000000..3554e35
--- /dev/null
+++ b/date-fns/src/formatRFC7231/index.js
@@ -0,0 +1,64 @@
+import toDate from '../toDate/index'
+import isValid from '../isValid/index'
+import addLeadingZeros from '../_lib/addLeadingZeros/index'
+
+const days = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']
+const months = [
+ 'Jan',
+ 'Feb',
+ 'Mar',
+ 'Apr',
+ 'May',
+ 'Jun',
+ 'Jul',
+ 'Aug',
+ 'Sep',
+ 'Oct',
+ 'Nov',
+ 'Dec'
+]
+
+/**
+ * @name formatRFC7231
+ * @category Common Helpers
+ * @summary Format the date according to the RFC 7231 standard (https://tools.ietf.org/html/rfc7231#section-7.1.1.1).
+ *
+ * @description
+ * Return the formatted date string in RFC 7231 format.
+ * The result will always be in UTC timezone.
+ *
+ * @param {Date|Number} date - the original date
+ * @returns {String} the formatted date string
+ * @throws {TypeError} 1 argument required
+ * @throws {RangeError} `date` must not be Invalid Date
+ *
+ * @example
+ * // Represent 18 September 2019 in RFC 7231 format:
+ * const result = formatRFC7231(new Date(2019, 8, 18, 19, 0, 52))
+ * //=> 'Wed, 18 Sep 2019 19:00:52 GMT'
+ */
+export default function formatRFC7231(dirtyDate) {
+ if (arguments.length < 1) {
+ throw new TypeError(
+ `1 arguments required, but only ${arguments.length} present`
+ )
+ }
+
+ const originalDate = toDate(dirtyDate)
+
+ if (!isValid(originalDate)) {
+ throw new RangeError('Invalid time value')
+ }
+
+ const dayName = days[originalDate.getUTCDay()]
+ const dayOfMonth = addLeadingZeros(originalDate.getUTCDate(), 2)
+ const monthName = months[originalDate.getUTCMonth()]
+ const year = originalDate.getUTCFullYear()
+
+ const hour = addLeadingZeros(originalDate.getUTCHours(), 2)
+ const minute = addLeadingZeros(originalDate.getUTCMinutes(), 2)
+ const second = addLeadingZeros(originalDate.getUTCSeconds(), 2)
+
+ // Result variables.
+ return `${dayName}, ${dayOfMonth} ${monthName} ${year} ${hour}:${minute}:${second} GMT`
+}
diff --git a/date-fns/src/formatRFC7231/index.js.flow b/date-fns/src/formatRFC7231/index.js.flow
new file mode 100644
index 0000000..8462b25
--- /dev/null
+++ b/date-fns/src/formatRFC7231/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (date: Date | number) => string
diff --git a/date-fns/src/formatRFC7231/test.js b/date-fns/src/formatRFC7231/test.js
new file mode 100644
index 0000000..018bbc5
--- /dev/null
+++ b/date-fns/src/formatRFC7231/test.js
@@ -0,0 +1,25 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import formatRFC7231 from '.'
+
+describe('formatRFC7231', () => {
+ it('formats RFC-7231 date string', () => {
+ const date = new Date(Date.UTC(2019, 2, 3, 19, 0, 52))
+ assert(formatRFC7231(date) === 'Sun, 03 Mar 2019 19:00:52 GMT')
+ })
+
+ it('accepts a timestamp', () => {
+ const date = Date.UTC(2019, 9, 4, 12, 30, 13)
+ assert(formatRFC7231(date) === 'Fri, 04 Oct 2019 12:30:13 GMT')
+ })
+
+ it('throws RangeError if the time value is invalid', () => {
+ assert.throws(formatRFC7231.bind(null, new Date(NaN)), RangeError)
+ })
+
+ it('throws TypeError exception if passed less than 1 argument', function() {
+ assert.throws(formatRFC7231.bind(null), TypeError)
+ })
+})
diff --git a/date-fns/src/formatRelative/benchmark.js b/date-fns/src/formatRelative/benchmark.js
new file mode 100644
index 0000000..be6f7b0
--- /dev/null
+++ b/date-fns/src/formatRelative/benchmark.js
@@ -0,0 +1,23 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import formatRelative from '.'
+import moment from 'moment'
+
+suite('formatRelative', function () {
+ benchmark('date-fns', function () {
+ return formatRelative(this.dateA, this.dateB)
+ })
+
+ benchmark('Moment.js', function () {
+ return this.momentA.calendar(this.momentB)
+ })
+}, {
+ setup: function () {
+ this.dateA = new Date()
+ this.momentA = moment()
+ this.dateB = new Date(this.dateA.getTime() + 604800000)
+ this.momentB = this.momentA.clone().add(7, 'days')
+ }
+})
diff --git a/date-fns/src/formatRelative/index.d.ts b/date-fns/src/formatRelative/index.d.ts
new file mode 100644
index 0000000..1c5c739
--- /dev/null
+++ b/date-fns/src/formatRelative/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { formatRelative } from 'date-fns'
+export default formatRelative
diff --git a/date-fns/src/formatRelative/index.js.flow b/date-fns/src/formatRelative/index.js.flow
new file mode 100644
index 0000000..00280b2
--- /dev/null
+++ b/date-fns/src/formatRelative/index.js.flow
@@ -0,0 +1,59 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (
+ date: Date | number,
+ baseDate: Date | number,
+ options?: {
+ locale?: Locale,
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ }
+) => string
diff --git a/date-fns/src/formatRelative/index.ts b/date-fns/src/formatRelative/index.ts
new file mode 100644
index 0000000..254c945
--- /dev/null
+++ b/date-fns/src/formatRelative/index.ts
@@ -0,0 +1,98 @@
+import differenceInCalendarDays from '../differenceInCalendarDays/index'
+import format from '../format/index'
+import defaultLocale from '../locale/en-US/index'
+import subMilliseconds from '../subMilliseconds/index'
+import toDate from '../toDate/index'
+import getTimezoneOffsetInMilliseconds from '../_lib/getTimezoneOffsetInMilliseconds/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+import { LocaleOptions, WeekStartOptions } from '../types'
+
+/**
+ * @name formatRelative
+ * @category Common Helpers
+ * @summary Represent the date in words relative to the given base date.
+ *
+ * @description
+ * Represent the date in words relative to the given base date.
+ *
+ * | Distance to the base date | Result |
+ * |---------------------------|---------------------------|
+ * | Previous 6 days | last Sunday at 04:30 AM |
+ * | Last day | yesterday at 04:30 AM |
+ * | Same day | today at 04:30 AM |
+ * | Next day | tomorrow at 04:30 AM |
+ * | Next 6 days | Sunday at 04:30 AM |
+ * | Other | 12/31/2017 |
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} date - the date to format
+ * @param {Date|Number} baseDate - the date to compare with
+ * @param {Object} [options] - an object with options.
+ * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}
+ * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)
+ * @returns {String} the date in words
+ * @throws {TypeError} 2 arguments required
+ * @throws {RangeError} `date` must not be Invalid Date
+ * @throws {RangeError} `baseDate` must not be Invalid Date
+ * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6
+ * @throws {RangeError} `options.locale` must contain `localize` property
+ * @throws {RangeError} `options.locale` must contain `formatLong` property
+ * @throws {RangeError} `options.locale` must contain `formatRelative` property
+ */
+export default function formatRelative(dirtyDate: Date | number, dirtyBaseDate: Date | number, dirtyOptions?: LocaleOptions & WeekStartOptions): string {
+ requiredArgs(2, arguments)
+
+ const date = toDate(dirtyDate)
+ const baseDate = toDate(dirtyBaseDate)
+
+ const {
+ locale = defaultLocale,
+ weekStartsOn = 0,
+ } = dirtyOptions || {}
+
+ if (!locale.localize) {
+ throw new RangeError('locale must contain localize property')
+ }
+
+ if (!locale.formatLong) {
+ throw new RangeError('locale must contain formatLong property')
+ }
+
+ if (!locale.formatRelative) {
+ throw new RangeError('locale must contain formatRelative property')
+ }
+
+ const diff = differenceInCalendarDays(date, baseDate)
+
+ if (isNaN(diff)) {
+ throw new RangeError('Invalid time value')
+ }
+
+ let token
+ if (diff < -6) {
+ token = 'other'
+ } else if (diff < -1) {
+ token = 'lastWeek'
+ } else if (diff < 0) {
+ token = 'yesterday'
+ } else if (diff < 1) {
+ token = 'today'
+ } else if (diff < 2) {
+ token = 'tomorrow'
+ } else if (diff < 7) {
+ token = 'nextWeek'
+ } else {
+ token = 'other'
+ }
+
+ const utcDate = subMilliseconds(date, getTimezoneOffsetInMilliseconds(date))
+ const utcBaseDate = subMilliseconds(
+ baseDate,
+ getTimezoneOffsetInMilliseconds(baseDate)
+ )
+ const formatStr = locale.formatRelative(token, utcDate, utcBaseDate, { locale, weekStartsOn })
+ return format(date, formatStr, { locale, weekStartsOn })
+}
diff --git a/date-fns/src/formatRelative/test.ts b/date-fns/src/formatRelative/test.ts
new file mode 100644
index 0000000..608b67d
--- /dev/null
+++ b/date-fns/src/formatRelative/test.ts
@@ -0,0 +1,168 @@
+/* eslint-env mocha */
+
+import assert from 'assert'
+import formatRelative from '.'
+
+describe('formatRelative', function () {
+ const baseDate = new Date(1986, 3 /* Apr */, 4, 10, 32, 0, 900)
+
+ it('accepts a timestamp', function () {
+ const date = new Date(2014, 3 /* Apr */, 4)
+ assert(formatRelative(date.getTime(), baseDate.getTime()) === '04/04/2014')
+ })
+
+ it('before the last week', function () {
+ const result = formatRelative(
+ new Date(1986, 2 /* Mar */, 28, 16, 50),
+ baseDate
+ )
+ assert(result === '03/28/1986')
+ })
+
+ it('last week', function () {
+ const result = formatRelative(new Date(1986, 3 /* Apr */, 1), baseDate)
+ assert(result === 'last Tuesday at 12:00 AM')
+ })
+
+ it('yesterday', function () {
+ const result = formatRelative(
+ new Date(1986, 3 /* Apr */, 3, 22, 22),
+ baseDate
+ )
+ assert(result === 'yesterday at 10:22 PM')
+ })
+
+ it('today', function () {
+ const result = formatRelative(
+ new Date(1986, 3 /* Apr */, 4, 16, 50),
+ baseDate
+ )
+ assert(result === 'today at 4:50 PM')
+ })
+
+ it('tomorrow', function () {
+ const result = formatRelative(new Date(1986, 3 /* Apr */, 5, 7, 30), baseDate)
+ assert(result === 'tomorrow at 7:30 AM')
+ })
+
+ it('next week', function () {
+ const result = formatRelative(new Date(1986, 3 /* Apr */, 6, 12, 0), baseDate)
+ assert(result === 'Sunday at 12:00 PM')
+ })
+
+ it('after the next week', function () {
+ const result = formatRelative(
+ new Date(1986, 3 /* Apr */, 11, 16, 50),
+ baseDate
+ )
+ assert(result === '04/11/1986')
+ })
+
+ describe('edge cases', function () {
+ it("throws RangeError if the date isn't valid", function () {
+ assert.throws(
+ formatRelative.bind(null, new Date(NaN), baseDate),
+ RangeError
+ )
+ })
+
+ it("throws RangeError if the base date isn't valid", function () {
+ assert.throws(
+ formatRelative.bind(
+ null,
+ new Date(2017, 0 /* Jan */, 1),
+ new Date(NaN)
+ ),
+ RangeError
+ )
+ })
+
+ it("throws RangeError if both dates aren't valid", function () {
+ assert.throws(
+ formatRelative.bind(null, new Date(NaN), new Date(NaN)),
+ RangeError
+ )
+ })
+
+ it('handles dates before 100 AD', function () {
+ const date = new Date(0)
+ date.setFullYear(7, 11 /* Dec */, 31)
+ date.setHours(0, 0, 0, 0)
+ assert(formatRelative(date, baseDate) === '12/31/0007')
+ })
+ })
+
+ describe('custom locale', function () {
+ it('allows to pass a custom locale', function () {
+ const customLocale = {
+ localize: {
+ month: function () {
+ return 'works'
+ }
+ },
+ formatLong: {
+ date: function () {
+ return "'It' MMMM"
+ }
+ },
+ formatRelative: function () {
+ return "P 'perfectly!'"
+ }
+ }
+ const result = formatRelative(
+ new Date(1986, 2 /* Mar */, 28, 16, 50),
+ baseDate,
+ // @ts-expect-error
+ { locale: customLocale }
+ )
+ assert(result === 'It works perfectly!')
+ })
+
+ it("throws `RangeError` if `options.locale` doesn't have `localize` property", function () {
+ const customLocale = {
+ formatLong: {},
+ formatRelative: function () {
+ return ''
+ }
+ }
+ // @ts-expect-error
+ const block = formatRelative.bind(null, new Date(2017, 0, 1), baseDate, {
+ locale: customLocale
+ })
+ assert.throws(block, RangeError)
+ })
+
+ it("throws `RangeError` if `options.locale` doesn't have `formatLong` property", function () {
+ const customLocale = {
+ localize: {},
+ formatRelative: function () {
+ return ''
+ }
+ }
+ // @ts-expect-error
+ const block = formatRelative.bind(null, new Date(2017, 0, 1), baseDate, {
+ locale: customLocale
+ })
+ assert.throws(block, RangeError)
+ })
+
+ it("throws `RangeError` if `options.locale` doesn't have `formatRelative` property", function () {
+ const customLocale = {
+ localize: {},
+ formatLong: {}
+ }
+ // @ts-expect-error
+ const block = formatRelative.bind(null, new Date(2017, 0, 1), baseDate, {
+ locale: customLocale
+ })
+ assert.throws(block, RangeError)
+ })
+ })
+
+ it('throws TypeError exception if passed less than 2 arguments', function () {
+ // @ts-expect-error
+ assert.throws(formatRelative.bind(null), TypeError)
+ // @ts-expect-error
+ assert.throws(formatRelative.bind(null, 1), TypeError)
+ })
+})
diff --git a/date-fns/src/fp/_lib/convertToFP/index.js b/date-fns/src/fp/_lib/convertToFP/index.js
new file mode 100644
index 0000000..efe0af5
--- /dev/null
+++ b/date-fns/src/fp/_lib/convertToFP/index.js
@@ -0,0 +1,12 @@
+export default function convertToFP (fn, arity, a) {
+ a = a || []
+
+ if (a.length >= arity) {
+ return fn.apply(null, a.slice(0, arity).reverse())
+ }
+
+ return function () {
+ var args = Array.prototype.slice.call(arguments)
+ return convertToFP(fn, arity, a.concat(args))
+ }
+}
diff --git a/date-fns/src/fp/_lib/convertToFP/test.js b/date-fns/src/fp/_lib/convertToFP/test.js
new file mode 100644
index 0000000..e8224d7
--- /dev/null
+++ b/date-fns/src/fp/_lib/convertToFP/test.js
@@ -0,0 +1,69 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import convertToFP from '.'
+
+describe('convertToFP', function () {
+ function fn(a, b, c) {
+ return 'a b c'.replace('a', a).replace('b', b).replace('c', c)
+ }
+
+ describe('arity of converted function === arity of initial function', function () {
+ it('allows arguments to be curried (and reverses their order)', function () {
+ var fpFn = convertToFP(fn, 3)
+ assert(fpFn(3)(2)(1) === '1 2 3')
+ })
+
+ it('allows to group arguments', function () {
+ var fpFn = convertToFP(fn, 3)
+ assert(fpFn(3, 2)(1) === '1 2 3')
+ assert(fpFn(3)(2, 1) === '1 2 3')
+ })
+
+ it('allows the function to be called with all arguments in the reversed order', function () {
+ var fpFn = convertToFP(fn, 3)
+ assert(fpFn(3, 2, 1) === '1 2 3')
+ })
+
+ it('ignores calls without curried arguments', function () {
+ var fpFn = convertToFP(fn, 3)
+ assert(fpFn()()(3, 2)()()(1) === '1 2 3')
+ })
+
+ it('ignores extra curried arguments in the last group', function () {
+ var fpFn = convertToFP(fn, 3)
+ assert(fpFn(3, 2, 1, 0, -1, -2) === '1 2 3')
+ assert(fpFn(3)(2)(1, 0, -1, -2) === '1 2 3')
+ })
+ })
+
+ describe('arity of converted function < arity of initial function', function () {
+ it('calls the initial function with a short list of arguments', function () {
+ var fpFn = convertToFP(fn, 2)
+ assert(fpFn(2)(1) === '1 2 undefined')
+ assert(fpFn(2, 1) === '1 2 undefined')
+ })
+
+ it('ignores extra curried arguments in the last group', function () {
+ var fpFn = convertToFP(fn, 2)
+ assert(fpFn(3)(2, 1) === '2 3 undefined')
+ assert(fpFn(3, 2, 1) === '2 3 undefined')
+ })
+ })
+
+ describe('arity of converted function > arity of initial function', function () {
+ it('works, but ignores the extra arguments', function () {
+ var fpFn = convertToFP(fn, 4)
+ assert(fpFn(4)(3)(2)(1) === '1 2 3')
+ assert(fpFn(4, 3, 2, 1) === '1 2 3')
+ })
+ })
+
+ describe('arity of converted function === 0', function () {
+ it('returns the constant instead of function', function () {
+ var result = convertToFP(fn, 0)
+ assert(result === 'undefined undefined undefined')
+ })
+ })
+})
diff --git a/date-fns/src/fp/add/index.d.ts b/date-fns/src/fp/add/index.d.ts
new file mode 100644
index 0000000..f05edaa
--- /dev/null
+++ b/date-fns/src/fp/add/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { add } from 'date-fns/fp'
+export default add
diff --git a/date-fns/src/fp/add/index.js b/date-fns/src/fp/add/index.js
new file mode 100644
index 0000000..530bac6
--- /dev/null
+++ b/date-fns/src/fp/add/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../add/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var add = convertToFP(fn, 2)
+
+export default add
diff --git a/date-fns/src/fp/add/index.js.flow b/date-fns/src/fp/add/index.js.flow
new file mode 100644
index 0000000..3d4363b
--- /dev/null
+++ b/date-fns/src/fp/add/index.js.flow
@@ -0,0 +1,58 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+declare module.exports: CurriedFn2<Duration, Date | number, Date>
diff --git a/date-fns/src/fp/addBusinessDays/index.d.ts b/date-fns/src/fp/addBusinessDays/index.d.ts
new file mode 100644
index 0000000..dd3b869
--- /dev/null
+++ b/date-fns/src/fp/addBusinessDays/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { addBusinessDays } from 'date-fns/fp'
+export default addBusinessDays
diff --git a/date-fns/src/fp/addBusinessDays/index.js b/date-fns/src/fp/addBusinessDays/index.js
new file mode 100644
index 0000000..d76f1c1
--- /dev/null
+++ b/date-fns/src/fp/addBusinessDays/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../addBusinessDays/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var addBusinessDays = convertToFP(fn, 2)
+
+export default addBusinessDays
diff --git a/date-fns/src/fp/addBusinessDays/index.js.flow b/date-fns/src/fp/addBusinessDays/index.js.flow
new file mode 100644
index 0000000..75c22e2
--- /dev/null
+++ b/date-fns/src/fp/addBusinessDays/index.js.flow
@@ -0,0 +1,58 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+declare module.exports: CurriedFn2<number, Date | number, Date>
diff --git a/date-fns/src/fp/addDays/index.d.ts b/date-fns/src/fp/addDays/index.d.ts
new file mode 100644
index 0000000..7ba1ace
--- /dev/null
+++ b/date-fns/src/fp/addDays/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { addDays } from 'date-fns/fp'
+export default addDays
diff --git a/date-fns/src/fp/addDays/index.js b/date-fns/src/fp/addDays/index.js
new file mode 100644
index 0000000..6827194
--- /dev/null
+++ b/date-fns/src/fp/addDays/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../addDays/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var addDays = convertToFP(fn, 2)
+
+export default addDays
diff --git a/date-fns/src/fp/addDays/index.js.flow b/date-fns/src/fp/addDays/index.js.flow
new file mode 100644
index 0000000..75c22e2
--- /dev/null
+++ b/date-fns/src/fp/addDays/index.js.flow
@@ -0,0 +1,58 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+declare module.exports: CurriedFn2<number, Date | number, Date>
diff --git a/date-fns/src/fp/addHours/index.d.ts b/date-fns/src/fp/addHours/index.d.ts
new file mode 100644
index 0000000..9b66a88
--- /dev/null
+++ b/date-fns/src/fp/addHours/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { addHours } from 'date-fns/fp'
+export default addHours
diff --git a/date-fns/src/fp/addHours/index.js b/date-fns/src/fp/addHours/index.js
new file mode 100644
index 0000000..04a3f27
--- /dev/null
+++ b/date-fns/src/fp/addHours/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../addHours/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var addHours = convertToFP(fn, 2)
+
+export default addHours
diff --git a/date-fns/src/fp/addHours/index.js.flow b/date-fns/src/fp/addHours/index.js.flow
new file mode 100644
index 0000000..75c22e2
--- /dev/null
+++ b/date-fns/src/fp/addHours/index.js.flow
@@ -0,0 +1,58 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+declare module.exports: CurriedFn2<number, Date | number, Date>
diff --git a/date-fns/src/fp/addISOWeekYears/index.d.ts b/date-fns/src/fp/addISOWeekYears/index.d.ts
new file mode 100644
index 0000000..01dab9b
--- /dev/null
+++ b/date-fns/src/fp/addISOWeekYears/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { addISOWeekYears } from 'date-fns/fp'
+export default addISOWeekYears
diff --git a/date-fns/src/fp/addISOWeekYears/index.js b/date-fns/src/fp/addISOWeekYears/index.js
new file mode 100644
index 0000000..858f7fa
--- /dev/null
+++ b/date-fns/src/fp/addISOWeekYears/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../addISOWeekYears/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var addISOWeekYears = convertToFP(fn, 2)
+
+export default addISOWeekYears
diff --git a/date-fns/src/fp/addISOWeekYears/index.js.flow b/date-fns/src/fp/addISOWeekYears/index.js.flow
new file mode 100644
index 0000000..75c22e2
--- /dev/null
+++ b/date-fns/src/fp/addISOWeekYears/index.js.flow
@@ -0,0 +1,58 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+declare module.exports: CurriedFn2<number, Date | number, Date>
diff --git a/date-fns/src/fp/addMilliseconds/index.d.ts b/date-fns/src/fp/addMilliseconds/index.d.ts
new file mode 100644
index 0000000..7a93c90
--- /dev/null
+++ b/date-fns/src/fp/addMilliseconds/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { addMilliseconds } from 'date-fns/fp'
+export default addMilliseconds
diff --git a/date-fns/src/fp/addMilliseconds/index.js b/date-fns/src/fp/addMilliseconds/index.js
new file mode 100644
index 0000000..c4ae505
--- /dev/null
+++ b/date-fns/src/fp/addMilliseconds/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../addMilliseconds/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var addMilliseconds = convertToFP(fn, 2)
+
+export default addMilliseconds
diff --git a/date-fns/src/fp/addMilliseconds/index.js.flow b/date-fns/src/fp/addMilliseconds/index.js.flow
new file mode 100644
index 0000000..75c22e2
--- /dev/null
+++ b/date-fns/src/fp/addMilliseconds/index.js.flow
@@ -0,0 +1,58 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+declare module.exports: CurriedFn2<number, Date | number, Date>
diff --git a/date-fns/src/fp/addMinutes/index.d.ts b/date-fns/src/fp/addMinutes/index.d.ts
new file mode 100644
index 0000000..fc7b670
--- /dev/null
+++ b/date-fns/src/fp/addMinutes/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { addMinutes } from 'date-fns/fp'
+export default addMinutes
diff --git a/date-fns/src/fp/addMinutes/index.js b/date-fns/src/fp/addMinutes/index.js
new file mode 100644
index 0000000..1f0b5fe
--- /dev/null
+++ b/date-fns/src/fp/addMinutes/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../addMinutes/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var addMinutes = convertToFP(fn, 2)
+
+export default addMinutes
diff --git a/date-fns/src/fp/addMinutes/index.js.flow b/date-fns/src/fp/addMinutes/index.js.flow
new file mode 100644
index 0000000..75c22e2
--- /dev/null
+++ b/date-fns/src/fp/addMinutes/index.js.flow
@@ -0,0 +1,58 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+declare module.exports: CurriedFn2<number, Date | number, Date>
diff --git a/date-fns/src/fp/addMonths/index.d.ts b/date-fns/src/fp/addMonths/index.d.ts
new file mode 100644
index 0000000..01f0e2d
--- /dev/null
+++ b/date-fns/src/fp/addMonths/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { addMonths } from 'date-fns/fp'
+export default addMonths
diff --git a/date-fns/src/fp/addMonths/index.js b/date-fns/src/fp/addMonths/index.js
new file mode 100644
index 0000000..eeb6a87
--- /dev/null
+++ b/date-fns/src/fp/addMonths/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../addMonths/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var addMonths = convertToFP(fn, 2)
+
+export default addMonths
diff --git a/date-fns/src/fp/addMonths/index.js.flow b/date-fns/src/fp/addMonths/index.js.flow
new file mode 100644
index 0000000..75c22e2
--- /dev/null
+++ b/date-fns/src/fp/addMonths/index.js.flow
@@ -0,0 +1,58 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+declare module.exports: CurriedFn2<number, Date | number, Date>
diff --git a/date-fns/src/fp/addQuarters/index.d.ts b/date-fns/src/fp/addQuarters/index.d.ts
new file mode 100644
index 0000000..f766d56
--- /dev/null
+++ b/date-fns/src/fp/addQuarters/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { addQuarters } from 'date-fns/fp'
+export default addQuarters
diff --git a/date-fns/src/fp/addQuarters/index.js b/date-fns/src/fp/addQuarters/index.js
new file mode 100644
index 0000000..6e29d3e
--- /dev/null
+++ b/date-fns/src/fp/addQuarters/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../addQuarters/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var addQuarters = convertToFP(fn, 2)
+
+export default addQuarters
diff --git a/date-fns/src/fp/addQuarters/index.js.flow b/date-fns/src/fp/addQuarters/index.js.flow
new file mode 100644
index 0000000..75c22e2
--- /dev/null
+++ b/date-fns/src/fp/addQuarters/index.js.flow
@@ -0,0 +1,58 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+declare module.exports: CurriedFn2<number, Date | number, Date>
diff --git a/date-fns/src/fp/addSeconds/index.d.ts b/date-fns/src/fp/addSeconds/index.d.ts
new file mode 100644
index 0000000..5c7c41c
--- /dev/null
+++ b/date-fns/src/fp/addSeconds/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { addSeconds } from 'date-fns/fp'
+export default addSeconds
diff --git a/date-fns/src/fp/addSeconds/index.js b/date-fns/src/fp/addSeconds/index.js
new file mode 100644
index 0000000..84d68f3
--- /dev/null
+++ b/date-fns/src/fp/addSeconds/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../addSeconds/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var addSeconds = convertToFP(fn, 2)
+
+export default addSeconds
diff --git a/date-fns/src/fp/addSeconds/index.js.flow b/date-fns/src/fp/addSeconds/index.js.flow
new file mode 100644
index 0000000..75c22e2
--- /dev/null
+++ b/date-fns/src/fp/addSeconds/index.js.flow
@@ -0,0 +1,58 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+declare module.exports: CurriedFn2<number, Date | number, Date>
diff --git a/date-fns/src/fp/addWeeks/index.d.ts b/date-fns/src/fp/addWeeks/index.d.ts
new file mode 100644
index 0000000..2703fef
--- /dev/null
+++ b/date-fns/src/fp/addWeeks/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { addWeeks } from 'date-fns/fp'
+export default addWeeks
diff --git a/date-fns/src/fp/addWeeks/index.js b/date-fns/src/fp/addWeeks/index.js
new file mode 100644
index 0000000..f20ede2
--- /dev/null
+++ b/date-fns/src/fp/addWeeks/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../addWeeks/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var addWeeks = convertToFP(fn, 2)
+
+export default addWeeks
diff --git a/date-fns/src/fp/addWeeks/index.js.flow b/date-fns/src/fp/addWeeks/index.js.flow
new file mode 100644
index 0000000..75c22e2
--- /dev/null
+++ b/date-fns/src/fp/addWeeks/index.js.flow
@@ -0,0 +1,58 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+declare module.exports: CurriedFn2<number, Date | number, Date>
diff --git a/date-fns/src/fp/addYears/index.d.ts b/date-fns/src/fp/addYears/index.d.ts
new file mode 100644
index 0000000..ff907d4
--- /dev/null
+++ b/date-fns/src/fp/addYears/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { addYears } from 'date-fns/fp'
+export default addYears
diff --git a/date-fns/src/fp/addYears/index.js b/date-fns/src/fp/addYears/index.js
new file mode 100644
index 0000000..f2f10c6
--- /dev/null
+++ b/date-fns/src/fp/addYears/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../addYears/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var addYears = convertToFP(fn, 2)
+
+export default addYears
diff --git a/date-fns/src/fp/addYears/index.js.flow b/date-fns/src/fp/addYears/index.js.flow
new file mode 100644
index 0000000..75c22e2
--- /dev/null
+++ b/date-fns/src/fp/addYears/index.js.flow
@@ -0,0 +1,58 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+declare module.exports: CurriedFn2<number, Date | number, Date>
diff --git a/date-fns/src/fp/areIntervalsOverlapping/index.d.ts b/date-fns/src/fp/areIntervalsOverlapping/index.d.ts
new file mode 100644
index 0000000..870f26b
--- /dev/null
+++ b/date-fns/src/fp/areIntervalsOverlapping/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { areIntervalsOverlapping } from 'date-fns/fp'
+export default areIntervalsOverlapping
diff --git a/date-fns/src/fp/areIntervalsOverlapping/index.js b/date-fns/src/fp/areIntervalsOverlapping/index.js
new file mode 100644
index 0000000..97c9ae4
--- /dev/null
+++ b/date-fns/src/fp/areIntervalsOverlapping/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../areIntervalsOverlapping/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var areIntervalsOverlapping = convertToFP(fn, 2)
+
+export default areIntervalsOverlapping
diff --git a/date-fns/src/fp/areIntervalsOverlapping/index.js.flow b/date-fns/src/fp/areIntervalsOverlapping/index.js.flow
new file mode 100644
index 0000000..cd39633
--- /dev/null
+++ b/date-fns/src/fp/areIntervalsOverlapping/index.js.flow
@@ -0,0 +1,58 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+declare module.exports: CurriedFn2<Interval, Interval, boolean>
diff --git a/date-fns/src/fp/areIntervalsOverlappingWithOptions/index.d.ts b/date-fns/src/fp/areIntervalsOverlappingWithOptions/index.d.ts
new file mode 100644
index 0000000..010890a
--- /dev/null
+++ b/date-fns/src/fp/areIntervalsOverlappingWithOptions/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { areIntervalsOverlappingWithOptions } from 'date-fns/fp'
+export default areIntervalsOverlappingWithOptions
diff --git a/date-fns/src/fp/areIntervalsOverlappingWithOptions/index.js b/date-fns/src/fp/areIntervalsOverlappingWithOptions/index.js
new file mode 100644
index 0000000..3269510
--- /dev/null
+++ b/date-fns/src/fp/areIntervalsOverlappingWithOptions/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../areIntervalsOverlapping/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var areIntervalsOverlappingWithOptions = convertToFP(fn, 3)
+
+export default areIntervalsOverlappingWithOptions
diff --git a/date-fns/src/fp/areIntervalsOverlappingWithOptions/index.js.flow b/date-fns/src/fp/areIntervalsOverlappingWithOptions/index.js.flow
new file mode 100644
index 0000000..67e7396
--- /dev/null
+++ b/date-fns/src/fp/areIntervalsOverlappingWithOptions/index.js.flow
@@ -0,0 +1,74 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+type CurriedFn3<A, B, C, R> = <A>(
+ a: A
+) =>
+ | CurriedFn2<B, C, R>
+ | (<A, B>(
+ a: A,
+ b: B
+ ) => CurriedFn1<C, R> | (<A, B, C>(a: A, b: B, c: C) => R))
+
+declare module.exports: CurriedFn3<
+ {
+ inclusive?: boolean,
+ },
+ Interval,
+ Interval,
+ boolean
+>
diff --git a/date-fns/src/fp/closestIndexTo/index.d.ts b/date-fns/src/fp/closestIndexTo/index.d.ts
new file mode 100644
index 0000000..562180d
--- /dev/null
+++ b/date-fns/src/fp/closestIndexTo/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { closestIndexTo } from 'date-fns/fp'
+export default closestIndexTo
diff --git a/date-fns/src/fp/closestIndexTo/index.js b/date-fns/src/fp/closestIndexTo/index.js
new file mode 100644
index 0000000..e448ad6
--- /dev/null
+++ b/date-fns/src/fp/closestIndexTo/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../closestIndexTo/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var closestIndexTo = convertToFP(fn, 2)
+
+export default closestIndexTo
diff --git a/date-fns/src/fp/closestIndexTo/index.js.flow b/date-fns/src/fp/closestIndexTo/index.js.flow
new file mode 100644
index 0000000..986c64e
--- /dev/null
+++ b/date-fns/src/fp/closestIndexTo/index.js.flow
@@ -0,0 +1,58 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+declare module.exports: CurriedFn2<(Date | number)[], Date | number, number>
diff --git a/date-fns/src/fp/closestTo/index.d.ts b/date-fns/src/fp/closestTo/index.d.ts
new file mode 100644
index 0000000..44d10c3
--- /dev/null
+++ b/date-fns/src/fp/closestTo/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { closestTo } from 'date-fns/fp'
+export default closestTo
diff --git a/date-fns/src/fp/closestTo/index.js b/date-fns/src/fp/closestTo/index.js
new file mode 100644
index 0000000..fb0b8fc
--- /dev/null
+++ b/date-fns/src/fp/closestTo/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../closestTo/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var closestTo = convertToFP(fn, 2)
+
+export default closestTo
diff --git a/date-fns/src/fp/closestTo/index.js.flow b/date-fns/src/fp/closestTo/index.js.flow
new file mode 100644
index 0000000..89e8756
--- /dev/null
+++ b/date-fns/src/fp/closestTo/index.js.flow
@@ -0,0 +1,58 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+declare module.exports: CurriedFn2<(Date | number)[], Date | number, Date>
diff --git a/date-fns/src/fp/compareAsc/index.d.ts b/date-fns/src/fp/compareAsc/index.d.ts
new file mode 100644
index 0000000..77d5c61
--- /dev/null
+++ b/date-fns/src/fp/compareAsc/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { compareAsc } from 'date-fns/fp'
+export default compareAsc
diff --git a/date-fns/src/fp/compareAsc/index.js b/date-fns/src/fp/compareAsc/index.js
new file mode 100644
index 0000000..74e13ff
--- /dev/null
+++ b/date-fns/src/fp/compareAsc/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../compareAsc/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var compareAsc = convertToFP(fn, 2)
+
+export default compareAsc
diff --git a/date-fns/src/fp/compareAsc/index.js.flow b/date-fns/src/fp/compareAsc/index.js.flow
new file mode 100644
index 0000000..78c45ae
--- /dev/null
+++ b/date-fns/src/fp/compareAsc/index.js.flow
@@ -0,0 +1,58 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+declare module.exports: CurriedFn2<Date | number, Date | number, number>
diff --git a/date-fns/src/fp/compareDesc/index.d.ts b/date-fns/src/fp/compareDesc/index.d.ts
new file mode 100644
index 0000000..df01367
--- /dev/null
+++ b/date-fns/src/fp/compareDesc/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { compareDesc } from 'date-fns/fp'
+export default compareDesc
diff --git a/date-fns/src/fp/compareDesc/index.js b/date-fns/src/fp/compareDesc/index.js
new file mode 100644
index 0000000..c455234
--- /dev/null
+++ b/date-fns/src/fp/compareDesc/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../compareDesc/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var compareDesc = convertToFP(fn, 2)
+
+export default compareDesc
diff --git a/date-fns/src/fp/compareDesc/index.js.flow b/date-fns/src/fp/compareDesc/index.js.flow
new file mode 100644
index 0000000..78c45ae
--- /dev/null
+++ b/date-fns/src/fp/compareDesc/index.js.flow
@@ -0,0 +1,58 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+declare module.exports: CurriedFn2<Date | number, Date | number, number>
diff --git a/date-fns/src/fp/daysToWeeks/index.d.ts b/date-fns/src/fp/daysToWeeks/index.d.ts
new file mode 100644
index 0000000..798a9e1
--- /dev/null
+++ b/date-fns/src/fp/daysToWeeks/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { daysToWeeks } from 'date-fns/fp'
+export default daysToWeeks
diff --git a/date-fns/src/fp/daysToWeeks/index.js b/date-fns/src/fp/daysToWeeks/index.js
new file mode 100644
index 0000000..058ab00
--- /dev/null
+++ b/date-fns/src/fp/daysToWeeks/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../daysToWeeks/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var daysToWeeks = convertToFP(fn, 1)
+
+export default daysToWeeks
diff --git a/date-fns/src/fp/daysToWeeks/index.js.flow b/date-fns/src/fp/daysToWeeks/index.js.flow
new file mode 100644
index 0000000..aa51b5f
--- /dev/null
+++ b/date-fns/src/fp/daysToWeeks/index.js.flow
@@ -0,0 +1,54 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+declare module.exports: CurriedFn1<number, number>
diff --git a/date-fns/src/fp/differenceInBusinessDays/index.d.ts b/date-fns/src/fp/differenceInBusinessDays/index.d.ts
new file mode 100644
index 0000000..4ff9890
--- /dev/null
+++ b/date-fns/src/fp/differenceInBusinessDays/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { differenceInBusinessDays } from 'date-fns/fp'
+export default differenceInBusinessDays
diff --git a/date-fns/src/fp/differenceInBusinessDays/index.js b/date-fns/src/fp/differenceInBusinessDays/index.js
new file mode 100644
index 0000000..21c5bc7
--- /dev/null
+++ b/date-fns/src/fp/differenceInBusinessDays/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../differenceInBusinessDays/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var differenceInBusinessDays = convertToFP(fn, 2)
+
+export default differenceInBusinessDays
diff --git a/date-fns/src/fp/differenceInBusinessDays/index.js.flow b/date-fns/src/fp/differenceInBusinessDays/index.js.flow
new file mode 100644
index 0000000..78c45ae
--- /dev/null
+++ b/date-fns/src/fp/differenceInBusinessDays/index.js.flow
@@ -0,0 +1,58 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+declare module.exports: CurriedFn2<Date | number, Date | number, number>
diff --git a/date-fns/src/fp/differenceInCalendarDays/index.d.ts b/date-fns/src/fp/differenceInCalendarDays/index.d.ts
new file mode 100644
index 0000000..b6ae5f5
--- /dev/null
+++ b/date-fns/src/fp/differenceInCalendarDays/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { differenceInCalendarDays } from 'date-fns/fp'
+export default differenceInCalendarDays
diff --git a/date-fns/src/fp/differenceInCalendarDays/index.js b/date-fns/src/fp/differenceInCalendarDays/index.js
new file mode 100644
index 0000000..d99e50d
--- /dev/null
+++ b/date-fns/src/fp/differenceInCalendarDays/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../differenceInCalendarDays/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var differenceInCalendarDays = convertToFP(fn, 2)
+
+export default differenceInCalendarDays
diff --git a/date-fns/src/fp/differenceInCalendarDays/index.js.flow b/date-fns/src/fp/differenceInCalendarDays/index.js.flow
new file mode 100644
index 0000000..78c45ae
--- /dev/null
+++ b/date-fns/src/fp/differenceInCalendarDays/index.js.flow
@@ -0,0 +1,58 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+declare module.exports: CurriedFn2<Date | number, Date | number, number>
diff --git a/date-fns/src/fp/differenceInCalendarISOWeekYears/index.d.ts b/date-fns/src/fp/differenceInCalendarISOWeekYears/index.d.ts
new file mode 100644
index 0000000..4e21998
--- /dev/null
+++ b/date-fns/src/fp/differenceInCalendarISOWeekYears/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { differenceInCalendarISOWeekYears } from 'date-fns/fp'
+export default differenceInCalendarISOWeekYears
diff --git a/date-fns/src/fp/differenceInCalendarISOWeekYears/index.js b/date-fns/src/fp/differenceInCalendarISOWeekYears/index.js
new file mode 100644
index 0000000..42bb5e4
--- /dev/null
+++ b/date-fns/src/fp/differenceInCalendarISOWeekYears/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../differenceInCalendarISOWeekYears/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var differenceInCalendarISOWeekYears = convertToFP(fn, 2)
+
+export default differenceInCalendarISOWeekYears
diff --git a/date-fns/src/fp/differenceInCalendarISOWeekYears/index.js.flow b/date-fns/src/fp/differenceInCalendarISOWeekYears/index.js.flow
new file mode 100644
index 0000000..78c45ae
--- /dev/null
+++ b/date-fns/src/fp/differenceInCalendarISOWeekYears/index.js.flow
@@ -0,0 +1,58 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+declare module.exports: CurriedFn2<Date | number, Date | number, number>
diff --git a/date-fns/src/fp/differenceInCalendarISOWeeks/index.d.ts b/date-fns/src/fp/differenceInCalendarISOWeeks/index.d.ts
new file mode 100644
index 0000000..7751c6f
--- /dev/null
+++ b/date-fns/src/fp/differenceInCalendarISOWeeks/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { differenceInCalendarISOWeeks } from 'date-fns/fp'
+export default differenceInCalendarISOWeeks
diff --git a/date-fns/src/fp/differenceInCalendarISOWeeks/index.js b/date-fns/src/fp/differenceInCalendarISOWeeks/index.js
new file mode 100644
index 0000000..d8551a1
--- /dev/null
+++ b/date-fns/src/fp/differenceInCalendarISOWeeks/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../differenceInCalendarISOWeeks/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var differenceInCalendarISOWeeks = convertToFP(fn, 2)
+
+export default differenceInCalendarISOWeeks
diff --git a/date-fns/src/fp/differenceInCalendarISOWeeks/index.js.flow b/date-fns/src/fp/differenceInCalendarISOWeeks/index.js.flow
new file mode 100644
index 0000000..78c45ae
--- /dev/null
+++ b/date-fns/src/fp/differenceInCalendarISOWeeks/index.js.flow
@@ -0,0 +1,58 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+declare module.exports: CurriedFn2<Date | number, Date | number, number>
diff --git a/date-fns/src/fp/differenceInCalendarMonths/index.d.ts b/date-fns/src/fp/differenceInCalendarMonths/index.d.ts
new file mode 100644
index 0000000..080ac92
--- /dev/null
+++ b/date-fns/src/fp/differenceInCalendarMonths/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { differenceInCalendarMonths } from 'date-fns/fp'
+export default differenceInCalendarMonths
diff --git a/date-fns/src/fp/differenceInCalendarMonths/index.js b/date-fns/src/fp/differenceInCalendarMonths/index.js
new file mode 100644
index 0000000..12edc3c
--- /dev/null
+++ b/date-fns/src/fp/differenceInCalendarMonths/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../differenceInCalendarMonths/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var differenceInCalendarMonths = convertToFP(fn, 2)
+
+export default differenceInCalendarMonths
diff --git a/date-fns/src/fp/differenceInCalendarMonths/index.js.flow b/date-fns/src/fp/differenceInCalendarMonths/index.js.flow
new file mode 100644
index 0000000..78c45ae
--- /dev/null
+++ b/date-fns/src/fp/differenceInCalendarMonths/index.js.flow
@@ -0,0 +1,58 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+declare module.exports: CurriedFn2<Date | number, Date | number, number>
diff --git a/date-fns/src/fp/differenceInCalendarQuarters/index.d.ts b/date-fns/src/fp/differenceInCalendarQuarters/index.d.ts
new file mode 100644
index 0000000..7b9208b
--- /dev/null
+++ b/date-fns/src/fp/differenceInCalendarQuarters/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { differenceInCalendarQuarters } from 'date-fns/fp'
+export default differenceInCalendarQuarters
diff --git a/date-fns/src/fp/differenceInCalendarQuarters/index.js b/date-fns/src/fp/differenceInCalendarQuarters/index.js
new file mode 100644
index 0000000..4c9417c
--- /dev/null
+++ b/date-fns/src/fp/differenceInCalendarQuarters/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../differenceInCalendarQuarters/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var differenceInCalendarQuarters = convertToFP(fn, 2)
+
+export default differenceInCalendarQuarters
diff --git a/date-fns/src/fp/differenceInCalendarQuarters/index.js.flow b/date-fns/src/fp/differenceInCalendarQuarters/index.js.flow
new file mode 100644
index 0000000..78c45ae
--- /dev/null
+++ b/date-fns/src/fp/differenceInCalendarQuarters/index.js.flow
@@ -0,0 +1,58 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+declare module.exports: CurriedFn2<Date | number, Date | number, number>
diff --git a/date-fns/src/fp/differenceInCalendarWeeks/index.d.ts b/date-fns/src/fp/differenceInCalendarWeeks/index.d.ts
new file mode 100644
index 0000000..c64709a
--- /dev/null
+++ b/date-fns/src/fp/differenceInCalendarWeeks/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { differenceInCalendarWeeks } from 'date-fns/fp'
+export default differenceInCalendarWeeks
diff --git a/date-fns/src/fp/differenceInCalendarWeeks/index.js b/date-fns/src/fp/differenceInCalendarWeeks/index.js
new file mode 100644
index 0000000..61190aa
--- /dev/null
+++ b/date-fns/src/fp/differenceInCalendarWeeks/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../differenceInCalendarWeeks/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var differenceInCalendarWeeks = convertToFP(fn, 2)
+
+export default differenceInCalendarWeeks
diff --git a/date-fns/src/fp/differenceInCalendarWeeks/index.js.flow b/date-fns/src/fp/differenceInCalendarWeeks/index.js.flow
new file mode 100644
index 0000000..78c45ae
--- /dev/null
+++ b/date-fns/src/fp/differenceInCalendarWeeks/index.js.flow
@@ -0,0 +1,58 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+declare module.exports: CurriedFn2<Date | number, Date | number, number>
diff --git a/date-fns/src/fp/differenceInCalendarWeeksWithOptions/index.d.ts b/date-fns/src/fp/differenceInCalendarWeeksWithOptions/index.d.ts
new file mode 100644
index 0000000..344e205
--- /dev/null
+++ b/date-fns/src/fp/differenceInCalendarWeeksWithOptions/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { differenceInCalendarWeeksWithOptions } from 'date-fns/fp'
+export default differenceInCalendarWeeksWithOptions
diff --git a/date-fns/src/fp/differenceInCalendarWeeksWithOptions/index.js b/date-fns/src/fp/differenceInCalendarWeeksWithOptions/index.js
new file mode 100644
index 0000000..1708945
--- /dev/null
+++ b/date-fns/src/fp/differenceInCalendarWeeksWithOptions/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../differenceInCalendarWeeks/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var differenceInCalendarWeeksWithOptions = convertToFP(fn, 3)
+
+export default differenceInCalendarWeeksWithOptions
diff --git a/date-fns/src/fp/differenceInCalendarWeeksWithOptions/index.js.flow b/date-fns/src/fp/differenceInCalendarWeeksWithOptions/index.js.flow
new file mode 100644
index 0000000..9ee18fd
--- /dev/null
+++ b/date-fns/src/fp/differenceInCalendarWeeksWithOptions/index.js.flow
@@ -0,0 +1,75 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+type CurriedFn3<A, B, C, R> = <A>(
+ a: A
+) =>
+ | CurriedFn2<B, C, R>
+ | (<A, B>(
+ a: A,
+ b: B
+ ) => CurriedFn1<C, R> | (<A, B, C>(a: A, b: B, c: C) => R))
+
+declare module.exports: CurriedFn3<
+ {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ locale?: Locale,
+ },
+ Date | number,
+ Date | number,
+ number
+>
diff --git a/date-fns/src/fp/differenceInCalendarYears/index.d.ts b/date-fns/src/fp/differenceInCalendarYears/index.d.ts
new file mode 100644
index 0000000..1390b1f
--- /dev/null
+++ b/date-fns/src/fp/differenceInCalendarYears/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { differenceInCalendarYears } from 'date-fns/fp'
+export default differenceInCalendarYears
diff --git a/date-fns/src/fp/differenceInCalendarYears/index.js b/date-fns/src/fp/differenceInCalendarYears/index.js
new file mode 100644
index 0000000..fad8b02
--- /dev/null
+++ b/date-fns/src/fp/differenceInCalendarYears/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../differenceInCalendarYears/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var differenceInCalendarYears = convertToFP(fn, 2)
+
+export default differenceInCalendarYears
diff --git a/date-fns/src/fp/differenceInCalendarYears/index.js.flow b/date-fns/src/fp/differenceInCalendarYears/index.js.flow
new file mode 100644
index 0000000..78c45ae
--- /dev/null
+++ b/date-fns/src/fp/differenceInCalendarYears/index.js.flow
@@ -0,0 +1,58 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+declare module.exports: CurriedFn2<Date | number, Date | number, number>
diff --git a/date-fns/src/fp/differenceInDays/index.d.ts b/date-fns/src/fp/differenceInDays/index.d.ts
new file mode 100644
index 0000000..b240c6e
--- /dev/null
+++ b/date-fns/src/fp/differenceInDays/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { differenceInDays } from 'date-fns/fp'
+export default differenceInDays
diff --git a/date-fns/src/fp/differenceInDays/index.js b/date-fns/src/fp/differenceInDays/index.js
new file mode 100644
index 0000000..ee7d0d9
--- /dev/null
+++ b/date-fns/src/fp/differenceInDays/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../differenceInDays/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var differenceInDays = convertToFP(fn, 2)
+
+export default differenceInDays
diff --git a/date-fns/src/fp/differenceInDays/index.js.flow b/date-fns/src/fp/differenceInDays/index.js.flow
new file mode 100644
index 0000000..78c45ae
--- /dev/null
+++ b/date-fns/src/fp/differenceInDays/index.js.flow
@@ -0,0 +1,58 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+declare module.exports: CurriedFn2<Date | number, Date | number, number>
diff --git a/date-fns/src/fp/differenceInHours/index.d.ts b/date-fns/src/fp/differenceInHours/index.d.ts
new file mode 100644
index 0000000..4cc2797
--- /dev/null
+++ b/date-fns/src/fp/differenceInHours/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { differenceInHours } from 'date-fns/fp'
+export default differenceInHours
diff --git a/date-fns/src/fp/differenceInHours/index.js b/date-fns/src/fp/differenceInHours/index.js
new file mode 100644
index 0000000..5686bb2
--- /dev/null
+++ b/date-fns/src/fp/differenceInHours/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../differenceInHours/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var differenceInHours = convertToFP(fn, 2)
+
+export default differenceInHours
diff --git a/date-fns/src/fp/differenceInHours/index.js.flow b/date-fns/src/fp/differenceInHours/index.js.flow
new file mode 100644
index 0000000..78c45ae
--- /dev/null
+++ b/date-fns/src/fp/differenceInHours/index.js.flow
@@ -0,0 +1,58 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+declare module.exports: CurriedFn2<Date | number, Date | number, number>
diff --git a/date-fns/src/fp/differenceInISOWeekYears/index.d.ts b/date-fns/src/fp/differenceInISOWeekYears/index.d.ts
new file mode 100644
index 0000000..634591a
--- /dev/null
+++ b/date-fns/src/fp/differenceInISOWeekYears/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { differenceInISOWeekYears } from 'date-fns/fp'
+export default differenceInISOWeekYears
diff --git a/date-fns/src/fp/differenceInISOWeekYears/index.js b/date-fns/src/fp/differenceInISOWeekYears/index.js
new file mode 100644
index 0000000..1a60642
--- /dev/null
+++ b/date-fns/src/fp/differenceInISOWeekYears/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../differenceInISOWeekYears/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var differenceInISOWeekYears = convertToFP(fn, 2)
+
+export default differenceInISOWeekYears
diff --git a/date-fns/src/fp/differenceInISOWeekYears/index.js.flow b/date-fns/src/fp/differenceInISOWeekYears/index.js.flow
new file mode 100644
index 0000000..78c45ae
--- /dev/null
+++ b/date-fns/src/fp/differenceInISOWeekYears/index.js.flow
@@ -0,0 +1,58 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+declare module.exports: CurriedFn2<Date | number, Date | number, number>
diff --git a/date-fns/src/fp/differenceInMilliseconds/index.d.ts b/date-fns/src/fp/differenceInMilliseconds/index.d.ts
new file mode 100644
index 0000000..23924cb
--- /dev/null
+++ b/date-fns/src/fp/differenceInMilliseconds/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { differenceInMilliseconds } from 'date-fns/fp'
+export default differenceInMilliseconds
diff --git a/date-fns/src/fp/differenceInMilliseconds/index.js b/date-fns/src/fp/differenceInMilliseconds/index.js
new file mode 100644
index 0000000..2d82792
--- /dev/null
+++ b/date-fns/src/fp/differenceInMilliseconds/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../differenceInMilliseconds/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var differenceInMilliseconds = convertToFP(fn, 2)
+
+export default differenceInMilliseconds
diff --git a/date-fns/src/fp/differenceInMilliseconds/index.js.flow b/date-fns/src/fp/differenceInMilliseconds/index.js.flow
new file mode 100644
index 0000000..78c45ae
--- /dev/null
+++ b/date-fns/src/fp/differenceInMilliseconds/index.js.flow
@@ -0,0 +1,58 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+declare module.exports: CurriedFn2<Date | number, Date | number, number>
diff --git a/date-fns/src/fp/differenceInMinutes/index.d.ts b/date-fns/src/fp/differenceInMinutes/index.d.ts
new file mode 100644
index 0000000..6d00d34
--- /dev/null
+++ b/date-fns/src/fp/differenceInMinutes/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { differenceInMinutes } from 'date-fns/fp'
+export default differenceInMinutes
diff --git a/date-fns/src/fp/differenceInMinutes/index.js b/date-fns/src/fp/differenceInMinutes/index.js
new file mode 100644
index 0000000..4184936
--- /dev/null
+++ b/date-fns/src/fp/differenceInMinutes/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../differenceInMinutes/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var differenceInMinutes = convertToFP(fn, 2)
+
+export default differenceInMinutes
diff --git a/date-fns/src/fp/differenceInMinutes/index.js.flow b/date-fns/src/fp/differenceInMinutes/index.js.flow
new file mode 100644
index 0000000..78c45ae
--- /dev/null
+++ b/date-fns/src/fp/differenceInMinutes/index.js.flow
@@ -0,0 +1,58 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+declare module.exports: CurriedFn2<Date | number, Date | number, number>
diff --git a/date-fns/src/fp/differenceInMonths/index.d.ts b/date-fns/src/fp/differenceInMonths/index.d.ts
new file mode 100644
index 0000000..17bdd4e
--- /dev/null
+++ b/date-fns/src/fp/differenceInMonths/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { differenceInMonths } from 'date-fns/fp'
+export default differenceInMonths
diff --git a/date-fns/src/fp/differenceInMonths/index.js b/date-fns/src/fp/differenceInMonths/index.js
new file mode 100644
index 0000000..ad89d12
--- /dev/null
+++ b/date-fns/src/fp/differenceInMonths/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../differenceInMonths/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var differenceInMonths = convertToFP(fn, 2)
+
+export default differenceInMonths
diff --git a/date-fns/src/fp/differenceInMonths/index.js.flow b/date-fns/src/fp/differenceInMonths/index.js.flow
new file mode 100644
index 0000000..78c45ae
--- /dev/null
+++ b/date-fns/src/fp/differenceInMonths/index.js.flow
@@ -0,0 +1,58 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+declare module.exports: CurriedFn2<Date | number, Date | number, number>
diff --git a/date-fns/src/fp/differenceInQuarters/index.d.ts b/date-fns/src/fp/differenceInQuarters/index.d.ts
new file mode 100644
index 0000000..649f21d
--- /dev/null
+++ b/date-fns/src/fp/differenceInQuarters/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { differenceInQuarters } from 'date-fns/fp'
+export default differenceInQuarters
diff --git a/date-fns/src/fp/differenceInQuarters/index.js b/date-fns/src/fp/differenceInQuarters/index.js
new file mode 100644
index 0000000..9283c20
--- /dev/null
+++ b/date-fns/src/fp/differenceInQuarters/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../differenceInQuarters/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var differenceInQuarters = convertToFP(fn, 2)
+
+export default differenceInQuarters
diff --git a/date-fns/src/fp/differenceInQuarters/index.js.flow b/date-fns/src/fp/differenceInQuarters/index.js.flow
new file mode 100644
index 0000000..78c45ae
--- /dev/null
+++ b/date-fns/src/fp/differenceInQuarters/index.js.flow
@@ -0,0 +1,58 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+declare module.exports: CurriedFn2<Date | number, Date | number, number>
diff --git a/date-fns/src/fp/differenceInSeconds/index.d.ts b/date-fns/src/fp/differenceInSeconds/index.d.ts
new file mode 100644
index 0000000..1dded51
--- /dev/null
+++ b/date-fns/src/fp/differenceInSeconds/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { differenceInSeconds } from 'date-fns/fp'
+export default differenceInSeconds
diff --git a/date-fns/src/fp/differenceInSeconds/index.js b/date-fns/src/fp/differenceInSeconds/index.js
new file mode 100644
index 0000000..408b754
--- /dev/null
+++ b/date-fns/src/fp/differenceInSeconds/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../differenceInSeconds/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var differenceInSeconds = convertToFP(fn, 2)
+
+export default differenceInSeconds
diff --git a/date-fns/src/fp/differenceInSeconds/index.js.flow b/date-fns/src/fp/differenceInSeconds/index.js.flow
new file mode 100644
index 0000000..78c45ae
--- /dev/null
+++ b/date-fns/src/fp/differenceInSeconds/index.js.flow
@@ -0,0 +1,58 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+declare module.exports: CurriedFn2<Date | number, Date | number, number>
diff --git a/date-fns/src/fp/differenceInWeeks/index.d.ts b/date-fns/src/fp/differenceInWeeks/index.d.ts
new file mode 100644
index 0000000..52d5220
--- /dev/null
+++ b/date-fns/src/fp/differenceInWeeks/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { differenceInWeeks } from 'date-fns/fp'
+export default differenceInWeeks
diff --git a/date-fns/src/fp/differenceInWeeks/index.js b/date-fns/src/fp/differenceInWeeks/index.js
new file mode 100644
index 0000000..ff0e3a4
--- /dev/null
+++ b/date-fns/src/fp/differenceInWeeks/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../differenceInWeeks/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var differenceInWeeks = convertToFP(fn, 2)
+
+export default differenceInWeeks
diff --git a/date-fns/src/fp/differenceInWeeks/index.js.flow b/date-fns/src/fp/differenceInWeeks/index.js.flow
new file mode 100644
index 0000000..78c45ae
--- /dev/null
+++ b/date-fns/src/fp/differenceInWeeks/index.js.flow
@@ -0,0 +1,58 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+declare module.exports: CurriedFn2<Date | number, Date | number, number>
diff --git a/date-fns/src/fp/differenceInYears/index.d.ts b/date-fns/src/fp/differenceInYears/index.d.ts
new file mode 100644
index 0000000..20fd164
--- /dev/null
+++ b/date-fns/src/fp/differenceInYears/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { differenceInYears } from 'date-fns/fp'
+export default differenceInYears
diff --git a/date-fns/src/fp/differenceInYears/index.js b/date-fns/src/fp/differenceInYears/index.js
new file mode 100644
index 0000000..cfa3274
--- /dev/null
+++ b/date-fns/src/fp/differenceInYears/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../differenceInYears/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var differenceInYears = convertToFP(fn, 2)
+
+export default differenceInYears
diff --git a/date-fns/src/fp/differenceInYears/index.js.flow b/date-fns/src/fp/differenceInYears/index.js.flow
new file mode 100644
index 0000000..78c45ae
--- /dev/null
+++ b/date-fns/src/fp/differenceInYears/index.js.flow
@@ -0,0 +1,58 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+declare module.exports: CurriedFn2<Date | number, Date | number, number>
diff --git a/date-fns/src/fp/eachDayOfInterval/index.d.ts b/date-fns/src/fp/eachDayOfInterval/index.d.ts
new file mode 100644
index 0000000..e878e76
--- /dev/null
+++ b/date-fns/src/fp/eachDayOfInterval/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { eachDayOfInterval } from 'date-fns/fp'
+export default eachDayOfInterval
diff --git a/date-fns/src/fp/eachDayOfInterval/index.js b/date-fns/src/fp/eachDayOfInterval/index.js
new file mode 100644
index 0000000..e10f89a
--- /dev/null
+++ b/date-fns/src/fp/eachDayOfInterval/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../eachDayOfInterval/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var eachDayOfInterval = convertToFP(fn, 1)
+
+export default eachDayOfInterval
diff --git a/date-fns/src/fp/eachDayOfInterval/index.js.flow b/date-fns/src/fp/eachDayOfInterval/index.js.flow
new file mode 100644
index 0000000..c5f2d6a
--- /dev/null
+++ b/date-fns/src/fp/eachDayOfInterval/index.js.flow
@@ -0,0 +1,54 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+declare module.exports: CurriedFn1<Interval, Date[]>
diff --git a/date-fns/src/fp/eachDayOfIntervalWithOptions/index.d.ts b/date-fns/src/fp/eachDayOfIntervalWithOptions/index.d.ts
new file mode 100644
index 0000000..5862284
--- /dev/null
+++ b/date-fns/src/fp/eachDayOfIntervalWithOptions/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { eachDayOfIntervalWithOptions } from 'date-fns/fp'
+export default eachDayOfIntervalWithOptions
diff --git a/date-fns/src/fp/eachDayOfIntervalWithOptions/index.js b/date-fns/src/fp/eachDayOfIntervalWithOptions/index.js
new file mode 100644
index 0000000..5f83f92
--- /dev/null
+++ b/date-fns/src/fp/eachDayOfIntervalWithOptions/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../eachDayOfInterval/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var eachDayOfIntervalWithOptions = convertToFP(fn, 2)
+
+export default eachDayOfIntervalWithOptions
diff --git a/date-fns/src/fp/eachDayOfIntervalWithOptions/index.js.flow b/date-fns/src/fp/eachDayOfIntervalWithOptions/index.js.flow
new file mode 100644
index 0000000..bedeb21
--- /dev/null
+++ b/date-fns/src/fp/eachDayOfIntervalWithOptions/index.js.flow
@@ -0,0 +1,64 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+declare module.exports: CurriedFn2<
+ {
+ step?: number,
+ },
+ Interval,
+ Date[]
+>
diff --git a/date-fns/src/fp/eachHourOfInterval/index.d.ts b/date-fns/src/fp/eachHourOfInterval/index.d.ts
new file mode 100644
index 0000000..055ab32
--- /dev/null
+++ b/date-fns/src/fp/eachHourOfInterval/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { eachHourOfInterval } from 'date-fns/fp'
+export default eachHourOfInterval
diff --git a/date-fns/src/fp/eachHourOfInterval/index.js b/date-fns/src/fp/eachHourOfInterval/index.js
new file mode 100644
index 0000000..8025213
--- /dev/null
+++ b/date-fns/src/fp/eachHourOfInterval/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../eachHourOfInterval/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var eachHourOfInterval = convertToFP(fn, 1)
+
+export default eachHourOfInterval
diff --git a/date-fns/src/fp/eachHourOfInterval/index.js.flow b/date-fns/src/fp/eachHourOfInterval/index.js.flow
new file mode 100644
index 0000000..c5f2d6a
--- /dev/null
+++ b/date-fns/src/fp/eachHourOfInterval/index.js.flow
@@ -0,0 +1,54 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+declare module.exports: CurriedFn1<Interval, Date[]>
diff --git a/date-fns/src/fp/eachHourOfIntervalWithOptions/index.d.ts b/date-fns/src/fp/eachHourOfIntervalWithOptions/index.d.ts
new file mode 100644
index 0000000..7b781f9
--- /dev/null
+++ b/date-fns/src/fp/eachHourOfIntervalWithOptions/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { eachHourOfIntervalWithOptions } from 'date-fns/fp'
+export default eachHourOfIntervalWithOptions
diff --git a/date-fns/src/fp/eachHourOfIntervalWithOptions/index.js b/date-fns/src/fp/eachHourOfIntervalWithOptions/index.js
new file mode 100644
index 0000000..ab52bb3
--- /dev/null
+++ b/date-fns/src/fp/eachHourOfIntervalWithOptions/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../eachHourOfInterval/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var eachHourOfIntervalWithOptions = convertToFP(fn, 2)
+
+export default eachHourOfIntervalWithOptions
diff --git a/date-fns/src/fp/eachHourOfIntervalWithOptions/index.js.flow b/date-fns/src/fp/eachHourOfIntervalWithOptions/index.js.flow
new file mode 100644
index 0000000..bedeb21
--- /dev/null
+++ b/date-fns/src/fp/eachHourOfIntervalWithOptions/index.js.flow
@@ -0,0 +1,64 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+declare module.exports: CurriedFn2<
+ {
+ step?: number,
+ },
+ Interval,
+ Date[]
+>
diff --git a/date-fns/src/fp/eachMinuteOfInterval/index.d.ts b/date-fns/src/fp/eachMinuteOfInterval/index.d.ts
new file mode 100644
index 0000000..243185f
--- /dev/null
+++ b/date-fns/src/fp/eachMinuteOfInterval/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { eachMinuteOfInterval } from 'date-fns/fp'
+export default eachMinuteOfInterval
diff --git a/date-fns/src/fp/eachMinuteOfInterval/index.js b/date-fns/src/fp/eachMinuteOfInterval/index.js
new file mode 100644
index 0000000..b56e0dd
--- /dev/null
+++ b/date-fns/src/fp/eachMinuteOfInterval/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../eachMinuteOfInterval/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var eachMinuteOfInterval = convertToFP(fn, 1)
+
+export default eachMinuteOfInterval
diff --git a/date-fns/src/fp/eachMinuteOfInterval/index.js.flow b/date-fns/src/fp/eachMinuteOfInterval/index.js.flow
new file mode 100644
index 0000000..c5f2d6a
--- /dev/null
+++ b/date-fns/src/fp/eachMinuteOfInterval/index.js.flow
@@ -0,0 +1,54 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+declare module.exports: CurriedFn1<Interval, Date[]>
diff --git a/date-fns/src/fp/eachMinuteOfIntervalWithOptions/index.d.ts b/date-fns/src/fp/eachMinuteOfIntervalWithOptions/index.d.ts
new file mode 100644
index 0000000..716aa44
--- /dev/null
+++ b/date-fns/src/fp/eachMinuteOfIntervalWithOptions/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { eachMinuteOfIntervalWithOptions } from 'date-fns/fp'
+export default eachMinuteOfIntervalWithOptions
diff --git a/date-fns/src/fp/eachMinuteOfIntervalWithOptions/index.js b/date-fns/src/fp/eachMinuteOfIntervalWithOptions/index.js
new file mode 100644
index 0000000..e4d6702
--- /dev/null
+++ b/date-fns/src/fp/eachMinuteOfIntervalWithOptions/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../eachMinuteOfInterval/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var eachMinuteOfIntervalWithOptions = convertToFP(fn, 2)
+
+export default eachMinuteOfIntervalWithOptions
diff --git a/date-fns/src/fp/eachMinuteOfIntervalWithOptions/index.js.flow b/date-fns/src/fp/eachMinuteOfIntervalWithOptions/index.js.flow
new file mode 100644
index 0000000..bedeb21
--- /dev/null
+++ b/date-fns/src/fp/eachMinuteOfIntervalWithOptions/index.js.flow
@@ -0,0 +1,64 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+declare module.exports: CurriedFn2<
+ {
+ step?: number,
+ },
+ Interval,
+ Date[]
+>
diff --git a/date-fns/src/fp/eachMonthOfInterval/index.d.ts b/date-fns/src/fp/eachMonthOfInterval/index.d.ts
new file mode 100644
index 0000000..1f3cae5
--- /dev/null
+++ b/date-fns/src/fp/eachMonthOfInterval/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { eachMonthOfInterval } from 'date-fns/fp'
+export default eachMonthOfInterval
diff --git a/date-fns/src/fp/eachMonthOfInterval/index.js b/date-fns/src/fp/eachMonthOfInterval/index.js
new file mode 100644
index 0000000..91cf896
--- /dev/null
+++ b/date-fns/src/fp/eachMonthOfInterval/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../eachMonthOfInterval/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var eachMonthOfInterval = convertToFP(fn, 1)
+
+export default eachMonthOfInterval
diff --git a/date-fns/src/fp/eachMonthOfInterval/index.js.flow b/date-fns/src/fp/eachMonthOfInterval/index.js.flow
new file mode 100644
index 0000000..c5f2d6a
--- /dev/null
+++ b/date-fns/src/fp/eachMonthOfInterval/index.js.flow
@@ -0,0 +1,54 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+declare module.exports: CurriedFn1<Interval, Date[]>
diff --git a/date-fns/src/fp/eachQuarterOfInterval/index.d.ts b/date-fns/src/fp/eachQuarterOfInterval/index.d.ts
new file mode 100644
index 0000000..8a81f63
--- /dev/null
+++ b/date-fns/src/fp/eachQuarterOfInterval/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { eachQuarterOfInterval } from 'date-fns/fp'
+export default eachQuarterOfInterval
diff --git a/date-fns/src/fp/eachQuarterOfInterval/index.js b/date-fns/src/fp/eachQuarterOfInterval/index.js
new file mode 100644
index 0000000..ca236bc
--- /dev/null
+++ b/date-fns/src/fp/eachQuarterOfInterval/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../eachQuarterOfInterval/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var eachQuarterOfInterval = convertToFP(fn, 1)
+
+export default eachQuarterOfInterval
diff --git a/date-fns/src/fp/eachQuarterOfInterval/index.js.flow b/date-fns/src/fp/eachQuarterOfInterval/index.js.flow
new file mode 100644
index 0000000..c5f2d6a
--- /dev/null
+++ b/date-fns/src/fp/eachQuarterOfInterval/index.js.flow
@@ -0,0 +1,54 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+declare module.exports: CurriedFn1<Interval, Date[]>
diff --git a/date-fns/src/fp/eachWeekOfInterval/index.d.ts b/date-fns/src/fp/eachWeekOfInterval/index.d.ts
new file mode 100644
index 0000000..ab5d4b4
--- /dev/null
+++ b/date-fns/src/fp/eachWeekOfInterval/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { eachWeekOfInterval } from 'date-fns/fp'
+export default eachWeekOfInterval
diff --git a/date-fns/src/fp/eachWeekOfInterval/index.js b/date-fns/src/fp/eachWeekOfInterval/index.js
new file mode 100644
index 0000000..e6e9820
--- /dev/null
+++ b/date-fns/src/fp/eachWeekOfInterval/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../eachWeekOfInterval/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var eachWeekOfInterval = convertToFP(fn, 1)
+
+export default eachWeekOfInterval
diff --git a/date-fns/src/fp/eachWeekOfInterval/index.js.flow b/date-fns/src/fp/eachWeekOfInterval/index.js.flow
new file mode 100644
index 0000000..c5f2d6a
--- /dev/null
+++ b/date-fns/src/fp/eachWeekOfInterval/index.js.flow
@@ -0,0 +1,54 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+declare module.exports: CurriedFn1<Interval, Date[]>
diff --git a/date-fns/src/fp/eachWeekOfIntervalWithOptions/index.d.ts b/date-fns/src/fp/eachWeekOfIntervalWithOptions/index.d.ts
new file mode 100644
index 0000000..def43ab
--- /dev/null
+++ b/date-fns/src/fp/eachWeekOfIntervalWithOptions/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { eachWeekOfIntervalWithOptions } from 'date-fns/fp'
+export default eachWeekOfIntervalWithOptions
diff --git a/date-fns/src/fp/eachWeekOfIntervalWithOptions/index.js b/date-fns/src/fp/eachWeekOfIntervalWithOptions/index.js
new file mode 100644
index 0000000..396d3db
--- /dev/null
+++ b/date-fns/src/fp/eachWeekOfIntervalWithOptions/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../eachWeekOfInterval/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var eachWeekOfIntervalWithOptions = convertToFP(fn, 2)
+
+export default eachWeekOfIntervalWithOptions
diff --git a/date-fns/src/fp/eachWeekOfIntervalWithOptions/index.js.flow b/date-fns/src/fp/eachWeekOfIntervalWithOptions/index.js.flow
new file mode 100644
index 0000000..3aca218
--- /dev/null
+++ b/date-fns/src/fp/eachWeekOfIntervalWithOptions/index.js.flow
@@ -0,0 +1,65 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+declare module.exports: CurriedFn2<
+ {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ locale?: Locale,
+ },
+ Interval,
+ Date[]
+>
diff --git a/date-fns/src/fp/eachWeekendOfInterval/index.d.ts b/date-fns/src/fp/eachWeekendOfInterval/index.d.ts
new file mode 100644
index 0000000..961eff7
--- /dev/null
+++ b/date-fns/src/fp/eachWeekendOfInterval/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { eachWeekendOfInterval } from 'date-fns/fp'
+export default eachWeekendOfInterval
diff --git a/date-fns/src/fp/eachWeekendOfInterval/index.js b/date-fns/src/fp/eachWeekendOfInterval/index.js
new file mode 100644
index 0000000..85c2578
--- /dev/null
+++ b/date-fns/src/fp/eachWeekendOfInterval/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../eachWeekendOfInterval/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var eachWeekendOfInterval = convertToFP(fn, 1)
+
+export default eachWeekendOfInterval
diff --git a/date-fns/src/fp/eachWeekendOfInterval/index.js.flow b/date-fns/src/fp/eachWeekendOfInterval/index.js.flow
new file mode 100644
index 0000000..c5f2d6a
--- /dev/null
+++ b/date-fns/src/fp/eachWeekendOfInterval/index.js.flow
@@ -0,0 +1,54 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+declare module.exports: CurriedFn1<Interval, Date[]>
diff --git a/date-fns/src/fp/eachWeekendOfMonth/index.d.ts b/date-fns/src/fp/eachWeekendOfMonth/index.d.ts
new file mode 100644
index 0000000..2501a05
--- /dev/null
+++ b/date-fns/src/fp/eachWeekendOfMonth/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { eachWeekendOfMonth } from 'date-fns/fp'
+export default eachWeekendOfMonth
diff --git a/date-fns/src/fp/eachWeekendOfMonth/index.js b/date-fns/src/fp/eachWeekendOfMonth/index.js
new file mode 100644
index 0000000..c51f15c
--- /dev/null
+++ b/date-fns/src/fp/eachWeekendOfMonth/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../eachWeekendOfMonth/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var eachWeekendOfMonth = convertToFP(fn, 1)
+
+export default eachWeekendOfMonth
diff --git a/date-fns/src/fp/eachWeekendOfMonth/index.js.flow b/date-fns/src/fp/eachWeekendOfMonth/index.js.flow
new file mode 100644
index 0000000..9736b40
--- /dev/null
+++ b/date-fns/src/fp/eachWeekendOfMonth/index.js.flow
@@ -0,0 +1,54 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+declare module.exports: CurriedFn1<Date | number, Date[]>
diff --git a/date-fns/src/fp/eachWeekendOfYear/index.d.ts b/date-fns/src/fp/eachWeekendOfYear/index.d.ts
new file mode 100644
index 0000000..8554541
--- /dev/null
+++ b/date-fns/src/fp/eachWeekendOfYear/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { eachWeekendOfYear } from 'date-fns/fp'
+export default eachWeekendOfYear
diff --git a/date-fns/src/fp/eachWeekendOfYear/index.js b/date-fns/src/fp/eachWeekendOfYear/index.js
new file mode 100644
index 0000000..176c513
--- /dev/null
+++ b/date-fns/src/fp/eachWeekendOfYear/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../eachWeekendOfYear/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var eachWeekendOfYear = convertToFP(fn, 1)
+
+export default eachWeekendOfYear
diff --git a/date-fns/src/fp/eachWeekendOfYear/index.js.flow b/date-fns/src/fp/eachWeekendOfYear/index.js.flow
new file mode 100644
index 0000000..9736b40
--- /dev/null
+++ b/date-fns/src/fp/eachWeekendOfYear/index.js.flow
@@ -0,0 +1,54 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+declare module.exports: CurriedFn1<Date | number, Date[]>
diff --git a/date-fns/src/fp/eachYearOfInterval/index.d.ts b/date-fns/src/fp/eachYearOfInterval/index.d.ts
new file mode 100644
index 0000000..51e093b
--- /dev/null
+++ b/date-fns/src/fp/eachYearOfInterval/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { eachYearOfInterval } from 'date-fns/fp'
+export default eachYearOfInterval
diff --git a/date-fns/src/fp/eachYearOfInterval/index.js b/date-fns/src/fp/eachYearOfInterval/index.js
new file mode 100644
index 0000000..9b4bc3f
--- /dev/null
+++ b/date-fns/src/fp/eachYearOfInterval/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../eachYearOfInterval/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var eachYearOfInterval = convertToFP(fn, 1)
+
+export default eachYearOfInterval
diff --git a/date-fns/src/fp/eachYearOfInterval/index.js.flow b/date-fns/src/fp/eachYearOfInterval/index.js.flow
new file mode 100644
index 0000000..c5f2d6a
--- /dev/null
+++ b/date-fns/src/fp/eachYearOfInterval/index.js.flow
@@ -0,0 +1,54 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+declare module.exports: CurriedFn1<Interval, Date[]>
diff --git a/date-fns/src/fp/endOfDay/index.d.ts b/date-fns/src/fp/endOfDay/index.d.ts
new file mode 100644
index 0000000..2db665f
--- /dev/null
+++ b/date-fns/src/fp/endOfDay/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { endOfDay } from 'date-fns/fp'
+export default endOfDay
diff --git a/date-fns/src/fp/endOfDay/index.js b/date-fns/src/fp/endOfDay/index.js
new file mode 100644
index 0000000..d4cd1c6
--- /dev/null
+++ b/date-fns/src/fp/endOfDay/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../endOfDay/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var endOfDay = convertToFP(fn, 1)
+
+export default endOfDay
diff --git a/date-fns/src/fp/endOfDay/index.js.flow b/date-fns/src/fp/endOfDay/index.js.flow
new file mode 100644
index 0000000..1fc072e
--- /dev/null
+++ b/date-fns/src/fp/endOfDay/index.js.flow
@@ -0,0 +1,54 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+declare module.exports: CurriedFn1<Date | number, Date>
diff --git a/date-fns/src/fp/endOfDecade/index.d.ts b/date-fns/src/fp/endOfDecade/index.d.ts
new file mode 100644
index 0000000..f3a7e8c
--- /dev/null
+++ b/date-fns/src/fp/endOfDecade/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { endOfDecade } from 'date-fns/fp'
+export default endOfDecade
diff --git a/date-fns/src/fp/endOfDecade/index.js b/date-fns/src/fp/endOfDecade/index.js
new file mode 100644
index 0000000..7bd4446
--- /dev/null
+++ b/date-fns/src/fp/endOfDecade/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../endOfDecade/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var endOfDecade = convertToFP(fn, 1)
+
+export default endOfDecade
diff --git a/date-fns/src/fp/endOfDecade/index.js.flow b/date-fns/src/fp/endOfDecade/index.js.flow
new file mode 100644
index 0000000..1fc072e
--- /dev/null
+++ b/date-fns/src/fp/endOfDecade/index.js.flow
@@ -0,0 +1,54 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+declare module.exports: CurriedFn1<Date | number, Date>
diff --git a/date-fns/src/fp/endOfDecadeWithOptions/index.d.ts b/date-fns/src/fp/endOfDecadeWithOptions/index.d.ts
new file mode 100644
index 0000000..cad60da
--- /dev/null
+++ b/date-fns/src/fp/endOfDecadeWithOptions/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { endOfDecadeWithOptions } from 'date-fns/fp'
+export default endOfDecadeWithOptions
diff --git a/date-fns/src/fp/endOfDecadeWithOptions/index.js b/date-fns/src/fp/endOfDecadeWithOptions/index.js
new file mode 100644
index 0000000..fcef2a4
--- /dev/null
+++ b/date-fns/src/fp/endOfDecadeWithOptions/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../endOfDecade/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var endOfDecadeWithOptions = convertToFP(fn, 2)
+
+export default endOfDecadeWithOptions
diff --git a/date-fns/src/fp/endOfDecadeWithOptions/index.js.flow b/date-fns/src/fp/endOfDecadeWithOptions/index.js.flow
new file mode 100644
index 0000000..4b6d0d4
--- /dev/null
+++ b/date-fns/src/fp/endOfDecadeWithOptions/index.js.flow
@@ -0,0 +1,64 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+declare module.exports: CurriedFn2<
+ {
+ additionalDigits?: 0 | 1 | 2,
+ },
+ Date | number,
+ Date
+>
diff --git a/date-fns/src/fp/endOfHour/index.d.ts b/date-fns/src/fp/endOfHour/index.d.ts
new file mode 100644
index 0000000..fb7b319
--- /dev/null
+++ b/date-fns/src/fp/endOfHour/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { endOfHour } from 'date-fns/fp'
+export default endOfHour
diff --git a/date-fns/src/fp/endOfHour/index.js b/date-fns/src/fp/endOfHour/index.js
new file mode 100644
index 0000000..896ebf9
--- /dev/null
+++ b/date-fns/src/fp/endOfHour/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../endOfHour/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var endOfHour = convertToFP(fn, 1)
+
+export default endOfHour
diff --git a/date-fns/src/fp/endOfHour/index.js.flow b/date-fns/src/fp/endOfHour/index.js.flow
new file mode 100644
index 0000000..1fc072e
--- /dev/null
+++ b/date-fns/src/fp/endOfHour/index.js.flow
@@ -0,0 +1,54 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+declare module.exports: CurriedFn1<Date | number, Date>
diff --git a/date-fns/src/fp/endOfISOWeek/index.d.ts b/date-fns/src/fp/endOfISOWeek/index.d.ts
new file mode 100644
index 0000000..64f0b2e
--- /dev/null
+++ b/date-fns/src/fp/endOfISOWeek/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { endOfISOWeek } from 'date-fns/fp'
+export default endOfISOWeek
diff --git a/date-fns/src/fp/endOfISOWeek/index.js b/date-fns/src/fp/endOfISOWeek/index.js
new file mode 100644
index 0000000..12817f7
--- /dev/null
+++ b/date-fns/src/fp/endOfISOWeek/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../endOfISOWeek/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var endOfISOWeek = convertToFP(fn, 1)
+
+export default endOfISOWeek
diff --git a/date-fns/src/fp/endOfISOWeek/index.js.flow b/date-fns/src/fp/endOfISOWeek/index.js.flow
new file mode 100644
index 0000000..1fc072e
--- /dev/null
+++ b/date-fns/src/fp/endOfISOWeek/index.js.flow
@@ -0,0 +1,54 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+declare module.exports: CurriedFn1<Date | number, Date>
diff --git a/date-fns/src/fp/endOfISOWeekYear/index.d.ts b/date-fns/src/fp/endOfISOWeekYear/index.d.ts
new file mode 100644
index 0000000..9782d7f
--- /dev/null
+++ b/date-fns/src/fp/endOfISOWeekYear/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { endOfISOWeekYear } from 'date-fns/fp'
+export default endOfISOWeekYear
diff --git a/date-fns/src/fp/endOfISOWeekYear/index.js b/date-fns/src/fp/endOfISOWeekYear/index.js
new file mode 100644
index 0000000..e8dca89
--- /dev/null
+++ b/date-fns/src/fp/endOfISOWeekYear/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../endOfISOWeekYear/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var endOfISOWeekYear = convertToFP(fn, 1)
+
+export default endOfISOWeekYear
diff --git a/date-fns/src/fp/endOfISOWeekYear/index.js.flow b/date-fns/src/fp/endOfISOWeekYear/index.js.flow
new file mode 100644
index 0000000..1fc072e
--- /dev/null
+++ b/date-fns/src/fp/endOfISOWeekYear/index.js.flow
@@ -0,0 +1,54 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+declare module.exports: CurriedFn1<Date | number, Date>
diff --git a/date-fns/src/fp/endOfMinute/index.d.ts b/date-fns/src/fp/endOfMinute/index.d.ts
new file mode 100644
index 0000000..78e8a19
--- /dev/null
+++ b/date-fns/src/fp/endOfMinute/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { endOfMinute } from 'date-fns/fp'
+export default endOfMinute
diff --git a/date-fns/src/fp/endOfMinute/index.js b/date-fns/src/fp/endOfMinute/index.js
new file mode 100644
index 0000000..66489bd
--- /dev/null
+++ b/date-fns/src/fp/endOfMinute/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../endOfMinute/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var endOfMinute = convertToFP(fn, 1)
+
+export default endOfMinute
diff --git a/date-fns/src/fp/endOfMinute/index.js.flow b/date-fns/src/fp/endOfMinute/index.js.flow
new file mode 100644
index 0000000..1fc072e
--- /dev/null
+++ b/date-fns/src/fp/endOfMinute/index.js.flow
@@ -0,0 +1,54 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+declare module.exports: CurriedFn1<Date | number, Date>
diff --git a/date-fns/src/fp/endOfMonth/index.d.ts b/date-fns/src/fp/endOfMonth/index.d.ts
new file mode 100644
index 0000000..0c23957
--- /dev/null
+++ b/date-fns/src/fp/endOfMonth/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { endOfMonth } from 'date-fns/fp'
+export default endOfMonth
diff --git a/date-fns/src/fp/endOfMonth/index.js b/date-fns/src/fp/endOfMonth/index.js
new file mode 100644
index 0000000..6e54f05
--- /dev/null
+++ b/date-fns/src/fp/endOfMonth/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../endOfMonth/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var endOfMonth = convertToFP(fn, 1)
+
+export default endOfMonth
diff --git a/date-fns/src/fp/endOfMonth/index.js.flow b/date-fns/src/fp/endOfMonth/index.js.flow
new file mode 100644
index 0000000..1fc072e
--- /dev/null
+++ b/date-fns/src/fp/endOfMonth/index.js.flow
@@ -0,0 +1,54 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+declare module.exports: CurriedFn1<Date | number, Date>
diff --git a/date-fns/src/fp/endOfQuarter/index.d.ts b/date-fns/src/fp/endOfQuarter/index.d.ts
new file mode 100644
index 0000000..24e729b
--- /dev/null
+++ b/date-fns/src/fp/endOfQuarter/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { endOfQuarter } from 'date-fns/fp'
+export default endOfQuarter
diff --git a/date-fns/src/fp/endOfQuarter/index.js b/date-fns/src/fp/endOfQuarter/index.js
new file mode 100644
index 0000000..0f5dc0b
--- /dev/null
+++ b/date-fns/src/fp/endOfQuarter/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../endOfQuarter/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var endOfQuarter = convertToFP(fn, 1)
+
+export default endOfQuarter
diff --git a/date-fns/src/fp/endOfQuarter/index.js.flow b/date-fns/src/fp/endOfQuarter/index.js.flow
new file mode 100644
index 0000000..1fc072e
--- /dev/null
+++ b/date-fns/src/fp/endOfQuarter/index.js.flow
@@ -0,0 +1,54 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+declare module.exports: CurriedFn1<Date | number, Date>
diff --git a/date-fns/src/fp/endOfSecond/index.d.ts b/date-fns/src/fp/endOfSecond/index.d.ts
new file mode 100644
index 0000000..6b5d624
--- /dev/null
+++ b/date-fns/src/fp/endOfSecond/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { endOfSecond } from 'date-fns/fp'
+export default endOfSecond
diff --git a/date-fns/src/fp/endOfSecond/index.js b/date-fns/src/fp/endOfSecond/index.js
new file mode 100644
index 0000000..6b58bd8
--- /dev/null
+++ b/date-fns/src/fp/endOfSecond/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../endOfSecond/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var endOfSecond = convertToFP(fn, 1)
+
+export default endOfSecond
diff --git a/date-fns/src/fp/endOfSecond/index.js.flow b/date-fns/src/fp/endOfSecond/index.js.flow
new file mode 100644
index 0000000..1fc072e
--- /dev/null
+++ b/date-fns/src/fp/endOfSecond/index.js.flow
@@ -0,0 +1,54 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+declare module.exports: CurriedFn1<Date | number, Date>
diff --git a/date-fns/src/fp/endOfWeek/index.d.ts b/date-fns/src/fp/endOfWeek/index.d.ts
new file mode 100644
index 0000000..0aa4d10
--- /dev/null
+++ b/date-fns/src/fp/endOfWeek/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { endOfWeek } from 'date-fns/fp'
+export default endOfWeek
diff --git a/date-fns/src/fp/endOfWeek/index.js b/date-fns/src/fp/endOfWeek/index.js
new file mode 100644
index 0000000..256588b
--- /dev/null
+++ b/date-fns/src/fp/endOfWeek/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../endOfWeek/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var endOfWeek = convertToFP(fn, 1)
+
+export default endOfWeek
diff --git a/date-fns/src/fp/endOfWeek/index.js.flow b/date-fns/src/fp/endOfWeek/index.js.flow
new file mode 100644
index 0000000..1fc072e
--- /dev/null
+++ b/date-fns/src/fp/endOfWeek/index.js.flow
@@ -0,0 +1,54 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+declare module.exports: CurriedFn1<Date | number, Date>
diff --git a/date-fns/src/fp/endOfWeekWithOptions/index.d.ts b/date-fns/src/fp/endOfWeekWithOptions/index.d.ts
new file mode 100644
index 0000000..0ddcbf6
--- /dev/null
+++ b/date-fns/src/fp/endOfWeekWithOptions/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { endOfWeekWithOptions } from 'date-fns/fp'
+export default endOfWeekWithOptions
diff --git a/date-fns/src/fp/endOfWeekWithOptions/index.js b/date-fns/src/fp/endOfWeekWithOptions/index.js
new file mode 100644
index 0000000..49fe42b
--- /dev/null
+++ b/date-fns/src/fp/endOfWeekWithOptions/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../endOfWeek/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var endOfWeekWithOptions = convertToFP(fn, 2)
+
+export default endOfWeekWithOptions
diff --git a/date-fns/src/fp/endOfWeekWithOptions/index.js.flow b/date-fns/src/fp/endOfWeekWithOptions/index.js.flow
new file mode 100644
index 0000000..9821646
--- /dev/null
+++ b/date-fns/src/fp/endOfWeekWithOptions/index.js.flow
@@ -0,0 +1,65 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+declare module.exports: CurriedFn2<
+ {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ locale?: Locale,
+ },
+ Date | number,
+ Date
+>
diff --git a/date-fns/src/fp/endOfYear/index.d.ts b/date-fns/src/fp/endOfYear/index.d.ts
new file mode 100644
index 0000000..b4e5904
--- /dev/null
+++ b/date-fns/src/fp/endOfYear/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { endOfYear } from 'date-fns/fp'
+export default endOfYear
diff --git a/date-fns/src/fp/endOfYear/index.js b/date-fns/src/fp/endOfYear/index.js
new file mode 100644
index 0000000..a66dd9f
--- /dev/null
+++ b/date-fns/src/fp/endOfYear/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../endOfYear/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var endOfYear = convertToFP(fn, 1)
+
+export default endOfYear
diff --git a/date-fns/src/fp/endOfYear/index.js.flow b/date-fns/src/fp/endOfYear/index.js.flow
new file mode 100644
index 0000000..1fc072e
--- /dev/null
+++ b/date-fns/src/fp/endOfYear/index.js.flow
@@ -0,0 +1,54 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+declare module.exports: CurriedFn1<Date | number, Date>
diff --git a/date-fns/src/fp/format/index.d.ts b/date-fns/src/fp/format/index.d.ts
new file mode 100644
index 0000000..bf0c948
--- /dev/null
+++ b/date-fns/src/fp/format/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { format } from 'date-fns/fp'
+export default format
diff --git a/date-fns/src/fp/format/index.js b/date-fns/src/fp/format/index.js
new file mode 100644
index 0000000..6125b0a
--- /dev/null
+++ b/date-fns/src/fp/format/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../format/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var format = convertToFP(fn, 2)
+
+export default format
diff --git a/date-fns/src/fp/format/index.js.flow b/date-fns/src/fp/format/index.js.flow
new file mode 100644
index 0000000..013f277
--- /dev/null
+++ b/date-fns/src/fp/format/index.js.flow
@@ -0,0 +1,58 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+declare module.exports: CurriedFn2<string, Date | number, string>
diff --git a/date-fns/src/fp/formatDistance/index.d.ts b/date-fns/src/fp/formatDistance/index.d.ts
new file mode 100644
index 0000000..029daa4
--- /dev/null
+++ b/date-fns/src/fp/formatDistance/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { formatDistance } from 'date-fns/fp'
+export default formatDistance
diff --git a/date-fns/src/fp/formatDistance/index.js b/date-fns/src/fp/formatDistance/index.js
new file mode 100644
index 0000000..2b61a59
--- /dev/null
+++ b/date-fns/src/fp/formatDistance/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../formatDistance/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var formatDistance = convertToFP(fn, 2)
+
+export default formatDistance
diff --git a/date-fns/src/fp/formatDistance/index.js.flow b/date-fns/src/fp/formatDistance/index.js.flow
new file mode 100644
index 0000000..c4ef9a8
--- /dev/null
+++ b/date-fns/src/fp/formatDistance/index.js.flow
@@ -0,0 +1,58 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+declare module.exports: CurriedFn2<Date | number, Date | number, string>
diff --git a/date-fns/src/fp/formatDistanceStrict/index.d.ts b/date-fns/src/fp/formatDistanceStrict/index.d.ts
new file mode 100644
index 0000000..dd41fb8
--- /dev/null
+++ b/date-fns/src/fp/formatDistanceStrict/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { formatDistanceStrict } from 'date-fns/fp'
+export default formatDistanceStrict
diff --git a/date-fns/src/fp/formatDistanceStrict/index.js b/date-fns/src/fp/formatDistanceStrict/index.js
new file mode 100644
index 0000000..2fe195c
--- /dev/null
+++ b/date-fns/src/fp/formatDistanceStrict/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../formatDistanceStrict/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var formatDistanceStrict = convertToFP(fn, 2)
+
+export default formatDistanceStrict
diff --git a/date-fns/src/fp/formatDistanceStrict/index.js.flow b/date-fns/src/fp/formatDistanceStrict/index.js.flow
new file mode 100644
index 0000000..c4ef9a8
--- /dev/null
+++ b/date-fns/src/fp/formatDistanceStrict/index.js.flow
@@ -0,0 +1,58 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+declare module.exports: CurriedFn2<Date | number, Date | number, string>
diff --git a/date-fns/src/fp/formatDistanceStrictWithOptions/index.d.ts b/date-fns/src/fp/formatDistanceStrictWithOptions/index.d.ts
new file mode 100644
index 0000000..2e626c4
--- /dev/null
+++ b/date-fns/src/fp/formatDistanceStrictWithOptions/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { formatDistanceStrictWithOptions } from 'date-fns/fp'
+export default formatDistanceStrictWithOptions
diff --git a/date-fns/src/fp/formatDistanceStrictWithOptions/index.js b/date-fns/src/fp/formatDistanceStrictWithOptions/index.js
new file mode 100644
index 0000000..e2494e4
--- /dev/null
+++ b/date-fns/src/fp/formatDistanceStrictWithOptions/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../formatDistanceStrict/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var formatDistanceStrictWithOptions = convertToFP(fn, 3)
+
+export default formatDistanceStrictWithOptions
diff --git a/date-fns/src/fp/formatDistanceStrictWithOptions/index.js.flow b/date-fns/src/fp/formatDistanceStrictWithOptions/index.js.flow
new file mode 100644
index 0000000..b021da2
--- /dev/null
+++ b/date-fns/src/fp/formatDistanceStrictWithOptions/index.js.flow
@@ -0,0 +1,77 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+type CurriedFn3<A, B, C, R> = <A>(
+ a: A
+) =>
+ | CurriedFn2<B, C, R>
+ | (<A, B>(
+ a: A,
+ b: B
+ ) => CurriedFn1<C, R> | (<A, B, C>(a: A, b: B, c: C) => R))
+
+declare module.exports: CurriedFn3<
+ {
+ locale?: Locale,
+ roundingMethod?: 'floor' | 'ceil' | 'round',
+ unit?: 'second' | 'minute' | 'hour' | 'day' | 'month' | 'year',
+ addSuffix?: boolean,
+ },
+ Date | number,
+ Date | number,
+ string
+>
diff --git a/date-fns/src/fp/formatDistanceWithOptions/index.d.ts b/date-fns/src/fp/formatDistanceWithOptions/index.d.ts
new file mode 100644
index 0000000..62f0849
--- /dev/null
+++ b/date-fns/src/fp/formatDistanceWithOptions/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { formatDistanceWithOptions } from 'date-fns/fp'
+export default formatDistanceWithOptions
diff --git a/date-fns/src/fp/formatDistanceWithOptions/index.js b/date-fns/src/fp/formatDistanceWithOptions/index.js
new file mode 100644
index 0000000..8e97fdc
--- /dev/null
+++ b/date-fns/src/fp/formatDistanceWithOptions/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../formatDistance/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var formatDistanceWithOptions = convertToFP(fn, 3)
+
+export default formatDistanceWithOptions
diff --git a/date-fns/src/fp/formatDistanceWithOptions/index.js.flow b/date-fns/src/fp/formatDistanceWithOptions/index.js.flow
new file mode 100644
index 0000000..5904311
--- /dev/null
+++ b/date-fns/src/fp/formatDistanceWithOptions/index.js.flow
@@ -0,0 +1,76 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+type CurriedFn3<A, B, C, R> = <A>(
+ a: A
+) =>
+ | CurriedFn2<B, C, R>
+ | (<A, B>(
+ a: A,
+ b: B
+ ) => CurriedFn1<C, R> | (<A, B, C>(a: A, b: B, c: C) => R))
+
+declare module.exports: CurriedFn3<
+ {
+ locale?: Locale,
+ addSuffix?: boolean,
+ includeSeconds?: boolean,
+ },
+ Date | number,
+ Date | number,
+ string
+>
diff --git a/date-fns/src/fp/formatDuration/index.d.ts b/date-fns/src/fp/formatDuration/index.d.ts
new file mode 100644
index 0000000..3b184cc
--- /dev/null
+++ b/date-fns/src/fp/formatDuration/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { formatDuration } from 'date-fns/fp'
+export default formatDuration
diff --git a/date-fns/src/fp/formatDuration/index.js b/date-fns/src/fp/formatDuration/index.js
new file mode 100644
index 0000000..45dde95
--- /dev/null
+++ b/date-fns/src/fp/formatDuration/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../formatDuration/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var formatDuration = convertToFP(fn, 1)
+
+export default formatDuration
diff --git a/date-fns/src/fp/formatDuration/index.js.flow b/date-fns/src/fp/formatDuration/index.js.flow
new file mode 100644
index 0000000..da71564
--- /dev/null
+++ b/date-fns/src/fp/formatDuration/index.js.flow
@@ -0,0 +1,54 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+declare module.exports: CurriedFn1<Duration, string>
diff --git a/date-fns/src/fp/formatDurationWithOptions/index.d.ts b/date-fns/src/fp/formatDurationWithOptions/index.d.ts
new file mode 100644
index 0000000..6331517
--- /dev/null
+++ b/date-fns/src/fp/formatDurationWithOptions/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { formatDurationWithOptions } from 'date-fns/fp'
+export default formatDurationWithOptions
diff --git a/date-fns/src/fp/formatDurationWithOptions/index.js b/date-fns/src/fp/formatDurationWithOptions/index.js
new file mode 100644
index 0000000..9add43f
--- /dev/null
+++ b/date-fns/src/fp/formatDurationWithOptions/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../formatDuration/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var formatDurationWithOptions = convertToFP(fn, 2)
+
+export default formatDurationWithOptions
diff --git a/date-fns/src/fp/formatDurationWithOptions/index.js.flow b/date-fns/src/fp/formatDurationWithOptions/index.js.flow
new file mode 100644
index 0000000..72f2910
--- /dev/null
+++ b/date-fns/src/fp/formatDurationWithOptions/index.js.flow
@@ -0,0 +1,67 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+declare module.exports: CurriedFn2<
+ {
+ locale?: Locale,
+ delimiter?: string,
+ zero?: boolean,
+ format?: string[],
+ },
+ Duration,
+ string
+>
diff --git a/date-fns/src/fp/formatISO/index.d.ts b/date-fns/src/fp/formatISO/index.d.ts
new file mode 100644
index 0000000..6f3ba60
--- /dev/null
+++ b/date-fns/src/fp/formatISO/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { formatISO } from 'date-fns/fp'
+export default formatISO
diff --git a/date-fns/src/fp/formatISO/index.js b/date-fns/src/fp/formatISO/index.js
new file mode 100644
index 0000000..c59aeb5
--- /dev/null
+++ b/date-fns/src/fp/formatISO/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../formatISO/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var formatISO = convertToFP(fn, 1)
+
+export default formatISO
diff --git a/date-fns/src/fp/formatISO/index.js.flow b/date-fns/src/fp/formatISO/index.js.flow
new file mode 100644
index 0000000..a2b1a3a
--- /dev/null
+++ b/date-fns/src/fp/formatISO/index.js.flow
@@ -0,0 +1,54 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+declare module.exports: CurriedFn1<Date | number, string>
diff --git a/date-fns/src/fp/formatISO9075/index.d.ts b/date-fns/src/fp/formatISO9075/index.d.ts
new file mode 100644
index 0000000..171e2b7
--- /dev/null
+++ b/date-fns/src/fp/formatISO9075/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { formatISO9075 } from 'date-fns/fp'
+export default formatISO9075
diff --git a/date-fns/src/fp/formatISO9075/index.js b/date-fns/src/fp/formatISO9075/index.js
new file mode 100644
index 0000000..f7e3f44
--- /dev/null
+++ b/date-fns/src/fp/formatISO9075/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../formatISO9075/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var formatISO9075 = convertToFP(fn, 1)
+
+export default formatISO9075
diff --git a/date-fns/src/fp/formatISO9075/index.js.flow b/date-fns/src/fp/formatISO9075/index.js.flow
new file mode 100644
index 0000000..a2b1a3a
--- /dev/null
+++ b/date-fns/src/fp/formatISO9075/index.js.flow
@@ -0,0 +1,54 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+declare module.exports: CurriedFn1<Date | number, string>
diff --git a/date-fns/src/fp/formatISO9075WithOptions/index.d.ts b/date-fns/src/fp/formatISO9075WithOptions/index.d.ts
new file mode 100644
index 0000000..3000885
--- /dev/null
+++ b/date-fns/src/fp/formatISO9075WithOptions/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { formatISO9075WithOptions } from 'date-fns/fp'
+export default formatISO9075WithOptions
diff --git a/date-fns/src/fp/formatISO9075WithOptions/index.js b/date-fns/src/fp/formatISO9075WithOptions/index.js
new file mode 100644
index 0000000..aa642a6
--- /dev/null
+++ b/date-fns/src/fp/formatISO9075WithOptions/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../formatISO9075/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var formatISO9075WithOptions = convertToFP(fn, 2)
+
+export default formatISO9075WithOptions
diff --git a/date-fns/src/fp/formatISO9075WithOptions/index.js.flow b/date-fns/src/fp/formatISO9075WithOptions/index.js.flow
new file mode 100644
index 0000000..fd294f1
--- /dev/null
+++ b/date-fns/src/fp/formatISO9075WithOptions/index.js.flow
@@ -0,0 +1,65 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+declare module.exports: CurriedFn2<
+ {
+ representation?: 'complete' | 'date' | 'time',
+ format?: 'extended' | 'basic',
+ },
+ Date | number,
+ string
+>
diff --git a/date-fns/src/fp/formatISODuration/index.d.ts b/date-fns/src/fp/formatISODuration/index.d.ts
new file mode 100644
index 0000000..aedd086
--- /dev/null
+++ b/date-fns/src/fp/formatISODuration/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { formatISODuration } from 'date-fns/fp'
+export default formatISODuration
diff --git a/date-fns/src/fp/formatISODuration/index.js b/date-fns/src/fp/formatISODuration/index.js
new file mode 100644
index 0000000..21010c7
--- /dev/null
+++ b/date-fns/src/fp/formatISODuration/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../formatISODuration/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var formatISODuration = convertToFP(fn, 1)
+
+export default formatISODuration
diff --git a/date-fns/src/fp/formatISODuration/index.js.flow b/date-fns/src/fp/formatISODuration/index.js.flow
new file mode 100644
index 0000000..da71564
--- /dev/null
+++ b/date-fns/src/fp/formatISODuration/index.js.flow
@@ -0,0 +1,54 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+declare module.exports: CurriedFn1<Duration, string>
diff --git a/date-fns/src/fp/formatISOWithOptions/index.d.ts b/date-fns/src/fp/formatISOWithOptions/index.d.ts
new file mode 100644
index 0000000..286813e
--- /dev/null
+++ b/date-fns/src/fp/formatISOWithOptions/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { formatISOWithOptions } from 'date-fns/fp'
+export default formatISOWithOptions
diff --git a/date-fns/src/fp/formatISOWithOptions/index.js b/date-fns/src/fp/formatISOWithOptions/index.js
new file mode 100644
index 0000000..273bc4c
--- /dev/null
+++ b/date-fns/src/fp/formatISOWithOptions/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../formatISO/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var formatISOWithOptions = convertToFP(fn, 2)
+
+export default formatISOWithOptions
diff --git a/date-fns/src/fp/formatISOWithOptions/index.js.flow b/date-fns/src/fp/formatISOWithOptions/index.js.flow
new file mode 100644
index 0000000..fd294f1
--- /dev/null
+++ b/date-fns/src/fp/formatISOWithOptions/index.js.flow
@@ -0,0 +1,65 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+declare module.exports: CurriedFn2<
+ {
+ representation?: 'complete' | 'date' | 'time',
+ format?: 'extended' | 'basic',
+ },
+ Date | number,
+ string
+>
diff --git a/date-fns/src/fp/formatRFC3339/index.d.ts b/date-fns/src/fp/formatRFC3339/index.d.ts
new file mode 100644
index 0000000..c1ac827
--- /dev/null
+++ b/date-fns/src/fp/formatRFC3339/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { formatRFC3339 } from 'date-fns/fp'
+export default formatRFC3339
diff --git a/date-fns/src/fp/formatRFC3339/index.js b/date-fns/src/fp/formatRFC3339/index.js
new file mode 100644
index 0000000..f570155
--- /dev/null
+++ b/date-fns/src/fp/formatRFC3339/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../formatRFC3339/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var formatRFC3339 = convertToFP(fn, 1)
+
+export default formatRFC3339
diff --git a/date-fns/src/fp/formatRFC3339/index.js.flow b/date-fns/src/fp/formatRFC3339/index.js.flow
new file mode 100644
index 0000000..a2b1a3a
--- /dev/null
+++ b/date-fns/src/fp/formatRFC3339/index.js.flow
@@ -0,0 +1,54 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+declare module.exports: CurriedFn1<Date | number, string>
diff --git a/date-fns/src/fp/formatRFC3339WithOptions/index.d.ts b/date-fns/src/fp/formatRFC3339WithOptions/index.d.ts
new file mode 100644
index 0000000..b274531
--- /dev/null
+++ b/date-fns/src/fp/formatRFC3339WithOptions/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { formatRFC3339WithOptions } from 'date-fns/fp'
+export default formatRFC3339WithOptions
diff --git a/date-fns/src/fp/formatRFC3339WithOptions/index.js b/date-fns/src/fp/formatRFC3339WithOptions/index.js
new file mode 100644
index 0000000..6db8e3b
--- /dev/null
+++ b/date-fns/src/fp/formatRFC3339WithOptions/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../formatRFC3339/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var formatRFC3339WithOptions = convertToFP(fn, 2)
+
+export default formatRFC3339WithOptions
diff --git a/date-fns/src/fp/formatRFC3339WithOptions/index.js.flow b/date-fns/src/fp/formatRFC3339WithOptions/index.js.flow
new file mode 100644
index 0000000..77fba59
--- /dev/null
+++ b/date-fns/src/fp/formatRFC3339WithOptions/index.js.flow
@@ -0,0 +1,64 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+declare module.exports: CurriedFn2<
+ {
+ fractionDigits?: 0 | 1 | 2 | 3,
+ },
+ Date | number,
+ string
+>
diff --git a/date-fns/src/fp/formatRFC7231/index.d.ts b/date-fns/src/fp/formatRFC7231/index.d.ts
new file mode 100644
index 0000000..ca45e43
--- /dev/null
+++ b/date-fns/src/fp/formatRFC7231/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { formatRFC7231 } from 'date-fns/fp'
+export default formatRFC7231
diff --git a/date-fns/src/fp/formatRFC7231/index.js b/date-fns/src/fp/formatRFC7231/index.js
new file mode 100644
index 0000000..ef3b46f
--- /dev/null
+++ b/date-fns/src/fp/formatRFC7231/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../formatRFC7231/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var formatRFC7231 = convertToFP(fn, 1)
+
+export default formatRFC7231
diff --git a/date-fns/src/fp/formatRFC7231/index.js.flow b/date-fns/src/fp/formatRFC7231/index.js.flow
new file mode 100644
index 0000000..a2b1a3a
--- /dev/null
+++ b/date-fns/src/fp/formatRFC7231/index.js.flow
@@ -0,0 +1,54 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+declare module.exports: CurriedFn1<Date | number, string>
diff --git a/date-fns/src/fp/formatRelative/index.d.ts b/date-fns/src/fp/formatRelative/index.d.ts
new file mode 100644
index 0000000..927a300
--- /dev/null
+++ b/date-fns/src/fp/formatRelative/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { formatRelative } from 'date-fns/fp'
+export default formatRelative
diff --git a/date-fns/src/fp/formatRelative/index.js b/date-fns/src/fp/formatRelative/index.js
new file mode 100644
index 0000000..dc9e35f
--- /dev/null
+++ b/date-fns/src/fp/formatRelative/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../formatRelative/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var formatRelative = convertToFP(fn, 2)
+
+export default formatRelative
diff --git a/date-fns/src/fp/formatRelative/index.js.flow b/date-fns/src/fp/formatRelative/index.js.flow
new file mode 100644
index 0000000..c4ef9a8
--- /dev/null
+++ b/date-fns/src/fp/formatRelative/index.js.flow
@@ -0,0 +1,58 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+declare module.exports: CurriedFn2<Date | number, Date | number, string>
diff --git a/date-fns/src/fp/formatRelativeWithOptions/index.d.ts b/date-fns/src/fp/formatRelativeWithOptions/index.d.ts
new file mode 100644
index 0000000..5bea41a
--- /dev/null
+++ b/date-fns/src/fp/formatRelativeWithOptions/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { formatRelativeWithOptions } from 'date-fns/fp'
+export default formatRelativeWithOptions
diff --git a/date-fns/src/fp/formatRelativeWithOptions/index.js b/date-fns/src/fp/formatRelativeWithOptions/index.js
new file mode 100644
index 0000000..3ee8a1b
--- /dev/null
+++ b/date-fns/src/fp/formatRelativeWithOptions/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../formatRelative/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var formatRelativeWithOptions = convertToFP(fn, 3)
+
+export default formatRelativeWithOptions
diff --git a/date-fns/src/fp/formatRelativeWithOptions/index.js.flow b/date-fns/src/fp/formatRelativeWithOptions/index.js.flow
new file mode 100644
index 0000000..cb51d97
--- /dev/null
+++ b/date-fns/src/fp/formatRelativeWithOptions/index.js.flow
@@ -0,0 +1,75 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+type CurriedFn3<A, B, C, R> = <A>(
+ a: A
+) =>
+ | CurriedFn2<B, C, R>
+ | (<A, B>(
+ a: A,
+ b: B
+ ) => CurriedFn1<C, R> | (<A, B, C>(a: A, b: B, c: C) => R))
+
+declare module.exports: CurriedFn3<
+ {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ locale?: Locale,
+ },
+ Date | number,
+ Date | number,
+ string
+>
diff --git a/date-fns/src/fp/formatWithOptions/index.d.ts b/date-fns/src/fp/formatWithOptions/index.d.ts
new file mode 100644
index 0000000..cd59897
--- /dev/null
+++ b/date-fns/src/fp/formatWithOptions/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { formatWithOptions } from 'date-fns/fp'
+export default formatWithOptions
diff --git a/date-fns/src/fp/formatWithOptions/index.js b/date-fns/src/fp/formatWithOptions/index.js
new file mode 100644
index 0000000..9c0a819
--- /dev/null
+++ b/date-fns/src/fp/formatWithOptions/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../format/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var formatWithOptions = convertToFP(fn, 3)
+
+export default formatWithOptions
diff --git a/date-fns/src/fp/formatWithOptions/index.js.flow b/date-fns/src/fp/formatWithOptions/index.js.flow
new file mode 100644
index 0000000..757f95a
--- /dev/null
+++ b/date-fns/src/fp/formatWithOptions/index.js.flow
@@ -0,0 +1,78 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+type CurriedFn3<A, B, C, R> = <A>(
+ a: A
+) =>
+ | CurriedFn2<B, C, R>
+ | (<A, B>(
+ a: A,
+ b: B
+ ) => CurriedFn1<C, R> | (<A, B, C>(a: A, b: B, c: C) => R))
+
+declare module.exports: CurriedFn3<
+ {
+ useAdditionalDayOfYearTokens?: boolean,
+ useAdditionalWeekYearTokens?: boolean,
+ firstWeekContainsDate?: number,
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ locale?: Locale,
+ },
+ string,
+ Date | number,
+ string
+>
diff --git a/date-fns/src/fp/fromUnixTime/index.d.ts b/date-fns/src/fp/fromUnixTime/index.d.ts
new file mode 100644
index 0000000..e6cbce3
--- /dev/null
+++ b/date-fns/src/fp/fromUnixTime/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { fromUnixTime } from 'date-fns/fp'
+export default fromUnixTime
diff --git a/date-fns/src/fp/fromUnixTime/index.js b/date-fns/src/fp/fromUnixTime/index.js
new file mode 100644
index 0000000..a0c8bf6
--- /dev/null
+++ b/date-fns/src/fp/fromUnixTime/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../fromUnixTime/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var fromUnixTime = convertToFP(fn, 1)
+
+export default fromUnixTime
diff --git a/date-fns/src/fp/fromUnixTime/index.js.flow b/date-fns/src/fp/fromUnixTime/index.js.flow
new file mode 100644
index 0000000..27fa886
--- /dev/null
+++ b/date-fns/src/fp/fromUnixTime/index.js.flow
@@ -0,0 +1,54 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+declare module.exports: CurriedFn1<number, Date>
diff --git a/date-fns/src/fp/getDate/index.d.ts b/date-fns/src/fp/getDate/index.d.ts
new file mode 100644
index 0000000..879f12c
--- /dev/null
+++ b/date-fns/src/fp/getDate/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { getDate } from 'date-fns/fp'
+export default getDate
diff --git a/date-fns/src/fp/getDate/index.js b/date-fns/src/fp/getDate/index.js
new file mode 100644
index 0000000..57b92e6
--- /dev/null
+++ b/date-fns/src/fp/getDate/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../getDate/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var getDate = convertToFP(fn, 1)
+
+export default getDate
diff --git a/date-fns/src/fp/getDate/index.js.flow b/date-fns/src/fp/getDate/index.js.flow
new file mode 100644
index 0000000..7a34c65
--- /dev/null
+++ b/date-fns/src/fp/getDate/index.js.flow
@@ -0,0 +1,54 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+declare module.exports: CurriedFn1<Date | number, number>
diff --git a/date-fns/src/fp/getDay/index.d.ts b/date-fns/src/fp/getDay/index.d.ts
new file mode 100644
index 0000000..e1bccbb
--- /dev/null
+++ b/date-fns/src/fp/getDay/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { getDay } from 'date-fns/fp'
+export default getDay
diff --git a/date-fns/src/fp/getDay/index.js b/date-fns/src/fp/getDay/index.js
new file mode 100644
index 0000000..a50b4c7
--- /dev/null
+++ b/date-fns/src/fp/getDay/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../getDay/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var getDay = convertToFP(fn, 1)
+
+export default getDay
diff --git a/date-fns/src/fp/getDay/index.js.flow b/date-fns/src/fp/getDay/index.js.flow
new file mode 100644
index 0000000..8971f41
--- /dev/null
+++ b/date-fns/src/fp/getDay/index.js.flow
@@ -0,0 +1,54 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+declare module.exports: CurriedFn1<Date | number, 0 | 1 | 2 | 3 | 4 | 5 | 6>
diff --git a/date-fns/src/fp/getDayOfYear/index.d.ts b/date-fns/src/fp/getDayOfYear/index.d.ts
new file mode 100644
index 0000000..ccc88e1
--- /dev/null
+++ b/date-fns/src/fp/getDayOfYear/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { getDayOfYear } from 'date-fns/fp'
+export default getDayOfYear
diff --git a/date-fns/src/fp/getDayOfYear/index.js b/date-fns/src/fp/getDayOfYear/index.js
new file mode 100644
index 0000000..601b20f
--- /dev/null
+++ b/date-fns/src/fp/getDayOfYear/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../getDayOfYear/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var getDayOfYear = convertToFP(fn, 1)
+
+export default getDayOfYear
diff --git a/date-fns/src/fp/getDayOfYear/index.js.flow b/date-fns/src/fp/getDayOfYear/index.js.flow
new file mode 100644
index 0000000..7a34c65
--- /dev/null
+++ b/date-fns/src/fp/getDayOfYear/index.js.flow
@@ -0,0 +1,54 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+declare module.exports: CurriedFn1<Date | number, number>
diff --git a/date-fns/src/fp/getDaysInMonth/index.d.ts b/date-fns/src/fp/getDaysInMonth/index.d.ts
new file mode 100644
index 0000000..2ca8445
--- /dev/null
+++ b/date-fns/src/fp/getDaysInMonth/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { getDaysInMonth } from 'date-fns/fp'
+export default getDaysInMonth
diff --git a/date-fns/src/fp/getDaysInMonth/index.js b/date-fns/src/fp/getDaysInMonth/index.js
new file mode 100644
index 0000000..b18dd45
--- /dev/null
+++ b/date-fns/src/fp/getDaysInMonth/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../getDaysInMonth/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var getDaysInMonth = convertToFP(fn, 1)
+
+export default getDaysInMonth
diff --git a/date-fns/src/fp/getDaysInMonth/index.js.flow b/date-fns/src/fp/getDaysInMonth/index.js.flow
new file mode 100644
index 0000000..7a34c65
--- /dev/null
+++ b/date-fns/src/fp/getDaysInMonth/index.js.flow
@@ -0,0 +1,54 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+declare module.exports: CurriedFn1<Date | number, number>
diff --git a/date-fns/src/fp/getDaysInYear/index.d.ts b/date-fns/src/fp/getDaysInYear/index.d.ts
new file mode 100644
index 0000000..599213f
--- /dev/null
+++ b/date-fns/src/fp/getDaysInYear/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { getDaysInYear } from 'date-fns/fp'
+export default getDaysInYear
diff --git a/date-fns/src/fp/getDaysInYear/index.js b/date-fns/src/fp/getDaysInYear/index.js
new file mode 100644
index 0000000..793b00d
--- /dev/null
+++ b/date-fns/src/fp/getDaysInYear/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../getDaysInYear/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var getDaysInYear = convertToFP(fn, 1)
+
+export default getDaysInYear
diff --git a/date-fns/src/fp/getDaysInYear/index.js.flow b/date-fns/src/fp/getDaysInYear/index.js.flow
new file mode 100644
index 0000000..7a34c65
--- /dev/null
+++ b/date-fns/src/fp/getDaysInYear/index.js.flow
@@ -0,0 +1,54 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+declare module.exports: CurriedFn1<Date | number, number>
diff --git a/date-fns/src/fp/getDecade/index.d.ts b/date-fns/src/fp/getDecade/index.d.ts
new file mode 100644
index 0000000..ca1c9c5
--- /dev/null
+++ b/date-fns/src/fp/getDecade/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { getDecade } from 'date-fns/fp'
+export default getDecade
diff --git a/date-fns/src/fp/getDecade/index.js b/date-fns/src/fp/getDecade/index.js
new file mode 100644
index 0000000..6845b32
--- /dev/null
+++ b/date-fns/src/fp/getDecade/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../getDecade/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var getDecade = convertToFP(fn, 1)
+
+export default getDecade
diff --git a/date-fns/src/fp/getDecade/index.js.flow b/date-fns/src/fp/getDecade/index.js.flow
new file mode 100644
index 0000000..7a34c65
--- /dev/null
+++ b/date-fns/src/fp/getDecade/index.js.flow
@@ -0,0 +1,54 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+declare module.exports: CurriedFn1<Date | number, number>
diff --git a/date-fns/src/fp/getHours/index.d.ts b/date-fns/src/fp/getHours/index.d.ts
new file mode 100644
index 0000000..9daea8a
--- /dev/null
+++ b/date-fns/src/fp/getHours/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { getHours } from 'date-fns/fp'
+export default getHours
diff --git a/date-fns/src/fp/getHours/index.js b/date-fns/src/fp/getHours/index.js
new file mode 100644
index 0000000..107c1db
--- /dev/null
+++ b/date-fns/src/fp/getHours/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../getHours/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var getHours = convertToFP(fn, 1)
+
+export default getHours
diff --git a/date-fns/src/fp/getHours/index.js.flow b/date-fns/src/fp/getHours/index.js.flow
new file mode 100644
index 0000000..7a34c65
--- /dev/null
+++ b/date-fns/src/fp/getHours/index.js.flow
@@ -0,0 +1,54 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+declare module.exports: CurriedFn1<Date | number, number>
diff --git a/date-fns/src/fp/getISODay/index.d.ts b/date-fns/src/fp/getISODay/index.d.ts
new file mode 100644
index 0000000..c85663e
--- /dev/null
+++ b/date-fns/src/fp/getISODay/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { getISODay } from 'date-fns/fp'
+export default getISODay
diff --git a/date-fns/src/fp/getISODay/index.js b/date-fns/src/fp/getISODay/index.js
new file mode 100644
index 0000000..f7e8751
--- /dev/null
+++ b/date-fns/src/fp/getISODay/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../getISODay/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var getISODay = convertToFP(fn, 1)
+
+export default getISODay
diff --git a/date-fns/src/fp/getISODay/index.js.flow b/date-fns/src/fp/getISODay/index.js.flow
new file mode 100644
index 0000000..7a34c65
--- /dev/null
+++ b/date-fns/src/fp/getISODay/index.js.flow
@@ -0,0 +1,54 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+declare module.exports: CurriedFn1<Date | number, number>
diff --git a/date-fns/src/fp/getISOWeek/index.d.ts b/date-fns/src/fp/getISOWeek/index.d.ts
new file mode 100644
index 0000000..2574d71
--- /dev/null
+++ b/date-fns/src/fp/getISOWeek/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { getISOWeek } from 'date-fns/fp'
+export default getISOWeek
diff --git a/date-fns/src/fp/getISOWeek/index.js b/date-fns/src/fp/getISOWeek/index.js
new file mode 100644
index 0000000..00fc0bf
--- /dev/null
+++ b/date-fns/src/fp/getISOWeek/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../getISOWeek/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var getISOWeek = convertToFP(fn, 1)
+
+export default getISOWeek
diff --git a/date-fns/src/fp/getISOWeek/index.js.flow b/date-fns/src/fp/getISOWeek/index.js.flow
new file mode 100644
index 0000000..7a34c65
--- /dev/null
+++ b/date-fns/src/fp/getISOWeek/index.js.flow
@@ -0,0 +1,54 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+declare module.exports: CurriedFn1<Date | number, number>
diff --git a/date-fns/src/fp/getISOWeekYear/index.d.ts b/date-fns/src/fp/getISOWeekYear/index.d.ts
new file mode 100644
index 0000000..b0cfad8
--- /dev/null
+++ b/date-fns/src/fp/getISOWeekYear/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { getISOWeekYear } from 'date-fns/fp'
+export default getISOWeekYear
diff --git a/date-fns/src/fp/getISOWeekYear/index.js b/date-fns/src/fp/getISOWeekYear/index.js
new file mode 100644
index 0000000..5ef6bad
--- /dev/null
+++ b/date-fns/src/fp/getISOWeekYear/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../getISOWeekYear/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var getISOWeekYear = convertToFP(fn, 1)
+
+export default getISOWeekYear
diff --git a/date-fns/src/fp/getISOWeekYear/index.js.flow b/date-fns/src/fp/getISOWeekYear/index.js.flow
new file mode 100644
index 0000000..7a34c65
--- /dev/null
+++ b/date-fns/src/fp/getISOWeekYear/index.js.flow
@@ -0,0 +1,54 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+declare module.exports: CurriedFn1<Date | number, number>
diff --git a/date-fns/src/fp/getISOWeeksInYear/index.d.ts b/date-fns/src/fp/getISOWeeksInYear/index.d.ts
new file mode 100644
index 0000000..3a1d6af
--- /dev/null
+++ b/date-fns/src/fp/getISOWeeksInYear/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { getISOWeeksInYear } from 'date-fns/fp'
+export default getISOWeeksInYear
diff --git a/date-fns/src/fp/getISOWeeksInYear/index.js b/date-fns/src/fp/getISOWeeksInYear/index.js
new file mode 100644
index 0000000..c83b12c
--- /dev/null
+++ b/date-fns/src/fp/getISOWeeksInYear/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../getISOWeeksInYear/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var getISOWeeksInYear = convertToFP(fn, 1)
+
+export default getISOWeeksInYear
diff --git a/date-fns/src/fp/getISOWeeksInYear/index.js.flow b/date-fns/src/fp/getISOWeeksInYear/index.js.flow
new file mode 100644
index 0000000..7a34c65
--- /dev/null
+++ b/date-fns/src/fp/getISOWeeksInYear/index.js.flow
@@ -0,0 +1,54 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+declare module.exports: CurriedFn1<Date | number, number>
diff --git a/date-fns/src/fp/getMilliseconds/index.d.ts b/date-fns/src/fp/getMilliseconds/index.d.ts
new file mode 100644
index 0000000..c125962
--- /dev/null
+++ b/date-fns/src/fp/getMilliseconds/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { getMilliseconds } from 'date-fns/fp'
+export default getMilliseconds
diff --git a/date-fns/src/fp/getMilliseconds/index.js b/date-fns/src/fp/getMilliseconds/index.js
new file mode 100644
index 0000000..09a4e8c
--- /dev/null
+++ b/date-fns/src/fp/getMilliseconds/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../getMilliseconds/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var getMilliseconds = convertToFP(fn, 1)
+
+export default getMilliseconds
diff --git a/date-fns/src/fp/getMilliseconds/index.js.flow b/date-fns/src/fp/getMilliseconds/index.js.flow
new file mode 100644
index 0000000..7a34c65
--- /dev/null
+++ b/date-fns/src/fp/getMilliseconds/index.js.flow
@@ -0,0 +1,54 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+declare module.exports: CurriedFn1<Date | number, number>
diff --git a/date-fns/src/fp/getMinutes/index.d.ts b/date-fns/src/fp/getMinutes/index.d.ts
new file mode 100644
index 0000000..14b6b04
--- /dev/null
+++ b/date-fns/src/fp/getMinutes/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { getMinutes } from 'date-fns/fp'
+export default getMinutes
diff --git a/date-fns/src/fp/getMinutes/index.js b/date-fns/src/fp/getMinutes/index.js
new file mode 100644
index 0000000..9603744
--- /dev/null
+++ b/date-fns/src/fp/getMinutes/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../getMinutes/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var getMinutes = convertToFP(fn, 1)
+
+export default getMinutes
diff --git a/date-fns/src/fp/getMinutes/index.js.flow b/date-fns/src/fp/getMinutes/index.js.flow
new file mode 100644
index 0000000..7a34c65
--- /dev/null
+++ b/date-fns/src/fp/getMinutes/index.js.flow
@@ -0,0 +1,54 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+declare module.exports: CurriedFn1<Date | number, number>
diff --git a/date-fns/src/fp/getMonth/index.d.ts b/date-fns/src/fp/getMonth/index.d.ts
new file mode 100644
index 0000000..a7c696a
--- /dev/null
+++ b/date-fns/src/fp/getMonth/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { getMonth } from 'date-fns/fp'
+export default getMonth
diff --git a/date-fns/src/fp/getMonth/index.js b/date-fns/src/fp/getMonth/index.js
new file mode 100644
index 0000000..f80288a
--- /dev/null
+++ b/date-fns/src/fp/getMonth/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../getMonth/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var getMonth = convertToFP(fn, 1)
+
+export default getMonth
diff --git a/date-fns/src/fp/getMonth/index.js.flow b/date-fns/src/fp/getMonth/index.js.flow
new file mode 100644
index 0000000..7a34c65
--- /dev/null
+++ b/date-fns/src/fp/getMonth/index.js.flow
@@ -0,0 +1,54 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+declare module.exports: CurriedFn1<Date | number, number>
diff --git a/date-fns/src/fp/getOverlappingDaysInIntervals/index.d.ts b/date-fns/src/fp/getOverlappingDaysInIntervals/index.d.ts
new file mode 100644
index 0000000..de0b970
--- /dev/null
+++ b/date-fns/src/fp/getOverlappingDaysInIntervals/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { getOverlappingDaysInIntervals } from 'date-fns/fp'
+export default getOverlappingDaysInIntervals
diff --git a/date-fns/src/fp/getOverlappingDaysInIntervals/index.js b/date-fns/src/fp/getOverlappingDaysInIntervals/index.js
new file mode 100644
index 0000000..9ac2f66
--- /dev/null
+++ b/date-fns/src/fp/getOverlappingDaysInIntervals/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../getOverlappingDaysInIntervals/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var getOverlappingDaysInIntervals = convertToFP(fn, 2)
+
+export default getOverlappingDaysInIntervals
diff --git a/date-fns/src/fp/getOverlappingDaysInIntervals/index.js.flow b/date-fns/src/fp/getOverlappingDaysInIntervals/index.js.flow
new file mode 100644
index 0000000..f640837
--- /dev/null
+++ b/date-fns/src/fp/getOverlappingDaysInIntervals/index.js.flow
@@ -0,0 +1,58 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+declare module.exports: CurriedFn2<Interval, Interval, number>
diff --git a/date-fns/src/fp/getQuarter/index.d.ts b/date-fns/src/fp/getQuarter/index.d.ts
new file mode 100644
index 0000000..50f13f6
--- /dev/null
+++ b/date-fns/src/fp/getQuarter/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { getQuarter } from 'date-fns/fp'
+export default getQuarter
diff --git a/date-fns/src/fp/getQuarter/index.js b/date-fns/src/fp/getQuarter/index.js
new file mode 100644
index 0000000..722e70b
--- /dev/null
+++ b/date-fns/src/fp/getQuarter/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../getQuarter/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var getQuarter = convertToFP(fn, 1)
+
+export default getQuarter
diff --git a/date-fns/src/fp/getQuarter/index.js.flow b/date-fns/src/fp/getQuarter/index.js.flow
new file mode 100644
index 0000000..7a34c65
--- /dev/null
+++ b/date-fns/src/fp/getQuarter/index.js.flow
@@ -0,0 +1,54 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+declare module.exports: CurriedFn1<Date | number, number>
diff --git a/date-fns/src/fp/getSeconds/index.d.ts b/date-fns/src/fp/getSeconds/index.d.ts
new file mode 100644
index 0000000..1f6c233
--- /dev/null
+++ b/date-fns/src/fp/getSeconds/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { getSeconds } from 'date-fns/fp'
+export default getSeconds
diff --git a/date-fns/src/fp/getSeconds/index.js b/date-fns/src/fp/getSeconds/index.js
new file mode 100644
index 0000000..7fe1b75
--- /dev/null
+++ b/date-fns/src/fp/getSeconds/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../getSeconds/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var getSeconds = convertToFP(fn, 1)
+
+export default getSeconds
diff --git a/date-fns/src/fp/getSeconds/index.js.flow b/date-fns/src/fp/getSeconds/index.js.flow
new file mode 100644
index 0000000..7a34c65
--- /dev/null
+++ b/date-fns/src/fp/getSeconds/index.js.flow
@@ -0,0 +1,54 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+declare module.exports: CurriedFn1<Date | number, number>
diff --git a/date-fns/src/fp/getTime/index.d.ts b/date-fns/src/fp/getTime/index.d.ts
new file mode 100644
index 0000000..7bfc8ce
--- /dev/null
+++ b/date-fns/src/fp/getTime/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { getTime } from 'date-fns/fp'
+export default getTime
diff --git a/date-fns/src/fp/getTime/index.js b/date-fns/src/fp/getTime/index.js
new file mode 100644
index 0000000..7754b5d
--- /dev/null
+++ b/date-fns/src/fp/getTime/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../getTime/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var getTime = convertToFP(fn, 1)
+
+export default getTime
diff --git a/date-fns/src/fp/getTime/index.js.flow b/date-fns/src/fp/getTime/index.js.flow
new file mode 100644
index 0000000..7a34c65
--- /dev/null
+++ b/date-fns/src/fp/getTime/index.js.flow
@@ -0,0 +1,54 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+declare module.exports: CurriedFn1<Date | number, number>
diff --git a/date-fns/src/fp/getUnixTime/index.d.ts b/date-fns/src/fp/getUnixTime/index.d.ts
new file mode 100644
index 0000000..7fb0dac
--- /dev/null
+++ b/date-fns/src/fp/getUnixTime/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { getUnixTime } from 'date-fns/fp'
+export default getUnixTime
diff --git a/date-fns/src/fp/getUnixTime/index.js b/date-fns/src/fp/getUnixTime/index.js
new file mode 100644
index 0000000..d7e27b9
--- /dev/null
+++ b/date-fns/src/fp/getUnixTime/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../getUnixTime/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var getUnixTime = convertToFP(fn, 1)
+
+export default getUnixTime
diff --git a/date-fns/src/fp/getUnixTime/index.js.flow b/date-fns/src/fp/getUnixTime/index.js.flow
new file mode 100644
index 0000000..7a34c65
--- /dev/null
+++ b/date-fns/src/fp/getUnixTime/index.js.flow
@@ -0,0 +1,54 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+declare module.exports: CurriedFn1<Date | number, number>
diff --git a/date-fns/src/fp/getWeek/index.d.ts b/date-fns/src/fp/getWeek/index.d.ts
new file mode 100644
index 0000000..2b3b4ee
--- /dev/null
+++ b/date-fns/src/fp/getWeek/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { getWeek } from 'date-fns/fp'
+export default getWeek
diff --git a/date-fns/src/fp/getWeek/index.js b/date-fns/src/fp/getWeek/index.js
new file mode 100644
index 0000000..a4197e5
--- /dev/null
+++ b/date-fns/src/fp/getWeek/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../getWeek/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var getWeek = convertToFP(fn, 1)
+
+export default getWeek
diff --git a/date-fns/src/fp/getWeek/index.js.flow b/date-fns/src/fp/getWeek/index.js.flow
new file mode 100644
index 0000000..7a34c65
--- /dev/null
+++ b/date-fns/src/fp/getWeek/index.js.flow
@@ -0,0 +1,54 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+declare module.exports: CurriedFn1<Date | number, number>
diff --git a/date-fns/src/fp/getWeekOfMonth/index.d.ts b/date-fns/src/fp/getWeekOfMonth/index.d.ts
new file mode 100644
index 0000000..1fd925f
--- /dev/null
+++ b/date-fns/src/fp/getWeekOfMonth/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { getWeekOfMonth } from 'date-fns/fp'
+export default getWeekOfMonth
diff --git a/date-fns/src/fp/getWeekOfMonth/index.js b/date-fns/src/fp/getWeekOfMonth/index.js
new file mode 100644
index 0000000..ad01383
--- /dev/null
+++ b/date-fns/src/fp/getWeekOfMonth/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../getWeekOfMonth/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var getWeekOfMonth = convertToFP(fn, 1)
+
+export default getWeekOfMonth
diff --git a/date-fns/src/fp/getWeekOfMonth/index.js.flow b/date-fns/src/fp/getWeekOfMonth/index.js.flow
new file mode 100644
index 0000000..7a34c65
--- /dev/null
+++ b/date-fns/src/fp/getWeekOfMonth/index.js.flow
@@ -0,0 +1,54 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+declare module.exports: CurriedFn1<Date | number, number>
diff --git a/date-fns/src/fp/getWeekOfMonthWithOptions/index.d.ts b/date-fns/src/fp/getWeekOfMonthWithOptions/index.d.ts
new file mode 100644
index 0000000..0bcf9e4
--- /dev/null
+++ b/date-fns/src/fp/getWeekOfMonthWithOptions/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { getWeekOfMonthWithOptions } from 'date-fns/fp'
+export default getWeekOfMonthWithOptions
diff --git a/date-fns/src/fp/getWeekOfMonthWithOptions/index.js b/date-fns/src/fp/getWeekOfMonthWithOptions/index.js
new file mode 100644
index 0000000..66297e5
--- /dev/null
+++ b/date-fns/src/fp/getWeekOfMonthWithOptions/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../getWeekOfMonth/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var getWeekOfMonthWithOptions = convertToFP(fn, 2)
+
+export default getWeekOfMonthWithOptions
diff --git a/date-fns/src/fp/getWeekOfMonthWithOptions/index.js.flow b/date-fns/src/fp/getWeekOfMonthWithOptions/index.js.flow
new file mode 100644
index 0000000..d1b5c20
--- /dev/null
+++ b/date-fns/src/fp/getWeekOfMonthWithOptions/index.js.flow
@@ -0,0 +1,65 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+declare module.exports: CurriedFn2<
+ {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ locale?: Locale,
+ },
+ Date | number,
+ number
+>
diff --git a/date-fns/src/fp/getWeekWithOptions/index.d.ts b/date-fns/src/fp/getWeekWithOptions/index.d.ts
new file mode 100644
index 0000000..6f2de40
--- /dev/null
+++ b/date-fns/src/fp/getWeekWithOptions/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { getWeekWithOptions } from 'date-fns/fp'
+export default getWeekWithOptions
diff --git a/date-fns/src/fp/getWeekWithOptions/index.js b/date-fns/src/fp/getWeekWithOptions/index.js
new file mode 100644
index 0000000..a7e0c84
--- /dev/null
+++ b/date-fns/src/fp/getWeekWithOptions/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../getWeek/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var getWeekWithOptions = convertToFP(fn, 2)
+
+export default getWeekWithOptions
diff --git a/date-fns/src/fp/getWeekWithOptions/index.js.flow b/date-fns/src/fp/getWeekWithOptions/index.js.flow
new file mode 100644
index 0000000..970a659
--- /dev/null
+++ b/date-fns/src/fp/getWeekWithOptions/index.js.flow
@@ -0,0 +1,66 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+declare module.exports: CurriedFn2<
+ {
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ locale?: Locale,
+ },
+ Date | number,
+ number
+>
diff --git a/date-fns/src/fp/getWeekYear/index.d.ts b/date-fns/src/fp/getWeekYear/index.d.ts
new file mode 100644
index 0000000..7cf37e0
--- /dev/null
+++ b/date-fns/src/fp/getWeekYear/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { getWeekYear } from 'date-fns/fp'
+export default getWeekYear
diff --git a/date-fns/src/fp/getWeekYear/index.js b/date-fns/src/fp/getWeekYear/index.js
new file mode 100644
index 0000000..7396dac
--- /dev/null
+++ b/date-fns/src/fp/getWeekYear/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../getWeekYear/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var getWeekYear = convertToFP(fn, 1)
+
+export default getWeekYear
diff --git a/date-fns/src/fp/getWeekYear/index.js.flow b/date-fns/src/fp/getWeekYear/index.js.flow
new file mode 100644
index 0000000..7a34c65
--- /dev/null
+++ b/date-fns/src/fp/getWeekYear/index.js.flow
@@ -0,0 +1,54 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+declare module.exports: CurriedFn1<Date | number, number>
diff --git a/date-fns/src/fp/getWeekYearWithOptions/index.d.ts b/date-fns/src/fp/getWeekYearWithOptions/index.d.ts
new file mode 100644
index 0000000..d33a37a
--- /dev/null
+++ b/date-fns/src/fp/getWeekYearWithOptions/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { getWeekYearWithOptions } from 'date-fns/fp'
+export default getWeekYearWithOptions
diff --git a/date-fns/src/fp/getWeekYearWithOptions/index.js b/date-fns/src/fp/getWeekYearWithOptions/index.js
new file mode 100644
index 0000000..86888f0
--- /dev/null
+++ b/date-fns/src/fp/getWeekYearWithOptions/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../getWeekYear/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var getWeekYearWithOptions = convertToFP(fn, 2)
+
+export default getWeekYearWithOptions
diff --git a/date-fns/src/fp/getWeekYearWithOptions/index.js.flow b/date-fns/src/fp/getWeekYearWithOptions/index.js.flow
new file mode 100644
index 0000000..970a659
--- /dev/null
+++ b/date-fns/src/fp/getWeekYearWithOptions/index.js.flow
@@ -0,0 +1,66 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+declare module.exports: CurriedFn2<
+ {
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ locale?: Locale,
+ },
+ Date | number,
+ number
+>
diff --git a/date-fns/src/fp/getWeeksInMonth/index.d.ts b/date-fns/src/fp/getWeeksInMonth/index.d.ts
new file mode 100644
index 0000000..2de5a9c
--- /dev/null
+++ b/date-fns/src/fp/getWeeksInMonth/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { getWeeksInMonth } from 'date-fns/fp'
+export default getWeeksInMonth
diff --git a/date-fns/src/fp/getWeeksInMonth/index.js b/date-fns/src/fp/getWeeksInMonth/index.js
new file mode 100644
index 0000000..e757062
--- /dev/null
+++ b/date-fns/src/fp/getWeeksInMonth/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../getWeeksInMonth/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var getWeeksInMonth = convertToFP(fn, 1)
+
+export default getWeeksInMonth
diff --git a/date-fns/src/fp/getWeeksInMonth/index.js.flow b/date-fns/src/fp/getWeeksInMonth/index.js.flow
new file mode 100644
index 0000000..7a34c65
--- /dev/null
+++ b/date-fns/src/fp/getWeeksInMonth/index.js.flow
@@ -0,0 +1,54 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+declare module.exports: CurriedFn1<Date | number, number>
diff --git a/date-fns/src/fp/getWeeksInMonthWithOptions/index.d.ts b/date-fns/src/fp/getWeeksInMonthWithOptions/index.d.ts
new file mode 100644
index 0000000..9016970
--- /dev/null
+++ b/date-fns/src/fp/getWeeksInMonthWithOptions/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { getWeeksInMonthWithOptions } from 'date-fns/fp'
+export default getWeeksInMonthWithOptions
diff --git a/date-fns/src/fp/getWeeksInMonthWithOptions/index.js b/date-fns/src/fp/getWeeksInMonthWithOptions/index.js
new file mode 100644
index 0000000..086072f
--- /dev/null
+++ b/date-fns/src/fp/getWeeksInMonthWithOptions/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../getWeeksInMonth/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var getWeeksInMonthWithOptions = convertToFP(fn, 2)
+
+export default getWeeksInMonthWithOptions
diff --git a/date-fns/src/fp/getWeeksInMonthWithOptions/index.js.flow b/date-fns/src/fp/getWeeksInMonthWithOptions/index.js.flow
new file mode 100644
index 0000000..d1b5c20
--- /dev/null
+++ b/date-fns/src/fp/getWeeksInMonthWithOptions/index.js.flow
@@ -0,0 +1,65 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+declare module.exports: CurriedFn2<
+ {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ locale?: Locale,
+ },
+ Date | number,
+ number
+>
diff --git a/date-fns/src/fp/getYear/index.d.ts b/date-fns/src/fp/getYear/index.d.ts
new file mode 100644
index 0000000..603dc71
--- /dev/null
+++ b/date-fns/src/fp/getYear/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { getYear } from 'date-fns/fp'
+export default getYear
diff --git a/date-fns/src/fp/getYear/index.js b/date-fns/src/fp/getYear/index.js
new file mode 100644
index 0000000..60af7f3
--- /dev/null
+++ b/date-fns/src/fp/getYear/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../getYear/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var getYear = convertToFP(fn, 1)
+
+export default getYear
diff --git a/date-fns/src/fp/getYear/index.js.flow b/date-fns/src/fp/getYear/index.js.flow
new file mode 100644
index 0000000..7a34c65
--- /dev/null
+++ b/date-fns/src/fp/getYear/index.js.flow
@@ -0,0 +1,54 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+declare module.exports: CurriedFn1<Date | number, number>
diff --git a/date-fns/src/fp/hoursToMilliseconds/index.d.ts b/date-fns/src/fp/hoursToMilliseconds/index.d.ts
new file mode 100644
index 0000000..14caeac
--- /dev/null
+++ b/date-fns/src/fp/hoursToMilliseconds/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { hoursToMilliseconds } from 'date-fns/fp'
+export default hoursToMilliseconds
diff --git a/date-fns/src/fp/hoursToMilliseconds/index.js b/date-fns/src/fp/hoursToMilliseconds/index.js
new file mode 100644
index 0000000..103efa8
--- /dev/null
+++ b/date-fns/src/fp/hoursToMilliseconds/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../hoursToMilliseconds/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var hoursToMilliseconds = convertToFP(fn, 1)
+
+export default hoursToMilliseconds
diff --git a/date-fns/src/fp/hoursToMilliseconds/index.js.flow b/date-fns/src/fp/hoursToMilliseconds/index.js.flow
new file mode 100644
index 0000000..aa51b5f
--- /dev/null
+++ b/date-fns/src/fp/hoursToMilliseconds/index.js.flow
@@ -0,0 +1,54 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+declare module.exports: CurriedFn1<number, number>
diff --git a/date-fns/src/fp/hoursToMinutes/index.d.ts b/date-fns/src/fp/hoursToMinutes/index.d.ts
new file mode 100644
index 0000000..e834de4
--- /dev/null
+++ b/date-fns/src/fp/hoursToMinutes/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { hoursToMinutes } from 'date-fns/fp'
+export default hoursToMinutes
diff --git a/date-fns/src/fp/hoursToMinutes/index.js b/date-fns/src/fp/hoursToMinutes/index.js
new file mode 100644
index 0000000..dd50115
--- /dev/null
+++ b/date-fns/src/fp/hoursToMinutes/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../hoursToMinutes/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var hoursToMinutes = convertToFP(fn, 1)
+
+export default hoursToMinutes
diff --git a/date-fns/src/fp/hoursToMinutes/index.js.flow b/date-fns/src/fp/hoursToMinutes/index.js.flow
new file mode 100644
index 0000000..aa51b5f
--- /dev/null
+++ b/date-fns/src/fp/hoursToMinutes/index.js.flow
@@ -0,0 +1,54 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+declare module.exports: CurriedFn1<number, number>
diff --git a/date-fns/src/fp/hoursToSeconds/index.d.ts b/date-fns/src/fp/hoursToSeconds/index.d.ts
new file mode 100644
index 0000000..35a5bfd
--- /dev/null
+++ b/date-fns/src/fp/hoursToSeconds/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { hoursToSeconds } from 'date-fns/fp'
+export default hoursToSeconds
diff --git a/date-fns/src/fp/hoursToSeconds/index.js b/date-fns/src/fp/hoursToSeconds/index.js
new file mode 100644
index 0000000..f24c47d
--- /dev/null
+++ b/date-fns/src/fp/hoursToSeconds/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../hoursToSeconds/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var hoursToSeconds = convertToFP(fn, 1)
+
+export default hoursToSeconds
diff --git a/date-fns/src/fp/hoursToSeconds/index.js.flow b/date-fns/src/fp/hoursToSeconds/index.js.flow
new file mode 100644
index 0000000..aa51b5f
--- /dev/null
+++ b/date-fns/src/fp/hoursToSeconds/index.js.flow
@@ -0,0 +1,54 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+declare module.exports: CurriedFn1<number, number>
diff --git a/date-fns/src/fp/index.js b/date-fns/src/fp/index.js
new file mode 100644
index 0000000..2caa61c
--- /dev/null
+++ b/date-fns/src/fp/index.js
@@ -0,0 +1,241 @@
+// This file is generated automatically by `scripts/build/indices.js`. Please, don't change it.
+
+export { default as add } from './add/index'
+export { default as addBusinessDays } from './addBusinessDays/index'
+export { default as addDays } from './addDays/index'
+export { default as addHours } from './addHours/index'
+export { default as addISOWeekYears } from './addISOWeekYears/index'
+export { default as addMilliseconds } from './addMilliseconds/index'
+export { default as addMinutes } from './addMinutes/index'
+export { default as addMonths } from './addMonths/index'
+export { default as addQuarters } from './addQuarters/index'
+export { default as addSeconds } from './addSeconds/index'
+export { default as addWeeks } from './addWeeks/index'
+export { default as addYears } from './addYears/index'
+export { default as areIntervalsOverlapping } from './areIntervalsOverlapping/index'
+export { default as areIntervalsOverlappingWithOptions } from './areIntervalsOverlappingWithOptions/index'
+export { default as closestIndexTo } from './closestIndexTo/index'
+export { default as closestTo } from './closestTo/index'
+export { default as compareAsc } from './compareAsc/index'
+export { default as compareDesc } from './compareDesc/index'
+export { default as daysToWeeks } from './daysToWeeks/index'
+export { default as differenceInBusinessDays } from './differenceInBusinessDays/index'
+export { default as differenceInCalendarDays } from './differenceInCalendarDays/index'
+export { default as differenceInCalendarISOWeekYears } from './differenceInCalendarISOWeekYears/index'
+export { default as differenceInCalendarISOWeeks } from './differenceInCalendarISOWeeks/index'
+export { default as differenceInCalendarMonths } from './differenceInCalendarMonths/index'
+export { default as differenceInCalendarQuarters } from './differenceInCalendarQuarters/index'
+export { default as differenceInCalendarWeeks } from './differenceInCalendarWeeks/index'
+export { default as differenceInCalendarWeeksWithOptions } from './differenceInCalendarWeeksWithOptions/index'
+export { default as differenceInCalendarYears } from './differenceInCalendarYears/index'
+export { default as differenceInDays } from './differenceInDays/index'
+export { default as differenceInHours } from './differenceInHours/index'
+export { default as differenceInISOWeekYears } from './differenceInISOWeekYears/index'
+export { default as differenceInMilliseconds } from './differenceInMilliseconds/index'
+export { default as differenceInMinutes } from './differenceInMinutes/index'
+export { default as differenceInMonths } from './differenceInMonths/index'
+export { default as differenceInQuarters } from './differenceInQuarters/index'
+export { default as differenceInSeconds } from './differenceInSeconds/index'
+export { default as differenceInWeeks } from './differenceInWeeks/index'
+export { default as differenceInYears } from './differenceInYears/index'
+export { default as eachDayOfInterval } from './eachDayOfInterval/index'
+export { default as eachDayOfIntervalWithOptions } from './eachDayOfIntervalWithOptions/index'
+export { default as eachHourOfInterval } from './eachHourOfInterval/index'
+export { default as eachHourOfIntervalWithOptions } from './eachHourOfIntervalWithOptions/index'
+export { default as eachMinuteOfInterval } from './eachMinuteOfInterval/index'
+export { default as eachMinuteOfIntervalWithOptions } from './eachMinuteOfIntervalWithOptions/index'
+export { default as eachMonthOfInterval } from './eachMonthOfInterval/index'
+export { default as eachQuarterOfInterval } from './eachQuarterOfInterval/index'
+export { default as eachWeekOfInterval } from './eachWeekOfInterval/index'
+export { default as eachWeekOfIntervalWithOptions } from './eachWeekOfIntervalWithOptions/index'
+export { default as eachWeekendOfInterval } from './eachWeekendOfInterval/index'
+export { default as eachWeekendOfMonth } from './eachWeekendOfMonth/index'
+export { default as eachWeekendOfYear } from './eachWeekendOfYear/index'
+export { default as eachYearOfInterval } from './eachYearOfInterval/index'
+export { default as endOfDay } from './endOfDay/index'
+export { default as endOfDecade } from './endOfDecade/index'
+export { default as endOfDecadeWithOptions } from './endOfDecadeWithOptions/index'
+export { default as endOfHour } from './endOfHour/index'
+export { default as endOfISOWeek } from './endOfISOWeek/index'
+export { default as endOfISOWeekYear } from './endOfISOWeekYear/index'
+export { default as endOfMinute } from './endOfMinute/index'
+export { default as endOfMonth } from './endOfMonth/index'
+export { default as endOfQuarter } from './endOfQuarter/index'
+export { default as endOfSecond } from './endOfSecond/index'
+export { default as endOfWeek } from './endOfWeek/index'
+export { default as endOfWeekWithOptions } from './endOfWeekWithOptions/index'
+export { default as endOfYear } from './endOfYear/index'
+export { default as format } from './format/index'
+export { default as formatDistance } from './formatDistance/index'
+export { default as formatDistanceStrict } from './formatDistanceStrict/index'
+export { default as formatDistanceStrictWithOptions } from './formatDistanceStrictWithOptions/index'
+export { default as formatDistanceWithOptions } from './formatDistanceWithOptions/index'
+export { default as formatDuration } from './formatDuration/index'
+export { default as formatDurationWithOptions } from './formatDurationWithOptions/index'
+export { default as formatISO } from './formatISO/index'
+export { default as formatISO9075 } from './formatISO9075/index'
+export { default as formatISO9075WithOptions } from './formatISO9075WithOptions/index'
+export { default as formatISODuration } from './formatISODuration/index'
+export { default as formatISOWithOptions } from './formatISOWithOptions/index'
+export { default as formatRFC3339 } from './formatRFC3339/index'
+export { default as formatRFC3339WithOptions } from './formatRFC3339WithOptions/index'
+export { default as formatRFC7231 } from './formatRFC7231/index'
+export { default as formatRelative } from './formatRelative/index'
+export { default as formatRelativeWithOptions } from './formatRelativeWithOptions/index'
+export { default as formatWithOptions } from './formatWithOptions/index'
+export { default as fromUnixTime } from './fromUnixTime/index'
+export { default as getDate } from './getDate/index'
+export { default as getDay } from './getDay/index'
+export { default as getDayOfYear } from './getDayOfYear/index'
+export { default as getDaysInMonth } from './getDaysInMonth/index'
+export { default as getDaysInYear } from './getDaysInYear/index'
+export { default as getDecade } from './getDecade/index'
+export { default as getHours } from './getHours/index'
+export { default as getISODay } from './getISODay/index'
+export { default as getISOWeek } from './getISOWeek/index'
+export { default as getISOWeekYear } from './getISOWeekYear/index'
+export { default as getISOWeeksInYear } from './getISOWeeksInYear/index'
+export { default as getMilliseconds } from './getMilliseconds/index'
+export { default as getMinutes } from './getMinutes/index'
+export { default as getMonth } from './getMonth/index'
+export { default as getOverlappingDaysInIntervals } from './getOverlappingDaysInIntervals/index'
+export { default as getQuarter } from './getQuarter/index'
+export { default as getSeconds } from './getSeconds/index'
+export { default as getTime } from './getTime/index'
+export { default as getUnixTime } from './getUnixTime/index'
+export { default as getWeek } from './getWeek/index'
+export { default as getWeekOfMonth } from './getWeekOfMonth/index'
+export { default as getWeekOfMonthWithOptions } from './getWeekOfMonthWithOptions/index'
+export { default as getWeekWithOptions } from './getWeekWithOptions/index'
+export { default as getWeekYear } from './getWeekYear/index'
+export { default as getWeekYearWithOptions } from './getWeekYearWithOptions/index'
+export { default as getWeeksInMonth } from './getWeeksInMonth/index'
+export { default as getWeeksInMonthWithOptions } from './getWeeksInMonthWithOptions/index'
+export { default as getYear } from './getYear/index'
+export { default as hoursToMilliseconds } from './hoursToMilliseconds/index'
+export { default as hoursToMinutes } from './hoursToMinutes/index'
+export { default as hoursToSeconds } from './hoursToSeconds/index'
+export { default as intervalToDuration } from './intervalToDuration/index'
+export { default as intlFormat } from './intlFormat/index'
+export { default as isAfter } from './isAfter/index'
+export { default as isBefore } from './isBefore/index'
+export { default as isDate } from './isDate/index'
+export { default as isEqual } from './isEqual/index'
+export { default as isExists } from './isExists/index'
+export { default as isFirstDayOfMonth } from './isFirstDayOfMonth/index'
+export { default as isFriday } from './isFriday/index'
+export { default as isLastDayOfMonth } from './isLastDayOfMonth/index'
+export { default as isLeapYear } from './isLeapYear/index'
+export { default as isMatch } from './isMatch/index'
+export { default as isMatchWithOptions } from './isMatchWithOptions/index'
+export { default as isMonday } from './isMonday/index'
+export { default as isSameDay } from './isSameDay/index'
+export { default as isSameHour } from './isSameHour/index'
+export { default as isSameISOWeek } from './isSameISOWeek/index'
+export { default as isSameISOWeekYear } from './isSameISOWeekYear/index'
+export { default as isSameMinute } from './isSameMinute/index'
+export { default as isSameMonth } from './isSameMonth/index'
+export { default as isSameQuarter } from './isSameQuarter/index'
+export { default as isSameSecond } from './isSameSecond/index'
+export { default as isSameWeek } from './isSameWeek/index'
+export { default as isSameWeekWithOptions } from './isSameWeekWithOptions/index'
+export { default as isSameYear } from './isSameYear/index'
+export { default as isSaturday } from './isSaturday/index'
+export { default as isSunday } from './isSunday/index'
+export { default as isThursday } from './isThursday/index'
+export { default as isTuesday } from './isTuesday/index'
+export { default as isValid } from './isValid/index'
+export { default as isWednesday } from './isWednesday/index'
+export { default as isWeekend } from './isWeekend/index'
+export { default as isWithinInterval } from './isWithinInterval/index'
+export { default as lastDayOfDecade } from './lastDayOfDecade/index'
+export { default as lastDayOfISOWeek } from './lastDayOfISOWeek/index'
+export { default as lastDayOfISOWeekYear } from './lastDayOfISOWeekYear/index'
+export { default as lastDayOfMonth } from './lastDayOfMonth/index'
+export { default as lastDayOfQuarter } from './lastDayOfQuarter/index'
+export { default as lastDayOfQuarterWithOptions } from './lastDayOfQuarterWithOptions/index'
+export { default as lastDayOfWeek } from './lastDayOfWeek/index'
+export { default as lastDayOfWeekWithOptions } from './lastDayOfWeekWithOptions/index'
+export { default as lastDayOfYear } from './lastDayOfYear/index'
+export { default as lightFormat } from './lightFormat/index'
+export { default as max } from './max/index'
+export { default as milliseconds } from './milliseconds/index'
+export { default as millisecondsToHours } from './millisecondsToHours/index'
+export { default as millisecondsToMinutes } from './millisecondsToMinutes/index'
+export { default as millisecondsToSeconds } from './millisecondsToSeconds/index'
+export { default as min } from './min/index'
+export { default as minutesToHours } from './minutesToHours/index'
+export { default as minutesToMilliseconds } from './minutesToMilliseconds/index'
+export { default as minutesToSeconds } from './minutesToSeconds/index'
+export { default as monthsToQuarters } from './monthsToQuarters/index'
+export { default as monthsToYears } from './monthsToYears/index'
+export { default as nextDay } from './nextDay/index'
+export { default as nextFriday } from './nextFriday/index'
+export { default as nextMonday } from './nextMonday/index'
+export { default as nextSaturday } from './nextSaturday/index'
+export { default as nextSunday } from './nextSunday/index'
+export { default as nextThursday } from './nextThursday/index'
+export { default as nextTuesday } from './nextTuesday/index'
+export { default as nextWednesday } from './nextWednesday/index'
+export { default as parse } from './parse/index'
+export { default as parseISO } from './parseISO/index'
+export { default as parseISOWithOptions } from './parseISOWithOptions/index'
+export { default as parseJSON } from './parseJSON/index'
+export { default as parseWithOptions } from './parseWithOptions/index'
+export { default as quartersToMonths } from './quartersToMonths/index'
+export { default as quartersToYears } from './quartersToYears/index'
+export { default as roundToNearestMinutes } from './roundToNearestMinutes/index'
+export { default as roundToNearestMinutesWithOptions } from './roundToNearestMinutesWithOptions/index'
+export { default as secondsToHours } from './secondsToHours/index'
+export { default as secondsToMilliseconds } from './secondsToMilliseconds/index'
+export { default as secondsToMinutes } from './secondsToMinutes/index'
+export { default as set } from './set/index'
+export { default as setDate } from './setDate/index'
+export { default as setDay } from './setDay/index'
+export { default as setDayOfYear } from './setDayOfYear/index'
+export { default as setDayWithOptions } from './setDayWithOptions/index'
+export { default as setHours } from './setHours/index'
+export { default as setISODay } from './setISODay/index'
+export { default as setISOWeek } from './setISOWeek/index'
+export { default as setISOWeekYear } from './setISOWeekYear/index'
+export { default as setMilliseconds } from './setMilliseconds/index'
+export { default as setMinutes } from './setMinutes/index'
+export { default as setMonth } from './setMonth/index'
+export { default as setQuarter } from './setQuarter/index'
+export { default as setSeconds } from './setSeconds/index'
+export { default as setWeek } from './setWeek/index'
+export { default as setWeekWithOptions } from './setWeekWithOptions/index'
+export { default as setWeekYear } from './setWeekYear/index'
+export { default as setWeekYearWithOptions } from './setWeekYearWithOptions/index'
+export { default as setYear } from './setYear/index'
+export { default as startOfDay } from './startOfDay/index'
+export { default as startOfDecade } from './startOfDecade/index'
+export { default as startOfHour } from './startOfHour/index'
+export { default as startOfISOWeek } from './startOfISOWeek/index'
+export { default as startOfISOWeekYear } from './startOfISOWeekYear/index'
+export { default as startOfMinute } from './startOfMinute/index'
+export { default as startOfMonth } from './startOfMonth/index'
+export { default as startOfQuarter } from './startOfQuarter/index'
+export { default as startOfSecond } from './startOfSecond/index'
+export { default as startOfWeek } from './startOfWeek/index'
+export { default as startOfWeekWithOptions } from './startOfWeekWithOptions/index'
+export { default as startOfWeekYear } from './startOfWeekYear/index'
+export { default as startOfWeekYearWithOptions } from './startOfWeekYearWithOptions/index'
+export { default as startOfYear } from './startOfYear/index'
+export { default as sub } from './sub/index'
+export { default as subBusinessDays } from './subBusinessDays/index'
+export { default as subDays } from './subDays/index'
+export { default as subHours } from './subHours/index'
+export { default as subISOWeekYears } from './subISOWeekYears/index'
+export { default as subMilliseconds } from './subMilliseconds/index'
+export { default as subMinutes } from './subMinutes/index'
+export { default as subMonths } from './subMonths/index'
+export { default as subQuarters } from './subQuarters/index'
+export { default as subSeconds } from './subSeconds/index'
+export { default as subWeeks } from './subWeeks/index'
+export { default as subYears } from './subYears/index'
+export { default as toDate } from './toDate/index'
+export { default as weeksToDays } from './weeksToDays/index'
+export { default as yearsToMonths } from './yearsToMonths/index'
+export { default as yearsToQuarters } from './yearsToQuarters/index'
+export * from '../constants/index'
diff --git a/date-fns/src/fp/index.js.flow b/date-fns/src/fp/index.js.flow
new file mode 100644
index 0000000..1db8a1d
--- /dev/null
+++ b/date-fns/src/fp/index.js.flow
@@ -0,0 +1,625 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+type CurriedFn3<A, B, C, R> = <A>(
+ a: A
+) =>
+ | CurriedFn2<B, C, R>
+ | (<A, B>(
+ a: A,
+ b: B
+ ) => CurriedFn1<C, R> | (<A, B, C>(a: A, b: B, c: C) => R))
+
+type CurriedFn4<A, B, C, D, R> = <A>(
+ a: A
+) =>
+ | CurriedFn3<B, C, D, R>
+ | (<A, B>(
+ a: A,
+ b: B
+ ) =>
+ | CurriedFn2<C, D, R>
+ | (<A, B, C>(
+ a: A,
+ b: B,
+ c: C
+ ) => CurriedFn1<D, R> | (<A, B, C, D>(a: A, b: B, c: C, d: D) => R)))
+
+declare module.exports: {
+ add: CurriedFn2<Duration, Date | number, Date>,
+ addBusinessDays: CurriedFn2<number, Date | number, Date>,
+ addDays: CurriedFn2<number, Date | number, Date>,
+ addHours: CurriedFn2<number, Date | number, Date>,
+ addISOWeekYears: CurriedFn2<number, Date | number, Date>,
+ addMilliseconds: CurriedFn2<number, Date | number, Date>,
+ addMinutes: CurriedFn2<number, Date | number, Date>,
+ addMonths: CurriedFn2<number, Date | number, Date>,
+ addQuarters: CurriedFn2<number, Date | number, Date>,
+ addSeconds: CurriedFn2<number, Date | number, Date>,
+ addWeeks: CurriedFn2<number, Date | number, Date>,
+ addYears: CurriedFn2<number, Date | number, Date>,
+ areIntervalsOverlapping: CurriedFn2<Interval, Interval, boolean>,
+ areIntervalsOverlappingWithOptions: CurriedFn3<
+ {
+ inclusive?: boolean,
+ },
+ Interval,
+ Interval,
+ boolean
+ >,
+ closestIndexTo: CurriedFn2<(Date | number)[], Date | number, number>,
+ closestTo: CurriedFn2<(Date | number)[], Date | number, Date>,
+ compareAsc: CurriedFn2<Date | number, Date | number, number>,
+ compareDesc: CurriedFn2<Date | number, Date | number, number>,
+ daysToWeeks: CurriedFn1<number, number>,
+ differenceInBusinessDays: CurriedFn2<Date | number, Date | number, number>,
+ differenceInCalendarDays: CurriedFn2<Date | number, Date | number, number>,
+ differenceInCalendarISOWeeks: CurriedFn2<
+ Date | number,
+ Date | number,
+ number
+ >,
+ differenceInCalendarISOWeekYears: CurriedFn2<
+ Date | number,
+ Date | number,
+ number
+ >,
+ differenceInCalendarMonths: CurriedFn2<Date | number, Date | number, number>,
+ differenceInCalendarQuarters: CurriedFn2<
+ Date | number,
+ Date | number,
+ number
+ >,
+ differenceInCalendarWeeks: CurriedFn2<Date | number, Date | number, number>,
+ differenceInCalendarWeeksWithOptions: CurriedFn3<
+ {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ locale?: Locale,
+ },
+ Date | number,
+ Date | number,
+ number
+ >,
+ differenceInCalendarYears: CurriedFn2<Date | number, Date | number, number>,
+ differenceInDays: CurriedFn2<Date | number, Date | number, number>,
+ differenceInHours: CurriedFn2<Date | number, Date | number, number>,
+ differenceInISOWeekYears: CurriedFn2<Date | number, Date | number, number>,
+ differenceInMilliseconds: CurriedFn2<Date | number, Date | number, number>,
+ differenceInMinutes: CurriedFn2<Date | number, Date | number, number>,
+ differenceInMonths: CurriedFn2<Date | number, Date | number, number>,
+ differenceInQuarters: CurriedFn2<Date | number, Date | number, number>,
+ differenceInSeconds: CurriedFn2<Date | number, Date | number, number>,
+ differenceInWeeks: CurriedFn2<Date | number, Date | number, number>,
+ differenceInYears: CurriedFn2<Date | number, Date | number, number>,
+ eachDayOfInterval: CurriedFn1<Interval, Date[]>,
+ eachDayOfIntervalWithOptions: CurriedFn2<
+ {
+ step?: number,
+ },
+ Interval,
+ Date[]
+ >,
+ eachHourOfInterval: CurriedFn1<Interval, Date[]>,
+ eachHourOfIntervalWithOptions: CurriedFn2<
+ {
+ step?: number,
+ },
+ Interval,
+ Date[]
+ >,
+ eachMinuteOfInterval: CurriedFn1<Interval, Date[]>,
+ eachMinuteOfIntervalWithOptions: CurriedFn2<
+ {
+ step?: number,
+ },
+ Interval,
+ Date[]
+ >,
+ eachMonthOfInterval: CurriedFn1<Interval, Date[]>,
+ eachQuarterOfInterval: CurriedFn1<Interval, Date[]>,
+ eachWeekendOfInterval: CurriedFn1<Interval, Date[]>,
+ eachWeekendOfMonth: CurriedFn1<Date | number, Date[]>,
+ eachWeekendOfYear: CurriedFn1<Date | number, Date[]>,
+ eachWeekOfInterval: CurriedFn1<Interval, Date[]>,
+ eachWeekOfIntervalWithOptions: CurriedFn2<
+ {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ locale?: Locale,
+ },
+ Interval,
+ Date[]
+ >,
+ eachYearOfInterval: CurriedFn1<Interval, Date[]>,
+ endOfDay: CurriedFn1<Date | number, Date>,
+ endOfDecade: CurriedFn1<Date | number, Date>,
+ endOfDecadeWithOptions: CurriedFn2<
+ {
+ additionalDigits?: 0 | 1 | 2,
+ },
+ Date | number,
+ Date
+ >,
+ endOfHour: CurriedFn1<Date | number, Date>,
+ endOfISOWeek: CurriedFn1<Date | number, Date>,
+ endOfISOWeekYear: CurriedFn1<Date | number, Date>,
+ endOfMinute: CurriedFn1<Date | number, Date>,
+ endOfMonth: CurriedFn1<Date | number, Date>,
+ endOfQuarter: CurriedFn1<Date | number, Date>,
+ endOfSecond: CurriedFn1<Date | number, Date>,
+ endOfWeek: CurriedFn1<Date | number, Date>,
+ endOfWeekWithOptions: CurriedFn2<
+ {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ locale?: Locale,
+ },
+ Date | number,
+ Date
+ >,
+ endOfYear: CurriedFn1<Date | number, Date>,
+ format: CurriedFn2<string, Date | number, string>,
+ formatDistance: CurriedFn2<Date | number, Date | number, string>,
+ formatDistanceStrict: CurriedFn2<Date | number, Date | number, string>,
+ formatDistanceStrictWithOptions: CurriedFn3<
+ {
+ locale?: Locale,
+ roundingMethod?: 'floor' | 'ceil' | 'round',
+ unit?: 'second' | 'minute' | 'hour' | 'day' | 'month' | 'year',
+ addSuffix?: boolean,
+ },
+ Date | number,
+ Date | number,
+ string
+ >,
+ formatDistanceWithOptions: CurriedFn3<
+ {
+ locale?: Locale,
+ addSuffix?: boolean,
+ includeSeconds?: boolean,
+ },
+ Date | number,
+ Date | number,
+ string
+ >,
+ formatDuration: CurriedFn1<Duration, string>,
+ formatDurationWithOptions: CurriedFn2<
+ {
+ locale?: Locale,
+ delimiter?: string,
+ zero?: boolean,
+ format?: string[],
+ },
+ Duration,
+ string
+ >,
+ formatISO: CurriedFn1<Date | number, string>,
+ formatISO9075: CurriedFn1<Date | number, string>,
+ formatISO9075WithOptions: CurriedFn2<
+ {
+ representation?: 'complete' | 'date' | 'time',
+ format?: 'extended' | 'basic',
+ },
+ Date | number,
+ string
+ >,
+ formatISODuration: CurriedFn1<Duration, string>,
+ formatISOWithOptions: CurriedFn2<
+ {
+ representation?: 'complete' | 'date' | 'time',
+ format?: 'extended' | 'basic',
+ },
+ Date | number,
+ string
+ >,
+ formatRelative: CurriedFn2<Date | number, Date | number, string>,
+ formatRelativeWithOptions: CurriedFn3<
+ {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ locale?: Locale,
+ },
+ Date | number,
+ Date | number,
+ string
+ >,
+ formatRFC3339: CurriedFn1<Date | number, string>,
+ formatRFC3339WithOptions: CurriedFn2<
+ {
+ fractionDigits?: 0 | 1 | 2 | 3,
+ },
+ Date | number,
+ string
+ >,
+ formatRFC7231: CurriedFn1<Date | number, string>,
+ formatWithOptions: CurriedFn3<
+ {
+ useAdditionalDayOfYearTokens?: boolean,
+ useAdditionalWeekYearTokens?: boolean,
+ firstWeekContainsDate?: number,
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ locale?: Locale,
+ },
+ string,
+ Date | number,
+ string
+ >,
+ fromUnixTime: CurriedFn1<number, Date>,
+ getDate: CurriedFn1<Date | number, number>,
+ getDay: CurriedFn1<Date | number, 0 | 1 | 2 | 3 | 4 | 5 | 6>,
+ getDayOfYear: CurriedFn1<Date | number, number>,
+ getDaysInMonth: CurriedFn1<Date | number, number>,
+ getDaysInYear: CurriedFn1<Date | number, number>,
+ getDecade: CurriedFn1<Date | number, number>,
+ getHours: CurriedFn1<Date | number, number>,
+ getISODay: CurriedFn1<Date | number, number>,
+ getISOWeek: CurriedFn1<Date | number, number>,
+ getISOWeeksInYear: CurriedFn1<Date | number, number>,
+ getISOWeekYear: CurriedFn1<Date | number, number>,
+ getMilliseconds: CurriedFn1<Date | number, number>,
+ getMinutes: CurriedFn1<Date | number, number>,
+ getMonth: CurriedFn1<Date | number, number>,
+ getOverlappingDaysInIntervals: CurriedFn2<Interval, Interval, number>,
+ getQuarter: CurriedFn1<Date | number, number>,
+ getSeconds: CurriedFn1<Date | number, number>,
+ getTime: CurriedFn1<Date | number, number>,
+ getUnixTime: CurriedFn1<Date | number, number>,
+ getWeek: CurriedFn1<Date | number, number>,
+ getWeekOfMonth: CurriedFn1<Date | number, number>,
+ getWeekOfMonthWithOptions: CurriedFn2<
+ {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ locale?: Locale,
+ },
+ Date | number,
+ number
+ >,
+ getWeeksInMonth: CurriedFn1<Date | number, number>,
+ getWeeksInMonthWithOptions: CurriedFn2<
+ {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ locale?: Locale,
+ },
+ Date | number,
+ number
+ >,
+ getWeekWithOptions: CurriedFn2<
+ {
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ locale?: Locale,
+ },
+ Date | number,
+ number
+ >,
+ getWeekYear: CurriedFn1<Date | number, number>,
+ getWeekYearWithOptions: CurriedFn2<
+ {
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ locale?: Locale,
+ },
+ Date | number,
+ number
+ >,
+ getYear: CurriedFn1<Date | number, number>,
+ hoursToMilliseconds: CurriedFn1<number, number>,
+ hoursToMinutes: CurriedFn1<number, number>,
+ hoursToSeconds: CurriedFn1<number, number>,
+ intervalToDuration: CurriedFn1<Interval, Duration>,
+ intlFormat: CurriedFn3<
+ {
+ locale?: string | string[],
+ },
+ {
+ timeZone?: string,
+ hour12?: boolean,
+ formatMatcher?: 'basic' | 'best fit',
+ timeZoneName?: 'short' | 'long',
+ second?: 'numeric' | '2-digit',
+ minute?: 'numeric' | '2-digit',
+ hour?: 'numeric' | '2-digit',
+ day?: 'numeric' | '2-digit',
+ month?: 'numeric' | '2-digit' | 'narrow' | 'short' | 'long',
+ year?: 'numeric' | '2-digit',
+ era?: 'narrow' | 'short' | 'long',
+ weekday?: 'narrow' | 'short' | 'long',
+ localeMatcher?: 'lookup' | 'best fit',
+ },
+ Date | number,
+ string
+ >,
+ isAfter: CurriedFn2<Date | number, Date | number, boolean>,
+ isBefore: CurriedFn2<Date | number, Date | number, boolean>,
+ isDate: CurriedFn1<any, boolean>,
+ isEqual: CurriedFn2<Date | number, Date | number, boolean>,
+ isExists: CurriedFn3<number, number, number, boolean>,
+ isFirstDayOfMonth: CurriedFn1<Date | number, boolean>,
+ isFriday: CurriedFn1<Date | number, boolean>,
+ isLastDayOfMonth: CurriedFn1<Date | number, boolean>,
+ isLeapYear: CurriedFn1<Date | number, boolean>,
+ isMatch: CurriedFn2<string, string, boolean>,
+ isMatchWithOptions: CurriedFn3<
+ {
+ useAdditionalDayOfYearTokens?: boolean,
+ useAdditionalWeekYearTokens?: boolean,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ locale?: Locale,
+ },
+ string,
+ string,
+ boolean
+ >,
+ isMonday: CurriedFn1<Date | number, boolean>,
+ isSameDay: CurriedFn2<Date | number, Date | number, boolean>,
+ isSameHour: CurriedFn2<Date | number, Date | number, boolean>,
+ isSameISOWeek: CurriedFn2<Date | number, Date | number, boolean>,
+ isSameISOWeekYear: CurriedFn2<Date | number, Date | number, boolean>,
+ isSameMinute: CurriedFn2<Date | number, Date | number, boolean>,
+ isSameMonth: CurriedFn2<Date | number, Date | number, boolean>,
+ isSameQuarter: CurriedFn2<Date | number, Date | number, boolean>,
+ isSameSecond: CurriedFn2<Date | number, Date | number, boolean>,
+ isSameWeek: CurriedFn2<Date | number, Date | number, boolean>,
+ isSameWeekWithOptions: CurriedFn3<
+ {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ locale?: Locale,
+ },
+ Date | number,
+ Date | number,
+ boolean
+ >,
+ isSameYear: CurriedFn2<Date | number, Date | number, boolean>,
+ isSaturday: CurriedFn1<Date | number, boolean>,
+ isSunday: CurriedFn1<Date | number, boolean>,
+ isThursday: CurriedFn1<Date | number, boolean>,
+ isTuesday: CurriedFn1<Date | number, boolean>,
+ isValid: CurriedFn1<any, boolean>,
+ isWednesday: CurriedFn1<Date | number, boolean>,
+ isWeekend: CurriedFn1<Date | number, boolean>,
+ isWithinInterval: CurriedFn2<Interval, Date | number, boolean>,
+ lastDayOfDecade: CurriedFn1<Date | number, Date>,
+ lastDayOfISOWeek: CurriedFn1<Date | number, Date>,
+ lastDayOfISOWeekYear: CurriedFn1<Date | number, Date>,
+ lastDayOfMonth: CurriedFn1<Date | number, Date>,
+ lastDayOfQuarter: CurriedFn1<Date | number, Date>,
+ lastDayOfQuarterWithOptions: CurriedFn2<
+ {
+ additionalDigits?: 0 | 1 | 2,
+ },
+ Date | number,
+ Date
+ >,
+ lastDayOfWeek: CurriedFn1<Date | number, Date>,
+ lastDayOfWeekWithOptions: CurriedFn2<
+ {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ locale?: Locale,
+ },
+ Date | number,
+ Date
+ >,
+ lastDayOfYear: CurriedFn1<Date | number, Date>,
+ lightFormat: CurriedFn2<string, Date | number, string>,
+ max: CurriedFn1<(Date | number)[], Date>,
+ milliseconds: CurriedFn1<Duration, number>,
+ millisecondsToHours: CurriedFn1<number, number>,
+ millisecondsToMinutes: CurriedFn1<number, number>,
+ millisecondsToSeconds: CurriedFn1<number, number>,
+ min: CurriedFn1<(Date | number)[], Date>,
+ minutesToHours: CurriedFn1<number, number>,
+ minutesToMilliseconds: CurriedFn1<number, number>,
+ minutesToSeconds: CurriedFn1<number, number>,
+ monthsToQuarters: CurriedFn1<number, number>,
+ monthsToYears: CurriedFn1<number, number>,
+ nextDay: CurriedFn2<Day, Date | number, Date>,
+ nextFriday: CurriedFn1<Date | number, Date>,
+ nextMonday: CurriedFn1<Date | number, Date>,
+ nextSaturday: CurriedFn1<Date | number, Date>,
+ nextSunday: CurriedFn1<Date | number, Date>,
+ nextThursday: CurriedFn1<Date | number, Date>,
+ nextTuesday: CurriedFn1<Date | number, Date>,
+ nextWednesday: CurriedFn1<Date | number, Date>,
+ parse: CurriedFn3<Date | number, string, string, Date>,
+ parseISO: CurriedFn1<string, Date>,
+ parseISOWithOptions: CurriedFn2<
+ {
+ additionalDigits?: 0 | 1 | 2,
+ },
+ string,
+ Date
+ >,
+ parseJSON: CurriedFn1<string | number | Date, Date>,
+ parseWithOptions: CurriedFn4<
+ {
+ useAdditionalDayOfYearTokens?: boolean,
+ useAdditionalWeekYearTokens?: boolean,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ locale?: Locale,
+ },
+ Date | number,
+ string,
+ string,
+ Date
+ >,
+ quartersToMonths: CurriedFn1<number, number>,
+ quartersToYears: CurriedFn1<number, number>,
+ roundToNearestMinutes: CurriedFn1<Date | number, Date>,
+ roundToNearestMinutesWithOptions: CurriedFn2<
+ {
+ nearestTo?: number,
+ },
+ Date | number,
+ Date
+ >,
+ secondsToHours: CurriedFn1<number, number>,
+ secondsToMilliseconds: CurriedFn1<number, number>,
+ secondsToMinutes: CurriedFn1<number, number>,
+ set: CurriedFn2<
+ {
+ milliseconds?: number,
+ seconds?: number,
+ minutes?: number,
+ hours?: number,
+ date?: number,
+ month?: number,
+ year?: number,
+ },
+ Date | number,
+ Date
+ >,
+ setDate: CurriedFn2<number, Date | number, Date>,
+ setDay: CurriedFn2<number, Date | number, Date>,
+ setDayOfYear: CurriedFn2<number, Date | number, Date>,
+ setDayWithOptions: CurriedFn3<
+ {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ locale?: Locale,
+ },
+ number,
+ Date | number,
+ Date
+ >,
+ setHours: CurriedFn2<number, Date | number, Date>,
+ setISODay: CurriedFn2<number, Date | number, Date>,
+ setISOWeek: CurriedFn2<number, Date | number, Date>,
+ setISOWeekYear: CurriedFn2<number, Date | number, Date>,
+ setMilliseconds: CurriedFn2<number, Date | number, Date>,
+ setMinutes: CurriedFn2<number, Date | number, Date>,
+ setMonth: CurriedFn2<number, Date | number, Date>,
+ setQuarter: CurriedFn2<number, Date | number, Date>,
+ setSeconds: CurriedFn2<number, Date | number, Date>,
+ setWeek: CurriedFn2<number, Date | number, Date>,
+ setWeekWithOptions: CurriedFn3<
+ {
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ locale?: Locale,
+ },
+ number,
+ Date | number,
+ Date
+ >,
+ setWeekYear: CurriedFn2<number, Date | number, Date>,
+ setWeekYearWithOptions: CurriedFn3<
+ {
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ locale?: Locale,
+ },
+ number,
+ Date | number,
+ Date
+ >,
+ setYear: CurriedFn2<number, Date | number, Date>,
+ startOfDay: CurriedFn1<Date | number, Date>,
+ startOfDecade: CurriedFn1<Date | number, Date>,
+ startOfHour: CurriedFn1<Date | number, Date>,
+ startOfISOWeek: CurriedFn1<Date | number, Date>,
+ startOfISOWeekYear: CurriedFn1<Date | number, Date>,
+ startOfMinute: CurriedFn1<Date | number, Date>,
+ startOfMonth: CurriedFn1<Date | number, Date>,
+ startOfQuarter: CurriedFn1<Date | number, Date>,
+ startOfSecond: CurriedFn1<Date | number, Date>,
+ startOfWeek: CurriedFn1<Date | number, Date>,
+ startOfWeekWithOptions: CurriedFn2<
+ {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ locale?: Locale,
+ },
+ Date | number,
+ Date
+ >,
+ startOfWeekYear: CurriedFn1<Date | number, Date>,
+ startOfWeekYearWithOptions: CurriedFn2<
+ {
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ locale?: Locale,
+ },
+ Date | number,
+ Date
+ >,
+ startOfYear: CurriedFn1<Date | number, Date>,
+ sub: CurriedFn2<Duration, Date | number, Date>,
+ subBusinessDays: CurriedFn2<number, Date | number, Date>,
+ subDays: CurriedFn2<number, Date | number, Date>,
+ subHours: CurriedFn2<number, Date | number, Date>,
+ subISOWeekYears: CurriedFn2<number, Date | number, Date>,
+ subMilliseconds: CurriedFn2<number, Date | number, Date>,
+ subMinutes: CurriedFn2<number, Date | number, Date>,
+ subMonths: CurriedFn2<number, Date | number, Date>,
+ subQuarters: CurriedFn2<number, Date | number, Date>,
+ subSeconds: CurriedFn2<number, Date | number, Date>,
+ subWeeks: CurriedFn2<number, Date | number, Date>,
+ subYears: CurriedFn2<number, Date | number, Date>,
+ toDate: CurriedFn1<Date | number, Date>,
+ weeksToDays: CurriedFn1<number, number>,
+ yearsToMonths: CurriedFn1<number, number>,
+ yearsToQuarters: CurriedFn1<number, number>,
+ daysInWeek: number,
+ maxTime: number,
+ millisecondsInMinute: number,
+ millisecondsInHour: number,
+ millisecondsInSecond: number,
+ minTime: number,
+ minutesInHour: number,
+ monthsInQuarter: number,
+ monthsInYear: number,
+ quartersInYear: number,
+ secondsInHour: number,
+ secondsInMinute: number,
+}
diff --git a/date-fns/src/fp/intervalToDuration/index.d.ts b/date-fns/src/fp/intervalToDuration/index.d.ts
new file mode 100644
index 0000000..4b2381d
--- /dev/null
+++ b/date-fns/src/fp/intervalToDuration/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { intervalToDuration } from 'date-fns/fp'
+export default intervalToDuration
diff --git a/date-fns/src/fp/intervalToDuration/index.js b/date-fns/src/fp/intervalToDuration/index.js
new file mode 100644
index 0000000..d596acc
--- /dev/null
+++ b/date-fns/src/fp/intervalToDuration/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../intervalToDuration/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var intervalToDuration = convertToFP(fn, 1)
+
+export default intervalToDuration
diff --git a/date-fns/src/fp/intervalToDuration/index.js.flow b/date-fns/src/fp/intervalToDuration/index.js.flow
new file mode 100644
index 0000000..88f6ff0
--- /dev/null
+++ b/date-fns/src/fp/intervalToDuration/index.js.flow
@@ -0,0 +1,54 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+declare module.exports: CurriedFn1<Interval, Duration>
diff --git a/date-fns/src/fp/intlFormat/index.d.ts b/date-fns/src/fp/intlFormat/index.d.ts
new file mode 100644
index 0000000..38f78a7
--- /dev/null
+++ b/date-fns/src/fp/intlFormat/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { intlFormat } from 'date-fns/fp'
+export default intlFormat
diff --git a/date-fns/src/fp/intlFormat/index.js b/date-fns/src/fp/intlFormat/index.js
new file mode 100644
index 0000000..8bd9e7c
--- /dev/null
+++ b/date-fns/src/fp/intlFormat/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../intlFormat/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var intlFormat = convertToFP(fn, 3)
+
+export default intlFormat
diff --git a/date-fns/src/fp/intlFormat/index.js.flow b/date-fns/src/fp/intlFormat/index.js.flow
new file mode 100644
index 0000000..c104dcf
--- /dev/null
+++ b/date-fns/src/fp/intlFormat/index.js.flow
@@ -0,0 +1,88 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+type CurriedFn3<A, B, C, R> = <A>(
+ a: A
+) =>
+ | CurriedFn2<B, C, R>
+ | (<A, B>(
+ a: A,
+ b: B
+ ) => CurriedFn1<C, R> | (<A, B, C>(a: A, b: B, c: C) => R))
+
+declare module.exports: CurriedFn3<
+ {
+ locale?: string | string[],
+ },
+ {
+ timeZone?: string,
+ hour12?: boolean,
+ formatMatcher?: 'basic' | 'best fit',
+ timeZoneName?: 'short' | 'long',
+ second?: 'numeric' | '2-digit',
+ minute?: 'numeric' | '2-digit',
+ hour?: 'numeric' | '2-digit',
+ day?: 'numeric' | '2-digit',
+ month?: 'numeric' | '2-digit' | 'narrow' | 'short' | 'long',
+ year?: 'numeric' | '2-digit',
+ era?: 'narrow' | 'short' | 'long',
+ weekday?: 'narrow' | 'short' | 'long',
+ localeMatcher?: 'lookup' | 'best fit',
+ },
+ Date | number,
+ string
+>
diff --git a/date-fns/src/fp/isAfter/index.d.ts b/date-fns/src/fp/isAfter/index.d.ts
new file mode 100644
index 0000000..de8ba72
--- /dev/null
+++ b/date-fns/src/fp/isAfter/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { isAfter } from 'date-fns/fp'
+export default isAfter
diff --git a/date-fns/src/fp/isAfter/index.js b/date-fns/src/fp/isAfter/index.js
new file mode 100644
index 0000000..a754322
--- /dev/null
+++ b/date-fns/src/fp/isAfter/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../isAfter/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var isAfter = convertToFP(fn, 2)
+
+export default isAfter
diff --git a/date-fns/src/fp/isAfter/index.js.flow b/date-fns/src/fp/isAfter/index.js.flow
new file mode 100644
index 0000000..38638c4
--- /dev/null
+++ b/date-fns/src/fp/isAfter/index.js.flow
@@ -0,0 +1,58 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+declare module.exports: CurriedFn2<Date | number, Date | number, boolean>
diff --git a/date-fns/src/fp/isBefore/index.d.ts b/date-fns/src/fp/isBefore/index.d.ts
new file mode 100644
index 0000000..d289198
--- /dev/null
+++ b/date-fns/src/fp/isBefore/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { isBefore } from 'date-fns/fp'
+export default isBefore
diff --git a/date-fns/src/fp/isBefore/index.js b/date-fns/src/fp/isBefore/index.js
new file mode 100644
index 0000000..4b9ec17
--- /dev/null
+++ b/date-fns/src/fp/isBefore/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../isBefore/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var isBefore = convertToFP(fn, 2)
+
+export default isBefore
diff --git a/date-fns/src/fp/isBefore/index.js.flow b/date-fns/src/fp/isBefore/index.js.flow
new file mode 100644
index 0000000..38638c4
--- /dev/null
+++ b/date-fns/src/fp/isBefore/index.js.flow
@@ -0,0 +1,58 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+declare module.exports: CurriedFn2<Date | number, Date | number, boolean>
diff --git a/date-fns/src/fp/isDate/index.d.ts b/date-fns/src/fp/isDate/index.d.ts
new file mode 100644
index 0000000..6f120ce
--- /dev/null
+++ b/date-fns/src/fp/isDate/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { isDate } from 'date-fns/fp'
+export default isDate
diff --git a/date-fns/src/fp/isDate/index.js b/date-fns/src/fp/isDate/index.js
new file mode 100644
index 0000000..77f01e7
--- /dev/null
+++ b/date-fns/src/fp/isDate/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../isDate/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var isDate = convertToFP(fn, 1)
+
+export default isDate
diff --git a/date-fns/src/fp/isDate/index.js.flow b/date-fns/src/fp/isDate/index.js.flow
new file mode 100644
index 0000000..62e70e2
--- /dev/null
+++ b/date-fns/src/fp/isDate/index.js.flow
@@ -0,0 +1,54 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+declare module.exports: CurriedFn1<any, boolean>
diff --git a/date-fns/src/fp/isEqual/index.d.ts b/date-fns/src/fp/isEqual/index.d.ts
new file mode 100644
index 0000000..b21d398
--- /dev/null
+++ b/date-fns/src/fp/isEqual/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { isEqual } from 'date-fns/fp'
+export default isEqual
diff --git a/date-fns/src/fp/isEqual/index.js b/date-fns/src/fp/isEqual/index.js
new file mode 100644
index 0000000..bdc4dec
--- /dev/null
+++ b/date-fns/src/fp/isEqual/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../isEqual/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var isEqual = convertToFP(fn, 2)
+
+export default isEqual
diff --git a/date-fns/src/fp/isEqual/index.js.flow b/date-fns/src/fp/isEqual/index.js.flow
new file mode 100644
index 0000000..38638c4
--- /dev/null
+++ b/date-fns/src/fp/isEqual/index.js.flow
@@ -0,0 +1,58 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+declare module.exports: CurriedFn2<Date | number, Date | number, boolean>
diff --git a/date-fns/src/fp/isExists/index.d.ts b/date-fns/src/fp/isExists/index.d.ts
new file mode 100644
index 0000000..e4ccb78
--- /dev/null
+++ b/date-fns/src/fp/isExists/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { isExists } from 'date-fns/fp'
+export default isExists
diff --git a/date-fns/src/fp/isExists/index.js b/date-fns/src/fp/isExists/index.js
new file mode 100644
index 0000000..70789f2
--- /dev/null
+++ b/date-fns/src/fp/isExists/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../isExists/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var isExists = convertToFP(fn, 3)
+
+export default isExists
diff --git a/date-fns/src/fp/isExists/index.js.flow b/date-fns/src/fp/isExists/index.js.flow
new file mode 100644
index 0000000..2af9fe9
--- /dev/null
+++ b/date-fns/src/fp/isExists/index.js.flow
@@ -0,0 +1,67 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+type CurriedFn3<A, B, C, R> = <A>(
+ a: A
+) =>
+ | CurriedFn2<B, C, R>
+ | (<A, B>(
+ a: A,
+ b: B
+ ) => CurriedFn1<C, R> | (<A, B, C>(a: A, b: B, c: C) => R))
+
+declare module.exports: CurriedFn3<number, number, number, boolean>
diff --git a/date-fns/src/fp/isFirstDayOfMonth/index.d.ts b/date-fns/src/fp/isFirstDayOfMonth/index.d.ts
new file mode 100644
index 0000000..e097310
--- /dev/null
+++ b/date-fns/src/fp/isFirstDayOfMonth/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { isFirstDayOfMonth } from 'date-fns/fp'
+export default isFirstDayOfMonth
diff --git a/date-fns/src/fp/isFirstDayOfMonth/index.js b/date-fns/src/fp/isFirstDayOfMonth/index.js
new file mode 100644
index 0000000..84365f8
--- /dev/null
+++ b/date-fns/src/fp/isFirstDayOfMonth/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../isFirstDayOfMonth/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var isFirstDayOfMonth = convertToFP(fn, 1)
+
+export default isFirstDayOfMonth
diff --git a/date-fns/src/fp/isFirstDayOfMonth/index.js.flow b/date-fns/src/fp/isFirstDayOfMonth/index.js.flow
new file mode 100644
index 0000000..8f53be6
--- /dev/null
+++ b/date-fns/src/fp/isFirstDayOfMonth/index.js.flow
@@ -0,0 +1,54 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+declare module.exports: CurriedFn1<Date | number, boolean>
diff --git a/date-fns/src/fp/isFriday/index.d.ts b/date-fns/src/fp/isFriday/index.d.ts
new file mode 100644
index 0000000..cdab1b1
--- /dev/null
+++ b/date-fns/src/fp/isFriday/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { isFriday } from 'date-fns/fp'
+export default isFriday
diff --git a/date-fns/src/fp/isFriday/index.js b/date-fns/src/fp/isFriday/index.js
new file mode 100644
index 0000000..01314a7
--- /dev/null
+++ b/date-fns/src/fp/isFriday/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../isFriday/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var isFriday = convertToFP(fn, 1)
+
+export default isFriday
diff --git a/date-fns/src/fp/isFriday/index.js.flow b/date-fns/src/fp/isFriday/index.js.flow
new file mode 100644
index 0000000..8f53be6
--- /dev/null
+++ b/date-fns/src/fp/isFriday/index.js.flow
@@ -0,0 +1,54 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+declare module.exports: CurriedFn1<Date | number, boolean>
diff --git a/date-fns/src/fp/isLastDayOfMonth/index.d.ts b/date-fns/src/fp/isLastDayOfMonth/index.d.ts
new file mode 100644
index 0000000..33750f0
--- /dev/null
+++ b/date-fns/src/fp/isLastDayOfMonth/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { isLastDayOfMonth } from 'date-fns/fp'
+export default isLastDayOfMonth
diff --git a/date-fns/src/fp/isLastDayOfMonth/index.js b/date-fns/src/fp/isLastDayOfMonth/index.js
new file mode 100644
index 0000000..58bf400
--- /dev/null
+++ b/date-fns/src/fp/isLastDayOfMonth/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../isLastDayOfMonth/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var isLastDayOfMonth = convertToFP(fn, 1)
+
+export default isLastDayOfMonth
diff --git a/date-fns/src/fp/isLastDayOfMonth/index.js.flow b/date-fns/src/fp/isLastDayOfMonth/index.js.flow
new file mode 100644
index 0000000..8f53be6
--- /dev/null
+++ b/date-fns/src/fp/isLastDayOfMonth/index.js.flow
@@ -0,0 +1,54 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+declare module.exports: CurriedFn1<Date | number, boolean>
diff --git a/date-fns/src/fp/isLeapYear/index.d.ts b/date-fns/src/fp/isLeapYear/index.d.ts
new file mode 100644
index 0000000..c92bce3
--- /dev/null
+++ b/date-fns/src/fp/isLeapYear/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { isLeapYear } from 'date-fns/fp'
+export default isLeapYear
diff --git a/date-fns/src/fp/isLeapYear/index.js b/date-fns/src/fp/isLeapYear/index.js
new file mode 100644
index 0000000..babf413
--- /dev/null
+++ b/date-fns/src/fp/isLeapYear/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../isLeapYear/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var isLeapYear = convertToFP(fn, 1)
+
+export default isLeapYear
diff --git a/date-fns/src/fp/isLeapYear/index.js.flow b/date-fns/src/fp/isLeapYear/index.js.flow
new file mode 100644
index 0000000..8f53be6
--- /dev/null
+++ b/date-fns/src/fp/isLeapYear/index.js.flow
@@ -0,0 +1,54 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+declare module.exports: CurriedFn1<Date | number, boolean>
diff --git a/date-fns/src/fp/isMatch/index.d.ts b/date-fns/src/fp/isMatch/index.d.ts
new file mode 100644
index 0000000..5085afa
--- /dev/null
+++ b/date-fns/src/fp/isMatch/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { isMatch } from 'date-fns/fp'
+export default isMatch
diff --git a/date-fns/src/fp/isMatch/index.js b/date-fns/src/fp/isMatch/index.js
new file mode 100644
index 0000000..95e8e25
--- /dev/null
+++ b/date-fns/src/fp/isMatch/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../isMatch/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var isMatch = convertToFP(fn, 2)
+
+export default isMatch
diff --git a/date-fns/src/fp/isMatch/index.js.flow b/date-fns/src/fp/isMatch/index.js.flow
new file mode 100644
index 0000000..9eb7ae0
--- /dev/null
+++ b/date-fns/src/fp/isMatch/index.js.flow
@@ -0,0 +1,58 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+declare module.exports: CurriedFn2<string, string, boolean>
diff --git a/date-fns/src/fp/isMatchWithOptions/index.d.ts b/date-fns/src/fp/isMatchWithOptions/index.d.ts
new file mode 100644
index 0000000..4645250
--- /dev/null
+++ b/date-fns/src/fp/isMatchWithOptions/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { isMatchWithOptions } from 'date-fns/fp'
+export default isMatchWithOptions
diff --git a/date-fns/src/fp/isMatchWithOptions/index.js b/date-fns/src/fp/isMatchWithOptions/index.js
new file mode 100644
index 0000000..a894b20
--- /dev/null
+++ b/date-fns/src/fp/isMatchWithOptions/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../isMatch/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var isMatchWithOptions = convertToFP(fn, 3)
+
+export default isMatchWithOptions
diff --git a/date-fns/src/fp/isMatchWithOptions/index.js.flow b/date-fns/src/fp/isMatchWithOptions/index.js.flow
new file mode 100644
index 0000000..5b2b869
--- /dev/null
+++ b/date-fns/src/fp/isMatchWithOptions/index.js.flow
@@ -0,0 +1,78 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+type CurriedFn3<A, B, C, R> = <A>(
+ a: A
+) =>
+ | CurriedFn2<B, C, R>
+ | (<A, B>(
+ a: A,
+ b: B
+ ) => CurriedFn1<C, R> | (<A, B, C>(a: A, b: B, c: C) => R))
+
+declare module.exports: CurriedFn3<
+ {
+ useAdditionalDayOfYearTokens?: boolean,
+ useAdditionalWeekYearTokens?: boolean,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ locale?: Locale,
+ },
+ string,
+ string,
+ boolean
+>
diff --git a/date-fns/src/fp/isMonday/index.d.ts b/date-fns/src/fp/isMonday/index.d.ts
new file mode 100644
index 0000000..550bbb0
--- /dev/null
+++ b/date-fns/src/fp/isMonday/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { isMonday } from 'date-fns/fp'
+export default isMonday
diff --git a/date-fns/src/fp/isMonday/index.js b/date-fns/src/fp/isMonday/index.js
new file mode 100644
index 0000000..e801cce
--- /dev/null
+++ b/date-fns/src/fp/isMonday/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../isMonday/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var isMonday = convertToFP(fn, 1)
+
+export default isMonday
diff --git a/date-fns/src/fp/isMonday/index.js.flow b/date-fns/src/fp/isMonday/index.js.flow
new file mode 100644
index 0000000..8f53be6
--- /dev/null
+++ b/date-fns/src/fp/isMonday/index.js.flow
@@ -0,0 +1,54 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+declare module.exports: CurriedFn1<Date | number, boolean>
diff --git a/date-fns/src/fp/isSameDay/index.d.ts b/date-fns/src/fp/isSameDay/index.d.ts
new file mode 100644
index 0000000..d7c74c7
--- /dev/null
+++ b/date-fns/src/fp/isSameDay/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { isSameDay } from 'date-fns/fp'
+export default isSameDay
diff --git a/date-fns/src/fp/isSameDay/index.js b/date-fns/src/fp/isSameDay/index.js
new file mode 100644
index 0000000..cefc370
--- /dev/null
+++ b/date-fns/src/fp/isSameDay/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../isSameDay/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var isSameDay = convertToFP(fn, 2)
+
+export default isSameDay
diff --git a/date-fns/src/fp/isSameDay/index.js.flow b/date-fns/src/fp/isSameDay/index.js.flow
new file mode 100644
index 0000000..38638c4
--- /dev/null
+++ b/date-fns/src/fp/isSameDay/index.js.flow
@@ -0,0 +1,58 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+declare module.exports: CurriedFn2<Date | number, Date | number, boolean>
diff --git a/date-fns/src/fp/isSameHour/index.d.ts b/date-fns/src/fp/isSameHour/index.d.ts
new file mode 100644
index 0000000..ff4dacb
--- /dev/null
+++ b/date-fns/src/fp/isSameHour/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { isSameHour } from 'date-fns/fp'
+export default isSameHour
diff --git a/date-fns/src/fp/isSameHour/index.js b/date-fns/src/fp/isSameHour/index.js
new file mode 100644
index 0000000..5412fb3
--- /dev/null
+++ b/date-fns/src/fp/isSameHour/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../isSameHour/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var isSameHour = convertToFP(fn, 2)
+
+export default isSameHour
diff --git a/date-fns/src/fp/isSameHour/index.js.flow b/date-fns/src/fp/isSameHour/index.js.flow
new file mode 100644
index 0000000..38638c4
--- /dev/null
+++ b/date-fns/src/fp/isSameHour/index.js.flow
@@ -0,0 +1,58 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+declare module.exports: CurriedFn2<Date | number, Date | number, boolean>
diff --git a/date-fns/src/fp/isSameISOWeek/index.d.ts b/date-fns/src/fp/isSameISOWeek/index.d.ts
new file mode 100644
index 0000000..41c5426
--- /dev/null
+++ b/date-fns/src/fp/isSameISOWeek/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { isSameISOWeek } from 'date-fns/fp'
+export default isSameISOWeek
diff --git a/date-fns/src/fp/isSameISOWeek/index.js b/date-fns/src/fp/isSameISOWeek/index.js
new file mode 100644
index 0000000..5d80c9c
--- /dev/null
+++ b/date-fns/src/fp/isSameISOWeek/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../isSameISOWeek/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var isSameISOWeek = convertToFP(fn, 2)
+
+export default isSameISOWeek
diff --git a/date-fns/src/fp/isSameISOWeek/index.js.flow b/date-fns/src/fp/isSameISOWeek/index.js.flow
new file mode 100644
index 0000000..38638c4
--- /dev/null
+++ b/date-fns/src/fp/isSameISOWeek/index.js.flow
@@ -0,0 +1,58 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+declare module.exports: CurriedFn2<Date | number, Date | number, boolean>
diff --git a/date-fns/src/fp/isSameISOWeekYear/index.d.ts b/date-fns/src/fp/isSameISOWeekYear/index.d.ts
new file mode 100644
index 0000000..f9f65c0
--- /dev/null
+++ b/date-fns/src/fp/isSameISOWeekYear/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { isSameISOWeekYear } from 'date-fns/fp'
+export default isSameISOWeekYear
diff --git a/date-fns/src/fp/isSameISOWeekYear/index.js b/date-fns/src/fp/isSameISOWeekYear/index.js
new file mode 100644
index 0000000..0a14d31
--- /dev/null
+++ b/date-fns/src/fp/isSameISOWeekYear/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../isSameISOWeekYear/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var isSameISOWeekYear = convertToFP(fn, 2)
+
+export default isSameISOWeekYear
diff --git a/date-fns/src/fp/isSameISOWeekYear/index.js.flow b/date-fns/src/fp/isSameISOWeekYear/index.js.flow
new file mode 100644
index 0000000..38638c4
--- /dev/null
+++ b/date-fns/src/fp/isSameISOWeekYear/index.js.flow
@@ -0,0 +1,58 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+declare module.exports: CurriedFn2<Date | number, Date | number, boolean>
diff --git a/date-fns/src/fp/isSameMinute/index.d.ts b/date-fns/src/fp/isSameMinute/index.d.ts
new file mode 100644
index 0000000..b19be2a
--- /dev/null
+++ b/date-fns/src/fp/isSameMinute/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { isSameMinute } from 'date-fns/fp'
+export default isSameMinute
diff --git a/date-fns/src/fp/isSameMinute/index.js b/date-fns/src/fp/isSameMinute/index.js
new file mode 100644
index 0000000..f664f96
--- /dev/null
+++ b/date-fns/src/fp/isSameMinute/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../isSameMinute/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var isSameMinute = convertToFP(fn, 2)
+
+export default isSameMinute
diff --git a/date-fns/src/fp/isSameMinute/index.js.flow b/date-fns/src/fp/isSameMinute/index.js.flow
new file mode 100644
index 0000000..38638c4
--- /dev/null
+++ b/date-fns/src/fp/isSameMinute/index.js.flow
@@ -0,0 +1,58 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+declare module.exports: CurriedFn2<Date | number, Date | number, boolean>
diff --git a/date-fns/src/fp/isSameMonth/index.d.ts b/date-fns/src/fp/isSameMonth/index.d.ts
new file mode 100644
index 0000000..1c29c87
--- /dev/null
+++ b/date-fns/src/fp/isSameMonth/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { isSameMonth } from 'date-fns/fp'
+export default isSameMonth
diff --git a/date-fns/src/fp/isSameMonth/index.js b/date-fns/src/fp/isSameMonth/index.js
new file mode 100644
index 0000000..0479c45
--- /dev/null
+++ b/date-fns/src/fp/isSameMonth/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../isSameMonth/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var isSameMonth = convertToFP(fn, 2)
+
+export default isSameMonth
diff --git a/date-fns/src/fp/isSameMonth/index.js.flow b/date-fns/src/fp/isSameMonth/index.js.flow
new file mode 100644
index 0000000..38638c4
--- /dev/null
+++ b/date-fns/src/fp/isSameMonth/index.js.flow
@@ -0,0 +1,58 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+declare module.exports: CurriedFn2<Date | number, Date | number, boolean>
diff --git a/date-fns/src/fp/isSameQuarter/index.d.ts b/date-fns/src/fp/isSameQuarter/index.d.ts
new file mode 100644
index 0000000..6fe36a5
--- /dev/null
+++ b/date-fns/src/fp/isSameQuarter/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { isSameQuarter } from 'date-fns/fp'
+export default isSameQuarter
diff --git a/date-fns/src/fp/isSameQuarter/index.js b/date-fns/src/fp/isSameQuarter/index.js
new file mode 100644
index 0000000..1fcb783
--- /dev/null
+++ b/date-fns/src/fp/isSameQuarter/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../isSameQuarter/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var isSameQuarter = convertToFP(fn, 2)
+
+export default isSameQuarter
diff --git a/date-fns/src/fp/isSameQuarter/index.js.flow b/date-fns/src/fp/isSameQuarter/index.js.flow
new file mode 100644
index 0000000..38638c4
--- /dev/null
+++ b/date-fns/src/fp/isSameQuarter/index.js.flow
@@ -0,0 +1,58 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+declare module.exports: CurriedFn2<Date | number, Date | number, boolean>
diff --git a/date-fns/src/fp/isSameSecond/index.d.ts b/date-fns/src/fp/isSameSecond/index.d.ts
new file mode 100644
index 0000000..b65413a
--- /dev/null
+++ b/date-fns/src/fp/isSameSecond/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { isSameSecond } from 'date-fns/fp'
+export default isSameSecond
diff --git a/date-fns/src/fp/isSameSecond/index.js b/date-fns/src/fp/isSameSecond/index.js
new file mode 100644
index 0000000..976a012
--- /dev/null
+++ b/date-fns/src/fp/isSameSecond/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../isSameSecond/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var isSameSecond = convertToFP(fn, 2)
+
+export default isSameSecond
diff --git a/date-fns/src/fp/isSameSecond/index.js.flow b/date-fns/src/fp/isSameSecond/index.js.flow
new file mode 100644
index 0000000..38638c4
--- /dev/null
+++ b/date-fns/src/fp/isSameSecond/index.js.flow
@@ -0,0 +1,58 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+declare module.exports: CurriedFn2<Date | number, Date | number, boolean>
diff --git a/date-fns/src/fp/isSameWeek/index.d.ts b/date-fns/src/fp/isSameWeek/index.d.ts
new file mode 100644
index 0000000..e6b37fa
--- /dev/null
+++ b/date-fns/src/fp/isSameWeek/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { isSameWeek } from 'date-fns/fp'
+export default isSameWeek
diff --git a/date-fns/src/fp/isSameWeek/index.js b/date-fns/src/fp/isSameWeek/index.js
new file mode 100644
index 0000000..043f63e
--- /dev/null
+++ b/date-fns/src/fp/isSameWeek/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../isSameWeek/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var isSameWeek = convertToFP(fn, 2)
+
+export default isSameWeek
diff --git a/date-fns/src/fp/isSameWeek/index.js.flow b/date-fns/src/fp/isSameWeek/index.js.flow
new file mode 100644
index 0000000..38638c4
--- /dev/null
+++ b/date-fns/src/fp/isSameWeek/index.js.flow
@@ -0,0 +1,58 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+declare module.exports: CurriedFn2<Date | number, Date | number, boolean>
diff --git a/date-fns/src/fp/isSameWeekWithOptions/index.d.ts b/date-fns/src/fp/isSameWeekWithOptions/index.d.ts
new file mode 100644
index 0000000..240b654
--- /dev/null
+++ b/date-fns/src/fp/isSameWeekWithOptions/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { isSameWeekWithOptions } from 'date-fns/fp'
+export default isSameWeekWithOptions
diff --git a/date-fns/src/fp/isSameWeekWithOptions/index.js b/date-fns/src/fp/isSameWeekWithOptions/index.js
new file mode 100644
index 0000000..a05210f
--- /dev/null
+++ b/date-fns/src/fp/isSameWeekWithOptions/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../isSameWeek/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var isSameWeekWithOptions = convertToFP(fn, 3)
+
+export default isSameWeekWithOptions
diff --git a/date-fns/src/fp/isSameWeekWithOptions/index.js.flow b/date-fns/src/fp/isSameWeekWithOptions/index.js.flow
new file mode 100644
index 0000000..154b894
--- /dev/null
+++ b/date-fns/src/fp/isSameWeekWithOptions/index.js.flow
@@ -0,0 +1,75 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+type CurriedFn3<A, B, C, R> = <A>(
+ a: A
+) =>
+ | CurriedFn2<B, C, R>
+ | (<A, B>(
+ a: A,
+ b: B
+ ) => CurriedFn1<C, R> | (<A, B, C>(a: A, b: B, c: C) => R))
+
+declare module.exports: CurriedFn3<
+ {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ locale?: Locale,
+ },
+ Date | number,
+ Date | number,
+ boolean
+>
diff --git a/date-fns/src/fp/isSameYear/index.d.ts b/date-fns/src/fp/isSameYear/index.d.ts
new file mode 100644
index 0000000..da9db07
--- /dev/null
+++ b/date-fns/src/fp/isSameYear/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { isSameYear } from 'date-fns/fp'
+export default isSameYear
diff --git a/date-fns/src/fp/isSameYear/index.js b/date-fns/src/fp/isSameYear/index.js
new file mode 100644
index 0000000..06b5ec4
--- /dev/null
+++ b/date-fns/src/fp/isSameYear/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../isSameYear/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var isSameYear = convertToFP(fn, 2)
+
+export default isSameYear
diff --git a/date-fns/src/fp/isSameYear/index.js.flow b/date-fns/src/fp/isSameYear/index.js.flow
new file mode 100644
index 0000000..38638c4
--- /dev/null
+++ b/date-fns/src/fp/isSameYear/index.js.flow
@@ -0,0 +1,58 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+declare module.exports: CurriedFn2<Date | number, Date | number, boolean>
diff --git a/date-fns/src/fp/isSaturday/index.d.ts b/date-fns/src/fp/isSaturday/index.d.ts
new file mode 100644
index 0000000..d6c100a
--- /dev/null
+++ b/date-fns/src/fp/isSaturday/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { isSaturday } from 'date-fns/fp'
+export default isSaturday
diff --git a/date-fns/src/fp/isSaturday/index.js b/date-fns/src/fp/isSaturday/index.js
new file mode 100644
index 0000000..7fb3394
--- /dev/null
+++ b/date-fns/src/fp/isSaturday/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../isSaturday/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var isSaturday = convertToFP(fn, 1)
+
+export default isSaturday
diff --git a/date-fns/src/fp/isSaturday/index.js.flow b/date-fns/src/fp/isSaturday/index.js.flow
new file mode 100644
index 0000000..8f53be6
--- /dev/null
+++ b/date-fns/src/fp/isSaturday/index.js.flow
@@ -0,0 +1,54 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+declare module.exports: CurriedFn1<Date | number, boolean>
diff --git a/date-fns/src/fp/isSunday/index.d.ts b/date-fns/src/fp/isSunday/index.d.ts
new file mode 100644
index 0000000..d5ff84f
--- /dev/null
+++ b/date-fns/src/fp/isSunday/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { isSunday } from 'date-fns/fp'
+export default isSunday
diff --git a/date-fns/src/fp/isSunday/index.js b/date-fns/src/fp/isSunday/index.js
new file mode 100644
index 0000000..b37f29f
--- /dev/null
+++ b/date-fns/src/fp/isSunday/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../isSunday/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var isSunday = convertToFP(fn, 1)
+
+export default isSunday
diff --git a/date-fns/src/fp/isSunday/index.js.flow b/date-fns/src/fp/isSunday/index.js.flow
new file mode 100644
index 0000000..8f53be6
--- /dev/null
+++ b/date-fns/src/fp/isSunday/index.js.flow
@@ -0,0 +1,54 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+declare module.exports: CurriedFn1<Date | number, boolean>
diff --git a/date-fns/src/fp/isThursday/index.d.ts b/date-fns/src/fp/isThursday/index.d.ts
new file mode 100644
index 0000000..5f7c57c
--- /dev/null
+++ b/date-fns/src/fp/isThursday/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { isThursday } from 'date-fns/fp'
+export default isThursday
diff --git a/date-fns/src/fp/isThursday/index.js b/date-fns/src/fp/isThursday/index.js
new file mode 100644
index 0000000..d5c87d1
--- /dev/null
+++ b/date-fns/src/fp/isThursday/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../isThursday/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var isThursday = convertToFP(fn, 1)
+
+export default isThursday
diff --git a/date-fns/src/fp/isThursday/index.js.flow b/date-fns/src/fp/isThursday/index.js.flow
new file mode 100644
index 0000000..8f53be6
--- /dev/null
+++ b/date-fns/src/fp/isThursday/index.js.flow
@@ -0,0 +1,54 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+declare module.exports: CurriedFn1<Date | number, boolean>
diff --git a/date-fns/src/fp/isTuesday/index.d.ts b/date-fns/src/fp/isTuesday/index.d.ts
new file mode 100644
index 0000000..3a652b6
--- /dev/null
+++ b/date-fns/src/fp/isTuesday/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { isTuesday } from 'date-fns/fp'
+export default isTuesday
diff --git a/date-fns/src/fp/isTuesday/index.js b/date-fns/src/fp/isTuesday/index.js
new file mode 100644
index 0000000..d7da6f0
--- /dev/null
+++ b/date-fns/src/fp/isTuesday/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../isTuesday/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var isTuesday = convertToFP(fn, 1)
+
+export default isTuesday
diff --git a/date-fns/src/fp/isTuesday/index.js.flow b/date-fns/src/fp/isTuesday/index.js.flow
new file mode 100644
index 0000000..8f53be6
--- /dev/null
+++ b/date-fns/src/fp/isTuesday/index.js.flow
@@ -0,0 +1,54 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+declare module.exports: CurriedFn1<Date | number, boolean>
diff --git a/date-fns/src/fp/isValid/index.d.ts b/date-fns/src/fp/isValid/index.d.ts
new file mode 100644
index 0000000..42a8432
--- /dev/null
+++ b/date-fns/src/fp/isValid/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { isValid } from 'date-fns/fp'
+export default isValid
diff --git a/date-fns/src/fp/isValid/index.js b/date-fns/src/fp/isValid/index.js
new file mode 100644
index 0000000..da5b3d2
--- /dev/null
+++ b/date-fns/src/fp/isValid/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../isValid/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var isValid = convertToFP(fn, 1)
+
+export default isValid
diff --git a/date-fns/src/fp/isValid/index.js.flow b/date-fns/src/fp/isValid/index.js.flow
new file mode 100644
index 0000000..62e70e2
--- /dev/null
+++ b/date-fns/src/fp/isValid/index.js.flow
@@ -0,0 +1,54 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+declare module.exports: CurriedFn1<any, boolean>
diff --git a/date-fns/src/fp/isWednesday/index.d.ts b/date-fns/src/fp/isWednesday/index.d.ts
new file mode 100644
index 0000000..9752d6a
--- /dev/null
+++ b/date-fns/src/fp/isWednesday/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { isWednesday } from 'date-fns/fp'
+export default isWednesday
diff --git a/date-fns/src/fp/isWednesday/index.js b/date-fns/src/fp/isWednesday/index.js
new file mode 100644
index 0000000..b2fa123
--- /dev/null
+++ b/date-fns/src/fp/isWednesday/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../isWednesday/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var isWednesday = convertToFP(fn, 1)
+
+export default isWednesday
diff --git a/date-fns/src/fp/isWednesday/index.js.flow b/date-fns/src/fp/isWednesday/index.js.flow
new file mode 100644
index 0000000..8f53be6
--- /dev/null
+++ b/date-fns/src/fp/isWednesday/index.js.flow
@@ -0,0 +1,54 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+declare module.exports: CurriedFn1<Date | number, boolean>
diff --git a/date-fns/src/fp/isWeekend/index.d.ts b/date-fns/src/fp/isWeekend/index.d.ts
new file mode 100644
index 0000000..ff6c8a3
--- /dev/null
+++ b/date-fns/src/fp/isWeekend/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { isWeekend } from 'date-fns/fp'
+export default isWeekend
diff --git a/date-fns/src/fp/isWeekend/index.js b/date-fns/src/fp/isWeekend/index.js
new file mode 100644
index 0000000..31a08f3
--- /dev/null
+++ b/date-fns/src/fp/isWeekend/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../isWeekend/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var isWeekend = convertToFP(fn, 1)
+
+export default isWeekend
diff --git a/date-fns/src/fp/isWeekend/index.js.flow b/date-fns/src/fp/isWeekend/index.js.flow
new file mode 100644
index 0000000..8f53be6
--- /dev/null
+++ b/date-fns/src/fp/isWeekend/index.js.flow
@@ -0,0 +1,54 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+declare module.exports: CurriedFn1<Date | number, boolean>
diff --git a/date-fns/src/fp/isWithinInterval/index.d.ts b/date-fns/src/fp/isWithinInterval/index.d.ts
new file mode 100644
index 0000000..c3b3c9b
--- /dev/null
+++ b/date-fns/src/fp/isWithinInterval/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { isWithinInterval } from 'date-fns/fp'
+export default isWithinInterval
diff --git a/date-fns/src/fp/isWithinInterval/index.js b/date-fns/src/fp/isWithinInterval/index.js
new file mode 100644
index 0000000..88167ff
--- /dev/null
+++ b/date-fns/src/fp/isWithinInterval/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../isWithinInterval/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var isWithinInterval = convertToFP(fn, 2)
+
+export default isWithinInterval
diff --git a/date-fns/src/fp/isWithinInterval/index.js.flow b/date-fns/src/fp/isWithinInterval/index.js.flow
new file mode 100644
index 0000000..8b45a5e
--- /dev/null
+++ b/date-fns/src/fp/isWithinInterval/index.js.flow
@@ -0,0 +1,58 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+declare module.exports: CurriedFn2<Interval, Date | number, boolean>
diff --git a/date-fns/src/fp/lastDayOfDecade/index.d.ts b/date-fns/src/fp/lastDayOfDecade/index.d.ts
new file mode 100644
index 0000000..6b32f46
--- /dev/null
+++ b/date-fns/src/fp/lastDayOfDecade/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { lastDayOfDecade } from 'date-fns/fp'
+export default lastDayOfDecade
diff --git a/date-fns/src/fp/lastDayOfDecade/index.js b/date-fns/src/fp/lastDayOfDecade/index.js
new file mode 100644
index 0000000..e2afa78
--- /dev/null
+++ b/date-fns/src/fp/lastDayOfDecade/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../lastDayOfDecade/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var lastDayOfDecade = convertToFP(fn, 1)
+
+export default lastDayOfDecade
diff --git a/date-fns/src/fp/lastDayOfDecade/index.js.flow b/date-fns/src/fp/lastDayOfDecade/index.js.flow
new file mode 100644
index 0000000..1fc072e
--- /dev/null
+++ b/date-fns/src/fp/lastDayOfDecade/index.js.flow
@@ -0,0 +1,54 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+declare module.exports: CurriedFn1<Date | number, Date>
diff --git a/date-fns/src/fp/lastDayOfISOWeek/index.d.ts b/date-fns/src/fp/lastDayOfISOWeek/index.d.ts
new file mode 100644
index 0000000..13d7cbe
--- /dev/null
+++ b/date-fns/src/fp/lastDayOfISOWeek/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { lastDayOfISOWeek } from 'date-fns/fp'
+export default lastDayOfISOWeek
diff --git a/date-fns/src/fp/lastDayOfISOWeek/index.js b/date-fns/src/fp/lastDayOfISOWeek/index.js
new file mode 100644
index 0000000..3c03939
--- /dev/null
+++ b/date-fns/src/fp/lastDayOfISOWeek/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../lastDayOfISOWeek/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var lastDayOfISOWeek = convertToFP(fn, 1)
+
+export default lastDayOfISOWeek
diff --git a/date-fns/src/fp/lastDayOfISOWeek/index.js.flow b/date-fns/src/fp/lastDayOfISOWeek/index.js.flow
new file mode 100644
index 0000000..1fc072e
--- /dev/null
+++ b/date-fns/src/fp/lastDayOfISOWeek/index.js.flow
@@ -0,0 +1,54 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+declare module.exports: CurriedFn1<Date | number, Date>
diff --git a/date-fns/src/fp/lastDayOfISOWeekYear/index.d.ts b/date-fns/src/fp/lastDayOfISOWeekYear/index.d.ts
new file mode 100644
index 0000000..8e75ca7
--- /dev/null
+++ b/date-fns/src/fp/lastDayOfISOWeekYear/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { lastDayOfISOWeekYear } from 'date-fns/fp'
+export default lastDayOfISOWeekYear
diff --git a/date-fns/src/fp/lastDayOfISOWeekYear/index.js b/date-fns/src/fp/lastDayOfISOWeekYear/index.js
new file mode 100644
index 0000000..7227cb1
--- /dev/null
+++ b/date-fns/src/fp/lastDayOfISOWeekYear/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../lastDayOfISOWeekYear/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var lastDayOfISOWeekYear = convertToFP(fn, 1)
+
+export default lastDayOfISOWeekYear
diff --git a/date-fns/src/fp/lastDayOfISOWeekYear/index.js.flow b/date-fns/src/fp/lastDayOfISOWeekYear/index.js.flow
new file mode 100644
index 0000000..1fc072e
--- /dev/null
+++ b/date-fns/src/fp/lastDayOfISOWeekYear/index.js.flow
@@ -0,0 +1,54 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+declare module.exports: CurriedFn1<Date | number, Date>
diff --git a/date-fns/src/fp/lastDayOfMonth/index.d.ts b/date-fns/src/fp/lastDayOfMonth/index.d.ts
new file mode 100644
index 0000000..1a65a14
--- /dev/null
+++ b/date-fns/src/fp/lastDayOfMonth/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { lastDayOfMonth } from 'date-fns/fp'
+export default lastDayOfMonth
diff --git a/date-fns/src/fp/lastDayOfMonth/index.js b/date-fns/src/fp/lastDayOfMonth/index.js
new file mode 100644
index 0000000..1da2a17
--- /dev/null
+++ b/date-fns/src/fp/lastDayOfMonth/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../lastDayOfMonth/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var lastDayOfMonth = convertToFP(fn, 1)
+
+export default lastDayOfMonth
diff --git a/date-fns/src/fp/lastDayOfMonth/index.js.flow b/date-fns/src/fp/lastDayOfMonth/index.js.flow
new file mode 100644
index 0000000..1fc072e
--- /dev/null
+++ b/date-fns/src/fp/lastDayOfMonth/index.js.flow
@@ -0,0 +1,54 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+declare module.exports: CurriedFn1<Date | number, Date>
diff --git a/date-fns/src/fp/lastDayOfQuarter/index.d.ts b/date-fns/src/fp/lastDayOfQuarter/index.d.ts
new file mode 100644
index 0000000..27f41a8
--- /dev/null
+++ b/date-fns/src/fp/lastDayOfQuarter/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { lastDayOfQuarter } from 'date-fns/fp'
+export default lastDayOfQuarter
diff --git a/date-fns/src/fp/lastDayOfQuarter/index.js b/date-fns/src/fp/lastDayOfQuarter/index.js
new file mode 100644
index 0000000..c8b7f6b
--- /dev/null
+++ b/date-fns/src/fp/lastDayOfQuarter/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../lastDayOfQuarter/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var lastDayOfQuarter = convertToFP(fn, 1)
+
+export default lastDayOfQuarter
diff --git a/date-fns/src/fp/lastDayOfQuarter/index.js.flow b/date-fns/src/fp/lastDayOfQuarter/index.js.flow
new file mode 100644
index 0000000..1fc072e
--- /dev/null
+++ b/date-fns/src/fp/lastDayOfQuarter/index.js.flow
@@ -0,0 +1,54 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+declare module.exports: CurriedFn1<Date | number, Date>
diff --git a/date-fns/src/fp/lastDayOfQuarterWithOptions/index.d.ts b/date-fns/src/fp/lastDayOfQuarterWithOptions/index.d.ts
new file mode 100644
index 0000000..4327d12
--- /dev/null
+++ b/date-fns/src/fp/lastDayOfQuarterWithOptions/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { lastDayOfQuarterWithOptions } from 'date-fns/fp'
+export default lastDayOfQuarterWithOptions
diff --git a/date-fns/src/fp/lastDayOfQuarterWithOptions/index.js b/date-fns/src/fp/lastDayOfQuarterWithOptions/index.js
new file mode 100644
index 0000000..a6ef4bd
--- /dev/null
+++ b/date-fns/src/fp/lastDayOfQuarterWithOptions/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../lastDayOfQuarter/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var lastDayOfQuarterWithOptions = convertToFP(fn, 2)
+
+export default lastDayOfQuarterWithOptions
diff --git a/date-fns/src/fp/lastDayOfQuarterWithOptions/index.js.flow b/date-fns/src/fp/lastDayOfQuarterWithOptions/index.js.flow
new file mode 100644
index 0000000..4b6d0d4
--- /dev/null
+++ b/date-fns/src/fp/lastDayOfQuarterWithOptions/index.js.flow
@@ -0,0 +1,64 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+declare module.exports: CurriedFn2<
+ {
+ additionalDigits?: 0 | 1 | 2,
+ },
+ Date | number,
+ Date
+>
diff --git a/date-fns/src/fp/lastDayOfWeek/index.d.ts b/date-fns/src/fp/lastDayOfWeek/index.d.ts
new file mode 100644
index 0000000..0d79da7
--- /dev/null
+++ b/date-fns/src/fp/lastDayOfWeek/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { lastDayOfWeek } from 'date-fns/fp'
+export default lastDayOfWeek
diff --git a/date-fns/src/fp/lastDayOfWeek/index.js b/date-fns/src/fp/lastDayOfWeek/index.js
new file mode 100644
index 0000000..0407263
--- /dev/null
+++ b/date-fns/src/fp/lastDayOfWeek/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../lastDayOfWeek/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var lastDayOfWeek = convertToFP(fn, 1)
+
+export default lastDayOfWeek
diff --git a/date-fns/src/fp/lastDayOfWeek/index.js.flow b/date-fns/src/fp/lastDayOfWeek/index.js.flow
new file mode 100644
index 0000000..1fc072e
--- /dev/null
+++ b/date-fns/src/fp/lastDayOfWeek/index.js.flow
@@ -0,0 +1,54 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+declare module.exports: CurriedFn1<Date | number, Date>
diff --git a/date-fns/src/fp/lastDayOfWeekWithOptions/index.d.ts b/date-fns/src/fp/lastDayOfWeekWithOptions/index.d.ts
new file mode 100644
index 0000000..5719524
--- /dev/null
+++ b/date-fns/src/fp/lastDayOfWeekWithOptions/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { lastDayOfWeekWithOptions } from 'date-fns/fp'
+export default lastDayOfWeekWithOptions
diff --git a/date-fns/src/fp/lastDayOfWeekWithOptions/index.js b/date-fns/src/fp/lastDayOfWeekWithOptions/index.js
new file mode 100644
index 0000000..4d758bb
--- /dev/null
+++ b/date-fns/src/fp/lastDayOfWeekWithOptions/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../lastDayOfWeek/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var lastDayOfWeekWithOptions = convertToFP(fn, 2)
+
+export default lastDayOfWeekWithOptions
diff --git a/date-fns/src/fp/lastDayOfWeekWithOptions/index.js.flow b/date-fns/src/fp/lastDayOfWeekWithOptions/index.js.flow
new file mode 100644
index 0000000..9821646
--- /dev/null
+++ b/date-fns/src/fp/lastDayOfWeekWithOptions/index.js.flow
@@ -0,0 +1,65 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+declare module.exports: CurriedFn2<
+ {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ locale?: Locale,
+ },
+ Date | number,
+ Date
+>
diff --git a/date-fns/src/fp/lastDayOfYear/index.d.ts b/date-fns/src/fp/lastDayOfYear/index.d.ts
new file mode 100644
index 0000000..340473e
--- /dev/null
+++ b/date-fns/src/fp/lastDayOfYear/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { lastDayOfYear } from 'date-fns/fp'
+export default lastDayOfYear
diff --git a/date-fns/src/fp/lastDayOfYear/index.js b/date-fns/src/fp/lastDayOfYear/index.js
new file mode 100644
index 0000000..faf5d62
--- /dev/null
+++ b/date-fns/src/fp/lastDayOfYear/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../lastDayOfYear/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var lastDayOfYear = convertToFP(fn, 1)
+
+export default lastDayOfYear
diff --git a/date-fns/src/fp/lastDayOfYear/index.js.flow b/date-fns/src/fp/lastDayOfYear/index.js.flow
new file mode 100644
index 0000000..1fc072e
--- /dev/null
+++ b/date-fns/src/fp/lastDayOfYear/index.js.flow
@@ -0,0 +1,54 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+declare module.exports: CurriedFn1<Date | number, Date>
diff --git a/date-fns/src/fp/lightFormat/index.d.ts b/date-fns/src/fp/lightFormat/index.d.ts
new file mode 100644
index 0000000..843b7fd
--- /dev/null
+++ b/date-fns/src/fp/lightFormat/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { lightFormat } from 'date-fns/fp'
+export default lightFormat
diff --git a/date-fns/src/fp/lightFormat/index.js b/date-fns/src/fp/lightFormat/index.js
new file mode 100644
index 0000000..da69f3c
--- /dev/null
+++ b/date-fns/src/fp/lightFormat/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../lightFormat/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var lightFormat = convertToFP(fn, 2)
+
+export default lightFormat
diff --git a/date-fns/src/fp/lightFormat/index.js.flow b/date-fns/src/fp/lightFormat/index.js.flow
new file mode 100644
index 0000000..013f277
--- /dev/null
+++ b/date-fns/src/fp/lightFormat/index.js.flow
@@ -0,0 +1,58 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+declare module.exports: CurriedFn2<string, Date | number, string>
diff --git a/date-fns/src/fp/max/index.d.ts b/date-fns/src/fp/max/index.d.ts
new file mode 100644
index 0000000..000bf1d
--- /dev/null
+++ b/date-fns/src/fp/max/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { max } from 'date-fns/fp'
+export default max
diff --git a/date-fns/src/fp/max/index.js b/date-fns/src/fp/max/index.js
new file mode 100644
index 0000000..388ee28
--- /dev/null
+++ b/date-fns/src/fp/max/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../max/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var max = convertToFP(fn, 1)
+
+export default max
diff --git a/date-fns/src/fp/max/index.js.flow b/date-fns/src/fp/max/index.js.flow
new file mode 100644
index 0000000..dc66689
--- /dev/null
+++ b/date-fns/src/fp/max/index.js.flow
@@ -0,0 +1,54 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+declare module.exports: CurriedFn1<(Date | number)[], Date>
diff --git a/date-fns/src/fp/milliseconds/index.d.ts b/date-fns/src/fp/milliseconds/index.d.ts
new file mode 100644
index 0000000..2552885
--- /dev/null
+++ b/date-fns/src/fp/milliseconds/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { milliseconds } from 'date-fns/fp'
+export default milliseconds
diff --git a/date-fns/src/fp/milliseconds/index.js b/date-fns/src/fp/milliseconds/index.js
new file mode 100644
index 0000000..3cd2b2c
--- /dev/null
+++ b/date-fns/src/fp/milliseconds/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../milliseconds/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var milliseconds = convertToFP(fn, 1)
+
+export default milliseconds
diff --git a/date-fns/src/fp/milliseconds/index.js.flow b/date-fns/src/fp/milliseconds/index.js.flow
new file mode 100644
index 0000000..a025a67
--- /dev/null
+++ b/date-fns/src/fp/milliseconds/index.js.flow
@@ -0,0 +1,54 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+declare module.exports: CurriedFn1<Duration, number>
diff --git a/date-fns/src/fp/millisecondsToHours/index.d.ts b/date-fns/src/fp/millisecondsToHours/index.d.ts
new file mode 100644
index 0000000..0ee6863
--- /dev/null
+++ b/date-fns/src/fp/millisecondsToHours/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { millisecondsToHours } from 'date-fns/fp'
+export default millisecondsToHours
diff --git a/date-fns/src/fp/millisecondsToHours/index.js b/date-fns/src/fp/millisecondsToHours/index.js
new file mode 100644
index 0000000..8d74476
--- /dev/null
+++ b/date-fns/src/fp/millisecondsToHours/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../millisecondsToHours/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var millisecondsToHours = convertToFP(fn, 1)
+
+export default millisecondsToHours
diff --git a/date-fns/src/fp/millisecondsToHours/index.js.flow b/date-fns/src/fp/millisecondsToHours/index.js.flow
new file mode 100644
index 0000000..aa51b5f
--- /dev/null
+++ b/date-fns/src/fp/millisecondsToHours/index.js.flow
@@ -0,0 +1,54 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+declare module.exports: CurriedFn1<number, number>
diff --git a/date-fns/src/fp/millisecondsToMinutes/index.d.ts b/date-fns/src/fp/millisecondsToMinutes/index.d.ts
new file mode 100644
index 0000000..de84700
--- /dev/null
+++ b/date-fns/src/fp/millisecondsToMinutes/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { millisecondsToMinutes } from 'date-fns/fp'
+export default millisecondsToMinutes
diff --git a/date-fns/src/fp/millisecondsToMinutes/index.js b/date-fns/src/fp/millisecondsToMinutes/index.js
new file mode 100644
index 0000000..d9c64f1
--- /dev/null
+++ b/date-fns/src/fp/millisecondsToMinutes/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../millisecondsToMinutes/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var millisecondsToMinutes = convertToFP(fn, 1)
+
+export default millisecondsToMinutes
diff --git a/date-fns/src/fp/millisecondsToMinutes/index.js.flow b/date-fns/src/fp/millisecondsToMinutes/index.js.flow
new file mode 100644
index 0000000..aa51b5f
--- /dev/null
+++ b/date-fns/src/fp/millisecondsToMinutes/index.js.flow
@@ -0,0 +1,54 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+declare module.exports: CurriedFn1<number, number>
diff --git a/date-fns/src/fp/millisecondsToSeconds/index.d.ts b/date-fns/src/fp/millisecondsToSeconds/index.d.ts
new file mode 100644
index 0000000..99736c4
--- /dev/null
+++ b/date-fns/src/fp/millisecondsToSeconds/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { millisecondsToSeconds } from 'date-fns/fp'
+export default millisecondsToSeconds
diff --git a/date-fns/src/fp/millisecondsToSeconds/index.js b/date-fns/src/fp/millisecondsToSeconds/index.js
new file mode 100644
index 0000000..3d59f18
--- /dev/null
+++ b/date-fns/src/fp/millisecondsToSeconds/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../millisecondsToSeconds/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var millisecondsToSeconds = convertToFP(fn, 1)
+
+export default millisecondsToSeconds
diff --git a/date-fns/src/fp/millisecondsToSeconds/index.js.flow b/date-fns/src/fp/millisecondsToSeconds/index.js.flow
new file mode 100644
index 0000000..aa51b5f
--- /dev/null
+++ b/date-fns/src/fp/millisecondsToSeconds/index.js.flow
@@ -0,0 +1,54 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+declare module.exports: CurriedFn1<number, number>
diff --git a/date-fns/src/fp/min/index.d.ts b/date-fns/src/fp/min/index.d.ts
new file mode 100644
index 0000000..b666165
--- /dev/null
+++ b/date-fns/src/fp/min/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { min } from 'date-fns/fp'
+export default min
diff --git a/date-fns/src/fp/min/index.js b/date-fns/src/fp/min/index.js
new file mode 100644
index 0000000..70bd2f1
--- /dev/null
+++ b/date-fns/src/fp/min/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../min/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var min = convertToFP(fn, 1)
+
+export default min
diff --git a/date-fns/src/fp/min/index.js.flow b/date-fns/src/fp/min/index.js.flow
new file mode 100644
index 0000000..dc66689
--- /dev/null
+++ b/date-fns/src/fp/min/index.js.flow
@@ -0,0 +1,54 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+declare module.exports: CurriedFn1<(Date | number)[], Date>
diff --git a/date-fns/src/fp/minutesToHours/index.d.ts b/date-fns/src/fp/minutesToHours/index.d.ts
new file mode 100644
index 0000000..15aeb30
--- /dev/null
+++ b/date-fns/src/fp/minutesToHours/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { minutesToHours } from 'date-fns/fp'
+export default minutesToHours
diff --git a/date-fns/src/fp/minutesToHours/index.js b/date-fns/src/fp/minutesToHours/index.js
new file mode 100644
index 0000000..d125abc
--- /dev/null
+++ b/date-fns/src/fp/minutesToHours/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../minutesToHours/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var minutesToHours = convertToFP(fn, 1)
+
+export default minutesToHours
diff --git a/date-fns/src/fp/minutesToHours/index.js.flow b/date-fns/src/fp/minutesToHours/index.js.flow
new file mode 100644
index 0000000..aa51b5f
--- /dev/null
+++ b/date-fns/src/fp/minutesToHours/index.js.flow
@@ -0,0 +1,54 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+declare module.exports: CurriedFn1<number, number>
diff --git a/date-fns/src/fp/minutesToMilliseconds/index.d.ts b/date-fns/src/fp/minutesToMilliseconds/index.d.ts
new file mode 100644
index 0000000..0b19d01
--- /dev/null
+++ b/date-fns/src/fp/minutesToMilliseconds/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { minutesToMilliseconds } from 'date-fns/fp'
+export default minutesToMilliseconds
diff --git a/date-fns/src/fp/minutesToMilliseconds/index.js b/date-fns/src/fp/minutesToMilliseconds/index.js
new file mode 100644
index 0000000..1c54f4f
--- /dev/null
+++ b/date-fns/src/fp/minutesToMilliseconds/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../minutesToMilliseconds/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var minutesToMilliseconds = convertToFP(fn, 1)
+
+export default minutesToMilliseconds
diff --git a/date-fns/src/fp/minutesToMilliseconds/index.js.flow b/date-fns/src/fp/minutesToMilliseconds/index.js.flow
new file mode 100644
index 0000000..aa51b5f
--- /dev/null
+++ b/date-fns/src/fp/minutesToMilliseconds/index.js.flow
@@ -0,0 +1,54 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+declare module.exports: CurriedFn1<number, number>
diff --git a/date-fns/src/fp/minutesToSeconds/index.d.ts b/date-fns/src/fp/minutesToSeconds/index.d.ts
new file mode 100644
index 0000000..bc47b3f
--- /dev/null
+++ b/date-fns/src/fp/minutesToSeconds/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { minutesToSeconds } from 'date-fns/fp'
+export default minutesToSeconds
diff --git a/date-fns/src/fp/minutesToSeconds/index.js b/date-fns/src/fp/minutesToSeconds/index.js
new file mode 100644
index 0000000..cd15bc1
--- /dev/null
+++ b/date-fns/src/fp/minutesToSeconds/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../minutesToSeconds/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var minutesToSeconds = convertToFP(fn, 1)
+
+export default minutesToSeconds
diff --git a/date-fns/src/fp/minutesToSeconds/index.js.flow b/date-fns/src/fp/minutesToSeconds/index.js.flow
new file mode 100644
index 0000000..aa51b5f
--- /dev/null
+++ b/date-fns/src/fp/minutesToSeconds/index.js.flow
@@ -0,0 +1,54 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+declare module.exports: CurriedFn1<number, number>
diff --git a/date-fns/src/fp/monthsToQuarters/index.d.ts b/date-fns/src/fp/monthsToQuarters/index.d.ts
new file mode 100644
index 0000000..05ae53c
--- /dev/null
+++ b/date-fns/src/fp/monthsToQuarters/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { monthsToQuarters } from 'date-fns/fp'
+export default monthsToQuarters
diff --git a/date-fns/src/fp/monthsToQuarters/index.js b/date-fns/src/fp/monthsToQuarters/index.js
new file mode 100644
index 0000000..a06e630
--- /dev/null
+++ b/date-fns/src/fp/monthsToQuarters/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../monthsToQuarters/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var monthsToQuarters = convertToFP(fn, 1)
+
+export default monthsToQuarters
diff --git a/date-fns/src/fp/monthsToQuarters/index.js.flow b/date-fns/src/fp/monthsToQuarters/index.js.flow
new file mode 100644
index 0000000..aa51b5f
--- /dev/null
+++ b/date-fns/src/fp/monthsToQuarters/index.js.flow
@@ -0,0 +1,54 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+declare module.exports: CurriedFn1<number, number>
diff --git a/date-fns/src/fp/monthsToYears/index.d.ts b/date-fns/src/fp/monthsToYears/index.d.ts
new file mode 100644
index 0000000..bc5f113
--- /dev/null
+++ b/date-fns/src/fp/monthsToYears/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { monthsToYears } from 'date-fns/fp'
+export default monthsToYears
diff --git a/date-fns/src/fp/monthsToYears/index.js b/date-fns/src/fp/monthsToYears/index.js
new file mode 100644
index 0000000..771bfa9
--- /dev/null
+++ b/date-fns/src/fp/monthsToYears/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../monthsToYears/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var monthsToYears = convertToFP(fn, 1)
+
+export default monthsToYears
diff --git a/date-fns/src/fp/monthsToYears/index.js.flow b/date-fns/src/fp/monthsToYears/index.js.flow
new file mode 100644
index 0000000..aa51b5f
--- /dev/null
+++ b/date-fns/src/fp/monthsToYears/index.js.flow
@@ -0,0 +1,54 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+declare module.exports: CurriedFn1<number, number>
diff --git a/date-fns/src/fp/nextDay/index.d.ts b/date-fns/src/fp/nextDay/index.d.ts
new file mode 100644
index 0000000..dc6cd80
--- /dev/null
+++ b/date-fns/src/fp/nextDay/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { nextDay } from 'date-fns/fp'
+export default nextDay
diff --git a/date-fns/src/fp/nextDay/index.js b/date-fns/src/fp/nextDay/index.js
new file mode 100644
index 0000000..78f62f4
--- /dev/null
+++ b/date-fns/src/fp/nextDay/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../nextDay/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var nextDay = convertToFP(fn, 2)
+
+export default nextDay
diff --git a/date-fns/src/fp/nextDay/index.js.flow b/date-fns/src/fp/nextDay/index.js.flow
new file mode 100644
index 0000000..3d001b2
--- /dev/null
+++ b/date-fns/src/fp/nextDay/index.js.flow
@@ -0,0 +1,58 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+declare module.exports: CurriedFn2<Day, Date | number, Date>
diff --git a/date-fns/src/fp/nextFriday/index.d.ts b/date-fns/src/fp/nextFriday/index.d.ts
new file mode 100644
index 0000000..48e88cc
--- /dev/null
+++ b/date-fns/src/fp/nextFriday/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { nextFriday } from 'date-fns/fp'
+export default nextFriday
diff --git a/date-fns/src/fp/nextFriday/index.js b/date-fns/src/fp/nextFriday/index.js
new file mode 100644
index 0000000..277d482
--- /dev/null
+++ b/date-fns/src/fp/nextFriday/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../nextFriday/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var nextFriday = convertToFP(fn, 1)
+
+export default nextFriday
diff --git a/date-fns/src/fp/nextFriday/index.js.flow b/date-fns/src/fp/nextFriday/index.js.flow
new file mode 100644
index 0000000..1fc072e
--- /dev/null
+++ b/date-fns/src/fp/nextFriday/index.js.flow
@@ -0,0 +1,54 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+declare module.exports: CurriedFn1<Date | number, Date>
diff --git a/date-fns/src/fp/nextMonday/index.d.ts b/date-fns/src/fp/nextMonday/index.d.ts
new file mode 100644
index 0000000..50926c4
--- /dev/null
+++ b/date-fns/src/fp/nextMonday/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { nextMonday } from 'date-fns/fp'
+export default nextMonday
diff --git a/date-fns/src/fp/nextMonday/index.js b/date-fns/src/fp/nextMonday/index.js
new file mode 100644
index 0000000..a09c1e0
--- /dev/null
+++ b/date-fns/src/fp/nextMonday/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../nextMonday/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var nextMonday = convertToFP(fn, 1)
+
+export default nextMonday
diff --git a/date-fns/src/fp/nextMonday/index.js.flow b/date-fns/src/fp/nextMonday/index.js.flow
new file mode 100644
index 0000000..1fc072e
--- /dev/null
+++ b/date-fns/src/fp/nextMonday/index.js.flow
@@ -0,0 +1,54 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+declare module.exports: CurriedFn1<Date | number, Date>
diff --git a/date-fns/src/fp/nextSaturday/index.d.ts b/date-fns/src/fp/nextSaturday/index.d.ts
new file mode 100644
index 0000000..5774aa5
--- /dev/null
+++ b/date-fns/src/fp/nextSaturday/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { nextSaturday } from 'date-fns/fp'
+export default nextSaturday
diff --git a/date-fns/src/fp/nextSaturday/index.js b/date-fns/src/fp/nextSaturday/index.js
new file mode 100644
index 0000000..145813f
--- /dev/null
+++ b/date-fns/src/fp/nextSaturday/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../nextSaturday/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var nextSaturday = convertToFP(fn, 1)
+
+export default nextSaturday
diff --git a/date-fns/src/fp/nextSaturday/index.js.flow b/date-fns/src/fp/nextSaturday/index.js.flow
new file mode 100644
index 0000000..1fc072e
--- /dev/null
+++ b/date-fns/src/fp/nextSaturday/index.js.flow
@@ -0,0 +1,54 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+declare module.exports: CurriedFn1<Date | number, Date>
diff --git a/date-fns/src/fp/nextSunday/index.d.ts b/date-fns/src/fp/nextSunday/index.d.ts
new file mode 100644
index 0000000..acd1202
--- /dev/null
+++ b/date-fns/src/fp/nextSunday/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { nextSunday } from 'date-fns/fp'
+export default nextSunday
diff --git a/date-fns/src/fp/nextSunday/index.js b/date-fns/src/fp/nextSunday/index.js
new file mode 100644
index 0000000..cb21ec9
--- /dev/null
+++ b/date-fns/src/fp/nextSunday/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../nextSunday/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var nextSunday = convertToFP(fn, 1)
+
+export default nextSunday
diff --git a/date-fns/src/fp/nextSunday/index.js.flow b/date-fns/src/fp/nextSunday/index.js.flow
new file mode 100644
index 0000000..1fc072e
--- /dev/null
+++ b/date-fns/src/fp/nextSunday/index.js.flow
@@ -0,0 +1,54 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+declare module.exports: CurriedFn1<Date | number, Date>
diff --git a/date-fns/src/fp/nextThursday/index.d.ts b/date-fns/src/fp/nextThursday/index.d.ts
new file mode 100644
index 0000000..1f2dcf0
--- /dev/null
+++ b/date-fns/src/fp/nextThursday/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { nextThursday } from 'date-fns/fp'
+export default nextThursday
diff --git a/date-fns/src/fp/nextThursday/index.js b/date-fns/src/fp/nextThursday/index.js
new file mode 100644
index 0000000..9e22adf
--- /dev/null
+++ b/date-fns/src/fp/nextThursday/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../nextThursday/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var nextThursday = convertToFP(fn, 1)
+
+export default nextThursday
diff --git a/date-fns/src/fp/nextThursday/index.js.flow b/date-fns/src/fp/nextThursday/index.js.flow
new file mode 100644
index 0000000..1fc072e
--- /dev/null
+++ b/date-fns/src/fp/nextThursday/index.js.flow
@@ -0,0 +1,54 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+declare module.exports: CurriedFn1<Date | number, Date>
diff --git a/date-fns/src/fp/nextTuesday/index.d.ts b/date-fns/src/fp/nextTuesday/index.d.ts
new file mode 100644
index 0000000..4842cc0
--- /dev/null
+++ b/date-fns/src/fp/nextTuesday/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { nextTuesday } from 'date-fns/fp'
+export default nextTuesday
diff --git a/date-fns/src/fp/nextTuesday/index.js b/date-fns/src/fp/nextTuesday/index.js
new file mode 100644
index 0000000..648bcc8
--- /dev/null
+++ b/date-fns/src/fp/nextTuesday/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../nextTuesday/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var nextTuesday = convertToFP(fn, 1)
+
+export default nextTuesday
diff --git a/date-fns/src/fp/nextTuesday/index.js.flow b/date-fns/src/fp/nextTuesday/index.js.flow
new file mode 100644
index 0000000..1fc072e
--- /dev/null
+++ b/date-fns/src/fp/nextTuesday/index.js.flow
@@ -0,0 +1,54 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+declare module.exports: CurriedFn1<Date | number, Date>
diff --git a/date-fns/src/fp/nextWednesday/index.d.ts b/date-fns/src/fp/nextWednesday/index.d.ts
new file mode 100644
index 0000000..800d5a5
--- /dev/null
+++ b/date-fns/src/fp/nextWednesday/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { nextWednesday } from 'date-fns/fp'
+export default nextWednesday
diff --git a/date-fns/src/fp/nextWednesday/index.js b/date-fns/src/fp/nextWednesday/index.js
new file mode 100644
index 0000000..007100f
--- /dev/null
+++ b/date-fns/src/fp/nextWednesday/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../nextWednesday/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var nextWednesday = convertToFP(fn, 1)
+
+export default nextWednesday
diff --git a/date-fns/src/fp/nextWednesday/index.js.flow b/date-fns/src/fp/nextWednesday/index.js.flow
new file mode 100644
index 0000000..1fc072e
--- /dev/null
+++ b/date-fns/src/fp/nextWednesday/index.js.flow
@@ -0,0 +1,54 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+declare module.exports: CurriedFn1<Date | number, Date>
diff --git a/date-fns/src/fp/parse/index.d.ts b/date-fns/src/fp/parse/index.d.ts
new file mode 100644
index 0000000..0d42228
--- /dev/null
+++ b/date-fns/src/fp/parse/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { parse } from 'date-fns/fp'
+export default parse
diff --git a/date-fns/src/fp/parse/index.js b/date-fns/src/fp/parse/index.js
new file mode 100644
index 0000000..3a34a83
--- /dev/null
+++ b/date-fns/src/fp/parse/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../parse/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var parse = convertToFP(fn, 3)
+
+export default parse
diff --git a/date-fns/src/fp/parse/index.js.flow b/date-fns/src/fp/parse/index.js.flow
new file mode 100644
index 0000000..7146666
--- /dev/null
+++ b/date-fns/src/fp/parse/index.js.flow
@@ -0,0 +1,67 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+type CurriedFn3<A, B, C, R> = <A>(
+ a: A
+) =>
+ | CurriedFn2<B, C, R>
+ | (<A, B>(
+ a: A,
+ b: B
+ ) => CurriedFn1<C, R> | (<A, B, C>(a: A, b: B, c: C) => R))
+
+declare module.exports: CurriedFn3<Date | number, string, string, Date>
diff --git a/date-fns/src/fp/parseISO/index.d.ts b/date-fns/src/fp/parseISO/index.d.ts
new file mode 100644
index 0000000..f89741c
--- /dev/null
+++ b/date-fns/src/fp/parseISO/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { parseISO } from 'date-fns/fp'
+export default parseISO
diff --git a/date-fns/src/fp/parseISO/index.js b/date-fns/src/fp/parseISO/index.js
new file mode 100644
index 0000000..2b6c652
--- /dev/null
+++ b/date-fns/src/fp/parseISO/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../parseISO/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var parseISO = convertToFP(fn, 1)
+
+export default parseISO
diff --git a/date-fns/src/fp/parseISO/index.js.flow b/date-fns/src/fp/parseISO/index.js.flow
new file mode 100644
index 0000000..4d84593
--- /dev/null
+++ b/date-fns/src/fp/parseISO/index.js.flow
@@ -0,0 +1,54 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+declare module.exports: CurriedFn1<string, Date>
diff --git a/date-fns/src/fp/parseISOWithOptions/index.d.ts b/date-fns/src/fp/parseISOWithOptions/index.d.ts
new file mode 100644
index 0000000..b90cbd3
--- /dev/null
+++ b/date-fns/src/fp/parseISOWithOptions/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { parseISOWithOptions } from 'date-fns/fp'
+export default parseISOWithOptions
diff --git a/date-fns/src/fp/parseISOWithOptions/index.js b/date-fns/src/fp/parseISOWithOptions/index.js
new file mode 100644
index 0000000..8927125
--- /dev/null
+++ b/date-fns/src/fp/parseISOWithOptions/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../parseISO/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var parseISOWithOptions = convertToFP(fn, 2)
+
+export default parseISOWithOptions
diff --git a/date-fns/src/fp/parseISOWithOptions/index.js.flow b/date-fns/src/fp/parseISOWithOptions/index.js.flow
new file mode 100644
index 0000000..d2d80ca
--- /dev/null
+++ b/date-fns/src/fp/parseISOWithOptions/index.js.flow
@@ -0,0 +1,64 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+declare module.exports: CurriedFn2<
+ {
+ additionalDigits?: 0 | 1 | 2,
+ },
+ string,
+ Date
+>
diff --git a/date-fns/src/fp/parseJSON/index.d.ts b/date-fns/src/fp/parseJSON/index.d.ts
new file mode 100644
index 0000000..dd64334
--- /dev/null
+++ b/date-fns/src/fp/parseJSON/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { parseJSON } from 'date-fns/fp'
+export default parseJSON
diff --git a/date-fns/src/fp/parseJSON/index.js b/date-fns/src/fp/parseJSON/index.js
new file mode 100644
index 0000000..115c5e8
--- /dev/null
+++ b/date-fns/src/fp/parseJSON/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../parseJSON/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var parseJSON = convertToFP(fn, 1)
+
+export default parseJSON
diff --git a/date-fns/src/fp/parseJSON/index.js.flow b/date-fns/src/fp/parseJSON/index.js.flow
new file mode 100644
index 0000000..9b7f47a
--- /dev/null
+++ b/date-fns/src/fp/parseJSON/index.js.flow
@@ -0,0 +1,54 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+declare module.exports: CurriedFn1<string | number | Date, Date>
diff --git a/date-fns/src/fp/parseWithOptions/index.d.ts b/date-fns/src/fp/parseWithOptions/index.d.ts
new file mode 100644
index 0000000..d33b4ae
--- /dev/null
+++ b/date-fns/src/fp/parseWithOptions/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { parseWithOptions } from 'date-fns/fp'
+export default parseWithOptions
diff --git a/date-fns/src/fp/parseWithOptions/index.js b/date-fns/src/fp/parseWithOptions/index.js
new file mode 100644
index 0000000..1a4d39a
--- /dev/null
+++ b/date-fns/src/fp/parseWithOptions/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../parse/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var parseWithOptions = convertToFP(fn, 4)
+
+export default parseWithOptions
diff --git a/date-fns/src/fp/parseWithOptions/index.js.flow b/date-fns/src/fp/parseWithOptions/index.js.flow
new file mode 100644
index 0000000..e767e62
--- /dev/null
+++ b/date-fns/src/fp/parseWithOptions/index.js.flow
@@ -0,0 +1,94 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+type CurriedFn3<A, B, C, R> = <A>(
+ a: A
+) =>
+ | CurriedFn2<B, C, R>
+ | (<A, B>(
+ a: A,
+ b: B
+ ) => CurriedFn1<C, R> | (<A, B, C>(a: A, b: B, c: C) => R))
+
+type CurriedFn4<A, B, C, D, R> = <A>(
+ a: A
+) =>
+ | CurriedFn3<B, C, D, R>
+ | (<A, B>(
+ a: A,
+ b: B
+ ) =>
+ | CurriedFn2<C, D, R>
+ | (<A, B, C>(
+ a: A,
+ b: B,
+ c: C
+ ) => CurriedFn1<D, R> | (<A, B, C, D>(a: A, b: B, c: C, d: D) => R)))
+
+declare module.exports: CurriedFn4<
+ {
+ useAdditionalDayOfYearTokens?: boolean,
+ useAdditionalWeekYearTokens?: boolean,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ locale?: Locale,
+ },
+ Date | number,
+ string,
+ string,
+ Date
+>
diff --git a/date-fns/src/fp/quartersToMonths/index.d.ts b/date-fns/src/fp/quartersToMonths/index.d.ts
new file mode 100644
index 0000000..07220e8
--- /dev/null
+++ b/date-fns/src/fp/quartersToMonths/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { quartersToMonths } from 'date-fns/fp'
+export default quartersToMonths
diff --git a/date-fns/src/fp/quartersToMonths/index.js b/date-fns/src/fp/quartersToMonths/index.js
new file mode 100644
index 0000000..d804e23
--- /dev/null
+++ b/date-fns/src/fp/quartersToMonths/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../quartersToMonths/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var quartersToMonths = convertToFP(fn, 1)
+
+export default quartersToMonths
diff --git a/date-fns/src/fp/quartersToMonths/index.js.flow b/date-fns/src/fp/quartersToMonths/index.js.flow
new file mode 100644
index 0000000..aa51b5f
--- /dev/null
+++ b/date-fns/src/fp/quartersToMonths/index.js.flow
@@ -0,0 +1,54 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+declare module.exports: CurriedFn1<number, number>
diff --git a/date-fns/src/fp/quartersToYears/index.d.ts b/date-fns/src/fp/quartersToYears/index.d.ts
new file mode 100644
index 0000000..6613aeb
--- /dev/null
+++ b/date-fns/src/fp/quartersToYears/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { quartersToYears } from 'date-fns/fp'
+export default quartersToYears
diff --git a/date-fns/src/fp/quartersToYears/index.js b/date-fns/src/fp/quartersToYears/index.js
new file mode 100644
index 0000000..9d28be7
--- /dev/null
+++ b/date-fns/src/fp/quartersToYears/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../quartersToYears/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var quartersToYears = convertToFP(fn, 1)
+
+export default quartersToYears
diff --git a/date-fns/src/fp/quartersToYears/index.js.flow b/date-fns/src/fp/quartersToYears/index.js.flow
new file mode 100644
index 0000000..aa51b5f
--- /dev/null
+++ b/date-fns/src/fp/quartersToYears/index.js.flow
@@ -0,0 +1,54 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+declare module.exports: CurriedFn1<number, number>
diff --git a/date-fns/src/fp/roundToNearestMinutes/index.d.ts b/date-fns/src/fp/roundToNearestMinutes/index.d.ts
new file mode 100644
index 0000000..7777ce2
--- /dev/null
+++ b/date-fns/src/fp/roundToNearestMinutes/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { roundToNearestMinutes } from 'date-fns/fp'
+export default roundToNearestMinutes
diff --git a/date-fns/src/fp/roundToNearestMinutes/index.js b/date-fns/src/fp/roundToNearestMinutes/index.js
new file mode 100644
index 0000000..b2e0264
--- /dev/null
+++ b/date-fns/src/fp/roundToNearestMinutes/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../roundToNearestMinutes/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var roundToNearestMinutes = convertToFP(fn, 1)
+
+export default roundToNearestMinutes
diff --git a/date-fns/src/fp/roundToNearestMinutes/index.js.flow b/date-fns/src/fp/roundToNearestMinutes/index.js.flow
new file mode 100644
index 0000000..1fc072e
--- /dev/null
+++ b/date-fns/src/fp/roundToNearestMinutes/index.js.flow
@@ -0,0 +1,54 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+declare module.exports: CurriedFn1<Date | number, Date>
diff --git a/date-fns/src/fp/roundToNearestMinutesWithOptions/index.d.ts b/date-fns/src/fp/roundToNearestMinutesWithOptions/index.d.ts
new file mode 100644
index 0000000..fcd4df4
--- /dev/null
+++ b/date-fns/src/fp/roundToNearestMinutesWithOptions/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { roundToNearestMinutesWithOptions } from 'date-fns/fp'
+export default roundToNearestMinutesWithOptions
diff --git a/date-fns/src/fp/roundToNearestMinutesWithOptions/index.js b/date-fns/src/fp/roundToNearestMinutesWithOptions/index.js
new file mode 100644
index 0000000..921eacc
--- /dev/null
+++ b/date-fns/src/fp/roundToNearestMinutesWithOptions/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../roundToNearestMinutes/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var roundToNearestMinutesWithOptions = convertToFP(fn, 2)
+
+export default roundToNearestMinutesWithOptions
diff --git a/date-fns/src/fp/roundToNearestMinutesWithOptions/index.js.flow b/date-fns/src/fp/roundToNearestMinutesWithOptions/index.js.flow
new file mode 100644
index 0000000..b19bdb5
--- /dev/null
+++ b/date-fns/src/fp/roundToNearestMinutesWithOptions/index.js.flow
@@ -0,0 +1,64 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+declare module.exports: CurriedFn2<
+ {
+ nearestTo?: number,
+ },
+ Date | number,
+ Date
+>
diff --git a/date-fns/src/fp/secondsToHours/index.d.ts b/date-fns/src/fp/secondsToHours/index.d.ts
new file mode 100644
index 0000000..931f3a7
--- /dev/null
+++ b/date-fns/src/fp/secondsToHours/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { secondsToHours } from 'date-fns/fp'
+export default secondsToHours
diff --git a/date-fns/src/fp/secondsToHours/index.js b/date-fns/src/fp/secondsToHours/index.js
new file mode 100644
index 0000000..3e789d6
--- /dev/null
+++ b/date-fns/src/fp/secondsToHours/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../secondsToHours/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var secondsToHours = convertToFP(fn, 1)
+
+export default secondsToHours
diff --git a/date-fns/src/fp/secondsToHours/index.js.flow b/date-fns/src/fp/secondsToHours/index.js.flow
new file mode 100644
index 0000000..aa51b5f
--- /dev/null
+++ b/date-fns/src/fp/secondsToHours/index.js.flow
@@ -0,0 +1,54 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+declare module.exports: CurriedFn1<number, number>
diff --git a/date-fns/src/fp/secondsToMilliseconds/index.d.ts b/date-fns/src/fp/secondsToMilliseconds/index.d.ts
new file mode 100644
index 0000000..98df8f2
--- /dev/null
+++ b/date-fns/src/fp/secondsToMilliseconds/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { secondsToMilliseconds } from 'date-fns/fp'
+export default secondsToMilliseconds
diff --git a/date-fns/src/fp/secondsToMilliseconds/index.js b/date-fns/src/fp/secondsToMilliseconds/index.js
new file mode 100644
index 0000000..daafff0
--- /dev/null
+++ b/date-fns/src/fp/secondsToMilliseconds/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../secondsToMilliseconds/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var secondsToMilliseconds = convertToFP(fn, 1)
+
+export default secondsToMilliseconds
diff --git a/date-fns/src/fp/secondsToMilliseconds/index.js.flow b/date-fns/src/fp/secondsToMilliseconds/index.js.flow
new file mode 100644
index 0000000..aa51b5f
--- /dev/null
+++ b/date-fns/src/fp/secondsToMilliseconds/index.js.flow
@@ -0,0 +1,54 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+declare module.exports: CurriedFn1<number, number>
diff --git a/date-fns/src/fp/secondsToMinutes/index.d.ts b/date-fns/src/fp/secondsToMinutes/index.d.ts
new file mode 100644
index 0000000..e22b528
--- /dev/null
+++ b/date-fns/src/fp/secondsToMinutes/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { secondsToMinutes } from 'date-fns/fp'
+export default secondsToMinutes
diff --git a/date-fns/src/fp/secondsToMinutes/index.js b/date-fns/src/fp/secondsToMinutes/index.js
new file mode 100644
index 0000000..9aacc97
--- /dev/null
+++ b/date-fns/src/fp/secondsToMinutes/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../secondsToMinutes/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var secondsToMinutes = convertToFP(fn, 1)
+
+export default secondsToMinutes
diff --git a/date-fns/src/fp/secondsToMinutes/index.js.flow b/date-fns/src/fp/secondsToMinutes/index.js.flow
new file mode 100644
index 0000000..aa51b5f
--- /dev/null
+++ b/date-fns/src/fp/secondsToMinutes/index.js.flow
@@ -0,0 +1,54 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+declare module.exports: CurriedFn1<number, number>
diff --git a/date-fns/src/fp/set/index.d.ts b/date-fns/src/fp/set/index.d.ts
new file mode 100644
index 0000000..601f00b
--- /dev/null
+++ b/date-fns/src/fp/set/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { set } from 'date-fns/fp'
+export default set
diff --git a/date-fns/src/fp/set/index.js b/date-fns/src/fp/set/index.js
new file mode 100644
index 0000000..8a17025
--- /dev/null
+++ b/date-fns/src/fp/set/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../set/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var set = convertToFP(fn, 2)
+
+export default set
diff --git a/date-fns/src/fp/set/index.js.flow b/date-fns/src/fp/set/index.js.flow
new file mode 100644
index 0000000..ccc5aca
--- /dev/null
+++ b/date-fns/src/fp/set/index.js.flow
@@ -0,0 +1,70 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+declare module.exports: CurriedFn2<
+ {
+ milliseconds?: number,
+ seconds?: number,
+ minutes?: number,
+ hours?: number,
+ date?: number,
+ month?: number,
+ year?: number,
+ },
+ Date | number,
+ Date
+>
diff --git a/date-fns/src/fp/setDate/index.d.ts b/date-fns/src/fp/setDate/index.d.ts
new file mode 100644
index 0000000..1d6343e
--- /dev/null
+++ b/date-fns/src/fp/setDate/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { setDate } from 'date-fns/fp'
+export default setDate
diff --git a/date-fns/src/fp/setDate/index.js b/date-fns/src/fp/setDate/index.js
new file mode 100644
index 0000000..6548221
--- /dev/null
+++ b/date-fns/src/fp/setDate/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../setDate/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var setDate = convertToFP(fn, 2)
+
+export default setDate
diff --git a/date-fns/src/fp/setDate/index.js.flow b/date-fns/src/fp/setDate/index.js.flow
new file mode 100644
index 0000000..75c22e2
--- /dev/null
+++ b/date-fns/src/fp/setDate/index.js.flow
@@ -0,0 +1,58 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+declare module.exports: CurriedFn2<number, Date | number, Date>
diff --git a/date-fns/src/fp/setDay/index.d.ts b/date-fns/src/fp/setDay/index.d.ts
new file mode 100644
index 0000000..aa37dd9
--- /dev/null
+++ b/date-fns/src/fp/setDay/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { setDay } from 'date-fns/fp'
+export default setDay
diff --git a/date-fns/src/fp/setDay/index.js b/date-fns/src/fp/setDay/index.js
new file mode 100644
index 0000000..3a7b804
--- /dev/null
+++ b/date-fns/src/fp/setDay/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../setDay/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var setDay = convertToFP(fn, 2)
+
+export default setDay
diff --git a/date-fns/src/fp/setDay/index.js.flow b/date-fns/src/fp/setDay/index.js.flow
new file mode 100644
index 0000000..75c22e2
--- /dev/null
+++ b/date-fns/src/fp/setDay/index.js.flow
@@ -0,0 +1,58 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+declare module.exports: CurriedFn2<number, Date | number, Date>
diff --git a/date-fns/src/fp/setDayOfYear/index.d.ts b/date-fns/src/fp/setDayOfYear/index.d.ts
new file mode 100644
index 0000000..4453a59
--- /dev/null
+++ b/date-fns/src/fp/setDayOfYear/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { setDayOfYear } from 'date-fns/fp'
+export default setDayOfYear
diff --git a/date-fns/src/fp/setDayOfYear/index.js b/date-fns/src/fp/setDayOfYear/index.js
new file mode 100644
index 0000000..f1af2c7
--- /dev/null
+++ b/date-fns/src/fp/setDayOfYear/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../setDayOfYear/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var setDayOfYear = convertToFP(fn, 2)
+
+export default setDayOfYear
diff --git a/date-fns/src/fp/setDayOfYear/index.js.flow b/date-fns/src/fp/setDayOfYear/index.js.flow
new file mode 100644
index 0000000..75c22e2
--- /dev/null
+++ b/date-fns/src/fp/setDayOfYear/index.js.flow
@@ -0,0 +1,58 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+declare module.exports: CurriedFn2<number, Date | number, Date>
diff --git a/date-fns/src/fp/setDayWithOptions/index.d.ts b/date-fns/src/fp/setDayWithOptions/index.d.ts
new file mode 100644
index 0000000..537c230
--- /dev/null
+++ b/date-fns/src/fp/setDayWithOptions/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { setDayWithOptions } from 'date-fns/fp'
+export default setDayWithOptions
diff --git a/date-fns/src/fp/setDayWithOptions/index.js b/date-fns/src/fp/setDayWithOptions/index.js
new file mode 100644
index 0000000..44a02c6
--- /dev/null
+++ b/date-fns/src/fp/setDayWithOptions/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../setDay/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var setDayWithOptions = convertToFP(fn, 3)
+
+export default setDayWithOptions
diff --git a/date-fns/src/fp/setDayWithOptions/index.js.flow b/date-fns/src/fp/setDayWithOptions/index.js.flow
new file mode 100644
index 0000000..62d0e5e
--- /dev/null
+++ b/date-fns/src/fp/setDayWithOptions/index.js.flow
@@ -0,0 +1,75 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+type CurriedFn3<A, B, C, R> = <A>(
+ a: A
+) =>
+ | CurriedFn2<B, C, R>
+ | (<A, B>(
+ a: A,
+ b: B
+ ) => CurriedFn1<C, R> | (<A, B, C>(a: A, b: B, c: C) => R))
+
+declare module.exports: CurriedFn3<
+ {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ locale?: Locale,
+ },
+ number,
+ Date | number,
+ Date
+>
diff --git a/date-fns/src/fp/setHours/index.d.ts b/date-fns/src/fp/setHours/index.d.ts
new file mode 100644
index 0000000..4ca8a06
--- /dev/null
+++ b/date-fns/src/fp/setHours/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { setHours } from 'date-fns/fp'
+export default setHours
diff --git a/date-fns/src/fp/setHours/index.js b/date-fns/src/fp/setHours/index.js
new file mode 100644
index 0000000..81688bf
--- /dev/null
+++ b/date-fns/src/fp/setHours/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../setHours/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var setHours = convertToFP(fn, 2)
+
+export default setHours
diff --git a/date-fns/src/fp/setHours/index.js.flow b/date-fns/src/fp/setHours/index.js.flow
new file mode 100644
index 0000000..75c22e2
--- /dev/null
+++ b/date-fns/src/fp/setHours/index.js.flow
@@ -0,0 +1,58 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+declare module.exports: CurriedFn2<number, Date | number, Date>
diff --git a/date-fns/src/fp/setISODay/index.d.ts b/date-fns/src/fp/setISODay/index.d.ts
new file mode 100644
index 0000000..7319d5a
--- /dev/null
+++ b/date-fns/src/fp/setISODay/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { setISODay } from 'date-fns/fp'
+export default setISODay
diff --git a/date-fns/src/fp/setISODay/index.js b/date-fns/src/fp/setISODay/index.js
new file mode 100644
index 0000000..0807db1
--- /dev/null
+++ b/date-fns/src/fp/setISODay/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../setISODay/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var setISODay = convertToFP(fn, 2)
+
+export default setISODay
diff --git a/date-fns/src/fp/setISODay/index.js.flow b/date-fns/src/fp/setISODay/index.js.flow
new file mode 100644
index 0000000..75c22e2
--- /dev/null
+++ b/date-fns/src/fp/setISODay/index.js.flow
@@ -0,0 +1,58 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+declare module.exports: CurriedFn2<number, Date | number, Date>
diff --git a/date-fns/src/fp/setISOWeek/index.d.ts b/date-fns/src/fp/setISOWeek/index.d.ts
new file mode 100644
index 0000000..ca354ce
--- /dev/null
+++ b/date-fns/src/fp/setISOWeek/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { setISOWeek } from 'date-fns/fp'
+export default setISOWeek
diff --git a/date-fns/src/fp/setISOWeek/index.js b/date-fns/src/fp/setISOWeek/index.js
new file mode 100644
index 0000000..e7823d2
--- /dev/null
+++ b/date-fns/src/fp/setISOWeek/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../setISOWeek/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var setISOWeek = convertToFP(fn, 2)
+
+export default setISOWeek
diff --git a/date-fns/src/fp/setISOWeek/index.js.flow b/date-fns/src/fp/setISOWeek/index.js.flow
new file mode 100644
index 0000000..75c22e2
--- /dev/null
+++ b/date-fns/src/fp/setISOWeek/index.js.flow
@@ -0,0 +1,58 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+declare module.exports: CurriedFn2<number, Date | number, Date>
diff --git a/date-fns/src/fp/setISOWeekYear/index.d.ts b/date-fns/src/fp/setISOWeekYear/index.d.ts
new file mode 100644
index 0000000..7e1fc21
--- /dev/null
+++ b/date-fns/src/fp/setISOWeekYear/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { setISOWeekYear } from 'date-fns/fp'
+export default setISOWeekYear
diff --git a/date-fns/src/fp/setISOWeekYear/index.js b/date-fns/src/fp/setISOWeekYear/index.js
new file mode 100644
index 0000000..94234f1
--- /dev/null
+++ b/date-fns/src/fp/setISOWeekYear/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../setISOWeekYear/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var setISOWeekYear = convertToFP(fn, 2)
+
+export default setISOWeekYear
diff --git a/date-fns/src/fp/setISOWeekYear/index.js.flow b/date-fns/src/fp/setISOWeekYear/index.js.flow
new file mode 100644
index 0000000..75c22e2
--- /dev/null
+++ b/date-fns/src/fp/setISOWeekYear/index.js.flow
@@ -0,0 +1,58 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+declare module.exports: CurriedFn2<number, Date | number, Date>
diff --git a/date-fns/src/fp/setMilliseconds/index.d.ts b/date-fns/src/fp/setMilliseconds/index.d.ts
new file mode 100644
index 0000000..0ee89fa
--- /dev/null
+++ b/date-fns/src/fp/setMilliseconds/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { setMilliseconds } from 'date-fns/fp'
+export default setMilliseconds
diff --git a/date-fns/src/fp/setMilliseconds/index.js b/date-fns/src/fp/setMilliseconds/index.js
new file mode 100644
index 0000000..32e1a47
--- /dev/null
+++ b/date-fns/src/fp/setMilliseconds/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../setMilliseconds/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var setMilliseconds = convertToFP(fn, 2)
+
+export default setMilliseconds
diff --git a/date-fns/src/fp/setMilliseconds/index.js.flow b/date-fns/src/fp/setMilliseconds/index.js.flow
new file mode 100644
index 0000000..75c22e2
--- /dev/null
+++ b/date-fns/src/fp/setMilliseconds/index.js.flow
@@ -0,0 +1,58 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+declare module.exports: CurriedFn2<number, Date | number, Date>
diff --git a/date-fns/src/fp/setMinutes/index.d.ts b/date-fns/src/fp/setMinutes/index.d.ts
new file mode 100644
index 0000000..9e8d636
--- /dev/null
+++ b/date-fns/src/fp/setMinutes/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { setMinutes } from 'date-fns/fp'
+export default setMinutes
diff --git a/date-fns/src/fp/setMinutes/index.js b/date-fns/src/fp/setMinutes/index.js
new file mode 100644
index 0000000..a22b6c1
--- /dev/null
+++ b/date-fns/src/fp/setMinutes/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../setMinutes/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var setMinutes = convertToFP(fn, 2)
+
+export default setMinutes
diff --git a/date-fns/src/fp/setMinutes/index.js.flow b/date-fns/src/fp/setMinutes/index.js.flow
new file mode 100644
index 0000000..75c22e2
--- /dev/null
+++ b/date-fns/src/fp/setMinutes/index.js.flow
@@ -0,0 +1,58 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+declare module.exports: CurriedFn2<number, Date | number, Date>
diff --git a/date-fns/src/fp/setMonth/index.d.ts b/date-fns/src/fp/setMonth/index.d.ts
new file mode 100644
index 0000000..c9647b1
--- /dev/null
+++ b/date-fns/src/fp/setMonth/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { setMonth } from 'date-fns/fp'
+export default setMonth
diff --git a/date-fns/src/fp/setMonth/index.js b/date-fns/src/fp/setMonth/index.js
new file mode 100644
index 0000000..16de856
--- /dev/null
+++ b/date-fns/src/fp/setMonth/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../setMonth/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var setMonth = convertToFP(fn, 2)
+
+export default setMonth
diff --git a/date-fns/src/fp/setMonth/index.js.flow b/date-fns/src/fp/setMonth/index.js.flow
new file mode 100644
index 0000000..75c22e2
--- /dev/null
+++ b/date-fns/src/fp/setMonth/index.js.flow
@@ -0,0 +1,58 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+declare module.exports: CurriedFn2<number, Date | number, Date>
diff --git a/date-fns/src/fp/setQuarter/index.d.ts b/date-fns/src/fp/setQuarter/index.d.ts
new file mode 100644
index 0000000..b94ff08
--- /dev/null
+++ b/date-fns/src/fp/setQuarter/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { setQuarter } from 'date-fns/fp'
+export default setQuarter
diff --git a/date-fns/src/fp/setQuarter/index.js b/date-fns/src/fp/setQuarter/index.js
new file mode 100644
index 0000000..8834f9f
--- /dev/null
+++ b/date-fns/src/fp/setQuarter/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../setQuarter/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var setQuarter = convertToFP(fn, 2)
+
+export default setQuarter
diff --git a/date-fns/src/fp/setQuarter/index.js.flow b/date-fns/src/fp/setQuarter/index.js.flow
new file mode 100644
index 0000000..75c22e2
--- /dev/null
+++ b/date-fns/src/fp/setQuarter/index.js.flow
@@ -0,0 +1,58 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+declare module.exports: CurriedFn2<number, Date | number, Date>
diff --git a/date-fns/src/fp/setSeconds/index.d.ts b/date-fns/src/fp/setSeconds/index.d.ts
new file mode 100644
index 0000000..fbfa77e
--- /dev/null
+++ b/date-fns/src/fp/setSeconds/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { setSeconds } from 'date-fns/fp'
+export default setSeconds
diff --git a/date-fns/src/fp/setSeconds/index.js b/date-fns/src/fp/setSeconds/index.js
new file mode 100644
index 0000000..2568487
--- /dev/null
+++ b/date-fns/src/fp/setSeconds/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../setSeconds/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var setSeconds = convertToFP(fn, 2)
+
+export default setSeconds
diff --git a/date-fns/src/fp/setSeconds/index.js.flow b/date-fns/src/fp/setSeconds/index.js.flow
new file mode 100644
index 0000000..75c22e2
--- /dev/null
+++ b/date-fns/src/fp/setSeconds/index.js.flow
@@ -0,0 +1,58 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+declare module.exports: CurriedFn2<number, Date | number, Date>
diff --git a/date-fns/src/fp/setWeek/index.d.ts b/date-fns/src/fp/setWeek/index.d.ts
new file mode 100644
index 0000000..d9edcaa
--- /dev/null
+++ b/date-fns/src/fp/setWeek/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { setWeek } from 'date-fns/fp'
+export default setWeek
diff --git a/date-fns/src/fp/setWeek/index.js b/date-fns/src/fp/setWeek/index.js
new file mode 100644
index 0000000..b1788fc
--- /dev/null
+++ b/date-fns/src/fp/setWeek/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../setWeek/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var setWeek = convertToFP(fn, 2)
+
+export default setWeek
diff --git a/date-fns/src/fp/setWeek/index.js.flow b/date-fns/src/fp/setWeek/index.js.flow
new file mode 100644
index 0000000..75c22e2
--- /dev/null
+++ b/date-fns/src/fp/setWeek/index.js.flow
@@ -0,0 +1,58 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+declare module.exports: CurriedFn2<number, Date | number, Date>
diff --git a/date-fns/src/fp/setWeekWithOptions/index.d.ts b/date-fns/src/fp/setWeekWithOptions/index.d.ts
new file mode 100644
index 0000000..2971c7a
--- /dev/null
+++ b/date-fns/src/fp/setWeekWithOptions/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { setWeekWithOptions } from 'date-fns/fp'
+export default setWeekWithOptions
diff --git a/date-fns/src/fp/setWeekWithOptions/index.js b/date-fns/src/fp/setWeekWithOptions/index.js
new file mode 100644
index 0000000..bbbb2ea
--- /dev/null
+++ b/date-fns/src/fp/setWeekWithOptions/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../setWeek/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var setWeekWithOptions = convertToFP(fn, 3)
+
+export default setWeekWithOptions
diff --git a/date-fns/src/fp/setWeekWithOptions/index.js.flow b/date-fns/src/fp/setWeekWithOptions/index.js.flow
new file mode 100644
index 0000000..ffea29c
--- /dev/null
+++ b/date-fns/src/fp/setWeekWithOptions/index.js.flow
@@ -0,0 +1,76 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+type CurriedFn3<A, B, C, R> = <A>(
+ a: A
+) =>
+ | CurriedFn2<B, C, R>
+ | (<A, B>(
+ a: A,
+ b: B
+ ) => CurriedFn1<C, R> | (<A, B, C>(a: A, b: B, c: C) => R))
+
+declare module.exports: CurriedFn3<
+ {
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ locale?: Locale,
+ },
+ number,
+ Date | number,
+ Date
+>
diff --git a/date-fns/src/fp/setWeekYear/index.d.ts b/date-fns/src/fp/setWeekYear/index.d.ts
new file mode 100644
index 0000000..7d2c6cc
--- /dev/null
+++ b/date-fns/src/fp/setWeekYear/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { setWeekYear } from 'date-fns/fp'
+export default setWeekYear
diff --git a/date-fns/src/fp/setWeekYear/index.js b/date-fns/src/fp/setWeekYear/index.js
new file mode 100644
index 0000000..2b34888
--- /dev/null
+++ b/date-fns/src/fp/setWeekYear/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../setWeekYear/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var setWeekYear = convertToFP(fn, 2)
+
+export default setWeekYear
diff --git a/date-fns/src/fp/setWeekYear/index.js.flow b/date-fns/src/fp/setWeekYear/index.js.flow
new file mode 100644
index 0000000..75c22e2
--- /dev/null
+++ b/date-fns/src/fp/setWeekYear/index.js.flow
@@ -0,0 +1,58 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+declare module.exports: CurriedFn2<number, Date | number, Date>
diff --git a/date-fns/src/fp/setWeekYearWithOptions/index.d.ts b/date-fns/src/fp/setWeekYearWithOptions/index.d.ts
new file mode 100644
index 0000000..5d52f8f
--- /dev/null
+++ b/date-fns/src/fp/setWeekYearWithOptions/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { setWeekYearWithOptions } from 'date-fns/fp'
+export default setWeekYearWithOptions
diff --git a/date-fns/src/fp/setWeekYearWithOptions/index.js b/date-fns/src/fp/setWeekYearWithOptions/index.js
new file mode 100644
index 0000000..2f13647
--- /dev/null
+++ b/date-fns/src/fp/setWeekYearWithOptions/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../setWeekYear/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var setWeekYearWithOptions = convertToFP(fn, 3)
+
+export default setWeekYearWithOptions
diff --git a/date-fns/src/fp/setWeekYearWithOptions/index.js.flow b/date-fns/src/fp/setWeekYearWithOptions/index.js.flow
new file mode 100644
index 0000000..ffea29c
--- /dev/null
+++ b/date-fns/src/fp/setWeekYearWithOptions/index.js.flow
@@ -0,0 +1,76 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+type CurriedFn3<A, B, C, R> = <A>(
+ a: A
+) =>
+ | CurriedFn2<B, C, R>
+ | (<A, B>(
+ a: A,
+ b: B
+ ) => CurriedFn1<C, R> | (<A, B, C>(a: A, b: B, c: C) => R))
+
+declare module.exports: CurriedFn3<
+ {
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ locale?: Locale,
+ },
+ number,
+ Date | number,
+ Date
+>
diff --git a/date-fns/src/fp/setYear/index.d.ts b/date-fns/src/fp/setYear/index.d.ts
new file mode 100644
index 0000000..be24ce0
--- /dev/null
+++ b/date-fns/src/fp/setYear/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { setYear } from 'date-fns/fp'
+export default setYear
diff --git a/date-fns/src/fp/setYear/index.js b/date-fns/src/fp/setYear/index.js
new file mode 100644
index 0000000..edd0e1c
--- /dev/null
+++ b/date-fns/src/fp/setYear/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../setYear/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var setYear = convertToFP(fn, 2)
+
+export default setYear
diff --git a/date-fns/src/fp/setYear/index.js.flow b/date-fns/src/fp/setYear/index.js.flow
new file mode 100644
index 0000000..75c22e2
--- /dev/null
+++ b/date-fns/src/fp/setYear/index.js.flow
@@ -0,0 +1,58 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+declare module.exports: CurriedFn2<number, Date | number, Date>
diff --git a/date-fns/src/fp/startOfDay/index.d.ts b/date-fns/src/fp/startOfDay/index.d.ts
new file mode 100644
index 0000000..fed6b05
--- /dev/null
+++ b/date-fns/src/fp/startOfDay/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { startOfDay } from 'date-fns/fp'
+export default startOfDay
diff --git a/date-fns/src/fp/startOfDay/index.js b/date-fns/src/fp/startOfDay/index.js
new file mode 100644
index 0000000..2347aef
--- /dev/null
+++ b/date-fns/src/fp/startOfDay/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../startOfDay/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var startOfDay = convertToFP(fn, 1)
+
+export default startOfDay
diff --git a/date-fns/src/fp/startOfDay/index.js.flow b/date-fns/src/fp/startOfDay/index.js.flow
new file mode 100644
index 0000000..1fc072e
--- /dev/null
+++ b/date-fns/src/fp/startOfDay/index.js.flow
@@ -0,0 +1,54 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+declare module.exports: CurriedFn1<Date | number, Date>
diff --git a/date-fns/src/fp/startOfDecade/index.d.ts b/date-fns/src/fp/startOfDecade/index.d.ts
new file mode 100644
index 0000000..127c156
--- /dev/null
+++ b/date-fns/src/fp/startOfDecade/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { startOfDecade } from 'date-fns/fp'
+export default startOfDecade
diff --git a/date-fns/src/fp/startOfDecade/index.js b/date-fns/src/fp/startOfDecade/index.js
new file mode 100644
index 0000000..a051c74
--- /dev/null
+++ b/date-fns/src/fp/startOfDecade/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../startOfDecade/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var startOfDecade = convertToFP(fn, 1)
+
+export default startOfDecade
diff --git a/date-fns/src/fp/startOfDecade/index.js.flow b/date-fns/src/fp/startOfDecade/index.js.flow
new file mode 100644
index 0000000..1fc072e
--- /dev/null
+++ b/date-fns/src/fp/startOfDecade/index.js.flow
@@ -0,0 +1,54 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+declare module.exports: CurriedFn1<Date | number, Date>
diff --git a/date-fns/src/fp/startOfHour/index.d.ts b/date-fns/src/fp/startOfHour/index.d.ts
new file mode 100644
index 0000000..9a1905e
--- /dev/null
+++ b/date-fns/src/fp/startOfHour/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { startOfHour } from 'date-fns/fp'
+export default startOfHour
diff --git a/date-fns/src/fp/startOfHour/index.js b/date-fns/src/fp/startOfHour/index.js
new file mode 100644
index 0000000..33d20e6
--- /dev/null
+++ b/date-fns/src/fp/startOfHour/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../startOfHour/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var startOfHour = convertToFP(fn, 1)
+
+export default startOfHour
diff --git a/date-fns/src/fp/startOfHour/index.js.flow b/date-fns/src/fp/startOfHour/index.js.flow
new file mode 100644
index 0000000..1fc072e
--- /dev/null
+++ b/date-fns/src/fp/startOfHour/index.js.flow
@@ -0,0 +1,54 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+declare module.exports: CurriedFn1<Date | number, Date>
diff --git a/date-fns/src/fp/startOfISOWeek/index.d.ts b/date-fns/src/fp/startOfISOWeek/index.d.ts
new file mode 100644
index 0000000..008f896
--- /dev/null
+++ b/date-fns/src/fp/startOfISOWeek/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { startOfISOWeek } from 'date-fns/fp'
+export default startOfISOWeek
diff --git a/date-fns/src/fp/startOfISOWeek/index.js b/date-fns/src/fp/startOfISOWeek/index.js
new file mode 100644
index 0000000..e84f988
--- /dev/null
+++ b/date-fns/src/fp/startOfISOWeek/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../startOfISOWeek/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var startOfISOWeek = convertToFP(fn, 1)
+
+export default startOfISOWeek
diff --git a/date-fns/src/fp/startOfISOWeek/index.js.flow b/date-fns/src/fp/startOfISOWeek/index.js.flow
new file mode 100644
index 0000000..1fc072e
--- /dev/null
+++ b/date-fns/src/fp/startOfISOWeek/index.js.flow
@@ -0,0 +1,54 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+declare module.exports: CurriedFn1<Date | number, Date>
diff --git a/date-fns/src/fp/startOfISOWeekYear/index.d.ts b/date-fns/src/fp/startOfISOWeekYear/index.d.ts
new file mode 100644
index 0000000..aab0b5a
--- /dev/null
+++ b/date-fns/src/fp/startOfISOWeekYear/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { startOfISOWeekYear } from 'date-fns/fp'
+export default startOfISOWeekYear
diff --git a/date-fns/src/fp/startOfISOWeekYear/index.js b/date-fns/src/fp/startOfISOWeekYear/index.js
new file mode 100644
index 0000000..e33f0ed
--- /dev/null
+++ b/date-fns/src/fp/startOfISOWeekYear/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../startOfISOWeekYear/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var startOfISOWeekYear = convertToFP(fn, 1)
+
+export default startOfISOWeekYear
diff --git a/date-fns/src/fp/startOfISOWeekYear/index.js.flow b/date-fns/src/fp/startOfISOWeekYear/index.js.flow
new file mode 100644
index 0000000..1fc072e
--- /dev/null
+++ b/date-fns/src/fp/startOfISOWeekYear/index.js.flow
@@ -0,0 +1,54 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+declare module.exports: CurriedFn1<Date | number, Date>
diff --git a/date-fns/src/fp/startOfMinute/index.d.ts b/date-fns/src/fp/startOfMinute/index.d.ts
new file mode 100644
index 0000000..013f3a4
--- /dev/null
+++ b/date-fns/src/fp/startOfMinute/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { startOfMinute } from 'date-fns/fp'
+export default startOfMinute
diff --git a/date-fns/src/fp/startOfMinute/index.js b/date-fns/src/fp/startOfMinute/index.js
new file mode 100644
index 0000000..e7d001d
--- /dev/null
+++ b/date-fns/src/fp/startOfMinute/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../startOfMinute/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var startOfMinute = convertToFP(fn, 1)
+
+export default startOfMinute
diff --git a/date-fns/src/fp/startOfMinute/index.js.flow b/date-fns/src/fp/startOfMinute/index.js.flow
new file mode 100644
index 0000000..1fc072e
--- /dev/null
+++ b/date-fns/src/fp/startOfMinute/index.js.flow
@@ -0,0 +1,54 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+declare module.exports: CurriedFn1<Date | number, Date>
diff --git a/date-fns/src/fp/startOfMonth/index.d.ts b/date-fns/src/fp/startOfMonth/index.d.ts
new file mode 100644
index 0000000..edbb15f
--- /dev/null
+++ b/date-fns/src/fp/startOfMonth/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { startOfMonth } from 'date-fns/fp'
+export default startOfMonth
diff --git a/date-fns/src/fp/startOfMonth/index.js b/date-fns/src/fp/startOfMonth/index.js
new file mode 100644
index 0000000..fafef31
--- /dev/null
+++ b/date-fns/src/fp/startOfMonth/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../startOfMonth/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var startOfMonth = convertToFP(fn, 1)
+
+export default startOfMonth
diff --git a/date-fns/src/fp/startOfMonth/index.js.flow b/date-fns/src/fp/startOfMonth/index.js.flow
new file mode 100644
index 0000000..1fc072e
--- /dev/null
+++ b/date-fns/src/fp/startOfMonth/index.js.flow
@@ -0,0 +1,54 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+declare module.exports: CurriedFn1<Date | number, Date>
diff --git a/date-fns/src/fp/startOfQuarter/index.d.ts b/date-fns/src/fp/startOfQuarter/index.d.ts
new file mode 100644
index 0000000..1c3b602
--- /dev/null
+++ b/date-fns/src/fp/startOfQuarter/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { startOfQuarter } from 'date-fns/fp'
+export default startOfQuarter
diff --git a/date-fns/src/fp/startOfQuarter/index.js b/date-fns/src/fp/startOfQuarter/index.js
new file mode 100644
index 0000000..8a57f8f
--- /dev/null
+++ b/date-fns/src/fp/startOfQuarter/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../startOfQuarter/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var startOfQuarter = convertToFP(fn, 1)
+
+export default startOfQuarter
diff --git a/date-fns/src/fp/startOfQuarter/index.js.flow b/date-fns/src/fp/startOfQuarter/index.js.flow
new file mode 100644
index 0000000..1fc072e
--- /dev/null
+++ b/date-fns/src/fp/startOfQuarter/index.js.flow
@@ -0,0 +1,54 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+declare module.exports: CurriedFn1<Date | number, Date>
diff --git a/date-fns/src/fp/startOfSecond/index.d.ts b/date-fns/src/fp/startOfSecond/index.d.ts
new file mode 100644
index 0000000..866aa6f
--- /dev/null
+++ b/date-fns/src/fp/startOfSecond/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { startOfSecond } from 'date-fns/fp'
+export default startOfSecond
diff --git a/date-fns/src/fp/startOfSecond/index.js b/date-fns/src/fp/startOfSecond/index.js
new file mode 100644
index 0000000..91548ab
--- /dev/null
+++ b/date-fns/src/fp/startOfSecond/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../startOfSecond/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var startOfSecond = convertToFP(fn, 1)
+
+export default startOfSecond
diff --git a/date-fns/src/fp/startOfSecond/index.js.flow b/date-fns/src/fp/startOfSecond/index.js.flow
new file mode 100644
index 0000000..1fc072e
--- /dev/null
+++ b/date-fns/src/fp/startOfSecond/index.js.flow
@@ -0,0 +1,54 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+declare module.exports: CurriedFn1<Date | number, Date>
diff --git a/date-fns/src/fp/startOfWeek/index.d.ts b/date-fns/src/fp/startOfWeek/index.d.ts
new file mode 100644
index 0000000..ab17841
--- /dev/null
+++ b/date-fns/src/fp/startOfWeek/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { startOfWeek } from 'date-fns/fp'
+export default startOfWeek
diff --git a/date-fns/src/fp/startOfWeek/index.js b/date-fns/src/fp/startOfWeek/index.js
new file mode 100644
index 0000000..7de56af
--- /dev/null
+++ b/date-fns/src/fp/startOfWeek/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../startOfWeek/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var startOfWeek = convertToFP(fn, 1)
+
+export default startOfWeek
diff --git a/date-fns/src/fp/startOfWeek/index.js.flow b/date-fns/src/fp/startOfWeek/index.js.flow
new file mode 100644
index 0000000..1fc072e
--- /dev/null
+++ b/date-fns/src/fp/startOfWeek/index.js.flow
@@ -0,0 +1,54 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+declare module.exports: CurriedFn1<Date | number, Date>
diff --git a/date-fns/src/fp/startOfWeekWithOptions/index.d.ts b/date-fns/src/fp/startOfWeekWithOptions/index.d.ts
new file mode 100644
index 0000000..0bd5568
--- /dev/null
+++ b/date-fns/src/fp/startOfWeekWithOptions/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { startOfWeekWithOptions } from 'date-fns/fp'
+export default startOfWeekWithOptions
diff --git a/date-fns/src/fp/startOfWeekWithOptions/index.js b/date-fns/src/fp/startOfWeekWithOptions/index.js
new file mode 100644
index 0000000..22b45ed
--- /dev/null
+++ b/date-fns/src/fp/startOfWeekWithOptions/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../startOfWeek/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var startOfWeekWithOptions = convertToFP(fn, 2)
+
+export default startOfWeekWithOptions
diff --git a/date-fns/src/fp/startOfWeekWithOptions/index.js.flow b/date-fns/src/fp/startOfWeekWithOptions/index.js.flow
new file mode 100644
index 0000000..9821646
--- /dev/null
+++ b/date-fns/src/fp/startOfWeekWithOptions/index.js.flow
@@ -0,0 +1,65 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+declare module.exports: CurriedFn2<
+ {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ locale?: Locale,
+ },
+ Date | number,
+ Date
+>
diff --git a/date-fns/src/fp/startOfWeekYear/index.d.ts b/date-fns/src/fp/startOfWeekYear/index.d.ts
new file mode 100644
index 0000000..17ce1cb
--- /dev/null
+++ b/date-fns/src/fp/startOfWeekYear/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { startOfWeekYear } from 'date-fns/fp'
+export default startOfWeekYear
diff --git a/date-fns/src/fp/startOfWeekYear/index.js b/date-fns/src/fp/startOfWeekYear/index.js
new file mode 100644
index 0000000..aeb28a6
--- /dev/null
+++ b/date-fns/src/fp/startOfWeekYear/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../startOfWeekYear/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var startOfWeekYear = convertToFP(fn, 1)
+
+export default startOfWeekYear
diff --git a/date-fns/src/fp/startOfWeekYear/index.js.flow b/date-fns/src/fp/startOfWeekYear/index.js.flow
new file mode 100644
index 0000000..1fc072e
--- /dev/null
+++ b/date-fns/src/fp/startOfWeekYear/index.js.flow
@@ -0,0 +1,54 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+declare module.exports: CurriedFn1<Date | number, Date>
diff --git a/date-fns/src/fp/startOfWeekYearWithOptions/index.d.ts b/date-fns/src/fp/startOfWeekYearWithOptions/index.d.ts
new file mode 100644
index 0000000..26f9e80
--- /dev/null
+++ b/date-fns/src/fp/startOfWeekYearWithOptions/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { startOfWeekYearWithOptions } from 'date-fns/fp'
+export default startOfWeekYearWithOptions
diff --git a/date-fns/src/fp/startOfWeekYearWithOptions/index.js b/date-fns/src/fp/startOfWeekYearWithOptions/index.js
new file mode 100644
index 0000000..a2c4107
--- /dev/null
+++ b/date-fns/src/fp/startOfWeekYearWithOptions/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../startOfWeekYear/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var startOfWeekYearWithOptions = convertToFP(fn, 2)
+
+export default startOfWeekYearWithOptions
diff --git a/date-fns/src/fp/startOfWeekYearWithOptions/index.js.flow b/date-fns/src/fp/startOfWeekYearWithOptions/index.js.flow
new file mode 100644
index 0000000..236eaa5
--- /dev/null
+++ b/date-fns/src/fp/startOfWeekYearWithOptions/index.js.flow
@@ -0,0 +1,66 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+declare module.exports: CurriedFn2<
+ {
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ locale?: Locale,
+ },
+ Date | number,
+ Date
+>
diff --git a/date-fns/src/fp/startOfYear/index.d.ts b/date-fns/src/fp/startOfYear/index.d.ts
new file mode 100644
index 0000000..6e94924
--- /dev/null
+++ b/date-fns/src/fp/startOfYear/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { startOfYear } from 'date-fns/fp'
+export default startOfYear
diff --git a/date-fns/src/fp/startOfYear/index.js b/date-fns/src/fp/startOfYear/index.js
new file mode 100644
index 0000000..2f7559b
--- /dev/null
+++ b/date-fns/src/fp/startOfYear/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../startOfYear/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var startOfYear = convertToFP(fn, 1)
+
+export default startOfYear
diff --git a/date-fns/src/fp/startOfYear/index.js.flow b/date-fns/src/fp/startOfYear/index.js.flow
new file mode 100644
index 0000000..1fc072e
--- /dev/null
+++ b/date-fns/src/fp/startOfYear/index.js.flow
@@ -0,0 +1,54 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+declare module.exports: CurriedFn1<Date | number, Date>
diff --git a/date-fns/src/fp/sub/index.d.ts b/date-fns/src/fp/sub/index.d.ts
new file mode 100644
index 0000000..c50f32f
--- /dev/null
+++ b/date-fns/src/fp/sub/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { sub } from 'date-fns/fp'
+export default sub
diff --git a/date-fns/src/fp/sub/index.js b/date-fns/src/fp/sub/index.js
new file mode 100644
index 0000000..cc93525
--- /dev/null
+++ b/date-fns/src/fp/sub/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../sub/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var sub = convertToFP(fn, 2)
+
+export default sub
diff --git a/date-fns/src/fp/sub/index.js.flow b/date-fns/src/fp/sub/index.js.flow
new file mode 100644
index 0000000..3d4363b
--- /dev/null
+++ b/date-fns/src/fp/sub/index.js.flow
@@ -0,0 +1,58 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+declare module.exports: CurriedFn2<Duration, Date | number, Date>
diff --git a/date-fns/src/fp/subBusinessDays/index.d.ts b/date-fns/src/fp/subBusinessDays/index.d.ts
new file mode 100644
index 0000000..6f7c95a
--- /dev/null
+++ b/date-fns/src/fp/subBusinessDays/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { subBusinessDays } from 'date-fns/fp'
+export default subBusinessDays
diff --git a/date-fns/src/fp/subBusinessDays/index.js b/date-fns/src/fp/subBusinessDays/index.js
new file mode 100644
index 0000000..805c008
--- /dev/null
+++ b/date-fns/src/fp/subBusinessDays/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../subBusinessDays/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var subBusinessDays = convertToFP(fn, 2)
+
+export default subBusinessDays
diff --git a/date-fns/src/fp/subBusinessDays/index.js.flow b/date-fns/src/fp/subBusinessDays/index.js.flow
new file mode 100644
index 0000000..75c22e2
--- /dev/null
+++ b/date-fns/src/fp/subBusinessDays/index.js.flow
@@ -0,0 +1,58 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+declare module.exports: CurriedFn2<number, Date | number, Date>
diff --git a/date-fns/src/fp/subDays/index.d.ts b/date-fns/src/fp/subDays/index.d.ts
new file mode 100644
index 0000000..8a72d43
--- /dev/null
+++ b/date-fns/src/fp/subDays/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { subDays } from 'date-fns/fp'
+export default subDays
diff --git a/date-fns/src/fp/subDays/index.js b/date-fns/src/fp/subDays/index.js
new file mode 100644
index 0000000..2b5d109
--- /dev/null
+++ b/date-fns/src/fp/subDays/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../subDays/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var subDays = convertToFP(fn, 2)
+
+export default subDays
diff --git a/date-fns/src/fp/subDays/index.js.flow b/date-fns/src/fp/subDays/index.js.flow
new file mode 100644
index 0000000..75c22e2
--- /dev/null
+++ b/date-fns/src/fp/subDays/index.js.flow
@@ -0,0 +1,58 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+declare module.exports: CurriedFn2<number, Date | number, Date>
diff --git a/date-fns/src/fp/subHours/index.d.ts b/date-fns/src/fp/subHours/index.d.ts
new file mode 100644
index 0000000..6fcfa1f
--- /dev/null
+++ b/date-fns/src/fp/subHours/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { subHours } from 'date-fns/fp'
+export default subHours
diff --git a/date-fns/src/fp/subHours/index.js b/date-fns/src/fp/subHours/index.js
new file mode 100644
index 0000000..6048270
--- /dev/null
+++ b/date-fns/src/fp/subHours/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../subHours/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var subHours = convertToFP(fn, 2)
+
+export default subHours
diff --git a/date-fns/src/fp/subHours/index.js.flow b/date-fns/src/fp/subHours/index.js.flow
new file mode 100644
index 0000000..75c22e2
--- /dev/null
+++ b/date-fns/src/fp/subHours/index.js.flow
@@ -0,0 +1,58 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+declare module.exports: CurriedFn2<number, Date | number, Date>
diff --git a/date-fns/src/fp/subISOWeekYears/index.d.ts b/date-fns/src/fp/subISOWeekYears/index.d.ts
new file mode 100644
index 0000000..430fca4
--- /dev/null
+++ b/date-fns/src/fp/subISOWeekYears/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { subISOWeekYears } from 'date-fns/fp'
+export default subISOWeekYears
diff --git a/date-fns/src/fp/subISOWeekYears/index.js b/date-fns/src/fp/subISOWeekYears/index.js
new file mode 100644
index 0000000..af21ed1
--- /dev/null
+++ b/date-fns/src/fp/subISOWeekYears/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../subISOWeekYears/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var subISOWeekYears = convertToFP(fn, 2)
+
+export default subISOWeekYears
diff --git a/date-fns/src/fp/subISOWeekYears/index.js.flow b/date-fns/src/fp/subISOWeekYears/index.js.flow
new file mode 100644
index 0000000..75c22e2
--- /dev/null
+++ b/date-fns/src/fp/subISOWeekYears/index.js.flow
@@ -0,0 +1,58 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+declare module.exports: CurriedFn2<number, Date | number, Date>
diff --git a/date-fns/src/fp/subMilliseconds/index.d.ts b/date-fns/src/fp/subMilliseconds/index.d.ts
new file mode 100644
index 0000000..9310a1c
--- /dev/null
+++ b/date-fns/src/fp/subMilliseconds/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { subMilliseconds } from 'date-fns/fp'
+export default subMilliseconds
diff --git a/date-fns/src/fp/subMilliseconds/index.js b/date-fns/src/fp/subMilliseconds/index.js
new file mode 100644
index 0000000..4d1cfb4
--- /dev/null
+++ b/date-fns/src/fp/subMilliseconds/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../subMilliseconds/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var subMilliseconds = convertToFP(fn, 2)
+
+export default subMilliseconds
diff --git a/date-fns/src/fp/subMilliseconds/index.js.flow b/date-fns/src/fp/subMilliseconds/index.js.flow
new file mode 100644
index 0000000..75c22e2
--- /dev/null
+++ b/date-fns/src/fp/subMilliseconds/index.js.flow
@@ -0,0 +1,58 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+declare module.exports: CurriedFn2<number, Date | number, Date>
diff --git a/date-fns/src/fp/subMinutes/index.d.ts b/date-fns/src/fp/subMinutes/index.d.ts
new file mode 100644
index 0000000..0b7db10
--- /dev/null
+++ b/date-fns/src/fp/subMinutes/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { subMinutes } from 'date-fns/fp'
+export default subMinutes
diff --git a/date-fns/src/fp/subMinutes/index.js b/date-fns/src/fp/subMinutes/index.js
new file mode 100644
index 0000000..de68341
--- /dev/null
+++ b/date-fns/src/fp/subMinutes/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../subMinutes/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var subMinutes = convertToFP(fn, 2)
+
+export default subMinutes
diff --git a/date-fns/src/fp/subMinutes/index.js.flow b/date-fns/src/fp/subMinutes/index.js.flow
new file mode 100644
index 0000000..75c22e2
--- /dev/null
+++ b/date-fns/src/fp/subMinutes/index.js.flow
@@ -0,0 +1,58 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+declare module.exports: CurriedFn2<number, Date | number, Date>
diff --git a/date-fns/src/fp/subMonths/index.d.ts b/date-fns/src/fp/subMonths/index.d.ts
new file mode 100644
index 0000000..3d03d27
--- /dev/null
+++ b/date-fns/src/fp/subMonths/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { subMonths } from 'date-fns/fp'
+export default subMonths
diff --git a/date-fns/src/fp/subMonths/index.js b/date-fns/src/fp/subMonths/index.js
new file mode 100644
index 0000000..328a912
--- /dev/null
+++ b/date-fns/src/fp/subMonths/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../subMonths/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var subMonths = convertToFP(fn, 2)
+
+export default subMonths
diff --git a/date-fns/src/fp/subMonths/index.js.flow b/date-fns/src/fp/subMonths/index.js.flow
new file mode 100644
index 0000000..75c22e2
--- /dev/null
+++ b/date-fns/src/fp/subMonths/index.js.flow
@@ -0,0 +1,58 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+declare module.exports: CurriedFn2<number, Date | number, Date>
diff --git a/date-fns/src/fp/subQuarters/index.d.ts b/date-fns/src/fp/subQuarters/index.d.ts
new file mode 100644
index 0000000..6362cec
--- /dev/null
+++ b/date-fns/src/fp/subQuarters/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { subQuarters } from 'date-fns/fp'
+export default subQuarters
diff --git a/date-fns/src/fp/subQuarters/index.js b/date-fns/src/fp/subQuarters/index.js
new file mode 100644
index 0000000..ae7cfd7
--- /dev/null
+++ b/date-fns/src/fp/subQuarters/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../subQuarters/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var subQuarters = convertToFP(fn, 2)
+
+export default subQuarters
diff --git a/date-fns/src/fp/subQuarters/index.js.flow b/date-fns/src/fp/subQuarters/index.js.flow
new file mode 100644
index 0000000..75c22e2
--- /dev/null
+++ b/date-fns/src/fp/subQuarters/index.js.flow
@@ -0,0 +1,58 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+declare module.exports: CurriedFn2<number, Date | number, Date>
diff --git a/date-fns/src/fp/subSeconds/index.d.ts b/date-fns/src/fp/subSeconds/index.d.ts
new file mode 100644
index 0000000..c5c6635
--- /dev/null
+++ b/date-fns/src/fp/subSeconds/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { subSeconds } from 'date-fns/fp'
+export default subSeconds
diff --git a/date-fns/src/fp/subSeconds/index.js b/date-fns/src/fp/subSeconds/index.js
new file mode 100644
index 0000000..5e70757
--- /dev/null
+++ b/date-fns/src/fp/subSeconds/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../subSeconds/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var subSeconds = convertToFP(fn, 2)
+
+export default subSeconds
diff --git a/date-fns/src/fp/subSeconds/index.js.flow b/date-fns/src/fp/subSeconds/index.js.flow
new file mode 100644
index 0000000..75c22e2
--- /dev/null
+++ b/date-fns/src/fp/subSeconds/index.js.flow
@@ -0,0 +1,58 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+declare module.exports: CurriedFn2<number, Date | number, Date>
diff --git a/date-fns/src/fp/subWeeks/index.d.ts b/date-fns/src/fp/subWeeks/index.d.ts
new file mode 100644
index 0000000..18eebcb
--- /dev/null
+++ b/date-fns/src/fp/subWeeks/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { subWeeks } from 'date-fns/fp'
+export default subWeeks
diff --git a/date-fns/src/fp/subWeeks/index.js b/date-fns/src/fp/subWeeks/index.js
new file mode 100644
index 0000000..496a43a
--- /dev/null
+++ b/date-fns/src/fp/subWeeks/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../subWeeks/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var subWeeks = convertToFP(fn, 2)
+
+export default subWeeks
diff --git a/date-fns/src/fp/subWeeks/index.js.flow b/date-fns/src/fp/subWeeks/index.js.flow
new file mode 100644
index 0000000..75c22e2
--- /dev/null
+++ b/date-fns/src/fp/subWeeks/index.js.flow
@@ -0,0 +1,58 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+declare module.exports: CurriedFn2<number, Date | number, Date>
diff --git a/date-fns/src/fp/subYears/index.d.ts b/date-fns/src/fp/subYears/index.d.ts
new file mode 100644
index 0000000..55abb01
--- /dev/null
+++ b/date-fns/src/fp/subYears/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { subYears } from 'date-fns/fp'
+export default subYears
diff --git a/date-fns/src/fp/subYears/index.js b/date-fns/src/fp/subYears/index.js
new file mode 100644
index 0000000..5ae0b22
--- /dev/null
+++ b/date-fns/src/fp/subYears/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../subYears/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var subYears = convertToFP(fn, 2)
+
+export default subYears
diff --git a/date-fns/src/fp/subYears/index.js.flow b/date-fns/src/fp/subYears/index.js.flow
new file mode 100644
index 0000000..75c22e2
--- /dev/null
+++ b/date-fns/src/fp/subYears/index.js.flow
@@ -0,0 +1,58 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+type CurriedFn2<A, B, R> = <A>(
+ a: A
+) => CurriedFn1<B, R> | (<A, B>(a: A, b: B) => R)
+
+declare module.exports: CurriedFn2<number, Date | number, Date>
diff --git a/date-fns/src/fp/test.js b/date-fns/src/fp/test.js
new file mode 100644
index 0000000..cb69259
--- /dev/null
+++ b/date-fns/src/fp/test.js
@@ -0,0 +1,1045 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import * as fp from '.'
+
+describe('FP functions', function() {
+ it('addDays', function() {
+ var result = fp.addDays(10)(new Date(2014, 8 /* Sep */, 1))
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */, 11))
+ })
+
+ it('addHours', function() {
+ var result = fp.addHours(2)(new Date(2014, 6 /* Jul */, 10, 23, 0))
+ assert.deepEqual(result, new Date(2014, 6 /* Jul */, 11, 1, 0))
+ })
+
+ it('addISOWeekYears', function() {
+ var result = fp.addISOWeekYears(5)(new Date(2010, 6 /* Jul */, 2))
+ assert.deepEqual(result, new Date(2015, 5 /* Jun */, 26))
+ })
+
+ it('addMilliseconds', function() {
+ var result = fp.addMilliseconds(750)(
+ new Date(2014, 6 /* Jul */, 10, 12, 45, 30, 0)
+ )
+ assert.deepEqual(result, new Date(2014, 6 /* Jul */, 10, 12, 45, 30, 750))
+ })
+
+ it('addMinutes', function() {
+ var result = fp.addMinutes(30)(new Date(2014, 6 /* Jul */, 10, 12, 0))
+ assert.deepEqual(result, new Date(2014, 6 /* Jul */, 10, 12, 30))
+ })
+
+ it('addMonths', function() {
+ var result = fp.addMonths(5)(new Date(2014, 8 /* Sep */, 1))
+ assert.deepEqual(result, new Date(2015, 1 /* Feb */, 1))
+ })
+
+ it('addQuarters', function() {
+ var result = fp.addQuarters(1)(new Date(2014, 8 /* Sep */, 1))
+ assert.deepEqual(result, new Date(2014, 11 /* Dec */, 1))
+ })
+
+ it('addSeconds', function() {
+ var result = fp.addSeconds(30)(new Date(2014, 6 /* Jul */, 10, 12, 45, 0))
+ assert.deepEqual(result, new Date(2014, 6 /* Jul */, 10, 12, 45, 30))
+ })
+
+ it('addWeeks', function() {
+ var result = fp.addWeeks(4)(new Date(2014, 8 /* Sep */, 1))
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */, 29))
+ })
+
+ it('addYears', function() {
+ var result = fp.addYears(5)(new Date(2014, 8 /* Sep */, 1))
+ assert.deepEqual(result, new Date(2019, 8 /* Sep */, 1))
+ })
+
+ it('areIntervalsOverlapping', function() {
+ var leftInterval = {
+ start: new Date(2016, 10, 10, 13, 0, 0),
+ end: new Date(2016, 11, 3, 15, 0, 0)
+ }
+ var rightInterval = {
+ start: new Date(2016, 10, 14),
+ end: new Date(2016, 10, 14)
+ }
+
+ var result = fp.areIntervalsOverlapping(rightInterval)(leftInterval)
+ assert(result === true)
+ })
+
+ it('closestIndexTo', function() {
+ var date = new Date(2014, 6 /* Jul */, 2)
+ var result = fp.closestIndexTo([
+ new Date(2015, 7 /* Aug */, 31),
+ new Date(2012, 6 /* Jul */, 2)
+ ])(date)
+ assert.equal(result, 0)
+ })
+
+ it('closestTo', function() {
+ var date = new Date(2014, 6 /* Jul */, 2)
+ var result = fp.closestTo([
+ new Date(2015, 7 /* Aug */, 31),
+ new Date(2012, 6 /* Jul */, 2)
+ ])(date)
+ assert.deepEqual(result, new Date(2015, 7 /* Aug */, 31))
+ })
+
+ it('compareAsc', function() {
+ var result = fp.compareAsc(new Date(1989, 6 /* Jul */, 10))(
+ new Date(1987, 1 /* Feb */, 11)
+ )
+ assert(result === -1)
+ })
+
+ it('compareDesc', function() {
+ var result = fp.compareDesc(new Date(1989, 6 /* Jul */, 10))(
+ new Date(1987, 1 /* Feb */, 11)
+ )
+ assert(result === 1)
+ })
+
+ it('differenceInCalendarDays', function() {
+ var result = fp.differenceInCalendarDays(
+ new Date(2011, 6 /* Jul */, 2, 6, 0)
+ )(new Date(2012, 6 /* Jul */, 2, 18, 0))
+ assert(result === 366)
+ })
+
+ it('differenceInCalendarISOWeeks', function() {
+ var result = fp.differenceInCalendarISOWeeks(
+ new Date(2014, 5 /* Jun */, 29, 6, 0)
+ )(new Date(2014, 6 /* Jul */, 8, 18, 0))
+ assert(result === 2)
+ })
+
+ it('differenceInCalendarISOWeekYears', function() {
+ var result = fp.differenceInCalendarISOWeekYears(
+ new Date(2011, 6 /* Jul */, 2, 6, 0)
+ )(new Date(2012, 6 /* Jul */, 2, 18, 0))
+ assert(result === 1)
+ })
+
+ it('differenceInCalendarMonths', function() {
+ var result = fp.differenceInCalendarMonths(
+ new Date(2011, 6 /* Jul */, 2, 6, 0)
+ )(new Date(2012, 6 /* Jul */, 2, 18, 0))
+ assert(result === 12)
+ })
+
+ it('differenceInCalendarQuarters', function() {
+ var result = fp.differenceInCalendarQuarters(
+ new Date(2011, 6 /* Jul */, 2, 6, 0)
+ )(new Date(2012, 6 /* Jul */, 2, 18, 0))
+ assert(result === 4)
+ })
+
+ it('differenceInCalendarWeeks', function() {
+ var result = fp.differenceInCalendarWeeks(
+ new Date(2014, 5 /* Jun */, 29, 6, 0)
+ )(new Date(2014, 6 /* Jul */, 8, 18, 0))
+ assert(result === 1)
+ })
+
+ it('differenceInCalendarWeeksWithOptions', function() {
+ var result = fp.differenceInCalendarWeeksWithOptions({ weekStartsOn: 1 })(
+ new Date(2014, 5 /* Jun */, 29, 6, 0)
+ )(new Date(2014, 6 /* Jul */, 8, 18, 0))
+ assert(result === 2)
+ })
+
+ it('differenceInCalendarYears', function() {
+ var result = fp.differenceInCalendarYears(
+ new Date(2011, 6 /* Jul */, 2, 6, 0)
+ )(new Date(2012, 6 /* Jul */, 2, 18, 0))
+ assert(result === 1)
+ })
+
+ it('differenceInDays', function() {
+ var result = fp.differenceInDays(new Date(2011, 6 /* Jul */, 2, 6, 0))(
+ new Date(2012, 6 /* Jul */, 2, 18, 0)
+ )
+ assert(result === 366)
+ })
+
+ it('differenceInHours', function() {
+ var result = fp.differenceInHours(new Date(2014, 6 /* Jul */, 2, 6, 0))(
+ new Date(2014, 6 /* Jul */, 2, 20, 0)
+ )
+ assert(result === 14)
+ })
+
+ it('differenceInISOWeekYears', function() {
+ var result = fp.differenceInISOWeekYears(
+ new Date(2011, 6 /* Jul */, 2, 6, 0)
+ )(new Date(2012, 6 /* Jul */, 2, 18, 0))
+ assert(result === 1)
+ })
+
+ it('differenceInMilliseconds', function() {
+ var result = fp.differenceInMilliseconds(
+ new Date(2014, 6 /* Jul */, 2, 12, 30, 20, 600)
+ )(new Date(2014, 6 /* Jul */, 2, 12, 30, 20, 700))
+ assert(result === 100)
+ })
+
+ it('differenceInMinutes', function() {
+ var result = fp.differenceInMinutes(new Date(2014, 6 /* Jul */, 2, 12, 6))(
+ new Date(2014, 6 /* Jul */, 2, 12, 20)
+ )
+ assert(result === 14)
+ })
+
+ it('differenceInMonths', function() {
+ var result = fp.differenceInMonths(new Date(2011, 6 /* Jul */, 2, 6, 0))(
+ new Date(2012, 6 /* Jul */, 2, 18, 0)
+ )
+ assert(result === 12)
+ })
+
+ it('differenceInQuarters', function() {
+ var result = fp.differenceInQuarters(new Date(2011, 6 /* Jul */, 2, 6, 0))(
+ new Date(2012, 6 /* Jul */, 2, 18, 0)
+ )
+ assert(result === 4)
+ })
+
+ it('differenceInSeconds', function() {
+ var result = fp.differenceInSeconds(
+ new Date(2014, 6 /* Jul */, 2, 12, 30, 6)
+ )(new Date(2014, 6 /* Jul */, 2, 12, 30, 20))
+ assert(result === 14)
+ })
+
+ it('differenceInWeeks', function() {
+ var result = fp.differenceInWeeks(new Date(2014, 5 /* Jun */, 29, 6, 0))(
+ new Date(2014, 6 /* Jul */, 8, 18, 0)
+ )
+ assert(result === 1)
+ })
+
+ it('differenceInYears', function() {
+ var result = fp.differenceInYears(new Date(2011, 6 /* Jul */, 2, 6, 0))(
+ new Date(2012, 6 /* Jul */, 2, 18, 0)
+ )
+ assert(result === 1)
+ })
+
+ it('eachDayOfInterval', function() {
+ var interval = {
+ start: new Date(2014, 9 /* Oct */, 6),
+ end: new Date(2014, 9 /* Oct */, 12)
+ }
+ var result = fp.eachDayOfInterval(interval)
+ assert.deepEqual(result, [
+ new Date(2014, 9 /* Oct */, 6),
+ new Date(2014, 9 /* Oct */, 7),
+ new Date(2014, 9 /* Oct */, 8),
+ new Date(2014, 9 /* Oct */, 9),
+ new Date(2014, 9 /* Oct */, 10),
+ new Date(2014, 9 /* Oct */, 11),
+ new Date(2014, 9 /* Oct */, 12)
+ ])
+ })
+
+ it('eachWeekOfInterval', function() {
+ var interval = {
+ start: new Date(2014, 9 /* Oct */, 6),
+ end: new Date(2014, 10 /* Nov */, 23)
+ }
+ var result = fp.eachWeekOfInterval(interval)
+ assert.deepEqual(result, [
+ new Date(2014, 9 /* Oct */, 5),
+ new Date(2014, 9 /* Oct */, 12),
+ new Date(2014, 9 /* Oct */, 19),
+ new Date(2014, 9 /* Oct */, 26),
+ new Date(2014, 10 /* Nov */, 2),
+ new Date(2014, 10 /* Nov */, 9),
+ new Date(2014, 10 /* Nov */, 16),
+ new Date(2014, 10 /* Nov */, 23)
+ ])
+ })
+
+ it('eachWeekOfIntervalWithOptions', function() {
+ var interval = {
+ start: new Date(2014, 9 /* Oct */, 6),
+ end: new Date(2014, 10 /* Nov */, 23)
+ }
+ var result = fp.eachWeekOfIntervalWithOptions({ weekStartsOn: 2 })(interval)
+ assert.deepEqual(result, [
+ new Date(2014, 8 /* Sep */, 30),
+ new Date(2014, 9 /* Oct */, 7),
+ new Date(2014, 9 /* Oct */, 14),
+ new Date(2014, 9 /* Oct */, 21),
+ new Date(2014, 9 /* Oct */, 28),
+ new Date(2014, 10 /* Nov */, 4),
+ new Date(2014, 10 /* Nov */, 11),
+ new Date(2014, 10 /* Nov */, 18)
+ ])
+ })
+
+ it('endOfDay', function() {
+ var date = new Date(2014, 8 /* Sep */, 2, 11, 55, 0)
+ var result = fp.endOfDay(date)
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */, 2, 23, 59, 59, 999))
+ })
+
+ it('endOfHour', function() {
+ var date = new Date(2014, 11, 1, 22, 15)
+ var result = fp.endOfHour(date)
+ assert.deepEqual(result, new Date(2014, 11, 1, 22, 59, 59, 999))
+ })
+
+ it('endOfISOWeek', function() {
+ var date = new Date(2014, 8 /* Sep */, 2, 11, 55, 0)
+ var result = fp.endOfISOWeek(date)
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */, 7, 23, 59, 59, 999))
+ })
+
+ it('endOfISOWeekYear', function() {
+ var result = fp.endOfISOWeekYear(new Date(2009, 0 /* Jan */, 1, 16, 0))
+ assert.deepEqual(result, new Date(2010, 0 /* Jan */, 3, 23, 59, 59, 999))
+ })
+
+ it('endOfMinute', function() {
+ var date = new Date(2014, 11, 1, 22, 15)
+ var result = fp.endOfMinute(date)
+ assert.deepEqual(result, new Date(2014, 11, 1, 22, 15, 59, 999))
+ })
+
+ it('endOfMonth', function() {
+ var date = new Date(2014, 8 /* Sep */, 2, 11, 55, 0)
+ var result = fp.endOfMonth(date)
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */, 30, 23, 59, 59, 999))
+ })
+
+ it('endOfQuarter', function() {
+ var date = new Date(2014, 8 /* Sep */, 2, 11, 55, 0)
+ var result = fp.endOfQuarter(date)
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */, 30, 23, 59, 59, 999))
+ })
+
+ it('endOfSecond', function() {
+ var date = new Date(2014, 11, 1, 22, 15, 30)
+ var result = fp.endOfSecond(date)
+ assert.deepEqual(result, new Date(2014, 11, 1, 22, 15, 30, 999))
+ })
+
+ it('endOfWeek', function() {
+ var date = new Date(2014, 8 /* Sep */, 2, 11, 55, 0)
+ var result = fp.endOfWeek(date)
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */, 6, 23, 59, 59, 999))
+ })
+
+ it('endOfWeekWithOptions', function() {
+ var date = new Date(2014, 8 /* Sep */, 2, 11, 55, 0)
+ var result = fp.endOfWeekWithOptions({ weekStartsOn: 2 })(date)
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */, 8, 23, 59, 59, 999))
+ })
+
+ it('endOfYear', function() {
+ var date = new Date(2014, 8 /* Sep */, 2, 11, 55, 0)
+ var result = fp.endOfYear(date)
+ assert.deepEqual(result, new Date(2014, 11 /* Dec */, 31, 23, 59, 59, 999))
+ })
+
+ it('format', function() {
+ var date = new Date(2014, 3, 4)
+ var result = fp.format('yyyy-MM-dd')(date)
+ assert(result === '2014-04-04')
+ })
+
+ it('formatWithOptions', function() {
+ var date = new Date(2014, 3, 4)
+ var result = fp.formatWithOptions({})('yyyy-MM-dd')(date)
+ assert(result === '2014-04-04')
+ })
+
+ it('formatDistance', function() {
+ var result = fp.formatDistance(new Date(1986, 3, 4, 10, 34, 50))(
+ new Date(1986, 3, 4, 10, 32, 0)
+ )
+ assert(result === '3 minutes')
+ })
+
+ it('formatDistanceWithOptions', function() {
+ var result = fp.formatDistanceWithOptions({ includeSeconds: true })(
+ new Date(1986, 3, 4, 10, 32, 3)
+ )(new Date(1986, 3, 4, 10, 32, 0))
+ assert(result === 'less than 5 seconds')
+ })
+
+ it('formatDistanceStrict', function() {
+ var result = fp.formatDistanceStrict(new Date(1986, 3, 7, 10, 32, 0))(
+ new Date(1986, 3, 4, 10, 32, 0)
+ )
+ assert(result === '3 days')
+ })
+
+ it('formatDistanceStrictWithOptions', function() {
+ var result = fp.formatDistanceStrictWithOptions({ addSuffix: true })(
+ new Date(1986, 3, 4, 10, 32, 0)
+ )(new Date(1986, 3, 4, 11, 32, 0))
+ assert(result === 'in 1 hour')
+ })
+
+ it('formatRelative', function() {
+ var result = fp.formatRelative(new Date(1986, 3 /* Apr */, 4, 10, 32))(
+ new Date(1986, 2 /* Mar */, 28, 16, 50)
+ )
+ assert(result === '03/28/1986')
+ })
+
+ it('formatRelativeWithOptions', function() {
+ var result = fp.formatRelativeWithOptions({})(
+ new Date(1986, 3 /* Apr */, 4, 10, 32)
+ )(new Date(1986, 2 /* Mar */, 28, 16, 50))
+ assert(result === '03/28/1986')
+ })
+
+ it('fromUnixTime', function() {
+ var result = fp.fromUnixTime(1330515499)
+ assert(result.getTime() === 1330515499000)
+ })
+
+ it('getDate', function() {
+ var result = fp.getDate(new Date(2012, 1 /* Feb */, 29))
+ assert(result === 29)
+ })
+
+ it('getDay', function() {
+ var result = fp.getDay(new Date(2012, 1 /* Feb */, 29))
+ assert(result === 3)
+ })
+
+ it('getDayOfYear', function() {
+ var result = fp.getDayOfYear(new Date(2014, 6 /* Jul */, 2))
+ assert(result === 183)
+ })
+
+ it('getDaysInMonth', function() {
+ var result = fp.getDaysInMonth(new Date(2100, 1 /* Feb */, 11))
+ assert(result === 28)
+ })
+
+ it('getDaysInYear', function() {
+ var result = fp.getDaysInYear(new Date(2012, 6 /* Jul */, 2))
+ assert(result === 366)
+ })
+
+ it('getHours', function() {
+ var result = fp.getHours(new Date(2012, 1 /* Feb */, 29, 11, 45))
+ assert(result === 11)
+ })
+
+ it('getISODay', function() {
+ var result = fp.getISODay(new Date(2012, 1 /* Feb */, 29))
+ assert(result === 3)
+ })
+
+ it('getISOWeek', function() {
+ var result = fp.getISOWeek(new Date(2005, 0 /* Jan */, 2))
+ assert(result === 53)
+ })
+
+ it('getISOWeeksInYear', function() {
+ var result = fp.getISOWeeksInYear(new Date(2015, 1 /* Feb */, 11))
+ assert(result === 53)
+ })
+
+ it('getISOWeekYear', function() {
+ var result = fp.getISOWeekYear(new Date(2007, 11 /* Dec */, 31))
+ assert(result === 2008)
+ })
+
+ it('getMilliseconds', function() {
+ var result = fp.getMilliseconds(
+ new Date(2012, 1 /* Feb */, 29, 11, 45, 5, 123)
+ )
+ assert(result === 123)
+ })
+
+ it('getMinutes', function() {
+ var result = fp.getMinutes(new Date(2012, 1 /* Feb */, 29, 11, 45, 5))
+ assert(result === 45)
+ })
+
+ it('getMonth', function() {
+ var result = fp.getMonth(new Date(2012, 1 /* Feb */, 29))
+ assert(result === 1)
+ })
+
+ it('getOverlappingDaysInIntervals', function() {
+ var leftInterval = {
+ start: new Date(2016, 10, 10, 13, 0, 0),
+ end: new Date(2016, 11, 3, 15, 0, 0)
+ }
+ var rightInterval = {
+ start: new Date(2016, 10, 5),
+ end: new Date(2016, 11, 15)
+ }
+ var numOverlappingDays = fp.getOverlappingDaysInIntervals(rightInterval)(
+ leftInterval
+ )
+ assert(numOverlappingDays === 24)
+ })
+
+ it('getQuarter', function() {
+ var result = fp.getQuarter(new Date(2014, 6 /* Jul */, 2))
+ assert(result === 3)
+ })
+
+ it('getSeconds', function() {
+ var result = fp.getSeconds(new Date(2012, 1 /* Feb */, 29, 11, 45, 5, 123))
+ assert(result === 5)
+ })
+
+ it('getTime', function() {
+ var timestamp = 1483228800000
+ var result = fp.getTime(new Date(timestamp))
+ assert(result === timestamp)
+ })
+
+ it('getWeek', function() {
+ var result = fp.getWeek(new Date(2005, 0 /* Jan */, 2))
+ assert(result === 2)
+ })
+
+ it('getWeeksInMonth', function() {
+ var result = fp.getWeeksInMonth(new Date(2017, 3 /* Apr */, 8, 18, 0))
+ assert(result === 6)
+ })
+
+ it('getWeeksInMonthWithOptions', function() {
+ var result = fp.getWeeksInMonthWithOptions({})(
+ new Date(2017, 3 /* Apr */, 8, 18, 0)
+ )
+ assert(result === 6)
+ })
+
+ it('getWeekOfMonth', function() {
+ var result = fp.getWeekOfMonth(new Date(2017, 10 /* Nov */, 15))
+ assert(result === 3)
+ })
+
+ it('getWeekOfMonthWithOptions', function() {
+ var result = fp.getWeekOfMonthWithOptions({ weekStartsOn: 1 })(
+ new Date(2017, 9 /* Oct */, 1)
+ )
+ assert(result === 1)
+ })
+
+ it('getWeekYear', function() {
+ var result = fp.getWeekYear(new Date(2004, 11 /* Dec */, 26))
+ assert(result === 2005)
+ })
+
+ it('getWeekYearWithOptions', function() {
+ var result = fp.getWeekYearWithOptions({
+ weekStartsOn: 1,
+ firstWeekContainsDate: 4
+ })(new Date(2004, 11 /* Dec */, 26))
+ assert(result === 2004)
+ })
+
+ it('getYear', function() {
+ var result = fp.getYear(new Date(2014, 6 /* Jul */, 2))
+ assert(result === 2014)
+ })
+
+ it('isAfter', function() {
+ var result = fp.isAfter(new Date(1987, 1 /* Feb */, 11))(
+ new Date(1989, 6 /* Jul */, 10)
+ )
+ assert(result === true)
+ })
+
+ it('isBefore', function() {
+ var result = fp.isBefore(new Date(1989, 6 /* Jul */, 10))(
+ new Date(1987, 1 /* Feb */, 11)
+ )
+ assert(result === true)
+ })
+
+ it('isEqual', function() {
+ var result = fp.isEqual(new Date(1987, 1 /* Feb */, 11))(
+ new Date(1987, 1 /* Feb */, 11)
+ )
+ assert(result === true)
+ })
+
+ it('isFirstDayOfMonth', function() {
+ var result = fp.isFirstDayOfMonth(new Date(2014, 9 /* Oct */, 1))
+ assert(result === true)
+ })
+
+ it('isFriday', function() {
+ var result = fp.isFriday(new Date(2014, 8 /* Sep */, 26))
+ assert(result === true)
+ })
+
+ it('isLastDayOfMonth', function() {
+ var result = fp.isLastDayOfMonth(new Date(2014, 9 /* Oct */, 31))
+ assert(result === true)
+ })
+
+ it('isLeapYear', function() {
+ var result = fp.isLeapYear(new Date(2012, 6 /* Jul */, 2))
+ assert(result === true)
+ })
+
+ it('isMonday', function() {
+ var result = fp.isMonday(new Date(2014, 8 /* Sep */, 22))
+ assert(result === true)
+ })
+
+ it('isSameDay', function() {
+ var result = fp.isSameDay(new Date(2014, 8 /* Sep */, 4, 18, 0))(
+ new Date(2014, 8 /* Sep */, 4, 6, 0)
+ )
+ assert(result === true)
+ })
+
+ it('isSameHour', function() {
+ var result = fp.isSameHour(new Date(2014, 8 /* Sep */, 4, 6, 30))(
+ new Date(2014, 8 /* Sep */, 4, 6, 0)
+ )
+ assert(result === true)
+ })
+
+ it('isSameISOWeek', function() {
+ var result = fp.isSameISOWeek(new Date(2014, 8 /* Sep */, 7))(
+ new Date(2014, 8 /* Sep */, 1)
+ )
+ assert(result === true)
+ })
+
+ it('isSameISOWeekYear', function() {
+ var result = fp.isSameISOWeekYear(new Date(2005, 0 /* Jan */, 2))(
+ new Date(2003, 11 /* Dec */, 29)
+ )
+ assert(result === true)
+ })
+
+ it('isSameMinute', function() {
+ var result = fp.isSameMinute(new Date(2014, 8 /* Sep */, 4, 6, 30, 15))(
+ new Date(2014, 8 /* Sep */, 4, 6, 30)
+ )
+ assert(result === true)
+ })
+
+ it('isSameMonth', function() {
+ var result = fp.isSameMonth(new Date(2014, 8 /* Sep */, 25))(
+ new Date(2014, 8 /* Sep */, 2)
+ )
+ assert(result === true)
+ })
+
+ it('isSameQuarter', function() {
+ var result = fp.isSameQuarter(new Date(2014, 2 /* Mar */, 8))(
+ new Date(2014, 0 /* Jan */, 1)
+ )
+ assert(result === true)
+ })
+
+ it('isSameSecond', function() {
+ var result = fp.isSameSecond(
+ new Date(2014, 8 /* Sep */, 4, 6, 30, 15, 500)
+ )(new Date(2014, 8 /* Sep */, 4, 6, 30, 15))
+ assert(result === true)
+ })
+
+ it('isSameWeek', function() {
+ var result = fp.isSameWeek(new Date(2014, 8 /* Sep */, 4))(
+ new Date(2014, 7 /* Aug */, 31)
+ )
+ assert(result === true)
+ })
+
+ it('isSameWeekWithOptions', function() {
+ var result = fp.isSameWeekWithOptions({ weekStartsOn: 1 })(
+ new Date(2014, 8 /* Sep */, 4)
+ )(new Date(2014, 7 /* Aug */, 31))
+ assert(result === false)
+ })
+
+ it('isSameYear', function() {
+ var result = fp.isSameYear(new Date(2014, 8 /* Sep */, 25))(
+ new Date(2014, 8 /* Sep */, 2)
+ )
+ assert(result === true)
+ })
+
+ it('isSaturday', function() {
+ var result = fp.isSaturday(new Date(2014, 8 /* Sep */, 27))
+ assert(result === true)
+ })
+
+ it('isSunday', function() {
+ var result = fp.isSunday(new Date(2014, 8 /* Sep */, 21))
+ assert(result === true)
+ })
+
+ it('isThursday', function() {
+ var result = fp.isThursday(new Date(2014, 8 /* Sep */, 25))
+ assert(result === true)
+ })
+
+ it('isTuesday', function() {
+ var result = fp.isTuesday(new Date(2014, 8 /* Sep */, 23))
+ assert(result === true)
+ })
+
+ it('isValid', function() {
+ var result = fp.isValid(new Date())
+ assert(result === true)
+ })
+
+ it('isWednesday', function() {
+ var result = fp.isWednesday(new Date(2014, 8 /* Sep */, 24))
+ assert(result === true)
+ })
+
+ it('isWeekend', function() {
+ var result = fp.isWeekend(new Date(2014, 9 /* Oct */, 5))
+ assert(result === true)
+ })
+
+ it('isWithinInterval', function() {
+ var interval = {
+ start: new Date(2014, 8 /* Sep */, 1),
+ end: new Date(2014, 11 /* Dec */, 31)
+ }
+ var result = fp.isWithinInterval(interval)(new Date(2014, 9 /* Oct */, 31))
+ assert(result === true)
+ })
+
+ it('lastDayOfISOWeek', function() {
+ var date = new Date(2014, 8 /* Sep */, 2, 11, 55, 0)
+ var result = fp.lastDayOfISOWeek(date)
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */, 7))
+ })
+
+ it('lastDayOfISOWeekYear', function() {
+ var result = fp.lastDayOfISOWeekYear(new Date(2009, 0 /* Jan */, 1, 16, 0))
+ assert.deepEqual(result, new Date(2010, 0 /* Jan */, 3))
+ })
+
+ it('lastDayOfMonth', function() {
+ var date = new Date(2014, 8 /* Sep */, 2, 11, 55, 0)
+ var result = fp.lastDayOfMonth(date)
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */, 30))
+ })
+
+ it('lastDayOfQuarter', function() {
+ var date = new Date(2014, 8 /* Sep */, 2, 11, 55, 0)
+ var result = fp.lastDayOfQuarter(date)
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */, 30))
+ })
+
+ it('lastDayOfWeek', function() {
+ var date = new Date(2014, 8 /* Sep */, 2, 11, 55, 0)
+ var result = fp.lastDayOfWeek(date)
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */, 6))
+ })
+
+ it('lastDayOfWeekWithOptions', function() {
+ var date = new Date(2014, 8 /* Sep */, 2, 11, 55, 0)
+ var result = fp.lastDayOfWeekWithOptions({ weekStartsOn: 1 })(date)
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */, 7))
+ })
+
+ it('lastDayOfYear', function() {
+ var date = new Date(2014, 8 /* Sep */, 2, 11, 55, 0)
+ var result = fp.lastDayOfYear(date)
+ assert.deepEqual(result, new Date(2014, 11 /* Dec */, 31))
+ })
+
+ it('max', function() {
+ var result = fp.max([
+ new Date(1989, 6 /* Jul */, 10),
+ new Date(1987, 1 /* Feb */, 11)
+ ])
+ assert.deepEqual(result, new Date(1989, 6 /* Jul */, 10))
+ })
+
+ it('min', function() {
+ var result = fp.min([
+ new Date(1989, 6 /* Jul */, 10),
+ new Date(1987, 1 /* Feb */, 11)
+ ])
+ assert.deepEqual(result, new Date(1987, 1 /* Feb */, 11))
+ })
+
+ it('parse', function() {
+ var baseDate = new Date(1986, 3 /* Apr */, 4, 10, 32, 0, 900)
+ var result = fp.parse(baseDate)("yyyyMMdd'T'HHmmss")('20161105T040404')
+ assert.deepEqual(result, new Date(2016, 10 /* Nov */, 5, 4, 4, 4, 0))
+ })
+
+ it('parseWithOptions', function() {
+ var baseDate = new Date(1986, 3 /* Apr */, 4, 10, 32, 0, 900)
+ var result = fp.parseWithOptions({})(baseDate)("yyyyMMdd'T'HHmmss")(
+ '20161105T040404'
+ )
+ assert.deepEqual(result, new Date(2016, 10 /* Nov */, 5, 4, 4, 4, 0))
+ })
+
+ it('roundToNearestMinutes', function() {
+ var result = fp.roundToNearestMinutes(
+ new Date(2014, 6 /* Jul */, 10, 12, 11, 34, 99)
+ )
+ assert.deepEqual(result, new Date(2014, 6 /* Jul */, 10, 12, 12))
+ })
+
+ it('roundToNearestMinutesWithOptions', function() {
+ const resultA = fp.roundToNearestMinutesWithOptions({ nearestTo: 5 })(
+ new Date(2014, 6 /* Jul */, 10, 12, 11, 34, 99)
+ )
+ assert.deepEqual(resultA, new Date(2014, 6 /* Jul */, 10, 12, 10))
+
+ const resultB = fp.roundToNearestMinutesWithOptions({})(
+ new Date(2014, 6 /* Jul */, 10, 12, 11, 34, 99)
+ )
+ assert.deepEqual(resultB, new Date(2014, 6 /* Jul */, 10, 12, 12))
+ })
+
+ it('setDate', function() {
+ var result = fp.setDate(30)(new Date(2014, 8 /* Sep */, 1))
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */, 30))
+ })
+
+ it('setDay', function() {
+ var result = fp.setDay(0)(new Date(2014, 8 /* Sep */, 1))
+ assert.deepEqual(result, new Date(2014, 7 /* Aug */, 31))
+ })
+
+ it('setDayOfYear', function() {
+ var result = fp.setDayOfYear(2)(new Date(2014, 6 /* Jul */, 2))
+ assert.deepEqual(result, new Date(2014, 0 /* Jan */, 2))
+ })
+
+ it('setHours', function() {
+ var result = fp.setHours(4)(new Date(2014, 8 /* Sep */, 1, 11, 30))
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */, 1, 4, 30))
+ })
+
+ it('setISODay', function() {
+ var result = fp.setISODay(3)(new Date(2014, 8 /* Sep */, 1))
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */, 3))
+ })
+
+ it('setISOWeek', function() {
+ var result = fp.setISOWeek(53)(new Date(2004, 7 /* Aug */, 7))
+ assert.deepEqual(result, new Date(2005, 0 /* Jan */, 1))
+ })
+
+ it('setISOWeekYear', function() {
+ var result = fp.setISOWeekYear(2007)(new Date(2008, 11 /* Dec */, 29))
+ assert.deepEqual(result, new Date(2007, 0 /* Jan */, 1))
+ })
+
+ it('setMilliseconds', function() {
+ var result = fp.setMilliseconds(300)(
+ new Date(2014, 8 /* Sep */, 1, 11, 30, 40, 500)
+ )
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */, 1, 11, 30, 40, 300))
+ })
+
+ it('setMinutes', function() {
+ var result = fp.setMinutes(45)(new Date(2014, 8 /* Sep */, 1, 11, 30, 40))
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */, 1, 11, 45, 40))
+ })
+
+ it('setMonth', function() {
+ var result = fp.setMonth(1)(new Date(2014, 8 /* Sep */, 1))
+ assert.deepEqual(result, new Date(2014, 1 /* Feb */, 1))
+ })
+
+ it('setQuarter', function() {
+ var result = fp.setQuarter(1)(new Date(2014, 6 /* Jul */, 2))
+ assert.deepEqual(result, new Date(2014, 0 /* Jan */, 2))
+ })
+
+ it('setSeconds', function() {
+ var result = fp.setSeconds(45)(
+ new Date(2014, 8 /* Sep */, 1, 11, 30, 40, 500)
+ )
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */, 1, 11, 30, 45, 500))
+ })
+
+ it('setWeek', function() {
+ var result = fp.setWeek(1)(new Date(2005, 0 /* Jan */, 2))
+ assert.deepEqual(result, new Date(2004, 11 /* Dec */, 26))
+ })
+
+ it('setWeekWithOptions', function() {
+ var result = fp.setWeekWithOptions({
+ weekStartsOn: 1,
+ firstWeekContainsDate: 4
+ })(1)(new Date(2005, 0 /* Jan */, 2))
+ assert.deepEqual(result, new Date(2004, 0 /* Jan */, 4))
+ })
+
+ it('setWeekYear', function() {
+ var result = fp.setWeekYear(2004)(new Date(2010, 0 /* Jan */, 2))
+ assert.deepEqual(result, new Date(2004, 0 /* Jan */, 3))
+ })
+
+ it('setWeekYearWithOptions', function() {
+ var result = fp.setWeekYearWithOptions({
+ weekStartsOn: 1,
+ firstWeekContainsDate: 4
+ })(2004)(new Date(2010, 0 /* Jan */, 2))
+ assert.deepEqual(result, new Date(2005, 0 /* Jan */, 1))
+ })
+
+ it('setYear', function() {
+ var result = fp.setYear(2013)(new Date(2014, 8 /* Sep */, 1))
+ assert.deepEqual(result, new Date(2013, 8 /* Sep */, 1))
+ })
+
+ it('startOfDay', function() {
+ var date = new Date(2014, 8 /* Sep */, 2, 11, 55, 0)
+ var result = fp.startOfDay(date)
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */, 2, 0, 0, 0, 0))
+ })
+
+ it('startOfHour', function() {
+ var date = new Date(2014, 8 /* Sep */, 2, 11, 55)
+ var result = fp.startOfHour(date)
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */, 2, 11))
+ })
+
+ it('startOfISOWeek', function() {
+ var date = new Date(2014, 8 /* Sep */, 2, 11, 55, 0)
+ var result = fp.startOfISOWeek(date)
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */, 1))
+ })
+
+ it('startOfISOWeekYear', function() {
+ var result = fp.startOfISOWeekYear(new Date(2009, 0 /* Jan */, 1, 16, 0))
+ assert.deepEqual(result, new Date(2008, 11 /* Dec */, 29, 0, 0, 0, 0))
+ })
+
+ it('startOfMinute', function() {
+ var date = new Date(2014, 11 /* Dec */, 1, 22, 15, 45, 400)
+ var result = fp.startOfMinute(date)
+ assert.deepEqual(result, new Date(2014, 11 /* Dec */, 1, 22, 15))
+ })
+
+ it('startOfMonth', function() {
+ var date = new Date(2014, 8 /* Sep */, 2, 11, 55, 0)
+ var result = fp.startOfMonth(date)
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */, 1))
+ })
+
+ it('startOfQuarter', function() {
+ var date = new Date(2014, 8 /* Sep */, 2, 11, 55, 0)
+ var result = fp.startOfQuarter(date)
+ assert.deepEqual(result, new Date(2014, 6 /* Jul */, 1))
+ })
+
+ it('startOfSecond', function() {
+ var date = new Date(2014, 11 /* Dec */, 1, 22, 15, 45, 400)
+ var result = fp.startOfSecond(date)
+ assert.deepEqual(result, new Date(2014, 11 /* Dec */, 1, 22, 15, 45))
+ })
+
+ it('startOfWeek', function() {
+ var date = new Date(2014, 8 /* Sep */, 2, 11, 55, 0)
+ var result = fp.startOfWeek(date)
+ assert.deepEqual(result, new Date(2014, 7 /* Aug */, 31))
+ })
+
+ it('startOfWeekWithOptions', function() {
+ var date = new Date(2014, 8 /* Sep */, 2, 11, 55, 0)
+ var result = fp.startOfWeekWithOptions({ weekStartsOn: 1 })(date)
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */, 1))
+ })
+
+ it('startOfWeekYear', function() {
+ var result = fp.startOfWeekYear(new Date(2005, 6 /* Jul */, 2))
+ assert.deepEqual(result, new Date(2004, 11 /* Dec */, 26, 0, 0, 0, 0))
+ })
+
+ it('startOfWeekYearWithOptions', function() {
+ var result = fp.startOfWeekYearWithOptions({
+ weekStartsOn: 1,
+ firstWeekContainsDate: 4
+ })(new Date(2005, 6 /* Jul */, 2))
+ assert.deepEqual(result, new Date(2005, 0 /* Jan */, 3, 0, 0, 0, 0))
+ })
+
+ it('startOfYear', function() {
+ var date = new Date(2014, 8 /* Sep */, 2, 11, 55, 0)
+ var result = fp.startOfYear(date)
+ assert.deepEqual(result, new Date(2014, 0 /* Jan */, 1, 0, 0, 0, 0))
+ })
+
+ it('subDays', function() {
+ var result = fp.subDays(10)(new Date(2014, 8 /* Sep */, 1))
+ assert.deepEqual(result, new Date(2014, 7 /* Aug */, 22))
+ })
+
+ it('subHours', function() {
+ var result = fp.subHours(2)(new Date(2014, 6 /* Jul */, 11, 1, 0))
+ assert.deepEqual(result, new Date(2014, 6 /* Jul */, 10, 23, 0))
+ })
+
+ it('subISOWeekYears', function() {
+ var result = fp.subISOWeekYears(5)(new Date(2014, 8 /* Sep */, 1))
+ assert.deepEqual(result, new Date(2009, 7 /* Aug */, 31))
+ })
+
+ it('subMilliseconds', function() {
+ var result = fp.subMilliseconds(750)(
+ new Date(2014, 6 /* Jul */, 10, 12, 45, 30, 0)
+ )
+ assert.deepEqual(result, new Date(2014, 6 /* Jul */, 10, 12, 45, 29, 250))
+ })
+
+ it('subMinutes', function() {
+ var result = fp.subMinutes(30)(new Date(2014, 6 /* Jul */, 10, 12, 0))
+ assert.deepEqual(result, new Date(2014, 6 /* Jul */, 10, 11, 30))
+ })
+
+ it('subMonths', function() {
+ var result = fp.subMonths(5)(new Date(2015, 1 /* Feb */, 1))
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */, 1))
+ })
+
+ it('subQuarters', function() {
+ var result = fp.subQuarters(3)(new Date(2014, 8 /* Sep */, 1))
+ assert.deepEqual(result, new Date(2013, 11 /* Dec */, 1))
+ })
+
+ it('subSeconds', function() {
+ var result = fp.subSeconds(30)(new Date(2014, 6 /* Jul */, 10, 12, 45, 0))
+ assert.deepEqual(result, new Date(2014, 6 /* Jul */, 10, 12, 44, 30))
+ })
+
+ it('subWeeks', function() {
+ var result = fp.subWeeks(4)(new Date(2014, 8 /* Sep */, 1))
+ assert.deepEqual(result, new Date(2014, 7 /* Aug */, 4))
+ })
+
+ it('subYears', function() {
+ var result = fp.subYears(5)(new Date(2014, 8 /* Sep */, 1))
+ assert.deepEqual(result, new Date(2009, 8 /* Sep */, 1))
+ })
+
+ it('parseISO', function() {
+ var result = fp.parseISO('2014-10-25T13:46:20+07:00')
+ assert.deepEqual(result, new Date('2014-10-25T13:46:20+07:00'))
+ })
+
+ it('parseISOWithOptions', function() {
+ var result = fp.parseISOWithOptions({ additionalDigits: 0 })('+12340702')
+ assert.deepEqual(result, new Date(1234, 6 /* Jul */, 2))
+ })
+})
diff --git a/date-fns/src/fp/toDate/index.d.ts b/date-fns/src/fp/toDate/index.d.ts
new file mode 100644
index 0000000..2bbca80
--- /dev/null
+++ b/date-fns/src/fp/toDate/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { toDate } from 'date-fns/fp'
+export default toDate
diff --git a/date-fns/src/fp/toDate/index.js b/date-fns/src/fp/toDate/index.js
new file mode 100644
index 0000000..7cb0cb0
--- /dev/null
+++ b/date-fns/src/fp/toDate/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../toDate/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var toDate = convertToFP(fn, 1)
+
+export default toDate
diff --git a/date-fns/src/fp/toDate/index.js.flow b/date-fns/src/fp/toDate/index.js.flow
new file mode 100644
index 0000000..1fc072e
--- /dev/null
+++ b/date-fns/src/fp/toDate/index.js.flow
@@ -0,0 +1,54 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+declare module.exports: CurriedFn1<Date | number, Date>
diff --git a/date-fns/src/fp/weeksToDays/index.d.ts b/date-fns/src/fp/weeksToDays/index.d.ts
new file mode 100644
index 0000000..df68239
--- /dev/null
+++ b/date-fns/src/fp/weeksToDays/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { weeksToDays } from 'date-fns/fp'
+export default weeksToDays
diff --git a/date-fns/src/fp/weeksToDays/index.js b/date-fns/src/fp/weeksToDays/index.js
new file mode 100644
index 0000000..1b42884
--- /dev/null
+++ b/date-fns/src/fp/weeksToDays/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../weeksToDays/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var weeksToDays = convertToFP(fn, 1)
+
+export default weeksToDays
diff --git a/date-fns/src/fp/weeksToDays/index.js.flow b/date-fns/src/fp/weeksToDays/index.js.flow
new file mode 100644
index 0000000..aa51b5f
--- /dev/null
+++ b/date-fns/src/fp/weeksToDays/index.js.flow
@@ -0,0 +1,54 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+declare module.exports: CurriedFn1<number, number>
diff --git a/date-fns/src/fp/yearsToMonths/index.d.ts b/date-fns/src/fp/yearsToMonths/index.d.ts
new file mode 100644
index 0000000..39cd773
--- /dev/null
+++ b/date-fns/src/fp/yearsToMonths/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { yearsToMonths } from 'date-fns/fp'
+export default yearsToMonths
diff --git a/date-fns/src/fp/yearsToMonths/index.js b/date-fns/src/fp/yearsToMonths/index.js
new file mode 100644
index 0000000..0a58b71
--- /dev/null
+++ b/date-fns/src/fp/yearsToMonths/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../yearsToMonths/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var yearsToMonths = convertToFP(fn, 1)
+
+export default yearsToMonths
diff --git a/date-fns/src/fp/yearsToMonths/index.js.flow b/date-fns/src/fp/yearsToMonths/index.js.flow
new file mode 100644
index 0000000..aa51b5f
--- /dev/null
+++ b/date-fns/src/fp/yearsToMonths/index.js.flow
@@ -0,0 +1,54 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+declare module.exports: CurriedFn1<number, number>
diff --git a/date-fns/src/fp/yearsToQuarters/index.d.ts b/date-fns/src/fp/yearsToQuarters/index.d.ts
new file mode 100644
index 0000000..cbb664d
--- /dev/null
+++ b/date-fns/src/fp/yearsToQuarters/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { yearsToQuarters } from 'date-fns/fp'
+export default yearsToQuarters
diff --git a/date-fns/src/fp/yearsToQuarters/index.js b/date-fns/src/fp/yearsToQuarters/index.js
new file mode 100644
index 0000000..e9051b5
--- /dev/null
+++ b/date-fns/src/fp/yearsToQuarters/index.js
@@ -0,0 +1,8 @@
+// This file is generated automatically by `scripts/build/fp.js`. Please, don't change it.
+
+import fn from '../../yearsToQuarters/index'
+import convertToFP from '../_lib/convertToFP/index'
+
+var yearsToQuarters = convertToFP(fn, 1)
+
+export default yearsToQuarters
diff --git a/date-fns/src/fp/yearsToQuarters/index.js.flow b/date-fns/src/fp/yearsToQuarters/index.js.flow
new file mode 100644
index 0000000..aa51b5f
--- /dev/null
+++ b/date-fns/src/fp/yearsToQuarters/index.js.flow
@@ -0,0 +1,54 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+type CurriedFn1<A, R> = <A>(a: A) => R
+
+declare module.exports: CurriedFn1<number, number>
diff --git a/date-fns/src/fromUnixTime/index.d.ts b/date-fns/src/fromUnixTime/index.d.ts
new file mode 100644
index 0000000..a88920d
--- /dev/null
+++ b/date-fns/src/fromUnixTime/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { fromUnixTime } from 'date-fns'
+export default fromUnixTime
diff --git a/date-fns/src/fromUnixTime/index.js b/date-fns/src/fromUnixTime/index.js
new file mode 100644
index 0000000..f3b2f82
--- /dev/null
+++ b/date-fns/src/fromUnixTime/index.js
@@ -0,0 +1,32 @@
+import toDate from '../toDate/index'
+import toInteger from '../_lib/toInteger/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name fromUnixTime
+ * @category Timestamp Helpers
+ * @summary Create a date from a Unix timestamp.
+ *
+ * @description
+ * Create a date from a Unix timestamp.
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Number} unixTime - the given Unix timestamp
+ * @returns {Date} the date
+ * @throws {TypeError} 1 argument required
+ *
+ * @example
+ * // Create the date 29 February 2012 11:45:05:
+ * var result = fromUnixTime(1330515905)
+ * //=> Wed Feb 29 2012 11:45:05
+ */
+export default function fromUnixTime(dirtyUnixTime) {
+ requiredArgs(1, arguments)
+
+ var unixTime = toInteger(dirtyUnixTime)
+
+ return toDate(unixTime * 1000)
+}
diff --git a/date-fns/src/fromUnixTime/index.js.flow b/date-fns/src/fromUnixTime/index.js.flow
new file mode 100644
index 0000000..a286bdf
--- /dev/null
+++ b/date-fns/src/fromUnixTime/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (unixTime: number) => Date
diff --git a/date-fns/src/fromUnixTime/test.js b/date-fns/src/fromUnixTime/test.js
new file mode 100644
index 0000000..a5b529f
--- /dev/null
+++ b/date-fns/src/fromUnixTime/test.js
@@ -0,0 +1,21 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import fromUnixTime from '.'
+
+describe('fromUnixTime', function() {
+ it('returns the date derived from the given UNIX timestamp', function() {
+ var result = fromUnixTime(1330515499)
+ assert(result.getTime() === 1330515499000)
+ })
+
+ it('returns invalid if the given timestamp is invalid', function() {
+ var result = fromUnixTime(NaN)
+ assert(isNaN(result.getTime()))
+ })
+
+ it('throws TypeError exception if passed less than 1 argument', function() {
+ assert.throws(fromUnixTime.bind(null), TypeError)
+ })
+})
diff --git a/date-fns/src/getDate/benchmark.js b/date-fns/src/getDate/benchmark.js
new file mode 100644
index 0000000..e59b2a9
--- /dev/null
+++ b/date-fns/src/getDate/benchmark.js
@@ -0,0 +1,21 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import getDate from '.'
+import moment from 'moment'
+
+suite('getDate', function () {
+ benchmark('date-fns', function () {
+ return getDate(this.date)
+ })
+
+ benchmark('Moment.js', function () {
+ return this.moment.date()
+ })
+}, {
+ setup: function () {
+ this.date = new Date()
+ this.moment = moment()
+ }
+})
diff --git a/date-fns/src/getDate/index.d.ts b/date-fns/src/getDate/index.d.ts
new file mode 100644
index 0000000..cb86441
--- /dev/null
+++ b/date-fns/src/getDate/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { getDate } from 'date-fns'
+export default getDate
diff --git a/date-fns/src/getDate/index.js.flow b/date-fns/src/getDate/index.js.flow
new file mode 100644
index 0000000..07bb012
--- /dev/null
+++ b/date-fns/src/getDate/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (date: Date | number) => number
diff --git a/date-fns/src/getDate/index.ts b/date-fns/src/getDate/index.ts
new file mode 100644
index 0000000..4db3697
--- /dev/null
+++ b/date-fns/src/getDate/index.ts
@@ -0,0 +1,31 @@
+import toDate from '../toDate/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name getDate
+ * @category Day Helpers
+ * @summary Get the day of the month of the given date.
+ *
+ * @description
+ * Get the day of the month of the given date.
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} date - the given date
+ * @returns {Number} the day of month
+ * @throws {TypeError} 1 argument required
+ *
+ * @example
+ * // Which day of the month is 29 February 2012?
+ * const result = getDate(new Date(2012, 1, 29))
+ * //=> 29
+ */
+export default function getDate(dirtyDate: Date | number): number {
+ requiredArgs(1, arguments)
+
+ const date = toDate(dirtyDate)
+ const dayOfMonth = date.getDate()
+ return dayOfMonth
+}
diff --git a/date-fns/src/getDate/test.ts b/date-fns/src/getDate/test.ts
new file mode 100644
index 0000000..c2ed37e
--- /dev/null
+++ b/date-fns/src/getDate/test.ts
@@ -0,0 +1,26 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import getDate from '.'
+
+describe('getDate', function() {
+ it('returns the day of the month of the given date', function() {
+ const result = getDate(new Date(2012, 1 /* Feb */, 29))
+ assert(result === 29)
+ })
+
+ it('accepts a timestamp', function() {
+ const result = getDate(new Date(2014, 11 /* Dec */, 31).getTime())
+ assert(result === 31)
+ })
+
+ it('returns NaN if the given date is invalid', function() {
+ const result = getDate(new Date(NaN))
+ assert(isNaN(result))
+ })
+
+ it('throws TypeError exception if passed less than 1 argument', function() {
+ assert.throws(getDate.bind(null), TypeError)
+ })
+})
diff --git a/date-fns/src/getDay/benchmark.js b/date-fns/src/getDay/benchmark.js
new file mode 100644
index 0000000..1d3bbd5
--- /dev/null
+++ b/date-fns/src/getDay/benchmark.js
@@ -0,0 +1,21 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import getDay from '.'
+import moment from 'moment'
+
+suite('getDay', function () {
+ benchmark('date-fns', function () {
+ return getDay(this.date)
+ })
+
+ benchmark('Moment.js', function () {
+ return this.moment.day()
+ })
+}, {
+ setup: function () {
+ this.date = new Date()
+ this.moment = moment()
+ }
+})
diff --git a/date-fns/src/getDay/index.d.ts b/date-fns/src/getDay/index.d.ts
new file mode 100644
index 0000000..5ea22c0
--- /dev/null
+++ b/date-fns/src/getDay/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { getDay } from 'date-fns'
+export default getDay
diff --git a/date-fns/src/getDay/index.js.flow b/date-fns/src/getDay/index.js.flow
new file mode 100644
index 0000000..6ff2a54
--- /dev/null
+++ b/date-fns/src/getDay/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (date: Date | number) => 0 | 1 | 2 | 3 | 4 | 5 | 6
diff --git a/date-fns/src/getDay/index.ts b/date-fns/src/getDay/index.ts
new file mode 100644
index 0000000..becc949
--- /dev/null
+++ b/date-fns/src/getDay/index.ts
@@ -0,0 +1,31 @@
+import toDate from '../toDate/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name getDay
+ * @category Weekday Helpers
+ * @summary Get the day of the week of the given date.
+ *
+ * @description
+ * Get the day of the week of the given date.
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} date - the given date
+ * @returns {0|1|2|3|4|5|6} the day of week, 0 represents Sunday
+ * @throws {TypeError} 1 argument required
+ *
+ * @example
+ * // Which day of the week is 29 February 2012?
+ * const result = getDay(new Date(2012, 1, 29))
+ * //=> 3
+ */
+export default function getDay(dirtyDate: Date | number): number {
+ requiredArgs(1, arguments)
+
+ const date = toDate(dirtyDate)
+ const day = date.getDay()
+ return day
+}
diff --git a/date-fns/src/getDay/test.ts b/date-fns/src/getDay/test.ts
new file mode 100644
index 0000000..fdd1078
--- /dev/null
+++ b/date-fns/src/getDay/test.ts
@@ -0,0 +1,26 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import getDay from '.'
+
+describe('getDay', function() {
+ it('returns the day of the week of the given date', function() {
+ const result = getDay(new Date(2012, 1 /* Feb */, 29))
+ assert(result === 3)
+ })
+
+ it('accepts a timestamp', function() {
+ const result = getDay(new Date(2014, 5 /* Jun */, 1).getTime())
+ assert(result === 0)
+ })
+
+ it('returns NaN if the given date is invalid', function() {
+ const result = getDay(new Date(NaN))
+ assert(isNaN(result))
+ })
+
+ it('throws TypeError exception if passed less than 1 argument', function() {
+ assert.throws(getDay.bind(null), TypeError)
+ })
+})
diff --git a/date-fns/src/getDayOfYear/benchmark.js b/date-fns/src/getDayOfYear/benchmark.js
new file mode 100644
index 0000000..4179185
--- /dev/null
+++ b/date-fns/src/getDayOfYear/benchmark.js
@@ -0,0 +1,21 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import getDayOfYear from '.'
+import moment from 'moment'
+
+suite('getDayOfYear', function () {
+ benchmark('date-fns', function () {
+ return getDayOfYear(this.date)
+ })
+
+ benchmark('Moment.js', function () {
+ return this.moment.dayOfYear()
+ })
+}, {
+ setup: function () {
+ this.date = new Date()
+ this.moment = moment()
+ }
+})
diff --git a/date-fns/src/getDayOfYear/index.d.ts b/date-fns/src/getDayOfYear/index.d.ts
new file mode 100644
index 0000000..ec58442
--- /dev/null
+++ b/date-fns/src/getDayOfYear/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { getDayOfYear } from 'date-fns'
+export default getDayOfYear
diff --git a/date-fns/src/getDayOfYear/index.js.flow b/date-fns/src/getDayOfYear/index.js.flow
new file mode 100644
index 0000000..07bb012
--- /dev/null
+++ b/date-fns/src/getDayOfYear/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (date: Date | number) => number
diff --git a/date-fns/src/getDayOfYear/index.ts b/date-fns/src/getDayOfYear/index.ts
new file mode 100644
index 0000000..e43dd02
--- /dev/null
+++ b/date-fns/src/getDayOfYear/index.ts
@@ -0,0 +1,34 @@
+import toDate from '../toDate/index'
+import startOfYear from '../startOfYear/index'
+import differenceInCalendarDays from '../differenceInCalendarDays/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name getDayOfYear
+ * @category Day Helpers
+ * @summary Get the day of the year of the given date.
+ *
+ * @description
+ * Get the day of the year of the given date.
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} date - the given date
+ * @returns {Number} the day of year
+ * @throws {TypeError} 1 argument required
+ *
+ * @example
+ * // Which day of the year is 2 July 2014?
+ * const result = getDayOfYear(new Date(2014, 6, 2))
+ * //=> 183
+ */
+export default function getDayOfYear(dirtyDate: Date | number): number {
+ requiredArgs(1, arguments)
+
+ const date = toDate(dirtyDate)
+ const diff = differenceInCalendarDays(date, startOfYear(date))
+ const dayOfYear = diff + 1
+ return dayOfYear
+}
diff --git a/date-fns/src/getDayOfYear/test.ts b/date-fns/src/getDayOfYear/test.ts
new file mode 100644
index 0000000..527c0a5
--- /dev/null
+++ b/date-fns/src/getDayOfYear/test.ts
@@ -0,0 +1,34 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import getDayOfYear from '.'
+
+describe('getDayOfYear', function() {
+ it('returns the day of the year of the given date', function() {
+ const result = getDayOfYear(new Date(2014, 6 /* Jul */, 2))
+ assert(result === 183)
+ })
+
+ it('accepts a timestamp', function() {
+ const result = getDayOfYear(new Date(2014, 0 /* Jan */, 2).getTime())
+ assert(result === 2)
+ })
+
+ it('handles dates before 100 AD', function() {
+ const initialDate = new Date(0)
+ initialDate.setFullYear(0, 11 /* Dec */, 31)
+ initialDate.setHours(0, 0, 0, 0)
+ const result = getDayOfYear(initialDate)
+ assert(result === 366)
+ })
+
+ it('returns NaN if the given date is invalid', function() {
+ const result = getDayOfYear(new Date(NaN))
+ assert(isNaN(result))
+ })
+
+ it('throws TypeError exception if passed less than 1 argument', function() {
+ assert.throws(getDayOfYear.bind(null), TypeError)
+ })
+})
diff --git a/date-fns/src/getDaysInMonth/benchmark.js b/date-fns/src/getDaysInMonth/benchmark.js
new file mode 100644
index 0000000..2e2eb87
--- /dev/null
+++ b/date-fns/src/getDaysInMonth/benchmark.js
@@ -0,0 +1,21 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import getDaysInMonth from '.'
+import moment from 'moment'
+
+suite('getDaysInMonth', function () {
+ benchmark('date-fns', function () {
+ return getDaysInMonth(this.date)
+ })
+
+ benchmark('Moment.js', function () {
+ return this.moment.daysInMonth()
+ })
+}, {
+ setup: function () {
+ this.date = new Date()
+ this.moment = moment()
+ }
+})
diff --git a/date-fns/src/getDaysInMonth/index.d.ts b/date-fns/src/getDaysInMonth/index.d.ts
new file mode 100644
index 0000000..6b69dae
--- /dev/null
+++ b/date-fns/src/getDaysInMonth/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { getDaysInMonth } from 'date-fns'
+export default getDaysInMonth
diff --git a/date-fns/src/getDaysInMonth/index.js.flow b/date-fns/src/getDaysInMonth/index.js.flow
new file mode 100644
index 0000000..07bb012
--- /dev/null
+++ b/date-fns/src/getDaysInMonth/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (date: Date | number) => number
diff --git a/date-fns/src/getDaysInMonth/index.ts b/date-fns/src/getDaysInMonth/index.ts
new file mode 100644
index 0000000..f0959bb
--- /dev/null
+++ b/date-fns/src/getDaysInMonth/index.ts
@@ -0,0 +1,35 @@
+import toDate from '../toDate/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name getDaysInMonth
+ * @category Month Helpers
+ * @summary Get the number of days in a month of the given date.
+ *
+ * @description
+ * Get the number of days in a month of the given date.
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} date - the given date
+ * @returns {Number} the number of days in a month
+ * @throws {TypeError} 1 argument required
+ *
+ * @example
+ * // How many days are in February 2000?
+ * const result = getDaysInMonth(new Date(2000, 1))
+ * //=> 29
+ */
+export default function getDaysInMonth(dirtyDate: Date | number): number {
+ requiredArgs(1, arguments)
+
+ const date = toDate(dirtyDate)
+ const year = date.getFullYear()
+ const monthIndex = date.getMonth()
+ const lastDayOfMonth = new Date(0)
+ lastDayOfMonth.setFullYear(year, monthIndex + 1, 0)
+ lastDayOfMonth.setHours(0, 0, 0, 0)
+ return lastDayOfMonth.getDate()
+}
diff --git a/date-fns/src/getDaysInMonth/test.ts b/date-fns/src/getDaysInMonth/test.ts
new file mode 100644
index 0000000..02c35f4
--- /dev/null
+++ b/date-fns/src/getDaysInMonth/test.ts
@@ -0,0 +1,40 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import getDaysInMonth from '.'
+
+describe('getDaysInMonth', function() {
+ it('returns the number of days in the month of the given date', function() {
+ const result = getDaysInMonth(new Date(2100, 1 /* Feb */, 11))
+ assert(result === 28)
+ })
+
+ it('works for the February of a leap year', function() {
+ const result = getDaysInMonth(new Date(2000, 1 /* Feb */, 11))
+ assert(result === 29)
+ })
+
+ it('accepts a timestamp', function() {
+ const date = new Date(2014, 6 /* Jul */, 2).getTime()
+ const result = getDaysInMonth(date)
+ assert(result === 31)
+ })
+
+ it('handles dates before 100 AD', function() {
+ const date = new Date(0)
+ date.setFullYear(0, 1 /* Feb */, 15)
+ date.setHours(0, 0, 0, 0)
+ const result = getDaysInMonth(date)
+ assert(result === 29)
+ })
+
+ it('returns NaN if the given date is invalid', function() {
+ const result = getDaysInMonth(new Date(NaN))
+ assert(isNaN(result))
+ })
+
+ it('throws TypeError exception if passed less than 1 argument', function() {
+ assert.throws(getDaysInMonth.bind(null), TypeError)
+ })
+})
diff --git a/date-fns/src/getDaysInYear/benchmark.js b/date-fns/src/getDaysInYear/benchmark.js
new file mode 100644
index 0000000..b076dc8
--- /dev/null
+++ b/date-fns/src/getDaysInYear/benchmark.js
@@ -0,0 +1,15 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import getDaysInYear from '.'
+
+suite('getDaysInYear', function () {
+ benchmark('date-fns', function () {
+ return getDaysInYear(this.date)
+ })
+}, {
+ setup: function () {
+ this.date = new Date()
+ }
+})
diff --git a/date-fns/src/getDaysInYear/index.d.ts b/date-fns/src/getDaysInYear/index.d.ts
new file mode 100644
index 0000000..053d44b
--- /dev/null
+++ b/date-fns/src/getDaysInYear/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { getDaysInYear } from 'date-fns'
+export default getDaysInYear
diff --git a/date-fns/src/getDaysInYear/index.js.flow b/date-fns/src/getDaysInYear/index.js.flow
new file mode 100644
index 0000000..07bb012
--- /dev/null
+++ b/date-fns/src/getDaysInYear/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (date: Date | number) => number
diff --git a/date-fns/src/getDaysInYear/index.ts b/date-fns/src/getDaysInYear/index.ts
new file mode 100644
index 0000000..c374a8f
--- /dev/null
+++ b/date-fns/src/getDaysInYear/index.ts
@@ -0,0 +1,36 @@
+import toDate from '../toDate/index'
+import isLeapYear from '../isLeapYear/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name getDaysInYear
+ * @category Year Helpers
+ * @summary Get the number of days in a year of the given date.
+ *
+ * @description
+ * Get the number of days in a year of the given date.
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} date - the given date
+ * @returns {Number} the number of days in a year
+ * @throws {TypeError} 1 argument required
+ *
+ * @example
+ * // How many days are in 2012?
+ * const result = getDaysInYear(new Date(2012, 0, 1))
+ * //=> 366
+ */
+export default function getDaysInYear(dirtyDate: Date | number): number {
+ requiredArgs(1, arguments)
+
+ const date = toDate(dirtyDate)
+
+ if (String(new Date(date)) === 'Invalid Date') {
+ return NaN
+ }
+
+ return isLeapYear(date) ? 366 : 365
+}
diff --git a/date-fns/src/getDaysInYear/test.ts b/date-fns/src/getDaysInYear/test.ts
new file mode 100644
index 0000000..8cf2918
--- /dev/null
+++ b/date-fns/src/getDaysInYear/test.ts
@@ -0,0 +1,42 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import getDaysInYear from '.'
+
+describe('getDaysInYear', function() {
+ it('returns the number of days in the year of the given date', function() {
+ const result = getDaysInYear(new Date(2014, 6 /* Jul */, 2))
+ assert(result === 365)
+ })
+
+ it('works for a leap year', function() {
+ const result = getDaysInYear(new Date(2012, 6 /* Jul */, 2))
+ assert(result === 366)
+ })
+
+ it('works for the years divisible by 100 but not by 400', function() {
+ const result = getDaysInYear(new Date(2100, 6 /* Jul */, 2))
+ assert(result === 365)
+ })
+
+ it('works for the years divisible by 400', function() {
+ const result = getDaysInYear(new Date(2000, 6 /* Jul */, 2))
+ assert(result === 366)
+ })
+
+ it('accepts a timestamp', function() {
+ const date = new Date(2012, 6 /* Jul */, 2).getTime()
+ const result = getDaysInYear(date)
+ assert(result === 366)
+ })
+
+ it('returns NaN if the given date is invalid', function() {
+ const result = getDaysInYear(new Date(NaN))
+ assert(isNaN(result))
+ })
+
+ it('throws TypeError exception if passed less than 1 argument', function() {
+ assert.throws(getDaysInYear.bind(null), TypeError)
+ })
+})
diff --git a/date-fns/src/getDecade/benchmark.js b/date-fns/src/getDecade/benchmark.js
new file mode 100644
index 0000000..bc0dc18
--- /dev/null
+++ b/date-fns/src/getDecade/benchmark.js
@@ -0,0 +1,21 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import getDecade from '.'
+import moment from 'moment'
+
+suite('getDecade', function () {
+ benchmark('date-fns', function () {
+ return getDecade(this.date)
+ })
+
+ benchmark('Moment.js', function () {
+ return Math.floor(this.moment.year() / 10) * 10
+ })
+}, {
+ setup: function () {
+ this.date = new Date()
+ this.moment = moment()
+ }
+})
diff --git a/date-fns/src/getDecade/index.d.ts b/date-fns/src/getDecade/index.d.ts
new file mode 100644
index 0000000..dfa8961
--- /dev/null
+++ b/date-fns/src/getDecade/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { getDecade } from 'date-fns'
+export default getDecade
diff --git a/date-fns/src/getDecade/index.js.flow b/date-fns/src/getDecade/index.js.flow
new file mode 100644
index 0000000..07bb012
--- /dev/null
+++ b/date-fns/src/getDecade/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (date: Date | number) => number
diff --git a/date-fns/src/getDecade/index.ts b/date-fns/src/getDecade/index.ts
new file mode 100644
index 0000000..fa89270
--- /dev/null
+++ b/date-fns/src/getDecade/index.ts
@@ -0,0 +1,32 @@
+import toDate from '../toDate/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name getDecade
+ * @category Decade Helpers
+ * @summary Get the decade of the given date.
+ *
+ * @description
+ * Get the decade of the given date.
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} date - the given date
+ * @returns {Number} the year of decade
+ * @throws {TypeError} 1 argument required
+ *
+ * @example
+ * // Which decade belongs 27 November 1942?
+ * const result = getDecade(new Date(1942, 10, 27))
+ * //=> 1940
+ */
+export default function getDecade(dirtyDate: Date | number): number {
+ requiredArgs(1, arguments)
+
+ const date = toDate(dirtyDate)
+ const year = date.getFullYear()
+ const decade = Math.floor(year / 10) * 10
+ return decade
+}
diff --git a/date-fns/src/getDecade/test.ts b/date-fns/src/getDecade/test.ts
new file mode 100644
index 0000000..8e93bb7
--- /dev/null
+++ b/date-fns/src/getDecade/test.ts
@@ -0,0 +1,26 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import getDecade from '.'
+
+describe('getDecade', function() {
+ it('returns the decade for a the given date', function() {
+ const result = getDecade(new Date(1971, 10 /* Nov */, 8))
+ assert(result === 1970)
+ })
+
+ it('accepts a timestamp', function() {
+ const result = getDecade(new Date(1969, 6 /* Jul */, 20).getTime())
+ assert(result === 1960)
+ })
+
+ it('returns NaN if the given date is invalid', function() {
+ const result = getDecade(new Date(NaN))
+ assert(isNaN(result))
+ })
+
+ it('throws TypeError exception if passed less than 1 argument', function() {
+ assert.throws(getDecade.bind(null), TypeError)
+ })
+})
diff --git a/date-fns/src/getHours/benchmark.js b/date-fns/src/getHours/benchmark.js
new file mode 100644
index 0000000..c50326e
--- /dev/null
+++ b/date-fns/src/getHours/benchmark.js
@@ -0,0 +1,21 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import getHours from '.'
+import moment from 'moment'
+
+suite('getHours', function () {
+ benchmark('date-fns', function () {
+ return getHours(this.date)
+ })
+
+ benchmark('Moment.js', function () {
+ return this.moment.hours()
+ })
+}, {
+ setup: function () {
+ this.date = new Date()
+ this.moment = moment()
+ }
+})
diff --git a/date-fns/src/getHours/index.d.ts b/date-fns/src/getHours/index.d.ts
new file mode 100644
index 0000000..1ef4909
--- /dev/null
+++ b/date-fns/src/getHours/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { getHours } from 'date-fns'
+export default getHours
diff --git a/date-fns/src/getHours/index.js.flow b/date-fns/src/getHours/index.js.flow
new file mode 100644
index 0000000..07bb012
--- /dev/null
+++ b/date-fns/src/getHours/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (date: Date | number) => number
diff --git a/date-fns/src/getHours/index.ts b/date-fns/src/getHours/index.ts
new file mode 100644
index 0000000..ed69c73
--- /dev/null
+++ b/date-fns/src/getHours/index.ts
@@ -0,0 +1,31 @@
+import toDate from '../toDate/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name getHours
+ * @category Hour Helpers
+ * @summary Get the hours of the given date.
+ *
+ * @description
+ * Get the hours of the given date.
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} date - the given date
+ * @returns {Number} the hours
+ * @throws {TypeError} 1 argument required
+ *
+ * @example
+ * // Get the hours of 29 February 2012 11:45:00:
+ * const result = getHours(new Date(2012, 1, 29, 11, 45))
+ * //=> 11
+ */
+export default function getHours(dirtyDate: Date | number): number {
+ requiredArgs(1, arguments)
+
+ const date = toDate(dirtyDate)
+ const hours = date.getHours()
+ return hours
+}
diff --git a/date-fns/src/getHours/test.ts b/date-fns/src/getHours/test.ts
new file mode 100644
index 0000000..5b8082b
--- /dev/null
+++ b/date-fns/src/getHours/test.ts
@@ -0,0 +1,26 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import getHours from '.'
+
+describe('getHours', function() {
+ it('returns the hours of the given date', function() {
+ const result = getHours(new Date(2012, 1 /* Feb */, 29, 11, 45))
+ assert(result === 11)
+ })
+
+ it('accepts a timestamp', function() {
+ const result = getHours(new Date(2014, 3 /* Apr */, 2, 23, 30).getTime())
+ assert(result === 23)
+ })
+
+ it('returns NaN if the given date is invalid', function() {
+ const result = getHours(new Date(NaN))
+ assert(isNaN(result))
+ })
+
+ it('throws TypeError exception if passed less than 1 argument', function() {
+ assert.throws(getHours.bind(null), TypeError)
+ })
+})
diff --git a/date-fns/src/getISODay/benchmark.js b/date-fns/src/getISODay/benchmark.js
new file mode 100644
index 0000000..cb9a406
--- /dev/null
+++ b/date-fns/src/getISODay/benchmark.js
@@ -0,0 +1,21 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import getISODay from '.'
+import moment from 'moment'
+
+suite('getISODay', function () {
+ benchmark('date-fns', function () {
+ return getISODay(this.date)
+ })
+
+ benchmark('Moment.js', function () {
+ return this.moment.isoWeekday()
+ })
+}, {
+ setup: function () {
+ this.date = new Date()
+ this.moment = moment()
+ }
+})
diff --git a/date-fns/src/getISODay/index.d.ts b/date-fns/src/getISODay/index.d.ts
new file mode 100644
index 0000000..fef7587
--- /dev/null
+++ b/date-fns/src/getISODay/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { getISODay } from 'date-fns'
+export default getISODay
diff --git a/date-fns/src/getISODay/index.js.flow b/date-fns/src/getISODay/index.js.flow
new file mode 100644
index 0000000..07bb012
--- /dev/null
+++ b/date-fns/src/getISODay/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (date: Date | number) => number
diff --git a/date-fns/src/getISODay/index.ts b/date-fns/src/getISODay/index.ts
new file mode 100644
index 0000000..24e5c5b
--- /dev/null
+++ b/date-fns/src/getISODay/index.ts
@@ -0,0 +1,39 @@
+import toDate from '../toDate/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name getISODay
+ * @category Weekday Helpers
+ * @summary Get the day of the ISO week of the given date.
+ *
+ * @description
+ * Get the day of the ISO week of the given date,
+ * which is 7 for Sunday, 1 for Monday etc.
+ *
+ * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} date - the given date
+ * @returns {Number} the day of ISO week
+ * @throws {TypeError} 1 argument required
+ *
+ * @example
+ * // Which day of the ISO week is 26 February 2012?
+ * const result = getISODay(new Date(2012, 1, 26))
+ * //=> 7
+ */
+export default function getISODay(dirtyDate: Date | number): number {
+ requiredArgs(1, arguments)
+
+ const date = toDate(dirtyDate)
+ let day = date.getDay()
+
+ if (day === 0) {
+ day = 7
+ }
+
+ return day
+}
diff --git a/date-fns/src/getISODay/test.ts b/date-fns/src/getISODay/test.ts
new file mode 100644
index 0000000..79a72fd
--- /dev/null
+++ b/date-fns/src/getISODay/test.ts
@@ -0,0 +1,31 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import getISODay from '.'
+
+describe('getISODay', function() {
+ it('returns the day of the ISO week of the given date', function() {
+ const result = getISODay(new Date(2012, 1 /* Feb */, 29))
+ assert(result === 3)
+ })
+
+ it('returns 7 if the given day is Sunday', function() {
+ const result = getISODay(new Date(2014, 5 /* Jun */, 1))
+ assert(result === 7)
+ })
+
+ it('accepts a timestamp', function() {
+ const result = getISODay(new Date(2014, 5 /* Jun */, 1).getTime())
+ assert(result === 7)
+ })
+
+ it('returns NaN if the given date is invalid', function() {
+ const result = getISODay(new Date(NaN))
+ assert(isNaN(result))
+ })
+
+ it('throws TypeError exception if passed less than 1 argument', function() {
+ assert.throws(getISODay.bind(null), TypeError)
+ })
+})
diff --git a/date-fns/src/getISOWeek/benchmark.js b/date-fns/src/getISOWeek/benchmark.js
new file mode 100644
index 0000000..33e863a
--- /dev/null
+++ b/date-fns/src/getISOWeek/benchmark.js
@@ -0,0 +1,21 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import getISOWeek from '.'
+import moment from 'moment'
+
+suite('getISOWeek', function () {
+ benchmark('date-fns', function () {
+ return getISOWeek(this.date)
+ })
+
+ benchmark('Moment.js', function () {
+ return this.moment.isoWeek()
+ })
+}, {
+ setup: function () {
+ this.date = new Date()
+ this.moment = moment()
+ }
+})
diff --git a/date-fns/src/getISOWeek/index.d.ts b/date-fns/src/getISOWeek/index.d.ts
new file mode 100644
index 0000000..f24419b
--- /dev/null
+++ b/date-fns/src/getISOWeek/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { getISOWeek } from 'date-fns'
+export default getISOWeek
diff --git a/date-fns/src/getISOWeek/index.js.flow b/date-fns/src/getISOWeek/index.js.flow
new file mode 100644
index 0000000..07bb012
--- /dev/null
+++ b/date-fns/src/getISOWeek/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (date: Date | number) => number
diff --git a/date-fns/src/getISOWeek/index.ts b/date-fns/src/getISOWeek/index.ts
new file mode 100644
index 0000000..b4635e9
--- /dev/null
+++ b/date-fns/src/getISOWeek/index.ts
@@ -0,0 +1,41 @@
+import toDate from '../toDate/index'
+import startOfISOWeek from '../startOfISOWeek/index'
+import startOfISOWeekYear from '../startOfISOWeekYear/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+const MILLISECONDS_IN_WEEK = 604800000
+
+/**
+ * @name getISOWeek
+ * @category ISO Week Helpers
+ * @summary Get the ISO week of the given date.
+ *
+ * @description
+ * Get the ISO week of the given date.
+ *
+ * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} date - the given date
+ * @returns {Number} the ISO week
+ * @throws {TypeError} 1 argument required
+ *
+ * @example
+ * // Which week of the ISO-week numbering year is 2 January 2005?
+ * const result = getISOWeek(new Date(2005, 0, 2))
+ * //=> 53
+ */
+export default function getISOWeek(dirtyDate: Date | number): number {
+ requiredArgs(1, arguments)
+
+ const date = toDate(dirtyDate)
+ const diff = startOfISOWeek(date).getTime() - startOfISOWeekYear(date).getTime()
+
+ // Round the number of days to the nearest integer
+ // because the number of milliseconds in a week is not constant
+ // (e.g. it's different in the week of the daylight saving time clock shift)
+ return Math.round(diff / MILLISECONDS_IN_WEEK) + 1
+}
diff --git a/date-fns/src/getISOWeek/test.ts b/date-fns/src/getISOWeek/test.ts
new file mode 100644
index 0000000..10a739b
--- /dev/null
+++ b/date-fns/src/getISOWeek/test.ts
@@ -0,0 +1,56 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import getISOWeek from '.'
+
+describe('getISOWeek', function() {
+ it('returns the ISO week of the given date', function() {
+ const result = getISOWeek(new Date(2005, 0 /* Jan */, 2))
+ assert(result === 53)
+ })
+
+ it('accepts a timestamp', function() {
+ const result = getISOWeek(new Date(2008, 11 /* Dec */, 29).getTime())
+ assert(result === 1)
+ })
+
+ describe('edge cases', function() {
+ it('returns the ISO week at 1 January 2016', function() {
+ const result = getISOWeek(new Date(2016, 0 /* Jan */, 1))
+ assert(result === 53)
+ })
+
+ it('returns the ISO week at 1 May 2016', function() {
+ const result = getISOWeek(new Date(2016, 4 /* May */, 1))
+ assert(result === 17)
+ })
+
+ it('returns the ISO week at 2 May 2016', function() {
+ const result = getISOWeek(new Date(2016, 4 /* May */, 2))
+ assert(result === 18)
+ })
+
+ it('returns the ISO week at 31 May 2016', function() {
+ const result = getISOWeek(new Date(2016, 4 /* May */, 31))
+ assert(result === 22)
+ })
+ })
+
+ it('handles dates before 100 AD', function() {
+ const initialDate = new Date(0)
+ initialDate.setFullYear(7, 11 /* Dec */, 30)
+ initialDate.setHours(0, 0, 0, 0)
+ const result = getISOWeek(initialDate)
+ assert(result === 52)
+ })
+
+ it('returns NaN if the given date is invalid', function() {
+ const result = getISOWeek(new Date(NaN))
+ assert(isNaN(result))
+ })
+
+ it('throws TypeError exception if passed less than 1 argument', function() {
+ assert.throws(getISOWeek.bind(null), TypeError)
+ })
+})
diff --git a/date-fns/src/getISOWeekYear/benchmark.js b/date-fns/src/getISOWeekYear/benchmark.js
new file mode 100644
index 0000000..6261d01
--- /dev/null
+++ b/date-fns/src/getISOWeekYear/benchmark.js
@@ -0,0 +1,21 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import getISOWeekYear from '.'
+import moment from 'moment'
+
+suite('getISOWeekYear', function () {
+ benchmark('date-fns', function () {
+ return getISOWeekYear(this.date)
+ })
+
+ benchmark('Moment.js', function () {
+ return this.moment.isoWeekYear()
+ })
+}, {
+ setup: function () {
+ this.date = new Date()
+ this.moment = moment()
+ }
+})
diff --git a/date-fns/src/getISOWeekYear/index.d.ts b/date-fns/src/getISOWeekYear/index.d.ts
new file mode 100644
index 0000000..018d0c8
--- /dev/null
+++ b/date-fns/src/getISOWeekYear/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { getISOWeekYear } from 'date-fns'
+export default getISOWeekYear
diff --git a/date-fns/src/getISOWeekYear/index.js.flow b/date-fns/src/getISOWeekYear/index.js.flow
new file mode 100644
index 0000000..07bb012
--- /dev/null
+++ b/date-fns/src/getISOWeekYear/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (date: Date | number) => number
diff --git a/date-fns/src/getISOWeekYear/index.ts b/date-fns/src/getISOWeekYear/index.ts
new file mode 100644
index 0000000..84366cf
--- /dev/null
+++ b/date-fns/src/getISOWeekYear/index.ts
@@ -0,0 +1,57 @@
+import toDate from '../toDate/index'
+import startOfISOWeek from '../startOfISOWeek/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name getISOWeekYear
+ * @category ISO Week-Numbering Year Helpers
+ * @summary Get the ISO week-numbering year of the given date.
+ *
+ * @description
+ * Get the ISO week-numbering year of the given date,
+ * which always starts 3 days before the year's first Thursday.
+ *
+ * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * - The function was renamed from `getISOYear` to `getISOWeekYear`.
+ * "ISO week year" is short for [ISO week-numbering year](https://en.wikipedia.org/wiki/ISO_week_date).
+ * This change makes the name consistent with
+ * locale-dependent week-numbering year helpers, e.g., `getWeekYear`.
+ *
+ * @param {Date|Number} date - the given date
+ * @returns {Number} the ISO week-numbering year
+ * @throws {TypeError} 1 argument required
+ *
+ * @example
+ * // Which ISO-week numbering year is 2 January 2005?
+ * const result = getISOWeekYear(new Date(2005, 0, 2))
+ * //=> 2004
+ */
+export default function getISOWeekYear(dirtyDate: Date | number): number {
+ requiredArgs(1, arguments)
+
+ const date = toDate(dirtyDate)
+ const year = date.getFullYear()
+
+ const fourthOfJanuaryOfNextYear = new Date(0)
+ fourthOfJanuaryOfNextYear.setFullYear(year + 1, 0, 4)
+ fourthOfJanuaryOfNextYear.setHours(0, 0, 0, 0)
+ const startOfNextYear = startOfISOWeek(fourthOfJanuaryOfNextYear)
+
+ const fourthOfJanuaryOfThisYear = new Date(0)
+ fourthOfJanuaryOfThisYear.setFullYear(year, 0, 4)
+ fourthOfJanuaryOfThisYear.setHours(0, 0, 0, 0)
+ const startOfThisYear = startOfISOWeek(fourthOfJanuaryOfThisYear)
+
+ if (date.getTime() >= startOfNextYear.getTime()) {
+ return year + 1
+ } else if (date.getTime() >= startOfThisYear.getTime()) {
+ return year
+ } else {
+ return year - 1
+ }
+}
diff --git a/date-fns/src/getISOWeekYear/test.ts b/date-fns/src/getISOWeekYear/test.ts
new file mode 100644
index 0000000..64a05db
--- /dev/null
+++ b/date-fns/src/getISOWeekYear/test.ts
@@ -0,0 +1,34 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import getISOWeekYear from '.'
+
+describe('getISOWeekYear', function() {
+ it('returns the ISO week-numbering year of the given date', function() {
+ const result = getISOWeekYear(new Date(2007, 11 /* Dec */, 31))
+ assert(result === 2008)
+ })
+
+ it('accepts a timestamp', function() {
+ const result = getISOWeekYear(new Date(2005, 0 /* Jan */, 1).getTime())
+ assert(result === 2004)
+ })
+
+ it('handles dates before 100 AD', function() {
+ const initialDate = new Date(0)
+ initialDate.setFullYear(7, 11 /* Dec */, 31)
+ initialDate.setHours(0, 0, 0, 0)
+ const result = getISOWeekYear(initialDate)
+ assert(result === 8)
+ })
+
+ it('returns NaN if the given date is invalid', function() {
+ const result = getISOWeekYear(new Date(NaN))
+ assert(isNaN(result))
+ })
+
+ it('throws TypeError exception if passed less than 1 argument', function() {
+ assert.throws(getISOWeekYear.bind(null), TypeError)
+ })
+})
diff --git a/date-fns/src/getISOWeeksInYear/benchmark.js b/date-fns/src/getISOWeeksInYear/benchmark.js
new file mode 100644
index 0000000..ad36737
--- /dev/null
+++ b/date-fns/src/getISOWeeksInYear/benchmark.js
@@ -0,0 +1,21 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import getISOWeeksInYear from '.'
+import moment from 'moment'
+
+suite('getISOWeeksInYear', function () {
+ benchmark('date-fns', function () {
+ return getISOWeeksInYear(this.date)
+ })
+
+ benchmark('Moment.js', function () {
+ return this.moment.isoWeeksInYear()
+ })
+}, {
+ setup: function () {
+ this.date = new Date()
+ this.moment = moment()
+ }
+})
diff --git a/date-fns/src/getISOWeeksInYear/index.d.ts b/date-fns/src/getISOWeeksInYear/index.d.ts
new file mode 100644
index 0000000..5d3ee66
--- /dev/null
+++ b/date-fns/src/getISOWeeksInYear/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { getISOWeeksInYear } from 'date-fns'
+export default getISOWeeksInYear
diff --git a/date-fns/src/getISOWeeksInYear/index.js.flow b/date-fns/src/getISOWeeksInYear/index.js.flow
new file mode 100644
index 0000000..07bb012
--- /dev/null
+++ b/date-fns/src/getISOWeeksInYear/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (date: Date | number) => number
diff --git a/date-fns/src/getISOWeeksInYear/index.ts b/date-fns/src/getISOWeeksInYear/index.ts
new file mode 100644
index 0000000..698abdf
--- /dev/null
+++ b/date-fns/src/getISOWeeksInYear/index.ts
@@ -0,0 +1,40 @@
+import startOfISOWeekYear from '../startOfISOWeekYear/index'
+import addWeeks from '../addWeeks/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+const MILLISECONDS_IN_WEEK = 604800000
+
+/**
+ * @name getISOWeeksInYear
+ * @category ISO Week-Numbering Year Helpers
+ * @summary Get the number of weeks in an ISO week-numbering year of the given date.
+ *
+ * @description
+ * Get the number of weeks in an ISO week-numbering year of the given date.
+ *
+ * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} date - the given date
+ * @returns {Number} the number of ISO weeks in a year
+ * @throws {TypeError} 1 argument required
+ *
+ * @example
+ * // How many weeks are in ISO week-numbering year 2015?
+ * const result = getISOWeeksInYear(new Date(2015, 1, 11))
+ * //=> 53
+ */
+export default function getISOWeeksInYear(dirtyDate: Date | number): number {
+ requiredArgs(1, arguments)
+
+ const thisYear = startOfISOWeekYear(dirtyDate)
+ const nextYear = startOfISOWeekYear(addWeeks(thisYear, 60))
+ const diff = nextYear.valueOf() - thisYear.valueOf()
+ // Round the number of weeks to the nearest integer
+ // because the number of milliseconds in a week is not constant
+ // (e.g. it's different in the week of the daylight saving time clock shift)
+ return Math.round(diff / MILLISECONDS_IN_WEEK)
+}
diff --git a/date-fns/src/getISOWeeksInYear/test.ts b/date-fns/src/getISOWeeksInYear/test.ts
new file mode 100644
index 0000000..043409a
--- /dev/null
+++ b/date-fns/src/getISOWeeksInYear/test.ts
@@ -0,0 +1,35 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import getISOWeeksInYear from '.'
+
+describe('getISOWeeksInYear', function() {
+ it('returns the number of ISO weeks in the ISO week-numbering year of the given date', function() {
+ const result = getISOWeeksInYear(new Date(2015, 1 /* Feb */, 11))
+ assert(result === 53)
+ })
+
+ it('accepts a timestamp', function() {
+ const date = new Date(2003, 11 /* Dec */, 30).getTime()
+ const result = getISOWeeksInYear(date)
+ assert(result === 53)
+ })
+
+ it('handles dates before 100 AD', function() {
+ const initialDate = new Date(0)
+ initialDate.setFullYear(4, 0 /* Jan */, 4)
+ initialDate.setHours(0, 0, 0, 0)
+ const result = getISOWeeksInYear(initialDate)
+ assert(result === 53)
+ })
+
+ it('returns NaN if the given date is invalid', function() {
+ const result = getISOWeeksInYear(new Date(NaN))
+ assert(isNaN(result))
+ })
+
+ it('throws TypeError exception if passed less than 1 argument', function() {
+ assert.throws(getISOWeeksInYear.bind(null), TypeError)
+ })
+})
diff --git a/date-fns/src/getMilliseconds/benchmark.js b/date-fns/src/getMilliseconds/benchmark.js
new file mode 100644
index 0000000..4aa97d8
--- /dev/null
+++ b/date-fns/src/getMilliseconds/benchmark.js
@@ -0,0 +1,21 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import getMilliseconds from '.'
+import moment from 'moment'
+
+suite('getMilliseconds', function () {
+ benchmark('date-fns', function () {
+ return getMilliseconds(this.date)
+ })
+
+ benchmark('Moment.js', function () {
+ return this.moment.milliseconds()
+ })
+}, {
+ setup: function () {
+ this.date = new Date()
+ this.moment = moment()
+ }
+})
diff --git a/date-fns/src/getMilliseconds/index.d.ts b/date-fns/src/getMilliseconds/index.d.ts
new file mode 100644
index 0000000..7476168
--- /dev/null
+++ b/date-fns/src/getMilliseconds/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { getMilliseconds } from 'date-fns'
+export default getMilliseconds
diff --git a/date-fns/src/getMilliseconds/index.js.flow b/date-fns/src/getMilliseconds/index.js.flow
new file mode 100644
index 0000000..07bb012
--- /dev/null
+++ b/date-fns/src/getMilliseconds/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (date: Date | number) => number
diff --git a/date-fns/src/getMilliseconds/index.ts b/date-fns/src/getMilliseconds/index.ts
new file mode 100644
index 0000000..bd3803d
--- /dev/null
+++ b/date-fns/src/getMilliseconds/index.ts
@@ -0,0 +1,31 @@
+import toDate from '../toDate/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name getMilliseconds
+ * @category Millisecond Helpers
+ * @summary Get the milliseconds of the given date.
+ *
+ * @description
+ * Get the milliseconds of the given date.
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} date - the given date
+ * @returns {Number} the milliseconds
+ * @throws {TypeError} 1 argument required
+ *
+ * @example
+ * // Get the milliseconds of 29 February 2012 11:45:05.123:
+ * const result = getMilliseconds(new Date(2012, 1, 29, 11, 45, 5, 123))
+ * //=> 123
+ */
+export default function getMilliseconds(dirtyDate: Date | number): number {
+ requiredArgs(1, arguments)
+
+ const date = toDate(dirtyDate)
+ const milliseconds = date.getMilliseconds()
+ return milliseconds
+}
diff --git a/date-fns/src/getMilliseconds/test.ts b/date-fns/src/getMilliseconds/test.ts
new file mode 100644
index 0000000..428e113
--- /dev/null
+++ b/date-fns/src/getMilliseconds/test.ts
@@ -0,0 +1,30 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import getMilliseconds from '.'
+
+describe('getMilliseconds', function() {
+ it('returns the milliseconds of the given date', function() {
+ const result = getMilliseconds(
+ new Date(2012, 1 /* Feb */, 29, 11, 45, 5, 123)
+ )
+ assert(result === 123)
+ })
+
+ it('accepts a timestamp', function() {
+ const result = getMilliseconds(
+ new Date(2014, 3 /* Apr */, 2, 23, 30, 42, 500).getTime()
+ )
+ assert(result === 500)
+ })
+
+ it('returns NaN if the given date is invalid', function() {
+ const result = getMilliseconds(new Date(NaN))
+ assert(isNaN(result))
+ })
+
+ it('throws TypeError exception if passed less than 1 argument', function() {
+ assert.throws(getMilliseconds.bind(null), TypeError)
+ })
+})
diff --git a/date-fns/src/getMinutes/benchmark.js b/date-fns/src/getMinutes/benchmark.js
new file mode 100644
index 0000000..1bd822d
--- /dev/null
+++ b/date-fns/src/getMinutes/benchmark.js
@@ -0,0 +1,21 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import getMinutes from '.'
+import moment from 'moment'
+
+suite('getMinutes', function () {
+ benchmark('date-fns', function () {
+ return getMinutes(this.date)
+ })
+
+ benchmark('Moment.js', function () {
+ return this.moment.minutes()
+ })
+}, {
+ setup: function () {
+ this.date = new Date()
+ this.moment = moment()
+ }
+})
diff --git a/date-fns/src/getMinutes/index.d.ts b/date-fns/src/getMinutes/index.d.ts
new file mode 100644
index 0000000..e6a9284
--- /dev/null
+++ b/date-fns/src/getMinutes/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { getMinutes } from 'date-fns'
+export default getMinutes
diff --git a/date-fns/src/getMinutes/index.js.flow b/date-fns/src/getMinutes/index.js.flow
new file mode 100644
index 0000000..07bb012
--- /dev/null
+++ b/date-fns/src/getMinutes/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (date: Date | number) => number
diff --git a/date-fns/src/getMinutes/index.ts b/date-fns/src/getMinutes/index.ts
new file mode 100644
index 0000000..12bdab7
--- /dev/null
+++ b/date-fns/src/getMinutes/index.ts
@@ -0,0 +1,31 @@
+import toDate from '../toDate/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name getMinutes
+ * @category Minute Helpers
+ * @summary Get the minutes of the given date.
+ *
+ * @description
+ * Get the minutes of the given date.
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} date - the given date
+ * @returns {Number} the minutes
+ * @throws {TypeError} 1 argument required
+ *
+ * @example
+ * // Get the minutes of 29 February 2012 11:45:05:
+ * const result = getMinutes(new Date(2012, 1, 29, 11, 45, 5))
+ * //=> 45
+ */
+export default function getMinutes(dirtyDate: Date | number): number {
+ requiredArgs(1, arguments)
+
+ const date = toDate(dirtyDate)
+ const minutes = date.getMinutes()
+ return minutes
+}
diff --git a/date-fns/src/getMinutes/test.ts b/date-fns/src/getMinutes/test.ts
new file mode 100644
index 0000000..f47e3cf
--- /dev/null
+++ b/date-fns/src/getMinutes/test.ts
@@ -0,0 +1,26 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import getMinutes from '.'
+
+describe('getMinutes', function() {
+ it('returns the minutes of the given date', function() {
+ const result = getMinutes(new Date(2012, 1 /* Feb */, 29, 11, 45, 5))
+ assert(result === 45)
+ })
+
+ it('accepts a timestamp', function() {
+ const result = getMinutes(new Date(2014, 3 /* Apr */, 2, 23, 30).getTime())
+ assert(result === 30)
+ })
+
+ it('returns NaN if the given date is invalid', function() {
+ const result = getMinutes(new Date(NaN))
+ assert(isNaN(result))
+ })
+
+ it('throws TypeError exception if passed less than 1 argument', function() {
+ assert.throws(getMinutes.bind(null), TypeError)
+ })
+})
diff --git a/date-fns/src/getMonth/benchmark.js b/date-fns/src/getMonth/benchmark.js
new file mode 100644
index 0000000..5c4ba43
--- /dev/null
+++ b/date-fns/src/getMonth/benchmark.js
@@ -0,0 +1,21 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import getMonth from '.'
+import moment from 'moment'
+
+suite('getMonth', function () {
+ benchmark('date-fns', function () {
+ return getMonth(this.date)
+ })
+
+ benchmark('Moment.js', function () {
+ return this.moment.month()
+ })
+}, {
+ setup: function () {
+ this.date = new Date()
+ this.moment = moment()
+ }
+})
diff --git a/date-fns/src/getMonth/index.d.ts b/date-fns/src/getMonth/index.d.ts
new file mode 100644
index 0000000..e0b6217
--- /dev/null
+++ b/date-fns/src/getMonth/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { getMonth } from 'date-fns'
+export default getMonth
diff --git a/date-fns/src/getMonth/index.js.flow b/date-fns/src/getMonth/index.js.flow
new file mode 100644
index 0000000..07bb012
--- /dev/null
+++ b/date-fns/src/getMonth/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (date: Date | number) => number
diff --git a/date-fns/src/getMonth/index.ts b/date-fns/src/getMonth/index.ts
new file mode 100644
index 0000000..d7b4571
--- /dev/null
+++ b/date-fns/src/getMonth/index.ts
@@ -0,0 +1,31 @@
+import toDate from '../toDate/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name getMonth
+ * @category Month Helpers
+ * @summary Get the month of the given date.
+ *
+ * @description
+ * Get the month of the given date.
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} date - the given date
+ * @returns {Number} the month
+ * @throws {TypeError} 1 argument required
+ *
+ * @example
+ * // Which month is 29 February 2012?
+ * const result = getMonth(new Date(2012, 1, 29))
+ * //=> 1
+ */
+export default function getMonth(dirtyDate: Date | number): number {
+ requiredArgs(1, arguments)
+
+ const date = toDate(dirtyDate)
+ const month = date.getMonth()
+ return month
+}
diff --git a/date-fns/src/getMonth/test.ts b/date-fns/src/getMonth/test.ts
new file mode 100644
index 0000000..a34f2a2
--- /dev/null
+++ b/date-fns/src/getMonth/test.ts
@@ -0,0 +1,26 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import getMonth from '.'
+
+describe('getMonth', function() {
+ it('returns the month of the given date', function() {
+ const result = getMonth(new Date(2012, 1 /* Feb */, 29))
+ assert(result === 1)
+ })
+
+ it('accepts a timestamp', function() {
+ const result = getMonth(new Date(2014, 3 /* Apr */, 2).getTime())
+ assert(result === 3)
+ })
+
+ it('returns NaN if the given date is invalid', function() {
+ const result = getMonth(new Date(NaN))
+ assert(isNaN(result))
+ })
+
+ it('throws TypeError exception if passed less than 1 argument', function() {
+ assert.throws(getMonth.bind(null), TypeError)
+ })
+})
diff --git a/date-fns/src/getOverlappingDaysInIntervals/index.d.ts b/date-fns/src/getOverlappingDaysInIntervals/index.d.ts
new file mode 100644
index 0000000..e309ff9
--- /dev/null
+++ b/date-fns/src/getOverlappingDaysInIntervals/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { getOverlappingDaysInIntervals } from 'date-fns'
+export default getOverlappingDaysInIntervals
diff --git a/date-fns/src/getOverlappingDaysInIntervals/index.js.flow b/date-fns/src/getOverlappingDaysInIntervals/index.js.flow
new file mode 100644
index 0000000..9c0f272
--- /dev/null
+++ b/date-fns/src/getOverlappingDaysInIntervals/index.js.flow
@@ -0,0 +1,55 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (
+ intervalLeft: Interval,
+ intervalRight: Interval
+) => number
diff --git a/date-fns/src/getOverlappingDaysInIntervals/index.ts b/date-fns/src/getOverlappingDaysInIntervals/index.ts
new file mode 100644
index 0000000..aa5dc63
--- /dev/null
+++ b/date-fns/src/getOverlappingDaysInIntervals/index.ts
@@ -0,0 +1,106 @@
+import toDate from '../toDate/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+import { Interval } from '../types'
+
+const MILLISECONDS_IN_DAY = 24 * 60 * 60 * 1000
+
+/**
+ * @name getOverlappingDaysInIntervals
+ * @category Interval Helpers
+ * @summary Get the number of days that overlap in two time intervals
+ *
+ * @description
+ * Get the number of days that overlap in two time intervals
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * - The function was renamed from `getOverlappingDaysInRanges` to `getOverlappingDaysInIntervals`.
+ * This change was made to mirror the use of the word "interval" in standard ISO 8601:2004 terminology:
+ *
+ * ```
+ * 2.1.3
+ * time interval
+ * part of the time axis limited by two instants
+ * ```
+ *
+ * Also, this function now accepts an object with `start` and `end` properties
+ * instead of two arguments as an interval.
+ * This function now throws `RangeError` if the start of the interval is after its end
+ * or if any date in the interval is `Invalid Date`.
+ *
+ * ```javascript
+ * // Before v2.0.0
+ *
+ * getOverlappingDaysInRanges(
+ * new Date(2014, 0, 10), new Date(2014, 0, 20),
+ * new Date(2014, 0, 17), new Date(2014, 0, 21)
+ * )
+ *
+ * // v2.0.0 onward
+ *
+ * getOverlappingDaysInIntervals(
+ * { start: new Date(2014, 0, 10), end: new Date(2014, 0, 20) },
+ * { start: new Date(2014, 0, 17), end: new Date(2014, 0, 21) }
+ * )
+ * ```
+ *
+ * @param {Interval} intervalLeft - the first interval to compare. See [Interval]{@link docs/Interval}
+ * @param {Interval} intervalRight - the second interval to compare. See [Interval]{@link docs/Interval}
+ * @returns {Number} the number of days that overlap in two time intervals
+ * @throws {TypeError} 2 arguments required
+ * @throws {RangeError} The start of an interval cannot be after its end
+ * @throws {RangeError} Date in interval cannot be `Invalid Date`
+ *
+ * @example
+ * // For overlapping time intervals adds 1 for each started overlapping day:
+ * getOverlappingDaysInIntervals(
+ * { start: new Date(2014, 0, 10), end: new Date(2014, 0, 20) },
+ * { start: new Date(2014, 0, 17), end: new Date(2014, 0, 21) }
+ * )
+ * //=> 3
+ *
+ * @example
+ * // For non-overlapping time intervals returns 0:
+ * getOverlappingDaysInIntervals(
+ * { start: new Date(2014, 0, 10), end: new Date(2014, 0, 20) },
+ * { start: new Date(2014, 0, 21), end: new Date(2014, 0, 22) }
+ * )
+ * //=> 0
+ */
+
+export default function getOverlappingDaysInIntervals(
+ dirtyIntervalLeft: Interval,
+ dirtyIntervalRight: Interval
+): number {
+ requiredArgs(2, arguments)
+
+ const intervalLeft = dirtyIntervalLeft || {}
+ const intervalRight = dirtyIntervalRight || {}
+ const leftStartTime = toDate(intervalLeft.start).getTime()
+ const leftEndTime = toDate(intervalLeft.end).getTime()
+ const rightStartTime = toDate(intervalRight.start).getTime()
+ const rightEndTime = toDate(intervalRight.end).getTime()
+
+ // Throw an exception if start date is after end date or if any date is `Invalid Date`
+ if (!(leftStartTime <= leftEndTime && rightStartTime <= rightEndTime)) {
+ throw new RangeError('Invalid interval')
+ }
+
+ const isOverlapping =
+ leftStartTime < rightEndTime && rightStartTime < leftEndTime
+
+ if (!isOverlapping) {
+ return 0
+ }
+
+ const overlapStartDate =
+ rightStartTime < leftStartTime ? leftStartTime : rightStartTime
+
+ const overlapEndDate = rightEndTime > leftEndTime ? leftEndTime : rightEndTime
+
+ const differenceInMs = overlapEndDate - overlapStartDate
+
+ return Math.ceil(differenceInMs / MILLISECONDS_IN_DAY)
+}
diff --git a/date-fns/src/getOverlappingDaysInIntervals/test.ts b/date-fns/src/getOverlappingDaysInIntervals/test.ts
new file mode 100644
index 0000000..b39672f
--- /dev/null
+++ b/date-fns/src/getOverlappingDaysInIntervals/test.ts
@@ -0,0 +1,240 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import getOverlappingDaysInIntervals from '.'
+
+describe('getOverlappingDaysInIntervals', function() {
+ const initialIntervalStart = new Date(2016, 10, 10, 13, 0, 0)
+ const initialIntervalEnd = new Date(2016, 11, 3, 15, 0, 0)
+
+ describe("when the time intervals don't overlap", function() {
+ it('returns 0 for a valid non overlapping interval before another interval', function() {
+ const earlierIntervalStart = new Date(2016, 9, 25)
+ const earlierIntervalEnd = new Date(2016, 10, 9)
+
+ const numOverlappingDays = getOverlappingDaysInIntervals(
+ { start: initialIntervalStart, end: initialIntervalEnd },
+ { start: earlierIntervalStart, end: earlierIntervalEnd }
+ )
+ assert(numOverlappingDays === 0)
+ })
+
+ it('returns 0 for a valid non overlapping interval after another interval', function() {
+ const laterIntervalStart = new Date(2016, 11, 4)
+ const laterIntervalEnd = new Date(2016, 11, 9)
+
+ const numOverlappingDays = getOverlappingDaysInIntervals(
+ { start: initialIntervalStart, end: initialIntervalEnd },
+ { start: laterIntervalStart, end: laterIntervalEnd }
+ )
+ assert(numOverlappingDays === 0)
+ })
+
+ it('returns 0 for a non overlapping same-day interval', function() {
+ const sameDayIntervalStart = new Date(2016, 11, 4, 9, 0, 0)
+ const sameDayIntervalEnd = new Date(2016, 11, 4, 18, 0, 0)
+
+ const numOverlappingDays = getOverlappingDaysInIntervals(
+ { start: initialIntervalStart, end: initialIntervalEnd },
+ { start: sameDayIntervalStart, end: sameDayIntervalEnd }
+ )
+ assert(numOverlappingDays === 0)
+ })
+
+ it('returns 0 for an interval differing by a few hours', function() {
+ const oneDayOverlappingIntervalStart = new Date(2016, 11, 3, 18, 0, 0)
+ const oneDayOverlappingIntervalEnd = new Date(2016, 11, 14, 13, 0, 0)
+
+ const numOverlappingDays = getOverlappingDaysInIntervals(
+ { start: initialIntervalStart, end: initialIntervalEnd },
+ {
+ start: oneDayOverlappingIntervalStart,
+ end: oneDayOverlappingIntervalEnd
+ }
+ )
+ assert(numOverlappingDays === 0)
+ })
+
+ it("returns 0 for an interval with the same startDateTime as the initial time intervals's endDateTime", function() {
+ const oneDayOverlapIntervalStart = new Date(2016, 11, 3, 15, 0, 0)
+ const oneDayOverlapIntervalEnd = new Date(2016, 11, 14, 13, 0, 0)
+
+ const numOverlappingDays = getOverlappingDaysInIntervals(
+ { start: initialIntervalStart, end: initialIntervalEnd },
+ { start: oneDayOverlapIntervalStart, end: oneDayOverlapIntervalEnd }
+ )
+ assert(numOverlappingDays === 0)
+ })
+
+ it("returns 0 for an interval with the same endDateTime as the initial time interval's startDateTime", function() {
+ const oneDayOverlapIntervalStart = new Date(2016, 10, 3, 15, 0, 0)
+ const oneDayOverlapIntervalEnd = new Date(2016, 10, 10, 13, 0, 0)
+
+ const numOverlappingDays = getOverlappingDaysInIntervals(
+ { start: initialIntervalStart, end: initialIntervalEnd },
+ { start: oneDayOverlapIntervalStart, end: oneDayOverlapIntervalEnd }
+ )
+ assert(numOverlappingDays === 0)
+ })
+ })
+
+ describe('when the time intervals overlap', function() {
+ it('rounds up the result to include each started overlapping day', function() {
+ const includedIntervalStart = new Date(2016, 10, 14, 9, 0, 0)
+ const includedIntervalEnd = new Date(2016, 10, 15, 18, 0, 0)
+
+ const numOverlappingDays = getOverlappingDaysInIntervals(
+ { start: initialIntervalStart, end: initialIntervalEnd },
+ { start: includedIntervalStart, end: includedIntervalEnd }
+ )
+ assert(numOverlappingDays === 2)
+ })
+
+ it('returns the correct value for an interval included within another interval', function() {
+ const includedIntervalStart = new Date(2016, 10, 14)
+ const includedIntervalEnd = new Date(2016, 10, 15)
+
+ const numOverlappingDays = getOverlappingDaysInIntervals(
+ { start: initialIntervalStart, end: initialIntervalEnd },
+ { start: includedIntervalStart, end: includedIntervalEnd }
+ )
+ assert(numOverlappingDays === 1)
+ })
+
+ it('returns the correct value for an interval overlapping at the end', function() {
+ const endOverlappingIntervalStart = new Date(2016, 10, 5)
+ const endOverlappingIntervalEnd = new Date(2016, 10, 14)
+
+ const numOverlappingDays = getOverlappingDaysInIntervals(
+ { start: initialIntervalStart, end: initialIntervalEnd },
+ { start: endOverlappingIntervalStart, end: endOverlappingIntervalEnd }
+ )
+ assert(numOverlappingDays === 4)
+ })
+
+ it('returns the correct value for an interval overlapping at the beginning', function() {
+ const startOverlappingIntervalStart = new Date(2016, 10, 20)
+ const startOverlappingIntervalEnd = new Date(2016, 11, 14)
+
+ const numOverlappingDays = getOverlappingDaysInIntervals(
+ { start: initialIntervalStart, end: initialIntervalEnd },
+ {
+ start: startOverlappingIntervalStart,
+ end: startOverlappingIntervalEnd
+ }
+ )
+ assert(numOverlappingDays === 14)
+ })
+
+ it('returns the correct value for an interval including another interval', function() {
+ const includingIntervalStart = new Date(2016, 10, 5)
+ const includingIntervalEnd = new Date(2016, 11, 15)
+
+ const numOverlappingDays = getOverlappingDaysInIntervals(
+ { start: initialIntervalStart, end: initialIntervalEnd },
+ { start: includingIntervalStart, end: includingIntervalEnd }
+ )
+ assert(numOverlappingDays === 24)
+ })
+ })
+
+ it('accepts a timestamp', function() {
+ const initialIntervalStart = new Date(2016, 10, 10, 13, 0, 0).getTime()
+ const initialIntervalEnd = new Date(2016, 11, 3, 15, 0, 0).getTime()
+
+ const endOverlappingIntervalStart = new Date(2016, 10, 5).getTime()
+ const endOverlappingIntervalEnd = new Date(2016, 10, 14).getTime()
+
+ const numOverlappingDays = getOverlappingDaysInIntervals(
+ { start: initialIntervalStart, end: initialIntervalEnd },
+ { start: endOverlappingIntervalStart, end: endOverlappingIntervalEnd }
+ )
+ assert(numOverlappingDays === 4)
+ })
+
+ it('throws an exception if the start date of the initial time interval is after the end date', function() {
+ const block = getOverlappingDaysInIntervals.bind(
+ null,
+ { start: new Date(2016, 10, 7), end: new Date(2016, 10, 3) },
+ { start: new Date(2016, 10, 5), end: new Date(2016, 10, 15) }
+ )
+ assert.throws(block, RangeError)
+ })
+
+ it('throws an exception if the start date of the compared time interval is after the end date', function() {
+ const block = getOverlappingDaysInIntervals.bind(
+ null,
+ { start: new Date(2016, 10, 3), end: new Date(2016, 10, 7) },
+ { start: new Date(2016, 10, 15), end: new Date(2016, 10, 5) }
+ )
+ assert.throws(block, RangeError)
+ })
+
+ it('throws an exception if the initial interval is undefined', function() {
+ const block = getOverlappingDaysInIntervals.bind(
+ null,
+ // $ExpectedMistake
+ //@ts-expect-error
+ undefined,
+ { start: new Date(2016, 10, 5), end: new Date(2016, 10, 15) }
+ )
+ assert.throws(block, RangeError)
+ })
+
+ it('throws an exception if the compared interval is undefined', function() {
+ const block = getOverlappingDaysInIntervals.bind(
+ null,
+ { start: new Date(2016, 10, 3), end: new Date(2016, 10, 7) },
+ // $ExpectedMistake
+ //@ts-expect-error
+ undefined
+ )
+ assert.throws(block, RangeError)
+ })
+
+ describe('one of the dates is `Invalid Date`', function() {
+ it('throws an exception if the start date of the initial time interval is `Invalid Date`', function() {
+ const block = getOverlappingDaysInIntervals.bind(
+ null,
+ { start: new Date(NaN), end: new Date(2016, 10, 3) },
+ { start: new Date(2016, 10, 5), end: new Date(2016, 10, 15) }
+ )
+ assert.throws(block, RangeError)
+ })
+
+ it('throws an exception if the end date of the initial time interval is `Invalid Date`', function() {
+ const block = getOverlappingDaysInIntervals.bind(
+ null,
+ { start: new Date(2016, 10, 3), end: new Date(NaN) },
+ { start: new Date(2016, 10, 5), end: new Date(2016, 10, 15) }
+ )
+ assert.throws(block, RangeError)
+ })
+
+ it('throws an exception if the start date of the compared time interval is `Invalid Date`', function() {
+ const block = getOverlappingDaysInIntervals.bind(
+ null,
+ { start: new Date(2016, 10, 3), end: new Date(2016, 10, 7) },
+ { start: new Date(NaN), end: new Date(2016, 10, 5) }
+ )
+ assert.throws(block, RangeError)
+ })
+
+ it('throws an exception if the end date of the compared time interval is `Invalid Date`', function() {
+ const block = getOverlappingDaysInIntervals.bind(
+ null,
+ { start: new Date(2016, 10, 3), end: new Date(2016, 10, 7) },
+ { start: new Date(2016, 10, 5), end: new Date(NaN) }
+ )
+ assert.throws(block, RangeError)
+ })
+ })
+
+ it('throws TypeError exception if passed less than 2 arguments', function() {
+ assert.throws(getOverlappingDaysInIntervals.bind(null), TypeError)
+ // $ExpectedMistake
+ //@ts-expect-error
+ assert.throws(getOverlappingDaysInIntervals.bind(null, 1), TypeError)
+ })
+})
diff --git a/date-fns/src/getQuarter/benchmark.js b/date-fns/src/getQuarter/benchmark.js
new file mode 100644
index 0000000..d83e7c2
--- /dev/null
+++ b/date-fns/src/getQuarter/benchmark.js
@@ -0,0 +1,21 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import getQuarter from '.'
+import moment from 'moment'
+
+suite('getQuarter', function () {
+ benchmark('date-fns', function () {
+ return getQuarter(this.date)
+ })
+
+ benchmark('Moment.js', function () {
+ return this.moment.quarter()
+ })
+}, {
+ setup: function () {
+ this.date = new Date()
+ this.moment = moment()
+ }
+})
diff --git a/date-fns/src/getQuarter/index.d.ts b/date-fns/src/getQuarter/index.d.ts
new file mode 100644
index 0000000..6434ba0
--- /dev/null
+++ b/date-fns/src/getQuarter/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { getQuarter } from 'date-fns'
+export default getQuarter
diff --git a/date-fns/src/getQuarter/index.js.flow b/date-fns/src/getQuarter/index.js.flow
new file mode 100644
index 0000000..07bb012
--- /dev/null
+++ b/date-fns/src/getQuarter/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (date: Date | number) => number
diff --git a/date-fns/src/getQuarter/index.ts b/date-fns/src/getQuarter/index.ts
new file mode 100644
index 0000000..2dc72f3
--- /dev/null
+++ b/date-fns/src/getQuarter/index.ts
@@ -0,0 +1,31 @@
+import toDate from '../toDate/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name getQuarter
+ * @category Quarter Helpers
+ * @summary Get the year quarter of the given date.
+ *
+ * @description
+ * Get the year quarter of the given date.
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} date - the given date
+ * @returns {Number} the quarter
+ * @throws {TypeError} 1 argument required
+ *
+ * @example
+ * // Which quarter is 2 July 2014?
+ * const result = getQuarter(new Date(2014, 6, 2))
+ * //=> 3
+ */
+export default function getQuarter(dirtyDate: Date | number): number {
+ requiredArgs(1, arguments)
+
+ const date = toDate(dirtyDate)
+ const quarter = Math.floor(date.getMonth() / 3) + 1
+ return quarter
+}
diff --git a/date-fns/src/getQuarter/test.ts b/date-fns/src/getQuarter/test.ts
new file mode 100644
index 0000000..9876622
--- /dev/null
+++ b/date-fns/src/getQuarter/test.ts
@@ -0,0 +1,26 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import getQuarter from '.'
+
+describe('getQuarter', function() {
+ it('returns the quarter of the given date', function() {
+ const result = getQuarter(new Date(2014, 6 /* Jul */, 2))
+ assert(result === 3)
+ })
+
+ it('accepts a timestamp', function() {
+ const result = getQuarter(new Date(2014, 3 /* Apr */, 2).getTime())
+ assert(result === 2)
+ })
+
+ it('returns NaN if the given date is invalid', function() {
+ const result = getQuarter(new Date(NaN))
+ assert(isNaN(result))
+ })
+
+ it('throws TypeError exception if passed less than 1 argument', function() {
+ assert.throws(getQuarter.bind(null), TypeError)
+ })
+})
diff --git a/date-fns/src/getSeconds/benchmark.js b/date-fns/src/getSeconds/benchmark.js
new file mode 100644
index 0000000..239fbe7
--- /dev/null
+++ b/date-fns/src/getSeconds/benchmark.js
@@ -0,0 +1,21 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import getSeconds from '.'
+import moment from 'moment'
+
+suite('getSeconds', function () {
+ benchmark('date-fns', function () {
+ return getSeconds(this.date)
+ })
+
+ benchmark('Moment.js', function () {
+ return this.moment.seconds()
+ })
+}, {
+ setup: function () {
+ this.date = new Date()
+ this.moment = moment()
+ }
+})
diff --git a/date-fns/src/getSeconds/index.d.ts b/date-fns/src/getSeconds/index.d.ts
new file mode 100644
index 0000000..7b60944
--- /dev/null
+++ b/date-fns/src/getSeconds/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { getSeconds } from 'date-fns'
+export default getSeconds
diff --git a/date-fns/src/getSeconds/index.js.flow b/date-fns/src/getSeconds/index.js.flow
new file mode 100644
index 0000000..07bb012
--- /dev/null
+++ b/date-fns/src/getSeconds/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (date: Date | number) => number
diff --git a/date-fns/src/getSeconds/index.ts b/date-fns/src/getSeconds/index.ts
new file mode 100644
index 0000000..58ba042
--- /dev/null
+++ b/date-fns/src/getSeconds/index.ts
@@ -0,0 +1,31 @@
+import toDate from '../toDate/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name getSeconds
+ * @category Second Helpers
+ * @summary Get the seconds of the given date.
+ *
+ * @description
+ * Get the seconds of the given date.
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} date - the given date
+ * @returns {Number} the seconds
+ * @throws {TypeError} 1 argument required
+ *
+ * @example
+ * // Get the seconds of 29 February 2012 11:45:05.123:
+ * const result = getSeconds(new Date(2012, 1, 29, 11, 45, 5, 123))
+ * //=> 5
+ */
+export default function getSeconds(dirtyDate: Date | number): number {
+ requiredArgs(1, arguments)
+
+ const date = toDate(dirtyDate)
+ const seconds = date.getSeconds()
+ return seconds
+}
diff --git a/date-fns/src/getSeconds/test.ts b/date-fns/src/getSeconds/test.ts
new file mode 100644
index 0000000..bcc1c38
--- /dev/null
+++ b/date-fns/src/getSeconds/test.ts
@@ -0,0 +1,28 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import getSeconds from '.'
+
+describe('getSeconds', function() {
+ it('returns the seconds of the given date', function() {
+ const result = getSeconds(new Date(2012, 1 /* Feb */, 29, 11, 45, 5, 123))
+ assert(result === 5)
+ })
+
+ it('accepts a timestamp', function() {
+ const result = getSeconds(
+ new Date(2014, 3 /* Apr */, 2, 23, 30, 42).getTime()
+ )
+ assert(result === 42)
+ })
+
+ it('returns NaN if the given date is invalid', function() {
+ const result = getSeconds(new Date(NaN))
+ assert(isNaN(result))
+ })
+
+ it('throws TypeError exception if passed less than 1 argument', function() {
+ assert.throws(getSeconds.bind(null), TypeError)
+ })
+})
diff --git a/date-fns/src/getTime/benchmark.js b/date-fns/src/getTime/benchmark.js
new file mode 100644
index 0000000..8a65fd9
--- /dev/null
+++ b/date-fns/src/getTime/benchmark.js
@@ -0,0 +1,21 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import getTime from '.'
+import moment from 'moment'
+
+suite('getTime', function () {
+ benchmark('date-fns', function () {
+ return getTime(this.date)
+ })
+
+ benchmark('Moment.js', function () {
+ return this.moment.valueOf()
+ })
+}, {
+ setup: function () {
+ this.date = new Date()
+ this.moment = moment()
+ }
+})
diff --git a/date-fns/src/getTime/index.d.ts b/date-fns/src/getTime/index.d.ts
new file mode 100644
index 0000000..87c958e
--- /dev/null
+++ b/date-fns/src/getTime/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { getTime } from 'date-fns'
+export default getTime
diff --git a/date-fns/src/getTime/index.js.flow b/date-fns/src/getTime/index.js.flow
new file mode 100644
index 0000000..07bb012
--- /dev/null
+++ b/date-fns/src/getTime/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (date: Date | number) => number
diff --git a/date-fns/src/getTime/index.ts b/date-fns/src/getTime/index.ts
new file mode 100644
index 0000000..09dffb3
--- /dev/null
+++ b/date-fns/src/getTime/index.ts
@@ -0,0 +1,31 @@
+import toDate from '../toDate/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name getTime
+ * @category Timestamp Helpers
+ * @summary Get the milliseconds timestamp of the given date.
+ *
+ * @description
+ * Get the milliseconds timestamp of the given date.
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} date - the given date
+ * @returns {Number} the timestamp
+ * @throws {TypeError} 1 argument required
+ *
+ * @example
+ * // Get the timestamp of 29 February 2012 11:45:05.123:
+ * const result = getTime(new Date(2012, 1, 29, 11, 45, 5, 123))
+ * //=> 1330515905123
+ */
+export default function getTime(dirtyDate: Date | number): number {
+ requiredArgs(1, arguments)
+
+ const date = toDate(dirtyDate)
+ const timestamp = date.getTime()
+ return timestamp
+}
diff --git a/date-fns/src/getTime/test.ts b/date-fns/src/getTime/test.ts
new file mode 100644
index 0000000..56bab04
--- /dev/null
+++ b/date-fns/src/getTime/test.ts
@@ -0,0 +1,28 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import getTime from '.'
+
+describe('getTime', function() {
+ it('returns the timestamp of the given date', function() {
+ const timestamp = 1483228800000
+ const result = getTime(new Date(timestamp))
+ assert(result === timestamp)
+ })
+
+ it('accepts a timestamp (and returns it unchanged)', function() {
+ const timestamp = 804643200000
+ const result = getTime(timestamp)
+ assert(result === timestamp)
+ })
+
+ it('returns NaN if the given date is invalid', function() {
+ const result = getTime(new Date(NaN))
+ assert(isNaN(result))
+ })
+
+ it('throws TypeError exception if passed less than 1 argument', function() {
+ assert.throws(getTime.bind(null), TypeError)
+ })
+})
diff --git a/date-fns/src/getUnixTime/benchmark.js b/date-fns/src/getUnixTime/benchmark.js
new file mode 100644
index 0000000..dcb0ae0
--- /dev/null
+++ b/date-fns/src/getUnixTime/benchmark.js
@@ -0,0 +1,21 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import getUnixTime from '.'
+import moment from 'moment'
+
+suite('getTime', function () {
+ benchmark('date-fns', function () {
+ return getUnixTime(this.date)
+ })
+
+ benchmark('Moment.js', function () {
+ return this.moment.unix()
+ })
+}, {
+ setup: function () {
+ this.date = new Date()
+ this.moment = moment()
+ }
+})
diff --git a/date-fns/src/getUnixTime/index.d.ts b/date-fns/src/getUnixTime/index.d.ts
new file mode 100644
index 0000000..8f85a12
--- /dev/null
+++ b/date-fns/src/getUnixTime/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { getUnixTime } from 'date-fns'
+export default getUnixTime
diff --git a/date-fns/src/getUnixTime/index.js.flow b/date-fns/src/getUnixTime/index.js.flow
new file mode 100644
index 0000000..07bb012
--- /dev/null
+++ b/date-fns/src/getUnixTime/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (date: Date | number) => number
diff --git a/date-fns/src/getUnixTime/index.ts b/date-fns/src/getUnixTime/index.ts
new file mode 100644
index 0000000..0577542
--- /dev/null
+++ b/date-fns/src/getUnixTime/index.ts
@@ -0,0 +1,29 @@
+import getTime from '../getTime/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name getUnixTime
+ * @category Timestamp Helpers
+ * @summary Get the seconds timestamp of the given date.
+ *
+ * @description
+ * Get the seconds timestamp of the given date.
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} date - the given date
+ * @returns {Number} the timestamp
+ * @throws {TypeError} 1 argument required
+ *
+ * @example
+ * // Get the timestamp of 29 February 2012 11:45:05 CET:
+ * const result = getUnixTime(new Date(2012, 1, 29, 11, 45, 5))
+ * //=> 1330512305
+ */
+export default function getUnixTime(dirtyDate: Date | number): number {
+ requiredArgs(1, arguments)
+
+ return Math.floor(getTime(dirtyDate) / 1000)
+}
diff --git a/date-fns/src/getUnixTime/test.ts b/date-fns/src/getUnixTime/test.ts
new file mode 100644
index 0000000..6109677
--- /dev/null
+++ b/date-fns/src/getUnixTime/test.ts
@@ -0,0 +1,28 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import getUnixTime from '.'
+
+describe('getUnixTime', function() {
+ it('returns the timestamp of the given date', function() {
+ const timestamp = 1483228800000
+ const result = getUnixTime(new Date(timestamp))
+ assert(result === Math.floor(timestamp / 1000))
+ })
+
+ it('accepts a timestamp (and returns it unchanged)', function() {
+ const timestamp = 804643200000
+ const result = getUnixTime(timestamp)
+ assert(result === Math.floor(timestamp / 1000))
+ })
+
+ it('returns NaN if the given date is invalid', function() {
+ const result = getUnixTime(new Date(NaN))
+ assert(isNaN(result))
+ })
+
+ it('throws TypeError exception if passed less than 1 argument', function() {
+ assert.throws(getUnixTime.bind(null), TypeError)
+ })
+})
diff --git a/date-fns/src/getWeek/index.d.ts b/date-fns/src/getWeek/index.d.ts
new file mode 100644
index 0000000..dfa1327
--- /dev/null
+++ b/date-fns/src/getWeek/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { getWeek } from 'date-fns'
+export default getWeek
diff --git a/date-fns/src/getWeek/index.js.flow b/date-fns/src/getWeek/index.js.flow
new file mode 100644
index 0000000..2c948ae
--- /dev/null
+++ b/date-fns/src/getWeek/index.js.flow
@@ -0,0 +1,59 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (
+ date: Date | number,
+ options?: {
+ locale?: Locale,
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ }
+) => number
diff --git a/date-fns/src/getWeek/index.ts b/date-fns/src/getWeek/index.ts
new file mode 100644
index 0000000..af13a84
--- /dev/null
+++ b/date-fns/src/getWeek/index.ts
@@ -0,0 +1,64 @@
+import startOfWeek from '../startOfWeek/index'
+import startOfWeekYear from '../startOfWeekYear/index'
+import toDate from '../toDate/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+import { LocaleOptions, WeekStartOptions, FirstWeekContainsDateOptions } from '../types'
+
+const MILLISECONDS_IN_WEEK = 604800000
+
+/**
+ * @name getWeek
+ * @category Week Helpers
+ * @summary Get the local week index of the given date.
+ *
+ * @description
+ * Get the local week index of the given date.
+ * The exact calculation depends on the values of
+ * `options.weekStartsOn` (which is the index of the first day of the week)
+ * and `options.firstWeekContainsDate` (which is the day of January, which is always in
+ * the first week of the week-numbering year)
+ *
+ * Week numbering: https://en.wikipedia.org/wiki/Week#Week_numbering
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} date - the given date
+ * @param {Object} [options] - an object with options.
+ * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}
+ * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)
+ * @param {1|2|3|4|5|6|7} [options.firstWeekContainsDate=1] - the day of January, which is always in the first week of the year
+ * @returns {Number} the week
+ * @throws {TypeError} 1 argument required
+ * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6
+ * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7
+ *
+ * @example
+ * // Which week of the local week numbering year is 2 January 2005 with default options?
+ * const result = getISOWeek(new Date(2005, 0, 2))
+ * //=> 2
+ *
+ * // Which week of the local week numbering year is 2 January 2005,
+ * // if Monday is the first day of the week,
+ * // and the first week of the year always contains 4 January?
+ * const result = getISOWeek(new Date(2005, 0, 2), {
+ * weekStartsOn: 1,
+ * firstWeekContainsDate: 4
+ * })
+ * //=> 53
+ */
+
+export default function getWeek(dirtyDate: Date | number, options?: LocaleOptions & WeekStartOptions & FirstWeekContainsDateOptions): number {
+ requiredArgs(1, arguments)
+
+ const date = toDate(dirtyDate)
+ const diff =
+ startOfWeek(date, options).getTime() -
+ startOfWeekYear(date, options).getTime()
+
+ // Round the number of days to the nearest integer
+ // because the number of milliseconds in a week is not constant
+ // (e.g. it's different in the week of the daylight saving time clock shift)
+ return Math.round(diff / MILLISECONDS_IN_WEEK) + 1
+}
diff --git a/date-fns/src/getWeek/test.ts b/date-fns/src/getWeek/test.ts
new file mode 100644
index 0000000..48baf41
--- /dev/null
+++ b/date-fns/src/getWeek/test.ts
@@ -0,0 +1,73 @@
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import getWeek from '.'
+
+describe('getWeek', function () {
+ it('returns the local week of year of the given date', function () {
+ const result = getWeek(new Date(2005, 0 /* Jan */, 2))
+ assert(result === 2)
+ })
+
+ it('accepts a timestamp', function () {
+ const result = getWeek(new Date(2008, 11 /* Dec */, 29).getTime())
+ assert(result === 1)
+ })
+
+ it('handles dates before 100 AD', function () {
+ const initialDate = new Date(0)
+ initialDate.setFullYear(7, 11 /* Dec */, 30)
+ initialDate.setHours(0, 0, 0, 0)
+ const result = getWeek(initialDate)
+ assert(result === 1)
+ })
+
+ it('returns NaN if the given date is invalid', function () {
+ const result = getWeek(new Date(NaN))
+ assert(isNaN(result))
+ })
+
+ it('allows to specify `weekStartsOn` and `firstWeekContainsDate` in locale', function () {
+ const date = new Date(2005, 0 /* Jan */, 2)
+ // @ts-expect-error
+ const result = getWeek(date, {
+ locale: {
+ options: { weekStartsOn: 1, firstWeekContainsDate: 4 }
+ }
+ })
+ assert(result === 53)
+ })
+
+ it('`options.weekStartsOn` overwrites the first day of the week specified in locale', function () {
+ const date = new Date(2005, 0 /* Jan */, 2)
+ const result = getWeek(date, {
+ weekStartsOn: 1,
+ firstWeekContainsDate: 4,
+ // $ExpectedMistake
+ locale: {
+ options: { weekStartsOn: 0, firstWeekContainsDate: 1 }
+ }
+ })
+ assert(result === 53)
+ })
+
+ it('throws `RangeError` if `options.weekStartsOn` is not convertable to 0, 1, ..., 6 or undefined', function () {
+ // @ts-expect-error
+ const block = getWeek.bind(null, new Date(2007, 11 /* Dec */, 31), {
+ weekStartsOn: NaN
+ })
+ assert.throws(block, RangeError)
+ })
+
+ it('throws `RangeError` if `options.firstWeekContainsDate` is not convertable to 1, 2, ..., 7 or undefined', function () {
+ // @ts-expect-error
+ const block = getWeek.bind(null, new Date(2007, 11 /* Dec */, 31), {
+ firstWeekContainsDate: NaN
+ })
+ assert.throws(block, RangeError)
+ })
+
+ it('throws TypeError exception if passed less than 1 argument', function () {
+ assert.throws(getWeek.bind(null), TypeError)
+ })
+})
diff --git a/date-fns/src/getWeekOfMonth/benchmark.js b/date-fns/src/getWeekOfMonth/benchmark.js
new file mode 100644
index 0000000..a7384b6
--- /dev/null
+++ b/date-fns/src/getWeekOfMonth/benchmark.js
@@ -0,0 +1,15 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import getWeekOfMonth from '.'
+
+suite('getWeekOfMonth', function () {
+ benchmark('date-fns', function () {
+ return getWeekOfMonth(this.date)
+ })
+}, {
+ setup: function () {
+ this.date = new Date()
+ }
+})
diff --git a/date-fns/src/getWeekOfMonth/index.d.ts b/date-fns/src/getWeekOfMonth/index.d.ts
new file mode 100644
index 0000000..781b2ad
--- /dev/null
+++ b/date-fns/src/getWeekOfMonth/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { getWeekOfMonth } from 'date-fns'
+export default getWeekOfMonth
diff --git a/date-fns/src/getWeekOfMonth/index.js b/date-fns/src/getWeekOfMonth/index.js
new file mode 100644
index 0000000..1c69d86
--- /dev/null
+++ b/date-fns/src/getWeekOfMonth/index.js
@@ -0,0 +1,72 @@
+import getDate from '../getDate/index'
+import getDay from '../getDay/index'
+import startOfMonth from '../startOfMonth/index'
+import toInteger from '../_lib/toInteger/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name getWeekOfMonth
+ * @category Week Helpers
+ * @summary Get the week of the month of the given date.
+ *
+ * @description
+ * Get the week of the month of the given date.
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} date - the given date
+ * @param {Object} [options] - an object with options.
+ * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}
+ * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)
+ * @returns {Number} the week of month
+ * @throws {TypeError} 1 argument required
+ * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6
+ *
+ * @example
+ * // Which week of the month is 9 November 2017?
+ * var result = getWeekOfMonth(new Date(2017, 10, 9))
+ * //=> 2
+ */
+export default function getWeekOfMonth(date, dirtyOptions) {
+ requiredArgs(1, arguments)
+
+ var options = dirtyOptions || {}
+ var locale = options.locale
+ var localeWeekStartsOn =
+ locale && locale.options && locale.options.weekStartsOn
+ var defaultWeekStartsOn =
+ localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn)
+ var weekStartsOn =
+ options.weekStartsOn == null
+ ? defaultWeekStartsOn
+ : toInteger(options.weekStartsOn)
+
+ // Test if weekStartsOn is between 0 and 6 _and_ is not NaN
+ if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {
+ throw new RangeError('weekStartsOn must be between 0 and 6 inclusively')
+ }
+
+ var currentDayOfMonth = getDate(date)
+ if (isNaN(currentDayOfMonth)) {
+ return currentDayOfMonth
+ }
+
+ var startWeekDay = getDay(startOfMonth(date))
+ var lastDayOfFirstWeek = 0
+
+ if (startWeekDay >= weekStartsOn) {
+ lastDayOfFirstWeek = weekStartsOn + 7 - startWeekDay
+ } else {
+ lastDayOfFirstWeek = weekStartsOn - startWeekDay
+ }
+
+ var weekNumber = 1
+
+ if (currentDayOfMonth > lastDayOfFirstWeek) {
+ var remainingDaysAfterFirstWeek = currentDayOfMonth - lastDayOfFirstWeek
+ weekNumber = weekNumber + Math.ceil(remainingDaysAfterFirstWeek / 7)
+ }
+ return weekNumber
+}
diff --git a/date-fns/src/getWeekOfMonth/index.js.flow b/date-fns/src/getWeekOfMonth/index.js.flow
new file mode 100644
index 0000000..1115f28
--- /dev/null
+++ b/date-fns/src/getWeekOfMonth/index.js.flow
@@ -0,0 +1,58 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (
+ date: Date | number,
+ options?: {
+ locale?: Locale,
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ }
+) => number
diff --git a/date-fns/src/getWeekOfMonth/test.js b/date-fns/src/getWeekOfMonth/test.js
new file mode 100644
index 0000000..5996cae
--- /dev/null
+++ b/date-fns/src/getWeekOfMonth/test.js
@@ -0,0 +1,84 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import getWeekOfMonth from '.'
+
+describe('getWeekOfMonth', function () {
+ it('returns the week of the month of the given date', function () {
+ var result = getWeekOfMonth(new Date(2017, 10 /* Nov */, 15))
+ assert(result === 3)
+ })
+
+ describe('edge cases', function () {
+ describe('when the given day is the first of a month', function () {
+ it('returns the week of the month of the given date', function () {
+ var result = getWeekOfMonth(new Date(2017, 10 /* Nov */, 1))
+ assert(result === 1)
+ })
+ })
+
+ describe('when the given day is the last of a month #1', function () {
+ it('returns the week of the month of the given date', function () {
+ var result = getWeekOfMonth(new Date(2017, 10 /* Nov */, 30))
+ assert(result === 5)
+ })
+ })
+
+ describe('when the given day is the last of a month #2', function () {
+ it('returns the week of the month of the given date', function () {
+ var result = getWeekOfMonth(new Date(2017, 9 /* Oct */, 31))
+ assert(result === 5)
+ })
+ })
+ })
+
+ it('allows to specify which day is the first day of the week', function () {
+ var result = getWeekOfMonth(new Date(2017, 9 /* Oct */, 1), {
+ weekStartsOn: 1,
+ })
+ assert(result === 1)
+ })
+
+ it('allows to specify which day is the first day of the week in locale', function () {
+ var result = getWeekOfMonth(new Date(2017, 9 /* Oct */, 31), {
+ // $ExpectedMistake
+ locale: {
+ options: { weekStartsOn: 1 },
+ },
+ })
+ assert(result === 6)
+ })
+
+ it('`options.weekStartsOn` overwrites the first day of the week specified in locale', function () {
+ var result = getWeekOfMonth(new Date(2017, 10 /* Nov */, 13), {
+ weekStartsOn: 1,
+ // $ExpectedMistake
+ locale: {
+ options: { weekStartsOn: 0 },
+ },
+ })
+ assert(result === 3)
+ })
+
+ it('accepts a timestamp', function () {
+ var result = getWeekOfMonth(new Date(2017, 10 /* Nov */, 1).getTime())
+ assert(result === 1)
+ })
+
+ it('returns NaN if the given date is invalid', function () {
+ var result = getWeekOfMonth(new Date(NaN))
+ assert(isNaN(result))
+ })
+
+ it('throws TypeError exception if passed less than 1 argument', function () {
+ assert.throws(getWeekOfMonth.bind(null), TypeError)
+ })
+
+ it('returns the week of the month of the given date, when the given date is sunday', function () {
+ var result = getWeekOfMonth(new Date(2019, 4 /* May */, 5), {
+ weekStartsOn: 1,
+ })
+ assert(result === 1)
+ })
+})
diff --git a/date-fns/src/getWeekYear/index.d.ts b/date-fns/src/getWeekYear/index.d.ts
new file mode 100644
index 0000000..c8fc528
--- /dev/null
+++ b/date-fns/src/getWeekYear/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { getWeekYear } from 'date-fns'
+export default getWeekYear
diff --git a/date-fns/src/getWeekYear/index.js.flow b/date-fns/src/getWeekYear/index.js.flow
new file mode 100644
index 0000000..2c948ae
--- /dev/null
+++ b/date-fns/src/getWeekYear/index.js.flow
@@ -0,0 +1,59 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (
+ date: Date | number,
+ options?: {
+ locale?: Locale,
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ }
+) => number
diff --git a/date-fns/src/getWeekYear/index.ts b/date-fns/src/getWeekYear/index.ts
new file mode 100644
index 0000000..649b8d1
--- /dev/null
+++ b/date-fns/src/getWeekYear/index.ts
@@ -0,0 +1,98 @@
+import startOfWeek from '../startOfWeek/index'
+import toDate from '../toDate/index'
+import toInteger from '../_lib/toInteger/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+import {
+ WeekStartOptions,
+ LocaleOptions,
+ FirstWeekContainsDateOptions,
+} from '../types'
+
+/**
+ * @name getWeekYear
+ * @category Week-Numbering Year Helpers
+ * @summary Get the local week-numbering year of the given date.
+ *
+ * @description
+ * Get the local week-numbering year of the given date.
+ * The exact calculation depends on the values of
+ * `options.weekStartsOn` (which is the index of the first day of the week)
+ * and `options.firstWeekContainsDate` (which is the day of January, which is always in
+ * the first week of the week-numbering year)
+ *
+ * Week numbering: https://en.wikipedia.org/wiki/Week#Week_numbering
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} date - the given date
+ * @param {Object} [options] - an object with options.
+ * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}
+ * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)
+ * @param {1|2|3|4|5|6|7} [options.firstWeekContainsDate=1] - the day of January, which is always in the first week of the year
+ * @returns {Number} the local week-numbering year
+ * @throws {TypeError} 1 argument required
+ * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6
+ * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7
+ *
+ * @example
+ * // Which week numbering year is 26 December 2004 with the default settings?
+ * const result = getWeekYear(new Date(2004, 11, 26))
+ * //=> 2005
+ *
+ * @example
+ * // Which week numbering year is 26 December 2004 if week starts on Saturday?
+ * const result = getWeekYear(new Date(2004, 11, 26), { weekStartsOn: 6 })
+ * //=> 2004
+ *
+ * @example
+ * // Which week numbering year is 26 December 2004 if the first week contains 4 January?
+ * const result = getWeekYear(new Date(2004, 11, 26), { firstWeekContainsDate: 4 })
+ * //=> 2004
+ */
+export default function getWeekYear(
+ dirtyDate: Date | number,
+ options?: LocaleOptions & WeekStartOptions & FirstWeekContainsDateOptions
+): number {
+ requiredArgs(1, arguments)
+
+ const date = toDate(dirtyDate)
+ const year = date.getFullYear()
+
+ const localeFirstWeekContainsDate =
+ options?.locale?.options?.firstWeekContainsDate
+ const defaultFirstWeekContainsDate =
+ localeFirstWeekContainsDate == null
+ ? 1
+ : toInteger(localeFirstWeekContainsDate)
+ const firstWeekContainsDate =
+ options?.firstWeekContainsDate == null
+ ? defaultFirstWeekContainsDate
+ : toInteger(options.firstWeekContainsDate)
+
+ // Test if weekStartsOn is between 1 and 7 _and_ is not NaN
+ if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {
+ throw new RangeError(
+ 'firstWeekContainsDate must be between 1 and 7 inclusively'
+ )
+ }
+
+ const firstWeekOfNextYear = new Date(0)
+ firstWeekOfNextYear.setFullYear(year + 1, 0, firstWeekContainsDate)
+ firstWeekOfNextYear.setHours(0, 0, 0, 0)
+ const startOfNextYear = startOfWeek(firstWeekOfNextYear, options)
+
+ const firstWeekOfThisYear = new Date(0)
+ firstWeekOfThisYear.setFullYear(year, 0, firstWeekContainsDate)
+ firstWeekOfThisYear.setHours(0, 0, 0, 0)
+ const startOfThisYear = startOfWeek(firstWeekOfThisYear, options)
+
+ if (date.getTime() >= startOfNextYear.getTime()) {
+ return year + 1
+ } else if (date.getTime() >= startOfThisYear.getTime()) {
+ return year
+ } else {
+ return year - 1
+ }
+}
diff --git a/date-fns/src/getWeekYear/test.ts b/date-fns/src/getWeekYear/test.ts
new file mode 100644
index 0000000..0f8bf54
--- /dev/null
+++ b/date-fns/src/getWeekYear/test.ts
@@ -0,0 +1,75 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'assert'
+import getWeekYear from '.'
+
+describe('getWeekYear', () => {
+ it('returns the local week-numbering year of the given date', () => {
+ const result = getWeekYear(new Date(2004, 11 /* Dec */, 26))
+ assert(result === 2005)
+ })
+
+ it('accepts a timestamp', () => {
+ const result = getWeekYear(new Date(2000, 11 /* Dec */, 30).getTime())
+ assert(result === 2000)
+ })
+
+ it('handles dates before 100 AD', () => {
+ const initialDate = new Date(0)
+ initialDate.setFullYear(7, 11 /* Dec */, 31)
+ initialDate.setHours(0, 0, 0, 0)
+ const result = getWeekYear(initialDate)
+ assert(result === 8)
+ })
+
+ it('returns NaN if the given date is invalid', () => {
+ const result = getWeekYear(new Date(NaN))
+ assert(isNaN(result))
+ })
+
+ it('allows to specify `weekStartsOn` and `firstWeekContainsDate` in locale', () => {
+ const date = new Date(2004, 11 /* Dec */, 26)
+ const result = getWeekYear(date, {
+ // @ts-expect-error
+ locale: {
+ options: { weekStartsOn: 1, firstWeekContainsDate: 4 },
+ },
+ })
+ assert(result === 2004)
+ })
+
+ it('`options.weekStartsOn` overwrites the first day of the week specified in locale', () => {
+ const date = new Date(2004, 11 /* Dec */, 26)
+ const result = getWeekYear(date, {
+ weekStartsOn: 1,
+ firstWeekContainsDate: 4,
+ // @ts-expect-error
+ locale: {
+ options: { weekStartsOn: 0, firstWeekContainsDate: 1 },
+ },
+ })
+ assert(result === 2004)
+ })
+
+ it('throws `RangeError` if `options.weekStartsOn` is not convertable to 0, 1, ..., 6 or undefined', () => {
+ // @ts-expect-error
+ const block = getWeekYear.bind(null, new Date(2007, 11 /* Dec */, 31), {
+ weekStartsOn: NaN,
+ })
+ assert.throws(block, RangeError)
+ })
+
+ it('throws `RangeError` if `options.firstWeekContainsDate` is not convertable to 1, 2, ..., 7 or undefined', () => {
+ // @ts-expect-error
+ const block = getWeekYear.bind(null, new Date(2007, 11 /* Dec */, 31), {
+ firstWeekContainsDate: NaN,
+ })
+ assert.throws(block, RangeError)
+ })
+
+ it('throws TypeError exception if passed less than 1 argument', () => {
+ // @ts-expect-error
+ assert.throws(getWeekYear.bind(null), TypeError)
+ })
+})
diff --git a/date-fns/src/getWeeksInMonth/index.d.ts b/date-fns/src/getWeeksInMonth/index.d.ts
new file mode 100644
index 0000000..e6ffaaa
--- /dev/null
+++ b/date-fns/src/getWeeksInMonth/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { getWeeksInMonth } from 'date-fns'
+export default getWeeksInMonth
diff --git a/date-fns/src/getWeeksInMonth/index.js.flow b/date-fns/src/getWeeksInMonth/index.js.flow
new file mode 100644
index 0000000..1115f28
--- /dev/null
+++ b/date-fns/src/getWeeksInMonth/index.js.flow
@@ -0,0 +1,58 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (
+ date: Date | number,
+ options?: {
+ locale?: Locale,
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ }
+) => number
diff --git a/date-fns/src/getWeeksInMonth/index.ts b/date-fns/src/getWeeksInMonth/index.ts
new file mode 100644
index 0000000..288ca59
--- /dev/null
+++ b/date-fns/src/getWeeksInMonth/index.ts
@@ -0,0 +1,51 @@
+import differenceInCalendarWeeks from '../differenceInCalendarWeeks/index'
+import lastDayOfMonth from '../lastDayOfMonth/index'
+import startOfMonth from '../startOfMonth/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+import { LocaleOptions, WeekStartOptions } from '../types'
+
+/**
+ * @name getWeeksInMonth
+ * @category Week Helpers
+ * @summary Get the number of calendar weeks a month spans.
+ *
+ * @description
+ * Get the number of calendar weeks the month in the given date spans.
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} date - the given date
+ * @param {Object} [options] - an object with options.
+ * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}
+ * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)
+ * @returns {Number} the number of calendar weeks
+ * @throws {TypeError} 2 arguments required
+ * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6
+ *
+ * @example
+ * // How many calendar weeks does February 2015 span?
+ * const result = getWeeksInMonth(new Date(2015, 1, 8))
+ * //=> 4
+ *
+ * @example
+ * // If the week starts on Monday,
+ * // how many calendar weeks does July 2017 span?
+ * const result = getWeeksInMonth(new Date(2017, 6, 5), { weekStartsOn: 1 })
+ * //=> 6
+ */
+export default function getWeeksInMonth(
+ date: Date | number,
+ options?: LocaleOptions & WeekStartOptions
+): number {
+ requiredArgs(1, arguments)
+
+ return (
+ differenceInCalendarWeeks(
+ lastDayOfMonth(date),
+ startOfMonth(date),
+ options
+ ) + 1
+ )
+}
diff --git a/date-fns/src/getWeeksInMonth/test.ts b/date-fns/src/getWeeksInMonth/test.ts
new file mode 100644
index 0000000..e8b1db4
--- /dev/null
+++ b/date-fns/src/getWeeksInMonth/test.ts
@@ -0,0 +1,71 @@
+/* eslint-env mocha */
+
+import assert from 'assert'
+import getWeeksInMonth from '.'
+
+describe('getWeeksInMonth', function() {
+ it('returns the number of calendar weeks the month in the given date spans', function() {
+ const result = getWeeksInMonth(new Date(2015, 1 /* Feb */, 8, 18, 0))
+ assert(result === 4)
+ })
+
+ it('allows to specify which day is the first day of the week', function() {
+ const result = getWeeksInMonth(new Date(2015, 1 /* Feb */, 8, 18, 0), {
+ weekStartsOn: 1
+ })
+ assert(result === 5)
+ })
+
+ it('allows to specify which day is the first day of the week in locale', function() {
+ const result = getWeeksInMonth(new Date(2015, 1 /* Feb */, 8, 18, 0), {
+ // @ts-expect-error
+ locale: {
+ options: { weekStartsOn: 1 }
+ }
+ })
+ assert(result === 5)
+ })
+
+ it('`options.weekStartsOn` overwrites the first day of the week specified in locale', function() {
+ const result = getWeeksInMonth(new Date(2015, 1 /* Feb */, 8, 18, 0), {
+ weekStartsOn: 1,
+ // @ts-expect-error
+ locale: {
+ options: { weekStartsOn: 0 }
+ }
+ })
+ assert(result === 5)
+ })
+
+ it('accepts timestamps', function() {
+ const result = getWeeksInMonth(
+ new Date(2017, 3 /* Apr */, 8, 18, 0).getTime()
+ )
+ assert(result === 6)
+ })
+
+ it('does not mutate the original date', function() {
+ const date = new Date(2014, 8 /* Sep */, 2, 11, 55, 0)
+ getWeeksInMonth(date)
+ assert.deepStrictEqual(date, new Date(2014, 8 /* Sep */, 2, 11, 55, 0))
+ })
+
+ it('returns NaN if the date is `Invalid Date`', function() {
+ const result = getWeeksInMonth(new Date(NaN))
+ assert(isNaN(result))
+ })
+
+ it('throws `RangeError` if `options.weekStartsOn` is not convertable to 0, 1, ..., 6 or undefined', function() {
+ const block = getWeeksInMonth.bind(
+ null,
+ new Date(2014, 6 /* Jul */, 8, 18, 0),
+ { weekStartsOn: NaN }
+ )
+ assert.throws(block, RangeError)
+ })
+
+ it('throws TypeError exception if passed less than 1 argument', function() {
+ // @ts-expect-error
+ assert.throws(getWeeksInMonth.bind(null), TypeError)
+ })
+})
diff --git a/date-fns/src/getYear/benchmark.js b/date-fns/src/getYear/benchmark.js
new file mode 100644
index 0000000..7ce62a3
--- /dev/null
+++ b/date-fns/src/getYear/benchmark.js
@@ -0,0 +1,21 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import getYear from '.'
+import moment from 'moment'
+
+suite('getYear', function () {
+ benchmark('date-fns', function () {
+ return getYear(this.date)
+ })
+
+ benchmark('Moment.js', function () {
+ return this.moment.year()
+ })
+}, {
+ setup: function () {
+ this.date = new Date()
+ this.moment = moment()
+ }
+})
diff --git a/date-fns/src/getYear/index.d.ts b/date-fns/src/getYear/index.d.ts
new file mode 100644
index 0000000..3ef8154
--- /dev/null
+++ b/date-fns/src/getYear/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { getYear } from 'date-fns'
+export default getYear
diff --git a/date-fns/src/getYear/index.js.flow b/date-fns/src/getYear/index.js.flow
new file mode 100644
index 0000000..07bb012
--- /dev/null
+++ b/date-fns/src/getYear/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (date: Date | number) => number
diff --git a/date-fns/src/getYear/index.ts b/date-fns/src/getYear/index.ts
new file mode 100644
index 0000000..7fead17
--- /dev/null
+++ b/date-fns/src/getYear/index.ts
@@ -0,0 +1,31 @@
+import toDate from '../toDate/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name getYear
+ * @category Year Helpers
+ * @summary Get the year of the given date.
+ *
+ * @description
+ * Get the year of the given date.
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} date - the given date
+ * @returns {Number} the year
+ * @throws {TypeError} 1 argument required
+ *
+ * @example
+ * // Which year is 2 July 2014?
+ * const result = getYear(new Date(2014, 6, 2))
+ * //=> 2014
+ */
+export default function getYear(dirtyDate: Date | number): number {
+ requiredArgs(1, arguments)
+
+ const date = toDate(dirtyDate)
+ const year = date.getFullYear()
+ return year
+}
diff --git a/date-fns/src/getYear/test.ts b/date-fns/src/getYear/test.ts
new file mode 100644
index 0000000..77d6fbc
--- /dev/null
+++ b/date-fns/src/getYear/test.ts
@@ -0,0 +1,26 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import getYear from '.'
+
+describe('getYear', function() {
+ it('returns the year of the given date', function() {
+ const result = getYear(new Date(2014, 6 /* Jul */, 2))
+ assert(result === 2014)
+ })
+
+ it('accepts a timestamp', function() {
+ const result = getYear(new Date(2000, 3 /* Apr */, 2).getTime())
+ assert(result === 2000)
+ })
+
+ it('returns NaN if the given date is invalid', function() {
+ const result = getYear(new Date(NaN))
+ assert(isNaN(result))
+ })
+
+ it('throws TypeError exception if passed less than 1 argument', function() {
+ assert.throws(getYear.bind(null), TypeError)
+ })
+})
diff --git a/date-fns/src/hoursToMilliseconds/index.d.ts b/date-fns/src/hoursToMilliseconds/index.d.ts
new file mode 100644
index 0000000..ed24a0d
--- /dev/null
+++ b/date-fns/src/hoursToMilliseconds/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { hoursToMilliseconds } from 'date-fns'
+export default hoursToMilliseconds
diff --git a/date-fns/src/hoursToMilliseconds/index.js.flow b/date-fns/src/hoursToMilliseconds/index.js.flow
new file mode 100644
index 0000000..950ac71
--- /dev/null
+++ b/date-fns/src/hoursToMilliseconds/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (hours: number) => number
diff --git a/date-fns/src/hoursToMilliseconds/index.ts b/date-fns/src/hoursToMilliseconds/index.ts
new file mode 100644
index 0000000..e87c7a3
--- /dev/null
+++ b/date-fns/src/hoursToMilliseconds/index.ts
@@ -0,0 +1,25 @@
+import requiredArgs from '../_lib/requiredArgs/index'
+import { millisecondsInHour } from '../constants/index'
+
+/**
+ * @name hoursToMilliseconds
+ * @category Conversion Helpers
+ * @summary Convert hours to milliseconds.
+ *
+ * @description
+ * Convert a number of hours to a full number of milliseconds.
+ *
+ * @param {number} hours - number of hours to be converted
+ *
+ * @returns {number} the number of hours converted to milliseconds
+ * @throws {TypeError} 1 argument required
+ *
+ * @example
+ * // Convert 2 hours to milliseconds:
+ * const result = hoursToMilliseconds(2)
+ * //=> 7200000
+ */
+export default function hoursToMilliseconds(hours: number): number {
+ requiredArgs(1, arguments)
+ return Math.floor(hours * millisecondsInHour)
+}
diff --git a/date-fns/src/hoursToMilliseconds/test.ts b/date-fns/src/hoursToMilliseconds/test.ts
new file mode 100644
index 0000000..fdc426c
--- /dev/null
+++ b/date-fns/src/hoursToMilliseconds/test.ts
@@ -0,0 +1,20 @@
+/* eslint-env mocha */
+
+import assert from 'assert'
+import hoursToMilliseconds from '.'
+
+describe('hoursToMilliseconds', function () {
+ it('converts hours to milliseconds', function () {
+ assert(hoursToMilliseconds(1) === 3600000)
+ assert(hoursToMilliseconds(2) === 7200000)
+ })
+
+ it('uses floor rounding', () => {
+ assert(hoursToMilliseconds(0.123456) === 444441)
+ })
+
+ it('handles border values', () => {
+ assert(hoursToMilliseconds(1.5) === 5400000)
+ assert(hoursToMilliseconds(0) === 0)
+ })
+})
diff --git a/date-fns/src/hoursToMinutes/index.d.ts b/date-fns/src/hoursToMinutes/index.d.ts
new file mode 100644
index 0000000..d0fbbbf
--- /dev/null
+++ b/date-fns/src/hoursToMinutes/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { hoursToMinutes } from 'date-fns'
+export default hoursToMinutes
diff --git a/date-fns/src/hoursToMinutes/index.js.flow b/date-fns/src/hoursToMinutes/index.js.flow
new file mode 100644
index 0000000..950ac71
--- /dev/null
+++ b/date-fns/src/hoursToMinutes/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (hours: number) => number
diff --git a/date-fns/src/hoursToMinutes/index.ts b/date-fns/src/hoursToMinutes/index.ts
new file mode 100644
index 0000000..dcf61de
--- /dev/null
+++ b/date-fns/src/hoursToMinutes/index.ts
@@ -0,0 +1,25 @@
+import requiredArgs from '../_lib/requiredArgs/index'
+import { minutesInHour } from '../constants/index'
+
+/**
+ * @name hoursToMinutes
+ * @category Conversion Helpers
+ * @summary Convert hours to minutes.
+ *
+ * @description
+ * Convert a number of hours to a full number of minutes.
+ *
+ * @param {number} hours - number of hours to be converted
+ *
+ * @returns {number} the number of hours converted in minutes
+ * @throws {TypeError} 1 argument required
+ *
+ * @example
+ * // Convert 2 hours to minutes:
+ * const result = hoursToMinutes(2)
+ * //=> 120
+ */
+export default function hoursToMinutes(hours: number): number {
+ requiredArgs(1, arguments)
+ return Math.floor(hours * minutesInHour)
+}
diff --git a/date-fns/src/hoursToMinutes/test.ts b/date-fns/src/hoursToMinutes/test.ts
new file mode 100644
index 0000000..ead8b21
--- /dev/null
+++ b/date-fns/src/hoursToMinutes/test.ts
@@ -0,0 +1,20 @@
+/* eslint-env mocha */
+
+import assert from 'assert'
+import hoursToMinutes from '.'
+
+describe('hoursToMinutes', function () {
+ it('converts hours to minutes', function () {
+ assert(hoursToMinutes(1) === 60)
+ assert(hoursToMinutes(2) === 120)
+ })
+
+ it('uses floor rounding', () => {
+ assert(hoursToMinutes(0.123) === 7)
+ })
+
+ it('handles border values', () => {
+ assert(hoursToMinutes(1.5) === 90)
+ assert(hoursToMinutes(0) === 0)
+ })
+})
diff --git a/date-fns/src/hoursToSeconds/index.d.ts b/date-fns/src/hoursToSeconds/index.d.ts
new file mode 100644
index 0000000..8544afb
--- /dev/null
+++ b/date-fns/src/hoursToSeconds/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { hoursToSeconds } from 'date-fns'
+export default hoursToSeconds
diff --git a/date-fns/src/hoursToSeconds/index.js.flow b/date-fns/src/hoursToSeconds/index.js.flow
new file mode 100644
index 0000000..950ac71
--- /dev/null
+++ b/date-fns/src/hoursToSeconds/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (hours: number) => number
diff --git a/date-fns/src/hoursToSeconds/index.ts b/date-fns/src/hoursToSeconds/index.ts
new file mode 100644
index 0000000..3629880
--- /dev/null
+++ b/date-fns/src/hoursToSeconds/index.ts
@@ -0,0 +1,25 @@
+import requiredArgs from '../_lib/requiredArgs/index'
+import { secondsInHour } from '../constants/index'
+
+/**
+ * @name hoursToSeconds
+ * @category Conversion Helpers
+ * @summary Convert hours to seconds.
+ *
+ * @description
+ * Convert a number of hours to a full number of seconds.
+ *
+ * @param {number} hours - number of hours to be converted
+ *
+ * @returns {number} the number of hours converted in seconds
+ * @throws {TypeError} 1 argument required
+ *
+ * @example
+ * // Convert 2 hours to seconds:
+ * const result = hoursToSeconds(2)
+ * //=> 7200
+ */
+export default function hoursToSeconds(hours: number): number {
+ requiredArgs(1, arguments)
+ return Math.floor(hours * secondsInHour)
+}
diff --git a/date-fns/src/hoursToSeconds/test.ts b/date-fns/src/hoursToSeconds/test.ts
new file mode 100644
index 0000000..b2e129b
--- /dev/null
+++ b/date-fns/src/hoursToSeconds/test.ts
@@ -0,0 +1,20 @@
+/* eslint-env mocha */
+
+import assert from 'assert'
+import hoursToSeconds from '.'
+
+describe('hoursToSeconds', function () {
+ it('converts hours to seconds', function () {
+ assert(hoursToSeconds(1) === 3600)
+ assert(hoursToSeconds(2) === 7200)
+ })
+
+ it('uses floor rounding', () => {
+ assert(hoursToSeconds(0.123) === 442)
+ })
+
+ it('handles border values', () => {
+ assert(hoursToSeconds(1.5) === 5400)
+ assert(hoursToSeconds(0) === 0)
+ })
+})
diff --git a/date-fns/src/index.js b/date-fns/src/index.js
new file mode 100644
index 0000000..45095f8
--- /dev/null
+++ b/date-fns/src/index.js
@@ -0,0 +1,230 @@
+// This file is generated automatically by `scripts/build/indices.js`. Please, don't change it.
+
+export { default as add } from './add/index'
+export { default as addBusinessDays } from './addBusinessDays/index'
+export { default as addDays } from './addDays/index'
+export { default as addHours } from './addHours/index'
+export { default as addISOWeekYears } from './addISOWeekYears/index'
+export { default as addMilliseconds } from './addMilliseconds/index'
+export { default as addMinutes } from './addMinutes/index'
+export { default as addMonths } from './addMonths/index'
+export { default as addQuarters } from './addQuarters/index'
+export { default as addSeconds } from './addSeconds/index'
+export { default as addWeeks } from './addWeeks/index'
+export { default as addYears } from './addYears/index'
+export { default as areIntervalsOverlapping } from './areIntervalsOverlapping/index'
+export { default as closestIndexTo } from './closestIndexTo/index'
+export { default as closestTo } from './closestTo/index'
+export { default as compareAsc } from './compareAsc/index'
+export { default as compareDesc } from './compareDesc/index'
+export { default as daysToWeeks } from './daysToWeeks/index'
+export { default as differenceInBusinessDays } from './differenceInBusinessDays/index'
+export { default as differenceInCalendarDays } from './differenceInCalendarDays/index'
+export { default as differenceInCalendarISOWeekYears } from './differenceInCalendarISOWeekYears/index'
+export { default as differenceInCalendarISOWeeks } from './differenceInCalendarISOWeeks/index'
+export { default as differenceInCalendarMonths } from './differenceInCalendarMonths/index'
+export { default as differenceInCalendarQuarters } from './differenceInCalendarQuarters/index'
+export { default as differenceInCalendarWeeks } from './differenceInCalendarWeeks/index'
+export { default as differenceInCalendarYears } from './differenceInCalendarYears/index'
+export { default as differenceInDays } from './differenceInDays/index'
+export { default as differenceInHours } from './differenceInHours/index'
+export { default as differenceInISOWeekYears } from './differenceInISOWeekYears/index'
+export { default as differenceInMilliseconds } from './differenceInMilliseconds/index'
+export { default as differenceInMinutes } from './differenceInMinutes/index'
+export { default as differenceInMonths } from './differenceInMonths/index'
+export { default as differenceInQuarters } from './differenceInQuarters/index'
+export { default as differenceInSeconds } from './differenceInSeconds/index'
+export { default as differenceInWeeks } from './differenceInWeeks/index'
+export { default as differenceInYears } from './differenceInYears/index'
+export { default as eachDayOfInterval } from './eachDayOfInterval/index'
+export { default as eachHourOfInterval } from './eachHourOfInterval/index'
+export { default as eachMinuteOfInterval } from './eachMinuteOfInterval/index'
+export { default as eachMonthOfInterval } from './eachMonthOfInterval/index'
+export { default as eachQuarterOfInterval } from './eachQuarterOfInterval/index'
+export { default as eachWeekOfInterval } from './eachWeekOfInterval/index'
+export { default as eachWeekendOfInterval } from './eachWeekendOfInterval/index'
+export { default as eachWeekendOfMonth } from './eachWeekendOfMonth/index'
+export { default as eachWeekendOfYear } from './eachWeekendOfYear/index'
+export { default as eachYearOfInterval } from './eachYearOfInterval/index'
+export { default as endOfDay } from './endOfDay/index'
+export { default as endOfDecade } from './endOfDecade/index'
+export { default as endOfHour } from './endOfHour/index'
+export { default as endOfISOWeek } from './endOfISOWeek/index'
+export { default as endOfISOWeekYear } from './endOfISOWeekYear/index'
+export { default as endOfMinute } from './endOfMinute/index'
+export { default as endOfMonth } from './endOfMonth/index'
+export { default as endOfQuarter } from './endOfQuarter/index'
+export { default as endOfSecond } from './endOfSecond/index'
+export { default as endOfToday } from './endOfToday/index'
+export { default as endOfTomorrow } from './endOfTomorrow/index'
+export { default as endOfWeek } from './endOfWeek/index'
+export { default as endOfYear } from './endOfYear/index'
+export { default as endOfYesterday } from './endOfYesterday/index'
+export { default as format } from './format/index'
+export { default as formatDistance } from './formatDistance/index'
+export { default as formatDistanceStrict } from './formatDistanceStrict/index'
+export { default as formatDistanceToNow } from './formatDistanceToNow/index'
+export { default as formatDistanceToNowStrict } from './formatDistanceToNowStrict/index'
+export { default as formatDuration } from './formatDuration/index'
+export { default as formatISO } from './formatISO/index'
+export { default as formatISO9075 } from './formatISO9075/index'
+export { default as formatISODuration } from './formatISODuration/index'
+export { default as formatRFC3339 } from './formatRFC3339/index'
+export { default as formatRFC7231 } from './formatRFC7231/index'
+export { default as formatRelative } from './formatRelative/index'
+export { default as fromUnixTime } from './fromUnixTime/index'
+export { default as getDate } from './getDate/index'
+export { default as getDay } from './getDay/index'
+export { default as getDayOfYear } from './getDayOfYear/index'
+export { default as getDaysInMonth } from './getDaysInMonth/index'
+export { default as getDaysInYear } from './getDaysInYear/index'
+export { default as getDecade } from './getDecade/index'
+export { default as getHours } from './getHours/index'
+export { default as getISODay } from './getISODay/index'
+export { default as getISOWeek } from './getISOWeek/index'
+export { default as getISOWeekYear } from './getISOWeekYear/index'
+export { default as getISOWeeksInYear } from './getISOWeeksInYear/index'
+export { default as getMilliseconds } from './getMilliseconds/index'
+export { default as getMinutes } from './getMinutes/index'
+export { default as getMonth } from './getMonth/index'
+export { default as getOverlappingDaysInIntervals } from './getOverlappingDaysInIntervals/index'
+export { default as getQuarter } from './getQuarter/index'
+export { default as getSeconds } from './getSeconds/index'
+export { default as getTime } from './getTime/index'
+export { default as getUnixTime } from './getUnixTime/index'
+export { default as getWeek } from './getWeek/index'
+export { default as getWeekOfMonth } from './getWeekOfMonth/index'
+export { default as getWeekYear } from './getWeekYear/index'
+export { default as getWeeksInMonth } from './getWeeksInMonth/index'
+export { default as getYear } from './getYear/index'
+export { default as hoursToMilliseconds } from './hoursToMilliseconds/index'
+export { default as hoursToMinutes } from './hoursToMinutes/index'
+export { default as hoursToSeconds } from './hoursToSeconds/index'
+export { default as intervalToDuration } from './intervalToDuration/index'
+export { default as intlFormat } from './intlFormat/index'
+export { default as isAfter } from './isAfter/index'
+export { default as isBefore } from './isBefore/index'
+export { default as isDate } from './isDate/index'
+export { default as isEqual } from './isEqual/index'
+export { default as isExists } from './isExists/index'
+export { default as isFirstDayOfMonth } from './isFirstDayOfMonth/index'
+export { default as isFriday } from './isFriday/index'
+export { default as isFuture } from './isFuture/index'
+export { default as isLastDayOfMonth } from './isLastDayOfMonth/index'
+export { default as isLeapYear } from './isLeapYear/index'
+export { default as isMatch } from './isMatch/index'
+export { default as isMonday } from './isMonday/index'
+export { default as isPast } from './isPast/index'
+export { default as isSameDay } from './isSameDay/index'
+export { default as isSameHour } from './isSameHour/index'
+export { default as isSameISOWeek } from './isSameISOWeek/index'
+export { default as isSameISOWeekYear } from './isSameISOWeekYear/index'
+export { default as isSameMinute } from './isSameMinute/index'
+export { default as isSameMonth } from './isSameMonth/index'
+export { default as isSameQuarter } from './isSameQuarter/index'
+export { default as isSameSecond } from './isSameSecond/index'
+export { default as isSameWeek } from './isSameWeek/index'
+export { default as isSameYear } from './isSameYear/index'
+export { default as isSaturday } from './isSaturday/index'
+export { default as isSunday } from './isSunday/index'
+export { default as isThisHour } from './isThisHour/index'
+export { default as isThisISOWeek } from './isThisISOWeek/index'
+export { default as isThisMinute } from './isThisMinute/index'
+export { default as isThisMonth } from './isThisMonth/index'
+export { default as isThisQuarter } from './isThisQuarter/index'
+export { default as isThisSecond } from './isThisSecond/index'
+export { default as isThisWeek } from './isThisWeek/index'
+export { default as isThisYear } from './isThisYear/index'
+export { default as isThursday } from './isThursday/index'
+export { default as isToday } from './isToday/index'
+export { default as isTomorrow } from './isTomorrow/index'
+export { default as isTuesday } from './isTuesday/index'
+export { default as isValid } from './isValid/index'
+export { default as isWednesday } from './isWednesday/index'
+export { default as isWeekend } from './isWeekend/index'
+export { default as isWithinInterval } from './isWithinInterval/index'
+export { default as isYesterday } from './isYesterday/index'
+export { default as lastDayOfDecade } from './lastDayOfDecade/index'
+export { default as lastDayOfISOWeek } from './lastDayOfISOWeek/index'
+export { default as lastDayOfISOWeekYear } from './lastDayOfISOWeekYear/index'
+export { default as lastDayOfMonth } from './lastDayOfMonth/index'
+export { default as lastDayOfQuarter } from './lastDayOfQuarter/index'
+export { default as lastDayOfWeek } from './lastDayOfWeek/index'
+export { default as lastDayOfYear } from './lastDayOfYear/index'
+export { default as lightFormat } from './lightFormat/index'
+export { default as max } from './max/index'
+export { default as milliseconds } from './milliseconds/index'
+export { default as millisecondsToHours } from './millisecondsToHours/index'
+export { default as millisecondsToMinutes } from './millisecondsToMinutes/index'
+export { default as millisecondsToSeconds } from './millisecondsToSeconds/index'
+export { default as min } from './min/index'
+export { default as minutesToHours } from './minutesToHours/index'
+export { default as minutesToMilliseconds } from './minutesToMilliseconds/index'
+export { default as minutesToSeconds } from './minutesToSeconds/index'
+export { default as monthsToQuarters } from './monthsToQuarters/index'
+export { default as monthsToYears } from './monthsToYears/index'
+export { default as nextDay } from './nextDay/index'
+export { default as nextFriday } from './nextFriday/index'
+export { default as nextMonday } from './nextMonday/index'
+export { default as nextSaturday } from './nextSaturday/index'
+export { default as nextSunday } from './nextSunday/index'
+export { default as nextThursday } from './nextThursday/index'
+export { default as nextTuesday } from './nextTuesday/index'
+export { default as nextWednesday } from './nextWednesday/index'
+export { default as parse } from './parse/index'
+export { default as parseISO } from './parseISO/index'
+export { default as parseJSON } from './parseJSON/index'
+export { default as quartersToMonths } from './quartersToMonths/index'
+export { default as quartersToYears } from './quartersToYears/index'
+export { default as roundToNearestMinutes } from './roundToNearestMinutes/index'
+export { default as secondsToHours } from './secondsToHours/index'
+export { default as secondsToMilliseconds } from './secondsToMilliseconds/index'
+export { default as secondsToMinutes } from './secondsToMinutes/index'
+export { default as set } from './set/index'
+export { default as setDate } from './setDate/index'
+export { default as setDay } from './setDay/index'
+export { default as setDayOfYear } from './setDayOfYear/index'
+export { default as setHours } from './setHours/index'
+export { default as setISODay } from './setISODay/index'
+export { default as setISOWeek } from './setISOWeek/index'
+export { default as setISOWeekYear } from './setISOWeekYear/index'
+export { default as setMilliseconds } from './setMilliseconds/index'
+export { default as setMinutes } from './setMinutes/index'
+export { default as setMonth } from './setMonth/index'
+export { default as setQuarter } from './setQuarter/index'
+export { default as setSeconds } from './setSeconds/index'
+export { default as setWeek } from './setWeek/index'
+export { default as setWeekYear } from './setWeekYear/index'
+export { default as setYear } from './setYear/index'
+export { default as startOfDay } from './startOfDay/index'
+export { default as startOfDecade } from './startOfDecade/index'
+export { default as startOfHour } from './startOfHour/index'
+export { default as startOfISOWeek } from './startOfISOWeek/index'
+export { default as startOfISOWeekYear } from './startOfISOWeekYear/index'
+export { default as startOfMinute } from './startOfMinute/index'
+export { default as startOfMonth } from './startOfMonth/index'
+export { default as startOfQuarter } from './startOfQuarter/index'
+export { default as startOfSecond } from './startOfSecond/index'
+export { default as startOfToday } from './startOfToday/index'
+export { default as startOfTomorrow } from './startOfTomorrow/index'
+export { default as startOfWeek } from './startOfWeek/index'
+export { default as startOfWeekYear } from './startOfWeekYear/index'
+export { default as startOfYear } from './startOfYear/index'
+export { default as startOfYesterday } from './startOfYesterday/index'
+export { default as sub } from './sub/index'
+export { default as subBusinessDays } from './subBusinessDays/index'
+export { default as subDays } from './subDays/index'
+export { default as subHours } from './subHours/index'
+export { default as subISOWeekYears } from './subISOWeekYears/index'
+export { default as subMilliseconds } from './subMilliseconds/index'
+export { default as subMinutes } from './subMinutes/index'
+export { default as subMonths } from './subMonths/index'
+export { default as subQuarters } from './subQuarters/index'
+export { default as subSeconds } from './subSeconds/index'
+export { default as subWeeks } from './subWeeks/index'
+export { default as subYears } from './subYears/index'
+export { default as toDate } from './toDate/index'
+export { default as weeksToDays } from './weeksToDays/index'
+export { default as yearsToMonths } from './yearsToMonths/index'
+export { default as yearsToQuarters } from './yearsToQuarters/index'
+export * from './constants/index'
diff --git a/date-fns/src/index.js.flow b/date-fns/src/index.js.flow
new file mode 100644
index 0000000..46beda9
--- /dev/null
+++ b/date-fns/src/index.js.flow
@@ -0,0 +1,860 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: {
+ add: (date: Date | number, duration: Duration) => Date,
+
+ addBusinessDays: (date: Date | number, amount: number) => Date,
+
+ addDays: (date: Date | number, amount: number) => Date,
+
+ addHours: (date: Date | number, amount: number) => Date,
+
+ addISOWeekYears: (date: Date | number, amount: number) => Date,
+
+ addMilliseconds: (date: Date | number, amount: number) => Date,
+
+ addMinutes: (date: Date | number, amount: number) => Date,
+
+ addMonths: (date: Date | number, amount: number) => Date,
+
+ addQuarters: (date: Date | number, amount: number) => Date,
+
+ addSeconds: (date: Date | number, amount: number) => Date,
+
+ addWeeks: (date: Date | number, amount: number) => Date,
+
+ addYears: (date: Date | number, amount: number) => Date,
+
+ areIntervalsOverlapping: (
+ intervalLeft: Interval,
+ intervalRight: Interval,
+ options?: {
+ inclusive?: boolean,
+ }
+ ) => boolean,
+
+ closestIndexTo: (
+ dateToCompare: Date | number,
+ datesArray: (Date | number)[]
+ ) => number,
+
+ closestTo: (
+ dateToCompare: Date | number,
+ datesArray: (Date | number)[]
+ ) => Date,
+
+ compareAsc: (dateLeft: Date | number, dateRight: Date | number) => number,
+
+ compareDesc: (dateLeft: Date | number, dateRight: Date | number) => number,
+
+ daysToWeeks: (days: number) => number,
+
+ differenceInBusinessDays: (
+ dateLeft: Date | number,
+ dateRight: Date | number
+ ) => number,
+
+ differenceInCalendarDays: (
+ dateLeft: Date | number,
+ dateRight: Date | number
+ ) => number,
+
+ differenceInCalendarISOWeeks: (
+ dateLeft: Date | number,
+ dateRight: Date | number
+ ) => number,
+
+ differenceInCalendarISOWeekYears: (
+ dateLeft: Date | number,
+ dateRight: Date | number
+ ) => number,
+
+ differenceInCalendarMonths: (
+ dateLeft: Date | number,
+ dateRight: Date | number
+ ) => number,
+
+ differenceInCalendarQuarters: (
+ dateLeft: Date | number,
+ dateRight: Date | number
+ ) => number,
+
+ differenceInCalendarWeeks: (
+ dateLeft: Date | number,
+ dateRight: Date | number,
+ options?: {
+ locale?: Locale,
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ }
+ ) => number,
+
+ differenceInCalendarYears: (
+ dateLeft: Date | number,
+ dateRight: Date | number
+ ) => number,
+
+ differenceInDays: (
+ dateLeft: Date | number,
+ dateRight: Date | number
+ ) => number,
+
+ differenceInHours: (
+ dateLeft: Date | number,
+ dateRight: Date | number
+ ) => number,
+
+ differenceInISOWeekYears: (
+ dateLeft: Date | number,
+ dateRight: Date | number
+ ) => number,
+
+ differenceInMilliseconds: (
+ dateLeft: Date | number,
+ dateRight: Date | number
+ ) => number,
+
+ differenceInMinutes: (
+ dateLeft: Date | number,
+ dateRight: Date | number
+ ) => number,
+
+ differenceInMonths: (
+ dateLeft: Date | number,
+ dateRight: Date | number
+ ) => number,
+
+ differenceInQuarters: (
+ dateLeft: Date | number,
+ dateRight: Date | number
+ ) => number,
+
+ differenceInSeconds: (
+ dateLeft: Date | number,
+ dateRight: Date | number
+ ) => number,
+
+ differenceInWeeks: (
+ dateLeft: Date | number,
+ dateRight: Date | number
+ ) => number,
+
+ differenceInYears: (
+ dateLeft: Date | number,
+ dateRight: Date | number
+ ) => number,
+
+ eachDayOfInterval: (
+ interval: Interval,
+ options?: {
+ step?: number,
+ }
+ ) => Date[],
+
+ eachHourOfInterval: (
+ interval: Interval,
+ options?: {
+ step?: number,
+ }
+ ) => Date[],
+
+ eachMinuteOfInterval: (
+ interval: Interval,
+ options?: {
+ step?: number,
+ }
+ ) => Date[],
+
+ eachMonthOfInterval: (interval: Interval) => Date[],
+
+ eachQuarterOfInterval: (interval: Interval) => Date[],
+
+ eachWeekendOfInterval: (interval: Interval) => Date[],
+
+ eachWeekendOfMonth: (date: Date | number) => Date[],
+
+ eachWeekendOfYear: (date: Date | number) => Date[],
+
+ eachWeekOfInterval: (
+ interval: Interval,
+ options?: {
+ locale?: Locale,
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ }
+ ) => Date[],
+
+ eachYearOfInterval: (interval: Interval) => Date[],
+
+ endOfDay: (date: Date | number) => Date,
+
+ endOfDecade: (
+ date: Date | number,
+ options?: {
+ additionalDigits?: 0 | 1 | 2,
+ }
+ ) => Date,
+
+ endOfHour: (date: Date | number) => Date,
+
+ endOfISOWeek: (date: Date | number) => Date,
+
+ endOfISOWeekYear: (date: Date | number) => Date,
+
+ endOfMinute: (date: Date | number) => Date,
+
+ endOfMonth: (date: Date | number) => Date,
+
+ endOfQuarter: (date: Date | number) => Date,
+
+ endOfSecond: (date: Date | number) => Date,
+
+ endOfToday: () => Date,
+
+ endOfTomorrow: () => Date,
+
+ endOfWeek: (
+ date: Date | number,
+ options?: {
+ locale?: Locale,
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ }
+ ) => Date,
+
+ endOfYear: (date: Date | number) => Date,
+
+ endOfYesterday: () => Date,
+
+ format: (
+ date: Date | number,
+ format: string,
+ options?: {
+ locale?: Locale,
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: number,
+ useAdditionalWeekYearTokens?: boolean,
+ useAdditionalDayOfYearTokens?: boolean,
+ }
+ ) => string,
+
+ formatDistance: (
+ date: Date | number,
+ baseDate: Date | number,
+ options?: {
+ includeSeconds?: boolean,
+ addSuffix?: boolean,
+ locale?: Locale,
+ }
+ ) => string,
+
+ formatDistanceStrict: (
+ date: Date | number,
+ baseDate: Date | number,
+ options?: {
+ addSuffix?: boolean,
+ unit?: 'second' | 'minute' | 'hour' | 'day' | 'month' | 'year',
+ roundingMethod?: 'floor' | 'ceil' | 'round',
+ locale?: Locale,
+ }
+ ) => string,
+
+ formatDistanceToNow: (
+ date: Date | number,
+ options?: {
+ includeSeconds?: boolean,
+ addSuffix?: boolean,
+ locale?: Locale,
+ }
+ ) => string,
+
+ formatDistanceToNowStrict: (
+ date: Date | number,
+ options?: {
+ addSuffix?: boolean,
+ unit?: 'second' | 'minute' | 'hour' | 'day' | 'month' | 'year',
+ roundingMethod?: 'floor' | 'ceil' | 'round',
+ locale?: Locale,
+ }
+ ) => string,
+
+ formatDuration: (
+ duration: Duration,
+ options?: {
+ format?: string[],
+ zero?: boolean,
+ delimiter?: string,
+ locale?: Locale,
+ }
+ ) => string,
+
+ formatISO: (
+ date: Date | number,
+ options?: {
+ format?: 'extended' | 'basic',
+ representation?: 'complete' | 'date' | 'time',
+ }
+ ) => string,
+
+ formatISO9075: (
+ date: Date | number,
+ options?: {
+ format?: 'extended' | 'basic',
+ representation?: 'complete' | 'date' | 'time',
+ }
+ ) => string,
+
+ formatISODuration: (duration: Duration) => string,
+
+ formatRelative: (
+ date: Date | number,
+ baseDate: Date | number,
+ options?: {
+ locale?: Locale,
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ }
+ ) => string,
+
+ formatRFC3339: (
+ date: Date | number,
+ options?: {
+ fractionDigits?: 0 | 1 | 2 | 3,
+ }
+ ) => string,
+
+ formatRFC7231: (date: Date | number) => string,
+
+ fromUnixTime: (unixTime: number) => Date,
+
+ getDate: (date: Date | number) => number,
+
+ getDay: (date: Date | number) => 0 | 1 | 2 | 3 | 4 | 5 | 6,
+
+ getDayOfYear: (date: Date | number) => number,
+
+ getDaysInMonth: (date: Date | number) => number,
+
+ getDaysInYear: (date: Date | number) => number,
+
+ getDecade: (date: Date | number) => number,
+
+ getHours: (date: Date | number) => number,
+
+ getISODay: (date: Date | number) => number,
+
+ getISOWeek: (date: Date | number) => number,
+
+ getISOWeeksInYear: (date: Date | number) => number,
+
+ getISOWeekYear: (date: Date | number) => number,
+
+ getMilliseconds: (date: Date | number) => number,
+
+ getMinutes: (date: Date | number) => number,
+
+ getMonth: (date: Date | number) => number,
+
+ getOverlappingDaysInIntervals: (
+ intervalLeft: Interval,
+ intervalRight: Interval
+ ) => number,
+
+ getQuarter: (date: Date | number) => number,
+
+ getSeconds: (date: Date | number) => number,
+
+ getTime: (date: Date | number) => number,
+
+ getUnixTime: (date: Date | number) => number,
+
+ getWeek: (
+ date: Date | number,
+ options?: {
+ locale?: Locale,
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ }
+ ) => number,
+
+ getWeekOfMonth: (
+ date: Date | number,
+ options?: {
+ locale?: Locale,
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ }
+ ) => number,
+
+ getWeeksInMonth: (
+ date: Date | number,
+ options?: {
+ locale?: Locale,
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ }
+ ) => number,
+
+ getWeekYear: (
+ date: Date | number,
+ options?: {
+ locale?: Locale,
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ }
+ ) => number,
+
+ getYear: (date: Date | number) => number,
+
+ hoursToMilliseconds: (hours: number) => number,
+
+ hoursToMinutes: (hours: number) => number,
+
+ hoursToSeconds: (hours: number) => number,
+
+ intervalToDuration: (interval: Interval) => Duration,
+
+ intlFormat: (
+ argument: Date | number,
+ formatOptions?: {
+ localeMatcher?: 'lookup' | 'best fit',
+ weekday?: 'narrow' | 'short' | 'long',
+ era?: 'narrow' | 'short' | 'long',
+ year?: 'numeric' | '2-digit',
+ month?: 'numeric' | '2-digit' | 'narrow' | 'short' | 'long',
+ day?: 'numeric' | '2-digit',
+ hour?: 'numeric' | '2-digit',
+ minute?: 'numeric' | '2-digit',
+ second?: 'numeric' | '2-digit',
+ timeZoneName?: 'short' | 'long',
+ formatMatcher?: 'basic' | 'best fit',
+ hour12?: boolean,
+ timeZone?: string,
+ },
+ localeOptions?: {
+ locale?: string | string[],
+ }
+ ) => string,
+
+ isAfter: (date: Date | number, dateToCompare: Date | number) => boolean,
+
+ isBefore: (date: Date | number, dateToCompare: Date | number) => boolean,
+
+ isDate: (value: any) => boolean,
+
+ isEqual: (dateLeft: Date | number, dateRight: Date | number) => boolean,
+
+ isExists: (year: number, month: number, day: number) => boolean,
+
+ isFirstDayOfMonth: (date: Date | number) => boolean,
+
+ isFriday: (date: Date | number) => boolean,
+
+ isFuture: (date: Date | number) => boolean,
+
+ isLastDayOfMonth: (date: Date | number) => boolean,
+
+ isLeapYear: (date: Date | number) => boolean,
+
+ isMatch: (
+ dateString: string,
+ formatString: string,
+ options?: {
+ locale?: Locale,
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ useAdditionalWeekYearTokens?: boolean,
+ useAdditionalDayOfYearTokens?: boolean,
+ }
+ ) => boolean,
+
+ isMonday: (date: Date | number) => boolean,
+
+ isPast: (date: Date | number) => boolean,
+
+ isSameDay: (dateLeft: Date | number, dateRight: Date | number) => boolean,
+
+ isSameHour: (dateLeft: Date | number, dateRight: Date | number) => boolean,
+
+ isSameISOWeek: (dateLeft: Date | number, dateRight: Date | number) => boolean,
+
+ isSameISOWeekYear: (
+ dateLeft: Date | number,
+ dateRight: Date | number
+ ) => boolean,
+
+ isSameMinute: (dateLeft: Date | number, dateRight: Date | number) => boolean,
+
+ isSameMonth: (dateLeft: Date | number, dateRight: Date | number) => boolean,
+
+ isSameQuarter: (dateLeft: Date | number, dateRight: Date | number) => boolean,
+
+ isSameSecond: (dateLeft: Date | number, dateRight: Date | number) => boolean,
+
+ isSameWeek: (
+ dateLeft: Date | number,
+ dateRight: Date | number,
+ options?: {
+ locale?: Locale,
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ }
+ ) => boolean,
+
+ isSameYear: (dateLeft: Date | number, dateRight: Date | number) => boolean,
+
+ isSaturday: (date: Date | number) => boolean,
+
+ isSunday: (date: Date | number) => boolean,
+
+ isThisHour: (date: Date | number) => boolean,
+
+ isThisISOWeek: (date: Date | number) => boolean,
+
+ isThisMinute: (date: Date | number) => boolean,
+
+ isThisMonth: (date: Date | number) => boolean,
+
+ isThisQuarter: (date: Date | number) => boolean,
+
+ isThisSecond: (date: Date | number) => boolean,
+
+ isThisWeek: (
+ date: Date | number,
+ options?: {
+ locale?: Locale,
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ }
+ ) => boolean,
+
+ isThisYear: (date: Date | number) => boolean,
+
+ isThursday: (date: Date | number) => boolean,
+
+ isToday: (date: Date | number) => boolean,
+
+ isTomorrow: (date: Date | number) => boolean,
+
+ isTuesday: (date: Date | number) => boolean,
+
+ isValid: (date: any) => boolean,
+
+ isWednesday: (date: Date | number) => boolean,
+
+ isWeekend: (date: Date | number) => boolean,
+
+ isWithinInterval: (date: Date | number, interval: Interval) => boolean,
+
+ isYesterday: (date: Date | number) => boolean,
+
+ lastDayOfDecade: (date: Date | number) => Date,
+
+ lastDayOfISOWeek: (date: Date | number) => Date,
+
+ lastDayOfISOWeekYear: (date: Date | number) => Date,
+
+ lastDayOfMonth: (date: Date | number) => Date,
+
+ lastDayOfQuarter: (
+ date: Date | number,
+ options?: {
+ additionalDigits?: 0 | 1 | 2,
+ }
+ ) => Date,
+
+ lastDayOfWeek: (
+ date: Date | number,
+ options?: {
+ locale?: Locale,
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ }
+ ) => Date,
+
+ lastDayOfYear: (date: Date | number) => Date,
+
+ lightFormat: (date: Date | number, format: string) => string,
+
+ max: (datesArray: (Date | number)[]) => Date,
+
+ milliseconds: (duration: Duration) => number,
+
+ millisecondsToHours: (milliseconds: number) => number,
+
+ millisecondsToMinutes: (milliseconds: number) => number,
+
+ millisecondsToSeconds: (milliseconds: number) => number,
+
+ min: (datesArray: (Date | number)[]) => Date,
+
+ minutesToHours: (minutes: number) => number,
+
+ minutesToMilliseconds: (minutes: number) => number,
+
+ minutesToSeconds: (minutes: number) => number,
+
+ monthsToQuarters: (months: number) => number,
+
+ monthsToYears: (months: number) => number,
+
+ nextDay: (date: Date | number, day: Day) => Date,
+
+ nextFriday: (date: Date | number) => Date,
+
+ nextMonday: (date: Date | number) => Date,
+
+ nextSaturday: (date: Date | number) => Date,
+
+ nextSunday: (date: Date | number) => Date,
+
+ nextThursday: (date: Date | number) => Date,
+
+ nextTuesday: (date: Date | number) => Date,
+
+ nextWednesday: (date: Date | number) => Date,
+
+ parse: (
+ dateString: string,
+ formatString: string,
+ referenceDate: Date | number,
+ options?: {
+ locale?: Locale,
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ useAdditionalWeekYearTokens?: boolean,
+ useAdditionalDayOfYearTokens?: boolean,
+ }
+ ) => Date,
+
+ parseISO: (
+ argument: string,
+ options?: {
+ additionalDigits?: 0 | 1 | 2,
+ }
+ ) => Date,
+
+ parseJSON: (argument: string | number | Date) => Date,
+
+ quartersToMonths: (quarters: number) => number,
+
+ quartersToYears: (quarters: number) => number,
+
+ roundToNearestMinutes: (
+ date: Date | number,
+ options?: {
+ nearestTo?: number,
+ }
+ ) => Date,
+
+ secondsToHours: (seconds: number) => number,
+
+ secondsToMilliseconds: (seconds: number) => number,
+
+ secondsToMinutes: (seconds: number) => number,
+
+ set: (
+ date: Date | number,
+ values: {
+ year?: number,
+ month?: number,
+ date?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+ milliseconds?: number,
+ }
+ ) => Date,
+
+ setDate: (date: Date | number, dayOfMonth: number) => Date,
+
+ setDay: (
+ date: Date | number,
+ day: number,
+ options?: {
+ locale?: Locale,
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ }
+ ) => Date,
+
+ setDayOfYear: (date: Date | number, dayOfYear: number) => Date,
+
+ setHours: (date: Date | number, hours: number) => Date,
+
+ setISODay: (date: Date | number, day: number) => Date,
+
+ setISOWeek: (date: Date | number, isoWeek: number) => Date,
+
+ setISOWeekYear: (date: Date | number, isoWeekYear: number) => Date,
+
+ setMilliseconds: (date: Date | number, milliseconds: number) => Date,
+
+ setMinutes: (date: Date | number, minutes: number) => Date,
+
+ setMonth: (date: Date | number, month: number) => Date,
+
+ setQuarter: (date: Date | number, quarter: number) => Date,
+
+ setSeconds: (date: Date | number, seconds: number) => Date,
+
+ setWeek: (
+ date: Date | number,
+ week: number,
+ options?: {
+ locale?: Locale,
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ }
+ ) => Date,
+
+ setWeekYear: (
+ date: Date | number,
+ weekYear: number,
+ options?: {
+ locale?: Locale,
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ }
+ ) => Date,
+
+ setYear: (date: Date | number, year: number) => Date,
+
+ startOfDay: (date: Date | number) => Date,
+
+ startOfDecade: (date: Date | number) => Date,
+
+ startOfHour: (date: Date | number) => Date,
+
+ startOfISOWeek: (date: Date | number) => Date,
+
+ startOfISOWeekYear: (date: Date | number) => Date,
+
+ startOfMinute: (date: Date | number) => Date,
+
+ startOfMonth: (date: Date | number) => Date,
+
+ startOfQuarter: (date: Date | number) => Date,
+
+ startOfSecond: (date: Date | number) => Date,
+
+ startOfToday: () => Date,
+
+ startOfTomorrow: () => Date,
+
+ startOfWeek: (
+ date: Date | number,
+ options?: {
+ locale?: Locale,
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ }
+ ) => Date,
+
+ startOfWeekYear: (
+ date: Date | number,
+ options?: {
+ locale?: Locale,
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ }
+ ) => Date,
+
+ startOfYear: (date: Date | number) => Date,
+
+ startOfYesterday: () => Date,
+
+ sub: (date: Date | number, duration: Duration) => Date,
+
+ subBusinessDays: (date: Date | number, amount: number) => Date,
+
+ subDays: (date: Date | number, amount: number) => Date,
+
+ subHours: (date: Date | number, amount: number) => Date,
+
+ subISOWeekYears: (date: Date | number, amount: number) => Date,
+
+ subMilliseconds: (date: Date | number, amount: number) => Date,
+
+ subMinutes: (date: Date | number, amount: number) => Date,
+
+ subMonths: (date: Date | number, amount: number) => Date,
+
+ subQuarters: (date: Date | number, amount: number) => Date,
+
+ subSeconds: (date: Date | number, amount: number) => Date,
+
+ subWeeks: (date: Date | number, amount: number) => Date,
+
+ subYears: (date: Date | number, amount: number) => Date,
+
+ toDate: (argument: Date | number) => Date,
+
+ weeksToDays: (weeks: number) => number,
+
+ yearsToMonths: (years: number) => number,
+
+ yearsToQuarters: (years: number) => number,
+
+ daysInWeek: number,
+
+ maxTime: number,
+
+ millisecondsInMinute: number,
+
+ millisecondsInHour: number,
+
+ millisecondsInSecond: number,
+
+ minTime: number,
+
+ minutesInHour: number,
+
+ monthsInQuarter: number,
+
+ monthsInYear: number,
+
+ quartersInYear: number,
+
+ secondsInHour: number,
+
+ secondsInMinute: number,
+}
diff --git a/date-fns/src/intervalToDuration/index.d.ts b/date-fns/src/intervalToDuration/index.d.ts
new file mode 100644
index 0000000..ce7bc76
--- /dev/null
+++ b/date-fns/src/intervalToDuration/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { intervalToDuration } from 'date-fns'
+export default intervalToDuration
diff --git a/date-fns/src/intervalToDuration/index.js.flow b/date-fns/src/intervalToDuration/index.js.flow
new file mode 100644
index 0000000..dbd61ee
--- /dev/null
+++ b/date-fns/src/intervalToDuration/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (interval: Interval) => Duration
diff --git a/date-fns/src/intervalToDuration/index.ts b/date-fns/src/intervalToDuration/index.ts
new file mode 100644
index 0000000..e2143aa
--- /dev/null
+++ b/date-fns/src/intervalToDuration/index.ts
@@ -0,0 +1,81 @@
+import compareAsc from '../compareAsc/index'
+import differenceInYears from '../differenceInYears/index'
+import differenceInMonths from '../differenceInMonths/index'
+import differenceInDays from '../differenceInDays/index'
+import differenceInHours from '../differenceInHours/index'
+import differenceInMinutes from '../differenceInMinutes/index'
+import differenceInSeconds from '../differenceInSeconds/index'
+import isValid from '../isValid/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+import toDate from '../toDate/index'
+import sub from '../sub/index'
+
+/**
+ * @name intervalToDuration
+ * @category Common Helpers
+ * @summary Convert interval to duration
+ *
+ * @description
+ * Convert a interval object to a duration object.
+ *
+ * @param {Interval} interval - the interval to convert to duration
+ *
+ * @returns {Duration} The duration Object
+ * @throws {TypeError} Requires 2 arguments
+ * @throws {RangeError} `start` must not be Invalid Date
+ * @throws {RangeError} `end` must not be Invalid Date
+ *
+ * @example
+ * // Get the duration between January 15, 1929 and April 4, 1968.
+ * intervalToDuration({
+ * start: new Date(1929, 0, 15, 12, 0, 0),
+ * end: new Date(1968, 3, 4, 19, 5, 0)
+ * })
+ * // => { years: 39, months: 2, days: 20, hours: 7, minutes: 5, seconds: 0 }
+ */
+
+export default function intervalToDuration({ start, end }: Interval): Duration {
+ requiredArgs(1, arguments)
+
+ const dateLeft = toDate(start)
+ const dateRight = toDate(end)
+
+ if (!isValid(dateLeft)) {
+ throw new RangeError('Start Date is invalid')
+ }
+ if (!isValid(dateRight)) {
+ throw new RangeError('End Date is invalid')
+ }
+
+ const duration = {
+ years: 0,
+ months: 0,
+ days: 0,
+ hours: 0,
+ minutes: 0,
+ seconds: 0,
+ }
+
+ const sign = compareAsc(dateLeft, dateRight)
+
+ duration.years = Math.abs(differenceInYears(dateLeft, dateRight))
+
+ const remainingMonths = sub(dateLeft, { years: sign * duration.years })
+ duration.months = Math.abs(differenceInMonths(remainingMonths, dateRight))
+
+ const remainingDays = sub(remainingMonths, { months: sign * duration.months })
+ duration.days = Math.abs(differenceInDays(remainingDays, dateRight))
+
+ const remainingHours = sub(remainingDays, { days: sign * duration.days })
+ duration.hours = Math.abs(differenceInHours(remainingHours, dateRight))
+
+ const remainingMinutes = sub(remainingHours, { hours: sign * duration.hours })
+ duration.minutes = Math.abs(differenceInMinutes(remainingMinutes, dateRight))
+
+ const remainingSeconds = sub(remainingMinutes, {
+ minutes: sign * duration.minutes,
+ })
+ duration.seconds = Math.abs(differenceInSeconds(remainingSeconds, dateRight))
+
+ return duration
+}
diff --git a/date-fns/src/intervalToDuration/test.ts b/date-fns/src/intervalToDuration/test.ts
new file mode 100644
index 0000000..04f250b
--- /dev/null
+++ b/date-fns/src/intervalToDuration/test.ts
@@ -0,0 +1,116 @@
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import intervalToDuration from '.'
+
+describe('intervalToDuration', function () {
+ it('returns correct duration for arbitrary dates', function () {
+ const start = new Date(1929, 0, 15, 12, 0, 0)
+ const end = new Date(1968, 3, 4, 19, 5, 0)
+ const result = intervalToDuration({ start, end })
+
+ assert.deepEqual(result, {
+ years: 39,
+ months: 2,
+ days: 20,
+ hours: 7,
+ minutes: 5,
+ seconds: 0,
+ })
+ })
+
+ it('returns correct duration (1 of everything)', function () {
+ const start = new Date(2020, 2, 1, 12, 0, 0)
+ const end = new Date(2021, 3, 2, 13, 1, 1)
+ const result = intervalToDuration({ start, end })
+
+ assert.deepEqual(result, {
+ years: 1,
+ months: 1,
+ days: 1,
+ hours: 1,
+ minutes: 1,
+ seconds: 1,
+ })
+ })
+
+ it('returns duration of 0 when the dates are the same', function () {
+ const start = new Date(2020, 2, 1, 12, 0, 0)
+ const end = new Date(2020, 2, 1, 12, 0, 0)
+ const result = intervalToDuration({ start, end })
+
+ assert.deepEqual(result, {
+ years: 0,
+ months: 0,
+ days: 0,
+ hours: 0,
+ minutes: 0,
+ seconds: 0,
+ })
+ })
+
+ describe('edge cases', function () {
+ it('returns correct duration for dates in the end of Feb - issue 2255', function () {
+ assert.deepEqual(
+ intervalToDuration({
+ start: new Date(2012, 1 /* Feb */, 28, 9, 0, 0),
+ end: new Date(2012, 1 /* Feb */, 29, 10, 0, 0),
+ }),
+ {
+ years: 0,
+ months: 0,
+ days: 1,
+ hours: 1,
+ minutes: 0,
+ seconds: 0,
+ }
+ )
+
+ assert.deepEqual(
+ intervalToDuration({
+ start: new Date(2012, 1 /* Feb */, 29, 9, 0, 0),
+ end: new Date(2012, 1 /* Feb */, 29, 10, 0, 0),
+ }),
+ {
+ years: 0,
+ months: 0,
+ days: 0,
+ hours: 1,
+ minutes: 0,
+ seconds: 0,
+ }
+ )
+
+ assert.deepEqual(
+ intervalToDuration({
+ start: new Date(2012, 1 /* Feb */, 28, 9, 0, 0),
+ end: new Date(2012, 1 /* Feb */, 28, 10, 0, 0),
+ }),
+ {
+ years: 0,
+ months: 0,
+ days: 0,
+ hours: 1,
+ minutes: 0,
+ seconds: 0,
+ }
+ )
+
+ // Issue 2261
+ assert.deepEqual(
+ intervalToDuration({
+ start: new Date(2021, 1 /* Feb */, 28, 7, 23, 7),
+ end: new Date(2021, 1 /* Feb */, 28, 7, 38, 18),
+ }),
+ {
+ years: 0,
+ months: 0,
+ days: 0,
+ hours: 0,
+ minutes: 15,
+ seconds: 11,
+ }
+ )
+ })
+ })
+})
diff --git a/date-fns/src/intlFormat/index.d.ts b/date-fns/src/intlFormat/index.d.ts
new file mode 100644
index 0000000..fc29cf5
--- /dev/null
+++ b/date-fns/src/intlFormat/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { intlFormat } from 'date-fns'
+export default intlFormat
diff --git a/date-fns/src/intlFormat/index.js.flow b/date-fns/src/intlFormat/index.js.flow
new file mode 100644
index 0000000..adc0bb4
--- /dev/null
+++ b/date-fns/src/intlFormat/index.js.flow
@@ -0,0 +1,72 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (
+ argument: Date | number,
+ formatOptions?: {
+ localeMatcher?: 'lookup' | 'best fit',
+ weekday?: 'narrow' | 'short' | 'long',
+ era?: 'narrow' | 'short' | 'long',
+ year?: 'numeric' | '2-digit',
+ month?: 'numeric' | '2-digit' | 'narrow' | 'short' | 'long',
+ day?: 'numeric' | '2-digit',
+ hour?: 'numeric' | '2-digit',
+ minute?: 'numeric' | '2-digit',
+ second?: 'numeric' | '2-digit',
+ timeZoneName?: 'short' | 'long',
+ formatMatcher?: 'basic' | 'best fit',
+ hour12?: boolean,
+ timeZone?: string,
+ },
+ localeOptions?: {
+ locale?: string | string[],
+ }
+) => string
diff --git a/date-fns/src/intlFormat/index.ts b/date-fns/src/intlFormat/index.ts
new file mode 100644
index 0000000..908a23b
--- /dev/null
+++ b/date-fns/src/intlFormat/index.ts
@@ -0,0 +1,116 @@
+import requiredArgs from '../_lib/requiredArgs/index'
+
+type Locale = Intl.ResolvedDateTimeFormatOptions['locale']
+type FormatOptions = Intl.DateTimeFormatOptions
+type LocaleOptions = { locale: Locale | Locale[] }
+
+export default function intlFormat(date: Date): string
+export default function intlFormat(
+ date: Date,
+ localeOptions: LocaleOptions
+): string
+export default function intlFormat(
+ date: Date,
+ formatOptions: FormatOptions
+): string
+export default function intlFormat(
+ date: Date,
+ formatOptions: FormatOptions,
+ localeOptions: LocaleOptions
+): string
+
+/**
+ * @name intlFormat
+ * @category Common Helpers
+ * @summary Format the date with Intl.DateTimeFormat (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat).
+ *
+ * @description
+ * Return the formatted date string in the given format.
+ * The method uses [`Intl.DateTimeFormat`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat) inside.
+ * formatOptions are the same as [`Intl.DateTimeFormat` options](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat#using_options)
+ *
+ * > ⚠️ Please note that before Node version 13.0.0, only the locale data for en-US is available by default.
+ *
+ * @param {Date|Number} argument - the original date.
+ * @param {Object} [formatOptions] - an object with options.
+ * @param {'lookup'|'best fit'} [formatOptions.localeMatcher='best fit'] - locale selection algorithm.
+ * @param {'narrow'|'short'|'long'} [formatOptions.weekday] - representation the days of the week.
+ * @param {'narrow'|'short'|'long'} [formatOptions.era] - representation of eras.
+ * @param {'numeric'|'2-digit'} [formatOptions.year] - representation of years.
+ * @param {'numeric'|'2-digit'|'narrow'|'short'|'long'} [formatOptions.month='numeric'] - representation of month.
+ * @param {'numeric'|'2-digit'} [formatOptions.day='numeric'] - representation of day.
+ * @param {'numeric'|'2-digit'} [formatOptions.hour='numeric'] - representation of hours.
+ * @param {'numeric'|'2-digit'} [formatOptions.minute] - representation of minutes.
+ * @param {'numeric'|'2-digit'} [formatOptions.second] - representation of seconds.
+ * @param {'short'|'long'} [formatOptions.timeZoneName] - representation of names of time zones.
+ * @param {'basic'|'best fit'} [formatOptions.formatMatcher='best fit'] - format selection algorithm.
+ * @param {Boolean} [formatOptions.hour12] - determines whether to use 12-hour time format.
+ * @param {String} [formatOptions.timeZone] - the time zone to use.
+ * @param {Object} [localeOptions] - an object with locale.
+ * @param {String|String[]} [localeOptions.locale] - the locale code
+ * @returns {String} the formatted date string.
+ * @throws {TypeError} 1 argument required.
+ * @throws {RangeError} `date` must not be Invalid Date
+ *
+ * @example
+ * // Represent 10 October 2019 in German.
+ * // Convert the date with format's options and locale's options.
+ * const result = intlFormat(new Date(2019, 9, 4, 12, 30, 13, 456), {
+ * weekday: 'long',
+ * year: 'numeric',
+ * month: 'long',
+ * day: 'numeric',
+ * }, {
+ * locale: 'de-DE',
+ * })
+ * //=> Freitag, 4. Oktober 2019
+ *
+ * @example
+ * // Represent 10 October 2019.
+ * // Convert the date with format's options.
+ * const result = intlFormat.default(new Date(2019, 9, 4, 12, 30, 13, 456), {
+ * year: 'numeric',
+ * month: 'numeric',
+ * day: 'numeric',
+ * hour: 'numeric',
+ * })
+ * //=> 10/4/2019, 12 PM
+ *
+ * @example
+ * // Represent 10 October 2019 in Korean.
+ * // Convert the date with locale's options.
+ * const result = intlFormat(new Date(2019, 9, 4, 12, 30, 13, 456), {
+ * locale: 'ko-KR',
+ * })
+ * //=> 2019. 10. 4.
+ *
+ * @example
+ * // Represent 10 October 2019 in middle-endian format:
+ * const result = intlFormat(new Date(2019, 9, 4, 12, 30, 13, 456))
+ * //=> 10/4/2019
+ */
+export default function intlFormat(
+ date: Date,
+ formatOrLocale?: FormatOptions | LocaleOptions,
+ localeOptions?: LocaleOptions
+): string {
+ requiredArgs(1, arguments)
+
+ let formatOptions: FormatOptions | undefined
+
+ if (isFormatOptions(formatOrLocale)) {
+ formatOptions = formatOrLocale
+ } else {
+ localeOptions = formatOrLocale
+ }
+
+ return new Intl.DateTimeFormat(localeOptions?.locale, formatOptions).format(
+ date
+ )
+}
+
+function isFormatOptions(
+ opts: LocaleOptions | FormatOptions | undefined
+): opts is FormatOptions {
+ return opts !== undefined && !('locale' in opts)
+}
diff --git a/date-fns/src/intlFormat/test.ts b/date-fns/src/intlFormat/test.ts
new file mode 100644
index 0000000..1c7c5f8
--- /dev/null
+++ b/date-fns/src/intlFormat/test.ts
@@ -0,0 +1,111 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import intlFormat from '.'
+
+// Before Node version 13.0.0, only the locale data for en-US is available by default.
+const hasFullICU = () => {
+ try {
+ const january = new Date(9e8)
+ const spanish = new Intl.DateTimeFormat('es', { month: 'long' })
+ return spanish.format(january) === 'enero'
+ } catch (err) {
+ return false
+ }
+}
+
+const fullICUOnly = hasFullICU() ? it : it.skip
+
+const getOperationSystemLocale = () => {
+ if (typeof process !== 'undefined') {
+ const ENV = process.env
+ const language = ENV.LC_ALL || ENV.LC_MESSAGES || ENV.LANG || ENV.LANGUAGE
+ return language?.split('.')[0].replace('_', '-')
+ } else {
+ return (
+ // @ts-expect-error
+ window.navigator.userLanguage ||
+ window.navigator.language ||
+ (window.navigator.languages || [])[0]
+ )
+ }
+}
+
+describe('intlFormat', () => {
+ describe('formats date', function () {
+ fullICUOnly(
+ "should work without format's options and locale's options",
+ function () {
+ const date = new Date(2019, 9 /* Oct */, 4, 12, 30, 13, 456)
+ const result = intlFormat(date)
+ const localeResult = intlFormat(date, {
+ locale: getOperationSystemLocale(),
+ })
+
+ assert(result === localeResult)
+ }
+ )
+
+ fullICUOnly("should work with only format's options", function () {
+ const date = new Date(2019, 9 /* Oct */, 4, 12, 30, 13, 456)
+ const formatOptions = {
+ year: 'numeric',
+ month: 'numeric',
+ day: 'numeric',
+ hour: 'numeric',
+ minute: 'numeric',
+ second: 'numeric',
+ hour12: false,
+ timeZone: 'America/Los_Angeles',
+ }
+
+ const result = intlFormat(date, formatOptions)
+ const localeResult = intlFormat(date, formatOptions, {
+ locale: getOperationSystemLocale(),
+ })
+
+ assert(result === localeResult)
+ })
+
+ fullICUOnly("should work with only locale's options", function () {
+ const date = new Date(2019, 9 /* Oct */, 4, 12, 30, 13, 456)
+ // Korean uses year-month-day order
+ const localeOptions = {
+ locale: 'ko-KR',
+ }
+
+ const result = intlFormat(date, localeOptions)
+
+ assert(result === '2019. 10. 4.')
+ })
+
+ fullICUOnly(
+ "should work with format's options and locale's options",
+ function () {
+ const date = new Date(2019, 9 /* Oct */, 4, 12, 30, 13, 456)
+ const formatOptions = {
+ weekday: 'long',
+ year: 'numeric',
+ month: 'long',
+ day: 'numeric',
+ }
+ const localeOptions = {
+ locale: 'de-DE',
+ }
+
+ const result = intlFormat(date, formatOptions, localeOptions)
+
+ assert(result === 'Freitag, 4. Oktober 2019')
+ }
+ )
+ })
+
+ it('throws RangeError if the date value is invalid', () => {
+ assert.throws(intlFormat.bind(null, new Date(NaN)), RangeError)
+ })
+
+ it('throws TypeError exception if passed less than 1 argument', () => {
+ assert.throws(intlFormat.bind(null), TypeError)
+ })
+})
diff --git a/date-fns/src/isAfter/benchmark.js b/date-fns/src/isAfter/benchmark.js
new file mode 100644
index 0000000..6a9cbc0
--- /dev/null
+++ b/date-fns/src/isAfter/benchmark.js
@@ -0,0 +1,23 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import isAfter from '.'
+import moment from 'moment'
+
+suite('isAfter', function () {
+ benchmark('date-fns', function () {
+ return isAfter(this.dateA, this.dateB)
+ })
+
+ benchmark('Moment.js', function () {
+ return this.momentA.isAfter(this.momentB)
+ })
+}, {
+ setup: function () {
+ this.dateA = new Date()
+ this.momentA = moment()
+ this.dateB = new Date(this.dateA.getTime() + 604800000)
+ this.momentB = this.momentA.clone().add(7, 'days')
+ }
+})
diff --git a/date-fns/src/isAfter/index.d.ts b/date-fns/src/isAfter/index.d.ts
new file mode 100644
index 0000000..0ef024b
--- /dev/null
+++ b/date-fns/src/isAfter/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { isAfter } from 'date-fns'
+export default isAfter
diff --git a/date-fns/src/isAfter/index.js.flow b/date-fns/src/isAfter/index.js.flow
new file mode 100644
index 0000000..3cb525c
--- /dev/null
+++ b/date-fns/src/isAfter/index.js.flow
@@ -0,0 +1,55 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (
+ date: Date | number,
+ dateToCompare: Date | number
+) => boolean
diff --git a/date-fns/src/isAfter/index.ts b/date-fns/src/isAfter/index.ts
new file mode 100644
index 0000000..b236d91
--- /dev/null
+++ b/date-fns/src/isAfter/index.ts
@@ -0,0 +1,32 @@
+import toDate from '../toDate/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name isAfter
+ * @category Common Helpers
+ * @summary Is the first date after the second one?
+ *
+ * @description
+ * Is the first date after the second one?
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} date - the date that should be after the other one to return true
+ * @param {Date|Number} dateToCompare - the date to compare with
+ * @returns {Boolean} the first date is after the second date
+ * @throws {TypeError} 2 arguments required
+ *
+ * @example
+ * // Is 10 July 1989 after 11 February 1987?
+ * var result = isAfter(new Date(1989, 6, 10), new Date(1987, 1, 11))
+ * //=> true
+ */
+export default function isAfter(dirtyDate: Date | number, dirtyDateToCompare: Date | number): boolean {
+ requiredArgs(2, arguments)
+
+ const date = toDate(dirtyDate)
+ const dateToCompare = toDate(dirtyDateToCompare)
+ return date.getTime() > dateToCompare.getTime()
+}
diff --git a/date-fns/src/isAfter/test.ts b/date-fns/src/isAfter/test.ts
new file mode 100644
index 0000000..ca1c99a
--- /dev/null
+++ b/date-fns/src/isAfter/test.ts
@@ -0,0 +1,59 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import isAfter from '.'
+
+describe('isAfter', function() {
+ it('returns true if the first date is after the second one', function() {
+ const result = isAfter(
+ new Date(1989, 6 /* Jul */, 10),
+ new Date(1987, 1 /* Feb */, 11)
+ )
+ assert(result === true)
+ })
+
+ it('returns false if the first date is before the second one', function() {
+ const result = isAfter(
+ new Date(1987, 1 /* Feb */, 11),
+ new Date(1989, 6 /* Jul */, 10)
+ )
+ assert(result === false)
+ })
+
+ it('returns false if the first date is equal to the second one', function() {
+ const result = isAfter(
+ new Date(1989, 6 /* Jul */, 10),
+ new Date(1989, 6 /* Jul */, 10)
+ )
+ assert(result === false)
+ })
+
+ it('accepts a timestamp', function() {
+ const result = isAfter(
+ new Date(1989, 6 /* Jul */, 10).getTime(),
+ new Date(1987, 1 /* Feb */, 11).getTime()
+ )
+ assert(result === true)
+ })
+
+ it('returns false if the first date is `Invalid Date`', function() {
+ const result = isAfter(new Date(NaN), new Date(1989, 6 /* Jul */, 10))
+ assert(result === false)
+ })
+
+ it('returns false if the second date is `Invalid Date`', function() {
+ const result = isAfter(new Date(1987, 1 /* Feb */, 11), new Date(NaN))
+ assert(result === false)
+ })
+
+ it('returns false if the both dates are `Invalid Date`', function() {
+ const result = isAfter(new Date(NaN), new Date(NaN))
+ assert(result === false)
+ })
+
+ it('throws TypeError exception if passed less than 2 arguments', function() {
+ assert.throws(isAfter.bind(null), TypeError)
+ assert.throws(isAfter.bind(null, 1), TypeError)
+ })
+})
diff --git a/date-fns/src/isBefore/benchmark.js b/date-fns/src/isBefore/benchmark.js
new file mode 100644
index 0000000..d70f2e8
--- /dev/null
+++ b/date-fns/src/isBefore/benchmark.js
@@ -0,0 +1,23 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import isBefore from '.'
+import moment from 'moment'
+
+suite('isBefore', function () {
+ benchmark('date-fns', function () {
+ return isBefore(this.dateA, this.dateB)
+ })
+
+ benchmark('Moment.js', function () {
+ return this.momentA.isBefore(this.momentB)
+ })
+}, {
+ setup: function () {
+ this.dateA = new Date()
+ this.momentA = moment()
+ this.dateB = new Date(this.dateA.getTime() + 604800000)
+ this.momentB = this.momentA.clone().add(7, 'days')
+ }
+})
diff --git a/date-fns/src/isBefore/index.d.ts b/date-fns/src/isBefore/index.d.ts
new file mode 100644
index 0000000..127ed7e
--- /dev/null
+++ b/date-fns/src/isBefore/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { isBefore } from 'date-fns'
+export default isBefore
diff --git a/date-fns/src/isBefore/index.js.flow b/date-fns/src/isBefore/index.js.flow
new file mode 100644
index 0000000..3cb525c
--- /dev/null
+++ b/date-fns/src/isBefore/index.js.flow
@@ -0,0 +1,55 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (
+ date: Date | number,
+ dateToCompare: Date | number
+) => boolean
diff --git a/date-fns/src/isBefore/index.ts b/date-fns/src/isBefore/index.ts
new file mode 100644
index 0000000..344b887
--- /dev/null
+++ b/date-fns/src/isBefore/index.ts
@@ -0,0 +1,32 @@
+import toDate from '../toDate/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name isBefore
+ * @category Common Helpers
+ * @summary Is the first date before the second one?
+ *
+ * @description
+ * Is the first date before the second one?
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} date - the date that should be before the other one to return true
+ * @param {Date|Number} dateToCompare - the date to compare with
+ * @returns {Boolean} the first date is before the second date
+ * @throws {TypeError} 2 arguments required
+ *
+ * @example
+ * // Is 10 July 1989 before 11 February 1987?
+ * var result = isBefore(new Date(1989, 6, 10), new Date(1987, 1, 11))
+ * //=> false
+ */
+export default function isBefore(dirtyDate: Date | number, dirtyDateToCompare: Date | number): boolean {
+ requiredArgs(2, arguments)
+
+ const date = toDate(dirtyDate)
+ const dateToCompare = toDate(dirtyDateToCompare)
+ return date.getTime() < dateToCompare.getTime()
+}
diff --git a/date-fns/src/isBefore/test.ts b/date-fns/src/isBefore/test.ts
new file mode 100644
index 0000000..c4d0084
--- /dev/null
+++ b/date-fns/src/isBefore/test.ts
@@ -0,0 +1,59 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import isBefore from '.'
+
+describe('isBefore', function() {
+ it('returns true if the first date is before the second one', function() {
+ const result = isBefore(
+ new Date(1987, 1 /* Feb */, 11),
+ new Date(1989, 6 /* Jul */, 10)
+ )
+ assert(result === true)
+ })
+
+ it('returns false if the first date is after the second one', function() {
+ const result = isBefore(
+ new Date(1989, 6 /* Jul */, 10),
+ new Date(1987, 1 /* Feb */, 11)
+ )
+ assert(result === false)
+ })
+
+ it('returns false if the first date is equal to the second one', function() {
+ const result = isBefore(
+ new Date(1989, 6 /* Jul */, 10),
+ new Date(1989, 6 /* Jul */, 10)
+ )
+ assert(result === false)
+ })
+
+ it('accepts a timestamp', function() {
+ const result = isBefore(
+ new Date(1987, 1 /* Feb */, 11).getTime(),
+ new Date(1989, 6 /* Jul */, 10).getTime()
+ )
+ assert(result === true)
+ })
+
+ it('returns false if the first date is `Invalid Date`', function() {
+ const result = isBefore(new Date(NaN), new Date(1989, 6 /* Jul */, 10))
+ assert(result === false)
+ })
+
+ it('returns false if the second date is `Invalid Date`', function() {
+ const result = isBefore(new Date(1987, 1 /* Feb */, 11), new Date(NaN))
+ assert(result === false)
+ })
+
+ it('returns false if the both dates are `Invalid Date`', function() {
+ const result = isBefore(new Date(NaN), new Date(NaN))
+ assert(result === false)
+ })
+
+ it('throws TypeError exception if passed less than 2 arguments', function() {
+ assert.throws(isBefore.bind(null), TypeError)
+ assert.throws(isBefore.bind(null, 1), TypeError)
+ })
+})
diff --git a/date-fns/src/isDate/index.d.ts b/date-fns/src/isDate/index.d.ts
new file mode 100644
index 0000000..518477e
--- /dev/null
+++ b/date-fns/src/isDate/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { isDate } from 'date-fns'
+export default isDate
diff --git a/date-fns/src/isDate/index.js.flow b/date-fns/src/isDate/index.js.flow
new file mode 100644
index 0000000..cc97d41
--- /dev/null
+++ b/date-fns/src/isDate/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (value: any) => boolean
diff --git a/date-fns/src/isDate/index.ts b/date-fns/src/isDate/index.ts
new file mode 100644
index 0000000..450e008
--- /dev/null
+++ b/date-fns/src/isDate/index.ts
@@ -0,0 +1,47 @@
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name isDate
+ * @category Common Helpers
+ * @summary Is the given value a date?
+ *
+ * @description
+ * Returns true if the given value is an instance of Date. The function works for dates transferred across iframes.
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {*} value - the value to check
+ * @returns {boolean} true if the given value is a date
+ * @throws {TypeError} 1 arguments required
+ *
+ * @example
+ * // For a valid date:
+ * const result = isDate(new Date())
+ * //=> true
+ *
+ * @example
+ * // For an invalid date:
+ * const result = isDate(new Date(NaN))
+ * //=> true
+ *
+ * @example
+ * // For some value:
+ * const result = isDate('2014-02-31')
+ * //=> false
+ *
+ * @example
+ * // For an object:
+ * const result = isDate({})
+ * //=> false
+ */
+export default function isDate(value: unknown): value is Date {
+ requiredArgs(1, arguments)
+
+ return (
+ value instanceof Date ||
+ (typeof value === 'object' &&
+ Object.prototype.toString.call(value) === '[object Date]')
+ )
+}
diff --git a/date-fns/src/isDate/test.ts b/date-fns/src/isDate/test.ts
new file mode 100644
index 0000000..7d87789
--- /dev/null
+++ b/date-fns/src/isDate/test.ts
@@ -0,0 +1,81 @@
+// @flow
+/* eslint-env mocha */
+/* global HTMLIFrameElement */
+
+import assert from 'assert'
+import { assertType } from '../_lib/test'
+import isDate from '.'
+
+describe('isDate', () => {
+ it('returns true if the given value is a date object', () => {
+ assert(isDate(new Date()))
+ })
+
+ it('returns true if the given value is an Invalid Date', () => {
+ assert(isDate(new Date(NaN)))
+ })
+
+ it('ensures that the passed argument is an instance of Date', () => {
+ const date: unknown = new Date()
+
+ if (isDate(date)) {
+ assertType<Date>(date)
+ } else {
+ assertType<unknown>(date)
+ }
+ })
+
+ describe('with date passed from another iframe', () => {
+ afterEach(() => {
+ const iframe = document.getElementById('iframe')
+ iframe && iframe.remove()
+ })
+
+ // Emulate web browser
+ if (!process.env.JEST_WORKER_ID) {
+ it('returns true for a date passed from another iframe', (done) => {
+ const iframe = document.createElement('iframe')
+ iframe.id = 'iframe'
+ iframe.addEventListener('load', () => {
+ execScript('window.date = new Date()') // eslint-disable-line no-implied-eval
+ // @ts-expect-error
+ assert(isDate(iframe.contentWindow.date))
+ // $ExpectedMistake sadly, but Flow doesn't know about Mocha's done
+ done()
+ })
+ if (!document.body) throw new Error('document.body is not defined')
+ document.body.appendChild(iframe)
+ })
+ }
+
+ function execScript(scriptText: string) {
+ const iframe = document.querySelector('iframe#iframe')
+ if (!iframe || !(iframe instanceof HTMLIFrameElement)) {
+ throw new Error("Can't execute the script because iframe isn't found")
+ }
+ const doc = iframe.contentDocument!
+ const script = doc.createElement('script')
+ script.innerText = scriptText
+ // @ts-expect-error
+ if (!(doc.body instanceof iframe.contentWindow.HTMLBodyElement)) {
+ throw new Error(
+ "Can't execute the script because iframe does not have body"
+ )
+ }
+ doc.body.append(script)
+ }
+ })
+
+ it('returns false if the given value is not a date object', () => {
+ assert(!isDate(new Date().getTime()))
+ assert(!isDate(new Date().toISOString()))
+ assert(!isDate({}))
+ assert(!isDate(null))
+ assert(!isDate(0))
+ })
+
+ it('throws TypeError exception if passed less than 1 argument', () => {
+ // @ts-expect-error
+ assert.throws(isDate.bind(null), TypeError)
+ })
+})
diff --git a/date-fns/src/isEqual/benchmark.js b/date-fns/src/isEqual/benchmark.js
new file mode 100644
index 0000000..c2276b6
--- /dev/null
+++ b/date-fns/src/isEqual/benchmark.js
@@ -0,0 +1,23 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import isEqual from '.'
+import moment from 'moment'
+
+suite('isEqual', function () {
+ benchmark('date-fns', function () {
+ return isEqual(this.dateA, this.dateB)
+ })
+
+ benchmark('Moment.js', function () {
+ return this.momentA.isSame(this.momentB)
+ })
+}, {
+ setup: function () {
+ this.dateA = new Date()
+ this.momentA = moment()
+ this.dateB = new Date(this.dateA.getTime() + 604800000)
+ this.momentB = this.momentA.clone().add(7, 'days')
+ }
+})
diff --git a/date-fns/src/isEqual/index.d.ts b/date-fns/src/isEqual/index.d.ts
new file mode 100644
index 0000000..87865db
--- /dev/null
+++ b/date-fns/src/isEqual/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { isEqual } from 'date-fns'
+export default isEqual
diff --git a/date-fns/src/isEqual/index.js.flow b/date-fns/src/isEqual/index.js.flow
new file mode 100644
index 0000000..55ea578
--- /dev/null
+++ b/date-fns/src/isEqual/index.js.flow
@@ -0,0 +1,55 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (
+ dateLeft: Date | number,
+ dateRight: Date | number
+) => boolean
diff --git a/date-fns/src/isEqual/index.ts b/date-fns/src/isEqual/index.ts
new file mode 100644
index 0000000..1157e62
--- /dev/null
+++ b/date-fns/src/isEqual/index.ts
@@ -0,0 +1,35 @@
+import toDate from '../toDate/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name isEqual
+ * @category Common Helpers
+ * @summary Are the given dates equal?
+ *
+ * @description
+ * Are the given dates equal?
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} dateLeft - the first date to compare
+ * @param {Date|Number} dateRight - the second date to compare
+ * @returns {Boolean} the dates are equal
+ * @throws {TypeError} 2 arguments required
+ *
+ * @example
+ * // Are 2 July 2014 06:30:45.000 and 2 July 2014 06:30:45.500 equal?
+ * var result = isEqual(
+ * new Date(2014, 6, 2, 6, 30, 45, 0),
+ * new Date(2014, 6, 2, 6, 30, 45, 500)
+ * )
+ * //=> false
+ */
+export default function isEqual(dirtyLeftDate: Date | number, dirtyRightDate: Date | number): boolean {
+ requiredArgs(2, arguments)
+
+ const dateLeft = toDate(dirtyLeftDate)
+ const dateRight = toDate(dirtyRightDate)
+ return dateLeft.getTime() === dateRight.getTime()
+}
diff --git a/date-fns/src/isEqual/test.ts b/date-fns/src/isEqual/test.ts
new file mode 100644
index 0000000..111ae4c
--- /dev/null
+++ b/date-fns/src/isEqual/test.ts
@@ -0,0 +1,51 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import isEqual from '.'
+
+describe('isEqual', function() {
+ it('returns true if the given dates are equal', function() {
+ const result = isEqual(
+ new Date(1987, 1 /* Feb */, 11),
+ new Date(1987, 1 /* Feb */, 11)
+ )
+ assert(result === true)
+ })
+
+ it('returns false if the given dates are not equal', function() {
+ const result = isEqual(
+ new Date(1989, 6 /* Jul */, 10),
+ new Date(1987, 1 /* Feb */, 11)
+ )
+ assert(result === false)
+ })
+
+ it('accepts a timestamp', function() {
+ const result = isEqual(
+ new Date(1987, 1 /* Feb */, 11).getTime(),
+ new Date(1987, 1 /* Feb */, 11).getTime()
+ )
+ assert(result === true)
+ })
+
+ it('returns false if the first date is `Invalid Date`', function() {
+ const result = isEqual(new Date(NaN), new Date(1989, 6 /* Jul */, 10))
+ assert(result === false)
+ })
+
+ it('returns false if the second date is `Invalid Date`', function() {
+ const result = isEqual(new Date(1987, 1 /* Feb */, 11), new Date(NaN))
+ assert(result === false)
+ })
+
+ it('returns false if the both dates are `Invalid Date`', function() {
+ const result = isEqual(new Date(NaN), new Date(NaN))
+ assert(result === false)
+ })
+
+ it('throws TypeError exception if passed less than 2 arguments', function() {
+ assert.throws(isEqual.bind(null), TypeError)
+ assert.throws(isEqual.bind(null, 1), TypeError)
+ })
+})
diff --git a/date-fns/src/isExists/benchmark.js b/date-fns/src/isExists/benchmark.js
new file mode 100644
index 0000000..167c979
--- /dev/null
+++ b/date-fns/src/isExists/benchmark.js
@@ -0,0 +1,21 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import isExists from '.'
+
+suite(
+ 'isExisting',
+ function() {
+ benchmark('date-fns', function() {
+ return isExists(this.invalidYear, this.invalidMonth, this.invalidDay)
+ })
+ },
+ {
+ setup: function() {
+ this.invalidYear = 2018
+ this.invalidMonth = 1
+ this.invalidDay = 31
+ }
+ }
+)
diff --git a/date-fns/src/isExists/index.d.ts b/date-fns/src/isExists/index.d.ts
new file mode 100644
index 0000000..af919be
--- /dev/null
+++ b/date-fns/src/isExists/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { isExists } from 'date-fns'
+export default isExists
diff --git a/date-fns/src/isExists/index.js.flow b/date-fns/src/isExists/index.js.flow
new file mode 100644
index 0000000..810828e
--- /dev/null
+++ b/date-fns/src/isExists/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (year: number, month: number, day: number) => boolean
diff --git a/date-fns/src/isExists/index.ts b/date-fns/src/isExists/index.ts
new file mode 100644
index 0000000..a15e60a
--- /dev/null
+++ b/date-fns/src/isExists/index.ts
@@ -0,0 +1,38 @@
+/**
+ * @name isExists
+ * @category Common Helpers
+ * @summary Is the given date exists?
+ *
+ * @description
+ * Checks if the given arguments convert to an existing date.
+ *
+ * @param {Number} year of the date to check
+ * @param {Number} month of the date to check
+ * @param {Number} day of the date to check
+ * @returns {Boolean} the date exists
+ * @throws {TypeError} 3 arguments required
+ *
+ * @example
+ * // For the valid date:
+ * var result = isExists(2018, 0, 31)
+ * //=> true
+ *
+ * @example
+ * // For the invalid date:
+ * var result = isExists(2018, 1, 31)
+ * //=> false
+ */
+export default function isExists(year: number, month: number, day: number): boolean {
+ if (arguments.length < 3) {
+ throw new TypeError(
+ '3 argument required, but only ' + arguments.length + ' present'
+ )
+ }
+
+ const date = new Date(year, month, day)
+ return (
+ date.getFullYear() === year &&
+ date.getMonth() === month &&
+ date.getDate() === day
+ )
+}
diff --git a/date-fns/src/isExists/test.ts b/date-fns/src/isExists/test.ts
new file mode 100644
index 0000000..3df2470
--- /dev/null
+++ b/date-fns/src/isExists/test.ts
@@ -0,0 +1,21 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import isExists from '.'
+
+describe('isValid', function() {
+ it('returns true if the given date is valid', function() {
+ const result = isExists(2018, 0, 31)
+ assert(result === true)
+ })
+
+ it('returns false if the given date is invalid', function() {
+ const result = isExists(2018, 1 /* Feb */, 31)
+ assert(result === false)
+ })
+
+ it('throws TypeError exception if passed less than 3 arguments', function() {
+ assert.throws(isExists.bind(null), TypeError)
+ })
+})
diff --git a/date-fns/src/isFirstDayOfMonth/benchmark.js b/date-fns/src/isFirstDayOfMonth/benchmark.js
new file mode 100644
index 0000000..df8db56
--- /dev/null
+++ b/date-fns/src/isFirstDayOfMonth/benchmark.js
@@ -0,0 +1,15 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import isFirstDayOfMonth from '.'
+
+suite('isFirstDayOfMonth', function () {
+ benchmark('date-fns', function () {
+ return isFirstDayOfMonth(this.date)
+ })
+}, {
+ setup: function () {
+ this.date = new Date()
+ }
+})
diff --git a/date-fns/src/isFirstDayOfMonth/index.d.ts b/date-fns/src/isFirstDayOfMonth/index.d.ts
new file mode 100644
index 0000000..6c1a314
--- /dev/null
+++ b/date-fns/src/isFirstDayOfMonth/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { isFirstDayOfMonth } from 'date-fns'
+export default isFirstDayOfMonth
diff --git a/date-fns/src/isFirstDayOfMonth/index.js.flow b/date-fns/src/isFirstDayOfMonth/index.js.flow
new file mode 100644
index 0000000..d3f01ee
--- /dev/null
+++ b/date-fns/src/isFirstDayOfMonth/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (date: Date | number) => boolean
diff --git a/date-fns/src/isFirstDayOfMonth/index.ts b/date-fns/src/isFirstDayOfMonth/index.ts
new file mode 100644
index 0000000..e6fcfb1
--- /dev/null
+++ b/date-fns/src/isFirstDayOfMonth/index.ts
@@ -0,0 +1,29 @@
+import toDate from '../toDate/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name isFirstDayOfMonth
+ * @category Month Helpers
+ * @summary Is the given date the first day of a month?
+ *
+ * @description
+ * Is the given date the first day of a month?
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} date - the date to check
+ * @returns {Boolean} the date is the first day of a month
+ * @throws {TypeError} 1 argument required
+ *
+ * @example
+ * // Is 1 September 2014 the first day of a month?
+ * var result = isFirstDayOfMonth(new Date(2014, 8, 1))
+ * //=> true
+ */
+export default function isFirstDayOfMonth(dirtyDate: Date | number): boolean {
+ requiredArgs(1, arguments)
+
+ return toDate(dirtyDate).getDate() === 1
+}
diff --git a/date-fns/src/isFirstDayOfMonth/test.ts b/date-fns/src/isFirstDayOfMonth/test.ts
new file mode 100644
index 0000000..29c5476
--- /dev/null
+++ b/date-fns/src/isFirstDayOfMonth/test.ts
@@ -0,0 +1,32 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import isFirstDayOfMonth from '.'
+
+describe('isFirstDayOfMonth', function() {
+ it('returns true if the given date is in the last day of month', function() {
+ const result = isFirstDayOfMonth(new Date(2014, 9 /* Oct */, 1))
+ assert(result === true)
+ })
+
+ it('returns false if the given date is not in the last day of month', function() {
+ const result = isFirstDayOfMonth(new Date(2014, 9 /* Oct */, 2))
+ assert(result === false)
+ })
+
+ it('accepts a timestamp', function() {
+ const date = new Date(2014, 9 /* Oct */, 1).getTime()
+ const result = isFirstDayOfMonth(date)
+ assert(result === true)
+ })
+
+ it('returns false if the given date is `Invalid Date`', function() {
+ const result = isFirstDayOfMonth(new Date(NaN))
+ assert(result === false)
+ })
+
+ it('throws TypeError exception if passed less than 1 argument', function() {
+ assert.throws(isFirstDayOfMonth.bind(null), TypeError)
+ })
+})
diff --git a/date-fns/src/isFriday/benchmark.js b/date-fns/src/isFriday/benchmark.js
new file mode 100644
index 0000000..edeab4d
--- /dev/null
+++ b/date-fns/src/isFriday/benchmark.js
@@ -0,0 +1,15 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import isFriday from '.'
+
+suite('isFriday', function () {
+ benchmark('date-fns', function () {
+ return isFriday(this.date)
+ })
+}, {
+ setup: function () {
+ this.date = new Date()
+ }
+})
diff --git a/date-fns/src/isFriday/index.d.ts b/date-fns/src/isFriday/index.d.ts
new file mode 100644
index 0000000..17ac2ef
--- /dev/null
+++ b/date-fns/src/isFriday/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { isFriday } from 'date-fns'
+export default isFriday
diff --git a/date-fns/src/isFriday/index.js.flow b/date-fns/src/isFriday/index.js.flow
new file mode 100644
index 0000000..d3f01ee
--- /dev/null
+++ b/date-fns/src/isFriday/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (date: Date | number) => boolean
diff --git a/date-fns/src/isFriday/index.ts b/date-fns/src/isFriday/index.ts
new file mode 100644
index 0000000..9194a2e
--- /dev/null
+++ b/date-fns/src/isFriday/index.ts
@@ -0,0 +1,29 @@
+import toDate from '../toDate/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name isFriday
+ * @category Weekday Helpers
+ * @summary Is the given date Friday?
+ *
+ * @description
+ * Is the given date Friday?
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} date - the date to check
+ * @returns {Boolean} the date is Friday
+ * @throws {TypeError} 1 argument required
+ *
+ * @example
+ * // Is 26 September 2014 Friday?
+ * var result = isFriday(new Date(2014, 8, 26))
+ * //=> true
+ */
+export default function isFriday(dirtyDate: Date | number): boolean {
+ requiredArgs(1, arguments)
+
+ return toDate(dirtyDate).getDay() === 5
+}
diff --git a/date-fns/src/isFriday/test.ts b/date-fns/src/isFriday/test.ts
new file mode 100644
index 0000000..3eae119
--- /dev/null
+++ b/date-fns/src/isFriday/test.ts
@@ -0,0 +1,31 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import isFriday from '.'
+
+describe('isFriday', function() {
+ it('returns true if the given date is Friday', function() {
+ const result = isFriday(new Date(2014, 8 /* Sep */, 26))
+ assert(result === true)
+ })
+
+ it('returns false if the given date is not Friday', function() {
+ const result = isFriday(new Date(2014, 8 /* Sep */, 25))
+ assert(result === false)
+ })
+
+ it('accepts a timestamp', function() {
+ const result = isFriday(new Date(2014, 1 /* Feb */, 14).getTime())
+ assert(result === true)
+ })
+
+ it('returns false if the given date is `Invalid Date`', function() {
+ const result = isFriday(new Date(NaN))
+ assert(result === false)
+ })
+
+ it('throws TypeError exception if passed less than 1 argument', function() {
+ assert.throws(isFriday.bind(null), TypeError)
+ })
+})
diff --git a/date-fns/src/isFuture/benchmark.js b/date-fns/src/isFuture/benchmark.js
new file mode 100644
index 0000000..d04fd1a
--- /dev/null
+++ b/date-fns/src/isFuture/benchmark.js
@@ -0,0 +1,19 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import isFuture from '.'
+
+suite(
+ 'isFuture',
+ () => {
+ benchmark('date-fns', function() {
+ return isFuture(this.date)
+ })
+ },
+ {
+ setup: function() {
+ this.date = new Date()
+ }
+ }
+)
diff --git a/date-fns/src/isFuture/index.d.ts b/date-fns/src/isFuture/index.d.ts
new file mode 100644
index 0000000..4cb82e8
--- /dev/null
+++ b/date-fns/src/isFuture/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { isFuture } from 'date-fns'
+export default isFuture
diff --git a/date-fns/src/isFuture/index.js.flow b/date-fns/src/isFuture/index.js.flow
new file mode 100644
index 0000000..d3f01ee
--- /dev/null
+++ b/date-fns/src/isFuture/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (date: Date | number) => boolean
diff --git a/date-fns/src/isFuture/index.ts b/date-fns/src/isFuture/index.ts
new file mode 100644
index 0000000..16ba1c9
--- /dev/null
+++ b/date-fns/src/isFuture/index.ts
@@ -0,0 +1,33 @@
+import toDate from '../toDate/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name isFuture
+ * @category Common Helpers
+ * @summary Is the given date in the future?
+ * @pure false
+ *
+ * @description
+ * Is the given date in the future?
+ *
+ * > ⚠️ Please note that this function is not present in the FP submodule as
+ * > it uses `Date.now()` internally hence impure and can't be safely curried.
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} date - the date to check
+ * @returns {Boolean} the date is in the future
+ * @throws {TypeError} 1 argument required
+ *
+ * @example
+ * // If today is 6 October 2014, is 31 December 2014 in the future?
+ * var result = isFuture(new Date(2014, 11, 31))
+ * //=> true
+ */
+export default function isFuture(dirtyDate: Date | number): boolean {
+ requiredArgs(1, arguments)
+
+ return toDate(dirtyDate).getTime() > Date.now()
+}
diff --git a/date-fns/src/isFuture/test.ts b/date-fns/src/isFuture/test.ts
new file mode 100644
index 0000000..bec205f
--- /dev/null
+++ b/date-fns/src/isFuture/test.ts
@@ -0,0 +1,41 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import sinon from 'sinon'
+import isFuture from '.'
+
+describe('isFuture', () => {
+ let clock: sinon.SinonFakeTimers
+ beforeEach(() => {
+ clock = sinon.useFakeTimers(new Date(2014, 8 /* Sep */, 25).getTime())
+ })
+
+ afterEach(() => {
+ clock.restore()
+ })
+
+ it('returns true if the given date is in the future', () => {
+ const result = isFuture(new Date(2014, 9 /* Oct */, 31))
+ assert(result === true)
+ })
+
+ it('returns false if the given date is in the past', () => {
+ const result = isFuture(new Date(2014, 8 /* Sep */, 1))
+ assert(result === false)
+ })
+
+ it('returns false if the given date is now', () => {
+ const result = isFuture(new Date(2014, 8 /* Sep */, 25))
+ assert(result === false)
+ })
+
+ it('accepts a timestamp', () => {
+ const result = isFuture(new Date(2014, 9 /* Oct */, 31).getTime())
+ assert(result === true)
+ })
+
+ it('throws TypeError exception if passed less than 1 argument', () => {
+ assert.throws(isFuture.bind(null), TypeError)
+ })
+})
diff --git a/date-fns/src/isLastDayOfMonth/benchmark.js b/date-fns/src/isLastDayOfMonth/benchmark.js
new file mode 100644
index 0000000..6ce43bc
--- /dev/null
+++ b/date-fns/src/isLastDayOfMonth/benchmark.js
@@ -0,0 +1,15 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import isLastDayOfMonth from '.'
+
+suite('isLastDayOfMonth', function () {
+ benchmark('date-fns', function () {
+ return isLastDayOfMonth(this.date)
+ })
+}, {
+ setup: function () {
+ this.date = new Date()
+ }
+})
diff --git a/date-fns/src/isLastDayOfMonth/index.d.ts b/date-fns/src/isLastDayOfMonth/index.d.ts
new file mode 100644
index 0000000..665cb7d
--- /dev/null
+++ b/date-fns/src/isLastDayOfMonth/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { isLastDayOfMonth } from 'date-fns'
+export default isLastDayOfMonth
diff --git a/date-fns/src/isLastDayOfMonth/index.js.flow b/date-fns/src/isLastDayOfMonth/index.js.flow
new file mode 100644
index 0000000..d3f01ee
--- /dev/null
+++ b/date-fns/src/isLastDayOfMonth/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (date: Date | number) => boolean
diff --git a/date-fns/src/isLastDayOfMonth/index.ts b/date-fns/src/isLastDayOfMonth/index.ts
new file mode 100644
index 0000000..d16fc18
--- /dev/null
+++ b/date-fns/src/isLastDayOfMonth/index.ts
@@ -0,0 +1,32 @@
+import toDate from '../toDate/index'
+import endOfDay from '../endOfDay/index'
+import endOfMonth from '../endOfMonth/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name isLastDayOfMonth
+ * @category Month Helpers
+ * @summary Is the given date the last day of a month?
+ *
+ * @description
+ * Is the given date the last day of a month?
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} date - the date to check
+ * @returns {Boolean} the date is the last day of a month
+ * @throws {TypeError} 1 argument required
+ *
+ * @example
+ * // Is 28 February 2014 the last day of a month?
+ * var result = isLastDayOfMonth(new Date(2014, 1, 28))
+ * //=> true
+ */
+export default function isLastDayOfMonth(dirtyDate: Date | number): boolean {
+ requiredArgs(1, arguments)
+
+ const date = toDate(dirtyDate)
+ return endOfDay(date).getTime() === endOfMonth(date).getTime()
+}
diff --git a/date-fns/src/isLastDayOfMonth/test.ts b/date-fns/src/isLastDayOfMonth/test.ts
new file mode 100644
index 0000000..4e20216
--- /dev/null
+++ b/date-fns/src/isLastDayOfMonth/test.ts
@@ -0,0 +1,32 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import isLastDayOfMonth from '.'
+
+describe('isLastDayOfMonth', function() {
+ it('returns true if the given date is in the last day of month', function() {
+ const result = isLastDayOfMonth(new Date(2014, 9 /* Oct */, 31))
+ assert(result === true)
+ })
+
+ it('returns false if the given date is not in the last day of month', function() {
+ const result = isLastDayOfMonth(new Date(2014, 9 /* Oct */, 30))
+ assert(result === false)
+ })
+
+ it('accepts a timestamp', function() {
+ var date = new Date(2014, 9 /* Oct */, 31).getTime()
+ const result = isLastDayOfMonth(date)
+ assert(result === true)
+ })
+
+ it('returns false if the given date is `Invalid Date`', function() {
+ const result = isLastDayOfMonth(new Date(NaN))
+ assert(result === false)
+ })
+
+ it('throws TypeError exception if passed less than 1 argument', function() {
+ assert.throws(isLastDayOfMonth.bind(null), TypeError)
+ })
+})
diff --git a/date-fns/src/isLeapYear/benchmark.js b/date-fns/src/isLeapYear/benchmark.js
new file mode 100644
index 0000000..ede4681
--- /dev/null
+++ b/date-fns/src/isLeapYear/benchmark.js
@@ -0,0 +1,21 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import isLeapYear from '.'
+import moment from 'moment'
+
+suite('isLeapYear', function () {
+ benchmark('date-fns', function () {
+ return isLeapYear(this.date)
+ })
+
+ benchmark('Moment.js', function () {
+ return this.moment.isLeapYear()
+ })
+}, {
+ setup: function () {
+ this.date = new Date()
+ this.moment = moment()
+ }
+})
diff --git a/date-fns/src/isLeapYear/index.d.ts b/date-fns/src/isLeapYear/index.d.ts
new file mode 100644
index 0000000..c08ad8a
--- /dev/null
+++ b/date-fns/src/isLeapYear/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { isLeapYear } from 'date-fns'
+export default isLeapYear
diff --git a/date-fns/src/isLeapYear/index.js.flow b/date-fns/src/isLeapYear/index.js.flow
new file mode 100644
index 0000000..d3f01ee
--- /dev/null
+++ b/date-fns/src/isLeapYear/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (date: Date | number) => boolean
diff --git a/date-fns/src/isLeapYear/index.ts b/date-fns/src/isLeapYear/index.ts
new file mode 100644
index 0000000..e3a0a27
--- /dev/null
+++ b/date-fns/src/isLeapYear/index.ts
@@ -0,0 +1,31 @@
+import toDate from '../toDate/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name isLeapYear
+ * @category Year Helpers
+ * @summary Is the given date in the leap year?
+ *
+ * @description
+ * Is the given date in the leap year?
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} date - the date to check
+ * @returns {Boolean} the date is in the leap year
+ * @throws {TypeError} 1 argument required
+ *
+ * @example
+ * // Is 1 September 2012 in the leap year?
+ * var result = isLeapYear(new Date(2012, 8, 1))
+ * //=> true
+ */
+export default function isLeapYear(dirtyDate: Date | number): boolean {
+ requiredArgs(1, arguments)
+
+ const date = toDate(dirtyDate)
+ const year = date.getFullYear()
+ return year % 400 === 0 || (year % 4 === 0 && year % 100 !== 0)
+}
diff --git a/date-fns/src/isLeapYear/test.ts b/date-fns/src/isLeapYear/test.ts
new file mode 100644
index 0000000..95f5cc5
--- /dev/null
+++ b/date-fns/src/isLeapYear/test.ts
@@ -0,0 +1,42 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import isLeapYear from '.'
+
+describe('isLeapYear', function() {
+ it('returns true if the given date is in the leap year', function() {
+ const result = isLeapYear(new Date(2012, 6 /* Jul */, 2))
+ assert(result === true)
+ })
+
+ it('returns false if the given date is not in the leap year', function() {
+ const result = isLeapYear(new Date(2014, 6 /* Jul */, 2))
+ assert(result === false)
+ })
+
+ it('works for the years divisible by 100 but not by 400', function() {
+ const result = isLeapYear(new Date(2100, 6 /* Jul */, 2))
+ assert(result === false)
+ })
+
+ it('works for the years divisible by 400', function() {
+ const result = isLeapYear(new Date(2000, 6 /* Jul */, 2))
+ assert(result === true)
+ })
+
+ it('accepts a timestamp', function() {
+ var date = new Date(2012, 6 /* Jul */, 2).getTime()
+ const result = isLeapYear(date)
+ assert(result === true)
+ })
+
+ it('returns false if the given date is `Invalid Date`', function() {
+ const result = isLeapYear(new Date(NaN))
+ assert(result === false)
+ })
+
+ it('throws TypeError exception if passed less than 1 argument', function() {
+ assert.throws(isLeapYear.bind(null), TypeError)
+ })
+})
diff --git a/date-fns/src/isMatch/index.d.ts b/date-fns/src/isMatch/index.d.ts
new file mode 100644
index 0000000..e0c3fa5
--- /dev/null
+++ b/date-fns/src/isMatch/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { isMatch } from 'date-fns'
+export default isMatch
diff --git a/date-fns/src/isMatch/index.js b/date-fns/src/isMatch/index.js
new file mode 100644
index 0000000..55caded
--- /dev/null
+++ b/date-fns/src/isMatch/index.js
@@ -0,0 +1,300 @@
+import parse from '../parse/index'
+import isValid from '../isValid/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name isMatch
+ * @category Common Helpers
+ * @summary validates the date string against given formats
+ *
+ * @description
+ * Return the true if given date is string correct against the given format else
+ * will return false.
+ *
+ * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.
+ * > See: https://git.io/fxCyr
+ *
+ * The characters in the format string wrapped between two single quotes characters (') are escaped.
+ * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.
+ *
+ * Format of the format string is based on Unicode Technical Standard #35:
+ * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table
+ * with a few additions (see note 5 below the table).
+ *
+ * Not all tokens are compatible. Combinations that don't make sense or could lead to bugs are prohibited
+ * and will throw `RangeError`. For example usage of 24-hour format token with AM/PM token will throw an exception:
+ *
+ * ```javascript
+ * isMatch('23 AM', 'HH a')
+ * //=> RangeError: The format string mustn't contain `HH` and `a` at the same time
+ * ```
+ *
+ * See the compatibility table: https://docs.google.com/spreadsheets/d/e/2PACX-1vQOPU3xUhplll6dyoMmVUXHKl_8CRDs6_ueLmex3SoqwhuolkuN3O05l4rqx5h1dKX8eb46Ul-CCSrq/pubhtml?gid=0&single=true
+ *
+ * Accepted format string patterns:
+ * | Unit |Prior| Pattern | Result examples | Notes |
+ * |---------------------------------|-----|---------|-----------------------------------|-------|
+ * | Era | 140 | G..GGG | AD, BC | |
+ * | | | GGGG | Anno Domini, Before Christ | 2 |
+ * | | | GGGGG | A, B | |
+ * | Calendar year | 130 | y | 44, 1, 1900, 2017, 9999 | 4 |
+ * | | | yo | 44th, 1st, 1900th, 9999999th | 4,5 |
+ * | | | yy | 44, 01, 00, 17 | 4 |
+ * | | | yyy | 044, 001, 123, 999 | 4 |
+ * | | | yyyy | 0044, 0001, 1900, 2017 | 4 |
+ * | | | yyyyy | ... | 2,4 |
+ * | Local week-numbering year | 130 | Y | 44, 1, 1900, 2017, 9000 | 4 |
+ * | | | Yo | 44th, 1st, 1900th, 9999999th | 4,5 |
+ * | | | YY | 44, 01, 00, 17 | 4,6 |
+ * | | | YYY | 044, 001, 123, 999 | 4 |
+ * | | | YYYY | 0044, 0001, 1900, 2017 | 4,6 |
+ * | | | YYYYY | ... | 2,4 |
+ * | ISO week-numbering year | 130 | R | -43, 1, 1900, 2017, 9999, -9999 | 4,5 |
+ * | | | RR | -43, 01, 00, 17 | 4,5 |
+ * | | | RRR | -043, 001, 123, 999, -999 | 4,5 |
+ * | | | RRRR | -0043, 0001, 2017, 9999, -9999 | 4,5 |
+ * | | | RRRRR | ... | 2,4,5 |
+ * | Extended year | 130 | u | -43, 1, 1900, 2017, 9999, -999 | 4 |
+ * | | | uu | -43, 01, 99, -99 | 4 |
+ * | | | uuu | -043, 001, 123, 999, -999 | 4 |
+ * | | | uuuu | -0043, 0001, 2017, 9999, -9999 | 4 |
+ * | | | uuuuu | ... | 2,4 |
+ * | Quarter (formatting) | 120 | Q | 1, 2, 3, 4 | |
+ * | | | Qo | 1st, 2nd, 3rd, 4th | 5 |
+ * | | | QQ | 01, 02, 03, 04 | |
+ * | | | QQQ | Q1, Q2, Q3, Q4 | |
+ * | | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |
+ * | | | QQQQQ | 1, 2, 3, 4 | 4 |
+ * | Quarter (stand-alone) | 120 | q | 1, 2, 3, 4 | |
+ * | | | qo | 1st, 2nd, 3rd, 4th | 5 |
+ * | | | qq | 01, 02, 03, 04 | |
+ * | | | qqq | Q1, Q2, Q3, Q4 | |
+ * | | | qqqq | 1st quarter, 2nd quarter, ... | 2 |
+ * | | | qqqqq | 1, 2, 3, 4 | 3 |
+ * | Month (formatting) | 110 | M | 1, 2, ..., 12 | |
+ * | | | Mo | 1st, 2nd, ..., 12th | 5 |
+ * | | | MM | 01, 02, ..., 12 | |
+ * | | | MMM | Jan, Feb, ..., Dec | |
+ * | | | MMMM | January, February, ..., December | 2 |
+ * | | | MMMMM | J, F, ..., D | |
+ * | Month (stand-alone) | 110 | L | 1, 2, ..., 12 | |
+ * | | | Lo | 1st, 2nd, ..., 12th | 5 |
+ * | | | LL | 01, 02, ..., 12 | |
+ * | | | LLL | Jan, Feb, ..., Dec | |
+ * | | | LLLL | January, February, ..., December | 2 |
+ * | | | LLLLL | J, F, ..., D | |
+ * | Local week of year | 100 | w | 1, 2, ..., 53 | |
+ * | | | wo | 1st, 2nd, ..., 53th | 5 |
+ * | | | ww | 01, 02, ..., 53 | |
+ * | ISO week of year | 100 | I | 1, 2, ..., 53 | 5 |
+ * | | | Io | 1st, 2nd, ..., 53th | 5 |
+ * | | | II | 01, 02, ..., 53 | 5 |
+ * | Day of month | 90 | d | 1, 2, ..., 31 | |
+ * | | | do | 1st, 2nd, ..., 31st | 5 |
+ * | | | dd | 01, 02, ..., 31 | |
+ * | Day of year | 90 | D | 1, 2, ..., 365, 366 | 7 |
+ * | | | Do | 1st, 2nd, ..., 365th, 366th | 5 |
+ * | | | DD | 01, 02, ..., 365, 366 | 7 |
+ * | | | DDD | 001, 002, ..., 365, 366 | |
+ * | | | DDDD | ... | 2 |
+ * | Day of week (formatting) | 90 | E..EEE | Mon, Tue, Wed, ..., Su | |
+ * | | | EEEE | Monday, Tuesday, ..., Sunday | 2 |
+ * | | | EEEEE | M, T, W, T, F, S, S | |
+ * | | | EEEEEE | Mo, Tu, We, Th, Fr, Su, Sa | |
+ * | ISO day of week (formatting) | 90 | i | 1, 2, 3, ..., 7 | 5 |
+ * | | | io | 1st, 2nd, ..., 7th | 5 |
+ * | | | ii | 01, 02, ..., 07 | 5 |
+ * | | | iii | Mon, Tue, Wed, ..., Su | 5 |
+ * | | | iiii | Monday, Tuesday, ..., Sunday | 2,5 |
+ * | | | iiiii | M, T, W, T, F, S, S | 5 |
+ * | | | iiiiii | Mo, Tu, We, Th, Fr, Su, Sa | 5 |
+ * | Local day of week (formatting) | 90 | e | 2, 3, 4, ..., 1 | |
+ * | | | eo | 2nd, 3rd, ..., 1st | 5 |
+ * | | | ee | 02, 03, ..., 01 | |
+ * | | | eee | Mon, Tue, Wed, ..., Su | |
+ * | | | eeee | Monday, Tuesday, ..., Sunday | 2 |
+ * | | | eeeee | M, T, W, T, F, S, S | |
+ * | | | eeeeee | Mo, Tu, We, Th, Fr, Su, Sa | |
+ * | Local day of week (stand-alone) | 90 | c | 2, 3, 4, ..., 1 | |
+ * | | | co | 2nd, 3rd, ..., 1st | 5 |
+ * | | | cc | 02, 03, ..., 01 | |
+ * | | | ccc | Mon, Tue, Wed, ..., Su | |
+ * | | | cccc | Monday, Tuesday, ..., Sunday | 2 |
+ * | | | ccccc | M, T, W, T, F, S, S | |
+ * | | | cccccc | Mo, Tu, We, Th, Fr, Su, Sa | |
+ * | AM, PM | 80 | a..aaa | AM, PM | |
+ * | | | aaaa | a.m., p.m. | 2 |
+ * | | | aaaaa | a, p | |
+ * | AM, PM, noon, midnight | 80 | b..bbb | AM, PM, noon, midnight | |
+ * | | | bbbb | a.m., p.m., noon, midnight | 2 |
+ * | | | bbbbb | a, p, n, mi | |
+ * | Flexible day period | 80 | B..BBB | at night, in the morning, ... | |
+ * | | | BBBB | at night, in the morning, ... | 2 |
+ * | | | BBBBB | at night, in the morning, ... | |
+ * | Hour [1-12] | 70 | h | 1, 2, ..., 11, 12 | |
+ * | | | ho | 1st, 2nd, ..., 11th, 12th | 5 |
+ * | | | hh | 01, 02, ..., 11, 12 | |
+ * | Hour [0-23] | 70 | H | 0, 1, 2, ..., 23 | |
+ * | | | Ho | 0th, 1st, 2nd, ..., 23rd | 5 |
+ * | | | HH | 00, 01, 02, ..., 23 | |
+ * | Hour [0-11] | 70 | K | 1, 2, ..., 11, 0 | |
+ * | | | Ko | 1st, 2nd, ..., 11th, 0th | 5 |
+ * | | | KK | 01, 02, ..., 11, 00 | |
+ * | Hour [1-24] | 70 | k | 24, 1, 2, ..., 23 | |
+ * | | | ko | 24th, 1st, 2nd, ..., 23rd | 5 |
+ * | | | kk | 24, 01, 02, ..., 23 | |
+ * | Minute | 60 | m | 0, 1, ..., 59 | |
+ * | | | mo | 0th, 1st, ..., 59th | 5 |
+ * | | | mm | 00, 01, ..., 59 | |
+ * | Second | 50 | s | 0, 1, ..., 59 | |
+ * | | | so | 0th, 1st, ..., 59th | 5 |
+ * | | | ss | 00, 01, ..., 59 | |
+ * | Seconds timestamp | 40 | t | 512969520 | |
+ * | | | tt | ... | 2 |
+ * | Fraction of second | 30 | S | 0, 1, ..., 9 | |
+ * | | | SS | 00, 01, ..., 99 | |
+ * | | | SSS | 000, 0001, ..., 999 | |
+ * | | | SSSS | ... | 2 |
+ * | Milliseconds timestamp | 20 | T | 512969520900 | |
+ * | | | TT | ... | 2 |
+ * | Timezone (ISO-8601 w/ Z) | 10 | X | -08, +0530, Z | |
+ * | | | XX | -0800, +0530, Z | |
+ * | | | XXX | -08:00, +05:30, Z | |
+ * | | | XXXX | -0800, +0530, Z, +123456 | 2 |
+ * | | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |
+ * | Timezone (ISO-8601 w/o Z) | 10 | x | -08, +0530, +00 | |
+ * | | | xx | -0800, +0530, +0000 | |
+ * | | | xxx | -08:00, +05:30, +00:00 | 2 |
+ * | | | xxxx | -0800, +0530, +0000, +123456 | |
+ * | | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |
+ * | Long localized date | NA | P | 05/29/1453 | 5,8 |
+ * | | | PP | May 29, 1453 | |
+ * | | | PPP | May 29th, 1453 | |
+ * | | | PPPP | Sunday, May 29th, 1453 | 2,5,8 |
+ * | Long localized time | NA | p | 12:00 AM | 5,8 |
+ * | | | pp | 12:00:00 AM | |
+ * | Combination of date and time | NA | Pp | 05/29/1453, 12:00 AM | |
+ * | | | PPpp | May 29, 1453, 12:00:00 AM | |
+ * | | | PPPpp | May 29th, 1453 at ... | |
+ * | | | PPPPpp | Sunday, May 29th, 1453 at ... | 2,5,8 |
+ * Notes:
+ * 1. "Formatting" units (e.g. formatting quarter) in the default en-US locale
+ * are the same as "stand-alone" units, but are different in some languages.
+ * "Formatting" units are declined according to the rules of the language
+ * in the context of a date. "Stand-alone" units are always nominative singular.
+ * In `format` function, they will produce different result:
+ *
+ * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`
+ *
+ * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`
+ *
+ * `isMatch` will try to match both formatting and stand-alone units interchangably.
+ *
+ * 2. Any sequence of the identical letters is a pattern, unless it is escaped by
+ * the single quote characters (see below).
+ * If the sequence is longer than listed in table:
+ * - for numerical units (`yyyyyyyy`) `isMatch` will try to match a number
+ * as wide as the sequence
+ * - for text units (`MMMMMMMM`) `isMatch` will try to match the widest variation of the unit.
+ * These variations are marked with "2" in the last column of the table.
+ *
+ * 3. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.
+ * These tokens represent the shortest form of the quarter.
+ *
+ * 4. The main difference between `y` and `u` patterns are B.C. years:
+ *
+ * | Year | `y` | `u` |
+ * |------|-----|-----|
+ * | AC 1 | 1 | 1 |
+ * | BC 1 | 1 | 0 |
+ * | BC 2 | 2 | -1 |
+ *
+ * Also `yy` will try to guess the century of two digit year by proximity with `referenceDate`:
+ *
+ * `isMatch('50', 'yy') //=> true`
+ *
+ * `isMatch('75', 'yy') //=> true`
+ *
+ * while `uu` will use the year as is:
+ *
+ * `isMatch('50', 'uu') //=> true`
+ *
+ * `isMatch('75', 'uu') //=> true`
+ *
+ * The same difference is true for local and ISO week-numbering years (`Y` and `R`),
+ * except local week-numbering years are dependent on `options.weekStartsOn`
+ * and `options.firstWeekContainsDate` (compare [setISOWeekYear]{@link https://date-fns.org/docs/setISOWeekYear}
+ * and [setWeekYear]{@link https://date-fns.org/docs/setWeekYear}).
+ *
+ * 5. These patterns are not in the Unicode Technical Standard #35:
+ * - `i`: ISO day of week
+ * - `I`: ISO week of year
+ * - `R`: ISO week-numbering year
+ * - `o`: ordinal number modifier
+ * - `P`: long localized date
+ * - `p`: long localized time
+ *
+ * 6. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.
+ * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://git.io/fxCyr
+ *
+ * 7. `D` and `DD` tokens represent days of the year but they are ofthen confused with days of the month.
+ * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://git.io/fxCyr
+ *
+ * 8. `P+` tokens do not have a defined priority since they are merely aliases to other tokens based
+ * on the given locale.
+ *
+ * using `en-US` locale: `P` => `MM/dd/yyyy`
+ * using `en-US` locale: `p` => `hh:mm a`
+ * using `pt-BR` locale: `P` => `dd/MM/yyyy`
+ * using `pt-BR` locale: `p` => `HH:mm`
+ *
+ * Values will be checked in the descending order of its unit's priority.
+ * Units of an equal priority overwrite each other in the order of appearance.
+ *
+ * If no values of higher priority are matched (e.g. when matching string 'January 1st' without a year),
+ * the values will be taken from today's using `new Date()` date which works as a context of parsing.
+ *
+ * The result may vary by locale.
+ *
+ * If `formatString` matches with `dateString` but does not provides tokens, `referenceDate` will be returned.
+ *
+ *
+ *
+ * @param {String} dateString - the date string to verify
+ * @param {String} formatString - the string of tokens
+ * @param {Object} [options] - an object with options.
+ * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}
+ * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)
+ * @param {1|2|3|4|5|6|7} [options.firstWeekContainsDate=1] - the day of January, which is always in the first week of the year
+ * @param {Boolean} [options.useAdditionalWeekYearTokens=false] - if true, allows usage of the week-numbering year tokens `YY` and `YYYY`;
+ * see: https://git.io/fxCyr
+ * @param {Boolean} [options.useAdditionalDayOfYearTokens=false] - if true, allows usage of the day of year tokens `D` and `DD`;
+ * see: https://git.io/fxCyr
+ * @returns {Boolean}
+ * @throws {TypeError} 2 arguments required
+ * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6
+ * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7
+ * @throws {RangeError} `options.locale` must contain `match` property
+ * @throws {RangeError} use `yyyy` instead of `YYYY` for formatting years; see: https://git.io/fxCyr
+ * @throws {RangeError} use `yy` instead of `YY` for formatting years; see: https://git.io/fxCyr
+ * @throws {RangeError} use `d` instead of `D` for formatting days of the month; see: https://git.io/fxCyr
+ * @throws {RangeError} use `dd` instead of `DD` for formatting days of the month; see: https://git.io/fxCyr
+ * @throws {RangeError} format string contains an unescaped latin alphabet character
+ *
+ * @example
+ * // Match 11 February 2014 from middle-endian format:
+ * var result = isMatch('02/11/2014', 'MM/dd/yyyy')
+ * //=> true
+ *
+ * @example
+ * // Match 28th of February in Esperanto locale in the context of 2010 year:
+ * import eo from 'date-fns/locale/eo'
+ * var result = isMatch('28-a de februaro', "do 'de' MMMM", {
+ * locale: eo
+ * })
+ * //=> true
+ */
+export default function isMatch(dateString, formatString, dirtyOptions) {
+ requiredArgs(2, arguments)
+ return isValid(parse(dateString, formatString, new Date(), dirtyOptions))
+}
diff --git a/date-fns/src/isMatch/index.js.flow b/date-fns/src/isMatch/index.js.flow
new file mode 100644
index 0000000..c27d35a
--- /dev/null
+++ b/date-fns/src/isMatch/index.js.flow
@@ -0,0 +1,62 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (
+ dateString: string,
+ formatString: string,
+ options?: {
+ locale?: Locale,
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ useAdditionalWeekYearTokens?: boolean,
+ useAdditionalDayOfYearTokens?: boolean,
+ }
+) => boolean
diff --git a/date-fns/src/isMatch/test.js b/date-fns/src/isMatch/test.js
new file mode 100644
index 0000000..dfe6e10
--- /dev/null
+++ b/date-fns/src/isMatch/test.js
@@ -0,0 +1,24 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import isMatch from '.'
+import eo from '../locale/eo'
+
+describe('isMatch', function() {
+ it('accepts a dd-MM-yyyy format against 22-02-1998', function() {
+ assert(isMatch('22-02-1998', 'dd-MM-yyyy'))
+ })
+
+ it('reject a yyyy-dd-MM format against 22-02-1998', function() {
+ assert(!isMatch('22-02-1998', 'yyyy-dd-MM'))
+ })
+
+ it('accepts a date & format with locale', function() {
+ assert(
+ isMatch('28-a de februaro', "do 'de' MMMM", {
+ locale: eo
+ })
+ )
+ })
+})
diff --git a/date-fns/src/isMonday/benchmark.js b/date-fns/src/isMonday/benchmark.js
new file mode 100644
index 0000000..590451b
--- /dev/null
+++ b/date-fns/src/isMonday/benchmark.js
@@ -0,0 +1,15 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import isMonday from '.'
+
+suite('isMonday', function () {
+ benchmark('date-fns', function () {
+ return isMonday(this.date)
+ })
+}, {
+ setup: function () {
+ this.date = new Date()
+ }
+})
diff --git a/date-fns/src/isMonday/index.d.ts b/date-fns/src/isMonday/index.d.ts
new file mode 100644
index 0000000..dee60ac
--- /dev/null
+++ b/date-fns/src/isMonday/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { isMonday } from 'date-fns'
+export default isMonday
diff --git a/date-fns/src/isMonday/index.js.flow b/date-fns/src/isMonday/index.js.flow
new file mode 100644
index 0000000..d3f01ee
--- /dev/null
+++ b/date-fns/src/isMonday/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (date: Date | number) => boolean
diff --git a/date-fns/src/isMonday/index.ts b/date-fns/src/isMonday/index.ts
new file mode 100644
index 0000000..95241d5
--- /dev/null
+++ b/date-fns/src/isMonday/index.ts
@@ -0,0 +1,29 @@
+import toDate from '../toDate/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name isMonday
+ * @category Weekday Helpers
+ * @summary Is the given date Monday?
+ *
+ * @description
+ * Is the given date Monday?
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} date - the date to check
+ * @returns {Boolean} the date is Monday
+ * @throws {TypeError} 1 argument required
+ *
+ * @example
+ * // Is 22 September 2014 Monday?
+ * var result = isMonday(new Date(2014, 8, 22))
+ * //=> true
+ */
+export default function isMonday(date: Date | number): boolean {
+ requiredArgs(1, arguments)
+
+ return toDate(date).getDay() === 1
+}
diff --git a/date-fns/src/isMonday/test.ts b/date-fns/src/isMonday/test.ts
new file mode 100644
index 0000000..72eac8f
--- /dev/null
+++ b/date-fns/src/isMonday/test.ts
@@ -0,0 +1,31 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import isMonday from '.'
+
+describe('isMonday', function() {
+ it('returns true if the given date is Monday', function() {
+ const result = isMonday(new Date(2014, 8 /* Sep */, 22))
+ assert(result === true)
+ })
+
+ it('returns false if the given date is not Monday', function() {
+ const result = isMonday(new Date(2014, 8 /* Sep */, 25))
+ assert(result === false)
+ })
+
+ it('accepts a timestamp', function() {
+ const result = isMonday(new Date(2014, 1 /* Feb */, 10).getTime())
+ assert(result === true)
+ })
+
+ it('returns false if the given date is `Invalid Date`', function() {
+ const result = isMonday(new Date(NaN))
+ assert(result === false)
+ })
+
+ it('throws TypeError exception if passed less than 1 argument', function() {
+ assert.throws(isMonday.bind(null), TypeError)
+ })
+})
diff --git a/date-fns/src/isPast/benchmark.js b/date-fns/src/isPast/benchmark.js
new file mode 100644
index 0000000..d5403bd
--- /dev/null
+++ b/date-fns/src/isPast/benchmark.js
@@ -0,0 +1,19 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import isPast from '.'
+
+suite(
+ 'isPast',
+ () => {
+ benchmark('date-fns', function() {
+ return isPast(this.date)
+ })
+ },
+ {
+ setup: function() {
+ this.date = new Date()
+ }
+ }
+)
diff --git a/date-fns/src/isPast/index.d.ts b/date-fns/src/isPast/index.d.ts
new file mode 100644
index 0000000..8ae92ca
--- /dev/null
+++ b/date-fns/src/isPast/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { isPast } from 'date-fns'
+export default isPast
diff --git a/date-fns/src/isPast/index.js.flow b/date-fns/src/isPast/index.js.flow
new file mode 100644
index 0000000..d3f01ee
--- /dev/null
+++ b/date-fns/src/isPast/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (date: Date | number) => boolean
diff --git a/date-fns/src/isPast/index.ts b/date-fns/src/isPast/index.ts
new file mode 100644
index 0000000..b0c251e
--- /dev/null
+++ b/date-fns/src/isPast/index.ts
@@ -0,0 +1,33 @@
+import toDate from '../toDate/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name isPast
+ * @category Common Helpers
+ * @summary Is the given date in the past?
+ * @pure false
+ *
+ * @description
+ * Is the given date in the past?
+ *
+ * > ⚠️ Please note that this function is not present in the FP submodule as
+ * > it uses `Date.now()` internally hence impure and can't be safely curried.
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} date - the date to check
+ * @returns {Boolean} the date is in the past
+ * @throws {TypeError} 1 argument required
+ *
+ * @example
+ * // If today is 6 October 2014, is 2 July 2014 in the past?
+ * var result = isPast(new Date(2014, 6, 2))
+ * //=> true
+ */
+export default function isPast(dirtyDate: Date | number): boolean {
+ requiredArgs(1, arguments)
+
+ return toDate(dirtyDate).getTime() < Date.now()
+}
diff --git a/date-fns/src/isPast/test.ts b/date-fns/src/isPast/test.ts
new file mode 100644
index 0000000..eb3a947
--- /dev/null
+++ b/date-fns/src/isPast/test.ts
@@ -0,0 +1,42 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'assert'
+import sinon from 'sinon'
+import isPast from '.'
+
+describe('isPast', () => {
+ let clock: sinon.SinonFakeTimers
+ beforeEach(() => {
+ clock = sinon.useFakeTimers(new Date(2014, 8 /* Sep */, 25).getTime())
+ })
+
+ afterEach(() => {
+ clock.restore()
+ })
+
+ it('returns true if the given date is in the past', () => {
+ const result = isPast(new Date(2014, 6 /* Jul */, 2))
+ assert(result === true)
+ })
+
+ it('returns false if the given date is in the future', () => {
+ const result = isPast(new Date(2014, 11 /* Dec */, 31))
+ assert(result === false)
+ })
+
+ it('returns false if the given date is now', () => {
+ const result = isPast(new Date(2014, 8 /* Sep */, 25))
+ assert(result === false)
+ })
+
+ it('accepts a timestamp', () => {
+ const result = isPast(new Date(2014, 6 /* Jul */, 2).getTime())
+ assert(result === true)
+ })
+
+ it('throws TypeError exception if passed less than 1 argument', () => {
+ // @ts-expect-error
+ assert.throws(isPast.bind(null), TypeError)
+ })
+})
diff --git a/date-fns/src/isSameDay/benchmark.js b/date-fns/src/isSameDay/benchmark.js
new file mode 100644
index 0000000..d68232f
--- /dev/null
+++ b/date-fns/src/isSameDay/benchmark.js
@@ -0,0 +1,23 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import isSameDay from '.'
+import moment from 'moment'
+
+suite('isSameDay', function () {
+ benchmark('date-fns', function () {
+ return isSameDay(this.dateA, this.dateB)
+ })
+
+ benchmark('Moment.js', function () {
+ return this.momentA.isSame(this.momentB, 'day')
+ })
+}, {
+ setup: function () {
+ this.dateA = new Date()
+ this.momentA = moment()
+ this.dateB = new Date(this.dateA.getTime() + 604800000)
+ this.momentB = this.momentA.clone().add(7, 'days')
+ }
+})
diff --git a/date-fns/src/isSameDay/index.d.ts b/date-fns/src/isSameDay/index.d.ts
new file mode 100644
index 0000000..c4c2d55
--- /dev/null
+++ b/date-fns/src/isSameDay/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { isSameDay } from 'date-fns'
+export default isSameDay
diff --git a/date-fns/src/isSameDay/index.js.flow b/date-fns/src/isSameDay/index.js.flow
new file mode 100644
index 0000000..55ea578
--- /dev/null
+++ b/date-fns/src/isSameDay/index.js.flow
@@ -0,0 +1,55 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (
+ dateLeft: Date | number,
+ dateRight: Date | number
+) => boolean
diff --git a/date-fns/src/isSameDay/index.ts b/date-fns/src/isSameDay/index.ts
new file mode 100644
index 0000000..6b42679
--- /dev/null
+++ b/date-fns/src/isSameDay/index.ts
@@ -0,0 +1,33 @@
+import startOfDay from '../startOfDay/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name isSameDay
+ * @category Day Helpers
+ * @summary Are the given dates in the same day?
+ *
+ * @description
+ * Are the given dates in the same day?
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} dateLeft - the first date to check
+ * @param {Date|Number} dateRight - the second date to check
+ * @returns {Boolean} the dates are in the same day
+ * @throws {TypeError} 2 arguments required
+ *
+ * @example
+ * // Are 4 September 06:00:00 and 4 September 18:00:00 in the same day?
+ * var result = isSameDay(new Date(2014, 8, 4, 6, 0), new Date(2014, 8, 4, 18, 0))
+ * //=> true
+ */
+export default function isSameDay(dirtyDateLeft: Date | number, dirtyDateRight: Date | number): boolean {
+ requiredArgs(2, arguments)
+
+ const dateLeftStartOfDay = startOfDay(dirtyDateLeft)
+ const dateRightStartOfDay = startOfDay(dirtyDateRight)
+
+ return dateLeftStartOfDay.getTime() === dateRightStartOfDay.getTime()
+}
diff --git a/date-fns/src/isSameDay/test.ts b/date-fns/src/isSameDay/test.ts
new file mode 100644
index 0000000..ff90d55
--- /dev/null
+++ b/date-fns/src/isSameDay/test.ts
@@ -0,0 +1,51 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import isSameDay from '.'
+
+describe('isSameDay', function() {
+ it('returns true if the given dates have the same day', function() {
+ const result = isSameDay(
+ new Date(2014, 8 /* Sep */, 4, 6, 0),
+ new Date(2014, 8 /* Sep */, 4, 18, 0)
+ )
+ assert(result === true)
+ })
+
+ it('returns false if the given dates have different days', function() {
+ const result = isSameDay(
+ new Date(2014, 8 /* Sep */, 4, 23, 59),
+ new Date(2014, 8 /* Sep */, 5, 0, 0)
+ )
+ assert(result === false)
+ })
+
+ it('accepts a timestamp', function() {
+ const result = isSameDay(
+ new Date(2014, 8 /* Sep */, 4, 6, 0).getTime(),
+ new Date(2014, 8 /* Sep */, 4, 18, 0).getTime()
+ )
+ assert(result === true)
+ })
+
+ it('returns false if the first date is `Invalid Date`', function() {
+ const result = isSameDay(new Date(NaN), new Date(1989, 6 /* Jul */, 10))
+ assert(result === false)
+ })
+
+ it('returns false if the second date is `Invalid Date`', function() {
+ const result = isSameDay(new Date(1987, 1 /* Feb */, 11), new Date(NaN))
+ assert(result === false)
+ })
+
+ it('returns false if the both dates are `Invalid Date`', function() {
+ const result = isSameDay(new Date(NaN), new Date(NaN))
+ assert(result === false)
+ })
+
+ it('throws TypeError exception if passed less than 2 arguments', function() {
+ assert.throws(isSameDay.bind(null), TypeError)
+ assert.throws(isSameDay.bind(null, 1), TypeError)
+ })
+})
diff --git a/date-fns/src/isSameHour/benchmark.js b/date-fns/src/isSameHour/benchmark.js
new file mode 100644
index 0000000..c21d8c1
--- /dev/null
+++ b/date-fns/src/isSameHour/benchmark.js
@@ -0,0 +1,23 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import isSameHour from '.'
+import moment from 'moment'
+
+suite('isSameHour', function () {
+ benchmark('date-fns', function () {
+ return isSameHour(this.dateA, this.dateB)
+ })
+
+ benchmark('Moment.js', function () {
+ return this.momentA.isSame(this.momentB, 'hour')
+ })
+}, {
+ setup: function () {
+ this.dateA = new Date()
+ this.momentA = moment()
+ this.dateB = new Date(this.dateA.getTime() + 604800000)
+ this.momentB = this.momentA.clone().add(7, 'days')
+ }
+})
diff --git a/date-fns/src/isSameHour/index.d.ts b/date-fns/src/isSameHour/index.d.ts
new file mode 100644
index 0000000..78d4662
--- /dev/null
+++ b/date-fns/src/isSameHour/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { isSameHour } from 'date-fns'
+export default isSameHour
diff --git a/date-fns/src/isSameHour/index.js.flow b/date-fns/src/isSameHour/index.js.flow
new file mode 100644
index 0000000..55ea578
--- /dev/null
+++ b/date-fns/src/isSameHour/index.js.flow
@@ -0,0 +1,55 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (
+ dateLeft: Date | number,
+ dateRight: Date | number
+) => boolean
diff --git a/date-fns/src/isSameHour/index.ts b/date-fns/src/isSameHour/index.ts
new file mode 100644
index 0000000..d6e362e
--- /dev/null
+++ b/date-fns/src/isSameHour/index.ts
@@ -0,0 +1,33 @@
+import startOfHour from '../startOfHour/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name isSameHour
+ * @category Hour Helpers
+ * @summary Are the given dates in the same hour?
+ *
+ * @description
+ * Are the given dates in the same hour?
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} dateLeft - the first date to check
+ * @param {Date|Number} dateRight - the second date to check
+ * @returns {Boolean} the dates are in the same hour
+ * @throws {TypeError} 2 arguments required
+ *
+ * @example
+ * // Are 4 September 2014 06:00:00 and 4 September 06:30:00 in the same hour?
+ * var result = isSameHour(new Date(2014, 8, 4, 6, 0), new Date(2014, 8, 4, 6, 30))
+ * //=> true
+ */
+export default function isSameHour(dirtyDateLeft: Date | number, dirtyDateRight: Date | number): boolean {
+ requiredArgs(2, arguments)
+
+ const dateLeftStartOfHour = startOfHour(dirtyDateLeft)
+ const dateRightStartOfHour = startOfHour(dirtyDateRight)
+
+ return dateLeftStartOfHour.getTime() === dateRightStartOfHour.getTime()
+}
diff --git a/date-fns/src/isSameHour/test.ts b/date-fns/src/isSameHour/test.ts
new file mode 100644
index 0000000..dbbe3e2
--- /dev/null
+++ b/date-fns/src/isSameHour/test.ts
@@ -0,0 +1,51 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import isSameHour from '.'
+
+describe('isSameHour', function() {
+ it('returns true if the given dates have the same hour', function() {
+ const result = isSameHour(
+ new Date(2014, 8 /* Sep */, 4, 6, 0),
+ new Date(2014, 8 /* Sep */, 4, 6, 30)
+ )
+ assert(result === true)
+ })
+
+ it('returns false if the given dates have different hours', function() {
+ const result = isSameHour(
+ new Date(2014, 8 /* Sep */, 4, 6, 0),
+ new Date(2014, 8 /* Sep */, 4, 5, 0)
+ )
+ assert(result === false)
+ })
+
+ it('accepts a timestamp', function() {
+ const result = isSameHour(
+ new Date(2014, 8 /* Sep */, 4, 18, 0).getTime(),
+ new Date(2014, 8 /* Sep */, 4, 18, 45).getTime()
+ )
+ assert(result === true)
+ })
+
+ it('returns false if the first date is `Invalid Date`', function() {
+ const result = isSameHour(new Date(NaN), new Date(1989, 6 /* Jul */, 10))
+ assert(result === false)
+ })
+
+ it('returns false if the second date is `Invalid Date`', function() {
+ const result = isSameHour(new Date(1987, 1 /* Feb */, 11), new Date(NaN))
+ assert(result === false)
+ })
+
+ it('returns false if the both dates are `Invalid Date`', function() {
+ const result = isSameHour(new Date(NaN), new Date(NaN))
+ assert(result === false)
+ })
+
+ it('throws TypeError exception if passed less than 2 arguments', function() {
+ assert.throws(isSameHour.bind(null), TypeError)
+ assert.throws(isSameHour.bind(null, 1), TypeError)
+ })
+})
diff --git a/date-fns/src/isSameISOWeek/benchmark.js b/date-fns/src/isSameISOWeek/benchmark.js
new file mode 100644
index 0000000..51b9a1f
--- /dev/null
+++ b/date-fns/src/isSameISOWeek/benchmark.js
@@ -0,0 +1,16 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import isSameISOWeek from '.'
+
+suite('isSameISOWeek', function () {
+ benchmark('date-fns', function () {
+ return isSameISOWeek(this.dateA, this.dateB)
+ })
+}, {
+ setup: function () {
+ this.dateA = new Date()
+ this.dateB = new Date(this.dateA.getTime() + 604800000)
+ }
+})
diff --git a/date-fns/src/isSameISOWeek/index.d.ts b/date-fns/src/isSameISOWeek/index.d.ts
new file mode 100644
index 0000000..566ed8b
--- /dev/null
+++ b/date-fns/src/isSameISOWeek/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { isSameISOWeek } from 'date-fns'
+export default isSameISOWeek
diff --git a/date-fns/src/isSameISOWeek/index.js.flow b/date-fns/src/isSameISOWeek/index.js.flow
new file mode 100644
index 0000000..55ea578
--- /dev/null
+++ b/date-fns/src/isSameISOWeek/index.js.flow
@@ -0,0 +1,55 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (
+ dateLeft: Date | number,
+ dateRight: Date | number
+) => boolean
diff --git a/date-fns/src/isSameISOWeek/index.ts b/date-fns/src/isSameISOWeek/index.ts
new file mode 100644
index 0000000..0643dd9
--- /dev/null
+++ b/date-fns/src/isSameISOWeek/index.ts
@@ -0,0 +1,32 @@
+import isSameWeek from '../isSameWeek/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name isSameISOWeek
+ * @category ISO Week Helpers
+ * @summary Are the given dates in the same ISO week?
+ *
+ * @description
+ * Are the given dates in the same ISO week?
+ *
+ * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} dateLeft - the first date to check
+ * @param {Date|Number} dateRight - the second date to check
+ * @returns {Boolean} the dates are in the same ISO week
+ * @throws {TypeError} 2 arguments required
+ *
+ * @example
+ * // Are 1 September 2014 and 7 September 2014 in the same ISO week?
+ * var result = isSameISOWeek(new Date(2014, 8, 1), new Date(2014, 8, 7))
+ * //=> true
+ */
+export default function isSameISOWeek(dirtyDateLeft: Date | number, dirtyDateRight: Date | number): boolean {
+ requiredArgs(2, arguments)
+
+ return isSameWeek(dirtyDateLeft, dirtyDateRight, { weekStartsOn: 1 })
+}
diff --git a/date-fns/src/isSameISOWeek/test.ts b/date-fns/src/isSameISOWeek/test.ts
new file mode 100644
index 0000000..a1877ff
--- /dev/null
+++ b/date-fns/src/isSameISOWeek/test.ts
@@ -0,0 +1,51 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import isSameISOWeek from '.'
+
+describe('isSameISOWeek', function() {
+ it('returns true if the given dates have the same ISO week', function() {
+ const result = isSameISOWeek(
+ new Date(2014, 8 /* Sep */, 1),
+ new Date(2014, 8 /* Sep */, 7)
+ )
+ assert(result === true)
+ })
+
+ it('returns false if the given dates have different ISO weeks', function() {
+ const result = isSameISOWeek(
+ new Date(2014, 8 /* Sep */, 1),
+ new Date(2014, 8 /* Sep */, 14)
+ )
+ assert(result === false)
+ })
+
+ it('accepts a timestamp', function() {
+ const result = isSameISOWeek(
+ new Date(2014, 5 /* Jun */, 30).getTime(),
+ new Date(2014, 6 /* Jul */, 2).getTime()
+ )
+ assert(result === true)
+ })
+
+ it('returns false if the first date is `Invalid Date`', function() {
+ const result = isSameISOWeek(new Date(NaN), new Date(1989, 6 /* Jul */, 10))
+ assert(result === false)
+ })
+
+ it('returns false if the second date is `Invalid Date`', function() {
+ const result = isSameISOWeek(new Date(1987, 1 /* Feb */, 11), new Date(NaN))
+ assert(result === false)
+ })
+
+ it('returns false if the both dates are `Invalid Date`', function() {
+ const result = isSameISOWeek(new Date(NaN), new Date(NaN))
+ assert(result === false)
+ })
+
+ it('throws TypeError exception if passed less than 2 arguments', function() {
+ assert.throws(isSameISOWeek.bind(null), TypeError)
+ assert.throws(isSameISOWeek.bind(null, 1), TypeError)
+ })
+})
diff --git a/date-fns/src/isSameISOWeekYear/benchmark.js b/date-fns/src/isSameISOWeekYear/benchmark.js
new file mode 100644
index 0000000..ca906f6
--- /dev/null
+++ b/date-fns/src/isSameISOWeekYear/benchmark.js
@@ -0,0 +1,16 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import isSameISOWeekYear from '.'
+
+suite('isSameISOWeekYear', function () {
+ benchmark('date-fns', function () {
+ return isSameISOWeekYear(this.dateA, this.dateB)
+ })
+}, {
+ setup: function () {
+ this.dateA = new Date()
+ this.dateB = new Date(this.dateA.getTime() + 604800000)
+ }
+})
diff --git a/date-fns/src/isSameISOWeekYear/index.d.ts b/date-fns/src/isSameISOWeekYear/index.d.ts
new file mode 100644
index 0000000..e796092
--- /dev/null
+++ b/date-fns/src/isSameISOWeekYear/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { isSameISOWeekYear } from 'date-fns'
+export default isSameISOWeekYear
diff --git a/date-fns/src/isSameISOWeekYear/index.js.flow b/date-fns/src/isSameISOWeekYear/index.js.flow
new file mode 100644
index 0000000..55ea578
--- /dev/null
+++ b/date-fns/src/isSameISOWeekYear/index.js.flow
@@ -0,0 +1,55 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (
+ dateLeft: Date | number,
+ dateRight: Date | number
+) => boolean
diff --git a/date-fns/src/isSameISOWeekYear/index.ts b/date-fns/src/isSameISOWeekYear/index.ts
new file mode 100644
index 0000000..bd82edf
--- /dev/null
+++ b/date-fns/src/isSameISOWeekYear/index.ts
@@ -0,0 +1,40 @@
+import startOfISOWeekYear from '../startOfISOWeekYear/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name isSameISOWeekYear
+ * @category ISO Week-Numbering Year Helpers
+ * @summary Are the given dates in the same ISO week-numbering year?
+ *
+ * @description
+ * Are the given dates in the same ISO week-numbering year?
+ *
+ * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * - The function was renamed from `isSameISOYear` to `isSameISOWeekYear`.
+ * "ISO week year" is short for [ISO week-numbering year](https://en.wikipedia.org/wiki/ISO_week_date).
+ * This change makes the name consistent with
+ * locale-dependent week-numbering year helpers, e.g., `getWeekYear`.
+ *
+ * @param {Date|Number} dateLeft - the first date to check
+ * @param {Date|Number} dateRight - the second date to check
+ * @returns {Boolean} the dates are in the same ISO week-numbering year
+ * @throws {TypeError} 2 arguments required
+ *
+ * @example
+ * // Are 29 December 2003 and 2 January 2005 in the same ISO week-numbering year?
+ * var result = isSameISOWeekYear(new Date(2003, 11, 29), new Date(2005, 0, 2))
+ * //=> true
+ */
+export default function isSameISOWeekYear(dirtyDateLeft: Date | number, dirtyDateRight: Date | number): boolean {
+ requiredArgs(2, arguments)
+
+ const dateLeftStartOfYear = startOfISOWeekYear(dirtyDateLeft)
+ const dateRightStartOfYear = startOfISOWeekYear(dirtyDateRight)
+
+ return dateLeftStartOfYear.getTime() === dateRightStartOfYear.getTime()
+}
diff --git a/date-fns/src/isSameISOWeekYear/test.ts b/date-fns/src/isSameISOWeekYear/test.ts
new file mode 100644
index 0000000..f5ac28f
--- /dev/null
+++ b/date-fns/src/isSameISOWeekYear/test.ts
@@ -0,0 +1,68 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import isSameISOWeekYear from '.'
+
+describe('isSameISOWeekYear', function() {
+ it('returns true if the given dates have the same ISO week-numbering year', function() {
+ const result = isSameISOWeekYear(
+ new Date(2003, 11 /* Dec */, 29),
+ new Date(2005, 0 /* Jan */, 2)
+ )
+ assert(result === true)
+ })
+
+ it('returns false if the given dates have different ISO week-numbering years', function() {
+ const result = isSameISOWeekYear(
+ new Date(2014, 11 /* Dec */, 28),
+ new Date(2014, 11 /* Dec */, 29)
+ )
+ assert(result === false)
+ })
+
+ it('accepts a timestamp', function() {
+ const result = isSameISOWeekYear(
+ new Date(2003, 11 /* Dec */, 29).getTime(),
+ new Date(2005, 0 /* Jan */, 2).getTime()
+ )
+ assert(result === true)
+ })
+
+ it('handles dates before 100 AD', function() {
+ const firstDate = new Date(0)
+ firstDate.setFullYear(5, 0 /* Jan */, 1)
+ firstDate.setHours(0, 0, 0, 0)
+ const secondDate = new Date(0)
+ secondDate.setFullYear(5, 0 /* Jan */, 2)
+ secondDate.setHours(0, 0, 0, 0)
+ const result = isSameISOWeekYear(firstDate, secondDate)
+ assert(result === true)
+ })
+
+ it('returns false if the first date is `Invalid Date`', function() {
+ const result = isSameISOWeekYear(
+ new Date(NaN),
+ new Date(1989, 6 /* Jul */, 10)
+ )
+ assert(result === false)
+ })
+
+ it('returns false if the second date is `Invalid Date`', function() {
+ const result = isSameISOWeekYear(
+ new Date(1987, 1 /* Feb */, 11),
+ new Date(NaN)
+ )
+ assert(result === false)
+ })
+
+ it('returns false if the both dates are `Invalid Date`', function() {
+ const result = isSameISOWeekYear(new Date(NaN), new Date(NaN))
+ assert(result === false)
+ })
+
+ it('throws TypeError exception if passed less than 2 arguments', function() {
+ assert.throws(isSameISOWeekYear.bind(null), TypeError)
+ assert.throws(isSameISOWeekYear.bind(null, 1), TypeError)
+ })
+})
diff --git a/date-fns/src/isSameMinute/benchmark.js b/date-fns/src/isSameMinute/benchmark.js
new file mode 100644
index 0000000..a9cca50
--- /dev/null
+++ b/date-fns/src/isSameMinute/benchmark.js
@@ -0,0 +1,23 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import isSameMinute from '.'
+import moment from 'moment'
+
+suite('isSameMinute', function () {
+ benchmark('date-fns', function () {
+ return isSameMinute(this.dateA, this.dateB)
+ })
+
+ benchmark('Moment.js', function () {
+ return this.momentA.isSame(this.momentB, 'minute')
+ })
+}, {
+ setup: function () {
+ this.dateA = new Date()
+ this.momentA = moment()
+ this.dateB = new Date(this.dateA.getTime() + 604800000)
+ this.momentB = this.momentA.clone().add(7, 'days')
+ }
+})
diff --git a/date-fns/src/isSameMinute/index.d.ts b/date-fns/src/isSameMinute/index.d.ts
new file mode 100644
index 0000000..c26acef
--- /dev/null
+++ b/date-fns/src/isSameMinute/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { isSameMinute } from 'date-fns'
+export default isSameMinute
diff --git a/date-fns/src/isSameMinute/index.js.flow b/date-fns/src/isSameMinute/index.js.flow
new file mode 100644
index 0000000..55ea578
--- /dev/null
+++ b/date-fns/src/isSameMinute/index.js.flow
@@ -0,0 +1,55 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (
+ dateLeft: Date | number,
+ dateRight: Date | number
+) => boolean
diff --git a/date-fns/src/isSameMinute/index.ts b/date-fns/src/isSameMinute/index.ts
new file mode 100644
index 0000000..0885846
--- /dev/null
+++ b/date-fns/src/isSameMinute/index.ts
@@ -0,0 +1,37 @@
+import startOfMinute from '../startOfMinute/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name isSameMinute
+ * @category Minute Helpers
+ * @summary Are the given dates in the same minute?
+ *
+ * @description
+ * Are the given dates in the same minute?
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} dateLeft - the first date to check
+ * @param {Date|Number} dateRight - the second date to check
+ * @returns {Boolean} the dates are in the same minute
+ * @throws {TypeError} 2 arguments required
+ *
+ * @example
+ * // Are 4 September 2014 06:30:00 and 4 September 2014 06:30:15
+ * // in the same minute?
+ * var result = isSameMinute(
+ * new Date(2014, 8, 4, 6, 30),
+ * new Date(2014, 8, 4, 6, 30, 15)
+ * )
+ * //=> true
+ */
+export default function isSameMinute(dirtyDateLeft: Date | number, dirtyDateRight: Date | number): boolean {
+ requiredArgs(2, arguments)
+
+ const dateLeftStartOfMinute = startOfMinute(dirtyDateLeft)
+ const dateRightStartOfMinute = startOfMinute(dirtyDateRight)
+
+ return dateLeftStartOfMinute.getTime() === dateRightStartOfMinute.getTime()
+}
diff --git a/date-fns/src/isSameMinute/test.ts b/date-fns/src/isSameMinute/test.ts
new file mode 100644
index 0000000..a103ed9
--- /dev/null
+++ b/date-fns/src/isSameMinute/test.ts
@@ -0,0 +1,51 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import isSameMinute from '.'
+
+describe('isSameMinute', function() {
+ it('returns true if the given dates have the same minute', function() {
+ const result = isSameMinute(
+ new Date(2014, 8 /* Sep */, 4, 6, 30),
+ new Date(2014, 8 /* Sep */, 4, 6, 30, 15)
+ )
+ assert(result === true)
+ })
+
+ it('returns false if the given dates have different minutes', function() {
+ const result = isSameMinute(
+ new Date(2014, 8 /* Sep */, 4, 6, 30, 59),
+ new Date(2014, 8 /* Sep */, 4, 6, 31)
+ )
+ assert(result === false)
+ })
+
+ it('accepts a timestamp', function() {
+ const result = isSameMinute(
+ new Date(2014, 8 /* Sep */, 4, 18, 45).getTime(),
+ new Date(2014, 8 /* Sep */, 4, 18, 45, 30).getTime()
+ )
+ assert(result === true)
+ })
+
+ it('returns false if the first date is `Invalid Date`', function() {
+ const result = isSameMinute(new Date(NaN), new Date(1989, 6 /* Jul */, 10))
+ assert(result === false)
+ })
+
+ it('returns false if the second date is `Invalid Date`', function() {
+ const result = isSameMinute(new Date(1987, 1 /* Feb */, 11), new Date(NaN))
+ assert(result === false)
+ })
+
+ it('returns false if the both dates are `Invalid Date`', function() {
+ const result = isSameMinute(new Date(NaN), new Date(NaN))
+ assert(result === false)
+ })
+
+ it('throws TypeError exception if passed less than 2 arguments', function() {
+ assert.throws(isSameMinute.bind(null), TypeError)
+ assert.throws(isSameMinute.bind(null, 1), TypeError)
+ })
+})
diff --git a/date-fns/src/isSameMonth/benchmark.js b/date-fns/src/isSameMonth/benchmark.js
new file mode 100644
index 0000000..dec2530
--- /dev/null
+++ b/date-fns/src/isSameMonth/benchmark.js
@@ -0,0 +1,23 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import isSameMonth from '.'
+import moment from 'moment'
+
+suite('isSameMonth', function () {
+ benchmark('date-fns', function () {
+ return isSameMonth(this.dateA, this.dateB)
+ })
+
+ benchmark('Moment.js', function () {
+ return this.momentA.isSame(this.momentB, 'month')
+ })
+}, {
+ setup: function () {
+ this.dateA = new Date()
+ this.momentA = moment()
+ this.dateB = new Date(this.dateA.getTime() + 604800000)
+ this.momentB = this.momentA.clone().add(7, 'days')
+ }
+})
diff --git a/date-fns/src/isSameMonth/index.d.ts b/date-fns/src/isSameMonth/index.d.ts
new file mode 100644
index 0000000..bd0e886
--- /dev/null
+++ b/date-fns/src/isSameMonth/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { isSameMonth } from 'date-fns'
+export default isSameMonth
diff --git a/date-fns/src/isSameMonth/index.js.flow b/date-fns/src/isSameMonth/index.js.flow
new file mode 100644
index 0000000..55ea578
--- /dev/null
+++ b/date-fns/src/isSameMonth/index.js.flow
@@ -0,0 +1,55 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (
+ dateLeft: Date | number,
+ dateRight: Date | number
+) => boolean
diff --git a/date-fns/src/isSameMonth/index.ts b/date-fns/src/isSameMonth/index.ts
new file mode 100644
index 0000000..65058b1
--- /dev/null
+++ b/date-fns/src/isSameMonth/index.ts
@@ -0,0 +1,35 @@
+import toDate from '../toDate/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name isSameMonth
+ * @category Month Helpers
+ * @summary Are the given dates in the same month?
+ *
+ * @description
+ * Are the given dates in the same month?
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} dateLeft - the first date to check
+ * @param {Date|Number} dateRight - the second date to check
+ * @returns {Boolean} the dates are in the same month
+ * @throws {TypeError} 2 arguments required
+ *
+ * @example
+ * // Are 2 September 2014 and 25 September 2014 in the same month?
+ * var result = isSameMonth(new Date(2014, 8, 2), new Date(2014, 8, 25))
+ * //=> true
+ */
+export default function isSameMonth(dirtyDateLeft: Date | number, dirtyDateRight: Date | number): boolean {
+ requiredArgs(2, arguments)
+
+ const dateLeft = toDate(dirtyDateLeft)
+ const dateRight = toDate(dirtyDateRight)
+ return (
+ dateLeft.getFullYear() === dateRight.getFullYear() &&
+ dateLeft.getMonth() === dateRight.getMonth()
+ )
+}
diff --git a/date-fns/src/isSameMonth/test.ts b/date-fns/src/isSameMonth/test.ts
new file mode 100644
index 0000000..23a8152
--- /dev/null
+++ b/date-fns/src/isSameMonth/test.ts
@@ -0,0 +1,51 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import isSameMonth from '.'
+
+describe('isSameMonth', function() {
+ it('returns true if the given dates have the same month (and year)', function() {
+ const result = isSameMonth(
+ new Date(2014, 8 /* Sep */, 2),
+ new Date(2014, 8 /* Sep */, 25)
+ )
+ assert(result === true)
+ })
+
+ it('returns false if the given dates have different months', function() {
+ const result = isSameMonth(
+ new Date(2014, 8 /* Sep */, 2),
+ new Date(2013, 8 /* Sep */, 25)
+ )
+ assert(result === false)
+ })
+
+ it('accepts a timestamp', function() {
+ const result = isSameMonth(
+ new Date(2014, 8 /* Sep */, 2).getTime(),
+ new Date(2014, 8 /* Sep */, 25).getTime()
+ )
+ assert(result === true)
+ })
+
+ it('returns false if the first date is `Invalid Date`', function() {
+ const result = isSameMonth(new Date(NaN), new Date(1989, 6 /* Jul */, 10))
+ assert(result === false)
+ })
+
+ it('returns false if the second date is `Invalid Date`', function() {
+ const result = isSameMonth(new Date(1987, 1 /* Feb */, 11), new Date(NaN))
+ assert(result === false)
+ })
+
+ it('returns false if the both dates are `Invalid Date`', function() {
+ const result = isSameMonth(new Date(NaN), new Date(NaN))
+ assert(result === false)
+ })
+
+ it('throws TypeError exception if passed less than 2 arguments', function() {
+ assert.throws(isSameMonth.bind(null), TypeError)
+ assert.throws(isSameMonth.bind(null, 1), TypeError)
+ })
+})
diff --git a/date-fns/src/isSameQuarter/benchmark.js b/date-fns/src/isSameQuarter/benchmark.js
new file mode 100644
index 0000000..ad6b2f4
--- /dev/null
+++ b/date-fns/src/isSameQuarter/benchmark.js
@@ -0,0 +1,23 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import isSameQuarter from '.'
+import moment from 'moment'
+
+suite('isSameQuarter', function () {
+ benchmark('date-fns', function () {
+ return isSameQuarter(this.dateA, this.dateB)
+ })
+
+ benchmark('Moment.js', function () {
+ return this.momentA.isSame(this.momentB, 'quarter')
+ })
+}, {
+ setup: function () {
+ this.dateA = new Date()
+ this.momentA = moment()
+ this.dateB = new Date(this.dateA.getTime() + 604800000)
+ this.momentB = this.momentA.clone().add(7, 'days')
+ }
+})
diff --git a/date-fns/src/isSameQuarter/index.d.ts b/date-fns/src/isSameQuarter/index.d.ts
new file mode 100644
index 0000000..584660a
--- /dev/null
+++ b/date-fns/src/isSameQuarter/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { isSameQuarter } from 'date-fns'
+export default isSameQuarter
diff --git a/date-fns/src/isSameQuarter/index.js.flow b/date-fns/src/isSameQuarter/index.js.flow
new file mode 100644
index 0000000..55ea578
--- /dev/null
+++ b/date-fns/src/isSameQuarter/index.js.flow
@@ -0,0 +1,55 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (
+ dateLeft: Date | number,
+ dateRight: Date | number
+) => boolean
diff --git a/date-fns/src/isSameQuarter/index.ts b/date-fns/src/isSameQuarter/index.ts
new file mode 100644
index 0000000..84d84d4
--- /dev/null
+++ b/date-fns/src/isSameQuarter/index.ts
@@ -0,0 +1,33 @@
+import startOfQuarter from '../startOfQuarter/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name isSameQuarter
+ * @category Quarter Helpers
+ * @summary Are the given dates in the same year quarter?
+ *
+ * @description
+ * Are the given dates in the same year quarter?
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} dateLeft - the first date to check
+ * @param {Date|Number} dateRight - the second date to check
+ * @returns {Boolean} the dates are in the same quarter
+ * @throws {TypeError} 2 arguments required
+ *
+ * @example
+ * // Are 1 January 2014 and 8 March 2014 in the same quarter?
+ * var result = isSameQuarter(new Date(2014, 0, 1), new Date(2014, 2, 8))
+ * //=> true
+ */
+export default function isSameQuarter(dirtyDateLeft: Date | number, dirtyDateRight: Date | number): boolean {
+ requiredArgs(2, arguments)
+
+ const dateLeftStartOfQuarter = startOfQuarter(dirtyDateLeft)
+ const dateRightStartOfQuarter = startOfQuarter(dirtyDateRight)
+
+ return dateLeftStartOfQuarter.getTime() === dateRightStartOfQuarter.getTime()
+}
diff --git a/date-fns/src/isSameQuarter/test.ts b/date-fns/src/isSameQuarter/test.ts
new file mode 100644
index 0000000..67fd437
--- /dev/null
+++ b/date-fns/src/isSameQuarter/test.ts
@@ -0,0 +1,51 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import isSameQuarter from '.'
+
+describe('isSameQuarter', function() {
+ it('returns true if the given dates have the same quarter (and year)', function() {
+ const result = isSameQuarter(
+ new Date(2014, 0 /* Jan */, 1),
+ new Date(2014, 2 /* Mar */, 8)
+ )
+ assert(result === true)
+ })
+
+ it('returns false if the given dates have different quarters', function() {
+ const result = isSameQuarter(
+ new Date(2014, 0 /* Jan */, 1),
+ new Date(2013, 8 /* Sep */, 25)
+ )
+ assert(result === false)
+ })
+
+ it('accepts a timestamp', function() {
+ const result = isSameQuarter(
+ new Date(2014, 6 /* Jul */, 2).getTime(),
+ new Date(2014, 8 /* Sep */, 25).getTime()
+ )
+ assert(result === true)
+ })
+
+ it('returns false if the first date is `Invalid Date`', function() {
+ const result = isSameQuarter(new Date(NaN), new Date(1989, 6 /* Jul */, 10))
+ assert(result === false)
+ })
+
+ it('returns false if the second date is `Invalid Date`', function() {
+ const result = isSameQuarter(new Date(1987, 1 /* Feb */, 11), new Date(NaN))
+ assert(result === false)
+ })
+
+ it('returns false if the both dates are `Invalid Date`', function() {
+ const result = isSameQuarter(new Date(NaN), new Date(NaN))
+ assert(result === false)
+ })
+
+ it('throws TypeError exception if passed less than 2 arguments', function() {
+ assert.throws(isSameQuarter.bind(null), TypeError)
+ assert.throws(isSameQuarter.bind(null, 1), TypeError)
+ })
+})
diff --git a/date-fns/src/isSameSecond/benchmark.js b/date-fns/src/isSameSecond/benchmark.js
new file mode 100644
index 0000000..2bc1b69
--- /dev/null
+++ b/date-fns/src/isSameSecond/benchmark.js
@@ -0,0 +1,23 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import isSameSecond from '.'
+import moment from 'moment'
+
+suite('isSameSecond', function () {
+ benchmark('date-fns', function () {
+ return isSameSecond(this.dateA, this.dateB)
+ })
+
+ benchmark('Moment.js', function () {
+ return this.momentA.isSame(this.momentB, 'second')
+ })
+}, {
+ setup: function () {
+ this.dateA = new Date()
+ this.momentA = moment()
+ this.dateB = new Date(this.dateA.getTime() + 604800000)
+ this.momentB = this.momentA.clone().add(7, 'days')
+ }
+})
diff --git a/date-fns/src/isSameSecond/index.d.ts b/date-fns/src/isSameSecond/index.d.ts
new file mode 100644
index 0000000..982464e
--- /dev/null
+++ b/date-fns/src/isSameSecond/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { isSameSecond } from 'date-fns'
+export default isSameSecond
diff --git a/date-fns/src/isSameSecond/index.js.flow b/date-fns/src/isSameSecond/index.js.flow
new file mode 100644
index 0000000..55ea578
--- /dev/null
+++ b/date-fns/src/isSameSecond/index.js.flow
@@ -0,0 +1,55 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (
+ dateLeft: Date | number,
+ dateRight: Date | number
+) => boolean
diff --git a/date-fns/src/isSameSecond/index.ts b/date-fns/src/isSameSecond/index.ts
new file mode 100644
index 0000000..cc53cf4
--- /dev/null
+++ b/date-fns/src/isSameSecond/index.ts
@@ -0,0 +1,37 @@
+import startOfSecond from '../startOfSecond/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name isSameSecond
+ * @category Second Helpers
+ * @summary Are the given dates in the same second?
+ *
+ * @description
+ * Are the given dates in the same second?
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} dateLeft - the first date to check
+ * @param {Date|Number} dateRight - the second date to check
+ * @returns {Boolean} the dates are in the same second
+ * @throws {TypeError} 2 arguments required
+ *
+ * @example
+ * // Are 4 September 2014 06:30:15.000 and 4 September 2014 06:30.15.500
+ * // in the same second?
+ * var result = isSameSecond(
+ * new Date(2014, 8, 4, 6, 30, 15),
+ * new Date(2014, 8, 4, 6, 30, 15, 500)
+ * )
+ * //=> true
+ */
+export default function isSameSecond(dirtyDateLeft: Date | number, dirtyDateRight: Date | number): boolean {
+ requiredArgs(2, arguments)
+
+ const dateLeftStartOfSecond = startOfSecond(dirtyDateLeft)
+ const dateRightStartOfSecond = startOfSecond(dirtyDateRight)
+
+ return dateLeftStartOfSecond.getTime() === dateRightStartOfSecond.getTime()
+}
diff --git a/date-fns/src/isSameSecond/test.ts b/date-fns/src/isSameSecond/test.ts
new file mode 100644
index 0000000..4a23595
--- /dev/null
+++ b/date-fns/src/isSameSecond/test.ts
@@ -0,0 +1,51 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import isSameSecond from '.'
+
+describe('isSameSecond', function() {
+ it('returns true if the given dates have the same second', function() {
+ const result = isSameSecond(
+ new Date(2014, 8 /* Sep */, 4, 6, 30, 15),
+ new Date(2014, 8 /* Sep */, 4, 6, 30, 15, 500)
+ )
+ assert(result === true)
+ })
+
+ it('returns false if the given dates have different seconds', function() {
+ const result = isSameSecond(
+ new Date(2014, 8 /* Sep */, 4, 6, 30, 58, 999),
+ new Date(2014, 8 /* Sep */, 4, 6, 30, 59)
+ )
+ assert(result === false)
+ })
+
+ it('accepts a timestamp', function() {
+ const result = isSameSecond(
+ new Date(2014, 8 /* Sep */, 4, 18, 45, 30).getTime(),
+ new Date(2014, 8 /* Sep */, 4, 18, 45, 30, 400).getTime()
+ )
+ assert(result === true)
+ })
+
+ it('returns false if the first date is `Invalid Date`', function() {
+ const result = isSameSecond(new Date(NaN), new Date(1989, 6 /* Jul */, 10))
+ assert(result === false)
+ })
+
+ it('returns false if the second date is `Invalid Date`', function() {
+ const result = isSameSecond(new Date(1987, 1 /* Feb */, 11), new Date(NaN))
+ assert(result === false)
+ })
+
+ it('returns false if the both dates are `Invalid Date`', function() {
+ const result = isSameSecond(new Date(NaN), new Date(NaN))
+ assert(result === false)
+ })
+
+ it('throws TypeError exception if passed less than 2 arguments', function() {
+ assert.throws(isSameSecond.bind(null), TypeError)
+ assert.throws(isSameSecond.bind(null, 1), TypeError)
+ })
+})
diff --git a/date-fns/src/isSameWeek/benchmark.js b/date-fns/src/isSameWeek/benchmark.js
new file mode 100644
index 0000000..55eabd5
--- /dev/null
+++ b/date-fns/src/isSameWeek/benchmark.js
@@ -0,0 +1,23 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import isSameWeek from '.'
+import moment from 'moment'
+
+suite('isSameWeek', function () {
+ benchmark('date-fns', function () {
+ return isSameWeek(this.dateA, this.dateB)
+ })
+
+ benchmark('Moment.js', function () {
+ return this.momentA.isSame(this.momentB, 'week')
+ })
+}, {
+ setup: function () {
+ this.dateA = new Date()
+ this.momentA = moment()
+ this.dateB = new Date(this.dateA.getTime() + 604800000)
+ this.momentB = this.momentA.clone().add(7, 'days')
+ }
+})
diff --git a/date-fns/src/isSameWeek/index.d.ts b/date-fns/src/isSameWeek/index.d.ts
new file mode 100644
index 0000000..b27f5f6
--- /dev/null
+++ b/date-fns/src/isSameWeek/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { isSameWeek } from 'date-fns'
+export default isSameWeek
diff --git a/date-fns/src/isSameWeek/index.js.flow b/date-fns/src/isSameWeek/index.js.flow
new file mode 100644
index 0000000..2ba3f16
--- /dev/null
+++ b/date-fns/src/isSameWeek/index.js.flow
@@ -0,0 +1,59 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (
+ dateLeft: Date | number,
+ dateRight: Date | number,
+ options?: {
+ locale?: Locale,
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ }
+) => boolean
diff --git a/date-fns/src/isSameWeek/index.ts b/date-fns/src/isSameWeek/index.ts
new file mode 100644
index 0000000..692d8b7
--- /dev/null
+++ b/date-fns/src/isSameWeek/index.ts
@@ -0,0 +1,50 @@
+import startOfWeek from '../startOfWeek/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+import { WeekStartOptions, LocaleOptions } from '../types'
+
+/**
+ * @name isSameWeek
+ * @category Week Helpers
+ * @summary Are the given dates in the same week?
+ *
+ * @description
+ * Are the given dates in the same week?
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} dateLeft - the first date to check
+ * @param {Date|Number} dateRight - the second date to check
+ * @param {Object} [options] - an object with options.
+ * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}
+ * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)
+ * @returns {Boolean} the dates are in the same week
+ * @throws {TypeError} 2 arguments required
+ * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6
+ *
+ * @example
+ * // Are 31 August 2014 and 4 September 2014 in the same week?
+ * var result = isSameWeek(new Date(2014, 7, 31), new Date(2014, 8, 4))
+ * //=> true
+ *
+ * @example
+ * // If week starts with Monday,
+ * // are 31 August 2014 and 4 September 2014 in the same week?
+ * var result = isSameWeek(new Date(2014, 7, 31), new Date(2014, 8, 4), {
+ * weekStartsOn: 1
+ * })
+ * //=> false
+ */
+export default function isSameWeek(
+ dirtyDateLeft: Date | number,
+ dirtyDateRight: Date | number,
+ dirtyOptions?: LocaleOptions & WeekStartOptions
+): boolean {
+ requiredArgs(2, arguments)
+
+ const dateLeftStartOfWeek = startOfWeek(dirtyDateLeft, dirtyOptions)
+ const dateRightStartOfWeek = startOfWeek(dirtyDateRight, dirtyOptions)
+
+ return dateLeftStartOfWeek.getTime() === dateRightStartOfWeek.getTime()
+}
diff --git a/date-fns/src/isSameWeek/test.ts b/date-fns/src/isSameWeek/test.ts
new file mode 100644
index 0000000..26f5a02
--- /dev/null
+++ b/date-fns/src/isSameWeek/test.ts
@@ -0,0 +1,109 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import isSameWeek from '.'
+
+describe('isSameWeek', function() {
+ it('returns true if the given dates have the same week', function() {
+ const result = isSameWeek(
+ new Date(2014, 7 /* Aug */, 31),
+ new Date(2014, 8 /* Sep */, 4)
+ )
+ assert(result === true)
+ })
+
+ it('returns false if the given dates have different weeks', function() {
+ const result = isSameWeek(
+ new Date(2014, 7 /* Aug */, 30),
+ new Date(2014, 8 /* Sep */, 4)
+ )
+ assert(result === false)
+ })
+
+ it('allows to specify which day is the first day of the week', function() {
+ const result = isSameWeek(
+ new Date(2014, 7 /* Aug */, 31),
+ new Date(2014, 8 /* Sep */, 4),
+ { weekStartsOn: 1 }
+ )
+ assert(result === false)
+ })
+
+ it('allows to specify which day is the first day of the week in locale', function() {
+ const result = isSameWeek(
+ new Date(2014, 7 /* Aug */, 31),
+ new Date(2014, 8 /* Sep */, 4),
+ {
+ // @ts-expect-error
+ locale: {
+ options: { weekStartsOn: 1 }
+ }
+ }
+ )
+ assert(result === false)
+ })
+
+ it('`options.weekStartsOn` overwrites the first day of the week specified in locale', function() {
+ const result = isSameWeek(
+ new Date(2014, 7 /* Aug */, 31),
+ new Date(2014, 8 /* Sep */, 4),
+ {
+ weekStartsOn: 1,
+ // @ts-expect-error
+ locale: {
+ options: { weekStartsOn: 0 }
+ }
+ }
+ )
+ assert(result === false)
+ })
+
+ it('implicitly converts options', function() {
+ const result = isSameWeek(
+ new Date(2014, 7 /* Aug */, 31),
+ new Date(2014, 8 /* Sep */, 4),
+ // @ts-expect-error
+ { weekStartsOn: '1' }
+ )
+ assert(result === false)
+ })
+
+ it('accepts a timestamp', function() {
+ const result = isSameWeek(
+ new Date(2014, 7 /* Aug */, 31).getTime(),
+ new Date(2014, 8 /* Sep */, 4).getTime()
+ )
+ assert(result === true)
+ })
+
+ it('returns false if the first date is `Invalid Date`', function() {
+ const result = isSameWeek(new Date(NaN), new Date(1989, 6 /* Jul */, 10))
+ assert(result === false)
+ })
+
+ it('returns false if the second date is `Invalid Date`', function() {
+ const result = isSameWeek(new Date(1987, 1 /* Feb */, 11), new Date(NaN))
+ assert(result === false)
+ })
+
+ it('returns false if the both dates are `Invalid Date`', function() {
+ const result = isSameWeek(new Date(NaN), new Date(NaN))
+ assert(result === false)
+ })
+
+ it('throws `RangeError` if `options.weekStartsOn` is not convertable to 0, 1, ..., 6 or undefined', function() {
+ const block = isSameWeek.bind(
+ null,
+ new Date(2014, 7 /* Aug */, 31),
+ new Date(2014, 8 /* Sep */, 4),
+ { weekStartsOn: NaN }
+ )
+ assert.throws(block, RangeError)
+ })
+
+ it('throws TypeError exception if passed less than 2 arguments', function() {
+ assert.throws(isSameWeek.bind(null), TypeError)
+ assert.throws(isSameWeek.bind(null, 1), TypeError)
+ })
+})
diff --git a/date-fns/src/isSameYear/benchmark.js b/date-fns/src/isSameYear/benchmark.js
new file mode 100644
index 0000000..751ce3c
--- /dev/null
+++ b/date-fns/src/isSameYear/benchmark.js
@@ -0,0 +1,23 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import isSameYear from '.'
+import moment from 'moment'
+
+suite('isSameYear', function () {
+ benchmark('date-fns', function () {
+ return isSameYear(this.dateA, this.dateB)
+ })
+
+ benchmark('Moment.js', function () {
+ return this.momentA.isSame(this.momentB, 'year')
+ })
+}, {
+ setup: function () {
+ this.dateA = new Date()
+ this.momentA = moment()
+ this.dateB = new Date(this.dateA.getTime() + 604800000)
+ this.momentB = this.momentA.clone().add(7, 'days')
+ }
+})
diff --git a/date-fns/src/isSameYear/index.d.ts b/date-fns/src/isSameYear/index.d.ts
new file mode 100644
index 0000000..c729e19
--- /dev/null
+++ b/date-fns/src/isSameYear/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { isSameYear } from 'date-fns'
+export default isSameYear
diff --git a/date-fns/src/isSameYear/index.js.flow b/date-fns/src/isSameYear/index.js.flow
new file mode 100644
index 0000000..55ea578
--- /dev/null
+++ b/date-fns/src/isSameYear/index.js.flow
@@ -0,0 +1,55 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (
+ dateLeft: Date | number,
+ dateRight: Date | number
+) => boolean
diff --git a/date-fns/src/isSameYear/index.ts b/date-fns/src/isSameYear/index.ts
new file mode 100644
index 0000000..8c0f4e5
--- /dev/null
+++ b/date-fns/src/isSameYear/index.ts
@@ -0,0 +1,35 @@
+import toDate from '../toDate/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name isSameYear
+ * @category Year Helpers
+ * @summary Are the given dates in the same year?
+ *
+ * @description
+ * Are the given dates in the same year?
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} dateLeft - the first date to check
+ * @param {Date|Number} dateRight - the second date to check
+ * @returns {Boolean} the dates are in the same year
+ * @throws {TypeError} 2 arguments required
+ *
+ * @example
+ * // Are 2 September 2014 and 25 September 2014 in the same year?
+ * var result = isSameYear(new Date(2014, 8, 2), new Date(2014, 8, 25))
+ * //=> true
+ */
+export default function isSameYear(
+ dirtyDateLeft: Date | number,
+ dirtyDateRight: Date | number
+): boolean {
+ requiredArgs(2, arguments)
+
+ const dateLeft = toDate(dirtyDateLeft)
+ const dateRight = toDate(dirtyDateRight)
+ return dateLeft.getFullYear() === dateRight.getFullYear()
+}
diff --git a/date-fns/src/isSameYear/test.ts b/date-fns/src/isSameYear/test.ts
new file mode 100644
index 0000000..1348827
--- /dev/null
+++ b/date-fns/src/isSameYear/test.ts
@@ -0,0 +1,51 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import isSameYear from '.'
+
+describe('isSameYear', function () {
+ it('returns true if the given dates have the same year', function () {
+ const result = isSameYear(
+ new Date(2014, 8 /* Sep */, 2),
+ new Date(2014, 8 /* Sep */, 25)
+ )
+ assert(result === true)
+ })
+
+ it('returns false if the given dates have different years', function () {
+ const result = isSameYear(
+ new Date(2014, 8 /* Sep */, 2),
+ new Date(2013, 8 /* Sep */, 25)
+ )
+ assert(result === false)
+ })
+
+ it('accepts a timestamp', function () {
+ const result = isSameYear(
+ new Date(2014, 8 /* Sep */, 2).getTime(),
+ new Date(2014, 8 /* Sep */, 25).getTime()
+ )
+ assert(result === true)
+ })
+
+ it('returns false if the first date is `Invalid Date`', function () {
+ const result = isSameYear(new Date(NaN), new Date(1989, 6 /* Jul */, 10))
+ assert(result === false)
+ })
+
+ it('returns false if the second date is `Invalid Date`', function () {
+ const result = isSameYear(new Date(1987, 1 /* Feb */, 11), new Date(NaN))
+ assert(result === false)
+ })
+
+ it('returns false if the both dates are `Invalid Date`', function () {
+ const result = isSameYear(new Date(NaN), new Date(NaN))
+ assert(result === false)
+ })
+
+ it('throws TypeError exception if passed less than 2 arguments', function () {
+ assert.throws(isSameYear.bind(null), TypeError)
+ assert.throws(isSameYear.bind(null, 1), TypeError)
+ })
+})
diff --git a/date-fns/src/isSaturday/benchmark.js b/date-fns/src/isSaturday/benchmark.js
new file mode 100644
index 0000000..336f2fc
--- /dev/null
+++ b/date-fns/src/isSaturday/benchmark.js
@@ -0,0 +1,15 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import isSaturday from '.'
+
+suite('isSaturday', function () {
+ benchmark('date-fns', function () {
+ return isSaturday(this.date)
+ })
+}, {
+ setup: function () {
+ this.date = new Date()
+ }
+})
diff --git a/date-fns/src/isSaturday/index.d.ts b/date-fns/src/isSaturday/index.d.ts
new file mode 100644
index 0000000..ac5ccb3
--- /dev/null
+++ b/date-fns/src/isSaturday/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { isSaturday } from 'date-fns'
+export default isSaturday
diff --git a/date-fns/src/isSaturday/index.js.flow b/date-fns/src/isSaturday/index.js.flow
new file mode 100644
index 0000000..d3f01ee
--- /dev/null
+++ b/date-fns/src/isSaturday/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (date: Date | number) => boolean
diff --git a/date-fns/src/isSaturday/index.ts b/date-fns/src/isSaturday/index.ts
new file mode 100644
index 0000000..5195c40
--- /dev/null
+++ b/date-fns/src/isSaturday/index.ts
@@ -0,0 +1,29 @@
+import toDate from '../toDate/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name isSaturday
+ * @category Weekday Helpers
+ * @summary Is the given date Saturday?
+ *
+ * @description
+ * Is the given date Saturday?
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} date - the date to check
+ * @returns {Boolean} the date is Saturday
+ * @throws {TypeError} 1 argument required
+ *
+ * @example
+ * // Is 27 September 2014 Saturday?
+ * var result = isSaturday(new Date(2014, 8, 27))
+ * //=> true
+ */
+export default function isSaturday(dirtyDate: Date | number): boolean {
+ requiredArgs(1, arguments)
+
+ return toDate(dirtyDate).getDay() === 6
+}
diff --git a/date-fns/src/isSaturday/test.ts b/date-fns/src/isSaturday/test.ts
new file mode 100644
index 0000000..223d775
--- /dev/null
+++ b/date-fns/src/isSaturday/test.ts
@@ -0,0 +1,31 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import isSaturday from '.'
+
+describe('isSaturday', function() {
+ it('returns true if the given date is Saturday', function() {
+ const result = isSaturday(new Date(2014, 8 /* Sep */, 27))
+ assert(result === true)
+ })
+
+ it('returns false if the given date is not Saturday', function() {
+ const result = isSaturday(new Date(2014, 8 /* Sep */, 25))
+ assert(result === false)
+ })
+
+ it('accepts a timestamp', function() {
+ const result = isSaturday(new Date(2014, 1 /* Feb */, 15).getTime())
+ assert(result === true)
+ })
+
+ it('returns false if the given date is `Invalid Date`', function() {
+ const result = isSaturday(new Date(NaN))
+ assert(result === false)
+ })
+
+ it('throws TypeError exception if passed less than 1 argument', function() {
+ assert.throws(isSaturday.bind(null), TypeError)
+ })
+})
diff --git a/date-fns/src/isSunday/benchmark.js b/date-fns/src/isSunday/benchmark.js
new file mode 100644
index 0000000..9b65eb2
--- /dev/null
+++ b/date-fns/src/isSunday/benchmark.js
@@ -0,0 +1,15 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import isSunday from '.'
+
+suite('isSunday', function () {
+ benchmark('date-fns', function () {
+ return isSunday(this.date)
+ })
+}, {
+ setup: function () {
+ this.date = new Date()
+ }
+})
diff --git a/date-fns/src/isSunday/index.d.ts b/date-fns/src/isSunday/index.d.ts
new file mode 100644
index 0000000..5830086
--- /dev/null
+++ b/date-fns/src/isSunday/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { isSunday } from 'date-fns'
+export default isSunday
diff --git a/date-fns/src/isSunday/index.js.flow b/date-fns/src/isSunday/index.js.flow
new file mode 100644
index 0000000..d3f01ee
--- /dev/null
+++ b/date-fns/src/isSunday/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (date: Date | number) => boolean
diff --git a/date-fns/src/isSunday/index.ts b/date-fns/src/isSunday/index.ts
new file mode 100644
index 0000000..cc3eba7
--- /dev/null
+++ b/date-fns/src/isSunday/index.ts
@@ -0,0 +1,29 @@
+import toDate from '../toDate/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name isSunday
+ * @category Weekday Helpers
+ * @summary Is the given date Sunday?
+ *
+ * @description
+ * Is the given date Sunday?
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} date - the date to check
+ * @returns {Boolean} the date is Sunday
+ * @throws {TypeError} 1 argument required
+ *
+ * @example
+ * // Is 21 September 2014 Sunday?
+ * var result = isSunday(new Date(2014, 8, 21))
+ * //=> true
+ */
+export default function isSunday(dirtyDate: Date | number): boolean {
+ requiredArgs(1, arguments)
+
+ return toDate(dirtyDate).getDay() === 0
+}
diff --git a/date-fns/src/isSunday/test.ts b/date-fns/src/isSunday/test.ts
new file mode 100644
index 0000000..8e68e20
--- /dev/null
+++ b/date-fns/src/isSunday/test.ts
@@ -0,0 +1,31 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import isSunday from '.'
+
+describe('isSunday', function() {
+ it('returns true if the given date is Sunday', function() {
+ const result = isSunday(new Date(2014, 8 /* Sep */, 21))
+ assert(result === true)
+ })
+
+ it('returns false if the given date is not Sunday', function() {
+ const result = isSunday(new Date(2014, 8 /* Sep */, 25))
+ assert(result === false)
+ })
+
+ it('accepts a timestamp', function() {
+ const result = isSunday(new Date(2014, 1 /* Feb */, 9).getTime())
+ assert(result === true)
+ })
+
+ it('returns false if the given date is `Invalid Date`', function() {
+ const result = isSunday(new Date(NaN))
+ assert(result === false)
+ })
+
+ it('throws TypeError exception if passed less than 1 argument', function() {
+ assert.throws(isSunday.bind(null), TypeError)
+ })
+})
diff --git a/date-fns/src/isThisHour/benchmark.js b/date-fns/src/isThisHour/benchmark.js
new file mode 100644
index 0000000..6f52e52
--- /dev/null
+++ b/date-fns/src/isThisHour/benchmark.js
@@ -0,0 +1,20 @@
+// @flow
+/* eslint-env mocha */
+
+/* global suite, benchmark */
+
+import isThisHour from '.'
+
+suite(
+ 'isThisHour',
+ () => {
+ benchmark('date-fns', function() {
+ return isThisHour(this.date)
+ })
+ },
+ {
+ setup: function() {
+ this.date = new Date()
+ }
+ }
+)
diff --git a/date-fns/src/isThisHour/index.d.ts b/date-fns/src/isThisHour/index.d.ts
new file mode 100644
index 0000000..1009e42
--- /dev/null
+++ b/date-fns/src/isThisHour/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { isThisHour } from 'date-fns'
+export default isThisHour
diff --git a/date-fns/src/isThisHour/index.js.flow b/date-fns/src/isThisHour/index.js.flow
new file mode 100644
index 0000000..d3f01ee
--- /dev/null
+++ b/date-fns/src/isThisHour/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (date: Date | number) => boolean
diff --git a/date-fns/src/isThisHour/index.ts b/date-fns/src/isThisHour/index.ts
new file mode 100644
index 0000000..976be6d
--- /dev/null
+++ b/date-fns/src/isThisHour/index.ts
@@ -0,0 +1,34 @@
+import isSameHour from '../isSameHour/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name isThisHour
+ * @category Hour Helpers
+ * @summary Is the given date in the same hour as the current date?
+ * @pure false
+ *
+ * @description
+ * Is the given date in the same hour as the current date?
+ *
+ * > ⚠️ Please note that this function is not present in the FP submodule as
+ * > it uses `Date.now()` internally hence impure and can't be safely curried.
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} date - the date to check
+ * @returns {Boolean} the date is in this hour
+ * @throws {TypeError} 1 argument required
+ *
+ * @example
+ * // If now is 25 September 2014 18:30:15.500,
+ * // is 25 September 2014 18:00:00 in this hour?
+ * var result = isThisHour(new Date(2014, 8, 25, 18))
+ * //=> true
+ */
+export default function isThisHour(dirtyDate: Date | number): boolean {
+ requiredArgs(1, arguments)
+
+ return isSameHour(Date.now(), dirtyDate)
+}
diff --git a/date-fns/src/isThisHour/test.ts b/date-fns/src/isThisHour/test.ts
new file mode 100644
index 0000000..ec82710
--- /dev/null
+++ b/date-fns/src/isThisHour/test.ts
@@ -0,0 +1,39 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'assert'
+import sinon from 'sinon'
+import isThisHour from '.'
+
+describe('isThisHour', () => {
+ let clock: sinon.SinonFakeTimers
+ beforeEach(() => {
+ clock = sinon.useFakeTimers(
+ new Date(2014, 8 /* Sep */, 25, 18, 30, 15, 500).getTime()
+ )
+ })
+
+ afterEach(() => {
+ clock.restore()
+ })
+
+ it('returns true if the given date and the current date have the same hour', () => {
+ const date = new Date(2014, 8 /* Sep */, 25, 18)
+ assert(isThisHour(date) === true)
+ })
+
+ it('returns false if the given date and the current date have different hours', () => {
+ const date = new Date(2014, 8 /* Sep */, 25, 19)
+ assert(isThisHour(date) === false)
+ })
+
+ it('accepts a timestamp', () => {
+ const date = new Date(2014, 8 /* Sep */, 25, 18, 45).getTime()
+ assert(isThisHour(date) === true)
+ })
+
+ it('throws TypeError exception if passed less than 1 argument', () => {
+ // @ts-expect-error
+ assert.throws(isThisHour.bind(null), TypeError)
+ })
+})
diff --git a/date-fns/src/isThisISOWeek/benchmark.js b/date-fns/src/isThisISOWeek/benchmark.js
new file mode 100644
index 0000000..d036d61
--- /dev/null
+++ b/date-fns/src/isThisISOWeek/benchmark.js
@@ -0,0 +1,20 @@
+// @flow
+/* eslint-env mocha */
+
+/* global suite, benchmark */
+
+import isThisISOWeek from '.'
+
+suite(
+ 'isThisISOWeek',
+ () => {
+ benchmark('date-fns', function() {
+ return isThisISOWeek(this.date)
+ })
+ },
+ {
+ setup: function() {
+ this.date = new Date()
+ }
+ }
+)
diff --git a/date-fns/src/isThisISOWeek/index.d.ts b/date-fns/src/isThisISOWeek/index.d.ts
new file mode 100644
index 0000000..4fb42e8
--- /dev/null
+++ b/date-fns/src/isThisISOWeek/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { isThisISOWeek } from 'date-fns'
+export default isThisISOWeek
diff --git a/date-fns/src/isThisISOWeek/index.js.flow b/date-fns/src/isThisISOWeek/index.js.flow
new file mode 100644
index 0000000..d3f01ee
--- /dev/null
+++ b/date-fns/src/isThisISOWeek/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (date: Date | number) => boolean
diff --git a/date-fns/src/isThisISOWeek/index.ts b/date-fns/src/isThisISOWeek/index.ts
new file mode 100644
index 0000000..6841b50
--- /dev/null
+++ b/date-fns/src/isThisISOWeek/index.ts
@@ -0,0 +1,36 @@
+import isSameISOWeek from '../isSameISOWeek/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name isThisISOWeek
+ * @category ISO Week Helpers
+ * @summary Is the given date in the same ISO week as the current date?
+ * @pure false
+ *
+ * @description
+ * Is the given date in the same ISO week as the current date?
+ *
+ * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date
+ *
+ * > ⚠️ Please note that this function is not present in the FP submodule as
+ * > it uses `Date.now()` internally hence impure and can't be safely curried.
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} date - the date to check
+ * @returns {Boolean} the date is in this ISO week
+ * @throws {TypeError} 1 argument required
+ *
+ * @example
+ * // If today is 25 September 2014, is 22 September 2014 in this ISO week?
+ * var result = isThisISOWeek(new Date(2014, 8, 22))
+ * //=> true
+ */
+
+export default function isThisISOWeek(dirtyDate: Date | number): boolean {
+ requiredArgs(1, arguments)
+
+ return isSameISOWeek(dirtyDate, Date.now())
+}
diff --git a/date-fns/src/isThisISOWeek/test.ts b/date-fns/src/isThisISOWeek/test.ts
new file mode 100644
index 0000000..0fe319e
--- /dev/null
+++ b/date-fns/src/isThisISOWeek/test.ts
@@ -0,0 +1,36 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'assert'
+import sinon from 'sinon'
+import isThisISOWeek from '.'
+
+describe('isSameISOWeek', () => {
+ let clock
+ beforeEach(() => {
+ clock = sinon.useFakeTimers(new Date(2014, 8 /* Sep */, 25).getTime())
+ })
+
+ afterEach(() => {
+ clock.restore()
+ })
+
+ it('returns true if the given date and the current date have the same ISO week', () => {
+ const date = new Date(2014, 8 /* Sep */, 22)
+ assert(isThisISOWeek(date) === true)
+ })
+
+ it('returns false if the given date and the current date have different ISO weeks', () => {
+ const date = new Date(2014, 8 /* Sep */, 21)
+ assert(isThisISOWeek(date) === false)
+ })
+
+ it('accepts a timestamp', () => {
+ const date = new Date(2014, 8 /* Sep */, 29).getTime()
+ assert(isThisISOWeek(date) === false)
+ })
+
+ it('throws TypeError exception if passed less than 1 argument', function() {
+ assert.throws(isThisISOWeek.bind(null), TypeError)
+ })
+})
diff --git a/date-fns/src/isThisMinute/benchmark.js b/date-fns/src/isThisMinute/benchmark.js
new file mode 100644
index 0000000..9801f3a
--- /dev/null
+++ b/date-fns/src/isThisMinute/benchmark.js
@@ -0,0 +1,20 @@
+// @flow
+/* eslint-env mocha */
+
+/* global suite, benchmark */
+
+import isThisMinute from '.'
+
+suite(
+ 'isThisMinute',
+ () => {
+ benchmark('date-fns', function() {
+ return isThisMinute(this.date)
+ })
+ },
+ {
+ setup: function() {
+ this.date = new Date()
+ }
+ }
+)
diff --git a/date-fns/src/isThisMinute/index.d.ts b/date-fns/src/isThisMinute/index.d.ts
new file mode 100644
index 0000000..ca1430d
--- /dev/null
+++ b/date-fns/src/isThisMinute/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { isThisMinute } from 'date-fns'
+export default isThisMinute
diff --git a/date-fns/src/isThisMinute/index.js.flow b/date-fns/src/isThisMinute/index.js.flow
new file mode 100644
index 0000000..d3f01ee
--- /dev/null
+++ b/date-fns/src/isThisMinute/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (date: Date | number) => boolean
diff --git a/date-fns/src/isThisMinute/index.ts b/date-fns/src/isThisMinute/index.ts
new file mode 100644
index 0000000..0606945
--- /dev/null
+++ b/date-fns/src/isThisMinute/index.ts
@@ -0,0 +1,35 @@
+import isSameMinute from '../isSameMinute/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name isThisMinute
+ * @category Minute Helpers
+ * @summary Is the given date in the same minute as the current date?
+ * @pure false
+ *
+ * @description
+ * Is the given date in the same minute as the current date?
+ *
+ * > ⚠️ Please note that this function is not present in the FP submodule as
+ * > it uses `Date.now()` internally hence impure and can't be safely curried.
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} date - the date to check
+ * @returns {Boolean} the date is in this minute
+ * @throws {TypeError} 1 argument required
+ *
+ * @example
+ * // If now is 25 September 2014 18:30:15.500,
+ * // is 25 September 2014 18:30:00 in this minute?
+ * var result = isThisMinute(new Date(2014, 8, 25, 18, 30))
+ * //=> true
+ */
+
+export default function isThisMinute(dirtyDate: Date | number): boolean {
+ requiredArgs(1, arguments)
+
+ return isSameMinute(Date.now(), dirtyDate)
+}
diff --git a/date-fns/src/isThisMinute/test.ts b/date-fns/src/isThisMinute/test.ts
new file mode 100644
index 0000000..e395020
--- /dev/null
+++ b/date-fns/src/isThisMinute/test.ts
@@ -0,0 +1,39 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'assert'
+import sinon from 'sinon'
+import isThisMinute from '.'
+
+describe('isThisMinute', () => {
+ let clock: sinon.SinonFakeTimers
+ beforeEach(() => {
+ clock = sinon.useFakeTimers(
+ new Date(2014, 8 /* Sep */, 25, 18, 30, 15, 500).getTime()
+ )
+ })
+
+ afterEach(() => {
+ clock.restore()
+ })
+
+ it('returns true if the given date and the current date have the same minute', () => {
+ const date = new Date(2014, 8 /* Sep */, 25, 18, 30)
+ assert(isThisMinute(date) === true)
+ })
+
+ it('returns false if the given date and the current date have different minutes', () => {
+ const date = new Date(2014, 8 /* Sep */, 25, 18, 31)
+ assert(isThisMinute(date) === false)
+ })
+
+ it('accepts a timestamp', () => {
+ const date = new Date(2014, 8 /* Sep */, 25, 18, 30, 30).getTime()
+ assert(isThisMinute(date) === true)
+ })
+
+ it('throws TypeError exception if passed less than 1 argument', function() {
+ // @ts-expect-error
+ assert.throws(isThisMinute.bind(null), TypeError)
+ })
+})
diff --git a/date-fns/src/isThisMonth/benchmark.js b/date-fns/src/isThisMonth/benchmark.js
new file mode 100644
index 0000000..d3deed0
--- /dev/null
+++ b/date-fns/src/isThisMonth/benchmark.js
@@ -0,0 +1,20 @@
+// @flow
+/* eslint-env mocha */
+
+/* global suite, benchmark */
+
+import isThisMonth from '.'
+
+suite(
+ 'isThisMonth',
+ () => {
+ benchmark('date-fns', function() {
+ return isThisMonth(this.date)
+ })
+ },
+ {
+ setup: function() {
+ this.date = new Date()
+ }
+ }
+)
diff --git a/date-fns/src/isThisMonth/index.d.ts b/date-fns/src/isThisMonth/index.d.ts
new file mode 100644
index 0000000..eaf72fd
--- /dev/null
+++ b/date-fns/src/isThisMonth/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { isThisMonth } from 'date-fns'
+export default isThisMonth
diff --git a/date-fns/src/isThisMonth/index.js.flow b/date-fns/src/isThisMonth/index.js.flow
new file mode 100644
index 0000000..d3f01ee
--- /dev/null
+++ b/date-fns/src/isThisMonth/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (date: Date | number) => boolean
diff --git a/date-fns/src/isThisMonth/index.ts b/date-fns/src/isThisMonth/index.ts
new file mode 100644
index 0000000..3079dc1
--- /dev/null
+++ b/date-fns/src/isThisMonth/index.ts
@@ -0,0 +1,34 @@
+import isSameMonth from '../isSameMonth/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name isThisMonth
+ * @category Month Helpers
+ * @summary Is the given date in the same month as the current date?
+ * @pure false
+ *
+ * @description
+ * Is the given date in the same month as the current date?
+ *
+ * > ⚠️ Please note that this function is not present in the FP submodule as
+ * > it uses `Date.now()` internally hence impure and can't be safely curried.
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} date - the date to check
+ * @returns {Boolean} the date is in this month
+ * @throws {TypeError} 1 argument required
+ *
+ * @example
+ * // If today is 25 September 2014, is 15 September 2014 in this month?
+ * var result = isThisMonth(new Date(2014, 8, 15))
+ * //=> true
+ */
+
+export default function isThisMonth(dirtyDate: Date | number): boolean {
+ requiredArgs(1, arguments)
+
+ return isSameMonth(Date.now(), dirtyDate)
+}
diff --git a/date-fns/src/isThisMonth/test.ts b/date-fns/src/isThisMonth/test.ts
new file mode 100644
index 0000000..4c9d651
--- /dev/null
+++ b/date-fns/src/isThisMonth/test.ts
@@ -0,0 +1,37 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'assert'
+import sinon from 'sinon'
+import isThisMonth from '.'
+
+describe('isThisMonth', () => {
+ let clock: sinon.SinonFakeTimers
+ beforeEach(() => {
+ clock = sinon.useFakeTimers(new Date(2014, 8 /* Sep */, 25).getTime())
+ })
+
+ afterEach(() => {
+ clock.restore()
+ })
+
+ it('returns true if the given date and the current date have the same month (and year)', () => {
+ const date = new Date(2014, 8 /* Sep */, 15)
+ assert(isThisMonth(date) === true)
+ })
+
+ it('returns false if the given date and the current date have different months', () => {
+ const date = new Date(2013, 7 /* Aug */, 31)
+ assert(isThisMonth(date) === false)
+ })
+
+ it('accepts a timestamp', () => {
+ const date = new Date(2014, 8 /* Sep */, 30).getTime()
+ assert(isThisMonth(date) === true)
+ })
+
+ it('throws TypeError exception if passed less than 1 argument', function() {
+ // @ts-expect-error
+ assert.throws(isThisMonth.bind(null), TypeError)
+ })
+})
diff --git a/date-fns/src/isThisQuarter/benchmark.js b/date-fns/src/isThisQuarter/benchmark.js
new file mode 100644
index 0000000..2c0db5c
--- /dev/null
+++ b/date-fns/src/isThisQuarter/benchmark.js
@@ -0,0 +1,20 @@
+// @flow
+/* eslint-env mocha */
+
+/* global suite, benchmark */
+
+import isThisQuarter from '.'
+
+suite(
+ 'isThisQuarter',
+ () => {
+ benchmark('date-fns', function() {
+ return isThisQuarter(this.date)
+ })
+ },
+ {
+ setup: function() {
+ this.date = new Date()
+ }
+ }
+)
diff --git a/date-fns/src/isThisQuarter/index.d.ts b/date-fns/src/isThisQuarter/index.d.ts
new file mode 100644
index 0000000..8c25708
--- /dev/null
+++ b/date-fns/src/isThisQuarter/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { isThisQuarter } from 'date-fns'
+export default isThisQuarter
diff --git a/date-fns/src/isThisQuarter/index.js.flow b/date-fns/src/isThisQuarter/index.js.flow
new file mode 100644
index 0000000..d3f01ee
--- /dev/null
+++ b/date-fns/src/isThisQuarter/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (date: Date | number) => boolean
diff --git a/date-fns/src/isThisQuarter/index.ts b/date-fns/src/isThisQuarter/index.ts
new file mode 100644
index 0000000..2d22060
--- /dev/null
+++ b/date-fns/src/isThisQuarter/index.ts
@@ -0,0 +1,33 @@
+import isSameQuarter from '../isSameQuarter/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name isThisQuarter
+ * @category Quarter Helpers
+ * @summary Is the given date in the same quarter as the current date?
+ * @pure false
+ *
+ * @description
+ * Is the given date in the same quarter as the current date?
+ *
+ * > ⚠️ Please note that this function is not present in the FP submodule as
+ * > it uses `Date.now()` internally hence impure and can't be safely curried.
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} date - the date to check
+ * @returns {Boolean} the date is in this quarter
+ * @throws {TypeError} 1 argument required
+ *
+ * @example
+ * // If today is 25 September 2014, is 2 July 2014 in this quarter?
+ * var result = isThisQuarter(new Date(2014, 6, 2))
+ * //=> true
+ */
+export default function isThisQuarter(dirtyDate: Date | number): boolean {
+ requiredArgs(1, arguments)
+
+ return isSameQuarter(Date.now(), dirtyDate)
+}
diff --git a/date-fns/src/isThisQuarter/test.ts b/date-fns/src/isThisQuarter/test.ts
new file mode 100644
index 0000000..1a4b77f
--- /dev/null
+++ b/date-fns/src/isThisQuarter/test.ts
@@ -0,0 +1,37 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'assert'
+import sinon from 'sinon'
+import isThisQuarter from '.'
+
+describe('isThisQuarter', function() {
+ let clock: sinon.SinonFakeTimers
+ beforeEach(function() {
+ clock = sinon.useFakeTimers(new Date(2014, 8 /* Sep */, 25).getTime())
+ })
+
+ afterEach(function() {
+ clock.restore()
+ })
+
+ it('returns true if the given date and the current date have the same quarter (and year)', function() {
+ const date = new Date(2014, 6 /* Jul */, 2)
+ assert(isThisQuarter(date) === true)
+ })
+
+ it('returns false if the given date and the current date have different quarters', function() {
+ const date = new Date(2014, 1 /* Feb */, 11)
+ assert(isThisQuarter(date) === false)
+ })
+
+ it('accepts a timestamp', function() {
+ const date = new Date(2014, 6 /* Jul */, 2).getTime()
+ assert(isThisQuarter(date) === true)
+ })
+
+ it('throws TypeError exception if passed less than 1 argument', function() {
+ // @ts-expect-error
+ assert.throws(isThisQuarter.bind(null), TypeError)
+ })
+})
diff --git a/date-fns/src/isThisSecond/benchmark.js b/date-fns/src/isThisSecond/benchmark.js
new file mode 100644
index 0000000..4fd274b
--- /dev/null
+++ b/date-fns/src/isThisSecond/benchmark.js
@@ -0,0 +1,20 @@
+// @flow
+/* eslint-env mocha */
+
+/* global suite, benchmark */
+
+import isThisSecond from '.'
+
+suite(
+ 'isThisSecond',
+ () => {
+ benchmark('date-fns', function() {
+ return isThisSecond(this.date)
+ })
+ },
+ {
+ setup: function() {
+ this.date = new Date()
+ }
+ }
+)
diff --git a/date-fns/src/isThisSecond/index.d.ts b/date-fns/src/isThisSecond/index.d.ts
new file mode 100644
index 0000000..9d45da1
--- /dev/null
+++ b/date-fns/src/isThisSecond/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { isThisSecond } from 'date-fns'
+export default isThisSecond
diff --git a/date-fns/src/isThisSecond/index.js.flow b/date-fns/src/isThisSecond/index.js.flow
new file mode 100644
index 0000000..d3f01ee
--- /dev/null
+++ b/date-fns/src/isThisSecond/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (date: Date | number) => boolean
diff --git a/date-fns/src/isThisSecond/index.ts b/date-fns/src/isThisSecond/index.ts
new file mode 100644
index 0000000..61488c6
--- /dev/null
+++ b/date-fns/src/isThisSecond/index.ts
@@ -0,0 +1,34 @@
+import isSameSecond from '../isSameSecond/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name isThisSecond
+ * @category Second Helpers
+ * @summary Is the given date in the same second as the current date?
+ * @pure false
+ *
+ * @description
+ * Is the given date in the same second as the current date?
+ *
+ * > ⚠️ Please note that this function is not present in the FP submodule as
+ * > it uses `Date.now()` internally hence impure and can't be safely curried.
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} date - the date to check
+ * @returns {Boolean} the date is in this second
+ * @throws {TypeError} 1 argument required
+ *
+ * @example
+ * // If now is 25 September 2014 18:30:15.500,
+ * // is 25 September 2014 18:30:15.000 in this second?
+ * var result = isThisSecond(new Date(2014, 8, 25, 18, 30, 15))
+ * //=> true
+ */
+export default function isThisSecond(dirtyDate: Date | number): boolean {
+ requiredArgs(1, arguments)
+
+ return isSameSecond(Date.now(), dirtyDate)
+}
diff --git a/date-fns/src/isThisSecond/test.ts b/date-fns/src/isThisSecond/test.ts
new file mode 100644
index 0000000..125542a
--- /dev/null
+++ b/date-fns/src/isThisSecond/test.ts
@@ -0,0 +1,39 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'assert'
+import sinon from 'sinon'
+import isThisSecond from '.'
+
+describe('isThisSecond', () => {
+ let clock: sinon.SinonFakeTimers
+ beforeEach(() => {
+ clock = sinon.useFakeTimers(
+ new Date(2014, 8 /* Sep */, 25, 18, 30, 15, 500).getTime()
+ )
+ })
+
+ afterEach(() => {
+ clock.restore()
+ })
+
+ it('returns true if the given date and the current date have the same second', () => {
+ const date = new Date(2014, 8 /* Sep */, 25, 18, 30, 15)
+ assert(isThisSecond(date) === true)
+ })
+
+ it('returns false if the given date and the current date have different seconds', () => {
+ const date = new Date(2014, 8 /* Sep */, 25, 18, 30, 16)
+ assert(isThisSecond(date) === false)
+ })
+
+ it('accepts a timestamp', () => {
+ const date = new Date(2014, 8 /* Sep */, 25, 18, 30, 15, 250).getTime()
+ assert(isThisSecond(date) === true)
+ })
+
+ it('throws TypeError exception if passed less than 1 argument', function() {
+ // @ts-expect-error
+ assert.throws(isThisSecond.bind(null), TypeError)
+ })
+})
diff --git a/date-fns/src/isThisWeek/benchmark.js b/date-fns/src/isThisWeek/benchmark.js
new file mode 100644
index 0000000..ac9676f
--- /dev/null
+++ b/date-fns/src/isThisWeek/benchmark.js
@@ -0,0 +1,20 @@
+// @flow
+/* eslint-env mocha */
+
+/* global suite, benchmark */
+
+import isThisWeek from '.'
+
+suite(
+ 'isThisWeek',
+ () => {
+ benchmark('date-fns', function() {
+ return isThisWeek(this.date)
+ })
+ },
+ {
+ setup: function() {
+ this.date = new Date()
+ }
+ }
+)
diff --git a/date-fns/src/isThisWeek/index.d.ts b/date-fns/src/isThisWeek/index.d.ts
new file mode 100644
index 0000000..b22ba53
--- /dev/null
+++ b/date-fns/src/isThisWeek/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { isThisWeek } from 'date-fns'
+export default isThisWeek
diff --git a/date-fns/src/isThisWeek/index.js.flow b/date-fns/src/isThisWeek/index.js.flow
new file mode 100644
index 0000000..579c74a
--- /dev/null
+++ b/date-fns/src/isThisWeek/index.js.flow
@@ -0,0 +1,58 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (
+ date: Date | number,
+ options?: {
+ locale?: Locale,
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ }
+) => boolean
diff --git a/date-fns/src/isThisWeek/index.ts b/date-fns/src/isThisWeek/index.ts
new file mode 100644
index 0000000..4d08327
--- /dev/null
+++ b/date-fns/src/isThisWeek/index.ts
@@ -0,0 +1,48 @@
+import isSameWeek from '../isSameWeek/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+import { LocaleOptions, WeekStartOptions } from '../types'
+
+/**
+ * @name isThisWeek
+ * @category Week Helpers
+ * @summary Is the given date in the same week as the current date?
+ * @pure false
+ *
+ * @description
+ * Is the given date in the same week as the current date?
+ *
+ * > ⚠️ Please note that this function is not present in the FP submodule as
+ * > it uses `Date.now()` internally hence impure and can't be safely curried.
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} date - the date to check
+ * @param {Object} [options] - the object with options
+ * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}
+ * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)
+ * @returns {Boolean} the date is in this week
+ * @throws {TypeError} 1 argument required
+ * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6
+ *
+ * @example
+ * // If today is 25 September 2014, is 21 September 2014 in this week?
+ * var result = isThisWeek(new Date(2014, 8, 21))
+ * //=> true
+ *
+ * @example
+ * // If today is 25 September 2014 and week starts with Monday
+ * // is 21 September 2014 in this week?
+ * var result = isThisWeek(new Date(2014, 8, 21), { weekStartsOn: 1 })
+ * //=> false
+ */
+
+export default function isThisWeek(
+ dirtyDate: Date | number,
+ options?: LocaleOptions & WeekStartOptions
+): boolean {
+ requiredArgs(1, arguments)
+
+ return isSameWeek(dirtyDate, Date.now(), options)
+}
diff --git a/date-fns/src/isThisWeek/test.ts b/date-fns/src/isThisWeek/test.ts
new file mode 100644
index 0000000..e6e323d
--- /dev/null
+++ b/date-fns/src/isThisWeek/test.ts
@@ -0,0 +1,42 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'assert'
+import sinon from 'sinon'
+import isThisWeek from '.'
+
+describe('isThisWeek', () => {
+ let clock: sinon.SinonFakeTimers
+ beforeEach(() => {
+ clock = sinon.useFakeTimers(new Date(2014, 8 /* Sep */, 25).getTime())
+ })
+
+ afterEach(() => {
+ clock.restore()
+ })
+
+ it('returns true if the given date and the current date have the same week', () => {
+ const date = new Date(2014, 8 /* Sep */, 21)
+ assert(isThisWeek(date) === true)
+ })
+
+ it('returns false if the given date and the current date have different weeks', () => {
+ const date = new Date(2014, 8 /* Sep */, 29)
+ assert(isThisWeek(date) === false)
+ })
+
+ it('allows to specify which day is the first day of the week', () => {
+ const date = new Date(2014, 8 /* Sep */, 28)
+ assert(isThisWeek(date, { weekStartsOn: 1 }) === true)
+ })
+
+ it('accepts a timestamp', () => {
+ const date = new Date(2014, 8 /* Sep */, 21).getTime()
+ assert(isThisWeek(date) === true)
+ })
+
+ it('throws TypeError exception if passed less than 1 argument', function() {
+ // @ts-expect-error
+ assert.throws(isThisWeek.bind(null), TypeError)
+ })
+})
diff --git a/date-fns/src/isThisYear/benchmark.js b/date-fns/src/isThisYear/benchmark.js
new file mode 100644
index 0000000..7dab3f6
--- /dev/null
+++ b/date-fns/src/isThisYear/benchmark.js
@@ -0,0 +1,19 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import isThisYear from '.'
+
+suite(
+ 'isThisYear',
+ () => {
+ benchmark('date-fns', function() {
+ return isThisYear(this.date)
+ })
+ },
+ {
+ setup: function() {
+ this.date = new Date()
+ }
+ }
+)
diff --git a/date-fns/src/isThisYear/index.d.ts b/date-fns/src/isThisYear/index.d.ts
new file mode 100644
index 0000000..b95f1be
--- /dev/null
+++ b/date-fns/src/isThisYear/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { isThisYear } from 'date-fns'
+export default isThisYear
diff --git a/date-fns/src/isThisYear/index.js.flow b/date-fns/src/isThisYear/index.js.flow
new file mode 100644
index 0000000..d3f01ee
--- /dev/null
+++ b/date-fns/src/isThisYear/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (date: Date | number) => boolean
diff --git a/date-fns/src/isThisYear/index.ts b/date-fns/src/isThisYear/index.ts
new file mode 100644
index 0000000..bcab724
--- /dev/null
+++ b/date-fns/src/isThisYear/index.ts
@@ -0,0 +1,33 @@
+import isSameYear from '../isSameYear/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name isThisYear
+ * @category Year Helpers
+ * @summary Is the given date in the same year as the current date?
+ * @pure false
+ *
+ * @description
+ * Is the given date in the same year as the current date?
+ *
+ * > ⚠️ Please note that this function is not present in the FP submodule as
+ * > it uses `Date.now()` internally hence impure and can't be safely curried.
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} date - the date to check
+ * @returns {Boolean} the date is in this year
+ * @throws {TypeError} 1 argument required
+ *
+ * @example
+ * // If today is 25 September 2014, is 2 July 2014 in this year?
+ * var result = isThisYear(new Date(2014, 6, 2))
+ * //=> true
+ */
+export default function isThisYear(dirtyDate: Date | number): boolean {
+ requiredArgs(1, arguments)
+
+ return isSameYear(dirtyDate, Date.now())
+}
diff --git a/date-fns/src/isThisYear/test.ts b/date-fns/src/isThisYear/test.ts
new file mode 100644
index 0000000..8e9bc79
--- /dev/null
+++ b/date-fns/src/isThisYear/test.ts
@@ -0,0 +1,37 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'assert'
+import sinon from 'sinon'
+import isThisYear from '.'
+
+describe('isThisYear', () => {
+ let clock: sinon.SinonFakeTimers
+ beforeEach(() => {
+ clock = sinon.useFakeTimers(new Date(2014, 8 /* Sep */, 25).getTime())
+ })
+
+ afterEach(() => {
+ clock.restore()
+ })
+
+ it('returns true if the given date and the current date have the same year', () => {
+ const date = new Date(2014, 6 /* Jul */, 2)
+ assert(isThisYear(date) === true)
+ })
+
+ it('returns false if the given date and the current date have different years', () => {
+ const date = new Date(2015, 6 /* Jul */, 2)
+ assert(isThisYear(date) === false)
+ })
+
+ it('accepts a timestamp', () => {
+ const date = new Date(2014, 6 /* Jul */, 2).getTime()
+ assert(isThisYear(date) === true)
+ })
+
+ it('throws TypeError exception if passed less than 1 argument', function() {
+ // @ts-expect-error
+ assert.throws(isThisYear.bind(null), TypeError)
+ })
+})
diff --git a/date-fns/src/isThursday/benchmark.js b/date-fns/src/isThursday/benchmark.js
new file mode 100644
index 0000000..0f86b64
--- /dev/null
+++ b/date-fns/src/isThursday/benchmark.js
@@ -0,0 +1,15 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import isThursday from '.'
+
+suite('isThursday', function () {
+ benchmark('date-fns', function () {
+ return isThursday(this.date)
+ })
+}, {
+ setup: function () {
+ this.date = new Date()
+ }
+})
diff --git a/date-fns/src/isThursday/index.d.ts b/date-fns/src/isThursday/index.d.ts
new file mode 100644
index 0000000..2f25237
--- /dev/null
+++ b/date-fns/src/isThursday/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { isThursday } from 'date-fns'
+export default isThursday
diff --git a/date-fns/src/isThursday/index.js.flow b/date-fns/src/isThursday/index.js.flow
new file mode 100644
index 0000000..d3f01ee
--- /dev/null
+++ b/date-fns/src/isThursday/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (date: Date | number) => boolean
diff --git a/date-fns/src/isThursday/index.ts b/date-fns/src/isThursday/index.ts
new file mode 100644
index 0000000..bb35618
--- /dev/null
+++ b/date-fns/src/isThursday/index.ts
@@ -0,0 +1,29 @@
+import toDate from '../toDate/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name isThursday
+ * @category Weekday Helpers
+ * @summary Is the given date Thursday?
+ *
+ * @description
+ * Is the given date Thursday?
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} date - the date to check
+ * @returns {Boolean} the date is Thursday
+ * @throws {TypeError} 1 argument required
+ *
+ * @example
+ * // Is 25 September 2014 Thursday?
+ * var result = isThursday(new Date(2014, 8, 25))
+ * //=> true
+ */
+export default function isThursday(dirtyDate: Date | number): boolean {
+ requiredArgs(1, arguments)
+
+ return toDate(dirtyDate).getDay() === 4
+}
diff --git a/date-fns/src/isThursday/test.ts b/date-fns/src/isThursday/test.ts
new file mode 100644
index 0000000..a51bf0f
--- /dev/null
+++ b/date-fns/src/isThursday/test.ts
@@ -0,0 +1,31 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import isThursday from '.'
+
+describe('isThursday', function() {
+ it('returns true if the given date is Thursday', function() {
+ const result = isThursday(new Date(2014, 8 /* Sep */, 25))
+ assert(result === true)
+ })
+
+ it('returns false if the given date is not Thursday', function() {
+ const result = isThursday(new Date(2014, 8 /* Sep */, 24))
+ assert(result === false)
+ })
+
+ it('accepts a timestamp', function() {
+ const result = isThursday(new Date(2014, 1 /* Feb */, 13).getTime())
+ assert(result === true)
+ })
+
+ it('returns false if the given date is `Invalid Date`', function() {
+ const result = isThursday(new Date(NaN))
+ assert(result === false)
+ })
+
+ it('throws TypeError exception if passed less than 1 argument', function() {
+ assert.throws(isThursday.bind(null), TypeError)
+ })
+})
diff --git a/date-fns/src/isToday/benchmark.js b/date-fns/src/isToday/benchmark.js
new file mode 100644
index 0000000..e31d41a
--- /dev/null
+++ b/date-fns/src/isToday/benchmark.js
@@ -0,0 +1,19 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import isToday from '.'
+
+suite(
+ 'isToday',
+ () => {
+ benchmark('date-fns', function() {
+ return isToday(this.date)
+ })
+ },
+ {
+ setup: function() {
+ this.date = new Date()
+ }
+ }
+)
diff --git a/date-fns/src/isToday/index.d.ts b/date-fns/src/isToday/index.d.ts
new file mode 100644
index 0000000..ed0cd15
--- /dev/null
+++ b/date-fns/src/isToday/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { isToday } from 'date-fns'
+export default isToday
diff --git a/date-fns/src/isToday/index.js.flow b/date-fns/src/isToday/index.js.flow
new file mode 100644
index 0000000..d3f01ee
--- /dev/null
+++ b/date-fns/src/isToday/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (date: Date | number) => boolean
diff --git a/date-fns/src/isToday/index.ts b/date-fns/src/isToday/index.ts
new file mode 100644
index 0000000..91514d1
--- /dev/null
+++ b/date-fns/src/isToday/index.ts
@@ -0,0 +1,33 @@
+import isSameDay from '../isSameDay/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name isToday
+ * @category Day Helpers
+ * @summary Is the given date today?
+ * @pure false
+ *
+ * @description
+ * Is the given date today?
+ *
+ * > ⚠️ Please note that this function is not present in the FP submodule as
+ * > it uses `Date.now()` internally hence impure and can't be safely curried.
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} date - the date to check
+ * @returns {Boolean} the date is today
+ * @throws {TypeError} 1 argument required
+ *
+ * @example
+ * // If today is 6 October 2014, is 6 October 14:00:00 today?
+ * var result = isToday(new Date(2014, 9, 6, 14, 0))
+ * //=> true
+ */
+export default function isToday(dirtyDate: Date | number): boolean {
+ requiredArgs(1, arguments)
+
+ return isSameDay(dirtyDate, Date.now())
+}
diff --git a/date-fns/src/isToday/test.ts b/date-fns/src/isToday/test.ts
new file mode 100644
index 0000000..c68191f
--- /dev/null
+++ b/date-fns/src/isToday/test.ts
@@ -0,0 +1,37 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'assert'
+import sinon from 'sinon'
+import isToday from '.'
+
+describe('isToday', function() {
+ let clock: sinon.SinonFakeTimers
+ beforeEach(function() {
+ clock = sinon.useFakeTimers(new Date(2014, 8 /* Sep */, 25).getTime())
+ })
+
+ afterEach(function() {
+ clock.restore()
+ })
+
+ it('returns true if the given date is today', function() {
+ const result = isToday(new Date(2014, 8 /* Sep */, 25))
+ assert(result === true)
+ })
+
+ it('returns false if the given date is not today', function() {
+ const result = isToday(new Date(2014, 8 /* Sep */, 26))
+ assert(result === false)
+ })
+
+ it('accepts a timestamp', function() {
+ const result = isToday(new Date(2014, 8 /* Sep */, 25).getTime())
+ assert(result === true)
+ })
+
+ it('throws TypeError exception if passed less than 1 argument', () => {
+ // @ts-expect-error
+ assert.throws(isToday.bind(null), TypeError)
+ })
+})
diff --git a/date-fns/src/isTomorrow/benchmark.js b/date-fns/src/isTomorrow/benchmark.js
new file mode 100644
index 0000000..b15319b
--- /dev/null
+++ b/date-fns/src/isTomorrow/benchmark.js
@@ -0,0 +1,19 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import isTomorrow from '.'
+
+suite(
+ 'isTomorrow',
+ () => {
+ benchmark('date-fns', function() {
+ return isTomorrow(this.date)
+ })
+ },
+ {
+ setup: function() {
+ this.date = new Date()
+ }
+ }
+)
diff --git a/date-fns/src/isTomorrow/index.d.ts b/date-fns/src/isTomorrow/index.d.ts
new file mode 100644
index 0000000..b9c9115
--- /dev/null
+++ b/date-fns/src/isTomorrow/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { isTomorrow } from 'date-fns'
+export default isTomorrow
diff --git a/date-fns/src/isTomorrow/index.js.flow b/date-fns/src/isTomorrow/index.js.flow
new file mode 100644
index 0000000..d3f01ee
--- /dev/null
+++ b/date-fns/src/isTomorrow/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (date: Date | number) => boolean
diff --git a/date-fns/src/isTomorrow/index.ts b/date-fns/src/isTomorrow/index.ts
new file mode 100644
index 0000000..e7169c9
--- /dev/null
+++ b/date-fns/src/isTomorrow/index.ts
@@ -0,0 +1,34 @@
+import addDays from '../addDays/index'
+import isSameDay from '../isSameDay/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name isTomorrow
+ * @category Day Helpers
+ * @summary Is the given date tomorrow?
+ * @pure false
+ *
+ * @description
+ * Is the given date tomorrow?
+ *
+ * > ⚠️ Please note that this function is not present in the FP submodule as
+ * > it uses `Date.now()` internally hence impure and can't be safely curried.
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} date - the date to check
+ * @returns {Boolean} the date is tomorrow
+ * @throws {TypeError} 1 argument required
+ *
+ * @example
+ * // If today is 6 October 2014, is 7 October 14:00:00 tomorrow?
+ * var result = isTomorrow(new Date(2014, 9, 7, 14, 0))
+ * //=> true
+ */
+export default function isTomorrow(dirtyDate: Date | number): boolean {
+ requiredArgs(1, arguments)
+
+ return isSameDay(dirtyDate, addDays(Date.now(), 1))
+}
diff --git a/date-fns/src/isTomorrow/test.ts b/date-fns/src/isTomorrow/test.ts
new file mode 100644
index 0000000..b442c8a
--- /dev/null
+++ b/date-fns/src/isTomorrow/test.ts
@@ -0,0 +1,37 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'assert'
+import sinon from 'sinon'
+import isTomorrow from '.'
+
+describe('isTomorrow', () => {
+ let clock: sinon.SinonFakeTimers
+ beforeEach(() => {
+ clock = sinon.useFakeTimers(new Date(2014, 8 /* Aug */, 25).getTime())
+ })
+
+ afterEach(() => {
+ clock.restore()
+ })
+
+ it('returns true if the given date is tomorrow', () => {
+ const result = isTomorrow(new Date(2014, 8 /* Sep */, 26))
+ assert(result === true)
+ })
+
+ it('returns false if the given date is not tomorrow', () => {
+ const result = isTomorrow(new Date(2014, 8 /* Sep */, 25))
+ assert(result === false)
+ })
+
+ it('accepts a timestamp', () => {
+ const result = isTomorrow(new Date(2014, 8 /* Sep */, 26).getTime())
+ assert(result === true)
+ })
+
+ it('throws TypeError exception if passed less than 1 argument', () => {
+ // @ts-expect-error
+ assert.throws(isTomorrow.bind(null), TypeError)
+ })
+})
diff --git a/date-fns/src/isTuesday/benchmark.js b/date-fns/src/isTuesday/benchmark.js
new file mode 100644
index 0000000..344e24b
--- /dev/null
+++ b/date-fns/src/isTuesday/benchmark.js
@@ -0,0 +1,15 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import isTuesday from '.'
+
+suite('isTuesday', function () {
+ benchmark('date-fns', function () {
+ return isTuesday(this.date)
+ })
+}, {
+ setup: function () {
+ this.date = new Date()
+ }
+})
diff --git a/date-fns/src/isTuesday/index.d.ts b/date-fns/src/isTuesday/index.d.ts
new file mode 100644
index 0000000..87c7ceb
--- /dev/null
+++ b/date-fns/src/isTuesday/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { isTuesday } from 'date-fns'
+export default isTuesday
diff --git a/date-fns/src/isTuesday/index.js.flow b/date-fns/src/isTuesday/index.js.flow
new file mode 100644
index 0000000..d3f01ee
--- /dev/null
+++ b/date-fns/src/isTuesday/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (date: Date | number) => boolean
diff --git a/date-fns/src/isTuesday/index.ts b/date-fns/src/isTuesday/index.ts
new file mode 100644
index 0000000..7b534ff
--- /dev/null
+++ b/date-fns/src/isTuesday/index.ts
@@ -0,0 +1,29 @@
+import toDate from '../toDate/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name isTuesday
+ * @category Weekday Helpers
+ * @summary Is the given date Tuesday?
+ *
+ * @description
+ * Is the given date Tuesday?
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} date - the date to check
+ * @returns {Boolean} the date is Tuesday
+ * @throws {TypeError} 1 argument required
+ *
+ * @example
+ * // Is 23 September 2014 Tuesday?
+ * var result = isTuesday(new Date(2014, 8, 23))
+ * //=> true
+ */
+export default function isTuesday(dirtyDate: Date | number): boolean {
+ requiredArgs(1, arguments)
+
+ return toDate(dirtyDate).getDay() === 2
+}
diff --git a/date-fns/src/isTuesday/test.ts b/date-fns/src/isTuesday/test.ts
new file mode 100644
index 0000000..45335a5
--- /dev/null
+++ b/date-fns/src/isTuesday/test.ts
@@ -0,0 +1,31 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import isTuesday from '.'
+
+describe('isTuesday', function() {
+ it('returns true if the given date is Tuesday', function() {
+ const result = isTuesday(new Date(2014, 8 /* Sep */, 23))
+ assert(result === true)
+ })
+
+ it('returns false if the given date is not Tuesday', function() {
+ const result = isTuesday(new Date(2014, 8 /* Sep */, 25))
+ assert(result === false)
+ })
+
+ it('accepts a timestamp', function() {
+ const result = isTuesday(new Date(2014, 1 /* Feb */, 11).getTime())
+ assert(result === true)
+ })
+
+ it('returns false if the given date is `Invalid Date`', function() {
+ const result = isTuesday(new Date(NaN))
+ assert(result === false)
+ })
+
+ it('throws TypeError exception if passed less than 1 argument', function() {
+ assert.throws(isTuesday.bind(null), TypeError)
+ })
+})
diff --git a/date-fns/src/isValid/benchmark.js b/date-fns/src/isValid/benchmark.js
new file mode 100644
index 0000000..c935bc8
--- /dev/null
+++ b/date-fns/src/isValid/benchmark.js
@@ -0,0 +1,21 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import isValid from '.'
+import moment from 'moment'
+
+suite('isValid', function () {
+ benchmark('date-fns', function () {
+ return isValid(this.invalidDate)
+ })
+
+ benchmark('Moment.js', function () {
+ return this.invalidMoment.isValid()
+ })
+}, {
+ setup: function () {
+ this.invalidDate = new Date(NaN)
+ this.invalidMoment = moment(new Date(NaN))
+ }
+})
diff --git a/date-fns/src/isValid/index.d.ts b/date-fns/src/isValid/index.d.ts
new file mode 100644
index 0000000..26ad11d
--- /dev/null
+++ b/date-fns/src/isValid/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { isValid } from 'date-fns'
+export default isValid
diff --git a/date-fns/src/isValid/index.js b/date-fns/src/isValid/index.js
new file mode 100644
index 0000000..854c97e
--- /dev/null
+++ b/date-fns/src/isValid/index.js
@@ -0,0 +1,66 @@
+import toDate from '../toDate/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name isValid
+ * @category Common Helpers
+ * @summary Is the given date valid?
+ *
+ * @description
+ * Returns false if argument is Invalid Date and true otherwise.
+ * Argument is converted to Date using `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}
+ * Invalid Date is a Date, whose time value is NaN.
+ *
+ * Time value of Date: http://es5.github.io/#x15.9.1.1
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * - Now `isValid` doesn't throw an exception
+ * if the first argument is not an instance of Date.
+ * Instead, argument is converted beforehand using `toDate`.
+ *
+ * Examples:
+ *
+ * | `isValid` argument | Before v2.0.0 | v2.0.0 onward |
+ * |---------------------------|---------------|---------------|
+ * | `new Date()` | `true` | `true` |
+ * | `new Date('2016-01-01')` | `true` | `true` |
+ * | `new Date('')` | `false` | `false` |
+ * | `new Date(1488370835081)` | `true` | `true` |
+ * | `new Date(NaN)` | `false` | `false` |
+ * | `'2016-01-01'` | `TypeError` | `false` |
+ * | `''` | `TypeError` | `false` |
+ * | `1488370835081` | `TypeError` | `true` |
+ * | `NaN` | `TypeError` | `false` |
+ *
+ * We introduce this change to make *date-fns* consistent with ECMAScript behavior
+ * that try to coerce arguments to the expected type
+ * (which is also the case with other *date-fns* functions).
+ *
+ * @param {*} date - the date to check
+ * @returns {Boolean} the date is valid
+ * @throws {TypeError} 1 argument required
+ *
+ * @example
+ * // For the valid date:
+ * var result = isValid(new Date(2014, 1, 31))
+ * //=> true
+ *
+ * @example
+ * // For the value, convertable into a date:
+ * var result = isValid(1393804800000)
+ * //=> true
+ *
+ * @example
+ * // For the invalid date:
+ * var result = isValid(new Date(''))
+ * //=> false
+ */
+export default function isValid(dirtyDate) {
+ requiredArgs(1, arguments)
+
+ var date = toDate(dirtyDate)
+ return !isNaN(date)
+}
diff --git a/date-fns/src/isValid/index.js.flow b/date-fns/src/isValid/index.js.flow
new file mode 100644
index 0000000..5bae5e0
--- /dev/null
+++ b/date-fns/src/isValid/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (date: any) => boolean
diff --git a/date-fns/src/isValid/test.js b/date-fns/src/isValid/test.js
new file mode 100644
index 0000000..95cb078
--- /dev/null
+++ b/date-fns/src/isValid/test.js
@@ -0,0 +1,31 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import isValid from '.'
+
+describe('isValid', function() {
+ it('returns true if the given date is valid', function() {
+ var result = isValid(new Date())
+ assert(result === true)
+ })
+
+ it('returns false if the given date is invalid', function() {
+ var result = isValid(new Date(''))
+ assert(result === false)
+ })
+
+ it('accepts a timestamp', function() {
+ assert(isValid(new Date(2014, 1 /* Feb */, 11).getTime()) === true)
+ assert(isValid(NaN) === false)
+ })
+
+ it('treats null as an invalid date', function() {
+ var result = isValid(null)
+ assert(result === false)
+ })
+
+ it('throws TypeError exception if passed less than 1 argument', function() {
+ assert.throws(isValid.bind(null), TypeError)
+ })
+})
diff --git a/date-fns/src/isWednesday/benchmark.js b/date-fns/src/isWednesday/benchmark.js
new file mode 100644
index 0000000..80a6c1e
--- /dev/null
+++ b/date-fns/src/isWednesday/benchmark.js
@@ -0,0 +1,15 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import isWednesday from '.'
+
+suite('isWednesday', function () {
+ benchmark('date-fns', function () {
+ return isWednesday(this.date)
+ })
+}, {
+ setup: function () {
+ this.date = new Date()
+ }
+})
diff --git a/date-fns/src/isWednesday/index.d.ts b/date-fns/src/isWednesday/index.d.ts
new file mode 100644
index 0000000..e517a93
--- /dev/null
+++ b/date-fns/src/isWednesday/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { isWednesday } from 'date-fns'
+export default isWednesday
diff --git a/date-fns/src/isWednesday/index.js.flow b/date-fns/src/isWednesday/index.js.flow
new file mode 100644
index 0000000..d3f01ee
--- /dev/null
+++ b/date-fns/src/isWednesday/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (date: Date | number) => boolean
diff --git a/date-fns/src/isWednesday/index.ts b/date-fns/src/isWednesday/index.ts
new file mode 100644
index 0000000..f5bf434
--- /dev/null
+++ b/date-fns/src/isWednesday/index.ts
@@ -0,0 +1,29 @@
+import toDate from '../toDate/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name isWednesday
+ * @category Weekday Helpers
+ * @summary Is the given date Wednesday?
+ *
+ * @description
+ * Is the given date Wednesday?
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} date - the date to check
+ * @returns {Boolean} the date is Wednesday
+ * @throws {TypeError} 1 argument required
+ *
+ * @example
+ * // Is 24 September 2014 Wednesday?
+ * const result = isWednesday(new Date(2014, 8, 24))
+ * //=> true
+ */
+export default function isWednesday(dirtyDate: Date | number): boolean {
+ requiredArgs(1, arguments)
+
+ return toDate(dirtyDate).getDay() === 3
+}
diff --git a/date-fns/src/isWednesday/test.ts b/date-fns/src/isWednesday/test.ts
new file mode 100644
index 0000000..c4b1a7a
--- /dev/null
+++ b/date-fns/src/isWednesday/test.ts
@@ -0,0 +1,31 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import isWednesday from '.'
+
+describe('isWednesday', function () {
+ it('returns true if the given date is Wednesday', function () {
+ const result = isWednesday(new Date(2014, 8 /* Sep */, 24))
+ assert(result === true)
+ })
+
+ it('returns false if the given date is not Wednesday', function () {
+ const result = isWednesday(new Date(2014, 8 /* Sep */, 25))
+ assert(result === false)
+ })
+
+ it('accepts a timestamp', function () {
+ const result = isWednesday(new Date(2014, 1 /* Feb */, 12).getTime())
+ assert(result === true)
+ })
+
+ it('returns false if the given date is `Invalid Date`', function () {
+ const result = isWednesday(new Date(NaN))
+ assert(result === false)
+ })
+
+ it('throws TypeError exception if passed less than 1 argument', function () {
+ assert.throws(isWednesday.bind(null), TypeError)
+ })
+})
diff --git a/date-fns/src/isWeekend/benchmark.js b/date-fns/src/isWeekend/benchmark.js
new file mode 100644
index 0000000..3152276
--- /dev/null
+++ b/date-fns/src/isWeekend/benchmark.js
@@ -0,0 +1,15 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import isWeekend from '.'
+
+suite('isWeekend', function () {
+ benchmark('date-fns', function () {
+ return isWeekend(this.date)
+ })
+}, {
+ setup: function () {
+ this.date = new Date()
+ }
+})
diff --git a/date-fns/src/isWeekend/index.d.ts b/date-fns/src/isWeekend/index.d.ts
new file mode 100644
index 0000000..3e54f31
--- /dev/null
+++ b/date-fns/src/isWeekend/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { isWeekend } from 'date-fns'
+export default isWeekend
diff --git a/date-fns/src/isWeekend/index.js.flow b/date-fns/src/isWeekend/index.js.flow
new file mode 100644
index 0000000..d3f01ee
--- /dev/null
+++ b/date-fns/src/isWeekend/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (date: Date | number) => boolean
diff --git a/date-fns/src/isWeekend/index.ts b/date-fns/src/isWeekend/index.ts
new file mode 100644
index 0000000..9eebd6b
--- /dev/null
+++ b/date-fns/src/isWeekend/index.ts
@@ -0,0 +1,31 @@
+import toDate from '../toDate/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name isWeekend
+ * @category Weekday Helpers
+ * @summary Does the given date fall on a weekend?
+ *
+ * @description
+ * Does the given date fall on a weekend?
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} date - the date to check
+ * @returns {Boolean} the date falls on a weekend
+ * @throws {TypeError} 1 argument required
+ *
+ * @example
+ * // Does 5 October 2014 fall on a weekend?
+ * const result = isWeekend(new Date(2014, 9, 5))
+ * //=> true
+ */
+export default function isWeekend(dirtyDate: Date | number): boolean {
+ requiredArgs(1, arguments)
+
+ const date = toDate(dirtyDate)
+ const day = date.getDay()
+ return day === 0 || day === 6
+}
diff --git a/date-fns/src/isWeekend/test.ts b/date-fns/src/isWeekend/test.ts
new file mode 100644
index 0000000..750ecaa
--- /dev/null
+++ b/date-fns/src/isWeekend/test.ts
@@ -0,0 +1,31 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import isWeekend from '.'
+
+describe('isWeekend', function () {
+ it('returns true if the given date is in a weekend', function () {
+ const result = isWeekend(new Date(2014, 9 /* Oct */, 5))
+ assert(result === true)
+ })
+
+ it('returns false if the given date is not in a weekend', function () {
+ const result = isWeekend(new Date(2014, 9 /* Oct */, 6))
+ assert(result === false)
+ })
+
+ it('accepts a timestamp', function () {
+ const result = isWeekend(new Date(2014, 9 /* Oct */, 5).getTime())
+ assert(result === true)
+ })
+
+ it('returns false if the given date is `Invalid Date`', function () {
+ const result = isWeekend(new Date(NaN))
+ assert(result === false)
+ })
+
+ it('throws TypeError exception if passed less than 1 argument', function () {
+ assert.throws(isWeekend.bind(null), TypeError)
+ })
+})
diff --git a/date-fns/src/isWithinInterval/benchmark.js b/date-fns/src/isWithinInterval/benchmark.js
new file mode 100644
index 0000000..e672457
--- /dev/null
+++ b/date-fns/src/isWithinInterval/benchmark.js
@@ -0,0 +1,25 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import isWithinInterval from '.'
+import moment from 'moment'
+
+suite('isWithinInterval', function () {
+ benchmark('date-fns', function () {
+ return isWithinInterval(this.dateA, {start: this.dateB, end: this.dateC})
+ })
+
+ benchmark('Moment.js', function () {
+ return this.momentA.isBetween(this.momentB, this.momentC)
+ })
+}, {
+ setup: function () {
+ this.dateA = new Date()
+ this.momentA = moment()
+ this.dateB = new Date(this.dateA.getTime() - 604800000)
+ this.momentB = this.momentA.clone().subtract(7, 'days')
+ this.dateC = new Date(this.dateA.getTime() + 604800000)
+ this.momentC = this.momentA.clone().add(7, 'days')
+ }
+})
diff --git a/date-fns/src/isWithinInterval/index.d.ts b/date-fns/src/isWithinInterval/index.d.ts
new file mode 100644
index 0000000..17339db
--- /dev/null
+++ b/date-fns/src/isWithinInterval/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { isWithinInterval } from 'date-fns'
+export default isWithinInterval
diff --git a/date-fns/src/isWithinInterval/index.js.flow b/date-fns/src/isWithinInterval/index.js.flow
new file mode 100644
index 0000000..f870053
--- /dev/null
+++ b/date-fns/src/isWithinInterval/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (date: Date | number, interval: Interval) => boolean
diff --git a/date-fns/src/isWithinInterval/index.ts b/date-fns/src/isWithinInterval/index.ts
new file mode 100644
index 0000000..c6af6a0
--- /dev/null
+++ b/date-fns/src/isWithinInterval/index.ts
@@ -0,0 +1,91 @@
+import toDate from '../toDate/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+import { Interval } from '../types'
+
+/**
+ * @name isWithinInterval
+ * @category Interval Helpers
+ * @summary Is the given date within the interval?
+ *
+ * @description
+ * Is the given date within the interval? (Including start and end.)
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * - The function was renamed from `isWithinRange` to `isWithinInterval`.
+ * This change was made to mirror the use of the word "interval" in standard ISO 8601:2004 terminology:
+ *
+ * ```
+ * 2.1.3
+ * time interval
+ * part of the time axis limited by two instants
+ * ```
+ *
+ * Also, this function now accepts an object with `start` and `end` properties
+ * instead of two arguments as an interval.
+ * This function now throws `RangeError` if the start of the interval is after its end
+ * or if any date in the interval is `Invalid Date`.
+ *
+ * ```javascript
+ * // Before v2.0.0
+ *
+ * isWithinRange(
+ * new Date(2014, 0, 3),
+ * new Date(2014, 0, 1), new Date(2014, 0, 7)
+ * )
+ *
+ * // v2.0.0 onward
+ *
+ * isWithinInterval(
+ * new Date(2014, 0, 3),
+ * { start: new Date(2014, 0, 1), end: new Date(2014, 0, 7) }
+ * )
+ * ```
+ *
+ * @param {Date|Number} date - the date to check
+ * @param {Interval} interval - the interval to check
+ * @returns {Boolean} the date is within the interval
+ * @throws {TypeError} 2 arguments required
+ * @throws {RangeError} The start of an interval cannot be after its end
+ * @throws {RangeError} Date in interval cannot be `Invalid Date`
+ *
+ * @example
+ * // For the date within the interval:
+ * isWithinInterval(new Date(2014, 0, 3), {
+ * start: new Date(2014, 0, 1),
+ * end: new Date(2014, 0, 7)
+ * })
+ * //=> true
+ *
+ * @example
+ * // For the date outside of the interval:
+ * isWithinInterval(new Date(2014, 0, 10), {
+ * start: new Date(2014, 0, 1),
+ * end: new Date(2014, 0, 7)
+ * })
+ * //=> false
+ *
+ * @example
+ * // For date equal to interval start:
+ * isWithinInterval(date, { start, end: date }) // => true
+ *
+ * @example
+ * // For date equal to interval end:
+ * isWithinInterval(date, { start: date, end }) // => true
+ */
+export default function isWithinInterval(dirtyDate: Date | number, interval: Interval): boolean {
+ requiredArgs(2, arguments)
+
+ const time = toDate(dirtyDate).getTime()
+ const startTime = toDate(interval.start).getTime()
+ const endTime = toDate(interval.end).getTime()
+
+ // Throw an exception if start date is after end date or if any date is `Invalid Date`
+ if (!(startTime <= endTime)) {
+ throw new RangeError('Invalid interval')
+ }
+
+ return time >= startTime && time <= endTime
+}
diff --git a/date-fns/src/isWithinInterval/test.ts b/date-fns/src/isWithinInterval/test.ts
new file mode 100644
index 0000000..b7ebe1f
--- /dev/null
+++ b/date-fns/src/isWithinInterval/test.ts
@@ -0,0 +1,104 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'assert'
+import isWithinInterval from '.'
+
+describe('isWithinInterval', function() {
+ it('returns true if the given date in within the given interval', function() {
+ const result = isWithinInterval(new Date(2014, 9 /* Oct */, 31), {
+ start: new Date(2014, 8 /* Sep */, 1),
+ end: new Date(2014, 11 /* Dec */, 31)
+ })
+ assert(result === true)
+ })
+
+ it('returns true if the given date has same time as the left boundary of the interval', function() {
+ const result = isWithinInterval(new Date(2014, 8 /* Sep */, 1), {
+ start: new Date(2014, 8 /* Sep */, 1),
+ end: new Date(2014, 11 /* Dec */, 31)
+ })
+ assert(result === true)
+ })
+
+ it('returns true if the given date has same time as the right boundary of the interval', function() {
+ const result = isWithinInterval(new Date(2014, 11 /* Dec */, 31), {
+ start: new Date(2014, 8 /* Sep */, 1),
+ end: new Date(2014, 11 /* Dec */, 31)
+ })
+ assert(result === true)
+ })
+
+ it('returns true if the given date and the both boundaries are the same', function() {
+ const result = isWithinInterval(new Date(2014, 11 /* Dec */, 31), {
+ start: new Date(2014, 11 /* Dec */, 31),
+ end: new Date(2014, 11 /* Dec */, 31)
+ })
+ assert(result === true)
+ })
+
+ it('returns false if the given date is outside of the interval', function() {
+ const result = isWithinInterval(new Date(2014, 1 /* Feb */, 11), {
+ start: new Date(2014, 8 /* Sep */, 1),
+ end: new Date(2014, 11 /* Dec */, 31)
+ })
+ assert(result === false)
+ })
+
+ it('accepts a timestamp', function() {
+ const result = isWithinInterval(new Date(2014, 9 /* Oct */, 31).getTime(), {
+ start: new Date(2014, 8 /* Sep */, 1).getTime(),
+ end: new Date(2014, 11 /* Dec */, 31).getTime()
+ })
+ assert(result === true)
+ })
+
+ it('throws an exception if the start date is after the end date', function() {
+ const block = isWithinInterval.bind(null, new Date(2014, 9 /* Oct */, 31), {
+ start: new Date(2014, 11 /* Dec */, 31),
+ end: new Date(2014, 8 /* Sep */, 1)
+ })
+ assert.throws(block, RangeError)
+ })
+
+ it('throws an exception if the interval is undefined', function() {
+ // @ts-expect-error
+ const block = isWithinInterval.bind(
+ null,
+ new Date(2014, 9 /* Oct */, 31),
+ undefined
+ )
+ assert.throws(block, TypeError)
+ })
+
+ it('returns false if the given date is `Invalid Date`', function() {
+ const result = isWithinInterval(new Date(NaN), {
+ start: new Date(2014, 8 /* Sep */, 1),
+ end: new Date(2014, 11 /* Dec */, 31)
+ })
+ assert(result === false)
+ })
+
+ it('throws an exception if the start date is `Invalid Date`', function() {
+ const block = isWithinInterval.bind(null, new Date(2014, 9 /* Oct */, 31), {
+ start: new Date(NaN),
+ end: new Date(2014, 8 /* Sep */, 1)
+ })
+ assert.throws(block, RangeError)
+ })
+
+ it('throws an exception if the end date is `Invalid Date`', function() {
+ const block = isWithinInterval.bind(null, new Date(2014, 9 /* Oct */, 31), {
+ start: new Date(2014, 11 /* Dec */, 31),
+ end: new Date(NaN)
+ })
+ assert.throws(block, RangeError)
+ })
+
+ it('throws TypeError exception if passed less than 2 arguments', function() {
+ // @ts-expect-error
+ assert.throws(isWithinInterval.bind(null), TypeError)
+ // @ts-expect-error
+ assert.throws(isWithinInterval.bind(null, 1), TypeError)
+ })
+})
diff --git a/date-fns/src/isYesterday/benchmark.js b/date-fns/src/isYesterday/benchmark.js
new file mode 100644
index 0000000..2e333b4
--- /dev/null
+++ b/date-fns/src/isYesterday/benchmark.js
@@ -0,0 +1,19 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import isYesterday from '.'
+
+suite(
+ 'isYesterday',
+ () => {
+ benchmark('date-fns', function() {
+ return isYesterday(this.date)
+ })
+ },
+ {
+ setup: function() {
+ this.date = new Date()
+ }
+ }
+)
diff --git a/date-fns/src/isYesterday/index.d.ts b/date-fns/src/isYesterday/index.d.ts
new file mode 100644
index 0000000..b10c635
--- /dev/null
+++ b/date-fns/src/isYesterday/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { isYesterday } from 'date-fns'
+export default isYesterday
diff --git a/date-fns/src/isYesterday/index.js.flow b/date-fns/src/isYesterday/index.js.flow
new file mode 100644
index 0000000..d3f01ee
--- /dev/null
+++ b/date-fns/src/isYesterday/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (date: Date | number) => boolean
diff --git a/date-fns/src/isYesterday/index.ts b/date-fns/src/isYesterday/index.ts
new file mode 100644
index 0000000..0946fd9
--- /dev/null
+++ b/date-fns/src/isYesterday/index.ts
@@ -0,0 +1,34 @@
+import isSameDay from '../isSameDay/index'
+import subDays from '../subDays/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name isYesterday
+ * @category Day Helpers
+ * @summary Is the given date yesterday?
+ * @pure false
+ *
+ * @description
+ * Is the given date yesterday?
+ *
+ * > ⚠️ Please note that this function is not present in the FP submodule as
+ * > it uses `Date.now()` internally hence impure and can't be safely curried.
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} date - the date to check
+ * @returns {Boolean} the date is yesterday
+ * @throws {TypeError} 1 argument required
+ *
+ * @example
+ * // If today is 6 October 2014, is 5 October 14:00:00 yesterday?
+ * var result = isYesterday(new Date(2014, 9, 5, 14, 0))
+ * //=> true
+ */
+export default function isYesterday(dirtyDate: Date | number): boolean {
+ requiredArgs(1, arguments)
+
+ return isSameDay(dirtyDate, subDays(Date.now(), 1))
+}
diff --git a/date-fns/src/isYesterday/test.ts b/date-fns/src/isYesterday/test.ts
new file mode 100644
index 0000000..4c79b72
--- /dev/null
+++ b/date-fns/src/isYesterday/test.ts
@@ -0,0 +1,38 @@
+// @flow
+/* eslint-env mocha */
+
+import { SinonFakeTimers } from 'sinon'
+import assert from 'assert'
+import sinon from 'sinon'
+import isYesterday from '.'
+
+describe('isYesterday', () => {
+ let clock: SinonFakeTimers
+ beforeEach(() => {
+ clock = sinon.useFakeTimers(new Date(2014, 8 /* Aug */, 25).getTime())
+ })
+
+ afterEach(() => {
+ clock.restore()
+ })
+
+ it('returns true if the given date is yesterday', () => {
+ const result = isYesterday(new Date(2014, 8 /* Sep */, 24))
+ assert(result === true)
+ })
+
+ it('returns false if the given date is not yesterday', () => {
+ const result = isYesterday(new Date(2014, 8 /* Sep */, 25))
+ assert(result === false)
+ })
+
+ it('accepts a timestamp', () => {
+ const result = isYesterday(new Date(2014, 8 /* Sep */, 24).getTime())
+ assert(result === true)
+ })
+
+ it('throws TypeError exception if passed less than 1 argument', () => {
+ // @ts-expect-error
+ assert.throws(isYesterday.bind(null), TypeError)
+ })
+})
diff --git a/date-fns/src/lastDayOfDecade/benchmark.js b/date-fns/src/lastDayOfDecade/benchmark.js
new file mode 100644
index 0000000..c683eca
--- /dev/null
+++ b/date-fns/src/lastDayOfDecade/benchmark.js
@@ -0,0 +1,15 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import lastDayOfDecade from '.'
+
+suite('lastDayOfYear', function () {
+ benchmark('date-fns', function () {
+ return lastDayOfDecade(this.date)
+ })
+}, {
+ setup: function () {
+ this.date = new Date()
+ }
+})
diff --git a/date-fns/src/lastDayOfDecade/index.d.ts b/date-fns/src/lastDayOfDecade/index.d.ts
new file mode 100644
index 0000000..05b0306
--- /dev/null
+++ b/date-fns/src/lastDayOfDecade/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { lastDayOfDecade } from 'date-fns'
+export default lastDayOfDecade
diff --git a/date-fns/src/lastDayOfDecade/index.js.flow b/date-fns/src/lastDayOfDecade/index.js.flow
new file mode 100644
index 0000000..4b7c616
--- /dev/null
+++ b/date-fns/src/lastDayOfDecade/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (date: Date | number) => Date
diff --git a/date-fns/src/lastDayOfDecade/index.ts b/date-fns/src/lastDayOfDecade/index.ts
new file mode 100644
index 0000000..7a50164
--- /dev/null
+++ b/date-fns/src/lastDayOfDecade/index.ts
@@ -0,0 +1,34 @@
+import toDate from '../toDate/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name lastDayOfDecade
+ * @category Decade Helpers
+ * @summary Return the last day of a decade for the given date.
+ *
+ * @description
+ * Return the last day of a decade for the given date.
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} date - the original date
+ * @returns {Date} the last day of a decade
+ * @throws {TypeError} 1 argument required
+ *
+ * @example
+ * // The last day of a decade for 21 December 2012 21:12:00:
+ * var result = lastDayOfDecade(new Date(2012, 11, 21, 21, 12, 00))
+ * //=> Wed Dec 31 2019 00:00:00
+ */
+export default function lastDayOfDecade(dirtyDate: Date | number): Date {
+ requiredArgs(1, arguments)
+
+ const date = toDate(dirtyDate)
+ const year = date.getFullYear()
+ const decade = 9 + Math.floor(year / 10) * 10
+ date.setFullYear(decade + 1, 0, 0)
+ date.setHours(0, 0, 0, 0)
+ return date
+}
diff --git a/date-fns/src/lastDayOfDecade/test.ts b/date-fns/src/lastDayOfDecade/test.ts
new file mode 100644
index 0000000..75c241e
--- /dev/null
+++ b/date-fns/src/lastDayOfDecade/test.ts
@@ -0,0 +1,34 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import lastDayOfDecade from '.'
+
+describe('lastDayOfDecade', function() {
+ it('returns the date with the time set to 00:00:00 and the date set to the last day of a decade', function() {
+ const date = new Date(1985, 9 /* Oct */, 20)
+ const result = lastDayOfDecade(date)
+ assert.deepEqual(result, new Date(1989, 11 /* Dec */, 31))
+ })
+
+ it('accepts a timestamp', function() {
+ const date = new Date(1975, 0 /* Jan */, 19).getTime()
+ const result = lastDayOfDecade(date)
+ assert.deepEqual(result, new Date(1979, 11 /* Dec */, 31))
+ })
+
+ it('does not mutate the original date', function() {
+ const date = new Date(2013, 3 /* Apr */, 23)
+ lastDayOfDecade(date)
+ assert.deepEqual(date, new Date(2013, 3 /* Apr */, 23))
+ })
+
+ it('returns `Invalid Date` if the given date is invalid', function() {
+ const result = lastDayOfDecade(new Date(NaN))
+ assert(result instanceof Date && isNaN(result.getTime()))
+ })
+
+ it('throws TypeError exception if passed less than 1 argument', function() {
+ assert.throws(lastDayOfDecade.bind(null), TypeError)
+ })
+})
diff --git a/date-fns/src/lastDayOfISOWeek/benchmark.js b/date-fns/src/lastDayOfISOWeek/benchmark.js
new file mode 100644
index 0000000..198dd8e
--- /dev/null
+++ b/date-fns/src/lastDayOfISOWeek/benchmark.js
@@ -0,0 +1,15 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import lastDayOfISOWeek from '.'
+
+suite('lastDayOfISOWeek', function () {
+ benchmark('date-fns', function () {
+ return lastDayOfISOWeek(this.date)
+ })
+}, {
+ setup: function () {
+ this.date = new Date()
+ }
+})
diff --git a/date-fns/src/lastDayOfISOWeek/index.d.ts b/date-fns/src/lastDayOfISOWeek/index.d.ts
new file mode 100644
index 0000000..e2533d6
--- /dev/null
+++ b/date-fns/src/lastDayOfISOWeek/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { lastDayOfISOWeek } from 'date-fns'
+export default lastDayOfISOWeek
diff --git a/date-fns/src/lastDayOfISOWeek/index.js.flow b/date-fns/src/lastDayOfISOWeek/index.js.flow
new file mode 100644
index 0000000..4b7c616
--- /dev/null
+++ b/date-fns/src/lastDayOfISOWeek/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (date: Date | number) => Date
diff --git a/date-fns/src/lastDayOfISOWeek/index.ts b/date-fns/src/lastDayOfISOWeek/index.ts
new file mode 100644
index 0000000..dd856f3
--- /dev/null
+++ b/date-fns/src/lastDayOfISOWeek/index.ts
@@ -0,0 +1,32 @@
+import lastDayOfWeek from '../lastDayOfWeek/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name lastDayOfISOWeek
+ * @category ISO Week Helpers
+ * @summary Return the last day of an ISO week for the given date.
+ *
+ * @description
+ * Return the last day of an ISO week for the given date.
+ * The result will be in the local timezone.
+ *
+ * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} date - the original date
+ * @returns {Date} the last day of an ISO week
+ * @throws {TypeError} 1 argument required
+ *
+ * @example
+ * // The last day of an ISO week for 2 September 2014 11:55:00:
+ * var result = lastDayOfISOWeek(new Date(2014, 8, 2, 11, 55, 0))
+ * //=> Sun Sep 07 2014 00:00:00
+ */
+export default function lastDayOfISOWeek(dirtyDate: Date | number): Date {
+ requiredArgs(1, arguments)
+
+ return lastDayOfWeek(dirtyDate, { weekStartsOn: 1 })
+}
diff --git a/date-fns/src/lastDayOfISOWeek/test.ts b/date-fns/src/lastDayOfISOWeek/test.ts
new file mode 100644
index 0000000..947fcb4
--- /dev/null
+++ b/date-fns/src/lastDayOfISOWeek/test.ts
@@ -0,0 +1,34 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import lastDayOfISOWeek from '.'
+
+describe('lastDayOfISOWeek', function() {
+ it('returns the date with the time set to 00:00:00 and the date set to the last day of an ISO week', function() {
+ const date = new Date(2014, 8 /* Sep */, 2, 11, 55, 0)
+ const result = lastDayOfISOWeek(date)
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */, 7))
+ })
+
+ it('accepts a timestamp', function() {
+ const date = new Date(2014, 1 /* Feb */, 11, 11, 55, 0).getTime()
+ const result = lastDayOfISOWeek(date)
+ assert.deepEqual(result, new Date(2014, 1 /* Feb */, 16))
+ })
+
+ it('does not mutate the original date', function() {
+ const date = new Date(2014, 8 /* Sep */, 2, 11, 55, 0)
+ lastDayOfISOWeek(date)
+ assert.deepEqual(date, new Date(2014, 8 /* Sep */, 2, 11, 55, 0))
+ })
+
+ it('returns `Invalid Date` if the given date is invalid', function() {
+ const result = lastDayOfISOWeek(new Date(NaN))
+ assert(result instanceof Date && isNaN(result.getTime()))
+ })
+
+ it('throws TypeError exception if passed less than 1 argument', function() {
+ assert.throws(lastDayOfISOWeek.bind(null), TypeError)
+ })
+})
diff --git a/date-fns/src/lastDayOfISOWeekYear/benchmark.js b/date-fns/src/lastDayOfISOWeekYear/benchmark.js
new file mode 100644
index 0000000..9623d55
--- /dev/null
+++ b/date-fns/src/lastDayOfISOWeekYear/benchmark.js
@@ -0,0 +1,15 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import lastDayOfISOWeekYear from '.'
+
+suite('lastDayOfISOWeekYear', function () {
+ benchmark('date-fns', function () {
+ return lastDayOfISOWeekYear(this.date)
+ })
+}, {
+ setup: function () {
+ this.date = new Date()
+ }
+})
diff --git a/date-fns/src/lastDayOfISOWeekYear/index.d.ts b/date-fns/src/lastDayOfISOWeekYear/index.d.ts
new file mode 100644
index 0000000..b30859a
--- /dev/null
+++ b/date-fns/src/lastDayOfISOWeekYear/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { lastDayOfISOWeekYear } from 'date-fns'
+export default lastDayOfISOWeekYear
diff --git a/date-fns/src/lastDayOfISOWeekYear/index.js.flow b/date-fns/src/lastDayOfISOWeekYear/index.js.flow
new file mode 100644
index 0000000..4b7c616
--- /dev/null
+++ b/date-fns/src/lastDayOfISOWeekYear/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (date: Date | number) => Date
diff --git a/date-fns/src/lastDayOfISOWeekYear/index.ts b/date-fns/src/lastDayOfISOWeekYear/index.ts
new file mode 100644
index 0000000..425095f
--- /dev/null
+++ b/date-fns/src/lastDayOfISOWeekYear/index.ts
@@ -0,0 +1,45 @@
+import getISOWeekYear from '../getISOWeekYear/index'
+import startOfISOWeek from '../startOfISOWeek/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name lastDayOfISOWeekYear
+ * @category ISO Week-Numbering Year Helpers
+ * @summary Return the last day of an ISO week-numbering year for the given date.
+ *
+ * @description
+ * Return the last day of an ISO week-numbering year,
+ * which always starts 3 days before the year's first Thursday.
+ * The result will be in the local timezone.
+ *
+ * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * - The function was renamed from `lastDayOfISOYear` to `lastDayOfISOWeekYear`.
+ * "ISO week year" is short for [ISO week-numbering year](https://en.wikipedia.org/wiki/ISO_week_date).
+ * This change makes the name consistent with
+ * locale-dependent week-numbering year helpers, e.g., `getWeekYear`.
+ *
+ * @param {Date|Number} date - the original date
+ * @returns {Date} the end of an ISO week-numbering year
+ * @throws {TypeError} 1 argument required
+ *
+ * @example
+ * // The last day of an ISO week-numbering year for 2 July 2005:
+ * var result = lastDayOfISOWeekYear(new Date(2005, 6, 2))
+ * //=> Sun Jan 01 2006 00:00:00
+ */
+export default function lastDayOfISOWeekYear(dirtyDate: Date | number): Date {
+ requiredArgs(1, arguments)
+
+ const year = getISOWeekYear(dirtyDate)
+ const fourthOfJanuary = new Date(0)
+ fourthOfJanuary.setFullYear(year + 1, 0, 4)
+ fourthOfJanuary.setHours(0, 0, 0, 0)
+ const date = startOfISOWeek(fourthOfJanuary)
+ date.setDate(date.getDate() - 1)
+ return date
+}
diff --git a/date-fns/src/lastDayOfISOWeekYear/test.ts b/date-fns/src/lastDayOfISOWeekYear/test.ts
new file mode 100644
index 0000000..9a06b16
--- /dev/null
+++ b/date-fns/src/lastDayOfISOWeekYear/test.ts
@@ -0,0 +1,45 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import lastDayOfISOWeekYear from '.'
+
+describe('lastDayOfISOWeekYear', function() {
+ it('returns the date with the time set to 00:00:00 and the date set to the last day of an ISO year', function() {
+ const result = lastDayOfISOWeekYear(new Date(2009, 0 /* Jan */, 1, 16, 0))
+ assert.deepEqual(result, new Date(2010, 0 /* Jan */, 3))
+ })
+
+ it('accepts a timestamp', function() {
+ const result = lastDayOfISOWeekYear(
+ new Date(2005, 0 /* Jan */, 1, 6, 0).getTime()
+ )
+ assert.deepEqual(result, new Date(2005, 0 /* Jan */, 2))
+ })
+
+ it('does not mutate the original date', function() {
+ const date = new Date(2014, 6 /* Jul */, 2)
+ lastDayOfISOWeekYear(date)
+ assert.deepEqual(date, new Date(2014, 6 /* Jul */, 2))
+ })
+
+ it('handles dates before 100 AD', function() {
+ const initialDate = new Date(0)
+ initialDate.setFullYear(5, 0 /* Jan */, 4)
+ initialDate.setHours(0, 0, 0, 0)
+ const expectedResult = new Date(0)
+ expectedResult.setFullYear(6, 0 /* Jan */, 1)
+ expectedResult.setHours(0, 0, 0, 0)
+ const result = lastDayOfISOWeekYear(initialDate)
+ assert.deepEqual(result, expectedResult)
+ })
+
+ it('returns `Invalid Date` if the given date is invalid', function() {
+ const result = lastDayOfISOWeekYear(new Date(NaN))
+ assert(result instanceof Date && isNaN(result.getTime()))
+ })
+
+ it('throws TypeError exception if passed less than 1 argument', function() {
+ assert.throws(lastDayOfISOWeekYear.bind(null), TypeError)
+ })
+})
diff --git a/date-fns/src/lastDayOfMonth/benchmark.js b/date-fns/src/lastDayOfMonth/benchmark.js
new file mode 100644
index 0000000..beddb74
--- /dev/null
+++ b/date-fns/src/lastDayOfMonth/benchmark.js
@@ -0,0 +1,15 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import lastDayOfMonth from '.'
+
+suite('lastDayOfMonth', function () {
+ benchmark('date-fns', function () {
+ return lastDayOfMonth(this.date)
+ })
+}, {
+ setup: function () {
+ this.date = new Date()
+ }
+})
diff --git a/date-fns/src/lastDayOfMonth/index.d.ts b/date-fns/src/lastDayOfMonth/index.d.ts
new file mode 100644
index 0000000..4db559b
--- /dev/null
+++ b/date-fns/src/lastDayOfMonth/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { lastDayOfMonth } from 'date-fns'
+export default lastDayOfMonth
diff --git a/date-fns/src/lastDayOfMonth/index.js.flow b/date-fns/src/lastDayOfMonth/index.js.flow
new file mode 100644
index 0000000..4b7c616
--- /dev/null
+++ b/date-fns/src/lastDayOfMonth/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (date: Date | number) => Date
diff --git a/date-fns/src/lastDayOfMonth/index.ts b/date-fns/src/lastDayOfMonth/index.ts
new file mode 100644
index 0000000..1b97a13
--- /dev/null
+++ b/date-fns/src/lastDayOfMonth/index.ts
@@ -0,0 +1,34 @@
+import toDate from '../toDate/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name lastDayOfMonth
+ * @category Month Helpers
+ * @summary Return the last day of a month for the given date.
+ *
+ * @description
+ * Return the last day of a month for the given date.
+ * The result will be in the local timezone.
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} date - the original date
+ * @returns {Date} the last day of a month
+ * @throws {TypeError} 1 argument required
+ *
+ * @example
+ * // The last day of a month for 2 September 2014 11:55:00:
+ * var result = lastDayOfMonth(new Date(2014, 8, 2, 11, 55, 0))
+ * //=> Tue Sep 30 2014 00:00:00
+ */
+export default function lastDayOfMonth(dirtyDate: Date | number): Date {
+ requiredArgs(1, arguments)
+
+ const date = toDate(dirtyDate)
+ const month = date.getMonth()
+ date.setFullYear(date.getFullYear(), month + 1, 0)
+ date.setHours(0, 0, 0, 0)
+ return date
+}
diff --git a/date-fns/src/lastDayOfMonth/test.ts b/date-fns/src/lastDayOfMonth/test.ts
new file mode 100644
index 0000000..3c63b4b
--- /dev/null
+++ b/date-fns/src/lastDayOfMonth/test.ts
@@ -0,0 +1,48 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import lastDayOfMonth from '.'
+
+describe('lastDayOfMonth', function() {
+ it('returns the date with the time set to 00:00:00 and the date set to the last day of a month', function() {
+ const date = new Date(2014, 8 /* Sep */, 2, 11, 55, 0)
+ const result = lastDayOfMonth(date)
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */, 30))
+ })
+
+ it('accepts a timestamp', function() {
+ const date = new Date(2014, 7 /* Aug */, 2, 11, 55, 0).getTime()
+ const result = lastDayOfMonth(date)
+ assert.deepEqual(result, new Date(2014, 7 /* Aug */, 31))
+ })
+
+ it('does not mutate the original date', function() {
+ const date = new Date(2014, 8 /* Sep */, 2, 11, 55, 0)
+ lastDayOfMonth(date)
+ assert.deepEqual(date, new Date(2014, 8 /* Sep */, 2, 11, 55, 0))
+ })
+
+ describe('edge cases', function() {
+ it('works for the February of a leap year', function() {
+ const date = new Date(2012, 1 /* Feb */, 11, 11, 55, 0)
+ const result = lastDayOfMonth(date)
+ assert.deepEqual(result, new Date(2012, 1 /* Feb */, 29))
+ })
+
+ it('works for the February of a non-leap year', function() {
+ const date = new Date(2014, 1 /* Feb */, 11, 11, 55, 0)
+ const result = lastDayOfMonth(date)
+ assert.deepEqual(result, new Date(2014, 1 /* Feb */, 28))
+ })
+ })
+
+ it('returns `Invalid Date` if the given date is invalid', function() {
+ const result = lastDayOfMonth(new Date(NaN))
+ assert(result instanceof Date && isNaN(result.getTime()))
+ })
+
+ it('throws TypeError exception if passed less than 1 argument', function() {
+ assert.throws(lastDayOfMonth.bind(null), TypeError)
+ })
+})
diff --git a/date-fns/src/lastDayOfQuarter/benchmark.js b/date-fns/src/lastDayOfQuarter/benchmark.js
new file mode 100644
index 0000000..72d5780
--- /dev/null
+++ b/date-fns/src/lastDayOfQuarter/benchmark.js
@@ -0,0 +1,15 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import lastDayOfQuarter from '.'
+
+suite('lastDayOfQuarter', function () {
+ benchmark('date-fns', function () {
+ return lastDayOfQuarter(this.date)
+ })
+}, {
+ setup: function () {
+ this.date = new Date()
+ }
+})
diff --git a/date-fns/src/lastDayOfQuarter/index.d.ts b/date-fns/src/lastDayOfQuarter/index.d.ts
new file mode 100644
index 0000000..3387b64
--- /dev/null
+++ b/date-fns/src/lastDayOfQuarter/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { lastDayOfQuarter } from 'date-fns'
+export default lastDayOfQuarter
diff --git a/date-fns/src/lastDayOfQuarter/index.js.flow b/date-fns/src/lastDayOfQuarter/index.js.flow
new file mode 100644
index 0000000..364a3bb
--- /dev/null
+++ b/date-fns/src/lastDayOfQuarter/index.js.flow
@@ -0,0 +1,57 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (
+ date: Date | number,
+ options?: {
+ additionalDigits?: 0 | 1 | 2,
+ }
+) => Date
diff --git a/date-fns/src/lastDayOfQuarter/index.ts b/date-fns/src/lastDayOfQuarter/index.ts
new file mode 100644
index 0000000..578cf12
--- /dev/null
+++ b/date-fns/src/lastDayOfQuarter/index.ts
@@ -0,0 +1,38 @@
+import toDate from '../toDate/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name lastDayOfQuarter
+ * @category Quarter Helpers
+ * @summary Return the last day of a year quarter for the given date.
+ *
+ * @description
+ * Return the last day of a year quarter for the given date.
+ * The result will be in the local timezone.
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} date - the original date
+ * @param {Object} [options] - an object with options.
+ * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}
+ * @returns {Date} the last day of a quarter
+ * @throws {TypeError} 1 argument required
+ * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2
+ *
+ * @example
+ * // The last day of a quarter for 2 September 2014 11:55:00:
+ * var result = lastDayOfQuarter(new Date(2014, 8, 2, 11, 55, 0))
+ * //=> Tue Sep 30 2014 00:00:00
+ */
+export default function lastDayOfQuarter(dirtyDate: Date | number): Date {
+ requiredArgs(1, arguments)
+
+ const date = toDate(dirtyDate)
+ const currentMonth = date.getMonth()
+ const month = currentMonth - (currentMonth % 3) + 3
+ date.setMonth(month, 0)
+ date.setHours(0, 0, 0, 0)
+ return date
+}
diff --git a/date-fns/src/lastDayOfQuarter/test.ts b/date-fns/src/lastDayOfQuarter/test.ts
new file mode 100644
index 0000000..0812953
--- /dev/null
+++ b/date-fns/src/lastDayOfQuarter/test.ts
@@ -0,0 +1,34 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import lastDayOfQuarter from '.'
+
+describe('lastDayOfQuarter', function() {
+ it('returns the date with the time set to 00:00:00 and the date set to the last day of a quarter', function() {
+ const date = new Date(2014, 8 /* Sep */, 2, 11, 55, 0)
+ const result = lastDayOfQuarter(date)
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */, 30))
+ })
+
+ it('accepts a timestamp', function() {
+ const date = new Date(2014, 8 /* Sep */, 2, 11, 55, 0).getTime()
+ const result = lastDayOfQuarter(date)
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */, 30))
+ })
+
+ it('does not mutate the original date', function() {
+ const date = new Date(2014, 8 /* Sep */, 2, 11, 55, 0)
+ lastDayOfQuarter(date)
+ assert.deepEqual(date, new Date(2014, 8 /* Sep */, 2, 11, 55, 0))
+ })
+
+ it('returns `Invalid Date` if the given date is invalid', function() {
+ const result = lastDayOfQuarter(new Date(NaN))
+ assert(result instanceof Date && isNaN(result.getTime()))
+ })
+
+ it('throws TypeError exception if passed less than 1 argument', function() {
+ assert.throws(lastDayOfQuarter.bind(null), TypeError)
+ })
+})
diff --git a/date-fns/src/lastDayOfWeek/benchmark.js b/date-fns/src/lastDayOfWeek/benchmark.js
new file mode 100644
index 0000000..52dfdec
--- /dev/null
+++ b/date-fns/src/lastDayOfWeek/benchmark.js
@@ -0,0 +1,15 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import lastDayOfWeek from '.'
+
+suite('lastDayOfWeek', function () {
+ benchmark('date-fns', function () {
+ return lastDayOfWeek(this.date)
+ })
+}, {
+ setup: function () {
+ this.date = new Date()
+ }
+})
diff --git a/date-fns/src/lastDayOfWeek/index.d.ts b/date-fns/src/lastDayOfWeek/index.d.ts
new file mode 100644
index 0000000..d29b9bf
--- /dev/null
+++ b/date-fns/src/lastDayOfWeek/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { lastDayOfWeek } from 'date-fns'
+export default lastDayOfWeek
diff --git a/date-fns/src/lastDayOfWeek/index.js.flow b/date-fns/src/lastDayOfWeek/index.js.flow
new file mode 100644
index 0000000..9285b67
--- /dev/null
+++ b/date-fns/src/lastDayOfWeek/index.js.flow
@@ -0,0 +1,58 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (
+ date: Date | number,
+ options?: {
+ locale?: Locale,
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ }
+) => Date
diff --git a/date-fns/src/lastDayOfWeek/index.ts b/date-fns/src/lastDayOfWeek/index.ts
new file mode 100644
index 0000000..781d8b2
--- /dev/null
+++ b/date-fns/src/lastDayOfWeek/index.ts
@@ -0,0 +1,66 @@
+import toDate from '../toDate/index'
+import toInteger from '../_lib/toInteger/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+import { LocaleOptions, WeekStartOptions } from '../types'
+
+/**
+ * @name lastDayOfWeek
+ * @category Week Helpers
+ * @summary Return the last day of a week for the given date.
+ *
+ * @description
+ * Return the last day of a week for the given date.
+ * The result will be in the local timezone.
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} date - the original date
+ * @param {Object} [options] - an object with options.
+ * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}
+ * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)
+ * @returns {Date} the last day of a week
+ * @throws {TypeError} 1 argument required
+ * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6
+ *
+ * @example
+ * // The last day of a week for 2 September 2014 11:55:00:
+ * var result = lastDayOfWeek(new Date(2014, 8, 2, 11, 55, 0))
+ * //=> Sat Sep 06 2014 00:00:00
+ *
+ * @example
+ * // If the week starts on Monday, the last day of the week for 2 September 2014 11:55:00:
+ * var result = lastDayOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })
+ * //=> Sun Sep 07 2014 00:00:00
+ */
+export default function lastDayOfWeek(
+ dirtyDate: Date | number,
+ dirtyOptions?: LocaleOptions & WeekStartOptions
+): Date {
+ requiredArgs(1, arguments)
+
+ const options = dirtyOptions || {}
+ const locale = options.locale
+ const localeWeekStartsOn =
+ locale && locale.options && locale.options.weekStartsOn
+ const defaultWeekStartsOn =
+ localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn)
+ const weekStartsOn =
+ options.weekStartsOn == null
+ ? defaultWeekStartsOn
+ : toInteger(options.weekStartsOn)
+
+ // Test if weekStartsOn is between 0 and 6 _and_ is not NaN
+ if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {
+ throw new RangeError('weekStartsOn must be between 0 and 6')
+ }
+
+ const date = toDate(dirtyDate)
+ const day = date.getDay()
+ const diff = (day < weekStartsOn ? -7 : 0) + 6 - (day - weekStartsOn)
+
+ date.setHours(0, 0, 0, 0)
+ date.setDate(date.getDate() + diff)
+ return date
+}
diff --git a/date-fns/src/lastDayOfWeek/test.ts b/date-fns/src/lastDayOfWeek/test.ts
new file mode 100644
index 0000000..99b1307
--- /dev/null
+++ b/date-fns/src/lastDayOfWeek/test.ts
@@ -0,0 +1,111 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import lastDayOfWeek from '.'
+
+describe('lastDayOfWeek', function () {
+ it('returns the date with the time set to 00:00:00 and the date set to the last day of a week', function () {
+ const date = new Date(2014, 8 /* Sep */, 2, 11, 55, 0)
+ const result = lastDayOfWeek(date)
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */, 6))
+ })
+
+ it('allows to specify which day is the first day of the week', function () {
+ const date = new Date(2014, 8 /* Sep */, 2, 11, 55, 0)
+ const result = lastDayOfWeek(date, { weekStartsOn: 1 })
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */, 7))
+ })
+
+ it('allows to specify which day is the first day of the week in locale', function () {
+ const date = new Date(2014, 8 /* Sep */, 2, 11, 55, 0)
+ const result = lastDayOfWeek(date, {
+ // @ts-expect-error
+ locale: {
+ options: { weekStartsOn: 1 },
+ },
+ })
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */, 7))
+ })
+
+ it('`options.weekStartsOn` overwrites the first day of the week specified in locale', function () {
+ const date = new Date(2014, 8 /* Sep */, 2, 11, 55, 0)
+ const result = lastDayOfWeek(date, {
+ weekStartsOn: 1,
+ // @ts-expect-error
+ locale: {
+ options: { weekStartsOn: 0 },
+ },
+ })
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */, 7))
+ })
+
+ it('implicitly converts options', function () {
+ const date = new Date(2014, 8 /* Sep */, 2, 11, 55, 0)
+ // @ts-expect-error
+ const result = lastDayOfWeek(date, { weekStartsOn: '1' })
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */, 7))
+ })
+
+ it('accepts a timestamp', function () {
+ const date = new Date(2014, 8 /* Sep */, 2, 11, 55, 0).getTime()
+ const result = lastDayOfWeek(date)
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */, 6))
+ })
+
+ it('does not mutate the original date', function () {
+ const date = new Date(2014, 8 /* Sep */, 2, 11, 55, 0)
+ lastDayOfWeek(date)
+ assert.deepEqual(date, new Date(2014, 8 /* Sep */, 2, 11, 55, 0))
+ })
+
+ describe('edge cases', function () {
+ describe('when the given day is before the start of a week', function () {
+ it('it returns the last day of a week', function () {
+ const date = new Date(2014, 9 /* Oct */, 6)
+ const result = lastDayOfWeek(date, { weekStartsOn: 3 })
+ assert.deepEqual(result, new Date(2014, 9 /* Oct */, 7))
+ })
+ })
+
+ describe('when the given day is the start of a week', function () {
+ it('it returns the last day of a week', function () {
+ const date = new Date(2014, 9 /* Oct */, 8)
+ const result = lastDayOfWeek(date, { weekStartsOn: 3 })
+ assert.deepEqual(result, new Date(2014, 9 /* Oct */, 14))
+ })
+ })
+
+ describe('when the given day is after the start of a week', function () {
+ it('it returns the last day of a week', function () {
+ const date = new Date(2014, 9 /* Oct */, 10)
+ const result = lastDayOfWeek(date, { weekStartsOn: 3 })
+ assert.deepEqual(result, new Date(2014, 9 /* Oct */, 14))
+ })
+ })
+
+ it('handles the week at the end of a year', function () {
+ const date = new Date(2014, 11 /* Dec */, 29)
+ const result = lastDayOfWeek(date, { weekStartsOn: 5 })
+ assert.deepEqual(result, new Date(2015, 0 /* Jan */, 1))
+ })
+ })
+
+ it('returns `Invalid Date` if the given date is invalid', function () {
+ const result = lastDayOfWeek(new Date(NaN))
+ assert(result instanceof Date && isNaN(result.getTime()))
+ })
+
+ it('throws `RangeError` if `options.weekStartsOn` is not convertable to 0, 1, ..., 6 or undefined', function () {
+ const block = lastDayOfWeek.bind(
+ null,
+ new Date(2014, 8 /* Sep */, 2, 11, 55, 0),
+ { weekStartsOn: NaN }
+ )
+ assert.throws(block, RangeError)
+ })
+
+ it('throws TypeError exception if passed less than 1 argument', function () {
+ assert.throws(lastDayOfWeek.bind(null), TypeError)
+ })
+})
diff --git a/date-fns/src/lastDayOfYear/benchmark.js b/date-fns/src/lastDayOfYear/benchmark.js
new file mode 100644
index 0000000..9d55f10
--- /dev/null
+++ b/date-fns/src/lastDayOfYear/benchmark.js
@@ -0,0 +1,15 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import lastDayOfYear from '.'
+
+suite('lastDayOfYear', function () {
+ benchmark('date-fns', function () {
+ return lastDayOfYear(this.date)
+ })
+}, {
+ setup: function () {
+ this.date = new Date()
+ }
+})
diff --git a/date-fns/src/lastDayOfYear/index.d.ts b/date-fns/src/lastDayOfYear/index.d.ts
new file mode 100644
index 0000000..a90dc0d
--- /dev/null
+++ b/date-fns/src/lastDayOfYear/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { lastDayOfYear } from 'date-fns'
+export default lastDayOfYear
diff --git a/date-fns/src/lastDayOfYear/index.js.flow b/date-fns/src/lastDayOfYear/index.js.flow
new file mode 100644
index 0000000..4b7c616
--- /dev/null
+++ b/date-fns/src/lastDayOfYear/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (date: Date | number) => Date
diff --git a/date-fns/src/lastDayOfYear/index.ts b/date-fns/src/lastDayOfYear/index.ts
new file mode 100644
index 0000000..f82c61c
--- /dev/null
+++ b/date-fns/src/lastDayOfYear/index.ts
@@ -0,0 +1,34 @@
+import toDate from '../toDate/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name lastDayOfYear
+ * @category Year Helpers
+ * @summary Return the last day of a year for the given date.
+ *
+ * @description
+ * Return the last day of a year for the given date.
+ * The result will be in the local timezone.
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} date - the original date
+ * @returns {Date} the last day of a year
+ * @throws {TypeError} 1 argument required
+ *
+ * @example
+ * // The last day of a year for 2 September 2014 11:55:00:
+ * var result = lastDayOfYear(new Date(2014, 8, 2, 11, 55, 00))
+ * //=> Wed Dec 31 2014 00:00:00
+ */
+export default function lastDayOfYear(dirtyDate: Date | number): Date {
+ requiredArgs(1, arguments)
+
+ const date = toDate(dirtyDate)
+ const year = date.getFullYear()
+ date.setFullYear(year + 1, 0, 0)
+ date.setHours(0, 0, 0, 0)
+ return date
+}
diff --git a/date-fns/src/lastDayOfYear/test.ts b/date-fns/src/lastDayOfYear/test.ts
new file mode 100644
index 0000000..33997c9
--- /dev/null
+++ b/date-fns/src/lastDayOfYear/test.ts
@@ -0,0 +1,34 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import lastDayOfYear from '.'
+
+describe('lastDayOfYear', function() {
+ it('returns the date with the time set to 00:00:00 and the date set to the last day of a year', function() {
+ const date = new Date(2014, 8 /* Sep */, 2, 11, 55, 0)
+ const result = lastDayOfYear(date)
+ assert.deepEqual(result, new Date(2014, 11 /* Dec */, 31))
+ })
+
+ it('accepts a timestamp', function() {
+ const date = new Date(2014, 8 /* Sep */, 2, 11, 55, 0).getTime()
+ const result = lastDayOfYear(date)
+ assert.deepEqual(result, new Date(2014, 11 /* Dec */, 31))
+ })
+
+ it('does not mutate the original date', function() {
+ const date = new Date(2014, 8 /* Sep */, 2, 11, 55, 0)
+ lastDayOfYear(date)
+ assert.deepEqual(date, new Date(2014, 8 /* Sep */, 2, 11, 55, 0))
+ })
+
+ it('returns `Invalid Date` if the given date is invalid', function() {
+ const result = lastDayOfYear(new Date(NaN))
+ assert(result instanceof Date && isNaN(result.getTime()))
+ })
+
+ it('throws TypeError exception if passed less than 1 argument', function() {
+ assert.throws(lastDayOfYear.bind(null), TypeError)
+ })
+})
diff --git a/date-fns/src/lightFormat/index.d.ts b/date-fns/src/lightFormat/index.d.ts
new file mode 100644
index 0000000..4aa361b
--- /dev/null
+++ b/date-fns/src/lightFormat/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { lightFormat } from 'date-fns'
+export default lightFormat
diff --git a/date-fns/src/lightFormat/index.js.flow b/date-fns/src/lightFormat/index.js.flow
new file mode 100644
index 0000000..818d9c4
--- /dev/null
+++ b/date-fns/src/lightFormat/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (date: Date | number, format: string) => string
diff --git a/date-fns/src/lightFormat/index.ts b/date-fns/src/lightFormat/index.ts
new file mode 100644
index 0000000..a16a127
--- /dev/null
+++ b/date-fns/src/lightFormat/index.ts
@@ -0,0 +1,144 @@
+import toDate from '../toDate/index'
+import formatters from '../_lib/format/lightFormatters/index'
+import getTimezoneOffsetInMilliseconds from '../_lib/getTimezoneOffsetInMilliseconds/index'
+import isValid from '../isValid/index'
+import subMilliseconds from '../subMilliseconds/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+// This RegExp consists of three parts separated by `|`:
+// - (\w)\1* matches any sequences of the same letter
+// - '' matches two quote characters in a row
+// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),
+// except a single quote symbol, which ends the sequence.
+// Two quote characters do not end the sequence.
+// If there is no matching single quote
+// then the sequence will continue until the end of the string.
+// - . matches any single character unmatched by previous parts of the RegExps
+const formattingTokensRegExp = /(\w)\1*|''|'(''|[^'])+('|$)|./g
+
+const escapedStringRegExp = /^'([^]*?)'?$/
+const doubleQuoteRegExp = /''/g
+const unescapedLatinCharacterRegExp = /[a-zA-Z]/
+
+/**
+ * @name lightFormat
+ * @category Common Helpers
+ * @summary Format the date.
+ *
+ * @description
+ * Return the formatted date string in the given format. Unlike `format`,
+ * `lightFormat` doesn't use locales and outputs date using the most popular tokens.
+ *
+ * > ⚠️ Please note that the `lightFormat` tokens differ from Moment.js and other libraries.
+ * > See: https://git.io/fxCyr
+ *
+ * The characters wrapped between two single quotes characters (') are escaped.
+ * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.
+ *
+ * Format of the string is based on Unicode Technical Standard #35:
+ * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table
+ *
+ * Accepted patterns:
+ * | Unit | Pattern | Result examples |
+ * |---------------------------------|---------|-----------------------------------|
+ * | AM, PM | a..aaa | AM, PM |
+ * | | aaaa | a.m., p.m. |
+ * | | aaaaa | a, p |
+ * | Calendar year | y | 44, 1, 1900, 2017 |
+ * | | yy | 44, 01, 00, 17 |
+ * | | yyy | 044, 001, 000, 017 |
+ * | | yyyy | 0044, 0001, 1900, 2017 |
+ * | Month (formatting) | M | 1, 2, ..., 12 |
+ * | | MM | 01, 02, ..., 12 |
+ * | Day of month | d | 1, 2, ..., 31 |
+ * | | dd | 01, 02, ..., 31 |
+ * | Hour [1-12] | h | 1, 2, ..., 11, 12 |
+ * | | hh | 01, 02, ..., 11, 12 |
+ * | Hour [0-23] | H | 0, 1, 2, ..., 23 |
+ * | | HH | 00, 01, 02, ..., 23 |
+ * | Minute | m | 0, 1, ..., 59 |
+ * | | mm | 00, 01, ..., 59 |
+ * | Second | s | 0, 1, ..., 59 |
+ * | | ss | 00, 01, ..., 59 |
+ * | Fraction of second | S | 0, 1, ..., 9 |
+ * | | SS | 00, 01, ..., 99 |
+ * | | SSS | 000, 0001, ..., 999 |
+ * | | SSSS | ... |
+ *
+ * @param {Date|Number} date - the original date
+ * @param {String} format - the string of tokens
+ * @returns {String} the formatted date string
+ * @throws {TypeError} 2 arguments required
+ * @throws {RangeError} format string contains an unescaped latin alphabet character
+ *
+ * @example
+ * const result = lightFormat(new Date(2014, 1, 11), 'yyyy-MM-dd')
+ * //=> '2014-02-11'
+ */
+
+type Token = keyof typeof formatters
+
+export default function lightFormat(
+ dirtyDate: Date | number,
+ formatStr: string
+): string {
+ requiredArgs(2, arguments)
+
+ const originalDate = toDate(dirtyDate)
+
+ if (!isValid(originalDate)) {
+ throw new RangeError('Invalid time value')
+ }
+
+ // Convert the date in system timezone to the same date in UTC+00:00 timezone.
+ // This ensures that when UTC functions will be implemented, locales will be compatible with them.
+ // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/376
+ const timezoneOffset = getTimezoneOffsetInMilliseconds(originalDate)
+ const utcDate = subMilliseconds(originalDate, timezoneOffset)
+
+ const tokens = formatStr.match(formattingTokensRegExp)
+
+ // The only case when formattingTokensRegExp doesn't match the string is when it's empty
+ if (!tokens) return ''
+
+ const result = tokens
+ .map((substring) => {
+ // Replace two single quote characters with one single quote character
+ if (substring === "''") {
+ return "'"
+ }
+
+ const firstCharacter = substring[0]
+ if (firstCharacter === "'") {
+ return cleanEscapedString(substring)
+ }
+
+ const formatter = formatters[firstCharacter as Token]
+ if (formatter) {
+ return formatter(utcDate, substring)
+ }
+
+ if (firstCharacter.match(unescapedLatinCharacterRegExp)) {
+ throw new RangeError(
+ 'Format string contains an unescaped latin alphabet character `' +
+ firstCharacter +
+ '`'
+ )
+ }
+
+ return substring
+ })
+ .join('')
+
+ return result
+}
+
+function cleanEscapedString(input: string) {
+ const matches = input.match(escapedStringRegExp)
+
+ if (!matches) {
+ return input
+ }
+
+ return matches[1].replace(doubleQuoteRegExp, "'")
+}
diff --git a/date-fns/src/lightFormat/test.ts b/date-fns/src/lightFormat/test.ts
new file mode 100644
index 0000000..13a8fd8
--- /dev/null
+++ b/date-fns/src/lightFormat/test.ts
@@ -0,0 +1,158 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'assert'
+import lightFormat from '.'
+
+describe('lightFormat', () => {
+ const date = new Date(1986, 3 /* Apr */, 4, 10, 32, 55, 123)
+
+ it('accepts a timestamp', () => {
+ const date = new Date(2014, 3, 4).getTime()
+ assert(lightFormat(date, 'yyyy-MM-dd') === '2014-04-04')
+ })
+
+ it('escapes characters between the single quote characters', () => {
+ const result = lightFormat(date, "'yyyy-'MM-dd'D yyyy-'MM-dd'")
+ assert(result === 'yyyy-04-04D yyyy-04-04')
+ })
+
+ it('two single quote characters are transformed into a "real" single quote', () => {
+ const date = new Date(2014, 3, 4, 5)
+ assert(lightFormat(date, "''h 'o''clock'''") === "'5 o'clock'")
+ })
+
+ it('accepts new line charactor', function () {
+ const date = new Date(2014, 3, 4, 5)
+ assert.equal(
+ lightFormat(date, "yyyy-MM-dd'\n'HH:mm:ss"),
+ '2014-04-04\n05:00:00'
+ )
+ })
+
+ describe('year', () => {
+ describe('regular year', () => {
+ it('works as expected', () => {
+ const result = lightFormat(date, 'y yy yyy yyyy yyyyy')
+ assert(result === '1986 86 1986 1986 01986')
+ })
+
+ it('1 BC formats as 1', () => {
+ const date = new Date(0)
+ date.setFullYear(0 /* Jan */, 1)
+ date.setHours(0, 0, 0, 0)
+ const result = lightFormat(date, 'y')
+ assert(result === '1')
+ })
+
+ it('2 BC formats as 2', () => {
+ const date = new Date(0)
+ date.setFullYear(-1, 0 /* Jan */, 1)
+ date.setHours(0, 0, 0, 0)
+ const result = lightFormat(date, 'y')
+ assert(result === '2')
+ })
+ })
+ })
+
+ describe('month', () => {
+ it('formatting month', () => {
+ const result = lightFormat(date, 'M MM')
+ assert(result === '4 04')
+ })
+ })
+
+ describe('day', () => {
+ it('date', () => {
+ const result = lightFormat(date, 'd dd')
+ assert(result === '4 04')
+ })
+ })
+
+ describe('hour', () => {
+ it('hour [1-12]', () => {
+ const result = lightFormat(
+ new Date(2018, 0 /* Jan */, 1, 0, 0, 0, 0),
+ 'h hh'
+ )
+ assert(result === '12 12')
+ })
+
+ it('hour [0-23]', () => {
+ const result = lightFormat(
+ new Date(2018, 0 /* Jan */, 1, 0, 0, 0, 0),
+ 'H HH'
+ )
+ assert(result === '0 00')
+ })
+
+ describe('AM, PM', () => {
+ it('works as expected', () => {
+ const result = lightFormat(
+ new Date(2018, 0 /* Jan */, 1, 0, 0, 0, 0),
+ 'a aa aaa aaaa aaaaa'
+ )
+ assert(result === 'AM AM am a.m. a')
+ })
+
+ it('12 PM', () => {
+ const date = new Date(1986, 3 /* Apr */, 4, 12, 0, 0, 900)
+ assert(lightFormat(date, 'h H a') === '12 12 PM')
+ })
+
+ it('12 AM', () => {
+ const date = new Date(1986, 3 /* Apr */, 6, 0, 0, 0, 900)
+ assert(lightFormat(date, 'h H a') === '12 0 AM')
+ })
+ })
+ })
+
+ it('minute', () => {
+ const result = lightFormat(date, 'm mm')
+ assert(result === '32 32')
+ })
+
+ describe('second', () => {
+ it('second', () => {
+ const result = lightFormat(date, 's ss')
+ assert(result === '55 55')
+ })
+ })
+
+ it('fractional seconds', function () {
+ const result = lightFormat(date, 'S SS SSS SSSS')
+ assert(result === '1 12 123 1230')
+ })
+
+ it('returns empty string when the format is an empty string', () => {
+ assert(lightFormat(Date.now(), '') === '')
+ })
+
+ it("throws RangeError if the date isn't valid", () => {
+ assert.throws(
+ lightFormat.bind(null, new Date(NaN), 'MMMM d, yyyy'),
+ RangeError
+ )
+ })
+
+ it('implicitly converts `formatString`', () => {
+ // eslint-disable-next-line no-new-wrappers
+ const formatString = new String('yyyy-MM-dd')
+
+ const date = new Date(2014, 3, 4)
+
+ // @ts-expect-error
+ assert(lightFormat(date, formatString) === '2014-04-04')
+ })
+
+ it('throws RangeError exception if the format string contains an unescaped latin alphabet character', function () {
+ assert.throws(lightFormat.bind(null, date, 'yyyy-MM-dd-nnnn'), RangeError)
+ })
+
+ it('throws TypeError exception if passed less than 2 arguments', () => {
+ // @ts-expect-error
+ assert.throws(lightFormat.bind(null), TypeError)
+ // @ts-expect-error
+ assert.throws(lightFormat.bind(null, 1), TypeError)
+ })
+})
diff --git a/date-fns/src/locale/_lib/buildFormatLongFn/index.js b/date-fns/src/locale/_lib/buildFormatLongFn/index.js
new file mode 100644
index 0000000..44da3fc
--- /dev/null
+++ b/date-fns/src/locale/_lib/buildFormatLongFn/index.js
@@ -0,0 +1,8 @@
+export default function buildFormatLongFn (args) {
+ return function (dirtyOptions) {
+ var options = dirtyOptions || {}
+ var width = options.width ? String(options.width) : args.defaultWidth
+ var format = args.formats[width] || args.formats[args.defaultWidth]
+ return format
+ }
+}
diff --git a/date-fns/src/locale/_lib/buildLocalizeFn/index.js b/date-fns/src/locale/_lib/buildLocalizeFn/index.js
new file mode 100644
index 0000000..360d8a7
--- /dev/null
+++ b/date-fns/src/locale/_lib/buildLocalizeFn/index.js
@@ -0,0 +1,23 @@
+export default function buildLocalizeFn(args) {
+ return function(dirtyIndex, dirtyOptions) {
+ var options = dirtyOptions || {}
+
+ var context = options.context ? String(options.context) : 'standalone'
+
+ var valuesArray
+ if (context === 'formatting' && args.formattingValues) {
+ const defaultWidth = args.defaultFormattingWidth || args.defaultWidth
+ const width = options.width ? String(options.width) : defaultWidth
+ valuesArray =
+ args.formattingValues[width] || args.formattingValues[defaultWidth]
+ } else {
+ const defaultWidth = args.defaultWidth
+ const width = options.width ? String(options.width) : args.defaultWidth
+ valuesArray = args.values[width] || args.values[defaultWidth]
+ }
+ var index = args.argumentCallback
+ ? args.argumentCallback(dirtyIndex)
+ : dirtyIndex
+ return valuesArray[index]
+ }
+}
diff --git a/date-fns/src/locale/_lib/buildMatchFn/index.js b/date-fns/src/locale/_lib/buildMatchFn/index.js
new file mode 100644
index 0000000..a5bd529
--- /dev/null
+++ b/date-fns/src/locale/_lib/buildMatchFn/index.js
@@ -0,0 +1,56 @@
+export default function buildMatchFn(args) {
+ return function(dirtyString, dirtyOptions) {
+ var string = String(dirtyString)
+ var options = dirtyOptions || {}
+ var width = options.width
+
+ var matchPattern =
+ (width && args.matchPatterns[width]) ||
+ args.matchPatterns[args.defaultMatchWidth]
+ var matchResult = string.match(matchPattern)
+
+ if (!matchResult) {
+ return null
+ }
+ var matchedString = matchResult[0]
+
+ var parsePatterns =
+ (width && args.parsePatterns[width]) ||
+ args.parsePatterns[args.defaultParseWidth]
+
+ var value
+ if (Object.prototype.toString.call(parsePatterns) === '[object Array]') {
+ value = findIndex(parsePatterns, function(pattern) {
+ return pattern.test(matchedString)
+ })
+ } else {
+ value = findKey(parsePatterns, function(pattern) {
+ return pattern.test(matchedString)
+ })
+ }
+
+ value = args.valueCallback ? args.valueCallback(value) : value
+ value = options.valueCallback ? options.valueCallback(value) : value
+
+ return {
+ value: value,
+ rest: string.slice(matchedString.length)
+ }
+ }
+}
+
+function findKey(object, predicate) {
+ for (var key in object) {
+ if (object.hasOwnProperty(key) && predicate(object[key])) {
+ return key
+ }
+ }
+}
+
+function findIndex(array, predicate) {
+ for (var key = 0; key < array.length; key++) {
+ if (predicate(array[key])) {
+ return key
+ }
+ }
+}
diff --git a/date-fns/src/locale/_lib/buildMatchPatternFn/index.js b/date-fns/src/locale/_lib/buildMatchPatternFn/index.js
new file mode 100644
index 0000000..faaabed
--- /dev/null
+++ b/date-fns/src/locale/_lib/buildMatchPatternFn/index.js
@@ -0,0 +1,24 @@
+export default function buildMatchPatternFn (args) {
+ return function (dirtyString, dirtyOptions) {
+ var string = String(dirtyString)
+ var options = dirtyOptions || {}
+
+ var matchResult = string.match(args.matchPattern)
+ if (!matchResult) {
+ return null
+ }
+ var matchedString = matchResult[0]
+
+ var parseResult = string.match(args.parsePattern)
+ if (!parseResult) {
+ return null
+ }
+ var value = args.valueCallback ? args.valueCallback(parseResult[0]) : parseResult[0]
+ value = options.valueCallback ? options.valueCallback(value) : value
+
+ return {
+ value: value,
+ rest: string.slice(matchedString.length)
+ }
+ }
+}
diff --git a/date-fns/src/locale/af/_lib/formatDistance/index.js b/date-fns/src/locale/af/_lib/formatDistance/index.js
new file mode 100644
index 0000000..0d51321
--- /dev/null
+++ b/date-fns/src/locale/af/_lib/formatDistance/index.js
@@ -0,0 +1,101 @@
+var formatDistanceLocale = {
+ lessThanXSeconds: {
+ one: "minder as 'n sekonde",
+ other: 'minder as {{count}} sekondes'
+ },
+
+ xSeconds: {
+ one: '1 sekonde',
+ other: '{{count}} sekondes'
+ },
+
+ halfAMinute: "'n halwe minuut",
+
+ lessThanXMinutes: {
+ one: "minder as 'n minuut",
+ other: 'minder as {{count}} minute'
+ },
+
+ xMinutes: {
+ one: "'n minuut",
+ other: '{{count}} minute'
+ },
+
+ aboutXHours: {
+ one: 'ongeveer 1 uur',
+ other: 'ongeveer {{count}} ure'
+ },
+
+ xHours: {
+ one: '1 uur',
+ other: '{{count}} ure'
+ },
+
+ xDays: {
+ one: '1 dag',
+ other: '{{count}} dae'
+ },
+
+ aboutXWeeks: {
+ one: 'ongeveer 1 week',
+ other: 'ongeveer {{count}} weke'
+ },
+
+ xWeeks: {
+ one: '1 week',
+ other: '{{count}} weke'
+ },
+
+ aboutXMonths: {
+ one: 'ongeveer 1 maand',
+ other: 'ongeveer {{count}} maande'
+ },
+
+ xMonths: {
+ one: '1 maand',
+ other: '{{count}} maande'
+ },
+
+ aboutXYears: {
+ one: 'ongeveer 1 jaar',
+ other: 'ongeveer {{count}} jaar'
+ },
+
+ xYears: {
+ one: '1 jaar',
+ other: '{{count}} jaar'
+ },
+
+ overXYears: {
+ one: 'meer as 1 jaar',
+ other: 'meer as {{count}} jaar'
+ },
+
+ almostXYears: {
+ one: 'byna 1 jaar',
+ other: 'byna {{count}} jaar'
+ }
+}
+
+export default function formatDistance(token, count, options) {
+ options = options || {}
+
+ var result
+ if (typeof formatDistanceLocale[token] === 'string') {
+ result = formatDistanceLocale[token]
+ } else if (count === 1) {
+ result = formatDistanceLocale[token].one
+ } else {
+ result = formatDistanceLocale[token].other.replace('{{count}}', count)
+ }
+
+ if (options.addSuffix) {
+ if (options.comparison > 0) {
+ return 'oor ' + result
+ } else {
+ return result + ' gelede'
+ }
+ }
+
+ return result
+}
diff --git a/date-fns/src/locale/af/_lib/formatLong/index.js b/date-fns/src/locale/af/_lib/formatLong/index.js
new file mode 100644
index 0000000..1420aa8
--- /dev/null
+++ b/date-fns/src/locale/af/_lib/formatLong/index.js
@@ -0,0 +1,41 @@
+import buildFormatLongFn from '../../../_lib/buildFormatLongFn/index'
+
+var dateFormats = {
+ full: 'EEEE, d MMMM yyyy',
+ long: 'd MMMM yyyy',
+ medium: 'd MMM yyyy',
+ short: 'yyyy/MM/dd'
+}
+
+var timeFormats = {
+ full: 'HH:mm:ss zzzz',
+ long: 'HH:mm:ss z',
+ medium: 'HH:mm:ss',
+ short: 'HH:mm'
+}
+
+var dateTimeFormats = {
+ full: "{{date}} 'om' {{time}}",
+ long: "{{date}} 'om' {{time}}",
+ medium: '{{date}}, {{time}}',
+ short: '{{date}}, {{time}}'
+}
+
+var formatLong = {
+ date: buildFormatLongFn({
+ formats: dateFormats,
+ defaultWidth: 'full'
+ }),
+
+ time: buildFormatLongFn({
+ formats: timeFormats,
+ defaultWidth: 'full'
+ }),
+
+ dateTime: buildFormatLongFn({
+ formats: dateTimeFormats,
+ defaultWidth: 'full'
+ })
+}
+
+export default formatLong
diff --git a/date-fns/src/locale/af/_lib/formatRelative/index.js b/date-fns/src/locale/af/_lib/formatRelative/index.js
new file mode 100644
index 0000000..8568a82
--- /dev/null
+++ b/date-fns/src/locale/af/_lib/formatRelative/index.js
@@ -0,0 +1,12 @@
+var formatRelativeLocale = {
+ lastWeek: "'verlede' eeee 'om' p",
+ yesterday: "'gister om' p",
+ today: "'vandag om' p",
+ tomorrow: "'môre om' p",
+ nextWeek: "eeee 'om' p",
+ other: 'P'
+}
+
+export default function formatRelative(token) {
+ return formatRelativeLocale[token]
+}
diff --git a/date-fns/src/locale/af/_lib/localize/index.js b/date-fns/src/locale/af/_lib/localize/index.js
new file mode 100644
index 0000000..77e06b9
--- /dev/null
+++ b/date-fns/src/locale/af/_lib/localize/index.js
@@ -0,0 +1,176 @@
+import buildLocalizeFn from '../../../_lib/buildLocalizeFn/index'
+
+var eraValues = {
+ narrow: ['vC', 'nC'],
+ abbreviated: ['vC', 'nC'],
+ wide: ['voor Christus', 'na Christus']
+}
+
+var quarterValues = {
+ narrow: ['1', '2', '3', '4'],
+ abbreviated: ['K1', 'K2', 'K3', 'K4'],
+ wide: ['1ste kwartaal', '2de kwartaal', '3de kwartaal', '4de kwartaal']
+}
+
+var monthValues = {
+ narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],
+ abbreviated: [
+ 'Jan',
+ 'Feb',
+ 'Mrt',
+ 'Apr',
+ 'Mei',
+ 'Jun',
+ 'Jul',
+ 'Aug',
+ 'Sep',
+ 'Okt',
+ 'Nov',
+ 'Des'
+ ],
+ wide: [
+ 'Januarie',
+ 'Februarie',
+ 'Maart',
+ 'April',
+ 'Mei',
+ 'Junie',
+ 'Julie',
+ 'Augustus',
+ 'September',
+ 'Oktober',
+ 'November',
+ 'Desember'
+ ]
+}
+
+var dayValues = {
+ narrow: ['S', 'M', 'D', 'W', 'D', 'V', 'S'],
+ short: ['So', 'Ma', 'Di', 'Wo', 'Do', 'Vr', 'Sa'],
+ abbreviated: ['Son', 'Maa', 'Din', 'Woe', 'Don', 'Vry', 'Sat'],
+ wide: [
+ 'Sondag',
+ 'Maandag',
+ 'Dinsdag',
+ 'Woensdag',
+ 'Donderdag',
+ 'Vrydag',
+ 'Saterdag'
+ ]
+}
+
+var dayPeriodValues = {
+ narrow: {
+ am: 'vm',
+ pm: 'nm',
+ midnight: 'middernag',
+ noon: 'middaguur',
+ morning: 'oggend',
+ afternoon: 'middag',
+ evening: 'laat middag',
+ night: 'aand'
+ },
+ abbreviated: {
+ am: 'vm',
+ pm: 'nm',
+ midnight: 'middernag',
+ noon: 'middaguur',
+ morning: 'oggend',
+ afternoon: 'middag',
+ evening: 'laat middag',
+ night: 'aand'
+ },
+ wide: {
+ am: 'vm',
+ pm: 'nm',
+ midnight: 'middernag',
+ noon: 'middaguur',
+ morning: 'oggend',
+ afternoon: 'middag',
+ evening: 'laat middag',
+ night: 'aand'
+ }
+}
+var formattingDayPeriodValues = {
+ narrow: {
+ am: 'vm',
+ pm: 'nm',
+ midnight: 'middernag',
+ noon: 'uur die middag',
+ morning: 'uur die oggend',
+ afternoon: 'uur die middag',
+ evening: 'uur die aand',
+ night: 'uur die aand'
+ },
+ abbreviated: {
+ am: 'vm',
+ pm: 'nm',
+ midnight: 'middernag',
+ noon: 'uur die middag',
+ morning: 'uur die oggend',
+ afternoon: 'uur die middag',
+ evening: 'uur die aand',
+ night: 'uur die aand'
+ },
+ wide: {
+ am: 'vm',
+ pm: 'nm',
+ midnight: 'middernag',
+ noon: 'uur die middag',
+ morning: 'uur die oggend',
+ afternoon: 'uur die middag',
+ evening: 'uur die aand',
+ night: 'uur die aand'
+ }
+}
+
+function ordinalNumber(dirtyNumber) {
+ var number = Number(dirtyNumber)
+ var rem100 = number % 100
+ if (rem100 < 20) {
+ switch (rem100) {
+ case 1:
+ case 8:
+ return number + 'ste'
+ default:
+ return number + 'de'
+ }
+ }
+ return number + 'ste'
+}
+
+var localize = {
+ ordinalNumber: ordinalNumber,
+
+ era: buildLocalizeFn({
+ values: eraValues,
+ defaultWidth: 'wide'
+ }),
+
+ quarter: buildLocalizeFn({
+ values: quarterValues,
+ defaultWidth: 'wide',
+ argumentCallback: function(quarter) {
+ return Number(quarter) - 1
+ }
+ }),
+
+ month: buildLocalizeFn({
+ values: monthValues,
+ defaultWidth: 'wide'
+ }),
+
+ day: buildLocalizeFn({
+ values: dayValues,
+ defaultWidth: 'wide'
+ }),
+
+ dayPeriod: buildLocalizeFn({
+ values: dayPeriodValues,
+ defaultWidth: 'wide',
+ formattingValues: formattingDayPeriodValues,
+ defaultFormattingWidth: 'wide'
+ })
+}
+
+export default localize
diff --git a/date-fns/src/locale/af/_lib/match/index.js b/date-fns/src/locale/af/_lib/match/index.js
new file mode 100644
index 0000000..e5cb7a0
--- /dev/null
+++ b/date-fns/src/locale/af/_lib/match/index.js
@@ -0,0 +1,136 @@
+import buildMatchPatternFn from '../../../_lib/buildMatchPatternFn/index'
+import buildMatchFn from '../../../_lib/buildMatchFn/index'
+
+var matchOrdinalNumberPattern = /^(\d+)(ste|de)?/i
+var parseOrdinalNumberPattern = /\d+/i
+
+var matchEraPatterns = {
+ narrow: /^([vn]\.? ?C\.?)/,
+ abbreviated: /^([vn]\. ?C\.?)/,
+ wide: /^((voor|na) Christus)/
+}
+var parseEraPatterns = {
+ any: [/^v/, /^n/]
+}
+
+var matchQuarterPatterns = {
+ narrow: /^[1234]/i,
+ abbreviated: /^K[1234]/i,
+ wide: /^[1234](st|d)e kwartaal/i
+}
+var parseQuarterPatterns = {
+ any: [/1/i, /2/i, /3/i, /4/i]
+}
+
+var matchMonthPatterns = {
+ narrow: /^[jfmasond]/i,
+ abbreviated: /^(Jan|Feb|Mrt|Apr|Mei|Jun|Jul|Aug|Sep|Okt|Nov|Dec)\.?/i,
+ wide: /^(Januarie|Februarie|Maart|April|Mei|Junie|Julie|Augustus|September|Oktober|November|Desember)/i
+}
+var parseMonthPatterns = {
+ narrow: [
+ /^J/i,
+ /^F/i,
+ /^M/i,
+ /^A/i,
+ /^M/i,
+ /^J/i,
+ /^J/i,
+ /^A/i,
+ /^S/i,
+ /^O/i,
+ /^N/i,
+ /^D/i
+ ],
+ any: [
+ /^Jan/i,
+ /^Feb/i,
+ /^Mrt/i,
+ /^Apr/i,
+ /^Mei/i,
+ /^Jun/i,
+ /^Jul/i,
+ /^Aug/i,
+ /^Sep/i,
+ /^Okt/i,
+ /^Nov/i,
+ /^Dec/i
+ ]
+}
+
+var matchDayPatterns = {
+ narrow: /^[smdwv]/i,
+ short: /^(So|Ma|Di|Wo|Do|Vr|Sa)/i,
+ abbreviated: /^(Son|Maa|Din|Woe|Don|Vry|Sat)/i,
+ wide: /^(Sondag|Maandag|Dinsdag|Woensdag|Donderdag|Vrydag|Saterdag)/i
+}
+var parseDayPatterns = {
+ narrow: [/^S/i, /^M/i, /^D/i, /^W/i, /^D/i, /^V/i, /^S/i],
+ any: [/^So/i, /^Ma/i, /^Di/i, /^Wo/i, /^Do/i, /^Vr/i, /^Sa/i]
+}
+
+var matchDayPeriodPatterns = {
+ any: /^(vm|nm|middernag|(?:uur )?die (oggend|middag|aand))/i
+}
+var parseDayPeriodPatterns = {
+ any: {
+ am: /^vm/i,
+ pm: /^nm/i,
+ midnight: /^middernag/i,
+ noon: /^middaguur/i,
+ morning: /oggend/i,
+ afternoon: /middag/i,
+ evening: /laat middag/i,
+ night: /aand/i
+ }
+}
+
+var match = {
+ ordinalNumber: buildMatchPatternFn({
+ matchPattern: matchOrdinalNumberPattern,
+ parsePattern: parseOrdinalNumberPattern,
+ valueCallback: function(value) {
+ return parseInt(value, 10)
+ }
+ }),
+
+ era: buildMatchFn({
+ matchPatterns: matchEraPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseEraPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ quarter: buildMatchFn({
+ matchPatterns: matchQuarterPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseQuarterPatterns,
+ defaultParseWidth: 'any',
+ valueCallback: function(index) {
+ return index + 1
+ }
+ }),
+
+ month: buildMatchFn({
+ matchPatterns: matchMonthPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseMonthPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ day: buildMatchFn({
+ matchPatterns: matchDayPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseDayPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ dayPeriod: buildMatchFn({
+ matchPatterns: matchDayPeriodPatterns,
+ defaultMatchWidth: 'any',
+ parsePatterns: parseDayPeriodPatterns,
+ defaultParseWidth: 'any'
+ })
+}
+
+export default match
diff --git a/date-fns/src/locale/af/index.d.ts b/date-fns/src/locale/af/index.d.ts
new file mode 100644
index 0000000..fb278e6
--- /dev/null
+++ b/date-fns/src/locale/af/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { af } from 'date-fns/locale'
+export default af
diff --git a/date-fns/src/locale/af/index.js b/date-fns/src/locale/af/index.js
new file mode 100644
index 0000000..205b983
--- /dev/null
+++ b/date-fns/src/locale/af/index.js
@@ -0,0 +1,28 @@
+import formatDistance from './_lib/formatDistance/index'
+import formatLong from './_lib/formatLong/index'
+import formatRelative from './_lib/formatRelative/index'
+import localize from './_lib/localize/index'
+import match from './_lib/match/index'
+
+/**
+ * @type {Locale}
+ * @category Locales
+ * @summary Afrikaans locale.
+ * @language Afrikaans
+ * @iso-639-2 afr
+ * @author Marnus Weststrate [@marnusw]{@link https://github.com/marnusw}
+ */
+var locale = {
+ code: 'af',
+ formatDistance: formatDistance,
+ formatLong: formatLong,
+ formatRelative: formatRelative,
+ localize: localize,
+ match: match,
+ options: {
+ weekStartsOn: 0 /* Sunday */,
+ firstWeekContainsDate: 1
+ }
+}
+
+export default locale
diff --git a/date-fns/src/locale/af/index.js.flow b/date-fns/src/locale/af/index.js.flow
new file mode 100644
index 0000000..b9dfe66
--- /dev/null
+++ b/date-fns/src/locale/af/index.js.flow
@@ -0,0 +1,35 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+declare module.exports: Locale
diff --git a/date-fns/src/locale/af/snapshot.md b/date-fns/src/locale/af/snapshot.md
new file mode 100644
index 0000000..968212c
--- /dev/null
+++ b/date-fns/src/locale/af/snapshot.md
@@ -0,0 +1,304 @@
+# Afrikaans (af) locale
+
+## `format` and `parse`
+
+| Title | Token string | Date | `format` result | `parse` result |
+| ------------------------------- | ------------ | ------------------------ | ------------------------------------------------- | ------------------------ |
+| Calendar year | yo | 1987-02-11T12:13:14.015Z | 1987ste | 1987-01-01T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 5de | 0005-01-01T00:00:00.000Z |
+| Local week-numbering year | Yo | 1987-02-11T12:13:14.015Z | 1987ste | 1986-12-28T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 5de | 0004-12-26T00:00:00.000Z |
+| Quarter (formatting) | Qo | 2019-01-01T12:13:14.015Z | 1ste | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2de | 2019-04-01T00:00:00.000Z |
+| | QQQ | 2019-01-01T12:13:14.015Z | K1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | K2 | 2019-04-01T00:00:00.000Z |
+| | QQQQ | 2019-01-01T12:13:14.015Z | 1ste kwartaal | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2de kwartaal | 2019-04-01T00:00:00.000Z |
+| | QQQQQ | 2019-01-01T12:13:14.015Z | 1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2 | 2019-04-01T00:00:00.000Z |
+| Quarter (stand-alone) | qo | 2019-01-01T12:13:14.015Z | 1ste | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2de | 2019-04-01T00:00:00.000Z |
+| | qqq | 2019-01-01T12:13:14.015Z | K1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | K2 | 2019-04-01T00:00:00.000Z |
+| | qqqq | 2019-01-01T12:13:14.015Z | 1ste kwartaal | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2de kwartaal | 2019-04-01T00:00:00.000Z |
+| Month (formatting) | Mo | 2019-02-11T12:13:14.015Z | 2de | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7de | 2019-07-01T00:00:00.000Z |
+| | MMM | 2019-02-11T12:13:14.015Z | Feb | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | Jul | 2019-07-01T00:00:00.000Z |
+| | MMMM | 2019-02-11T12:13:14.015Z | Februarie | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | Julie | 2019-07-01T00:00:00.000Z |
+| | MMMMM | 2019-02-11T12:13:14.015Z | F | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | J | 2019-01-01T00:00:00.000Z |
+| Month (stand-alone) | Lo | 2019-02-11T12:13:14.015Z | 2de | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7de | 2019-07-01T00:00:00.000Z |
+| | LLL | 2019-02-11T12:13:14.015Z | Feb | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | Jul | 2019-07-01T00:00:00.000Z |
+| | LLLL | 2019-02-11T12:13:14.015Z | Februarie | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | Julie | 2019-07-01T00:00:00.000Z |
+| | LLLLL | 2019-02-11T12:13:14.015Z | F | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | J | 2019-01-01T00:00:00.000Z |
+| Local week of year | wo | 2019-01-01T12:13:14.015Z | 1ste | 2018-12-30T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 49ste | 2019-12-01T00:00:00.000Z |
+| ISO week of year | Io | 2019-01-01T12:13:14.015Z | 1ste | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48ste | 2019-11-25T00:00:00.000Z |
+| Day of month | do | 2019-02-11T12:13:14.015Z | 11de | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-28T12:13:14.015Z | 28ste | 2019-02-28T00:00:00.000Z |
+| Day of year | Do | 2019-02-11T12:13:14.015Z | 42ste | 2019-02-11T00:00:00.000Z |
+| | | 2019-12-31T12:13:14.015Z | 365ste | 2019-12-31T00:00:00.000Z |
+| Day of week (formatting) | E | 2019-02-11T12:13:14.015Z | Maa | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Vry | 2019-02-15T00:00:00.000Z |
+| | EE | 2019-02-11T12:13:14.015Z | Maa | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Vry | 2019-02-15T00:00:00.000Z |
+| | EEE | 2019-02-11T12:13:14.015Z | Maa | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Vry | 2019-02-15T00:00:00.000Z |
+| | EEEE | 2019-02-11T12:13:14.015Z | Maandag | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Vrydag | 2019-02-15T00:00:00.000Z |
+| | EEEEE | 2019-02-11T12:13:14.015Z | M | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | V | 2019-02-15T00:00:00.000Z |
+| | EEEEEE | 2019-02-11T12:13:14.015Z | Ma | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Vr | 2019-02-15T00:00:00.000Z |
+| ISO day of week (formatting) | io | 2019-02-11T12:13:14.015Z | 1ste | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5de | 2019-02-15T00:00:00.000Z |
+| | iii | 2019-02-11T12:13:14.015Z | Maa | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Vry | 2019-02-15T00:00:00.000Z |
+| | iiii | 2019-02-11T12:13:14.015Z | Maandag | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Vrydag | 2019-02-15T00:00:00.000Z |
+| | iiiii | 2019-02-11T12:13:14.015Z | M | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | V | 2019-02-15T00:00:00.000Z |
+| | iiiiii | 2019-02-11T12:13:14.015Z | Ma | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Vr | 2019-02-15T00:00:00.000Z |
+| Local day of week (formatting) | eo | 2019-02-11T12:13:14.015Z | 2de | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 6de | 2019-02-15T00:00:00.000Z |
+| | eee | 2019-02-11T12:13:14.015Z | Maa | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Vry | 2019-02-15T00:00:00.000Z |
+| | eeee | 2019-02-11T12:13:14.015Z | Maandag | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Vrydag | 2019-02-15T00:00:00.000Z |
+| | eeeee | 2019-02-11T12:13:14.015Z | M | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | V | 2019-02-15T00:00:00.000Z |
+| | eeeeee | 2019-02-11T12:13:14.015Z | Ma | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Vr | 2019-02-15T00:00:00.000Z |
+| Local day of week (stand-alone) | co | 2019-02-11T12:13:14.015Z | 2de | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 6de | 2019-02-15T00:00:00.000Z |
+| | ccc | 2019-02-11T12:13:14.015Z | Maa | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Vry | 2019-02-15T00:00:00.000Z |
+| | cccc | 2019-02-11T12:13:14.015Z | Maandag | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Vrydag | 2019-02-15T00:00:00.000Z |
+| | ccccc | 2019-02-11T12:13:14.015Z | M | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | V | 2019-02-15T00:00:00.000Z |
+| | cccccc | 2019-02-11T12:13:14.015Z | Ma | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Vr | 2019-02-15T00:00:00.000Z |
+| AM, PM | a | 2019-02-11T11:13:14.015Z | vm | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | nm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | nm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | vm | 2019-02-11T00:00:00.000Z |
+| | aa | 2019-02-11T11:13:14.015Z | vm | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | nm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | nm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | vm | 2019-02-11T00:00:00.000Z |
+| | aaa | 2019-02-11T11:13:14.015Z | vm | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | nm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | nm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | vm | 2019-02-11T00:00:00.000Z |
+| | aaaa | 2019-02-11T11:13:14.015Z | vm | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | nm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | nm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | vm | 2019-02-11T00:00:00.000Z |
+| | aaaaa | 2019-02-11T11:13:14.015Z | vm | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | nm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | nm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | vm | 2019-02-11T00:00:00.000Z |
+| AM, PM, noon, midnight | b | 2019-02-11T11:13:14.015Z | vm | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | nm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | nm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | vm | 2019-02-11T00:00:00.000Z |
+| | bb | 2019-02-11T11:13:14.015Z | vm | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | nm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | nm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | vm | 2019-02-11T00:00:00.000Z |
+| | bbb | 2019-02-11T11:13:14.015Z | vm | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | nm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | nm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | vm | 2019-02-11T00:00:00.000Z |
+| | bbbb | 2019-02-11T11:13:14.015Z | vm | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | nm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | nm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | vm | 2019-02-11T00:00:00.000Z |
+| | bbbbb | 2019-02-11T11:13:14.015Z | vm | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | nm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | nm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | vm | 2019-02-11T00:00:00.000Z |
+| Flexible day period | B | 2019-02-11T11:13:14.015Z | uur die oggend | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | uur die middag | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | uur die aand | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | uur die aand | 2019-02-11T00:00:00.000Z |
+| | BB | 2019-02-11T11:13:14.015Z | uur die oggend | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | uur die middag | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | uur die aand | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | uur die aand | 2019-02-11T00:00:00.000Z |
+| | BBB | 2019-02-11T11:13:14.015Z | uur die oggend | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | uur die middag | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | uur die aand | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | uur die aand | 2019-02-11T00:00:00.000Z |
+| | BBBB | 2019-02-11T11:13:14.015Z | uur die oggend | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | uur die middag | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | uur die aand | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | uur die aand | 2019-02-11T00:00:00.000Z |
+| | BBBBB | 2019-02-11T11:13:14.015Z | uur die oggend | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | uur die middag | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | uur die aand | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | uur die aand | 2019-02-11T00:00:00.000Z |
+| Hour [1-12] | ho | 2019-02-11T11:13:14.015Z | 11de | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11de | 2019-02-11T23:00:00.000Z |
+| Hour [0-23] | Ho | 2019-02-11T11:13:14.015Z | 11de | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23ste | 2019-02-11T23:00:00.000Z |
+| Hour [0-11] | Ko | 2019-02-11T11:13:14.015Z | 11de | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11de | 2019-02-11T23:00:00.000Z |
+| Hour [1-24] | ko | 2019-02-11T11:13:14.015Z | 11de | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23ste | 2019-02-11T23:00:00.000Z |
+| Minute | mo | 2019-01-01T12:01:14.015Z | 1ste | 2019-01-01T12:01:00.000Z |
+| | | 2019-04-01T12:55:14.015Z | 55ste | 2019-04-01T12:55:00.000Z |
+| Second | so | 2019-01-01T12:13:01.015Z | 1ste | 2019-01-01T12:13:01.000Z |
+| | | 2019-04-01T12:13:55.015Z | 55ste | 2019-04-01T12:13:55.000Z |
+| Long localized date | P | 1987-02-11T12:13:14.015Z | 1987/02/11 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 1453/05/29 | 1453-05-29T00:00:00.000Z |
+| | PP | 1987-02-11T12:13:14.015Z | 11 Feb 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 Mei 1453 | 1453-05-29T00:00:00.000Z |
+| | PPP | 1987-02-11T12:13:14.015Z | 11 Februarie 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 Mei 1453 | 1453-05-29T00:00:00.000Z |
+| | PPPP | 1987-02-11T12:13:14.015Z | Woensdag, 11 Februarie 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | Sondag, 29 Mei 1453 | 1453-05-29T00:00:00.000Z |
+| Long localized time | p | 1987-02-11T12:13:14.015Z | 12:13 | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 23:59 | 1453-05-29T23:59:00.000Z |
+| | pp | 1987-02-11T12:13:14.015Z | 12:13:14 | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 | 1453-05-29T23:59:59.000Z |
+| | ppp | 1987-02-11T12:13:14.015Z | 12:13:14 GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 GMT+0 | Errored |
+| | pppp | 1987-02-11T12:13:14.015Z | 12:13:14 GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 GMT+00:00 | Errored |
+| Combination of date and time | Pp | 1987-02-11T12:13:14.015Z | 1987/02/11, 12:13 | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 1453/05/29, 23:59 | 1453-05-29T23:59:00.000Z |
+| | PPpp | 1987-02-11T12:13:14.015Z | 11 Feb 1987, 12:13:14 | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 Mei 1453, 23:59:59 | 1453-05-29T23:59:59.000Z |
+| | PPPppp | 1987-02-11T12:13:14.015Z | 11 Februarie 1987 om 12:13:14 GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 29 Mei 1453 om 23:59:59 GMT+0 | Errored |
+| | PPPPpppp | 1987-02-11T12:13:14.015Z | Woensdag, 11 Februarie 1987 om 12:13:14 GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | Sondag, 29 Mei 1453 om 23:59:59 GMT+00:00 | Errored |
+
+## `formatDistance`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `includeSeconds: true` | `addSuffix: true` |
+| ------------------------ | ------------------- | ---------------------- | -------------------------- |
+| 2006-01-01T00:00:00.000Z | ongeveer 6 jaar | ongeveer 6 jaar | oor ongeveer 6 jaar |
+| 2005-01-01T00:00:00.000Z | ongeveer 5 jaar | ongeveer 5 jaar | oor ongeveer 5 jaar |
+| 2004-01-01T00:00:00.000Z | ongeveer 4 jaar | ongeveer 4 jaar | oor ongeveer 4 jaar |
+| 2003-01-01T00:00:00.000Z | ongeveer 3 jaar | ongeveer 3 jaar | oor ongeveer 3 jaar |
+| 2002-01-01T00:00:00.000Z | ongeveer 2 jaar | ongeveer 2 jaar | oor ongeveer 2 jaar |
+| 2001-06-01T00:00:00.000Z | meer as 1 jaar | meer as 1 jaar | oor meer as 1 jaar |
+| 2001-02-01T00:00:00.000Z | ongeveer 1 jaar | ongeveer 1 jaar | oor ongeveer 1 jaar |
+| 2001-01-01T00:00:00.000Z | ongeveer 1 jaar | ongeveer 1 jaar | oor ongeveer 1 jaar |
+| 2000-06-01T00:00:00.000Z | 5 maande | 5 maande | oor 5 maande |
+| 2000-03-01T00:00:00.000Z | 2 maande | 2 maande | oor 2 maande |
+| 2000-02-01T00:00:00.000Z | ongeveer 1 maand | ongeveer 1 maand | oor ongeveer 1 maand |
+| 2000-01-15T00:00:00.000Z | 14 dae | 14 dae | oor 14 dae |
+| 2000-01-02T00:00:00.000Z | 1 dag | 1 dag | oor 1 dag |
+| 2000-01-01T06:00:00.000Z | ongeveer 6 ure | ongeveer 6 ure | oor ongeveer 6 ure |
+| 2000-01-01T01:00:00.000Z | ongeveer 1 uur | ongeveer 1 uur | oor ongeveer 1 uur |
+| 2000-01-01T00:45:00.000Z | ongeveer 1 uur | ongeveer 1 uur | oor ongeveer 1 uur |
+| 2000-01-01T00:30:00.000Z | 30 minute | 30 minute | oor 30 minute |
+| 2000-01-01T00:15:00.000Z | 15 minute | 15 minute | oor 15 minute |
+| 2000-01-01T00:01:00.000Z | 'n minuut | 'n minuut | oor 'n minuut |
+| 2000-01-01T00:00:25.000Z | minder as 'n minuut | 'n halwe minuut | oor minder as 'n minuut |
+| 2000-01-01T00:00:15.000Z | minder as 'n minuut | minder as 20 sekondes | oor minder as 'n minuut |
+| 2000-01-01T00:00:05.000Z | minder as 'n minuut | minder as 10 sekondes | oor minder as 'n minuut |
+| 2000-01-01T00:00:00.000Z | minder as 'n minuut | minder as 5 sekondes | minder as 'n minuut gelede |
+| 1999-12-31T23:59:55.000Z | minder as 'n minuut | minder as 10 sekondes | minder as 'n minuut gelede |
+| 1999-12-31T23:59:45.000Z | minder as 'n minuut | minder as 20 sekondes | minder as 'n minuut gelede |
+| 1999-12-31T23:59:35.000Z | minder as 'n minuut | 'n halwe minuut | minder as 'n minuut gelede |
+| 1999-12-31T23:59:00.000Z | 'n minuut | 'n minuut | 'n minuut gelede |
+| 1999-12-31T23:45:00.000Z | 15 minute | 15 minute | 15 minute gelede |
+| 1999-12-31T23:30:00.000Z | 30 minute | 30 minute | 30 minute gelede |
+| 1999-12-31T23:15:00.000Z | ongeveer 1 uur | ongeveer 1 uur | ongeveer 1 uur gelede |
+| 1999-12-31T23:00:00.000Z | ongeveer 1 uur | ongeveer 1 uur | ongeveer 1 uur gelede |
+| 1999-12-31T18:00:00.000Z | ongeveer 6 ure | ongeveer 6 ure | ongeveer 6 ure gelede |
+| 1999-12-30T00:00:00.000Z | 2 dae | 2 dae | 2 dae gelede |
+| 1999-12-15T00:00:00.000Z | 17 dae | 17 dae | 17 dae gelede |
+| 1999-12-01T00:00:00.000Z | ongeveer 1 maand | ongeveer 1 maand | ongeveer 1 maand gelede |
+| 1999-11-01T00:00:00.000Z | 2 maande | 2 maande | 2 maande gelede |
+| 1999-06-01T00:00:00.000Z | 7 maande | 7 maande | 7 maande gelede |
+| 1999-01-01T00:00:00.000Z | ongeveer 1 jaar | ongeveer 1 jaar | ongeveer 1 jaar gelede |
+| 1998-12-01T00:00:00.000Z | ongeveer 1 jaar | ongeveer 1 jaar | ongeveer 1 jaar gelede |
+| 1998-06-01T00:00:00.000Z | meer as 1 jaar | meer as 1 jaar | meer as 1 jaar gelede |
+| 1998-01-01T00:00:00.000Z | ongeveer 2 jaar | ongeveer 2 jaar | ongeveer 2 jaar gelede |
+| 1997-01-01T00:00:00.000Z | ongeveer 3 jaar | ongeveer 3 jaar | ongeveer 3 jaar gelede |
+| 1996-01-01T00:00:00.000Z | ongeveer 4 jaar | ongeveer 4 jaar | ongeveer 4 jaar gelede |
+| 1995-01-01T00:00:00.000Z | ongeveer 5 jaar | ongeveer 5 jaar | ongeveer 5 jaar gelede |
+| 1994-01-01T00:00:00.000Z | ongeveer 6 jaar | ongeveer 6 jaar | ongeveer 6 jaar gelede |
+
+## `formatDistanceStrict`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `addSuffix: true` | With forced unit (i.e. `hour`) |
+| ------------------------ | ----------- | ------------------ | ------------------------------ |
+| 2006-01-01T00:00:00.000Z | 6 jaar | oor 6 jaar | 52608 ure |
+| 2005-01-01T00:00:00.000Z | 5 jaar | oor 5 jaar | 43848 ure |
+| 2004-01-01T00:00:00.000Z | 4 jaar | oor 4 jaar | 35064 ure |
+| 2003-01-01T00:00:00.000Z | 3 jaar | oor 3 jaar | 26304 ure |
+| 2002-01-01T00:00:00.000Z | 2 jaar | oor 2 jaar | 17544 ure |
+| 2001-06-01T00:00:00.000Z | 1 jaar | oor 1 jaar | 12408 ure |
+| 2001-02-01T00:00:00.000Z | 1 jaar | oor 1 jaar | 9528 ure |
+| 2001-01-01T00:00:00.000Z | 1 jaar | oor 1 jaar | 8784 ure |
+| 2000-06-01T00:00:00.000Z | 5 maande | oor 5 maande | 3648 ure |
+| 2000-03-01T00:00:00.000Z | 2 maande | oor 2 maande | 1440 ure |
+| 2000-02-01T00:00:00.000Z | 1 maand | oor 1 maand | 744 ure |
+| 2000-01-15T00:00:00.000Z | 14 dae | oor 14 dae | 336 ure |
+| 2000-01-02T00:00:00.000Z | 1 dag | oor 1 dag | 24 ure |
+| 2000-01-01T06:00:00.000Z | 6 ure | oor 6 ure | 6 ure |
+| 2000-01-01T01:00:00.000Z | 1 uur | oor 1 uur | 1 uur |
+| 2000-01-01T00:45:00.000Z | 45 minute | oor 45 minute | 1 uur |
+| 2000-01-01T00:30:00.000Z | 30 minute | oor 30 minute | 1 uur |
+| 2000-01-01T00:15:00.000Z | 15 minute | oor 15 minute | 0 ure |
+| 2000-01-01T00:01:00.000Z | 'n minuut | oor 'n minuut | 0 ure |
+| 2000-01-01T00:00:25.000Z | 25 sekondes | oor 25 sekondes | 0 ure |
+| 2000-01-01T00:00:15.000Z | 15 sekondes | oor 15 sekondes | 0 ure |
+| 2000-01-01T00:00:05.000Z | 5 sekondes | oor 5 sekondes | 0 ure |
+| 2000-01-01T00:00:00.000Z | 0 sekondes | 0 sekondes gelede | 0 ure |
+| 1999-12-31T23:59:55.000Z | 5 sekondes | 5 sekondes gelede | 0 ure |
+| 1999-12-31T23:59:45.000Z | 15 sekondes | 15 sekondes gelede | 0 ure |
+| 1999-12-31T23:59:35.000Z | 25 sekondes | 25 sekondes gelede | 0 ure |
+| 1999-12-31T23:59:00.000Z | 'n minuut | 'n minuut gelede | 0 ure |
+| 1999-12-31T23:45:00.000Z | 15 minute | 15 minute gelede | 0 ure |
+| 1999-12-31T23:30:00.000Z | 30 minute | 30 minute gelede | 1 uur |
+| 1999-12-31T23:15:00.000Z | 45 minute | 45 minute gelede | 1 uur |
+| 1999-12-31T23:00:00.000Z | 1 uur | 1 uur gelede | 1 uur |
+| 1999-12-31T18:00:00.000Z | 6 ure | 6 ure gelede | 6 ure |
+| 1999-12-30T00:00:00.000Z | 2 dae | 2 dae gelede | 48 ure |
+| 1999-12-15T00:00:00.000Z | 17 dae | 17 dae gelede | 408 ure |
+| 1999-12-01T00:00:00.000Z | 1 maand | 1 maand gelede | 744 ure |
+| 1999-11-01T00:00:00.000Z | 2 maande | 2 maande gelede | 1464 ure |
+| 1999-06-01T00:00:00.000Z | 7 maande | 7 maande gelede | 5136 ure |
+| 1999-01-01T00:00:00.000Z | 1 jaar | 1 jaar gelede | 8760 ure |
+| 1998-12-01T00:00:00.000Z | 1 jaar | 1 jaar gelede | 9504 ure |
+| 1998-06-01T00:00:00.000Z | 2 jaar | 2 jaar gelede | 13896 ure |
+| 1998-01-01T00:00:00.000Z | 2 jaar | 2 jaar gelede | 17520 ure |
+| 1997-01-01T00:00:00.000Z | 3 jaar | 3 jaar gelede | 26280 ure |
+| 1996-01-01T00:00:00.000Z | 4 jaar | 4 jaar gelede | 35064 ure |
+| 1995-01-01T00:00:00.000Z | 5 jaar | 5 jaar gelede | 43824 ure |
+| 1994-01-01T00:00:00.000Z | 6 jaar | 6 jaar gelede | 52584 ure |
+
+## `formatRelative`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result |
+| ------------------------ | ------------------------ |
+| 2000-01-10T00:00:00.000Z | 2000/01/10 |
+| 2000-01-05T00:00:00.000Z | Woensdag om 00:00 |
+| 2000-01-02T00:00:00.000Z | môre om 00:00 |
+| 2000-01-01T00:00:00.000Z | vandag om 00:00 |
+| 1999-12-31T00:00:00.000Z | gister om 00:00 |
+| 1999-12-27T00:00:00.000Z | verlede Maandag om 00:00 |
+| 1999-12-21T00:00:00.000Z | 1999/12/21 |
diff --git a/date-fns/src/locale/ar-DZ/_lib/formatDistance/index.js b/date-fns/src/locale/ar-DZ/_lib/formatDistance/index.js
new file mode 100644
index 0000000..bcdb373
--- /dev/null
+++ b/date-fns/src/locale/ar-DZ/_lib/formatDistance/index.js
@@ -0,0 +1,135 @@
+var formatDistanceLocale = {
+ lessThanXSeconds: {
+ one: 'أقل من ثانية واحدة',
+ two: 'أقل من ثانتين',
+ threeToTen: 'أقل من {{count}} ثواني',
+ other: 'أقل من {{count}} ثانية'
+ },
+
+ xSeconds: {
+ one: 'ثانية واحدة',
+ two: 'ثانتين',
+ threeToTen: '{{count}} ثواني',
+ other: '{{count}} ثانية'
+ },
+
+ halfAMinute: 'نصف دقيقة',
+
+ lessThanXMinutes: {
+ one: 'أقل من دقيقة',
+ two: 'أقل من دقيقتين',
+ threeToTen: 'أقل من {{count}} دقائق',
+ other: 'أقل من {{count}} دقيقة'
+ },
+
+ xMinutes: {
+ one: 'دقيقة واحدة',
+ two: 'دقيقتين',
+ threeToTen: '{{count}} دقائق',
+ other: '{{count}} دقيقة'
+ },
+
+ aboutXHours: {
+ one: 'ساعة واحدة تقريباً',
+ two: 'ساعتين تقريباً',
+ threeToTen: '{{count}} ساعات تقريباً',
+ other: '{{count}} ساعة تقريباً'
+ },
+
+ xHours: {
+ one: 'ساعة واحدة',
+ two: 'ساعتين',
+ threeToTen: '{{count}} ساعات',
+ other: '{{count}} ساعة'
+ },
+
+ xDays: {
+ one: 'يوم واحد',
+ two: 'يومين',
+ threeToTen: '{{count}} أيام',
+ other: '{{count}} يوم'
+ },
+
+ aboutXWeeks: {
+ one: 'أسبوع واحد تقريباً',
+ two: 'أسبوعين تقريباً',
+ threeToTen: '{{count}} أسابيع تقريباً',
+ other: '{{count}} أسبوع تقريباً'
+ },
+
+ xWeeks: {
+ one: 'أسبوع واحد',
+ two: 'أسبوعين',
+ threeToTen: '{{count}} أسابيع',
+ other: '{{count}} أسبوع'
+ },
+
+ aboutXMonths: {
+ one: 'شهر واحد تقريباً',
+ two: 'شهرين تقريباً',
+ threeToTen: '{{count}} أشهر تقريباً',
+ other: '{{count}} شهر تقريباً'
+ },
+
+ xMonths: {
+ one: 'شهر واحد',
+ two: 'شهرين',
+ threeToTen: '{{count}} أشهر',
+ other: '{{count}} شهر'
+ },
+
+ aboutXYears: {
+ one: 'عام واحد تقريباً',
+ two: 'عامين تقريباً',
+ threeToTen: '{{count}} أعوام تقريباً',
+ other: '{{count}} عام تقريباً'
+ },
+
+ xYears: {
+ one: 'عام واحد',
+ two: 'عامين',
+ threeToTen: '{{count}} أعوام',
+ other: '{{count}} عام'
+ },
+
+ overXYears: {
+ one: 'أكثر من عام',
+ two: 'أكثر من عامين',
+ threeToTen: 'أكثر من {{count}} أعوام',
+ other: 'أكثر من {{count}} عام'
+ },
+
+ almostXYears: {
+ one: 'عام واحد تقريباً',
+ two: 'عامين تقريباً',
+ threeToTen: '{{count}} أعوام تقريباً',
+ other: '{{count}} عام تقريباً'
+ }
+}
+
+export default function formatDistance(token, count, options) {
+ options = options || {}
+
+ var result
+ if (typeof formatDistanceLocale[token] === 'string') {
+ result = formatDistanceLocale[token]
+ } else if (count === 1) {
+ result = formatDistanceLocale[token].one
+ } else if (count === 2) {
+ result = formatDistanceLocale[token].two
+ } else if (count <= 10) {
+ result = formatDistanceLocale[token].threeToTen.replace('{{count}}', count)
+ } else {
+ result = formatDistanceLocale[token].other.replace('{{count}}', count)
+ }
+
+ if (options.addSuffix) {
+ if (options.comparison > 0) {
+ return 'في خلال ' + result
+ } else {
+ return 'منذ ' + result
+ }
+ }
+
+ return result
+}
diff --git a/date-fns/src/locale/ar-DZ/_lib/formatLong/index.js b/date-fns/src/locale/ar-DZ/_lib/formatLong/index.js
new file mode 100644
index 0000000..a65ad56
--- /dev/null
+++ b/date-fns/src/locale/ar-DZ/_lib/formatLong/index.js
@@ -0,0 +1,41 @@
+import buildFormatLongFn from '../../../_lib/buildFormatLongFn/index'
+
+var dateFormats = {
+ full: 'EEEE, MMMM do, y',
+ long: 'MMMM do, y',
+ medium: 'MMM d, y',
+ short: 'MM/dd/yyyy'
+}
+
+var timeFormats = {
+ full: 'h:mm:ss a zzzz',
+ long: 'h:mm:ss a z',
+ medium: 'h:mm:ss a',
+ short: 'h:mm a'
+}
+
+var dateTimeFormats = {
+ full: "{{date}} 'عند' {{time}}",
+ long: "{{date}} 'عند' {{time}}",
+ medium: '{{date}}, {{time}}',
+ short: '{{date}}, {{time}}'
+}
+
+var formatLong = {
+ date: buildFormatLongFn({
+ formats: dateFormats,
+ defaultWidth: 'full'
+ }),
+
+ time: buildFormatLongFn({
+ formats: timeFormats,
+ defaultWidth: 'full'
+ }),
+
+ dateTime: buildFormatLongFn({
+ formats: dateTimeFormats,
+ defaultWidth: 'full'
+ })
+}
+
+export default formatLong
diff --git a/date-fns/src/locale/ar-DZ/_lib/formatRelative/index.js b/date-fns/src/locale/ar-DZ/_lib/formatRelative/index.js
new file mode 100644
index 0000000..9276495
--- /dev/null
+++ b/date-fns/src/locale/ar-DZ/_lib/formatRelative/index.js
@@ -0,0 +1,12 @@
+var formatRelativeLocale = {
+ lastWeek: "'أخر' eeee 'عند' p",
+ yesterday: "'أمس عند' p",
+ today: "'اليوم عند' p",
+ tomorrow: "'غداً عند' p",
+ nextWeek: "eeee 'عند' p",
+ other: 'P'
+}
+
+export default function formatRelative(token, _date, _baseDate, _options) {
+ return formatRelativeLocale[token]
+}
diff --git a/date-fns/src/locale/ar-DZ/_lib/localize/index.js b/date-fns/src/locale/ar-DZ/_lib/localize/index.js
new file mode 100644
index 0000000..0a8c733
--- /dev/null
+++ b/date-fns/src/locale/ar-DZ/_lib/localize/index.js
@@ -0,0 +1,163 @@
+import buildLocalizeFn from '../../../_lib/buildLocalizeFn/index'
+
+var eraValues = {
+ narrow: ['ق', 'ب'],
+ abbreviated: ['ق.م.', 'ب.م.'],
+ wide: ['قبل الميلاد', 'بعد الميلاد']
+}
+
+var quarterValues = {
+ narrow: ['1', '2', '3', '4'],
+ abbreviated: ['ر1', 'ر2', 'ر3', 'ر4'],
+ wide: ['الربع الأول', 'الربع الثاني', 'الربع الثالث', 'الربع الرابع']
+}
+
+var monthValues = {
+ narrow: ['ج', 'ف', 'م', 'أ', 'م', 'ج', 'ج', 'أ', 'س', 'أ', 'ن', 'د'],
+ abbreviated: [
+ 'جانـ',
+ 'فيفـ',
+ 'مارس',
+ 'أفريل',
+ 'مايـ',
+ 'جوانـ',
+ 'جويـ',
+ 'أوت',
+ 'سبتـ',
+ 'أكتـ',
+ 'نوفـ',
+ 'ديسـ'
+ ],
+ wide: [
+ 'جانفي',
+ 'فيفري',
+ 'مارس',
+ 'أفريل',
+ 'ماي',
+ 'جوان',
+ 'جويلية',
+ 'أوت',
+ 'سبتمبر',
+ 'أكتوبر',
+ 'نوفمبر',
+ 'ديسمبر'
+ ]
+}
+
+var dayValues = {
+ narrow: ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'],
+ short: ['أحد', 'اثنين', 'ثلاثاء', 'أربعاء', 'خميس', 'جمعة', 'سبت'],
+ abbreviated: ['أحد', 'اثنـ', 'ثلا', 'أربـ', 'خميـ', 'جمعة', 'سبت'],
+ wide: [
+ 'الأحد',
+ 'الاثنين',
+ 'الثلاثاء',
+ 'الأربعاء',
+ 'الخميس',
+ 'الجمعة',
+ 'السبت'
+ ]
+}
+
+var dayPeriodValues = {
+ narrow: {
+ am: 'ص',
+ pm: 'م',
+ midnight: 'ن',
+ noon: 'ظ',
+ morning: 'صباحاً',
+ afternoon: 'بعد الظهر',
+ evening: 'مساءاً',
+ night: 'ليلاً'
+ },
+ abbreviated: {
+ am: 'ص',
+ pm: 'م',
+ midnight: 'نصف الليل',
+ noon: 'ظهر',
+ morning: 'صباحاً',
+ afternoon: 'بعد الظهر',
+ evening: 'مساءاً',
+ night: 'ليلاً'
+ },
+ wide: {
+ am: 'ص',
+ pm: 'م',
+ midnight: 'نصف الليل',
+ noon: 'ظهر',
+ morning: 'صباحاً',
+ afternoon: 'بعد الظهر',
+ evening: 'مساءاً',
+ night: 'ليلاً'
+ }
+}
+var formattingDayPeriodValues = {
+ narrow: {
+ am: 'ص',
+ pm: 'م',
+ midnight: 'ن',
+ noon: 'ظ',
+ morning: 'في الصباح',
+ afternoon: 'بعد الظـهر',
+ evening: 'في المساء',
+ night: 'في الليل'
+ },
+ abbreviated: {
+ am: 'ص',
+ pm: 'م',
+ midnight: 'نصف الليل',
+ noon: 'ظهر',
+ morning: 'في الصباح',
+ evening: 'في المساء',
+ night: 'في الليل'
+ },
+ wide: {
+ am: 'ص',
+ pm: 'م',
+ midnight: 'نصف الليل',
+ noon: 'ظهر',
+ afternoon: 'بعد الظـهر',
+ evening: 'في المساء',
+ night: 'في الليل'
+ }
+}
+
+function ordinalNumber(dirtyNumber) {
+ return String(dirtyNumber)
+}
+
+var localize = {
+ ordinalNumber: ordinalNumber,
+
+ era: buildLocalizeFn({
+ values: eraValues,
+ defaultWidth: 'wide'
+ }),
+
+ quarter: buildLocalizeFn({
+ values: quarterValues,
+ defaultWidth: 'wide',
+ argumentCallback: function(quarter) {
+ return Number(quarter) - 1
+ }
+ }),
+
+ month: buildLocalizeFn({
+ values: monthValues,
+ defaultWidth: 'wide'
+ }),
+
+ day: buildLocalizeFn({
+ values: dayValues,
+ defaultWidth: 'wide'
+ }),
+
+ dayPeriod: buildLocalizeFn({
+ values: dayPeriodValues,
+ defaultWidth: 'wide',
+ formattingValues: formattingDayPeriodValues,
+ defaultFormattingWidth: 'wide'
+ })
+}
+
+export default localize
diff --git a/date-fns/src/locale/ar-DZ/_lib/match/index.js b/date-fns/src/locale/ar-DZ/_lib/match/index.js
new file mode 100644
index 0000000..98e270c
--- /dev/null
+++ b/date-fns/src/locale/ar-DZ/_lib/match/index.js
@@ -0,0 +1,147 @@
+import buildMatchPatternFn from '../../../_lib/buildMatchPatternFn/index'
+import buildMatchFn from '../../../_lib/buildMatchFn/index'
+
+var matchOrdinalNumberPattern = /^(\d+)(th|st|nd|rd)?/i
+var parseOrdinalNumberPattern = /\d+/i
+
+var matchEraPatterns = {
+ narrow: /^(ق|ب)/i,
+ abbreviated: /^(ق\.?\s?م\.?|ق\.?\s?م\.?\s?|a\.?\s?d\.?|c\.?\s?)/i,
+ wide: /^(قبل الميلاد|قبل الميلاد|بعد الميلاد|بعد الميلاد)/i
+}
+var parseEraPatterns = {
+ any: [/^قبل/i, /^بعد/i]
+}
+
+var matchQuarterPatterns = {
+ narrow: /^[1234]/i,
+ abbreviated: /^ر[1234]/i,
+ wide: /^الربع [1234]/i
+}
+var parseQuarterPatterns = {
+ any: [/1/i, /2/i, /3/i, /4/i]
+}
+
+var matchMonthPatterns = {
+ narrow: /^[جفمأسند]/i,
+ abbreviated: /^(جان|فيف|مار|أفر|ماي|جوا|جوي|أوت|سبت|أكت|نوف|ديس)/i,
+ wide: /^(جانفي|فيفري|مارس|أفريل|ماي|جوان|جويلية|أوت|سبتمبر|أكتوبر|نوفمبر|ديسمبر)/i
+}
+
+var parseMonthPatterns = {
+ narrow: [
+ /^ج/i,
+ /^ف/i,
+ /^م/i,
+ /^أ/i,
+ /^م/i,
+ /^ج/i,
+ /^ج/i,
+ /^أ/i,
+ /^س/i,
+ /^أ/i,
+ /^ن/i,
+ /^د/i
+ ],
+ any: [
+ /^جان/i,
+ /^فيف/i,
+ /^مار/i,
+ /^أفر/i,
+ /^ماي/i,
+ /^جوا/i,
+ /^جوي/i,
+ /^أوت/i,
+ /^سبت/i,
+ /^أكت/i,
+ /^نوف/i,
+ /^ديس/i
+ ]
+}
+
+var matchDayPatterns = {
+ narrow: /^[حنثرخجس]/i,
+ short: /^(أحد|اثنين|ثلاثاء|أربعاء|خميس|جمعة|سبت)/i,
+ abbreviated: /^(أحد|اثن|ثلا|أرب|خمي|جمعة|سبت)/i,
+ wide: /^(الأحد|الاثنين|الثلاثاء|الأربعاء|الخميس|الجمعة|السبت)/i
+}
+var parseDayPatterns = {
+ narrow: [/^ح/i, /^ن/i, /^ث/i, /^ر/i, /^خ/i, /^ج/i, /^س/i],
+ wide: [
+ /^الأحد/i,
+ /^الاثنين/i,
+ /^الثلاثاء/i,
+ /^الأربعاء/i,
+ /^الخميس/i,
+ /^الجمعة/i,
+ /^السبت/i
+ ],
+ any: [/^أح/i, /^اث/i, /^ث/i, /^أر/i, /^خ/i, /^ج/i, /^س/i]
+}
+
+var matchDayPeriodPatterns = {
+ narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,
+ any: /^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i
+}
+var parseDayPeriodPatterns = {
+ any: {
+ am: /^a/i,
+ pm: /^p/i,
+ midnight: /^mi/i,
+ noon: /^no/i,
+ morning: /morning/i,
+ afternoon: /afternoon/i,
+ evening: /evening/i,
+ night: /night/i
+ }
+}
+
+var match = {
+ ordinalNumber: buildMatchPatternFn({
+ matchPattern: matchOrdinalNumberPattern,
+ parsePattern: parseOrdinalNumberPattern,
+ valueCallback: function(value) {
+ return parseInt(value, 10)
+ }
+ }),
+
+ era: buildMatchFn({
+ matchPatterns: matchEraPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseEraPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ quarter: buildMatchFn({
+ matchPatterns: matchQuarterPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseQuarterPatterns,
+ defaultParseWidth: 'any',
+ valueCallback: function(index) {
+ return index + 1
+ }
+ }),
+
+ month: buildMatchFn({
+ matchPatterns: matchMonthPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseMonthPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ day: buildMatchFn({
+ matchPatterns: matchDayPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseDayPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ dayPeriod: buildMatchFn({
+ matchPatterns: matchDayPeriodPatterns,
+ defaultMatchWidth: 'any',
+ parsePatterns: parseDayPeriodPatterns,
+ defaultParseWidth: 'any'
+ })
+}
+
+export default match
diff --git a/date-fns/src/locale/ar-DZ/index.d.ts b/date-fns/src/locale/ar-DZ/index.d.ts
new file mode 100644
index 0000000..97f47f1
--- /dev/null
+++ b/date-fns/src/locale/ar-DZ/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { arDZ } from 'date-fns/locale'
+export default arDZ
diff --git a/date-fns/src/locale/ar-DZ/index.js b/date-fns/src/locale/ar-DZ/index.js
new file mode 100644
index 0000000..173a706
--- /dev/null
+++ b/date-fns/src/locale/ar-DZ/index.js
@@ -0,0 +1,29 @@
+import formatDistance from './_lib/formatDistance/index'
+import formatLong from './_lib/formatLong/index'
+import formatRelative from './_lib/formatRelative/index'
+import localize from './_lib/localize/index'
+import match from './_lib/match/index'
+
+/**
+ * @type {Locale}
+ * @category Locales
+ * @summary Arabic locale (Algerian Arabic).
+ * @language Algerian Arabic
+ * @iso-639-2 ara
+ * @author Badreddine Boumaza [@badre429]{@link https://github.com/badre429}
+ * @author Ahmed ElShahat [@elshahat]{@link https://github.com/elshahat}
+ */
+var locale = {
+ code: 'ar-DZ',
+ formatDistance: formatDistance,
+ formatLong: formatLong,
+ formatRelative: formatRelative,
+ localize: localize,
+ match: match,
+ options: {
+ weekStartsOn: 0 /* Sunday */,
+ firstWeekContainsDate: 1,
+ },
+}
+
+export default locale
diff --git a/date-fns/src/locale/ar-DZ/index.js.flow b/date-fns/src/locale/ar-DZ/index.js.flow
new file mode 100644
index 0000000..b9dfe66
--- /dev/null
+++ b/date-fns/src/locale/ar-DZ/index.js.flow
@@ -0,0 +1,35 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+declare module.exports: Locale
diff --git a/date-fns/src/locale/ar-DZ/snapshot.md b/date-fns/src/locale/ar-DZ/snapshot.md
new file mode 100644
index 0000000..ca2403f
--- /dev/null
+++ b/date-fns/src/locale/ar-DZ/snapshot.md
@@ -0,0 +1,304 @@
+# Algerian Arabic (ar-DZ) locale
+
+## `format` and `parse`
+
+| Title | Token string | Date | `format` result | `parse` result |
+| ------------------------------- | ------------ | ------------------------ | ------------------------------------------------- | ------------------------ |
+| Calendar year | yo | 1987-02-11T12:13:14.015Z | 1987 | 1987-01-01T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 5 | 0005-01-01T00:00:00.000Z |
+| Local week-numbering year | Yo | 1987-02-11T12:13:14.015Z | 1987 | 1986-12-28T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 5 | 0004-12-26T00:00:00.000Z |
+| Quarter (formatting) | Qo | 2019-01-01T12:13:14.015Z | 1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2 | 2019-04-01T00:00:00.000Z |
+| | QQQ | 2019-01-01T12:13:14.015Z | ر1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | ر2 | 2019-04-01T00:00:00.000Z |
+| | QQQQ | 2019-01-01T12:13:14.015Z | الربع الأول | Invalid Date |
+| | | 2019-04-01T12:13:14.015Z | الربع الثاني | Invalid Date |
+| | QQQQQ | 2019-01-01T12:13:14.015Z | 1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2 | 2019-04-01T00:00:00.000Z |
+| Quarter (stand-alone) | qo | 2019-01-01T12:13:14.015Z | 1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2 | 2019-04-01T00:00:00.000Z |
+| | qqq | 2019-01-01T12:13:14.015Z | ر1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | ر2 | 2019-04-01T00:00:00.000Z |
+| | qqqq | 2019-01-01T12:13:14.015Z | الربع الأول | Invalid Date |
+| | | 2019-04-01T12:13:14.015Z | الربع الثاني | Invalid Date |
+| Month (formatting) | Mo | 2019-02-11T12:13:14.015Z | 2 | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7 | 2019-07-01T00:00:00.000Z |
+| | MMM | 2019-02-11T12:13:14.015Z | فيفـ | Invalid Date |
+| | | 2019-07-10T12:13:14.015Z | جويـ | Invalid Date |
+| | MMMM | 2019-02-11T12:13:14.015Z | فيفري | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | جويلية | 2019-07-01T00:00:00.000Z |
+| | MMMMM | 2019-02-11T12:13:14.015Z | ف | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | ج | 2019-01-01T00:00:00.000Z |
+| Month (stand-alone) | Lo | 2019-02-11T12:13:14.015Z | 2 | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7 | 2019-07-01T00:00:00.000Z |
+| | LLL | 2019-02-11T12:13:14.015Z | فيفـ | Invalid Date |
+| | | 2019-07-10T12:13:14.015Z | جويـ | Invalid Date |
+| | LLLL | 2019-02-11T12:13:14.015Z | فيفري | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | جويلية | 2019-07-01T00:00:00.000Z |
+| | LLLLL | 2019-02-11T12:13:14.015Z | ف | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | ج | 2019-01-01T00:00:00.000Z |
+| Local week of year | wo | 2019-01-01T12:13:14.015Z | 1 | 2018-12-30T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 49 | 2019-12-01T00:00:00.000Z |
+| ISO week of year | Io | 2019-01-01T12:13:14.015Z | 1 | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48 | 2019-11-25T00:00:00.000Z |
+| Day of month | do | 2019-02-11T12:13:14.015Z | 11 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-28T12:13:14.015Z | 28 | 2019-02-28T00:00:00.000Z |
+| Day of year | Do | 2019-02-11T12:13:14.015Z | 42 | 2019-02-11T00:00:00.000Z |
+| | | 2019-12-31T12:13:14.015Z | 365 | 2019-12-31T00:00:00.000Z |
+| Day of week (formatting) | E | 2019-02-11T12:13:14.015Z | اثنـ | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | جمعة | 2019-02-15T00:00:00.000Z |
+| | EE | 2019-02-11T12:13:14.015Z | اثنـ | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | جمعة | 2019-02-15T00:00:00.000Z |
+| | EEE | 2019-02-11T12:13:14.015Z | اثنـ | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | جمعة | 2019-02-15T00:00:00.000Z |
+| | EEEE | 2019-02-11T12:13:14.015Z | الاثنين | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | الجمعة | 2019-02-15T00:00:00.000Z |
+| | EEEEE | 2019-02-11T12:13:14.015Z | ن | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ج | 2019-02-15T00:00:00.000Z |
+| | EEEEEE | 2019-02-11T12:13:14.015Z | اثنين | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | جمعة | 2019-02-15T00:00:00.000Z |
+| ISO day of week (formatting) | io | 2019-02-11T12:13:14.015Z | 1 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5 | 2019-02-15T00:00:00.000Z |
+| | iii | 2019-02-11T12:13:14.015Z | اثنـ | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | جمعة | 2019-02-15T00:00:00.000Z |
+| | iiii | 2019-02-11T12:13:14.015Z | الاثنين | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | الجمعة | 2019-02-15T00:00:00.000Z |
+| | iiiii | 2019-02-11T12:13:14.015Z | ن | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ج | 2019-02-15T00:00:00.000Z |
+| | iiiiii | 2019-02-11T12:13:14.015Z | اثنين | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | جمعة | 2019-02-15T00:00:00.000Z |
+| Local day of week (formatting) | eo | 2019-02-11T12:13:14.015Z | 2 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 6 | 2019-02-15T00:00:00.000Z |
+| | eee | 2019-02-11T12:13:14.015Z | اثنـ | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | جمعة | 2019-02-15T00:00:00.000Z |
+| | eeee | 2019-02-11T12:13:14.015Z | الاثنين | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | الجمعة | 2019-02-15T00:00:00.000Z |
+| | eeeee | 2019-02-11T12:13:14.015Z | ن | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ج | 2019-02-15T00:00:00.000Z |
+| | eeeeee | 2019-02-11T12:13:14.015Z | اثنين | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | جمعة | 2019-02-15T00:00:00.000Z |
+| Local day of week (stand-alone) | co | 2019-02-11T12:13:14.015Z | 2 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 6 | 2019-02-15T00:00:00.000Z |
+| | ccc | 2019-02-11T12:13:14.015Z | اثنـ | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | جمعة | 2019-02-15T00:00:00.000Z |
+| | cccc | 2019-02-11T12:13:14.015Z | الاثنين | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | الجمعة | 2019-02-15T00:00:00.000Z |
+| | ccccc | 2019-02-11T12:13:14.015Z | ن | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ج | 2019-02-15T00:00:00.000Z |
+| | cccccc | 2019-02-11T12:13:14.015Z | اثنين | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | جمعة | 2019-02-15T00:00:00.000Z |
+| AM, PM | a | 2019-02-11T11:13:14.015Z | ص | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | م | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | م | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | ص | Invalid Date |
+| | aa | 2019-02-11T11:13:14.015Z | ص | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | م | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | م | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | ص | Invalid Date |
+| | aaa | 2019-02-11T11:13:14.015Z | ص | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | م | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | م | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | ص | Invalid Date |
+| | aaaa | 2019-02-11T11:13:14.015Z | ص | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | م | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | م | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | ص | Invalid Date |
+| | aaaaa | 2019-02-11T11:13:14.015Z | ص | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | م | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | م | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | ص | Invalid Date |
+| AM, PM, noon, midnight | b | 2019-02-11T11:13:14.015Z | ص | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | م | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | م | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | ص | Invalid Date |
+| | bb | 2019-02-11T11:13:14.015Z | ص | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | م | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | م | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | ص | Invalid Date |
+| | bbb | 2019-02-11T11:13:14.015Z | ص | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | م | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | م | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | ص | Invalid Date |
+| | bbbb | 2019-02-11T11:13:14.015Z | ص | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | م | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | م | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | ص | Invalid Date |
+| | bbbbb | 2019-02-11T11:13:14.015Z | ص | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | م | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | م | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | ص | Invalid Date |
+| Flexible day period | B | 2019-02-11T11:13:14.015Z | في الصباح | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | في المساء | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | في الليل | Invalid Date |
+| | BB | 2019-02-11T11:13:14.015Z | في الصباح | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | في المساء | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | في الليل | Invalid Date |
+| | BBB | 2019-02-11T11:13:14.015Z | في الصباح | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | في المساء | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | في الليل | Invalid Date |
+| | BBBB | 2019-02-11T11:13:14.015Z | | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | بعد الظـهر | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | في المساء | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | في الليل | Invalid Date |
+| | BBBBB | 2019-02-11T11:13:14.015Z | في الصباح | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | بعد الظـهر | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | في المساء | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | في الليل | Invalid Date |
+| Hour [1-12] | ho | 2019-02-11T11:13:14.015Z | 11 | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11 | 2019-02-11T23:00:00.000Z |
+| Hour [0-23] | Ho | 2019-02-11T11:13:14.015Z | 11 | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23 | 2019-02-11T23:00:00.000Z |
+| Hour [0-11] | Ko | 2019-02-11T11:13:14.015Z | 11 | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11 | 2019-02-11T23:00:00.000Z |
+| Hour [1-24] | ko | 2019-02-11T11:13:14.015Z | 11 | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23 | 2019-02-11T23:00:00.000Z |
+| Minute | mo | 2019-01-01T12:01:14.015Z | 1 | 2019-01-01T12:01:00.000Z |
+| | | 2019-04-01T12:55:14.015Z | 55 | 2019-04-01T12:55:00.000Z |
+| Second | so | 2019-01-01T12:13:01.015Z | 1 | 2019-01-01T12:13:01.000Z |
+| | | 2019-04-01T12:13:55.015Z | 55 | 2019-04-01T12:13:55.000Z |
+| Long localized date | P | 1987-02-11T12:13:14.015Z | 02/11/1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 05/29/1453 | 1453-05-29T00:00:00.000Z |
+| | PP | 1987-02-11T12:13:14.015Z | فيفـ 11, 1987 | Invalid Date |
+| | | 1453-05-29T23:59:59.999Z | مايـ 29, 1453 | Invalid Date |
+| | PPP | 1987-02-11T12:13:14.015Z | فيفري 11, 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | ماي 29, 1453 | 1453-05-29T00:00:00.000Z |
+| | PPPP | 1987-02-11T12:13:14.015Z | الأربعاء, فيفري 11, 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | الأحد, ماي 29, 1453 | 1453-05-29T00:00:00.000Z |
+| Long localized time | p | 1987-02-11T12:13:14.015Z | 12:13 م | Invalid Date |
+| | | 1453-05-29T23:59:59.999Z | 11:59 م | Invalid Date |
+| | pp | 1987-02-11T12:13:14.015Z | 12:13:14 م | Invalid Date |
+| | | 1453-05-29T23:59:59.999Z | 11:59:59 م | Invalid Date |
+| | ppp | 1987-02-11T12:13:14.015Z | 12:13:14 م GMT+0 | Invalid Date |
+| | | 1453-05-29T23:59:59.999Z | 11:59:59 م GMT+0 | Invalid Date |
+| | pppp | 1987-02-11T12:13:14.015Z | 12:13:14 م GMT+00:00 | Invalid Date |
+| | | 1453-05-29T23:59:59.999Z | 11:59:59 م GMT+00:00 | Invalid Date |
+| Combination of date and time | Pp | 1987-02-11T12:13:14.015Z | 02/11/1987, 12:13 م | Invalid Date |
+| | | 1453-05-29T23:59:59.999Z | 05/29/1453, 11:59 م | Invalid Date |
+| | PPpp | 1987-02-11T12:13:14.015Z | فيفـ 11, 1987, 12:13:14 م | Invalid Date |
+| | | 1453-05-29T23:59:59.999Z | مايـ 29, 1453, 11:59:59 م | Invalid Date |
+| | PPPppp | 1987-02-11T12:13:14.015Z | فيفري 11, 1987 عند 12:13:14 م GMT+0 | Invalid Date |
+| | | 1453-05-29T23:59:59.999Z | ماي 29, 1453 عند 11:59:59 م GMT+0 | Invalid Date |
+| | PPPPpppp | 1987-02-11T12:13:14.015Z | الأربعاء, فيفري 11, 1987 عند 12:13:14 م GMT+00:00 | Invalid Date |
+| | | 1453-05-29T23:59:59.999Z | الأحد, ماي 29, 1453 عند 11:59:59 م GMT+00:00 | Invalid Date |
+
+## `formatDistance`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `includeSeconds: true` | `addSuffix: true` |
+| ------------------------ | ------------------ | ---------------------- | -------------------------- |
+| 2006-01-01T00:00:00.000Z | 6 أعوام تقريباً | 6 أعوام تقريباً | في خلال 6 أعوام تقريباً |
+| 2005-01-01T00:00:00.000Z | 5 أعوام تقريباً | 5 أعوام تقريباً | في خلال 5 أعوام تقريباً |
+| 2004-01-01T00:00:00.000Z | 4 أعوام تقريباً | 4 أعوام تقريباً | في خلال 4 أعوام تقريباً |
+| 2003-01-01T00:00:00.000Z | 3 أعوام تقريباً | 3 أعوام تقريباً | في خلال 3 أعوام تقريباً |
+| 2002-01-01T00:00:00.000Z | عامين تقريباً | عامين تقريباً | في خلال عامين تقريباً |
+| 2001-06-01T00:00:00.000Z | أكثر من عام | أكثر من عام | في خلال أكثر من عام |
+| 2001-02-01T00:00:00.000Z | عام واحد تقريباً | عام واحد تقريباً | في خلال عام واحد تقريباً |
+| 2001-01-01T00:00:00.000Z | عام واحد تقريباً | عام واحد تقريباً | في خلال عام واحد تقريباً |
+| 2000-06-01T00:00:00.000Z | 5 أشهر | 5 أشهر | في خلال 5 أشهر |
+| 2000-03-01T00:00:00.000Z | شهرين | شهرين | في خلال شهرين |
+| 2000-02-01T00:00:00.000Z | شهر واحد تقريباً | شهر واحد تقريباً | في خلال شهر واحد تقريباً |
+| 2000-01-15T00:00:00.000Z | 14 يوم | 14 يوم | في خلال 14 يوم |
+| 2000-01-02T00:00:00.000Z | يوم واحد | يوم واحد | في خلال يوم واحد |
+| 2000-01-01T06:00:00.000Z | 6 ساعات تقريباً | 6 ساعات تقريباً | في خلال 6 ساعات تقريباً |
+| 2000-01-01T01:00:00.000Z | ساعة واحدة تقريباً | ساعة واحدة تقريباً | في خلال ساعة واحدة تقريباً |
+| 2000-01-01T00:45:00.000Z | ساعة واحدة تقريباً | ساعة واحدة تقريباً | في خلال ساعة واحدة تقريباً |
+| 2000-01-01T00:30:00.000Z | 30 دقيقة | 30 دقيقة | في خلال 30 دقيقة |
+| 2000-01-01T00:15:00.000Z | 15 دقيقة | 15 دقيقة | في خلال 15 دقيقة |
+| 2000-01-01T00:01:00.000Z | دقيقة واحدة | دقيقة واحدة | في خلال دقيقة واحدة |
+| 2000-01-01T00:00:25.000Z | أقل من دقيقة | نصف دقيقة | في خلال أقل من دقيقة |
+| 2000-01-01T00:00:15.000Z | أقل من دقيقة | أقل من 20 ثانية | في خلال أقل من دقيقة |
+| 2000-01-01T00:00:05.000Z | أقل من دقيقة | أقل من 10 ثواني | في خلال أقل من دقيقة |
+| 2000-01-01T00:00:00.000Z | أقل من دقيقة | أقل من 5 ثواني | منذ أقل من دقيقة |
+| 1999-12-31T23:59:55.000Z | أقل من دقيقة | أقل من 10 ثواني | منذ أقل من دقيقة |
+| 1999-12-31T23:59:45.000Z | أقل من دقيقة | أقل من 20 ثانية | منذ أقل من دقيقة |
+| 1999-12-31T23:59:35.000Z | أقل من دقيقة | نصف دقيقة | منذ أقل من دقيقة |
+| 1999-12-31T23:59:00.000Z | دقيقة واحدة | دقيقة واحدة | منذ دقيقة واحدة |
+| 1999-12-31T23:45:00.000Z | 15 دقيقة | 15 دقيقة | منذ 15 دقيقة |
+| 1999-12-31T23:30:00.000Z | 30 دقيقة | 30 دقيقة | منذ 30 دقيقة |
+| 1999-12-31T23:15:00.000Z | ساعة واحدة تقريباً | ساعة واحدة تقريباً | منذ ساعة واحدة تقريباً |
+| 1999-12-31T23:00:00.000Z | ساعة واحدة تقريباً | ساعة واحدة تقريباً | منذ ساعة واحدة تقريباً |
+| 1999-12-31T18:00:00.000Z | 6 ساعات تقريباً | 6 ساعات تقريباً | منذ 6 ساعات تقريباً |
+| 1999-12-30T00:00:00.000Z | يومين | يومين | منذ يومين |
+| 1999-12-15T00:00:00.000Z | 17 يوم | 17 يوم | منذ 17 يوم |
+| 1999-12-01T00:00:00.000Z | شهر واحد تقريباً | شهر واحد تقريباً | منذ شهر واحد تقريباً |
+| 1999-11-01T00:00:00.000Z | شهرين | شهرين | منذ شهرين |
+| 1999-06-01T00:00:00.000Z | 7 أشهر | 7 أشهر | منذ 7 أشهر |
+| 1999-01-01T00:00:00.000Z | عام واحد تقريباً | عام واحد تقريباً | منذ عام واحد تقريباً |
+| 1998-12-01T00:00:00.000Z | عام واحد تقريباً | عام واحد تقريباً | منذ عام واحد تقريباً |
+| 1998-06-01T00:00:00.000Z | أكثر من عام | أكثر من عام | منذ أكثر من عام |
+| 1998-01-01T00:00:00.000Z | عامين تقريباً | عامين تقريباً | منذ عامين تقريباً |
+| 1997-01-01T00:00:00.000Z | 3 أعوام تقريباً | 3 أعوام تقريباً | منذ 3 أعوام تقريباً |
+| 1996-01-01T00:00:00.000Z | 4 أعوام تقريباً | 4 أعوام تقريباً | منذ 4 أعوام تقريباً |
+| 1995-01-01T00:00:00.000Z | 5 أعوام تقريباً | 5 أعوام تقريباً | منذ 5 أعوام تقريباً |
+| 1994-01-01T00:00:00.000Z | 6 أعوام تقريباً | 6 أعوام تقريباً | منذ 6 أعوام تقريباً |
+
+## `formatDistanceStrict`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `addSuffix: true` | With forced unit (i.e. `hour`) |
+| ------------------------ | ----------- | ------------------- | ------------------------------ |
+| 2006-01-01T00:00:00.000Z | 6 أعوام | في خلال 6 أعوام | 52608 ساعة |
+| 2005-01-01T00:00:00.000Z | 5 أعوام | في خلال 5 أعوام | 43848 ساعة |
+| 2004-01-01T00:00:00.000Z | 4 أعوام | في خلال 4 أعوام | 35064 ساعة |
+| 2003-01-01T00:00:00.000Z | 3 أعوام | في خلال 3 أعوام | 26304 ساعة |
+| 2002-01-01T00:00:00.000Z | عامين | في خلال عامين | 17544 ساعة |
+| 2001-06-01T00:00:00.000Z | عام واحد | في خلال عام واحد | 12408 ساعة |
+| 2001-02-01T00:00:00.000Z | عام واحد | في خلال عام واحد | 9528 ساعة |
+| 2001-01-01T00:00:00.000Z | عام واحد | في خلال عام واحد | 8784 ساعة |
+| 2000-06-01T00:00:00.000Z | 5 أشهر | في خلال 5 أشهر | 3648 ساعة |
+| 2000-03-01T00:00:00.000Z | شهرين | في خلال شهرين | 1440 ساعة |
+| 2000-02-01T00:00:00.000Z | شهر واحد | في خلال شهر واحد | 744 ساعة |
+| 2000-01-15T00:00:00.000Z | 14 يوم | في خلال 14 يوم | 336 ساعة |
+| 2000-01-02T00:00:00.000Z | يوم واحد | في خلال يوم واحد | 24 ساعة |
+| 2000-01-01T06:00:00.000Z | 6 ساعات | في خلال 6 ساعات | 6 ساعات |
+| 2000-01-01T01:00:00.000Z | ساعة واحدة | في خلال ساعة واحدة | ساعة واحدة |
+| 2000-01-01T00:45:00.000Z | 45 دقيقة | في خلال 45 دقيقة | ساعة واحدة |
+| 2000-01-01T00:30:00.000Z | 30 دقيقة | في خلال 30 دقيقة | ساعة واحدة |
+| 2000-01-01T00:15:00.000Z | 15 دقيقة | في خلال 15 دقيقة | 0 ساعات |
+| 2000-01-01T00:01:00.000Z | دقيقة واحدة | في خلال دقيقة واحدة | 0 ساعات |
+| 2000-01-01T00:00:25.000Z | 25 ثانية | في خلال 25 ثانية | 0 ساعات |
+| 2000-01-01T00:00:15.000Z | 15 ثانية | في خلال 15 ثانية | 0 ساعات |
+| 2000-01-01T00:00:05.000Z | 5 ثواني | في خلال 5 ثواني | 0 ساعات |
+| 2000-01-01T00:00:00.000Z | 0 ثواني | منذ 0 ثواني | 0 ساعات |
+| 1999-12-31T23:59:55.000Z | 5 ثواني | منذ 5 ثواني | 0 ساعات |
+| 1999-12-31T23:59:45.000Z | 15 ثانية | منذ 15 ثانية | 0 ساعات |
+| 1999-12-31T23:59:35.000Z | 25 ثانية | منذ 25 ثانية | 0 ساعات |
+| 1999-12-31T23:59:00.000Z | دقيقة واحدة | منذ دقيقة واحدة | 0 ساعات |
+| 1999-12-31T23:45:00.000Z | 15 دقيقة | منذ 15 دقيقة | 0 ساعات |
+| 1999-12-31T23:30:00.000Z | 30 دقيقة | منذ 30 دقيقة | ساعة واحدة |
+| 1999-12-31T23:15:00.000Z | 45 دقيقة | منذ 45 دقيقة | ساعة واحدة |
+| 1999-12-31T23:00:00.000Z | ساعة واحدة | منذ ساعة واحدة | ساعة واحدة |
+| 1999-12-31T18:00:00.000Z | 6 ساعات | منذ 6 ساعات | 6 ساعات |
+| 1999-12-30T00:00:00.000Z | يومين | منذ يومين | 48 ساعة |
+| 1999-12-15T00:00:00.000Z | 17 يوم | منذ 17 يوم | 408 ساعة |
+| 1999-12-01T00:00:00.000Z | شهر واحد | منذ شهر واحد | 744 ساعة |
+| 1999-11-01T00:00:00.000Z | شهرين | منذ شهرين | 1464 ساعة |
+| 1999-06-01T00:00:00.000Z | 7 أشهر | منذ 7 أشهر | 5136 ساعة |
+| 1999-01-01T00:00:00.000Z | عام واحد | منذ عام واحد | 8760 ساعة |
+| 1998-12-01T00:00:00.000Z | عام واحد | منذ عام واحد | 9504 ساعة |
+| 1998-06-01T00:00:00.000Z | عامين | منذ عامين | 13896 ساعة |
+| 1998-01-01T00:00:00.000Z | عامين | منذ عامين | 17520 ساعة |
+| 1997-01-01T00:00:00.000Z | 3 أعوام | منذ 3 أعوام | 26280 ساعة |
+| 1996-01-01T00:00:00.000Z | 4 أعوام | منذ 4 أعوام | 35064 ساعة |
+| 1995-01-01T00:00:00.000Z | 5 أعوام | منذ 5 أعوام | 43824 ساعة |
+| 1994-01-01T00:00:00.000Z | 6 أعوام | منذ 6 أعوام | 52584 ساعة |
+
+## `formatRelative`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result |
+| ------------------------ | ----------------------- |
+| 2000-01-10T00:00:00.000Z | 01/10/2000 |
+| 2000-01-05T00:00:00.000Z | الأربعاء عند 12:00 ص |
+| 2000-01-02T00:00:00.000Z | غداً عند 12:00 ص |
+| 2000-01-01T00:00:00.000Z | اليوم عند 12:00 ص |
+| 1999-12-31T00:00:00.000Z | أمس عند 12:00 ص |
+| 1999-12-27T00:00:00.000Z | أخر الاثنين عند 12:00 ص |
+| 1999-12-21T00:00:00.000Z | 12/21/1999 |
diff --git a/date-fns/src/locale/ar-MA/_lib/formatDistance/index.js b/date-fns/src/locale/ar-MA/_lib/formatDistance/index.js
new file mode 100644
index 0000000..bcdb373
--- /dev/null
+++ b/date-fns/src/locale/ar-MA/_lib/formatDistance/index.js
@@ -0,0 +1,135 @@
+var formatDistanceLocale = {
+ lessThanXSeconds: {
+ one: 'أقل من ثانية واحدة',
+ two: 'أقل من ثانتين',
+ threeToTen: 'أقل من {{count}} ثواني',
+ other: 'أقل من {{count}} ثانية'
+ },
+
+ xSeconds: {
+ one: 'ثانية واحدة',
+ two: 'ثانتين',
+ threeToTen: '{{count}} ثواني',
+ other: '{{count}} ثانية'
+ },
+
+ halfAMinute: 'نصف دقيقة',
+
+ lessThanXMinutes: {
+ one: 'أقل من دقيقة',
+ two: 'أقل من دقيقتين',
+ threeToTen: 'أقل من {{count}} دقائق',
+ other: 'أقل من {{count}} دقيقة'
+ },
+
+ xMinutes: {
+ one: 'دقيقة واحدة',
+ two: 'دقيقتين',
+ threeToTen: '{{count}} دقائق',
+ other: '{{count}} دقيقة'
+ },
+
+ aboutXHours: {
+ one: 'ساعة واحدة تقريباً',
+ two: 'ساعتين تقريباً',
+ threeToTen: '{{count}} ساعات تقريباً',
+ other: '{{count}} ساعة تقريباً'
+ },
+
+ xHours: {
+ one: 'ساعة واحدة',
+ two: 'ساعتين',
+ threeToTen: '{{count}} ساعات',
+ other: '{{count}} ساعة'
+ },
+
+ xDays: {
+ one: 'يوم واحد',
+ two: 'يومين',
+ threeToTen: '{{count}} أيام',
+ other: '{{count}} يوم'
+ },
+
+ aboutXWeeks: {
+ one: 'أسبوع واحد تقريباً',
+ two: 'أسبوعين تقريباً',
+ threeToTen: '{{count}} أسابيع تقريباً',
+ other: '{{count}} أسبوع تقريباً'
+ },
+
+ xWeeks: {
+ one: 'أسبوع واحد',
+ two: 'أسبوعين',
+ threeToTen: '{{count}} أسابيع',
+ other: '{{count}} أسبوع'
+ },
+
+ aboutXMonths: {
+ one: 'شهر واحد تقريباً',
+ two: 'شهرين تقريباً',
+ threeToTen: '{{count}} أشهر تقريباً',
+ other: '{{count}} شهر تقريباً'
+ },
+
+ xMonths: {
+ one: 'شهر واحد',
+ two: 'شهرين',
+ threeToTen: '{{count}} أشهر',
+ other: '{{count}} شهر'
+ },
+
+ aboutXYears: {
+ one: 'عام واحد تقريباً',
+ two: 'عامين تقريباً',
+ threeToTen: '{{count}} أعوام تقريباً',
+ other: '{{count}} عام تقريباً'
+ },
+
+ xYears: {
+ one: 'عام واحد',
+ two: 'عامين',
+ threeToTen: '{{count}} أعوام',
+ other: '{{count}} عام'
+ },
+
+ overXYears: {
+ one: 'أكثر من عام',
+ two: 'أكثر من عامين',
+ threeToTen: 'أكثر من {{count}} أعوام',
+ other: 'أكثر من {{count}} عام'
+ },
+
+ almostXYears: {
+ one: 'عام واحد تقريباً',
+ two: 'عامين تقريباً',
+ threeToTen: '{{count}} أعوام تقريباً',
+ other: '{{count}} عام تقريباً'
+ }
+}
+
+export default function formatDistance(token, count, options) {
+ options = options || {}
+
+ var result
+ if (typeof formatDistanceLocale[token] === 'string') {
+ result = formatDistanceLocale[token]
+ } else if (count === 1) {
+ result = formatDistanceLocale[token].one
+ } else if (count === 2) {
+ result = formatDistanceLocale[token].two
+ } else if (count <= 10) {
+ result = formatDistanceLocale[token].threeToTen.replace('{{count}}', count)
+ } else {
+ result = formatDistanceLocale[token].other.replace('{{count}}', count)
+ }
+
+ if (options.addSuffix) {
+ if (options.comparison > 0) {
+ return 'في خلال ' + result
+ } else {
+ return 'منذ ' + result
+ }
+ }
+
+ return result
+}
diff --git a/date-fns/src/locale/ar-MA/_lib/formatLong/index.js b/date-fns/src/locale/ar-MA/_lib/formatLong/index.js
new file mode 100644
index 0000000..a65ad56
--- /dev/null
+++ b/date-fns/src/locale/ar-MA/_lib/formatLong/index.js
@@ -0,0 +1,41 @@
+import buildFormatLongFn from '../../../_lib/buildFormatLongFn/index'
+
+var dateFormats = {
+ full: 'EEEE, MMMM do, y',
+ long: 'MMMM do, y',
+ medium: 'MMM d, y',
+ short: 'MM/dd/yyyy'
+}
+
+var timeFormats = {
+ full: 'h:mm:ss a zzzz',
+ long: 'h:mm:ss a z',
+ medium: 'h:mm:ss a',
+ short: 'h:mm a'
+}
+
+var dateTimeFormats = {
+ full: "{{date}} 'عند' {{time}}",
+ long: "{{date}} 'عند' {{time}}",
+ medium: '{{date}}, {{time}}',
+ short: '{{date}}, {{time}}'
+}
+
+var formatLong = {
+ date: buildFormatLongFn({
+ formats: dateFormats,
+ defaultWidth: 'full'
+ }),
+
+ time: buildFormatLongFn({
+ formats: timeFormats,
+ defaultWidth: 'full'
+ }),
+
+ dateTime: buildFormatLongFn({
+ formats: dateTimeFormats,
+ defaultWidth: 'full'
+ })
+}
+
+export default formatLong
diff --git a/date-fns/src/locale/ar-MA/_lib/formatRelative/index.js b/date-fns/src/locale/ar-MA/_lib/formatRelative/index.js
new file mode 100644
index 0000000..9276495
--- /dev/null
+++ b/date-fns/src/locale/ar-MA/_lib/formatRelative/index.js
@@ -0,0 +1,12 @@
+var formatRelativeLocale = {
+ lastWeek: "'أخر' eeee 'عند' p",
+ yesterday: "'أمس عند' p",
+ today: "'اليوم عند' p",
+ tomorrow: "'غداً عند' p",
+ nextWeek: "eeee 'عند' p",
+ other: 'P'
+}
+
+export default function formatRelative(token, _date, _baseDate, _options) {
+ return formatRelativeLocale[token]
+}
diff --git a/date-fns/src/locale/ar-MA/_lib/localize/index.js b/date-fns/src/locale/ar-MA/_lib/localize/index.js
new file mode 100644
index 0000000..f165992
--- /dev/null
+++ b/date-fns/src/locale/ar-MA/_lib/localize/index.js
@@ -0,0 +1,163 @@
+import buildLocalizeFn from '../../../_lib/buildLocalizeFn/index'
+
+var eraValues = {
+ narrow: ['ق', 'ب'],
+ abbreviated: ['ق.م.', 'ب.م.'],
+ wide: ['قبل الميلاد', 'بعد الميلاد']
+}
+
+var quarterValues = {
+ narrow: ['1', '2', '3', '4'],
+ abbreviated: ['ر1', 'ر2', 'ر3', 'ر4'],
+ wide: ['الربع الأول', 'الربع الثاني', 'الربع الثالث', 'الربع الرابع']
+}
+
+var monthValues = {
+ narrow: ['ي', 'ف', 'م', 'أ', 'م', 'ي', 'ي', 'غ', 'ش', 'أ', 'ن', 'د'],
+ abbreviated: [
+ 'ينا',
+ 'فبر',
+ 'مارس',
+ 'أبريل',
+ 'ماي',
+ 'يونـ',
+ 'يولـ',
+ 'غشت',
+ 'شتنـ',
+ 'أكتـ',
+ 'نونـ',
+ 'دجنـ'
+ ],
+ wide: [
+ 'يناير',
+ 'فبراير',
+ 'مارس',
+ 'أبريل',
+ 'ماي',
+ 'يونيو',
+ 'يوليوز',
+ 'غشت',
+ 'شتنبر',
+ 'أكتوبر',
+ 'نونبر',
+ 'دجنبر'
+ ]
+}
+
+var dayValues = {
+ narrow: ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'],
+ short: ['أحد', 'اثنين', 'ثلاثاء', 'أربعاء', 'خميس', 'جمعة', 'سبت'],
+ abbreviated: ['أحد', 'اثنـ', 'ثلا', 'أربـ', 'خميـ', 'جمعة', 'سبت'],
+ wide: [
+ 'الأحد',
+ 'الإثنين',
+ 'الثلاثاء',
+ 'الأربعاء',
+ 'الخميس',
+ 'الجمعة',
+ 'السبت'
+ ]
+}
+
+var dayPeriodValues = {
+ narrow: {
+ am: 'ص',
+ pm: 'م',
+ midnight: 'ن',
+ noon: 'ظ',
+ morning: 'صباحاً',
+ afternoon: 'بعد الظهر',
+ evening: 'مساءاً',
+ night: 'ليلاً'
+ },
+ abbreviated: {
+ am: 'ص',
+ pm: 'م',
+ midnight: 'نصف الليل',
+ noon: 'ظهر',
+ morning: 'صباحاً',
+ afternoon: 'بعد الظهر',
+ evening: 'مساءاً',
+ night: 'ليلاً'
+ },
+ wide: {
+ am: 'ص',
+ pm: 'م',
+ midnight: 'نصف الليل',
+ noon: 'ظهر',
+ morning: 'صباحاً',
+ afternoon: 'بعد الظهر',
+ evening: 'مساءاً',
+ night: 'ليلاً'
+ }
+}
+var formattingDayPeriodValues = {
+ narrow: {
+ am: 'ص',
+ pm: 'م',
+ midnight: 'ن',
+ noon: 'ظ',
+ morning: 'في الصباح',
+ afternoon: 'بعد الظـهر',
+ evening: 'في المساء',
+ night: 'في الليل'
+ },
+ abbreviated: {
+ am: 'ص',
+ pm: 'م',
+ midnight: 'نصف الليل',
+ noon: 'ظهر',
+ morning: 'في الصباح',
+ evening: 'في المساء',
+ night: 'في الليل'
+ },
+ wide: {
+ am: 'ص',
+ pm: 'م',
+ midnight: 'نصف الليل',
+ noon: 'ظهر',
+ afternoon: 'بعد الظـهر',
+ evening: 'في المساء',
+ night: 'في الليل'
+ }
+}
+
+function ordinalNumber(dirtyNumber) {
+ return String(dirtyNumber)
+}
+
+var localize = {
+ ordinalNumber: ordinalNumber,
+
+ era: buildLocalizeFn({
+ values: eraValues,
+ defaultWidth: 'wide'
+ }),
+
+ quarter: buildLocalizeFn({
+ values: quarterValues,
+ defaultWidth: 'wide',
+ argumentCallback: function(quarter) {
+ return Number(quarter) - 1
+ }
+ }),
+
+ month: buildLocalizeFn({
+ values: monthValues,
+ defaultWidth: 'wide'
+ }),
+
+ day: buildLocalizeFn({
+ values: dayValues,
+ defaultWidth: 'wide'
+ }),
+
+ dayPeriod: buildLocalizeFn({
+ values: dayPeriodValues,
+ defaultWidth: 'wide',
+ formattingValues: formattingDayPeriodValues,
+ defaultFormattingWidth: 'wide'
+ })
+}
+
+export default localize
diff --git a/date-fns/src/locale/ar-MA/_lib/match/index.js b/date-fns/src/locale/ar-MA/_lib/match/index.js
new file mode 100644
index 0000000..62c87a5
--- /dev/null
+++ b/date-fns/src/locale/ar-MA/_lib/match/index.js
@@ -0,0 +1,146 @@
+import buildMatchPatternFn from '../../../_lib/buildMatchPatternFn/index'
+import buildMatchFn from '../../../_lib/buildMatchFn/index'
+
+var matchOrdinalNumberPattern = /^(\d+)(th|st|nd|rd)?/i
+var parseOrdinalNumberPattern = /\d+/i
+
+var matchEraPatterns = {
+ narrow: /^(ق|ب)/i,
+ abbreviated: /^(ق\.?\s?م\.?|ق\.?\s?م\.?\s?|a\.?\s?d\.?|c\.?\s?)/i,
+ wide: /^(قبل الميلاد|قبل الميلاد|بعد الميلاد|بعد الميلاد)/i
+}
+var parseEraPatterns = {
+ any: [/^قبل/i, /^بعد/i]
+}
+
+var matchQuarterPatterns = {
+ narrow: /^[1234]/i,
+ abbreviated: /^ر[1234]/i,
+ wide: /^الربع [1234]/i
+}
+var parseQuarterPatterns = {
+ any: [/1/i, /2/i, /3/i, /4/i]
+}
+
+var matchMonthPatterns = {
+ narrow: /^[يفمأمسند]/i,
+ abbreviated: /^(ين|ف|مار|أب|ماي|يون|يول|غش|شت|أك|ن|د)/i,
+ wide: /^(ين|ف|مار|أب|ماي|يون|يول|غش|شت|أك|ن|د)/i
+}
+var parseMonthPatterns = {
+ narrow: [
+ /^ي/i,
+ /^ف/i,
+ /^م/i,
+ /^أ/i,
+ /^م/i,
+ /^ي/i,
+ /^ي/i,
+ /^غ/i,
+ /^ش/i,
+ /^أ/i,
+ /^ن/i,
+ /^د/i
+ ],
+ any: [
+ /^ين/i,
+ /^فب/i,
+ /^مار/i,
+ /^أب/i,
+ /^ماي/i,
+ /^يون/i,
+ /^يول/i,
+ /^غشت/i,
+ /^ش/i,
+ /^أك/i,
+ /^ن/i,
+ /^د/i
+ ]
+}
+
+var matchDayPatterns = {
+ narrow: /^[حنثرخجس]/i,
+ short: /^(أحد|إثنين|ثلاثاء|أربعاء|خميس|جمعة|سبت)/i,
+ abbreviated: /^(أحد|إثن|ثلا|أرب|خمي|جمعة|سبت)/i,
+ wide: /^(الأحد|الإثنين|الثلاثاء|الأربعاء|الخميس|الجمعة|السبت)/i
+}
+var parseDayPatterns = {
+ narrow: [/^ح/i, /^ن/i, /^ث/i, /^ر/i, /^خ/i, /^ج/i, /^س/i],
+ wide: [
+ /^الأحد/i,
+ /^الإثنين/i,
+ /^الثلاثاء/i,
+ /^الأربعاء/i,
+ /^الخميس/i,
+ /^الجمعة/i,
+ /^السبت/i
+ ],
+ any: [/^أح/i, /^إث/i, /^ث/i, /^أر/i, /^خ/i, /^ج/i, /^س/i]
+}
+
+var matchDayPeriodPatterns = {
+ narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,
+ any: /^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i
+}
+var parseDayPeriodPatterns = {
+ any: {
+ am: /^a/i,
+ pm: /^p/i,
+ midnight: /^mi/i,
+ noon: /^no/i,
+ morning: /morning/i,
+ afternoon: /afternoon/i,
+ evening: /evening/i,
+ night: /night/i
+ }
+}
+
+var match = {
+ ordinalNumber: buildMatchPatternFn({
+ matchPattern: matchOrdinalNumberPattern,
+ parsePattern: parseOrdinalNumberPattern,
+ valueCallback: function(value) {
+ return parseInt(value, 10)
+ }
+ }),
+
+ era: buildMatchFn({
+ matchPatterns: matchEraPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseEraPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ quarter: buildMatchFn({
+ matchPatterns: matchQuarterPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseQuarterPatterns,
+ defaultParseWidth: 'any',
+ valueCallback: function(index) {
+ return index + 1
+ }
+ }),
+
+ month: buildMatchFn({
+ matchPatterns: matchMonthPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseMonthPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ day: buildMatchFn({
+ matchPatterns: matchDayPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseDayPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ dayPeriod: buildMatchFn({
+ matchPatterns: matchDayPeriodPatterns,
+ defaultMatchWidth: 'any',
+ parsePatterns: parseDayPeriodPatterns,
+ defaultParseWidth: 'any'
+ })
+}
+
+export default match
diff --git a/date-fns/src/locale/ar-MA/index.d.ts b/date-fns/src/locale/ar-MA/index.d.ts
new file mode 100644
index 0000000..b12ae41
--- /dev/null
+++ b/date-fns/src/locale/ar-MA/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { arMA } from 'date-fns/locale'
+export default arMA
diff --git a/date-fns/src/locale/ar-MA/index.js b/date-fns/src/locale/ar-MA/index.js
new file mode 100644
index 0000000..0f9acc3
--- /dev/null
+++ b/date-fns/src/locale/ar-MA/index.js
@@ -0,0 +1,29 @@
+import formatDistance from './_lib/formatDistance/index'
+import formatLong from './_lib/formatLong/index'
+import formatRelative from './_lib/formatRelative/index'
+import localize from './_lib/localize/index'
+import match from './_lib/match/index'
+
+/**
+ * @type {Locale}
+ * @category Locales
+ * @summary Arabic locale (Moroccan Arabic).
+ * @language Moroccan Arabic
+ * @iso-639-2 ara
+ * @author Achraf Rrami [@rramiachraf]{@link https://github.com/rramiachraf}
+ */
+var locale = {
+ code: 'ar-MA',
+ formatDistance: formatDistance,
+ formatLong: formatLong,
+ formatRelative: formatRelative,
+ localize: localize,
+ match: match,
+ options: {
+ // Monday is 1
+ weekStartsOn: 1,
+ firstWeekContainsDate: 1
+ }
+}
+
+export default locale
diff --git a/date-fns/src/locale/ar-MA/index.js.flow b/date-fns/src/locale/ar-MA/index.js.flow
new file mode 100644
index 0000000..b9dfe66
--- /dev/null
+++ b/date-fns/src/locale/ar-MA/index.js.flow
@@ -0,0 +1,35 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+declare module.exports: Locale
diff --git a/date-fns/src/locale/ar-MA/snapshot.md b/date-fns/src/locale/ar-MA/snapshot.md
new file mode 100644
index 0000000..ccb0c1c
--- /dev/null
+++ b/date-fns/src/locale/ar-MA/snapshot.md
@@ -0,0 +1,304 @@
+# Moroccan Arabic (ar-MA) locale
+
+## `format` and `parse`
+
+| Title | Token string | Date | `format` result | `parse` result |
+| ------------------------------- | ------------ | ------------------------ | -------------------------------------------------- | ------------------------ |
+| Calendar year | yo | 1987-02-11T12:13:14.015Z | 1987 | 1987-01-01T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 5 | 0005-01-01T00:00:00.000Z |
+| Local week-numbering year | Yo | 1987-02-11T12:13:14.015Z | 1987 | 1986-12-29T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 5 | 0004-12-27T00:00:00.000Z |
+| Quarter (formatting) | Qo | 2019-01-01T12:13:14.015Z | 1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2 | 2019-04-01T00:00:00.000Z |
+| | QQQ | 2019-01-01T12:13:14.015Z | ر1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | ر2 | 2019-04-01T00:00:00.000Z |
+| | QQQQ | 2019-01-01T12:13:14.015Z | الربع الأول | Invalid Date |
+| | | 2019-04-01T12:13:14.015Z | الربع الثاني | Invalid Date |
+| | QQQQQ | 2019-01-01T12:13:14.015Z | 1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2 | 2019-04-01T00:00:00.000Z |
+| Quarter (stand-alone) | qo | 2019-01-01T12:13:14.015Z | 1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2 | 2019-04-01T00:00:00.000Z |
+| | qqq | 2019-01-01T12:13:14.015Z | ر1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | ر2 | 2019-04-01T00:00:00.000Z |
+| | qqqq | 2019-01-01T12:13:14.015Z | الربع الأول | Invalid Date |
+| | | 2019-04-01T12:13:14.015Z | الربع الثاني | Invalid Date |
+| Month (formatting) | Mo | 2019-02-11T12:13:14.015Z | 2 | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7 | 2019-07-01T00:00:00.000Z |
+| | MMM | 2019-02-11T12:13:14.015Z | فبر | Invalid Date |
+| | | 2019-07-10T12:13:14.015Z | يولـ | Invalid Date |
+| | MMMM | 2019-02-11T12:13:14.015Z | فبراير | Invalid Date |
+| | | 2019-07-10T12:13:14.015Z | يوليوز | Invalid Date |
+| | MMMMM | 2019-02-11T12:13:14.015Z | ف | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | ي | 2019-01-01T00:00:00.000Z |
+| Month (stand-alone) | Lo | 2019-02-11T12:13:14.015Z | 2 | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7 | 2019-07-01T00:00:00.000Z |
+| | LLL | 2019-02-11T12:13:14.015Z | فبر | Invalid Date |
+| | | 2019-07-10T12:13:14.015Z | يولـ | Invalid Date |
+| | LLLL | 2019-02-11T12:13:14.015Z | فبراير | Invalid Date |
+| | | 2019-07-10T12:13:14.015Z | يوليوز | Invalid Date |
+| | LLLLL | 2019-02-11T12:13:14.015Z | ف | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | ي | 2019-01-01T00:00:00.000Z |
+| Local week of year | wo | 2019-01-01T12:13:14.015Z | 1 | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48 | 2019-11-25T00:00:00.000Z |
+| ISO week of year | Io | 2019-01-01T12:13:14.015Z | 1 | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48 | 2019-11-25T00:00:00.000Z |
+| Day of month | do | 2019-02-11T12:13:14.015Z | 11 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-28T12:13:14.015Z | 28 | 2019-02-28T00:00:00.000Z |
+| Day of year | Do | 2019-02-11T12:13:14.015Z | 42 | 2019-02-11T00:00:00.000Z |
+| | | 2019-12-31T12:13:14.015Z | 365 | 2019-12-31T00:00:00.000Z |
+| Day of week (formatting) | E | 2019-02-11T12:13:14.015Z | اثنـ | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | جمعة | 2019-02-15T00:00:00.000Z |
+| | EE | 2019-02-11T12:13:14.015Z | اثنـ | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | جمعة | 2019-02-15T00:00:00.000Z |
+| | EEE | 2019-02-11T12:13:14.015Z | اثنـ | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | جمعة | 2019-02-15T00:00:00.000Z |
+| | EEEE | 2019-02-11T12:13:14.015Z | الإثنين | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | الجمعة | 2019-02-15T00:00:00.000Z |
+| | EEEEE | 2019-02-11T12:13:14.015Z | ن | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ج | 2019-02-15T00:00:00.000Z |
+| | EEEEEE | 2019-02-11T12:13:14.015Z | اثنين | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | جمعة | 2019-02-15T00:00:00.000Z |
+| ISO day of week (formatting) | io | 2019-02-11T12:13:14.015Z | 1 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5 | 2019-02-15T00:00:00.000Z |
+| | iii | 2019-02-11T12:13:14.015Z | اثنـ | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | جمعة | 2019-02-15T00:00:00.000Z |
+| | iiii | 2019-02-11T12:13:14.015Z | الإثنين | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | الجمعة | 2019-02-15T00:00:00.000Z |
+| | iiiii | 2019-02-11T12:13:14.015Z | ن | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ج | 2019-02-15T00:00:00.000Z |
+| | iiiiii | 2019-02-11T12:13:14.015Z | اثنين | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | جمعة | 2019-02-15T00:00:00.000Z |
+| Local day of week (formatting) | eo | 2019-02-11T12:13:14.015Z | 1 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5 | 2019-02-15T00:00:00.000Z |
+| | eee | 2019-02-11T12:13:14.015Z | اثنـ | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | جمعة | 2019-02-15T00:00:00.000Z |
+| | eeee | 2019-02-11T12:13:14.015Z | الإثنين | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | الجمعة | 2019-02-15T00:00:00.000Z |
+| | eeeee | 2019-02-11T12:13:14.015Z | ن | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ج | 2019-02-15T00:00:00.000Z |
+| | eeeeee | 2019-02-11T12:13:14.015Z | اثنين | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | جمعة | 2019-02-15T00:00:00.000Z |
+| Local day of week (stand-alone) | co | 2019-02-11T12:13:14.015Z | 1 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5 | 2019-02-15T00:00:00.000Z |
+| | ccc | 2019-02-11T12:13:14.015Z | اثنـ | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | جمعة | 2019-02-15T00:00:00.000Z |
+| | cccc | 2019-02-11T12:13:14.015Z | الإثنين | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | الجمعة | 2019-02-15T00:00:00.000Z |
+| | ccccc | 2019-02-11T12:13:14.015Z | ن | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ج | 2019-02-15T00:00:00.000Z |
+| | cccccc | 2019-02-11T12:13:14.015Z | اثنين | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | جمعة | 2019-02-15T00:00:00.000Z |
+| AM, PM | a | 2019-02-11T11:13:14.015Z | ص | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | م | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | م | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | ص | Invalid Date |
+| | aa | 2019-02-11T11:13:14.015Z | ص | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | م | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | م | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | ص | Invalid Date |
+| | aaa | 2019-02-11T11:13:14.015Z | ص | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | م | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | م | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | ص | Invalid Date |
+| | aaaa | 2019-02-11T11:13:14.015Z | ص | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | م | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | م | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | ص | Invalid Date |
+| | aaaaa | 2019-02-11T11:13:14.015Z | ص | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | م | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | م | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | ص | Invalid Date |
+| AM, PM, noon, midnight | b | 2019-02-11T11:13:14.015Z | ص | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | م | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | م | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | ص | Invalid Date |
+| | bb | 2019-02-11T11:13:14.015Z | ص | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | م | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | م | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | ص | Invalid Date |
+| | bbb | 2019-02-11T11:13:14.015Z | ص | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | م | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | م | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | ص | Invalid Date |
+| | bbbb | 2019-02-11T11:13:14.015Z | ص | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | م | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | م | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | ص | Invalid Date |
+| | bbbbb | 2019-02-11T11:13:14.015Z | ص | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | م | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | م | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | ص | Invalid Date |
+| Flexible day period | B | 2019-02-11T11:13:14.015Z | في الصباح | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | في المساء | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | في الليل | Invalid Date |
+| | BB | 2019-02-11T11:13:14.015Z | في الصباح | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | في المساء | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | في الليل | Invalid Date |
+| | BBB | 2019-02-11T11:13:14.015Z | في الصباح | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | في المساء | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | في الليل | Invalid Date |
+| | BBBB | 2019-02-11T11:13:14.015Z | | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | بعد الظـهر | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | في المساء | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | في الليل | Invalid Date |
+| | BBBBB | 2019-02-11T11:13:14.015Z | في الصباح | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | بعد الظـهر | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | في المساء | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | في الليل | Invalid Date |
+| Hour [1-12] | ho | 2019-02-11T11:13:14.015Z | 11 | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11 | 2019-02-11T23:00:00.000Z |
+| Hour [0-23] | Ho | 2019-02-11T11:13:14.015Z | 11 | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23 | 2019-02-11T23:00:00.000Z |
+| Hour [0-11] | Ko | 2019-02-11T11:13:14.015Z | 11 | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11 | 2019-02-11T23:00:00.000Z |
+| Hour [1-24] | ko | 2019-02-11T11:13:14.015Z | 11 | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23 | 2019-02-11T23:00:00.000Z |
+| Minute | mo | 2019-01-01T12:01:14.015Z | 1 | 2019-01-01T12:01:00.000Z |
+| | | 2019-04-01T12:55:14.015Z | 55 | 2019-04-01T12:55:00.000Z |
+| Second | so | 2019-01-01T12:13:01.015Z | 1 | 2019-01-01T12:13:01.000Z |
+| | | 2019-04-01T12:13:55.015Z | 55 | 2019-04-01T12:13:55.000Z |
+| Long localized date | P | 1987-02-11T12:13:14.015Z | 02/11/1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 05/29/1453 | 1453-05-29T00:00:00.000Z |
+| | PP | 1987-02-11T12:13:14.015Z | فبر 11, 1987 | Invalid Date |
+| | | 1453-05-29T23:59:59.999Z | ماي 29, 1453 | 1453-05-29T00:00:00.000Z |
+| | PPP | 1987-02-11T12:13:14.015Z | فبراير 11, 1987 | Invalid Date |
+| | | 1453-05-29T23:59:59.999Z | ماي 29, 1453 | 1453-05-29T00:00:00.000Z |
+| | PPPP | 1987-02-11T12:13:14.015Z | الأربعاء, فبراير 11, 1987 | Invalid Date |
+| | | 1453-05-29T23:59:59.999Z | الأحد, ماي 29, 1453 | 1453-05-29T00:00:00.000Z |
+| Long localized time | p | 1987-02-11T12:13:14.015Z | 12:13 م | Invalid Date |
+| | | 1453-05-29T23:59:59.999Z | 11:59 م | Invalid Date |
+| | pp | 1987-02-11T12:13:14.015Z | 12:13:14 م | Invalid Date |
+| | | 1453-05-29T23:59:59.999Z | 11:59:59 م | Invalid Date |
+| | ppp | 1987-02-11T12:13:14.015Z | 12:13:14 م GMT+0 | Invalid Date |
+| | | 1453-05-29T23:59:59.999Z | 11:59:59 م GMT+0 | Invalid Date |
+| | pppp | 1987-02-11T12:13:14.015Z | 12:13:14 م GMT+00:00 | Invalid Date |
+| | | 1453-05-29T23:59:59.999Z | 11:59:59 م GMT+00:00 | Invalid Date |
+| Combination of date and time | Pp | 1987-02-11T12:13:14.015Z | 02/11/1987, 12:13 م | Invalid Date |
+| | | 1453-05-29T23:59:59.999Z | 05/29/1453, 11:59 م | Invalid Date |
+| | PPpp | 1987-02-11T12:13:14.015Z | فبر 11, 1987, 12:13:14 م | Invalid Date |
+| | | 1453-05-29T23:59:59.999Z | ماي 29, 1453, 11:59:59 م | Invalid Date |
+| | PPPppp | 1987-02-11T12:13:14.015Z | فبراير 11, 1987 عند 12:13:14 م GMT+0 | Invalid Date |
+| | | 1453-05-29T23:59:59.999Z | ماي 29, 1453 عند 11:59:59 م GMT+0 | Invalid Date |
+| | PPPPpppp | 1987-02-11T12:13:14.015Z | الأربعاء, فبراير 11, 1987 عند 12:13:14 م GMT+00:00 | Invalid Date |
+| | | 1453-05-29T23:59:59.999Z | الأحد, ماي 29, 1453 عند 11:59:59 م GMT+00:00 | Invalid Date |
+
+## `formatDistance`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `includeSeconds: true` | `addSuffix: true` |
+| ------------------------ | ------------------ | ---------------------- | -------------------------- |
+| 2006-01-01T00:00:00.000Z | 6 أعوام تقريباً | 6 أعوام تقريباً | في خلال 6 أعوام تقريباً |
+| 2005-01-01T00:00:00.000Z | 5 أعوام تقريباً | 5 أعوام تقريباً | في خلال 5 أعوام تقريباً |
+| 2004-01-01T00:00:00.000Z | 4 أعوام تقريباً | 4 أعوام تقريباً | في خلال 4 أعوام تقريباً |
+| 2003-01-01T00:00:00.000Z | 3 أعوام تقريباً | 3 أعوام تقريباً | في خلال 3 أعوام تقريباً |
+| 2002-01-01T00:00:00.000Z | عامين تقريباً | عامين تقريباً | في خلال عامين تقريباً |
+| 2001-06-01T00:00:00.000Z | أكثر من عام | أكثر من عام | في خلال أكثر من عام |
+| 2001-02-01T00:00:00.000Z | عام واحد تقريباً | عام واحد تقريباً | في خلال عام واحد تقريباً |
+| 2001-01-01T00:00:00.000Z | عام واحد تقريباً | عام واحد تقريباً | في خلال عام واحد تقريباً |
+| 2000-06-01T00:00:00.000Z | 5 أشهر | 5 أشهر | في خلال 5 أشهر |
+| 2000-03-01T00:00:00.000Z | شهرين | شهرين | في خلال شهرين |
+| 2000-02-01T00:00:00.000Z | شهر واحد تقريباً | شهر واحد تقريباً | في خلال شهر واحد تقريباً |
+| 2000-01-15T00:00:00.000Z | 14 يوم | 14 يوم | في خلال 14 يوم |
+| 2000-01-02T00:00:00.000Z | يوم واحد | يوم واحد | في خلال يوم واحد |
+| 2000-01-01T06:00:00.000Z | 6 ساعات تقريباً | 6 ساعات تقريباً | في خلال 6 ساعات تقريباً |
+| 2000-01-01T01:00:00.000Z | ساعة واحدة تقريباً | ساعة واحدة تقريباً | في خلال ساعة واحدة تقريباً |
+| 2000-01-01T00:45:00.000Z | ساعة واحدة تقريباً | ساعة واحدة تقريباً | في خلال ساعة واحدة تقريباً |
+| 2000-01-01T00:30:00.000Z | 30 دقيقة | 30 دقيقة | في خلال 30 دقيقة |
+| 2000-01-01T00:15:00.000Z | 15 دقيقة | 15 دقيقة | في خلال 15 دقيقة |
+| 2000-01-01T00:01:00.000Z | دقيقة واحدة | دقيقة واحدة | في خلال دقيقة واحدة |
+| 2000-01-01T00:00:25.000Z | أقل من دقيقة | نصف دقيقة | في خلال أقل من دقيقة |
+| 2000-01-01T00:00:15.000Z | أقل من دقيقة | أقل من 20 ثانية | في خلال أقل من دقيقة |
+| 2000-01-01T00:00:05.000Z | أقل من دقيقة | أقل من 10 ثواني | في خلال أقل من دقيقة |
+| 2000-01-01T00:00:00.000Z | أقل من دقيقة | أقل من 5 ثواني | منذ أقل من دقيقة |
+| 1999-12-31T23:59:55.000Z | أقل من دقيقة | أقل من 10 ثواني | منذ أقل من دقيقة |
+| 1999-12-31T23:59:45.000Z | أقل من دقيقة | أقل من 20 ثانية | منذ أقل من دقيقة |
+| 1999-12-31T23:59:35.000Z | أقل من دقيقة | نصف دقيقة | منذ أقل من دقيقة |
+| 1999-12-31T23:59:00.000Z | دقيقة واحدة | دقيقة واحدة | منذ دقيقة واحدة |
+| 1999-12-31T23:45:00.000Z | 15 دقيقة | 15 دقيقة | منذ 15 دقيقة |
+| 1999-12-31T23:30:00.000Z | 30 دقيقة | 30 دقيقة | منذ 30 دقيقة |
+| 1999-12-31T23:15:00.000Z | ساعة واحدة تقريباً | ساعة واحدة تقريباً | منذ ساعة واحدة تقريباً |
+| 1999-12-31T23:00:00.000Z | ساعة واحدة تقريباً | ساعة واحدة تقريباً | منذ ساعة واحدة تقريباً |
+| 1999-12-31T18:00:00.000Z | 6 ساعات تقريباً | 6 ساعات تقريباً | منذ 6 ساعات تقريباً |
+| 1999-12-30T00:00:00.000Z | يومين | يومين | منذ يومين |
+| 1999-12-15T00:00:00.000Z | 17 يوم | 17 يوم | منذ 17 يوم |
+| 1999-12-01T00:00:00.000Z | شهر واحد تقريباً | شهر واحد تقريباً | منذ شهر واحد تقريباً |
+| 1999-11-01T00:00:00.000Z | شهرين | شهرين | منذ شهرين |
+| 1999-06-01T00:00:00.000Z | 7 أشهر | 7 أشهر | منذ 7 أشهر |
+| 1999-01-01T00:00:00.000Z | عام واحد تقريباً | عام واحد تقريباً | منذ عام واحد تقريباً |
+| 1998-12-01T00:00:00.000Z | عام واحد تقريباً | عام واحد تقريباً | منذ عام واحد تقريباً |
+| 1998-06-01T00:00:00.000Z | أكثر من عام | أكثر من عام | منذ أكثر من عام |
+| 1998-01-01T00:00:00.000Z | عامين تقريباً | عامين تقريباً | منذ عامين تقريباً |
+| 1997-01-01T00:00:00.000Z | 3 أعوام تقريباً | 3 أعوام تقريباً | منذ 3 أعوام تقريباً |
+| 1996-01-01T00:00:00.000Z | 4 أعوام تقريباً | 4 أعوام تقريباً | منذ 4 أعوام تقريباً |
+| 1995-01-01T00:00:00.000Z | 5 أعوام تقريباً | 5 أعوام تقريباً | منذ 5 أعوام تقريباً |
+| 1994-01-01T00:00:00.000Z | 6 أعوام تقريباً | 6 أعوام تقريباً | منذ 6 أعوام تقريباً |
+
+## `formatDistanceStrict`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `addSuffix: true` | With forced unit (i.e. `hour`) |
+| ------------------------ | ----------- | ------------------- | ------------------------------ |
+| 2006-01-01T00:00:00.000Z | 6 أعوام | في خلال 6 أعوام | 52608 ساعة |
+| 2005-01-01T00:00:00.000Z | 5 أعوام | في خلال 5 أعوام | 43848 ساعة |
+| 2004-01-01T00:00:00.000Z | 4 أعوام | في خلال 4 أعوام | 35064 ساعة |
+| 2003-01-01T00:00:00.000Z | 3 أعوام | في خلال 3 أعوام | 26304 ساعة |
+| 2002-01-01T00:00:00.000Z | عامين | في خلال عامين | 17544 ساعة |
+| 2001-06-01T00:00:00.000Z | عام واحد | في خلال عام واحد | 12408 ساعة |
+| 2001-02-01T00:00:00.000Z | عام واحد | في خلال عام واحد | 9528 ساعة |
+| 2001-01-01T00:00:00.000Z | عام واحد | في خلال عام واحد | 8784 ساعة |
+| 2000-06-01T00:00:00.000Z | 5 أشهر | في خلال 5 أشهر | 3648 ساعة |
+| 2000-03-01T00:00:00.000Z | شهرين | في خلال شهرين | 1440 ساعة |
+| 2000-02-01T00:00:00.000Z | شهر واحد | في خلال شهر واحد | 744 ساعة |
+| 2000-01-15T00:00:00.000Z | 14 يوم | في خلال 14 يوم | 336 ساعة |
+| 2000-01-02T00:00:00.000Z | يوم واحد | في خلال يوم واحد | 24 ساعة |
+| 2000-01-01T06:00:00.000Z | 6 ساعات | في خلال 6 ساعات | 6 ساعات |
+| 2000-01-01T01:00:00.000Z | ساعة واحدة | في خلال ساعة واحدة | ساعة واحدة |
+| 2000-01-01T00:45:00.000Z | 45 دقيقة | في خلال 45 دقيقة | ساعة واحدة |
+| 2000-01-01T00:30:00.000Z | 30 دقيقة | في خلال 30 دقيقة | ساعة واحدة |
+| 2000-01-01T00:15:00.000Z | 15 دقيقة | في خلال 15 دقيقة | 0 ساعات |
+| 2000-01-01T00:01:00.000Z | دقيقة واحدة | في خلال دقيقة واحدة | 0 ساعات |
+| 2000-01-01T00:00:25.000Z | 25 ثانية | في خلال 25 ثانية | 0 ساعات |
+| 2000-01-01T00:00:15.000Z | 15 ثانية | في خلال 15 ثانية | 0 ساعات |
+| 2000-01-01T00:00:05.000Z | 5 ثواني | في خلال 5 ثواني | 0 ساعات |
+| 2000-01-01T00:00:00.000Z | 0 ثواني | منذ 0 ثواني | 0 ساعات |
+| 1999-12-31T23:59:55.000Z | 5 ثواني | منذ 5 ثواني | 0 ساعات |
+| 1999-12-31T23:59:45.000Z | 15 ثانية | منذ 15 ثانية | 0 ساعات |
+| 1999-12-31T23:59:35.000Z | 25 ثانية | منذ 25 ثانية | 0 ساعات |
+| 1999-12-31T23:59:00.000Z | دقيقة واحدة | منذ دقيقة واحدة | 0 ساعات |
+| 1999-12-31T23:45:00.000Z | 15 دقيقة | منذ 15 دقيقة | 0 ساعات |
+| 1999-12-31T23:30:00.000Z | 30 دقيقة | منذ 30 دقيقة | ساعة واحدة |
+| 1999-12-31T23:15:00.000Z | 45 دقيقة | منذ 45 دقيقة | ساعة واحدة |
+| 1999-12-31T23:00:00.000Z | ساعة واحدة | منذ ساعة واحدة | ساعة واحدة |
+| 1999-12-31T18:00:00.000Z | 6 ساعات | منذ 6 ساعات | 6 ساعات |
+| 1999-12-30T00:00:00.000Z | يومين | منذ يومين | 48 ساعة |
+| 1999-12-15T00:00:00.000Z | 17 يوم | منذ 17 يوم | 408 ساعة |
+| 1999-12-01T00:00:00.000Z | شهر واحد | منذ شهر واحد | 744 ساعة |
+| 1999-11-01T00:00:00.000Z | شهرين | منذ شهرين | 1464 ساعة |
+| 1999-06-01T00:00:00.000Z | 7 أشهر | منذ 7 أشهر | 5136 ساعة |
+| 1999-01-01T00:00:00.000Z | عام واحد | منذ عام واحد | 8760 ساعة |
+| 1998-12-01T00:00:00.000Z | عام واحد | منذ عام واحد | 9504 ساعة |
+| 1998-06-01T00:00:00.000Z | عامين | منذ عامين | 13896 ساعة |
+| 1998-01-01T00:00:00.000Z | عامين | منذ عامين | 17520 ساعة |
+| 1997-01-01T00:00:00.000Z | 3 أعوام | منذ 3 أعوام | 26280 ساعة |
+| 1996-01-01T00:00:00.000Z | 4 أعوام | منذ 4 أعوام | 35064 ساعة |
+| 1995-01-01T00:00:00.000Z | 5 أعوام | منذ 5 أعوام | 43824 ساعة |
+| 1994-01-01T00:00:00.000Z | 6 أعوام | منذ 6 أعوام | 52584 ساعة |
+
+## `formatRelative`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result |
+| ------------------------ | ----------------------- |
+| 2000-01-10T00:00:00.000Z | 01/10/2000 |
+| 2000-01-05T00:00:00.000Z | الأربعاء عند 12:00 ص |
+| 2000-01-02T00:00:00.000Z | غداً عند 12:00 ص |
+| 2000-01-01T00:00:00.000Z | اليوم عند 12:00 ص |
+| 1999-12-31T00:00:00.000Z | أمس عند 12:00 ص |
+| 1999-12-27T00:00:00.000Z | أخر الإثنين عند 12:00 ص |
+| 1999-12-21T00:00:00.000Z | 12/21/1999 |
diff --git a/date-fns/src/locale/ar-SA/_lib/formatDistance/index.js b/date-fns/src/locale/ar-SA/_lib/formatDistance/index.js
new file mode 100644
index 0000000..bcdb373
--- /dev/null
+++ b/date-fns/src/locale/ar-SA/_lib/formatDistance/index.js
@@ -0,0 +1,135 @@
+var formatDistanceLocale = {
+ lessThanXSeconds: {
+ one: 'أقل من ثانية واحدة',
+ two: 'أقل من ثانتين',
+ threeToTen: 'أقل من {{count}} ثواني',
+ other: 'أقل من {{count}} ثانية'
+ },
+
+ xSeconds: {
+ one: 'ثانية واحدة',
+ two: 'ثانتين',
+ threeToTen: '{{count}} ثواني',
+ other: '{{count}} ثانية'
+ },
+
+ halfAMinute: 'نصف دقيقة',
+
+ lessThanXMinutes: {
+ one: 'أقل من دقيقة',
+ two: 'أقل من دقيقتين',
+ threeToTen: 'أقل من {{count}} دقائق',
+ other: 'أقل من {{count}} دقيقة'
+ },
+
+ xMinutes: {
+ one: 'دقيقة واحدة',
+ two: 'دقيقتين',
+ threeToTen: '{{count}} دقائق',
+ other: '{{count}} دقيقة'
+ },
+
+ aboutXHours: {
+ one: 'ساعة واحدة تقريباً',
+ two: 'ساعتين تقريباً',
+ threeToTen: '{{count}} ساعات تقريباً',
+ other: '{{count}} ساعة تقريباً'
+ },
+
+ xHours: {
+ one: 'ساعة واحدة',
+ two: 'ساعتين',
+ threeToTen: '{{count}} ساعات',
+ other: '{{count}} ساعة'
+ },
+
+ xDays: {
+ one: 'يوم واحد',
+ two: 'يومين',
+ threeToTen: '{{count}} أيام',
+ other: '{{count}} يوم'
+ },
+
+ aboutXWeeks: {
+ one: 'أسبوع واحد تقريباً',
+ two: 'أسبوعين تقريباً',
+ threeToTen: '{{count}} أسابيع تقريباً',
+ other: '{{count}} أسبوع تقريباً'
+ },
+
+ xWeeks: {
+ one: 'أسبوع واحد',
+ two: 'أسبوعين',
+ threeToTen: '{{count}} أسابيع',
+ other: '{{count}} أسبوع'
+ },
+
+ aboutXMonths: {
+ one: 'شهر واحد تقريباً',
+ two: 'شهرين تقريباً',
+ threeToTen: '{{count}} أشهر تقريباً',
+ other: '{{count}} شهر تقريباً'
+ },
+
+ xMonths: {
+ one: 'شهر واحد',
+ two: 'شهرين',
+ threeToTen: '{{count}} أشهر',
+ other: '{{count}} شهر'
+ },
+
+ aboutXYears: {
+ one: 'عام واحد تقريباً',
+ two: 'عامين تقريباً',
+ threeToTen: '{{count}} أعوام تقريباً',
+ other: '{{count}} عام تقريباً'
+ },
+
+ xYears: {
+ one: 'عام واحد',
+ two: 'عامين',
+ threeToTen: '{{count}} أعوام',
+ other: '{{count}} عام'
+ },
+
+ overXYears: {
+ one: 'أكثر من عام',
+ two: 'أكثر من عامين',
+ threeToTen: 'أكثر من {{count}} أعوام',
+ other: 'أكثر من {{count}} عام'
+ },
+
+ almostXYears: {
+ one: 'عام واحد تقريباً',
+ two: 'عامين تقريباً',
+ threeToTen: '{{count}} أعوام تقريباً',
+ other: '{{count}} عام تقريباً'
+ }
+}
+
+export default function formatDistance(token, count, options) {
+ options = options || {}
+
+ var result
+ if (typeof formatDistanceLocale[token] === 'string') {
+ result = formatDistanceLocale[token]
+ } else if (count === 1) {
+ result = formatDistanceLocale[token].one
+ } else if (count === 2) {
+ result = formatDistanceLocale[token].two
+ } else if (count <= 10) {
+ result = formatDistanceLocale[token].threeToTen.replace('{{count}}', count)
+ } else {
+ result = formatDistanceLocale[token].other.replace('{{count}}', count)
+ }
+
+ if (options.addSuffix) {
+ if (options.comparison > 0) {
+ return 'في خلال ' + result
+ } else {
+ return 'منذ ' + result
+ }
+ }
+
+ return result
+}
diff --git a/date-fns/src/locale/ar-SA/_lib/formatLong/index.js b/date-fns/src/locale/ar-SA/_lib/formatLong/index.js
new file mode 100644
index 0000000..a65ad56
--- /dev/null
+++ b/date-fns/src/locale/ar-SA/_lib/formatLong/index.js
@@ -0,0 +1,41 @@
+import buildFormatLongFn from '../../../_lib/buildFormatLongFn/index'
+
+var dateFormats = {
+ full: 'EEEE, MMMM do, y',
+ long: 'MMMM do, y',
+ medium: 'MMM d, y',
+ short: 'MM/dd/yyyy'
+}
+
+var timeFormats = {
+ full: 'h:mm:ss a zzzz',
+ long: 'h:mm:ss a z',
+ medium: 'h:mm:ss a',
+ short: 'h:mm a'
+}
+
+var dateTimeFormats = {
+ full: "{{date}} 'عند' {{time}}",
+ long: "{{date}} 'عند' {{time}}",
+ medium: '{{date}}, {{time}}',
+ short: '{{date}}, {{time}}'
+}
+
+var formatLong = {
+ date: buildFormatLongFn({
+ formats: dateFormats,
+ defaultWidth: 'full'
+ }),
+
+ time: buildFormatLongFn({
+ formats: timeFormats,
+ defaultWidth: 'full'
+ }),
+
+ dateTime: buildFormatLongFn({
+ formats: dateTimeFormats,
+ defaultWidth: 'full'
+ })
+}
+
+export default formatLong
diff --git a/date-fns/src/locale/ar-SA/_lib/formatRelative/index.js b/date-fns/src/locale/ar-SA/_lib/formatRelative/index.js
new file mode 100644
index 0000000..9276495
--- /dev/null
+++ b/date-fns/src/locale/ar-SA/_lib/formatRelative/index.js
@@ -0,0 +1,12 @@
+var formatRelativeLocale = {
+ lastWeek: "'أخر' eeee 'عند' p",
+ yesterday: "'أمس عند' p",
+ today: "'اليوم عند' p",
+ tomorrow: "'غداً عند' p",
+ nextWeek: "eeee 'عند' p",
+ other: 'P'
+}
+
+export default function formatRelative(token, _date, _baseDate, _options) {
+ return formatRelativeLocale[token]
+}
diff --git a/date-fns/src/locale/ar-SA/_lib/localize/index.js b/date-fns/src/locale/ar-SA/_lib/localize/index.js
new file mode 100644
index 0000000..2d83b5c
--- /dev/null
+++ b/date-fns/src/locale/ar-SA/_lib/localize/index.js
@@ -0,0 +1,163 @@
+import buildLocalizeFn from '../../../_lib/buildLocalizeFn/index'
+
+var eraValues = {
+ narrow: ['ق', 'ب'],
+ abbreviated: ['ق.م.', 'ب.م.'],
+ wide: ['قبل الميلاد', 'بعد الميلاد']
+}
+
+var quarterValues = {
+ narrow: ['1', '2', '3', '4'],
+ abbreviated: ['ر1', 'ر2', 'ر3', 'ر4'],
+ wide: ['الربع الأول', 'الربع الثاني', 'الربع الثالث', 'الربع الرابع']
+}
+
+var monthValues = {
+ narrow: ['ي', 'ف', 'م', 'أ', 'م', 'ي', 'ي', 'أ', 'س', 'أ', 'ن', 'د'],
+ abbreviated: [
+ 'ينا',
+ 'فبر',
+ 'مارس',
+ 'أبريل',
+ 'مايو',
+ 'يونـ',
+ 'يولـ',
+ 'أغسـ',
+ 'سبتـ',
+ 'أكتـ',
+ 'نوفـ',
+ 'ديسـ'
+ ],
+ wide: [
+ 'يناير',
+ 'فبراير',
+ 'مارس',
+ 'أبريل',
+ 'مايو',
+ 'يونيو',
+ 'يوليو',
+ 'أغسطس',
+ 'سبتمبر',
+ 'أكتوبر',
+ 'نوفمبر',
+ 'ديسمبر'
+ ]
+}
+
+var dayValues = {
+ narrow: ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'],
+ short: ['أحد', 'اثنين', 'ثلاثاء', 'أربعاء', 'خميس', 'جمعة', 'سبت'],
+ abbreviated: ['أحد', 'اثنـ', 'ثلا', 'أربـ', 'خميـ', 'جمعة', 'سبت'],
+ wide: [
+ 'الأحد',
+ 'الاثنين',
+ 'الثلاثاء',
+ 'الأربعاء',
+ 'الخميس',
+ 'الجمعة',
+ 'السبت'
+ ]
+}
+
+var dayPeriodValues = {
+ narrow: {
+ am: 'ص',
+ pm: 'م',
+ midnight: 'ن',
+ noon: 'ظ',
+ morning: 'صباحاً',
+ afternoon: 'بعد الظهر',
+ evening: 'مساءاً',
+ night: 'ليلاً'
+ },
+ abbreviated: {
+ am: 'ص',
+ pm: 'م',
+ midnight: 'نصف الليل',
+ noon: 'ظهر',
+ morning: 'صباحاً',
+ afternoon: 'بعد الظهر',
+ evening: 'مساءاً',
+ night: 'ليلاً'
+ },
+ wide: {
+ am: 'ص',
+ pm: 'م',
+ midnight: 'نصف الليل',
+ noon: 'ظهر',
+ morning: 'صباحاً',
+ afternoon: 'بعد الظهر',
+ evening: 'مساءاً',
+ night: 'ليلاً'
+ }
+}
+var formattingDayPeriodValues = {
+ narrow: {
+ am: 'ص',
+ pm: 'م',
+ midnight: 'ن',
+ noon: 'ظ',
+ morning: 'في الصباح',
+ afternoon: 'بعد الظـهر',
+ evening: 'في المساء',
+ night: 'في الليل'
+ },
+ abbreviated: {
+ am: 'ص',
+ pm: 'م',
+ midnight: 'نصف الليل',
+ noon: 'ظهر',
+ morning: 'في الصباح',
+ evening: 'في المساء',
+ night: 'في الليل'
+ },
+ wide: {
+ am: 'ص',
+ pm: 'م',
+ midnight: 'نصف الليل',
+ noon: 'ظهر',
+ afternoon: 'بعد الظـهر',
+ evening: 'في المساء',
+ night: 'في الليل'
+ }
+}
+
+function ordinalNumber(dirtyNumber) {
+ return String(dirtyNumber)
+}
+
+var localize = {
+ ordinalNumber: ordinalNumber,
+
+ era: buildLocalizeFn({
+ values: eraValues,
+ defaultWidth: 'wide'
+ }),
+
+ quarter: buildLocalizeFn({
+ values: quarterValues,
+ defaultWidth: 'wide',
+ argumentCallback: function(quarter) {
+ return Number(quarter) - 1
+ }
+ }),
+
+ month: buildLocalizeFn({
+ values: monthValues,
+ defaultWidth: 'wide'
+ }),
+
+ day: buildLocalizeFn({
+ values: dayValues,
+ defaultWidth: 'wide'
+ }),
+
+ dayPeriod: buildLocalizeFn({
+ values: dayPeriodValues,
+ defaultWidth: 'wide',
+ formattingValues: formattingDayPeriodValues,
+ defaultFormattingWidth: 'wide'
+ })
+}
+
+export default localize
diff --git a/date-fns/src/locale/ar-SA/_lib/match/index.js b/date-fns/src/locale/ar-SA/_lib/match/index.js
new file mode 100644
index 0000000..ad9a68d
--- /dev/null
+++ b/date-fns/src/locale/ar-SA/_lib/match/index.js
@@ -0,0 +1,146 @@
+import buildMatchPatternFn from '../../../_lib/buildMatchPatternFn/index'
+import buildMatchFn from '../../../_lib/buildMatchFn/index'
+
+var matchOrdinalNumberPattern = /^(\d+)(th|st|nd|rd)?/i
+var parseOrdinalNumberPattern = /\d+/i
+
+var matchEraPatterns = {
+ narrow: /^(ق|ب)/i,
+ abbreviated: /^(ق\.?\s?م\.?|ق\.?\s?م\.?\s?|a\.?\s?d\.?|c\.?\s?)/i,
+ wide: /^(قبل الميلاد|قبل الميلاد|بعد الميلاد|بعد الميلاد)/i
+}
+var parseEraPatterns = {
+ any: [/^قبل/i, /^بعد/i]
+}
+
+var matchQuarterPatterns = {
+ narrow: /^[1234]/i,
+ abbreviated: /^ر[1234]/i,
+ wide: /^الربع [1234]/i
+}
+var parseQuarterPatterns = {
+ any: [/1/i, /2/i, /3/i, /4/i]
+}
+
+var matchMonthPatterns = {
+ narrow: /^[يفمأمسند]/i,
+ abbreviated: /^(ين|ف|مار|أب|ماي|يون|يول|أغ|س|أك|ن|د)/i,
+ wide: /^(ين|ف|مار|أب|ماي|يون|يول|أغ|س|أك|ن|د)/i
+}
+var parseMonthPatterns = {
+ narrow: [
+ /^ي/i,
+ /^ف/i,
+ /^م/i,
+ /^أ/i,
+ /^م/i,
+ /^ي/i,
+ /^ي/i,
+ /^أ/i,
+ /^س/i,
+ /^أ/i,
+ /^ن/i,
+ /^د/i
+ ],
+ any: [
+ /^ين/i,
+ /^ف/i,
+ /^مار/i,
+ /^أب/i,
+ /^ماي/i,
+ /^يون/i,
+ /^يول/i,
+ /^أغ/i,
+ /^س/i,
+ /^أك/i,
+ /^ن/i,
+ /^د/i
+ ]
+}
+
+var matchDayPatterns = {
+ narrow: /^[حنثرخجس]/i,
+ short: /^(أحد|اثنين|ثلاثاء|أربعاء|خميس|جمعة|سبت)/i,
+ abbreviated: /^(أحد|اثن|ثلا|أرب|خمي|جمعة|سبت)/i,
+ wide: /^(الأحد|الاثنين|الثلاثاء|الأربعاء|الخميس|الجمعة|السبت)/i
+}
+var parseDayPatterns = {
+ narrow: [/^ح/i, /^ن/i, /^ث/i, /^ر/i, /^خ/i, /^ج/i, /^س/i],
+ wide: [
+ /^الأحد/i,
+ /^الاثنين/i,
+ /^الثلاثاء/i,
+ /^الأربعاء/i,
+ /^الخميس/i,
+ /^الجمعة/i,
+ /^السبت/i
+ ],
+ any: [/^أح/i, /^اث/i, /^ث/i, /^أر/i, /^خ/i, /^ج/i, /^س/i]
+}
+
+var matchDayPeriodPatterns = {
+ narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,
+ any: /^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i
+}
+var parseDayPeriodPatterns = {
+ any: {
+ am: /^a/i,
+ pm: /^p/i,
+ midnight: /^mi/i,
+ noon: /^no/i,
+ morning: /morning/i,
+ afternoon: /afternoon/i,
+ evening: /evening/i,
+ night: /night/i
+ }
+}
+
+var match = {
+ ordinalNumber: buildMatchPatternFn({
+ matchPattern: matchOrdinalNumberPattern,
+ parsePattern: parseOrdinalNumberPattern,
+ valueCallback: function(value) {
+ return parseInt(value, 10)
+ }
+ }),
+
+ era: buildMatchFn({
+ matchPatterns: matchEraPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseEraPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ quarter: buildMatchFn({
+ matchPatterns: matchQuarterPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseQuarterPatterns,
+ defaultParseWidth: 'any',
+ valueCallback: function(index) {
+ return index + 1
+ }
+ }),
+
+ month: buildMatchFn({
+ matchPatterns: matchMonthPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseMonthPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ day: buildMatchFn({
+ matchPatterns: matchDayPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseDayPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ dayPeriod: buildMatchFn({
+ matchPatterns: matchDayPeriodPatterns,
+ defaultMatchWidth: 'any',
+ parsePatterns: parseDayPeriodPatterns,
+ defaultParseWidth: 'any'
+ })
+}
+
+export default match
diff --git a/date-fns/src/locale/ar-SA/index.d.ts b/date-fns/src/locale/ar-SA/index.d.ts
new file mode 100644
index 0000000..e1a74a0
--- /dev/null
+++ b/date-fns/src/locale/ar-SA/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { arSA } from 'date-fns/locale'
+export default arSA
diff --git a/date-fns/src/locale/ar-SA/index.js b/date-fns/src/locale/ar-SA/index.js
new file mode 100644
index 0000000..bc8b674
--- /dev/null
+++ b/date-fns/src/locale/ar-SA/index.js
@@ -0,0 +1,28 @@
+import formatDistance from './_lib/formatDistance/index'
+import formatLong from './_lib/formatLong/index'
+import formatRelative from './_lib/formatRelative/index'
+import localize from './_lib/localize/index'
+import match from './_lib/match/index'
+
+/**
+ * @type {Locale}
+ * @category Locales
+ * @summary Arabic locale (Sauid Arabic).
+ * @language Arabic
+ * @iso-639-2 ara
+ * @author Dhaifallah Alwadani [@dalwadani]{@link https://github.com/dalwadani}
+ */
+var locale = {
+ code: 'ar-SA',
+ formatDistance: formatDistance,
+ formatLong: formatLong,
+ formatRelative: formatRelative,
+ localize: localize,
+ match: match,
+ options: {
+ weekStartsOn: 0 /* Sunday */,
+ firstWeekContainsDate: 1
+ }
+}
+
+export default locale
diff --git a/date-fns/src/locale/ar-SA/index.js.flow b/date-fns/src/locale/ar-SA/index.js.flow
new file mode 100644
index 0000000..b9dfe66
--- /dev/null
+++ b/date-fns/src/locale/ar-SA/index.js.flow
@@ -0,0 +1,35 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+declare module.exports: Locale
diff --git a/date-fns/src/locale/ar-SA/snapshot.md b/date-fns/src/locale/ar-SA/snapshot.md
new file mode 100644
index 0000000..0f21930
--- /dev/null
+++ b/date-fns/src/locale/ar-SA/snapshot.md
@@ -0,0 +1,304 @@
+# Arabic (ar-SA) locale
+
+## `format` and `parse`
+
+| Title | Token string | Date | `format` result | `parse` result |
+| ------------------------------- | ------------ | ------------------------ | -------------------------------------------------- | ------------------------ |
+| Calendar year | yo | 1987-02-11T12:13:14.015Z | 1987 | 1987-01-01T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 5 | 0005-01-01T00:00:00.000Z |
+| Local week-numbering year | Yo | 1987-02-11T12:13:14.015Z | 1987 | 1986-12-28T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 5 | 0004-12-26T00:00:00.000Z |
+| Quarter (formatting) | Qo | 2019-01-01T12:13:14.015Z | 1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2 | 2019-04-01T00:00:00.000Z |
+| | QQQ | 2019-01-01T12:13:14.015Z | ر1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | ر2 | 2019-04-01T00:00:00.000Z |
+| | QQQQ | 2019-01-01T12:13:14.015Z | الربع الأول | Invalid Date |
+| | | 2019-04-01T12:13:14.015Z | الربع الثاني | Invalid Date |
+| | QQQQQ | 2019-01-01T12:13:14.015Z | 1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2 | 2019-04-01T00:00:00.000Z |
+| Quarter (stand-alone) | qo | 2019-01-01T12:13:14.015Z | 1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2 | 2019-04-01T00:00:00.000Z |
+| | qqq | 2019-01-01T12:13:14.015Z | ر1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | ر2 | 2019-04-01T00:00:00.000Z |
+| | qqqq | 2019-01-01T12:13:14.015Z | الربع الأول | Invalid Date |
+| | | 2019-04-01T12:13:14.015Z | الربع الثاني | Invalid Date |
+| Month (formatting) | Mo | 2019-02-11T12:13:14.015Z | 2 | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7 | 2019-07-01T00:00:00.000Z |
+| | MMM | 2019-02-11T12:13:14.015Z | فبر | Invalid Date |
+| | | 2019-07-10T12:13:14.015Z | يولـ | Invalid Date |
+| | MMMM | 2019-02-11T12:13:14.015Z | فبراير | Invalid Date |
+| | | 2019-07-10T12:13:14.015Z | يوليو | Invalid Date |
+| | MMMMM | 2019-02-11T12:13:14.015Z | ف | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | ي | 2019-01-01T00:00:00.000Z |
+| Month (stand-alone) | Lo | 2019-02-11T12:13:14.015Z | 2 | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7 | 2019-07-01T00:00:00.000Z |
+| | LLL | 2019-02-11T12:13:14.015Z | فبر | Invalid Date |
+| | | 2019-07-10T12:13:14.015Z | يولـ | Invalid Date |
+| | LLLL | 2019-02-11T12:13:14.015Z | فبراير | Invalid Date |
+| | | 2019-07-10T12:13:14.015Z | يوليو | Invalid Date |
+| | LLLLL | 2019-02-11T12:13:14.015Z | ف | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | ي | 2019-01-01T00:00:00.000Z |
+| Local week of year | wo | 2019-01-01T12:13:14.015Z | 1 | 2018-12-30T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 49 | 2019-12-01T00:00:00.000Z |
+| ISO week of year | Io | 2019-01-01T12:13:14.015Z | 1 | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48 | 2019-11-25T00:00:00.000Z |
+| Day of month | do | 2019-02-11T12:13:14.015Z | 11 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-28T12:13:14.015Z | 28 | 2019-02-28T00:00:00.000Z |
+| Day of year | Do | 2019-02-11T12:13:14.015Z | 42 | 2019-02-11T00:00:00.000Z |
+| | | 2019-12-31T12:13:14.015Z | 365 | 2019-12-31T00:00:00.000Z |
+| Day of week (formatting) | E | 2019-02-11T12:13:14.015Z | اثنـ | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | جمعة | 2019-02-15T00:00:00.000Z |
+| | EE | 2019-02-11T12:13:14.015Z | اثنـ | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | جمعة | 2019-02-15T00:00:00.000Z |
+| | EEE | 2019-02-11T12:13:14.015Z | اثنـ | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | جمعة | 2019-02-15T00:00:00.000Z |
+| | EEEE | 2019-02-11T12:13:14.015Z | الاثنين | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | الجمعة | 2019-02-15T00:00:00.000Z |
+| | EEEEE | 2019-02-11T12:13:14.015Z | ن | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ج | 2019-02-15T00:00:00.000Z |
+| | EEEEEE | 2019-02-11T12:13:14.015Z | اثنين | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | جمعة | 2019-02-15T00:00:00.000Z |
+| ISO day of week (formatting) | io | 2019-02-11T12:13:14.015Z | 1 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5 | 2019-02-15T00:00:00.000Z |
+| | iii | 2019-02-11T12:13:14.015Z | اثنـ | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | جمعة | 2019-02-15T00:00:00.000Z |
+| | iiii | 2019-02-11T12:13:14.015Z | الاثنين | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | الجمعة | 2019-02-15T00:00:00.000Z |
+| | iiiii | 2019-02-11T12:13:14.015Z | ن | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ج | 2019-02-15T00:00:00.000Z |
+| | iiiiii | 2019-02-11T12:13:14.015Z | اثنين | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | جمعة | 2019-02-15T00:00:00.000Z |
+| Local day of week (formatting) | eo | 2019-02-11T12:13:14.015Z | 2 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 6 | 2019-02-15T00:00:00.000Z |
+| | eee | 2019-02-11T12:13:14.015Z | اثنـ | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | جمعة | 2019-02-15T00:00:00.000Z |
+| | eeee | 2019-02-11T12:13:14.015Z | الاثنين | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | الجمعة | 2019-02-15T00:00:00.000Z |
+| | eeeee | 2019-02-11T12:13:14.015Z | ن | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ج | 2019-02-15T00:00:00.000Z |
+| | eeeeee | 2019-02-11T12:13:14.015Z | اثنين | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | جمعة | 2019-02-15T00:00:00.000Z |
+| Local day of week (stand-alone) | co | 2019-02-11T12:13:14.015Z | 2 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 6 | 2019-02-15T00:00:00.000Z |
+| | ccc | 2019-02-11T12:13:14.015Z | اثنـ | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | جمعة | 2019-02-15T00:00:00.000Z |
+| | cccc | 2019-02-11T12:13:14.015Z | الاثنين | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | الجمعة | 2019-02-15T00:00:00.000Z |
+| | ccccc | 2019-02-11T12:13:14.015Z | ن | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ج | 2019-02-15T00:00:00.000Z |
+| | cccccc | 2019-02-11T12:13:14.015Z | اثنين | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | جمعة | 2019-02-15T00:00:00.000Z |
+| AM, PM | a | 2019-02-11T11:13:14.015Z | ص | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | م | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | م | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | ص | Invalid Date |
+| | aa | 2019-02-11T11:13:14.015Z | ص | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | م | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | م | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | ص | Invalid Date |
+| | aaa | 2019-02-11T11:13:14.015Z | ص | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | م | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | م | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | ص | Invalid Date |
+| | aaaa | 2019-02-11T11:13:14.015Z | ص | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | م | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | م | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | ص | Invalid Date |
+| | aaaaa | 2019-02-11T11:13:14.015Z | ص | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | م | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | م | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | ص | Invalid Date |
+| AM, PM, noon, midnight | b | 2019-02-11T11:13:14.015Z | ص | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | م | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | م | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | ص | Invalid Date |
+| | bb | 2019-02-11T11:13:14.015Z | ص | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | م | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | م | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | ص | Invalid Date |
+| | bbb | 2019-02-11T11:13:14.015Z | ص | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | م | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | م | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | ص | Invalid Date |
+| | bbbb | 2019-02-11T11:13:14.015Z | ص | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | م | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | م | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | ص | Invalid Date |
+| | bbbbb | 2019-02-11T11:13:14.015Z | ص | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | م | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | م | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | ص | Invalid Date |
+| Flexible day period | B | 2019-02-11T11:13:14.015Z | في الصباح | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | في المساء | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | في الليل | Invalid Date |
+| | BB | 2019-02-11T11:13:14.015Z | في الصباح | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | في المساء | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | في الليل | Invalid Date |
+| | BBB | 2019-02-11T11:13:14.015Z | في الصباح | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | في المساء | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | في الليل | Invalid Date |
+| | BBBB | 2019-02-11T11:13:14.015Z | | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | بعد الظـهر | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | في المساء | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | في الليل | Invalid Date |
+| | BBBBB | 2019-02-11T11:13:14.015Z | في الصباح | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | بعد الظـهر | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | في المساء | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | في الليل | Invalid Date |
+| Hour [1-12] | ho | 2019-02-11T11:13:14.015Z | 11 | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11 | 2019-02-11T23:00:00.000Z |
+| Hour [0-23] | Ho | 2019-02-11T11:13:14.015Z | 11 | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23 | 2019-02-11T23:00:00.000Z |
+| Hour [0-11] | Ko | 2019-02-11T11:13:14.015Z | 11 | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11 | 2019-02-11T23:00:00.000Z |
+| Hour [1-24] | ko | 2019-02-11T11:13:14.015Z | 11 | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23 | 2019-02-11T23:00:00.000Z |
+| Minute | mo | 2019-01-01T12:01:14.015Z | 1 | 2019-01-01T12:01:00.000Z |
+| | | 2019-04-01T12:55:14.015Z | 55 | 2019-04-01T12:55:00.000Z |
+| Second | so | 2019-01-01T12:13:01.015Z | 1 | 2019-01-01T12:13:01.000Z |
+| | | 2019-04-01T12:13:55.015Z | 55 | 2019-04-01T12:13:55.000Z |
+| Long localized date | P | 1987-02-11T12:13:14.015Z | 02/11/1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 05/29/1453 | 1453-05-29T00:00:00.000Z |
+| | PP | 1987-02-11T12:13:14.015Z | فبر 11, 1987 | Invalid Date |
+| | | 1453-05-29T23:59:59.999Z | مايو 29, 1453 | Invalid Date |
+| | PPP | 1987-02-11T12:13:14.015Z | فبراير 11, 1987 | Invalid Date |
+| | | 1453-05-29T23:59:59.999Z | مايو 29, 1453 | Invalid Date |
+| | PPPP | 1987-02-11T12:13:14.015Z | الأربعاء, فبراير 11, 1987 | Invalid Date |
+| | | 1453-05-29T23:59:59.999Z | الأحد, مايو 29, 1453 | Invalid Date |
+| Long localized time | p | 1987-02-11T12:13:14.015Z | 12:13 م | Invalid Date |
+| | | 1453-05-29T23:59:59.999Z | 11:59 م | Invalid Date |
+| | pp | 1987-02-11T12:13:14.015Z | 12:13:14 م | Invalid Date |
+| | | 1453-05-29T23:59:59.999Z | 11:59:59 م | Invalid Date |
+| | ppp | 1987-02-11T12:13:14.015Z | 12:13:14 م GMT+0 | Invalid Date |
+| | | 1453-05-29T23:59:59.999Z | 11:59:59 م GMT+0 | Invalid Date |
+| | pppp | 1987-02-11T12:13:14.015Z | 12:13:14 م GMT+00:00 | Invalid Date |
+| | | 1453-05-29T23:59:59.999Z | 11:59:59 م GMT+00:00 | Invalid Date |
+| Combination of date and time | Pp | 1987-02-11T12:13:14.015Z | 02/11/1987, 12:13 م | Invalid Date |
+| | | 1453-05-29T23:59:59.999Z | 05/29/1453, 11:59 م | Invalid Date |
+| | PPpp | 1987-02-11T12:13:14.015Z | فبر 11, 1987, 12:13:14 م | Invalid Date |
+| | | 1453-05-29T23:59:59.999Z | مايو 29, 1453, 11:59:59 م | Invalid Date |
+| | PPPppp | 1987-02-11T12:13:14.015Z | فبراير 11, 1987 عند 12:13:14 م GMT+0 | Invalid Date |
+| | | 1453-05-29T23:59:59.999Z | مايو 29, 1453 عند 11:59:59 م GMT+0 | Invalid Date |
+| | PPPPpppp | 1987-02-11T12:13:14.015Z | الأربعاء, فبراير 11, 1987 عند 12:13:14 م GMT+00:00 | Invalid Date |
+| | | 1453-05-29T23:59:59.999Z | الأحد, مايو 29, 1453 عند 11:59:59 م GMT+00:00 | Invalid Date |
+
+## `formatDistance`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `includeSeconds: true` | `addSuffix: true` |
+| ------------------------ | ------------------ | ---------------------- | -------------------------- |
+| 2006-01-01T00:00:00.000Z | 6 أعوام تقريباً | 6 أعوام تقريباً | في خلال 6 أعوام تقريباً |
+| 2005-01-01T00:00:00.000Z | 5 أعوام تقريباً | 5 أعوام تقريباً | في خلال 5 أعوام تقريباً |
+| 2004-01-01T00:00:00.000Z | 4 أعوام تقريباً | 4 أعوام تقريباً | في خلال 4 أعوام تقريباً |
+| 2003-01-01T00:00:00.000Z | 3 أعوام تقريباً | 3 أعوام تقريباً | في خلال 3 أعوام تقريباً |
+| 2002-01-01T00:00:00.000Z | عامين تقريباً | عامين تقريباً | في خلال عامين تقريباً |
+| 2001-06-01T00:00:00.000Z | أكثر من عام | أكثر من عام | في خلال أكثر من عام |
+| 2001-02-01T00:00:00.000Z | عام واحد تقريباً | عام واحد تقريباً | في خلال عام واحد تقريباً |
+| 2001-01-01T00:00:00.000Z | عام واحد تقريباً | عام واحد تقريباً | في خلال عام واحد تقريباً |
+| 2000-06-01T00:00:00.000Z | 5 أشهر | 5 أشهر | في خلال 5 أشهر |
+| 2000-03-01T00:00:00.000Z | شهرين | شهرين | في خلال شهرين |
+| 2000-02-01T00:00:00.000Z | شهر واحد تقريباً | شهر واحد تقريباً | في خلال شهر واحد تقريباً |
+| 2000-01-15T00:00:00.000Z | 14 يوم | 14 يوم | في خلال 14 يوم |
+| 2000-01-02T00:00:00.000Z | يوم واحد | يوم واحد | في خلال يوم واحد |
+| 2000-01-01T06:00:00.000Z | 6 ساعات تقريباً | 6 ساعات تقريباً | في خلال 6 ساعات تقريباً |
+| 2000-01-01T01:00:00.000Z | ساعة واحدة تقريباً | ساعة واحدة تقريباً | في خلال ساعة واحدة تقريباً |
+| 2000-01-01T00:45:00.000Z | ساعة واحدة تقريباً | ساعة واحدة تقريباً | في خلال ساعة واحدة تقريباً |
+| 2000-01-01T00:30:00.000Z | 30 دقيقة | 30 دقيقة | في خلال 30 دقيقة |
+| 2000-01-01T00:15:00.000Z | 15 دقيقة | 15 دقيقة | في خلال 15 دقيقة |
+| 2000-01-01T00:01:00.000Z | دقيقة واحدة | دقيقة واحدة | في خلال دقيقة واحدة |
+| 2000-01-01T00:00:25.000Z | أقل من دقيقة | نصف دقيقة | في خلال أقل من دقيقة |
+| 2000-01-01T00:00:15.000Z | أقل من دقيقة | أقل من 20 ثانية | في خلال أقل من دقيقة |
+| 2000-01-01T00:00:05.000Z | أقل من دقيقة | أقل من 10 ثواني | في خلال أقل من دقيقة |
+| 2000-01-01T00:00:00.000Z | أقل من دقيقة | أقل من 5 ثواني | منذ أقل من دقيقة |
+| 1999-12-31T23:59:55.000Z | أقل من دقيقة | أقل من 10 ثواني | منذ أقل من دقيقة |
+| 1999-12-31T23:59:45.000Z | أقل من دقيقة | أقل من 20 ثانية | منذ أقل من دقيقة |
+| 1999-12-31T23:59:35.000Z | أقل من دقيقة | نصف دقيقة | منذ أقل من دقيقة |
+| 1999-12-31T23:59:00.000Z | دقيقة واحدة | دقيقة واحدة | منذ دقيقة واحدة |
+| 1999-12-31T23:45:00.000Z | 15 دقيقة | 15 دقيقة | منذ 15 دقيقة |
+| 1999-12-31T23:30:00.000Z | 30 دقيقة | 30 دقيقة | منذ 30 دقيقة |
+| 1999-12-31T23:15:00.000Z | ساعة واحدة تقريباً | ساعة واحدة تقريباً | منذ ساعة واحدة تقريباً |
+| 1999-12-31T23:00:00.000Z | ساعة واحدة تقريباً | ساعة واحدة تقريباً | منذ ساعة واحدة تقريباً |
+| 1999-12-31T18:00:00.000Z | 6 ساعات تقريباً | 6 ساعات تقريباً | منذ 6 ساعات تقريباً |
+| 1999-12-30T00:00:00.000Z | يومين | يومين | منذ يومين |
+| 1999-12-15T00:00:00.000Z | 17 يوم | 17 يوم | منذ 17 يوم |
+| 1999-12-01T00:00:00.000Z | شهر واحد تقريباً | شهر واحد تقريباً | منذ شهر واحد تقريباً |
+| 1999-11-01T00:00:00.000Z | شهرين | شهرين | منذ شهرين |
+| 1999-06-01T00:00:00.000Z | 7 أشهر | 7 أشهر | منذ 7 أشهر |
+| 1999-01-01T00:00:00.000Z | عام واحد تقريباً | عام واحد تقريباً | منذ عام واحد تقريباً |
+| 1998-12-01T00:00:00.000Z | عام واحد تقريباً | عام واحد تقريباً | منذ عام واحد تقريباً |
+| 1998-06-01T00:00:00.000Z | أكثر من عام | أكثر من عام | منذ أكثر من عام |
+| 1998-01-01T00:00:00.000Z | عامين تقريباً | عامين تقريباً | منذ عامين تقريباً |
+| 1997-01-01T00:00:00.000Z | 3 أعوام تقريباً | 3 أعوام تقريباً | منذ 3 أعوام تقريباً |
+| 1996-01-01T00:00:00.000Z | 4 أعوام تقريباً | 4 أعوام تقريباً | منذ 4 أعوام تقريباً |
+| 1995-01-01T00:00:00.000Z | 5 أعوام تقريباً | 5 أعوام تقريباً | منذ 5 أعوام تقريباً |
+| 1994-01-01T00:00:00.000Z | 6 أعوام تقريباً | 6 أعوام تقريباً | منذ 6 أعوام تقريباً |
+
+## `formatDistanceStrict`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `addSuffix: true` | With forced unit (i.e. `hour`) |
+| ------------------------ | ----------- | ------------------- | ------------------------------ |
+| 2006-01-01T00:00:00.000Z | 6 أعوام | في خلال 6 أعوام | 52608 ساعة |
+| 2005-01-01T00:00:00.000Z | 5 أعوام | في خلال 5 أعوام | 43848 ساعة |
+| 2004-01-01T00:00:00.000Z | 4 أعوام | في خلال 4 أعوام | 35064 ساعة |
+| 2003-01-01T00:00:00.000Z | 3 أعوام | في خلال 3 أعوام | 26304 ساعة |
+| 2002-01-01T00:00:00.000Z | عامين | في خلال عامين | 17544 ساعة |
+| 2001-06-01T00:00:00.000Z | عام واحد | في خلال عام واحد | 12408 ساعة |
+| 2001-02-01T00:00:00.000Z | عام واحد | في خلال عام واحد | 9528 ساعة |
+| 2001-01-01T00:00:00.000Z | عام واحد | في خلال عام واحد | 8784 ساعة |
+| 2000-06-01T00:00:00.000Z | 5 أشهر | في خلال 5 أشهر | 3648 ساعة |
+| 2000-03-01T00:00:00.000Z | شهرين | في خلال شهرين | 1440 ساعة |
+| 2000-02-01T00:00:00.000Z | شهر واحد | في خلال شهر واحد | 744 ساعة |
+| 2000-01-15T00:00:00.000Z | 14 يوم | في خلال 14 يوم | 336 ساعة |
+| 2000-01-02T00:00:00.000Z | يوم واحد | في خلال يوم واحد | 24 ساعة |
+| 2000-01-01T06:00:00.000Z | 6 ساعات | في خلال 6 ساعات | 6 ساعات |
+| 2000-01-01T01:00:00.000Z | ساعة واحدة | في خلال ساعة واحدة | ساعة واحدة |
+| 2000-01-01T00:45:00.000Z | 45 دقيقة | في خلال 45 دقيقة | ساعة واحدة |
+| 2000-01-01T00:30:00.000Z | 30 دقيقة | في خلال 30 دقيقة | ساعة واحدة |
+| 2000-01-01T00:15:00.000Z | 15 دقيقة | في خلال 15 دقيقة | 0 ساعات |
+| 2000-01-01T00:01:00.000Z | دقيقة واحدة | في خلال دقيقة واحدة | 0 ساعات |
+| 2000-01-01T00:00:25.000Z | 25 ثانية | في خلال 25 ثانية | 0 ساعات |
+| 2000-01-01T00:00:15.000Z | 15 ثانية | في خلال 15 ثانية | 0 ساعات |
+| 2000-01-01T00:00:05.000Z | 5 ثواني | في خلال 5 ثواني | 0 ساعات |
+| 2000-01-01T00:00:00.000Z | 0 ثواني | منذ 0 ثواني | 0 ساعات |
+| 1999-12-31T23:59:55.000Z | 5 ثواني | منذ 5 ثواني | 0 ساعات |
+| 1999-12-31T23:59:45.000Z | 15 ثانية | منذ 15 ثانية | 0 ساعات |
+| 1999-12-31T23:59:35.000Z | 25 ثانية | منذ 25 ثانية | 0 ساعات |
+| 1999-12-31T23:59:00.000Z | دقيقة واحدة | منذ دقيقة واحدة | 0 ساعات |
+| 1999-12-31T23:45:00.000Z | 15 دقيقة | منذ 15 دقيقة | 0 ساعات |
+| 1999-12-31T23:30:00.000Z | 30 دقيقة | منذ 30 دقيقة | ساعة واحدة |
+| 1999-12-31T23:15:00.000Z | 45 دقيقة | منذ 45 دقيقة | ساعة واحدة |
+| 1999-12-31T23:00:00.000Z | ساعة واحدة | منذ ساعة واحدة | ساعة واحدة |
+| 1999-12-31T18:00:00.000Z | 6 ساعات | منذ 6 ساعات | 6 ساعات |
+| 1999-12-30T00:00:00.000Z | يومين | منذ يومين | 48 ساعة |
+| 1999-12-15T00:00:00.000Z | 17 يوم | منذ 17 يوم | 408 ساعة |
+| 1999-12-01T00:00:00.000Z | شهر واحد | منذ شهر واحد | 744 ساعة |
+| 1999-11-01T00:00:00.000Z | شهرين | منذ شهرين | 1464 ساعة |
+| 1999-06-01T00:00:00.000Z | 7 أشهر | منذ 7 أشهر | 5136 ساعة |
+| 1999-01-01T00:00:00.000Z | عام واحد | منذ عام واحد | 8760 ساعة |
+| 1998-12-01T00:00:00.000Z | عام واحد | منذ عام واحد | 9504 ساعة |
+| 1998-06-01T00:00:00.000Z | عامين | منذ عامين | 13896 ساعة |
+| 1998-01-01T00:00:00.000Z | عامين | منذ عامين | 17520 ساعة |
+| 1997-01-01T00:00:00.000Z | 3 أعوام | منذ 3 أعوام | 26280 ساعة |
+| 1996-01-01T00:00:00.000Z | 4 أعوام | منذ 4 أعوام | 35064 ساعة |
+| 1995-01-01T00:00:00.000Z | 5 أعوام | منذ 5 أعوام | 43824 ساعة |
+| 1994-01-01T00:00:00.000Z | 6 أعوام | منذ 6 أعوام | 52584 ساعة |
+
+## `formatRelative`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result |
+| ------------------------ | ----------------------- |
+| 2000-01-10T00:00:00.000Z | 01/10/2000 |
+| 2000-01-05T00:00:00.000Z | الأربعاء عند 12:00 ص |
+| 2000-01-02T00:00:00.000Z | غداً عند 12:00 ص |
+| 2000-01-01T00:00:00.000Z | اليوم عند 12:00 ص |
+| 1999-12-31T00:00:00.000Z | أمس عند 12:00 ص |
+| 1999-12-27T00:00:00.000Z | أخر الاثنين عند 12:00 ص |
+| 1999-12-21T00:00:00.000Z | 12/21/1999 |
diff --git a/date-fns/src/locale/ar/_lib/formatDistance/index.js b/date-fns/src/locale/ar/_lib/formatDistance/index.js
new file mode 100644
index 0000000..843ac71
--- /dev/null
+++ b/date-fns/src/locale/ar/_lib/formatDistance/index.js
@@ -0,0 +1,91 @@
+var formatDistanceLocale = {
+ lessThanXSeconds: {
+ one: 'أقل من ثانية واحدة',
+ other: 'أقل من {{count}} ثواني'
+ },
+
+ xSeconds: {
+ one: 'ثانية واحدة',
+ other: '{{count}} ثواني'
+ },
+
+ halfAMinute: 'نصف دقيقة',
+
+ lessThanXMinutes: {
+ one: 'أقل من دقيقة',
+ other: 'أقل من {{count}} دقيقة'
+ },
+
+ xMinutes: {
+ one: 'دقيقة واحدة',
+ other: '{{count}} دقائق'
+ },
+
+ aboutXHours: {
+ one: 'ساعة واحدة تقريباً',
+ other: '{{count}} ساعات تقريباً'
+ },
+
+ xHours: {
+ one: 'ساعة واحدة',
+ other: '{{count}} ساعات'
+ },
+
+ xDays: {
+ one: 'يوم واحد',
+ other: '{{count}} أيام'
+ },
+
+ aboutXMonths: {
+ one: 'شهر واحد تقريباً',
+ other: '{{count}} أشهر تقريباً'
+ },
+
+ xMonths: {
+ one: 'شهر واحد',
+ other: '{{count}} أشهر'
+ },
+
+ aboutXYears: {
+ one: 'عام واحد تقريباً',
+ other: '{{count}} أعوام تقريباً'
+ },
+
+ xYears: {
+ one: 'عام واحد',
+ other: '{{count}} أعوام'
+ },
+
+ overXYears: {
+ one: 'أكثر من عام',
+ other: 'أكثر من {{count}} أعوام'
+ },
+
+ almostXYears: {
+ one: 'عام واحد تقريباً',
+ other: '{{count}} أعوام تقريباً'
+ }
+}
+
+export default function formatDistance (token, count, options) {
+ options = options || {}
+
+ var result
+ if (typeof formatDistanceLocale[token] === 'string') {
+ result = formatDistanceLocale[token]
+ } else if (count === 1) {
+ result = formatDistanceLocale[token].one
+ } else {
+ result = formatDistanceLocale[token].other.replace('{{count}}', count)
+ }
+
+ if (options.addSuffix) {
+ if (options.comparison > 0) {
+ return 'في خلال ' + result
+ } else {
+ return 'منذ ' + result
+ }
+ }
+
+ return result
+}
diff --git a/date-fns/src/locale/ar/_lib/formatLong/index.js b/date-fns/src/locale/ar/_lib/formatLong/index.js
new file mode 100644
index 0000000..2cf1867
--- /dev/null
+++ b/date-fns/src/locale/ar/_lib/formatLong/index.js
@@ -0,0 +1,12 @@
+import buildFormatLongFn from '../../../_lib/buildFormatLongFn/index'
+
+var formatLong = buildFormatLongFn({
+ LT: 'h:mm aa',
+ LTS: 'h:mm:ss aa',
+ L: 'MM/DD/YYYY',
+ LL: 'MMMM D YYYY',
+ LLL: 'MMMM D YYYY h:mm aa',
+ LLLL: 'dddd, MMMM D YYYY h:mm aa'
+})
+
+export default formatLong
diff --git a/date-fns/src/locale/ar/_lib/formatRelative/index.js b/date-fns/src/locale/ar/_lib/formatRelative/index.js
new file mode 100644
index 0000000..52ebbf1
--- /dev/null
+++ b/date-fns/src/locale/ar/_lib/formatRelative/index.js
@@ -0,0 +1,12 @@
+var formatRelativeLocale = {
+ lastWeek: '[last] dddd [at] LT',
+ yesterday: '[yesterday at] LT',
+ today: '[today at] LT',
+ tomorrow: '[tomorrow at] LT',
+ nextWeek: 'dddd [at] LT',
+ other: 'L'
+}
+
+export default function formatRelative(token, _date, _baseDate, _options) {
+ return formatRelativeLocale[token]
+}
diff --git a/date-fns/src/locale/ar/_lib/localize/index.js b/date-fns/src/locale/ar/_lib/localize/index.js
new file mode 100644
index 0000000..811e9e8
--- /dev/null
+++ b/date-fns/src/locale/ar/_lib/localize/index.js
@@ -0,0 +1,71 @@
+import buildLocalizeFn from '../../../_lib/buildLocalizeFn/index'
+import buildLocalizeArrayFn from '../../../_lib/buildLocalizeArrayFn/index'
+
+var weekdayValues = {
+ narrow: ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'],
+ short: ['أحد', 'اثنين', 'ثلاثاء', 'أربعاء', 'خميس', 'جمعة', 'سبت'],
+ long: [
+ 'الأحد',
+ 'الاثنين',
+ 'الثلاثاء',
+ 'الأربعاء',
+ 'الخميس',
+ 'الجمعة',
+ 'السبت'
+ ]
+}
+
+var monthValues = {
+ short: [
+ 'يناير',
+ 'فبراير',
+ 'مارس',
+ 'أبريل',
+ 'مايو',
+ 'يونيو',
+ 'يوليو',
+ 'أغسطس',
+ 'سبتمبر',
+ 'أكتوبر',
+ 'نوفمبر',
+ 'ديسمبر'
+ ],
+ long: [
+ 'كانون الثاني يناير',
+ 'شباط فبراير',
+ 'آذار مارس',
+ 'نيسان أبريل',
+ 'أيار مايو',
+ 'حزيران يونيو',
+ 'تموز يوليو',
+ 'آب أغسطس',
+ 'أيلول سبتمبر',
+ 'تشرين الأول أكتوبر',
+ 'تشرين الثاني نوفمبر',
+ 'كانون الأول ديسمبر'
+ ]
+}
+
+var timeOfDayValues = {
+ uppercase: ['صباح', 'مساء'],
+ lowercase: ['ص', 'م'],
+ long: ['صباحاً', 'مساءً']
+}
+
+function ordinalNumber(dirtyNumber) {
+ return String(dirtyNumber)
+}
+
+var localize = {
+ ordinalNumber: ordinalNumber,
+ weekday: buildLocalizeFn(weekdayValues, 'long'),
+ weekdays: buildLocalizeArrayFn(weekdayValues, 'long'),
+ month: buildLocalizeFn(monthValues, 'long'),
+ months: buildLocalizeArrayFn(monthValues, 'long'),
+ timeOfDay: buildLocalizeFn(timeOfDayValues, 'long', function(hours) {
+ return hours / 12 >= 1 ? 1 : 0
+ }),
+ timesOfDay: buildLocalizeArrayFn(timeOfDayValues, 'long')
+}
+
+export default localize
diff --git a/date-fns/src/locale/ar/_lib/match/index.js b/date-fns/src/locale/ar/_lib/match/index.js
new file mode 100644
index 0000000..5a3f4c5
--- /dev/null
+++ b/date-fns/src/locale/ar/_lib/match/index.js
@@ -0,0 +1,60 @@
+import buildMatchFn from '../../../_lib/buildMatchFn/index'
+import buildParseFn from '../../../_lib/buildParseFn/index'
+import buildMatchPatternFn from '../../../_lib/buildMatchPatternFn/index'
+import parseDecimal from '../../../_lib/parseDecimal/index'
+
+var matchOrdinalNumbersPattern = /^(\d+)(th|st|nd|rd)?/i
+
+var matchWeekdaysPatterns = {
+ narrow: /^(su|mo|tu|we|th|fr|sa)/i,
+ short: /^(sun|mon|tue|wed|thu|fri|sat)/i,
+ long: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i
+}
+
+var parseWeekdayPatterns = {
+ any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i]
+}
+
+var matchMonthsPatterns = {
+ short: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,
+ long: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i
+}
+
+var parseMonthPatterns = {
+ any: [
+ /^ja/i,
+ /^f/i,
+ /^mar/i,
+ /^ap/i,
+ /^may/i,
+ /^jun/i,
+ /^jul/i,
+ /^au/i,
+ /^s/i,
+ /^o/i,
+ /^n/i,
+ /^d/i
+ ]
+}
+
+var matchTimesOfDayPatterns = {
+ short: /^(am|pm)/i,
+ long: /^([ap]\.?\s?m\.?)/i
+}
+
+var parseTimeOfDayPatterns = {
+ any: [/^a/i, /^p/i]
+}
+
+var match = {
+ ordinalNumbers: buildMatchPatternFn(matchOrdinalNumbersPattern),
+ ordinalNumber: parseDecimal,
+ weekdays: buildMatchFn(matchWeekdaysPatterns, 'long'),
+ weekday: buildParseFn(parseWeekdayPatterns, 'any'),
+ months: buildMatchFn(matchMonthsPatterns, 'long'),
+ month: buildParseFn(parseMonthPatterns, 'any'),
+ timesOfDay: buildMatchFn(matchTimesOfDayPatterns, 'long'),
+ timeOfDay: buildParseFn(parseTimeOfDayPatterns, 'any')
+}
+
+export default match
diff --git a/date-fns/src/locale/ar/index.d.ts b/date-fns/src/locale/ar/index.d.ts
new file mode 100644
index 0000000..61adf3b
--- /dev/null
+++ b/date-fns/src/locale/ar/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { ar } from 'date-fns/locale'
+export default ar
diff --git a/date-fns/src/locale/ar/index.js b/date-fns/src/locale/ar/index.js
new file mode 100644
index 0000000..efad6f7
--- /dev/null
+++ b/date-fns/src/locale/ar/index.js
@@ -0,0 +1,32 @@
+// import formatDistance from './_lib/formatDistance/index'
+// import formatLong from './_lib/formatLong/index'
+// import formatRelative from './_lib/formatRelative/index'
+// import localize from './_lib/localize/index'
+// import match from './_lib/match/index'
+
+/**
+ * @type {Locale}
+ * @category Locales
+ * @summary Arabic locale (Modern Standard Arabic - Al-fussha).
+ * @language Modern Standard Arabic
+ * @iso-639-2 ara
+ * @author Abdallah Hassan [@AbdallahAHO]{@link https://github.com/AbdallahAHO}
+ */
+// var locale = {
+// code: 'ar',
+// formatDistance: formatDistance,
+// formatLong: formatLong,
+// formatRelative: formatRelative,
+// localize: localize,
+// match: match,
+// options: {
+// weekStartsOn: 6 /* Saturday */,
+// firstWeekContainsDate: 1
+// }
+// }
+
+// export default locale
+
+throw new Error(
+ 'ar locale is currently unavailable. Please check the progress of converting this locale to v2.0.0 in this issue on Github: TBA'
+)
diff --git a/date-fns/src/locale/ar/index.js.flow b/date-fns/src/locale/ar/index.js.flow
new file mode 100644
index 0000000..b9dfe66
--- /dev/null
+++ b/date-fns/src/locale/ar/index.js.flow
@@ -0,0 +1,35 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+declare module.exports: Locale
diff --git a/date-fns/src/locale/az/_lib/formatDistance/index.js b/date-fns/src/locale/az/_lib/formatDistance/index.js
new file mode 100644
index 0000000..836a06b
--- /dev/null
+++ b/date-fns/src/locale/az/_lib/formatDistance/index.js
@@ -0,0 +1,101 @@
+var formatDistanceLocale = {
+ lessThanXSeconds: {
+ one: 'bir saniyədən az',
+ other: '{{count}} bir saniyədən az'
+ },
+
+ xSeconds: {
+ one: '1 saniyə',
+ other: '{{count}} saniyə'
+ },
+
+ halfAMinute: 'yarım dəqiqə',
+
+ lessThanXMinutes: {
+ one: 'bir dəqiqədən az',
+ other: '{{count}} bir dəqiqədən az'
+ },
+
+ xMinutes: {
+ one: 'bir dəqiqə',
+ other: '{{count}} dəqiqə'
+ },
+
+ aboutXHours: {
+ one: 'təxminən 1 saat',
+ other: 'təxminən {{count}} saat'
+ },
+
+ xHours: {
+ one: '1 saat',
+ other: '{{count}} saat'
+ },
+
+ xDays: {
+ one: '1 gün',
+ other: '{{count}} gün'
+ },
+
+ aboutXWeeks: {
+ one: 'təxminən 1 həftə',
+ other: 'təxminən {{count}} həftə'
+ },
+
+ xWeeks: {
+ one: '1 həftə',
+ other: '{{count}} həftə'
+ },
+
+ aboutXMonths: {
+ one: 'təxminən 1 ay',
+ other: 'təxminən {{count}} ay'
+ },
+
+ xMonths: {
+ one: '1 ay',
+ other: '{{count}} ay'
+ },
+
+ aboutXYears: {
+ one: 'təxminən 1 il',
+ other: 'təxminən {{count}} il'
+ },
+
+ xYears: {
+ one: '1 il',
+ other: '{{count}} il'
+ },
+
+ overXYears: {
+ one: '1 ildən çox',
+ other: '{{count}} ildən çox'
+ },
+
+ almostXYears: {
+ one: 'demək olar ki 1 il',
+ other: 'demək olar ki {{count}} il'
+ }
+}
+
+export default function formatDistance(token, count, options) {
+ options = options || {}
+ var result
+
+ if (typeof formatDistanceLocale[token] === 'string') {
+ result = formatDistanceLocale[token]
+ } else if (count === 1) {
+ result = formatDistanceLocale[token].one
+ } else {
+ result = formatDistanceLocale[token].other.replace('{{count}}', count)
+ }
+
+ if (options.addSuffix) {
+ if (options.comparison > 0) {
+ return result + ' əvvəl'
+ } else {
+ return result + ' sonra'
+ }
+ }
+
+ return result
+}
diff --git a/date-fns/src/locale/az/_lib/formatLong/index.js b/date-fns/src/locale/az/_lib/formatLong/index.js
new file mode 100644
index 0000000..baf216e
--- /dev/null
+++ b/date-fns/src/locale/az/_lib/formatLong/index.js
@@ -0,0 +1,39 @@
+import buildFormatLongFn from '../../../_lib/buildFormatLongFn/index'
+
+var dateFormats = {
+ full: "EEEE, do MMMM y 'il'",
+ long: "do MMMM y 'il'",
+ medium: "d MMM y 'il'",
+ short: 'dd.MM.yyyy'
+}
+
+var timeFormats = {
+ full: 'H:mm:ss zzzz',
+ long: 'H:mm:ss z',
+ medium: 'H:mm:ss',
+ short: 'H:mm'
+}
+var dateTimeFormats = {
+ full: "{{date}} {{time}} - 'də'",
+ long: "{{date}} {{time}} - 'də'",
+ medium: '{{date}}, {{time}}',
+ short: '{{date}}, {{time}}'
+}
+var formatLong = {
+ date: buildFormatLongFn({
+ formats: dateFormats,
+ defaultWidth: 'full'
+ }),
+
+ time: buildFormatLongFn({
+ formats: timeFormats,
+ defaultWidth: 'full'
+ }),
+
+ dateTime: buildFormatLongFn({
+ formats: dateTimeFormats,
+ defaultWidth: 'full'
+ })
+}
+
+export default formatLong
diff --git a/date-fns/src/locale/az/_lib/formatRelative/index.js b/date-fns/src/locale/az/_lib/formatRelative/index.js
new file mode 100644
index 0000000..c9c1bc5
--- /dev/null
+++ b/date-fns/src/locale/az/_lib/formatRelative/index.js
@@ -0,0 +1,12 @@
+var formatRelativeLocale = {
+ lastWeek: "'sonuncu' eeee p -'də'",
+ yesterday: "'dünən' p -'də'",
+ today: "'bugün' p -'də'",
+ tomorrow: "'sabah' p -'də'",
+ nextWeek: "eeee p -'də'",
+ other: 'P'
+}
+
+export default function formatRelative(token, _date, _baseDate, _options) {
+ return formatRelativeLocale[token]
+}
diff --git a/date-fns/src/locale/az/_lib/localize/index.js b/date-fns/src/locale/az/_lib/localize/index.js
new file mode 100644
index 0000000..97bd29f
--- /dev/null
+++ b/date-fns/src/locale/az/_lib/localize/index.js
@@ -0,0 +1,194 @@
+import buildLocalizeFn from '../../../_lib/buildLocalizeFn/index'
+
+var eraValues = {
+ narrow: ['B', 'A'],
+ abbreviated: ['BC', 'AD'],
+ wide: ["Hz. İsa'dan öncə", 'Anno Domini']
+}
+var quarterValues = {
+ narrow: ['1', '2', '3', '4'],
+ abbreviated: ['K1', 'K2', 'K3', 'K4'],
+ wide: ['1ci kvartal', '2ci kvartal', '3cü kvartal', '4cü kvartal'] // Note: in English, the names of days of the week and months are capitalized.
+ // If you are making a new locale based on this one, check if the same is true for the language you're working on.
+ // Generally, formatted dates should look like they are in the middle of a sentence,
+ // e.g. in Spanish language the weekdays and months should be in the lowercase.
+}
+var monthValues = {
+ narrow: ['Y', 'F', 'M', 'A', 'M', 'I', 'I', 'A', 'S', 'O', 'N', 'D'],
+ abbreviated: [
+ 'Yan',
+ 'Fev',
+ 'Mar',
+ 'Apr',
+ 'May',
+ 'İyun',
+ 'İyul',
+ 'Avq',
+ 'Sen',
+ 'Okt',
+ 'Noy',
+ 'Dek'
+ ],
+ wide: [
+ 'Yanvar',
+ 'Fevral',
+ 'Mart',
+ 'Aprel',
+ 'May',
+ 'İyun',
+ 'İyul',
+ 'Avqust',
+ 'Sentyabr',
+ 'Oktyabr',
+ 'Noyabr',
+ 'Dekabr'
+ ]
+}
+var dayValues = {
+ narrow: ['B.', 'B.e', 'Ç.a', 'Ç.', 'C.a', 'C.', 'Ş.'],
+ short: ['B.', 'B.e', 'Ç.a', 'Ç.', 'C.a', 'C.', 'Ş.'],
+ abbreviated: ['Baz', 'Baz.e', 'Çər.a', 'Çər', 'Cüm.a', 'Cüm', 'Şə'],
+ wide: [
+ 'Bazar',
+ 'Bazar ertəsi',
+ 'Çərşənbə axşamı',
+ 'Çərşənbə',
+ 'Cümə axşamı',
+ 'Cümə',
+ 'Şənbə'
+ ]
+}
+var dayPeriodValues = {
+ narrow: {
+ am: 'am',
+ pm: 'pm',
+ midnight: 'gecəyarı',
+ noon: 'gün',
+ morning: 'səhər',
+ afternoon: 'gündüz',
+ evening: 'axşam',
+ night: 'gecə'
+ },
+ abbreviated: {
+ am: 'AM',
+ pm: 'PM',
+ midnight: 'gecəyarı',
+ noon: 'gün',
+ morning: 'səhər',
+ afternoon: 'gündüz',
+ evening: 'axşam',
+ night: 'gecə'
+ },
+ wide: {
+ am: 'a.m.',
+ pm: 'p.m.',
+ midnight: 'gecəyarı',
+ noon: 'gün',
+ morning: 'səhər',
+ afternoon: 'gündüz',
+ evening: 'axşam',
+ night: 'gecə'
+ }
+}
+var formattingDayPeriodValues = {
+ narrow: {
+ am: 'a',
+ pm: 'p',
+ midnight: 'gecəyarı',
+ noon: 'gün',
+ morning: 'səhər',
+ afternoon: 'gündüz',
+ evening: 'axşam',
+ night: 'gecə'
+ },
+ abbreviated: {
+ am: 'AM',
+ pm: 'PM',
+ midnight: 'gecəyarı',
+ noon: 'gün',
+ morning: 'səhər',
+ afternoon: 'gündüz',
+ evening: 'axşam',
+ night: 'gecə'
+ },
+ wide: {
+ am: 'a.m.',
+ pm: 'p.m.',
+ midnight: 'gecəyarı',
+ noon: 'gün',
+ morning: 'səhər',
+ afternoon: 'gündüz',
+ evening: 'axşam',
+ night: 'gecə'
+ }
+}
+
+var suffixes = {
+ 1: '-inci',
+ 5: '-inci',
+ 8: '-inci',
+ 70: '-inci',
+ 80: '-inci',
+ 2: '-nci',
+ 7: '-nci',
+ 20: '-nci',
+ 50: '-nci',
+ 3: '-üncü',
+ 4: '-üncü',
+ 100: '-üncü',
+ 6: '-ncı',
+ 9: '-uncu',
+ 10: '-uncu',
+ 30: '-uncu',
+ 60: '-ıncı',
+ 90: '-ıncı'
+}
+
+function getSuffix(number) {
+ if (number === 0) {
+ // special case for zero
+ return number + '-ıncı'
+ }
+ var a = number % 10,
+ b = (number % 100) - a,
+ c = number >= 100 ? 100 : null
+ return suffixes[a] || suffixes[b] || suffixes[c]
+}
+
+function ordinalNumber(dirtyNumber, _dirtyOptions) {
+ var number = Number(dirtyNumber)
+ var suffix = getSuffix(number)
+
+ return number + suffix
+}
+
+var localize = {
+ ordinalNumber: ordinalNumber,
+ era: buildLocalizeFn({
+ values: eraValues,
+ defaultWidth: 'wide'
+ }),
+ quarter: buildLocalizeFn({
+ values: quarterValues,
+ defaultWidth: 'wide',
+ argumentCallback: function(quarter) {
+ return Number(quarter) - 1
+ }
+ }),
+ month: buildLocalizeFn({
+ values: monthValues,
+ defaultWidth: 'wide'
+ }),
+ day: buildLocalizeFn({
+ values: dayValues,
+ defaultWidth: 'wide'
+ }),
+ dayPeriod: buildLocalizeFn({
+ values: dayPeriodValues,
+ defaultWidth: 'wide',
+ formattingValues: formattingDayPeriodValues,
+ defaultFormattingWidth: 'wide'
+ })
+}
+
+export default localize
diff --git a/date-fns/src/locale/az/_lib/match/index.js b/date-fns/src/locale/az/_lib/match/index.js
new file mode 100644
index 0000000..853c316
--- /dev/null
+++ b/date-fns/src/locale/az/_lib/match/index.js
@@ -0,0 +1,166 @@
+import buildMatchPatternFn from '../../../_lib/buildMatchPatternFn/index'
+import buildMatchFn from '../../../_lib/buildMatchFn/index'
+
+var matchOrdinalNumberPattern = /^(\d+)(-?(ci|inci|nci|uncu|üncü|ncı))?/i
+var parseOrdinalNumberPattern = /\d+/i
+var matchEraPatterns = {
+ narrow: /^(b|a)$/i,
+ abbreviated: /^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)$/i,
+ wide: /^(Hz. İsa'dan öncə|ümumi eradan əvvəl|anno domini|ümumi dövr)$/i
+}
+var parseEraPatterns = {
+ any: [/^b$/i, /^(a|c)$/i]
+}
+var matchQuarterPatterns = {
+ narrow: /^[1234]$/i,
+ abbreviated: /^K[1234]$/i,
+ wide: /^[1234](ci)? kvartal$/i
+}
+var parseQuarterPatterns = {
+ any: [/1/i, /2/i, /3/i, /4/i]
+}
+var matchMonthPatterns = {
+ narrow: /^[(?-i)yfmaisond]$/i,
+ abbreviated: /^(Yan|Fev|Mar|Apr|May|İyun|İyul|Avq|Sen|Okt|Noy|Dek)$/i,
+ wide: /^(Yanvar|Fevral|Mart|Aprel|May|İyun|İyul|Avgust|Sentyabr|Oktyabr|Noyabr|Dekabr)$/i
+}
+var parseMonthPatterns = {
+ narrow: [
+ /^[(?-i)y]$/i,
+ /^[(?-i)f]$/i,
+ /^[(?-i)m]$/i,
+ /^[(?-i)a]$/i,
+ /^[(?-i)m]$/i,
+ /^[(?-i)i]$/i,
+ /^[(?-i)i]$/i,
+ /^[(?-i)a]$/i,
+ /^[(?-i)s]$/i,
+ /^[(?-i)o]$/i,
+ /^[(?-i)n]$/i,
+ /^[(?-i)d]$/i
+ ],
+ abbreviated: [
+ /^Yan$/i,
+ /^Fev$/i,
+ /^Mar$/i,
+ /^Apr$/i,
+ /^May$/i,
+ /^İyun$/i,
+ /^İyul$/i,
+ /^Avg$/i,
+ /^Sen$/i,
+ /^Okt$/i,
+ /^Noy$/i,
+ /^Dek$/i
+ ],
+ wide: [
+ /^Yanvar$/i,
+ /^Fevral$/i,
+ /^Mart$/i,
+ /^Aprel$/i,
+ /^May$/i,
+ /^İyun$/i,
+ /^İyul$/i,
+ /^Avgust$/i,
+ /^Sentyabr$/i,
+ /^Oktyabr$/i,
+ /^Noyabr$/i,
+ /^Dekabr$/i
+ ]
+}
+
+var matchDayPatterns = {
+ narrow: /^(B\.|B\.e|Ç\.a|Ç\.|C\.a|C\.|Ş\.)$/i,
+ short: /^(B\.|B\.e|Ç\.a|Ç\.|C\.a|C\.|Ş\.)$/i,
+ abbreviated: /^(Baz\.e|Çər|Çər\.a|Cüm|Cüm\.a|Şə)$/i,
+ wide: /^(Bazar|Bazar ertəsi|Çərşənbə axşamı|Çərşənbə|Cümə axşamı|Cümə|Şənbə)$/i
+}
+var parseDayPatterns = {
+ narrow: [
+ /^B\.$/i,
+ /^B\.e$/i,
+ /^Ç\.a$/i,
+ /^Ç\.$/i,
+ /^C\.a$/i,
+ /^C\.$/i,
+ /^Ş\.$/i
+ ],
+ abbreviated: [
+ /^Baz\.e$/i,
+ /^Çər$/i,
+ /^Çər\.a$/i,
+ /^Cüm$/i,
+ /^Cüm\.a$/i,
+ /^Şə$/i
+ ],
+ wide: [
+ /^Bazar$/i,
+ /^Bazar ertəsi$/i,
+ /^Çərşənbə axşamı$/i,
+ /^Çərşənbə$/i,
+ /^Cümə axşamı$/i,
+ /^Cümə$/i,
+ /^Şənbə$/i
+ ],
+ any: [/^B\.$/i, /^B\.e$/i, /^Ç\.a$/i, /^Ç\.$/i, /^C\.a$/i, /^C\.$/i, /^Ş\.$/i]
+}
+
+var matchDayPeriodPatterns = {
+ narrow: /^(a|p|gecəyarı|gün|səhər|gündüz|axşam|gecə)$/i,
+ any: /^(am|pm|a\.m\.|p\.m\.|AM|PM|gecəyarı|gün|səhər|gündüz|axşam|gecə)$/i
+}
+var parseDayPeriodPatterns = {
+ any: {
+ am: /^a$/i,
+ pm: /^p$/i,
+ midnight: /^gecəyarı$/i,
+ noon: /^gün$/i,
+ morning: /səhər$/i,
+ afternoon: /gündüz$/i,
+ evening: /axşam$/i,
+ night: /gecə$/i
+ }
+}
+var match = {
+ ordinalNumber: buildMatchPatternFn({
+ matchPattern: matchOrdinalNumberPattern,
+ parsePattern: parseOrdinalNumberPattern,
+ valueCallback: function(value) {
+ return parseInt(value, 10)
+ }
+ }),
+ era: buildMatchFn({
+ matchPatterns: matchEraPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseEraPatterns,
+ defaultParseWidth: 'any'
+ }),
+ quarter: buildMatchFn({
+ matchPatterns: matchQuarterPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseQuarterPatterns,
+ defaultParseWidth: 'any',
+ valueCallback: function(index) {
+ return index + 1
+ }
+ }),
+ month: buildMatchFn({
+ matchPatterns: matchMonthPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseMonthPatterns,
+ defaultParseWidth: 'any'
+ }),
+ day: buildMatchFn({
+ matchPatterns: matchDayPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseDayPatterns,
+ defaultParseWidth: 'any'
+ }),
+ dayPeriod: buildMatchFn({
+ matchPatterns: matchDayPeriodPatterns,
+ defaultMatchWidth: 'any',
+ parsePatterns: parseDayPeriodPatterns,
+ defaultParseWidth: 'any'
+ })
+}
+export default match
diff --git a/date-fns/src/locale/az/index.d.ts b/date-fns/src/locale/az/index.d.ts
new file mode 100644
index 0000000..b2b2253
--- /dev/null
+++ b/date-fns/src/locale/az/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { az } from 'date-fns/locale'
+export default az
diff --git a/date-fns/src/locale/az/index.js b/date-fns/src/locale/az/index.js
new file mode 100644
index 0000000..20b836a
--- /dev/null
+++ b/date-fns/src/locale/az/index.js
@@ -0,0 +1,28 @@
+import formatDistance from './_lib/formatDistance/index'
+import formatLong from './_lib/formatLong/index'
+import formatRelative from './_lib/formatRelative/index'
+import localize from './_lib/localize/index'
+import match from './_lib/match/index'
+
+/**
+ * @type {Locale}
+ * @category Locales
+ * @summary Azerbaijani locale.
+ * @language Azerbaijani
+ * @iso-639-2 aze
+ */
+
+var locale = {
+ code: 'az',
+ formatDistance: formatDistance,
+ formatLong: formatLong,
+ formatRelative: formatRelative,
+ localize: localize,
+ match: match,
+ options: {
+ weekStartsOn: 1,
+ firstWeekContainsDate: 1
+ }
+}
+
+export default locale
diff --git a/date-fns/src/locale/az/index.js.flow b/date-fns/src/locale/az/index.js.flow
new file mode 100644
index 0000000..b9dfe66
--- /dev/null
+++ b/date-fns/src/locale/az/index.js.flow
@@ -0,0 +1,35 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+declare module.exports: Locale
diff --git a/date-fns/src/locale/az/snapshot.md b/date-fns/src/locale/az/snapshot.md
new file mode 100644
index 0000000..0f84be4
--- /dev/null
+++ b/date-fns/src/locale/az/snapshot.md
@@ -0,0 +1,304 @@
+# Azerbaijani (az) locale
+
+## `format` and `parse`
+
+| Title | Token string | Date | `format` result | `parse` result |
+| ------------------------------- | ------------ | ------------------------ | -------------------------------------------------------- | ------------------------ |
+| Calendar year | yo | 1987-02-11T12:13:14.015Z | 1987-nci | 1987-01-01T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 5-inci | 0005-01-01T00:00:00.000Z |
+| Local week-numbering year | Yo | 1987-02-11T12:13:14.015Z | 1987-nci | 1986-12-29T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 5-inci | 0004-12-27T00:00:00.000Z |
+| Quarter (formatting) | Qo | 2019-01-01T12:13:14.015Z | 1-inci | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2-nci | 2019-04-01T00:00:00.000Z |
+| | QQQ | 2019-01-01T12:13:14.015Z | K1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | K2 | 2019-04-01T00:00:00.000Z |
+| | QQQQ | 2019-01-01T12:13:14.015Z | 1ci kvartal | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2ci kvartal | 2019-04-01T00:00:00.000Z |
+| | QQQQQ | 2019-01-01T12:13:14.015Z | 1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2 | 2019-04-01T00:00:00.000Z |
+| Quarter (stand-alone) | qo | 2019-01-01T12:13:14.015Z | 1-inci | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2-nci | 2019-04-01T00:00:00.000Z |
+| | qqq | 2019-01-01T12:13:14.015Z | K1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | K2 | 2019-04-01T00:00:00.000Z |
+| | qqqq | 2019-01-01T12:13:14.015Z | 1ci kvartal | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2ci kvartal | 2019-04-01T00:00:00.000Z |
+| Month (formatting) | Mo | 2019-02-11T12:13:14.015Z | 2-nci | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7-nci | 2019-07-01T00:00:00.000Z |
+| | MMM | 2019-02-11T12:13:14.015Z | Fev | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | İyul | 2019-07-01T00:00:00.000Z |
+| | MMMM | 2019-02-11T12:13:14.015Z | Fevral | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | İyul | 2019-07-01T00:00:00.000Z |
+| | MMMMM | 2019-02-11T12:13:14.015Z | F | 2019-01-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | I | 2019-01-01T00:00:00.000Z |
+| Month (stand-alone) | Lo | 2019-02-11T12:13:14.015Z | 2-nci | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7-nci | 2019-07-01T00:00:00.000Z |
+| | LLL | 2019-02-11T12:13:14.015Z | Fev | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | İyul | 2019-07-01T00:00:00.000Z |
+| | LLLL | 2019-02-11T12:13:14.015Z | Fevral | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | İyul | 2019-07-01T00:00:00.000Z |
+| | LLLLL | 2019-02-11T12:13:14.015Z | F | 2019-01-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | I | 2019-01-01T00:00:00.000Z |
+| Local week of year | wo | 2019-01-01T12:13:14.015Z | 1-inci | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48-inci | 2019-11-25T00:00:00.000Z |
+| ISO week of year | Io | 2019-01-01T12:13:14.015Z | 1-inci | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48-inci | 2019-11-25T00:00:00.000Z |
+| Day of month | do | 2019-02-11T12:13:14.015Z | 11-inci | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-28T12:13:14.015Z | 28-inci | 2019-02-28T00:00:00.000Z |
+| Day of year | Do | 2019-02-11T12:13:14.015Z | 42-nci | 2019-02-11T00:00:00.000Z |
+| | | 2019-12-31T12:13:14.015Z | 365-inci | 2019-12-31T00:00:00.000Z |
+| Day of week (formatting) | E | 2019-02-11T12:13:14.015Z | Baz.e | 2019-02-17T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Cüm | 2019-02-13T00:00:00.000Z |
+| | EE | 2019-02-11T12:13:14.015Z | Baz.e | 2019-02-17T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Cüm | 2019-02-13T00:00:00.000Z |
+| | EEE | 2019-02-11T12:13:14.015Z | Baz.e | 2019-02-17T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Cüm | 2019-02-13T00:00:00.000Z |
+| | EEEE | 2019-02-11T12:13:14.015Z | Bazar ertəsi | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Cümə | 2019-02-15T00:00:00.000Z |
+| | EEEEE | 2019-02-11T12:13:14.015Z | B.e | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | C. | 2019-02-15T00:00:00.000Z |
+| | EEEEEE | 2019-02-11T12:13:14.015Z | B.e | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | C. | 2019-02-15T00:00:00.000Z |
+| ISO day of week (formatting) | io | 2019-02-11T12:13:14.015Z | 1-inci | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5-inci | 2019-02-15T00:00:00.000Z |
+| | iii | 2019-02-11T12:13:14.015Z | Baz.e | 2019-02-17T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Cüm | 2019-02-13T00:00:00.000Z |
+| | iiii | 2019-02-11T12:13:14.015Z | Bazar ertəsi | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Cümə | 2019-02-15T00:00:00.000Z |
+| | iiiii | 2019-02-11T12:13:14.015Z | B.e | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | C. | 2019-02-15T00:00:00.000Z |
+| | iiiiii | 2019-02-11T12:13:14.015Z | B.e | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | C. | 2019-02-15T00:00:00.000Z |
+| Local day of week (formatting) | eo | 2019-02-11T12:13:14.015Z | 1-inci | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5-inci | 2019-02-15T00:00:00.000Z |
+| | eee | 2019-02-11T12:13:14.015Z | Baz.e | 2019-02-17T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Cüm | 2019-02-13T00:00:00.000Z |
+| | eeee | 2019-02-11T12:13:14.015Z | Bazar ertəsi | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Cümə | 2019-02-15T00:00:00.000Z |
+| | eeeee | 2019-02-11T12:13:14.015Z | B.e | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | C. | 2019-02-15T00:00:00.000Z |
+| | eeeeee | 2019-02-11T12:13:14.015Z | B.e | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | C. | 2019-02-15T00:00:00.000Z |
+| Local day of week (stand-alone) | co | 2019-02-11T12:13:14.015Z | 1-inci | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5-inci | 2019-02-15T00:00:00.000Z |
+| | ccc | 2019-02-11T12:13:14.015Z | Baz.e | 2019-02-17T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Cüm | 2019-02-13T00:00:00.000Z |
+| | cccc | 2019-02-11T12:13:14.015Z | Bazar ertəsi | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Cümə | 2019-02-15T00:00:00.000Z |
+| | ccccc | 2019-02-11T12:13:14.015Z | B.e | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | C. | 2019-02-15T00:00:00.000Z |
+| | cccccc | 2019-02-11T12:13:14.015Z | B.e | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | C. | 2019-02-15T00:00:00.000Z |
+| AM, PM | a | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | aa | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | aaa | 2019-02-11T11:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | pm | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | pm | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | aaaa | 2019-02-11T11:13:14.015Z | a.m. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | p.m. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | p.m. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | a.m. | 2019-02-11T00:00:00.000Z |
+| | aaaaa | 2019-02-11T11:13:14.015Z | a | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | p | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | p | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | a | 2019-02-11T00:00:00.000Z |
+| AM, PM, noon, midnight | b | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | bb | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | bbb | 2019-02-11T11:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | pm | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | pm | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | bbbb | 2019-02-11T11:13:14.015Z | a.m. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | p.m. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | p.m. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | a.m. | 2019-02-11T00:00:00.000Z |
+| | bbbbb | 2019-02-11T11:13:14.015Z | a | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | p | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | p | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | a | 2019-02-11T00:00:00.000Z |
+| Flexible day period | B | 2019-02-11T11:13:14.015Z | səhər | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | gündüz | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | axşam | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | gecə | 2019-02-11T00:00:00.000Z |
+| | BB | 2019-02-11T11:13:14.015Z | səhər | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | gündüz | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | axşam | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | gecə | 2019-02-11T00:00:00.000Z |
+| | BBB | 2019-02-11T11:13:14.015Z | səhər | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | gündüz | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | axşam | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | gecə | 2019-02-11T00:00:00.000Z |
+| | BBBB | 2019-02-11T11:13:14.015Z | səhər | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | gündüz | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | axşam | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | gecə | 2019-02-11T00:00:00.000Z |
+| | BBBBB | 2019-02-11T11:13:14.015Z | səhər | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | gündüz | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | axşam | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | gecə | 2019-02-11T00:00:00.000Z |
+| Hour [1-12] | ho | 2019-02-11T11:13:14.015Z | 11-inci | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11-inci | 2019-02-11T23:00:00.000Z |
+| Hour [0-23] | Ho | 2019-02-11T11:13:14.015Z | 11-inci | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23-üncü | 2019-02-11T23:00:00.000Z |
+| Hour [0-11] | Ko | 2019-02-11T11:13:14.015Z | 11-inci | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11-inci | 2019-02-11T23:00:00.000Z |
+| Hour [1-24] | ko | 2019-02-11T11:13:14.015Z | 11-inci | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23-üncü | 2019-02-11T23:00:00.000Z |
+| Minute | mo | 2019-01-01T12:01:14.015Z | 1-inci | 2019-01-01T12:01:00.000Z |
+| | | 2019-04-01T12:55:14.015Z | 55-inci | 2019-04-01T12:55:00.000Z |
+| Second | so | 2019-01-01T12:13:01.015Z | 1-inci | 2019-01-01T12:13:01.000Z |
+| | | 2019-04-01T12:13:55.015Z | 55-inci | 2019-04-01T12:13:55.000Z |
+| Long localized date | P | 1987-02-11T12:13:14.015Z | 11.02.1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29.05.1453 | 1453-05-29T00:00:00.000Z |
+| | PP | 1987-02-11T12:13:14.015Z | 11 Fev 1987 il | Invalid Date |
+| | | 1453-05-29T23:59:59.999Z | 29 May 1453 il | Invalid Date |
+| | PPP | 1987-02-11T12:13:14.015Z | 11-inci Fevral 1987 il | Invalid Date |
+| | | 1453-05-29T23:59:59.999Z | 29-uncu May 1453 il | Invalid Date |
+| | PPPP | 1987-02-11T12:13:14.015Z | Çərşənbə, 11-inci Fevral 1987 il | Invalid Date |
+| | | 1453-05-29T23:59:59.999Z | Bazar, 29-uncu May 1453 il | Invalid Date |
+| Long localized time | p | 1987-02-11T12:13:14.015Z | 12:13 | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 23:59 | 1453-05-29T23:59:00.000Z |
+| | pp | 1987-02-11T12:13:14.015Z | 12:13:14 | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 | 1453-05-29T23:59:59.000Z |
+| | ppp | 1987-02-11T12:13:14.015Z | 12:13:14 GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 GMT+0 | Errored |
+| | pppp | 1987-02-11T12:13:14.015Z | 12:13:14 GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 GMT+00:00 | Errored |
+| Combination of date and time | Pp | 1987-02-11T12:13:14.015Z | 11.02.1987, 12:13 | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29.05.1453, 23:59 | 1453-05-29T23:59:00.000Z |
+| | PPpp | 1987-02-11T12:13:14.015Z | 11 Fev 1987 il, 12:13:14 | Invalid Date |
+| | | 1453-05-29T23:59:59.999Z | 29 May 1453 il, 23:59:59 | Invalid Date |
+| | PPPppp | 1987-02-11T12:13:14.015Z | 11-inci Fevral 1987 il 12:13:14 GMT+0 - də | Invalid Date |
+| | | 1453-05-29T23:59:59.999Z | 29-uncu May 1453 il 23:59:59 GMT+0 - də | Invalid Date |
+| | PPPPpppp | 1987-02-11T12:13:14.015Z | Çərşənbə, 11-inci Fevral 1987 il 12:13:14 GMT+00:00 - də | Invalid Date |
+| | | 1453-05-29T23:59:59.999Z | Bazar, 29-uncu May 1453 il 23:59:59 GMT+00:00 - də | Invalid Date |
+
+## `formatDistance`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `includeSeconds: true` | `addSuffix: true` |
+| ------------------------ | ---------------- | ---------------------- | ---------------------- |
+| 2006-01-01T00:00:00.000Z | təxminən 6 il | təxminən 6 il | təxminən 6 il əvvəl |
+| 2005-01-01T00:00:00.000Z | təxminən 5 il | təxminən 5 il | təxminən 5 il əvvəl |
+| 2004-01-01T00:00:00.000Z | təxminən 4 il | təxminən 4 il | təxminən 4 il əvvəl |
+| 2003-01-01T00:00:00.000Z | təxminən 3 il | təxminən 3 il | təxminən 3 il əvvəl |
+| 2002-01-01T00:00:00.000Z | təxminən 2 il | təxminən 2 il | təxminən 2 il əvvəl |
+| 2001-06-01T00:00:00.000Z | 1 ildən çox | 1 ildən çox | 1 ildən çox əvvəl |
+| 2001-02-01T00:00:00.000Z | təxminən 1 il | təxminən 1 il | təxminən 1 il əvvəl |
+| 2001-01-01T00:00:00.000Z | təxminən 1 il | təxminən 1 il | təxminən 1 il əvvəl |
+| 2000-06-01T00:00:00.000Z | 5 ay | 5 ay | 5 ay əvvəl |
+| 2000-03-01T00:00:00.000Z | 2 ay | 2 ay | 2 ay əvvəl |
+| 2000-02-01T00:00:00.000Z | təxminən 1 ay | təxminən 1 ay | təxminən 1 ay əvvəl |
+| 2000-01-15T00:00:00.000Z | 14 gün | 14 gün | 14 gün əvvəl |
+| 2000-01-02T00:00:00.000Z | 1 gün | 1 gün | 1 gün əvvəl |
+| 2000-01-01T06:00:00.000Z | təxminən 6 saat | təxminən 6 saat | təxminən 6 saat əvvəl |
+| 2000-01-01T01:00:00.000Z | təxminən 1 saat | təxminən 1 saat | təxminən 1 saat əvvəl |
+| 2000-01-01T00:45:00.000Z | təxminən 1 saat | təxminən 1 saat | təxminən 1 saat əvvəl |
+| 2000-01-01T00:30:00.000Z | 30 dəqiqə | 30 dəqiqə | 30 dəqiqə əvvəl |
+| 2000-01-01T00:15:00.000Z | 15 dəqiqə | 15 dəqiqə | 15 dəqiqə əvvəl |
+| 2000-01-01T00:01:00.000Z | bir dəqiqə | bir dəqiqə | bir dəqiqə əvvəl |
+| 2000-01-01T00:00:25.000Z | bir dəqiqədən az | yarım dəqiqə | bir dəqiqədən az əvvəl |
+| 2000-01-01T00:00:15.000Z | bir dəqiqədən az | 20 bir saniyədən az | bir dəqiqədən az əvvəl |
+| 2000-01-01T00:00:05.000Z | bir dəqiqədən az | 10 bir saniyədən az | bir dəqiqədən az əvvəl |
+| 2000-01-01T00:00:00.000Z | bir dəqiqədən az | 5 bir saniyədən az | bir dəqiqədən az sonra |
+| 1999-12-31T23:59:55.000Z | bir dəqiqədən az | 10 bir saniyədən az | bir dəqiqədən az sonra |
+| 1999-12-31T23:59:45.000Z | bir dəqiqədən az | 20 bir saniyədən az | bir dəqiqədən az sonra |
+| 1999-12-31T23:59:35.000Z | bir dəqiqədən az | yarım dəqiqə | bir dəqiqədən az sonra |
+| 1999-12-31T23:59:00.000Z | bir dəqiqə | bir dəqiqə | bir dəqiqə sonra |
+| 1999-12-31T23:45:00.000Z | 15 dəqiqə | 15 dəqiqə | 15 dəqiqə sonra |
+| 1999-12-31T23:30:00.000Z | 30 dəqiqə | 30 dəqiqə | 30 dəqiqə sonra |
+| 1999-12-31T23:15:00.000Z | təxminən 1 saat | təxminən 1 saat | təxminən 1 saat sonra |
+| 1999-12-31T23:00:00.000Z | təxminən 1 saat | təxminən 1 saat | təxminən 1 saat sonra |
+| 1999-12-31T18:00:00.000Z | təxminən 6 saat | təxminən 6 saat | təxminən 6 saat sonra |
+| 1999-12-30T00:00:00.000Z | 2 gün | 2 gün | 2 gün sonra |
+| 1999-12-15T00:00:00.000Z | 17 gün | 17 gün | 17 gün sonra |
+| 1999-12-01T00:00:00.000Z | təxminən 1 ay | təxminən 1 ay | təxminən 1 ay sonra |
+| 1999-11-01T00:00:00.000Z | 2 ay | 2 ay | 2 ay sonra |
+| 1999-06-01T00:00:00.000Z | 7 ay | 7 ay | 7 ay sonra |
+| 1999-01-01T00:00:00.000Z | təxminən 1 il | təxminən 1 il | təxminən 1 il sonra |
+| 1998-12-01T00:00:00.000Z | təxminən 1 il | təxminən 1 il | təxminən 1 il sonra |
+| 1998-06-01T00:00:00.000Z | 1 ildən çox | 1 ildən çox | 1 ildən çox sonra |
+| 1998-01-01T00:00:00.000Z | təxminən 2 il | təxminən 2 il | təxminən 2 il sonra |
+| 1997-01-01T00:00:00.000Z | təxminən 3 il | təxminən 3 il | təxminən 3 il sonra |
+| 1996-01-01T00:00:00.000Z | təxminən 4 il | təxminən 4 il | təxminən 4 il sonra |
+| 1995-01-01T00:00:00.000Z | təxminən 5 il | təxminən 5 il | təxminən 5 il sonra |
+| 1994-01-01T00:00:00.000Z | təxminən 6 il | təxminən 6 il | təxminən 6 il sonra |
+
+## `formatDistanceStrict`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `addSuffix: true` | With forced unit (i.e. `hour`) |
+| ------------------------ | ---------- | ----------------- | ------------------------------ |
+| 2006-01-01T00:00:00.000Z | 6 il | 6 il əvvəl | 52608 saat |
+| 2005-01-01T00:00:00.000Z | 5 il | 5 il əvvəl | 43848 saat |
+| 2004-01-01T00:00:00.000Z | 4 il | 4 il əvvəl | 35064 saat |
+| 2003-01-01T00:00:00.000Z | 3 il | 3 il əvvəl | 26304 saat |
+| 2002-01-01T00:00:00.000Z | 2 il | 2 il əvvəl | 17544 saat |
+| 2001-06-01T00:00:00.000Z | 1 il | 1 il əvvəl | 12408 saat |
+| 2001-02-01T00:00:00.000Z | 1 il | 1 il əvvəl | 9528 saat |
+| 2001-01-01T00:00:00.000Z | 1 il | 1 il əvvəl | 8784 saat |
+| 2000-06-01T00:00:00.000Z | 5 ay | 5 ay əvvəl | 3648 saat |
+| 2000-03-01T00:00:00.000Z | 2 ay | 2 ay əvvəl | 1440 saat |
+| 2000-02-01T00:00:00.000Z | 1 ay | 1 ay əvvəl | 744 saat |
+| 2000-01-15T00:00:00.000Z | 14 gün | 14 gün əvvəl | 336 saat |
+| 2000-01-02T00:00:00.000Z | 1 gün | 1 gün əvvəl | 24 saat |
+| 2000-01-01T06:00:00.000Z | 6 saat | 6 saat əvvəl | 6 saat |
+| 2000-01-01T01:00:00.000Z | 1 saat | 1 saat əvvəl | 1 saat |
+| 2000-01-01T00:45:00.000Z | 45 dəqiqə | 45 dəqiqə əvvəl | 1 saat |
+| 2000-01-01T00:30:00.000Z | 30 dəqiqə | 30 dəqiqə əvvəl | 1 saat |
+| 2000-01-01T00:15:00.000Z | 15 dəqiqə | 15 dəqiqə əvvəl | 0 saat |
+| 2000-01-01T00:01:00.000Z | bir dəqiqə | bir dəqiqə əvvəl | 0 saat |
+| 2000-01-01T00:00:25.000Z | 25 saniyə | 25 saniyə əvvəl | 0 saat |
+| 2000-01-01T00:00:15.000Z | 15 saniyə | 15 saniyə əvvəl | 0 saat |
+| 2000-01-01T00:00:05.000Z | 5 saniyə | 5 saniyə əvvəl | 0 saat |
+| 2000-01-01T00:00:00.000Z | 0 saniyə | 0 saniyə sonra | 0 saat |
+| 1999-12-31T23:59:55.000Z | 5 saniyə | 5 saniyə sonra | 0 saat |
+| 1999-12-31T23:59:45.000Z | 15 saniyə | 15 saniyə sonra | 0 saat |
+| 1999-12-31T23:59:35.000Z | 25 saniyə | 25 saniyə sonra | 0 saat |
+| 1999-12-31T23:59:00.000Z | bir dəqiqə | bir dəqiqə sonra | 0 saat |
+| 1999-12-31T23:45:00.000Z | 15 dəqiqə | 15 dəqiqə sonra | 0 saat |
+| 1999-12-31T23:30:00.000Z | 30 dəqiqə | 30 dəqiqə sonra | 1 saat |
+| 1999-12-31T23:15:00.000Z | 45 dəqiqə | 45 dəqiqə sonra | 1 saat |
+| 1999-12-31T23:00:00.000Z | 1 saat | 1 saat sonra | 1 saat |
+| 1999-12-31T18:00:00.000Z | 6 saat | 6 saat sonra | 6 saat |
+| 1999-12-30T00:00:00.000Z | 2 gün | 2 gün sonra | 48 saat |
+| 1999-12-15T00:00:00.000Z | 17 gün | 17 gün sonra | 408 saat |
+| 1999-12-01T00:00:00.000Z | 1 ay | 1 ay sonra | 744 saat |
+| 1999-11-01T00:00:00.000Z | 2 ay | 2 ay sonra | 1464 saat |
+| 1999-06-01T00:00:00.000Z | 7 ay | 7 ay sonra | 5136 saat |
+| 1999-01-01T00:00:00.000Z | 1 il | 1 il sonra | 8760 saat |
+| 1998-12-01T00:00:00.000Z | 1 il | 1 il sonra | 9504 saat |
+| 1998-06-01T00:00:00.000Z | 2 il | 2 il sonra | 13896 saat |
+| 1998-01-01T00:00:00.000Z | 2 il | 2 il sonra | 17520 saat |
+| 1997-01-01T00:00:00.000Z | 3 il | 3 il sonra | 26280 saat |
+| 1996-01-01T00:00:00.000Z | 4 il | 4 il sonra | 35064 saat |
+| 1995-01-01T00:00:00.000Z | 5 il | 5 il sonra | 43824 saat |
+| 1994-01-01T00:00:00.000Z | 6 il | 6 il sonra | 52584 saat |
+
+## `formatRelative`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result |
+| ------------------------ | ----------------------------- |
+| 2000-01-10T00:00:00.000Z | 10.01.2000 |
+| 2000-01-05T00:00:00.000Z | Çərşənbə 0:00 -də |
+| 2000-01-02T00:00:00.000Z | sabah 0:00 -də |
+| 2000-01-01T00:00:00.000Z | bugün 0:00 -də |
+| 1999-12-31T00:00:00.000Z | dünən 0:00 -də |
+| 1999-12-27T00:00:00.000Z | sonuncu Bazar ertəsi 0:00 -də |
+| 1999-12-21T00:00:00.000Z | 21.12.1999 |
diff --git a/date-fns/src/locale/be/_lib/formatDistance/index.js b/date-fns/src/locale/be/_lib/formatDistance/index.js
new file mode 100644
index 0000000..b8e33dc
--- /dev/null
+++ b/date-fns/src/locale/be/_lib/formatDistance/index.js
@@ -0,0 +1,257 @@
+function declension(scheme, count) {
+ // scheme for count=1 exists
+ if (scheme.one !== undefined && count === 1) {
+ return scheme.one
+ }
+
+ var rem10 = count % 10
+ var rem100 = count % 100
+
+ // 1, 21, 31, ...
+ if (rem10 === 1 && rem100 !== 11) {
+ return scheme.singularNominative.replace('{{count}}', count)
+
+ // 2, 3, 4, 22, 23, 24, 32 ...
+ } else if (rem10 >= 2 && rem10 <= 4 && (rem100 < 10 || rem100 > 20)) {
+ return scheme.singularGenitive.replace('{{count}}', count)
+
+ // 5, 6, 7, 8, 9, 10, 11, ...
+ } else {
+ return scheme.pluralGenitive.replace('{{count}}', count)
+ }
+}
+
+function buildLocalizeTokenFn(scheme) {
+ return function(count, options) {
+ if (options.addSuffix) {
+ if (options.comparison > 0) {
+ if (scheme.future) {
+ return declension(scheme.future, count)
+ } else {
+ return 'праз ' + declension(scheme.regular, count)
+ }
+ } else {
+ if (scheme.past) {
+ return declension(scheme.past, count)
+ } else {
+ return declension(scheme.regular, count) + ' таму'
+ }
+ }
+ } else {
+ return declension(scheme.regular, count)
+ }
+ }
+}
+
+var formatDistanceLocale = {
+ lessThanXSeconds: buildLocalizeTokenFn({
+ regular: {
+ one: 'менш за секунду',
+ singularNominative: 'менш за {{count}} секунду',
+ singularGenitive: 'менш за {{count}} секунды',
+ pluralGenitive: 'менш за {{count}} секунд'
+ },
+ future: {
+ one: 'менш, чым праз секунду',
+ singularNominative: 'менш, чым праз {{count}} секунду',
+ singularGenitive: 'менш, чым праз {{count}} секунды',
+ pluralGenitive: 'менш, чым праз {{count}} секунд'
+ }
+ }),
+
+ xSeconds: buildLocalizeTokenFn({
+ regular: {
+ singularNominative: '{{count}} секунда',
+ singularGenitive: '{{count}} секунды',
+ pluralGenitive: '{{count}} секунд'
+ },
+ past: {
+ singularNominative: '{{count}} секунду таму',
+ singularGenitive: '{{count}} секунды таму',
+ pluralGenitive: '{{count}} секунд таму'
+ },
+ future: {
+ singularNominative: 'праз {{count}} секунду',
+ singularGenitive: 'праз {{count}} секунды',
+ pluralGenitive: 'праз {{count}} секунд'
+ }
+ }),
+
+ halfAMinute: function(_, options) {
+ if (options.addSuffix) {
+ if (options.comparison > 0) {
+ return 'праз паўхвіліны'
+ } else {
+ return 'паўхвіліны таму'
+ }
+ }
+
+ return 'паўхвіліны'
+ },
+
+ lessThanXMinutes: buildLocalizeTokenFn({
+ regular: {
+ one: 'менш за хвіліну',
+ singularNominative: 'менш за {{count}} хвіліну',
+ singularGenitive: 'менш за {{count}} хвіліны',
+ pluralGenitive: 'менш за {{count}} хвілін'
+ },
+ future: {
+ one: 'менш, чым праз хвіліну',
+ singularNominative: 'менш, чым праз {{count}} хвіліну',
+ singularGenitive: 'менш, чым праз {{count}} хвіліны',
+ pluralGenitive: 'менш, чым праз {{count}} хвілін'
+ }
+ }),
+
+ xMinutes: buildLocalizeTokenFn({
+ regular: {
+ singularNominative: '{{count}} хвіліна',
+ singularGenitive: '{{count}} хвіліны',
+ pluralGenitive: '{{count}} хвілін'
+ },
+ past: {
+ singularNominative: '{{count}} хвіліну таму',
+ singularGenitive: '{{count}} хвіліны таму',
+ pluralGenitive: '{{count}} хвілін таму'
+ },
+ future: {
+ singularNominative: 'праз {{count}} хвіліну',
+ singularGenitive: 'праз {{count}} хвіліны',
+ pluralGenitive: 'праз {{count}} хвілін'
+ }
+ }),
+
+ aboutXHours: buildLocalizeTokenFn({
+ regular: {
+ singularNominative: 'каля {{count}} гадзіны',
+ singularGenitive: 'каля {{count}} гадзін',
+ pluralGenitive: 'каля {{count}} гадзін'
+ },
+ future: {
+ singularNominative: 'прыблізна праз {{count}} гадзіну',
+ singularGenitive: 'прыблізна праз {{count}} гадзіны',
+ pluralGenitive: 'прыблізна праз {{count}} гадзін'
+ }
+ }),
+
+ xHours: buildLocalizeTokenFn({
+ regular: {
+ singularNominative: '{{count}} гадзіна',
+ singularGenitive: '{{count}} гадзіны',
+ pluralGenitive: '{{count}} гадзін'
+ },
+ past: {
+ singularNominative: '{{count}} гадзіну таму',
+ singularGenitive: '{{count}} гадзіны таму',
+ pluralGenitive: '{{count}} гадзін таму'
+ },
+ future: {
+ singularNominative: 'праз {{count}} гадзіну',
+ singularGenitive: 'праз {{count}} гадзіны',
+ pluralGenitive: 'праз {{count}} гадзін'
+ }
+ }),
+
+ xDays: buildLocalizeTokenFn({
+ regular: {
+ singularNominative: '{{count}} дзень',
+ singularGenitive: '{{count}} дні',
+ pluralGenitive: '{{count}} дзён'
+ }
+ }),
+
+ aboutXWeeks: buildLocalizeTokenFn({
+ regular: {
+ singularNominative: 'каля {{count}} месяца', // TODO
+ singularGenitive: 'каля {{count}} месяцаў', // TODO
+ pluralGenitive: 'каля {{count}} месяцаў' // TODO
+ },
+ future: {
+ singularNominative: 'прыблізна праз {{count}} месяц', // TODO
+ singularGenitive: 'прыблізна праз {{count}} месяцы', // TODO
+ pluralGenitive: 'прыблізна праз {{count}} месяцаў' // TODO
+ }
+ }),
+
+ xWeeks: buildLocalizeTokenFn({
+ regular: {
+ singularNominative: '{{count}} месяц',
+ singularGenitive: '{{count}} месяцы',
+ pluralGenitive: '{{count}} месяцаў'
+ }
+ }),
+
+ aboutXMonths: buildLocalizeTokenFn({
+ regular: {
+ singularNominative: 'каля {{count}} месяца',
+ singularGenitive: 'каля {{count}} месяцаў',
+ pluralGenitive: 'каля {{count}} месяцаў'
+ },
+ future: {
+ singularNominative: 'прыблізна праз {{count}} месяц',
+ singularGenitive: 'прыблізна праз {{count}} месяцы',
+ pluralGenitive: 'прыблізна праз {{count}} месяцаў'
+ }
+ }),
+
+ xMonths: buildLocalizeTokenFn({
+ regular: {
+ singularNominative: '{{count}} месяц',
+ singularGenitive: '{{count}} месяцы',
+ pluralGenitive: '{{count}} месяцаў'
+ }
+ }),
+
+ aboutXYears: buildLocalizeTokenFn({
+ regular: {
+ singularNominative: 'каля {{count}} года',
+ singularGenitive: 'каля {{count}} гадоў',
+ pluralGenitive: 'каля {{count}} гадоў'
+ },
+ future: {
+ singularNominative: 'прыблізна праз {{count}} год',
+ singularGenitive: 'прыблізна праз {{count}} гады',
+ pluralGenitive: 'прыблізна праз {{count}} гадоў'
+ }
+ }),
+
+ xYears: buildLocalizeTokenFn({
+ regular: {
+ singularNominative: '{{count}} год',
+ singularGenitive: '{{count}} гады',
+ pluralGenitive: '{{count}} гадоў'
+ }
+ }),
+
+ overXYears: buildLocalizeTokenFn({
+ regular: {
+ singularNominative: 'больш за {{count}} год',
+ singularGenitive: 'больш за {{count}} гады',
+ pluralGenitive: 'больш за {{count}} гадоў'
+ },
+ future: {
+ singularNominative: 'больш, чым праз {{count}} год',
+ singularGenitive: 'больш, чым праз {{count}} гады',
+ pluralGenitive: 'больш, чым праз {{count}} гадоў'
+ }
+ }),
+
+ almostXYears: buildLocalizeTokenFn({
+ regular: {
+ singularNominative: 'амаль {{count}} год',
+ singularGenitive: 'амаль {{count}} гады',
+ pluralGenitive: 'амаль {{count}} гадоў'
+ },
+ future: {
+ singularNominative: 'амаль праз {{count}} год',
+ singularGenitive: 'амаль праз {{count}} гады',
+ pluralGenitive: 'амаль праз {{count}} гадоў'
+ }
+ })
+}
+
+export default function formatDistance(token, count, options) {
+ options = options || {}
+ return formatDistanceLocale[token](count, options)
+}
diff --git a/date-fns/src/locale/be/_lib/formatLong/index.js b/date-fns/src/locale/be/_lib/formatLong/index.js
new file mode 100644
index 0000000..e3ac8dd
--- /dev/null
+++ b/date-fns/src/locale/be/_lib/formatLong/index.js
@@ -0,0 +1,38 @@
+import buildFormatLongFn from '../../../_lib/buildFormatLongFn/index'
+
+var dateFormats = {
+ full: "EEEE, d MMMM y 'г.'",
+ long: "d MMMM y 'г.'",
+ medium: "d MMM y 'г.'",
+ short: 'dd.MM.y'
+}
+
+var timeFormats = {
+ full: 'H:mm:ss zzzz',
+ long: 'H:mm:ss z',
+ medium: 'H:mm:ss',
+ short: 'H:mm'
+}
+
+var dateTimeFormats = {
+ any: '{{date}}, {{time}}'
+}
+
+var formatLong = {
+ date: buildFormatLongFn({
+ formats: dateFormats,
+ defaultWidth: 'full'
+ }),
+
+ time: buildFormatLongFn({
+ formats: timeFormats,
+ defaultWidth: 'full'
+ }),
+
+ dateTime: buildFormatLongFn({
+ formats: dateTimeFormats,
+ defaultWidth: 'any'
+ })
+}
+
+export default formatLong
diff --git a/date-fns/src/locale/be/_lib/formatRelative/index.js b/date-fns/src/locale/be/_lib/formatRelative/index.js
new file mode 100644
index 0000000..5e2643c
--- /dev/null
+++ b/date-fns/src/locale/be/_lib/formatRelative/index.js
@@ -0,0 +1,82 @@
+import isSameUTCWeek from '../../../../_lib/isSameUTCWeek/index'
+
+var accusativeWeekdays = [
+ 'нядзелю',
+ 'панядзелак',
+ 'аўторак',
+ 'сераду',
+ 'чацвер',
+ 'пятніцу',
+ 'суботу'
+]
+
+function lastWeek(day) {
+ var weekday = accusativeWeekdays[day]
+
+ switch (day) {
+ case 0:
+ case 3:
+ case 5:
+ case 6:
+ return "'у мінулую " + weekday + " а' p"
+ case 1:
+ case 2:
+ case 4:
+ return "'у мінулы " + weekday + " а' p"
+ }
+}
+
+function thisWeek(day) {
+ var weekday = accusativeWeekdays[day]
+
+ return "'у " + weekday + " а' p"
+}
+
+function nextWeek(day) {
+ var weekday = accusativeWeekdays[day]
+
+ switch (day) {
+ case 0:
+ case 3:
+ case 5:
+ case 6:
+ return "'у наступную " + weekday + " а' p"
+ case 1:
+ case 2:
+ case 4:
+ return "'у наступны " + weekday + " а' p"
+ }
+}
+
+var formatRelativeLocale = {
+ lastWeek: function(date, baseDate, options) {
+ var day = date.getUTCDay()
+ if (isSameUTCWeek(date, baseDate, options)) {
+ return thisWeek(day)
+ } else {
+ return lastWeek(day)
+ }
+ },
+ yesterday: "'учора а' p",
+ today: "'сёння а' p",
+ tomorrow: "'заўтра а' p",
+ nextWeek: function(date, baseDate, options) {
+ var day = date.getUTCDay()
+ if (isSameUTCWeek(date, baseDate, options)) {
+ return thisWeek(day)
+ } else {
+ return nextWeek(day)
+ }
+ },
+ other: 'P'
+}
+
+export default function formatRelative(token, date, baseDate, options) {
+ var format = formatRelativeLocale[token]
+
+ if (typeof format === 'function') {
+ return format(date, baseDate, options)
+ }
+
+ return format
+}
diff --git a/date-fns/src/locale/be/_lib/localize/index.js b/date-fns/src/locale/be/_lib/localize/index.js
new file mode 100644
index 0000000..caeb8b0
--- /dev/null
+++ b/date-fns/src/locale/be/_lib/localize/index.js
@@ -0,0 +1,227 @@
+import buildLocalizeFn from '../../../_lib/buildLocalizeFn/index'
+
+var eraValues = {
+ narrow: ['да н.э.', 'н.э.'],
+ abbreviated: ['да н. э.', 'н. э.'],
+ wide: ['да нашай эры', 'нашай эры']
+}
+
+var quarterValues = {
+ narrow: ['1', '2', '3', '4'],
+ abbreviated: ['1-ы кв.', '2-і кв.', '3-і кв.', '4-ы кв.'],
+ wide: ['1-ы квартал', '2-і квартал', '3-і квартал', '4-ы квартал']
+}
+
+var monthValues = {
+ narrow: ['С', 'Л', 'С', 'К', 'М', 'Ч', 'Л', 'Ж', 'В', 'К', 'Л', 'С'],
+ abbreviated: [
+ 'студз.',
+ 'лют.',
+ 'сак.',
+ 'крас.',
+ 'май',
+ 'чэрв.',
+ 'ліп.',
+ 'жн.',
+ 'вер.',
+ 'кастр.',
+ 'ліст.',
+ 'снеж.'
+ ],
+ wide: [
+ 'студзень',
+ 'люты',
+ 'сакавік',
+ 'красавік',
+ 'май',
+ 'чэрвень',
+ 'ліпень',
+ 'жнівень',
+ 'верасень',
+ 'кастрычнік',
+ 'лістапад',
+ 'снежань'
+ ]
+}
+var formattingMonthValues = {
+ narrow: ['С', 'Л', 'С', 'К', 'М', 'Ч', 'Л', 'Ж', 'В', 'К', 'Л', 'С'],
+ abbreviated: [
+ 'студз.',
+ 'лют.',
+ 'сак.',
+ 'крас.',
+ 'мая',
+ 'чэрв.',
+ 'ліп.',
+ 'жн.',
+ 'вер.',
+ 'кастр.',
+ 'ліст.',
+ 'снеж.'
+ ],
+ wide: [
+ 'студзеня',
+ 'лютага',
+ 'сакавіка',
+ 'красавіка',
+ 'мая',
+ 'чэрвеня',
+ 'ліпеня',
+ 'жніўня',
+ 'верасня',
+ 'кастрычніка',
+ 'лістапада',
+ 'снежня'
+ ]
+}
+
+var dayValues = {
+ narrow: ['Н', 'П', 'А', 'С', 'Ч', 'П', 'С'],
+ short: ['нд', 'пн', 'аў', 'ср', 'чц', 'пт', 'сб'],
+ abbreviated: ['нядз', 'пан', 'аўт', 'сер', 'чац', 'пят', 'суб'],
+ wide: [
+ 'нядзеля',
+ 'панядзелак',
+ 'аўторак',
+ 'серада',
+ 'чацвер',
+ 'пятніца',
+ 'субота'
+ ]
+}
+
+var dayPeriodValues = {
+ narrow: {
+ am: 'ДП',
+ pm: 'ПП',
+ midnight: 'поўн.',
+ noon: 'поўд.',
+ morning: 'ран.',
+ afternoon: 'дзень',
+ evening: 'веч.',
+ night: 'ноч'
+ },
+ abbreviated: {
+ am: 'ДП',
+ pm: 'ПП',
+ midnight: 'поўн.',
+ noon: 'поўд.',
+ morning: 'ран.',
+ afternoon: 'дзень',
+ evening: 'веч.',
+ night: 'ноч'
+ },
+ wide: {
+ am: 'ДП',
+ pm: 'ПП',
+ midnight: 'поўнач',
+ noon: 'поўдзень',
+ morning: 'раніца',
+ afternoon: 'дзень',
+ evening: 'вечар',
+ night: 'ноч'
+ }
+}
+var formattingDayPeriodValues = {
+ narrow: {
+ am: 'ДП',
+ pm: 'ПП',
+ midnight: 'поўн.',
+ noon: 'поўд.',
+ morning: 'ран.',
+ afternoon: 'дня',
+ evening: 'веч.',
+ night: 'ночы'
+ },
+ abbreviated: {
+ am: 'ДП',
+ pm: 'ПП',
+ midnight: 'поўн.',
+ noon: 'поўд.',
+ morning: 'ран.',
+ afternoon: 'дня',
+ evening: 'веч.',
+ night: 'ночы'
+ },
+ wide: {
+ am: 'ДП',
+ pm: 'ПП',
+ midnight: 'поўнач',
+ noon: 'поўдзень',
+ morning: 'раніцы',
+ afternoon: 'дня',
+ evening: 'вечара',
+ night: 'ночы'
+ }
+}
+
+function ordinalNumber(dirtyNumber, dirtyOptions) {
+ var options = dirtyOptions || {}
+ var unit = String(options.unit)
+ var number = Number(dirtyNumber)
+ var suffix
+
+ /** Though it's an incorrect ordinal form of a date we use it here for consistency with other similar locales (ru, uk)
+ * For date-month combinations should be used `d` formatter.
+ * Correct: `d MMMM` (4 верасня)
+ * Incorrect: `do MMMM` (4-га верасня)
+ *
+ * But following the consistency leads to mistakes for literal uses of `do` formatter (ordinal day of month).
+ * So for phrase "5th day of month" (`do дзень месяца`)
+ * library will produce: `5-га дзень месяца`
+ * but correct spelling should be: `5-ы дзень месяца`
+ *
+ * So I guess there should be a stand-alone and a formatting version of "day of month" formatters
+ */
+ if (unit === 'date') {
+ suffix = '-га'
+ } else if (unit === 'hour' || unit === 'minute' || unit === 'second') {
+ suffix = '-я'
+ } else {
+ suffix =
+ (number % 10 === 2 || number % 10 === 3) &&
+ (number % 100 !== 12 && number % 100 !== 13)
+ ? '-і'
+ : '-ы'
+ }
+
+ return number + suffix
+}
+
+var localize = {
+ ordinalNumber: ordinalNumber,
+
+ era: buildLocalizeFn({
+ values: eraValues,
+ defaultWidth: 'wide'
+ }),
+
+ quarter: buildLocalizeFn({
+ values: quarterValues,
+ defaultWidth: 'wide',
+ argumentCallback: function(quarter) {
+ return Number(quarter) - 1
+ }
+ }),
+
+ month: buildLocalizeFn({
+ values: monthValues,
+ defaultWidth: 'wide',
+ formattingValues: formattingMonthValues,
+ defaultFormattingWidth: 'wide'
+ }),
+
+ day: buildLocalizeFn({
+ values: dayValues,
+ defaultWidth: 'wide'
+ }),
+
+ dayPeriod: buildLocalizeFn({
+ values: dayPeriodValues,
+ defaultWidth: 'any',
+ formattingValues: formattingDayPeriodValues,
+ defaultFormattingWidth: 'wide'
+ })
+}
+
+export default localize
diff --git a/date-fns/src/locale/be/_lib/match/index.js b/date-fns/src/locale/be/_lib/match/index.js
new file mode 100644
index 0000000..bb59653
--- /dev/null
+++ b/date-fns/src/locale/be/_lib/match/index.js
@@ -0,0 +1,138 @@
+import buildMatchPatternFn from '../../../_lib/buildMatchPatternFn/index'
+import buildMatchFn from '../../../_lib/buildMatchFn/index'
+
+var matchOrdinalNumberPattern = /^(\d+)(-?(е|я|га|і|ы|ае|ая|яя|шы|гі|ці|ты|мы))?/i
+var parseOrdinalNumberPattern = /\d+/i
+
+var matchEraPatterns = {
+ narrow: /^((да )?н\.?\s?э\.?)/i,
+ abbreviated: /^((да )?н\.?\s?э\.?)/i,
+ wide: /^(да нашай эры|нашай эры|наша эра)/i
+}
+var parseEraPatterns = {
+ any: [/^д/i, /^н/i]
+}
+
+var matchQuarterPatterns = {
+ narrow: /^[1234]/i,
+ abbreviated: /^[1234](-?[ыі]?)? кв.?/i,
+ wide: /^[1234](-?[ыі]?)? квартал/i
+}
+var parseQuarterPatterns = {
+ any: [/1/i, /2/i, /3/i, /4/i]
+}
+
+var matchMonthPatterns = {
+ narrow: /^[слкмчжв]/i,
+ abbreviated: /^(студз|лют|сак|крас|ма[йя]|чэрв|ліп|жн|вер|кастр|ліст|снеж)\.?/i,
+ wide: /^(студзен[ья]|лют(ы|ага)|сакавіка?|красавіка?|ма[йя]|чэрвен[ья]|ліпен[ья]|жні(вень|ўня)|верас(ень|ня)|кастрычніка?|лістапада?|снеж(ань|ня))/i
+}
+var parseMonthPatterns = {
+ narrow: [
+ /^с/i,
+ /^л/i,
+ /^с/i,
+ /^к/i,
+ /^м/i,
+ /^ч/i,
+ /^л/i,
+ /^ж/i,
+ /^в/i,
+ /^к/i,
+ /^л/i,
+ /^с/i
+ ],
+ any: [
+ /^ст/i,
+ /^лю/i,
+ /^са/i,
+ /^кр/i,
+ /^ма/i,
+ /^ч/i,
+ /^ліп/i,
+ /^ж/i,
+ /^в/i,
+ /^ка/i,
+ /^ліс/i,
+ /^сн/i
+ ]
+}
+
+var matchDayPatterns = {
+ narrow: /^[нпасч]/i,
+ short: /^(нд|ня|пн|па|аў|ат|ср|се|чц|ча|пт|пя|сб|су)\.?/i,
+ abbreviated: /^(нядз?|ндз|пнд|пан|аўт|срд|сер|чцв|чац|птн|пят|суб).?/i,
+ wide: /^(нядзел[яі]|панядзел(ак|ка)|аўтор(ак|ка)|серад[аы]|чацв(ер|ярга)|пятніц[аы]|субот[аы])/i
+}
+var parseDayPatterns = {
+ narrow: [/^н/i, /^п/i, /^а/i, /^с/i, /^ч/i, /^п/i, /^с/i],
+ any: [/^н/i, /^п[ан]/i, /^а/i, /^с[ер]/i, /^ч/i, /^п[ят]/i, /^с[уб]/i]
+}
+
+var matchDayPeriodPatterns = {
+ narrow: /^([дп]п|поўн\.?|поўд\.?|ран\.?|дзень|дня|веч\.?|ночы?)/i,
+ abbreviated: /^([дп]п|поўн\.?|поўд\.?|ран\.?|дзень|дня|веч\.?|ночы?)/i,
+ wide: /^([дп]п|поўнач|поўдзень|раніц[аы]|дзень|дня|вечара?|ночы?)/i
+}
+var parseDayPeriodPatterns = {
+ any: {
+ am: /^дп/i,
+ pm: /^пп/i,
+ midnight: /^поўн/i,
+ noon: /^поўд/i,
+ morning: /^р/i,
+ afternoon: /^д[зн]/i,
+ evening: /^в/i,
+ night: /^н/i
+ }
+}
+
+var match = {
+ ordinalNumber: buildMatchPatternFn({
+ matchPattern: matchOrdinalNumberPattern,
+ parsePattern: parseOrdinalNumberPattern,
+ valueCallback: function(value) {
+ return parseInt(value, 10)
+ }
+ }),
+
+ era: buildMatchFn({
+ matchPatterns: matchEraPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseEraPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ quarter: buildMatchFn({
+ matchPatterns: matchQuarterPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseQuarterPatterns,
+ defaultParseWidth: 'any',
+ valueCallback: function(index) {
+ return index + 1
+ }
+ }),
+
+ month: buildMatchFn({
+ matchPatterns: matchMonthPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseMonthPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ day: buildMatchFn({
+ matchPatterns: matchDayPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseDayPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ dayPeriod: buildMatchFn({
+ matchPatterns: matchDayPeriodPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseDayPeriodPatterns,
+ defaultParseWidth: 'any'
+ })
+}
+
+export default match
diff --git a/date-fns/src/locale/be/index.d.ts b/date-fns/src/locale/be/index.d.ts
new file mode 100644
index 0000000..d3cec40
--- /dev/null
+++ b/date-fns/src/locale/be/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { be } from 'date-fns/locale'
+export default be
diff --git a/date-fns/src/locale/be/index.js b/date-fns/src/locale/be/index.js
new file mode 100644
index 0000000..f35ef2b
--- /dev/null
+++ b/date-fns/src/locale/be/index.js
@@ -0,0 +1,29 @@
+import formatDistance from './_lib/formatDistance/index'
+import formatLong from './_lib/formatLong/index'
+import formatRelative from './_lib/formatRelative/index'
+import localize from './_lib/localize/index'
+import match from './_lib/match/index'
+
+/**
+ * @type {Locale}
+ * @category Locales
+ * @summary Belarusian locale.
+ * @language Belarusian
+ * @iso-639-2 bel
+ * @author Kiryl Anokhin [@alyrik]{@link https://github.com/alyrik}
+ * @author Martin Wind [@arvigeus]{@link https://github.com/mawi12345}
+ */
+var locale = {
+ code: 'be',
+ formatDistance: formatDistance,
+ formatLong: formatLong,
+ formatRelative: formatRelative,
+ localize: localize,
+ match: match,
+ options: {
+ weekStartsOn: 1 /* Monday */,
+ firstWeekContainsDate: 1
+ }
+}
+
+export default locale
diff --git a/date-fns/src/locale/be/index.js.flow b/date-fns/src/locale/be/index.js.flow
new file mode 100644
index 0000000..b9dfe66
--- /dev/null
+++ b/date-fns/src/locale/be/index.js.flow
@@ -0,0 +1,35 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+declare module.exports: Locale
diff --git a/date-fns/src/locale/be/snapshot.md b/date-fns/src/locale/be/snapshot.md
new file mode 100644
index 0000000..f4f60b7
--- /dev/null
+++ b/date-fns/src/locale/be/snapshot.md
@@ -0,0 +1,304 @@
+# Belarusian (be) locale
+
+## `format` and `parse`
+
+| Title | Token string | Date | `format` result | `parse` result |
+| ------------------------------- | ------------ | ------------------------ | --------------------------------------------- | ------------------------ |
+| Calendar year | yo | 1987-02-11T12:13:14.015Z | 1987-ы | 1987-01-01T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 5-ы | 0005-01-01T00:00:00.000Z |
+| Local week-numbering year | Yo | 1987-02-11T12:13:14.015Z | 1987-ы | 1986-12-29T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 5-ы | 0004-12-27T00:00:00.000Z |
+| Quarter (formatting) | Qo | 2019-01-01T12:13:14.015Z | 1-ы | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2-і | 2019-04-01T00:00:00.000Z |
+| | QQQ | 2019-01-01T12:13:14.015Z | 1-ы кв. | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2-і кв. | 2019-04-01T00:00:00.000Z |
+| | QQQQ | 2019-01-01T12:13:14.015Z | 1-ы квартал | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2-і квартал | 2019-04-01T00:00:00.000Z |
+| | QQQQQ | 2019-01-01T12:13:14.015Z | 1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2 | 2019-04-01T00:00:00.000Z |
+| Quarter (stand-alone) | qo | 2019-01-01T12:13:14.015Z | 1-ы | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2-і | 2019-04-01T00:00:00.000Z |
+| | qqq | 2019-01-01T12:13:14.015Z | 1-ы кв. | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2-і кв. | 2019-04-01T00:00:00.000Z |
+| | qqqq | 2019-01-01T12:13:14.015Z | 1-ы квартал | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2-і квартал | 2019-04-01T00:00:00.000Z |
+| Month (formatting) | Mo | 2019-02-11T12:13:14.015Z | 2-і | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7-ы | 2019-07-01T00:00:00.000Z |
+| | MMM | 2019-02-11T12:13:14.015Z | лют. | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | ліп. | 2019-07-01T00:00:00.000Z |
+| | MMMM | 2019-02-11T12:13:14.015Z | лютага | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | ліпеня | 2019-07-01T00:00:00.000Z |
+| | MMMMM | 2019-02-11T12:13:14.015Z | Л | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | Л | 2019-02-01T00:00:00.000Z |
+| Month (stand-alone) | Lo | 2019-02-11T12:13:14.015Z | 2-і | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7-ы | 2019-07-01T00:00:00.000Z |
+| | LLL | 2019-02-11T12:13:14.015Z | лют. | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | ліп. | 2019-07-01T00:00:00.000Z |
+| | LLLL | 2019-02-11T12:13:14.015Z | люты | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | ліпень | 2019-07-01T00:00:00.000Z |
+| | LLLLL | 2019-02-11T12:13:14.015Z | Л | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | Л | 2019-02-01T00:00:00.000Z |
+| Local week of year | wo | 2019-01-01T12:13:14.015Z | 1-ы | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48-ы | 2019-11-25T00:00:00.000Z |
+| ISO week of year | Io | 2019-01-01T12:13:14.015Z | 1-ы | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48-ы | 2019-11-25T00:00:00.000Z |
+| Day of month | do | 2019-02-11T12:13:14.015Z | 11-га | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-28T12:13:14.015Z | 28-га | 2019-02-28T00:00:00.000Z |
+| Day of year | Do | 2019-02-11T12:13:14.015Z | 42-і | 2019-02-11T00:00:00.000Z |
+| | | 2019-12-31T12:13:14.015Z | 365-ы | 2019-12-31T00:00:00.000Z |
+| Day of week (formatting) | E | 2019-02-11T12:13:14.015Z | пан | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | пят | 2019-02-15T00:00:00.000Z |
+| | EE | 2019-02-11T12:13:14.015Z | пан | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | пят | 2019-02-15T00:00:00.000Z |
+| | EEE | 2019-02-11T12:13:14.015Z | пан | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | пят | 2019-02-15T00:00:00.000Z |
+| | EEEE | 2019-02-11T12:13:14.015Z | панядзелак | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | пятніца | 2019-02-15T00:00:00.000Z |
+| | EEEEE | 2019-02-11T12:13:14.015Z | П | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | П | 2019-02-11T00:00:00.000Z |
+| | EEEEEE | 2019-02-11T12:13:14.015Z | пн | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | пт | 2019-02-15T00:00:00.000Z |
+| ISO day of week (formatting) | io | 2019-02-11T12:13:14.015Z | 1-ы | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5-ы | 2019-02-15T00:00:00.000Z |
+| | iii | 2019-02-11T12:13:14.015Z | пан | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | пят | 2019-02-15T00:00:00.000Z |
+| | iiii | 2019-02-11T12:13:14.015Z | панядзелак | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | пятніца | 2019-02-15T00:00:00.000Z |
+| | iiiii | 2019-02-11T12:13:14.015Z | П | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | П | 2019-02-11T00:00:00.000Z |
+| | iiiiii | 2019-02-11T12:13:14.015Z | пн | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | пт | 2019-02-15T00:00:00.000Z |
+| Local day of week (formatting) | eo | 2019-02-11T12:13:14.015Z | 1-ы | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5-ы | 2019-02-15T00:00:00.000Z |
+| | eee | 2019-02-11T12:13:14.015Z | пан | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | пят | 2019-02-15T00:00:00.000Z |
+| | eeee | 2019-02-11T12:13:14.015Z | панядзелак | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | пятніца | 2019-02-15T00:00:00.000Z |
+| | eeeee | 2019-02-11T12:13:14.015Z | П | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | П | 2019-02-11T00:00:00.000Z |
+| | eeeeee | 2019-02-11T12:13:14.015Z | пн | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | пт | 2019-02-15T00:00:00.000Z |
+| Local day of week (stand-alone) | co | 2019-02-11T12:13:14.015Z | 1-ы | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5-ы | 2019-02-15T00:00:00.000Z |
+| | ccc | 2019-02-11T12:13:14.015Z | пан | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | пят | 2019-02-15T00:00:00.000Z |
+| | cccc | 2019-02-11T12:13:14.015Z | панядзелак | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | пятніца | 2019-02-15T00:00:00.000Z |
+| | ccccc | 2019-02-11T12:13:14.015Z | П | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | П | 2019-02-11T00:00:00.000Z |
+| | cccccc | 2019-02-11T12:13:14.015Z | пн | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | пт | 2019-02-15T00:00:00.000Z |
+| AM, PM | a | 2019-02-11T11:13:14.015Z | ДП | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | ПП | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | ПП | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ДП | 2019-02-11T00:00:00.000Z |
+| | aa | 2019-02-11T11:13:14.015Z | ДП | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | ПП | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | ПП | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ДП | 2019-02-11T00:00:00.000Z |
+| | aaa | 2019-02-11T11:13:14.015Z | дп | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | пп | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | пп | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | дп | 2019-02-11T00:00:00.000Z |
+| | aaaa | 2019-02-11T11:13:14.015Z | ДП | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | ПП | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | ПП | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ДП | 2019-02-11T00:00:00.000Z |
+| | aaaaa | 2019-02-11T11:13:14.015Z | ДП | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | ПП | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | ПП | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ДП | 2019-02-11T00:00:00.000Z |
+| AM, PM, noon, midnight | b | 2019-02-11T11:13:14.015Z | ДП | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | ПП | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | ПП | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ДП | 2019-02-11T00:00:00.000Z |
+| | bb | 2019-02-11T11:13:14.015Z | ДП | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | ПП | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | ПП | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ДП | 2019-02-11T00:00:00.000Z |
+| | bbb | 2019-02-11T11:13:14.015Z | дп | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | пп | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | пп | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | дп | 2019-02-11T00:00:00.000Z |
+| | bbbb | 2019-02-11T11:13:14.015Z | ДП | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | ПП | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | ПП | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ДП | 2019-02-11T00:00:00.000Z |
+| | bbbbb | 2019-02-11T11:13:14.015Z | ДП | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | ПП | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | ПП | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ДП | 2019-02-11T00:00:00.000Z |
+| Flexible day period | B | 2019-02-11T11:13:14.015Z | ран. | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | дня | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | веч. | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ночы | 2019-02-11T00:00:00.000Z |
+| | BB | 2019-02-11T11:13:14.015Z | ран. | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | дня | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | веч. | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ночы | 2019-02-11T00:00:00.000Z |
+| | BBB | 2019-02-11T11:13:14.015Z | ран. | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | дня | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | веч. | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ночы | 2019-02-11T00:00:00.000Z |
+| | BBBB | 2019-02-11T11:13:14.015Z | раніцы | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | дня | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | вечара | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ночы | 2019-02-11T00:00:00.000Z |
+| | BBBBB | 2019-02-11T11:13:14.015Z | ран. | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | дня | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | веч. | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ночы | 2019-02-11T00:00:00.000Z |
+| Hour [1-12] | ho | 2019-02-11T11:13:14.015Z | 11-я | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11-я | 2019-02-11T23:00:00.000Z |
+| Hour [0-23] | Ho | 2019-02-11T11:13:14.015Z | 11-я | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23-я | 2019-02-11T23:00:00.000Z |
+| Hour [0-11] | Ko | 2019-02-11T11:13:14.015Z | 11-я | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11-я | 2019-02-11T23:00:00.000Z |
+| Hour [1-24] | ko | 2019-02-11T11:13:14.015Z | 11-я | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23-я | 2019-02-11T23:00:00.000Z |
+| Minute | mo | 2019-01-01T12:01:14.015Z | 1-я | 2019-01-01T12:01:00.000Z |
+| | | 2019-04-01T12:55:14.015Z | 55-я | 2019-04-01T12:55:00.000Z |
+| Second | so | 2019-01-01T12:13:01.015Z | 1-я | 2019-01-01T12:13:01.000Z |
+| | | 2019-04-01T12:13:55.015Z | 55-я | 2019-04-01T12:13:55.000Z |
+| Long localized date | P | 1987-02-11T12:13:14.015Z | 11.02.1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29.05.1453 | 1453-05-29T00:00:00.000Z |
+| | PP | 1987-02-11T12:13:14.015Z | 11 лют. 1987 г. | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 мая 1453 г. | 1453-05-29T00:00:00.000Z |
+| | PPP | 1987-02-11T12:13:14.015Z | 11 лютага 1987 г. | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 мая 1453 г. | 1453-05-29T00:00:00.000Z |
+| | PPPP | 1987-02-11T12:13:14.015Z | серада, 11 лютага 1987 г. | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | нядзеля, 29 мая 1453 г. | 1453-05-29T00:00:00.000Z |
+| Long localized time | p | 1987-02-11T12:13:14.015Z | 12:13 | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 23:59 | 1453-05-29T23:59:00.000Z |
+| | pp | 1987-02-11T12:13:14.015Z | 12:13:14 | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 | 1453-05-29T23:59:59.000Z |
+| | ppp | 1987-02-11T12:13:14.015Z | 12:13:14 GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 GMT+0 | Errored |
+| | pppp | 1987-02-11T12:13:14.015Z | 12:13:14 GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 GMT+00:00 | Errored |
+| Combination of date and time | Pp | 1987-02-11T12:13:14.015Z | 11.02.1987, 12:13 | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29.05.1453, 23:59 | 1453-05-29T23:59:00.000Z |
+| | PPpp | 1987-02-11T12:13:14.015Z | 11 лют. 1987 г., 12:13:14 | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 мая 1453 г., 23:59:59 | 1453-05-29T23:59:59.000Z |
+| | PPPppp | 1987-02-11T12:13:14.015Z | 11 лютага 1987 г., 12:13:14 GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 29 мая 1453 г., 23:59:59 GMT+0 | Errored |
+| | PPPPpppp | 1987-02-11T12:13:14.015Z | серада, 11 лютага 1987 г., 12:13:14 GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | нядзеля, 29 мая 1453 г., 23:59:59 GMT+00:00 | Errored |
+
+## `formatDistance`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `includeSeconds: true` | `addSuffix: true` |
+| ------------------------ | --------------- | ---------------------- | ------------------------ |
+| 2006-01-01T00:00:00.000Z | каля 6 гадоў | каля 6 гадоў | прыблізна праз 6 гадоў |
+| 2005-01-01T00:00:00.000Z | каля 5 гадоў | каля 5 гадоў | прыблізна праз 5 гадоў |
+| 2004-01-01T00:00:00.000Z | каля 4 гадоў | каля 4 гадоў | прыблізна праз 4 гады |
+| 2003-01-01T00:00:00.000Z | каля 3 гадоў | каля 3 гадоў | прыблізна праз 3 гады |
+| 2002-01-01T00:00:00.000Z | каля 2 гадоў | каля 2 гадоў | прыблізна праз 2 гады |
+| 2001-06-01T00:00:00.000Z | больш за 1 год | больш за 1 год | больш, чым праз 1 год |
+| 2001-02-01T00:00:00.000Z | каля 1 года | каля 1 года | прыблізна праз 1 год |
+| 2001-01-01T00:00:00.000Z | каля 1 года | каля 1 года | прыблізна праз 1 год |
+| 2000-06-01T00:00:00.000Z | 5 месяцаў | 5 месяцаў | праз 5 месяцаў |
+| 2000-03-01T00:00:00.000Z | 2 месяцы | 2 месяцы | праз 2 месяцы |
+| 2000-02-01T00:00:00.000Z | каля 1 месяца | каля 1 месяца | прыблізна праз 1 месяц |
+| 2000-01-15T00:00:00.000Z | 14 дзён | 14 дзён | праз 14 дзён |
+| 2000-01-02T00:00:00.000Z | 1 дзень | 1 дзень | праз 1 дзень |
+| 2000-01-01T06:00:00.000Z | каля 6 гадзін | каля 6 гадзін | прыблізна праз 6 гадзін |
+| 2000-01-01T01:00:00.000Z | каля 1 гадзіны | каля 1 гадзіны | прыблізна праз 1 гадзіну |
+| 2000-01-01T00:45:00.000Z | каля 1 гадзіны | каля 1 гадзіны | прыблізна праз 1 гадзіну |
+| 2000-01-01T00:30:00.000Z | 30 хвілін | 30 хвілін | праз 30 хвілін |
+| 2000-01-01T00:15:00.000Z | 15 хвілін | 15 хвілін | праз 15 хвілін |
+| 2000-01-01T00:01:00.000Z | 1 хвіліна | 1 хвіліна | праз 1 хвіліну |
+| 2000-01-01T00:00:25.000Z | менш за хвіліну | паўхвіліны | менш, чым праз хвіліну |
+| 2000-01-01T00:00:15.000Z | менш за хвіліну | менш за 20 секунд | менш, чым праз хвіліну |
+| 2000-01-01T00:00:05.000Z | менш за хвіліну | менш за 10 секунд | менш, чым праз хвіліну |
+| 2000-01-01T00:00:00.000Z | менш за хвіліну | менш за 5 секунд | менш за хвіліну таму |
+| 1999-12-31T23:59:55.000Z | менш за хвіліну | менш за 10 секунд | менш за хвіліну таму |
+| 1999-12-31T23:59:45.000Z | менш за хвіліну | менш за 20 секунд | менш за хвіліну таму |
+| 1999-12-31T23:59:35.000Z | менш за хвіліну | паўхвіліны | менш за хвіліну таму |
+| 1999-12-31T23:59:00.000Z | 1 хвіліна | 1 хвіліна | 1 хвіліну таму |
+| 1999-12-31T23:45:00.000Z | 15 хвілін | 15 хвілін | 15 хвілін таму |
+| 1999-12-31T23:30:00.000Z | 30 хвілін | 30 хвілін | 30 хвілін таму |
+| 1999-12-31T23:15:00.000Z | каля 1 гадзіны | каля 1 гадзіны | каля 1 гадзіны таму |
+| 1999-12-31T23:00:00.000Z | каля 1 гадзіны | каля 1 гадзіны | каля 1 гадзіны таму |
+| 1999-12-31T18:00:00.000Z | каля 6 гадзін | каля 6 гадзін | каля 6 гадзін таму |
+| 1999-12-30T00:00:00.000Z | 2 дні | 2 дні | 2 дні таму |
+| 1999-12-15T00:00:00.000Z | 17 дзён | 17 дзён | 17 дзён таму |
+| 1999-12-01T00:00:00.000Z | каля 1 месяца | каля 1 месяца | каля 1 месяца таму |
+| 1999-11-01T00:00:00.000Z | 2 месяцы | 2 месяцы | 2 месяцы таму |
+| 1999-06-01T00:00:00.000Z | 7 месяцаў | 7 месяцаў | 7 месяцаў таму |
+| 1999-01-01T00:00:00.000Z | каля 1 года | каля 1 года | каля 1 года таму |
+| 1998-12-01T00:00:00.000Z | каля 1 года | каля 1 года | каля 1 года таму |
+| 1998-06-01T00:00:00.000Z | больш за 1 год | больш за 1 год | больш за 1 год таму |
+| 1998-01-01T00:00:00.000Z | каля 2 гадоў | каля 2 гадоў | каля 2 гадоў таму |
+| 1997-01-01T00:00:00.000Z | каля 3 гадоў | каля 3 гадоў | каля 3 гадоў таму |
+| 1996-01-01T00:00:00.000Z | каля 4 гадоў | каля 4 гадоў | каля 4 гадоў таму |
+| 1995-01-01T00:00:00.000Z | каля 5 гадоў | каля 5 гадоў | каля 5 гадоў таму |
+| 1994-01-01T00:00:00.000Z | каля 6 гадоў | каля 6 гадоў | каля 6 гадоў таму |
+
+## `formatDistanceStrict`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `addSuffix: true` | With forced unit (i.e. `hour`) |
+| ------------------------ | --------- | ----------------- | ------------------------------ |
+| 2006-01-01T00:00:00.000Z | 6 гадоў | праз 6 гадоў | 52608 гадзін |
+| 2005-01-01T00:00:00.000Z | 5 гадоў | праз 5 гадоў | 43848 гадзін |
+| 2004-01-01T00:00:00.000Z | 4 гады | праз 4 гады | 35064 гадзіны |
+| 2003-01-01T00:00:00.000Z | 3 гады | праз 3 гады | 26304 гадзіны |
+| 2002-01-01T00:00:00.000Z | 2 гады | праз 2 гады | 17544 гадзіны |
+| 2001-06-01T00:00:00.000Z | 1 год | праз 1 год | 12408 гадзін |
+| 2001-02-01T00:00:00.000Z | 1 год | праз 1 год | 9528 гадзін |
+| 2001-01-01T00:00:00.000Z | 1 год | праз 1 год | 8784 гадзіны |
+| 2000-06-01T00:00:00.000Z | 5 месяцаў | праз 5 месяцаў | 3648 гадзін |
+| 2000-03-01T00:00:00.000Z | 2 месяцы | праз 2 месяцы | 1440 гадзін |
+| 2000-02-01T00:00:00.000Z | 1 месяц | праз 1 месяц | 744 гадзіны |
+| 2000-01-15T00:00:00.000Z | 14 дзён | праз 14 дзён | 336 гадзін |
+| 2000-01-02T00:00:00.000Z | 1 дзень | праз 1 дзень | 24 гадзіны |
+| 2000-01-01T06:00:00.000Z | 6 гадзін | праз 6 гадзін | 6 гадзін |
+| 2000-01-01T01:00:00.000Z | 1 гадзіна | праз 1 гадзіну | 1 гадзіна |
+| 2000-01-01T00:45:00.000Z | 45 хвілін | праз 45 хвілін | 1 гадзіна |
+| 2000-01-01T00:30:00.000Z | 30 хвілін | праз 30 хвілін | 1 гадзіна |
+| 2000-01-01T00:15:00.000Z | 15 хвілін | праз 15 хвілін | 0 гадзін |
+| 2000-01-01T00:01:00.000Z | 1 хвіліна | праз 1 хвіліну | 0 гадзін |
+| 2000-01-01T00:00:25.000Z | 25 секунд | праз 25 секунд | 0 гадзін |
+| 2000-01-01T00:00:15.000Z | 15 секунд | праз 15 секунд | 0 гадзін |
+| 2000-01-01T00:00:05.000Z | 5 секунд | праз 5 секунд | 0 гадзін |
+| 2000-01-01T00:00:00.000Z | 0 секунд | 0 секунд таму | 0 гадзін |
+| 1999-12-31T23:59:55.000Z | 5 секунд | 5 секунд таму | 0 гадзін |
+| 1999-12-31T23:59:45.000Z | 15 секунд | 15 секунд таму | 0 гадзін |
+| 1999-12-31T23:59:35.000Z | 25 секунд | 25 секунд таму | 0 гадзін |
+| 1999-12-31T23:59:00.000Z | 1 хвіліна | 1 хвіліну таму | 0 гадзін |
+| 1999-12-31T23:45:00.000Z | 15 хвілін | 15 хвілін таму | 0 гадзін |
+| 1999-12-31T23:30:00.000Z | 30 хвілін | 30 хвілін таму | 1 гадзіна |
+| 1999-12-31T23:15:00.000Z | 45 хвілін | 45 хвілін таму | 1 гадзіна |
+| 1999-12-31T23:00:00.000Z | 1 гадзіна | 1 гадзіну таму | 1 гадзіна |
+| 1999-12-31T18:00:00.000Z | 6 гадзін | 6 гадзін таму | 6 гадзін |
+| 1999-12-30T00:00:00.000Z | 2 дні | 2 дні таму | 48 гадзін |
+| 1999-12-15T00:00:00.000Z | 17 дзён | 17 дзён таму | 408 гадзін |
+| 1999-12-01T00:00:00.000Z | 1 месяц | 1 месяц таму | 744 гадзіны |
+| 1999-11-01T00:00:00.000Z | 2 месяцы | 2 месяцы таму | 1464 гадзіны |
+| 1999-06-01T00:00:00.000Z | 7 месяцаў | 7 месяцаў таму | 5136 гадзін |
+| 1999-01-01T00:00:00.000Z | 1 год | 1 год таму | 8760 гадзін |
+| 1998-12-01T00:00:00.000Z | 1 год | 1 год таму | 9504 гадзіны |
+| 1998-06-01T00:00:00.000Z | 2 гады | 2 гады таму | 13896 гадзін |
+| 1998-01-01T00:00:00.000Z | 2 гады | 2 гады таму | 17520 гадзін |
+| 1997-01-01T00:00:00.000Z | 3 гады | 3 гады таму | 26280 гадзін |
+| 1996-01-01T00:00:00.000Z | 4 гады | 4 гады таму | 35064 гадзіны |
+| 1995-01-01T00:00:00.000Z | 5 гадоў | 5 гадоў таму | 43824 гадзіны |
+| 1994-01-01T00:00:00.000Z | 6 гадоў | 6 гадоў таму | 52584 гадзіны |
+
+## `formatRelative`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result |
+| ------------------------ | ------------------------- |
+| 2000-01-10T00:00:00.000Z | 10.01.2000 |
+| 2000-01-05T00:00:00.000Z | у наступную сераду а 0:00 |
+| 2000-01-02T00:00:00.000Z | заўтра а 0:00 |
+| 2000-01-01T00:00:00.000Z | сёння а 0:00 |
+| 1999-12-31T00:00:00.000Z | учора а 0:00 |
+| 1999-12-27T00:00:00.000Z | у панядзелак а 0:00 |
+| 1999-12-21T00:00:00.000Z | 21.12.1999 |
diff --git a/date-fns/src/locale/bg/_lib/formatDistance/index.js b/date-fns/src/locale/bg/_lib/formatDistance/index.js
new file mode 100644
index 0000000..ea4221a
--- /dev/null
+++ b/date-fns/src/locale/bg/_lib/formatDistance/index.js
@@ -0,0 +1,101 @@
+var formatDistanceLocale = {
+ lessThanXSeconds: {
+ one: 'по-малко от секунда',
+ other: 'по-малко от {{count}} секунди'
+ },
+
+ xSeconds: {
+ one: '1 секунда',
+ other: '{{count}} секунди'
+ },
+
+ halfAMinute: 'половин минута',
+
+ lessThanXMinutes: {
+ one: 'по-малко от минута',
+ other: 'по-малко от {{count}} минути'
+ },
+
+ xMinutes: {
+ one: '1 минута',
+ other: '{{count}} минути'
+ },
+
+ aboutXHours: {
+ one: 'около час',
+ other: 'около {{count}} часа'
+ },
+
+ xHours: {
+ one: '1 час',
+ other: '{{count}} часа'
+ },
+
+ xDays: {
+ one: '1 ден',
+ other: '{{count}} дни'
+ },
+
+ aboutXWeeks: {
+ one: 'около седмица',
+ other: 'около {{count}} седмици'
+ },
+
+ xWeeks: {
+ one: '1 седмица',
+ other: '{{count}} седмици'
+ },
+
+ aboutXMonths: {
+ one: 'около месец',
+ other: 'около {{count}} месеца'
+ },
+
+ xMonths: {
+ one: '1 месец',
+ other: '{{count}} месеца'
+ },
+
+ aboutXYears: {
+ one: 'около година',
+ other: 'около {{count}} години'
+ },
+
+ xYears: {
+ one: '1 година',
+ other: '{{count}} години'
+ },
+
+ overXYears: {
+ one: 'над година',
+ other: 'над {{count}} години'
+ },
+
+ almostXYears: {
+ one: 'почти година',
+ other: 'почти {{count}} години'
+ }
+}
+
+export default function formatDistance(token, count, options) {
+ options = options || {}
+
+ var result
+ if (typeof formatDistanceLocale[token] === 'string') {
+ result = formatDistanceLocale[token]
+ } else if (count === 1) {
+ result = formatDistanceLocale[token].one
+ } else {
+ result = formatDistanceLocale[token].other.replace('{{count}}', count)
+ }
+
+ if (options.addSuffix) {
+ if (options.comparison > 0) {
+ return 'след ' + result
+ } else {
+ return 'преди ' + result
+ }
+ }
+
+ return result
+}
diff --git a/date-fns/src/locale/bg/_lib/formatLong/index.js b/date-fns/src/locale/bg/_lib/formatLong/index.js
new file mode 100644
index 0000000..bf70409
--- /dev/null
+++ b/date-fns/src/locale/bg/_lib/formatLong/index.js
@@ -0,0 +1,38 @@
+import buildFormatLongFn from '../../../_lib/buildFormatLongFn/index'
+
+var dateFormats = {
+ full: 'EEEE, dd MMMM yyyy',
+ long: 'dd MMMM yyyy',
+ medium: 'dd MMM yyyy',
+ short: 'dd/MM/yyyy'
+}
+
+var timeFormats = {
+ full: 'HH:mm:ss zzzz',
+ long: 'HH:mm:ss z',
+ medium: 'HH:mm:ss',
+ short: 'H:mm'
+}
+
+var dateTimeFormats = {
+ any: '{{date}} {{time}}'
+}
+
+var formatLong = {
+ date: buildFormatLongFn({
+ formats: dateFormats,
+ defaultWidth: 'full'
+ }),
+
+ time: buildFormatLongFn({
+ formats: timeFormats,
+ defaultWidth: 'full'
+ }),
+
+ dateTime: buildFormatLongFn({
+ formats: dateTimeFormats,
+ defaultWidth: 'any'
+ })
+}
+
+export default formatLong
diff --git a/date-fns/src/locale/bg/_lib/formatRelative/index.js b/date-fns/src/locale/bg/_lib/formatRelative/index.js
new file mode 100644
index 0000000..0e291c0
--- /dev/null
+++ b/date-fns/src/locale/bg/_lib/formatRelative/index.js
@@ -0,0 +1,88 @@
+import isSameUTCWeek from '../../../../_lib/isSameUTCWeek/index'
+
+// Adapted from the `ru` translation
+
+var weekdays = [
+ 'неделя',
+ 'понеделник',
+ 'вторник',
+ 'сряда',
+ 'четвъртък',
+ 'петък',
+ 'събота'
+]
+
+function lastWeek(day) {
+ var weekday = weekdays[day]
+
+ switch (day) {
+ case 0:
+ case 3:
+ case 6:
+ return "'миналата " + weekday + " в' p"
+ case 1:
+ case 2:
+ case 4:
+ case 5:
+ return "'миналия " + weekday + " в' p"
+ }
+}
+
+function thisWeek(day) {
+ var weekday = weekdays[day]
+
+ if (day === 2 /* Tue */) {
+ return "'във " + weekday + " в' p"
+ } else {
+ return "'в " + weekday + " в' p"
+ }
+}
+
+function nextWeek(day) {
+ var weekday = weekdays[day]
+
+ switch (day) {
+ case 0:
+ case 3:
+ case 6:
+ return "'следващата " + weekday + " в' p"
+ case 1:
+ case 2:
+ case 4:
+ case 5:
+ return "'следващия " + weekday + " в' p"
+ }
+}
+
+var formatRelativeLocale = {
+ lastWeek: function(date, baseDate, options) {
+ var day = date.getUTCDay()
+ if (isSameUTCWeek(date, baseDate, options)) {
+ return thisWeek(day)
+ } else {
+ return lastWeek(day)
+ }
+ },
+ yesterday: "'вчера в' p",
+ today: "'днес в' p",
+ tomorrow: "'утре в' p",
+ nextWeek: function(date, baseDate, options) {
+ var day = date.getUTCDay()
+ if (isSameUTCWeek(date, baseDate, options)) {
+ return thisWeek(day)
+ } else {
+ return nextWeek(day)
+ }
+ },
+ other: 'P'
+}
+
+export default function formatRelative(token, date, baseDate, options) {
+ var format = formatRelativeLocale[token]
+
+ if (typeof format === 'function') {
+ return format(date, baseDate, options)
+ }
+
+ return format
+}
diff --git a/date-fns/src/locale/bg/_lib/localize/index.js b/date-fns/src/locale/bg/_lib/localize/index.js
new file mode 100644
index 0000000..5d98d2e
--- /dev/null
+++ b/date-fns/src/locale/bg/_lib/localize/index.js
@@ -0,0 +1,155 @@
+import buildLocalizeFn from '../../../_lib/buildLocalizeFn/index'
+
+var eraValues = {
+ narrow: ['пр.н.е.', 'н.е.'],
+ abbreviated: ['преди н. е.', 'н. е.'],
+ wide: ['преди новата ера', 'новата ера']
+}
+
+var quarterValues = {
+ narrow: ['1', '2', '3', '4'],
+ abbreviated: ['1-во тримес.', '2-ро тримес.', '3-то тримес.', '4-то тримес.'],
+ wide: [
+ '1-во тримесечие',
+ '2-ро тримесечие',
+ '3-то тримесечие',
+ '4-то тримесечие'
+ ]
+}
+
+var monthValues = {
+ abbreviated: [
+ 'яну',
+ 'фев',
+ 'мар',
+ 'апр',
+ 'май',
+ 'юни',
+ 'юли',
+ 'авг',
+ 'сеп',
+ 'окт',
+ 'ное',
+ 'дек'
+ ],
+ wide: [
+ 'януари',
+ 'февруари',
+ 'март',
+ 'април',
+ 'май',
+ 'юни',
+ 'юли',
+ 'август',
+ 'септември',
+ 'октомври',
+ 'ноември',
+ 'декември'
+ ]
+}
+
+var dayValues = {
+ narrow: ['Н', 'П', 'В', 'С', 'Ч', 'П', 'С'],
+ short: ['нд', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'],
+ abbreviated: ['нед', 'пон', 'вто', 'сря', 'чет', 'пет', 'съб'],
+ wide: [
+ 'неделя',
+ 'понеделник',
+ 'вторник',
+ 'сряда',
+ 'четвъртък',
+ 'петък',
+ 'събота'
+ ]
+}
+
+var dayPeriodValues = {
+ wide: {
+ am: 'преди обяд',
+ pm: 'след обяд',
+ midnight: 'в полунощ',
+ noon: 'на обяд',
+ morning: 'сутринта',
+ afternoon: 'следобед',
+ evening: 'вечерта',
+ night: 'през нощта'
+ }
+}
+
+function isFeminine(unit) {
+ return (
+ unit === 'year' || unit === 'week' || unit === 'minute' || unit === 'second'
+ )
+}
+
+function isNeuter(unit) {
+ return unit === 'quarter'
+}
+
+function numberWithSuffix(number, unit, masculine, feminine, neuter) {
+ var suffix = isNeuter(unit) ? neuter : isFeminine(unit) ? feminine : masculine
+ return number + '-' + suffix
+}
+
+function ordinalNumber(dirtyNumber, dirtyOptions) {
+ var options = dirtyOptions || {}
+ var unit = String(options.unit)
+ var number = Number(dirtyNumber)
+
+ if (number === 0) {
+ return numberWithSuffix(0, unit, 'ев', 'ева', 'ево')
+ } else if (number % 1000 === 0) {
+ return numberWithSuffix(number, unit, 'ен', 'на', 'но')
+ } else if (number % 100 === 0) {
+ return numberWithSuffix(number, unit, 'тен', 'тна', 'тно')
+ }
+
+ var rem100 = number % 100
+ if (rem100 > 20 || rem100 < 10) {
+ switch (rem100 % 10) {
+ case 1:
+ return numberWithSuffix(number, unit, 'ви', 'ва', 'во')
+ case 2:
+ return numberWithSuffix(number, unit, 'ри', 'ра', 'ро')
+ case 7:
+ case 8:
+ return numberWithSuffix(number, unit, 'ми', 'ма', 'мо')
+ }
+ }
+
+ return numberWithSuffix(number, unit, 'ти', 'та', 'то')
+}
+
+var localize = {
+ ordinalNumber: ordinalNumber,
+
+ era: buildLocalizeFn({
+ values: eraValues,
+ defaultWidth: 'wide'
+ }),
+
+ quarter: buildLocalizeFn({
+ values: quarterValues,
+ defaultWidth: 'wide',
+ argumentCallback: function(quarter) {
+ return Number(quarter) - 1
+ }
+ }),
+
+ month: buildLocalizeFn({
+ values: monthValues,
+ defaultWidth: 'wide'
+ }),
+
+ day: buildLocalizeFn({
+ values: dayValues,
+ defaultWidth: 'wide'
+ }),
+
+ dayPeriod: buildLocalizeFn({
+ values: dayPeriodValues,
+ defaultWidth: 'wide'
+ })
+}
+
+export default localize
diff --git a/date-fns/src/locale/bg/_lib/match/index.js b/date-fns/src/locale/bg/_lib/match/index.js
new file mode 100644
index 0000000..bb0b71e
--- /dev/null
+++ b/date-fns/src/locale/bg/_lib/match/index.js
@@ -0,0 +1,123 @@
+import buildMatchFn from '../../../_lib/buildMatchFn/index'
+import buildMatchPatternFn from '../../../_lib/buildMatchPatternFn/index'
+
+var matchOrdinalNumberPattern = /^(\d+)(-?[врмт][аи]|-?т?(ен|на)|-?(ев|ева))?/i
+var parseOrdinalNumberPattern = /\d+/i
+
+var matchEraPatterns = {
+ narrow: /^((пр)?н\.?\s?е\.?)/i,
+ abbreviated: /^((пр)?н\.?\s?е\.?)/i,
+ wide: /^(преди новата ера|новата ера|нова ера)/i
+}
+var parseEraPatterns = {
+ any: [/^п/i, /^н/i]
+}
+
+var matchQuarterPatterns = {
+ narrow: /^[1234]/i,
+ abbreviated: /^[1234](-?[врт]?o?)? тримес.?/i,
+ wide: /^[1234](-?[врт]?о?)? тримесечие/i
+}
+var parseQuarterPatterns = {
+ any: [/1/i, /2/i, /3/i, /4/i]
+}
+
+var matchDayPatterns = {
+ narrow: /^[нпвсч]/i,
+ short: /^(нд|пн|вт|ср|чт|пт|сб)/i,
+ abbreviated: /^(нед|пон|вто|сря|чет|пет|съб)/i,
+ wide: /^(неделя|понеделник|вторник|сряда|четвъртък|петък|събота)/i
+}
+
+var parseDayPatterns = {
+ narrow: [/^н/i, /^п/i, /^в/i, /^с/i, /^ч/i, /^п/i, /^с/i],
+ any: [/^н[ед]/i, /^п[он]/i, /^вт/i, /^ср/i, /^ч[ет]/i, /^п[ет]/i, /^с[ъб]/i]
+}
+
+var matchMonthPatterns = {
+ abbreviated: /^(яну|фев|мар|апр|май|юни|юли|авг|сеп|окт|ное|дек)/i,
+ wide: /^(януари|февруари|март|април|май|юни|юли|август|септември|октомври|ноември|декември)/i
+}
+
+var parseMonthPatterns = {
+ any: [
+ /^я/i,
+ /^ф/i,
+ /^мар/i,
+ /^ап/i,
+ /^май/i,
+ /^юн/i,
+ /^юл/i,
+ /^ав/i,
+ /^се/i,
+ /^окт/i,
+ /^но/i,
+ /^де/i
+ ]
+}
+
+var matchDayPeriodPatterns = {
+ any: /^(преди о|след о|в по|на о|през|веч|сут|следо)/i
+}
+var parseDayPeriodPatterns = {
+ any: {
+ am: /^преди о/i,
+ pm: /^след о/i,
+ midnight: /^в пол/i,
+ noon: /^на об/i,
+ morning: /^сут/i,
+ afternoon: /^следо/i,
+ evening: /^веч/i,
+ night: /^през н/i
+ }
+}
+
+var match = {
+ ordinalNumber: buildMatchPatternFn({
+ matchPattern: matchOrdinalNumberPattern,
+ parsePattern: parseOrdinalNumberPattern,
+ valueCallback: function(value) {
+ return parseInt(value, 10)
+ }
+ }),
+
+ era: buildMatchFn({
+ matchPatterns: matchEraPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseEraPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ quarter: buildMatchFn({
+ matchPatterns: matchQuarterPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseQuarterPatterns,
+ defaultParseWidth: 'any',
+ valueCallback: function(index) {
+ return index + 1
+ }
+ }),
+
+ month: buildMatchFn({
+ matchPatterns: matchMonthPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseMonthPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ day: buildMatchFn({
+ matchPatterns: matchDayPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseDayPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ dayPeriod: buildMatchFn({
+ matchPatterns: matchDayPeriodPatterns,
+ defaultMatchWidth: 'any',
+ parsePatterns: parseDayPeriodPatterns,
+ defaultParseWidth: 'any'
+ })
+}
+
+export default match
diff --git a/date-fns/src/locale/bg/index.d.ts b/date-fns/src/locale/bg/index.d.ts
new file mode 100644
index 0000000..485fc59
--- /dev/null
+++ b/date-fns/src/locale/bg/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { bg } from 'date-fns/locale'
+export default bg
diff --git a/date-fns/src/locale/bg/index.js b/date-fns/src/locale/bg/index.js
new file mode 100644
index 0000000..3221b94
--- /dev/null
+++ b/date-fns/src/locale/bg/index.js
@@ -0,0 +1,29 @@
+import formatDistance from './_lib/formatDistance/index'
+import formatLong from './_lib/formatLong/index'
+import formatRelative from './_lib/formatRelative/index'
+import localize from './_lib/localize/index'
+import match from './_lib/match/index'
+
+/**
+ * @type {Locale}
+ * @category Locales
+ * @summary Bulgarian locale.
+ * @language Bulgarian
+ * @iso-639-2 bul
+ * @author Nikolay Stoynov [@arvigeus]{@link https://github.com/arvigeus}
+ * @author Tsvetan Ovedenski [@fintara]{@link https://github.com/fintara}
+ */
+var locale = {
+ code: 'bg',
+ formatDistance: formatDistance,
+ formatLong: formatLong,
+ formatRelative: formatRelative,
+ localize: localize,
+ match: match,
+ options: {
+ weekStartsOn: 1 /* Monday */,
+ firstWeekContainsDate: 1
+ }
+}
+
+export default locale
diff --git a/date-fns/src/locale/bg/index.js.flow b/date-fns/src/locale/bg/index.js.flow
new file mode 100644
index 0000000..b9dfe66
--- /dev/null
+++ b/date-fns/src/locale/bg/index.js.flow
@@ -0,0 +1,35 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+declare module.exports: Locale
diff --git a/date-fns/src/locale/bg/snapshot.md b/date-fns/src/locale/bg/snapshot.md
new file mode 100644
index 0000000..329dbc2
--- /dev/null
+++ b/date-fns/src/locale/bg/snapshot.md
@@ -0,0 +1,304 @@
+# Bulgarian (bg) locale
+
+## `format` and `parse`
+
+| Title | Token string | Date | `format` result | `parse` result |
+| ------------------------------- | ------------ | ------------------------ | ------------------------------------------ | ------------------------ |
+| Calendar year | yo | 1987-02-11T12:13:14.015Z | 1987-ма | 1987-01-01T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 5-та | 0005-01-01T00:00:00.000Z |
+| Local week-numbering year | Yo | 1987-02-11T12:13:14.015Z | 1987-ма | 1986-12-29T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 5-та | 0004-12-27T00:00:00.000Z |
+| Quarter (formatting) | Qo | 2019-01-01T12:13:14.015Z | 1-во | Invalid Date |
+| | | 2019-04-01T12:13:14.015Z | 2-ро | Invalid Date |
+| | QQQ | 2019-01-01T12:13:14.015Z | 1-во тримес. | Invalid Date |
+| | | 2019-04-01T12:13:14.015Z | 2-ро тримес. | Invalid Date |
+| | QQQQ | 2019-01-01T12:13:14.015Z | 1-во тримесечие | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2-ро тримесечие | 2019-04-01T00:00:00.000Z |
+| | QQQQQ | 2019-01-01T12:13:14.015Z | 1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2 | 2019-04-01T00:00:00.000Z |
+| Quarter (stand-alone) | qo | 2019-01-01T12:13:14.015Z | 1-во | Invalid Date |
+| | | 2019-04-01T12:13:14.015Z | 2-ро | Invalid Date |
+| | qqq | 2019-01-01T12:13:14.015Z | 1-во тримес. | Invalid Date |
+| | | 2019-04-01T12:13:14.015Z | 2-ро тримес. | Invalid Date |
+| | qqqq | 2019-01-01T12:13:14.015Z | 1-во тримесечие | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2-ро тримесечие | 2019-04-01T00:00:00.000Z |
+| Month (formatting) | Mo | 2019-02-11T12:13:14.015Z | 2-ри | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7-ми | 2019-07-01T00:00:00.000Z |
+| | MMM | 2019-02-11T12:13:14.015Z | фев | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | юли | 2019-07-01T00:00:00.000Z |
+| | MMMM | 2019-02-11T12:13:14.015Z | февруари | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | юли | 2019-07-01T00:00:00.000Z |
+| | MMMMM | 2019-02-11T12:13:14.015Z | февруари | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | юли | 2019-07-01T00:00:00.000Z |
+| Month (stand-alone) | Lo | 2019-02-11T12:13:14.015Z | 2-ри | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7-ми | 2019-07-01T00:00:00.000Z |
+| | LLL | 2019-02-11T12:13:14.015Z | фев | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | юли | 2019-07-01T00:00:00.000Z |
+| | LLLL | 2019-02-11T12:13:14.015Z | февруари | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | юли | 2019-07-01T00:00:00.000Z |
+| | LLLLL | 2019-02-11T12:13:14.015Z | февруари | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | юли | 2019-07-01T00:00:00.000Z |
+| Local week of year | wo | 2019-01-01T12:13:14.015Z | 1-ва | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48-ма | 2019-11-25T00:00:00.000Z |
+| ISO week of year | Io | 2019-01-01T12:13:14.015Z | 1-ва | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48-ма | 2019-11-25T00:00:00.000Z |
+| Day of month | do | 2019-02-11T12:13:14.015Z | 11-ти | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-28T12:13:14.015Z | 28-ми | 2019-02-28T00:00:00.000Z |
+| Day of year | Do | 2019-02-11T12:13:14.015Z | 42-ри | 2019-02-11T00:00:00.000Z |
+| | | 2019-12-31T12:13:14.015Z | 365-ти | 2019-12-31T00:00:00.000Z |
+| Day of week (formatting) | E | 2019-02-11T12:13:14.015Z | пон | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | пет | 2019-02-15T00:00:00.000Z |
+| | EE | 2019-02-11T12:13:14.015Z | пон | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | пет | 2019-02-15T00:00:00.000Z |
+| | EEE | 2019-02-11T12:13:14.015Z | пон | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | пет | 2019-02-15T00:00:00.000Z |
+| | EEEE | 2019-02-11T12:13:14.015Z | понеделник | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | петък | 2019-02-15T00:00:00.000Z |
+| | EEEEE | 2019-02-11T12:13:14.015Z | П | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | П | 2019-02-11T00:00:00.000Z |
+| | EEEEEE | 2019-02-11T12:13:14.015Z | пн | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | пт | 2019-02-15T00:00:00.000Z |
+| ISO day of week (formatting) | io | 2019-02-11T12:13:14.015Z | 1-ви | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5-ти | 2019-02-15T00:00:00.000Z |
+| | iii | 2019-02-11T12:13:14.015Z | пон | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | пет | 2019-02-15T00:00:00.000Z |
+| | iiii | 2019-02-11T12:13:14.015Z | понеделник | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | петък | 2019-02-15T00:00:00.000Z |
+| | iiiii | 2019-02-11T12:13:14.015Z | П | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | П | 2019-02-11T00:00:00.000Z |
+| | iiiiii | 2019-02-11T12:13:14.015Z | пн | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | пт | 2019-02-15T00:00:00.000Z |
+| Local day of week (formatting) | eo | 2019-02-11T12:13:14.015Z | 1-ви | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5-ти | 2019-02-15T00:00:00.000Z |
+| | eee | 2019-02-11T12:13:14.015Z | пон | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | пет | 2019-02-15T00:00:00.000Z |
+| | eeee | 2019-02-11T12:13:14.015Z | понеделник | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | петък | 2019-02-15T00:00:00.000Z |
+| | eeeee | 2019-02-11T12:13:14.015Z | П | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | П | 2019-02-11T00:00:00.000Z |
+| | eeeeee | 2019-02-11T12:13:14.015Z | пн | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | пт | 2019-02-15T00:00:00.000Z |
+| Local day of week (stand-alone) | co | 2019-02-11T12:13:14.015Z | 1-ви | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5-ти | 2019-02-15T00:00:00.000Z |
+| | ccc | 2019-02-11T12:13:14.015Z | пон | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | пет | 2019-02-15T00:00:00.000Z |
+| | cccc | 2019-02-11T12:13:14.015Z | понеделник | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | петък | 2019-02-15T00:00:00.000Z |
+| | ccccc | 2019-02-11T12:13:14.015Z | П | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | П | 2019-02-11T00:00:00.000Z |
+| | cccccc | 2019-02-11T12:13:14.015Z | пн | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | пт | 2019-02-15T00:00:00.000Z |
+| AM, PM | a | 2019-02-11T11:13:14.015Z | преди обяд | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | след обяд | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | след обяд | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | преди обяд | Invalid Date |
+| | aa | 2019-02-11T11:13:14.015Z | преди обяд | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | след обяд | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | след обяд | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | преди обяд | Invalid Date |
+| | aaa | 2019-02-11T11:13:14.015Z | преди обяд | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | след обяд | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | след обяд | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | преди обяд | Invalid Date |
+| | aaaa | 2019-02-11T11:13:14.015Z | преди обяд | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | след обяд | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | след обяд | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | преди обяд | Invalid Date |
+| | aaaaa | 2019-02-11T11:13:14.015Z | преди обяд | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | след обяд | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | след обяд | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | преди обяд | Invalid Date |
+| AM, PM, noon, midnight | b | 2019-02-11T11:13:14.015Z | преди обяд | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | след обяд | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | след обяд | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | преди обяд | Invalid Date |
+| | bb | 2019-02-11T11:13:14.015Z | преди обяд | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | след обяд | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | след обяд | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | преди обяд | Invalid Date |
+| | bbb | 2019-02-11T11:13:14.015Z | преди обяд | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | след обяд | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | след обяд | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | преди обяд | Invalid Date |
+| | bbbb | 2019-02-11T11:13:14.015Z | преди обяд | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | след обяд | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | след обяд | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | преди обяд | Invalid Date |
+| | bbbbb | 2019-02-11T11:13:14.015Z | преди обяд | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | след обяд | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | след обяд | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | преди обяд | Invalid Date |
+| Flexible day period | B | 2019-02-11T11:13:14.015Z | сутринта | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | следобед | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | вечерта | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | през нощта | Invalid Date |
+| | BB | 2019-02-11T11:13:14.015Z | сутринта | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | следобед | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | вечерта | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | през нощта | Invalid Date |
+| | BBB | 2019-02-11T11:13:14.015Z | сутринта | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | следобед | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | вечерта | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | през нощта | Invalid Date |
+| | BBBB | 2019-02-11T11:13:14.015Z | сутринта | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | следобед | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | вечерта | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | през нощта | Invalid Date |
+| | BBBBB | 2019-02-11T11:13:14.015Z | сутринта | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | следобед | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | вечерта | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | през нощта | Invalid Date |
+| Hour [1-12] | ho | 2019-02-11T11:13:14.015Z | 11-ти | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11-ти | 2019-02-11T23:00:00.000Z |
+| Hour [0-23] | Ho | 2019-02-11T11:13:14.015Z | 11-ти | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23-ти | 2019-02-11T23:00:00.000Z |
+| Hour [0-11] | Ko | 2019-02-11T11:13:14.015Z | 11-ти | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11-ти | 2019-02-11T23:00:00.000Z |
+| Hour [1-24] | ko | 2019-02-11T11:13:14.015Z | 11-ти | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23-ти | 2019-02-11T23:00:00.000Z |
+| Minute | mo | 2019-01-01T12:01:14.015Z | 1-ва | 2019-01-01T12:01:00.000Z |
+| | | 2019-04-01T12:55:14.015Z | 55-та | 2019-04-01T12:55:00.000Z |
+| Second | so | 2019-01-01T12:13:01.015Z | 1-ва | 2019-01-01T12:13:01.000Z |
+| | | 2019-04-01T12:13:55.015Z | 55-та | 2019-04-01T12:13:55.000Z |
+| Long localized date | P | 1987-02-11T12:13:14.015Z | 11/02/1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29/05/1453 | 1453-05-29T00:00:00.000Z |
+| | PP | 1987-02-11T12:13:14.015Z | 11 фев 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 май 1453 | 1453-05-29T00:00:00.000Z |
+| | PPP | 1987-02-11T12:13:14.015Z | 11 февруари 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 май 1453 | 1453-05-29T00:00:00.000Z |
+| | PPPP | 1987-02-11T12:13:14.015Z | сряда, 11 февруари 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | неделя, 29 май 1453 | 1453-05-29T00:00:00.000Z |
+| Long localized time | p | 1987-02-11T12:13:14.015Z | 12:13 | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 23:59 | 1453-05-29T23:59:00.000Z |
+| | pp | 1987-02-11T12:13:14.015Z | 12:13:14 | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 | 1453-05-29T23:59:59.000Z |
+| | ppp | 1987-02-11T12:13:14.015Z | 12:13:14 GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 GMT+0 | Errored |
+| | pppp | 1987-02-11T12:13:14.015Z | 12:13:14 GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 GMT+00:00 | Errored |
+| Combination of date and time | Pp | 1987-02-11T12:13:14.015Z | 11/02/1987 12:13 | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29/05/1453 23:59 | 1453-05-29T23:59:00.000Z |
+| | PPpp | 1987-02-11T12:13:14.015Z | 11 фев 1987 12:13:14 | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 май 1453 23:59:59 | 1453-05-29T23:59:59.000Z |
+| | PPPppp | 1987-02-11T12:13:14.015Z | 11 февруари 1987 12:13:14 GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 29 май 1453 23:59:59 GMT+0 | Errored |
+| | PPPPpppp | 1987-02-11T12:13:14.015Z | сряда, 11 февруари 1987 12:13:14 GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | неделя, 29 май 1453 23:59:59 GMT+00:00 | Errored |
+
+## `formatDistance`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `includeSeconds: true` | `addSuffix: true` |
+| ------------------------ | ------------------ | ---------------------- | ------------------------ |
+| 2006-01-01T00:00:00.000Z | около 6 години | около 6 години | след около 6 години |
+| 2005-01-01T00:00:00.000Z | около 5 години | около 5 години | след около 5 години |
+| 2004-01-01T00:00:00.000Z | около 4 години | около 4 години | след около 4 години |
+| 2003-01-01T00:00:00.000Z | около 3 години | около 3 години | след около 3 години |
+| 2002-01-01T00:00:00.000Z | около 2 години | около 2 години | след около 2 години |
+| 2001-06-01T00:00:00.000Z | над година | над година | след над година |
+| 2001-02-01T00:00:00.000Z | около година | около година | след около година |
+| 2001-01-01T00:00:00.000Z | около година | около година | след около година |
+| 2000-06-01T00:00:00.000Z | 5 месеца | 5 месеца | след 5 месеца |
+| 2000-03-01T00:00:00.000Z | 2 месеца | 2 месеца | след 2 месеца |
+| 2000-02-01T00:00:00.000Z | около месец | около месец | след около месец |
+| 2000-01-15T00:00:00.000Z | 14 дни | 14 дни | след 14 дни |
+| 2000-01-02T00:00:00.000Z | 1 ден | 1 ден | след 1 ден |
+| 2000-01-01T06:00:00.000Z | около 6 часа | около 6 часа | след около 6 часа |
+| 2000-01-01T01:00:00.000Z | около час | около час | след около час |
+| 2000-01-01T00:45:00.000Z | около час | около час | след около час |
+| 2000-01-01T00:30:00.000Z | 30 минути | 30 минути | след 30 минути |
+| 2000-01-01T00:15:00.000Z | 15 минути | 15 минути | след 15 минути |
+| 2000-01-01T00:01:00.000Z | 1 минута | 1 минута | след 1 минута |
+| 2000-01-01T00:00:25.000Z | по-малко от минута | половин минута | след по-малко от минута |
+| 2000-01-01T00:00:15.000Z | по-малко от минута | по-малко от 20 секунди | след по-малко от минута |
+| 2000-01-01T00:00:05.000Z | по-малко от минута | по-малко от 10 секунди | след по-малко от минута |
+| 2000-01-01T00:00:00.000Z | по-малко от минута | по-малко от 5 секунди | преди по-малко от минута |
+| 1999-12-31T23:59:55.000Z | по-малко от минута | по-малко от 10 секунди | преди по-малко от минута |
+| 1999-12-31T23:59:45.000Z | по-малко от минута | по-малко от 20 секунди | преди по-малко от минута |
+| 1999-12-31T23:59:35.000Z | по-малко от минута | половин минута | преди по-малко от минута |
+| 1999-12-31T23:59:00.000Z | 1 минута | 1 минута | преди 1 минута |
+| 1999-12-31T23:45:00.000Z | 15 минути | 15 минути | преди 15 минути |
+| 1999-12-31T23:30:00.000Z | 30 минути | 30 минути | преди 30 минути |
+| 1999-12-31T23:15:00.000Z | около час | около час | преди около час |
+| 1999-12-31T23:00:00.000Z | около час | около час | преди около час |
+| 1999-12-31T18:00:00.000Z | около 6 часа | около 6 часа | преди около 6 часа |
+| 1999-12-30T00:00:00.000Z | 2 дни | 2 дни | преди 2 дни |
+| 1999-12-15T00:00:00.000Z | 17 дни | 17 дни | преди 17 дни |
+| 1999-12-01T00:00:00.000Z | около месец | около месец | преди около месец |
+| 1999-11-01T00:00:00.000Z | 2 месеца | 2 месеца | преди 2 месеца |
+| 1999-06-01T00:00:00.000Z | 7 месеца | 7 месеца | преди 7 месеца |
+| 1999-01-01T00:00:00.000Z | около година | около година | преди около година |
+| 1998-12-01T00:00:00.000Z | около година | около година | преди около година |
+| 1998-06-01T00:00:00.000Z | над година | над година | преди над година |
+| 1998-01-01T00:00:00.000Z | около 2 години | около 2 години | преди около 2 години |
+| 1997-01-01T00:00:00.000Z | около 3 години | около 3 години | преди около 3 години |
+| 1996-01-01T00:00:00.000Z | около 4 години | около 4 години | преди около 4 години |
+| 1995-01-01T00:00:00.000Z | около 5 години | около 5 години | преди около 5 години |
+| 1994-01-01T00:00:00.000Z | около 6 години | около 6 години | преди около 6 години |
+
+## `formatDistanceStrict`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `addSuffix: true` | With forced unit (i.e. `hour`) |
+| ------------------------ | ---------- | ----------------- | ------------------------------ |
+| 2006-01-01T00:00:00.000Z | 6 години | след 6 години | 52608 часа |
+| 2005-01-01T00:00:00.000Z | 5 години | след 5 години | 43848 часа |
+| 2004-01-01T00:00:00.000Z | 4 години | след 4 години | 35064 часа |
+| 2003-01-01T00:00:00.000Z | 3 години | след 3 години | 26304 часа |
+| 2002-01-01T00:00:00.000Z | 2 години | след 2 години | 17544 часа |
+| 2001-06-01T00:00:00.000Z | 1 година | след 1 година | 12408 часа |
+| 2001-02-01T00:00:00.000Z | 1 година | след 1 година | 9528 часа |
+| 2001-01-01T00:00:00.000Z | 1 година | след 1 година | 8784 часа |
+| 2000-06-01T00:00:00.000Z | 5 месеца | след 5 месеца | 3648 часа |
+| 2000-03-01T00:00:00.000Z | 2 месеца | след 2 месеца | 1440 часа |
+| 2000-02-01T00:00:00.000Z | 1 месец | след 1 месец | 744 часа |
+| 2000-01-15T00:00:00.000Z | 14 дни | след 14 дни | 336 часа |
+| 2000-01-02T00:00:00.000Z | 1 ден | след 1 ден | 24 часа |
+| 2000-01-01T06:00:00.000Z | 6 часа | след 6 часа | 6 часа |
+| 2000-01-01T01:00:00.000Z | 1 час | след 1 час | 1 час |
+| 2000-01-01T00:45:00.000Z | 45 минути | след 45 минути | 1 час |
+| 2000-01-01T00:30:00.000Z | 30 минути | след 30 минути | 1 час |
+| 2000-01-01T00:15:00.000Z | 15 минути | след 15 минути | 0 часа |
+| 2000-01-01T00:01:00.000Z | 1 минута | след 1 минута | 0 часа |
+| 2000-01-01T00:00:25.000Z | 25 секунди | след 25 секунди | 0 часа |
+| 2000-01-01T00:00:15.000Z | 15 секунди | след 15 секунди | 0 часа |
+| 2000-01-01T00:00:05.000Z | 5 секунди | след 5 секунди | 0 часа |
+| 2000-01-01T00:00:00.000Z | 0 секунди | преди 0 секунди | 0 часа |
+| 1999-12-31T23:59:55.000Z | 5 секунди | преди 5 секунди | 0 часа |
+| 1999-12-31T23:59:45.000Z | 15 секунди | преди 15 секунди | 0 часа |
+| 1999-12-31T23:59:35.000Z | 25 секунди | преди 25 секунди | 0 часа |
+| 1999-12-31T23:59:00.000Z | 1 минута | преди 1 минута | 0 часа |
+| 1999-12-31T23:45:00.000Z | 15 минути | преди 15 минути | 0 часа |
+| 1999-12-31T23:30:00.000Z | 30 минути | преди 30 минути | 1 час |
+| 1999-12-31T23:15:00.000Z | 45 минути | преди 45 минути | 1 час |
+| 1999-12-31T23:00:00.000Z | 1 час | преди 1 час | 1 час |
+| 1999-12-31T18:00:00.000Z | 6 часа | преди 6 часа | 6 часа |
+| 1999-12-30T00:00:00.000Z | 2 дни | преди 2 дни | 48 часа |
+| 1999-12-15T00:00:00.000Z | 17 дни | преди 17 дни | 408 часа |
+| 1999-12-01T00:00:00.000Z | 1 месец | преди 1 месец | 744 часа |
+| 1999-11-01T00:00:00.000Z | 2 месеца | преди 2 месеца | 1464 часа |
+| 1999-06-01T00:00:00.000Z | 7 месеца | преди 7 месеца | 5136 часа |
+| 1999-01-01T00:00:00.000Z | 1 година | преди 1 година | 8760 часа |
+| 1998-12-01T00:00:00.000Z | 1 година | преди 1 година | 9504 часа |
+| 1998-06-01T00:00:00.000Z | 2 години | преди 2 години | 13896 часа |
+| 1998-01-01T00:00:00.000Z | 2 години | преди 2 години | 17520 часа |
+| 1997-01-01T00:00:00.000Z | 3 години | преди 3 години | 26280 часа |
+| 1996-01-01T00:00:00.000Z | 4 години | преди 4 години | 35064 часа |
+| 1995-01-01T00:00:00.000Z | 5 години | преди 5 години | 43824 часа |
+| 1994-01-01T00:00:00.000Z | 6 години | преди 6 години | 52584 часа |
+
+## `formatRelative`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result |
+| ------------------------ | ----------------------- |
+| 2000-01-10T00:00:00.000Z | 10/01/2000 |
+| 2000-01-05T00:00:00.000Z | следващата сряда в 0:00 |
+| 2000-01-02T00:00:00.000Z | утре в 0:00 |
+| 2000-01-01T00:00:00.000Z | днес в 0:00 |
+| 1999-12-31T00:00:00.000Z | вчера в 0:00 |
+| 1999-12-27T00:00:00.000Z | в понеделник в 0:00 |
+| 1999-12-21T00:00:00.000Z | 21/12/1999 |
diff --git a/date-fns/src/locale/bn/_lib/formatDistance/index.js b/date-fns/src/locale/bn/_lib/formatDistance/index.js
new file mode 100644
index 0000000..79835f9
--- /dev/null
+++ b/date-fns/src/locale/bn/_lib/formatDistance/index.js
@@ -0,0 +1,106 @@
+import localize from '../localize/index'
+
+var formatDistanceLocale = {
+ lessThanXSeconds: {
+ one: 'প্রায় ১ সেকেন্ড',
+ other: 'প্রায় {{count}} সেকেন্ড'
+ },
+
+ xSeconds: {
+ one: '১ সেকেন্ড',
+ other: '{{count}} সেকেন্ড'
+ },
+
+ halfAMinute: 'আধ মিনিট',
+
+ lessThanXMinutes: {
+ one: 'প্রায় ১ মিনিট',
+ other: 'প্রায় {{count}} মিনিট'
+ },
+
+ xMinutes: {
+ one: '১ মিনিট',
+ other: '{{count}} মিনিট'
+ },
+
+ aboutXHours: {
+ one: 'প্রায় ১ ঘন্টা',
+ other: 'প্রায় {{count}} ঘন্টা'
+ },
+
+ xHours: {
+ one: '১ ঘন্টা',
+ other: '{{count}} ঘন্টা'
+ },
+
+ xDays: {
+ one: '১ দিন',
+ other: '{{count}} দিন'
+ },
+
+ aboutXWeeks: {
+ one: 'প্রায় ১ সপ্তাহ',
+ other: 'প্রায় {{count}} সপ্তাহ'
+ },
+
+ xWeeks: {
+ one: '১ সপ্তাহ',
+ other: '{{count}} সপ্তাহ'
+ },
+
+ aboutXMonths: {
+ one: 'প্রায় ১ মাস',
+ other: 'প্রায় {{count}} মাস'
+ },
+
+ xMonths: {
+ one: '১ মাস',
+ other: '{{count}} মাস'
+ },
+
+ aboutXYears: {
+ one: 'প্রায় ১ বছর',
+ other: 'প্রায় {{count}} বছর'
+ },
+
+ xYears: {
+ one: '১ বছর',
+ other: '{{count}} বছর'
+ },
+
+ overXYears: {
+ one: '১ বছরের বেশি',
+ other: '{{count}} বছরের বেশি'
+ },
+
+ almostXYears: {
+ one: 'প্রায় ১ বছর',
+ other: 'প্রায় {{count}} বছর'
+ }
+}
+
+export default function formatDistance(token, count, options) {
+ options = options || {}
+
+ var result
+ if (typeof formatDistanceLocale[token] === 'string') {
+ result = formatDistanceLocale[token]
+ } else if (count === 1) {
+ result = formatDistanceLocale[token].one
+ } else {
+ result = formatDistanceLocale[token].other.replace(
+ '{{count}}',
+ localize.numberToLocale(count)
+ )
+ }
+
+ if (options.addSuffix) {
+ if (options.comparison > 0) {
+ return result + ' এর মধ্যে'
+ } else {
+ return result + ' আগে'
+ }
+ }
+
+ return result
+}
diff --git a/date-fns/src/locale/bn/_lib/formatLong/index.js b/date-fns/src/locale/bn/_lib/formatLong/index.js
new file mode 100644
index 0000000..59b7c24
--- /dev/null
+++ b/date-fns/src/locale/bn/_lib/formatLong/index.js
@@ -0,0 +1,41 @@
+import buildFormatLongFn from '../../../_lib/buildFormatLongFn/index'
+
+var dateFormats = {
+ full: 'EEEE, MMMM do, y',
+ long: 'MMMM do, y',
+ medium: 'MMM d, y',
+ short: 'MM/dd/yyyy'
+}
+
+var timeFormats = {
+ full: 'h:mm:ss a zzzz',
+ long: 'h:mm:ss a z',
+ medium: 'h:mm:ss a',
+ short: 'h:mm a'
+}
+
+var dateTimeFormats = {
+ full: "{{date}} {{time}} 'সময়'",
+ long: "{{date}} {{time}} 'সময়'",
+ medium: '{{date}}, {{time}}',
+ short: '{{date}}, {{time}}'
+}
+
+var formatLong = {
+ date: buildFormatLongFn({
+ formats: dateFormats,
+ defaultWidth: 'full'
+ }),
+
+ time: buildFormatLongFn({
+ formats: timeFormats,
+ defaultWidth: 'full'
+ }),
+
+ dateTime: buildFormatLongFn({
+ formats: dateTimeFormats,
+ defaultWidth: 'full'
+ })
+}
+
+export default formatLong
diff --git a/date-fns/src/locale/bn/_lib/formatRelative/index.js b/date-fns/src/locale/bn/_lib/formatRelative/index.js
new file mode 100644
index 0000000..69fdc9c
--- /dev/null
+++ b/date-fns/src/locale/bn/_lib/formatRelative/index.js
@@ -0,0 +1,12 @@
+var formatRelativeLocale = {
+ lastWeek: "'গত' eeee 'সময়' p",
+ yesterday: "'গতকাল' 'সময়' p",
+ today: "'আজ' 'সময়' p",
+ tomorrow: "'আগামীকাল' 'সময়' p",
+ nextWeek: "eeee 'সময়' p",
+ other: 'P'
+}
+
+export default function formatRelative(token, _date, _baseDate, _options) {
+ return formatRelativeLocale[token]
+}
diff --git a/date-fns/src/locale/bn/_lib/localize/index.js b/date-fns/src/locale/bn/_lib/localize/index.js
new file mode 100644
index 0000000..c704a96
--- /dev/null
+++ b/date-fns/src/locale/bn/_lib/localize/index.js
@@ -0,0 +1,265 @@
+import buildLocalizeFn from '../../../_lib/buildLocalizeFn/index'
+
+var numberValues = {
+ locale: {
+ '1': '১',
+ '2': '২',
+ '3': '৩',
+ '4': '৪',
+ '5': '৫',
+ '6': '৬',
+ '7': '৭',
+ '8': '৮',
+ '9': '৯',
+ '0': '০'
+ },
+ number: {
+ '১': '1',
+ '২': '2',
+ '৩': '3',
+ '৪': '4',
+ '৫': '5',
+ '৬': '6',
+ '৭': '7',
+ '৮': '8',
+ '৯': '9',
+ '০': '0'
+ }
+}
+
+var eraValues = {
+ narrow: ['খ্রিঃপূঃ', 'খ্রিঃ'],
+ abbreviated: ['খ্রিঃপূর্ব', 'খ্রিঃ'],
+ wide: ['খ্রিস্টপূর্ব', 'খ্রিস্টাব্দ']
+}
+
+var quarterValues = {
+ narrow: ['১', '২', '৩', '৪'],
+ abbreviated: ['১ত্রৈ', '২ত্রৈ', '৩ত্রৈ', '৪ত্রৈ'],
+ wide: ['১ম ত্রৈমাসিক', '২য় ত্রৈমাসিক', '৩য় ত্রৈমাসিক', '৪র্থ ত্রৈমাসিক']
+}
+
+var monthValues = {
+ narrow: [
+ 'জানু',
+ 'ফেব্রু',
+ 'মার্চ',
+ 'এপ্রিল',
+ 'মে',
+ 'জুন',
+ 'জুলাই',
+ 'আগস্ট',
+ 'সেপ্ট',
+ 'অক্টো',
+ 'নভে',
+ 'ডিসে'
+ ],
+ abbreviated: [
+ 'জানু',
+ 'ফেব্রু',
+ 'মার্চ',
+ 'এপ্রিল',
+ 'মে',
+ 'জুন',
+ 'জুলাই',
+ 'আগস্ট',
+ 'সেপ্ট',
+ 'অক্টো',
+ 'নভে',
+ 'ডিসে'
+ ],
+ wide: [
+ 'জানুয়ারি',
+ 'ফেব্রুয়ারি',
+ 'মার্চ',
+ 'এপ্রিল',
+ 'মে',
+ 'জুন',
+ 'জুলাই',
+ 'আগস্ট',
+ 'সেপ্টেম্বর',
+ 'অক্টোবর',
+ 'নভেম্বর',
+ 'ডিসেম্বর'
+ ]
+}
+
+var dayValues = {
+ narrow: ['র', 'সো', 'ম', 'বু', 'বৃ', 'শু', 'শ'],
+ short: ['রবি', 'সোম', 'মঙ্গল', 'বুধ', 'বৃহ', 'শুক্র', 'শনি'],
+ abbreviated: ['রবি', 'সোম', 'মঙ্গল', 'বুধ', 'বৃহ', 'শুক্র', 'শনি'],
+ wide: [
+ 'রবিবার',
+ 'সোমবার',
+ 'মঙ্গলবার',
+ 'বুধবার',
+ 'বৃহস্পতিবার ',
+ 'শুক্রবার',
+ 'শনিবার'
+ ]
+}
+
+var dayPeriodValues = {
+ narrow: {
+ am: 'পূ',
+ pm: 'অপ',
+ midnight: 'মধ্যরাত',
+ noon: 'মধ্যাহ্ন',
+ morning: 'সকাল',
+ afternoon: 'বিকাল',
+ evening: 'সন্ধ্যা',
+ night: 'রাত'
+ },
+ abbreviated: {
+ am: 'পূর্বাহ্ন',
+ pm: 'অপরাহ্ন',
+ midnight: 'মধ্যরাত',
+ noon: 'মধ্যাহ্ন',
+ morning: 'সকাল',
+ afternoon: 'বিকাল',
+ evening: 'সন্ধ্যা',
+ night: 'রাত'
+ },
+ wide: {
+ am: 'পূর্বাহ্ন',
+ pm: 'অপরাহ্ন',
+ midnight: 'মধ্যরাত',
+ noon: 'মধ্যাহ্ন',
+ morning: 'সকাল',
+ afternoon: 'বিকাল',
+ evening: 'সন্ধ্যা',
+ night: 'রাত'
+ }
+}
+var formattingDayPeriodValues = {
+ narrow: {
+ am: 'পূ',
+ pm: 'অপ',
+ midnight: 'মধ্যরাত',
+ noon: 'মধ্যাহ্ন',
+ morning: 'সকাল',
+ afternoon: 'বিকাল',
+ evening: 'সন্ধ্যা',
+ night: 'রাত'
+ },
+ abbreviated: {
+ am: 'পূর্বাহ্ন',
+ pm: 'অপরাহ্ন',
+ midnight: 'মধ্যরাত',
+ noon: 'মধ্যাহ্ন',
+ morning: 'সকাল',
+ afternoon: 'বিকাল',
+ evening: 'সন্ধ্যা',
+ night: 'রাত'
+ },
+ wide: {
+ am: 'পূর্বাহ্ন',
+ pm: 'অপরাহ্ন',
+ midnight: 'মধ্যরাত',
+ noon: 'মধ্যাহ্ন',
+ morning: 'সকাল',
+ afternoon: 'বিকাল',
+ evening: 'সন্ধ্যা',
+ night: 'রাত'
+ }
+}
+
+function dateOrdinalNumber(number, localeNumber) {
+ if (number > 18 && number <= 31) {
+ return localeNumber + 'শে'
+ } else {
+ switch (number) {
+ case 1:
+ return localeNumber + 'লা'
+ case 2:
+ case 3:
+ return localeNumber + 'রা'
+ case 4:
+ return localeNumber + 'ঠা'
+ default:
+ return localeNumber + 'ই'
+ }
+ }
+}
+
+function ordinalNumber(dirtyNumber, dirtyOptions) {
+ var number = localize.localeToNumber(dirtyNumber)
+ var localeNumber = localize.numberToLocale(number)
+ var unit = dirtyOptions.unit
+
+ if (unit === 'date') {
+ return dateOrdinalNumber(number, localeNumber)
+ }
+ if (number > 10 || number === 0) return localeNumber + 'তম'
+
+ var rem10 = number % 10
+ switch (rem10) {
+ case 2:
+ case 3:
+ return localeNumber + 'য়'
+ case 4:
+ return localeNumber + 'র্থ'
+ case 6:
+ return localeNumber + 'ষ্ঠ'
+ case 1:
+ case 5:
+ case 7:
+ case 8:
+ case 9:
+ case 0:
+ return localeNumber + 'ম'
+ }
+}
+
+function localeToNumber(locale) {
+ var number = locale.toString().replace(/[১২৩৪৫৬৭৮৯০]/g, function(match) {
+ return numberValues.number[match]
+ })
+ return Number(number)
+}
+
+function numberToLocale(number) {
+ return number.toString().replace(/\d/g, function(match) {
+ return numberValues.locale[match]
+ })
+}
+
+var localize = {
+ localeToNumber: localeToNumber,
+
+ numberToLocale: numberToLocale,
+
+ ordinalNumber: ordinalNumber,
+
+ era: buildLocalizeFn({
+ values: eraValues,
+ defaultWidth: 'wide'
+ }),
+
+ quarter: buildLocalizeFn({
+ values: quarterValues,
+ defaultWidth: 'wide',
+ argumentCallback: function(quarter) {
+ return Number(quarter) - 1
+ }
+ }),
+
+ month: buildLocalizeFn({
+ values: monthValues,
+ defaultWidth: 'wide'
+ }),
+
+ day: buildLocalizeFn({
+ values: dayValues,
+ defaultWidth: 'wide'
+ }),
+
+ dayPeriod: buildLocalizeFn({
+ values: dayPeriodValues,
+ defaultWidth: 'wide',
+ formattingValues: formattingDayPeriodValues,
+ defaultFormattingWidth: 'wide'
+ })
+}
+
+export default localize
diff --git a/date-fns/src/locale/bn/_lib/match/index.js b/date-fns/src/locale/bn/_lib/match/index.js
new file mode 100644
index 0000000..d017815
--- /dev/null
+++ b/date-fns/src/locale/bn/_lib/match/index.js
@@ -0,0 +1,144 @@
+import buildMatchPatternFn from '../../../_lib/buildMatchPatternFn/index'
+import buildMatchFn from '../../../_lib/buildMatchFn/index'
+
+var matchOrdinalNumberPattern = /^(\d+)(ম|য়|র্থ|ষ্ঠ|শে|ই|তম)?/i
+var parseOrdinalNumberPattern = /\d+/i
+
+var matchEraPatterns = {
+ narrow: /^(খ্রিঃপূঃ|খ্রিঃ)/i,
+ abbreviated: /^(খ্রিঃপূর্ব|খ্রিঃ)/i,
+ wide: /^(খ্রিস্টপূর্ব|খ্রিস্টাব্দ)/i
+}
+var parseEraPatterns = {
+ narrow: [/^খ্রিঃপূঃ/i, /^খ্রিঃ/i],
+ abbreviated: [/^খ্রিঃপূর্ব/i, /^খ্রিঃ/i],
+ wide: [/^খ্রিস্টপূর্ব/i, /^খ্রিস্টাব্দ/i]
+}
+
+var matchQuarterPatterns = {
+ narrow: /^[১২৩৪]/i,
+ abbreviated: /^[১২৩৪]ত্রৈ/i,
+ wide: /^[১২৩৪](ম|য়|র্থ)? ত্রৈমাসিক/i
+}
+var parseQuarterPatterns = {
+ any: [/১/i, /২/i, /৩/i, /৪/i]
+}
+
+var matchMonthPatterns = {
+ narrow: /^(জানু|ফেব্রু|মার্চ|এপ্রিল|মে|জুন|জুলাই|আগস্ট|সেপ্ট|অক্টো|নভে|ডিসে)/i,
+ abbreviated: /^(জানু|ফেব্রু|মার্চ|এপ্রিল|মে|জুন|জুলাই|আগস্ট|সেপ্ট|অক্টো|নভে|ডিসে)/i,
+ wide: /^(জানুয়ারি|ফেব্রুয়ারি|মার্চ|এপ্রিল|মে|জুন|জুলাই|আগস্ট|সেপ্টেম্বর|অক্টোবর|নভেম্বর|ডিসেম্বর)/i
+}
+var parseMonthPatterns = {
+ any: [
+ /^জানু/i,
+ /^ফেব্রু/i,
+ /^মার্চ/i,
+ /^এপ্রিল/i,
+ /^মে/i,
+ /^জুন/i,
+ /^জুলাই/i,
+ /^আগস্ট/i,
+ /^সেপ্ট/i,
+ /^অক্টো/i,
+ /^নভে/i,
+ /^ডিসে/i
+ ]
+}
+
+var matchDayPatterns = {
+ narrow: /^(র|সো|ম|বু|বৃ|শু|শ)+/i,
+ short: /^(রবি|সোম|মঙ্গল|বুধ|বৃহ|শুক্র|শনি)+/i,
+ abbreviated: /^(রবি|সোম|মঙ্গল|বুধ|বৃহ|শুক্র|শনি)+/i,
+ wide: /^(রবিবার|সোমবার|মঙ্গলবার|বুধবার|বৃহস্পতিবার |শুক্রবার|শনিবার)+/i
+}
+var parseDayPatterns = {
+ narrow: [/^র/i, /^সো/i, /^ম/i, /^বু/i, /^বৃ/i, /^শু/i, /^শ/i],
+ short: [/^রবি/i, /^সোম/i, /^মঙ্গল/i, /^বুধ/i, /^বৃহ/i, /^শুক্র/i, /^শনি/i],
+ abbreviated: [
+ /^রবি/i,
+ /^সোম/i,
+ /^মঙ্গল/i,
+ /^বুধ/i,
+ /^বৃহ/i,
+ /^শুক্র/i,
+ /^শনি/i
+ ],
+ wide: [
+ /^রবিবার/i,
+ /^সোমবার/i,
+ /^মঙ্গলবার/i,
+ /^বুধবার/i,
+ /^বৃহস্পতিবার /i,
+ /^শুক্রবার/i,
+ /^শনিবার/i
+ ]
+}
+
+var matchDayPeriodPatterns = {
+ narrow: /^(পূ|অপ|মধ্যরাত|মধ্যাহ্ন|সকাল|বিকাল|সন্ধ্যা|রাত)/i,
+ abbreviated: /^(পূর্বাহ্ন|অপরাহ্ন|মধ্যরাত|মধ্যাহ্ন|সকাল|বিকাল|সন্ধ্যা|রাত)/i,
+ wide: /^(পূর্বাহ্ন|অপরাহ্ন|মধ্যরাত|মধ্যাহ্ন|সকাল|বিকাল|সন্ধ্যা|রাত)/i
+}
+var parseDayPeriodPatterns = {
+ any: {
+ am: /^পূ/i,
+ pm: /^অপ/i,
+ midnight: /^মধ্যরাত/i,
+ noon: /^মধ্যাহ্ন/i,
+ morning: /সকাল/i,
+ afternoon: /বিকাল/i,
+ evening: /সন্ধ্যা/i,
+ night: /রাত/i
+ }
+}
+
+var match = {
+ ordinalNumber: buildMatchPatternFn({
+ matchPattern: matchOrdinalNumberPattern,
+ parsePattern: parseOrdinalNumberPattern,
+ valueCallback: function(value) {
+ return parseInt(value, 10)
+ }
+ }),
+
+ era: buildMatchFn({
+ matchPatterns: matchEraPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseEraPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ quarter: buildMatchFn({
+ matchPatterns: matchQuarterPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseQuarterPatterns,
+ defaultParseWidth: 'any',
+ valueCallback: function(index) {
+ return index + 1
+ }
+ }),
+
+ month: buildMatchFn({
+ matchPatterns: matchMonthPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseMonthPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ day: buildMatchFn({
+ matchPatterns: matchDayPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseDayPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ dayPeriod: buildMatchFn({
+ matchPatterns: matchDayPeriodPatterns,
+ defaultMatchWidth: 'any',
+ parsePatterns: parseDayPeriodPatterns,
+ defaultParseWidth: 'any'
+ })
+}
+
+export default match
diff --git a/date-fns/src/locale/bn/index.d.ts b/date-fns/src/locale/bn/index.d.ts
new file mode 100644
index 0000000..9f9b38c
--- /dev/null
+++ b/date-fns/src/locale/bn/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { bn } from 'date-fns/locale'
+export default bn
diff --git a/date-fns/src/locale/bn/index.js b/date-fns/src/locale/bn/index.js
new file mode 100644
index 0000000..0be2d13
--- /dev/null
+++ b/date-fns/src/locale/bn/index.js
@@ -0,0 +1,29 @@
+import formatDistance from './_lib/formatDistance/index'
+import formatLong from './_lib/formatLong/index'
+import formatRelative from './_lib/formatRelative/index'
+import localize from './_lib/localize/index'
+import match from './_lib/match/index'
+
+/**
+ * @type {Locale}
+ * @category Locales
+ * @summary Bengali locale.
+ * @language Bengali
+ * @iso-639-2 ben
+ * @author Touhidur Rahman [@touhidrahman]{@link https://github.com/touhidrahman}
+ * @author Farhad Yasir [@nutboltu]{@link https://github.com/nutboltu}
+ */
+var locale = {
+ code: 'bn',
+ formatDistance: formatDistance,
+ formatLong: formatLong,
+ formatRelative: formatRelative,
+ localize: localize,
+ match: match,
+ options: {
+ weekStartsOn: 0 /* Sunday */,
+ firstWeekContainsDate: 1
+ }
+}
+
+export default locale
diff --git a/date-fns/src/locale/bn/index.js.flow b/date-fns/src/locale/bn/index.js.flow
new file mode 100644
index 0000000..b9dfe66
--- /dev/null
+++ b/date-fns/src/locale/bn/index.js.flow
@@ -0,0 +1,35 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+declare module.exports: Locale
diff --git a/date-fns/src/locale/bn/snapshot.md b/date-fns/src/locale/bn/snapshot.md
new file mode 100644
index 0000000..2505705
--- /dev/null
+++ b/date-fns/src/locale/bn/snapshot.md
@@ -0,0 +1,304 @@
+# Bengali (bn) locale
+
+## `format` and `parse`
+
+| Title | Token string | Date | `format` result | `parse` result |
+| ------------------------------- | ------------ | ------------------------ | ----------------------------------------------------------- | ------------------------ |
+| Calendar year | yo | 1987-02-11T12:13:14.015Z | ১৯৮৭তম | Invalid Date |
+| | | 0005-01-01T12:13:14.015Z | ৫ম | Invalid Date |
+| Local week-numbering year | Yo | 1987-02-11T12:13:14.015Z | ১৯৮৭তম | Invalid Date |
+| | | 0005-01-01T12:13:14.015Z | ৫ম | Invalid Date |
+| Quarter (formatting) | Qo | 2019-01-01T12:13:14.015Z | ১ম | Invalid Date |
+| | | 2019-04-01T12:13:14.015Z | ২য় | Invalid Date |
+| | QQQ | 2019-01-01T12:13:14.015Z | ১ত্রৈ | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | ২ত্রৈ | 2019-04-01T00:00:00.000Z |
+| | QQQQ | 2019-01-01T12:13:14.015Z | ১ম ত্রৈমাসিক | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | ২য় ত্রৈমাসিক | 2019-04-01T00:00:00.000Z |
+| | QQQQQ | 2019-01-01T12:13:14.015Z | ১ | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | ২ | 2019-04-01T00:00:00.000Z |
+| Quarter (stand-alone) | qo | 2019-01-01T12:13:14.015Z | ১ম | Invalid Date |
+| | | 2019-04-01T12:13:14.015Z | ২য় | Invalid Date |
+| | qqq | 2019-01-01T12:13:14.015Z | ১ত্রৈ | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | ২ত্রৈ | 2019-04-01T00:00:00.000Z |
+| | qqqq | 2019-01-01T12:13:14.015Z | ১ম ত্রৈমাসিক | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | ২য় ত্রৈমাসিক | 2019-04-01T00:00:00.000Z |
+| Month (formatting) | Mo | 2019-02-11T12:13:14.015Z | ২য় | Invalid Date |
+| | | 2019-07-10T12:13:14.015Z | ৭ম | Invalid Date |
+| | MMM | 2019-02-11T12:13:14.015Z | ফেব্রু | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | জুলাই | 2019-07-01T00:00:00.000Z |
+| | MMMM | 2019-02-11T12:13:14.015Z | ফেব্রুয়ারি | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | জুলাই | 2019-07-01T00:00:00.000Z |
+| | MMMMM | 2019-02-11T12:13:14.015Z | ফেব্রু | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | জুলাই | 2019-07-01T00:00:00.000Z |
+| Month (stand-alone) | Lo | 2019-02-11T12:13:14.015Z | ২য় | Invalid Date |
+| | | 2019-07-10T12:13:14.015Z | ৭ম | Invalid Date |
+| | LLL | 2019-02-11T12:13:14.015Z | ফেব্রু | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | জুলাই | 2019-07-01T00:00:00.000Z |
+| | LLLL | 2019-02-11T12:13:14.015Z | ফেব্রুয়ারি | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | জুলাই | 2019-07-01T00:00:00.000Z |
+| | LLLLL | 2019-02-11T12:13:14.015Z | ফেব্রু | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | জুলাই | 2019-07-01T00:00:00.000Z |
+| Local week of year | wo | 2019-01-01T12:13:14.015Z | ১ম | Invalid Date |
+| | | 2019-12-01T12:13:14.015Z | ৪৯তম | Invalid Date |
+| ISO week of year | Io | 2019-01-01T12:13:14.015Z | ১ম | Invalid Date |
+| | | 2019-12-01T12:13:14.015Z | ৪৮তম | Invalid Date |
+| Day of month | do | 2019-02-11T12:13:14.015Z | ১১ই | Invalid Date |
+| | | 2019-02-28T12:13:14.015Z | ২৮শে | Invalid Date |
+| Day of year | Do | 2019-02-11T12:13:14.015Z | ৪২তম | Invalid Date |
+| | | 2019-12-31T12:13:14.015Z | ৩৬৫তম | Invalid Date |
+| Day of week (formatting) | E | 2019-02-11T12:13:14.015Z | সোম | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | শুক্র | 2019-02-15T00:00:00.000Z |
+| | EE | 2019-02-11T12:13:14.015Z | সোম | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | শুক্র | 2019-02-15T00:00:00.000Z |
+| | EEE | 2019-02-11T12:13:14.015Z | সোম | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | শুক্র | 2019-02-15T00:00:00.000Z |
+| | EEEE | 2019-02-11T12:13:14.015Z | সোমবার | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | শুক্রবার | 2019-02-15T00:00:00.000Z |
+| | EEEEE | 2019-02-11T12:13:14.015Z | সো | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | শু | 2019-02-15T00:00:00.000Z |
+| | EEEEEE | 2019-02-11T12:13:14.015Z | সোম | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | শুক্র | 2019-02-15T00:00:00.000Z |
+| ISO day of week (formatting) | io | 2019-02-11T12:13:14.015Z | ১ম | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | ৫ম | Invalid Date |
+| | iii | 2019-02-11T12:13:14.015Z | সোম | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | শুক্র | 2019-02-15T00:00:00.000Z |
+| | iiii | 2019-02-11T12:13:14.015Z | সোমবার | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | শুক্রবার | 2019-02-15T00:00:00.000Z |
+| | iiiii | 2019-02-11T12:13:14.015Z | সো | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | শু | 2019-02-15T00:00:00.000Z |
+| | iiiiii | 2019-02-11T12:13:14.015Z | সোম | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | শুক্র | 2019-02-15T00:00:00.000Z |
+| Local day of week (formatting) | eo | 2019-02-11T12:13:14.015Z | ২য় | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | ৬ষ্ঠ | Invalid Date |
+| | eee | 2019-02-11T12:13:14.015Z | সোম | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | শুক্র | 2019-02-15T00:00:00.000Z |
+| | eeee | 2019-02-11T12:13:14.015Z | সোমবার | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | শুক্রবার | 2019-02-15T00:00:00.000Z |
+| | eeeee | 2019-02-11T12:13:14.015Z | সো | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | শু | 2019-02-15T00:00:00.000Z |
+| | eeeeee | 2019-02-11T12:13:14.015Z | সোম | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | শুক্র | 2019-02-15T00:00:00.000Z |
+| Local day of week (stand-alone) | co | 2019-02-11T12:13:14.015Z | ২য় | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | ৬ষ্ঠ | Invalid Date |
+| | ccc | 2019-02-11T12:13:14.015Z | সোম | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | শুক্র | 2019-02-15T00:00:00.000Z |
+| | cccc | 2019-02-11T12:13:14.015Z | সোমবার | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | শুক্রবার | 2019-02-15T00:00:00.000Z |
+| | ccccc | 2019-02-11T12:13:14.015Z | সো | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | শু | 2019-02-15T00:00:00.000Z |
+| | cccccc | 2019-02-11T12:13:14.015Z | সোম | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | শুক্র | 2019-02-15T00:00:00.000Z |
+| AM, PM | a | 2019-02-11T11:13:14.015Z | পূর্বাহ্ন | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | অপরাহ্ন | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | অপরাহ্ন | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | পূর্বাহ্ন | 2019-02-11T00:00:00.000Z |
+| | aa | 2019-02-11T11:13:14.015Z | পূর্বাহ্ন | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | অপরাহ্ন | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | অপরাহ্ন | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | পূর্বাহ্ন | 2019-02-11T00:00:00.000Z |
+| | aaa | 2019-02-11T11:13:14.015Z | পূর্বাহ্ন | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | অপরাহ্ন | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | অপরাহ্ন | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | পূর্বাহ্ন | 2019-02-11T00:00:00.000Z |
+| | aaaa | 2019-02-11T11:13:14.015Z | পূর্বাহ্ন | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | অপরাহ্ন | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | অপরাহ্ন | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | পূর্বাহ্ন | 2019-02-11T00:00:00.000Z |
+| | aaaaa | 2019-02-11T11:13:14.015Z | পূ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | অপ | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | অপ | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | পূ | 2019-02-11T00:00:00.000Z |
+| AM, PM, noon, midnight | b | 2019-02-11T11:13:14.015Z | পূর্বাহ্ন | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | অপরাহ্ন | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | অপরাহ্ন | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | পূর্বাহ্ন | 2019-02-11T00:00:00.000Z |
+| | bb | 2019-02-11T11:13:14.015Z | পূর্বাহ্ন | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | অপরাহ্ন | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | অপরাহ্ন | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | পূর্বাহ্ন | 2019-02-11T00:00:00.000Z |
+| | bbb | 2019-02-11T11:13:14.015Z | পূর্বাহ্ন | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | অপরাহ্ন | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | অপরাহ্ন | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | পূর্বাহ্ন | 2019-02-11T00:00:00.000Z |
+| | bbbb | 2019-02-11T11:13:14.015Z | পূর্বাহ্ন | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | অপরাহ্ন | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | অপরাহ্ন | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | পূর্বাহ্ন | 2019-02-11T00:00:00.000Z |
+| | bbbbb | 2019-02-11T11:13:14.015Z | পূ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | অপ | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | অপ | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | পূ | 2019-02-11T00:00:00.000Z |
+| Flexible day period | B | 2019-02-11T11:13:14.015Z | সকাল | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | বিকাল | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | সন্ধ্যা | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | রাত | 2019-02-11T00:00:00.000Z |
+| | BB | 2019-02-11T11:13:14.015Z | সকাল | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | বিকাল | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | সন্ধ্যা | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | রাত | 2019-02-11T00:00:00.000Z |
+| | BBB | 2019-02-11T11:13:14.015Z | সকাল | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | বিকাল | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | সন্ধ্যা | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | রাত | 2019-02-11T00:00:00.000Z |
+| | BBBB | 2019-02-11T11:13:14.015Z | সকাল | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | বিকাল | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | সন্ধ্যা | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | রাত | 2019-02-11T00:00:00.000Z |
+| | BBBBB | 2019-02-11T11:13:14.015Z | সকাল | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | বিকাল | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | সন্ধ্যা | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | রাত | 2019-02-11T00:00:00.000Z |
+| Hour [1-12] | ho | 2019-02-11T11:13:14.015Z | ১১তম | Invalid Date |
+| | | 2019-02-11T23:13:14.015Z | ১১তম | Invalid Date |
+| Hour [0-23] | Ho | 2019-02-11T11:13:14.015Z | ১১তম | Invalid Date |
+| | | 2019-02-11T23:13:14.015Z | ২৩তম | Invalid Date |
+| Hour [0-11] | Ko | 2019-02-11T11:13:14.015Z | ১১তম | Invalid Date |
+| | | 2019-02-11T23:13:14.015Z | ১১তম | Invalid Date |
+| Hour [1-24] | ko | 2019-02-11T11:13:14.015Z | ১১তম | Invalid Date |
+| | | 2019-02-11T23:13:14.015Z | ২৩তম | Invalid Date |
+| Minute | mo | 2019-01-01T12:01:14.015Z | ১ম | Invalid Date |
+| | | 2019-04-01T12:55:14.015Z | ৫৫তম | Invalid Date |
+| Second | so | 2019-01-01T12:13:01.015Z | ১ম | Invalid Date |
+| | | 2019-04-01T12:13:55.015Z | ৫৫তম | Invalid Date |
+| Long localized date | P | 1987-02-11T12:13:14.015Z | 02/11/1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 05/29/1453 | 1453-05-29T00:00:00.000Z |
+| | PP | 1987-02-11T12:13:14.015Z | ফেব্রু 11, 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | মে 29, 1453 | 1453-05-29T00:00:00.000Z |
+| | PPP | 1987-02-11T12:13:14.015Z | ফেব্রুয়ারি ১১ই, 1987 | Invalid Date |
+| | | 1453-05-29T23:59:59.999Z | মে ২৯শে, 1453 | Invalid Date |
+| | PPPP | 1987-02-11T12:13:14.015Z | বুধবার, ফেব্রুয়ারি ১১ই, 1987 | Invalid Date |
+| | | 1453-05-29T23:59:59.999Z | রবিবার, মে ২৯শে, 1453 | Invalid Date |
+| Long localized time | p | 1987-02-11T12:13:14.015Z | 12:13 অপরাহ্ন | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 11:59 অপরাহ্ন | 1453-05-29T23:59:00.000Z |
+| | pp | 1987-02-11T12:13:14.015Z | 12:13:14 অপরাহ্ন | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 11:59:59 অপরাহ্ন | 1453-05-29T23:59:59.000Z |
+| | ppp | 1987-02-11T12:13:14.015Z | 12:13:14 অপরাহ্ন GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 11:59:59 অপরাহ্ন GMT+0 | Errored |
+| | pppp | 1987-02-11T12:13:14.015Z | 12:13:14 অপরাহ্ন GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 11:59:59 অপরাহ্ন GMT+00:00 | Errored |
+| Combination of date and time | Pp | 1987-02-11T12:13:14.015Z | 02/11/1987, 12:13 অপরাহ্ন | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 05/29/1453, 11:59 অপরাহ্ন | 1453-05-29T23:59:00.000Z |
+| | PPpp | 1987-02-11T12:13:14.015Z | ফেব্রু 11, 1987, 12:13:14 অপরাহ্ন | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | মে 29, 1453, 11:59:59 অপরাহ্ন | 1453-05-29T23:59:59.000Z |
+| | PPPppp | 1987-02-11T12:13:14.015Z | ফেব্রুয়ারি ১১ই, 1987 12:13:14 অপরাহ্ন GMT+0 সময় | Invalid Date |
+| | | 1453-05-29T23:59:59.999Z | মে ২৯শে, 1453 11:59:59 অপরাহ্ন GMT+0 সময় | Invalid Date |
+| | PPPPpppp | 1987-02-11T12:13:14.015Z | বুধবার, ফেব্রুয়ারি ১১ই, 1987 12:13:14 অপরাহ্ন GMT+00:00 সময় | Invalid Date |
+| | | 1453-05-29T23:59:59.999Z | রবিবার, মে ২৯শে, 1453 11:59:59 অপরাহ্ন GMT+00:00 সময় | Invalid Date |
+
+## `formatDistance`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `includeSeconds: true` | `addSuffix: true` |
+| ------------------------ | ------------- | ---------------------- | ---------------------- |
+| 2006-01-01T00:00:00.000Z | প্রায় ৬ বছর | প্রায় ৬ বছর | প্রায় ৬ বছর এর মধ্যে |
+| 2005-01-01T00:00:00.000Z | প্রায় ৫ বছর | প্রায় ৫ বছর | প্রায় ৫ বছর এর মধ্যে |
+| 2004-01-01T00:00:00.000Z | প্রায় ৪ বছর | প্রায় ৪ বছর | প্রায় ৪ বছর এর মধ্যে |
+| 2003-01-01T00:00:00.000Z | প্রায় ৩ বছর | প্রায় ৩ বছর | প্রায় ৩ বছর এর মধ্যে |
+| 2002-01-01T00:00:00.000Z | প্রায় ২ বছর | প্রায় ২ বছর | প্রায় ২ বছর এর মধ্যে |
+| 2001-06-01T00:00:00.000Z | ১ বছরের বেশি | ১ বছরের বেশি | ১ বছরের বেশি এর মধ্যে |
+| 2001-02-01T00:00:00.000Z | প্রায় ১ বছর | প্রায় ১ বছর | প্রায় ১ বছর এর মধ্যে |
+| 2001-01-01T00:00:00.000Z | প্রায় ১ বছর | প্রায় ১ বছর | প্রায় ১ বছর এর মধ্যে |
+| 2000-06-01T00:00:00.000Z | ৫ মাস | ৫ মাস | ৫ মাস এর মধ্যে |
+| 2000-03-01T00:00:00.000Z | ২ মাস | ২ মাস | ২ মাস এর মধ্যে |
+| 2000-02-01T00:00:00.000Z | প্রায় ১ মাস | প্রায় ১ মাস | প্রায় ১ মাস এর মধ্যে |
+| 2000-01-15T00:00:00.000Z | ১৪ দিন | ১৪ দিন | ১৪ দিন এর মধ্যে |
+| 2000-01-02T00:00:00.000Z | ১ দিন | ১ দিন | ১ দিন এর মধ্যে |
+| 2000-01-01T06:00:00.000Z | প্রায় ৬ ঘন্টা | প্রায় ৬ ঘন্টা | প্রায় ৬ ঘন্টা এর মধ্যে |
+| 2000-01-01T01:00:00.000Z | প্রায় ১ ঘন্টা | প্রায় ১ ঘন্টা | প্রায় ১ ঘন্টা এর মধ্যে |
+| 2000-01-01T00:45:00.000Z | প্রায় ১ ঘন্টা | প্রায় ১ ঘন্টা | প্রায় ১ ঘন্টা এর মধ্যে |
+| 2000-01-01T00:30:00.000Z | ৩০ মিনিট | ৩০ মিনিট | ৩০ মিনিট এর মধ্যে |
+| 2000-01-01T00:15:00.000Z | ১৫ মিনিট | ১৫ মিনিট | ১৫ মিনিট এর মধ্যে |
+| 2000-01-01T00:01:00.000Z | ১ মিনিট | ১ মিনিট | ১ মিনিট এর মধ্যে |
+| 2000-01-01T00:00:25.000Z | প্রায় ১ মিনিট | আধ মিনিট | প্রায় ১ মিনিট এর মধ্যে |
+| 2000-01-01T00:00:15.000Z | প্রায় ১ মিনিট | প্রায় ২০ সেকেন্ড | প্রায় ১ মিনিট এর মধ্যে |
+| 2000-01-01T00:00:05.000Z | প্রায় ১ মিনিট | প্রায় ১০ সেকেন্ড | প্রায় ১ মিনিট এর মধ্যে |
+| 2000-01-01T00:00:00.000Z | প্রায় ১ মিনিট | প্রায় ৫ সেকেন্ড | প্রায় ১ মিনিট আগে |
+| 1999-12-31T23:59:55.000Z | প্রায় ১ মিনিট | প্রায় ১০ সেকেন্ড | প্রায় ১ মিনিট আগে |
+| 1999-12-31T23:59:45.000Z | প্রায় ১ মিনিট | প্রায় ২০ সেকেন্ড | প্রায় ১ মিনিট আগে |
+| 1999-12-31T23:59:35.000Z | প্রায় ১ মিনিট | আধ মিনিট | প্রায় ১ মিনিট আগে |
+| 1999-12-31T23:59:00.000Z | ১ মিনিট | ১ মিনিট | ১ মিনিট আগে |
+| 1999-12-31T23:45:00.000Z | ১৫ মিনিট | ১৫ মিনিট | ১৫ মিনিট আগে |
+| 1999-12-31T23:30:00.000Z | ৩০ মিনিট | ৩০ মিনিট | ৩০ মিনিট আগে |
+| 1999-12-31T23:15:00.000Z | প্রায় ১ ঘন্টা | প্রায় ১ ঘন্টা | প্রায় ১ ঘন্টা আগে |
+| 1999-12-31T23:00:00.000Z | প্রায় ১ ঘন্টা | প্রায় ১ ঘন্টা | প্রায় ১ ঘন্টা আগে |
+| 1999-12-31T18:00:00.000Z | প্রায় ৬ ঘন্টা | প্রায় ৬ ঘন্টা | প্রায় ৬ ঘন্টা আগে |
+| 1999-12-30T00:00:00.000Z | ২ দিন | ২ দিন | ২ দিন আগে |
+| 1999-12-15T00:00:00.000Z | ১৭ দিন | ১৭ দিন | ১৭ দিন আগে |
+| 1999-12-01T00:00:00.000Z | প্রায় ১ মাস | প্রায় ১ মাস | প্রায় ১ মাস আগে |
+| 1999-11-01T00:00:00.000Z | ২ মাস | ২ মাস | ২ মাস আগে |
+| 1999-06-01T00:00:00.000Z | ৭ মাস | ৭ মাস | ৭ মাস আগে |
+| 1999-01-01T00:00:00.000Z | প্রায় ১ বছর | প্রায় ১ বছর | প্রায় ১ বছর আগে |
+| 1998-12-01T00:00:00.000Z | প্রায় ১ বছর | প্রায় ১ বছর | প্রায় ১ বছর আগে |
+| 1998-06-01T00:00:00.000Z | ১ বছরের বেশি | ১ বছরের বেশি | ১ বছরের বেশি আগে |
+| 1998-01-01T00:00:00.000Z | প্রায় ২ বছর | প্রায় ২ বছর | প্রায় ২ বছর আগে |
+| 1997-01-01T00:00:00.000Z | প্রায় ৩ বছর | প্রায় ৩ বছর | প্রায় ৩ বছর আগে |
+| 1996-01-01T00:00:00.000Z | প্রায় ৪ বছর | প্রায় ৪ বছর | প্রায় ৪ বছর আগে |
+| 1995-01-01T00:00:00.000Z | প্রায় ৫ বছর | প্রায় ৫ বছর | প্রায় ৫ বছর আগে |
+| 1994-01-01T00:00:00.000Z | প্রায় ৬ বছর | প্রায় ৬ বছর | প্রায় ৬ বছর আগে |
+
+## `formatDistanceStrict`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `addSuffix: true` | With forced unit (i.e. `hour`) |
+| ------------------------ | ---------- | ------------------- | ------------------------------ |
+| 2006-01-01T00:00:00.000Z | ৬ বছর | ৬ বছর এর মধ্যে | ৫২৬০৮ ঘন্টা |
+| 2005-01-01T00:00:00.000Z | ৫ বছর | ৫ বছর এর মধ্যে | ৪৩৮৪৮ ঘন্টা |
+| 2004-01-01T00:00:00.000Z | ৪ বছর | ৪ বছর এর মধ্যে | ৩৫০৬৪ ঘন্টা |
+| 2003-01-01T00:00:00.000Z | ৩ বছর | ৩ বছর এর মধ্যে | ২৬৩০৪ ঘন্টা |
+| 2002-01-01T00:00:00.000Z | ২ বছর | ২ বছর এর মধ্যে | ১৭৫৪৪ ঘন্টা |
+| 2001-06-01T00:00:00.000Z | ১ বছর | ১ বছর এর মধ্যে | ১২৪০৮ ঘন্টা |
+| 2001-02-01T00:00:00.000Z | ১ বছর | ১ বছর এর মধ্যে | ৯৫২৮ ঘন্টা |
+| 2001-01-01T00:00:00.000Z | ১ বছর | ১ বছর এর মধ্যে | ৮৭৮৪ ঘন্টা |
+| 2000-06-01T00:00:00.000Z | ৫ মাস | ৫ মাস এর মধ্যে | ৩৬৪৮ ঘন্টা |
+| 2000-03-01T00:00:00.000Z | ২ মাস | ২ মাস এর মধ্যে | ১৪৪০ ঘন্টা |
+| 2000-02-01T00:00:00.000Z | ১ মাস | ১ মাস এর মধ্যে | ৭৪৪ ঘন্টা |
+| 2000-01-15T00:00:00.000Z | ১৪ দিন | ১৪ দিন এর মধ্যে | ৩৩৬ ঘন্টা |
+| 2000-01-02T00:00:00.000Z | ১ দিন | ১ দিন এর মধ্যে | ২৪ ঘন্টা |
+| 2000-01-01T06:00:00.000Z | ৬ ঘন্টা | ৬ ঘন্টা এর মধ্যে | ৬ ঘন্টা |
+| 2000-01-01T01:00:00.000Z | ১ ঘন্টা | ১ ঘন্টা এর মধ্যে | ১ ঘন্টা |
+| 2000-01-01T00:45:00.000Z | ৪৫ মিনিট | ৪৫ মিনিট এর মধ্যে | ১ ঘন্টা |
+| 2000-01-01T00:30:00.000Z | ৩০ মিনিট | ৩০ মিনিট এর মধ্যে | ১ ঘন্টা |
+| 2000-01-01T00:15:00.000Z | ১৫ মিনিট | ১৫ মিনিট এর মধ্যে | ০ ঘন্টা |
+| 2000-01-01T00:01:00.000Z | ১ মিনিট | ১ মিনিট এর মধ্যে | ০ ঘন্টা |
+| 2000-01-01T00:00:25.000Z | ২৫ সেকেন্ড | ২৫ সেকেন্ড এর মধ্যে | ০ ঘন্টা |
+| 2000-01-01T00:00:15.000Z | ১৫ সেকেন্ড | ১৫ সেকেন্ড এর মধ্যে | ০ ঘন্টা |
+| 2000-01-01T00:00:05.000Z | ৫ সেকেন্ড | ৫ সেকেন্ড এর মধ্যে | ০ ঘন্টা |
+| 2000-01-01T00:00:00.000Z | ০ সেকেন্ড | ০ সেকেন্ড আগে | ০ ঘন্টা |
+| 1999-12-31T23:59:55.000Z | ৫ সেকেন্ড | ৫ সেকেন্ড আগে | ০ ঘন্টা |
+| 1999-12-31T23:59:45.000Z | ১৫ সেকেন্ড | ১৫ সেকেন্ড আগে | ০ ঘন্টা |
+| 1999-12-31T23:59:35.000Z | ২৫ সেকেন্ড | ২৫ সেকেন্ড আগে | ০ ঘন্টা |
+| 1999-12-31T23:59:00.000Z | ১ মিনিট | ১ মিনিট আগে | ০ ঘন্টা |
+| 1999-12-31T23:45:00.000Z | ১৫ মিনিট | ১৫ মিনিট আগে | ০ ঘন্টা |
+| 1999-12-31T23:30:00.000Z | ৩০ মিনিট | ৩০ মিনিট আগে | ১ ঘন্টা |
+| 1999-12-31T23:15:00.000Z | ৪৫ মিনিট | ৪৫ মিনিট আগে | ১ ঘন্টা |
+| 1999-12-31T23:00:00.000Z | ১ ঘন্টা | ১ ঘন্টা আগে | ১ ঘন্টা |
+| 1999-12-31T18:00:00.000Z | ৬ ঘন্টা | ৬ ঘন্টা আগে | ৬ ঘন্টা |
+| 1999-12-30T00:00:00.000Z | ২ দিন | ২ দিন আগে | ৪৮ ঘন্টা |
+| 1999-12-15T00:00:00.000Z | ১৭ দিন | ১৭ দিন আগে | ৪০৮ ঘন্টা |
+| 1999-12-01T00:00:00.000Z | ১ মাস | ১ মাস আগে | ৭৪৪ ঘন্টা |
+| 1999-11-01T00:00:00.000Z | ২ মাস | ২ মাস আগে | ১৪৬৪ ঘন্টা |
+| 1999-06-01T00:00:00.000Z | ৭ মাস | ৭ মাস আগে | ৫১৩৬ ঘন্টা |
+| 1999-01-01T00:00:00.000Z | ১ বছর | ১ বছর আগে | ৮৭৬০ ঘন্টা |
+| 1998-12-01T00:00:00.000Z | ১ বছর | ১ বছর আগে | ৯৫০৪ ঘন্টা |
+| 1998-06-01T00:00:00.000Z | ২ বছর | ২ বছর আগে | ১৩৮৯৬ ঘন্টা |
+| 1998-01-01T00:00:00.000Z | ২ বছর | ২ বছর আগে | ১৭৫২০ ঘন্টা |
+| 1997-01-01T00:00:00.000Z | ৩ বছর | ৩ বছর আগে | ২৬২৮০ ঘন্টা |
+| 1996-01-01T00:00:00.000Z | ৪ বছর | ৪ বছর আগে | ৩৫০৬৪ ঘন্টা |
+| 1995-01-01T00:00:00.000Z | ৫ বছর | ৫ বছর আগে | ৪৩৮২৪ ঘন্টা |
+| 1994-01-01T00:00:00.000Z | ৬ বছর | ৬ বছর আগে | ৫২৫৮৪ ঘন্টা |
+
+## `formatRelative`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result |
+| ------------------------ | ----------------------------- |
+| 2000-01-10T00:00:00.000Z | 01/10/2000 |
+| 2000-01-05T00:00:00.000Z | বুধবার সময় 12:00 পূর্বাহ্ন |
+| 2000-01-02T00:00:00.000Z | আগামীকাল সময় 12:00 পূর্বাহ্ন |
+| 2000-01-01T00:00:00.000Z | আজ সময় 12:00 পূর্বাহ্ন |
+| 1999-12-31T00:00:00.000Z | গতকাল সময় 12:00 পূর্বাহ্ন |
+| 1999-12-27T00:00:00.000Z | গত সোমবার সময় 12:00 পূর্বাহ্ন |
+| 1999-12-21T00:00:00.000Z | 12/21/1999 |
diff --git a/date-fns/src/locale/ca/_lib/formatDistance/index.js b/date-fns/src/locale/ca/_lib/formatDistance/index.js
new file mode 100644
index 0000000..ebb8beb
--- /dev/null
+++ b/date-fns/src/locale/ca/_lib/formatDistance/index.js
@@ -0,0 +1,116 @@
+/**
+ * Davant de les xifres que es diuen amb vocal inicial, 1 i 11, s'apostrofen els articles el i la i la preposició de igual que si estiguessin escrits amb lletres.
+ * l'1 de juliol ('l'u')
+ * l'11 de novembre ('l'onze')
+ * l'11a clàusula del contracte ('l'onzena')
+ * la contractació d'11 jugadors ('d'onze')
+ * l'aval d'11.000 socis ('d'onze mil')
+ *
+ * Reference: https://aplicacions.llengua.gencat.cat/llc/AppJava/index.html?input_cercar=apostrofaci%25F3+davant+xifres&action=Principal&method=detall_completa&numPagina=1&idHit=11236&database=FITXES_PUB&tipusFont=Fitxes%20de%20l%27Optimot&idFont=11236&titol=apostrofaci%F3%20davant%20de%20xifres%20%2F%20apostrofaci%F3%20davant%20de%201%20i%2011&numeroResultat=1&clickLink=detall&tipusCerca=cerca.normes
+ */
+var formatDistanceLocale = {
+ lessThanXSeconds: {
+ one: "menys d'un segon",
+ eleven: "menys d'onze segons",
+ other: 'menys de {{count}} segons'
+ },
+
+ xSeconds: {
+ one: '1 segon',
+ other: '{{count}} segons'
+ },
+
+ halfAMinute: 'mig minut',
+
+ lessThanXMinutes: {
+ one: "menys d'un minut",
+ eleven: "menys d'onze minuts",
+ other: 'menys de {{count}} minuts'
+ },
+
+ xMinutes: {
+ one: '1 minut',
+ other: '{{count}} minuts'
+ },
+
+ aboutXHours: {
+ one: 'aproximadament una hora',
+ other: 'aproximadament {{count}} hores'
+ },
+
+ xHours: {
+ one: '1 hora',
+ other: '{{count}} hores'
+ },
+
+ xDays: {
+ one: '1 dia',
+ other: '{{count}} dies'
+ },
+
+ aboutXWeeks: {
+ one: 'aproximadament una setmana',
+ other: 'aproximadament {{count}} setmanes'
+ },
+
+ xWeeks: {
+ one: '1 setmana',
+ other: '{{count}} setmanes'
+ },
+
+ aboutXMonths: {
+ one: 'aproximadament un mes',
+ other: 'aproximadament {{count}} mesos'
+ },
+
+ xMonths: {
+ one: '1 mes',
+ other: '{{count}} mesos'
+ },
+
+ aboutXYears: {
+ one: 'aproximadament un any',
+ other: 'aproximadament {{count}} anys'
+ },
+
+ xYears: {
+ one: '1 any',
+ other: '{{count}} anys'
+ },
+
+ overXYears: {
+ one: "més d'un any",
+ eleven: "més d'onze anys",
+ other: 'més de {{count}} anys'
+ },
+
+ almostXYears: {
+ one: 'gairebé un any',
+ other: 'gairebé {{count}} anys'
+ }
+}
+
+export default function formatDistance(token, count, options) {
+ options = options || {}
+
+ var result
+ if (typeof formatDistanceLocale[token] === 'string') {
+ result = formatDistanceLocale[token]
+ } else if (count === 1) {
+ result = formatDistanceLocale[token].one
+ } else if (count === 11 && formatDistanceLocale[token].eleven) {
+ result = formatDistanceLocale[token].eleven
+ } else {
+ result = formatDistanceLocale[token].other.replace('{{count}}', count)
+ }
+
+ if (options.addSuffix) {
+ if (options.comparison > 0) {
+ return 'en ' + result
+ } else {
+ return 'fa ' + result
+ }
+ }
+
+ return result
+}
diff --git a/date-fns/src/locale/ca/_lib/formatLong/index.js b/date-fns/src/locale/ca/_lib/formatLong/index.js
new file mode 100644
index 0000000..26d5834
--- /dev/null
+++ b/date-fns/src/locale/ca/_lib/formatLong/index.js
@@ -0,0 +1,41 @@
+import buildFormatLongFn from '../../../_lib/buildFormatLongFn/index'
+
+var dateFormats = {
+ full: "EEEE, d 'de' MMMM y",
+ long: "d 'de' MMMM y",
+ medium: 'd MMM y',
+ short: 'dd/MM/y'
+}
+
+var timeFormats = {
+ full: 'HH:mm:ss zzzz',
+ long: 'HH:mm:ss z',
+ medium: 'HH:mm:ss',
+ short: 'HH:mm'
+}
+
+var dateTimeFormats = {
+ full: "{{date}} 'a les' {{time}}",
+ long: "{{date}} 'a les' {{time}}",
+ medium: '{{date}}, {{time}}',
+ short: '{{date}}, {{time}}'
+}
+
+var formatLong = {
+ date: buildFormatLongFn({
+ formats: dateFormats,
+ defaultWidth: 'full'
+ }),
+
+ time: buildFormatLongFn({
+ formats: timeFormats,
+ defaultWidth: 'full'
+ }),
+
+ dateTime: buildFormatLongFn({
+ formats: dateTimeFormats,
+ defaultWidth: 'full'
+ })
+}
+
+export default formatLong
diff --git a/date-fns/src/locale/ca/_lib/formatRelative/index.js b/date-fns/src/locale/ca/_lib/formatRelative/index.js
new file mode 100644
index 0000000..fbe5461
--- /dev/null
+++ b/date-fns/src/locale/ca/_lib/formatRelative/index.js
@@ -0,0 +1,24 @@
+var formatRelativeLocale = {
+ lastWeek: "'el' eeee 'passat a la' LT",
+ yesterday: "'ahir a la' p",
+ today: "'avui a la' p",
+ tomorrow: "'demà a la' p",
+ nextWeek: "eeee 'a la' p",
+ other: 'P'
+}
+
+var formatRelativeLocalePlural = {
+ lastWeek: "'el' eeee 'passat a les' p",
+ yesterday: "'ahir a les' p",
+ today: "'avui a les' p",
+ tomorrow: "'demà a les' p",
+ nextWeek: "eeee 'a les' p",
+ other: 'P'
+}
+
+export default function formatRelative(token, date, _baseDate, _options) {
+ if (date.getUTCHours() !== 1) {
+ return formatRelativeLocalePlural[token]
+ }
+ return formatRelativeLocale[token]
+}
diff --git a/date-fns/src/locale/ca/_lib/localize/index.js b/date-fns/src/locale/ca/_lib/localize/index.js
new file mode 100644
index 0000000..7e39ff6
--- /dev/null
+++ b/date-fns/src/locale/ca/_lib/localize/index.js
@@ -0,0 +1,236 @@
+import buildLocalizeFn from '../../../_lib/buildLocalizeFn/index'
+
+/**
+ * General information
+ * Reference: https://aplicacions.llengua.gencat.cat
+ * Reference: https://www.uoc.edu/portal/ca/servei-linguistic/convencions/abreviacions/simbols/simbols-habituals.html
+ */
+
+/**
+ * Abans de Crist: https://aplicacions.llengua.gencat.cat/llc/AppJava/index.html?input_cercar=abans+de+crist&action=Principal&method=detall_completa&numPagina=1&idHit=6876&database=FITXES_PUB&tipusFont=Fitxes%20de%20l%27Optimot&idFont=6876&titol=abans%20de%20Crist%20(abreviatura)%20/%20abans%20de%20Crist%20(sigla)&numeroResultat=1&clickLink=detall&tipusCerca=cerca.fitxes
+ * Desprest de Crist: https://aplicacions.llengua.gencat.cat/llc/AppJava/index.html?input_cercar=despr%E9s+de+crist&action=Principal&method=detall_completa&numPagina=1&idHit=6879&database=FITXES_PUB&tipusFont=Fitxes%20de%20l%27Optimot&idFont=6879&titol=despr%E9s%20de%20Crist%20(sigla)%20/%20despr%E9s%20de%20Crist%20(abreviatura)&numeroResultat=1&clickLink=detall&tipusCerca=cerca.fitxes
+ */
+var eraValues = {
+ narrow: ['aC', 'dC'],
+ abbreviated: ['a. de C.', 'd. de C.'],
+ wide: ['abans de Crist', 'després de Crist']
+}
+
+var quarterValues = {
+ narrow: ['1', '2', '3', '4'],
+ abbreviated: ['T1', 'T2', 'T3', 'T4'],
+ wide: ['1r trimestre', '2n trimestre', '3r trimestre', '4t trimestre']
+}
+
+/**
+ * Dins d'un text convé fer servir la forma sencera dels mesos, ja que sempre és més clar el mot sencer que l'abreviatura, encara que aquesta sigui força coneguda.
+ * Cal reservar, doncs, les abreviatures per a les llistes o classificacions, els gràfics, les taules o quadres estadístics, els textos publicitaris, etc.
+ *
+ * Reference: https://aplicacions.llengua.gencat.cat/llc/AppJava/index.html?input_cercar=abreviacions+mesos&action=Principal&method=detall_completa&numPagina=1&idHit=8402&database=FITXES_PUB&tipusFont=Fitxes%20de%20l%27Optimot&idFont=8402&titol=abreviatures%20dels%20mesos%20de%20l%27any&numeroResultat=5&clickLink=detall&tipusCerca=cerca.fitxes
+ */
+var monthValues = {
+ narrow: [
+ 'GN',
+ 'FB',
+ 'MÇ',
+ 'AB',
+ 'MG',
+ 'JN',
+ 'JL',
+ 'AG',
+ 'ST',
+ 'OC',
+ 'NV',
+ 'DS'
+ ],
+ /**
+ * Les abreviatures dels mesos de l'any es formen seguint una de les normes generals de formació d'abreviatures.
+ * S'escriu la primera síl·laba i les consonants de la síl·laba següent anteriors a la primera vocal.
+ * Els mesos de març, maig i juny no s'abreugen perquè són paraules d'una sola síl·laba.
+ */
+ abbreviated: [
+ 'gen.',
+ 'febr.',
+ 'març',
+ 'abr.',
+ 'maig',
+ 'juny',
+ 'jul.',
+ 'ag.',
+ 'set.',
+ 'oct.',
+ 'nov.',
+ 'des.'
+ ],
+ wide: [
+ 'gener',
+ 'febrer',
+ 'març',
+ 'abril',
+ 'maig',
+ 'juny',
+ 'juliol',
+ 'agost',
+ 'setembre',
+ 'octubre',
+ 'novembre',
+ 'desembre'
+ ]
+}
+
+/**
+ * Les abreviatures dels dies de la setmana comencen totes amb la lletra d.
+ * Tot seguit porten la consonant següent a la i, excepte en el cas de dimarts, dimecres i diumenge, en què aquesta consonant és la m i, per tant, hi podria haver confusió.
+ * Per evitar-ho, s'ha substituït la m per una t (en el cas de dimarts), una c (en el cas de dimecres) i una g (en el cas de diumenge), respectivament.
+ *
+ * Seguint la norma general d'ús de les abreviatures, les dels dies de la setmana sempre porten punt final.
+ * Igualment, van amb la primera lletra en majúscula quan la paraula sencera també hi aniria.
+ * En canvi, van amb la primera lletra en minúscula quan la inicial de la paraula sencera també hi aniria.
+ *
+ * Reference: https://aplicacions.llengua.gencat.cat/llc/AppJava/index.html?input_cercar=abreviatures+dies&action=Principal&method=detall_completa&numPagina=1&idHit=8387&database=FITXES_PUB&tipusFont=Fitxes%20de%20l%27Optimot&idFont=8387&titol=abreviatures%20dels%20dies%20de%20la%20setmana&numeroResultat=1&clickLink=detall&tipusCerca=cerca.tot
+ */
+var dayValues = {
+ narrow: ['dg.', 'dl.', 'dt.', 'dm.', 'dj.', 'dv.', 'ds.'],
+ short: ['dg.', 'dl.', 'dt.', 'dm.', 'dj.', 'dv.', 'ds.'],
+ abbreviated: ['dg.', 'dl.', 'dt.', 'dm.', 'dj.', 'dv.', 'ds.'],
+ wide: [
+ 'diumenge',
+ 'dilluns',
+ 'dimarts',
+ 'dimecres',
+ 'dijous',
+ 'divendres',
+ 'dissabte'
+ ]
+}
+
+/**
+ * Reference: https://aplicacions.llengua.gencat.cat/llc/AppJava/index.html?action=Principal&method=detall&input_cercar=parts+del+dia&numPagina=1&database=FITXES_PUB&idFont=12801&idHit=12801&tipusFont=Fitxes+de+l%27Optimot&numeroResultat=1&databases_avansada=&categories_avansada=&clickLink=detall&titol=Nom+de+les+parts+del+dia&tematica=&tipusCerca=cerca.fitxes
+ */
+var dayPeriodValues = {
+ narrow: {
+ am: 'am',
+ pm: 'pm',
+ midnight: 'mitjanit',
+ noon: 'migdia',
+ morning: 'matí',
+ afternoon: 'tarda',
+ evening: 'vespre',
+ night: 'nit'
+ },
+ abbreviated: {
+ am: 'a.m.',
+ pm: 'p.m.',
+ midnight: 'mitjanit',
+ noon: 'migdia',
+ morning: 'matí',
+ afternoon: 'tarda',
+ evening: 'vespre',
+ night: 'nit'
+ },
+ wide: {
+ am: 'ante meridiem',
+ pm: 'post meridiem',
+ midnight: 'mitjanit',
+ noon: 'migdia',
+ morning: 'matí',
+ afternoon: 'tarda',
+ evening: 'vespre',
+ night: 'nit'
+ }
+}
+var formattingDayPeriodValues = {
+ narrow: {
+ am: 'am',
+ pm: 'pm',
+ midnight: 'de la mitjanit',
+ noon: 'del migdia',
+ morning: 'del matí',
+ afternoon: 'de la tarda',
+ evening: 'del vespre',
+ night: 'de la nit'
+ },
+ abbreviated: {
+ am: 'AM',
+ pm: 'PM',
+ midnight: 'de la mitjanit',
+ noon: 'del migdia',
+ morning: 'del matí',
+ afternoon: 'de la tarda',
+ evening: 'del vespre',
+ night: 'de la nit'
+ },
+ wide: {
+ am: 'ante meridiem',
+ pm: 'post meridiem',
+ midnight: 'de la mitjanit',
+ noon: 'del migdia',
+ morning: 'del matí',
+ afternoon: 'de la tarda',
+ evening: 'del vespre',
+ night: 'de la nit'
+ }
+}
+
+/**
+ * Quan van en singular, els nombres ordinals es representen, en forma d’abreviatura, amb la xifra seguida de l’última lletra del mot desplegat.
+ * És optatiu posar punt després de la lletra.
+ *
+ * Reference: https://aplicacions.llengua.gencat.cat/llc/AppJava/pdf/abrevia.pdf#page=18
+ *
+ * @param {Number} dirtyNumber
+ * @param {Object} [_dirtyOptions]
+ */
+function ordinalNumber(dirtyNumber, _dirtyOptions) {
+ var number = Number(dirtyNumber)
+ var rem100 = number % 100
+ if (rem100 > 20 || rem100 < 10) {
+ switch (rem100 % 10) {
+ case 1:
+ return number + 'r'
+ case 2:
+ return number + 'n'
+ case 3:
+ return number + 'r'
+ case 4:
+ return number + 't'
+ }
+ }
+ return number + 'è'
+}
+
+var localize = {
+ ordinalNumber: ordinalNumber,
+
+ era: buildLocalizeFn({
+ values: eraValues,
+ defaultWidth: 'wide'
+ }),
+
+ quarter: buildLocalizeFn({
+ values: quarterValues,
+ defaultWidth: 'wide',
+ argumentCallback: function(quarter) {
+ return Number(quarter) - 1
+ }
+ }),
+
+ month: buildLocalizeFn({
+ values: monthValues,
+ defaultWidth: 'wide'
+ }),
+
+ day: buildLocalizeFn({
+ values: dayValues,
+ defaultWidth: 'wide'
+ }),
+
+ dayPeriod: buildLocalizeFn({
+ values: dayPeriodValues,
+ defaultWidth: 'wide',
+ formattingValues: formattingDayPeriodValues,
+ defaultFormattingWidth: 'wide'
+ })
+}
+
+export default localize
diff --git a/date-fns/src/locale/ca/_lib/match/index.js b/date-fns/src/locale/ca/_lib/match/index.js
new file mode 100644
index 0000000..0eee872
--- /dev/null
+++ b/date-fns/src/locale/ca/_lib/match/index.js
@@ -0,0 +1,163 @@
+import buildMatchFn from '../../../_lib/buildMatchFn/index'
+import buildMatchPatternFn from '../../../_lib/buildMatchPatternFn/index'
+
+var matchOrdinalNumberPattern = /^(\d+)(è|r|n|r|t)?/i
+var parseOrdinalNumberPattern = /\d+/i
+
+var matchEraPatterns = {
+ narrow: /^(aC|dC)/i,
+ abbreviated: /^(a. de C.|d. de C.)/i,
+ wide: /^(abans de Crist|despr[eé]s de Crist)/i
+}
+var parseEraPatterns = {
+ narrow: [/^aC/i, /^dC/i],
+ abbreviated: [/^(a. de C.)/i, /^(d. de C.)/i],
+ wide: [/^(abans de Crist)/i, /^(despr[eé]s de Crist)/i]
+}
+
+var matchQuarterPatterns = {
+ narrow: /^[1234]/i,
+ abbreviated: /^T[1234]/i,
+ wide: /^[1234](è|r|n|r|t)? trimestre/i
+}
+var parseQuarterPatterns = {
+ any: [/1/i, /2/i, /3/i, /4/i]
+}
+
+var matchMonthPatterns = {
+ narrow: /^(GN|FB|MÇ|AB|MG|JN|JL|AG|ST|OC|NV|DS)/i,
+ abbreviated: /^(gen.|febr.|març|abr.|maig|juny|jul.|ag.|set.|oct.|nov.|des.)/i,
+ wide: /^(gener|febrer|març|abril|maig|juny|juliol|agost|setembre|octubre|novembre|desembre)/i
+}
+var parseMonthPatterns = {
+ narrow: [
+ /^GN/i,
+ /^FB/i,
+ /^MÇ/i,
+ /^AB/i,
+ /^MG/i,
+ /^JN/i,
+ /^JL/i,
+ /^AG/i,
+ /^ST/i,
+ /^OC/i,
+ /^NV/i,
+ /^DS/i
+ ],
+ abbreviated: [
+ /^gen./i,
+ /^febr./i,
+ /^març/i,
+ /^abr./i,
+ /^maig/i,
+ /^juny/i,
+ /^jul./i,
+ /^ag./i,
+ /^set./i,
+ /^oct./i,
+ /^nov./i,
+ /^des./i
+ ],
+ wide: [
+ /^gener/i,
+ /^febrer/i,
+ /^març/i,
+ /^abril/i,
+ /^maig/i,
+ /^juny/i,
+ /^juliol/i,
+ /^agost/i,
+ /^setembre/i,
+ /^octubre/i,
+ /^novembre/i,
+ /^desembre/i
+ ]
+}
+
+var matchDayPatterns = {
+ narrow: /^(dg\.|dl\.|dt\.|dm\.|dj\.|dv\.|ds\.)/i,
+ short: /^(dg\.|dl\.|dt\.|dm\.|dj\.|dv\.|ds\.)/i,
+ abbreviated: /^(dg\.|dl\.|dt\.|dm\.|dj\.|dv\.|ds\.)/i,
+ wide: /^(diumenge|dilluns|dimarts|dimecres|dijous|divendres|dissabte)/i
+}
+var parseDayPatterns = {
+ narrow: [/^dg./i, /^dl./i, /^dt./i, /^dm./i, /^dj./i, /^dv./i, /^ds./i],
+ abbreviated: [/^dg./i, /^dl./i, /^dt./i, /^dm./i, /^dj./i, /^dv./i, /^ds./i],
+ wide: [
+ /^diumenge/i,
+ /^dilluns/i,
+ /^dimarts/i,
+ /^dimecres/i,
+ /^dijous/i,
+ /^divendres/i,
+ /^disssabte/i
+ ]
+}
+
+var matchDayPeriodPatterns = {
+ narrow: /^(a|p|mn|md|(del|de la) (matí|tarda|vespre|nit))/i,
+ abbreviated: /^([ap]\.?\s?m\.?|mitjanit|migdia|(del|de la) (matí|tarda|vespre|nit))/i,
+ wide: /^(ante meridiem|post meridiem|mitjanit|migdia|(del|de la) (matí|tarda|vespre|nit))/i
+}
+var parseDayPeriodPatterns = {
+ any: {
+ am: /^a/i,
+ pm: /^p/i,
+ midnight: /^mitjanit/i,
+ noon: /^migdia/i,
+ morning: /matí/i,
+ afternoon: /tarda/i,
+ evening: /vespre/i,
+ night: /nit/i
+ }
+}
+
+var match = {
+ ordinalNumber: buildMatchPatternFn({
+ matchPattern: matchOrdinalNumberPattern,
+ parsePattern: parseOrdinalNumberPattern,
+ valueCallback: function(value) {
+ return parseInt(value, 10)
+ }
+ }),
+
+ era: buildMatchFn({
+ matchPatterns: matchEraPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseEraPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ quarter: buildMatchFn({
+ matchPatterns: matchQuarterPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseQuarterPatterns,
+ defaultParseWidth: 'any',
+ valueCallback: function(index) {
+ return index + 1
+ }
+ }),
+
+ month: buildMatchFn({
+ matchPatterns: matchMonthPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseMonthPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ day: buildMatchFn({
+ matchPatterns: matchDayPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseDayPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ dayPeriod: buildMatchFn({
+ matchPatterns: matchDayPeriodPatterns,
+ defaultMatchWidth: 'any',
+ parsePatterns: parseDayPeriodPatterns,
+ defaultParseWidth: 'any'
+ })
+}
+
+export default match
diff --git a/date-fns/src/locale/ca/index.d.ts b/date-fns/src/locale/ca/index.d.ts
new file mode 100644
index 0000000..82742f7
--- /dev/null
+++ b/date-fns/src/locale/ca/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { ca } from 'date-fns/locale'
+export default ca
diff --git a/date-fns/src/locale/ca/index.js b/date-fns/src/locale/ca/index.js
new file mode 100644
index 0000000..3498659
--- /dev/null
+++ b/date-fns/src/locale/ca/index.js
@@ -0,0 +1,31 @@
+import formatDistance from './_lib/formatDistance/index'
+import formatLong from './_lib/formatLong/index'
+import formatRelative from './_lib/formatRelative/index'
+import localize from './_lib/localize/index'
+import match from './_lib/match/index'
+
+/**
+ * @type {Locale}
+ * @category Locales
+ * @summary Catalan locale.
+ * @language Catalan
+ * @iso-639-2 cat
+ * @author Guillermo Grau [@guigrpa]{@link https://github.com/guigrpa}
+ * @author Alex Vizcaino [@avizcaino]{@link https://github.com/avizcaino}
+ */
+var locale = {
+ code: 'ca',
+ formatDistance: formatDistance,
+ formatLong: formatLong,
+ formatRelative: formatRelative,
+ localize: localize,
+ match: match,
+ options: {
+ weekStartsOn: 1 /* Monday */,
+ firstWeekContainsDate: 4
+ }
+}
+
+export default locale
+
+// throw new Error('ca locale is currently unavailable. Please check the progress of converting this locale to v2.0.0 in this issue on Github: TBA')
diff --git a/date-fns/src/locale/ca/index.js.flow b/date-fns/src/locale/ca/index.js.flow
new file mode 100644
index 0000000..b9dfe66
--- /dev/null
+++ b/date-fns/src/locale/ca/index.js.flow
@@ -0,0 +1,35 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+declare module.exports: Locale
diff --git a/date-fns/src/locale/ca/snapshot.md b/date-fns/src/locale/ca/snapshot.md
new file mode 100644
index 0000000..9fa73c8
--- /dev/null
+++ b/date-fns/src/locale/ca/snapshot.md
@@ -0,0 +1,304 @@
+# Catalan (ca) locale
+
+## `format` and `parse`
+
+| Title | Token string | Date | `format` result | `parse` result |
+| ------------------------------- | ------------ | ------------------------ | ---------------------------------------------------- | ------------------------ |
+| Calendar year | yo | 1987-02-11T12:13:14.015Z | 1987è | 1987-01-01T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 5è | 0005-01-01T00:00:00.000Z |
+| Local week-numbering year | Yo | 1987-02-11T12:13:14.015Z | 1987è | 1986-12-29T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 4t | 0003-12-29T00:00:00.000Z |
+| Quarter (formatting) | Qo | 2019-01-01T12:13:14.015Z | 1r | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2n | 2019-04-01T00:00:00.000Z |
+| | QQQ | 2019-01-01T12:13:14.015Z | T1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | T2 | 2019-04-01T00:00:00.000Z |
+| | QQQQ | 2019-01-01T12:13:14.015Z | 1r trimestre | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2n trimestre | 2019-04-01T00:00:00.000Z |
+| | QQQQQ | 2019-01-01T12:13:14.015Z | 1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2 | 2019-04-01T00:00:00.000Z |
+| Quarter (stand-alone) | qo | 2019-01-01T12:13:14.015Z | 1r | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2n | 2019-04-01T00:00:00.000Z |
+| | qqq | 2019-01-01T12:13:14.015Z | T1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | T2 | 2019-04-01T00:00:00.000Z |
+| | qqqq | 2019-01-01T12:13:14.015Z | 1r trimestre | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2n trimestre | 2019-04-01T00:00:00.000Z |
+| Month (formatting) | Mo | 2019-02-11T12:13:14.015Z | 2n | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7è | 2019-07-01T00:00:00.000Z |
+| | MMM | 2019-02-11T12:13:14.015Z | febr. | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | jul. | 2019-07-01T00:00:00.000Z |
+| | MMMM | 2019-02-11T12:13:14.015Z | febrer | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | juliol | 2019-07-01T00:00:00.000Z |
+| | MMMMM | 2019-02-11T12:13:14.015Z | FB | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | JL | 2019-07-01T00:00:00.000Z |
+| Month (stand-alone) | Lo | 2019-02-11T12:13:14.015Z | 2n | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7è | 2019-07-01T00:00:00.000Z |
+| | LLL | 2019-02-11T12:13:14.015Z | febr. | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | jul. | 2019-07-01T00:00:00.000Z |
+| | LLLL | 2019-02-11T12:13:14.015Z | febrer | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | juliol | 2019-07-01T00:00:00.000Z |
+| | LLLLL | 2019-02-11T12:13:14.015Z | FB | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | JL | 2019-07-01T00:00:00.000Z |
+| Local week of year | wo | 2019-01-01T12:13:14.015Z | 1r | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48è | 2019-11-25T00:00:00.000Z |
+| ISO week of year | Io | 2019-01-01T12:13:14.015Z | 1r | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48è | 2019-11-25T00:00:00.000Z |
+| Day of month | do | 2019-02-11T12:13:14.015Z | 11è | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-28T12:13:14.015Z | 28è | 2019-02-28T00:00:00.000Z |
+| Day of year | Do | 2019-02-11T12:13:14.015Z | 42n | 2019-02-11T00:00:00.000Z |
+| | | 2019-12-31T12:13:14.015Z | 365è | 2019-12-31T00:00:00.000Z |
+| Day of week (formatting) | E | 2019-02-11T12:13:14.015Z | dl. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | dv. | 2019-02-15T00:00:00.000Z |
+| | EE | 2019-02-11T12:13:14.015Z | dl. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | dv. | 2019-02-15T00:00:00.000Z |
+| | EEE | 2019-02-11T12:13:14.015Z | dl. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | dv. | 2019-02-15T00:00:00.000Z |
+| | EEEE | 2019-02-11T12:13:14.015Z | dilluns | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | divendres | 2019-02-15T00:00:00.000Z |
+| | EEEEE | 2019-02-11T12:13:14.015Z | dl. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | dv. | 2019-02-15T00:00:00.000Z |
+| | EEEEEE | 2019-02-11T12:13:14.015Z | dl. | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | dv. | Invalid Date |
+| ISO day of week (formatting) | io | 2019-02-11T12:13:14.015Z | 1r | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5è | 2019-02-15T00:00:00.000Z |
+| | iii | 2019-02-11T12:13:14.015Z | dl. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | dv. | 2019-02-15T00:00:00.000Z |
+| | iiii | 2019-02-11T12:13:14.015Z | dilluns | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | divendres | 2019-02-15T00:00:00.000Z |
+| | iiiii | 2019-02-11T12:13:14.015Z | dl. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | dv. | 2019-02-15T00:00:00.000Z |
+| | iiiiii | 2019-02-11T12:13:14.015Z | dl. | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | dv. | Invalid Date |
+| Local day of week (formatting) | eo | 2019-02-11T12:13:14.015Z | 1r | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5è | 2019-02-15T00:00:00.000Z |
+| | eee | 2019-02-11T12:13:14.015Z | dl. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | dv. | 2019-02-15T00:00:00.000Z |
+| | eeee | 2019-02-11T12:13:14.015Z | dilluns | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | divendres | 2019-02-15T00:00:00.000Z |
+| | eeeee | 2019-02-11T12:13:14.015Z | dl. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | dv. | 2019-02-15T00:00:00.000Z |
+| | eeeeee | 2019-02-11T12:13:14.015Z | dl. | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | dv. | Invalid Date |
+| Local day of week (stand-alone) | co | 2019-02-11T12:13:14.015Z | 1r | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5è | 2019-02-15T00:00:00.000Z |
+| | ccc | 2019-02-11T12:13:14.015Z | dl. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | dv. | 2019-02-15T00:00:00.000Z |
+| | cccc | 2019-02-11T12:13:14.015Z | dilluns | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | divendres | 2019-02-15T00:00:00.000Z |
+| | ccccc | 2019-02-11T12:13:14.015Z | dl. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | dv. | 2019-02-15T00:00:00.000Z |
+| | cccccc | 2019-02-11T12:13:14.015Z | dl. | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | dv. | Invalid Date |
+| AM, PM | a | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | aa | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | aaa | 2019-02-11T11:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | aaaa | 2019-02-11T11:13:14.015Z | ante meridiem | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | post meridiem | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | post meridiem | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ante meridiem | 2019-02-11T00:00:00.000Z |
+| | aaaaa | 2019-02-11T11:13:14.015Z | am | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | pm | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | pm | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | am | Invalid Date |
+| AM, PM, noon, midnight | b | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | bb | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | bbb | 2019-02-11T11:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | bbbb | 2019-02-11T11:13:14.015Z | ante meridiem | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | post meridiem | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | post meridiem | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ante meridiem | 2019-02-11T00:00:00.000Z |
+| | bbbbb | 2019-02-11T11:13:14.015Z | am | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | pm | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | pm | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | am | Invalid Date |
+| Flexible day period | B | 2019-02-11T11:13:14.015Z | del matí | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | de la tarda | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | del vespre | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | de la nit | 2019-02-11T00:00:00.000Z |
+| | BB | 2019-02-11T11:13:14.015Z | del matí | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | de la tarda | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | del vespre | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | de la nit | 2019-02-11T00:00:00.000Z |
+| | BBB | 2019-02-11T11:13:14.015Z | del matí | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | de la tarda | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | del vespre | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | de la nit | 2019-02-11T00:00:00.000Z |
+| | BBBB | 2019-02-11T11:13:14.015Z | del matí | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | de la tarda | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | del vespre | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | de la nit | 2019-02-11T00:00:00.000Z |
+| | BBBBB | 2019-02-11T11:13:14.015Z | del matí | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | de la tarda | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | del vespre | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | de la nit | 2019-02-11T00:00:00.000Z |
+| Hour [1-12] | ho | 2019-02-11T11:13:14.015Z | 11è | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11è | 2019-02-11T23:00:00.000Z |
+| Hour [0-23] | Ho | 2019-02-11T11:13:14.015Z | 11è | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23r | 2019-02-11T23:00:00.000Z |
+| Hour [0-11] | Ko | 2019-02-11T11:13:14.015Z | 11è | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11è | 2019-02-11T23:00:00.000Z |
+| Hour [1-24] | ko | 2019-02-11T11:13:14.015Z | 11è | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23r | 2019-02-11T23:00:00.000Z |
+| Minute | mo | 2019-01-01T12:01:14.015Z | 1r | 2019-01-01T12:01:00.000Z |
+| | | 2019-04-01T12:55:14.015Z | 55è | 2019-04-01T12:55:00.000Z |
+| Second | so | 2019-01-01T12:13:01.015Z | 1r | 2019-01-01T12:13:01.000Z |
+| | | 2019-04-01T12:13:55.015Z | 55è | 2019-04-01T12:13:55.000Z |
+| Long localized date | P | 1987-02-11T12:13:14.015Z | 11/02/1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29/05/1453 | 1453-05-29T00:00:00.000Z |
+| | PP | 1987-02-11T12:13:14.015Z | 11 febr. 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 maig 1453 | 1453-05-29T00:00:00.000Z |
+| | PPP | 1987-02-11T12:13:14.015Z | 11 de febrer 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 de maig 1453 | 1453-05-29T00:00:00.000Z |
+| | PPPP | 1987-02-11T12:13:14.015Z | dimecres, 11 de febrer 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | diumenge, 29 de maig 1453 | 1453-05-29T00:00:00.000Z |
+| Long localized time | p | 1987-02-11T12:13:14.015Z | 12:13 | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 23:59 | 1453-05-29T23:59:00.000Z |
+| | pp | 1987-02-11T12:13:14.015Z | 12:13:14 | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 | 1453-05-29T23:59:59.000Z |
+| | ppp | 1987-02-11T12:13:14.015Z | 12:13:14 GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 GMT+0 | Errored |
+| | pppp | 1987-02-11T12:13:14.015Z | 12:13:14 GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 GMT+00:00 | Errored |
+| Combination of date and time | Pp | 1987-02-11T12:13:14.015Z | 11/02/1987, 12:13 | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29/05/1453, 23:59 | 1453-05-29T23:59:00.000Z |
+| | PPpp | 1987-02-11T12:13:14.015Z | 11 febr. 1987, 12:13:14 | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 maig 1453, 23:59:59 | 1453-05-29T23:59:59.000Z |
+| | PPPppp | 1987-02-11T12:13:14.015Z | 11 de febrer 1987 a les 12:13:14 GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 29 de maig 1453 a les 23:59:59 GMT+0 | Errored |
+| | PPPPpppp | 1987-02-11T12:13:14.015Z | dimecres, 11 de febrer 1987 a les 12:13:14 GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | diumenge, 29 de maig 1453 a les 23:59:59 GMT+00:00 | Errored |
+
+## `formatDistance`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `includeSeconds: true` | `addSuffix: true` |
+| ------------------------ | ----------------------- | ----------------------- | -------------------------- |
+| 2006-01-01T00:00:00.000Z | aproximadament 6 anys | aproximadament 6 anys | en aproximadament 6 anys |
+| 2005-01-01T00:00:00.000Z | aproximadament 5 anys | aproximadament 5 anys | en aproximadament 5 anys |
+| 2004-01-01T00:00:00.000Z | aproximadament 4 anys | aproximadament 4 anys | en aproximadament 4 anys |
+| 2003-01-01T00:00:00.000Z | aproximadament 3 anys | aproximadament 3 anys | en aproximadament 3 anys |
+| 2002-01-01T00:00:00.000Z | aproximadament 2 anys | aproximadament 2 anys | en aproximadament 2 anys |
+| 2001-06-01T00:00:00.000Z | més d'un any | més d'un any | en més d'un any |
+| 2001-02-01T00:00:00.000Z | aproximadament un any | aproximadament un any | en aproximadament un any |
+| 2001-01-01T00:00:00.000Z | aproximadament un any | aproximadament un any | en aproximadament un any |
+| 2000-06-01T00:00:00.000Z | 5 mesos | 5 mesos | en 5 mesos |
+| 2000-03-01T00:00:00.000Z | 2 mesos | 2 mesos | en 2 mesos |
+| 2000-02-01T00:00:00.000Z | aproximadament un mes | aproximadament un mes | en aproximadament un mes |
+| 2000-01-15T00:00:00.000Z | 14 dies | 14 dies | en 14 dies |
+| 2000-01-02T00:00:00.000Z | 1 dia | 1 dia | en 1 dia |
+| 2000-01-01T06:00:00.000Z | aproximadament 6 hores | aproximadament 6 hores | en aproximadament 6 hores |
+| 2000-01-01T01:00:00.000Z | aproximadament una hora | aproximadament una hora | en aproximadament una hora |
+| 2000-01-01T00:45:00.000Z | aproximadament una hora | aproximadament una hora | en aproximadament una hora |
+| 2000-01-01T00:30:00.000Z | 30 minuts | 30 minuts | en 30 minuts |
+| 2000-01-01T00:15:00.000Z | 15 minuts | 15 minuts | en 15 minuts |
+| 2000-01-01T00:01:00.000Z | 1 minut | 1 minut | en 1 minut |
+| 2000-01-01T00:00:25.000Z | menys d'un minut | mig minut | en menys d'un minut |
+| 2000-01-01T00:00:15.000Z | menys d'un minut | menys de 20 segons | en menys d'un minut |
+| 2000-01-01T00:00:05.000Z | menys d'un minut | menys de 10 segons | en menys d'un minut |
+| 2000-01-01T00:00:00.000Z | menys d'un minut | menys de 5 segons | fa menys d'un minut |
+| 1999-12-31T23:59:55.000Z | menys d'un minut | menys de 10 segons | fa menys d'un minut |
+| 1999-12-31T23:59:45.000Z | menys d'un minut | menys de 20 segons | fa menys d'un minut |
+| 1999-12-31T23:59:35.000Z | menys d'un minut | mig minut | fa menys d'un minut |
+| 1999-12-31T23:59:00.000Z | 1 minut | 1 minut | fa 1 minut |
+| 1999-12-31T23:45:00.000Z | 15 minuts | 15 minuts | fa 15 minuts |
+| 1999-12-31T23:30:00.000Z | 30 minuts | 30 minuts | fa 30 minuts |
+| 1999-12-31T23:15:00.000Z | aproximadament una hora | aproximadament una hora | fa aproximadament una hora |
+| 1999-12-31T23:00:00.000Z | aproximadament una hora | aproximadament una hora | fa aproximadament una hora |
+| 1999-12-31T18:00:00.000Z | aproximadament 6 hores | aproximadament 6 hores | fa aproximadament 6 hores |
+| 1999-12-30T00:00:00.000Z | 2 dies | 2 dies | fa 2 dies |
+| 1999-12-15T00:00:00.000Z | 17 dies | 17 dies | fa 17 dies |
+| 1999-12-01T00:00:00.000Z | aproximadament un mes | aproximadament un mes | fa aproximadament un mes |
+| 1999-11-01T00:00:00.000Z | 2 mesos | 2 mesos | fa 2 mesos |
+| 1999-06-01T00:00:00.000Z | 7 mesos | 7 mesos | fa 7 mesos |
+| 1999-01-01T00:00:00.000Z | aproximadament un any | aproximadament un any | fa aproximadament un any |
+| 1998-12-01T00:00:00.000Z | aproximadament un any | aproximadament un any | fa aproximadament un any |
+| 1998-06-01T00:00:00.000Z | més d'un any | més d'un any | fa més d'un any |
+| 1998-01-01T00:00:00.000Z | aproximadament 2 anys | aproximadament 2 anys | fa aproximadament 2 anys |
+| 1997-01-01T00:00:00.000Z | aproximadament 3 anys | aproximadament 3 anys | fa aproximadament 3 anys |
+| 1996-01-01T00:00:00.000Z | aproximadament 4 anys | aproximadament 4 anys | fa aproximadament 4 anys |
+| 1995-01-01T00:00:00.000Z | aproximadament 5 anys | aproximadament 5 anys | fa aproximadament 5 anys |
+| 1994-01-01T00:00:00.000Z | aproximadament 6 anys | aproximadament 6 anys | fa aproximadament 6 anys |
+
+## `formatDistanceStrict`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `addSuffix: true` | With forced unit (i.e. `hour`) |
+| ------------------------ | --------- | ----------------- | ------------------------------ |
+| 2006-01-01T00:00:00.000Z | 6 anys | en 6 anys | 52608 hores |
+| 2005-01-01T00:00:00.000Z | 5 anys | en 5 anys | 43848 hores |
+| 2004-01-01T00:00:00.000Z | 4 anys | en 4 anys | 35064 hores |
+| 2003-01-01T00:00:00.000Z | 3 anys | en 3 anys | 26304 hores |
+| 2002-01-01T00:00:00.000Z | 2 anys | en 2 anys | 17544 hores |
+| 2001-06-01T00:00:00.000Z | 1 any | en 1 any | 12408 hores |
+| 2001-02-01T00:00:00.000Z | 1 any | en 1 any | 9528 hores |
+| 2001-01-01T00:00:00.000Z | 1 any | en 1 any | 8784 hores |
+| 2000-06-01T00:00:00.000Z | 5 mesos | en 5 mesos | 3648 hores |
+| 2000-03-01T00:00:00.000Z | 2 mesos | en 2 mesos | 1440 hores |
+| 2000-02-01T00:00:00.000Z | 1 mes | en 1 mes | 744 hores |
+| 2000-01-15T00:00:00.000Z | 14 dies | en 14 dies | 336 hores |
+| 2000-01-02T00:00:00.000Z | 1 dia | en 1 dia | 24 hores |
+| 2000-01-01T06:00:00.000Z | 6 hores | en 6 hores | 6 hores |
+| 2000-01-01T01:00:00.000Z | 1 hora | en 1 hora | 1 hora |
+| 2000-01-01T00:45:00.000Z | 45 minuts | en 45 minuts | 1 hora |
+| 2000-01-01T00:30:00.000Z | 30 minuts | en 30 minuts | 1 hora |
+| 2000-01-01T00:15:00.000Z | 15 minuts | en 15 minuts | 0 hores |
+| 2000-01-01T00:01:00.000Z | 1 minut | en 1 minut | 0 hores |
+| 2000-01-01T00:00:25.000Z | 25 segons | en 25 segons | 0 hores |
+| 2000-01-01T00:00:15.000Z | 15 segons | en 15 segons | 0 hores |
+| 2000-01-01T00:00:05.000Z | 5 segons | en 5 segons | 0 hores |
+| 2000-01-01T00:00:00.000Z | 0 segons | fa 0 segons | 0 hores |
+| 1999-12-31T23:59:55.000Z | 5 segons | fa 5 segons | 0 hores |
+| 1999-12-31T23:59:45.000Z | 15 segons | fa 15 segons | 0 hores |
+| 1999-12-31T23:59:35.000Z | 25 segons | fa 25 segons | 0 hores |
+| 1999-12-31T23:59:00.000Z | 1 minut | fa 1 minut | 0 hores |
+| 1999-12-31T23:45:00.000Z | 15 minuts | fa 15 minuts | 0 hores |
+| 1999-12-31T23:30:00.000Z | 30 minuts | fa 30 minuts | 1 hora |
+| 1999-12-31T23:15:00.000Z | 45 minuts | fa 45 minuts | 1 hora |
+| 1999-12-31T23:00:00.000Z | 1 hora | fa 1 hora | 1 hora |
+| 1999-12-31T18:00:00.000Z | 6 hores | fa 6 hores | 6 hores |
+| 1999-12-30T00:00:00.000Z | 2 dies | fa 2 dies | 48 hores |
+| 1999-12-15T00:00:00.000Z | 17 dies | fa 17 dies | 408 hores |
+| 1999-12-01T00:00:00.000Z | 1 mes | fa 1 mes | 744 hores |
+| 1999-11-01T00:00:00.000Z | 2 mesos | fa 2 mesos | 1464 hores |
+| 1999-06-01T00:00:00.000Z | 7 mesos | fa 7 mesos | 5136 hores |
+| 1999-01-01T00:00:00.000Z | 1 any | fa 1 any | 8760 hores |
+| 1998-12-01T00:00:00.000Z | 1 any | fa 1 any | 9504 hores |
+| 1998-06-01T00:00:00.000Z | 2 anys | fa 2 anys | 13896 hores |
+| 1998-01-01T00:00:00.000Z | 2 anys | fa 2 anys | 17520 hores |
+| 1997-01-01T00:00:00.000Z | 3 anys | fa 3 anys | 26280 hores |
+| 1996-01-01T00:00:00.000Z | 4 anys | fa 4 anys | 35064 hores |
+| 1995-01-01T00:00:00.000Z | 5 anys | fa 5 anys | 43824 hores |
+| 1994-01-01T00:00:00.000Z | 6 anys | fa 6 anys | 52584 hores |
+
+## `formatRelative`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result |
+| ------------------------ | ----------------------------- |
+| 2000-01-10T00:00:00.000Z | 10/01/2000 |
+| 2000-01-05T00:00:00.000Z | dimecres a les 00:00 |
+| 2000-01-02T00:00:00.000Z | demà a les 00:00 |
+| 2000-01-01T00:00:00.000Z | avui a les 00:00 |
+| 1999-12-31T00:00:00.000Z | ahir a les 00:00 |
+| 1999-12-27T00:00:00.000Z | el dilluns passat a les 00:00 |
+| 1999-12-21T00:00:00.000Z | 21/12/1999 |
diff --git a/date-fns/src/locale/cs/_lib/formatDistance/index.js b/date-fns/src/locale/cs/_lib/formatDistance/index.js
new file mode 100644
index 0000000..16f29a1
--- /dev/null
+++ b/date-fns/src/locale/cs/_lib/formatDistance/index.js
@@ -0,0 +1,318 @@
+var formatDistanceLocale = {
+ lessThanXSeconds: {
+ one: {
+ regular: 'méně než vteřina',
+ past: 'před méně než vteřinou',
+ future: 'za méně než vteřinu'
+ },
+ few: {
+ regular: 'méně než {{count}} vteřiny',
+ past: 'před méně než {{count}} vteřinami',
+ future: 'za méně než {{count}} vteřiny'
+ },
+ many: {
+ regular: 'méně než {{count}} vteřin',
+ past: 'před méně než {{count}} vteřinami',
+ future: 'za méně než {{count}} vteřin'
+ }
+ },
+
+ xSeconds: {
+ one: {
+ regular: 'vteřina',
+ past: 'před vteřinou',
+ future: 'za vteřinu'
+ },
+ few: {
+ regular: '{{count}} vteřiny',
+ past: 'před {{count}} vteřinami',
+ future: 'za {{count}} vteřiny'
+ },
+ many: {
+ regular: '{{count}} vteřin',
+ past: 'před {{count}} vteřinami',
+ future: 'za {{count}} vteřin'
+ }
+ },
+
+ halfAMinute: {
+ other: {
+ regular: 'půl minuty',
+ past: 'před půl minutou',
+ future: 'za půl minuty'
+ }
+ },
+
+ lessThanXMinutes: {
+ one: {
+ regular: 'méně než minuta',
+ past: 'před méně než minutou',
+ future: 'za méně než minutu'
+ },
+ few: {
+ regular: 'méně než {{count}} minuty',
+ past: 'před méně než {{count}} minutami',
+ future: 'za méně než {{count}} minuty'
+ },
+ many: {
+ regular: 'méně než {{count}} minut',
+ past: 'před méně než {{count}} minutami',
+ future: 'za méně než {{count}} minut'
+ }
+ },
+
+ xMinutes: {
+ one: {
+ regular: 'minuta',
+ past: 'před minutou',
+ future: 'za minutu'
+ },
+ few: {
+ regular: '{{count}} minuty',
+ past: 'před {{count}} minutami',
+ future: 'za {{count}} minuty'
+ },
+ many: {
+ regular: '{{count}} minut',
+ past: 'před {{count}} minutami',
+ future: 'za {{count}} minut'
+ }
+ },
+
+ aboutXHours: {
+ one: {
+ regular: 'přibližně hodina',
+ past: 'přibližně před hodinou',
+ future: 'přibližně za hodinu'
+ },
+ few: {
+ regular: 'přibližně {{count}} hodiny',
+ past: 'přibližně před {{count}} hodinami',
+ future: 'přibližně za {{count}} hodiny'
+ },
+ many: {
+ regular: 'přibližně {{count}} hodin',
+ past: 'přibližně před {{count}} hodinami',
+ future: 'přibližně za {{count}} hodin'
+ }
+ },
+
+ xHours: {
+ one: {
+ regular: 'hodina',
+ past: 'před hodinou',
+ future: 'za hodinu'
+ },
+ few: {
+ regular: '{{count}} hodiny',
+ past: 'před {{count}} hodinami',
+ future: 'za {{count}} hodiny'
+ },
+ many: {
+ regular: '{{count}} hodin',
+ past: 'před {{count}} hodinami',
+ future: 'za {{count}} hodin'
+ }
+ },
+
+ xDays: {
+ one: {
+ regular: 'den',
+ past: 'před dnem',
+ future: 'za den'
+ },
+ few: {
+ regular: '{{count}} dny',
+ past: 'před {{count}} dny',
+ future: 'za {{count}} dny'
+ },
+ many: {
+ regular: '{{count}} dní',
+ past: 'před {{count}} dny',
+ future: 'za {{count}} dní'
+ }
+ },
+
+ aboutXWeeks: {
+ one: {
+ regular: 'přibližně týden',
+ past: 'přibližně před týdnem',
+ future: 'přibližně za týden'
+ },
+
+ few: {
+ regular: 'přibližně {{count}} týdny',
+ past: 'přibližně před {{count}} týdny',
+ future: 'přibližně za {{count}} týdny'
+ },
+
+ many: {
+ regular: 'přibližně {{count}} týdnů',
+ past: 'přibližně před {{count}} týdny',
+ future: 'přibližně za {{count}} týdnů'
+ }
+ },
+
+ xWeeks: {
+ one: {
+ regular: 'týden',
+ past: 'před týdnem',
+ future: 'za týden'
+ },
+
+ few: {
+ regular: '{{count}} týdny',
+ past: 'před {{count}} týdny',
+ future: 'za {{count}} týdny'
+ },
+
+ many: {
+ regular: '{{count}} týdnů',
+ past: 'před {{count}} týdny',
+ future: 'za {{count}} týdnů'
+ }
+ },
+
+ aboutXMonths: {
+ one: {
+ regular: 'přibližně měsíc',
+ past: 'přibližně před měsícem',
+ future: 'přibližně za měsíc'
+ },
+
+ few: {
+ regular: 'přibližně {{count}} měsíce',
+ past: 'přibližně před {{count}} měsíci',
+ future: 'přibližně za {{count}} měsíce'
+ },
+
+ many: {
+ regular: 'přibližně {{count}} měsíců',
+ past: 'přibližně před {{count}} měsíci',
+ future: 'přibližně za {{count}} měsíců'
+ }
+ },
+
+ xMonths: {
+ one: {
+ regular: 'měsíc',
+ past: 'před měsícem',
+ future: 'za měsíc'
+ },
+
+ few: {
+ regular: '{{count}} měsíce',
+ past: 'před {{count}} měsíci',
+ future: 'za {{count}} měsíce'
+ },
+
+ many: {
+ regular: '{{count}} měsíců',
+ past: 'před {{count}} měsíci',
+ future: 'za {{count}} měsíců'
+ }
+ },
+
+ aboutXYears: {
+ one: {
+ regular: 'přibližně rok',
+ past: 'přibližně před rokem',
+ future: 'přibližně za rok'
+ },
+ few: {
+ regular: 'přibližně {{count}} roky',
+ past: 'přibližně před {{count}} roky',
+ future: 'přibližně za {{count}} roky'
+ },
+ many: {
+ regular: 'přibližně {{count}} roků',
+ past: 'přibližně před {{count}} roky',
+ future: 'přibližně za {{count}} roků'
+ }
+ },
+
+ xYears: {
+ one: {
+ regular: 'rok',
+ past: 'před rokem',
+ future: 'za rok'
+ },
+ few: {
+ regular: '{{count}} roky',
+ past: 'před {{count}} roky',
+ future: 'za {{count}} roky'
+ },
+ many: {
+ regular: '{{count}} roků',
+ past: 'před {{count}} roky',
+ future: 'za {{count}} roků'
+ }
+ },
+
+ overXYears: {
+ one: {
+ regular: 'více než rok',
+ past: 'před více než rokem',
+ future: 'za více než rok'
+ },
+ few: {
+ regular: 'více než {{count}} roky',
+ past: 'před více než {{count}} roky',
+ future: 'za více než {{count}} roky'
+ },
+ many: {
+ regular: 'více než {{count}} roků',
+ past: 'před více než {{count}} roky',
+ future: 'za více než {{count}} roků'
+ }
+ },
+
+ almostXYears: {
+ one: {
+ regular: 'skoro rok',
+ past: 'skoro před rokem',
+ future: 'skoro za rok'
+ },
+ few: {
+ regular: 'skoro {{count}} roky',
+ past: 'skoro před {{count}} roky',
+ future: 'skoro za {{count}} roky'
+ },
+ many: {
+ regular: 'skoro {{count}} roků',
+ past: 'skoro před {{count}} roky',
+ future: 'skoro za {{count}} roků'
+ }
+ }
+}
+
+export default function formatDistance(token, count, options) {
+ options = options || {}
+ var scheme = formatDistanceLocale[token]
+
+ // cs pluralization
+ var pluralToken
+ if (typeof scheme.other === 'object') {
+ pluralToken = 'other'
+ } else if (count === 1) {
+ pluralToken = 'one'
+ } else if ((count > 1 && count < 5) || count === 0) {
+ pluralToken = 'few'
+ } else {
+ pluralToken = 'many'
+ }
+
+ // times
+ var suffixExist = options.addSuffix === true
+ var comparison = options.comparison
+ var timeToken
+ if (suffixExist && comparison === -1) {
+ timeToken = 'past'
+ } else if (suffixExist && comparison === 1) {
+ timeToken = 'future'
+ } else {
+ timeToken = 'regular'
+ }
+
+ return scheme[pluralToken][timeToken].replace('{{count}}', count)
+}
diff --git a/date-fns/src/locale/cs/_lib/formatLong/index.js b/date-fns/src/locale/cs/_lib/formatLong/index.js
new file mode 100644
index 0000000..c592d88
--- /dev/null
+++ b/date-fns/src/locale/cs/_lib/formatLong/index.js
@@ -0,0 +1,41 @@
+import buildFormatLongFn from '../../../_lib/buildFormatLongFn/index'
+
+var dateFormats = {
+ full: 'EEEE, d. MMMM yyyy',
+ long: 'd. MMMM yyyy',
+ medium: 'd. M. yyyy',
+ short: 'dd.MM.yyyy'
+}
+
+var timeFormats = {
+ full: 'H:mm:ss zzzz',
+ long: 'H:mm:ss z',
+ medium: 'H:mm:ss',
+ short: 'H:mm'
+}
+
+var dateTimeFormats = {
+ full: "{{date}} 'v' {{time}}",
+ long: "{{date}} 'v' {{time}}",
+ medium: '{{date}}, {{time}}',
+ short: '{{date}}, {{time}}'
+}
+
+var formatLong = {
+ date: buildFormatLongFn({
+ formats: dateFormats,
+ defaultWidth: 'full'
+ }),
+
+ time: buildFormatLongFn({
+ formats: timeFormats,
+ defaultWidth: 'full'
+ }),
+
+ dateTime: buildFormatLongFn({
+ formats: dateTimeFormats,
+ defaultWidth: 'full'
+ })
+}
+
+export default formatLong
diff --git a/date-fns/src/locale/cs/_lib/formatRelative/index.js b/date-fns/src/locale/cs/_lib/formatRelative/index.js
new file mode 100644
index 0000000..34f80a8
--- /dev/null
+++ b/date-fns/src/locale/cs/_lib/formatRelative/index.js
@@ -0,0 +1,31 @@
+var accusativeWeekdays = [
+ 'neděli',
+ 'pondělí',
+ 'úterý',
+ 'středu',
+ 'čtvrtek',
+ 'pátek',
+ 'sobotu'
+]
+
+var formatRelativeLocale = {
+ lastWeek: "'poslední' eeee 've' p",
+ yesterday: "'včera v' p",
+ today: "'dnes v' p",
+ tomorrow: "'zítra v' p",
+ nextWeek: function(date, _baseDate, _options) {
+ var day = date.getUTCDay()
+ return "'v " + accusativeWeekdays[day] + " o' p"
+ },
+ other: 'P'
+}
+
+export default function formatRelative(token, date, baseDate, options) {
+ var format = formatRelativeLocale[token]
+
+ if (typeof format === 'function') {
+ return format(date, baseDate, options)
+ }
+
+ return format
+}
diff --git a/date-fns/src/locale/cs/_lib/localize/index.js b/date-fns/src/locale/cs/_lib/localize/index.js
new file mode 100644
index 0000000..3bd8ee6
--- /dev/null
+++ b/date-fns/src/locale/cs/_lib/localize/index.js
@@ -0,0 +1,192 @@
+import buildLocalizeFn from '../../../_lib/buildLocalizeFn/index'
+
+var eraValues = {
+ narrow: ['př. n. l.', 'n. l.'],
+ abbreviated: ['př. n. l.', 'n. l.'],
+ wide: ['před naším letopočtem', 'našeho letopočtu']
+}
+
+var quarterValues = {
+ narrow: ['1', '2', '3', '4'],
+ abbreviated: ['1. čtvrtletí', '2. čtvrtletí', '3. čtvrtletí', '4. čtvrtletí'],
+ wide: ['1. čtvrtletí', '2. čtvrtletí', '3. čtvrtletí', '4. čtvrtletí']
+}
+
+var monthValues = {
+ narrow: ['L', 'Ú', 'B', 'D', 'K', 'Č', 'Č', 'S', 'Z', 'Ř', 'L', 'P'],
+ abbreviated: [
+ 'led',
+ 'úno',
+ 'bře',
+ 'dub',
+ 'kvě',
+ 'čvn',
+ 'čvc',
+ 'srp',
+ 'zář',
+ 'říj',
+ 'lis',
+ 'pro'
+ ],
+ wide: [
+ 'leden',
+ 'únor',
+ 'březen',
+ 'duben',
+ 'květen',
+ 'červen',
+ 'červenec',
+ 'srpen',
+ 'září',
+ 'říjen',
+ 'listopad',
+ 'prosinec'
+ ]
+}
+var formattingMonthValues = {
+ narrow: ['L', 'Ú', 'B', 'D', 'K', 'Č', 'Č', 'S', 'Z', 'Ř', 'L', 'P'],
+ abbreviated: [
+ 'led',
+ 'úno',
+ 'bře',
+ 'dub',
+ 'kvě',
+ 'čvn',
+ 'čvc',
+ 'srp',
+ 'zář',
+ 'říj',
+ 'lis',
+ 'pro'
+ ],
+ wide: [
+ 'ledna',
+ 'února',
+ 'března',
+ 'dubna',
+ 'května',
+ 'června',
+ 'července',
+ 'srpna',
+ 'září',
+ 'října',
+ 'listopadu',
+ 'prosince'
+ ]
+}
+
+var dayValues = {
+ narrow: ['ne', 'po', 'út', 'st', 'čt', 'pá', 'so'],
+ short: ['ne', 'po', 'út', 'st', 'čt', 'pá', 'so'],
+ abbreviated: ['ned', 'pon', 'úte', 'stř', 'čtv', 'pát', 'sob'],
+ wide: ['neděle', 'pondělí', 'úterý', 'středa', 'čtvrtek', 'pátek', 'sobota']
+}
+
+var dayPeriodValues = {
+ narrow: {
+ am: 'dop.',
+ pm: 'odp.',
+ midnight: 'půlnoc',
+ noon: 'poledne',
+ morning: 'ráno',
+ afternoon: 'odpoledne',
+ evening: 'večer',
+ night: 'noc'
+ },
+ abbreviated: {
+ am: 'dop.',
+ pm: 'odp.',
+ midnight: 'půlnoc',
+ noon: 'poledne',
+ morning: 'ráno',
+ afternoon: 'odpoledne',
+ evening: 'večer',
+ night: 'noc'
+ },
+ wide: {
+ am: 'dopoledne',
+ pm: 'odpoledne',
+ midnight: 'půlnoc',
+ noon: 'poledne',
+ morning: 'ráno',
+ afternoon: 'odpoledne',
+ evening: 'večer',
+ night: 'noc'
+ }
+}
+
+var formattingDayPeriodValues = {
+ narrow: {
+ am: 'dop.',
+ pm: 'odp.',
+ midnight: 'půlnoc',
+ noon: 'poledne',
+ morning: 'ráno',
+ afternoon: 'odpoledne',
+ evening: 'večer',
+ night: 'noc'
+ },
+ abbreviated: {
+ am: 'dop.',
+ pm: 'odp.',
+ midnight: 'půlnoc',
+ noon: 'poledne',
+ morning: 'ráno',
+ afternoon: 'odpoledne',
+ evening: 'večer',
+ night: 'noc'
+ },
+ wide: {
+ am: 'dopoledne',
+ pm: 'odpoledne',
+ midnight: 'půlnoc',
+ noon: 'poledne',
+ morning: 'ráno',
+ afternoon: 'odpoledne',
+ evening: 'večer',
+ night: 'noc'
+ }
+}
+
+function ordinalNumber(dirtyNumber) {
+ var number = Number(dirtyNumber)
+ return number + '.'
+}
+
+var localize = {
+ ordinalNumber: ordinalNumber,
+
+ era: buildLocalizeFn({
+ values: eraValues,
+ defaultWidth: 'wide'
+ }),
+
+ quarter: buildLocalizeFn({
+ values: quarterValues,
+ defaultWidth: 'wide',
+ argumentCallback: function(quarter) {
+ return Number(quarter) - 1
+ }
+ }),
+
+ month: buildLocalizeFn({
+ values: monthValues,
+ defaultWidth: 'wide',
+ formattingValues: formattingMonthValues,
+ defaultFormattingWidth: 'wide'
+ }),
+
+ day: buildLocalizeFn({
+ values: dayValues,
+ defaultWidth: 'wide'
+ }),
+
+ dayPeriod: buildLocalizeFn({
+ values: dayPeriodValues,
+ defaultWidth: 'wide',
+ formattingValues: formattingDayPeriodValues,
+ defaultFormattingWidth: 'wide'
+ })
+}
+
+export default localize
diff --git a/date-fns/src/locale/cs/_lib/match/index.js b/date-fns/src/locale/cs/_lib/match/index.js
new file mode 100644
index 0000000..aaaaaa4
--- /dev/null
+++ b/date-fns/src/locale/cs/_lib/match/index.js
@@ -0,0 +1,139 @@
+import buildMatchFn from '../../../_lib/buildMatchFn/index'
+import buildMatchPatternFn from '../../../_lib/buildMatchPatternFn/index'
+
+var matchOrdinalNumberPattern = /^(\d+)\.?/i
+var parseOrdinalNumberPattern = /\d+/i
+
+var matchEraPatterns = {
+ narrow: /^(p[řr]ed Kr\.|pred n\. l\.|po Kr\.|n\. l\.)/i,
+ abbreviated: /^(pe[řr]ed Kr\.|pe[řr]ed n\. l\.|po Kr\.|n\. l\.)/i,
+ wide: /^(p[řr]ed Kristem|pred na[šs][íi]m letopo[čc]tem|po Kristu|na[šs]eho letopo[čc]tu)/i
+}
+
+var parseEraPatterns = {
+ any: [/^p[řr]/i, /^(po|n)/i]
+}
+
+var matchQuarterPatterns = {
+ narrow: /^[1234]/i,
+ abbreviated: /^[1234]\. [čc]tvrtlet[íi]/i,
+ wide: /^[1234]\. [čc]tvrtlet[íi]/i
+}
+var parseQuarterPatterns = {
+ any: [/1/i, /2/i, /3/i, /4/i]
+}
+
+var matchMonthPatterns = {
+ narrow: /^[lúubdkčcszřrlp]/i,
+ abbreviated: /^(led|[úu]no|b[řr]e|dub|kv[ěe]|[čc]vn|[čc]vc|srp|z[áa][řr]|[řr][íi]j|lis|pro)/i,
+ wide: /^(leden|ledna|[úu]nora?|b[řr]ezen|b[řr]ezna|duben|dubna|kv[ěe]ten|kv[ěe]tna|[čc]erven(ec|ce)?|[čc]ervna|srpen|srpna|z[áa][řr][íi]|[řr][íi]jen|[řr][íi]jna|listopad(a|u)?|prosinec|prosince)/i
+}
+
+var parseMonthPatterns = {
+ narrow: [
+ /^l/i,
+ /^[úu]/i,
+ /^b/i,
+ /^d/i,
+ /^k/i,
+ /^[čc]/i,
+ /^[čc]/i,
+ /^s/i,
+ /^z/i,
+ /^[řr]/i,
+ /^l/i,
+ /^p/i
+ ],
+ any: [
+ /^led/i,
+ /^[úu]n/i,
+ /^b[řr]e/i,
+ /^dub/i,
+ /^kv[ěe]/i,
+ /^[čc]vn|[čc]erven(?!\w)|[čc]ervna/i,
+ /^[čc]vc|[čc]erven(ec|ce)/i,
+ /^srp/i,
+ /^z[áa][řr]/i,
+ /^[řr][íi]j/i,
+ /^lis/i,
+ /^pro/i
+ ]
+}
+
+var matchDayPatterns = {
+ narrow: /^[npuúsčps]/i,
+ short: /^(ne|po|[úu]t|st|[čc]t|p[áa]|so)/i,
+ abbreviated: /^(ne|po|[úu]t|st|[čc]t|p[áa]|so)/i,
+ wide: /^(ned[ěe]le|pond[ěe]l[íi]|[úu]ter[ýy]|st[řr]eda|[čc]tvrtek|p[áa]tek|sobota)/i
+}
+
+var parseDayPatterns = {
+ narrow: [/^n/i, /^p/i, /^[úu]/i, /^s/i, /^[čc]/i, /^p/i, /^s/i],
+ any: [/^ne/i, /^po/i, /^ut/i, /^st/i, /^[čc]t/i, /^p/i, /^so/i]
+}
+
+var matchDayPeriodPatterns = {
+ any: /^dopoledne|dop\.?|odpoledne|odp\.?|půlnoc|poledne|r[áa]no|odpoledne|ve[čc]er|(v )?noci/i
+}
+var parseDayPeriodPatterns = {
+ any: {
+ am: /^dop/i,
+ pm: /^odp/i,
+ midnight: /^p[ůu]lnoc/i,
+ noon: /^poledne/i,
+ morning: /r[áa]no/i,
+ afternoon: /odpoledne/i,
+ evening: /ve[čc]er/i,
+ night: /noc/i
+ }
+}
+
+var match = {
+ ordinalNumber: buildMatchPatternFn({
+ matchPattern: matchOrdinalNumberPattern,
+ parsePattern: parseOrdinalNumberPattern,
+ valueCallback: function(value) {
+ return parseInt(value, 10)
+ }
+ }),
+
+ era: buildMatchFn({
+ matchPatterns: matchEraPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseEraPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ quarter: buildMatchFn({
+ matchPatterns: matchQuarterPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseQuarterPatterns,
+ defaultParseWidth: 'any',
+ valueCallback: function(index) {
+ return index + 1
+ }
+ }),
+
+ month: buildMatchFn({
+ matchPatterns: matchMonthPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseMonthPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ day: buildMatchFn({
+ matchPatterns: matchDayPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseDayPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ dayPeriod: buildMatchFn({
+ matchPatterns: matchDayPeriodPatterns,
+ defaultMatchWidth: 'any',
+ parsePatterns: parseDayPeriodPatterns,
+ defaultParseWidth: 'any'
+ })
+}
+
+export default match
diff --git a/date-fns/src/locale/cs/index.d.ts b/date-fns/src/locale/cs/index.d.ts
new file mode 100644
index 0000000..a17dd22
--- /dev/null
+++ b/date-fns/src/locale/cs/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { cs } from 'date-fns/locale'
+export default cs
diff --git a/date-fns/src/locale/cs/index.js b/date-fns/src/locale/cs/index.js
new file mode 100644
index 0000000..b878ce9
--- /dev/null
+++ b/date-fns/src/locale/cs/index.js
@@ -0,0 +1,30 @@
+import formatDistance from './_lib/formatDistance/index'
+import formatLong from './_lib/formatLong/index'
+import formatRelative from './_lib/formatRelative/index'
+import localize from './_lib/localize/index'
+import match from './_lib/match/index'
+
+/**
+ * @type {Locale}
+ * @category Locales
+ * @summary Czech locale.
+ * @language Czech
+ * @iso-639-2 ces
+ * @author David Rus [@davidrus]{@link https://github.com/davidrus}
+ * @author Pavel Hrách [@SilenY]{@link https://github.com/SilenY}
+ * @author Jozef Bíroš [@JozefBiros]{@link https://github.com/JozefBiros}
+ */
+var locale = {
+ code: 'cs',
+ formatDistance: formatDistance,
+ formatLong: formatLong,
+ formatRelative: formatRelative,
+ localize: localize,
+ match: match,
+ options: {
+ weekStartsOn: 1 /* Monday */,
+ firstWeekContainsDate: 4
+ }
+}
+
+export default locale
diff --git a/date-fns/src/locale/cs/index.js.flow b/date-fns/src/locale/cs/index.js.flow
new file mode 100644
index 0000000..b9dfe66
--- /dev/null
+++ b/date-fns/src/locale/cs/index.js.flow
@@ -0,0 +1,35 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+declare module.exports: Locale
diff --git a/date-fns/src/locale/cs/snapshot.md b/date-fns/src/locale/cs/snapshot.md
new file mode 100644
index 0000000..9fa9d6e
--- /dev/null
+++ b/date-fns/src/locale/cs/snapshot.md
@@ -0,0 +1,304 @@
+# Czech (cs) locale
+
+## `format` and `parse`
+
+| Title | Token string | Date | `format` result | `parse` result |
+| ------------------------------- | ------------ | ------------------------ | -------------------------------------------- | ------------------------ |
+| Calendar year | yo | 1987-02-11T12:13:14.015Z | 1987. | 1987-01-01T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 5. | 0005-01-01T00:00:00.000Z |
+| Local week-numbering year | Yo | 1987-02-11T12:13:14.015Z | 1987. | 1986-12-29T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 4. | 0003-12-29T00:00:00.000Z |
+| Quarter (formatting) | Qo | 2019-01-01T12:13:14.015Z | 1. | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2. | 2019-04-01T00:00:00.000Z |
+| | QQQ | 2019-01-01T12:13:14.015Z | 1. čtvrtletí | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2. čtvrtletí | 2019-04-01T00:00:00.000Z |
+| | QQQQ | 2019-01-01T12:13:14.015Z | 1. čtvrtletí | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2. čtvrtletí | 2019-04-01T00:00:00.000Z |
+| | QQQQQ | 2019-01-01T12:13:14.015Z | 1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2 | 2019-04-01T00:00:00.000Z |
+| Quarter (stand-alone) | qo | 2019-01-01T12:13:14.015Z | 1. | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2. | 2019-04-01T00:00:00.000Z |
+| | qqq | 2019-01-01T12:13:14.015Z | 1. čtvrtletí | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2. čtvrtletí | 2019-04-01T00:00:00.000Z |
+| | qqqq | 2019-01-01T12:13:14.015Z | 1. čtvrtletí | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2. čtvrtletí | 2019-04-01T00:00:00.000Z |
+| Month (formatting) | Mo | 2019-02-11T12:13:14.015Z | 2. | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7. | 2019-07-01T00:00:00.000Z |
+| | MMM | 2019-02-11T12:13:14.015Z | úno | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | čvc | 2019-07-01T00:00:00.000Z |
+| | MMMM | 2019-02-11T12:13:14.015Z | února | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | července | 2019-07-01T00:00:00.000Z |
+| | MMMMM | 2019-02-11T12:13:14.015Z | Ú | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | Č | 2019-06-01T00:00:00.000Z |
+| Month (stand-alone) | Lo | 2019-02-11T12:13:14.015Z | 2. | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7. | 2019-07-01T00:00:00.000Z |
+| | LLL | 2019-02-11T12:13:14.015Z | úno | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | čvc | 2019-07-01T00:00:00.000Z |
+| | LLLL | 2019-02-11T12:13:14.015Z | únor | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | červenec | 2019-07-01T00:00:00.000Z |
+| | LLLLL | 2019-02-11T12:13:14.015Z | Ú | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | Č | 2019-06-01T00:00:00.000Z |
+| Local week of year | wo | 2019-01-01T12:13:14.015Z | 1. | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48. | 2019-11-25T00:00:00.000Z |
+| ISO week of year | Io | 2019-01-01T12:13:14.015Z | 1. | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48. | 2019-11-25T00:00:00.000Z |
+| Day of month | do | 2019-02-11T12:13:14.015Z | 11. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-28T12:13:14.015Z | 28. | 2019-02-28T00:00:00.000Z |
+| Day of year | Do | 2019-02-11T12:13:14.015Z | 42. | 2019-02-11T00:00:00.000Z |
+| | | 2019-12-31T12:13:14.015Z | 365. | 2019-12-31T00:00:00.000Z |
+| Day of week (formatting) | E | 2019-02-11T12:13:14.015Z | pon | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | pát | Invalid Date |
+| | EE | 2019-02-11T12:13:14.015Z | pon | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | pát | Invalid Date |
+| | EEE | 2019-02-11T12:13:14.015Z | pon | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | pát | Invalid Date |
+| | EEEE | 2019-02-11T12:13:14.015Z | pondělí | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | pátek | 2019-02-15T00:00:00.000Z |
+| | EEEEE | 2019-02-11T12:13:14.015Z | po | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | pá | Invalid Date |
+| | EEEEEE | 2019-02-11T12:13:14.015Z | po | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | pá | 2019-02-15T00:00:00.000Z |
+| ISO day of week (formatting) | io | 2019-02-11T12:13:14.015Z | 1. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5. | 2019-02-15T00:00:00.000Z |
+| | iii | 2019-02-11T12:13:14.015Z | pon | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | pát | Invalid Date |
+| | iiii | 2019-02-11T12:13:14.015Z | pondělí | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | pátek | 2019-02-15T00:00:00.000Z |
+| | iiiii | 2019-02-11T12:13:14.015Z | po | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | pá | Invalid Date |
+| | iiiiii | 2019-02-11T12:13:14.015Z | po | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | pá | 2019-02-15T00:00:00.000Z |
+| Local day of week (formatting) | eo | 2019-02-11T12:13:14.015Z | 1. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5. | 2019-02-15T00:00:00.000Z |
+| | eee | 2019-02-11T12:13:14.015Z | pon | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | pát | Invalid Date |
+| | eeee | 2019-02-11T12:13:14.015Z | pondělí | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | pátek | 2019-02-15T00:00:00.000Z |
+| | eeeee | 2019-02-11T12:13:14.015Z | po | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | pá | Invalid Date |
+| | eeeeee | 2019-02-11T12:13:14.015Z | po | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | pá | 2019-02-15T00:00:00.000Z |
+| Local day of week (stand-alone) | co | 2019-02-11T12:13:14.015Z | 1. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5. | 2019-02-15T00:00:00.000Z |
+| | ccc | 2019-02-11T12:13:14.015Z | pon | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | pát | Invalid Date |
+| | cccc | 2019-02-11T12:13:14.015Z | pondělí | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | pátek | 2019-02-15T00:00:00.000Z |
+| | ccccc | 2019-02-11T12:13:14.015Z | po | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | pá | Invalid Date |
+| | cccccc | 2019-02-11T12:13:14.015Z | po | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | pá | 2019-02-15T00:00:00.000Z |
+| AM, PM | a | 2019-02-11T11:13:14.015Z | dop. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | odp. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | odp. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | dop. | 2019-02-11T00:00:00.000Z |
+| | aa | 2019-02-11T11:13:14.015Z | dop. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | odp. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | odp. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | dop. | 2019-02-11T00:00:00.000Z |
+| | aaa | 2019-02-11T11:13:14.015Z | dop. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | odp. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | odp. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | dop. | 2019-02-11T00:00:00.000Z |
+| | aaaa | 2019-02-11T11:13:14.015Z | dopoledne | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | odpoledne | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | odpoledne | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | dopoledne | 2019-02-11T00:00:00.000Z |
+| | aaaaa | 2019-02-11T11:13:14.015Z | dop. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | odp. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | odp. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | dop. | 2019-02-11T00:00:00.000Z |
+| AM, PM, noon, midnight | b | 2019-02-11T11:13:14.015Z | dop. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | odp. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | odp. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | dop. | 2019-02-11T00:00:00.000Z |
+| | bb | 2019-02-11T11:13:14.015Z | dop. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | odp. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | odp. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | dop. | 2019-02-11T00:00:00.000Z |
+| | bbb | 2019-02-11T11:13:14.015Z | dop. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | odp. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | odp. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | dop. | 2019-02-11T00:00:00.000Z |
+| | bbbb | 2019-02-11T11:13:14.015Z | dopoledne | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | odpoledne | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | odpoledne | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | dopoledne | 2019-02-11T00:00:00.000Z |
+| | bbbbb | 2019-02-11T11:13:14.015Z | dop. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | odp. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | odp. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | dop. | 2019-02-11T00:00:00.000Z |
+| Flexible day period | B | 2019-02-11T11:13:14.015Z | ráno | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | odpoledne | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | večer | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | noc | Invalid Date |
+| | BB | 2019-02-11T11:13:14.015Z | ráno | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | odpoledne | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | večer | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | noc | Invalid Date |
+| | BBB | 2019-02-11T11:13:14.015Z | ráno | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | odpoledne | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | večer | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | noc | Invalid Date |
+| | BBBB | 2019-02-11T11:13:14.015Z | ráno | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | odpoledne | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | večer | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | noc | Invalid Date |
+| | BBBBB | 2019-02-11T11:13:14.015Z | ráno | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | odpoledne | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | večer | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | noc | Invalid Date |
+| Hour [1-12] | ho | 2019-02-11T11:13:14.015Z | 11. | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11. | 2019-02-11T23:00:00.000Z |
+| Hour [0-23] | Ho | 2019-02-11T11:13:14.015Z | 11. | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23. | 2019-02-11T23:00:00.000Z |
+| Hour [0-11] | Ko | 2019-02-11T11:13:14.015Z | 11. | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11. | 2019-02-11T23:00:00.000Z |
+| Hour [1-24] | ko | 2019-02-11T11:13:14.015Z | 11. | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23. | 2019-02-11T23:00:00.000Z |
+| Minute | mo | 2019-01-01T12:01:14.015Z | 1. | 2019-01-01T12:01:00.000Z |
+| | | 2019-04-01T12:55:14.015Z | 55. | 2019-04-01T12:55:00.000Z |
+| Second | so | 2019-01-01T12:13:01.015Z | 1. | 2019-01-01T12:13:01.000Z |
+| | | 2019-04-01T12:13:55.015Z | 55. | 2019-04-01T12:13:55.000Z |
+| Long localized date | P | 1987-02-11T12:13:14.015Z | 11.02.1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29.05.1453 | 1453-05-29T00:00:00.000Z |
+| | PP | 1987-02-11T12:13:14.015Z | 11. 2. 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29. 5. 1453 | 1453-05-29T00:00:00.000Z |
+| | PPP | 1987-02-11T12:13:14.015Z | 11. února 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29. května 1453 | 1453-05-29T00:00:00.000Z |
+| | PPPP | 1987-02-11T12:13:14.015Z | středa, 11. února 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | neděle, 29. května 1453 | 1453-05-29T00:00:00.000Z |
+| Long localized time | p | 1987-02-11T12:13:14.015Z | 12:13 | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 23:59 | 1453-05-29T23:59:00.000Z |
+| | pp | 1987-02-11T12:13:14.015Z | 12:13:14 | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 | 1453-05-29T23:59:59.000Z |
+| | ppp | 1987-02-11T12:13:14.015Z | 12:13:14 GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 GMT+0 | Errored |
+| | pppp | 1987-02-11T12:13:14.015Z | 12:13:14 GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 GMT+00:00 | Errored |
+| Combination of date and time | Pp | 1987-02-11T12:13:14.015Z | 11.02.1987, 12:13 | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29.05.1453, 23:59 | 1453-05-29T23:59:00.000Z |
+| | PPpp | 1987-02-11T12:13:14.015Z | 11. 2. 1987, 12:13:14 | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29. 5. 1453, 23:59:59 | 1453-05-29T23:59:59.000Z |
+| | PPPppp | 1987-02-11T12:13:14.015Z | 11. února 1987 v 12:13:14 GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 29. května 1453 v 23:59:59 GMT+0 | Errored |
+| | PPPPpppp | 1987-02-11T12:13:14.015Z | středa, 11. února 1987 v 12:13:14 GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | neděle, 29. května 1453 v 23:59:59 GMT+00:00 | Errored |
+
+## `formatDistance`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `includeSeconds: true` | `addSuffix: true` |
+| ------------------------ | ----------------- | ---------------------- | ------------------------- |
+| 2006-01-01T00:00:00.000Z | přibližně 6 roků | přibližně 6 roků | přibližně za 6 roků |
+| 2005-01-01T00:00:00.000Z | přibližně 5 roků | přibližně 5 roků | přibližně za 5 roků |
+| 2004-01-01T00:00:00.000Z | přibližně 4 roky | přibližně 4 roky | přibližně za 4 roky |
+| 2003-01-01T00:00:00.000Z | přibližně 3 roky | přibližně 3 roky | přibližně za 3 roky |
+| 2002-01-01T00:00:00.000Z | přibližně 2 roky | přibližně 2 roky | přibližně za 2 roky |
+| 2001-06-01T00:00:00.000Z | více než rok | více než rok | za více než rok |
+| 2001-02-01T00:00:00.000Z | přibližně rok | přibližně rok | přibližně za rok |
+| 2001-01-01T00:00:00.000Z | přibližně rok | přibližně rok | přibližně za rok |
+| 2000-06-01T00:00:00.000Z | 5 měsíců | 5 měsíců | za 5 měsíců |
+| 2000-03-01T00:00:00.000Z | 2 měsíce | 2 měsíce | za 2 měsíce |
+| 2000-02-01T00:00:00.000Z | přibližně měsíc | přibližně měsíc | přibližně za měsíc |
+| 2000-01-15T00:00:00.000Z | 14 dní | 14 dní | za 14 dní |
+| 2000-01-02T00:00:00.000Z | den | den | za den |
+| 2000-01-01T06:00:00.000Z | přibližně 6 hodin | přibližně 6 hodin | přibližně za 6 hodin |
+| 2000-01-01T01:00:00.000Z | přibližně hodina | přibližně hodina | přibližně za hodinu |
+| 2000-01-01T00:45:00.000Z | přibližně hodina | přibližně hodina | přibližně za hodinu |
+| 2000-01-01T00:30:00.000Z | 30 minut | 30 minut | za 30 minut |
+| 2000-01-01T00:15:00.000Z | 15 minut | 15 minut | za 15 minut |
+| 2000-01-01T00:01:00.000Z | minuta | minuta | za minutu |
+| 2000-01-01T00:00:25.000Z | méně než minuta | půl minuty | za méně než minutu |
+| 2000-01-01T00:00:15.000Z | méně než minuta | méně než 20 vteřin | za méně než minutu |
+| 2000-01-01T00:00:05.000Z | méně než minuta | méně než 10 vteřin | za méně než minutu |
+| 2000-01-01T00:00:00.000Z | méně než minuta | méně než 5 vteřin | méně než minuta |
+| 1999-12-31T23:59:55.000Z | méně než minuta | méně než 10 vteřin | před méně než minutou |
+| 1999-12-31T23:59:45.000Z | méně než minuta | méně než 20 vteřin | před méně než minutou |
+| 1999-12-31T23:59:35.000Z | méně než minuta | půl minuty | před méně než minutou |
+| 1999-12-31T23:59:00.000Z | minuta | minuta | před minutou |
+| 1999-12-31T23:45:00.000Z | 15 minut | 15 minut | před 15 minutami |
+| 1999-12-31T23:30:00.000Z | 30 minut | 30 minut | před 30 minutami |
+| 1999-12-31T23:15:00.000Z | přibližně hodina | přibližně hodina | přibližně před hodinou |
+| 1999-12-31T23:00:00.000Z | přibližně hodina | přibližně hodina | přibližně před hodinou |
+| 1999-12-31T18:00:00.000Z | přibližně 6 hodin | přibližně 6 hodin | přibližně před 6 hodinami |
+| 1999-12-30T00:00:00.000Z | 2 dny | 2 dny | před 2 dny |
+| 1999-12-15T00:00:00.000Z | 17 dní | 17 dní | před 17 dny |
+| 1999-12-01T00:00:00.000Z | přibližně měsíc | přibližně měsíc | přibližně před měsícem |
+| 1999-11-01T00:00:00.000Z | 2 měsíce | 2 měsíce | před 2 měsíci |
+| 1999-06-01T00:00:00.000Z | 7 měsíců | 7 měsíců | před 7 měsíci |
+| 1999-01-01T00:00:00.000Z | přibližně rok | přibližně rok | přibližně před rokem |
+| 1998-12-01T00:00:00.000Z | přibližně rok | přibližně rok | přibližně před rokem |
+| 1998-06-01T00:00:00.000Z | více než rok | více než rok | před více než rokem |
+| 1998-01-01T00:00:00.000Z | přibližně 2 roky | přibližně 2 roky | přibližně před 2 roky |
+| 1997-01-01T00:00:00.000Z | přibližně 3 roky | přibližně 3 roky | přibližně před 3 roky |
+| 1996-01-01T00:00:00.000Z | přibližně 4 roky | přibližně 4 roky | přibližně před 4 roky |
+| 1995-01-01T00:00:00.000Z | přibližně 5 roků | přibližně 5 roků | přibližně před 5 roky |
+| 1994-01-01T00:00:00.000Z | přibližně 6 roků | přibližně 6 roků | přibližně před 6 roky |
+
+## `formatDistanceStrict`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `addSuffix: true` | With forced unit (i.e. `hour`) |
+| ------------------------ | --------- | ----------------- | ------------------------------ |
+| 2006-01-01T00:00:00.000Z | 6 roků | za 6 roků | 52608 hodin |
+| 2005-01-01T00:00:00.000Z | 5 roků | za 5 roků | 43848 hodin |
+| 2004-01-01T00:00:00.000Z | 4 roky | za 4 roky | 35064 hodin |
+| 2003-01-01T00:00:00.000Z | 3 roky | za 3 roky | 26304 hodin |
+| 2002-01-01T00:00:00.000Z | 2 roky | za 2 roky | 17544 hodin |
+| 2001-06-01T00:00:00.000Z | rok | za rok | 12408 hodin |
+| 2001-02-01T00:00:00.000Z | rok | za rok | 9528 hodin |
+| 2001-01-01T00:00:00.000Z | rok | za rok | 8784 hodin |
+| 2000-06-01T00:00:00.000Z | 5 měsíců | za 5 měsíců | 3648 hodin |
+| 2000-03-01T00:00:00.000Z | 2 měsíce | za 2 měsíce | 1440 hodin |
+| 2000-02-01T00:00:00.000Z | měsíc | za měsíc | 744 hodin |
+| 2000-01-15T00:00:00.000Z | 14 dní | za 14 dní | 336 hodin |
+| 2000-01-02T00:00:00.000Z | den | za den | 24 hodin |
+| 2000-01-01T06:00:00.000Z | 6 hodin | za 6 hodin | 6 hodin |
+| 2000-01-01T01:00:00.000Z | hodina | za hodinu | hodina |
+| 2000-01-01T00:45:00.000Z | 45 minut | za 45 minut | hodina |
+| 2000-01-01T00:30:00.000Z | 30 minut | za 30 minut | hodina |
+| 2000-01-01T00:15:00.000Z | 15 minut | za 15 minut | 0 hodiny |
+| 2000-01-01T00:01:00.000Z | minuta | za minutu | 0 hodiny |
+| 2000-01-01T00:00:25.000Z | 25 vteřin | za 25 vteřin | 0 hodiny |
+| 2000-01-01T00:00:15.000Z | 15 vteřin | za 15 vteřin | 0 hodiny |
+| 2000-01-01T00:00:05.000Z | 5 vteřin | za 5 vteřin | 0 hodiny |
+| 2000-01-01T00:00:00.000Z | 0 vteřiny | 0 vteřiny | 0 hodiny |
+| 1999-12-31T23:59:55.000Z | 5 vteřin | před 5 vteřinami | 0 hodiny |
+| 1999-12-31T23:59:45.000Z | 15 vteřin | před 15 vteřinami | 0 hodiny |
+| 1999-12-31T23:59:35.000Z | 25 vteřin | před 25 vteřinami | 0 hodiny |
+| 1999-12-31T23:59:00.000Z | minuta | před minutou | 0 hodiny |
+| 1999-12-31T23:45:00.000Z | 15 minut | před 15 minutami | 0 hodiny |
+| 1999-12-31T23:30:00.000Z | 30 minut | před 30 minutami | hodina |
+| 1999-12-31T23:15:00.000Z | 45 minut | před 45 minutami | hodina |
+| 1999-12-31T23:00:00.000Z | hodina | před hodinou | hodina |
+| 1999-12-31T18:00:00.000Z | 6 hodin | před 6 hodinami | 6 hodin |
+| 1999-12-30T00:00:00.000Z | 2 dny | před 2 dny | 48 hodin |
+| 1999-12-15T00:00:00.000Z | 17 dní | před 17 dny | 408 hodin |
+| 1999-12-01T00:00:00.000Z | měsíc | před měsícem | 744 hodin |
+| 1999-11-01T00:00:00.000Z | 2 měsíce | před 2 měsíci | 1464 hodin |
+| 1999-06-01T00:00:00.000Z | 7 měsíců | před 7 měsíci | 5136 hodin |
+| 1999-01-01T00:00:00.000Z | rok | před rokem | 8760 hodin |
+| 1998-12-01T00:00:00.000Z | rok | před rokem | 9504 hodin |
+| 1998-06-01T00:00:00.000Z | 2 roky | před 2 roky | 13896 hodin |
+| 1998-01-01T00:00:00.000Z | 2 roky | před 2 roky | 17520 hodin |
+| 1997-01-01T00:00:00.000Z | 3 roky | před 3 roky | 26280 hodin |
+| 1996-01-01T00:00:00.000Z | 4 roky | před 4 roky | 35064 hodin |
+| 1995-01-01T00:00:00.000Z | 5 roků | před 5 roky | 43824 hodin |
+| 1994-01-01T00:00:00.000Z | 6 roků | před 6 roky | 52584 hodin |
+
+## `formatRelative`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result |
+| ------------------------ | ------------------------ |
+| 2000-01-10T00:00:00.000Z | 10.01.2000 |
+| 2000-01-05T00:00:00.000Z | v středu o 0:00 |
+| 2000-01-02T00:00:00.000Z | zítra v 0:00 |
+| 2000-01-01T00:00:00.000Z | dnes v 0:00 |
+| 1999-12-31T00:00:00.000Z | včera v 0:00 |
+| 1999-12-27T00:00:00.000Z | poslední pondělí ve 0:00 |
+| 1999-12-21T00:00:00.000Z | 21.12.1999 |
diff --git a/date-fns/src/locale/cy/_lib/formatDistance/index.js b/date-fns/src/locale/cy/_lib/formatDistance/index.js
new file mode 100644
index 0000000..6f0af31
--- /dev/null
+++ b/date-fns/src/locale/cy/_lib/formatDistance/index.js
@@ -0,0 +1,114 @@
+var formatDistanceLocale = {
+ lessThanXSeconds: {
+ one: 'llai na eiliad',
+ other: 'llai na {{count}} eiliad'
+ },
+
+ xSeconds: {
+ one: '1 eiliad',
+ other: '{{count}} eiliad'
+ },
+
+ halfAMinute: 'hanner munud',
+
+ lessThanXMinutes: {
+ one: 'llai na munud',
+ two: 'llai na 2 funud',
+ other: 'llai na {{count}} munud'
+ },
+
+ xMinutes: {
+ one: '1 munud',
+ two: '2 funud',
+ other: '{{count}} munud'
+ },
+
+ aboutXHours: {
+ one: 'tua 1 awr',
+ other: 'tua {{count}} awr'
+ },
+
+ xHours: {
+ one: '1 awr',
+ other: '{{count}} awr'
+ },
+
+ xDays: {
+ one: '1 diwrnod',
+ two: '2 ddiwrnod',
+ other: '{{count}} diwrnod'
+ },
+
+ aboutXWeeks: {
+ one: 'tua 1 wythnos',
+ two: 'tua pythefnos',
+ other: 'tua {{count}} wythnos'
+ },
+
+ xWeeks: {
+ one: '1 wythnos',
+ two: 'pythefnos',
+ other: '{{count}} wythnos'
+ },
+
+ aboutXMonths: {
+ one: 'tua 1 mis',
+ two: 'tua 2 fis',
+ other: 'tua {{count}} mis'
+ },
+
+ xMonths: {
+ one: '1 mis',
+ two: '2 fis',
+ other: '{{count}} mis'
+ },
+
+ aboutXYears: {
+ one: 'tua 1 flwyddyn',
+ two: 'tua 2 flynedd',
+ other: 'tua {{count}} mlynedd'
+ },
+
+ xYears: {
+ one: '1 flwyddyn',
+ two: '2 flynedd',
+ other: '{{count}} mlynedd'
+ },
+
+ overXYears: {
+ one: 'dros 1 flwyddyn',
+ two: 'dros 2 flynedd',
+ other: 'dros {{count}} mlynedd'
+ },
+
+ almostXYears: {
+ one: 'bron 1 flwyddyn',
+ two: 'bron 2 flynedd',
+ other: 'bron {{count}} mlynedd'
+ }
+}
+
+export default function formatDistance(token, count, options) {
+ options = options || {}
+
+ var result
+ if (typeof formatDistanceLocale[token] === 'string') {
+ result = formatDistanceLocale[token]
+ } else if (count === 1) {
+ result = formatDistanceLocale[token].one
+ } else if (count === 2 && !!formatDistanceLocale[token].two) {
+ result = formatDistanceLocale[token].two
+ } else {
+ result = formatDistanceLocale[token].other.replace('{{count}}', count)
+ }
+
+ if (options.addSuffix) {
+ if (options.comparison > 0) {
+ return 'mewn ' + result
+ } else {
+ return result + ' yn ôl'
+ }
+ }
+
+ return result
+}
diff --git a/date-fns/src/locale/cy/_lib/formatLong/index.js b/date-fns/src/locale/cy/_lib/formatLong/index.js
new file mode 100644
index 0000000..a77bdae
--- /dev/null
+++ b/date-fns/src/locale/cy/_lib/formatLong/index.js
@@ -0,0 +1,41 @@
+import buildFormatLongFn from '../../../_lib/buildFormatLongFn/index'
+
+var dateFormats = {
+ full: 'EEEE, d MMMM yyyy',
+ long: 'd MMMM yyyy',
+ medium: 'd MMM yyyy',
+ short: 'dd/MM/yyyy'
+}
+
+var timeFormats = {
+ full: 'h:mm:ss a zzzz',
+ long: 'h:mm:ss a z',
+ medium: 'h:mm:ss a',
+ short: 'h:mm a'
+}
+
+var dateTimeFormats = {
+ full: "{{date}} 'am' {{time}}",
+ long: "{{date}} 'am' {{time}}",
+ medium: '{{date}}, {{time}}',
+ short: '{{date}}, {{time}}'
+}
+
+var formatLong = {
+ date: buildFormatLongFn({
+ formats: dateFormats,
+ defaultWidth: 'full'
+ }),
+
+ time: buildFormatLongFn({
+ formats: timeFormats,
+ defaultWidth: 'full'
+ }),
+
+ dateTime: buildFormatLongFn({
+ formats: dateTimeFormats,
+ defaultWidth: 'full'
+ })
+}
+
+export default formatLong
diff --git a/date-fns/src/locale/cy/_lib/formatRelative/index.js b/date-fns/src/locale/cy/_lib/formatRelative/index.js
new file mode 100644
index 0000000..5764077
--- /dev/null
+++ b/date-fns/src/locale/cy/_lib/formatRelative/index.js
@@ -0,0 +1,12 @@
+var formatRelativeLocale = {
+ lastWeek: "eeee 'diwethaf am' p",
+ yesterday: "'ddoe am' p",
+ today: "'heddiw am' p",
+ tomorrow: "'yfory am' p",
+ nextWeek: "eeee 'am' p",
+ other: 'P'
+}
+
+export default function formatRelative(token, _date, _baseDate, _options) {
+ return formatRelativeLocale[token]
+}
diff --git a/date-fns/src/locale/cy/_lib/localize/index.js b/date-fns/src/locale/cy/_lib/localize/index.js
new file mode 100644
index 0000000..bf89501
--- /dev/null
+++ b/date-fns/src/locale/cy/_lib/localize/index.js
@@ -0,0 +1,204 @@
+import buildLocalizeFn from '../../../_lib/buildLocalizeFn/index'
+
+var eraValues = {
+ narrow: ['C', 'O'],
+ abbreviated: ['CC', 'OC'],
+ wide: ['Cyn Crist', 'Ar ôl Crist']
+}
+
+var quarterValues = {
+ narrow: ['1', '2', '3', '4'],
+ abbreviated: ['Ch1', 'Ch2', 'Ch3', 'Ch4'],
+ wide: ['Chwarter 1af', '2ail chwarter', '3ydd chwarter', '4ydd chwarter']
+}
+
+// Note: in English, the names of days of the week and months are capitalized.
+// If you are making a new locale based on this one, check if the same is true for the language you're working on.
+// Generally, formatted dates should look like they are in the middle of a sentence,
+// e.g. in Spanish language the weekdays and months should be in the lowercase.
+var monthValues = {
+ narrow: ['I', 'Ch', 'Ma', 'E', 'Mi', 'Me', 'G', 'A', 'Md', 'H', 'T', 'Rh'],
+ abbreviated: [
+ 'Ion',
+ 'Chwe',
+ 'Maw',
+ 'Ebr',
+ 'Mai',
+ 'Meh',
+ 'Gor',
+ 'Aws',
+ 'Med',
+ 'Hyd',
+ 'Tach',
+ 'Rhag'
+ ],
+ wide: [
+ 'Ionawr',
+ 'Chwefror',
+ 'Mawrth',
+ 'Ebrill',
+ 'Mai',
+ 'Mehefin',
+ 'Gorffennaf',
+ 'Awst',
+ 'Medi',
+ 'Hydref',
+ 'Tachwedd',
+ 'Rhagfyr'
+ ]
+}
+
+var dayValues = {
+ narrow: ['S', 'Ll', 'M', 'M', 'I', 'G', 'S'],
+ short: ['Su', 'Ll', 'Ma', 'Me', 'Ia', 'Gw', 'Sa'],
+ abbreviated: ['Sul', 'Llun', 'Maw', 'Mer', 'Iau', 'Gwe', 'Sad'],
+ wide: [
+ 'dydd Sul',
+ 'dydd Llun',
+ 'dydd Mawrth',
+ 'dydd Mercher',
+ 'dydd Iau',
+ 'dydd Gwener',
+ 'dydd Sadwrn'
+ ]
+}
+
+var dayPeriodValues = {
+ narrow: {
+ am: 'b',
+ pm: 'h',
+ midnight: 'hn',
+ noon: 'hd',
+ morning: 'bore',
+ afternoon: 'prynhawn',
+ evening: "gyda'r nos",
+ night: 'nos'
+ },
+ abbreviated: {
+ am: 'yb',
+ pm: 'yh',
+ midnight: 'hanner nos',
+ noon: 'hanner dydd',
+ morning: 'bore',
+ afternoon: 'prynhawn',
+ evening: "gyda'r nos",
+ night: 'nos'
+ },
+ wide: {
+ am: 'y.b.',
+ pm: 'y.h.',
+ midnight: 'hanner nos',
+ noon: 'hanner dydd',
+ morning: 'bore',
+ afternoon: 'prynhawn',
+ evening: "gyda'r nos",
+ night: 'nos'
+ }
+}
+var formattingDayPeriodValues = {
+ narrow: {
+ am: 'b',
+ pm: 'h',
+ midnight: 'hn',
+ noon: 'hd',
+ morning: 'yn y bore',
+ afternoon: 'yn y prynhawn',
+ evening: "gyda'r nos",
+ night: 'yn y nos'
+ },
+ abbreviated: {
+ am: 'yb',
+ pm: 'yh',
+ midnight: 'hanner nos',
+ noon: 'hanner dydd',
+ morning: 'yn y bore',
+ afternoon: 'yn y prynhawn',
+ evening: "gyda'r nos",
+ night: 'yn y nos'
+ },
+ wide: {
+ am: 'y.b.',
+ pm: 'y.h.',
+ midnight: 'hanner nos',
+ noon: 'hanner dydd',
+ morning: 'yn y bore',
+ afternoon: 'yn y prynhawn',
+ evening: "gyda'r nos",
+ night: 'yn y nos'
+ }
+}
+
+function ordinalNumber(dirtyNumber, _dirtyOptions) {
+ var number = Number(dirtyNumber)
+
+ if (number < 20) {
+ switch (number) {
+ case 0:
+ return number + 'fed'
+ case 1:
+ return number + 'af'
+ case 2:
+ return number + 'ail'
+ case 3:
+ case 4:
+ return number + 'ydd'
+ case 5:
+ case 6:
+ return number + 'ed'
+ case 7:
+ case 8:
+ case 9:
+ case 10:
+ case 12:
+ case 15:
+ case 18:
+ return number + 'fed'
+ case 11:
+ case 13:
+ case 14:
+ case 16:
+ case 17:
+ case 19:
+ return number + 'eg'
+ }
+ } else if ((number >= 50 && number <= 60) || number === 80 || number >= 100) {
+ return number + 'fed'
+ }
+ return number + 'ain'
+}
+
+var localize = {
+ ordinalNumber: ordinalNumber,
+
+ era: buildLocalizeFn({
+ values: eraValues,
+ defaultWidth: 'wide'
+ }),
+
+ quarter: buildLocalizeFn({
+ values: quarterValues,
+ defaultWidth: 'wide',
+ argumentCallback: function(quarter) {
+ return Number(quarter) - 1
+ }
+ }),
+
+ month: buildLocalizeFn({
+ values: monthValues,
+ defaultWidth: 'wide'
+ }),
+
+ day: buildLocalizeFn({
+ values: dayValues,
+ defaultWidth: 'wide'
+ }),
+
+ dayPeriod: buildLocalizeFn({
+ values: dayPeriodValues,
+ defaultWidth: 'wide',
+ formattingValues: formattingDayPeriodValues,
+ defaultFormattingWidth: 'wide'
+ })
+}
+
+export default localize
diff --git a/date-fns/src/locale/cy/_lib/match/index.js b/date-fns/src/locale/cy/_lib/match/index.js
new file mode 100644
index 0000000..d2657ad
--- /dev/null
+++ b/date-fns/src/locale/cy/_lib/match/index.js
@@ -0,0 +1,147 @@
+import buildMatchPatternFn from '../../../_lib/buildMatchPatternFn/index'
+import buildMatchFn from '../../../_lib/buildMatchFn/index'
+
+var matchOrdinalNumberPattern = /^(\d+)(af|ail|ydd|ed|fed|eg|ain)?/i
+var parseOrdinalNumberPattern = /\d+/i
+
+var matchEraPatterns = {
+ narrow: /^(c|o)/i,
+ abbreviated: /^(c\.?\s?c\.?|o\.?\s?c\.?)/i,
+ wide: /^(cyn christ|ar ôl crist|ar ol crist)/i
+}
+var parseEraPatterns = {
+ wide: [/^c/i, /^(ar ôl crist|ar ol crist)/i],
+ any: [/^c/i, /^o/i]
+}
+
+var matchQuarterPatterns = {
+ narrow: /^[1234]/i,
+ abbreviated: /^ch[1234]/i,
+ wide: /^(chwarter 1af)|([234](ail|ydd)? chwarter)/i
+}
+var parseQuarterPatterns = {
+ any: [/1/i, /2/i, /3/i, /4/i]
+}
+
+var matchMonthPatterns = {
+ narrow: /^(i|ch|m|e|g|a|h|t|rh)/i,
+ abbreviated: /^(ion|chwe|maw|ebr|mai|meh|gor|aws|med|hyd|tach|rhag)/i,
+ wide: /^(ionawr|chwefror|mawrth|ebrill|mai|mehefin|gorffennaf|awst|medi|hydref|tachwedd|rhagfyr)/i
+}
+var parseMonthPatterns = {
+ narrow: [
+ /^i/i,
+ /^ch/i,
+ /^m/i,
+ /^e/i,
+ /^m/i,
+ /^m/i,
+ /^g/i,
+ /^a/i,
+ /^m/i,
+ /^h/i,
+ /^t/i,
+ /^rh/i
+ ],
+ any: [
+ /^io/i,
+ /^ch/i,
+ /^maw/i,
+ /^e/i,
+ /^mai/i,
+ /^meh/i,
+ /^g/i,
+ /^a/i,
+ /^med/i,
+ /^h/i,
+ /^t/i,
+ /^rh/i
+ ]
+}
+
+var matchDayPatterns = {
+ narrow: /^(s|ll|m|i|g)/i,
+ short: /^(su|ll|ma|me|ia|gw|sa)/i,
+ abbreviated: /^(sul|llun|maw|mer|iau|gwe|sad)/i,
+ wide: /^dydd (sul|llun|mawrth|mercher|iau|gwener|sadwrn)/i
+}
+var parseDayPatterns = {
+ narrow: [/^s/i, /^ll/i, /^m/i, /^m/i, /^i/i, /^g/i, /^s/i],
+ wide: [
+ /^dydd su/i,
+ /^dydd ll/i,
+ /^dydd ma/i,
+ /^dydd me/i,
+ /^dydd i/i,
+ /^dydd g/i,
+ /^dydd sa/i
+ ],
+ any: [/^su/i, /^ll/i, /^ma/i, /^me/i, /^i/i, /^g/i, /^sa/i]
+}
+
+var matchDayPeriodPatterns = {
+ narrow: /^(b|h|hn|hd|(yn y|y|yr|gyda'r) (bore|prynhawn|nos|hwyr))/i,
+ any: /^(y\.?\s?[bh]\.?|hanner nos|hanner dydd|(yn y|y|yr|gyda'r) (bore|prynhawn|nos|hwyr))/i
+}
+var parseDayPeriodPatterns = {
+ any: {
+ am: /^b|(y\.?\s?b\.?)/i,
+ pm: /^h|(y\.?\s?h\.?)|(yr hwyr)/i,
+ midnight: /^hn|hanner nos/i,
+ noon: /^hd|hanner dydd/i,
+ morning: /bore/i,
+ afternoon: /prynhawn/i,
+ evening: /^gyda'r nos$/i,
+ night: /blah/i
+ }
+}
+
+var match = {
+ ordinalNumber: buildMatchPatternFn({
+ matchPattern: matchOrdinalNumberPattern,
+ parsePattern: parseOrdinalNumberPattern,
+ valueCallback: function(value) {
+ return parseInt(value, 10)
+ }
+ }),
+
+ era: buildMatchFn({
+ matchPatterns: matchEraPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseEraPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ quarter: buildMatchFn({
+ matchPatterns: matchQuarterPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseQuarterPatterns,
+ defaultParseWidth: 'any',
+ valueCallback: function(index) {
+ return index + 1
+ }
+ }),
+
+ month: buildMatchFn({
+ matchPatterns: matchMonthPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseMonthPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ day: buildMatchFn({
+ matchPatterns: matchDayPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseDayPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ dayPeriod: buildMatchFn({
+ matchPatterns: matchDayPeriodPatterns,
+ defaultMatchWidth: 'any',
+ parsePatterns: parseDayPeriodPatterns,
+ defaultParseWidth: 'any'
+ })
+}
+
+export default match
diff --git a/date-fns/src/locale/cy/index.d.ts b/date-fns/src/locale/cy/index.d.ts
new file mode 100644
index 0000000..8c1286b
--- /dev/null
+++ b/date-fns/src/locale/cy/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { cy } from 'date-fns/locale'
+export default cy
diff --git a/date-fns/src/locale/cy/index.js b/date-fns/src/locale/cy/index.js
new file mode 100644
index 0000000..22167cf
--- /dev/null
+++ b/date-fns/src/locale/cy/index.js
@@ -0,0 +1,28 @@
+import formatDistance from './_lib/formatDistance/index'
+import formatLong from './_lib/formatLong/index'
+import formatRelative from './_lib/formatRelative/index'
+import localize from './_lib/localize/index'
+import match from './_lib/match/index'
+
+/**
+ * @type {Locale}
+ * @category Locales
+ * @summary Welsh locale.
+ * @language Welsh
+ * @iso-639-2 cym
+ * @author Elwyn Malethan [@elmomalmo]{@link https://github.com/elmomalmo}
+ */
+var locale = {
+ code: 'cy',
+ formatDistance: formatDistance,
+ formatLong: formatLong,
+ formatRelative: formatRelative,
+ localize: localize,
+ match: match,
+ options: {
+ weekStartsOn: 0 /* Sunday */,
+ firstWeekContainsDate: 1
+ }
+}
+
+export default locale
diff --git a/date-fns/src/locale/cy/index.js.flow b/date-fns/src/locale/cy/index.js.flow
new file mode 100644
index 0000000..b9dfe66
--- /dev/null
+++ b/date-fns/src/locale/cy/index.js.flow
@@ -0,0 +1,35 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+declare module.exports: Locale
diff --git a/date-fns/src/locale/cy/snapshot.md b/date-fns/src/locale/cy/snapshot.md
new file mode 100644
index 0000000..af13081
--- /dev/null
+++ b/date-fns/src/locale/cy/snapshot.md
@@ -0,0 +1,304 @@
+# Welsh (cy) locale
+
+## `format` and `parse`
+
+| Title | Token string | Date | `format` result | `parse` result |
+| ------------------------------- | ------------ | ------------------------ | ------------------------------------------------------- | ------------------------ |
+| Calendar year | yo | 1987-02-11T12:13:14.015Z | 1987fed | 1987-01-01T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 5ed | 0005-01-01T00:00:00.000Z |
+| Local week-numbering year | Yo | 1987-02-11T12:13:14.015Z | 1987fed | 1986-12-28T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 5ed | 0004-12-26T00:00:00.000Z |
+| Quarter (formatting) | Qo | 2019-01-01T12:13:14.015Z | 1af | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2ail | 2019-04-01T00:00:00.000Z |
+| | QQQ | 2019-01-01T12:13:14.015Z | Ch1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | Ch2 | 2019-04-01T00:00:00.000Z |
+| | QQQQ | 2019-01-01T12:13:14.015Z | Chwarter 1af | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2ail chwarter | 2019-04-01T00:00:00.000Z |
+| | QQQQQ | 2019-01-01T12:13:14.015Z | 1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2 | 2019-04-01T00:00:00.000Z |
+| Quarter (stand-alone) | qo | 2019-01-01T12:13:14.015Z | 1af | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2ail | 2019-04-01T00:00:00.000Z |
+| | qqq | 2019-01-01T12:13:14.015Z | Ch1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | Ch2 | 2019-04-01T00:00:00.000Z |
+| | qqqq | 2019-01-01T12:13:14.015Z | Chwarter 1af | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2ail chwarter | 2019-04-01T00:00:00.000Z |
+| Month (formatting) | Mo | 2019-02-11T12:13:14.015Z | 2ail | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7fed | 2019-07-01T00:00:00.000Z |
+| | MMM | 2019-02-11T12:13:14.015Z | Chwe | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | Gor | 2019-07-01T00:00:00.000Z |
+| | MMMM | 2019-02-11T12:13:14.015Z | Chwefror | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | Gorffennaf | 2019-07-01T00:00:00.000Z |
+| | MMMMM | 2019-02-11T12:13:14.015Z | Ch | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | G | 2019-07-01T00:00:00.000Z |
+| Month (stand-alone) | Lo | 2019-02-11T12:13:14.015Z | 2ail | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7fed | 2019-07-01T00:00:00.000Z |
+| | LLL | 2019-02-11T12:13:14.015Z | Chwe | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | Gor | 2019-07-01T00:00:00.000Z |
+| | LLLL | 2019-02-11T12:13:14.015Z | Chwefror | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | Gorffennaf | 2019-07-01T00:00:00.000Z |
+| | LLLLL | 2019-02-11T12:13:14.015Z | Ch | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | G | 2019-07-01T00:00:00.000Z |
+| Local week of year | wo | 2019-01-01T12:13:14.015Z | 1af | 2018-12-30T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 49ain | 2019-12-01T00:00:00.000Z |
+| ISO week of year | Io | 2019-01-01T12:13:14.015Z | 1af | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48ain | 2019-11-25T00:00:00.000Z |
+| Day of month | do | 2019-02-11T12:13:14.015Z | 11eg | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-28T12:13:14.015Z | 28ain | 2019-02-28T00:00:00.000Z |
+| Day of year | Do | 2019-02-11T12:13:14.015Z | 42ain | 2019-02-11T00:00:00.000Z |
+| | | 2019-12-31T12:13:14.015Z | 365fed | 2019-12-31T00:00:00.000Z |
+| Day of week (formatting) | E | 2019-02-11T12:13:14.015Z | Llun | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Gwe | 2019-02-15T00:00:00.000Z |
+| | EE | 2019-02-11T12:13:14.015Z | Llun | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Gwe | 2019-02-15T00:00:00.000Z |
+| | EEE | 2019-02-11T12:13:14.015Z | Llun | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Gwe | 2019-02-15T00:00:00.000Z |
+| | EEEE | 2019-02-11T12:13:14.015Z | dydd Llun | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | dydd Gwener | 2019-02-15T00:00:00.000Z |
+| | EEEEE | 2019-02-11T12:13:14.015Z | Ll | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | G | 2019-02-15T00:00:00.000Z |
+| | EEEEEE | 2019-02-11T12:13:14.015Z | Ll | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Gw | 2019-02-15T00:00:00.000Z |
+| ISO day of week (formatting) | io | 2019-02-11T12:13:14.015Z | 1af | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5ed | 2019-02-15T00:00:00.000Z |
+| | iii | 2019-02-11T12:13:14.015Z | Llun | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Gwe | 2019-02-15T00:00:00.000Z |
+| | iiii | 2019-02-11T12:13:14.015Z | dydd Llun | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | dydd Gwener | 2019-02-15T00:00:00.000Z |
+| | iiiii | 2019-02-11T12:13:14.015Z | Ll | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | G | 2019-02-15T00:00:00.000Z |
+| | iiiiii | 2019-02-11T12:13:14.015Z | Ll | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Gw | 2019-02-15T00:00:00.000Z |
+| Local day of week (formatting) | eo | 2019-02-11T12:13:14.015Z | 2ail | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 6ed | 2019-02-15T00:00:00.000Z |
+| | eee | 2019-02-11T12:13:14.015Z | Llun | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Gwe | 2019-02-15T00:00:00.000Z |
+| | eeee | 2019-02-11T12:13:14.015Z | dydd Llun | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | dydd Gwener | 2019-02-15T00:00:00.000Z |
+| | eeeee | 2019-02-11T12:13:14.015Z | Ll | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | G | 2019-02-15T00:00:00.000Z |
+| | eeeeee | 2019-02-11T12:13:14.015Z | Ll | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Gw | 2019-02-15T00:00:00.000Z |
+| Local day of week (stand-alone) | co | 2019-02-11T12:13:14.015Z | 2ail | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 6ed | 2019-02-15T00:00:00.000Z |
+| | ccc | 2019-02-11T12:13:14.015Z | Llun | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Gwe | 2019-02-15T00:00:00.000Z |
+| | cccc | 2019-02-11T12:13:14.015Z | dydd Llun | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | dydd Gwener | 2019-02-15T00:00:00.000Z |
+| | ccccc | 2019-02-11T12:13:14.015Z | Ll | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | G | 2019-02-15T00:00:00.000Z |
+| | cccccc | 2019-02-11T12:13:14.015Z | Ll | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Gw | 2019-02-15T00:00:00.000Z |
+| AM, PM | a | 2019-02-11T11:13:14.015Z | yb | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | yh | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | yh | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | yb | 2019-02-11T00:00:00.000Z |
+| | aa | 2019-02-11T11:13:14.015Z | yb | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | yh | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | yh | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | yb | 2019-02-11T00:00:00.000Z |
+| | aaa | 2019-02-11T11:13:14.015Z | yb | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | yh | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | yh | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | yb | 2019-02-11T00:00:00.000Z |
+| | aaaa | 2019-02-11T11:13:14.015Z | y.b. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | y.h. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | y.h. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | y.b. | 2019-02-11T00:00:00.000Z |
+| | aaaaa | 2019-02-11T11:13:14.015Z | b | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | h | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | h | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | b | 2019-02-11T00:00:00.000Z |
+| AM, PM, noon, midnight | b | 2019-02-11T11:13:14.015Z | yb | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | yh | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | yh | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | yb | 2019-02-11T00:00:00.000Z |
+| | bb | 2019-02-11T11:13:14.015Z | yb | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | yh | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | yh | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | yb | 2019-02-11T00:00:00.000Z |
+| | bbb | 2019-02-11T11:13:14.015Z | yb | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | yh | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | yh | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | yb | 2019-02-11T00:00:00.000Z |
+| | bbbb | 2019-02-11T11:13:14.015Z | y.b. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | y.h. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | y.h. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | y.b. | 2019-02-11T00:00:00.000Z |
+| | bbbbb | 2019-02-11T11:13:14.015Z | b | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | h | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | h | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | b | 2019-02-11T00:00:00.000Z |
+| Flexible day period | B | 2019-02-11T11:13:14.015Z | yn y bore | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | yn y prynhawn | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | gyda'r nos | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | yn y nos | 2019-02-11T00:00:00.000Z |
+| | BB | 2019-02-11T11:13:14.015Z | yn y bore | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | yn y prynhawn | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | gyda'r nos | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | yn y nos | 2019-02-11T00:00:00.000Z |
+| | BBB | 2019-02-11T11:13:14.015Z | yn y bore | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | yn y prynhawn | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | gyda'r nos | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | yn y nos | 2019-02-11T00:00:00.000Z |
+| | BBBB | 2019-02-11T11:13:14.015Z | yn y bore | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | yn y prynhawn | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | gyda'r nos | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | yn y nos | 2019-02-11T00:00:00.000Z |
+| | BBBBB | 2019-02-11T11:13:14.015Z | yn y bore | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | yn y prynhawn | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | gyda'r nos | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | yn y nos | 2019-02-11T00:00:00.000Z |
+| Hour [1-12] | ho | 2019-02-11T11:13:14.015Z | 11eg | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11eg | 2019-02-11T23:00:00.000Z |
+| Hour [0-23] | Ho | 2019-02-11T11:13:14.015Z | 11eg | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23ain | 2019-02-11T23:00:00.000Z |
+| Hour [0-11] | Ko | 2019-02-11T11:13:14.015Z | 11eg | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11eg | 2019-02-11T23:00:00.000Z |
+| Hour [1-24] | ko | 2019-02-11T11:13:14.015Z | 11eg | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23ain | 2019-02-11T23:00:00.000Z |
+| Minute | mo | 2019-01-01T12:01:14.015Z | 1af | 2019-01-01T12:01:00.000Z |
+| | | 2019-04-01T12:55:14.015Z | 55fed | 2019-04-01T12:55:00.000Z |
+| Second | so | 2019-01-01T12:13:01.015Z | 1af | 2019-01-01T12:13:01.000Z |
+| | | 2019-04-01T12:13:55.015Z | 55fed | 2019-04-01T12:13:55.000Z |
+| Long localized date | P | 1987-02-11T12:13:14.015Z | 11/02/1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29/05/1453 | 1453-05-29T00:00:00.000Z |
+| | PP | 1987-02-11T12:13:14.015Z | 11 Chwe 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 Mai 1453 | 1453-05-29T00:00:00.000Z |
+| | PPP | 1987-02-11T12:13:14.015Z | 11 Chwefror 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 Mai 1453 | 1453-05-29T00:00:00.000Z |
+| | PPPP | 1987-02-11T12:13:14.015Z | dydd Mercher, 11 Chwefror 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | dydd Sul, 29 Mai 1453 | 1453-05-29T00:00:00.000Z |
+| Long localized time | p | 1987-02-11T12:13:14.015Z | 12:13 yh | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 11:59 yh | 1453-05-29T23:59:00.000Z |
+| | pp | 1987-02-11T12:13:14.015Z | 12:13:14 yh | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 11:59:59 yh | 1453-05-29T23:59:59.000Z |
+| | ppp | 1987-02-11T12:13:14.015Z | 12:13:14 yh GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 11:59:59 yh GMT+0 | Errored |
+| | pppp | 1987-02-11T12:13:14.015Z | 12:13:14 yh GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 11:59:59 yh GMT+00:00 | Errored |
+| Combination of date and time | Pp | 1987-02-11T12:13:14.015Z | 11/02/1987, 12:13 yh | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29/05/1453, 11:59 yh | 1453-05-29T23:59:00.000Z |
+| | PPpp | 1987-02-11T12:13:14.015Z | 11 Chwe 1987, 12:13:14 yh | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 Mai 1453, 11:59:59 yh | 1453-05-29T23:59:59.000Z |
+| | PPPppp | 1987-02-11T12:13:14.015Z | 11 Chwefror 1987 am 12:13:14 yh GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 29 Mai 1453 am 11:59:59 yh GMT+0 | Errored |
+| | PPPPpppp | 1987-02-11T12:13:14.015Z | dydd Mercher, 11 Chwefror 1987 am 12:13:14 yh GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | dydd Sul, 29 Mai 1453 am 11:59:59 yh GMT+00:00 | Errored |
+
+## `formatDistance`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `includeSeconds: true` | `addSuffix: true` |
+| ------------------------ | --------------- | ---------------------- | --------------------- |
+| 2006-01-01T00:00:00.000Z | tua 6 mlynedd | tua 6 mlynedd | mewn tua 6 mlynedd |
+| 2005-01-01T00:00:00.000Z | tua 5 mlynedd | tua 5 mlynedd | mewn tua 5 mlynedd |
+| 2004-01-01T00:00:00.000Z | tua 4 mlynedd | tua 4 mlynedd | mewn tua 4 mlynedd |
+| 2003-01-01T00:00:00.000Z | tua 3 mlynedd | tua 3 mlynedd | mewn tua 3 mlynedd |
+| 2002-01-01T00:00:00.000Z | tua 2 flynedd | tua 2 flynedd | mewn tua 2 flynedd |
+| 2001-06-01T00:00:00.000Z | dros 1 flwyddyn | dros 1 flwyddyn | mewn dros 1 flwyddyn |
+| 2001-02-01T00:00:00.000Z | tua 1 flwyddyn | tua 1 flwyddyn | mewn tua 1 flwyddyn |
+| 2001-01-01T00:00:00.000Z | tua 1 flwyddyn | tua 1 flwyddyn | mewn tua 1 flwyddyn |
+| 2000-06-01T00:00:00.000Z | 5 mis | 5 mis | mewn 5 mis |
+| 2000-03-01T00:00:00.000Z | 2 fis | 2 fis | mewn 2 fis |
+| 2000-02-01T00:00:00.000Z | tua 1 mis | tua 1 mis | mewn tua 1 mis |
+| 2000-01-15T00:00:00.000Z | 14 diwrnod | 14 diwrnod | mewn 14 diwrnod |
+| 2000-01-02T00:00:00.000Z | 1 diwrnod | 1 diwrnod | mewn 1 diwrnod |
+| 2000-01-01T06:00:00.000Z | tua 6 awr | tua 6 awr | mewn tua 6 awr |
+| 2000-01-01T01:00:00.000Z | tua 1 awr | tua 1 awr | mewn tua 1 awr |
+| 2000-01-01T00:45:00.000Z | tua 1 awr | tua 1 awr | mewn tua 1 awr |
+| 2000-01-01T00:30:00.000Z | 30 munud | 30 munud | mewn 30 munud |
+| 2000-01-01T00:15:00.000Z | 15 munud | 15 munud | mewn 15 munud |
+| 2000-01-01T00:01:00.000Z | 1 munud | 1 munud | mewn 1 munud |
+| 2000-01-01T00:00:25.000Z | llai na munud | hanner munud | mewn llai na munud |
+| 2000-01-01T00:00:15.000Z | llai na munud | llai na 20 eiliad | mewn llai na munud |
+| 2000-01-01T00:00:05.000Z | llai na munud | llai na 10 eiliad | mewn llai na munud |
+| 2000-01-01T00:00:00.000Z | llai na munud | llai na 5 eiliad | llai na munud yn ôl |
+| 1999-12-31T23:59:55.000Z | llai na munud | llai na 10 eiliad | llai na munud yn ôl |
+| 1999-12-31T23:59:45.000Z | llai na munud | llai na 20 eiliad | llai na munud yn ôl |
+| 1999-12-31T23:59:35.000Z | llai na munud | hanner munud | llai na munud yn ôl |
+| 1999-12-31T23:59:00.000Z | 1 munud | 1 munud | 1 munud yn ôl |
+| 1999-12-31T23:45:00.000Z | 15 munud | 15 munud | 15 munud yn ôl |
+| 1999-12-31T23:30:00.000Z | 30 munud | 30 munud | 30 munud yn ôl |
+| 1999-12-31T23:15:00.000Z | tua 1 awr | tua 1 awr | tua 1 awr yn ôl |
+| 1999-12-31T23:00:00.000Z | tua 1 awr | tua 1 awr | tua 1 awr yn ôl |
+| 1999-12-31T18:00:00.000Z | tua 6 awr | tua 6 awr | tua 6 awr yn ôl |
+| 1999-12-30T00:00:00.000Z | 2 ddiwrnod | 2 ddiwrnod | 2 ddiwrnod yn ôl |
+| 1999-12-15T00:00:00.000Z | 17 diwrnod | 17 diwrnod | 17 diwrnod yn ôl |
+| 1999-12-01T00:00:00.000Z | tua 1 mis | tua 1 mis | tua 1 mis yn ôl |
+| 1999-11-01T00:00:00.000Z | 2 fis | 2 fis | 2 fis yn ôl |
+| 1999-06-01T00:00:00.000Z | 7 mis | 7 mis | 7 mis yn ôl |
+| 1999-01-01T00:00:00.000Z | tua 1 flwyddyn | tua 1 flwyddyn | tua 1 flwyddyn yn ôl |
+| 1998-12-01T00:00:00.000Z | tua 1 flwyddyn | tua 1 flwyddyn | tua 1 flwyddyn yn ôl |
+| 1998-06-01T00:00:00.000Z | dros 1 flwyddyn | dros 1 flwyddyn | dros 1 flwyddyn yn ôl |
+| 1998-01-01T00:00:00.000Z | tua 2 flynedd | tua 2 flynedd | tua 2 flynedd yn ôl |
+| 1997-01-01T00:00:00.000Z | tua 3 mlynedd | tua 3 mlynedd | tua 3 mlynedd yn ôl |
+| 1996-01-01T00:00:00.000Z | tua 4 mlynedd | tua 4 mlynedd | tua 4 mlynedd yn ôl |
+| 1995-01-01T00:00:00.000Z | tua 5 mlynedd | tua 5 mlynedd | tua 5 mlynedd yn ôl |
+| 1994-01-01T00:00:00.000Z | tua 6 mlynedd | tua 6 mlynedd | tua 6 mlynedd yn ôl |
+
+## `formatDistanceStrict`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `addSuffix: true` | With forced unit (i.e. `hour`) |
+| ------------------------ | ---------- | ----------------- | ------------------------------ |
+| 2006-01-01T00:00:00.000Z | 6 mlynedd | mewn 6 mlynedd | 52608 awr |
+| 2005-01-01T00:00:00.000Z | 5 mlynedd | mewn 5 mlynedd | 43848 awr |
+| 2004-01-01T00:00:00.000Z | 4 mlynedd | mewn 4 mlynedd | 35064 awr |
+| 2003-01-01T00:00:00.000Z | 3 mlynedd | mewn 3 mlynedd | 26304 awr |
+| 2002-01-01T00:00:00.000Z | 2 flynedd | mewn 2 flynedd | 17544 awr |
+| 2001-06-01T00:00:00.000Z | 1 flwyddyn | mewn 1 flwyddyn | 12408 awr |
+| 2001-02-01T00:00:00.000Z | 1 flwyddyn | mewn 1 flwyddyn | 9528 awr |
+| 2001-01-01T00:00:00.000Z | 1 flwyddyn | mewn 1 flwyddyn | 8784 awr |
+| 2000-06-01T00:00:00.000Z | 5 mis | mewn 5 mis | 3648 awr |
+| 2000-03-01T00:00:00.000Z | 2 fis | mewn 2 fis | 1440 awr |
+| 2000-02-01T00:00:00.000Z | 1 mis | mewn 1 mis | 744 awr |
+| 2000-01-15T00:00:00.000Z | 14 diwrnod | mewn 14 diwrnod | 336 awr |
+| 2000-01-02T00:00:00.000Z | 1 diwrnod | mewn 1 diwrnod | 24 awr |
+| 2000-01-01T06:00:00.000Z | 6 awr | mewn 6 awr | 6 awr |
+| 2000-01-01T01:00:00.000Z | 1 awr | mewn 1 awr | 1 awr |
+| 2000-01-01T00:45:00.000Z | 45 munud | mewn 45 munud | 1 awr |
+| 2000-01-01T00:30:00.000Z | 30 munud | mewn 30 munud | 1 awr |
+| 2000-01-01T00:15:00.000Z | 15 munud | mewn 15 munud | 0 awr |
+| 2000-01-01T00:01:00.000Z | 1 munud | mewn 1 munud | 0 awr |
+| 2000-01-01T00:00:25.000Z | 25 eiliad | mewn 25 eiliad | 0 awr |
+| 2000-01-01T00:00:15.000Z | 15 eiliad | mewn 15 eiliad | 0 awr |
+| 2000-01-01T00:00:05.000Z | 5 eiliad | mewn 5 eiliad | 0 awr |
+| 2000-01-01T00:00:00.000Z | 0 eiliad | 0 eiliad yn ôl | 0 awr |
+| 1999-12-31T23:59:55.000Z | 5 eiliad | 5 eiliad yn ôl | 0 awr |
+| 1999-12-31T23:59:45.000Z | 15 eiliad | 15 eiliad yn ôl | 0 awr |
+| 1999-12-31T23:59:35.000Z | 25 eiliad | 25 eiliad yn ôl | 0 awr |
+| 1999-12-31T23:59:00.000Z | 1 munud | 1 munud yn ôl | 0 awr |
+| 1999-12-31T23:45:00.000Z | 15 munud | 15 munud yn ôl | 0 awr |
+| 1999-12-31T23:30:00.000Z | 30 munud | 30 munud yn ôl | 1 awr |
+| 1999-12-31T23:15:00.000Z | 45 munud | 45 munud yn ôl | 1 awr |
+| 1999-12-31T23:00:00.000Z | 1 awr | 1 awr yn ôl | 1 awr |
+| 1999-12-31T18:00:00.000Z | 6 awr | 6 awr yn ôl | 6 awr |
+| 1999-12-30T00:00:00.000Z | 2 ddiwrnod | 2 ddiwrnod yn ôl | 48 awr |
+| 1999-12-15T00:00:00.000Z | 17 diwrnod | 17 diwrnod yn ôl | 408 awr |
+| 1999-12-01T00:00:00.000Z | 1 mis | 1 mis yn ôl | 744 awr |
+| 1999-11-01T00:00:00.000Z | 2 fis | 2 fis yn ôl | 1464 awr |
+| 1999-06-01T00:00:00.000Z | 7 mis | 7 mis yn ôl | 5136 awr |
+| 1999-01-01T00:00:00.000Z | 1 flwyddyn | 1 flwyddyn yn ôl | 8760 awr |
+| 1998-12-01T00:00:00.000Z | 1 flwyddyn | 1 flwyddyn yn ôl | 9504 awr |
+| 1998-06-01T00:00:00.000Z | 2 flynedd | 2 flynedd yn ôl | 13896 awr |
+| 1998-01-01T00:00:00.000Z | 2 flynedd | 2 flynedd yn ôl | 17520 awr |
+| 1997-01-01T00:00:00.000Z | 3 mlynedd | 3 mlynedd yn ôl | 26280 awr |
+| 1996-01-01T00:00:00.000Z | 4 mlynedd | 4 mlynedd yn ôl | 35064 awr |
+| 1995-01-01T00:00:00.000Z | 5 mlynedd | 5 mlynedd yn ôl | 43824 awr |
+| 1994-01-01T00:00:00.000Z | 6 mlynedd | 6 mlynedd yn ôl | 52584 awr |
+
+## `formatRelative`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result |
+| ------------------------ | ------------------------------ |
+| 2000-01-10T00:00:00.000Z | 10/01/2000 |
+| 2000-01-05T00:00:00.000Z | dydd Mercher am 12:00 yb |
+| 2000-01-02T00:00:00.000Z | yfory am 12:00 yb |
+| 2000-01-01T00:00:00.000Z | heddiw am 12:00 yb |
+| 1999-12-31T00:00:00.000Z | ddoe am 12:00 yb |
+| 1999-12-27T00:00:00.000Z | dydd Llun diwethaf am 12:00 yb |
+| 1999-12-21T00:00:00.000Z | 21/12/1999 |
diff --git a/date-fns/src/locale/da/_lib/formatDistance/index.js b/date-fns/src/locale/da/_lib/formatDistance/index.js
new file mode 100644
index 0000000..7eb8672
--- /dev/null
+++ b/date-fns/src/locale/da/_lib/formatDistance/index.js
@@ -0,0 +1,101 @@
+var formatDistanceLocale = {
+ lessThanXSeconds: {
+ one: 'mindre end ét sekund',
+ other: 'mindre end {{count}} sekunder'
+ },
+
+ xSeconds: {
+ one: '1 sekund',
+ other: '{{count}} sekunder'
+ },
+
+ halfAMinute: 'ét halvt minut',
+
+ lessThanXMinutes: {
+ one: 'mindre end ét minut',
+ other: 'mindre end {{count}} minutter'
+ },
+
+ xMinutes: {
+ one: '1 minut',
+ other: '{{count}} minutter'
+ },
+
+ aboutXHours: {
+ one: 'cirka 1 time',
+ other: 'cirka {{count}} timer'
+ },
+
+ xHours: {
+ one: '1 time',
+ other: '{{count}} timer'
+ },
+
+ xDays: {
+ one: '1 dag',
+ other: '{{count}} dage'
+ },
+
+ aboutXWeeks: {
+ one: 'cirka 1 uge',
+ other: 'cirka {{count}} uger'
+ },
+
+ xWeeks: {
+ one: '1 uge',
+ other: '{{count}} uger'
+ },
+
+ aboutXMonths: {
+ one: 'cirka 1 måned',
+ other: 'cirka {{count}} måneder'
+ },
+
+ xMonths: {
+ one: '1 måned',
+ other: '{{count}} måneder'
+ },
+
+ aboutXYears: {
+ one: 'cirka 1 år',
+ other: 'cirka {{count}} år'
+ },
+
+ xYears: {
+ one: '1 år',
+ other: '{{count}} år'
+ },
+
+ overXYears: {
+ one: 'over 1 år',
+ other: 'over {{count}} år'
+ },
+
+ almostXYears: {
+ one: 'næsten 1 år',
+ other: 'næsten {{count}} år'
+ }
+}
+
+export default function formatDistance(token, count, options) {
+ options = options || {}
+
+ var result
+ if (typeof formatDistanceLocale[token] === 'string') {
+ result = formatDistanceLocale[token]
+ } else if (count === 1) {
+ result = formatDistanceLocale[token].one
+ } else {
+ result = formatDistanceLocale[token].other.replace('{{count}}', count)
+ }
+
+ if (options.addSuffix) {
+ if (options.comparison > 0) {
+ return 'om ' + result
+ } else {
+ return result + ' siden'
+ }
+ }
+
+ return result
+}
diff --git a/date-fns/src/locale/da/_lib/formatLong/index.js b/date-fns/src/locale/da/_lib/formatLong/index.js
new file mode 100644
index 0000000..4544f5d
--- /dev/null
+++ b/date-fns/src/locale/da/_lib/formatLong/index.js
@@ -0,0 +1,41 @@
+import buildFormatLongFn from '../../../_lib/buildFormatLongFn/index'
+
+var dateFormats = {
+ full: "EEEE 'den' d. MMMM y",
+ long: 'd. MMMM y',
+ medium: 'd. MMM y',
+ short: 'dd/MM/y'
+}
+
+var timeFormats = {
+ full: 'HH:mm:ss zzzz',
+ long: 'HH:mm:ss z',
+ medium: 'HH:mm:ss',
+ short: 'HH:mm'
+}
+
+var dateTimeFormats = {
+ full: "{{date}} 'kl'. {{time}}",
+ long: "{{date}} 'kl'. {{time}}",
+ medium: '{{date}} {{time}}',
+ short: '{{date}} {{time}}'
+}
+
+var formatLong = {
+ date: buildFormatLongFn({
+ formats: dateFormats,
+ defaultWidth: 'full'
+ }),
+
+ time: buildFormatLongFn({
+ formats: timeFormats,
+ defaultWidth: 'full'
+ }),
+
+ dateTime: buildFormatLongFn({
+ formats: dateTimeFormats,
+ defaultWidth: 'full'
+ })
+}
+
+export default formatLong
diff --git a/date-fns/src/locale/da/_lib/formatRelative/index.js b/date-fns/src/locale/da/_lib/formatRelative/index.js
new file mode 100644
index 0000000..85fab13
--- /dev/null
+++ b/date-fns/src/locale/da/_lib/formatRelative/index.js
@@ -0,0 +1,12 @@
+var formatRelativeLocale = {
+ lastWeek: "'sidste' eeee 'kl.' p",
+ yesterday: "'i går kl.' p",
+ today: "'i dag kl.' p",
+ tomorrow: "'i morgen kl.' p",
+ nextWeek: "'på' eeee 'kl.' p",
+ other: 'P'
+}
+
+export default function formatRelative(token, _date, _baseDate, _options) {
+ return formatRelativeLocale[token]
+}
diff --git a/date-fns/src/locale/da/_lib/localize/index.js b/date-fns/src/locale/da/_lib/localize/index.js
new file mode 100644
index 0000000..243315c
--- /dev/null
+++ b/date-fns/src/locale/da/_lib/localize/index.js
@@ -0,0 +1,162 @@
+import buildLocalizeFn from '../../../_lib/buildLocalizeFn/index'
+
+var eraValues = {
+ narrow: ['fvt', 'vt'],
+ abbreviated: ['f.v.t.', 'v.t.'],
+ wide: ['før vesterlandsk tidsregning', 'vesterlandsk tidsregning']
+}
+
+var quarterValues = {
+ narrow: ['1', '2', '3', '4'],
+ abbreviated: ['1. kvt.', '2. kvt.', '3. kvt.', '4. kvt.'],
+ wide: ['1. kvartal', '2. kvartal', '3. kvartal', '4. kvartal']
+}
+
+var monthValues = {
+ narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],
+ abbreviated: [
+ 'jan.',
+ 'feb.',
+ 'mar.',
+ 'apr.',
+ 'maj',
+ 'jun.',
+ 'jul.',
+ 'aug.',
+ 'sep.',
+ 'okt.',
+ 'nov.',
+ 'dec.'
+ ],
+ wide: [
+ 'januar',
+ 'februar',
+ 'marts',
+ 'april',
+ 'maj',
+ 'juni',
+ 'juli',
+ 'august',
+ 'september',
+ 'oktober',
+ 'november',
+ 'december'
+ ]
+}
+
+// Note that 'Days - abbreviated - Formatting' has periods at the end.
+// https://www.unicode.org/cldr/charts/32/summary/da.html#1760
+// This makes grammatical sense in danish, as most abbreviations have periods.
+var dayValues = {
+ narrow: ['S', 'M', 'T', 'O', 'T', 'F', 'L'],
+ short: ['sø', 'ma', 'ti', 'on', 'to', 'fr', 'lø'],
+ abbreviated: ['søn.', 'man.', 'tir.', 'ons.', 'tor.', 'fre.', 'lør.'],
+ wide: ['søndag', 'mandag', 'tirsdag', 'onsdag', 'torsdag', 'fredag', 'lørdag']
+}
+
+var dayPeriodValues = {
+ narrow: {
+ am: 'a',
+ pm: 'p',
+ midnight: 'midnat',
+ noon: 'middag',
+ morning: 'morgen',
+ afternoon: 'eftermiddag',
+ evening: 'aften',
+ night: 'nat'
+ },
+ abbreviated: {
+ am: 'AM',
+ pm: 'PM',
+ midnight: 'midnat',
+ noon: 'middag',
+ morning: 'morgen',
+ afternoon: 'eftermiddag',
+ evening: 'aften',
+ night: 'nat'
+ },
+ wide: {
+ am: 'a.m.',
+ pm: 'p.m.',
+ midnight: 'midnat',
+ noon: 'middag',
+ morning: 'morgen',
+ afternoon: 'eftermiddag',
+ evening: 'aften',
+ night: 'nat'
+ }
+}
+
+var formattingDayPeriodValues = {
+ narrow: {
+ am: 'a',
+ pm: 'p',
+ midnight: 'midnat',
+ noon: 'middag',
+ morning: 'om morgenen',
+ afternoon: 'om eftermiddagen',
+ evening: 'om aftenen',
+ night: 'om natten'
+ },
+ abbreviated: {
+ am: 'AM',
+ pm: 'PM',
+ midnight: 'midnat',
+ noon: 'middag',
+ morning: 'om morgenen',
+ afternoon: 'om eftermiddagen',
+ evening: 'om aftenen',
+ night: 'om natten'
+ },
+ wide: {
+ am: 'a.m.',
+ pm: 'p.m.',
+ midnight: 'midnat',
+ noon: 'middag',
+ morning: 'om morgenen',
+ afternoon: 'om eftermiddagen',
+ evening: 'om aftenen',
+ night: 'om natten'
+ }
+}
+
+function ordinalNumber(dirtyNumber) {
+ var number = Number(dirtyNumber)
+ return number + '.'
+}
+
+var localize = {
+ ordinalNumber: ordinalNumber,
+
+ era: buildLocalizeFn({
+ values: eraValues,
+ defaultWidth: 'wide'
+ }),
+
+ quarter: buildLocalizeFn({
+ values: quarterValues,
+ defaultWidth: 'wide',
+ argumentCallback: function(quarter) {
+ return Number(quarter) - 1
+ }
+ }),
+
+ month: buildLocalizeFn({
+ values: monthValues,
+ defaultWidth: 'wide'
+ }),
+
+ day: buildLocalizeFn({
+ values: dayValues,
+ defaultWidth: 'wide'
+ }),
+
+ dayPeriod: buildLocalizeFn({
+ values: dayPeriodValues,
+ defaultWidth: 'wide',
+ formattingValues: formattingDayPeriodValues,
+ defaultFormattingWidth: 'wide'
+ })
+}
+
+export default localize
diff --git a/date-fns/src/locale/da/_lib/match/index.js b/date-fns/src/locale/da/_lib/match/index.js
new file mode 100644
index 0000000..1972602
--- /dev/null
+++ b/date-fns/src/locale/da/_lib/match/index.js
@@ -0,0 +1,136 @@
+import buildMatchFn from '../../../_lib/buildMatchFn/index'
+import buildMatchPatternFn from '../../../_lib/buildMatchPatternFn/index'
+
+var matchOrdinalNumberPattern = /^(\d+)(\.)?/i
+var parseOrdinalNumberPattern = /\d+/i
+
+var matchEraPatterns = {
+ narrow: /^(fKr|fvt|eKr|vt)/i,
+ abbreviated: /^(f\.Kr\.?|f\.v\.t\.?|e\.Kr\.?|v\.t\.)/i,
+ wide: /^(f.Kr.|før vesterlandsk tidsregning|e.Kr.|vesterlandsk tidsregning)/i
+}
+var parseEraPatterns = {
+ any: [/^f/i, /^(v|e)/i]
+}
+
+var matchQuarterPatterns = {
+ narrow: /^[1234]/i,
+ abbreviated: /^[1234]. kvt\./i,
+ wide: /^[1234]\.? kvartal/i
+}
+var parseQuarterPatterns = {
+ any: [/1/i, /2/i, /3/i, /4/i]
+}
+
+var matchMonthPatterns = {
+ narrow: /^[jfmasond]/i,
+ abbreviated: /^(jan.|feb.|mar.|apr.|maj|jun.|jul.|aug.|sep.|okt.|nov.|dec.)/i,
+ wide: /^(januar|februar|marts|april|maj|juni|juli|august|september|oktober|november|december)/i
+}
+var parseMonthPatterns = {
+ narrow: [
+ /^j/i,
+ /^f/i,
+ /^m/i,
+ /^a/i,
+ /^m/i,
+ /^j/i,
+ /^j/i,
+ /^a/i,
+ /^s/i,
+ /^o/i,
+ /^n/i,
+ /^d/i
+ ],
+ any: [
+ /^ja/i,
+ /^f/i,
+ /^mar/i,
+ /^ap/i,
+ /^maj/i,
+ /^jun/i,
+ /^jul/i,
+ /^au/i,
+ /^s/i,
+ /^o/i,
+ /^n/i,
+ /^d/i
+ ]
+}
+
+var matchDayPatterns = {
+ narrow: /^[smtofl]/i,
+ short: /^(søn.|man.|tir.|ons.|tor.|fre.|lør.)/i,
+ abbreviated: /^(søn|man|tir|ons|tor|fre|lør)/i,
+ wide: /^(søndag|mandag|tirsdag|onsdag|torsdag|fredag|lørdag)/i
+}
+var parseDayPatterns = {
+ narrow: [/^s/i, /^m/i, /^t/i, /^o/i, /^t/i, /^f/i, /^l/i],
+ any: [/^s/i, /^m/i, /^ti/i, /^o/i, /^to/i, /^f/i, /^l/i]
+}
+
+var matchDayPeriodPatterns = {
+ narrow: /^(a|p|midnat|middag|(om) (morgenen|eftermiddagen|aftenen|natten))/i,
+ any: /^([ap]\.?\s?m\.?|midnat|middag|(om) (morgenen|eftermiddagen|aftenen|natten))/i
+}
+var parseDayPeriodPatterns = {
+ any: {
+ am: /^a/i,
+ pm: /^p/i,
+ midnight: /midnat/i,
+ noon: /middag/i,
+ morning: /morgen/i,
+ afternoon: /eftermiddag/i,
+ evening: /aften/i,
+ night: /nat/i
+ }
+}
+
+var match = {
+ ordinalNumber: buildMatchPatternFn({
+ matchPattern: matchOrdinalNumberPattern,
+ parsePattern: parseOrdinalNumberPattern,
+ valueCallback: function(value) {
+ return parseInt(value, 10)
+ }
+ }),
+
+ era: buildMatchFn({
+ matchPatterns: matchEraPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseEraPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ quarter: buildMatchFn({
+ matchPatterns: matchQuarterPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseQuarterPatterns,
+ defaultParseWidth: 'any',
+ valueCallback: function(index) {
+ return index + 1
+ }
+ }),
+
+ month: buildMatchFn({
+ matchPatterns: matchMonthPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseMonthPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ day: buildMatchFn({
+ matchPatterns: matchDayPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseDayPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ dayPeriod: buildMatchFn({
+ matchPatterns: matchDayPeriodPatterns,
+ defaultMatchWidth: 'any',
+ parsePatterns: parseDayPeriodPatterns,
+ defaultParseWidth: 'any'
+ })
+}
+export default match
diff --git a/date-fns/src/locale/da/index.d.ts b/date-fns/src/locale/da/index.d.ts
new file mode 100644
index 0000000..1cd188a
--- /dev/null
+++ b/date-fns/src/locale/da/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { da } from 'date-fns/locale'
+export default da
diff --git a/date-fns/src/locale/da/index.js b/date-fns/src/locale/da/index.js
new file mode 100644
index 0000000..201c3d1
--- /dev/null
+++ b/date-fns/src/locale/da/index.js
@@ -0,0 +1,31 @@
+import formatDistance from './_lib/formatDistance/index'
+import formatLong from './_lib/formatLong/index'
+import formatRelative from './_lib/formatRelative/index'
+import localize from './_lib/localize/index'
+import match from './_lib/match/index'
+
+/**
+ * @type {Locale}
+ * @category Locales
+ * @summary Danish locale.
+ * @language Danish
+ * @iso-639-2 dan
+ * @author Mathias Wøbbe [@MathiasKandelborg]{@link https://github.com/MathiasKandelborg}
+ * @author Anders B. Hansen [@Andersbiha]{@link https://github.com/Andersbiha}
+ * @author [@kgram]{@link https://github.com/kgram}
+ * @author [@stefanbugge]{@link https://github.com/stefanbugge}
+ */
+var locale = {
+ code: 'da',
+ formatDistance: formatDistance,
+ formatLong: formatLong,
+ formatRelative: formatRelative,
+ localize: localize,
+ match: match,
+ options: {
+ weekStartsOn: 1 /* Monday */,
+ firstWeekContainsDate: 4
+ }
+}
+
+export default locale
diff --git a/date-fns/src/locale/da/index.js.flow b/date-fns/src/locale/da/index.js.flow
new file mode 100644
index 0000000..b9dfe66
--- /dev/null
+++ b/date-fns/src/locale/da/index.js.flow
@@ -0,0 +1,35 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+declare module.exports: Locale
diff --git a/date-fns/src/locale/da/snapshot.md b/date-fns/src/locale/da/snapshot.md
new file mode 100644
index 0000000..a73d4b8
--- /dev/null
+++ b/date-fns/src/locale/da/snapshot.md
@@ -0,0 +1,304 @@
+# Danish (da) locale
+
+## `format` and `parse`
+
+| Title | Token string | Date | `format` result | `parse` result |
+| ------------------------------- | ------------ | ------------------------ | -------------------------------------------------- | ------------------------ |
+| Calendar year | yo | 1987-02-11T12:13:14.015Z | 1987. | 1987-01-01T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 5. | 0005-01-01T00:00:00.000Z |
+| Local week-numbering year | Yo | 1987-02-11T12:13:14.015Z | 1987. | 1986-12-29T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 4. | 0003-12-29T00:00:00.000Z |
+| Quarter (formatting) | Qo | 2019-01-01T12:13:14.015Z | 1. | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2. | 2019-04-01T00:00:00.000Z |
+| | QQQ | 2019-01-01T12:13:14.015Z | 1. kvt. | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2. kvt. | 2019-04-01T00:00:00.000Z |
+| | QQQQ | 2019-01-01T12:13:14.015Z | 1. kvartal | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2. kvartal | 2019-04-01T00:00:00.000Z |
+| | QQQQQ | 2019-01-01T12:13:14.015Z | 1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2 | 2019-04-01T00:00:00.000Z |
+| Quarter (stand-alone) | qo | 2019-01-01T12:13:14.015Z | 1. | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2. | 2019-04-01T00:00:00.000Z |
+| | qqq | 2019-01-01T12:13:14.015Z | 1. kvt. | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2. kvt. | 2019-04-01T00:00:00.000Z |
+| | qqqq | 2019-01-01T12:13:14.015Z | 1. kvartal | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2. kvartal | 2019-04-01T00:00:00.000Z |
+| Month (formatting) | Mo | 2019-02-11T12:13:14.015Z | 2. | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7. | 2019-07-01T00:00:00.000Z |
+| | MMM | 2019-02-11T12:13:14.015Z | feb. | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | jul. | 2019-07-01T00:00:00.000Z |
+| | MMMM | 2019-02-11T12:13:14.015Z | februar | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | juli | 2019-07-01T00:00:00.000Z |
+| | MMMMM | 2019-02-11T12:13:14.015Z | F | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | J | 2019-01-01T00:00:00.000Z |
+| Month (stand-alone) | Lo | 2019-02-11T12:13:14.015Z | 2. | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7. | 2019-07-01T00:00:00.000Z |
+| | LLL | 2019-02-11T12:13:14.015Z | feb. | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | jul. | 2019-07-01T00:00:00.000Z |
+| | LLLL | 2019-02-11T12:13:14.015Z | februar | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | juli | 2019-07-01T00:00:00.000Z |
+| | LLLLL | 2019-02-11T12:13:14.015Z | F | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | J | 2019-01-01T00:00:00.000Z |
+| Local week of year | wo | 2019-01-01T12:13:14.015Z | 1. | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48. | 2019-11-25T00:00:00.000Z |
+| ISO week of year | Io | 2019-01-01T12:13:14.015Z | 1. | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48. | 2019-11-25T00:00:00.000Z |
+| Day of month | do | 2019-02-11T12:13:14.015Z | 11. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-28T12:13:14.015Z | 28. | 2019-02-28T00:00:00.000Z |
+| Day of year | Do | 2019-02-11T12:13:14.015Z | 42. | 2019-02-11T00:00:00.000Z |
+| | | 2019-12-31T12:13:14.015Z | 365. | 2019-12-31T00:00:00.000Z |
+| Day of week (formatting) | E | 2019-02-11T12:13:14.015Z | man. | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | fre. | Invalid Date |
+| | EE | 2019-02-11T12:13:14.015Z | man. | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | fre. | Invalid Date |
+| | EEE | 2019-02-11T12:13:14.015Z | man. | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | fre. | Invalid Date |
+| | EEEE | 2019-02-11T12:13:14.015Z | mandag | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | fredag | 2019-02-15T00:00:00.000Z |
+| | EEEEE | 2019-02-11T12:13:14.015Z | M | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | F | 2019-02-15T00:00:00.000Z |
+| | EEEEEE | 2019-02-11T12:13:14.015Z | ma | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | fr | Invalid Date |
+| ISO day of week (formatting) | io | 2019-02-11T12:13:14.015Z | 1. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5. | 2019-02-15T00:00:00.000Z |
+| | iii | 2019-02-11T12:13:14.015Z | man. | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | fre. | Invalid Date |
+| | iiii | 2019-02-11T12:13:14.015Z | mandag | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | fredag | 2019-02-15T00:00:00.000Z |
+| | iiiii | 2019-02-11T12:13:14.015Z | M | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | F | 2019-02-15T00:00:00.000Z |
+| | iiiiii | 2019-02-11T12:13:14.015Z | ma | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | fr | Invalid Date |
+| Local day of week (formatting) | eo | 2019-02-11T12:13:14.015Z | 1. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5. | 2019-02-15T00:00:00.000Z |
+| | eee | 2019-02-11T12:13:14.015Z | man. | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | fre. | Invalid Date |
+| | eeee | 2019-02-11T12:13:14.015Z | mandag | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | fredag | 2019-02-15T00:00:00.000Z |
+| | eeeee | 2019-02-11T12:13:14.015Z | M | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | F | 2019-02-15T00:00:00.000Z |
+| | eeeeee | 2019-02-11T12:13:14.015Z | ma | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | fr | Invalid Date |
+| Local day of week (stand-alone) | co | 2019-02-11T12:13:14.015Z | 1. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5. | 2019-02-15T00:00:00.000Z |
+| | ccc | 2019-02-11T12:13:14.015Z | man. | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | fre. | Invalid Date |
+| | cccc | 2019-02-11T12:13:14.015Z | mandag | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | fredag | 2019-02-15T00:00:00.000Z |
+| | ccccc | 2019-02-11T12:13:14.015Z | M | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | F | 2019-02-15T00:00:00.000Z |
+| | cccccc | 2019-02-11T12:13:14.015Z | ma | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | fr | Invalid Date |
+| AM, PM | a | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | aa | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | aaa | 2019-02-11T11:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | aaaa | 2019-02-11T11:13:14.015Z | a.m. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | p.m. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | p.m. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | a.m. | 2019-02-11T00:00:00.000Z |
+| | aaaaa | 2019-02-11T11:13:14.015Z | a | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | p | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | p | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | a | 2019-02-11T00:00:00.000Z |
+| AM, PM, noon, midnight | b | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | bb | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | bbb | 2019-02-11T11:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | bbbb | 2019-02-11T11:13:14.015Z | a.m. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | p.m. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | p.m. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | a.m. | 2019-02-11T00:00:00.000Z |
+| | bbbbb | 2019-02-11T11:13:14.015Z | a | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | p | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | p | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | a | 2019-02-11T00:00:00.000Z |
+| Flexible day period | B | 2019-02-11T11:13:14.015Z | om morgenen | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | om eftermiddagen | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | om aftenen | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | om natten | 2019-02-11T00:00:00.000Z |
+| | BB | 2019-02-11T11:13:14.015Z | om morgenen | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | om eftermiddagen | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | om aftenen | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | om natten | 2019-02-11T00:00:00.000Z |
+| | BBB | 2019-02-11T11:13:14.015Z | om morgenen | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | om eftermiddagen | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | om aftenen | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | om natten | 2019-02-11T00:00:00.000Z |
+| | BBBB | 2019-02-11T11:13:14.015Z | om morgenen | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | om eftermiddagen | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | om aftenen | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | om natten | 2019-02-11T00:00:00.000Z |
+| | BBBBB | 2019-02-11T11:13:14.015Z | om morgenen | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | om eftermiddagen | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | om aftenen | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | om natten | 2019-02-11T00:00:00.000Z |
+| Hour [1-12] | ho | 2019-02-11T11:13:14.015Z | 11. | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11. | 2019-02-11T23:00:00.000Z |
+| Hour [0-23] | Ho | 2019-02-11T11:13:14.015Z | 11. | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23. | 2019-02-11T23:00:00.000Z |
+| Hour [0-11] | Ko | 2019-02-11T11:13:14.015Z | 11. | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11. | 2019-02-11T23:00:00.000Z |
+| Hour [1-24] | ko | 2019-02-11T11:13:14.015Z | 11. | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23. | 2019-02-11T23:00:00.000Z |
+| Minute | mo | 2019-01-01T12:01:14.015Z | 1. | 2019-01-01T12:01:00.000Z |
+| | | 2019-04-01T12:55:14.015Z | 55. | 2019-04-01T12:55:00.000Z |
+| Second | so | 2019-01-01T12:13:01.015Z | 1. | 2019-01-01T12:13:01.000Z |
+| | | 2019-04-01T12:13:55.015Z | 55. | 2019-04-01T12:13:55.000Z |
+| Long localized date | P | 1987-02-11T12:13:14.015Z | 11/02/1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29/05/1453 | 1453-05-29T00:00:00.000Z |
+| | PP | 1987-02-11T12:13:14.015Z | 11. feb. 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29. maj 1453 | 1453-05-29T00:00:00.000Z |
+| | PPP | 1987-02-11T12:13:14.015Z | 11. februar 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29. maj 1453 | 1453-05-29T00:00:00.000Z |
+| | PPPP | 1987-02-11T12:13:14.015Z | onsdag den 11. februar 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | søndag den 29. maj 1453 | 1453-05-29T00:00:00.000Z |
+| Long localized time | p | 1987-02-11T12:13:14.015Z | 12:13 | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 23:59 | 1453-05-29T23:59:00.000Z |
+| | pp | 1987-02-11T12:13:14.015Z | 12:13:14 | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 | 1453-05-29T23:59:59.000Z |
+| | ppp | 1987-02-11T12:13:14.015Z | 12:13:14 GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 GMT+0 | Errored |
+| | pppp | 1987-02-11T12:13:14.015Z | 12:13:14 GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 GMT+00:00 | Errored |
+| Combination of date and time | Pp | 1987-02-11T12:13:14.015Z | 11/02/1987 12:13 | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29/05/1453 23:59 | 1453-05-29T23:59:00.000Z |
+| | PPpp | 1987-02-11T12:13:14.015Z | 11. feb. 1987 12:13:14 | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29. maj 1453 23:59:59 | 1453-05-29T23:59:59.000Z |
+| | PPPppp | 1987-02-11T12:13:14.015Z | 11. februar 1987 kl. 12:13:14 GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 29. maj 1453 kl. 23:59:59 GMT+0 | Errored |
+| | PPPPpppp | 1987-02-11T12:13:14.015Z | onsdag den 11. februar 1987 kl. 12:13:14 GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | søndag den 29. maj 1453 kl. 23:59:59 GMT+00:00 | Errored |
+
+## `formatDistance`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `includeSeconds: true` | `addSuffix: true` |
+| ------------------------ | ------------------- | ---------------------- | ------------------------- |
+| 2006-01-01T00:00:00.000Z | cirka 6 år | cirka 6 år | om cirka 6 år |
+| 2005-01-01T00:00:00.000Z | cirka 5 år | cirka 5 år | om cirka 5 år |
+| 2004-01-01T00:00:00.000Z | cirka 4 år | cirka 4 år | om cirka 4 år |
+| 2003-01-01T00:00:00.000Z | cirka 3 år | cirka 3 år | om cirka 3 år |
+| 2002-01-01T00:00:00.000Z | cirka 2 år | cirka 2 år | om cirka 2 år |
+| 2001-06-01T00:00:00.000Z | over 1 år | over 1 år | om over 1 år |
+| 2001-02-01T00:00:00.000Z | cirka 1 år | cirka 1 år | om cirka 1 år |
+| 2001-01-01T00:00:00.000Z | cirka 1 år | cirka 1 år | om cirka 1 år |
+| 2000-06-01T00:00:00.000Z | 5 måneder | 5 måneder | om 5 måneder |
+| 2000-03-01T00:00:00.000Z | 2 måneder | 2 måneder | om 2 måneder |
+| 2000-02-01T00:00:00.000Z | cirka 1 måned | cirka 1 måned | om cirka 1 måned |
+| 2000-01-15T00:00:00.000Z | 14 dage | 14 dage | om 14 dage |
+| 2000-01-02T00:00:00.000Z | 1 dag | 1 dag | om 1 dag |
+| 2000-01-01T06:00:00.000Z | cirka 6 timer | cirka 6 timer | om cirka 6 timer |
+| 2000-01-01T01:00:00.000Z | cirka 1 time | cirka 1 time | om cirka 1 time |
+| 2000-01-01T00:45:00.000Z | cirka 1 time | cirka 1 time | om cirka 1 time |
+| 2000-01-01T00:30:00.000Z | 30 minutter | 30 minutter | om 30 minutter |
+| 2000-01-01T00:15:00.000Z | 15 minutter | 15 minutter | om 15 minutter |
+| 2000-01-01T00:01:00.000Z | 1 minut | 1 minut | om 1 minut |
+| 2000-01-01T00:00:25.000Z | mindre end ét minut | ét halvt minut | om mindre end ét minut |
+| 2000-01-01T00:00:15.000Z | mindre end ét minut | mindre end 20 sekunder | om mindre end ét minut |
+| 2000-01-01T00:00:05.000Z | mindre end ét minut | mindre end 10 sekunder | om mindre end ét minut |
+| 2000-01-01T00:00:00.000Z | mindre end ét minut | mindre end 5 sekunder | mindre end ét minut siden |
+| 1999-12-31T23:59:55.000Z | mindre end ét minut | mindre end 10 sekunder | mindre end ét minut siden |
+| 1999-12-31T23:59:45.000Z | mindre end ét minut | mindre end 20 sekunder | mindre end ét minut siden |
+| 1999-12-31T23:59:35.000Z | mindre end ét minut | ét halvt minut | mindre end ét minut siden |
+| 1999-12-31T23:59:00.000Z | 1 minut | 1 minut | 1 minut siden |
+| 1999-12-31T23:45:00.000Z | 15 minutter | 15 minutter | 15 minutter siden |
+| 1999-12-31T23:30:00.000Z | 30 minutter | 30 minutter | 30 minutter siden |
+| 1999-12-31T23:15:00.000Z | cirka 1 time | cirka 1 time | cirka 1 time siden |
+| 1999-12-31T23:00:00.000Z | cirka 1 time | cirka 1 time | cirka 1 time siden |
+| 1999-12-31T18:00:00.000Z | cirka 6 timer | cirka 6 timer | cirka 6 timer siden |
+| 1999-12-30T00:00:00.000Z | 2 dage | 2 dage | 2 dage siden |
+| 1999-12-15T00:00:00.000Z | 17 dage | 17 dage | 17 dage siden |
+| 1999-12-01T00:00:00.000Z | cirka 1 måned | cirka 1 måned | cirka 1 måned siden |
+| 1999-11-01T00:00:00.000Z | 2 måneder | 2 måneder | 2 måneder siden |
+| 1999-06-01T00:00:00.000Z | 7 måneder | 7 måneder | 7 måneder siden |
+| 1999-01-01T00:00:00.000Z | cirka 1 år | cirka 1 år | cirka 1 år siden |
+| 1998-12-01T00:00:00.000Z | cirka 1 år | cirka 1 år | cirka 1 år siden |
+| 1998-06-01T00:00:00.000Z | over 1 år | over 1 år | over 1 år siden |
+| 1998-01-01T00:00:00.000Z | cirka 2 år | cirka 2 år | cirka 2 år siden |
+| 1997-01-01T00:00:00.000Z | cirka 3 år | cirka 3 år | cirka 3 år siden |
+| 1996-01-01T00:00:00.000Z | cirka 4 år | cirka 4 år | cirka 4 år siden |
+| 1995-01-01T00:00:00.000Z | cirka 5 år | cirka 5 år | cirka 5 år siden |
+| 1994-01-01T00:00:00.000Z | cirka 6 år | cirka 6 år | cirka 6 år siden |
+
+## `formatDistanceStrict`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `addSuffix: true` | With forced unit (i.e. `hour`) |
+| ------------------------ | ----------- | ----------------- | ------------------------------ |
+| 2006-01-01T00:00:00.000Z | 6 år | om 6 år | 52608 timer |
+| 2005-01-01T00:00:00.000Z | 5 år | om 5 år | 43848 timer |
+| 2004-01-01T00:00:00.000Z | 4 år | om 4 år | 35064 timer |
+| 2003-01-01T00:00:00.000Z | 3 år | om 3 år | 26304 timer |
+| 2002-01-01T00:00:00.000Z | 2 år | om 2 år | 17544 timer |
+| 2001-06-01T00:00:00.000Z | 1 år | om 1 år | 12408 timer |
+| 2001-02-01T00:00:00.000Z | 1 år | om 1 år | 9528 timer |
+| 2001-01-01T00:00:00.000Z | 1 år | om 1 år | 8784 timer |
+| 2000-06-01T00:00:00.000Z | 5 måneder | om 5 måneder | 3648 timer |
+| 2000-03-01T00:00:00.000Z | 2 måneder | om 2 måneder | 1440 timer |
+| 2000-02-01T00:00:00.000Z | 1 måned | om 1 måned | 744 timer |
+| 2000-01-15T00:00:00.000Z | 14 dage | om 14 dage | 336 timer |
+| 2000-01-02T00:00:00.000Z | 1 dag | om 1 dag | 24 timer |
+| 2000-01-01T06:00:00.000Z | 6 timer | om 6 timer | 6 timer |
+| 2000-01-01T01:00:00.000Z | 1 time | om 1 time | 1 time |
+| 2000-01-01T00:45:00.000Z | 45 minutter | om 45 minutter | 1 time |
+| 2000-01-01T00:30:00.000Z | 30 minutter | om 30 minutter | 1 time |
+| 2000-01-01T00:15:00.000Z | 15 minutter | om 15 minutter | 0 timer |
+| 2000-01-01T00:01:00.000Z | 1 minut | om 1 minut | 0 timer |
+| 2000-01-01T00:00:25.000Z | 25 sekunder | om 25 sekunder | 0 timer |
+| 2000-01-01T00:00:15.000Z | 15 sekunder | om 15 sekunder | 0 timer |
+| 2000-01-01T00:00:05.000Z | 5 sekunder | om 5 sekunder | 0 timer |
+| 2000-01-01T00:00:00.000Z | 0 sekunder | 0 sekunder siden | 0 timer |
+| 1999-12-31T23:59:55.000Z | 5 sekunder | 5 sekunder siden | 0 timer |
+| 1999-12-31T23:59:45.000Z | 15 sekunder | 15 sekunder siden | 0 timer |
+| 1999-12-31T23:59:35.000Z | 25 sekunder | 25 sekunder siden | 0 timer |
+| 1999-12-31T23:59:00.000Z | 1 minut | 1 minut siden | 0 timer |
+| 1999-12-31T23:45:00.000Z | 15 minutter | 15 minutter siden | 0 timer |
+| 1999-12-31T23:30:00.000Z | 30 minutter | 30 minutter siden | 1 time |
+| 1999-12-31T23:15:00.000Z | 45 minutter | 45 minutter siden | 1 time |
+| 1999-12-31T23:00:00.000Z | 1 time | 1 time siden | 1 time |
+| 1999-12-31T18:00:00.000Z | 6 timer | 6 timer siden | 6 timer |
+| 1999-12-30T00:00:00.000Z | 2 dage | 2 dage siden | 48 timer |
+| 1999-12-15T00:00:00.000Z | 17 dage | 17 dage siden | 408 timer |
+| 1999-12-01T00:00:00.000Z | 1 måned | 1 måned siden | 744 timer |
+| 1999-11-01T00:00:00.000Z | 2 måneder | 2 måneder siden | 1464 timer |
+| 1999-06-01T00:00:00.000Z | 7 måneder | 7 måneder siden | 5136 timer |
+| 1999-01-01T00:00:00.000Z | 1 år | 1 år siden | 8760 timer |
+| 1998-12-01T00:00:00.000Z | 1 år | 1 år siden | 9504 timer |
+| 1998-06-01T00:00:00.000Z | 2 år | 2 år siden | 13896 timer |
+| 1998-01-01T00:00:00.000Z | 2 år | 2 år siden | 17520 timer |
+| 1997-01-01T00:00:00.000Z | 3 år | 3 år siden | 26280 timer |
+| 1996-01-01T00:00:00.000Z | 4 år | 4 år siden | 35064 timer |
+| 1995-01-01T00:00:00.000Z | 5 år | 5 år siden | 43824 timer |
+| 1994-01-01T00:00:00.000Z | 6 år | 6 år siden | 52584 timer |
+
+## `formatRelative`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result |
+| ------------------------ | ----------------------- |
+| 2000-01-10T00:00:00.000Z | 10/01/2000 |
+| 2000-01-05T00:00:00.000Z | på onsdag kl. 00:00 |
+| 2000-01-02T00:00:00.000Z | i morgen kl. 00:00 |
+| 2000-01-01T00:00:00.000Z | i dag kl. 00:00 |
+| 1999-12-31T00:00:00.000Z | i går kl. 00:00 |
+| 1999-12-27T00:00:00.000Z | sidste mandag kl. 00:00 |
+| 1999-12-21T00:00:00.000Z | 21/12/1999 |
diff --git a/date-fns/src/locale/de-AT/_lib/localize/index.js b/date-fns/src/locale/de-AT/_lib/localize/index.js
new file mode 100644
index 0000000..2a7b0ff
--- /dev/null
+++ b/date-fns/src/locale/de-AT/_lib/localize/index.js
@@ -0,0 +1,172 @@
+import buildLocalizeFn from '../../../_lib/buildLocalizeFn/index'
+
+var eraValues = {
+ narrow: ['v.Chr.', 'n.Chr.'],
+ abbreviated: ['v.Chr.', 'n.Chr.'],
+ wide: ['vor Christus', 'nach Christus'],
+}
+
+var quarterValues = {
+ narrow: ['1', '2', '3', '4'],
+ abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],
+ wide: ['1. Quartal', '2. Quartal', '3. Quartal', '4. Quartal'],
+}
+
+// Note: in German, the names of days of the week and months are capitalized.
+// If you are making a new locale based on this one, check if the same is true for the language you're working on.
+// Generally, formatted dates should look like they are in the middle of a sentence,
+// e.g. in Spanish language the weekdays and months should be in the lowercase.
+var monthValues = {
+ narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],
+ abbreviated: [
+ 'Jän',
+ 'Feb',
+ 'Mär',
+ 'Apr',
+ 'Mai',
+ 'Jun',
+ 'Jul',
+ 'Aug',
+ 'Sep',
+ 'Okt',
+ 'Nov',
+ 'Dez',
+ ],
+ wide: [
+ 'Jänner',
+ 'Februar',
+ 'März',
+ 'April',
+ 'Mai',
+ 'Juni',
+ 'Juli',
+ 'August',
+ 'September',
+ 'Oktober',
+ 'November',
+ 'Dezember',
+ ],
+}
+
+var dayValues = {
+ narrow: ['S', 'M', 'D', 'M', 'D', 'F', 'S'],
+ short: ['So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa'],
+ abbreviated: ['So.', 'Mo.', 'Di.', 'Mi.', 'Do.', 'Fr.', 'Sa.'],
+ wide: [
+ 'Sonntag',
+ 'Montag',
+ 'Dienstag',
+ 'Mittwoch',
+ 'Donnerstag',
+ 'Freitag',
+ 'Samstag',
+ ],
+}
+
+// https://www.unicode.org/cldr/charts/32/summary/de.html#1881
+var dayPeriodValues = {
+ narrow: {
+ am: 'vm.',
+ pm: 'nm.',
+ midnight: 'Mitternacht',
+ noon: 'Mittag',
+ morning: 'Morgen',
+ afternoon: 'Nachm.',
+ evening: 'Abend',
+ night: 'Nacht',
+ },
+ abbreviated: {
+ am: 'vorm.',
+ pm: 'nachm.',
+ midnight: 'Mitternacht',
+ noon: 'Mittag',
+ morning: 'Morgen',
+ afternoon: 'Nachmittag',
+ evening: 'Abend',
+ night: 'Nacht',
+ },
+ wide: {
+ am: 'vormittags',
+ pm: 'nachmittags',
+ midnight: 'Mitternacht',
+ noon: 'Mittag',
+ morning: 'Morgen',
+ afternoon: 'Nachmittag',
+ evening: 'Abend',
+ night: 'Nacht',
+ },
+}
+var formattingDayPeriodValues = {
+ narrow: {
+ am: 'vm.',
+ pm: 'nm.',
+ midnight: 'Mitternacht',
+ noon: 'Mittag',
+ morning: 'morgens',
+ afternoon: 'nachm.',
+ evening: 'abends',
+ night: 'nachts',
+ },
+ abbreviated: {
+ am: 'vorm.',
+ pm: 'nachm.',
+ midnight: 'Mitternacht',
+ noon: 'Mittag',
+ morning: 'morgens',
+ afternoon: 'nachmittags',
+ evening: 'abends',
+ night: 'nachts',
+ },
+ wide: {
+ am: 'vormittags',
+ pm: 'nachmittags',
+ midnight: 'Mitternacht',
+ noon: 'Mittag',
+ morning: 'morgens',
+ afternoon: 'nachmittags',
+ evening: 'abends',
+ night: 'nachts',
+ },
+}
+
+function ordinalNumber(dirtyNumber, _dirtyOptions) {
+ var number = Number(dirtyNumber)
+
+ return number + '.'
+}
+
+var localize = {
+ ordinalNumber: ordinalNumber,
+
+ era: buildLocalizeFn({
+ values: eraValues,
+ defaultWidth: 'wide',
+ }),
+
+ quarter: buildLocalizeFn({
+ values: quarterValues,
+ defaultWidth: 'wide',
+ argumentCallback: function (quarter) {
+ return Number(quarter) - 1
+ },
+ }),
+
+ month: buildLocalizeFn({
+ values: monthValues,
+ defaultWidth: 'wide',
+ }),
+
+ day: buildLocalizeFn({
+ values: dayValues,
+ defaultWidth: 'wide',
+ }),
+
+ dayPeriod: buildLocalizeFn({
+ values: dayPeriodValues,
+ defaultWidth: 'wide',
+ formattingValues: formattingDayPeriodValues,
+ defaultFormattingWidth: 'wide',
+ }),
+}
+
+export default localize
diff --git a/date-fns/src/locale/de-AT/index.d.ts b/date-fns/src/locale/de-AT/index.d.ts
new file mode 100644
index 0000000..a7d6680
--- /dev/null
+++ b/date-fns/src/locale/de-AT/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { deAT } from 'date-fns/locale'
+export default deAT
diff --git a/date-fns/src/locale/de-AT/index.js b/date-fns/src/locale/de-AT/index.js
new file mode 100644
index 0000000..2e3f440
--- /dev/null
+++ b/date-fns/src/locale/de-AT/index.js
@@ -0,0 +1,29 @@
+import formatDistance from '../de/_lib/formatDistance/index'
+import formatLong from '../de/_lib/formatLong/index'
+import formatRelative from '../de/_lib/formatRelative/index'
+import match from '../de/_lib/match/index'
+// difference to 'de' locale
+import localize from './_lib/localize/index'
+
+/**
+ * @type {Locale}
+ * @category Locales
+ * @summary German locale (Austria).
+ * @language German
+ * @iso-639-2 deu
+ * @author Christoph Tobias Stenglein [@cstenglein]{@link https://github.com/cstenglein}
+ */
+var locale = {
+ code: 'de-AT',
+ formatDistance: formatDistance,
+ formatLong: formatLong,
+ formatRelative: formatRelative,
+ localize: localize,
+ match: match,
+ options: {
+ weekStartsOn: 1 /* Monday */,
+ firstWeekContainsDate: 4,
+ },
+}
+
+export default locale
diff --git a/date-fns/src/locale/de-AT/index.js.flow b/date-fns/src/locale/de-AT/index.js.flow
new file mode 100644
index 0000000..b9dfe66
--- /dev/null
+++ b/date-fns/src/locale/de-AT/index.js.flow
@@ -0,0 +1,35 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+declare module.exports: Locale
diff --git a/date-fns/src/locale/de-AT/snapshot.md b/date-fns/src/locale/de-AT/snapshot.md
new file mode 100644
index 0000000..b0fb2f1
--- /dev/null
+++ b/date-fns/src/locale/de-AT/snapshot.md
@@ -0,0 +1,304 @@
+# German (de-AT) locale
+
+## `format` and `parse`
+
+| Title | Token string | Date | `format` result | `parse` result |
+| ------------------------------- | ------------ | ------------------------ | ------------------------------------------------ | ------------------------ |
+| Calendar year | yo | 1987-02-11T12:13:14.015Z | 1987. | 1987-01-01T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 5. | 0005-01-01T00:00:00.000Z |
+| Local week-numbering year | Yo | 1987-02-11T12:13:14.015Z | 1987. | 1986-12-29T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 4. | 0003-12-29T00:00:00.000Z |
+| Quarter (formatting) | Qo | 2019-01-01T12:13:14.015Z | 1. | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2. | 2019-04-01T00:00:00.000Z |
+| | QQQ | 2019-01-01T12:13:14.015Z | Q1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | Q2 | 2019-04-01T00:00:00.000Z |
+| | QQQQ | 2019-01-01T12:13:14.015Z | 1. Quartal | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2. Quartal | 2019-04-01T00:00:00.000Z |
+| | QQQQQ | 2019-01-01T12:13:14.015Z | 1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2 | 2019-04-01T00:00:00.000Z |
+| Quarter (stand-alone) | qo | 2019-01-01T12:13:14.015Z | 1. | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2. | 2019-04-01T00:00:00.000Z |
+| | qqq | 2019-01-01T12:13:14.015Z | Q1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | Q2 | 2019-04-01T00:00:00.000Z |
+| | qqqq | 2019-01-01T12:13:14.015Z | 1. Quartal | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2. Quartal | 2019-04-01T00:00:00.000Z |
+| Month (formatting) | Mo | 2019-02-11T12:13:14.015Z | 2. | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7. | 2019-07-01T00:00:00.000Z |
+| | MMM | 2019-02-11T12:13:14.015Z | Feb | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | Jul | 2019-07-01T00:00:00.000Z |
+| | MMMM | 2019-02-11T12:13:14.015Z | Februar | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | Juli | 2019-07-01T00:00:00.000Z |
+| | MMMMM | 2019-02-11T12:13:14.015Z | F | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | J | 2019-01-01T00:00:00.000Z |
+| Month (stand-alone) | Lo | 2019-02-11T12:13:14.015Z | 2. | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7. | 2019-07-01T00:00:00.000Z |
+| | LLL | 2019-02-11T12:13:14.015Z | Feb | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | Jul | 2019-07-01T00:00:00.000Z |
+| | LLLL | 2019-02-11T12:13:14.015Z | Februar | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | Juli | 2019-07-01T00:00:00.000Z |
+| | LLLLL | 2019-02-11T12:13:14.015Z | F | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | J | 2019-01-01T00:00:00.000Z |
+| Local week of year | wo | 2019-01-01T12:13:14.015Z | 1. | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48. | 2019-11-25T00:00:00.000Z |
+| ISO week of year | Io | 2019-01-01T12:13:14.015Z | 1. | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48. | 2019-11-25T00:00:00.000Z |
+| Day of month | do | 2019-02-11T12:13:14.015Z | 11. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-28T12:13:14.015Z | 28. | 2019-02-28T00:00:00.000Z |
+| Day of year | Do | 2019-02-11T12:13:14.015Z | 42. | 2019-02-11T00:00:00.000Z |
+| | | 2019-12-31T12:13:14.015Z | 365. | 2019-12-31T00:00:00.000Z |
+| Day of week (formatting) | E | 2019-02-11T12:13:14.015Z | Mo. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Fr. | 2019-02-15T00:00:00.000Z |
+| | EE | 2019-02-11T12:13:14.015Z | Mo. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Fr. | 2019-02-15T00:00:00.000Z |
+| | EEE | 2019-02-11T12:13:14.015Z | Mo. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Fr. | 2019-02-15T00:00:00.000Z |
+| | EEEE | 2019-02-11T12:13:14.015Z | Montag | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Freitag | 2019-02-15T00:00:00.000Z |
+| | EEEEE | 2019-02-11T12:13:14.015Z | M | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | F | 2019-02-15T00:00:00.000Z |
+| | EEEEEE | 2019-02-11T12:13:14.015Z | Mo | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Fr | 2019-02-15T00:00:00.000Z |
+| ISO day of week (formatting) | io | 2019-02-11T12:13:14.015Z | 1. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5. | 2019-02-15T00:00:00.000Z |
+| | iii | 2019-02-11T12:13:14.015Z | Mo. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Fr. | 2019-02-15T00:00:00.000Z |
+| | iiii | 2019-02-11T12:13:14.015Z | Montag | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Freitag | 2019-02-15T00:00:00.000Z |
+| | iiiii | 2019-02-11T12:13:14.015Z | M | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | F | 2019-02-15T00:00:00.000Z |
+| | iiiiii | 2019-02-11T12:13:14.015Z | Mo | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Fr | 2019-02-15T00:00:00.000Z |
+| Local day of week (formatting) | eo | 2019-02-11T12:13:14.015Z | 1. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5. | 2019-02-15T00:00:00.000Z |
+| | eee | 2019-02-11T12:13:14.015Z | Mo. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Fr. | 2019-02-15T00:00:00.000Z |
+| | eeee | 2019-02-11T12:13:14.015Z | Montag | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Freitag | 2019-02-15T00:00:00.000Z |
+| | eeeee | 2019-02-11T12:13:14.015Z | M | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | F | 2019-02-15T00:00:00.000Z |
+| | eeeeee | 2019-02-11T12:13:14.015Z | Mo | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Fr | 2019-02-15T00:00:00.000Z |
+| Local day of week (stand-alone) | co | 2019-02-11T12:13:14.015Z | 1. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5. | 2019-02-15T00:00:00.000Z |
+| | ccc | 2019-02-11T12:13:14.015Z | Mo. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Fr. | 2019-02-15T00:00:00.000Z |
+| | cccc | 2019-02-11T12:13:14.015Z | Montag | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Freitag | 2019-02-15T00:00:00.000Z |
+| | ccccc | 2019-02-11T12:13:14.015Z | M | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | F | 2019-02-15T00:00:00.000Z |
+| | cccccc | 2019-02-11T12:13:14.015Z | Mo | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Fr | 2019-02-15T00:00:00.000Z |
+| AM, PM | a | 2019-02-11T11:13:14.015Z | vorm. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | nachm. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | nachm. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | vorm. | 2019-02-11T00:00:00.000Z |
+| | aa | 2019-02-11T11:13:14.015Z | vorm. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | nachm. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | nachm. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | vorm. | 2019-02-11T00:00:00.000Z |
+| | aaa | 2019-02-11T11:13:14.015Z | vorm. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | nachm. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | nachm. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | vorm. | 2019-02-11T00:00:00.000Z |
+| | aaaa | 2019-02-11T11:13:14.015Z | vormittags | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | nachmittags | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | nachmittags | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | vormittags | 2019-02-11T00:00:00.000Z |
+| | aaaaa | 2019-02-11T11:13:14.015Z | vm. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | nm. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | nm. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | vm. | 2019-02-11T00:00:00.000Z |
+| AM, PM, noon, midnight | b | 2019-02-11T11:13:14.015Z | vorm. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | nachm. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | nachm. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | vorm. | 2019-02-11T00:00:00.000Z |
+| | bb | 2019-02-11T11:13:14.015Z | vorm. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | nachm. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | nachm. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | vorm. | 2019-02-11T00:00:00.000Z |
+| | bbb | 2019-02-11T11:13:14.015Z | vorm. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | nachm. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | nachm. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | vorm. | 2019-02-11T00:00:00.000Z |
+| | bbbb | 2019-02-11T11:13:14.015Z | vormittags | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | nachmittags | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | nachmittags | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | vormittags | 2019-02-11T00:00:00.000Z |
+| | bbbbb | 2019-02-11T11:13:14.015Z | vm. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | nm. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | nm. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | vm. | 2019-02-11T00:00:00.000Z |
+| Flexible day period | B | 2019-02-11T11:13:14.015Z | morgens | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | nachmittags | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | abends | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | nachts | 2019-02-11T12:00:00.000Z |
+| | BB | 2019-02-11T11:13:14.015Z | morgens | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | nachmittags | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | abends | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | nachts | 2019-02-11T12:00:00.000Z |
+| | BBB | 2019-02-11T11:13:14.015Z | morgens | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | nachmittags | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | abends | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | nachts | 2019-02-11T12:00:00.000Z |
+| | BBBB | 2019-02-11T11:13:14.015Z | morgens | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | nachmittags | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | abends | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | nachts | 2019-02-11T12:00:00.000Z |
+| | BBBBB | 2019-02-11T11:13:14.015Z | morgens | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | nachm. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | abends | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | nachts | 2019-02-11T12:00:00.000Z |
+| Hour [1-12] | ho | 2019-02-11T11:13:14.015Z | 11. | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11. | 2019-02-11T23:00:00.000Z |
+| Hour [0-23] | Ho | 2019-02-11T11:13:14.015Z | 11. | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23. | 2019-02-11T23:00:00.000Z |
+| Hour [0-11] | Ko | 2019-02-11T11:13:14.015Z | 11. | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11. | 2019-02-11T23:00:00.000Z |
+| Hour [1-24] | ko | 2019-02-11T11:13:14.015Z | 11. | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23. | 2019-02-11T23:00:00.000Z |
+| Minute | mo | 2019-01-01T12:01:14.015Z | 1. | 2019-01-01T12:01:00.000Z |
+| | | 2019-04-01T12:55:14.015Z | 55. | 2019-04-01T12:55:00.000Z |
+| Second | so | 2019-01-01T12:13:01.015Z | 1. | 2019-01-01T12:13:01.000Z |
+| | | 2019-04-01T12:13:55.015Z | 55. | 2019-04-01T12:13:55.000Z |
+| Long localized date | P | 1987-02-11T12:13:14.015Z | 11.02.1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29.05.1453 | 1453-05-29T00:00:00.000Z |
+| | PP | 1987-02-11T12:13:14.015Z | 11. Feb. 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29. Mai. 1453 | 1453-05-29T00:00:00.000Z |
+| | PPP | 1987-02-11T12:13:14.015Z | 11. Februar 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29. Mai 1453 | 1453-05-29T00:00:00.000Z |
+| | PPPP | 1987-02-11T12:13:14.015Z | Mittwoch, 11. Februar 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | Sonntag, 29. Mai 1453 | 1453-05-29T00:00:00.000Z |
+| Long localized time | p | 1987-02-11T12:13:14.015Z | 12:13 | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 23:59 | 1453-05-29T23:59:00.000Z |
+| | pp | 1987-02-11T12:13:14.015Z | 12:13:14 | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 | 1453-05-29T23:59:59.000Z |
+| | ppp | 1987-02-11T12:13:14.015Z | 12:13:14 GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 GMT+0 | Errored |
+| | pppp | 1987-02-11T12:13:14.015Z | 12:13:14 GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 GMT+00:00 | Errored |
+| Combination of date and time | Pp | 1987-02-11T12:13:14.015Z | 11.02.1987 12:13 | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29.05.1453 23:59 | 1453-05-29T23:59:00.000Z |
+| | PPpp | 1987-02-11T12:13:14.015Z | 11. Feb. 1987 12:13:14 | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29. Mai. 1453 23:59:59 | 1453-05-29T23:59:59.000Z |
+| | PPPppp | 1987-02-11T12:13:14.015Z | 11. Februar 1987 um 12:13:14 GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 29. Mai 1453 um 23:59:59 GMT+0 | Errored |
+| | PPPPpppp | 1987-02-11T12:13:14.015Z | Mittwoch, 11. Februar 1987 um 12:13:14 GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | Sonntag, 29. Mai 1453 um 23:59:59 GMT+00:00 | Errored |
+
+## `formatDistance`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `includeSeconds: true` | `addSuffix: true` |
+| ------------------------ | ----------------------- | ----------------------- | ---------------------------- |
+| 2006-01-01T00:00:00.000Z | etwa 6 Jahre | etwa 6 Jahre | in etwa 6 Jahren |
+| 2005-01-01T00:00:00.000Z | etwa 5 Jahre | etwa 5 Jahre | in etwa 5 Jahren |
+| 2004-01-01T00:00:00.000Z | etwa 4 Jahre | etwa 4 Jahre | in etwa 4 Jahren |
+| 2003-01-01T00:00:00.000Z | etwa 3 Jahre | etwa 3 Jahre | in etwa 3 Jahren |
+| 2002-01-01T00:00:00.000Z | etwa 2 Jahre | etwa 2 Jahre | in etwa 2 Jahren |
+| 2001-06-01T00:00:00.000Z | mehr als ein Jahr | mehr als ein Jahr | in mehr als einem Jahr |
+| 2001-02-01T00:00:00.000Z | etwa ein Jahr | etwa ein Jahr | in etwa einem Jahr |
+| 2001-01-01T00:00:00.000Z | etwa ein Jahr | etwa ein Jahr | in etwa einem Jahr |
+| 2000-06-01T00:00:00.000Z | 5 Monate | 5 Monate | in 5 Monaten |
+| 2000-03-01T00:00:00.000Z | 2 Monate | 2 Monate | in 2 Monaten |
+| 2000-02-01T00:00:00.000Z | etwa ein Monat | etwa ein Monat | in etwa einem Monat |
+| 2000-01-15T00:00:00.000Z | 14 Tage | 14 Tage | in 14 Tagen |
+| 2000-01-02T00:00:00.000Z | ein Tag | ein Tag | in einem Tag |
+| 2000-01-01T06:00:00.000Z | etwa 6 Stunden | etwa 6 Stunden | in etwa 6 Stunden |
+| 2000-01-01T01:00:00.000Z | etwa eine Stunde | etwa eine Stunde | in etwa einer Stunde |
+| 2000-01-01T00:45:00.000Z | etwa eine Stunde | etwa eine Stunde | in etwa einer Stunde |
+| 2000-01-01T00:30:00.000Z | 30 Minuten | 30 Minuten | in 30 Minuten |
+| 2000-01-01T00:15:00.000Z | 15 Minuten | 15 Minuten | in 15 Minuten |
+| 2000-01-01T00:01:00.000Z | eine Minute | eine Minute | in einer Minute |
+| 2000-01-01T00:00:25.000Z | weniger als eine Minute | eine halbe Minute | in weniger als einer Minute |
+| 2000-01-01T00:00:15.000Z | weniger als eine Minute | weniger als 20 Sekunden | in weniger als einer Minute |
+| 2000-01-01T00:00:05.000Z | weniger als eine Minute | weniger als 10 Sekunden | in weniger als einer Minute |
+| 2000-01-01T00:00:00.000Z | weniger als eine Minute | weniger als 5 Sekunden | vor weniger als einer Minute |
+| 1999-12-31T23:59:55.000Z | weniger als eine Minute | weniger als 10 Sekunden | vor weniger als einer Minute |
+| 1999-12-31T23:59:45.000Z | weniger als eine Minute | weniger als 20 Sekunden | vor weniger als einer Minute |
+| 1999-12-31T23:59:35.000Z | weniger als eine Minute | eine halbe Minute | vor weniger als einer Minute |
+| 1999-12-31T23:59:00.000Z | eine Minute | eine Minute | vor einer Minute |
+| 1999-12-31T23:45:00.000Z | 15 Minuten | 15 Minuten | vor 15 Minuten |
+| 1999-12-31T23:30:00.000Z | 30 Minuten | 30 Minuten | vor 30 Minuten |
+| 1999-12-31T23:15:00.000Z | etwa eine Stunde | etwa eine Stunde | vor etwa einer Stunde |
+| 1999-12-31T23:00:00.000Z | etwa eine Stunde | etwa eine Stunde | vor etwa einer Stunde |
+| 1999-12-31T18:00:00.000Z | etwa 6 Stunden | etwa 6 Stunden | vor etwa 6 Stunden |
+| 1999-12-30T00:00:00.000Z | 2 Tage | 2 Tage | vor 2 Tagen |
+| 1999-12-15T00:00:00.000Z | 17 Tage | 17 Tage | vor 17 Tagen |
+| 1999-12-01T00:00:00.000Z | etwa ein Monat | etwa ein Monat | vor etwa einem Monat |
+| 1999-11-01T00:00:00.000Z | 2 Monate | 2 Monate | vor 2 Monaten |
+| 1999-06-01T00:00:00.000Z | 7 Monate | 7 Monate | vor 7 Monaten |
+| 1999-01-01T00:00:00.000Z | etwa ein Jahr | etwa ein Jahr | vor etwa einem Jahr |
+| 1998-12-01T00:00:00.000Z | etwa ein Jahr | etwa ein Jahr | vor etwa einem Jahr |
+| 1998-06-01T00:00:00.000Z | mehr als ein Jahr | mehr als ein Jahr | vor mehr als einem Jahr |
+| 1998-01-01T00:00:00.000Z | etwa 2 Jahre | etwa 2 Jahre | vor etwa 2 Jahren |
+| 1997-01-01T00:00:00.000Z | etwa 3 Jahre | etwa 3 Jahre | vor etwa 3 Jahren |
+| 1996-01-01T00:00:00.000Z | etwa 4 Jahre | etwa 4 Jahre | vor etwa 4 Jahren |
+| 1995-01-01T00:00:00.000Z | etwa 5 Jahre | etwa 5 Jahre | vor etwa 5 Jahren |
+| 1994-01-01T00:00:00.000Z | etwa 6 Jahre | etwa 6 Jahre | vor etwa 6 Jahren |
+
+## `formatDistanceStrict`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `addSuffix: true` | With forced unit (i.e. `hour`) |
+| ------------------------ | ----------- | ----------------- | ------------------------------ |
+| 2006-01-01T00:00:00.000Z | 6 Jahre | in 6 Jahren | 52608 Stunden |
+| 2005-01-01T00:00:00.000Z | 5 Jahre | in 5 Jahren | 43848 Stunden |
+| 2004-01-01T00:00:00.000Z | 4 Jahre | in 4 Jahren | 35064 Stunden |
+| 2003-01-01T00:00:00.000Z | 3 Jahre | in 3 Jahren | 26304 Stunden |
+| 2002-01-01T00:00:00.000Z | 2 Jahre | in 2 Jahren | 17544 Stunden |
+| 2001-06-01T00:00:00.000Z | ein Jahr | in einem Jahr | 12408 Stunden |
+| 2001-02-01T00:00:00.000Z | ein Jahr | in einem Jahr | 9528 Stunden |
+| 2001-01-01T00:00:00.000Z | ein Jahr | in einem Jahr | 8784 Stunden |
+| 2000-06-01T00:00:00.000Z | 5 Monate | in 5 Monaten | 3648 Stunden |
+| 2000-03-01T00:00:00.000Z | 2 Monate | in 2 Monaten | 1440 Stunden |
+| 2000-02-01T00:00:00.000Z | ein Monat | in einem Monat | 744 Stunden |
+| 2000-01-15T00:00:00.000Z | 14 Tage | in 14 Tagen | 336 Stunden |
+| 2000-01-02T00:00:00.000Z | ein Tag | in einem Tag | 24 Stunden |
+| 2000-01-01T06:00:00.000Z | 6 Stunden | in 6 Stunden | 6 Stunden |
+| 2000-01-01T01:00:00.000Z | eine Stunde | in einer Stunde | eine Stunde |
+| 2000-01-01T00:45:00.000Z | 45 Minuten | in 45 Minuten | eine Stunde |
+| 2000-01-01T00:30:00.000Z | 30 Minuten | in 30 Minuten | eine Stunde |
+| 2000-01-01T00:15:00.000Z | 15 Minuten | in 15 Minuten | 0 Stunden |
+| 2000-01-01T00:01:00.000Z | eine Minute | in einer Minute | 0 Stunden |
+| 2000-01-01T00:00:25.000Z | 25 Sekunden | in 25 Sekunden | 0 Stunden |
+| 2000-01-01T00:00:15.000Z | 15 Sekunden | in 15 Sekunden | 0 Stunden |
+| 2000-01-01T00:00:05.000Z | 5 Sekunden | in 5 Sekunden | 0 Stunden |
+| 2000-01-01T00:00:00.000Z | 0 Sekunden | vor 0 Sekunden | 0 Stunden |
+| 1999-12-31T23:59:55.000Z | 5 Sekunden | vor 5 Sekunden | 0 Stunden |
+| 1999-12-31T23:59:45.000Z | 15 Sekunden | vor 15 Sekunden | 0 Stunden |
+| 1999-12-31T23:59:35.000Z | 25 Sekunden | vor 25 Sekunden | 0 Stunden |
+| 1999-12-31T23:59:00.000Z | eine Minute | vor einer Minute | 0 Stunden |
+| 1999-12-31T23:45:00.000Z | 15 Minuten | vor 15 Minuten | 0 Stunden |
+| 1999-12-31T23:30:00.000Z | 30 Minuten | vor 30 Minuten | eine Stunde |
+| 1999-12-31T23:15:00.000Z | 45 Minuten | vor 45 Minuten | eine Stunde |
+| 1999-12-31T23:00:00.000Z | eine Stunde | vor einer Stunde | eine Stunde |
+| 1999-12-31T18:00:00.000Z | 6 Stunden | vor 6 Stunden | 6 Stunden |
+| 1999-12-30T00:00:00.000Z | 2 Tage | vor 2 Tagen | 48 Stunden |
+| 1999-12-15T00:00:00.000Z | 17 Tage | vor 17 Tagen | 408 Stunden |
+| 1999-12-01T00:00:00.000Z | ein Monat | vor einem Monat | 744 Stunden |
+| 1999-11-01T00:00:00.000Z | 2 Monate | vor 2 Monaten | 1464 Stunden |
+| 1999-06-01T00:00:00.000Z | 7 Monate | vor 7 Monaten | 5136 Stunden |
+| 1999-01-01T00:00:00.000Z | ein Jahr | vor einem Jahr | 8760 Stunden |
+| 1998-12-01T00:00:00.000Z | ein Jahr | vor einem Jahr | 9504 Stunden |
+| 1998-06-01T00:00:00.000Z | 2 Jahre | vor 2 Jahren | 13896 Stunden |
+| 1998-01-01T00:00:00.000Z | 2 Jahre | vor 2 Jahren | 17520 Stunden |
+| 1997-01-01T00:00:00.000Z | 3 Jahre | vor 3 Jahren | 26280 Stunden |
+| 1996-01-01T00:00:00.000Z | 4 Jahre | vor 4 Jahren | 35064 Stunden |
+| 1995-01-01T00:00:00.000Z | 5 Jahre | vor 5 Jahren | 43824 Stunden |
+| 1994-01-01T00:00:00.000Z | 6 Jahre | vor 6 Jahren | 52584 Stunden |
+
+## `formatRelative`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result |
+| ------------------------ | ----------------------- |
+| 2000-01-10T00:00:00.000Z | 10.01.2000 |
+| 2000-01-05T00:00:00.000Z | Mittwoch um 00:00 |
+| 2000-01-02T00:00:00.000Z | morgen um 00:00 |
+| 2000-01-01T00:00:00.000Z | heute um 00:00 |
+| 1999-12-31T00:00:00.000Z | gestern um 00:00 |
+| 1999-12-27T00:00:00.000Z | letzten Montag um 00:00 |
+| 1999-12-21T00:00:00.000Z | 21.12.1999 |
diff --git a/date-fns/src/locale/de/_lib/formatDistance/index.js b/date-fns/src/locale/de/_lib/formatDistance/index.js
new file mode 100644
index 0000000..f1a1fc7
--- /dev/null
+++ b/date-fns/src/locale/de/_lib/formatDistance/index.js
@@ -0,0 +1,198 @@
+var formatDistanceLocale = {
+ lessThanXSeconds: {
+ standalone: {
+ one: 'weniger als eine Sekunde',
+ other: 'weniger als {{count}} Sekunden'
+ },
+ withPreposition: {
+ one: 'weniger als einer Sekunde',
+ other: 'weniger als {{count}} Sekunden'
+ }
+ },
+
+ xSeconds: {
+ standalone: {
+ one: 'eine Sekunde',
+ other: '{{count}} Sekunden'
+ },
+ withPreposition: {
+ one: 'einer Sekunde',
+ other: '{{count}} Sekunden'
+ }
+ },
+
+ halfAMinute: {
+ standalone: 'eine halbe Minute',
+ withPreposition: 'einer halben Minute'
+ },
+
+ lessThanXMinutes: {
+ standalone: {
+ one: 'weniger als eine Minute',
+ other: 'weniger als {{count}} Minuten'
+ },
+ withPreposition: {
+ one: 'weniger als einer Minute',
+ other: 'weniger als {{count}} Minuten'
+ }
+ },
+
+ xMinutes: {
+ standalone: {
+ one: 'eine Minute',
+ other: '{{count}} Minuten'
+ },
+ withPreposition: {
+ one: 'einer Minute',
+ other: '{{count}} Minuten'
+ }
+ },
+
+ aboutXHours: {
+ standalone: {
+ one: 'etwa eine Stunde',
+ other: 'etwa {{count}} Stunden'
+ },
+ withPreposition: {
+ one: 'etwa einer Stunde',
+ other: 'etwa {{count}} Stunden'
+ }
+ },
+
+ xHours: {
+ standalone: {
+ one: 'eine Stunde',
+ other: '{{count}} Stunden'
+ },
+ withPreposition: {
+ one: 'einer Stunde',
+ other: '{{count}} Stunden'
+ }
+ },
+
+ xDays: {
+ standalone: {
+ one: 'ein Tag',
+ other: '{{count}} Tage'
+ },
+ withPreposition: {
+ one: 'einem Tag',
+ other: '{{count}} Tagen'
+ }
+ },
+
+ aboutXWeeks: {
+ standalone: {
+ one: 'etwa ein Woche',
+ other: 'etwa {{count}} Wochen'
+ },
+ withPreposition: {
+ one: 'etwa einem Woche',
+ other: 'etwa {{count}} Wochen'
+ }
+ },
+
+ xWeeks: {
+ standalone: {
+ one: 'ein Woche',
+ other: '{{count}} Wochen'
+ },
+ withPreposition: {
+ one: 'einem Woche',
+ other: '{{count}} Wochen'
+ }
+ },
+
+ aboutXMonths: {
+ standalone: {
+ one: 'etwa ein Monat',
+ other: 'etwa {{count}} Monate'
+ },
+ withPreposition: {
+ one: 'etwa einem Monat',
+ other: 'etwa {{count}} Monaten'
+ }
+ },
+
+ xMonths: {
+ standalone: {
+ one: 'ein Monat',
+ other: '{{count}} Monate'
+ },
+ withPreposition: {
+ one: 'einem Monat',
+ other: '{{count}} Monaten'
+ }
+ },
+
+ aboutXYears: {
+ standalone: {
+ one: 'etwa ein Jahr',
+ other: 'etwa {{count}} Jahre'
+ },
+ withPreposition: {
+ one: 'etwa einem Jahr',
+ other: 'etwa {{count}} Jahren'
+ }
+ },
+
+ xYears: {
+ standalone: {
+ one: 'ein Jahr',
+ other: '{{count}} Jahre'
+ },
+ withPreposition: {
+ one: 'einem Jahr',
+ other: '{{count}} Jahren'
+ }
+ },
+
+ overXYears: {
+ standalone: {
+ one: 'mehr als ein Jahr',
+ other: 'mehr als {{count}} Jahre'
+ },
+ withPreposition: {
+ one: 'mehr als einem Jahr',
+ other: 'mehr als {{count}} Jahren'
+ }
+ },
+
+ almostXYears: {
+ standalone: {
+ one: 'fast ein Jahr',
+ other: 'fast {{count}} Jahre'
+ },
+ withPreposition: {
+ one: 'fast einem Jahr',
+ other: 'fast {{count}} Jahren'
+ }
+ }
+}
+
+export default function formatDistance(token, count, options) {
+ options = options || {}
+
+ var usageGroup = options.addSuffix
+ ? formatDistanceLocale[token].withPreposition
+ : formatDistanceLocale[token].standalone
+
+ var result
+ if (typeof usageGroup === 'string') {
+ result = usageGroup
+ } else if (count === 1) {
+ result = usageGroup.one
+ } else {
+ result = usageGroup.other.replace('{{count}}', count)
+ }
+
+ if (options.addSuffix) {
+ if (options.comparison > 0) {
+ return 'in ' + result
+ } else {
+ return 'vor ' + result
+ }
+ }
+
+ return result
+}
diff --git a/date-fns/src/locale/de/_lib/formatLong/index.js b/date-fns/src/locale/de/_lib/formatLong/index.js
new file mode 100644
index 0000000..2cd721e
--- /dev/null
+++ b/date-fns/src/locale/de/_lib/formatLong/index.js
@@ -0,0 +1,42 @@
+import buildFormatLongFn from '../../../_lib/buildFormatLongFn/index'
+
+// DIN 5008: https://de.wikipedia.org/wiki/Datumsformat#DIN_5008
+var dateFormats = {
+ full: 'EEEE, do MMMM y', // Montag, 7. Januar 2018
+ long: 'do MMMM y', // 7. Januar 2018
+ medium: 'do MMM. y', // 7. Jan. 2018
+ short: 'dd.MM.y' // 07.01.2018
+}
+
+var timeFormats = {
+ full: 'HH:mm:ss zzzz',
+ long: 'HH:mm:ss z',
+ medium: 'HH:mm:ss',
+ short: 'HH:mm'
+}
+
+var dateTimeFormats = {
+ full: "{{date}} 'um' {{time}}",
+ long: "{{date}} 'um' {{time}}",
+ medium: '{{date}} {{time}}',
+ short: '{{date}} {{time}}'
+}
+
+var formatLong = {
+ date: buildFormatLongFn({
+ formats: dateFormats,
+ defaultWidth: 'full'
+ }),
+
+ time: buildFormatLongFn({
+ formats: timeFormats,
+ defaultWidth: 'full'
+ }),
+
+ dateTime: buildFormatLongFn({
+ formats: dateTimeFormats,
+ defaultWidth: 'full'
+ })
+}
+
+export default formatLong
diff --git a/date-fns/src/locale/de/_lib/formatRelative/index.js b/date-fns/src/locale/de/_lib/formatRelative/index.js
new file mode 100644
index 0000000..aa46933
--- /dev/null
+++ b/date-fns/src/locale/de/_lib/formatRelative/index.js
@@ -0,0 +1,12 @@
+var formatRelativeLocale = {
+ lastWeek: "'letzten' eeee 'um' p",
+ yesterday: "'gestern um' p",
+ today: "'heute um' p",
+ tomorrow: "'morgen um' p",
+ nextWeek: "eeee 'um' p",
+ other: 'P'
+}
+
+export default function formatRelative(token, _date, _baseDate, _options) {
+ return formatRelativeLocale[token]
+}
diff --git a/date-fns/src/locale/de/_lib/localize/index.js b/date-fns/src/locale/de/_lib/localize/index.js
new file mode 100644
index 0000000..cdafe27
--- /dev/null
+++ b/date-fns/src/locale/de/_lib/localize/index.js
@@ -0,0 +1,172 @@
+import buildLocalizeFn from '../../../_lib/buildLocalizeFn/index'
+
+var eraValues = {
+ narrow: ['v.Chr.', 'n.Chr.'],
+ abbreviated: ['v.Chr.', 'n.Chr.'],
+ wide: ['vor Christus', 'nach Christus']
+}
+
+var quarterValues = {
+ narrow: ['1', '2', '3', '4'],
+ abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],
+ wide: ['1. Quartal', '2. Quartal', '3. Quartal', '4. Quartal']
+}
+
+// Note: in German, the names of days of the week and months are capitalized.
+// If you are making a new locale based on this one, check if the same is true for the language you're working on.
+// Generally, formatted dates should look like they are in the middle of a sentence,
+// e.g. in Spanish language the weekdays and months should be in the lowercase.
+var monthValues = {
+ narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],
+ abbreviated: [
+ 'Jan',
+ 'Feb',
+ 'Mär',
+ 'Apr',
+ 'Mai',
+ 'Jun',
+ 'Jul',
+ 'Aug',
+ 'Sep',
+ 'Okt',
+ 'Nov',
+ 'Dez'
+ ],
+ wide: [
+ 'Januar',
+ 'Februar',
+ 'März',
+ 'April',
+ 'Mai',
+ 'Juni',
+ 'Juli',
+ 'August',
+ 'September',
+ 'Oktober',
+ 'November',
+ 'Dezember'
+ ]
+}
+
+var dayValues = {
+ narrow: ['S', 'M', 'D', 'M', 'D', 'F', 'S'],
+ short: ['So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa'],
+ abbreviated: ['So.', 'Mo.', 'Di.', 'Mi.', 'Do.', 'Fr.', 'Sa.'],
+ wide: [
+ 'Sonntag',
+ 'Montag',
+ 'Dienstag',
+ 'Mittwoch',
+ 'Donnerstag',
+ 'Freitag',
+ 'Samstag'
+ ]
+}
+
+// https://www.unicode.org/cldr/charts/32/summary/de.html#1881
+var dayPeriodValues = {
+ narrow: {
+ am: 'vm.',
+ pm: 'nm.',
+ midnight: 'Mitternacht',
+ noon: 'Mittag',
+ morning: 'Morgen',
+ afternoon: 'Nachm.',
+ evening: 'Abend',
+ night: 'Nacht'
+ },
+ abbreviated: {
+ am: 'vorm.',
+ pm: 'nachm.',
+ midnight: 'Mitternacht',
+ noon: 'Mittag',
+ morning: 'Morgen',
+ afternoon: 'Nachmittag',
+ evening: 'Abend',
+ night: 'Nacht'
+ },
+ wide: {
+ am: 'vormittags',
+ pm: 'nachmittags',
+ midnight: 'Mitternacht',
+ noon: 'Mittag',
+ morning: 'Morgen',
+ afternoon: 'Nachmittag',
+ evening: 'Abend',
+ night: 'Nacht'
+ }
+}
+var formattingDayPeriodValues = {
+ narrow: {
+ am: 'vm.',
+ pm: 'nm.',
+ midnight: 'Mitternacht',
+ noon: 'Mittag',
+ morning: 'morgens',
+ afternoon: 'nachm.',
+ evening: 'abends',
+ night: 'nachts'
+ },
+ abbreviated: {
+ am: 'vorm.',
+ pm: 'nachm.',
+ midnight: 'Mitternacht',
+ noon: 'Mittag',
+ morning: 'morgens',
+ afternoon: 'nachmittags',
+ evening: 'abends',
+ night: 'nachts'
+ },
+ wide: {
+ am: 'vormittags',
+ pm: 'nachmittags',
+ midnight: 'Mitternacht',
+ noon: 'Mittag',
+ morning: 'morgens',
+ afternoon: 'nachmittags',
+ evening: 'abends',
+ night: 'nachts'
+ }
+}
+
+function ordinalNumber(dirtyNumber, _dirtyOptions) {
+ var number = Number(dirtyNumber)
+
+ return number + '.'
+}
+
+var localize = {
+ ordinalNumber: ordinalNumber,
+
+ era: buildLocalizeFn({
+ values: eraValues,
+ defaultWidth: 'wide'
+ }),
+
+ quarter: buildLocalizeFn({
+ values: quarterValues,
+ defaultWidth: 'wide',
+ argumentCallback: function(quarter) {
+ return Number(quarter) - 1
+ }
+ }),
+
+ month: buildLocalizeFn({
+ values: monthValues,
+ defaultWidth: 'wide'
+ }),
+
+ day: buildLocalizeFn({
+ values: dayValues,
+ defaultWidth: 'wide'
+ }),
+
+ dayPeriod: buildLocalizeFn({
+ values: dayPeriodValues,
+ defaultWidth: 'wide',
+ formattingValues: formattingDayPeriodValues,
+ defaultFormattingWidth: 'wide'
+ })
+}
+
+export default localize
diff --git a/date-fns/src/locale/de/_lib/match/index.js b/date-fns/src/locale/de/_lib/match/index.js
new file mode 100644
index 0000000..5f5df3c
--- /dev/null
+++ b/date-fns/src/locale/de/_lib/match/index.js
@@ -0,0 +1,137 @@
+import buildMatchPatternFn from '../../../_lib/buildMatchPatternFn/index'
+import buildMatchFn from '../../../_lib/buildMatchFn/index'
+
+var matchOrdinalNumberPattern = /^(\d+)(\.)?/i
+var parseOrdinalNumberPattern = /\d+/i
+
+var matchEraPatterns = {
+ narrow: /^(v\.? ?Chr\.?|n\.? ?Chr\.?)/i,
+ abbreviated: /^(v\.? ?Chr\.?|n\.? ?Chr\.?)/i,
+ wide: /^(vor Christus|vor unserer Zeitrechnung|nach Christus|unserer Zeitrechnung)/i
+}
+var parseEraPatterns = {
+ any: [/^v/i, /^n/i]
+}
+
+var matchQuarterPatterns = {
+ narrow: /^[1234]/i,
+ abbreviated: /^q[1234]/i,
+ wide: /^[1234](\.)? Quartal/i
+}
+var parseQuarterPatterns = {
+ any: [/1/i, /2/i, /3/i, /4/i]
+}
+
+var matchMonthPatterns = {
+ narrow: /^[jfmasond]/i,
+ abbreviated: /^(jan|feb|mär|apr|mai|jun|jul|aug|sep|okt|nov|dez)/i,
+ wide: /^(januar|februar|märz|april|mai|juni|juli|august|september|oktober|november|dezember)/i
+}
+var parseMonthPatterns = {
+ narrow: [
+ /^j/i,
+ /^f/i,
+ /^m/i,
+ /^a/i,
+ /^m/i,
+ /^j/i,
+ /^j/i,
+ /^a/i,
+ /^s/i,
+ /^o/i,
+ /^n/i,
+ /^d/i
+ ],
+ any: [
+ /^ja/i,
+ /^f/i,
+ /^mär/i,
+ /^ap/i,
+ /^mai/i,
+ /^jun/i,
+ /^jul/i,
+ /^au/i,
+ /^s/i,
+ /^o/i,
+ /^n/i,
+ /^d/i
+ ]
+}
+
+var matchDayPatterns = {
+ narrow: /^[smdmf]/i,
+ short: /^(so|mo|di|mi|do|fr|sa)/i,
+ abbreviated: /^(son?|mon?|die?|mit?|don?|fre?|sam?)\.?/i,
+ wide: /^(sonntag|montag|dienstag|mittwoch|donnerstag|freitag|samstag)/i
+}
+var parseDayPatterns = {
+ any: [/^so/i, /^mo/i, /^di/i, /^mi/i, /^do/i, /^f/i, /^sa/i]
+}
+
+var matchDayPeriodPatterns = {
+ narrow: /^(vm\.?|nm\.?|Mitternacht|Mittag|morgens|nachm\.?|abends|nachts)/i,
+ abbreviated: /^(vorm\.?|nachm\.?|Mitternacht|Mittag|morgens|nachm\.?|abends|nachts)/i,
+ wide: /^(vormittags|nachmittags|Mitternacht|Mittag|morgens|nachmittags|abends|nachts)/i
+}
+var parseDayPeriodPatterns = {
+ any: {
+ am: /^v/i,
+ pm: /^n/i,
+ midnight: /^Mitte/i,
+ noon: /^Mitta/i,
+ morning: /morgens/i,
+ afternoon: /nachmittags/i, // will never be matched. Afternoon is matched by `pm`
+ evening: /abends/i,
+ night: /nachts/i // will never be matched. Night is matched by `pm`
+ }
+}
+
+var match = {
+ ordinalNumber: buildMatchPatternFn({
+ matchPattern: matchOrdinalNumberPattern,
+ parsePattern: parseOrdinalNumberPattern,
+ valueCallback: function(value) {
+ return parseInt(value, 10)
+ }
+ }),
+
+ era: buildMatchFn({
+ matchPatterns: matchEraPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseEraPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ quarter: buildMatchFn({
+ matchPatterns: matchQuarterPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseQuarterPatterns,
+ defaultParseWidth: 'any',
+ valueCallback: function(index) {
+ return index + 1
+ }
+ }),
+
+ month: buildMatchFn({
+ matchPatterns: matchMonthPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseMonthPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ day: buildMatchFn({
+ matchPatterns: matchDayPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseDayPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ dayPeriod: buildMatchFn({
+ matchPatterns: matchDayPeriodPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseDayPeriodPatterns,
+ defaultParseWidth: 'any'
+ })
+}
+
+export default match
diff --git a/date-fns/src/locale/de/index.d.ts b/date-fns/src/locale/de/index.d.ts
new file mode 100644
index 0000000..ef552da
--- /dev/null
+++ b/date-fns/src/locale/de/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { de } from 'date-fns/locale'
+export default de
diff --git a/date-fns/src/locale/de/index.js b/date-fns/src/locale/de/index.js
new file mode 100644
index 0000000..f2ea556
--- /dev/null
+++ b/date-fns/src/locale/de/index.js
@@ -0,0 +1,32 @@
+import formatDistance from './_lib/formatDistance/index'
+import formatLong from './_lib/formatLong/index'
+import formatRelative from './_lib/formatRelative/index'
+import localize from './_lib/localize/index'
+import match from './_lib/match/index'
+
+/**
+ * @type {Locale}
+ * @category Locales
+ * @summary German locale.
+ * @language German
+ * @iso-639-2 deu
+ * @author Thomas Eilmsteiner [@DeMuu]{@link https://github.com/DeMuu}
+ * @author Asia [@asia-t]{@link https://github.com/asia-t}
+ * @author Van Vuong Ngo [@vanvuongngo]{@link https://github.com/vanvuongngo}
+ * @author RomanErnst [@pex]{@link https://github.com/pex}
+ * @author Philipp Keck [@Philipp91]{@link https://github.com/Philipp91}
+ */
+var locale = {
+ code: 'de',
+ formatDistance: formatDistance,
+ formatLong: formatLong,
+ formatRelative: formatRelative,
+ localize: localize,
+ match: match,
+ options: {
+ weekStartsOn: 1 /* Monday */,
+ firstWeekContainsDate: 4
+ }
+}
+
+export default locale
diff --git a/date-fns/src/locale/de/index.js.flow b/date-fns/src/locale/de/index.js.flow
new file mode 100644
index 0000000..b9dfe66
--- /dev/null
+++ b/date-fns/src/locale/de/index.js.flow
@@ -0,0 +1,35 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+declare module.exports: Locale
diff --git a/date-fns/src/locale/de/snapshot.md b/date-fns/src/locale/de/snapshot.md
new file mode 100644
index 0000000..9264122
--- /dev/null
+++ b/date-fns/src/locale/de/snapshot.md
@@ -0,0 +1,304 @@
+# German (de) locale
+
+## `format` and `parse`
+
+| Title | Token string | Date | `format` result | `parse` result |
+| ------------------------------- | ------------ | ------------------------ | ------------------------------------------------ | ------------------------ |
+| Calendar year | yo | 1987-02-11T12:13:14.015Z | 1987. | 1987-01-01T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 5. | 0005-01-01T00:00:00.000Z |
+| Local week-numbering year | Yo | 1987-02-11T12:13:14.015Z | 1987. | 1986-12-29T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 4. | 0003-12-29T00:00:00.000Z |
+| Quarter (formatting) | Qo | 2019-01-01T12:13:14.015Z | 1. | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2. | 2019-04-01T00:00:00.000Z |
+| | QQQ | 2019-01-01T12:13:14.015Z | Q1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | Q2 | 2019-04-01T00:00:00.000Z |
+| | QQQQ | 2019-01-01T12:13:14.015Z | 1. Quartal | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2. Quartal | 2019-04-01T00:00:00.000Z |
+| | QQQQQ | 2019-01-01T12:13:14.015Z | 1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2 | 2019-04-01T00:00:00.000Z |
+| Quarter (stand-alone) | qo | 2019-01-01T12:13:14.015Z | 1. | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2. | 2019-04-01T00:00:00.000Z |
+| | qqq | 2019-01-01T12:13:14.015Z | Q1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | Q2 | 2019-04-01T00:00:00.000Z |
+| | qqqq | 2019-01-01T12:13:14.015Z | 1. Quartal | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2. Quartal | 2019-04-01T00:00:00.000Z |
+| Month (formatting) | Mo | 2019-02-11T12:13:14.015Z | 2. | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7. | 2019-07-01T00:00:00.000Z |
+| | MMM | 2019-02-11T12:13:14.015Z | Feb | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | Jul | 2019-07-01T00:00:00.000Z |
+| | MMMM | 2019-02-11T12:13:14.015Z | Februar | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | Juli | 2019-07-01T00:00:00.000Z |
+| | MMMMM | 2019-02-11T12:13:14.015Z | F | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | J | 2019-01-01T00:00:00.000Z |
+| Month (stand-alone) | Lo | 2019-02-11T12:13:14.015Z | 2. | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7. | 2019-07-01T00:00:00.000Z |
+| | LLL | 2019-02-11T12:13:14.015Z | Feb | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | Jul | 2019-07-01T00:00:00.000Z |
+| | LLLL | 2019-02-11T12:13:14.015Z | Februar | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | Juli | 2019-07-01T00:00:00.000Z |
+| | LLLLL | 2019-02-11T12:13:14.015Z | F | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | J | 2019-01-01T00:00:00.000Z |
+| Local week of year | wo | 2019-01-01T12:13:14.015Z | 1. | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48. | 2019-11-25T00:00:00.000Z |
+| ISO week of year | Io | 2019-01-01T12:13:14.015Z | 1. | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48. | 2019-11-25T00:00:00.000Z |
+| Day of month | do | 2019-02-11T12:13:14.015Z | 11. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-28T12:13:14.015Z | 28. | 2019-02-28T00:00:00.000Z |
+| Day of year | Do | 2019-02-11T12:13:14.015Z | 42. | 2019-02-11T00:00:00.000Z |
+| | | 2019-12-31T12:13:14.015Z | 365. | 2019-12-31T00:00:00.000Z |
+| Day of week (formatting) | E | 2019-02-11T12:13:14.015Z | Mo. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Fr. | 2019-02-15T00:00:00.000Z |
+| | EE | 2019-02-11T12:13:14.015Z | Mo. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Fr. | 2019-02-15T00:00:00.000Z |
+| | EEE | 2019-02-11T12:13:14.015Z | Mo. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Fr. | 2019-02-15T00:00:00.000Z |
+| | EEEE | 2019-02-11T12:13:14.015Z | Montag | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Freitag | 2019-02-15T00:00:00.000Z |
+| | EEEEE | 2019-02-11T12:13:14.015Z | M | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | F | 2019-02-15T00:00:00.000Z |
+| | EEEEEE | 2019-02-11T12:13:14.015Z | Mo | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Fr | 2019-02-15T00:00:00.000Z |
+| ISO day of week (formatting) | io | 2019-02-11T12:13:14.015Z | 1. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5. | 2019-02-15T00:00:00.000Z |
+| | iii | 2019-02-11T12:13:14.015Z | Mo. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Fr. | 2019-02-15T00:00:00.000Z |
+| | iiii | 2019-02-11T12:13:14.015Z | Montag | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Freitag | 2019-02-15T00:00:00.000Z |
+| | iiiii | 2019-02-11T12:13:14.015Z | M | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | F | 2019-02-15T00:00:00.000Z |
+| | iiiiii | 2019-02-11T12:13:14.015Z | Mo | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Fr | 2019-02-15T00:00:00.000Z |
+| Local day of week (formatting) | eo | 2019-02-11T12:13:14.015Z | 1. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5. | 2019-02-15T00:00:00.000Z |
+| | eee | 2019-02-11T12:13:14.015Z | Mo. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Fr. | 2019-02-15T00:00:00.000Z |
+| | eeee | 2019-02-11T12:13:14.015Z | Montag | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Freitag | 2019-02-15T00:00:00.000Z |
+| | eeeee | 2019-02-11T12:13:14.015Z | M | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | F | 2019-02-15T00:00:00.000Z |
+| | eeeeee | 2019-02-11T12:13:14.015Z | Mo | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Fr | 2019-02-15T00:00:00.000Z |
+| Local day of week (stand-alone) | co | 2019-02-11T12:13:14.015Z | 1. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5. | 2019-02-15T00:00:00.000Z |
+| | ccc | 2019-02-11T12:13:14.015Z | Mo. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Fr. | 2019-02-15T00:00:00.000Z |
+| | cccc | 2019-02-11T12:13:14.015Z | Montag | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Freitag | 2019-02-15T00:00:00.000Z |
+| | ccccc | 2019-02-11T12:13:14.015Z | M | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | F | 2019-02-15T00:00:00.000Z |
+| | cccccc | 2019-02-11T12:13:14.015Z | Mo | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Fr | 2019-02-15T00:00:00.000Z |
+| AM, PM | a | 2019-02-11T11:13:14.015Z | vorm. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | nachm. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | nachm. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | vorm. | 2019-02-11T00:00:00.000Z |
+| | aa | 2019-02-11T11:13:14.015Z | vorm. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | nachm. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | nachm. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | vorm. | 2019-02-11T00:00:00.000Z |
+| | aaa | 2019-02-11T11:13:14.015Z | vorm. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | nachm. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | nachm. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | vorm. | 2019-02-11T00:00:00.000Z |
+| | aaaa | 2019-02-11T11:13:14.015Z | vormittags | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | nachmittags | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | nachmittags | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | vormittags | 2019-02-11T00:00:00.000Z |
+| | aaaaa | 2019-02-11T11:13:14.015Z | vm. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | nm. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | nm. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | vm. | 2019-02-11T00:00:00.000Z |
+| AM, PM, noon, midnight | b | 2019-02-11T11:13:14.015Z | vorm. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | nachm. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | nachm. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | vorm. | 2019-02-11T00:00:00.000Z |
+| | bb | 2019-02-11T11:13:14.015Z | vorm. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | nachm. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | nachm. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | vorm. | 2019-02-11T00:00:00.000Z |
+| | bbb | 2019-02-11T11:13:14.015Z | vorm. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | nachm. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | nachm. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | vorm. | 2019-02-11T00:00:00.000Z |
+| | bbbb | 2019-02-11T11:13:14.015Z | vormittags | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | nachmittags | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | nachmittags | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | vormittags | 2019-02-11T00:00:00.000Z |
+| | bbbbb | 2019-02-11T11:13:14.015Z | vm. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | nm. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | nm. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | vm. | 2019-02-11T00:00:00.000Z |
+| Flexible day period | B | 2019-02-11T11:13:14.015Z | morgens | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | nachmittags | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | abends | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | nachts | 2019-02-11T12:00:00.000Z |
+| | BB | 2019-02-11T11:13:14.015Z | morgens | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | nachmittags | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | abends | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | nachts | 2019-02-11T12:00:00.000Z |
+| | BBB | 2019-02-11T11:13:14.015Z | morgens | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | nachmittags | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | abends | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | nachts | 2019-02-11T12:00:00.000Z |
+| | BBBB | 2019-02-11T11:13:14.015Z | morgens | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | nachmittags | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | abends | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | nachts | 2019-02-11T12:00:00.000Z |
+| | BBBBB | 2019-02-11T11:13:14.015Z | morgens | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | nachm. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | abends | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | nachts | 2019-02-11T12:00:00.000Z |
+| Hour [1-12] | ho | 2019-02-11T11:13:14.015Z | 11. | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11. | 2019-02-11T23:00:00.000Z |
+| Hour [0-23] | Ho | 2019-02-11T11:13:14.015Z | 11. | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23. | 2019-02-11T23:00:00.000Z |
+| Hour [0-11] | Ko | 2019-02-11T11:13:14.015Z | 11. | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11. | 2019-02-11T23:00:00.000Z |
+| Hour [1-24] | ko | 2019-02-11T11:13:14.015Z | 11. | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23. | 2019-02-11T23:00:00.000Z |
+| Minute | mo | 2019-01-01T12:01:14.015Z | 1. | 2019-01-01T12:01:00.000Z |
+| | | 2019-04-01T12:55:14.015Z | 55. | 2019-04-01T12:55:00.000Z |
+| Second | so | 2019-01-01T12:13:01.015Z | 1. | 2019-01-01T12:13:01.000Z |
+| | | 2019-04-01T12:13:55.015Z | 55. | 2019-04-01T12:13:55.000Z |
+| Long localized date | P | 1987-02-11T12:13:14.015Z | 11.02.1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29.05.1453 | 1453-05-29T00:00:00.000Z |
+| | PP | 1987-02-11T12:13:14.015Z | 11. Feb. 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29. Mai. 1453 | 1453-05-29T00:00:00.000Z |
+| | PPP | 1987-02-11T12:13:14.015Z | 11. Februar 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29. Mai 1453 | 1453-05-29T00:00:00.000Z |
+| | PPPP | 1987-02-11T12:13:14.015Z | Mittwoch, 11. Februar 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | Sonntag, 29. Mai 1453 | 1453-05-29T00:00:00.000Z |
+| Long localized time | p | 1987-02-11T12:13:14.015Z | 12:13 | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 23:59 | 1453-05-29T23:59:00.000Z |
+| | pp | 1987-02-11T12:13:14.015Z | 12:13:14 | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 | 1453-05-29T23:59:59.000Z |
+| | ppp | 1987-02-11T12:13:14.015Z | 12:13:14 GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 GMT+0 | Errored |
+| | pppp | 1987-02-11T12:13:14.015Z | 12:13:14 GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 GMT+00:00 | Errored |
+| Combination of date and time | Pp | 1987-02-11T12:13:14.015Z | 11.02.1987 12:13 | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29.05.1453 23:59 | 1453-05-29T23:59:00.000Z |
+| | PPpp | 1987-02-11T12:13:14.015Z | 11. Feb. 1987 12:13:14 | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29. Mai. 1453 23:59:59 | 1453-05-29T23:59:59.000Z |
+| | PPPppp | 1987-02-11T12:13:14.015Z | 11. Februar 1987 um 12:13:14 GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 29. Mai 1453 um 23:59:59 GMT+0 | Errored |
+| | PPPPpppp | 1987-02-11T12:13:14.015Z | Mittwoch, 11. Februar 1987 um 12:13:14 GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | Sonntag, 29. Mai 1453 um 23:59:59 GMT+00:00 | Errored |
+
+## `formatDistance`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `includeSeconds: true` | `addSuffix: true` |
+| ------------------------ | ----------------------- | ----------------------- | ---------------------------- |
+| 2006-01-01T00:00:00.000Z | etwa 6 Jahre | etwa 6 Jahre | in etwa 6 Jahren |
+| 2005-01-01T00:00:00.000Z | etwa 5 Jahre | etwa 5 Jahre | in etwa 5 Jahren |
+| 2004-01-01T00:00:00.000Z | etwa 4 Jahre | etwa 4 Jahre | in etwa 4 Jahren |
+| 2003-01-01T00:00:00.000Z | etwa 3 Jahre | etwa 3 Jahre | in etwa 3 Jahren |
+| 2002-01-01T00:00:00.000Z | etwa 2 Jahre | etwa 2 Jahre | in etwa 2 Jahren |
+| 2001-06-01T00:00:00.000Z | mehr als ein Jahr | mehr als ein Jahr | in mehr als einem Jahr |
+| 2001-02-01T00:00:00.000Z | etwa ein Jahr | etwa ein Jahr | in etwa einem Jahr |
+| 2001-01-01T00:00:00.000Z | etwa ein Jahr | etwa ein Jahr | in etwa einem Jahr |
+| 2000-06-01T00:00:00.000Z | 5 Monate | 5 Monate | in 5 Monaten |
+| 2000-03-01T00:00:00.000Z | 2 Monate | 2 Monate | in 2 Monaten |
+| 2000-02-01T00:00:00.000Z | etwa ein Monat | etwa ein Monat | in etwa einem Monat |
+| 2000-01-15T00:00:00.000Z | 14 Tage | 14 Tage | in 14 Tagen |
+| 2000-01-02T00:00:00.000Z | ein Tag | ein Tag | in einem Tag |
+| 2000-01-01T06:00:00.000Z | etwa 6 Stunden | etwa 6 Stunden | in etwa 6 Stunden |
+| 2000-01-01T01:00:00.000Z | etwa eine Stunde | etwa eine Stunde | in etwa einer Stunde |
+| 2000-01-01T00:45:00.000Z | etwa eine Stunde | etwa eine Stunde | in etwa einer Stunde |
+| 2000-01-01T00:30:00.000Z | 30 Minuten | 30 Minuten | in 30 Minuten |
+| 2000-01-01T00:15:00.000Z | 15 Minuten | 15 Minuten | in 15 Minuten |
+| 2000-01-01T00:01:00.000Z | eine Minute | eine Minute | in einer Minute |
+| 2000-01-01T00:00:25.000Z | weniger als eine Minute | eine halbe Minute | in weniger als einer Minute |
+| 2000-01-01T00:00:15.000Z | weniger als eine Minute | weniger als 20 Sekunden | in weniger als einer Minute |
+| 2000-01-01T00:00:05.000Z | weniger als eine Minute | weniger als 10 Sekunden | in weniger als einer Minute |
+| 2000-01-01T00:00:00.000Z | weniger als eine Minute | weniger als 5 Sekunden | vor weniger als einer Minute |
+| 1999-12-31T23:59:55.000Z | weniger als eine Minute | weniger als 10 Sekunden | vor weniger als einer Minute |
+| 1999-12-31T23:59:45.000Z | weniger als eine Minute | weniger als 20 Sekunden | vor weniger als einer Minute |
+| 1999-12-31T23:59:35.000Z | weniger als eine Minute | eine halbe Minute | vor weniger als einer Minute |
+| 1999-12-31T23:59:00.000Z | eine Minute | eine Minute | vor einer Minute |
+| 1999-12-31T23:45:00.000Z | 15 Minuten | 15 Minuten | vor 15 Minuten |
+| 1999-12-31T23:30:00.000Z | 30 Minuten | 30 Minuten | vor 30 Minuten |
+| 1999-12-31T23:15:00.000Z | etwa eine Stunde | etwa eine Stunde | vor etwa einer Stunde |
+| 1999-12-31T23:00:00.000Z | etwa eine Stunde | etwa eine Stunde | vor etwa einer Stunde |
+| 1999-12-31T18:00:00.000Z | etwa 6 Stunden | etwa 6 Stunden | vor etwa 6 Stunden |
+| 1999-12-30T00:00:00.000Z | 2 Tage | 2 Tage | vor 2 Tagen |
+| 1999-12-15T00:00:00.000Z | 17 Tage | 17 Tage | vor 17 Tagen |
+| 1999-12-01T00:00:00.000Z | etwa ein Monat | etwa ein Monat | vor etwa einem Monat |
+| 1999-11-01T00:00:00.000Z | 2 Monate | 2 Monate | vor 2 Monaten |
+| 1999-06-01T00:00:00.000Z | 7 Monate | 7 Monate | vor 7 Monaten |
+| 1999-01-01T00:00:00.000Z | etwa ein Jahr | etwa ein Jahr | vor etwa einem Jahr |
+| 1998-12-01T00:00:00.000Z | etwa ein Jahr | etwa ein Jahr | vor etwa einem Jahr |
+| 1998-06-01T00:00:00.000Z | mehr als ein Jahr | mehr als ein Jahr | vor mehr als einem Jahr |
+| 1998-01-01T00:00:00.000Z | etwa 2 Jahre | etwa 2 Jahre | vor etwa 2 Jahren |
+| 1997-01-01T00:00:00.000Z | etwa 3 Jahre | etwa 3 Jahre | vor etwa 3 Jahren |
+| 1996-01-01T00:00:00.000Z | etwa 4 Jahre | etwa 4 Jahre | vor etwa 4 Jahren |
+| 1995-01-01T00:00:00.000Z | etwa 5 Jahre | etwa 5 Jahre | vor etwa 5 Jahren |
+| 1994-01-01T00:00:00.000Z | etwa 6 Jahre | etwa 6 Jahre | vor etwa 6 Jahren |
+
+## `formatDistanceStrict`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `addSuffix: true` | With forced unit (i.e. `hour`) |
+| ------------------------ | ----------- | ----------------- | ------------------------------ |
+| 2006-01-01T00:00:00.000Z | 6 Jahre | in 6 Jahren | 52608 Stunden |
+| 2005-01-01T00:00:00.000Z | 5 Jahre | in 5 Jahren | 43848 Stunden |
+| 2004-01-01T00:00:00.000Z | 4 Jahre | in 4 Jahren | 35064 Stunden |
+| 2003-01-01T00:00:00.000Z | 3 Jahre | in 3 Jahren | 26304 Stunden |
+| 2002-01-01T00:00:00.000Z | 2 Jahre | in 2 Jahren | 17544 Stunden |
+| 2001-06-01T00:00:00.000Z | ein Jahr | in einem Jahr | 12408 Stunden |
+| 2001-02-01T00:00:00.000Z | ein Jahr | in einem Jahr | 9528 Stunden |
+| 2001-01-01T00:00:00.000Z | ein Jahr | in einem Jahr | 8784 Stunden |
+| 2000-06-01T00:00:00.000Z | 5 Monate | in 5 Monaten | 3648 Stunden |
+| 2000-03-01T00:00:00.000Z | 2 Monate | in 2 Monaten | 1440 Stunden |
+| 2000-02-01T00:00:00.000Z | ein Monat | in einem Monat | 744 Stunden |
+| 2000-01-15T00:00:00.000Z | 14 Tage | in 14 Tagen | 336 Stunden |
+| 2000-01-02T00:00:00.000Z | ein Tag | in einem Tag | 24 Stunden |
+| 2000-01-01T06:00:00.000Z | 6 Stunden | in 6 Stunden | 6 Stunden |
+| 2000-01-01T01:00:00.000Z | eine Stunde | in einer Stunde | eine Stunde |
+| 2000-01-01T00:45:00.000Z | 45 Minuten | in 45 Minuten | eine Stunde |
+| 2000-01-01T00:30:00.000Z | 30 Minuten | in 30 Minuten | eine Stunde |
+| 2000-01-01T00:15:00.000Z | 15 Minuten | in 15 Minuten | 0 Stunden |
+| 2000-01-01T00:01:00.000Z | eine Minute | in einer Minute | 0 Stunden |
+| 2000-01-01T00:00:25.000Z | 25 Sekunden | in 25 Sekunden | 0 Stunden |
+| 2000-01-01T00:00:15.000Z | 15 Sekunden | in 15 Sekunden | 0 Stunden |
+| 2000-01-01T00:00:05.000Z | 5 Sekunden | in 5 Sekunden | 0 Stunden |
+| 2000-01-01T00:00:00.000Z | 0 Sekunden | vor 0 Sekunden | 0 Stunden |
+| 1999-12-31T23:59:55.000Z | 5 Sekunden | vor 5 Sekunden | 0 Stunden |
+| 1999-12-31T23:59:45.000Z | 15 Sekunden | vor 15 Sekunden | 0 Stunden |
+| 1999-12-31T23:59:35.000Z | 25 Sekunden | vor 25 Sekunden | 0 Stunden |
+| 1999-12-31T23:59:00.000Z | eine Minute | vor einer Minute | 0 Stunden |
+| 1999-12-31T23:45:00.000Z | 15 Minuten | vor 15 Minuten | 0 Stunden |
+| 1999-12-31T23:30:00.000Z | 30 Minuten | vor 30 Minuten | eine Stunde |
+| 1999-12-31T23:15:00.000Z | 45 Minuten | vor 45 Minuten | eine Stunde |
+| 1999-12-31T23:00:00.000Z | eine Stunde | vor einer Stunde | eine Stunde |
+| 1999-12-31T18:00:00.000Z | 6 Stunden | vor 6 Stunden | 6 Stunden |
+| 1999-12-30T00:00:00.000Z | 2 Tage | vor 2 Tagen | 48 Stunden |
+| 1999-12-15T00:00:00.000Z | 17 Tage | vor 17 Tagen | 408 Stunden |
+| 1999-12-01T00:00:00.000Z | ein Monat | vor einem Monat | 744 Stunden |
+| 1999-11-01T00:00:00.000Z | 2 Monate | vor 2 Monaten | 1464 Stunden |
+| 1999-06-01T00:00:00.000Z | 7 Monate | vor 7 Monaten | 5136 Stunden |
+| 1999-01-01T00:00:00.000Z | ein Jahr | vor einem Jahr | 8760 Stunden |
+| 1998-12-01T00:00:00.000Z | ein Jahr | vor einem Jahr | 9504 Stunden |
+| 1998-06-01T00:00:00.000Z | 2 Jahre | vor 2 Jahren | 13896 Stunden |
+| 1998-01-01T00:00:00.000Z | 2 Jahre | vor 2 Jahren | 17520 Stunden |
+| 1997-01-01T00:00:00.000Z | 3 Jahre | vor 3 Jahren | 26280 Stunden |
+| 1996-01-01T00:00:00.000Z | 4 Jahre | vor 4 Jahren | 35064 Stunden |
+| 1995-01-01T00:00:00.000Z | 5 Jahre | vor 5 Jahren | 43824 Stunden |
+| 1994-01-01T00:00:00.000Z | 6 Jahre | vor 6 Jahren | 52584 Stunden |
+
+## `formatRelative`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result |
+| ------------------------ | ----------------------- |
+| 2000-01-10T00:00:00.000Z | 10.01.2000 |
+| 2000-01-05T00:00:00.000Z | Mittwoch um 00:00 |
+| 2000-01-02T00:00:00.000Z | morgen um 00:00 |
+| 2000-01-01T00:00:00.000Z | heute um 00:00 |
+| 1999-12-31T00:00:00.000Z | gestern um 00:00 |
+| 1999-12-27T00:00:00.000Z | letzten Montag um 00:00 |
+| 1999-12-21T00:00:00.000Z | 21.12.1999 |
diff --git a/date-fns/src/locale/el/_lib/formatDistance/index.js b/date-fns/src/locale/el/_lib/formatDistance/index.js
new file mode 100644
index 0000000..20f9cfc
--- /dev/null
+++ b/date-fns/src/locale/el/_lib/formatDistance/index.js
@@ -0,0 +1,101 @@
+var formatDistanceLocale = {
+ lessThanXSeconds: {
+ one: 'λιγότερο από ένα δευτερόλεπτο',
+ other: 'λιγότερο από {{count}} δευτερόλεπτα'
+ },
+
+ xSeconds: {
+ one: '1 δευτερόλεπτο',
+ other: '{{count}} δευτερόλεπτα'
+ },
+
+ halfAMinute: 'μισό λεπτό',
+
+ lessThanXMinutes: {
+ one: 'λιγότερο από ένα λεπτό',
+ other: 'λιγότερο από {{count}} λεπτά'
+ },
+
+ xMinutes: {
+ one: '1 λεπτό',
+ other: '{{count}} λεπτά'
+ },
+
+ aboutXHours: {
+ one: 'περίπου 1 ώρα',
+ other: 'περίπου {{count}} ώρες'
+ },
+
+ xHours: {
+ one: '1 ώρα',
+ other: '{{count}} ώρες'
+ },
+
+ xDays: {
+ one: '1 ημέρα',
+ other: '{{count}} ημέρες'
+ },
+
+ aboutXWeeks: {
+ one: 'περίπου 1 εβδομάδα',
+ other: 'περίπου {{count}} εβδομάδες'
+ },
+
+ xWeeks: {
+ one: '1 εβδομάδα',
+ other: '{{count}} εβδομάδες'
+ },
+
+ aboutXMonths: {
+ one: 'περίπου 1 μήνας',
+ other: 'περίπου {{count}} μήνες'
+ },
+
+ xMonths: {
+ one: '1 μήνας',
+ other: '{{count}} μήνες'
+ },
+
+ aboutXYears: {
+ one: 'περίπου 1 χρόνο',
+ other: 'περίπου {{count}} χρόνια'
+ },
+
+ xYears: {
+ one: '1 χρόνο',
+ other: '{{count}} χρόνια'
+ },
+
+ overXYears: {
+ one: 'πάνω από 1 χρόνο',
+ other: 'πάνω από {{count}} χρόνια'
+ },
+
+ almostXYears: {
+ one: 'περίπου 1 χρόνο',
+ other: 'περίπου {{count}} χρόνια'
+ }
+}
+
+export default function formatDistance(token, count, options) {
+ options = options || {}
+
+ var result
+ if (typeof formatDistanceLocale[token] === 'string') {
+ result = formatDistanceLocale[token]
+ } else if (count === 1) {
+ result = formatDistanceLocale[token].one
+ } else {
+ result = formatDistanceLocale[token].other.replace('{{count}}', count)
+ }
+
+ if (options.addSuffix) {
+ if (options.comparison > 0) {
+ return 'σε ' + result
+ } else {
+ return result + ' πριν'
+ }
+ }
+
+ return result
+}
diff --git a/date-fns/src/locale/el/_lib/formatLong/index.js b/date-fns/src/locale/el/_lib/formatLong/index.js
new file mode 100644
index 0000000..b5237ba
--- /dev/null
+++ b/date-fns/src/locale/el/_lib/formatLong/index.js
@@ -0,0 +1,39 @@
+import buildFormatLongFn from '../../../_lib/buildFormatLongFn/index'
+
+var dateFormats = {
+ full: 'EEEE, d MMMM y',
+ long: 'd MMMM y',
+ medium: 'd MMM y',
+ short: 'd/M/yy'
+}
+
+var timeFormats = {
+ full: 'h:mm:ss a zzzz',
+ long: 'h:mm:ss a z',
+ medium: 'h:mm:ss a',
+ short: 'h:mm a'
+}
+
+var dateTimeFormats = {
+ full: '{{date}} - {{time}}',
+ long: '{{date}} - {{time}}',
+ medium: '{{date}}, {{time}}',
+ short: '{{date}}, {{time}}'
+}
+
+var formatLong = {
+ date: buildFormatLongFn({
+ formats: dateFormats,
+ defaultWidth: 'full'
+ }),
+ time: buildFormatLongFn({
+ formats: timeFormats,
+ defaultWidth: 'full'
+ }),
+ dateTime: buildFormatLongFn({
+ formats: dateTimeFormats,
+ defaultWidth: 'full'
+ })
+}
+
+export default formatLong
diff --git a/date-fns/src/locale/el/_lib/formatRelative/index.js b/date-fns/src/locale/el/_lib/formatRelative/index.js
new file mode 100644
index 0000000..6a1d8fe
--- /dev/null
+++ b/date-fns/src/locale/el/_lib/formatRelative/index.js
@@ -0,0 +1,23 @@
+var formatRelativeLocale = {
+ lastWeek: function(date) {
+ switch (date.getUTCDay()) {
+ case 6: //Σάββατο
+ return "'το προηγούμενο' eeee 'στις' p"
+ default:
+ return "'την προηγούμενη' eeee 'στις' p"
+ }
+ },
+ yesterday: "'χθες στις' p",
+ today: "'σήμερα στις' p",
+ tomorrow: "'αύριο στις' p",
+ nextWeek: "eeee 'στις' p",
+ other: 'P'
+}
+
+export default function formatRelative(token, date, baseDate, options) {
+ var format = formatRelativeLocale[token]
+
+ if (typeof format === 'function') return format(date, baseDate, options)
+
+ return format
+}
diff --git a/date-fns/src/locale/el/_lib/localize/index.js b/date-fns/src/locale/el/_lib/localize/index.js
new file mode 100644
index 0000000..1b335fc
--- /dev/null
+++ b/date-fns/src/locale/el/_lib/localize/index.js
@@ -0,0 +1,178 @@
+import buildLocalizeFn from '../../../_lib/buildLocalizeFn/index'
+
+var eraValues = {
+ narrow: ['πΧ', 'μΧ'],
+ abbreviated: ['π.Χ.', 'μ.Χ.'],
+ wide: ['προ Χριστού', 'μετά Χριστόν']
+}
+
+var quarterValues = {
+ narrow: ['1', '2', '3', '4'],
+ abbreviated: ['Τ1', 'Τ2', 'Τ3', 'Τ4'],
+ wide: ['1ο τρίμηνο', '2ο τρίμηνο', '3ο τρίμηνο', '4ο τρίμηνο']
+}
+
+var monthValues = {
+ narrow: ['Ι', 'Φ', 'Μ', 'Α', 'Μ', 'Ι', 'Ι', 'Α', 'Σ', 'Ο', 'Ν', 'Δ'],
+ abbreviated: [
+ 'Ιαν',
+ 'Φεβ',
+ 'Μάρ',
+ 'Απρ',
+ 'Μάι',
+ 'Ιούν',
+ 'Ιούλ',
+ 'Αύγ',
+ 'Σεπ',
+ 'Οκτ',
+ 'Νοέ',
+ 'Δεκ'
+ ],
+ wide: [
+ 'Ιανουάριος',
+ 'Φεβρουάριος',
+ 'Μάρτιος',
+ 'Απρίλιος',
+ 'Μάιος',
+ 'Ιούνιος',
+ 'Ιούλιος',
+ 'Αύγουστος',
+ 'Σεπτέμβριος',
+ 'Οκτώβριος',
+ 'Νοέμβριος',
+ 'Δεκέμβριος'
+ ]
+}
+
+var formattingMonthValues = {
+ narrow: ['Ι', 'Φ', 'Μ', 'Α', 'Μ', 'Ι', 'Ι', 'Α', 'Σ', 'Ο', 'Ν', 'Δ'],
+ abbreviated: [
+ 'Ιαν',
+ 'Φεβ',
+ 'Μαρ',
+ 'Απρ',
+ 'Μαΐ',
+ 'Ιουν',
+ 'Ιουλ',
+ 'Αυγ',
+ 'Σεπ',
+ 'Οκτ',
+ 'Νοε',
+ 'Δεκ'
+ ],
+ wide: [
+ 'Ιανουαρίου',
+ 'Φεβρουαρίου',
+ 'Μαρτίου',
+ 'Απριλίου',
+ 'Μαΐου',
+ 'Ιουνίου',
+ 'Ιουλίου',
+ 'Αυγούστου',
+ 'Σεπτεμβρίου',
+ 'Οκτωβρίου',
+ 'Νοεμβρίου',
+ 'Δεκεμβρίου'
+ ]
+}
+
+var dayValues = {
+ narrow: ['Κ', 'Δ', 'T', 'Τ', 'Π', 'Π', 'Σ'],
+ short: ['Κυ', 'Δε', 'Τρ', 'Τε', 'Πέ', 'Πα', 'Σά'],
+ abbreviated: ['Κυρ', 'Δευ', 'Τρί', 'Τετ', 'Πέμ', 'Παρ', 'Σάβ'],
+ wide: [
+ 'Κυριακή',
+ 'Δευτέρα',
+ 'Τρίτη',
+ 'Τετάρτη',
+ 'Πέμπτη',
+ 'Παρασκευή',
+ 'Σάββατο'
+ ]
+}
+
+var dayPeriodValues = {
+ narrow: {
+ am: 'πμ',
+ pm: 'μμ',
+ midnight: 'μεσάνυχτα',
+ noon: 'μεσημέρι',
+ morning: 'πρωί',
+ afternoon: 'απόγευμα',
+ evening: 'βράδυ',
+ night: 'νύχτα'
+ },
+ abbreviated: {
+ am: 'π.μ.',
+ pm: 'μ.μ.',
+ midnight: 'μεσάνυχτα',
+ noon: 'μεσημέρι',
+ morning: 'πρωί',
+ afternoon: 'απόγευμα',
+ evening: 'βράδυ',
+ night: 'νύχτα'
+ },
+ wide: {
+ am: 'π.μ.',
+ pm: 'μ.μ.',
+ midnight: 'μεσάνυχτα',
+ noon: 'μεσημέρι',
+ morning: 'πρωί',
+ afternoon: 'απόγευμα',
+ evening: 'βράδυ',
+ night: 'νύχτα'
+ }
+}
+
+function ordinalNumber(dirtyNumber, dirtyOptions) {
+ var options = dirtyOptions || {}
+ var unit = String(options.unit)
+ var suffix
+
+ if (unit === 'year' || unit === 'month') {
+ suffix = 'ος'
+ } else if (
+ unit === 'week' ||
+ unit === 'dayOfYear' ||
+ unit === 'day' ||
+ unit === 'hour' ||
+ unit === 'date'
+ ) {
+ suffix = 'η'
+ } else {
+ suffix = 'ο'
+ }
+
+ return dirtyNumber + suffix
+}
+
+var localize = {
+ ordinalNumber: ordinalNumber,
+ era: buildLocalizeFn({
+ values: eraValues,
+ defaultWidth: 'wide'
+ }),
+ quarter: buildLocalizeFn({
+ values: quarterValues,
+ defaultWidth: 'wide',
+ argumentCallback: function(quarter) {
+ return Number(quarter) - 1
+ }
+ }),
+ month: buildLocalizeFn({
+ values: monthValues,
+ defaultWidth: 'wide',
+ formattingValues: formattingMonthValues,
+ defaultFormattingWidth: 'wide'
+ }),
+ day: buildLocalizeFn({
+ values: dayValues,
+ defaultWidth: 'wide'
+ }),
+ dayPeriod: buildLocalizeFn({
+ values: dayPeriodValues,
+ defaultWidth: 'wide'
+ })
+}
+
+export default localize
diff --git a/date-fns/src/locale/el/_lib/match/index.js b/date-fns/src/locale/el/_lib/match/index.js
new file mode 100644
index 0000000..32d646e
--- /dev/null
+++ b/date-fns/src/locale/el/_lib/match/index.js
@@ -0,0 +1,137 @@
+import buildMatchPatternFn from '../../../_lib/buildMatchPatternFn/index'
+import buildMatchFn from '../../../_lib/buildMatchFn/index'
+
+var matchOrdinalNumberPattern = /^(\d+)(ος|η|ο)?/i
+var parseOrdinalNumberPattern = /\d+/i
+
+var matchEraPatterns = {
+ narrow: /^(πΧ|μΧ)/i,
+ abbreviated: /^(π\.?\s?χ\.?|π\.?\s?κ\.?\s?χ\.?|μ\.?\s?χ\.?|κ\.?\s?χ\.?)/i,
+ wide: /^(προ Χριστο(ύ|υ)|πριν απ(ό|ο) την Κοιν(ή|η) Χρονολογ(ί|ι)α|μετ(ά|α) Χριστ(ό|ο)ν|Κοιν(ή|η) Χρονολογ(ί|ι)α)/i
+}
+var parseEraPatterns = {
+ any: [/^π/i, /^(μ|κ)/i]
+}
+
+var matchQuarterPatterns = {
+ narrow: /^[1234]/i,
+ abbreviated: /^τ[1234]/i,
+ wide: /^[1234]ο? τρ(ί|ι)μηνο/i
+}
+var parseQuarterPatterns = {
+ any: [/1/i, /2/i, /3/i, /4/i]
+}
+
+var matchMonthPatterns = {
+ narrow: /^[ιφμαμιιασονδ]/i,
+ abbreviated: /^(ιαν|φεβ|μ[άα]ρ|απρ|μ[άα][ιΐ]|ιο[ύυ]ν|ιο[ύυ]λ|α[ύυ]γ|σεπ|οκτ|νο[έε]|δεκ)/i,
+ wide: /^(μ[άα][ιΐ]|α[ύυ]γο[υύ]στ)(ος|ου)|(ιανου[άα]ρ|φεβρου[άα]ρ|μ[άα]ρτ|απρ[ίι]λ|ιο[ύυ]ν|ιο[ύυ]λ|σεπτ[έε]μβρ|οκτ[ώω]βρ|νο[έε]μβρ|δεκ[έε]μβρ)(ιος|ίου)/i
+}
+var parseMonthPatterns = {
+ narrow: [
+ /^ι/i,
+ /^φ/i,
+ /^μ/i,
+ /^α/i,
+ /^μ/i,
+ /^ι/i,
+ /^ι/i,
+ /^α/i,
+ /^σ/i,
+ /^ο/i,
+ /^ν/i,
+ /^δ/i
+ ],
+ any: [
+ /^ια/i,
+ /^φ/i,
+ /^μ[άα]ρ/i,
+ /^απ/i,
+ /^μ[άα][ιΐ]/i,
+ /^ιο[ύυ]ν/i,
+ /^ιο[ύυ]λ/i,
+ /^α[ύυ]/i,
+ /^σ/i,
+ /^ο/i,
+ /^ν/i,
+ /^δ/i
+ ]
+}
+
+var matchDayPatterns = {
+ narrow: /^[κδτπσ]/i,
+ short: /^(κυ|δε|τρ|τε|π[εέ]|π[αά]|σ[αά])/i,
+ abbreviated: /^(κυρ|δευ|τρι|τετ|πεμ|παρ|σαβ)/i,
+ wide: /^(κυριακ(ή|η)|δευτ(έ|ε)ρα|τρ(ί|ι)τη|τετ(ά|α)ρτη|π(έ|ε)μπτη|παρασκευ(ή|η)|σ(ά|α)ββατο)/i
+}
+var parseDayPatterns = {
+ narrow: [/^κ/i, /^δ/i, /^τ/i, /^τ/i, /^π/i, /^π/i, /^σ/i],
+ any: [/^κ/i, /^δ/i, /^τρ/i, /^τε/i, /^π[εέ]/i, /^π[αά]/i, /^σ/i]
+}
+
+var matchDayPeriodPatterns = {
+ narrow: /^(πμ|μμ|μεσ(ά|α)νυχτα|μεσημ(έ|ε)ρι|πρω(ί|ι)|απ(ό|ο)γευμα|βρ(ά|α)δυ|ν(ύ|υ)χτα)/i,
+ any: /^([πμ]\.?\s?μ\.?|μεσ(ά|α)νυχτα|μεσημ(έ|ε)ρι|πρω(ί|ι)|απ(ό|ο)γευμα|βρ(ά|α)δυ|ν(ύ|υ)χτα)/i
+}
+var parseDayPeriodPatterns = {
+ any: {
+ am: /^πμ|π\.\s?μ\./i,
+ pm: /^μμ|μ\.\s?μ\./i,
+ midnight: /^μεσάν/i,
+ noon: /^μεσημ(έ|ε)/i,
+ morning: /πρω(ί|ι)/i,
+ afternoon: /απ(ό|ο)γευμα/i,
+ evening: /βρ(ά|α)δυ/i,
+ night: /ν(ύ|υ)χτα/i
+ }
+}
+
+var match = {
+ ordinalNumber: buildMatchPatternFn({
+ matchPattern: matchOrdinalNumberPattern,
+ parsePattern: parseOrdinalNumberPattern,
+ valueCallback: function(value) {
+ return parseInt(value, 10)
+ }
+ }),
+
+ era: buildMatchFn({
+ matchPatterns: matchEraPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseEraPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ quarter: buildMatchFn({
+ matchPatterns: matchQuarterPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseQuarterPatterns,
+ defaultParseWidth: 'any',
+ valueCallback: function(index) {
+ return index + 1
+ }
+ }),
+
+ month: buildMatchFn({
+ matchPatterns: matchMonthPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseMonthPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ day: buildMatchFn({
+ matchPatterns: matchDayPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseDayPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ dayPeriod: buildMatchFn({
+ matchPatterns: matchDayPeriodPatterns,
+ defaultMatchWidth: 'any',
+ parsePatterns: parseDayPeriodPatterns,
+ defaultParseWidth: 'any'
+ })
+}
+
+export default match
diff --git a/date-fns/src/locale/el/index.d.ts b/date-fns/src/locale/el/index.d.ts
new file mode 100644
index 0000000..551ad06
--- /dev/null
+++ b/date-fns/src/locale/el/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { el } from 'date-fns/locale'
+export default el
diff --git a/date-fns/src/locale/el/index.js b/date-fns/src/locale/el/index.js
new file mode 100644
index 0000000..75d70aa
--- /dev/null
+++ b/date-fns/src/locale/el/index.js
@@ -0,0 +1,29 @@
+import formatDistance from './_lib/formatDistance/index'
+import formatLong from './_lib/formatLong/index'
+import formatRelative from './_lib/formatRelative/index'
+import localize from './_lib/localize/index'
+import match from './_lib/match/index'
+
+/**
+ * @type {Locale}
+ * @category Locales
+ * @summary Greek locale.
+ * @language Greek
+ * @iso-639-2 ell
+ * @author Fanis Katsimpas [@fanixk]{@link https://github.com/fanixk}
+ * @author Theodoros Orfanidis [@teoulas]{@link https://github.com/teoulas}
+ */
+var locale = {
+ code: 'el',
+ formatDistance: formatDistance,
+ formatLong: formatLong,
+ formatRelative: formatRelative,
+ localize: localize,
+ match: match,
+ options: {
+ weekStartsOn: 1 /* Monday */,
+ firstWeekContainsDate: 4
+ }
+}
+
+export default locale
diff --git a/date-fns/src/locale/el/index.js.flow b/date-fns/src/locale/el/index.js.flow
new file mode 100644
index 0000000..b9dfe66
--- /dev/null
+++ b/date-fns/src/locale/el/index.js.flow
@@ -0,0 +1,35 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+declare module.exports: Locale
diff --git a/date-fns/src/locale/el/snapshot.md b/date-fns/src/locale/el/snapshot.md
new file mode 100644
index 0000000..c9f1b47
--- /dev/null
+++ b/date-fns/src/locale/el/snapshot.md
@@ -0,0 +1,304 @@
+# Greek (el) locale
+
+## `format` and `parse`
+
+| Title | Token string | Date | `format` result | `parse` result |
+| ------------------------------- | ------------ | ------------------------ | ------------------------------------------------------ | ------------------------ |
+| Calendar year | yo | 1987-02-11T12:13:14.015Z | 1987ος | 1987-01-01T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 5ος | 0005-01-01T00:00:00.000Z |
+| Local week-numbering year | Yo | 1987-02-11T12:13:14.015Z | 1987ος | 1986-12-29T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 4ος | 0003-12-29T00:00:00.000Z |
+| Quarter (formatting) | Qo | 2019-01-01T12:13:14.015Z | 1ο | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2ο | 2019-04-01T00:00:00.000Z |
+| | QQQ | 2019-01-01T12:13:14.015Z | Τ1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | Τ2 | 2019-04-01T00:00:00.000Z |
+| | QQQQ | 2019-01-01T12:13:14.015Z | 1ο τρίμηνο | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2ο τρίμηνο | 2019-04-01T00:00:00.000Z |
+| | QQQQQ | 2019-01-01T12:13:14.015Z | 1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2 | 2019-04-01T00:00:00.000Z |
+| Quarter (stand-alone) | qo | 2019-01-01T12:13:14.015Z | 1ο | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2ο | 2019-04-01T00:00:00.000Z |
+| | qqq | 2019-01-01T12:13:14.015Z | Τ1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | Τ2 | 2019-04-01T00:00:00.000Z |
+| | qqqq | 2019-01-01T12:13:14.015Z | 1ο τρίμηνο | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2ο τρίμηνο | 2019-04-01T00:00:00.000Z |
+| Month (formatting) | Mo | 2019-02-11T12:13:14.015Z | 2ος | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7ος | 2019-07-01T00:00:00.000Z |
+| | MMM | 2019-02-11T12:13:14.015Z | Φεβ | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | Ιουλ | 2019-07-01T00:00:00.000Z |
+| | MMMM | 2019-02-11T12:13:14.015Z | Φεβρουαρίου | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | Ιουλίου | 2019-07-01T00:00:00.000Z |
+| | MMMMM | 2019-02-11T12:13:14.015Z | Φ | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | Ι | 2019-01-01T00:00:00.000Z |
+| Month (stand-alone) | Lo | 2019-02-11T12:13:14.015Z | 2ος | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7ος | 2019-07-01T00:00:00.000Z |
+| | LLL | 2019-02-11T12:13:14.015Z | Φεβ | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | Ιούλ | 2019-07-01T00:00:00.000Z |
+| | LLLL | 2019-02-11T12:13:14.015Z | Φεβρουάριος | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | Ιούλιος | 2019-07-01T00:00:00.000Z |
+| | LLLLL | 2019-02-11T12:13:14.015Z | Φ | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | Ι | 2019-01-01T00:00:00.000Z |
+| Local week of year | wo | 2019-01-01T12:13:14.015Z | 1η | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48η | 2019-11-25T00:00:00.000Z |
+| ISO week of year | Io | 2019-01-01T12:13:14.015Z | 1η | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48η | 2019-11-25T00:00:00.000Z |
+| Day of month | do | 2019-02-11T12:13:14.015Z | 11η | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-28T12:13:14.015Z | 28η | 2019-02-28T00:00:00.000Z |
+| Day of year | Do | 2019-02-11T12:13:14.015Z | 42η | 2019-02-11T00:00:00.000Z |
+| | | 2019-12-31T12:13:14.015Z | 365η | 2019-12-31T00:00:00.000Z |
+| Day of week (formatting) | E | 2019-02-11T12:13:14.015Z | Δευ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Παρ | 2019-02-15T00:00:00.000Z |
+| | EE | 2019-02-11T12:13:14.015Z | Δευ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Παρ | 2019-02-15T00:00:00.000Z |
+| | EEE | 2019-02-11T12:13:14.015Z | Δευ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Παρ | 2019-02-15T00:00:00.000Z |
+| | EEEE | 2019-02-11T12:13:14.015Z | Δευτέρα | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Παρασκευή | 2019-02-15T00:00:00.000Z |
+| | EEEEE | 2019-02-11T12:13:14.015Z | Δ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Π | 2019-02-14T00:00:00.000Z |
+| | EEEEEE | 2019-02-11T12:13:14.015Z | Δε | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Πα | 2019-02-15T00:00:00.000Z |
+| ISO day of week (formatting) | io | 2019-02-11T12:13:14.015Z | 1η | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5η | 2019-02-15T00:00:00.000Z |
+| | iii | 2019-02-11T12:13:14.015Z | Δευ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Παρ | 2019-02-15T00:00:00.000Z |
+| | iiii | 2019-02-11T12:13:14.015Z | Δευτέρα | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Παρασκευή | 2019-02-15T00:00:00.000Z |
+| | iiiii | 2019-02-11T12:13:14.015Z | Δ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Π | 2019-02-14T00:00:00.000Z |
+| | iiiiii | 2019-02-11T12:13:14.015Z | Δε | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Πα | 2019-02-15T00:00:00.000Z |
+| Local day of week (formatting) | eo | 2019-02-11T12:13:14.015Z | 1η | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5η | 2019-02-15T00:00:00.000Z |
+| | eee | 2019-02-11T12:13:14.015Z | Δευ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Παρ | 2019-02-15T00:00:00.000Z |
+| | eeee | 2019-02-11T12:13:14.015Z | Δευτέρα | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Παρασκευή | 2019-02-15T00:00:00.000Z |
+| | eeeee | 2019-02-11T12:13:14.015Z | Δ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Π | 2019-02-14T00:00:00.000Z |
+| | eeeeee | 2019-02-11T12:13:14.015Z | Δε | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Πα | 2019-02-15T00:00:00.000Z |
+| Local day of week (stand-alone) | co | 2019-02-11T12:13:14.015Z | 1η | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5η | 2019-02-15T00:00:00.000Z |
+| | ccc | 2019-02-11T12:13:14.015Z | Δευ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Παρ | 2019-02-15T00:00:00.000Z |
+| | cccc | 2019-02-11T12:13:14.015Z | Δευτέρα | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Παρασκευή | 2019-02-15T00:00:00.000Z |
+| | ccccc | 2019-02-11T12:13:14.015Z | Δ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Π | 2019-02-14T00:00:00.000Z |
+| | cccccc | 2019-02-11T12:13:14.015Z | Δε | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Πα | 2019-02-15T00:00:00.000Z |
+| AM, PM | a | 2019-02-11T11:13:14.015Z | π.μ. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | μ.μ. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | μ.μ. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | π.μ. | 2019-02-11T00:00:00.000Z |
+| | aa | 2019-02-11T11:13:14.015Z | π.μ. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | μ.μ. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | μ.μ. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | π.μ. | 2019-02-11T00:00:00.000Z |
+| | aaa | 2019-02-11T11:13:14.015Z | π.μ. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | μ.μ. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | μ.μ. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | π.μ. | 2019-02-11T00:00:00.000Z |
+| | aaaa | 2019-02-11T11:13:14.015Z | π.μ. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | μ.μ. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | μ.μ. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | π.μ. | 2019-02-11T00:00:00.000Z |
+| | aaaaa | 2019-02-11T11:13:14.015Z | πμ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | μμ | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | μμ | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | πμ | 2019-02-11T00:00:00.000Z |
+| AM, PM, noon, midnight | b | 2019-02-11T11:13:14.015Z | π.μ. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | μ.μ. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | μ.μ. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | π.μ. | 2019-02-11T00:00:00.000Z |
+| | bb | 2019-02-11T11:13:14.015Z | π.μ. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | μ.μ. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | μ.μ. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | π.μ. | 2019-02-11T00:00:00.000Z |
+| | bbb | 2019-02-11T11:13:14.015Z | π.μ. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | μ.μ. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | μ.μ. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | π.μ. | 2019-02-11T00:00:00.000Z |
+| | bbbb | 2019-02-11T11:13:14.015Z | π.μ. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | μ.μ. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | μ.μ. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | π.μ. | 2019-02-11T00:00:00.000Z |
+| | bbbbb | 2019-02-11T11:13:14.015Z | πμ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | μμ | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | μμ | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | πμ | 2019-02-11T00:00:00.000Z |
+| Flexible day period | B | 2019-02-11T11:13:14.015Z | πρωί | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | απόγευμα | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | βράδυ | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | νύχτα | 2019-02-11T00:00:00.000Z |
+| | BB | 2019-02-11T11:13:14.015Z | πρωί | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | απόγευμα | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | βράδυ | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | νύχτα | 2019-02-11T00:00:00.000Z |
+| | BBB | 2019-02-11T11:13:14.015Z | πρωί | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | απόγευμα | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | βράδυ | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | νύχτα | 2019-02-11T00:00:00.000Z |
+| | BBBB | 2019-02-11T11:13:14.015Z | πρωί | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | απόγευμα | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | βράδυ | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | νύχτα | 2019-02-11T00:00:00.000Z |
+| | BBBBB | 2019-02-11T11:13:14.015Z | πρωί | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | απόγευμα | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | βράδυ | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | νύχτα | 2019-02-11T00:00:00.000Z |
+| Hour [1-12] | ho | 2019-02-11T11:13:14.015Z | 11η | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11η | 2019-02-11T23:00:00.000Z |
+| Hour [0-23] | Ho | 2019-02-11T11:13:14.015Z | 11η | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23η | 2019-02-11T23:00:00.000Z |
+| Hour [0-11] | Ko | 2019-02-11T11:13:14.015Z | 11η | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11η | 2019-02-11T23:00:00.000Z |
+| Hour [1-24] | ko | 2019-02-11T11:13:14.015Z | 11η | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23η | 2019-02-11T23:00:00.000Z |
+| Minute | mo | 2019-01-01T12:01:14.015Z | 1ο | 2019-01-01T12:01:00.000Z |
+| | | 2019-04-01T12:55:14.015Z | 55ο | 2019-04-01T12:55:00.000Z |
+| Second | so | 2019-01-01T12:13:01.015Z | 1ο | 2019-01-01T12:13:01.000Z |
+| | | 2019-04-01T12:13:55.015Z | 55ο | 2019-04-01T12:13:55.000Z |
+| Long localized date | P | 1987-02-11T12:13:14.015Z | 11/2/87 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29/5/53 | 1453-05-29T00:00:00.000Z |
+| | PP | 1987-02-11T12:13:14.015Z | 11 Φεβ 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 Μαΐ 1453 | 1453-05-29T00:00:00.000Z |
+| | PPP | 1987-02-11T12:13:14.015Z | 11 Φεβρουαρίου 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 Μαΐου 1453 | 1453-05-29T00:00:00.000Z |
+| | PPPP | 1987-02-11T12:13:14.015Z | Τετάρτη, 11 Φεβρουαρίου 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | Κυριακή, 29 Μαΐου 1453 | 1453-05-29T00:00:00.000Z |
+| Long localized time | p | 1987-02-11T12:13:14.015Z | 12:13 μ.μ. | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 11:59 μ.μ. | 1453-05-29T23:59:00.000Z |
+| | pp | 1987-02-11T12:13:14.015Z | 12:13:14 μ.μ. | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 11:59:59 μ.μ. | 1453-05-29T23:59:59.000Z |
+| | ppp | 1987-02-11T12:13:14.015Z | 12:13:14 μ.μ. GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 11:59:59 μ.μ. GMT+0 | Errored |
+| | pppp | 1987-02-11T12:13:14.015Z | 12:13:14 μ.μ. GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 11:59:59 μ.μ. GMT+00:00 | Errored |
+| Combination of date and time | Pp | 1987-02-11T12:13:14.015Z | 11/2/87, 12:13 μ.μ. | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29/5/53, 11:59 μ.μ. | 1453-05-29T23:59:00.000Z |
+| | PPpp | 1987-02-11T12:13:14.015Z | 11 Φεβ 1987, 12:13:14 μ.μ. | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 Μαΐ 1453, 11:59:59 μ.μ. | 1453-05-29T23:59:59.000Z |
+| | PPPppp | 1987-02-11T12:13:14.015Z | 11 Φεβρουαρίου 1987 - 12:13:14 μ.μ. GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 29 Μαΐου 1453 - 11:59:59 μ.μ. GMT+0 | Errored |
+| | PPPPpppp | 1987-02-11T12:13:14.015Z | Τετάρτη, 11 Φεβρουαρίου 1987 - 12:13:14 μ.μ. GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | Κυριακή, 29 Μαΐου 1453 - 11:59:59 μ.μ. GMT+00:00 | Errored |
+
+## `formatDistance`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `includeSeconds: true` | `addSuffix: true` |
+| ------------------------ | ---------------------- | ---------------------------- | --------------------------- |
+| 2006-01-01T00:00:00.000Z | περίπου 6 χρόνια | περίπου 6 χρόνια | σε περίπου 6 χρόνια |
+| 2005-01-01T00:00:00.000Z | περίπου 5 χρόνια | περίπου 5 χρόνια | σε περίπου 5 χρόνια |
+| 2004-01-01T00:00:00.000Z | περίπου 4 χρόνια | περίπου 4 χρόνια | σε περίπου 4 χρόνια |
+| 2003-01-01T00:00:00.000Z | περίπου 3 χρόνια | περίπου 3 χρόνια | σε περίπου 3 χρόνια |
+| 2002-01-01T00:00:00.000Z | περίπου 2 χρόνια | περίπου 2 χρόνια | σε περίπου 2 χρόνια |
+| 2001-06-01T00:00:00.000Z | πάνω από 1 χρόνο | πάνω από 1 χρόνο | σε πάνω από 1 χρόνο |
+| 2001-02-01T00:00:00.000Z | περίπου 1 χρόνο | περίπου 1 χρόνο | σε περίπου 1 χρόνο |
+| 2001-01-01T00:00:00.000Z | περίπου 1 χρόνο | περίπου 1 χρόνο | σε περίπου 1 χρόνο |
+| 2000-06-01T00:00:00.000Z | 5 μήνες | 5 μήνες | σε 5 μήνες |
+| 2000-03-01T00:00:00.000Z | 2 μήνες | 2 μήνες | σε 2 μήνες |
+| 2000-02-01T00:00:00.000Z | περίπου 1 μήνας | περίπου 1 μήνας | σε περίπου 1 μήνας |
+| 2000-01-15T00:00:00.000Z | 14 ημέρες | 14 ημέρες | σε 14 ημέρες |
+| 2000-01-02T00:00:00.000Z | 1 ημέρα | 1 ημέρα | σε 1 ημέρα |
+| 2000-01-01T06:00:00.000Z | περίπου 6 ώρες | περίπου 6 ώρες | σε περίπου 6 ώρες |
+| 2000-01-01T01:00:00.000Z | περίπου 1 ώρα | περίπου 1 ώρα | σε περίπου 1 ώρα |
+| 2000-01-01T00:45:00.000Z | περίπου 1 ώρα | περίπου 1 ώρα | σε περίπου 1 ώρα |
+| 2000-01-01T00:30:00.000Z | 30 λεπτά | 30 λεπτά | σε 30 λεπτά |
+| 2000-01-01T00:15:00.000Z | 15 λεπτά | 15 λεπτά | σε 15 λεπτά |
+| 2000-01-01T00:01:00.000Z | 1 λεπτό | 1 λεπτό | σε 1 λεπτό |
+| 2000-01-01T00:00:25.000Z | λιγότερο από ένα λεπτό | μισό λεπτό | σε λιγότερο από ένα λεπτό |
+| 2000-01-01T00:00:15.000Z | λιγότερο από ένα λεπτό | λιγότερο από 20 δευτερόλεπτα | σε λιγότερο από ένα λεπτό |
+| 2000-01-01T00:00:05.000Z | λιγότερο από ένα λεπτό | λιγότερο από 10 δευτερόλεπτα | σε λιγότερο από ένα λεπτό |
+| 2000-01-01T00:00:00.000Z | λιγότερο από ένα λεπτό | λιγότερο από 5 δευτερόλεπτα | λιγότερο από ένα λεπτό πριν |
+| 1999-12-31T23:59:55.000Z | λιγότερο από ένα λεπτό | λιγότερο από 10 δευτερόλεπτα | λιγότερο από ένα λεπτό πριν |
+| 1999-12-31T23:59:45.000Z | λιγότερο από ένα λεπτό | λιγότερο από 20 δευτερόλεπτα | λιγότερο από ένα λεπτό πριν |
+| 1999-12-31T23:59:35.000Z | λιγότερο από ένα λεπτό | μισό λεπτό | λιγότερο από ένα λεπτό πριν |
+| 1999-12-31T23:59:00.000Z | 1 λεπτό | 1 λεπτό | 1 λεπτό πριν |
+| 1999-12-31T23:45:00.000Z | 15 λεπτά | 15 λεπτά | 15 λεπτά πριν |
+| 1999-12-31T23:30:00.000Z | 30 λεπτά | 30 λεπτά | 30 λεπτά πριν |
+| 1999-12-31T23:15:00.000Z | περίπου 1 ώρα | περίπου 1 ώρα | περίπου 1 ώρα πριν |
+| 1999-12-31T23:00:00.000Z | περίπου 1 ώρα | περίπου 1 ώρα | περίπου 1 ώρα πριν |
+| 1999-12-31T18:00:00.000Z | περίπου 6 ώρες | περίπου 6 ώρες | περίπου 6 ώρες πριν |
+| 1999-12-30T00:00:00.000Z | 2 ημέρες | 2 ημέρες | 2 ημέρες πριν |
+| 1999-12-15T00:00:00.000Z | 17 ημέρες | 17 ημέρες | 17 ημέρες πριν |
+| 1999-12-01T00:00:00.000Z | περίπου 1 μήνας | περίπου 1 μήνας | περίπου 1 μήνας πριν |
+| 1999-11-01T00:00:00.000Z | 2 μήνες | 2 μήνες | 2 μήνες πριν |
+| 1999-06-01T00:00:00.000Z | 7 μήνες | 7 μήνες | 7 μήνες πριν |
+| 1999-01-01T00:00:00.000Z | περίπου 1 χρόνο | περίπου 1 χρόνο | περίπου 1 χρόνο πριν |
+| 1998-12-01T00:00:00.000Z | περίπου 1 χρόνο | περίπου 1 χρόνο | περίπου 1 χρόνο πριν |
+| 1998-06-01T00:00:00.000Z | πάνω από 1 χρόνο | πάνω από 1 χρόνο | πάνω από 1 χρόνο πριν |
+| 1998-01-01T00:00:00.000Z | περίπου 2 χρόνια | περίπου 2 χρόνια | περίπου 2 χρόνια πριν |
+| 1997-01-01T00:00:00.000Z | περίπου 3 χρόνια | περίπου 3 χρόνια | περίπου 3 χρόνια πριν |
+| 1996-01-01T00:00:00.000Z | περίπου 4 χρόνια | περίπου 4 χρόνια | περίπου 4 χρόνια πριν |
+| 1995-01-01T00:00:00.000Z | περίπου 5 χρόνια | περίπου 5 χρόνια | περίπου 5 χρόνια πριν |
+| 1994-01-01T00:00:00.000Z | περίπου 6 χρόνια | περίπου 6 χρόνια | περίπου 6 χρόνια πριν |
+
+## `formatDistanceStrict`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `addSuffix: true` | With forced unit (i.e. `hour`) |
+| ------------------------ | --------------- | -------------------- | ------------------------------ |
+| 2006-01-01T00:00:00.000Z | 6 χρόνια | σε 6 χρόνια | 52608 ώρες |
+| 2005-01-01T00:00:00.000Z | 5 χρόνια | σε 5 χρόνια | 43848 ώρες |
+| 2004-01-01T00:00:00.000Z | 4 χρόνια | σε 4 χρόνια | 35064 ώρες |
+| 2003-01-01T00:00:00.000Z | 3 χρόνια | σε 3 χρόνια | 26304 ώρες |
+| 2002-01-01T00:00:00.000Z | 2 χρόνια | σε 2 χρόνια | 17544 ώρες |
+| 2001-06-01T00:00:00.000Z | 1 χρόνο | σε 1 χρόνο | 12408 ώρες |
+| 2001-02-01T00:00:00.000Z | 1 χρόνο | σε 1 χρόνο | 9528 ώρες |
+| 2001-01-01T00:00:00.000Z | 1 χρόνο | σε 1 χρόνο | 8784 ώρες |
+| 2000-06-01T00:00:00.000Z | 5 μήνες | σε 5 μήνες | 3648 ώρες |
+| 2000-03-01T00:00:00.000Z | 2 μήνες | σε 2 μήνες | 1440 ώρες |
+| 2000-02-01T00:00:00.000Z | 1 μήνας | σε 1 μήνας | 744 ώρες |
+| 2000-01-15T00:00:00.000Z | 14 ημέρες | σε 14 ημέρες | 336 ώρες |
+| 2000-01-02T00:00:00.000Z | 1 ημέρα | σε 1 ημέρα | 24 ώρες |
+| 2000-01-01T06:00:00.000Z | 6 ώρες | σε 6 ώρες | 6 ώρες |
+| 2000-01-01T01:00:00.000Z | 1 ώρα | σε 1 ώρα | 1 ώρα |
+| 2000-01-01T00:45:00.000Z | 45 λεπτά | σε 45 λεπτά | 1 ώρα |
+| 2000-01-01T00:30:00.000Z | 30 λεπτά | σε 30 λεπτά | 1 ώρα |
+| 2000-01-01T00:15:00.000Z | 15 λεπτά | σε 15 λεπτά | 0 ώρες |
+| 2000-01-01T00:01:00.000Z | 1 λεπτό | σε 1 λεπτό | 0 ώρες |
+| 2000-01-01T00:00:25.000Z | 25 δευτερόλεπτα | σε 25 δευτερόλεπτα | 0 ώρες |
+| 2000-01-01T00:00:15.000Z | 15 δευτερόλεπτα | σε 15 δευτερόλεπτα | 0 ώρες |
+| 2000-01-01T00:00:05.000Z | 5 δευτερόλεπτα | σε 5 δευτερόλεπτα | 0 ώρες |
+| 2000-01-01T00:00:00.000Z | 0 δευτερόλεπτα | 0 δευτερόλεπτα πριν | 0 ώρες |
+| 1999-12-31T23:59:55.000Z | 5 δευτερόλεπτα | 5 δευτερόλεπτα πριν | 0 ώρες |
+| 1999-12-31T23:59:45.000Z | 15 δευτερόλεπτα | 15 δευτερόλεπτα πριν | 0 ώρες |
+| 1999-12-31T23:59:35.000Z | 25 δευτερόλεπτα | 25 δευτερόλεπτα πριν | 0 ώρες |
+| 1999-12-31T23:59:00.000Z | 1 λεπτό | 1 λεπτό πριν | 0 ώρες |
+| 1999-12-31T23:45:00.000Z | 15 λεπτά | 15 λεπτά πριν | 0 ώρες |
+| 1999-12-31T23:30:00.000Z | 30 λεπτά | 30 λεπτά πριν | 1 ώρα |
+| 1999-12-31T23:15:00.000Z | 45 λεπτά | 45 λεπτά πριν | 1 ώρα |
+| 1999-12-31T23:00:00.000Z | 1 ώρα | 1 ώρα πριν | 1 ώρα |
+| 1999-12-31T18:00:00.000Z | 6 ώρες | 6 ώρες πριν | 6 ώρες |
+| 1999-12-30T00:00:00.000Z | 2 ημέρες | 2 ημέρες πριν | 48 ώρες |
+| 1999-12-15T00:00:00.000Z | 17 ημέρες | 17 ημέρες πριν | 408 ώρες |
+| 1999-12-01T00:00:00.000Z | 1 μήνας | 1 μήνας πριν | 744 ώρες |
+| 1999-11-01T00:00:00.000Z | 2 μήνες | 2 μήνες πριν | 1464 ώρες |
+| 1999-06-01T00:00:00.000Z | 7 μήνες | 7 μήνες πριν | 5136 ώρες |
+| 1999-01-01T00:00:00.000Z | 1 χρόνο | 1 χρόνο πριν | 8760 ώρες |
+| 1998-12-01T00:00:00.000Z | 1 χρόνο | 1 χρόνο πριν | 9504 ώρες |
+| 1998-06-01T00:00:00.000Z | 2 χρόνια | 2 χρόνια πριν | 13896 ώρες |
+| 1998-01-01T00:00:00.000Z | 2 χρόνια | 2 χρόνια πριν | 17520 ώρες |
+| 1997-01-01T00:00:00.000Z | 3 χρόνια | 3 χρόνια πριν | 26280 ώρες |
+| 1996-01-01T00:00:00.000Z | 4 χρόνια | 4 χρόνια πριν | 35064 ώρες |
+| 1995-01-01T00:00:00.000Z | 5 χρόνια | 5 χρόνια πριν | 43824 ώρες |
+| 1994-01-01T00:00:00.000Z | 6 χρόνια | 6 χρόνια πριν | 52584 ώρες |
+
+## `formatRelative`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result |
+| ------------------------ | --------------------------------------- |
+| 2000-01-10T00:00:00.000Z | 10/1/00 |
+| 2000-01-05T00:00:00.000Z | Τετάρτη στις 12:00 π.μ. |
+| 2000-01-02T00:00:00.000Z | αύριο στις 12:00 π.μ. |
+| 2000-01-01T00:00:00.000Z | σήμερα στις 12:00 π.μ. |
+| 1999-12-31T00:00:00.000Z | χθες στις 12:00 π.μ. |
+| 1999-12-27T00:00:00.000Z | την προηγούμενη Δευτέρα στις 12:00 π.μ. |
+| 1999-12-21T00:00:00.000Z | 21/12/99 |
diff --git a/date-fns/src/locale/en-AU/_lib/formatLong/index.js b/date-fns/src/locale/en-AU/_lib/formatLong/index.js
new file mode 100644
index 0000000..8e674cd
--- /dev/null
+++ b/date-fns/src/locale/en-AU/_lib/formatLong/index.js
@@ -0,0 +1,41 @@
+import buildFormatLongFn from '../../../_lib/buildFormatLongFn/index'
+
+var dateFormats = {
+ full: 'EEEE, d MMMM yyyy',
+ long: 'd MMMM yyyy',
+ medium: 'd MMM yyyy',
+ short: 'dd/MM/yyyy'
+}
+
+var timeFormats = {
+ full: 'h:mm:ss a zzzz',
+ long: 'h:mm:ss a z',
+ medium: 'h:mm:ss a',
+ short: 'h:mm a'
+}
+
+var dateTimeFormats = {
+ full: "{{date}} 'at' {{time}}",
+ long: "{{date}} 'at' {{time}}",
+ medium: '{{date}}, {{time}}',
+ short: '{{date}}, {{time}}'
+}
+
+var formatLong = {
+ date: buildFormatLongFn({
+ formats: dateFormats,
+ defaultWidth: 'full'
+ }),
+
+ time: buildFormatLongFn({
+ formats: timeFormats,
+ defaultWidth: 'full'
+ }),
+
+ dateTime: buildFormatLongFn({
+ formats: dateTimeFormats,
+ defaultWidth: 'full'
+ })
+}
+
+export default formatLong
diff --git a/date-fns/src/locale/en-AU/index.d.ts b/date-fns/src/locale/en-AU/index.d.ts
new file mode 100644
index 0000000..c1343a6
--- /dev/null
+++ b/date-fns/src/locale/en-AU/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { enAU } from 'date-fns/locale'
+export default enAU
diff --git a/date-fns/src/locale/en-AU/index.js b/date-fns/src/locale/en-AU/index.js
new file mode 100644
index 0000000..112306a
--- /dev/null
+++ b/date-fns/src/locale/en-AU/index.js
@@ -0,0 +1,28 @@
+import formatDistance from '../en-US/_lib/formatDistance/index'
+import formatLong from './_lib/formatLong/index'
+import formatRelative from '../en-US/_lib/formatRelative/index'
+import localize from '../en-US/_lib/localize/index'
+import match from '../en-US/_lib/match/index'
+
+/**
+ * @type {Locale}
+ * @category Locales
+ * @summary English locale (Australia).
+ * @language English
+ * @iso-639-2 eng
+ * @author Julien Malige [@JulienMalige]{@link https://github.com/JulienMalige}
+ */
+var locale = {
+ code: 'en-AU',
+ formatDistance: formatDistance,
+ formatLong: formatLong,
+ formatRelative: formatRelative,
+ localize: localize,
+ match: match,
+ options: {
+ weekStartsOn: 1 /* Monday */,
+ firstWeekContainsDate: 4
+ }
+}
+
+export default locale
diff --git a/date-fns/src/locale/en-AU/index.js.flow b/date-fns/src/locale/en-AU/index.js.flow
new file mode 100644
index 0000000..b9dfe66
--- /dev/null
+++ b/date-fns/src/locale/en-AU/index.js.flow
@@ -0,0 +1,35 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+declare module.exports: Locale
diff --git a/date-fns/src/locale/en-AU/snapshot.md b/date-fns/src/locale/en-AU/snapshot.md
new file mode 100644
index 0000000..75c0ff5
--- /dev/null
+++ b/date-fns/src/locale/en-AU/snapshot.md
@@ -0,0 +1,304 @@
+# English (en-AU) locale
+
+## `format` and `parse`
+
+| Title | Token string | Date | `format` result | `parse` result |
+| ------------------------------- | ------------ | ------------------------ | ---------------------------------------------------- | ------------------------ |
+| Calendar year | yo | 1987-02-11T12:13:14.015Z | 1987th | 1987-01-01T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 5th | 0005-01-01T00:00:00.000Z |
+| Local week-numbering year | Yo | 1987-02-11T12:13:14.015Z | 1987th | 1986-12-29T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 4th | 0003-12-29T00:00:00.000Z |
+| Quarter (formatting) | Qo | 2019-01-01T12:13:14.015Z | 1st | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2nd | 2019-04-01T00:00:00.000Z |
+| | QQQ | 2019-01-01T12:13:14.015Z | Q1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | Q2 | 2019-04-01T00:00:00.000Z |
+| | QQQQ | 2019-01-01T12:13:14.015Z | 1st quarter | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2nd quarter | 2019-04-01T00:00:00.000Z |
+| | QQQQQ | 2019-01-01T12:13:14.015Z | 1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2 | 2019-04-01T00:00:00.000Z |
+| Quarter (stand-alone) | qo | 2019-01-01T12:13:14.015Z | 1st | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2nd | 2019-04-01T00:00:00.000Z |
+| | qqq | 2019-01-01T12:13:14.015Z | Q1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | Q2 | 2019-04-01T00:00:00.000Z |
+| | qqqq | 2019-01-01T12:13:14.015Z | 1st quarter | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2nd quarter | 2019-04-01T00:00:00.000Z |
+| Month (formatting) | Mo | 2019-02-11T12:13:14.015Z | 2nd | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7th | 2019-07-01T00:00:00.000Z |
+| | MMM | 2019-02-11T12:13:14.015Z | Feb | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | Jul | 2019-07-01T00:00:00.000Z |
+| | MMMM | 2019-02-11T12:13:14.015Z | February | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | July | 2019-07-01T00:00:00.000Z |
+| | MMMMM | 2019-02-11T12:13:14.015Z | F | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | J | 2019-01-01T00:00:00.000Z |
+| Month (stand-alone) | Lo | 2019-02-11T12:13:14.015Z | 2nd | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7th | 2019-07-01T00:00:00.000Z |
+| | LLL | 2019-02-11T12:13:14.015Z | Feb | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | Jul | 2019-07-01T00:00:00.000Z |
+| | LLLL | 2019-02-11T12:13:14.015Z | February | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | July | 2019-07-01T00:00:00.000Z |
+| | LLLLL | 2019-02-11T12:13:14.015Z | F | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | J | 2019-01-01T00:00:00.000Z |
+| Local week of year | wo | 2019-01-01T12:13:14.015Z | 1st | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48th | 2019-11-25T00:00:00.000Z |
+| ISO week of year | Io | 2019-01-01T12:13:14.015Z | 1st | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48th | 2019-11-25T00:00:00.000Z |
+| Day of month | do | 2019-02-11T12:13:14.015Z | 11th | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-28T12:13:14.015Z | 28th | 2019-02-28T00:00:00.000Z |
+| Day of year | Do | 2019-02-11T12:13:14.015Z | 42nd | 2019-02-11T00:00:00.000Z |
+| | | 2019-12-31T12:13:14.015Z | 365th | 2019-12-31T00:00:00.000Z |
+| Day of week (formatting) | E | 2019-02-11T12:13:14.015Z | Mon | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Fri | 2019-02-15T00:00:00.000Z |
+| | EE | 2019-02-11T12:13:14.015Z | Mon | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Fri | 2019-02-15T00:00:00.000Z |
+| | EEE | 2019-02-11T12:13:14.015Z | Mon | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Fri | 2019-02-15T00:00:00.000Z |
+| | EEEE | 2019-02-11T12:13:14.015Z | Monday | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Friday | 2019-02-15T00:00:00.000Z |
+| | EEEEE | 2019-02-11T12:13:14.015Z | M | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | F | 2019-02-15T00:00:00.000Z |
+| | EEEEEE | 2019-02-11T12:13:14.015Z | Mo | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Fr | 2019-02-15T00:00:00.000Z |
+| ISO day of week (formatting) | io | 2019-02-11T12:13:14.015Z | 1st | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5th | 2019-02-15T00:00:00.000Z |
+| | iii | 2019-02-11T12:13:14.015Z | Mon | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Fri | 2019-02-15T00:00:00.000Z |
+| | iiii | 2019-02-11T12:13:14.015Z | Monday | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Friday | 2019-02-15T00:00:00.000Z |
+| | iiiii | 2019-02-11T12:13:14.015Z | M | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | F | 2019-02-15T00:00:00.000Z |
+| | iiiiii | 2019-02-11T12:13:14.015Z | Mo | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Fr | 2019-02-15T00:00:00.000Z |
+| Local day of week (formatting) | eo | 2019-02-11T12:13:14.015Z | 1st | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5th | 2019-02-15T00:00:00.000Z |
+| | eee | 2019-02-11T12:13:14.015Z | Mon | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Fri | 2019-02-15T00:00:00.000Z |
+| | eeee | 2019-02-11T12:13:14.015Z | Monday | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Friday | 2019-02-15T00:00:00.000Z |
+| | eeeee | 2019-02-11T12:13:14.015Z | M | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | F | 2019-02-15T00:00:00.000Z |
+| | eeeeee | 2019-02-11T12:13:14.015Z | Mo | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Fr | 2019-02-15T00:00:00.000Z |
+| Local day of week (stand-alone) | co | 2019-02-11T12:13:14.015Z | 1st | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5th | 2019-02-15T00:00:00.000Z |
+| | ccc | 2019-02-11T12:13:14.015Z | Mon | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Fri | 2019-02-15T00:00:00.000Z |
+| | cccc | 2019-02-11T12:13:14.015Z | Monday | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Friday | 2019-02-15T00:00:00.000Z |
+| | ccccc | 2019-02-11T12:13:14.015Z | M | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | F | 2019-02-15T00:00:00.000Z |
+| | cccccc | 2019-02-11T12:13:14.015Z | Mo | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Fr | 2019-02-15T00:00:00.000Z |
+| AM, PM | a | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | aa | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | aaa | 2019-02-11T11:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | aaaa | 2019-02-11T11:13:14.015Z | a.m. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | p.m. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | p.m. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | a.m. | 2019-02-11T00:00:00.000Z |
+| | aaaaa | 2019-02-11T11:13:14.015Z | a | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | p | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | p | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | a | 2019-02-11T00:00:00.000Z |
+| AM, PM, noon, midnight | b | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | bb | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | bbb | 2019-02-11T11:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | bbbb | 2019-02-11T11:13:14.015Z | a.m. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | p.m. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | p.m. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | a.m. | 2019-02-11T00:00:00.000Z |
+| | bbbbb | 2019-02-11T11:13:14.015Z | a | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | p | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | p | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | a | 2019-02-11T00:00:00.000Z |
+| Flexible day period | B | 2019-02-11T11:13:14.015Z | in the morning | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | in the afternoon | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | in the evening | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | at night | 2019-02-11T00:00:00.000Z |
+| | BB | 2019-02-11T11:13:14.015Z | in the morning | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | in the afternoon | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | in the evening | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | at night | 2019-02-11T00:00:00.000Z |
+| | BBB | 2019-02-11T11:13:14.015Z | in the morning | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | in the afternoon | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | in the evening | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | at night | 2019-02-11T00:00:00.000Z |
+| | BBBB | 2019-02-11T11:13:14.015Z | in the morning | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | in the afternoon | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | in the evening | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | at night | 2019-02-11T00:00:00.000Z |
+| | BBBBB | 2019-02-11T11:13:14.015Z | in the morning | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | in the afternoon | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | in the evening | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | at night | Invalid Date |
+| Hour [1-12] | ho | 2019-02-11T11:13:14.015Z | 11th | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11th | 2019-02-11T23:00:00.000Z |
+| Hour [0-23] | Ho | 2019-02-11T11:13:14.015Z | 11th | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23rd | 2019-02-11T23:00:00.000Z |
+| Hour [0-11] | Ko | 2019-02-11T11:13:14.015Z | 11th | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11th | 2019-02-11T23:00:00.000Z |
+| Hour [1-24] | ko | 2019-02-11T11:13:14.015Z | 11th | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23rd | 2019-02-11T23:00:00.000Z |
+| Minute | mo | 2019-01-01T12:01:14.015Z | 1st | 2019-01-01T12:01:00.000Z |
+| | | 2019-04-01T12:55:14.015Z | 55th | 2019-04-01T12:55:00.000Z |
+| Second | so | 2019-01-01T12:13:01.015Z | 1st | 2019-01-01T12:13:01.000Z |
+| | | 2019-04-01T12:13:55.015Z | 55th | 2019-04-01T12:13:55.000Z |
+| Long localized date | P | 1987-02-11T12:13:14.015Z | 11/02/1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29/05/1453 | 1453-05-29T00:00:00.000Z |
+| | PP | 1987-02-11T12:13:14.015Z | 11 Feb 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 May 1453 | 1453-05-29T00:00:00.000Z |
+| | PPP | 1987-02-11T12:13:14.015Z | 11 February 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 May 1453 | 1453-05-29T00:00:00.000Z |
+| | PPPP | 1987-02-11T12:13:14.015Z | Wednesday, 11 February 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | Sunday, 29 May 1453 | 1453-05-29T00:00:00.000Z |
+| Long localized time | p | 1987-02-11T12:13:14.015Z | 12:13 PM | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 11:59 PM | 1453-05-29T23:59:00.000Z |
+| | pp | 1987-02-11T12:13:14.015Z | 12:13:14 PM | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 11:59:59 PM | 1453-05-29T23:59:59.000Z |
+| | ppp | 1987-02-11T12:13:14.015Z | 12:13:14 PM GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 11:59:59 PM GMT+0 | Errored |
+| | pppp | 1987-02-11T12:13:14.015Z | 12:13:14 PM GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 11:59:59 PM GMT+00:00 | Errored |
+| Combination of date and time | Pp | 1987-02-11T12:13:14.015Z | 11/02/1987, 12:13 PM | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29/05/1453, 11:59 PM | 1453-05-29T23:59:00.000Z |
+| | PPpp | 1987-02-11T12:13:14.015Z | 11 Feb 1987, 12:13:14 PM | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 May 1453, 11:59:59 PM | 1453-05-29T23:59:59.000Z |
+| | PPPppp | 1987-02-11T12:13:14.015Z | 11 February 1987 at 12:13:14 PM GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 29 May 1453 at 11:59:59 PM GMT+0 | Errored |
+| | PPPPpppp | 1987-02-11T12:13:14.015Z | Wednesday, 11 February 1987 at 12:13:14 PM GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | Sunday, 29 May 1453 at 11:59:59 PM GMT+00:00 | Errored |
+
+## `formatDistance`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `includeSeconds: true` | `addSuffix: true` |
+| ------------------------ | ------------------ | ---------------------- | ---------------------- |
+| 2006-01-01T00:00:00.000Z | about 6 years | about 6 years | in about 6 years |
+| 2005-01-01T00:00:00.000Z | about 5 years | about 5 years | in about 5 years |
+| 2004-01-01T00:00:00.000Z | about 4 years | about 4 years | in about 4 years |
+| 2003-01-01T00:00:00.000Z | about 3 years | about 3 years | in about 3 years |
+| 2002-01-01T00:00:00.000Z | about 2 years | about 2 years | in about 2 years |
+| 2001-06-01T00:00:00.000Z | over 1 year | over 1 year | in over 1 year |
+| 2001-02-01T00:00:00.000Z | about 1 year | about 1 year | in about 1 year |
+| 2001-01-01T00:00:00.000Z | about 1 year | about 1 year | in about 1 year |
+| 2000-06-01T00:00:00.000Z | 5 months | 5 months | in 5 months |
+| 2000-03-01T00:00:00.000Z | 2 months | 2 months | in 2 months |
+| 2000-02-01T00:00:00.000Z | about 1 month | about 1 month | in about 1 month |
+| 2000-01-15T00:00:00.000Z | 14 days | 14 days | in 14 days |
+| 2000-01-02T00:00:00.000Z | 1 day | 1 day | in 1 day |
+| 2000-01-01T06:00:00.000Z | about 6 hours | about 6 hours | in about 6 hours |
+| 2000-01-01T01:00:00.000Z | about 1 hour | about 1 hour | in about 1 hour |
+| 2000-01-01T00:45:00.000Z | about 1 hour | about 1 hour | in about 1 hour |
+| 2000-01-01T00:30:00.000Z | 30 minutes | 30 minutes | in 30 minutes |
+| 2000-01-01T00:15:00.000Z | 15 minutes | 15 minutes | in 15 minutes |
+| 2000-01-01T00:01:00.000Z | 1 minute | 1 minute | in 1 minute |
+| 2000-01-01T00:00:25.000Z | less than a minute | half a minute | in less than a minute |
+| 2000-01-01T00:00:15.000Z | less than a minute | less than 20 seconds | in less than a minute |
+| 2000-01-01T00:00:05.000Z | less than a minute | less than 10 seconds | in less than a minute |
+| 2000-01-01T00:00:00.000Z | less than a minute | less than 5 seconds | less than a minute ago |
+| 1999-12-31T23:59:55.000Z | less than a minute | less than 10 seconds | less than a minute ago |
+| 1999-12-31T23:59:45.000Z | less than a minute | less than 20 seconds | less than a minute ago |
+| 1999-12-31T23:59:35.000Z | less than a minute | half a minute | less than a minute ago |
+| 1999-12-31T23:59:00.000Z | 1 minute | 1 minute | 1 minute ago |
+| 1999-12-31T23:45:00.000Z | 15 minutes | 15 minutes | 15 minutes ago |
+| 1999-12-31T23:30:00.000Z | 30 minutes | 30 minutes | 30 minutes ago |
+| 1999-12-31T23:15:00.000Z | about 1 hour | about 1 hour | about 1 hour ago |
+| 1999-12-31T23:00:00.000Z | about 1 hour | about 1 hour | about 1 hour ago |
+| 1999-12-31T18:00:00.000Z | about 6 hours | about 6 hours | about 6 hours ago |
+| 1999-12-30T00:00:00.000Z | 2 days | 2 days | 2 days ago |
+| 1999-12-15T00:00:00.000Z | 17 days | 17 days | 17 days ago |
+| 1999-12-01T00:00:00.000Z | about 1 month | about 1 month | about 1 month ago |
+| 1999-11-01T00:00:00.000Z | 2 months | 2 months | 2 months ago |
+| 1999-06-01T00:00:00.000Z | 7 months | 7 months | 7 months ago |
+| 1999-01-01T00:00:00.000Z | about 1 year | about 1 year | about 1 year ago |
+| 1998-12-01T00:00:00.000Z | about 1 year | about 1 year | about 1 year ago |
+| 1998-06-01T00:00:00.000Z | over 1 year | over 1 year | over 1 year ago |
+| 1998-01-01T00:00:00.000Z | about 2 years | about 2 years | about 2 years ago |
+| 1997-01-01T00:00:00.000Z | about 3 years | about 3 years | about 3 years ago |
+| 1996-01-01T00:00:00.000Z | about 4 years | about 4 years | about 4 years ago |
+| 1995-01-01T00:00:00.000Z | about 5 years | about 5 years | about 5 years ago |
+| 1994-01-01T00:00:00.000Z | about 6 years | about 6 years | about 6 years ago |
+
+## `formatDistanceStrict`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `addSuffix: true` | With forced unit (i.e. `hour`) |
+| ------------------------ | ---------- | ----------------- | ------------------------------ |
+| 2006-01-01T00:00:00.000Z | 6 years | in 6 years | 52608 hours |
+| 2005-01-01T00:00:00.000Z | 5 years | in 5 years | 43848 hours |
+| 2004-01-01T00:00:00.000Z | 4 years | in 4 years | 35064 hours |
+| 2003-01-01T00:00:00.000Z | 3 years | in 3 years | 26304 hours |
+| 2002-01-01T00:00:00.000Z | 2 years | in 2 years | 17544 hours |
+| 2001-06-01T00:00:00.000Z | 1 year | in 1 year | 12408 hours |
+| 2001-02-01T00:00:00.000Z | 1 year | in 1 year | 9528 hours |
+| 2001-01-01T00:00:00.000Z | 1 year | in 1 year | 8784 hours |
+| 2000-06-01T00:00:00.000Z | 5 months | in 5 months | 3648 hours |
+| 2000-03-01T00:00:00.000Z | 2 months | in 2 months | 1440 hours |
+| 2000-02-01T00:00:00.000Z | 1 month | in 1 month | 744 hours |
+| 2000-01-15T00:00:00.000Z | 14 days | in 14 days | 336 hours |
+| 2000-01-02T00:00:00.000Z | 1 day | in 1 day | 24 hours |
+| 2000-01-01T06:00:00.000Z | 6 hours | in 6 hours | 6 hours |
+| 2000-01-01T01:00:00.000Z | 1 hour | in 1 hour | 1 hour |
+| 2000-01-01T00:45:00.000Z | 45 minutes | in 45 minutes | 1 hour |
+| 2000-01-01T00:30:00.000Z | 30 minutes | in 30 minutes | 1 hour |
+| 2000-01-01T00:15:00.000Z | 15 minutes | in 15 minutes | 0 hours |
+| 2000-01-01T00:01:00.000Z | 1 minute | in 1 minute | 0 hours |
+| 2000-01-01T00:00:25.000Z | 25 seconds | in 25 seconds | 0 hours |
+| 2000-01-01T00:00:15.000Z | 15 seconds | in 15 seconds | 0 hours |
+| 2000-01-01T00:00:05.000Z | 5 seconds | in 5 seconds | 0 hours |
+| 2000-01-01T00:00:00.000Z | 0 seconds | 0 seconds ago | 0 hours |
+| 1999-12-31T23:59:55.000Z | 5 seconds | 5 seconds ago | 0 hours |
+| 1999-12-31T23:59:45.000Z | 15 seconds | 15 seconds ago | 0 hours |
+| 1999-12-31T23:59:35.000Z | 25 seconds | 25 seconds ago | 0 hours |
+| 1999-12-31T23:59:00.000Z | 1 minute | 1 minute ago | 0 hours |
+| 1999-12-31T23:45:00.000Z | 15 minutes | 15 minutes ago | 0 hours |
+| 1999-12-31T23:30:00.000Z | 30 minutes | 30 minutes ago | 1 hour |
+| 1999-12-31T23:15:00.000Z | 45 minutes | 45 minutes ago | 1 hour |
+| 1999-12-31T23:00:00.000Z | 1 hour | 1 hour ago | 1 hour |
+| 1999-12-31T18:00:00.000Z | 6 hours | 6 hours ago | 6 hours |
+| 1999-12-30T00:00:00.000Z | 2 days | 2 days ago | 48 hours |
+| 1999-12-15T00:00:00.000Z | 17 days | 17 days ago | 408 hours |
+| 1999-12-01T00:00:00.000Z | 1 month | 1 month ago | 744 hours |
+| 1999-11-01T00:00:00.000Z | 2 months | 2 months ago | 1464 hours |
+| 1999-06-01T00:00:00.000Z | 7 months | 7 months ago | 5136 hours |
+| 1999-01-01T00:00:00.000Z | 1 year | 1 year ago | 8760 hours |
+| 1998-12-01T00:00:00.000Z | 1 year | 1 year ago | 9504 hours |
+| 1998-06-01T00:00:00.000Z | 2 years | 2 years ago | 13896 hours |
+| 1998-01-01T00:00:00.000Z | 2 years | 2 years ago | 17520 hours |
+| 1997-01-01T00:00:00.000Z | 3 years | 3 years ago | 26280 hours |
+| 1996-01-01T00:00:00.000Z | 4 years | 4 years ago | 35064 hours |
+| 1995-01-01T00:00:00.000Z | 5 years | 5 years ago | 43824 hours |
+| 1994-01-01T00:00:00.000Z | 6 years | 6 years ago | 52584 hours |
+
+## `formatRelative`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result |
+| ------------------------ | ----------------------- |
+| 2000-01-10T00:00:00.000Z | 10/01/2000 |
+| 2000-01-05T00:00:00.000Z | Wednesday at 12:00 AM |
+| 2000-01-02T00:00:00.000Z | tomorrow at 12:00 AM |
+| 2000-01-01T00:00:00.000Z | today at 12:00 AM |
+| 1999-12-31T00:00:00.000Z | yesterday at 12:00 AM |
+| 1999-12-27T00:00:00.000Z | last Monday at 12:00 AM |
+| 1999-12-21T00:00:00.000Z | 21/12/1999 |
diff --git a/date-fns/src/locale/en-CA/_lib/formatDistance/index.js b/date-fns/src/locale/en-CA/_lib/formatDistance/index.js
new file mode 100644
index 0000000..c818314
--- /dev/null
+++ b/date-fns/src/locale/en-CA/_lib/formatDistance/index.js
@@ -0,0 +1,101 @@
+var formatDistanceLocale = {
+ lessThanXSeconds: {
+ one: 'less than a second',
+ other: 'less than {{count}} seconds'
+ },
+
+ xSeconds: {
+ one: 'a second',
+ other: '{{count}} seconds'
+ },
+
+ halfAMinute: 'half a minute',
+
+ lessThanXMinutes: {
+ one: 'less than a minute',
+ other: 'less than {{count}} minutes'
+ },
+
+ xMinutes: {
+ one: 'a minute',
+ other: '{{count}} minutes'
+ },
+
+ aboutXHours: {
+ one: 'about an hour',
+ other: 'about {{count}} hours'
+ },
+
+ xHours: {
+ one: 'an hour',
+ other: '{{count}} hours'
+ },
+
+ xDays: {
+ one: 'a day',
+ other: '{{count}} days'
+ },
+
+ aboutXWeeks: {
+ one: 'about a week',
+ other: 'about {{count}} weeks'
+ },
+
+ xWeeks: {
+ one: 'a week',
+ other: '{{count}} weeks'
+ },
+
+ aboutXMonths: {
+ one: 'about a month',
+ other: 'about {{count}} months'
+ },
+
+ xMonths: {
+ one: 'a month',
+ other: '{{count}} months'
+ },
+
+ aboutXYears: {
+ one: 'about a year',
+ other: 'about {{count}} years'
+ },
+
+ xYears: {
+ one: 'a year',
+ other: '{{count}} years'
+ },
+
+ overXYears: {
+ one: 'over a year',
+ other: 'over {{count}} years'
+ },
+
+ almostXYears: {
+ one: 'almost a year',
+ other: 'almost {{count}} years'
+ }
+}
+
+export default function formatDistance(token, count, options) {
+ options = options || {}
+
+ var result
+ if (typeof formatDistanceLocale[token] === 'string') {
+ result = formatDistanceLocale[token]
+ } else if (count === 1) {
+ result = formatDistanceLocale[token].one
+ } else {
+ result = formatDistanceLocale[token].other.replace('{{count}}', count)
+ }
+
+ if (options.addSuffix) {
+ if (options.comparison > 0) {
+ return 'in ' + result
+ } else {
+ return result + ' ago'
+ }
+ }
+
+ return result
+}
diff --git a/date-fns/src/locale/en-CA/_lib/formatLong/index.js b/date-fns/src/locale/en-CA/_lib/formatLong/index.js
new file mode 100644
index 0000000..7bcee0d
--- /dev/null
+++ b/date-fns/src/locale/en-CA/_lib/formatLong/index.js
@@ -0,0 +1,41 @@
+import buildFormatLongFn from '../../../_lib/buildFormatLongFn/index'
+
+var dateFormats = {
+ full: 'EEEE, MMMM do, yyyy',
+ long: 'MMMM do, yyyy',
+ medium: 'MMM d, yyyy',
+ short: 'yyyy-MM-dd'
+}
+
+var timeFormats = {
+ full: 'h:mm:ss a zzzz',
+ long: 'h:mm:ss a z',
+ medium: 'h:mm:ss a',
+ short: 'h:mm a'
+}
+
+var dateTimeFormats = {
+ full: "{{date}} 'at' {{time}}",
+ long: "{{date}} 'at' {{time}}",
+ medium: '{{date}}, {{time}}',
+ short: '{{date}}, {{time}}'
+}
+
+var formatLong = {
+ date: buildFormatLongFn({
+ formats: dateFormats,
+ defaultWidth: 'full'
+ }),
+
+ time: buildFormatLongFn({
+ formats: timeFormats,
+ defaultWidth: 'full'
+ }),
+
+ dateTime: buildFormatLongFn({
+ formats: dateTimeFormats,
+ defaultWidth: 'full'
+ })
+}
+
+export default formatLong
diff --git a/date-fns/src/locale/en-CA/index.d.ts b/date-fns/src/locale/en-CA/index.d.ts
new file mode 100644
index 0000000..e97efb4
--- /dev/null
+++ b/date-fns/src/locale/en-CA/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { enCA } from 'date-fns/locale'
+export default enCA
diff --git a/date-fns/src/locale/en-CA/index.js b/date-fns/src/locale/en-CA/index.js
new file mode 100644
index 0000000..863aa31
--- /dev/null
+++ b/date-fns/src/locale/en-CA/index.js
@@ -0,0 +1,29 @@
+import formatDistance from './_lib/formatDistance/index'
+import formatLong from './_lib/formatLong/index'
+import formatRelative from '../en-US/_lib/formatRelative/index'
+import localize from '../en-US/_lib/localize/index'
+import match from '../en-US/_lib/match/index'
+
+/**
+ * @type {Locale}
+ * @category Locales
+ * @summary English locale (Canada).
+ * @language English
+ * @iso-639-2 eng
+ * @author Mark Owsiak [@markowsiak]{@link https://github.com/markowsiak}
+ * @author Marco Imperatore [@mimperatore]{@link https://github.com/mimperatore}
+ */
+var locale = {
+ code: 'en-CA',
+ formatDistance: formatDistance,
+ formatLong: formatLong,
+ formatRelative: formatRelative,
+ localize: localize,
+ match: match,
+ options: {
+ weekStartsOn: 0 /* Sunday */,
+ firstWeekContainsDate: 1
+ }
+}
+
+export default locale
diff --git a/date-fns/src/locale/en-CA/index.js.flow b/date-fns/src/locale/en-CA/index.js.flow
new file mode 100644
index 0000000..b9dfe66
--- /dev/null
+++ b/date-fns/src/locale/en-CA/index.js.flow
@@ -0,0 +1,35 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+declare module.exports: Locale
diff --git a/date-fns/src/locale/en-CA/snapshot.md b/date-fns/src/locale/en-CA/snapshot.md
new file mode 100644
index 0000000..4b8f145
--- /dev/null
+++ b/date-fns/src/locale/en-CA/snapshot.md
@@ -0,0 +1,304 @@
+# English (en-CA) locale
+
+## `format` and `parse`
+
+| Title | Token string | Date | `format` result | `parse` result |
+| ------------------------------- | ------------ | ------------------------ | ------------------------------------------------------- | ------------------------ |
+| Calendar year | yo | 1987-02-11T12:13:14.015Z | 1987th | 1987-01-01T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 5th | 0005-01-01T00:00:00.000Z |
+| Local week-numbering year | Yo | 1987-02-11T12:13:14.015Z | 1987th | 1986-12-28T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 5th | 0004-12-26T00:00:00.000Z |
+| Quarter (formatting) | Qo | 2019-01-01T12:13:14.015Z | 1st | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2nd | 2019-04-01T00:00:00.000Z |
+| | QQQ | 2019-01-01T12:13:14.015Z | Q1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | Q2 | 2019-04-01T00:00:00.000Z |
+| | QQQQ | 2019-01-01T12:13:14.015Z | 1st quarter | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2nd quarter | 2019-04-01T00:00:00.000Z |
+| | QQQQQ | 2019-01-01T12:13:14.015Z | 1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2 | 2019-04-01T00:00:00.000Z |
+| Quarter (stand-alone) | qo | 2019-01-01T12:13:14.015Z | 1st | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2nd | 2019-04-01T00:00:00.000Z |
+| | qqq | 2019-01-01T12:13:14.015Z | Q1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | Q2 | 2019-04-01T00:00:00.000Z |
+| | qqqq | 2019-01-01T12:13:14.015Z | 1st quarter | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2nd quarter | 2019-04-01T00:00:00.000Z |
+| Month (formatting) | Mo | 2019-02-11T12:13:14.015Z | 2nd | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7th | 2019-07-01T00:00:00.000Z |
+| | MMM | 2019-02-11T12:13:14.015Z | Feb | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | Jul | 2019-07-01T00:00:00.000Z |
+| | MMMM | 2019-02-11T12:13:14.015Z | February | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | July | 2019-07-01T00:00:00.000Z |
+| | MMMMM | 2019-02-11T12:13:14.015Z | F | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | J | 2019-01-01T00:00:00.000Z |
+| Month (stand-alone) | Lo | 2019-02-11T12:13:14.015Z | 2nd | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7th | 2019-07-01T00:00:00.000Z |
+| | LLL | 2019-02-11T12:13:14.015Z | Feb | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | Jul | 2019-07-01T00:00:00.000Z |
+| | LLLL | 2019-02-11T12:13:14.015Z | February | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | July | 2019-07-01T00:00:00.000Z |
+| | LLLLL | 2019-02-11T12:13:14.015Z | F | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | J | 2019-01-01T00:00:00.000Z |
+| Local week of year | wo | 2019-01-01T12:13:14.015Z | 1st | 2018-12-30T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 49th | 2019-12-01T00:00:00.000Z |
+| ISO week of year | Io | 2019-01-01T12:13:14.015Z | 1st | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48th | 2019-11-25T00:00:00.000Z |
+| Day of month | do | 2019-02-11T12:13:14.015Z | 11th | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-28T12:13:14.015Z | 28th | 2019-02-28T00:00:00.000Z |
+| Day of year | Do | 2019-02-11T12:13:14.015Z | 42nd | 2019-02-11T00:00:00.000Z |
+| | | 2019-12-31T12:13:14.015Z | 365th | 2019-12-31T00:00:00.000Z |
+| Day of week (formatting) | E | 2019-02-11T12:13:14.015Z | Mon | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Fri | 2019-02-15T00:00:00.000Z |
+| | EE | 2019-02-11T12:13:14.015Z | Mon | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Fri | 2019-02-15T00:00:00.000Z |
+| | EEE | 2019-02-11T12:13:14.015Z | Mon | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Fri | 2019-02-15T00:00:00.000Z |
+| | EEEE | 2019-02-11T12:13:14.015Z | Monday | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Friday | 2019-02-15T00:00:00.000Z |
+| | EEEEE | 2019-02-11T12:13:14.015Z | M | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | F | 2019-02-15T00:00:00.000Z |
+| | EEEEEE | 2019-02-11T12:13:14.015Z | Mo | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Fr | 2019-02-15T00:00:00.000Z |
+| ISO day of week (formatting) | io | 2019-02-11T12:13:14.015Z | 1st | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5th | 2019-02-15T00:00:00.000Z |
+| | iii | 2019-02-11T12:13:14.015Z | Mon | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Fri | 2019-02-15T00:00:00.000Z |
+| | iiii | 2019-02-11T12:13:14.015Z | Monday | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Friday | 2019-02-15T00:00:00.000Z |
+| | iiiii | 2019-02-11T12:13:14.015Z | M | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | F | 2019-02-15T00:00:00.000Z |
+| | iiiiii | 2019-02-11T12:13:14.015Z | Mo | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Fr | 2019-02-15T00:00:00.000Z |
+| Local day of week (formatting) | eo | 2019-02-11T12:13:14.015Z | 2nd | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 6th | 2019-02-15T00:00:00.000Z |
+| | eee | 2019-02-11T12:13:14.015Z | Mon | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Fri | 2019-02-15T00:00:00.000Z |
+| | eeee | 2019-02-11T12:13:14.015Z | Monday | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Friday | 2019-02-15T00:00:00.000Z |
+| | eeeee | 2019-02-11T12:13:14.015Z | M | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | F | 2019-02-15T00:00:00.000Z |
+| | eeeeee | 2019-02-11T12:13:14.015Z | Mo | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Fr | 2019-02-15T00:00:00.000Z |
+| Local day of week (stand-alone) | co | 2019-02-11T12:13:14.015Z | 2nd | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 6th | 2019-02-15T00:00:00.000Z |
+| | ccc | 2019-02-11T12:13:14.015Z | Mon | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Fri | 2019-02-15T00:00:00.000Z |
+| | cccc | 2019-02-11T12:13:14.015Z | Monday | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Friday | 2019-02-15T00:00:00.000Z |
+| | ccccc | 2019-02-11T12:13:14.015Z | M | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | F | 2019-02-15T00:00:00.000Z |
+| | cccccc | 2019-02-11T12:13:14.015Z | Mo | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Fr | 2019-02-15T00:00:00.000Z |
+| AM, PM | a | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | aa | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | aaa | 2019-02-11T11:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | aaaa | 2019-02-11T11:13:14.015Z | a.m. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | p.m. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | p.m. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | a.m. | 2019-02-11T00:00:00.000Z |
+| | aaaaa | 2019-02-11T11:13:14.015Z | a | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | p | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | p | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | a | 2019-02-11T00:00:00.000Z |
+| AM, PM, noon, midnight | b | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | bb | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | bbb | 2019-02-11T11:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | bbbb | 2019-02-11T11:13:14.015Z | a.m. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | p.m. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | p.m. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | a.m. | 2019-02-11T00:00:00.000Z |
+| | bbbbb | 2019-02-11T11:13:14.015Z | a | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | p | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | p | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | a | 2019-02-11T00:00:00.000Z |
+| Flexible day period | B | 2019-02-11T11:13:14.015Z | in the morning | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | in the afternoon | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | in the evening | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | at night | 2019-02-11T00:00:00.000Z |
+| | BB | 2019-02-11T11:13:14.015Z | in the morning | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | in the afternoon | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | in the evening | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | at night | 2019-02-11T00:00:00.000Z |
+| | BBB | 2019-02-11T11:13:14.015Z | in the morning | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | in the afternoon | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | in the evening | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | at night | 2019-02-11T00:00:00.000Z |
+| | BBBB | 2019-02-11T11:13:14.015Z | in the morning | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | in the afternoon | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | in the evening | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | at night | 2019-02-11T00:00:00.000Z |
+| | BBBBB | 2019-02-11T11:13:14.015Z | in the morning | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | in the afternoon | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | in the evening | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | at night | Invalid Date |
+| Hour [1-12] | ho | 2019-02-11T11:13:14.015Z | 11th | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11th | 2019-02-11T23:00:00.000Z |
+| Hour [0-23] | Ho | 2019-02-11T11:13:14.015Z | 11th | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23rd | 2019-02-11T23:00:00.000Z |
+| Hour [0-11] | Ko | 2019-02-11T11:13:14.015Z | 11th | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11th | 2019-02-11T23:00:00.000Z |
+| Hour [1-24] | ko | 2019-02-11T11:13:14.015Z | 11th | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23rd | 2019-02-11T23:00:00.000Z |
+| Minute | mo | 2019-01-01T12:01:14.015Z | 1st | 2019-01-01T12:01:00.000Z |
+| | | 2019-04-01T12:55:14.015Z | 55th | 2019-04-01T12:55:00.000Z |
+| Second | so | 2019-01-01T12:13:01.015Z | 1st | 2019-01-01T12:13:01.000Z |
+| | | 2019-04-01T12:13:55.015Z | 55th | 2019-04-01T12:13:55.000Z |
+| Long localized date | P | 1987-02-11T12:13:14.015Z | 1987-02-11 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 1453-05-29 | 1453-05-29T00:00:00.000Z |
+| | PP | 1987-02-11T12:13:14.015Z | Feb 11, 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | May 29, 1453 | 1453-05-29T00:00:00.000Z |
+| | PPP | 1987-02-11T12:13:14.015Z | February 11th, 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | May 29th, 1453 | 1453-05-29T00:00:00.000Z |
+| | PPPP | 1987-02-11T12:13:14.015Z | Wednesday, February 11th, 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | Sunday, May 29th, 1453 | 1453-05-29T00:00:00.000Z |
+| Long localized time | p | 1987-02-11T12:13:14.015Z | 12:13 PM | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 11:59 PM | 1453-05-29T23:59:00.000Z |
+| | pp | 1987-02-11T12:13:14.015Z | 12:13:14 PM | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 11:59:59 PM | 1453-05-29T23:59:59.000Z |
+| | ppp | 1987-02-11T12:13:14.015Z | 12:13:14 PM GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 11:59:59 PM GMT+0 | Errored |
+| | pppp | 1987-02-11T12:13:14.015Z | 12:13:14 PM GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 11:59:59 PM GMT+00:00 | Errored |
+| Combination of date and time | Pp | 1987-02-11T12:13:14.015Z | 1987-02-11, 12:13 PM | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 1453-05-29, 11:59 PM | 1453-05-29T23:59:00.000Z |
+| | PPpp | 1987-02-11T12:13:14.015Z | Feb 11, 1987, 12:13:14 PM | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | May 29, 1453, 11:59:59 PM | 1453-05-29T23:59:59.000Z |
+| | PPPppp | 1987-02-11T12:13:14.015Z | February 11th, 1987 at 12:13:14 PM GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | May 29th, 1453 at 11:59:59 PM GMT+0 | Errored |
+| | PPPPpppp | 1987-02-11T12:13:14.015Z | Wednesday, February 11th, 1987 at 12:13:14 PM GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | Sunday, May 29th, 1453 at 11:59:59 PM GMT+00:00 | Errored |
+
+## `formatDistance`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `includeSeconds: true` | `addSuffix: true` |
+| ------------------------ | ------------------ | ---------------------- | ---------------------- |
+| 2006-01-01T00:00:00.000Z | about 6 years | about 6 years | in about 6 years |
+| 2005-01-01T00:00:00.000Z | about 5 years | about 5 years | in about 5 years |
+| 2004-01-01T00:00:00.000Z | about 4 years | about 4 years | in about 4 years |
+| 2003-01-01T00:00:00.000Z | about 3 years | about 3 years | in about 3 years |
+| 2002-01-01T00:00:00.000Z | about 2 years | about 2 years | in about 2 years |
+| 2001-06-01T00:00:00.000Z | over a year | over a year | in over a year |
+| 2001-02-01T00:00:00.000Z | about a year | about a year | in about a year |
+| 2001-01-01T00:00:00.000Z | about a year | about a year | in about a year |
+| 2000-06-01T00:00:00.000Z | 5 months | 5 months | in 5 months |
+| 2000-03-01T00:00:00.000Z | 2 months | 2 months | in 2 months |
+| 2000-02-01T00:00:00.000Z | about a month | about a month | in about a month |
+| 2000-01-15T00:00:00.000Z | 14 days | 14 days | in 14 days |
+| 2000-01-02T00:00:00.000Z | a day | a day | in a day |
+| 2000-01-01T06:00:00.000Z | about 6 hours | about 6 hours | in about 6 hours |
+| 2000-01-01T01:00:00.000Z | about an hour | about an hour | in about an hour |
+| 2000-01-01T00:45:00.000Z | about an hour | about an hour | in about an hour |
+| 2000-01-01T00:30:00.000Z | 30 minutes | 30 minutes | in 30 minutes |
+| 2000-01-01T00:15:00.000Z | 15 minutes | 15 minutes | in 15 minutes |
+| 2000-01-01T00:01:00.000Z | a minute | a minute | in a minute |
+| 2000-01-01T00:00:25.000Z | less than a minute | half a minute | in less than a minute |
+| 2000-01-01T00:00:15.000Z | less than a minute | less than 20 seconds | in less than a minute |
+| 2000-01-01T00:00:05.000Z | less than a minute | less than 10 seconds | in less than a minute |
+| 2000-01-01T00:00:00.000Z | less than a minute | less than 5 seconds | less than a minute ago |
+| 1999-12-31T23:59:55.000Z | less than a minute | less than 10 seconds | less than a minute ago |
+| 1999-12-31T23:59:45.000Z | less than a minute | less than 20 seconds | less than a minute ago |
+| 1999-12-31T23:59:35.000Z | less than a minute | half a minute | less than a minute ago |
+| 1999-12-31T23:59:00.000Z | a minute | a minute | a minute ago |
+| 1999-12-31T23:45:00.000Z | 15 minutes | 15 minutes | 15 minutes ago |
+| 1999-12-31T23:30:00.000Z | 30 minutes | 30 minutes | 30 minutes ago |
+| 1999-12-31T23:15:00.000Z | about an hour | about an hour | about an hour ago |
+| 1999-12-31T23:00:00.000Z | about an hour | about an hour | about an hour ago |
+| 1999-12-31T18:00:00.000Z | about 6 hours | about 6 hours | about 6 hours ago |
+| 1999-12-30T00:00:00.000Z | 2 days | 2 days | 2 days ago |
+| 1999-12-15T00:00:00.000Z | 17 days | 17 days | 17 days ago |
+| 1999-12-01T00:00:00.000Z | about a month | about a month | about a month ago |
+| 1999-11-01T00:00:00.000Z | 2 months | 2 months | 2 months ago |
+| 1999-06-01T00:00:00.000Z | 7 months | 7 months | 7 months ago |
+| 1999-01-01T00:00:00.000Z | about a year | about a year | about a year ago |
+| 1998-12-01T00:00:00.000Z | about a year | about a year | about a year ago |
+| 1998-06-01T00:00:00.000Z | over a year | over a year | over a year ago |
+| 1998-01-01T00:00:00.000Z | about 2 years | about 2 years | about 2 years ago |
+| 1997-01-01T00:00:00.000Z | about 3 years | about 3 years | about 3 years ago |
+| 1996-01-01T00:00:00.000Z | about 4 years | about 4 years | about 4 years ago |
+| 1995-01-01T00:00:00.000Z | about 5 years | about 5 years | about 5 years ago |
+| 1994-01-01T00:00:00.000Z | about 6 years | about 6 years | about 6 years ago |
+
+## `formatDistanceStrict`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `addSuffix: true` | With forced unit (i.e. `hour`) |
+| ------------------------ | ---------- | ----------------- | ------------------------------ |
+| 2006-01-01T00:00:00.000Z | 6 years | in 6 years | 52608 hours |
+| 2005-01-01T00:00:00.000Z | 5 years | in 5 years | 43848 hours |
+| 2004-01-01T00:00:00.000Z | 4 years | in 4 years | 35064 hours |
+| 2003-01-01T00:00:00.000Z | 3 years | in 3 years | 26304 hours |
+| 2002-01-01T00:00:00.000Z | 2 years | in 2 years | 17544 hours |
+| 2001-06-01T00:00:00.000Z | a year | in a year | 12408 hours |
+| 2001-02-01T00:00:00.000Z | a year | in a year | 9528 hours |
+| 2001-01-01T00:00:00.000Z | a year | in a year | 8784 hours |
+| 2000-06-01T00:00:00.000Z | 5 months | in 5 months | 3648 hours |
+| 2000-03-01T00:00:00.000Z | 2 months | in 2 months | 1440 hours |
+| 2000-02-01T00:00:00.000Z | a month | in a month | 744 hours |
+| 2000-01-15T00:00:00.000Z | 14 days | in 14 days | 336 hours |
+| 2000-01-02T00:00:00.000Z | a day | in a day | 24 hours |
+| 2000-01-01T06:00:00.000Z | 6 hours | in 6 hours | 6 hours |
+| 2000-01-01T01:00:00.000Z | an hour | in an hour | an hour |
+| 2000-01-01T00:45:00.000Z | 45 minutes | in 45 minutes | an hour |
+| 2000-01-01T00:30:00.000Z | 30 minutes | in 30 minutes | an hour |
+| 2000-01-01T00:15:00.000Z | 15 minutes | in 15 minutes | 0 hours |
+| 2000-01-01T00:01:00.000Z | a minute | in a minute | 0 hours |
+| 2000-01-01T00:00:25.000Z | 25 seconds | in 25 seconds | 0 hours |
+| 2000-01-01T00:00:15.000Z | 15 seconds | in 15 seconds | 0 hours |
+| 2000-01-01T00:00:05.000Z | 5 seconds | in 5 seconds | 0 hours |
+| 2000-01-01T00:00:00.000Z | 0 seconds | 0 seconds ago | 0 hours |
+| 1999-12-31T23:59:55.000Z | 5 seconds | 5 seconds ago | 0 hours |
+| 1999-12-31T23:59:45.000Z | 15 seconds | 15 seconds ago | 0 hours |
+| 1999-12-31T23:59:35.000Z | 25 seconds | 25 seconds ago | 0 hours |
+| 1999-12-31T23:59:00.000Z | a minute | a minute ago | 0 hours |
+| 1999-12-31T23:45:00.000Z | 15 minutes | 15 minutes ago | 0 hours |
+| 1999-12-31T23:30:00.000Z | 30 minutes | 30 minutes ago | an hour |
+| 1999-12-31T23:15:00.000Z | 45 minutes | 45 minutes ago | an hour |
+| 1999-12-31T23:00:00.000Z | an hour | an hour ago | an hour |
+| 1999-12-31T18:00:00.000Z | 6 hours | 6 hours ago | 6 hours |
+| 1999-12-30T00:00:00.000Z | 2 days | 2 days ago | 48 hours |
+| 1999-12-15T00:00:00.000Z | 17 days | 17 days ago | 408 hours |
+| 1999-12-01T00:00:00.000Z | a month | a month ago | 744 hours |
+| 1999-11-01T00:00:00.000Z | 2 months | 2 months ago | 1464 hours |
+| 1999-06-01T00:00:00.000Z | 7 months | 7 months ago | 5136 hours |
+| 1999-01-01T00:00:00.000Z | a year | a year ago | 8760 hours |
+| 1998-12-01T00:00:00.000Z | a year | a year ago | 9504 hours |
+| 1998-06-01T00:00:00.000Z | 2 years | 2 years ago | 13896 hours |
+| 1998-01-01T00:00:00.000Z | 2 years | 2 years ago | 17520 hours |
+| 1997-01-01T00:00:00.000Z | 3 years | 3 years ago | 26280 hours |
+| 1996-01-01T00:00:00.000Z | 4 years | 4 years ago | 35064 hours |
+| 1995-01-01T00:00:00.000Z | 5 years | 5 years ago | 43824 hours |
+| 1994-01-01T00:00:00.000Z | 6 years | 6 years ago | 52584 hours |
+
+## `formatRelative`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result |
+| ------------------------ | ----------------------- |
+| 2000-01-10T00:00:00.000Z | 2000-01-10 |
+| 2000-01-05T00:00:00.000Z | Wednesday at 12:00 AM |
+| 2000-01-02T00:00:00.000Z | tomorrow at 12:00 AM |
+| 2000-01-01T00:00:00.000Z | today at 12:00 AM |
+| 1999-12-31T00:00:00.000Z | yesterday at 12:00 AM |
+| 1999-12-27T00:00:00.000Z | last Monday at 12:00 AM |
+| 1999-12-21T00:00:00.000Z | 1999-12-21 |
diff --git a/date-fns/src/locale/en-GB/_lib/formatLong/index.js b/date-fns/src/locale/en-GB/_lib/formatLong/index.js
new file mode 100644
index 0000000..1dc1837
--- /dev/null
+++ b/date-fns/src/locale/en-GB/_lib/formatLong/index.js
@@ -0,0 +1,41 @@
+import buildFormatLongFn from '../../../_lib/buildFormatLongFn/index'
+
+var dateFormats = {
+ full: 'EEEE, d MMMM yyyy',
+ long: 'd MMMM yyyy',
+ medium: 'd MMM yyyy',
+ short: 'dd/MM/yyyy'
+}
+
+var timeFormats = {
+ full: 'HH:mm:ss zzzz',
+ long: 'HH:mm:ss z',
+ medium: 'HH:mm:ss',
+ short: 'HH:mm'
+}
+
+var dateTimeFormats = {
+ full: "{{date}} 'at' {{time}}",
+ long: "{{date}} 'at' {{time}}",
+ medium: '{{date}}, {{time}}',
+ short: '{{date}}, {{time}}'
+}
+
+var formatLong = {
+ date: buildFormatLongFn({
+ formats: dateFormats,
+ defaultWidth: 'full'
+ }),
+
+ time: buildFormatLongFn({
+ formats: timeFormats,
+ defaultWidth: 'full'
+ }),
+
+ dateTime: buildFormatLongFn({
+ formats: dateTimeFormats,
+ defaultWidth: 'full'
+ })
+}
+
+export default formatLong
diff --git a/date-fns/src/locale/en-GB/index.d.ts b/date-fns/src/locale/en-GB/index.d.ts
new file mode 100644
index 0000000..74fc784
--- /dev/null
+++ b/date-fns/src/locale/en-GB/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { enGB } from 'date-fns/locale'
+export default enGB
diff --git a/date-fns/src/locale/en-GB/index.js b/date-fns/src/locale/en-GB/index.js
new file mode 100644
index 0000000..1ab0ea0
--- /dev/null
+++ b/date-fns/src/locale/en-GB/index.js
@@ -0,0 +1,28 @@
+import formatDistance from '../en-US/_lib/formatDistance/index'
+import formatLong from './_lib/formatLong/index'
+import formatRelative from '../en-US/_lib/formatRelative/index'
+import localize from '../en-US/_lib/localize/index'
+import match from '../en-US/_lib/match/index'
+
+/**
+ * @type {Locale}
+ * @category Locales
+ * @summary English locale (United Kingdom).
+ * @language English
+ * @iso-639-2 eng
+ * @author Alex [@glintik]{@link https://github.com/glintik}
+ */
+var locale = {
+ code: 'en-GB',
+ formatDistance: formatDistance,
+ formatLong: formatLong,
+ formatRelative: formatRelative,
+ localize: localize,
+ match: match,
+ options: {
+ weekStartsOn: 1 /* Monday */,
+ firstWeekContainsDate: 4
+ }
+}
+
+export default locale
diff --git a/date-fns/src/locale/en-GB/index.js.flow b/date-fns/src/locale/en-GB/index.js.flow
new file mode 100644
index 0000000..b9dfe66
--- /dev/null
+++ b/date-fns/src/locale/en-GB/index.js.flow
@@ -0,0 +1,35 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+declare module.exports: Locale
diff --git a/date-fns/src/locale/en-GB/snapshot.md b/date-fns/src/locale/en-GB/snapshot.md
new file mode 100644
index 0000000..934e28d
--- /dev/null
+++ b/date-fns/src/locale/en-GB/snapshot.md
@@ -0,0 +1,304 @@
+# English (en-GB) locale
+
+## `format` and `parse`
+
+| Title | Token string | Date | `format` result | `parse` result |
+| ------------------------------- | ------------ | ------------------------ | ------------------------------------------------- | ------------------------ |
+| Calendar year | yo | 1987-02-11T12:13:14.015Z | 1987th | 1987-01-01T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 5th | 0005-01-01T00:00:00.000Z |
+| Local week-numbering year | Yo | 1987-02-11T12:13:14.015Z | 1987th | 1986-12-29T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 4th | 0003-12-29T00:00:00.000Z |
+| Quarter (formatting) | Qo | 2019-01-01T12:13:14.015Z | 1st | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2nd | 2019-04-01T00:00:00.000Z |
+| | QQQ | 2019-01-01T12:13:14.015Z | Q1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | Q2 | 2019-04-01T00:00:00.000Z |
+| | QQQQ | 2019-01-01T12:13:14.015Z | 1st quarter | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2nd quarter | 2019-04-01T00:00:00.000Z |
+| | QQQQQ | 2019-01-01T12:13:14.015Z | 1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2 | 2019-04-01T00:00:00.000Z |
+| Quarter (stand-alone) | qo | 2019-01-01T12:13:14.015Z | 1st | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2nd | 2019-04-01T00:00:00.000Z |
+| | qqq | 2019-01-01T12:13:14.015Z | Q1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | Q2 | 2019-04-01T00:00:00.000Z |
+| | qqqq | 2019-01-01T12:13:14.015Z | 1st quarter | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2nd quarter | 2019-04-01T00:00:00.000Z |
+| Month (formatting) | Mo | 2019-02-11T12:13:14.015Z | 2nd | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7th | 2019-07-01T00:00:00.000Z |
+| | MMM | 2019-02-11T12:13:14.015Z | Feb | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | Jul | 2019-07-01T00:00:00.000Z |
+| | MMMM | 2019-02-11T12:13:14.015Z | February | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | July | 2019-07-01T00:00:00.000Z |
+| | MMMMM | 2019-02-11T12:13:14.015Z | F | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | J | 2019-01-01T00:00:00.000Z |
+| Month (stand-alone) | Lo | 2019-02-11T12:13:14.015Z | 2nd | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7th | 2019-07-01T00:00:00.000Z |
+| | LLL | 2019-02-11T12:13:14.015Z | Feb | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | Jul | 2019-07-01T00:00:00.000Z |
+| | LLLL | 2019-02-11T12:13:14.015Z | February | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | July | 2019-07-01T00:00:00.000Z |
+| | LLLLL | 2019-02-11T12:13:14.015Z | F | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | J | 2019-01-01T00:00:00.000Z |
+| Local week of year | wo | 2019-01-01T12:13:14.015Z | 1st | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48th | 2019-11-25T00:00:00.000Z |
+| ISO week of year | Io | 2019-01-01T12:13:14.015Z | 1st | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48th | 2019-11-25T00:00:00.000Z |
+| Day of month | do | 2019-02-11T12:13:14.015Z | 11th | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-28T12:13:14.015Z | 28th | 2019-02-28T00:00:00.000Z |
+| Day of year | Do | 2019-02-11T12:13:14.015Z | 42nd | 2019-02-11T00:00:00.000Z |
+| | | 2019-12-31T12:13:14.015Z | 365th | 2019-12-31T00:00:00.000Z |
+| Day of week (formatting) | E | 2019-02-11T12:13:14.015Z | Mon | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Fri | 2019-02-15T00:00:00.000Z |
+| | EE | 2019-02-11T12:13:14.015Z | Mon | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Fri | 2019-02-15T00:00:00.000Z |
+| | EEE | 2019-02-11T12:13:14.015Z | Mon | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Fri | 2019-02-15T00:00:00.000Z |
+| | EEEE | 2019-02-11T12:13:14.015Z | Monday | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Friday | 2019-02-15T00:00:00.000Z |
+| | EEEEE | 2019-02-11T12:13:14.015Z | M | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | F | 2019-02-15T00:00:00.000Z |
+| | EEEEEE | 2019-02-11T12:13:14.015Z | Mo | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Fr | 2019-02-15T00:00:00.000Z |
+| ISO day of week (formatting) | io | 2019-02-11T12:13:14.015Z | 1st | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5th | 2019-02-15T00:00:00.000Z |
+| | iii | 2019-02-11T12:13:14.015Z | Mon | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Fri | 2019-02-15T00:00:00.000Z |
+| | iiii | 2019-02-11T12:13:14.015Z | Monday | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Friday | 2019-02-15T00:00:00.000Z |
+| | iiiii | 2019-02-11T12:13:14.015Z | M | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | F | 2019-02-15T00:00:00.000Z |
+| | iiiiii | 2019-02-11T12:13:14.015Z | Mo | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Fr | 2019-02-15T00:00:00.000Z |
+| Local day of week (formatting) | eo | 2019-02-11T12:13:14.015Z | 1st | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5th | 2019-02-15T00:00:00.000Z |
+| | eee | 2019-02-11T12:13:14.015Z | Mon | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Fri | 2019-02-15T00:00:00.000Z |
+| | eeee | 2019-02-11T12:13:14.015Z | Monday | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Friday | 2019-02-15T00:00:00.000Z |
+| | eeeee | 2019-02-11T12:13:14.015Z | M | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | F | 2019-02-15T00:00:00.000Z |
+| | eeeeee | 2019-02-11T12:13:14.015Z | Mo | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Fr | 2019-02-15T00:00:00.000Z |
+| Local day of week (stand-alone) | co | 2019-02-11T12:13:14.015Z | 1st | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5th | 2019-02-15T00:00:00.000Z |
+| | ccc | 2019-02-11T12:13:14.015Z | Mon | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Fri | 2019-02-15T00:00:00.000Z |
+| | cccc | 2019-02-11T12:13:14.015Z | Monday | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Friday | 2019-02-15T00:00:00.000Z |
+| | ccccc | 2019-02-11T12:13:14.015Z | M | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | F | 2019-02-15T00:00:00.000Z |
+| | cccccc | 2019-02-11T12:13:14.015Z | Mo | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Fr | 2019-02-15T00:00:00.000Z |
+| AM, PM | a | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | aa | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | aaa | 2019-02-11T11:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | aaaa | 2019-02-11T11:13:14.015Z | a.m. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | p.m. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | p.m. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | a.m. | 2019-02-11T00:00:00.000Z |
+| | aaaaa | 2019-02-11T11:13:14.015Z | a | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | p | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | p | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | a | 2019-02-11T00:00:00.000Z |
+| AM, PM, noon, midnight | b | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | bb | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | bbb | 2019-02-11T11:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | bbbb | 2019-02-11T11:13:14.015Z | a.m. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | p.m. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | p.m. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | a.m. | 2019-02-11T00:00:00.000Z |
+| | bbbbb | 2019-02-11T11:13:14.015Z | a | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | p | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | p | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | a | 2019-02-11T00:00:00.000Z |
+| Flexible day period | B | 2019-02-11T11:13:14.015Z | in the morning | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | in the afternoon | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | in the evening | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | at night | 2019-02-11T00:00:00.000Z |
+| | BB | 2019-02-11T11:13:14.015Z | in the morning | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | in the afternoon | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | in the evening | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | at night | 2019-02-11T00:00:00.000Z |
+| | BBB | 2019-02-11T11:13:14.015Z | in the morning | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | in the afternoon | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | in the evening | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | at night | 2019-02-11T00:00:00.000Z |
+| | BBBB | 2019-02-11T11:13:14.015Z | in the morning | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | in the afternoon | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | in the evening | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | at night | 2019-02-11T00:00:00.000Z |
+| | BBBBB | 2019-02-11T11:13:14.015Z | in the morning | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | in the afternoon | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | in the evening | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | at night | Invalid Date |
+| Hour [1-12] | ho | 2019-02-11T11:13:14.015Z | 11th | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11th | 2019-02-11T23:00:00.000Z |
+| Hour [0-23] | Ho | 2019-02-11T11:13:14.015Z | 11th | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23rd | 2019-02-11T23:00:00.000Z |
+| Hour [0-11] | Ko | 2019-02-11T11:13:14.015Z | 11th | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11th | 2019-02-11T23:00:00.000Z |
+| Hour [1-24] | ko | 2019-02-11T11:13:14.015Z | 11th | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23rd | 2019-02-11T23:00:00.000Z |
+| Minute | mo | 2019-01-01T12:01:14.015Z | 1st | 2019-01-01T12:01:00.000Z |
+| | | 2019-04-01T12:55:14.015Z | 55th | 2019-04-01T12:55:00.000Z |
+| Second | so | 2019-01-01T12:13:01.015Z | 1st | 2019-01-01T12:13:01.000Z |
+| | | 2019-04-01T12:13:55.015Z | 55th | 2019-04-01T12:13:55.000Z |
+| Long localized date | P | 1987-02-11T12:13:14.015Z | 11/02/1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29/05/1453 | 1453-05-29T00:00:00.000Z |
+| | PP | 1987-02-11T12:13:14.015Z | 11 Feb 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 May 1453 | 1453-05-29T00:00:00.000Z |
+| | PPP | 1987-02-11T12:13:14.015Z | 11 February 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 May 1453 | 1453-05-29T00:00:00.000Z |
+| | PPPP | 1987-02-11T12:13:14.015Z | Wednesday, 11 February 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | Sunday, 29 May 1453 | 1453-05-29T00:00:00.000Z |
+| Long localized time | p | 1987-02-11T12:13:14.015Z | 12:13 | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 23:59 | 1453-05-29T23:59:00.000Z |
+| | pp | 1987-02-11T12:13:14.015Z | 12:13:14 | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 | 1453-05-29T23:59:59.000Z |
+| | ppp | 1987-02-11T12:13:14.015Z | 12:13:14 GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 GMT+0 | Errored |
+| | pppp | 1987-02-11T12:13:14.015Z | 12:13:14 GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 GMT+00:00 | Errored |
+| Combination of date and time | Pp | 1987-02-11T12:13:14.015Z | 11/02/1987, 12:13 | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29/05/1453, 23:59 | 1453-05-29T23:59:00.000Z |
+| | PPpp | 1987-02-11T12:13:14.015Z | 11 Feb 1987, 12:13:14 | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 May 1453, 23:59:59 | 1453-05-29T23:59:59.000Z |
+| | PPPppp | 1987-02-11T12:13:14.015Z | 11 February 1987 at 12:13:14 GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 29 May 1453 at 23:59:59 GMT+0 | Errored |
+| | PPPPpppp | 1987-02-11T12:13:14.015Z | Wednesday, 11 February 1987 at 12:13:14 GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | Sunday, 29 May 1453 at 23:59:59 GMT+00:00 | Errored |
+
+## `formatDistance`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `includeSeconds: true` | `addSuffix: true` |
+| ------------------------ | ------------------ | ---------------------- | ---------------------- |
+| 2006-01-01T00:00:00.000Z | about 6 years | about 6 years | in about 6 years |
+| 2005-01-01T00:00:00.000Z | about 5 years | about 5 years | in about 5 years |
+| 2004-01-01T00:00:00.000Z | about 4 years | about 4 years | in about 4 years |
+| 2003-01-01T00:00:00.000Z | about 3 years | about 3 years | in about 3 years |
+| 2002-01-01T00:00:00.000Z | about 2 years | about 2 years | in about 2 years |
+| 2001-06-01T00:00:00.000Z | over 1 year | over 1 year | in over 1 year |
+| 2001-02-01T00:00:00.000Z | about 1 year | about 1 year | in about 1 year |
+| 2001-01-01T00:00:00.000Z | about 1 year | about 1 year | in about 1 year |
+| 2000-06-01T00:00:00.000Z | 5 months | 5 months | in 5 months |
+| 2000-03-01T00:00:00.000Z | 2 months | 2 months | in 2 months |
+| 2000-02-01T00:00:00.000Z | about 1 month | about 1 month | in about 1 month |
+| 2000-01-15T00:00:00.000Z | 14 days | 14 days | in 14 days |
+| 2000-01-02T00:00:00.000Z | 1 day | 1 day | in 1 day |
+| 2000-01-01T06:00:00.000Z | about 6 hours | about 6 hours | in about 6 hours |
+| 2000-01-01T01:00:00.000Z | about 1 hour | about 1 hour | in about 1 hour |
+| 2000-01-01T00:45:00.000Z | about 1 hour | about 1 hour | in about 1 hour |
+| 2000-01-01T00:30:00.000Z | 30 minutes | 30 minutes | in 30 minutes |
+| 2000-01-01T00:15:00.000Z | 15 minutes | 15 minutes | in 15 minutes |
+| 2000-01-01T00:01:00.000Z | 1 minute | 1 minute | in 1 minute |
+| 2000-01-01T00:00:25.000Z | less than a minute | half a minute | in less than a minute |
+| 2000-01-01T00:00:15.000Z | less than a minute | less than 20 seconds | in less than a minute |
+| 2000-01-01T00:00:05.000Z | less than a minute | less than 10 seconds | in less than a minute |
+| 2000-01-01T00:00:00.000Z | less than a minute | less than 5 seconds | less than a minute ago |
+| 1999-12-31T23:59:55.000Z | less than a minute | less than 10 seconds | less than a minute ago |
+| 1999-12-31T23:59:45.000Z | less than a minute | less than 20 seconds | less than a minute ago |
+| 1999-12-31T23:59:35.000Z | less than a minute | half a minute | less than a minute ago |
+| 1999-12-31T23:59:00.000Z | 1 minute | 1 minute | 1 minute ago |
+| 1999-12-31T23:45:00.000Z | 15 minutes | 15 minutes | 15 minutes ago |
+| 1999-12-31T23:30:00.000Z | 30 minutes | 30 minutes | 30 minutes ago |
+| 1999-12-31T23:15:00.000Z | about 1 hour | about 1 hour | about 1 hour ago |
+| 1999-12-31T23:00:00.000Z | about 1 hour | about 1 hour | about 1 hour ago |
+| 1999-12-31T18:00:00.000Z | about 6 hours | about 6 hours | about 6 hours ago |
+| 1999-12-30T00:00:00.000Z | 2 days | 2 days | 2 days ago |
+| 1999-12-15T00:00:00.000Z | 17 days | 17 days | 17 days ago |
+| 1999-12-01T00:00:00.000Z | about 1 month | about 1 month | about 1 month ago |
+| 1999-11-01T00:00:00.000Z | 2 months | 2 months | 2 months ago |
+| 1999-06-01T00:00:00.000Z | 7 months | 7 months | 7 months ago |
+| 1999-01-01T00:00:00.000Z | about 1 year | about 1 year | about 1 year ago |
+| 1998-12-01T00:00:00.000Z | about 1 year | about 1 year | about 1 year ago |
+| 1998-06-01T00:00:00.000Z | over 1 year | over 1 year | over 1 year ago |
+| 1998-01-01T00:00:00.000Z | about 2 years | about 2 years | about 2 years ago |
+| 1997-01-01T00:00:00.000Z | about 3 years | about 3 years | about 3 years ago |
+| 1996-01-01T00:00:00.000Z | about 4 years | about 4 years | about 4 years ago |
+| 1995-01-01T00:00:00.000Z | about 5 years | about 5 years | about 5 years ago |
+| 1994-01-01T00:00:00.000Z | about 6 years | about 6 years | about 6 years ago |
+
+## `formatDistanceStrict`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `addSuffix: true` | With forced unit (i.e. `hour`) |
+| ------------------------ | ---------- | ----------------- | ------------------------------ |
+| 2006-01-01T00:00:00.000Z | 6 years | in 6 years | 52608 hours |
+| 2005-01-01T00:00:00.000Z | 5 years | in 5 years | 43848 hours |
+| 2004-01-01T00:00:00.000Z | 4 years | in 4 years | 35064 hours |
+| 2003-01-01T00:00:00.000Z | 3 years | in 3 years | 26304 hours |
+| 2002-01-01T00:00:00.000Z | 2 years | in 2 years | 17544 hours |
+| 2001-06-01T00:00:00.000Z | 1 year | in 1 year | 12408 hours |
+| 2001-02-01T00:00:00.000Z | 1 year | in 1 year | 9528 hours |
+| 2001-01-01T00:00:00.000Z | 1 year | in 1 year | 8784 hours |
+| 2000-06-01T00:00:00.000Z | 5 months | in 5 months | 3648 hours |
+| 2000-03-01T00:00:00.000Z | 2 months | in 2 months | 1440 hours |
+| 2000-02-01T00:00:00.000Z | 1 month | in 1 month | 744 hours |
+| 2000-01-15T00:00:00.000Z | 14 days | in 14 days | 336 hours |
+| 2000-01-02T00:00:00.000Z | 1 day | in 1 day | 24 hours |
+| 2000-01-01T06:00:00.000Z | 6 hours | in 6 hours | 6 hours |
+| 2000-01-01T01:00:00.000Z | 1 hour | in 1 hour | 1 hour |
+| 2000-01-01T00:45:00.000Z | 45 minutes | in 45 minutes | 1 hour |
+| 2000-01-01T00:30:00.000Z | 30 minutes | in 30 minutes | 1 hour |
+| 2000-01-01T00:15:00.000Z | 15 minutes | in 15 minutes | 0 hours |
+| 2000-01-01T00:01:00.000Z | 1 minute | in 1 minute | 0 hours |
+| 2000-01-01T00:00:25.000Z | 25 seconds | in 25 seconds | 0 hours |
+| 2000-01-01T00:00:15.000Z | 15 seconds | in 15 seconds | 0 hours |
+| 2000-01-01T00:00:05.000Z | 5 seconds | in 5 seconds | 0 hours |
+| 2000-01-01T00:00:00.000Z | 0 seconds | 0 seconds ago | 0 hours |
+| 1999-12-31T23:59:55.000Z | 5 seconds | 5 seconds ago | 0 hours |
+| 1999-12-31T23:59:45.000Z | 15 seconds | 15 seconds ago | 0 hours |
+| 1999-12-31T23:59:35.000Z | 25 seconds | 25 seconds ago | 0 hours |
+| 1999-12-31T23:59:00.000Z | 1 minute | 1 minute ago | 0 hours |
+| 1999-12-31T23:45:00.000Z | 15 minutes | 15 minutes ago | 0 hours |
+| 1999-12-31T23:30:00.000Z | 30 minutes | 30 minutes ago | 1 hour |
+| 1999-12-31T23:15:00.000Z | 45 minutes | 45 minutes ago | 1 hour |
+| 1999-12-31T23:00:00.000Z | 1 hour | 1 hour ago | 1 hour |
+| 1999-12-31T18:00:00.000Z | 6 hours | 6 hours ago | 6 hours |
+| 1999-12-30T00:00:00.000Z | 2 days | 2 days ago | 48 hours |
+| 1999-12-15T00:00:00.000Z | 17 days | 17 days ago | 408 hours |
+| 1999-12-01T00:00:00.000Z | 1 month | 1 month ago | 744 hours |
+| 1999-11-01T00:00:00.000Z | 2 months | 2 months ago | 1464 hours |
+| 1999-06-01T00:00:00.000Z | 7 months | 7 months ago | 5136 hours |
+| 1999-01-01T00:00:00.000Z | 1 year | 1 year ago | 8760 hours |
+| 1998-12-01T00:00:00.000Z | 1 year | 1 year ago | 9504 hours |
+| 1998-06-01T00:00:00.000Z | 2 years | 2 years ago | 13896 hours |
+| 1998-01-01T00:00:00.000Z | 2 years | 2 years ago | 17520 hours |
+| 1997-01-01T00:00:00.000Z | 3 years | 3 years ago | 26280 hours |
+| 1996-01-01T00:00:00.000Z | 4 years | 4 years ago | 35064 hours |
+| 1995-01-01T00:00:00.000Z | 5 years | 5 years ago | 43824 hours |
+| 1994-01-01T00:00:00.000Z | 6 years | 6 years ago | 52584 hours |
+
+## `formatRelative`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result |
+| ------------------------ | -------------------- |
+| 2000-01-10T00:00:00.000Z | 10/01/2000 |
+| 2000-01-05T00:00:00.000Z | Wednesday at 00:00 |
+| 2000-01-02T00:00:00.000Z | tomorrow at 00:00 |
+| 2000-01-01T00:00:00.000Z | today at 00:00 |
+| 1999-12-31T00:00:00.000Z | yesterday at 00:00 |
+| 1999-12-27T00:00:00.000Z | last Monday at 00:00 |
+| 1999-12-21T00:00:00.000Z | 21/12/1999 |
diff --git a/date-fns/src/locale/en-IN/_lib/formatLong/index.js b/date-fns/src/locale/en-IN/_lib/formatLong/index.js
new file mode 100644
index 0000000..70aa51c
--- /dev/null
+++ b/date-fns/src/locale/en-IN/_lib/formatLong/index.js
@@ -0,0 +1,41 @@
+import buildFormatLongFn from '../../../_lib/buildFormatLongFn/index'
+
+var dateFormats = {
+ full: 'EEEE, d MMMM yyyy',
+ long: 'd MMMM, yyyy',
+ medium: 'd MMM, yyyy',
+ short: 'dd/MM/yyyy'
+}
+
+var timeFormats = {
+ full: 'h:mm:ss a zzzz',
+ long: 'h:mm:ss a z',
+ medium: 'h:mm:ss a',
+ short: 'h:mm a'
+}
+
+var dateTimeFormats = {
+ full: "{{date}} 'at' {{time}}",
+ long: "{{date}} 'at' {{time}}",
+ medium: '{{date}}, {{time}}',
+ short: '{{date}}, {{time}}'
+}
+
+var formatLong = {
+ date: buildFormatLongFn({
+ formats: dateFormats,
+ defaultWidth: 'full'
+ }),
+
+ time: buildFormatLongFn({
+ formats: timeFormats,
+ defaultWidth: 'full'
+ }),
+
+ dateTime: buildFormatLongFn({
+ formats: dateTimeFormats,
+ defaultWidth: 'full'
+ })
+}
+
+export default formatLong
diff --git a/date-fns/src/locale/en-IN/index.d.ts b/date-fns/src/locale/en-IN/index.d.ts
new file mode 100644
index 0000000..a1fc542
--- /dev/null
+++ b/date-fns/src/locale/en-IN/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { enIN } from 'date-fns/locale'
+export default enIN
diff --git a/date-fns/src/locale/en-IN/index.js b/date-fns/src/locale/en-IN/index.js
new file mode 100644
index 0000000..6ddfbcf
--- /dev/null
+++ b/date-fns/src/locale/en-IN/index.js
@@ -0,0 +1,28 @@
+import formatDistance from '../en-US/_lib/formatDistance/index'
+import formatLong from './_lib/formatLong/index'
+import formatRelative from '../en-US/_lib/formatRelative/index'
+import localize from '../en-US/_lib/localize/index'
+import match from '../en-US/_lib/match/index'
+
+/**
+ * @type {Locale}
+ * @category Locales
+ * @summary English locale (India).
+ * @language English
+ * @iso-639-2 eng
+ * @author Galeel Bhasha Satthar [@gbhasha]{@link https://github.com/gbhasha}
+ */
+var locale = {
+ code: 'en-IN',
+ formatDistance: formatDistance,
+ formatLong: formatLong,
+ formatRelative: formatRelative,
+ localize: localize,
+ match: match,
+ options: {
+ weekStartsOn: 1, // Monday is the first day of the week.
+ firstWeekContainsDate: 4 // The week that contains Jan 4th is the first week of the year.
+ }
+}
+
+export default locale
diff --git a/date-fns/src/locale/en-IN/index.js.flow b/date-fns/src/locale/en-IN/index.js.flow
new file mode 100644
index 0000000..b9dfe66
--- /dev/null
+++ b/date-fns/src/locale/en-IN/index.js.flow
@@ -0,0 +1,35 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+declare module.exports: Locale
diff --git a/date-fns/src/locale/en-IN/snapshot.md b/date-fns/src/locale/en-IN/snapshot.md
new file mode 100644
index 0000000..d71ac5e
--- /dev/null
+++ b/date-fns/src/locale/en-IN/snapshot.md
@@ -0,0 +1,304 @@
+# English (en-IN) locale
+
+## `format` and `parse`
+
+| Title | Token string | Date | `format` result | `parse` result |
+| ------------------------------- | ------------ | ------------------------ | ---------------------------------------------------- | ------------------------ |
+| Calendar year | yo | 1987-02-11T12:13:14.015Z | 1987th | 1987-01-01T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 5th | 0005-01-01T00:00:00.000Z |
+| Local week-numbering year | Yo | 1987-02-11T12:13:14.015Z | 1987th | 1986-12-29T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 4th | 0003-12-29T00:00:00.000Z |
+| Quarter (formatting) | Qo | 2019-01-01T12:13:14.015Z | 1st | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2nd | 2019-04-01T00:00:00.000Z |
+| | QQQ | 2019-01-01T12:13:14.015Z | Q1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | Q2 | 2019-04-01T00:00:00.000Z |
+| | QQQQ | 2019-01-01T12:13:14.015Z | 1st quarter | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2nd quarter | 2019-04-01T00:00:00.000Z |
+| | QQQQQ | 2019-01-01T12:13:14.015Z | 1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2 | 2019-04-01T00:00:00.000Z |
+| Quarter (stand-alone) | qo | 2019-01-01T12:13:14.015Z | 1st | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2nd | 2019-04-01T00:00:00.000Z |
+| | qqq | 2019-01-01T12:13:14.015Z | Q1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | Q2 | 2019-04-01T00:00:00.000Z |
+| | qqqq | 2019-01-01T12:13:14.015Z | 1st quarter | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2nd quarter | 2019-04-01T00:00:00.000Z |
+| Month (formatting) | Mo | 2019-02-11T12:13:14.015Z | 2nd | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7th | 2019-07-01T00:00:00.000Z |
+| | MMM | 2019-02-11T12:13:14.015Z | Feb | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | Jul | 2019-07-01T00:00:00.000Z |
+| | MMMM | 2019-02-11T12:13:14.015Z | February | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | July | 2019-07-01T00:00:00.000Z |
+| | MMMMM | 2019-02-11T12:13:14.015Z | F | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | J | 2019-01-01T00:00:00.000Z |
+| Month (stand-alone) | Lo | 2019-02-11T12:13:14.015Z | 2nd | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7th | 2019-07-01T00:00:00.000Z |
+| | LLL | 2019-02-11T12:13:14.015Z | Feb | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | Jul | 2019-07-01T00:00:00.000Z |
+| | LLLL | 2019-02-11T12:13:14.015Z | February | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | July | 2019-07-01T00:00:00.000Z |
+| | LLLLL | 2019-02-11T12:13:14.015Z | F | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | J | 2019-01-01T00:00:00.000Z |
+| Local week of year | wo | 2019-01-01T12:13:14.015Z | 1st | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48th | 2019-11-25T00:00:00.000Z |
+| ISO week of year | Io | 2019-01-01T12:13:14.015Z | 1st | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48th | 2019-11-25T00:00:00.000Z |
+| Day of month | do | 2019-02-11T12:13:14.015Z | 11th | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-28T12:13:14.015Z | 28th | 2019-02-28T00:00:00.000Z |
+| Day of year | Do | 2019-02-11T12:13:14.015Z | 42nd | 2019-02-11T00:00:00.000Z |
+| | | 2019-12-31T12:13:14.015Z | 365th | 2019-12-31T00:00:00.000Z |
+| Day of week (formatting) | E | 2019-02-11T12:13:14.015Z | Mon | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Fri | 2019-02-15T00:00:00.000Z |
+| | EE | 2019-02-11T12:13:14.015Z | Mon | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Fri | 2019-02-15T00:00:00.000Z |
+| | EEE | 2019-02-11T12:13:14.015Z | Mon | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Fri | 2019-02-15T00:00:00.000Z |
+| | EEEE | 2019-02-11T12:13:14.015Z | Monday | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Friday | 2019-02-15T00:00:00.000Z |
+| | EEEEE | 2019-02-11T12:13:14.015Z | M | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | F | 2019-02-15T00:00:00.000Z |
+| | EEEEEE | 2019-02-11T12:13:14.015Z | Mo | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Fr | 2019-02-15T00:00:00.000Z |
+| ISO day of week (formatting) | io | 2019-02-11T12:13:14.015Z | 1st | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5th | 2019-02-15T00:00:00.000Z |
+| | iii | 2019-02-11T12:13:14.015Z | Mon | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Fri | 2019-02-15T00:00:00.000Z |
+| | iiii | 2019-02-11T12:13:14.015Z | Monday | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Friday | 2019-02-15T00:00:00.000Z |
+| | iiiii | 2019-02-11T12:13:14.015Z | M | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | F | 2019-02-15T00:00:00.000Z |
+| | iiiiii | 2019-02-11T12:13:14.015Z | Mo | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Fr | 2019-02-15T00:00:00.000Z |
+| Local day of week (formatting) | eo | 2019-02-11T12:13:14.015Z | 1st | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5th | 2019-02-15T00:00:00.000Z |
+| | eee | 2019-02-11T12:13:14.015Z | Mon | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Fri | 2019-02-15T00:00:00.000Z |
+| | eeee | 2019-02-11T12:13:14.015Z | Monday | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Friday | 2019-02-15T00:00:00.000Z |
+| | eeeee | 2019-02-11T12:13:14.015Z | M | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | F | 2019-02-15T00:00:00.000Z |
+| | eeeeee | 2019-02-11T12:13:14.015Z | Mo | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Fr | 2019-02-15T00:00:00.000Z |
+| Local day of week (stand-alone) | co | 2019-02-11T12:13:14.015Z | 1st | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5th | 2019-02-15T00:00:00.000Z |
+| | ccc | 2019-02-11T12:13:14.015Z | Mon | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Fri | 2019-02-15T00:00:00.000Z |
+| | cccc | 2019-02-11T12:13:14.015Z | Monday | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Friday | 2019-02-15T00:00:00.000Z |
+| | ccccc | 2019-02-11T12:13:14.015Z | M | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | F | 2019-02-15T00:00:00.000Z |
+| | cccccc | 2019-02-11T12:13:14.015Z | Mo | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Fr | 2019-02-15T00:00:00.000Z |
+| AM, PM | a | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | aa | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | aaa | 2019-02-11T11:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | aaaa | 2019-02-11T11:13:14.015Z | a.m. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | p.m. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | p.m. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | a.m. | 2019-02-11T00:00:00.000Z |
+| | aaaaa | 2019-02-11T11:13:14.015Z | a | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | p | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | p | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | a | 2019-02-11T00:00:00.000Z |
+| AM, PM, noon, midnight | b | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | bb | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | bbb | 2019-02-11T11:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | bbbb | 2019-02-11T11:13:14.015Z | a.m. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | p.m. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | p.m. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | a.m. | 2019-02-11T00:00:00.000Z |
+| | bbbbb | 2019-02-11T11:13:14.015Z | a | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | p | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | p | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | a | 2019-02-11T00:00:00.000Z |
+| Flexible day period | B | 2019-02-11T11:13:14.015Z | in the morning | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | in the afternoon | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | in the evening | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | at night | 2019-02-11T00:00:00.000Z |
+| | BB | 2019-02-11T11:13:14.015Z | in the morning | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | in the afternoon | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | in the evening | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | at night | 2019-02-11T00:00:00.000Z |
+| | BBB | 2019-02-11T11:13:14.015Z | in the morning | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | in the afternoon | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | in the evening | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | at night | 2019-02-11T00:00:00.000Z |
+| | BBBB | 2019-02-11T11:13:14.015Z | in the morning | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | in the afternoon | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | in the evening | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | at night | 2019-02-11T00:00:00.000Z |
+| | BBBBB | 2019-02-11T11:13:14.015Z | in the morning | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | in the afternoon | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | in the evening | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | at night | Invalid Date |
+| Hour [1-12] | ho | 2019-02-11T11:13:14.015Z | 11th | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11th | 2019-02-11T23:00:00.000Z |
+| Hour [0-23] | Ho | 2019-02-11T11:13:14.015Z | 11th | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23rd | 2019-02-11T23:00:00.000Z |
+| Hour [0-11] | Ko | 2019-02-11T11:13:14.015Z | 11th | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11th | 2019-02-11T23:00:00.000Z |
+| Hour [1-24] | ko | 2019-02-11T11:13:14.015Z | 11th | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23rd | 2019-02-11T23:00:00.000Z |
+| Minute | mo | 2019-01-01T12:01:14.015Z | 1st | 2019-01-01T12:01:00.000Z |
+| | | 2019-04-01T12:55:14.015Z | 55th | 2019-04-01T12:55:00.000Z |
+| Second | so | 2019-01-01T12:13:01.015Z | 1st | 2019-01-01T12:13:01.000Z |
+| | | 2019-04-01T12:13:55.015Z | 55th | 2019-04-01T12:13:55.000Z |
+| Long localized date | P | 1987-02-11T12:13:14.015Z | 11/02/1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29/05/1453 | 1453-05-29T00:00:00.000Z |
+| | PP | 1987-02-11T12:13:14.015Z | 11 Feb, 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 May, 1453 | 1453-05-29T00:00:00.000Z |
+| | PPP | 1987-02-11T12:13:14.015Z | 11 February, 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 May, 1453 | 1453-05-29T00:00:00.000Z |
+| | PPPP | 1987-02-11T12:13:14.015Z | Wednesday, 11 February 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | Sunday, 29 May 1453 | 1453-05-29T00:00:00.000Z |
+| Long localized time | p | 1987-02-11T12:13:14.015Z | 12:13 PM | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 11:59 PM | 1453-05-29T23:59:00.000Z |
+| | pp | 1987-02-11T12:13:14.015Z | 12:13:14 PM | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 11:59:59 PM | 1453-05-29T23:59:59.000Z |
+| | ppp | 1987-02-11T12:13:14.015Z | 12:13:14 PM GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 11:59:59 PM GMT+0 | Errored |
+| | pppp | 1987-02-11T12:13:14.015Z | 12:13:14 PM GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 11:59:59 PM GMT+00:00 | Errored |
+| Combination of date and time | Pp | 1987-02-11T12:13:14.015Z | 11/02/1987, 12:13 PM | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29/05/1453, 11:59 PM | 1453-05-29T23:59:00.000Z |
+| | PPpp | 1987-02-11T12:13:14.015Z | 11 Feb, 1987, 12:13:14 PM | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 May, 1453, 11:59:59 PM | 1453-05-29T23:59:59.000Z |
+| | PPPppp | 1987-02-11T12:13:14.015Z | 11 February, 1987 at 12:13:14 PM GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 29 May, 1453 at 11:59:59 PM GMT+0 | Errored |
+| | PPPPpppp | 1987-02-11T12:13:14.015Z | Wednesday, 11 February 1987 at 12:13:14 PM GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | Sunday, 29 May 1453 at 11:59:59 PM GMT+00:00 | Errored |
+
+## `formatDistance`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `includeSeconds: true` | `addSuffix: true` |
+| ------------------------ | ------------------ | ---------------------- | ---------------------- |
+| 2006-01-01T00:00:00.000Z | about 6 years | about 6 years | in about 6 years |
+| 2005-01-01T00:00:00.000Z | about 5 years | about 5 years | in about 5 years |
+| 2004-01-01T00:00:00.000Z | about 4 years | about 4 years | in about 4 years |
+| 2003-01-01T00:00:00.000Z | about 3 years | about 3 years | in about 3 years |
+| 2002-01-01T00:00:00.000Z | about 2 years | about 2 years | in about 2 years |
+| 2001-06-01T00:00:00.000Z | over 1 year | over 1 year | in over 1 year |
+| 2001-02-01T00:00:00.000Z | about 1 year | about 1 year | in about 1 year |
+| 2001-01-01T00:00:00.000Z | about 1 year | about 1 year | in about 1 year |
+| 2000-06-01T00:00:00.000Z | 5 months | 5 months | in 5 months |
+| 2000-03-01T00:00:00.000Z | 2 months | 2 months | in 2 months |
+| 2000-02-01T00:00:00.000Z | about 1 month | about 1 month | in about 1 month |
+| 2000-01-15T00:00:00.000Z | 14 days | 14 days | in 14 days |
+| 2000-01-02T00:00:00.000Z | 1 day | 1 day | in 1 day |
+| 2000-01-01T06:00:00.000Z | about 6 hours | about 6 hours | in about 6 hours |
+| 2000-01-01T01:00:00.000Z | about 1 hour | about 1 hour | in about 1 hour |
+| 2000-01-01T00:45:00.000Z | about 1 hour | about 1 hour | in about 1 hour |
+| 2000-01-01T00:30:00.000Z | 30 minutes | 30 minutes | in 30 minutes |
+| 2000-01-01T00:15:00.000Z | 15 minutes | 15 minutes | in 15 minutes |
+| 2000-01-01T00:01:00.000Z | 1 minute | 1 minute | in 1 minute |
+| 2000-01-01T00:00:25.000Z | less than a minute | half a minute | in less than a minute |
+| 2000-01-01T00:00:15.000Z | less than a minute | less than 20 seconds | in less than a minute |
+| 2000-01-01T00:00:05.000Z | less than a minute | less than 10 seconds | in less than a minute |
+| 2000-01-01T00:00:00.000Z | less than a minute | less than 5 seconds | less than a minute ago |
+| 1999-12-31T23:59:55.000Z | less than a minute | less than 10 seconds | less than a minute ago |
+| 1999-12-31T23:59:45.000Z | less than a minute | less than 20 seconds | less than a minute ago |
+| 1999-12-31T23:59:35.000Z | less than a minute | half a minute | less than a minute ago |
+| 1999-12-31T23:59:00.000Z | 1 minute | 1 minute | 1 minute ago |
+| 1999-12-31T23:45:00.000Z | 15 minutes | 15 minutes | 15 minutes ago |
+| 1999-12-31T23:30:00.000Z | 30 minutes | 30 minutes | 30 minutes ago |
+| 1999-12-31T23:15:00.000Z | about 1 hour | about 1 hour | about 1 hour ago |
+| 1999-12-31T23:00:00.000Z | about 1 hour | about 1 hour | about 1 hour ago |
+| 1999-12-31T18:00:00.000Z | about 6 hours | about 6 hours | about 6 hours ago |
+| 1999-12-30T00:00:00.000Z | 2 days | 2 days | 2 days ago |
+| 1999-12-15T00:00:00.000Z | 17 days | 17 days | 17 days ago |
+| 1999-12-01T00:00:00.000Z | about 1 month | about 1 month | about 1 month ago |
+| 1999-11-01T00:00:00.000Z | 2 months | 2 months | 2 months ago |
+| 1999-06-01T00:00:00.000Z | 7 months | 7 months | 7 months ago |
+| 1999-01-01T00:00:00.000Z | about 1 year | about 1 year | about 1 year ago |
+| 1998-12-01T00:00:00.000Z | about 1 year | about 1 year | about 1 year ago |
+| 1998-06-01T00:00:00.000Z | over 1 year | over 1 year | over 1 year ago |
+| 1998-01-01T00:00:00.000Z | about 2 years | about 2 years | about 2 years ago |
+| 1997-01-01T00:00:00.000Z | about 3 years | about 3 years | about 3 years ago |
+| 1996-01-01T00:00:00.000Z | about 4 years | about 4 years | about 4 years ago |
+| 1995-01-01T00:00:00.000Z | about 5 years | about 5 years | about 5 years ago |
+| 1994-01-01T00:00:00.000Z | about 6 years | about 6 years | about 6 years ago |
+
+## `formatDistanceStrict`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `addSuffix: true` | With forced unit (i.e. `hour`) |
+| ------------------------ | ---------- | ----------------- | ------------------------------ |
+| 2006-01-01T00:00:00.000Z | 6 years | in 6 years | 52608 hours |
+| 2005-01-01T00:00:00.000Z | 5 years | in 5 years | 43848 hours |
+| 2004-01-01T00:00:00.000Z | 4 years | in 4 years | 35064 hours |
+| 2003-01-01T00:00:00.000Z | 3 years | in 3 years | 26304 hours |
+| 2002-01-01T00:00:00.000Z | 2 years | in 2 years | 17544 hours |
+| 2001-06-01T00:00:00.000Z | 1 year | in 1 year | 12408 hours |
+| 2001-02-01T00:00:00.000Z | 1 year | in 1 year | 9528 hours |
+| 2001-01-01T00:00:00.000Z | 1 year | in 1 year | 8784 hours |
+| 2000-06-01T00:00:00.000Z | 5 months | in 5 months | 3648 hours |
+| 2000-03-01T00:00:00.000Z | 2 months | in 2 months | 1440 hours |
+| 2000-02-01T00:00:00.000Z | 1 month | in 1 month | 744 hours |
+| 2000-01-15T00:00:00.000Z | 14 days | in 14 days | 336 hours |
+| 2000-01-02T00:00:00.000Z | 1 day | in 1 day | 24 hours |
+| 2000-01-01T06:00:00.000Z | 6 hours | in 6 hours | 6 hours |
+| 2000-01-01T01:00:00.000Z | 1 hour | in 1 hour | 1 hour |
+| 2000-01-01T00:45:00.000Z | 45 minutes | in 45 minutes | 1 hour |
+| 2000-01-01T00:30:00.000Z | 30 minutes | in 30 minutes | 1 hour |
+| 2000-01-01T00:15:00.000Z | 15 minutes | in 15 minutes | 0 hours |
+| 2000-01-01T00:01:00.000Z | 1 minute | in 1 minute | 0 hours |
+| 2000-01-01T00:00:25.000Z | 25 seconds | in 25 seconds | 0 hours |
+| 2000-01-01T00:00:15.000Z | 15 seconds | in 15 seconds | 0 hours |
+| 2000-01-01T00:00:05.000Z | 5 seconds | in 5 seconds | 0 hours |
+| 2000-01-01T00:00:00.000Z | 0 seconds | 0 seconds ago | 0 hours |
+| 1999-12-31T23:59:55.000Z | 5 seconds | 5 seconds ago | 0 hours |
+| 1999-12-31T23:59:45.000Z | 15 seconds | 15 seconds ago | 0 hours |
+| 1999-12-31T23:59:35.000Z | 25 seconds | 25 seconds ago | 0 hours |
+| 1999-12-31T23:59:00.000Z | 1 minute | 1 minute ago | 0 hours |
+| 1999-12-31T23:45:00.000Z | 15 minutes | 15 minutes ago | 0 hours |
+| 1999-12-31T23:30:00.000Z | 30 minutes | 30 minutes ago | 1 hour |
+| 1999-12-31T23:15:00.000Z | 45 minutes | 45 minutes ago | 1 hour |
+| 1999-12-31T23:00:00.000Z | 1 hour | 1 hour ago | 1 hour |
+| 1999-12-31T18:00:00.000Z | 6 hours | 6 hours ago | 6 hours |
+| 1999-12-30T00:00:00.000Z | 2 days | 2 days ago | 48 hours |
+| 1999-12-15T00:00:00.000Z | 17 days | 17 days ago | 408 hours |
+| 1999-12-01T00:00:00.000Z | 1 month | 1 month ago | 744 hours |
+| 1999-11-01T00:00:00.000Z | 2 months | 2 months ago | 1464 hours |
+| 1999-06-01T00:00:00.000Z | 7 months | 7 months ago | 5136 hours |
+| 1999-01-01T00:00:00.000Z | 1 year | 1 year ago | 8760 hours |
+| 1998-12-01T00:00:00.000Z | 1 year | 1 year ago | 9504 hours |
+| 1998-06-01T00:00:00.000Z | 2 years | 2 years ago | 13896 hours |
+| 1998-01-01T00:00:00.000Z | 2 years | 2 years ago | 17520 hours |
+| 1997-01-01T00:00:00.000Z | 3 years | 3 years ago | 26280 hours |
+| 1996-01-01T00:00:00.000Z | 4 years | 4 years ago | 35064 hours |
+| 1995-01-01T00:00:00.000Z | 5 years | 5 years ago | 43824 hours |
+| 1994-01-01T00:00:00.000Z | 6 years | 6 years ago | 52584 hours |
+
+## `formatRelative`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result |
+| ------------------------ | ----------------------- |
+| 2000-01-10T00:00:00.000Z | 10/01/2000 |
+| 2000-01-05T00:00:00.000Z | Wednesday at 12:00 AM |
+| 2000-01-02T00:00:00.000Z | tomorrow at 12:00 AM |
+| 2000-01-01T00:00:00.000Z | today at 12:00 AM |
+| 1999-12-31T00:00:00.000Z | yesterday at 12:00 AM |
+| 1999-12-27T00:00:00.000Z | last Monday at 12:00 AM |
+| 1999-12-21T00:00:00.000Z | 21/12/1999 |
diff --git a/date-fns/src/locale/en-NZ/_lib/formatLong/index.js b/date-fns/src/locale/en-NZ/_lib/formatLong/index.js
new file mode 100644
index 0000000..8e674cd
--- /dev/null
+++ b/date-fns/src/locale/en-NZ/_lib/formatLong/index.js
@@ -0,0 +1,41 @@
+import buildFormatLongFn from '../../../_lib/buildFormatLongFn/index'
+
+var dateFormats = {
+ full: 'EEEE, d MMMM yyyy',
+ long: 'd MMMM yyyy',
+ medium: 'd MMM yyyy',
+ short: 'dd/MM/yyyy'
+}
+
+var timeFormats = {
+ full: 'h:mm:ss a zzzz',
+ long: 'h:mm:ss a z',
+ medium: 'h:mm:ss a',
+ short: 'h:mm a'
+}
+
+var dateTimeFormats = {
+ full: "{{date}} 'at' {{time}}",
+ long: "{{date}} 'at' {{time}}",
+ medium: '{{date}}, {{time}}',
+ short: '{{date}}, {{time}}'
+}
+
+var formatLong = {
+ date: buildFormatLongFn({
+ formats: dateFormats,
+ defaultWidth: 'full'
+ }),
+
+ time: buildFormatLongFn({
+ formats: timeFormats,
+ defaultWidth: 'full'
+ }),
+
+ dateTime: buildFormatLongFn({
+ formats: dateTimeFormats,
+ defaultWidth: 'full'
+ })
+}
+
+export default formatLong
diff --git a/date-fns/src/locale/en-NZ/index.d.ts b/date-fns/src/locale/en-NZ/index.d.ts
new file mode 100644
index 0000000..dbf083d
--- /dev/null
+++ b/date-fns/src/locale/en-NZ/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { enNZ } from 'date-fns/locale'
+export default enNZ
diff --git a/date-fns/src/locale/en-NZ/index.js b/date-fns/src/locale/en-NZ/index.js
new file mode 100644
index 0000000..95cac51
--- /dev/null
+++ b/date-fns/src/locale/en-NZ/index.js
@@ -0,0 +1,28 @@
+import formatDistance from '../en-US/_lib/formatDistance/index'
+import formatLong from './_lib/formatLong/index'
+import formatRelative from '../en-US/_lib/formatRelative/index'
+import localize from '../en-US/_lib/localize/index'
+import match from '../en-US/_lib/match/index'
+
+/**
+ * @type {Locale}
+ * @category Locales
+ * @summary English locale (New Zealand).
+ * @language English
+ * @iso-639-2 eng
+ * @author Murray Lucas [@muntact]{@link https://github.com/muntact}
+ */
+var locale = {
+ code: 'en-NZ',
+ formatDistance: formatDistance,
+ formatLong: formatLong,
+ formatRelative: formatRelative,
+ localize: localize,
+ match: match,
+ options: {
+ weekStartsOn: 1 /* Monday */,
+ firstWeekContainsDate: 4
+ }
+}
+
+export default locale
diff --git a/date-fns/src/locale/en-NZ/index.js.flow b/date-fns/src/locale/en-NZ/index.js.flow
new file mode 100644
index 0000000..b9dfe66
--- /dev/null
+++ b/date-fns/src/locale/en-NZ/index.js.flow
@@ -0,0 +1,35 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+declare module.exports: Locale
diff --git a/date-fns/src/locale/en-NZ/snapshot.md b/date-fns/src/locale/en-NZ/snapshot.md
new file mode 100644
index 0000000..237ed72
--- /dev/null
+++ b/date-fns/src/locale/en-NZ/snapshot.md
@@ -0,0 +1,304 @@
+# English (en-NZ) locale
+
+## `format` and `parse`
+
+| Title | Token string | Date | `format` result | `parse` result |
+| ------------------------------- | ------------ | ------------------------ | ---------------------------------------------------- | ------------------------ |
+| Calendar year | yo | 1987-02-11T12:13:14.015Z | 1987th | 1987-01-01T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 5th | 0005-01-01T00:00:00.000Z |
+| Local week-numbering year | Yo | 1987-02-11T12:13:14.015Z | 1987th | 1986-12-29T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 4th | 0003-12-29T00:00:00.000Z |
+| Quarter (formatting) | Qo | 2019-01-01T12:13:14.015Z | 1st | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2nd | 2019-04-01T00:00:00.000Z |
+| | QQQ | 2019-01-01T12:13:14.015Z | Q1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | Q2 | 2019-04-01T00:00:00.000Z |
+| | QQQQ | 2019-01-01T12:13:14.015Z | 1st quarter | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2nd quarter | 2019-04-01T00:00:00.000Z |
+| | QQQQQ | 2019-01-01T12:13:14.015Z | 1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2 | 2019-04-01T00:00:00.000Z |
+| Quarter (stand-alone) | qo | 2019-01-01T12:13:14.015Z | 1st | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2nd | 2019-04-01T00:00:00.000Z |
+| | qqq | 2019-01-01T12:13:14.015Z | Q1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | Q2 | 2019-04-01T00:00:00.000Z |
+| | qqqq | 2019-01-01T12:13:14.015Z | 1st quarter | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2nd quarter | 2019-04-01T00:00:00.000Z |
+| Month (formatting) | Mo | 2019-02-11T12:13:14.015Z | 2nd | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7th | 2019-07-01T00:00:00.000Z |
+| | MMM | 2019-02-11T12:13:14.015Z | Feb | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | Jul | 2019-07-01T00:00:00.000Z |
+| | MMMM | 2019-02-11T12:13:14.015Z | February | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | July | 2019-07-01T00:00:00.000Z |
+| | MMMMM | 2019-02-11T12:13:14.015Z | F | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | J | 2019-01-01T00:00:00.000Z |
+| Month (stand-alone) | Lo | 2019-02-11T12:13:14.015Z | 2nd | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7th | 2019-07-01T00:00:00.000Z |
+| | LLL | 2019-02-11T12:13:14.015Z | Feb | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | Jul | 2019-07-01T00:00:00.000Z |
+| | LLLL | 2019-02-11T12:13:14.015Z | February | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | July | 2019-07-01T00:00:00.000Z |
+| | LLLLL | 2019-02-11T12:13:14.015Z | F | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | J | 2019-01-01T00:00:00.000Z |
+| Local week of year | wo | 2019-01-01T12:13:14.015Z | 1st | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48th | 2019-11-25T00:00:00.000Z |
+| ISO week of year | Io | 2019-01-01T12:13:14.015Z | 1st | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48th | 2019-11-25T00:00:00.000Z |
+| Day of month | do | 2019-02-11T12:13:14.015Z | 11th | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-28T12:13:14.015Z | 28th | 2019-02-28T00:00:00.000Z |
+| Day of year | Do | 2019-02-11T12:13:14.015Z | 42nd | 2019-02-11T00:00:00.000Z |
+| | | 2019-12-31T12:13:14.015Z | 365th | 2019-12-31T00:00:00.000Z |
+| Day of week (formatting) | E | 2019-02-11T12:13:14.015Z | Mon | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Fri | 2019-02-15T00:00:00.000Z |
+| | EE | 2019-02-11T12:13:14.015Z | Mon | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Fri | 2019-02-15T00:00:00.000Z |
+| | EEE | 2019-02-11T12:13:14.015Z | Mon | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Fri | 2019-02-15T00:00:00.000Z |
+| | EEEE | 2019-02-11T12:13:14.015Z | Monday | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Friday | 2019-02-15T00:00:00.000Z |
+| | EEEEE | 2019-02-11T12:13:14.015Z | M | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | F | 2019-02-15T00:00:00.000Z |
+| | EEEEEE | 2019-02-11T12:13:14.015Z | Mo | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Fr | 2019-02-15T00:00:00.000Z |
+| ISO day of week (formatting) | io | 2019-02-11T12:13:14.015Z | 1st | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5th | 2019-02-15T00:00:00.000Z |
+| | iii | 2019-02-11T12:13:14.015Z | Mon | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Fri | 2019-02-15T00:00:00.000Z |
+| | iiii | 2019-02-11T12:13:14.015Z | Monday | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Friday | 2019-02-15T00:00:00.000Z |
+| | iiiii | 2019-02-11T12:13:14.015Z | M | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | F | 2019-02-15T00:00:00.000Z |
+| | iiiiii | 2019-02-11T12:13:14.015Z | Mo | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Fr | 2019-02-15T00:00:00.000Z |
+| Local day of week (formatting) | eo | 2019-02-11T12:13:14.015Z | 1st | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5th | 2019-02-15T00:00:00.000Z |
+| | eee | 2019-02-11T12:13:14.015Z | Mon | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Fri | 2019-02-15T00:00:00.000Z |
+| | eeee | 2019-02-11T12:13:14.015Z | Monday | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Friday | 2019-02-15T00:00:00.000Z |
+| | eeeee | 2019-02-11T12:13:14.015Z | M | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | F | 2019-02-15T00:00:00.000Z |
+| | eeeeee | 2019-02-11T12:13:14.015Z | Mo | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Fr | 2019-02-15T00:00:00.000Z |
+| Local day of week (stand-alone) | co | 2019-02-11T12:13:14.015Z | 1st | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5th | 2019-02-15T00:00:00.000Z |
+| | ccc | 2019-02-11T12:13:14.015Z | Mon | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Fri | 2019-02-15T00:00:00.000Z |
+| | cccc | 2019-02-11T12:13:14.015Z | Monday | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Friday | 2019-02-15T00:00:00.000Z |
+| | ccccc | 2019-02-11T12:13:14.015Z | M | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | F | 2019-02-15T00:00:00.000Z |
+| | cccccc | 2019-02-11T12:13:14.015Z | Mo | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Fr | 2019-02-15T00:00:00.000Z |
+| AM, PM | a | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | aa | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | aaa | 2019-02-11T11:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | aaaa | 2019-02-11T11:13:14.015Z | a.m. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | p.m. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | p.m. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | a.m. | 2019-02-11T00:00:00.000Z |
+| | aaaaa | 2019-02-11T11:13:14.015Z | a | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | p | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | p | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | a | 2019-02-11T00:00:00.000Z |
+| AM, PM, noon, midnight | b | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | bb | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | bbb | 2019-02-11T11:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | bbbb | 2019-02-11T11:13:14.015Z | a.m. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | p.m. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | p.m. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | a.m. | 2019-02-11T00:00:00.000Z |
+| | bbbbb | 2019-02-11T11:13:14.015Z | a | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | p | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | p | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | a | 2019-02-11T00:00:00.000Z |
+| Flexible day period | B | 2019-02-11T11:13:14.015Z | in the morning | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | in the afternoon | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | in the evening | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | at night | 2019-02-11T00:00:00.000Z |
+| | BB | 2019-02-11T11:13:14.015Z | in the morning | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | in the afternoon | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | in the evening | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | at night | 2019-02-11T00:00:00.000Z |
+| | BBB | 2019-02-11T11:13:14.015Z | in the morning | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | in the afternoon | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | in the evening | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | at night | 2019-02-11T00:00:00.000Z |
+| | BBBB | 2019-02-11T11:13:14.015Z | in the morning | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | in the afternoon | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | in the evening | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | at night | 2019-02-11T00:00:00.000Z |
+| | BBBBB | 2019-02-11T11:13:14.015Z | in the morning | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | in the afternoon | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | in the evening | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | at night | Invalid Date |
+| Hour [1-12] | ho | 2019-02-11T11:13:14.015Z | 11th | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11th | 2019-02-11T23:00:00.000Z |
+| Hour [0-23] | Ho | 2019-02-11T11:13:14.015Z | 11th | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23rd | 2019-02-11T23:00:00.000Z |
+| Hour [0-11] | Ko | 2019-02-11T11:13:14.015Z | 11th | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11th | 2019-02-11T23:00:00.000Z |
+| Hour [1-24] | ko | 2019-02-11T11:13:14.015Z | 11th | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23rd | 2019-02-11T23:00:00.000Z |
+| Minute | mo | 2019-01-01T12:01:14.015Z | 1st | 2019-01-01T12:01:00.000Z |
+| | | 2019-04-01T12:55:14.015Z | 55th | 2019-04-01T12:55:00.000Z |
+| Second | so | 2019-01-01T12:13:01.015Z | 1st | 2019-01-01T12:13:01.000Z |
+| | | 2019-04-01T12:13:55.015Z | 55th | 2019-04-01T12:13:55.000Z |
+| Long localized date | P | 1987-02-11T12:13:14.015Z | 11/02/1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29/05/1453 | 1453-05-29T00:00:00.000Z |
+| | PP | 1987-02-11T12:13:14.015Z | 11 Feb 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 May 1453 | 1453-05-29T00:00:00.000Z |
+| | PPP | 1987-02-11T12:13:14.015Z | 11 February 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 May 1453 | 1453-05-29T00:00:00.000Z |
+| | PPPP | 1987-02-11T12:13:14.015Z | Wednesday, 11 February 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | Sunday, 29 May 1453 | 1453-05-29T00:00:00.000Z |
+| Long localized time | p | 1987-02-11T12:13:14.015Z | 12:13 PM | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 11:59 PM | 1453-05-29T23:59:00.000Z |
+| | pp | 1987-02-11T12:13:14.015Z | 12:13:14 PM | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 11:59:59 PM | 1453-05-29T23:59:59.000Z |
+| | ppp | 1987-02-11T12:13:14.015Z | 12:13:14 PM GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 11:59:59 PM GMT+0 | Errored |
+| | pppp | 1987-02-11T12:13:14.015Z | 12:13:14 PM GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 11:59:59 PM GMT+00:00 | Errored |
+| Combination of date and time | Pp | 1987-02-11T12:13:14.015Z | 11/02/1987, 12:13 PM | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29/05/1453, 11:59 PM | 1453-05-29T23:59:00.000Z |
+| | PPpp | 1987-02-11T12:13:14.015Z | 11 Feb 1987, 12:13:14 PM | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 May 1453, 11:59:59 PM | 1453-05-29T23:59:59.000Z |
+| | PPPppp | 1987-02-11T12:13:14.015Z | 11 February 1987 at 12:13:14 PM GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 29 May 1453 at 11:59:59 PM GMT+0 | Errored |
+| | PPPPpppp | 1987-02-11T12:13:14.015Z | Wednesday, 11 February 1987 at 12:13:14 PM GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | Sunday, 29 May 1453 at 11:59:59 PM GMT+00:00 | Errored |
+
+## `formatDistance`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `includeSeconds: true` | `addSuffix: true` |
+| ------------------------ | ------------------ | ---------------------- | ---------------------- |
+| 2006-01-01T00:00:00.000Z | about 6 years | about 6 years | in about 6 years |
+| 2005-01-01T00:00:00.000Z | about 5 years | about 5 years | in about 5 years |
+| 2004-01-01T00:00:00.000Z | about 4 years | about 4 years | in about 4 years |
+| 2003-01-01T00:00:00.000Z | about 3 years | about 3 years | in about 3 years |
+| 2002-01-01T00:00:00.000Z | about 2 years | about 2 years | in about 2 years |
+| 2001-06-01T00:00:00.000Z | over 1 year | over 1 year | in over 1 year |
+| 2001-02-01T00:00:00.000Z | about 1 year | about 1 year | in about 1 year |
+| 2001-01-01T00:00:00.000Z | about 1 year | about 1 year | in about 1 year |
+| 2000-06-01T00:00:00.000Z | 5 months | 5 months | in 5 months |
+| 2000-03-01T00:00:00.000Z | 2 months | 2 months | in 2 months |
+| 2000-02-01T00:00:00.000Z | about 1 month | about 1 month | in about 1 month |
+| 2000-01-15T00:00:00.000Z | 14 days | 14 days | in 14 days |
+| 2000-01-02T00:00:00.000Z | 1 day | 1 day | in 1 day |
+| 2000-01-01T06:00:00.000Z | about 6 hours | about 6 hours | in about 6 hours |
+| 2000-01-01T01:00:00.000Z | about 1 hour | about 1 hour | in about 1 hour |
+| 2000-01-01T00:45:00.000Z | about 1 hour | about 1 hour | in about 1 hour |
+| 2000-01-01T00:30:00.000Z | 30 minutes | 30 minutes | in 30 minutes |
+| 2000-01-01T00:15:00.000Z | 15 minutes | 15 minutes | in 15 minutes |
+| 2000-01-01T00:01:00.000Z | 1 minute | 1 minute | in 1 minute |
+| 2000-01-01T00:00:25.000Z | less than a minute | half a minute | in less than a minute |
+| 2000-01-01T00:00:15.000Z | less than a minute | less than 20 seconds | in less than a minute |
+| 2000-01-01T00:00:05.000Z | less than a minute | less than 10 seconds | in less than a minute |
+| 2000-01-01T00:00:00.000Z | less than a minute | less than 5 seconds | less than a minute ago |
+| 1999-12-31T23:59:55.000Z | less than a minute | less than 10 seconds | less than a minute ago |
+| 1999-12-31T23:59:45.000Z | less than a minute | less than 20 seconds | less than a minute ago |
+| 1999-12-31T23:59:35.000Z | less than a minute | half a minute | less than a minute ago |
+| 1999-12-31T23:59:00.000Z | 1 minute | 1 minute | 1 minute ago |
+| 1999-12-31T23:45:00.000Z | 15 minutes | 15 minutes | 15 minutes ago |
+| 1999-12-31T23:30:00.000Z | 30 minutes | 30 minutes | 30 minutes ago |
+| 1999-12-31T23:15:00.000Z | about 1 hour | about 1 hour | about 1 hour ago |
+| 1999-12-31T23:00:00.000Z | about 1 hour | about 1 hour | about 1 hour ago |
+| 1999-12-31T18:00:00.000Z | about 6 hours | about 6 hours | about 6 hours ago |
+| 1999-12-30T00:00:00.000Z | 2 days | 2 days | 2 days ago |
+| 1999-12-15T00:00:00.000Z | 17 days | 17 days | 17 days ago |
+| 1999-12-01T00:00:00.000Z | about 1 month | about 1 month | about 1 month ago |
+| 1999-11-01T00:00:00.000Z | 2 months | 2 months | 2 months ago |
+| 1999-06-01T00:00:00.000Z | 7 months | 7 months | 7 months ago |
+| 1999-01-01T00:00:00.000Z | about 1 year | about 1 year | about 1 year ago |
+| 1998-12-01T00:00:00.000Z | about 1 year | about 1 year | about 1 year ago |
+| 1998-06-01T00:00:00.000Z | over 1 year | over 1 year | over 1 year ago |
+| 1998-01-01T00:00:00.000Z | about 2 years | about 2 years | about 2 years ago |
+| 1997-01-01T00:00:00.000Z | about 3 years | about 3 years | about 3 years ago |
+| 1996-01-01T00:00:00.000Z | about 4 years | about 4 years | about 4 years ago |
+| 1995-01-01T00:00:00.000Z | about 5 years | about 5 years | about 5 years ago |
+| 1994-01-01T00:00:00.000Z | about 6 years | about 6 years | about 6 years ago |
+
+## `formatDistanceStrict`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `addSuffix: true` | With forced unit (i.e. `hour`) |
+| ------------------------ | ---------- | ----------------- | ------------------------------ |
+| 2006-01-01T00:00:00.000Z | 6 years | in 6 years | 52608 hours |
+| 2005-01-01T00:00:00.000Z | 5 years | in 5 years | 43848 hours |
+| 2004-01-01T00:00:00.000Z | 4 years | in 4 years | 35064 hours |
+| 2003-01-01T00:00:00.000Z | 3 years | in 3 years | 26304 hours |
+| 2002-01-01T00:00:00.000Z | 2 years | in 2 years | 17544 hours |
+| 2001-06-01T00:00:00.000Z | 1 year | in 1 year | 12408 hours |
+| 2001-02-01T00:00:00.000Z | 1 year | in 1 year | 9528 hours |
+| 2001-01-01T00:00:00.000Z | 1 year | in 1 year | 8784 hours |
+| 2000-06-01T00:00:00.000Z | 5 months | in 5 months | 3648 hours |
+| 2000-03-01T00:00:00.000Z | 2 months | in 2 months | 1440 hours |
+| 2000-02-01T00:00:00.000Z | 1 month | in 1 month | 744 hours |
+| 2000-01-15T00:00:00.000Z | 14 days | in 14 days | 336 hours |
+| 2000-01-02T00:00:00.000Z | 1 day | in 1 day | 24 hours |
+| 2000-01-01T06:00:00.000Z | 6 hours | in 6 hours | 6 hours |
+| 2000-01-01T01:00:00.000Z | 1 hour | in 1 hour | 1 hour |
+| 2000-01-01T00:45:00.000Z | 45 minutes | in 45 minutes | 1 hour |
+| 2000-01-01T00:30:00.000Z | 30 minutes | in 30 minutes | 1 hour |
+| 2000-01-01T00:15:00.000Z | 15 minutes | in 15 minutes | 0 hours |
+| 2000-01-01T00:01:00.000Z | 1 minute | in 1 minute | 0 hours |
+| 2000-01-01T00:00:25.000Z | 25 seconds | in 25 seconds | 0 hours |
+| 2000-01-01T00:00:15.000Z | 15 seconds | in 15 seconds | 0 hours |
+| 2000-01-01T00:00:05.000Z | 5 seconds | in 5 seconds | 0 hours |
+| 2000-01-01T00:00:00.000Z | 0 seconds | 0 seconds ago | 0 hours |
+| 1999-12-31T23:59:55.000Z | 5 seconds | 5 seconds ago | 0 hours |
+| 1999-12-31T23:59:45.000Z | 15 seconds | 15 seconds ago | 0 hours |
+| 1999-12-31T23:59:35.000Z | 25 seconds | 25 seconds ago | 0 hours |
+| 1999-12-31T23:59:00.000Z | 1 minute | 1 minute ago | 0 hours |
+| 1999-12-31T23:45:00.000Z | 15 minutes | 15 minutes ago | 0 hours |
+| 1999-12-31T23:30:00.000Z | 30 minutes | 30 minutes ago | 1 hour |
+| 1999-12-31T23:15:00.000Z | 45 minutes | 45 minutes ago | 1 hour |
+| 1999-12-31T23:00:00.000Z | 1 hour | 1 hour ago | 1 hour |
+| 1999-12-31T18:00:00.000Z | 6 hours | 6 hours ago | 6 hours |
+| 1999-12-30T00:00:00.000Z | 2 days | 2 days ago | 48 hours |
+| 1999-12-15T00:00:00.000Z | 17 days | 17 days ago | 408 hours |
+| 1999-12-01T00:00:00.000Z | 1 month | 1 month ago | 744 hours |
+| 1999-11-01T00:00:00.000Z | 2 months | 2 months ago | 1464 hours |
+| 1999-06-01T00:00:00.000Z | 7 months | 7 months ago | 5136 hours |
+| 1999-01-01T00:00:00.000Z | 1 year | 1 year ago | 8760 hours |
+| 1998-12-01T00:00:00.000Z | 1 year | 1 year ago | 9504 hours |
+| 1998-06-01T00:00:00.000Z | 2 years | 2 years ago | 13896 hours |
+| 1998-01-01T00:00:00.000Z | 2 years | 2 years ago | 17520 hours |
+| 1997-01-01T00:00:00.000Z | 3 years | 3 years ago | 26280 hours |
+| 1996-01-01T00:00:00.000Z | 4 years | 4 years ago | 35064 hours |
+| 1995-01-01T00:00:00.000Z | 5 years | 5 years ago | 43824 hours |
+| 1994-01-01T00:00:00.000Z | 6 years | 6 years ago | 52584 hours |
+
+## `formatRelative`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result |
+| ------------------------ | ----------------------- |
+| 2000-01-10T00:00:00.000Z | 10/01/2000 |
+| 2000-01-05T00:00:00.000Z | Wednesday at 12:00 AM |
+| 2000-01-02T00:00:00.000Z | tomorrow at 12:00 AM |
+| 2000-01-01T00:00:00.000Z | today at 12:00 AM |
+| 1999-12-31T00:00:00.000Z | yesterday at 12:00 AM |
+| 1999-12-27T00:00:00.000Z | last Monday at 12:00 AM |
+| 1999-12-21T00:00:00.000Z | 21/12/1999 |
diff --git a/date-fns/src/locale/en-US/_lib/formatDistance/index.js b/date-fns/src/locale/en-US/_lib/formatDistance/index.js
new file mode 100644
index 0000000..ebcde65
--- /dev/null
+++ b/date-fns/src/locale/en-US/_lib/formatDistance/index.js
@@ -0,0 +1,101 @@
+var formatDistanceLocale = {
+ lessThanXSeconds: {
+ one: 'less than a second',
+ other: 'less than {{count}} seconds'
+ },
+
+ xSeconds: {
+ one: '1 second',
+ other: '{{count}} seconds'
+ },
+
+ halfAMinute: 'half a minute',
+
+ lessThanXMinutes: {
+ one: 'less than a minute',
+ other: 'less than {{count}} minutes'
+ },
+
+ xMinutes: {
+ one: '1 minute',
+ other: '{{count}} minutes'
+ },
+
+ aboutXHours: {
+ one: 'about 1 hour',
+ other: 'about {{count}} hours'
+ },
+
+ xHours: {
+ one: '1 hour',
+ other: '{{count}} hours'
+ },
+
+ xDays: {
+ one: '1 day',
+ other: '{{count}} days'
+ },
+
+ aboutXWeeks: {
+ one: 'about 1 week',
+ other: 'about {{count}} weeks'
+ },
+
+ xWeeks: {
+ one: '1 week',
+ other: '{{count}} weeks'
+ },
+
+ aboutXMonths: {
+ one: 'about 1 month',
+ other: 'about {{count}} months'
+ },
+
+ xMonths: {
+ one: '1 month',
+ other: '{{count}} months'
+ },
+
+ aboutXYears: {
+ one: 'about 1 year',
+ other: 'about {{count}} years'
+ },
+
+ xYears: {
+ one: '1 year',
+ other: '{{count}} years'
+ },
+
+ overXYears: {
+ one: 'over 1 year',
+ other: 'over {{count}} years'
+ },
+
+ almostXYears: {
+ one: 'almost 1 year',
+ other: 'almost {{count}} years'
+ }
+}
+
+export default function formatDistance(token, count, options) {
+ options = options || {}
+
+ var result
+ if (typeof formatDistanceLocale[token] === 'string') {
+ result = formatDistanceLocale[token]
+ } else if (count === 1) {
+ result = formatDistanceLocale[token].one
+ } else {
+ result = formatDistanceLocale[token].other.replace('{{count}}', count)
+ }
+
+ if (options.addSuffix) {
+ if (options.comparison > 0) {
+ return 'in ' + result
+ } else {
+ return result + ' ago'
+ }
+ }
+
+ return result
+}
diff --git a/date-fns/src/locale/en-US/_lib/formatLong/index.js b/date-fns/src/locale/en-US/_lib/formatLong/index.js
new file mode 100644
index 0000000..212cf21
--- /dev/null
+++ b/date-fns/src/locale/en-US/_lib/formatLong/index.js
@@ -0,0 +1,41 @@
+import buildFormatLongFn from '../../../_lib/buildFormatLongFn/index'
+
+var dateFormats = {
+ full: 'EEEE, MMMM do, y',
+ long: 'MMMM do, y',
+ medium: 'MMM d, y',
+ short: 'MM/dd/yyyy'
+}
+
+var timeFormats = {
+ full: 'h:mm:ss a zzzz',
+ long: 'h:mm:ss a z',
+ medium: 'h:mm:ss a',
+ short: 'h:mm a'
+}
+
+var dateTimeFormats = {
+ full: "{{date}} 'at' {{time}}",
+ long: "{{date}} 'at' {{time}}",
+ medium: '{{date}}, {{time}}',
+ short: '{{date}}, {{time}}'
+}
+
+var formatLong = {
+ date: buildFormatLongFn({
+ formats: dateFormats,
+ defaultWidth: 'full'
+ }),
+
+ time: buildFormatLongFn({
+ formats: timeFormats,
+ defaultWidth: 'full'
+ }),
+
+ dateTime: buildFormatLongFn({
+ formats: dateTimeFormats,
+ defaultWidth: 'full'
+ })
+}
+
+export default formatLong
diff --git a/date-fns/src/locale/en-US/_lib/formatRelative/index.js b/date-fns/src/locale/en-US/_lib/formatRelative/index.js
new file mode 100644
index 0000000..192af7d
--- /dev/null
+++ b/date-fns/src/locale/en-US/_lib/formatRelative/index.js
@@ -0,0 +1,12 @@
+var formatRelativeLocale = {
+ lastWeek: "'last' eeee 'at' p",
+ yesterday: "'yesterday at' p",
+ today: "'today at' p",
+ tomorrow: "'tomorrow at' p",
+ nextWeek: "eeee 'at' p",
+ other: 'P'
+}
+
+export default function formatRelative(token, _date, _baseDate, _options) {
+ return formatRelativeLocale[token]
+}
diff --git a/date-fns/src/locale/en-US/_lib/localize/index.js b/date-fns/src/locale/en-US/_lib/localize/index.js
new file mode 100644
index 0000000..1ffb8bf
--- /dev/null
+++ b/date-fns/src/locale/en-US/_lib/localize/index.js
@@ -0,0 +1,192 @@
+import buildLocalizeFn from '../../../_lib/buildLocalizeFn/index'
+
+var eraValues = {
+ narrow: ['B', 'A'],
+ abbreviated: ['BC', 'AD'],
+ wide: ['Before Christ', 'Anno Domini']
+}
+
+var quarterValues = {
+ narrow: ['1', '2', '3', '4'],
+ abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],
+ wide: ['1st quarter', '2nd quarter', '3rd quarter', '4th quarter']
+}
+
+// Note: in English, the names of days of the week and months are capitalized.
+// If you are making a new locale based on this one, check if the same is true for the language you're working on.
+// Generally, formatted dates should look like they are in the middle of a sentence,
+// e.g. in Spanish language the weekdays and months should be in the lowercase.
+var monthValues = {
+ narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],
+ abbreviated: [
+ 'Jan',
+ 'Feb',
+ 'Mar',
+ 'Apr',
+ 'May',
+ 'Jun',
+ 'Jul',
+ 'Aug',
+ 'Sep',
+ 'Oct',
+ 'Nov',
+ 'Dec'
+ ],
+ wide: [
+ 'January',
+ 'February',
+ 'March',
+ 'April',
+ 'May',
+ 'June',
+ 'July',
+ 'August',
+ 'September',
+ 'October',
+ 'November',
+ 'December'
+ ]
+}
+
+var dayValues = {
+ narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],
+ short: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],
+ abbreviated: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
+ wide: [
+ 'Sunday',
+ 'Monday',
+ 'Tuesday',
+ 'Wednesday',
+ 'Thursday',
+ 'Friday',
+ 'Saturday'
+ ]
+}
+
+var dayPeriodValues = {
+ narrow: {
+ am: 'a',
+ pm: 'p',
+ midnight: 'mi',
+ noon: 'n',
+ morning: 'morning',
+ afternoon: 'afternoon',
+ evening: 'evening',
+ night: 'night'
+ },
+ abbreviated: {
+ am: 'AM',
+ pm: 'PM',
+ midnight: 'midnight',
+ noon: 'noon',
+ morning: 'morning',
+ afternoon: 'afternoon',
+ evening: 'evening',
+ night: 'night'
+ },
+ wide: {
+ am: 'a.m.',
+ pm: 'p.m.',
+ midnight: 'midnight',
+ noon: 'noon',
+ morning: 'morning',
+ afternoon: 'afternoon',
+ evening: 'evening',
+ night: 'night'
+ }
+}
+var formattingDayPeriodValues = {
+ narrow: {
+ am: 'a',
+ pm: 'p',
+ midnight: 'mi',
+ noon: 'n',
+ morning: 'in the morning',
+ afternoon: 'in the afternoon',
+ evening: 'in the evening',
+ night: 'at night'
+ },
+ abbreviated: {
+ am: 'AM',
+ pm: 'PM',
+ midnight: 'midnight',
+ noon: 'noon',
+ morning: 'in the morning',
+ afternoon: 'in the afternoon',
+ evening: 'in the evening',
+ night: 'at night'
+ },
+ wide: {
+ am: 'a.m.',
+ pm: 'p.m.',
+ midnight: 'midnight',
+ noon: 'noon',
+ morning: 'in the morning',
+ afternoon: 'in the afternoon',
+ evening: 'in the evening',
+ night: 'at night'
+ }
+}
+
+function ordinalNumber(dirtyNumber, _dirtyOptions) {
+ var number = Number(dirtyNumber)
+
+ // If ordinal numbers depend on context, for example,
+ // if they are different for different grammatical genders,
+ // use `options.unit`:
+ //
+ // var options = dirtyOptions || {}
+ // var unit = String(options.unit)
+ //
+ // where `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',
+ // 'day', 'hour', 'minute', 'second'
+
+ var rem100 = number % 100
+ if (rem100 > 20 || rem100 < 10) {
+ switch (rem100 % 10) {
+ case 1:
+ return number + 'st'
+ case 2:
+ return number + 'nd'
+ case 3:
+ return number + 'rd'
+ }
+ }
+ return number + 'th'
+}
+
+var localize = {
+ ordinalNumber: ordinalNumber,
+
+ era: buildLocalizeFn({
+ values: eraValues,
+ defaultWidth: 'wide'
+ }),
+
+ quarter: buildLocalizeFn({
+ values: quarterValues,
+ defaultWidth: 'wide',
+ argumentCallback: function(quarter) {
+ return Number(quarter) - 1
+ }
+ }),
+
+ month: buildLocalizeFn({
+ values: monthValues,
+ defaultWidth: 'wide'
+ }),
+
+ day: buildLocalizeFn({
+ values: dayValues,
+ defaultWidth: 'wide'
+ }),
+
+ dayPeriod: buildLocalizeFn({
+ values: dayPeriodValues,
+ defaultWidth: 'wide',
+ formattingValues: formattingDayPeriodValues,
+ defaultFormattingWidth: 'wide'
+ })
+}
+
+export default localize
diff --git a/date-fns/src/locale/en-US/_lib/match/index.js b/date-fns/src/locale/en-US/_lib/match/index.js
new file mode 100644
index 0000000..87acc8b
--- /dev/null
+++ b/date-fns/src/locale/en-US/_lib/match/index.js
@@ -0,0 +1,137 @@
+import buildMatchPatternFn from '../../../_lib/buildMatchPatternFn/index'
+import buildMatchFn from '../../../_lib/buildMatchFn/index'
+
+var matchOrdinalNumberPattern = /^(\d+)(th|st|nd|rd)?/i
+var parseOrdinalNumberPattern = /\d+/i
+
+var matchEraPatterns = {
+ narrow: /^(b|a)/i,
+ abbreviated: /^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,
+ wide: /^(before christ|before common era|anno domini|common era)/i
+}
+var parseEraPatterns = {
+ any: [/^b/i, /^(a|c)/i]
+}
+
+var matchQuarterPatterns = {
+ narrow: /^[1234]/i,
+ abbreviated: /^q[1234]/i,
+ wide: /^[1234](th|st|nd|rd)? quarter/i
+}
+var parseQuarterPatterns = {
+ any: [/1/i, /2/i, /3/i, /4/i]
+}
+
+var matchMonthPatterns = {
+ narrow: /^[jfmasond]/i,
+ abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,
+ wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i
+}
+var parseMonthPatterns = {
+ narrow: [
+ /^j/i,
+ /^f/i,
+ /^m/i,
+ /^a/i,
+ /^m/i,
+ /^j/i,
+ /^j/i,
+ /^a/i,
+ /^s/i,
+ /^o/i,
+ /^n/i,
+ /^d/i
+ ],
+ any: [
+ /^ja/i,
+ /^f/i,
+ /^mar/i,
+ /^ap/i,
+ /^may/i,
+ /^jun/i,
+ /^jul/i,
+ /^au/i,
+ /^s/i,
+ /^o/i,
+ /^n/i,
+ /^d/i
+ ]
+}
+
+var matchDayPatterns = {
+ narrow: /^[smtwf]/i,
+ short: /^(su|mo|tu|we|th|fr|sa)/i,
+ abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,
+ wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i
+}
+var parseDayPatterns = {
+ narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],
+ any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i]
+}
+
+var matchDayPeriodPatterns = {
+ narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,
+ any: /^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i
+}
+var parseDayPeriodPatterns = {
+ any: {
+ am: /^a/i,
+ pm: /^p/i,
+ midnight: /^mi/i,
+ noon: /^no/i,
+ morning: /morning/i,
+ afternoon: /afternoon/i,
+ evening: /evening/i,
+ night: /night/i
+ }
+}
+
+var match = {
+ ordinalNumber: buildMatchPatternFn({
+ matchPattern: matchOrdinalNumberPattern,
+ parsePattern: parseOrdinalNumberPattern,
+ valueCallback: function(value) {
+ return parseInt(value, 10)
+ }
+ }),
+
+ era: buildMatchFn({
+ matchPatterns: matchEraPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseEraPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ quarter: buildMatchFn({
+ matchPatterns: matchQuarterPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseQuarterPatterns,
+ defaultParseWidth: 'any',
+ valueCallback: function(index) {
+ return index + 1
+ }
+ }),
+
+ month: buildMatchFn({
+ matchPatterns: matchMonthPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseMonthPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ day: buildMatchFn({
+ matchPatterns: matchDayPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseDayPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ dayPeriod: buildMatchFn({
+ matchPatterns: matchDayPeriodPatterns,
+ defaultMatchWidth: 'any',
+ parsePatterns: parseDayPeriodPatterns,
+ defaultParseWidth: 'any'
+ })
+}
+
+export default match
diff --git a/date-fns/src/locale/en-US/index.d.ts b/date-fns/src/locale/en-US/index.d.ts
new file mode 100644
index 0000000..967f257
--- /dev/null
+++ b/date-fns/src/locale/en-US/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { enUS } from 'date-fns/locale'
+export default enUS
diff --git a/date-fns/src/locale/en-US/index.js b/date-fns/src/locale/en-US/index.js
new file mode 100644
index 0000000..944103c
--- /dev/null
+++ b/date-fns/src/locale/en-US/index.js
@@ -0,0 +1,29 @@
+import formatDistance from './_lib/formatDistance/index'
+import formatLong from './_lib/formatLong/index'
+import formatRelative from './_lib/formatRelative/index'
+import localize from './_lib/localize/index'
+import match from './_lib/match/index'
+
+/**
+ * @type {Locale}
+ * @category Locales
+ * @summary English locale (United States).
+ * @language English
+ * @iso-639-2 eng
+ * @author Sasha Koss [@kossnocorp]{@link https://github.com/kossnocorp}
+ * @author Lesha Koss [@leshakoss]{@link https://github.com/leshakoss}
+ */
+var locale = {
+ code: 'en-US',
+ formatDistance: formatDistance,
+ formatLong: formatLong,
+ formatRelative: formatRelative,
+ localize: localize,
+ match: match,
+ options: {
+ weekStartsOn: 0 /* Sunday */,
+ firstWeekContainsDate: 1
+ }
+}
+
+export default locale
diff --git a/date-fns/src/locale/en-US/index.js.flow b/date-fns/src/locale/en-US/index.js.flow
new file mode 100644
index 0000000..b9dfe66
--- /dev/null
+++ b/date-fns/src/locale/en-US/index.js.flow
@@ -0,0 +1,35 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+declare module.exports: Locale
diff --git a/date-fns/src/locale/en-US/snapshot.md b/date-fns/src/locale/en-US/snapshot.md
new file mode 100644
index 0000000..19e6dcb
--- /dev/null
+++ b/date-fns/src/locale/en-US/snapshot.md
@@ -0,0 +1,304 @@
+# English (en-US) locale
+
+## `format` and `parse`
+
+| Title | Token string | Date | `format` result | `parse` result |
+| ------------------------------- | ------------ | ------------------------ | ------------------------------------------------------- | ------------------------ |
+| Calendar year | yo | 1987-02-11T12:13:14.015Z | 1987th | 1987-01-01T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 5th | 0005-01-01T00:00:00.000Z |
+| Local week-numbering year | Yo | 1987-02-11T12:13:14.015Z | 1987th | 1986-12-28T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 5th | 0004-12-26T00:00:00.000Z |
+| Quarter (formatting) | Qo | 2019-01-01T12:13:14.015Z | 1st | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2nd | 2019-04-01T00:00:00.000Z |
+| | QQQ | 2019-01-01T12:13:14.015Z | Q1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | Q2 | 2019-04-01T00:00:00.000Z |
+| | QQQQ | 2019-01-01T12:13:14.015Z | 1st quarter | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2nd quarter | 2019-04-01T00:00:00.000Z |
+| | QQQQQ | 2019-01-01T12:13:14.015Z | 1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2 | 2019-04-01T00:00:00.000Z |
+| Quarter (stand-alone) | qo | 2019-01-01T12:13:14.015Z | 1st | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2nd | 2019-04-01T00:00:00.000Z |
+| | qqq | 2019-01-01T12:13:14.015Z | Q1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | Q2 | 2019-04-01T00:00:00.000Z |
+| | qqqq | 2019-01-01T12:13:14.015Z | 1st quarter | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2nd quarter | 2019-04-01T00:00:00.000Z |
+| Month (formatting) | Mo | 2019-02-11T12:13:14.015Z | 2nd | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7th | 2019-07-01T00:00:00.000Z |
+| | MMM | 2019-02-11T12:13:14.015Z | Feb | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | Jul | 2019-07-01T00:00:00.000Z |
+| | MMMM | 2019-02-11T12:13:14.015Z | February | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | July | 2019-07-01T00:00:00.000Z |
+| | MMMMM | 2019-02-11T12:13:14.015Z | F | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | J | 2019-01-01T00:00:00.000Z |
+| Month (stand-alone) | Lo | 2019-02-11T12:13:14.015Z | 2nd | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7th | 2019-07-01T00:00:00.000Z |
+| | LLL | 2019-02-11T12:13:14.015Z | Feb | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | Jul | 2019-07-01T00:00:00.000Z |
+| | LLLL | 2019-02-11T12:13:14.015Z | February | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | July | 2019-07-01T00:00:00.000Z |
+| | LLLLL | 2019-02-11T12:13:14.015Z | F | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | J | 2019-01-01T00:00:00.000Z |
+| Local week of year | wo | 2019-01-01T12:13:14.015Z | 1st | 2018-12-30T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 49th | 2019-12-01T00:00:00.000Z |
+| ISO week of year | Io | 2019-01-01T12:13:14.015Z | 1st | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48th | 2019-11-25T00:00:00.000Z |
+| Day of month | do | 2019-02-11T12:13:14.015Z | 11th | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-28T12:13:14.015Z | 28th | 2019-02-28T00:00:00.000Z |
+| Day of year | Do | 2019-02-11T12:13:14.015Z | 42nd | 2019-02-11T00:00:00.000Z |
+| | | 2019-12-31T12:13:14.015Z | 365th | 2019-12-31T00:00:00.000Z |
+| Day of week (formatting) | E | 2019-02-11T12:13:14.015Z | Mon | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Fri | 2019-02-15T00:00:00.000Z |
+| | EE | 2019-02-11T12:13:14.015Z | Mon | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Fri | 2019-02-15T00:00:00.000Z |
+| | EEE | 2019-02-11T12:13:14.015Z | Mon | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Fri | 2019-02-15T00:00:00.000Z |
+| | EEEE | 2019-02-11T12:13:14.015Z | Monday | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Friday | 2019-02-15T00:00:00.000Z |
+| | EEEEE | 2019-02-11T12:13:14.015Z | M | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | F | 2019-02-15T00:00:00.000Z |
+| | EEEEEE | 2019-02-11T12:13:14.015Z | Mo | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Fr | 2019-02-15T00:00:00.000Z |
+| ISO day of week (formatting) | io | 2019-02-11T12:13:14.015Z | 1st | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5th | 2019-02-15T00:00:00.000Z |
+| | iii | 2019-02-11T12:13:14.015Z | Mon | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Fri | 2019-02-15T00:00:00.000Z |
+| | iiii | 2019-02-11T12:13:14.015Z | Monday | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Friday | 2019-02-15T00:00:00.000Z |
+| | iiiii | 2019-02-11T12:13:14.015Z | M | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | F | 2019-02-15T00:00:00.000Z |
+| | iiiiii | 2019-02-11T12:13:14.015Z | Mo | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Fr | 2019-02-15T00:00:00.000Z |
+| Local day of week (formatting) | eo | 2019-02-11T12:13:14.015Z | 2nd | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 6th | 2019-02-15T00:00:00.000Z |
+| | eee | 2019-02-11T12:13:14.015Z | Mon | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Fri | 2019-02-15T00:00:00.000Z |
+| | eeee | 2019-02-11T12:13:14.015Z | Monday | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Friday | 2019-02-15T00:00:00.000Z |
+| | eeeee | 2019-02-11T12:13:14.015Z | M | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | F | 2019-02-15T00:00:00.000Z |
+| | eeeeee | 2019-02-11T12:13:14.015Z | Mo | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Fr | 2019-02-15T00:00:00.000Z |
+| Local day of week (stand-alone) | co | 2019-02-11T12:13:14.015Z | 2nd | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 6th | 2019-02-15T00:00:00.000Z |
+| | ccc | 2019-02-11T12:13:14.015Z | Mon | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Fri | 2019-02-15T00:00:00.000Z |
+| | cccc | 2019-02-11T12:13:14.015Z | Monday | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Friday | 2019-02-15T00:00:00.000Z |
+| | ccccc | 2019-02-11T12:13:14.015Z | M | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | F | 2019-02-15T00:00:00.000Z |
+| | cccccc | 2019-02-11T12:13:14.015Z | Mo | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Fr | 2019-02-15T00:00:00.000Z |
+| AM, PM | a | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | aa | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | aaa | 2019-02-11T11:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | aaaa | 2019-02-11T11:13:14.015Z | a.m. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | p.m. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | p.m. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | a.m. | 2019-02-11T00:00:00.000Z |
+| | aaaaa | 2019-02-11T11:13:14.015Z | a | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | p | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | p | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | a | 2019-02-11T00:00:00.000Z |
+| AM, PM, noon, midnight | b | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | bb | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | bbb | 2019-02-11T11:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | bbbb | 2019-02-11T11:13:14.015Z | a.m. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | p.m. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | p.m. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | a.m. | 2019-02-11T00:00:00.000Z |
+| | bbbbb | 2019-02-11T11:13:14.015Z | a | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | p | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | p | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | a | 2019-02-11T00:00:00.000Z |
+| Flexible day period | B | 2019-02-11T11:13:14.015Z | in the morning | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | in the afternoon | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | in the evening | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | at night | 2019-02-11T00:00:00.000Z |
+| | BB | 2019-02-11T11:13:14.015Z | in the morning | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | in the afternoon | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | in the evening | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | at night | 2019-02-11T00:00:00.000Z |
+| | BBB | 2019-02-11T11:13:14.015Z | in the morning | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | in the afternoon | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | in the evening | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | at night | 2019-02-11T00:00:00.000Z |
+| | BBBB | 2019-02-11T11:13:14.015Z | in the morning | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | in the afternoon | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | in the evening | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | at night | 2019-02-11T00:00:00.000Z |
+| | BBBBB | 2019-02-11T11:13:14.015Z | in the morning | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | in the afternoon | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | in the evening | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | at night | Invalid Date |
+| Hour [1-12] | ho | 2019-02-11T11:13:14.015Z | 11th | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11th | 2019-02-11T23:00:00.000Z |
+| Hour [0-23] | Ho | 2019-02-11T11:13:14.015Z | 11th | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23rd | 2019-02-11T23:00:00.000Z |
+| Hour [0-11] | Ko | 2019-02-11T11:13:14.015Z | 11th | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11th | 2019-02-11T23:00:00.000Z |
+| Hour [1-24] | ko | 2019-02-11T11:13:14.015Z | 11th | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23rd | 2019-02-11T23:00:00.000Z |
+| Minute | mo | 2019-01-01T12:01:14.015Z | 1st | 2019-01-01T12:01:00.000Z |
+| | | 2019-04-01T12:55:14.015Z | 55th | 2019-04-01T12:55:00.000Z |
+| Second | so | 2019-01-01T12:13:01.015Z | 1st | 2019-01-01T12:13:01.000Z |
+| | | 2019-04-01T12:13:55.015Z | 55th | 2019-04-01T12:13:55.000Z |
+| Long localized date | P | 1987-02-11T12:13:14.015Z | 02/11/1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 05/29/1453 | 1453-05-29T00:00:00.000Z |
+| | PP | 1987-02-11T12:13:14.015Z | Feb 11, 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | May 29, 1453 | 1453-05-29T00:00:00.000Z |
+| | PPP | 1987-02-11T12:13:14.015Z | February 11th, 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | May 29th, 1453 | 1453-05-29T00:00:00.000Z |
+| | PPPP | 1987-02-11T12:13:14.015Z | Wednesday, February 11th, 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | Sunday, May 29th, 1453 | 1453-05-29T00:00:00.000Z |
+| Long localized time | p | 1987-02-11T12:13:14.015Z | 12:13 PM | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 11:59 PM | 1453-05-29T23:59:00.000Z |
+| | pp | 1987-02-11T12:13:14.015Z | 12:13:14 PM | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 11:59:59 PM | 1453-05-29T23:59:59.000Z |
+| | ppp | 1987-02-11T12:13:14.015Z | 12:13:14 PM GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 11:59:59 PM GMT+0 | Errored |
+| | pppp | 1987-02-11T12:13:14.015Z | 12:13:14 PM GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 11:59:59 PM GMT+00:00 | Errored |
+| Combination of date and time | Pp | 1987-02-11T12:13:14.015Z | 02/11/1987, 12:13 PM | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 05/29/1453, 11:59 PM | 1453-05-29T23:59:00.000Z |
+| | PPpp | 1987-02-11T12:13:14.015Z | Feb 11, 1987, 12:13:14 PM | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | May 29, 1453, 11:59:59 PM | 1453-05-29T23:59:59.000Z |
+| | PPPppp | 1987-02-11T12:13:14.015Z | February 11th, 1987 at 12:13:14 PM GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | May 29th, 1453 at 11:59:59 PM GMT+0 | Errored |
+| | PPPPpppp | 1987-02-11T12:13:14.015Z | Wednesday, February 11th, 1987 at 12:13:14 PM GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | Sunday, May 29th, 1453 at 11:59:59 PM GMT+00:00 | Errored |
+
+## `formatDistance`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `includeSeconds: true` | `addSuffix: true` |
+| ------------------------ | ------------------ | ---------------------- | ---------------------- |
+| 2006-01-01T00:00:00.000Z | about 6 years | about 6 years | in about 6 years |
+| 2005-01-01T00:00:00.000Z | about 5 years | about 5 years | in about 5 years |
+| 2004-01-01T00:00:00.000Z | about 4 years | about 4 years | in about 4 years |
+| 2003-01-01T00:00:00.000Z | about 3 years | about 3 years | in about 3 years |
+| 2002-01-01T00:00:00.000Z | about 2 years | about 2 years | in about 2 years |
+| 2001-06-01T00:00:00.000Z | over 1 year | over 1 year | in over 1 year |
+| 2001-02-01T00:00:00.000Z | about 1 year | about 1 year | in about 1 year |
+| 2001-01-01T00:00:00.000Z | about 1 year | about 1 year | in about 1 year |
+| 2000-06-01T00:00:00.000Z | 5 months | 5 months | in 5 months |
+| 2000-03-01T00:00:00.000Z | 2 months | 2 months | in 2 months |
+| 2000-02-01T00:00:00.000Z | about 1 month | about 1 month | in about 1 month |
+| 2000-01-15T00:00:00.000Z | 14 days | 14 days | in 14 days |
+| 2000-01-02T00:00:00.000Z | 1 day | 1 day | in 1 day |
+| 2000-01-01T06:00:00.000Z | about 6 hours | about 6 hours | in about 6 hours |
+| 2000-01-01T01:00:00.000Z | about 1 hour | about 1 hour | in about 1 hour |
+| 2000-01-01T00:45:00.000Z | about 1 hour | about 1 hour | in about 1 hour |
+| 2000-01-01T00:30:00.000Z | 30 minutes | 30 minutes | in 30 minutes |
+| 2000-01-01T00:15:00.000Z | 15 minutes | 15 minutes | in 15 minutes |
+| 2000-01-01T00:01:00.000Z | 1 minute | 1 minute | in 1 minute |
+| 2000-01-01T00:00:25.000Z | less than a minute | half a minute | in less than a minute |
+| 2000-01-01T00:00:15.000Z | less than a minute | less than 20 seconds | in less than a minute |
+| 2000-01-01T00:00:05.000Z | less than a minute | less than 10 seconds | in less than a minute |
+| 2000-01-01T00:00:00.000Z | less than a minute | less than 5 seconds | less than a minute ago |
+| 1999-12-31T23:59:55.000Z | less than a minute | less than 10 seconds | less than a minute ago |
+| 1999-12-31T23:59:45.000Z | less than a minute | less than 20 seconds | less than a minute ago |
+| 1999-12-31T23:59:35.000Z | less than a minute | half a minute | less than a minute ago |
+| 1999-12-31T23:59:00.000Z | 1 minute | 1 minute | 1 minute ago |
+| 1999-12-31T23:45:00.000Z | 15 minutes | 15 minutes | 15 minutes ago |
+| 1999-12-31T23:30:00.000Z | 30 minutes | 30 minutes | 30 minutes ago |
+| 1999-12-31T23:15:00.000Z | about 1 hour | about 1 hour | about 1 hour ago |
+| 1999-12-31T23:00:00.000Z | about 1 hour | about 1 hour | about 1 hour ago |
+| 1999-12-31T18:00:00.000Z | about 6 hours | about 6 hours | about 6 hours ago |
+| 1999-12-30T00:00:00.000Z | 2 days | 2 days | 2 days ago |
+| 1999-12-15T00:00:00.000Z | 17 days | 17 days | 17 days ago |
+| 1999-12-01T00:00:00.000Z | about 1 month | about 1 month | about 1 month ago |
+| 1999-11-01T00:00:00.000Z | 2 months | 2 months | 2 months ago |
+| 1999-06-01T00:00:00.000Z | 7 months | 7 months | 7 months ago |
+| 1999-01-01T00:00:00.000Z | about 1 year | about 1 year | about 1 year ago |
+| 1998-12-01T00:00:00.000Z | about 1 year | about 1 year | about 1 year ago |
+| 1998-06-01T00:00:00.000Z | over 1 year | over 1 year | over 1 year ago |
+| 1998-01-01T00:00:00.000Z | about 2 years | about 2 years | about 2 years ago |
+| 1997-01-01T00:00:00.000Z | about 3 years | about 3 years | about 3 years ago |
+| 1996-01-01T00:00:00.000Z | about 4 years | about 4 years | about 4 years ago |
+| 1995-01-01T00:00:00.000Z | about 5 years | about 5 years | about 5 years ago |
+| 1994-01-01T00:00:00.000Z | about 6 years | about 6 years | about 6 years ago |
+
+## `formatDistanceStrict`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `addSuffix: true` | With forced unit (i.e. `hour`) |
+| ------------------------ | ---------- | ----------------- | ------------------------------ |
+| 2006-01-01T00:00:00.000Z | 6 years | in 6 years | 52608 hours |
+| 2005-01-01T00:00:00.000Z | 5 years | in 5 years | 43848 hours |
+| 2004-01-01T00:00:00.000Z | 4 years | in 4 years | 35064 hours |
+| 2003-01-01T00:00:00.000Z | 3 years | in 3 years | 26304 hours |
+| 2002-01-01T00:00:00.000Z | 2 years | in 2 years | 17544 hours |
+| 2001-06-01T00:00:00.000Z | 1 year | in 1 year | 12408 hours |
+| 2001-02-01T00:00:00.000Z | 1 year | in 1 year | 9528 hours |
+| 2001-01-01T00:00:00.000Z | 1 year | in 1 year | 8784 hours |
+| 2000-06-01T00:00:00.000Z | 5 months | in 5 months | 3648 hours |
+| 2000-03-01T00:00:00.000Z | 2 months | in 2 months | 1440 hours |
+| 2000-02-01T00:00:00.000Z | 1 month | in 1 month | 744 hours |
+| 2000-01-15T00:00:00.000Z | 14 days | in 14 days | 336 hours |
+| 2000-01-02T00:00:00.000Z | 1 day | in 1 day | 24 hours |
+| 2000-01-01T06:00:00.000Z | 6 hours | in 6 hours | 6 hours |
+| 2000-01-01T01:00:00.000Z | 1 hour | in 1 hour | 1 hour |
+| 2000-01-01T00:45:00.000Z | 45 minutes | in 45 minutes | 1 hour |
+| 2000-01-01T00:30:00.000Z | 30 minutes | in 30 minutes | 1 hour |
+| 2000-01-01T00:15:00.000Z | 15 minutes | in 15 minutes | 0 hours |
+| 2000-01-01T00:01:00.000Z | 1 minute | in 1 minute | 0 hours |
+| 2000-01-01T00:00:25.000Z | 25 seconds | in 25 seconds | 0 hours |
+| 2000-01-01T00:00:15.000Z | 15 seconds | in 15 seconds | 0 hours |
+| 2000-01-01T00:00:05.000Z | 5 seconds | in 5 seconds | 0 hours |
+| 2000-01-01T00:00:00.000Z | 0 seconds | 0 seconds ago | 0 hours |
+| 1999-12-31T23:59:55.000Z | 5 seconds | 5 seconds ago | 0 hours |
+| 1999-12-31T23:59:45.000Z | 15 seconds | 15 seconds ago | 0 hours |
+| 1999-12-31T23:59:35.000Z | 25 seconds | 25 seconds ago | 0 hours |
+| 1999-12-31T23:59:00.000Z | 1 minute | 1 minute ago | 0 hours |
+| 1999-12-31T23:45:00.000Z | 15 minutes | 15 minutes ago | 0 hours |
+| 1999-12-31T23:30:00.000Z | 30 minutes | 30 minutes ago | 1 hour |
+| 1999-12-31T23:15:00.000Z | 45 minutes | 45 minutes ago | 1 hour |
+| 1999-12-31T23:00:00.000Z | 1 hour | 1 hour ago | 1 hour |
+| 1999-12-31T18:00:00.000Z | 6 hours | 6 hours ago | 6 hours |
+| 1999-12-30T00:00:00.000Z | 2 days | 2 days ago | 48 hours |
+| 1999-12-15T00:00:00.000Z | 17 days | 17 days ago | 408 hours |
+| 1999-12-01T00:00:00.000Z | 1 month | 1 month ago | 744 hours |
+| 1999-11-01T00:00:00.000Z | 2 months | 2 months ago | 1464 hours |
+| 1999-06-01T00:00:00.000Z | 7 months | 7 months ago | 5136 hours |
+| 1999-01-01T00:00:00.000Z | 1 year | 1 year ago | 8760 hours |
+| 1998-12-01T00:00:00.000Z | 1 year | 1 year ago | 9504 hours |
+| 1998-06-01T00:00:00.000Z | 2 years | 2 years ago | 13896 hours |
+| 1998-01-01T00:00:00.000Z | 2 years | 2 years ago | 17520 hours |
+| 1997-01-01T00:00:00.000Z | 3 years | 3 years ago | 26280 hours |
+| 1996-01-01T00:00:00.000Z | 4 years | 4 years ago | 35064 hours |
+| 1995-01-01T00:00:00.000Z | 5 years | 5 years ago | 43824 hours |
+| 1994-01-01T00:00:00.000Z | 6 years | 6 years ago | 52584 hours |
+
+## `formatRelative`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result |
+| ------------------------ | ----------------------- |
+| 2000-01-10T00:00:00.000Z | 01/10/2000 |
+| 2000-01-05T00:00:00.000Z | Wednesday at 12:00 AM |
+| 2000-01-02T00:00:00.000Z | tomorrow at 12:00 AM |
+| 2000-01-01T00:00:00.000Z | today at 12:00 AM |
+| 1999-12-31T00:00:00.000Z | yesterday at 12:00 AM |
+| 1999-12-27T00:00:00.000Z | last Monday at 12:00 AM |
+| 1999-12-21T00:00:00.000Z | 12/21/1999 |
diff --git a/date-fns/src/locale/en-ZA/_lib/formatLong/index.js b/date-fns/src/locale/en-ZA/_lib/formatLong/index.js
new file mode 100644
index 0000000..8e674cd
--- /dev/null
+++ b/date-fns/src/locale/en-ZA/_lib/formatLong/index.js
@@ -0,0 +1,41 @@
+import buildFormatLongFn from '../../../_lib/buildFormatLongFn/index'
+
+var dateFormats = {
+ full: 'EEEE, d MMMM yyyy',
+ long: 'd MMMM yyyy',
+ medium: 'd MMM yyyy',
+ short: 'dd/MM/yyyy'
+}
+
+var timeFormats = {
+ full: 'h:mm:ss a zzzz',
+ long: 'h:mm:ss a z',
+ medium: 'h:mm:ss a',
+ short: 'h:mm a'
+}
+
+var dateTimeFormats = {
+ full: "{{date}} 'at' {{time}}",
+ long: "{{date}} 'at' {{time}}",
+ medium: '{{date}}, {{time}}',
+ short: '{{date}}, {{time}}'
+}
+
+var formatLong = {
+ date: buildFormatLongFn({
+ formats: dateFormats,
+ defaultWidth: 'full'
+ }),
+
+ time: buildFormatLongFn({
+ formats: timeFormats,
+ defaultWidth: 'full'
+ }),
+
+ dateTime: buildFormatLongFn({
+ formats: dateTimeFormats,
+ defaultWidth: 'full'
+ })
+}
+
+export default formatLong
diff --git a/date-fns/src/locale/en-ZA/index.d.ts b/date-fns/src/locale/en-ZA/index.d.ts
new file mode 100644
index 0000000..ebdd1c8
--- /dev/null
+++ b/date-fns/src/locale/en-ZA/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { enZA } from 'date-fns/locale'
+export default enZA
diff --git a/date-fns/src/locale/en-ZA/index.js b/date-fns/src/locale/en-ZA/index.js
new file mode 100644
index 0000000..4d4f300
--- /dev/null
+++ b/date-fns/src/locale/en-ZA/index.js
@@ -0,0 +1,28 @@
+import formatDistance from '../en-US/_lib/formatDistance/index'
+import formatLong from './_lib/formatLong/index'
+import formatRelative from '../en-US/_lib/formatRelative/index'
+import localize from '../en-US/_lib/localize/index'
+import match from '../en-US/_lib/match/index'
+
+/**
+ * @type {Locale}
+ * @category Locales
+ * @summary English locale (South Africa).
+ * @language English
+ * @iso-639-2 eng
+ * @author Shaila Kavrakova [@shaykav]{@link https://github.com/shaykav}
+ */
+var locale = {
+ code: 'en-ZA',
+ formatDistance: formatDistance,
+ formatLong: formatLong,
+ formatRelative: formatRelative,
+ localize: localize,
+ match: match,
+ options: {
+ weekStartsOn: 0, // Sunday is the first day of the week.
+ firstWeekContainsDate: 1 // The week that contains Jan 1st is the first week of the year.
+ }
+}
+
+export default locale
diff --git a/date-fns/src/locale/en-ZA/index.js.flow b/date-fns/src/locale/en-ZA/index.js.flow
new file mode 100644
index 0000000..b9dfe66
--- /dev/null
+++ b/date-fns/src/locale/en-ZA/index.js.flow
@@ -0,0 +1,35 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+declare module.exports: Locale
diff --git a/date-fns/src/locale/en-ZA/snapshot.md b/date-fns/src/locale/en-ZA/snapshot.md
new file mode 100644
index 0000000..e4eace2
--- /dev/null
+++ b/date-fns/src/locale/en-ZA/snapshot.md
@@ -0,0 +1,304 @@
+# English (en-ZA) locale
+
+## `format` and `parse`
+
+| Title | Token string | Date | `format` result | `parse` result |
+| ------------------------------- | ------------ | ------------------------ | ---------------------------------------------------- | ------------------------ |
+| Calendar year | yo | 1987-02-11T12:13:14.015Z | 1987th | 1987-01-01T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 5th | 0005-01-01T00:00:00.000Z |
+| Local week-numbering year | Yo | 1987-02-11T12:13:14.015Z | 1987th | 1986-12-28T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 5th | 0004-12-26T00:00:00.000Z |
+| Quarter (formatting) | Qo | 2019-01-01T12:13:14.015Z | 1st | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2nd | 2019-04-01T00:00:00.000Z |
+| | QQQ | 2019-01-01T12:13:14.015Z | Q1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | Q2 | 2019-04-01T00:00:00.000Z |
+| | QQQQ | 2019-01-01T12:13:14.015Z | 1st quarter | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2nd quarter | 2019-04-01T00:00:00.000Z |
+| | QQQQQ | 2019-01-01T12:13:14.015Z | 1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2 | 2019-04-01T00:00:00.000Z |
+| Quarter (stand-alone) | qo | 2019-01-01T12:13:14.015Z | 1st | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2nd | 2019-04-01T00:00:00.000Z |
+| | qqq | 2019-01-01T12:13:14.015Z | Q1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | Q2 | 2019-04-01T00:00:00.000Z |
+| | qqqq | 2019-01-01T12:13:14.015Z | 1st quarter | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2nd quarter | 2019-04-01T00:00:00.000Z |
+| Month (formatting) | Mo | 2019-02-11T12:13:14.015Z | 2nd | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7th | 2019-07-01T00:00:00.000Z |
+| | MMM | 2019-02-11T12:13:14.015Z | Feb | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | Jul | 2019-07-01T00:00:00.000Z |
+| | MMMM | 2019-02-11T12:13:14.015Z | February | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | July | 2019-07-01T00:00:00.000Z |
+| | MMMMM | 2019-02-11T12:13:14.015Z | F | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | J | 2019-01-01T00:00:00.000Z |
+| Month (stand-alone) | Lo | 2019-02-11T12:13:14.015Z | 2nd | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7th | 2019-07-01T00:00:00.000Z |
+| | LLL | 2019-02-11T12:13:14.015Z | Feb | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | Jul | 2019-07-01T00:00:00.000Z |
+| | LLLL | 2019-02-11T12:13:14.015Z | February | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | July | 2019-07-01T00:00:00.000Z |
+| | LLLLL | 2019-02-11T12:13:14.015Z | F | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | J | 2019-01-01T00:00:00.000Z |
+| Local week of year | wo | 2019-01-01T12:13:14.015Z | 1st | 2018-12-30T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 49th | 2019-12-01T00:00:00.000Z |
+| ISO week of year | Io | 2019-01-01T12:13:14.015Z | 1st | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48th | 2019-11-25T00:00:00.000Z |
+| Day of month | do | 2019-02-11T12:13:14.015Z | 11th | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-28T12:13:14.015Z | 28th | 2019-02-28T00:00:00.000Z |
+| Day of year | Do | 2019-02-11T12:13:14.015Z | 42nd | 2019-02-11T00:00:00.000Z |
+| | | 2019-12-31T12:13:14.015Z | 365th | 2019-12-31T00:00:00.000Z |
+| Day of week (formatting) | E | 2019-02-11T12:13:14.015Z | Mon | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Fri | 2019-02-15T00:00:00.000Z |
+| | EE | 2019-02-11T12:13:14.015Z | Mon | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Fri | 2019-02-15T00:00:00.000Z |
+| | EEE | 2019-02-11T12:13:14.015Z | Mon | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Fri | 2019-02-15T00:00:00.000Z |
+| | EEEE | 2019-02-11T12:13:14.015Z | Monday | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Friday | 2019-02-15T00:00:00.000Z |
+| | EEEEE | 2019-02-11T12:13:14.015Z | M | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | F | 2019-02-15T00:00:00.000Z |
+| | EEEEEE | 2019-02-11T12:13:14.015Z | Mo | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Fr | 2019-02-15T00:00:00.000Z |
+| ISO day of week (formatting) | io | 2019-02-11T12:13:14.015Z | 1st | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5th | 2019-02-15T00:00:00.000Z |
+| | iii | 2019-02-11T12:13:14.015Z | Mon | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Fri | 2019-02-15T00:00:00.000Z |
+| | iiii | 2019-02-11T12:13:14.015Z | Monday | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Friday | 2019-02-15T00:00:00.000Z |
+| | iiiii | 2019-02-11T12:13:14.015Z | M | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | F | 2019-02-15T00:00:00.000Z |
+| | iiiiii | 2019-02-11T12:13:14.015Z | Mo | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Fr | 2019-02-15T00:00:00.000Z |
+| Local day of week (formatting) | eo | 2019-02-11T12:13:14.015Z | 2nd | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 6th | 2019-02-15T00:00:00.000Z |
+| | eee | 2019-02-11T12:13:14.015Z | Mon | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Fri | 2019-02-15T00:00:00.000Z |
+| | eeee | 2019-02-11T12:13:14.015Z | Monday | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Friday | 2019-02-15T00:00:00.000Z |
+| | eeeee | 2019-02-11T12:13:14.015Z | M | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | F | 2019-02-15T00:00:00.000Z |
+| | eeeeee | 2019-02-11T12:13:14.015Z | Mo | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Fr | 2019-02-15T00:00:00.000Z |
+| Local day of week (stand-alone) | co | 2019-02-11T12:13:14.015Z | 2nd | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 6th | 2019-02-15T00:00:00.000Z |
+| | ccc | 2019-02-11T12:13:14.015Z | Mon | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Fri | 2019-02-15T00:00:00.000Z |
+| | cccc | 2019-02-11T12:13:14.015Z | Monday | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Friday | 2019-02-15T00:00:00.000Z |
+| | ccccc | 2019-02-11T12:13:14.015Z | M | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | F | 2019-02-15T00:00:00.000Z |
+| | cccccc | 2019-02-11T12:13:14.015Z | Mo | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Fr | 2019-02-15T00:00:00.000Z |
+| AM, PM | a | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | aa | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | aaa | 2019-02-11T11:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | aaaa | 2019-02-11T11:13:14.015Z | a.m. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | p.m. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | p.m. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | a.m. | 2019-02-11T00:00:00.000Z |
+| | aaaaa | 2019-02-11T11:13:14.015Z | a | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | p | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | p | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | a | 2019-02-11T00:00:00.000Z |
+| AM, PM, noon, midnight | b | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | bb | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | bbb | 2019-02-11T11:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | bbbb | 2019-02-11T11:13:14.015Z | a.m. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | p.m. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | p.m. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | a.m. | 2019-02-11T00:00:00.000Z |
+| | bbbbb | 2019-02-11T11:13:14.015Z | a | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | p | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | p | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | a | 2019-02-11T00:00:00.000Z |
+| Flexible day period | B | 2019-02-11T11:13:14.015Z | in the morning | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | in the afternoon | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | in the evening | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | at night | 2019-02-11T00:00:00.000Z |
+| | BB | 2019-02-11T11:13:14.015Z | in the morning | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | in the afternoon | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | in the evening | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | at night | 2019-02-11T00:00:00.000Z |
+| | BBB | 2019-02-11T11:13:14.015Z | in the morning | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | in the afternoon | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | in the evening | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | at night | 2019-02-11T00:00:00.000Z |
+| | BBBB | 2019-02-11T11:13:14.015Z | in the morning | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | in the afternoon | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | in the evening | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | at night | 2019-02-11T00:00:00.000Z |
+| | BBBBB | 2019-02-11T11:13:14.015Z | in the morning | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | in the afternoon | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | in the evening | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | at night | Invalid Date |
+| Hour [1-12] | ho | 2019-02-11T11:13:14.015Z | 11th | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11th | 2019-02-11T23:00:00.000Z |
+| Hour [0-23] | Ho | 2019-02-11T11:13:14.015Z | 11th | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23rd | 2019-02-11T23:00:00.000Z |
+| Hour [0-11] | Ko | 2019-02-11T11:13:14.015Z | 11th | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11th | 2019-02-11T23:00:00.000Z |
+| Hour [1-24] | ko | 2019-02-11T11:13:14.015Z | 11th | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23rd | 2019-02-11T23:00:00.000Z |
+| Minute | mo | 2019-01-01T12:01:14.015Z | 1st | 2019-01-01T12:01:00.000Z |
+| | | 2019-04-01T12:55:14.015Z | 55th | 2019-04-01T12:55:00.000Z |
+| Second | so | 2019-01-01T12:13:01.015Z | 1st | 2019-01-01T12:13:01.000Z |
+| | | 2019-04-01T12:13:55.015Z | 55th | 2019-04-01T12:13:55.000Z |
+| Long localized date | P | 1987-02-11T12:13:14.015Z | 11/02/1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29/05/1453 | 1453-05-29T00:00:00.000Z |
+| | PP | 1987-02-11T12:13:14.015Z | 11 Feb 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 May 1453 | 1453-05-29T00:00:00.000Z |
+| | PPP | 1987-02-11T12:13:14.015Z | 11 February 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 May 1453 | 1453-05-29T00:00:00.000Z |
+| | PPPP | 1987-02-11T12:13:14.015Z | Wednesday, 11 February 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | Sunday, 29 May 1453 | 1453-05-29T00:00:00.000Z |
+| Long localized time | p | 1987-02-11T12:13:14.015Z | 12:13 PM | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 11:59 PM | 1453-05-29T23:59:00.000Z |
+| | pp | 1987-02-11T12:13:14.015Z | 12:13:14 PM | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 11:59:59 PM | 1453-05-29T23:59:59.000Z |
+| | ppp | 1987-02-11T12:13:14.015Z | 12:13:14 PM GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 11:59:59 PM GMT+0 | Errored |
+| | pppp | 1987-02-11T12:13:14.015Z | 12:13:14 PM GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 11:59:59 PM GMT+00:00 | Errored |
+| Combination of date and time | Pp | 1987-02-11T12:13:14.015Z | 11/02/1987, 12:13 PM | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29/05/1453, 11:59 PM | 1453-05-29T23:59:00.000Z |
+| | PPpp | 1987-02-11T12:13:14.015Z | 11 Feb 1987, 12:13:14 PM | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 May 1453, 11:59:59 PM | 1453-05-29T23:59:59.000Z |
+| | PPPppp | 1987-02-11T12:13:14.015Z | 11 February 1987 at 12:13:14 PM GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 29 May 1453 at 11:59:59 PM GMT+0 | Errored |
+| | PPPPpppp | 1987-02-11T12:13:14.015Z | Wednesday, 11 February 1987 at 12:13:14 PM GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | Sunday, 29 May 1453 at 11:59:59 PM GMT+00:00 | Errored |
+
+## `formatDistance`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `includeSeconds: true` | `addSuffix: true` |
+| ------------------------ | ------------------ | ---------------------- | ---------------------- |
+| 2006-01-01T00:00:00.000Z | about 6 years | about 6 years | in about 6 years |
+| 2005-01-01T00:00:00.000Z | about 5 years | about 5 years | in about 5 years |
+| 2004-01-01T00:00:00.000Z | about 4 years | about 4 years | in about 4 years |
+| 2003-01-01T00:00:00.000Z | about 3 years | about 3 years | in about 3 years |
+| 2002-01-01T00:00:00.000Z | about 2 years | about 2 years | in about 2 years |
+| 2001-06-01T00:00:00.000Z | over 1 year | over 1 year | in over 1 year |
+| 2001-02-01T00:00:00.000Z | about 1 year | about 1 year | in about 1 year |
+| 2001-01-01T00:00:00.000Z | about 1 year | about 1 year | in about 1 year |
+| 2000-06-01T00:00:00.000Z | 5 months | 5 months | in 5 months |
+| 2000-03-01T00:00:00.000Z | 2 months | 2 months | in 2 months |
+| 2000-02-01T00:00:00.000Z | about 1 month | about 1 month | in about 1 month |
+| 2000-01-15T00:00:00.000Z | 14 days | 14 days | in 14 days |
+| 2000-01-02T00:00:00.000Z | 1 day | 1 day | in 1 day |
+| 2000-01-01T06:00:00.000Z | about 6 hours | about 6 hours | in about 6 hours |
+| 2000-01-01T01:00:00.000Z | about 1 hour | about 1 hour | in about 1 hour |
+| 2000-01-01T00:45:00.000Z | about 1 hour | about 1 hour | in about 1 hour |
+| 2000-01-01T00:30:00.000Z | 30 minutes | 30 minutes | in 30 minutes |
+| 2000-01-01T00:15:00.000Z | 15 minutes | 15 minutes | in 15 minutes |
+| 2000-01-01T00:01:00.000Z | 1 minute | 1 minute | in 1 minute |
+| 2000-01-01T00:00:25.000Z | less than a minute | half a minute | in less than a minute |
+| 2000-01-01T00:00:15.000Z | less than a minute | less than 20 seconds | in less than a minute |
+| 2000-01-01T00:00:05.000Z | less than a minute | less than 10 seconds | in less than a minute |
+| 2000-01-01T00:00:00.000Z | less than a minute | less than 5 seconds | less than a minute ago |
+| 1999-12-31T23:59:55.000Z | less than a minute | less than 10 seconds | less than a minute ago |
+| 1999-12-31T23:59:45.000Z | less than a minute | less than 20 seconds | less than a minute ago |
+| 1999-12-31T23:59:35.000Z | less than a minute | half a minute | less than a minute ago |
+| 1999-12-31T23:59:00.000Z | 1 minute | 1 minute | 1 minute ago |
+| 1999-12-31T23:45:00.000Z | 15 minutes | 15 minutes | 15 minutes ago |
+| 1999-12-31T23:30:00.000Z | 30 minutes | 30 minutes | 30 minutes ago |
+| 1999-12-31T23:15:00.000Z | about 1 hour | about 1 hour | about 1 hour ago |
+| 1999-12-31T23:00:00.000Z | about 1 hour | about 1 hour | about 1 hour ago |
+| 1999-12-31T18:00:00.000Z | about 6 hours | about 6 hours | about 6 hours ago |
+| 1999-12-30T00:00:00.000Z | 2 days | 2 days | 2 days ago |
+| 1999-12-15T00:00:00.000Z | 17 days | 17 days | 17 days ago |
+| 1999-12-01T00:00:00.000Z | about 1 month | about 1 month | about 1 month ago |
+| 1999-11-01T00:00:00.000Z | 2 months | 2 months | 2 months ago |
+| 1999-06-01T00:00:00.000Z | 7 months | 7 months | 7 months ago |
+| 1999-01-01T00:00:00.000Z | about 1 year | about 1 year | about 1 year ago |
+| 1998-12-01T00:00:00.000Z | about 1 year | about 1 year | about 1 year ago |
+| 1998-06-01T00:00:00.000Z | over 1 year | over 1 year | over 1 year ago |
+| 1998-01-01T00:00:00.000Z | about 2 years | about 2 years | about 2 years ago |
+| 1997-01-01T00:00:00.000Z | about 3 years | about 3 years | about 3 years ago |
+| 1996-01-01T00:00:00.000Z | about 4 years | about 4 years | about 4 years ago |
+| 1995-01-01T00:00:00.000Z | about 5 years | about 5 years | about 5 years ago |
+| 1994-01-01T00:00:00.000Z | about 6 years | about 6 years | about 6 years ago |
+
+## `formatDistanceStrict`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `addSuffix: true` | With forced unit (i.e. `hour`) |
+| ------------------------ | ---------- | ----------------- | ------------------------------ |
+| 2006-01-01T00:00:00.000Z | 6 years | in 6 years | 52608 hours |
+| 2005-01-01T00:00:00.000Z | 5 years | in 5 years | 43848 hours |
+| 2004-01-01T00:00:00.000Z | 4 years | in 4 years | 35064 hours |
+| 2003-01-01T00:00:00.000Z | 3 years | in 3 years | 26304 hours |
+| 2002-01-01T00:00:00.000Z | 2 years | in 2 years | 17544 hours |
+| 2001-06-01T00:00:00.000Z | 1 year | in 1 year | 12408 hours |
+| 2001-02-01T00:00:00.000Z | 1 year | in 1 year | 9528 hours |
+| 2001-01-01T00:00:00.000Z | 1 year | in 1 year | 8784 hours |
+| 2000-06-01T00:00:00.000Z | 5 months | in 5 months | 3648 hours |
+| 2000-03-01T00:00:00.000Z | 2 months | in 2 months | 1440 hours |
+| 2000-02-01T00:00:00.000Z | 1 month | in 1 month | 744 hours |
+| 2000-01-15T00:00:00.000Z | 14 days | in 14 days | 336 hours |
+| 2000-01-02T00:00:00.000Z | 1 day | in 1 day | 24 hours |
+| 2000-01-01T06:00:00.000Z | 6 hours | in 6 hours | 6 hours |
+| 2000-01-01T01:00:00.000Z | 1 hour | in 1 hour | 1 hour |
+| 2000-01-01T00:45:00.000Z | 45 minutes | in 45 minutes | 1 hour |
+| 2000-01-01T00:30:00.000Z | 30 minutes | in 30 minutes | 1 hour |
+| 2000-01-01T00:15:00.000Z | 15 minutes | in 15 minutes | 0 hours |
+| 2000-01-01T00:01:00.000Z | 1 minute | in 1 minute | 0 hours |
+| 2000-01-01T00:00:25.000Z | 25 seconds | in 25 seconds | 0 hours |
+| 2000-01-01T00:00:15.000Z | 15 seconds | in 15 seconds | 0 hours |
+| 2000-01-01T00:00:05.000Z | 5 seconds | in 5 seconds | 0 hours |
+| 2000-01-01T00:00:00.000Z | 0 seconds | 0 seconds ago | 0 hours |
+| 1999-12-31T23:59:55.000Z | 5 seconds | 5 seconds ago | 0 hours |
+| 1999-12-31T23:59:45.000Z | 15 seconds | 15 seconds ago | 0 hours |
+| 1999-12-31T23:59:35.000Z | 25 seconds | 25 seconds ago | 0 hours |
+| 1999-12-31T23:59:00.000Z | 1 minute | 1 minute ago | 0 hours |
+| 1999-12-31T23:45:00.000Z | 15 minutes | 15 minutes ago | 0 hours |
+| 1999-12-31T23:30:00.000Z | 30 minutes | 30 minutes ago | 1 hour |
+| 1999-12-31T23:15:00.000Z | 45 minutes | 45 minutes ago | 1 hour |
+| 1999-12-31T23:00:00.000Z | 1 hour | 1 hour ago | 1 hour |
+| 1999-12-31T18:00:00.000Z | 6 hours | 6 hours ago | 6 hours |
+| 1999-12-30T00:00:00.000Z | 2 days | 2 days ago | 48 hours |
+| 1999-12-15T00:00:00.000Z | 17 days | 17 days ago | 408 hours |
+| 1999-12-01T00:00:00.000Z | 1 month | 1 month ago | 744 hours |
+| 1999-11-01T00:00:00.000Z | 2 months | 2 months ago | 1464 hours |
+| 1999-06-01T00:00:00.000Z | 7 months | 7 months ago | 5136 hours |
+| 1999-01-01T00:00:00.000Z | 1 year | 1 year ago | 8760 hours |
+| 1998-12-01T00:00:00.000Z | 1 year | 1 year ago | 9504 hours |
+| 1998-06-01T00:00:00.000Z | 2 years | 2 years ago | 13896 hours |
+| 1998-01-01T00:00:00.000Z | 2 years | 2 years ago | 17520 hours |
+| 1997-01-01T00:00:00.000Z | 3 years | 3 years ago | 26280 hours |
+| 1996-01-01T00:00:00.000Z | 4 years | 4 years ago | 35064 hours |
+| 1995-01-01T00:00:00.000Z | 5 years | 5 years ago | 43824 hours |
+| 1994-01-01T00:00:00.000Z | 6 years | 6 years ago | 52584 hours |
+
+## `formatRelative`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result |
+| ------------------------ | ----------------------- |
+| 2000-01-10T00:00:00.000Z | 10/01/2000 |
+| 2000-01-05T00:00:00.000Z | Wednesday at 12:00 AM |
+| 2000-01-02T00:00:00.000Z | tomorrow at 12:00 AM |
+| 2000-01-01T00:00:00.000Z | today at 12:00 AM |
+| 1999-12-31T00:00:00.000Z | yesterday at 12:00 AM |
+| 1999-12-27T00:00:00.000Z | last Monday at 12:00 AM |
+| 1999-12-21T00:00:00.000Z | 21/12/1999 |
diff --git a/date-fns/src/locale/eo/_lib/formatDistance/index.js b/date-fns/src/locale/eo/_lib/formatDistance/index.js
new file mode 100644
index 0000000..bfadf02
--- /dev/null
+++ b/date-fns/src/locale/eo/_lib/formatDistance/index.js
@@ -0,0 +1,101 @@
+var formatDistanceLocale = {
+ lessThanXSeconds: {
+ one: 'malpli ol sekundo',
+ other: 'malpli ol {{count}} sekundoj'
+ },
+
+ xSeconds: {
+ one: '1 sekundo',
+ other: '{{count}} sekundoj'
+ },
+
+ halfAMinute: 'duonminuto',
+
+ lessThanXMinutes: {
+ one: 'malpli ol minuto',
+ other: 'malpli ol {{count}} minutoj'
+ },
+
+ xMinutes: {
+ one: '1 minuto',
+ other: '{{count}} minutoj'
+ },
+
+ aboutXHours: {
+ one: 'proksimume 1 horo',
+ other: 'proksimume {{count}} horoj'
+ },
+
+ xHours: {
+ one: '1 horo',
+ other: '{{count}} horoj'
+ },
+
+ xDays: {
+ one: '1 tago',
+ other: '{{count}} tagoj'
+ },
+
+ aboutXMonths: {
+ one: 'proksimume 1 monato',
+ other: 'proksimume {{count}} monatoj'
+ },
+
+ xWeeks: {
+ one: '1 semajno',
+ other: '{{count}} semajnoj'
+ },
+
+ aboutXWeeks: {
+ one: 'proksimume 1 semajno',
+ other: 'proksimume {{count}} semajnoj'
+ },
+
+ xMonths: {
+ one: '1 monato',
+ other: '{{count}} monatoj'
+ },
+
+ aboutXYears: {
+ one: 'proksimume 1 jaro',
+ other: 'proksimume {{count}} jaroj'
+ },
+
+ xYears: {
+ one: '1 jaro',
+ other: '{{count}} jaroj'
+ },
+
+ overXYears: {
+ one: 'pli ol 1 jaro',
+ other: 'pli ol {{count}} jaroj'
+ },
+
+ almostXYears: {
+ one: 'preskaŭ 1 jaro',
+ other: 'preskaŭ {{count}} jaroj'
+ }
+}
+
+export default function formatDistance(token, count, options) {
+ options = options || {}
+
+ var result
+ if (typeof formatDistanceLocale[token] === 'string') {
+ result = formatDistanceLocale[token]
+ } else if (count === 1) {
+ result = formatDistanceLocale[token].one
+ } else {
+ result = formatDistanceLocale[token].other.replace('{{count}}', count)
+ }
+
+ if (options.addSuffix) {
+ if (options.comparison > 0) {
+ return 'post ' + result
+ } else {
+ return 'antaŭ ' + result
+ }
+ }
+
+ return result
+}
diff --git a/date-fns/src/locale/eo/_lib/formatLong/index.js b/date-fns/src/locale/eo/_lib/formatLong/index.js
new file mode 100644
index 0000000..67e73a7
--- /dev/null
+++ b/date-fns/src/locale/eo/_lib/formatLong/index.js
@@ -0,0 +1,38 @@
+import buildFormatLongFn from '../../../_lib/buildFormatLongFn/index'
+
+var dateFormats = {
+ full: "EEEE, do 'de' MMMM y",
+ long: 'y-MMMM-dd',
+ medium: 'y-MMM-dd',
+ short: 'yyyy-MM-dd'
+}
+
+var timeFormats = {
+ full: "Ho 'horo kaj' m:ss zzzz",
+ long: 'HH:mm:ss z',
+ medium: 'HH:mm:ss',
+ short: 'HH:mm'
+}
+
+var dateTimeFormats = {
+ any: '{{date}} {{time}}'
+}
+
+var formatLong = {
+ date: buildFormatLongFn({
+ formats: dateFormats,
+ defaultWidth: 'full'
+ }),
+
+ time: buildFormatLongFn({
+ formats: timeFormats,
+ defaultWidth: 'full'
+ }),
+
+ dateTime: buildFormatLongFn({
+ formats: dateTimeFormats,
+ defaultWidth: 'any'
+ })
+}
+
+export default formatLong
diff --git a/date-fns/src/locale/eo/_lib/formatRelative/index.js b/date-fns/src/locale/eo/_lib/formatRelative/index.js
new file mode 100644
index 0000000..f9389e4
--- /dev/null
+++ b/date-fns/src/locale/eo/_lib/formatRelative/index.js
@@ -0,0 +1,12 @@
+var formatRelativeLocale = {
+ lastWeek: "'pasinta' eeee 'je' p",
+ yesterday: "'hieraŭ je' p",
+ today: "'hodiaŭ je' p",
+ tomorrow: "'morgaŭ je' p",
+ nextWeek: "eeee 'je' p",
+ other: 'P'
+}
+
+export default function formatRelative(token, _date, _baseDate, _options) {
+ return formatRelativeLocale[token]
+}
diff --git a/date-fns/src/locale/eo/_lib/localize/index.js b/date-fns/src/locale/eo/_lib/localize/index.js
new file mode 100644
index 0000000..d046d81
--- /dev/null
+++ b/date-fns/src/locale/eo/_lib/localize/index.js
@@ -0,0 +1,124 @@
+import buildLocalizeFn from '../../../_lib/buildLocalizeFn/index'
+
+var eraValues = {
+ narrow: ['aK', 'pK'],
+ abbreviated: ['a.K.E.', 'p.K.E.'],
+ wide: ['antaŭ Komuna Erao', 'Komuna Erao']
+}
+
+var quarterValues = {
+ narrow: ['1', '2', '3', '4'],
+ abbreviated: ['K1', 'K2', 'K3', 'K4'],
+ wide: ['1-a kvaronjaro', '2-a kvaronjaro', '3-a kvaronjaro', '4-a kvaronjaro']
+}
+
+var monthValues = {
+ narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],
+ abbreviated: [
+ 'jan',
+ 'feb',
+ 'mar',
+ 'apr',
+ 'maj',
+ 'jun',
+ 'jul',
+ 'aŭg',
+ 'sep',
+ 'okt',
+ 'nov',
+ 'dec'
+ ],
+ wide: [
+ 'januaro',
+ 'februaro',
+ 'marto',
+ 'aprilo',
+ 'majo',
+ 'junio',
+ 'julio',
+ 'aŭgusto',
+ 'septembro',
+ 'oktobro',
+ 'novembro',
+ 'decembro'
+ ]
+}
+
+var dayValues = {
+ narrow: ['D', 'L', 'M', 'M', 'Ĵ', 'V', 'S'],
+ short: ['di', 'lu', 'ma', 'me', 'ĵa', 've', 'sa'],
+ abbreviated: ['dim', 'lun', 'mar', 'mer', 'ĵaŭ', 'ven', 'sab'],
+ wide: ['dimanĉo', 'lundo', 'mardo', 'merkredo', 'ĵaŭdo', 'vendredo', 'sabato']
+}
+
+var dayPeriodValues = {
+ narrow: {
+ am: 'a',
+ pm: 'p',
+ midnight: 'noktomezo',
+ noon: 'tagmezo',
+ morning: 'matene',
+ afternoon: 'posttagmeze',
+ evening: 'vespere',
+ night: 'nokte'
+ },
+ abbreviated: {
+ am: 'a.t.m.',
+ pm: 'p.t.m.',
+ midnight: 'noktomezo',
+ noon: 'tagmezo',
+ morning: 'matene',
+ afternoon: 'posttagmeze',
+ evening: 'vespere',
+ night: 'nokte'
+ },
+ wide: {
+ am: 'antaŭtagmeze',
+ pm: 'posttagmeze',
+ midnight: 'noktomezo',
+ noon: 'tagmezo',
+ morning: 'matene',
+ afternoon: 'posttagmeze',
+ evening: 'vespere',
+ night: 'nokte'
+ }
+}
+
+function ordinalNumber(dirtyNumber) {
+ var number = Number(dirtyNumber)
+ return number + '-a'
+}
+
+var localize = {
+ ordinalNumber: ordinalNumber,
+
+ era: buildLocalizeFn({
+ values: eraValues,
+ defaultWidth: 'wide'
+ }),
+
+ quarter: buildLocalizeFn({
+ values: quarterValues,
+ defaultWidth: 'wide',
+ argumentCallback: function(quarter) {
+ return Number(quarter) - 1
+ }
+ }),
+
+ month: buildLocalizeFn({
+ values: monthValues,
+ defaultWidth: 'wide'
+ }),
+
+ day: buildLocalizeFn({
+ values: dayValues,
+ defaultWidth: 'wide'
+ }),
+
+ dayPeriod: buildLocalizeFn({
+ values: dayPeriodValues,
+ defaultWidth: 'wide'
+ })
+}
+
+export default localize
diff --git a/date-fns/src/locale/eo/_lib/match/index.js b/date-fns/src/locale/eo/_lib/match/index.js
new file mode 100644
index 0000000..a194b0c
--- /dev/null
+++ b/date-fns/src/locale/eo/_lib/match/index.js
@@ -0,0 +1,138 @@
+import buildMatchPatternFn from '../../../_lib/buildMatchPatternFn/index'
+import buildMatchFn from '../../../_lib/buildMatchFn/index'
+
+var matchOrdinalNumberPattern = /^(\d+)(-?a)?/i
+var parseOrdinalNumberPattern = /\d+/i
+
+var matchEraPatterns = {
+ narrow: /^([ap]k)/i,
+ abbreviated: /^([ap]\.?\s?k\.?\s?e\.?)/i,
+ wide: /^((antaǔ |post )?komuna erao)/i
+}
+var parseEraPatterns = {
+ any: [/^a/i, /^[kp]/i]
+}
+
+var matchQuarterPatterns = {
+ narrow: /^[1234]/i,
+ abbreviated: /^k[1234]/i,
+ wide: /^[1234](-?a)? kvaronjaro/i
+}
+var parseQuarterPatterns = {
+ any: [/1/i, /2/i, /3/i, /4/i]
+}
+
+var matchMonthPatterns = {
+ narrow: /^[jfmasond]/i,
+ abbreviated: /^(jan|feb|mar|apr|maj|jun|jul|a(ŭ|ux|uh|u)g|sep|okt|nov|dec)/i,
+ wide: /^(januaro|februaro|marto|aprilo|majo|junio|julio|a(ŭ|ux|uh|u)gusto|septembro|oktobro|novembro|decembro)/i
+}
+var parseMonthPatterns = {
+ narrow: [
+ /^j/i,
+ /^f/i,
+ /^m/i,
+ /^a/i,
+ /^m/i,
+ /^j/i,
+ /^j/i,
+ /^a/i,
+ /^s/i,
+ /^o/i,
+ /^n/i,
+ /^d/i
+ ],
+ any: [
+ /^ja/i,
+ /^f/i,
+ /^mar/i,
+ /^ap/i,
+ /^maj/i,
+ /^jun/i,
+ /^jul/i,
+ /^a(u|ŭ)/i,
+ /^s/i,
+ /^o/i,
+ /^n/i,
+ /^d/i
+ ]
+}
+
+var matchDayPatterns = {
+ narrow: /^[dlmĵjvs]/i,
+ short: /^(di|lu|ma|me|(ĵ|jx|jh|j)a|ve|sa)/i,
+ abbreviated: /^(dim|lun|mar|mer|(ĵ|jx|jh|j)a(ŭ|ux|uh|u)|ven|sab)/i,
+ wide: /^(diman(ĉ|cx|ch|c)o|lundo|mardo|merkredo|(ĵ|jx|jh|j)a(ŭ|ux|uh|u)do|vendredo|sabato)/i
+}
+var parseDayPatterns = {
+ narrow: [/^d/i, /^l/i, /^m/i, /^m/i, /^(j|ĵ)/i, /^v/i, /^s/i],
+ any: [/^d/i, /^l/i, /^ma/i, /^me/i, /^(j|ĵ)/i, /^v/i, /^s/i]
+}
+
+var matchDayPeriodPatterns = {
+ narrow: /^([ap]|(posttagmez|noktomez|tagmez|maten|vesper|nokt)[eo])/i,
+ abbreviated: /^([ap][.\s]?t[.\s]?m[.\s]?|(posttagmez|noktomez|tagmez|maten|vesper|nokt)[eo])/i,
+ wide: /^(anta(ŭ|ux)tagmez|posttagmez|noktomez|tagmez|maten|vesper|nokt)[eo]/i
+}
+var parseDayPeriodPatterns = {
+ any: {
+ am: /^a/i,
+ pm: /^p/i,
+ midnight: /^noktom/i,
+ noon: /^t/i,
+ morning: /^m/i,
+ afternoon: /^posttagmeze/i,
+ evening: /^v/i,
+ night: /^n/i
+ }
+}
+
+var match = {
+ ordinalNumber: buildMatchPatternFn({
+ matchPattern: matchOrdinalNumberPattern,
+ parsePattern: parseOrdinalNumberPattern,
+ valueCallback: function(value) {
+ return parseInt(value, 10)
+ }
+ }),
+
+ era: buildMatchFn({
+ matchPatterns: matchEraPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseEraPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ quarter: buildMatchFn({
+ matchPatterns: matchQuarterPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseQuarterPatterns,
+ defaultParseWidth: 'any',
+ valueCallback: function(index) {
+ return index + 1
+ }
+ }),
+
+ month: buildMatchFn({
+ matchPatterns: matchMonthPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseMonthPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ day: buildMatchFn({
+ matchPatterns: matchDayPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseDayPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ dayPeriod: buildMatchFn({
+ matchPatterns: matchDayPeriodPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseDayPeriodPatterns,
+ defaultParseWidth: 'any'
+ })
+}
+
+export default match
diff --git a/date-fns/src/locale/eo/index.d.ts b/date-fns/src/locale/eo/index.d.ts
new file mode 100644
index 0000000..40716b3
--- /dev/null
+++ b/date-fns/src/locale/eo/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { eo } from 'date-fns/locale'
+export default eo
diff --git a/date-fns/src/locale/eo/index.js b/date-fns/src/locale/eo/index.js
new file mode 100644
index 0000000..04adee5
--- /dev/null
+++ b/date-fns/src/locale/eo/index.js
@@ -0,0 +1,28 @@
+import formatDistance from './_lib/formatDistance/index'
+import formatLong from './_lib/formatLong/index'
+import formatRelative from './_lib/formatRelative/index'
+import localize from './_lib/localize/index'
+import match from './_lib/match/index'
+
+/**
+ * @type {Locale}
+ * @category Locales
+ * @summary Esperanto locale.
+ * @language Esperanto
+ * @iso-639-2 epo
+ * @author Lesha Koss [@leshakoss]{@link https://github.com/leshakoss}
+ */
+var locale = {
+ code: 'eo',
+ formatDistance: formatDistance,
+ formatLong: formatLong,
+ formatRelative: formatRelative,
+ localize: localize,
+ match: match,
+ options: {
+ weekStartsOn: 1 /* Monday */,
+ firstWeekContainsDate: 4
+ }
+}
+
+export default locale
diff --git a/date-fns/src/locale/eo/index.js.flow b/date-fns/src/locale/eo/index.js.flow
new file mode 100644
index 0000000..b9dfe66
--- /dev/null
+++ b/date-fns/src/locale/eo/index.js.flow
@@ -0,0 +1,35 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+declare module.exports: Locale
diff --git a/date-fns/src/locale/eo/snapshot.md b/date-fns/src/locale/eo/snapshot.md
new file mode 100644
index 0000000..0e3e722
--- /dev/null
+++ b/date-fns/src/locale/eo/snapshot.md
@@ -0,0 +1,304 @@
+# Esperanto (eo) locale
+
+## `format` and `parse`
+
+| Title | Token string | Date | `format` result | `parse` result |
+| ------------------------------- | ------------ | ------------------------ | ------------------------------------------------------------- | ------------------------ |
+| Calendar year | yo | 1987-02-11T12:13:14.015Z | 1987-a | 1987-01-01T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 5-a | 0005-01-01T00:00:00.000Z |
+| Local week-numbering year | Yo | 1987-02-11T12:13:14.015Z | 1987-a | 1986-12-29T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 4-a | 0003-12-29T00:00:00.000Z |
+| Quarter (formatting) | Qo | 2019-01-01T12:13:14.015Z | 1-a | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2-a | 2019-04-01T00:00:00.000Z |
+| | QQQ | 2019-01-01T12:13:14.015Z | K1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | K2 | 2019-04-01T00:00:00.000Z |
+| | QQQQ | 2019-01-01T12:13:14.015Z | 1-a kvaronjaro | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2-a kvaronjaro | 2019-04-01T00:00:00.000Z |
+| | QQQQQ | 2019-01-01T12:13:14.015Z | 1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2 | 2019-04-01T00:00:00.000Z |
+| Quarter (stand-alone) | qo | 2019-01-01T12:13:14.015Z | 1-a | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2-a | 2019-04-01T00:00:00.000Z |
+| | qqq | 2019-01-01T12:13:14.015Z | K1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | K2 | 2019-04-01T00:00:00.000Z |
+| | qqqq | 2019-01-01T12:13:14.015Z | 1-a kvaronjaro | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2-a kvaronjaro | 2019-04-01T00:00:00.000Z |
+| Month (formatting) | Mo | 2019-02-11T12:13:14.015Z | 2-a | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7-a | 2019-07-01T00:00:00.000Z |
+| | MMM | 2019-02-11T12:13:14.015Z | feb | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | jul | 2019-07-01T00:00:00.000Z |
+| | MMMM | 2019-02-11T12:13:14.015Z | februaro | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | julio | 2019-07-01T00:00:00.000Z |
+| | MMMMM | 2019-02-11T12:13:14.015Z | F | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | J | 2019-01-01T00:00:00.000Z |
+| Month (stand-alone) | Lo | 2019-02-11T12:13:14.015Z | 2-a | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7-a | 2019-07-01T00:00:00.000Z |
+| | LLL | 2019-02-11T12:13:14.015Z | feb | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | jul | 2019-07-01T00:00:00.000Z |
+| | LLLL | 2019-02-11T12:13:14.015Z | februaro | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | julio | 2019-07-01T00:00:00.000Z |
+| | LLLLL | 2019-02-11T12:13:14.015Z | F | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | J | 2019-01-01T00:00:00.000Z |
+| Local week of year | wo | 2019-01-01T12:13:14.015Z | 1-a | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48-a | 2019-11-25T00:00:00.000Z |
+| ISO week of year | Io | 2019-01-01T12:13:14.015Z | 1-a | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48-a | 2019-11-25T00:00:00.000Z |
+| Day of month | do | 2019-02-11T12:13:14.015Z | 11-a | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-28T12:13:14.015Z | 28-a | 2019-02-28T00:00:00.000Z |
+| Day of year | Do | 2019-02-11T12:13:14.015Z | 42-a | 2019-02-11T00:00:00.000Z |
+| | | 2019-12-31T12:13:14.015Z | 365-a | 2019-12-31T00:00:00.000Z |
+| Day of week (formatting) | E | 2019-02-11T12:13:14.015Z | lun | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ven | 2019-02-15T00:00:00.000Z |
+| | EE | 2019-02-11T12:13:14.015Z | lun | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ven | 2019-02-15T00:00:00.000Z |
+| | EEE | 2019-02-11T12:13:14.015Z | lun | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ven | 2019-02-15T00:00:00.000Z |
+| | EEEE | 2019-02-11T12:13:14.015Z | lundo | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | vendredo | 2019-02-15T00:00:00.000Z |
+| | EEEEE | 2019-02-11T12:13:14.015Z | L | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | V | 2019-02-15T00:00:00.000Z |
+| | EEEEEE | 2019-02-11T12:13:14.015Z | lu | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ve | 2019-02-15T00:00:00.000Z |
+| ISO day of week (formatting) | io | 2019-02-11T12:13:14.015Z | 1-a | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5-a | 2019-02-15T00:00:00.000Z |
+| | iii | 2019-02-11T12:13:14.015Z | lun | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ven | 2019-02-15T00:00:00.000Z |
+| | iiii | 2019-02-11T12:13:14.015Z | lundo | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | vendredo | 2019-02-15T00:00:00.000Z |
+| | iiiii | 2019-02-11T12:13:14.015Z | L | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | V | 2019-02-15T00:00:00.000Z |
+| | iiiiii | 2019-02-11T12:13:14.015Z | lu | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ve | 2019-02-15T00:00:00.000Z |
+| Local day of week (formatting) | eo | 2019-02-11T12:13:14.015Z | 1-a | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5-a | 2019-02-15T00:00:00.000Z |
+| | eee | 2019-02-11T12:13:14.015Z | lun | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ven | 2019-02-15T00:00:00.000Z |
+| | eeee | 2019-02-11T12:13:14.015Z | lundo | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | vendredo | 2019-02-15T00:00:00.000Z |
+| | eeeee | 2019-02-11T12:13:14.015Z | L | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | V | 2019-02-15T00:00:00.000Z |
+| | eeeeee | 2019-02-11T12:13:14.015Z | lu | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ve | 2019-02-15T00:00:00.000Z |
+| Local day of week (stand-alone) | co | 2019-02-11T12:13:14.015Z | 1-a | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5-a | 2019-02-15T00:00:00.000Z |
+| | ccc | 2019-02-11T12:13:14.015Z | lun | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ven | 2019-02-15T00:00:00.000Z |
+| | cccc | 2019-02-11T12:13:14.015Z | lundo | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | vendredo | 2019-02-15T00:00:00.000Z |
+| | ccccc | 2019-02-11T12:13:14.015Z | L | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | V | 2019-02-15T00:00:00.000Z |
+| | cccccc | 2019-02-11T12:13:14.015Z | lu | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ve | 2019-02-15T00:00:00.000Z |
+| AM, PM | a | 2019-02-11T11:13:14.015Z | a.t.m. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | p.t.m. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | p.t.m. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | a.t.m. | 2019-02-11T00:00:00.000Z |
+| | aa | 2019-02-11T11:13:14.015Z | a.t.m. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | p.t.m. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | p.t.m. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | a.t.m. | 2019-02-11T00:00:00.000Z |
+| | aaa | 2019-02-11T11:13:14.015Z | a.t.m. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | p.t.m. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | p.t.m. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | a.t.m. | 2019-02-11T00:00:00.000Z |
+| | aaaa | 2019-02-11T11:13:14.015Z | antaŭtagmeze | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | posttagmeze | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | posttagmeze | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | antaŭtagmeze | 2019-02-11T00:00:00.000Z |
+| | aaaaa | 2019-02-11T11:13:14.015Z | a | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | p | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | p | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | a | 2019-02-11T00:00:00.000Z |
+| AM, PM, noon, midnight | b | 2019-02-11T11:13:14.015Z | a.t.m. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | p.t.m. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | p.t.m. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | a.t.m. | 2019-02-11T00:00:00.000Z |
+| | bb | 2019-02-11T11:13:14.015Z | a.t.m. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | p.t.m. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | p.t.m. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | a.t.m. | 2019-02-11T00:00:00.000Z |
+| | bbb | 2019-02-11T11:13:14.015Z | a.t.m. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | p.t.m. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | p.t.m. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | a.t.m. | 2019-02-11T00:00:00.000Z |
+| | bbbb | 2019-02-11T11:13:14.015Z | antaŭtagmeze | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | posttagmeze | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | posttagmeze | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | antaŭtagmeze | 2019-02-11T00:00:00.000Z |
+| | bbbbb | 2019-02-11T11:13:14.015Z | a | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | p | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | p | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | a | 2019-02-11T00:00:00.000Z |
+| Flexible day period | B | 2019-02-11T11:13:14.015Z | matene | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | posttagmeze | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | vespere | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | nokte | 2019-02-11T00:00:00.000Z |
+| | BB | 2019-02-11T11:13:14.015Z | matene | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | posttagmeze | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | vespere | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | nokte | 2019-02-11T00:00:00.000Z |
+| | BBB | 2019-02-11T11:13:14.015Z | matene | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | posttagmeze | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | vespere | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | nokte | 2019-02-11T00:00:00.000Z |
+| | BBBB | 2019-02-11T11:13:14.015Z | matene | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | posttagmeze | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | vespere | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | nokte | 2019-02-11T00:00:00.000Z |
+| | BBBBB | 2019-02-11T11:13:14.015Z | matene | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | posttagmeze | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | vespere | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | nokte | 2019-02-11T00:00:00.000Z |
+| Hour [1-12] | ho | 2019-02-11T11:13:14.015Z | 11-a | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11-a | 2019-02-11T23:00:00.000Z |
+| Hour [0-23] | Ho | 2019-02-11T11:13:14.015Z | 11-a | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23-a | 2019-02-11T23:00:00.000Z |
+| Hour [0-11] | Ko | 2019-02-11T11:13:14.015Z | 11-a | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11-a | 2019-02-11T23:00:00.000Z |
+| Hour [1-24] | ko | 2019-02-11T11:13:14.015Z | 11-a | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23-a | 2019-02-11T23:00:00.000Z |
+| Minute | mo | 2019-01-01T12:01:14.015Z | 1-a | 2019-01-01T12:01:00.000Z |
+| | | 2019-04-01T12:55:14.015Z | 55-a | 2019-04-01T12:55:00.000Z |
+| Second | so | 2019-01-01T12:13:01.015Z | 1-a | 2019-01-01T12:13:01.000Z |
+| | | 2019-04-01T12:13:55.015Z | 55-a | 2019-04-01T12:13:55.000Z |
+| Long localized date | P | 1987-02-11T12:13:14.015Z | 1987-02-11 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 1453-05-29 | 1453-05-29T00:00:00.000Z |
+| | PP | 1987-02-11T12:13:14.015Z | 1987-feb-11 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 1453-maj-29 | 1453-05-29T00:00:00.000Z |
+| | PPP | 1987-02-11T12:13:14.015Z | 1987-februaro-11 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 1453-majo-29 | 1453-05-29T00:00:00.000Z |
+| | PPPP | 1987-02-11T12:13:14.015Z | merkredo, 11-a de februaro 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | dimanĉo, 29-a de majo 1453 | 1453-05-29T00:00:00.000Z |
+| Long localized time | p | 1987-02-11T12:13:14.015Z | 12:13 | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 23:59 | 1453-05-29T23:59:00.000Z |
+| | pp | 1987-02-11T12:13:14.015Z | 12:13:14 | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 | 1453-05-29T23:59:59.000Z |
+| | ppp | 1987-02-11T12:13:14.015Z | 12:13:14 GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 GMT+0 | Errored |
+| | pppp | 1987-02-11T12:13:14.015Z | 12-a horo kaj 13:14 GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 23-a horo kaj 59:59 GMT+00:00 | Errored |
+| Combination of date and time | Pp | 1987-02-11T12:13:14.015Z | 1987-02-11 12:13 | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 1453-05-29 23:59 | 1453-05-29T23:59:00.000Z |
+| | PPpp | 1987-02-11T12:13:14.015Z | 1987-feb-11 12:13:14 | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 1453-maj-29 23:59:59 | 1453-05-29T23:59:59.000Z |
+| | PPPppp | 1987-02-11T12:13:14.015Z | 1987-februaro-11 12:13:14 GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 1453-majo-29 23:59:59 GMT+0 | Errored |
+| | PPPPpppp | 1987-02-11T12:13:14.015Z | merkredo, 11-a de februaro 1987 12-a horo kaj 13:14 GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | dimanĉo, 29-a de majo 1453 23-a horo kaj 59:59 GMT+00:00 | Errored |
+
+## `formatDistance`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `includeSeconds: true` | `addSuffix: true` |
+| ------------------------ | ------------------- | ---------------------- | ------------------------- |
+| 2006-01-01T00:00:00.000Z | proksimume 6 jaroj | proksimume 6 jaroj | post proksimume 6 jaroj |
+| 2005-01-01T00:00:00.000Z | proksimume 5 jaroj | proksimume 5 jaroj | post proksimume 5 jaroj |
+| 2004-01-01T00:00:00.000Z | proksimume 4 jaroj | proksimume 4 jaroj | post proksimume 4 jaroj |
+| 2003-01-01T00:00:00.000Z | proksimume 3 jaroj | proksimume 3 jaroj | post proksimume 3 jaroj |
+| 2002-01-01T00:00:00.000Z | proksimume 2 jaroj | proksimume 2 jaroj | post proksimume 2 jaroj |
+| 2001-06-01T00:00:00.000Z | pli ol 1 jaro | pli ol 1 jaro | post pli ol 1 jaro |
+| 2001-02-01T00:00:00.000Z | proksimume 1 jaro | proksimume 1 jaro | post proksimume 1 jaro |
+| 2001-01-01T00:00:00.000Z | proksimume 1 jaro | proksimume 1 jaro | post proksimume 1 jaro |
+| 2000-06-01T00:00:00.000Z | 5 monatoj | 5 monatoj | post 5 monatoj |
+| 2000-03-01T00:00:00.000Z | 2 monatoj | 2 monatoj | post 2 monatoj |
+| 2000-02-01T00:00:00.000Z | proksimume 1 monato | proksimume 1 monato | post proksimume 1 monato |
+| 2000-01-15T00:00:00.000Z | 14 tagoj | 14 tagoj | post 14 tagoj |
+| 2000-01-02T00:00:00.000Z | 1 tago | 1 tago | post 1 tago |
+| 2000-01-01T06:00:00.000Z | proksimume 6 horoj | proksimume 6 horoj | post proksimume 6 horoj |
+| 2000-01-01T01:00:00.000Z | proksimume 1 horo | proksimume 1 horo | post proksimume 1 horo |
+| 2000-01-01T00:45:00.000Z | proksimume 1 horo | proksimume 1 horo | post proksimume 1 horo |
+| 2000-01-01T00:30:00.000Z | 30 minutoj | 30 minutoj | post 30 minutoj |
+| 2000-01-01T00:15:00.000Z | 15 minutoj | 15 minutoj | post 15 minutoj |
+| 2000-01-01T00:01:00.000Z | 1 minuto | 1 minuto | post 1 minuto |
+| 2000-01-01T00:00:25.000Z | malpli ol minuto | duonminuto | post malpli ol minuto |
+| 2000-01-01T00:00:15.000Z | malpli ol minuto | malpli ol 20 sekundoj | post malpli ol minuto |
+| 2000-01-01T00:00:05.000Z | malpli ol minuto | malpli ol 10 sekundoj | post malpli ol minuto |
+| 2000-01-01T00:00:00.000Z | malpli ol minuto | malpli ol 5 sekundoj | antaŭ malpli ol minuto |
+| 1999-12-31T23:59:55.000Z | malpli ol minuto | malpli ol 10 sekundoj | antaŭ malpli ol minuto |
+| 1999-12-31T23:59:45.000Z | malpli ol minuto | malpli ol 20 sekundoj | antaŭ malpli ol minuto |
+| 1999-12-31T23:59:35.000Z | malpli ol minuto | duonminuto | antaŭ malpli ol minuto |
+| 1999-12-31T23:59:00.000Z | 1 minuto | 1 minuto | antaŭ 1 minuto |
+| 1999-12-31T23:45:00.000Z | 15 minutoj | 15 minutoj | antaŭ 15 minutoj |
+| 1999-12-31T23:30:00.000Z | 30 minutoj | 30 minutoj | antaŭ 30 minutoj |
+| 1999-12-31T23:15:00.000Z | proksimume 1 horo | proksimume 1 horo | antaŭ proksimume 1 horo |
+| 1999-12-31T23:00:00.000Z | proksimume 1 horo | proksimume 1 horo | antaŭ proksimume 1 horo |
+| 1999-12-31T18:00:00.000Z | proksimume 6 horoj | proksimume 6 horoj | antaŭ proksimume 6 horoj |
+| 1999-12-30T00:00:00.000Z | 2 tagoj | 2 tagoj | antaŭ 2 tagoj |
+| 1999-12-15T00:00:00.000Z | 17 tagoj | 17 tagoj | antaŭ 17 tagoj |
+| 1999-12-01T00:00:00.000Z | proksimume 1 monato | proksimume 1 monato | antaŭ proksimume 1 monato |
+| 1999-11-01T00:00:00.000Z | 2 monatoj | 2 monatoj | antaŭ 2 monatoj |
+| 1999-06-01T00:00:00.000Z | 7 monatoj | 7 monatoj | antaŭ 7 monatoj |
+| 1999-01-01T00:00:00.000Z | proksimume 1 jaro | proksimume 1 jaro | antaŭ proksimume 1 jaro |
+| 1998-12-01T00:00:00.000Z | proksimume 1 jaro | proksimume 1 jaro | antaŭ proksimume 1 jaro |
+| 1998-06-01T00:00:00.000Z | pli ol 1 jaro | pli ol 1 jaro | antaŭ pli ol 1 jaro |
+| 1998-01-01T00:00:00.000Z | proksimume 2 jaroj | proksimume 2 jaroj | antaŭ proksimume 2 jaroj |
+| 1997-01-01T00:00:00.000Z | proksimume 3 jaroj | proksimume 3 jaroj | antaŭ proksimume 3 jaroj |
+| 1996-01-01T00:00:00.000Z | proksimume 4 jaroj | proksimume 4 jaroj | antaŭ proksimume 4 jaroj |
+| 1995-01-01T00:00:00.000Z | proksimume 5 jaroj | proksimume 5 jaroj | antaŭ proksimume 5 jaroj |
+| 1994-01-01T00:00:00.000Z | proksimume 6 jaroj | proksimume 6 jaroj | antaŭ proksimume 6 jaroj |
+
+## `formatDistanceStrict`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `addSuffix: true` | With forced unit (i.e. `hour`) |
+| ------------------------ | ----------- | ----------------- | ------------------------------ |
+| 2006-01-01T00:00:00.000Z | 6 jaroj | post 6 jaroj | 52608 horoj |
+| 2005-01-01T00:00:00.000Z | 5 jaroj | post 5 jaroj | 43848 horoj |
+| 2004-01-01T00:00:00.000Z | 4 jaroj | post 4 jaroj | 35064 horoj |
+| 2003-01-01T00:00:00.000Z | 3 jaroj | post 3 jaroj | 26304 horoj |
+| 2002-01-01T00:00:00.000Z | 2 jaroj | post 2 jaroj | 17544 horoj |
+| 2001-06-01T00:00:00.000Z | 1 jaro | post 1 jaro | 12408 horoj |
+| 2001-02-01T00:00:00.000Z | 1 jaro | post 1 jaro | 9528 horoj |
+| 2001-01-01T00:00:00.000Z | 1 jaro | post 1 jaro | 8784 horoj |
+| 2000-06-01T00:00:00.000Z | 5 monatoj | post 5 monatoj | 3648 horoj |
+| 2000-03-01T00:00:00.000Z | 2 monatoj | post 2 monatoj | 1440 horoj |
+| 2000-02-01T00:00:00.000Z | 1 monato | post 1 monato | 744 horoj |
+| 2000-01-15T00:00:00.000Z | 14 tagoj | post 14 tagoj | 336 horoj |
+| 2000-01-02T00:00:00.000Z | 1 tago | post 1 tago | 24 horoj |
+| 2000-01-01T06:00:00.000Z | 6 horoj | post 6 horoj | 6 horoj |
+| 2000-01-01T01:00:00.000Z | 1 horo | post 1 horo | 1 horo |
+| 2000-01-01T00:45:00.000Z | 45 minutoj | post 45 minutoj | 1 horo |
+| 2000-01-01T00:30:00.000Z | 30 minutoj | post 30 minutoj | 1 horo |
+| 2000-01-01T00:15:00.000Z | 15 minutoj | post 15 minutoj | 0 horoj |
+| 2000-01-01T00:01:00.000Z | 1 minuto | post 1 minuto | 0 horoj |
+| 2000-01-01T00:00:25.000Z | 25 sekundoj | post 25 sekundoj | 0 horoj |
+| 2000-01-01T00:00:15.000Z | 15 sekundoj | post 15 sekundoj | 0 horoj |
+| 2000-01-01T00:00:05.000Z | 5 sekundoj | post 5 sekundoj | 0 horoj |
+| 2000-01-01T00:00:00.000Z | 0 sekundoj | antaŭ 0 sekundoj | 0 horoj |
+| 1999-12-31T23:59:55.000Z | 5 sekundoj | antaŭ 5 sekundoj | 0 horoj |
+| 1999-12-31T23:59:45.000Z | 15 sekundoj | antaŭ 15 sekundoj | 0 horoj |
+| 1999-12-31T23:59:35.000Z | 25 sekundoj | antaŭ 25 sekundoj | 0 horoj |
+| 1999-12-31T23:59:00.000Z | 1 minuto | antaŭ 1 minuto | 0 horoj |
+| 1999-12-31T23:45:00.000Z | 15 minutoj | antaŭ 15 minutoj | 0 horoj |
+| 1999-12-31T23:30:00.000Z | 30 minutoj | antaŭ 30 minutoj | 1 horo |
+| 1999-12-31T23:15:00.000Z | 45 minutoj | antaŭ 45 minutoj | 1 horo |
+| 1999-12-31T23:00:00.000Z | 1 horo | antaŭ 1 horo | 1 horo |
+| 1999-12-31T18:00:00.000Z | 6 horoj | antaŭ 6 horoj | 6 horoj |
+| 1999-12-30T00:00:00.000Z | 2 tagoj | antaŭ 2 tagoj | 48 horoj |
+| 1999-12-15T00:00:00.000Z | 17 tagoj | antaŭ 17 tagoj | 408 horoj |
+| 1999-12-01T00:00:00.000Z | 1 monato | antaŭ 1 monato | 744 horoj |
+| 1999-11-01T00:00:00.000Z | 2 monatoj | antaŭ 2 monatoj | 1464 horoj |
+| 1999-06-01T00:00:00.000Z | 7 monatoj | antaŭ 7 monatoj | 5136 horoj |
+| 1999-01-01T00:00:00.000Z | 1 jaro | antaŭ 1 jaro | 8760 horoj |
+| 1998-12-01T00:00:00.000Z | 1 jaro | antaŭ 1 jaro | 9504 horoj |
+| 1998-06-01T00:00:00.000Z | 2 jaroj | antaŭ 2 jaroj | 13896 horoj |
+| 1998-01-01T00:00:00.000Z | 2 jaroj | antaŭ 2 jaroj | 17520 horoj |
+| 1997-01-01T00:00:00.000Z | 3 jaroj | antaŭ 3 jaroj | 26280 horoj |
+| 1996-01-01T00:00:00.000Z | 4 jaroj | antaŭ 4 jaroj | 35064 horoj |
+| 1995-01-01T00:00:00.000Z | 5 jaroj | antaŭ 5 jaroj | 43824 horoj |
+| 1994-01-01T00:00:00.000Z | 6 jaroj | antaŭ 6 jaroj | 52584 horoj |
+
+## `formatRelative`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result |
+| ------------------------ | ---------------------- |
+| 2000-01-10T00:00:00.000Z | 2000-01-10 |
+| 2000-01-05T00:00:00.000Z | merkredo je 00:00 |
+| 2000-01-02T00:00:00.000Z | morgaŭ je 00:00 |
+| 2000-01-01T00:00:00.000Z | hodiaŭ je 00:00 |
+| 1999-12-31T00:00:00.000Z | hieraŭ je 00:00 |
+| 1999-12-27T00:00:00.000Z | pasinta lundo je 00:00 |
+| 1999-12-21T00:00:00.000Z | 1999-12-21 |
diff --git a/date-fns/src/locale/es/_lib/formatDistance/index.js b/date-fns/src/locale/es/_lib/formatDistance/index.js
new file mode 100644
index 0000000..512e30e
--- /dev/null
+++ b/date-fns/src/locale/es/_lib/formatDistance/index.js
@@ -0,0 +1,101 @@
+var formatDistanceLocale = {
+ lessThanXSeconds: {
+ one: 'menos de un segundo',
+ other: 'menos de {{count}} segundos'
+ },
+
+ xSeconds: {
+ one: '1 segundo',
+ other: '{{count}} segundos'
+ },
+
+ halfAMinute: 'medio minuto',
+
+ lessThanXMinutes: {
+ one: 'menos de un minuto',
+ other: 'menos de {{count}} minutos'
+ },
+
+ xMinutes: {
+ one: '1 minuto',
+ other: '{{count}} minutos'
+ },
+
+ aboutXHours: {
+ one: 'alrededor de 1 hora',
+ other: 'alrededor de {{count}} horas'
+ },
+
+ xHours: {
+ one: '1 hora',
+ other: '{{count}} horas'
+ },
+
+ xDays: {
+ one: '1 día',
+ other: '{{count}} días'
+ },
+
+ aboutXWeeks: {
+ one: 'alrededor de 1 semana',
+ other: 'alrededor de {{count}} semanas'
+ },
+
+ xWeeks: {
+ one: '1 semana',
+ other: '{{count}} semanas'
+ },
+
+ aboutXMonths: {
+ one: 'alrededor de 1 mes',
+ other: 'alrededor de {{count}} meses'
+ },
+
+ xMonths: {
+ one: '1 mes',
+ other: '{{count}} meses'
+ },
+
+ aboutXYears: {
+ one: 'alrededor de 1 año',
+ other: 'alrededor de {{count}} años'
+ },
+
+ xYears: {
+ one: '1 año',
+ other: '{{count}} años'
+ },
+
+ overXYears: {
+ one: 'más de 1 año',
+ other: 'más de {{count}} años'
+ },
+
+ almostXYears: {
+ one: 'casi 1 año',
+ other: 'casi {{count}} años'
+ }
+}
+
+export default function formatDistance(token, count, options) {
+ options = options || {}
+
+ var result
+ if (typeof formatDistanceLocale[token] === 'string') {
+ result = formatDistanceLocale[token]
+ } else if (count === 1) {
+ result = formatDistanceLocale[token].one
+ } else {
+ result = formatDistanceLocale[token].other.replace('{{count}}', count)
+ }
+
+ if (options.addSuffix) {
+ if (options.comparison > 0) {
+ return 'en ' + result
+ } else {
+ return 'hace ' + result
+ }
+ }
+
+ return result
+}
diff --git a/date-fns/src/locale/es/_lib/formatLong/index.js b/date-fns/src/locale/es/_lib/formatLong/index.js
new file mode 100644
index 0000000..3edd81e
--- /dev/null
+++ b/date-fns/src/locale/es/_lib/formatLong/index.js
@@ -0,0 +1,41 @@
+import buildFormatLongFn from '../../../_lib/buildFormatLongFn/index'
+
+var dateFormats = {
+ full: "EEEE, d 'de' MMMM 'de' y",
+ long: "d 'de' MMMM 'de' y",
+ medium: 'd MMM y',
+ short: 'dd/MM/y'
+}
+
+var timeFormats = {
+ full: 'HH:mm:ss zzzz',
+ long: 'HH:mm:ss z',
+ medium: 'HH:mm:ss',
+ short: 'HH:mm'
+}
+
+var dateTimeFormats = {
+ full: "{{date}} 'a las' {{time}}",
+ long: "{{date}} 'a las' {{time}}",
+ medium: '{{date}}, {{time}}',
+ short: '{{date}}, {{time}}'
+}
+
+var formatLong = {
+ date: buildFormatLongFn({
+ formats: dateFormats,
+ defaultWidth: 'full'
+ }),
+
+ time: buildFormatLongFn({
+ formats: timeFormats,
+ defaultWidth: 'full'
+ }),
+
+ dateTime: buildFormatLongFn({
+ formats: dateTimeFormats,
+ defaultWidth: 'full'
+ })
+}
+
+export default formatLong
diff --git a/date-fns/src/locale/es/_lib/formatRelative/index.js b/date-fns/src/locale/es/_lib/formatRelative/index.js
new file mode 100644
index 0000000..6323dc1
--- /dev/null
+++ b/date-fns/src/locale/es/_lib/formatRelative/index.js
@@ -0,0 +1,24 @@
+var formatRelativeLocale = {
+ lastWeek: "'el' eeee 'pasado a la' LT",
+ yesterday: "'ayer a la' p",
+ today: "'hoy a la' p",
+ tomorrow: "'mañana a la' p",
+ nextWeek: "eeee 'a la' p",
+ other: 'P'
+}
+
+var formatRelativeLocalePlural = {
+ lastWeek: "'el' eeee 'pasado a las' p",
+ yesterday: "'ayer a las' p",
+ today: "'hoy a las' p",
+ tomorrow: "'mañana a las' p",
+ nextWeek: "eeee 'a las' p",
+ other: 'P'
+}
+
+export default function formatRelative(token, date, _baseDate, _options) {
+ if (date.getUTCHours() !== 1) {
+ return formatRelativeLocalePlural[token]
+ }
+ return formatRelativeLocale[token]
+}
diff --git a/date-fns/src/locale/es/_lib/localize/index.js b/date-fns/src/locale/es/_lib/localize/index.js
new file mode 100644
index 0000000..ffdd1a9
--- /dev/null
+++ b/date-fns/src/locale/es/_lib/localize/index.js
@@ -0,0 +1,166 @@
+import buildLocalizeFn from '../../../_lib/buildLocalizeFn/index'
+
+var eraValues = {
+ narrow: ['AC', 'DC'],
+ abbreviated: ['AC', 'DC'],
+ wide: ['antes de cristo', 'después de cristo']
+}
+
+var quarterValues = {
+ narrow: ['1', '2', '3', '4'],
+ abbreviated: ['T1', 'T2', 'T3', 'T4'],
+ wide: ['1º trimestre', '2º trimestre', '3º trimestre', '4º trimestre']
+}
+
+var monthValues = {
+ narrow: ['e', 'f', 'm', 'a', 'm', 'j', 'j', 'a', 's', 'o', 'n', 'd'],
+ abbreviated: [
+ 'ene',
+ 'feb',
+ 'mar',
+ 'abr',
+ 'may',
+ 'jun',
+ 'jul',
+ 'ago',
+ 'sep',
+ 'oct',
+ 'nov',
+ 'dic'
+ ],
+ wide: [
+ 'enero',
+ 'febrero',
+ 'marzo',
+ 'abril',
+ 'mayo',
+ 'junio',
+ 'julio',
+ 'agosto',
+ 'septiembre',
+ 'octubre',
+ 'noviembre',
+ 'diciembre'
+ ]
+}
+
+var dayValues = {
+ narrow: ['d', 'l', 'm', 'm', 'j', 'v', 's'],
+ short: ['do', 'lu', 'ma', 'mi', 'ju', 'vi', 'sa'],
+ abbreviated: ['dom', 'lun', 'mar', 'mié', 'jue', 'vie', 'sáb'],
+ wide: [
+ 'domingo',
+ 'lunes',
+ 'martes',
+ 'miércoles',
+ 'jueves',
+ 'viernes',
+ 'sábado'
+ ]
+}
+
+var dayPeriodValues = {
+ narrow: {
+ am: 'a',
+ pm: 'p',
+ midnight: 'mn',
+ noon: 'md',
+ morning: 'mañana',
+ afternoon: 'tarde',
+ evening: 'tarde',
+ night: 'noche'
+ },
+ abbreviated: {
+ am: 'AM',
+ pm: 'PM',
+ midnight: 'medianoche',
+ noon: 'mediodia',
+ morning: 'mañana',
+ afternoon: 'tarde',
+ evening: 'tarde',
+ night: 'noche'
+ },
+ wide: {
+ am: 'a.m.',
+ pm: 'p.m.',
+ midnight: 'medianoche',
+ noon: 'mediodia',
+ morning: 'mañana',
+ afternoon: 'tarde',
+ evening: 'tarde',
+ night: 'noche'
+ }
+}
+var formattingDayPeriodValues = {
+ narrow: {
+ am: 'a',
+ pm: 'p',
+ midnight: 'mn',
+ noon: 'md',
+ morning: 'de la mañana',
+ afternoon: 'de la tarde',
+ evening: 'de la tarde',
+ night: 'de la noche'
+ },
+ abbreviated: {
+ am: 'AM',
+ pm: 'PM',
+ midnight: 'medianoche',
+ noon: 'mediodia',
+ morning: 'de la mañana',
+ afternoon: 'de la tarde',
+ evening: 'de la tarde',
+ night: 'de la noche'
+ },
+ wide: {
+ am: 'a.m.',
+ pm: 'p.m.',
+ midnight: 'medianoche',
+ noon: 'mediodia',
+ morning: 'de la mañana',
+ afternoon: 'de la tarde',
+ evening: 'de la tarde',
+ night: 'de la noche'
+ }
+}
+
+function ordinalNumber(dirtyNumber) {
+ var number = Number(dirtyNumber)
+ return number + 'º'
+}
+
+var localize = {
+ ordinalNumber: ordinalNumber,
+
+ era: buildLocalizeFn({
+ values: eraValues,
+ defaultWidth: 'wide'
+ }),
+
+ quarter: buildLocalizeFn({
+ values: quarterValues,
+ defaultWidth: 'wide',
+ argumentCallback: function(quarter) {
+ return Number(quarter) - 1
+ }
+ }),
+
+ month: buildLocalizeFn({
+ values: monthValues,
+ defaultWidth: 'wide'
+ }),
+
+ day: buildLocalizeFn({
+ values: dayValues,
+ defaultWidth: 'wide'
+ }),
+
+ dayPeriod: buildLocalizeFn({
+ values: dayPeriodValues,
+ defaultWidth: 'wide',
+ formattingValues: formattingDayPeriodValues,
+ defaultFormattingWidth: 'wide'
+ })
+}
+
+export default localize
diff --git a/date-fns/src/locale/es/_lib/match/index.js b/date-fns/src/locale/es/_lib/match/index.js
new file mode 100644
index 0000000..3c9cf1a
--- /dev/null
+++ b/date-fns/src/locale/es/_lib/match/index.js
@@ -0,0 +1,141 @@
+import buildMatchPatternFn from '../../../_lib/buildMatchPatternFn/index'
+import buildMatchFn from '../../../_lib/buildMatchFn/index'
+
+var matchOrdinalNumberPattern = /^(\d+)(º)?/i
+var parseOrdinalNumberPattern = /\d+/i
+
+var matchEraPatterns = {
+ narrow: /^(ac|dc|a|d)/i,
+ abbreviated: /^(a\.?\s?c\.?|a\.?\s?e\.?\s?c\.?|d\.?\s?c\.?|e\.?\s?c\.?)/i,
+ wide: /^(antes de cristo|antes de la era com[uú]n|despu[eé]s de cristo|era com[uú]n)/i
+}
+var parseEraPatterns = {
+ any: [/^ac/i, /^dc/i],
+ wide: [
+ /^(antes de cristo|antes de la era com[uú]n)/i,
+ /^(despu[eé]s de cristo|era com[uú]n)/i
+ ]
+}
+
+var matchQuarterPatterns = {
+ narrow: /^[1234]/i,
+ abbreviated: /^T[1234]/i,
+ wide: /^[1234](º)? trimestre/i
+}
+var parseQuarterPatterns = {
+ any: [/1/i, /2/i, /3/i, /4/i]
+}
+
+var matchMonthPatterns = {
+ narrow: /^[efmajsond]/i,
+ abbreviated: /^(ene|feb|mar|abr|may|jun|jul|ago|sep|oct|nov|dic)/i,
+ wide: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i
+}
+var parseMonthPatterns = {
+ narrow: [
+ /^e/i,
+ /^f/i,
+ /^m/i,
+ /^a/i,
+ /^m/i,
+ /^j/i,
+ /^j/i,
+ /^a/i,
+ /^s/i,
+ /^o/i,
+ /^n/i,
+ /^d/i
+ ],
+ any: [
+ /^en/i,
+ /^feb/i,
+ /^mar/i,
+ /^abr/i,
+ /^may/i,
+ /^jun/i,
+ /^jul/i,
+ /^ago/i,
+ /^sep/i,
+ /^oct/i,
+ /^nov/i,
+ /^dic/i
+ ]
+}
+
+var matchDayPatterns = {
+ narrow: /^[dlmjvs]/i,
+ short: /^(do|lu|ma|mi|ju|vi|sa)/i,
+ abbreviated: /^(dom|lun|mar|mie|jue|vie|sab)/i,
+ wide: /^(domingo|lunes|martes|mi[ée]rcoles|jueves|viernes|s[áa]bado)/i
+}
+var parseDayPatterns = {
+ narrow: [/^d/i, /^l/i, /^m/i, /^m/i, /^j/i, /^v/i, /^s/i],
+ any: [/^do/i, /^lu/i, /^ma/i, /^mi/i, /^ju/i, /^vi/i, /^sa/i]
+}
+
+var matchDayPeriodPatterns = {
+ narrow: /^(a|p|mn|md|(de la|a las) (mañana|tarde|noche))/i,
+ any: /^([ap]\.?\s?m\.?|medianoche|mediodia|(de la|a las) (mañana|tarde|noche))/i
+}
+var parseDayPeriodPatterns = {
+ any: {
+ am: /^a/i,
+ pm: /^p/i,
+ midnight: /^mn/i,
+ noon: /^md/i,
+ morning: /mañana/i,
+ afternoon: /tarde/i,
+ evening: /tarde/i,
+ night: /noche/i
+ }
+}
+
+var match = {
+ ordinalNumber: buildMatchPatternFn({
+ matchPattern: matchOrdinalNumberPattern,
+ parsePattern: parseOrdinalNumberPattern,
+ valueCallback: function(value) {
+ return parseInt(value, 10)
+ }
+ }),
+
+ era: buildMatchFn({
+ matchPatterns: matchEraPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseEraPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ quarter: buildMatchFn({
+ matchPatterns: matchQuarterPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseQuarterPatterns,
+ defaultParseWidth: 'any',
+ valueCallback: function(index) {
+ return index + 1
+ }
+ }),
+
+ month: buildMatchFn({
+ matchPatterns: matchMonthPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseMonthPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ day: buildMatchFn({
+ matchPatterns: matchDayPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseDayPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ dayPeriod: buildMatchFn({
+ matchPatterns: matchDayPeriodPatterns,
+ defaultMatchWidth: 'any',
+ parsePatterns: parseDayPeriodPatterns,
+ defaultParseWidth: 'any'
+ })
+}
+
+export default match
diff --git a/date-fns/src/locale/es/index.d.ts b/date-fns/src/locale/es/index.d.ts
new file mode 100644
index 0000000..8b0431e
--- /dev/null
+++ b/date-fns/src/locale/es/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { es } from 'date-fns/locale'
+export default es
diff --git a/date-fns/src/locale/es/index.js b/date-fns/src/locale/es/index.js
new file mode 100644
index 0000000..633fbe9
--- /dev/null
+++ b/date-fns/src/locale/es/index.js
@@ -0,0 +1,32 @@
+import formatDistance from './_lib/formatDistance/index'
+import formatLong from './_lib/formatLong/index'
+import formatRelative from './_lib/formatRelative/index'
+import localize from './_lib/localize/index'
+import match from './_lib/match/index'
+
+/**
+ * @type {Locale}
+ * @category Locales
+ * @summary Spanish locale.
+ * @language Spanish
+ * @iso-639-2 spa
+ * @author Juan Angosto [@juanangosto]{@link https://github.com/juanangosto}
+ * @author Guillermo Grau [@guigrpa]{@link https://github.com/guigrpa}
+ * @author Fernando Agüero [@fjaguero]{@link https://github.com/fjaguero}
+ * @author Gastón Haro [@harogaston]{@link https://github.com/harogaston}
+ * @author Yago Carballo [@YagoCarballo]{@link https://github.com/YagoCarballo}
+ */
+var locale = {
+ code: 'es',
+ formatDistance: formatDistance,
+ formatLong: formatLong,
+ formatRelative: formatRelative,
+ localize: localize,
+ match: match,
+ options: {
+ weekStartsOn: 1 /* Monday */,
+ firstWeekContainsDate: 1
+ }
+}
+
+export default locale
diff --git a/date-fns/src/locale/es/index.js.flow b/date-fns/src/locale/es/index.js.flow
new file mode 100644
index 0000000..b9dfe66
--- /dev/null
+++ b/date-fns/src/locale/es/index.js.flow
@@ -0,0 +1,35 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+declare module.exports: Locale
diff --git a/date-fns/src/locale/es/snapshot.md b/date-fns/src/locale/es/snapshot.md
new file mode 100644
index 0000000..7b92b7d
--- /dev/null
+++ b/date-fns/src/locale/es/snapshot.md
@@ -0,0 +1,304 @@
+# Spanish (es) locale
+
+## `format` and `parse`
+
+| Title | Token string | Date | `format` result | `parse` result |
+| ------------------------------- | ------------ | ------------------------ | --------------------------------------------------------- | ------------------------ |
+| Calendar year | yo | 1987-02-11T12:13:14.015Z | 1987º | 1987-01-01T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 5º | 0005-01-01T00:00:00.000Z |
+| Local week-numbering year | Yo | 1987-02-11T12:13:14.015Z | 1987º | 1986-12-29T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 5º | 0004-12-27T00:00:00.000Z |
+| Quarter (formatting) | Qo | 2019-01-01T12:13:14.015Z | 1º | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2º | 2019-04-01T00:00:00.000Z |
+| | QQQ | 2019-01-01T12:13:14.015Z | T1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | T2 | 2019-04-01T00:00:00.000Z |
+| | QQQQ | 2019-01-01T12:13:14.015Z | 1º trimestre | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2º trimestre | 2019-04-01T00:00:00.000Z |
+| | QQQQQ | 2019-01-01T12:13:14.015Z | 1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2 | 2019-04-01T00:00:00.000Z |
+| Quarter (stand-alone) | qo | 2019-01-01T12:13:14.015Z | 1º | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2º | 2019-04-01T00:00:00.000Z |
+| | qqq | 2019-01-01T12:13:14.015Z | T1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | T2 | 2019-04-01T00:00:00.000Z |
+| | qqqq | 2019-01-01T12:13:14.015Z | 1º trimestre | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2º trimestre | 2019-04-01T00:00:00.000Z |
+| Month (formatting) | Mo | 2019-02-11T12:13:14.015Z | 2º | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7º | 2019-07-01T00:00:00.000Z |
+| | MMM | 2019-02-11T12:13:14.015Z | feb | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | jul | 2019-07-01T00:00:00.000Z |
+| | MMMM | 2019-02-11T12:13:14.015Z | febrero | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | julio | 2019-07-01T00:00:00.000Z |
+| | MMMMM | 2019-02-11T12:13:14.015Z | f | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | j | 2019-06-01T00:00:00.000Z |
+| Month (stand-alone) | Lo | 2019-02-11T12:13:14.015Z | 2º | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7º | 2019-07-01T00:00:00.000Z |
+| | LLL | 2019-02-11T12:13:14.015Z | feb | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | jul | 2019-07-01T00:00:00.000Z |
+| | LLLL | 2019-02-11T12:13:14.015Z | febrero | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | julio | 2019-07-01T00:00:00.000Z |
+| | LLLLL | 2019-02-11T12:13:14.015Z | f | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | j | 2019-06-01T00:00:00.000Z |
+| Local week of year | wo | 2019-01-01T12:13:14.015Z | 1º | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48º | 2019-11-25T00:00:00.000Z |
+| ISO week of year | Io | 2019-01-01T12:13:14.015Z | 1º | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48º | 2019-11-25T00:00:00.000Z |
+| Day of month | do | 2019-02-11T12:13:14.015Z | 11º | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-28T12:13:14.015Z | 28º | 2019-02-28T00:00:00.000Z |
+| Day of year | Do | 2019-02-11T12:13:14.015Z | 42º | 2019-02-11T00:00:00.000Z |
+| | | 2019-12-31T12:13:14.015Z | 365º | 2019-12-31T00:00:00.000Z |
+| Day of week (formatting) | E | 2019-02-11T12:13:14.015Z | lun | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | vie | 2019-02-15T00:00:00.000Z |
+| | EE | 2019-02-11T12:13:14.015Z | lun | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | vie | 2019-02-15T00:00:00.000Z |
+| | EEE | 2019-02-11T12:13:14.015Z | lun | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | vie | 2019-02-15T00:00:00.000Z |
+| | EEEE | 2019-02-11T12:13:14.015Z | lunes | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | viernes | 2019-02-15T00:00:00.000Z |
+| | EEEEE | 2019-02-11T12:13:14.015Z | l | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | v | 2019-02-15T00:00:00.000Z |
+| | EEEEEE | 2019-02-11T12:13:14.015Z | lu | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | vi | 2019-02-15T00:00:00.000Z |
+| ISO day of week (formatting) | io | 2019-02-11T12:13:14.015Z | 1º | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5º | 2019-02-15T00:00:00.000Z |
+| | iii | 2019-02-11T12:13:14.015Z | lun | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | vie | 2019-02-15T00:00:00.000Z |
+| | iiii | 2019-02-11T12:13:14.015Z | lunes | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | viernes | 2019-02-15T00:00:00.000Z |
+| | iiiii | 2019-02-11T12:13:14.015Z | l | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | v | 2019-02-15T00:00:00.000Z |
+| | iiiiii | 2019-02-11T12:13:14.015Z | lu | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | vi | 2019-02-15T00:00:00.000Z |
+| Local day of week (formatting) | eo | 2019-02-11T12:13:14.015Z | 1º | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5º | 2019-02-15T00:00:00.000Z |
+| | eee | 2019-02-11T12:13:14.015Z | lun | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | vie | 2019-02-15T00:00:00.000Z |
+| | eeee | 2019-02-11T12:13:14.015Z | lunes | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | viernes | 2019-02-15T00:00:00.000Z |
+| | eeeee | 2019-02-11T12:13:14.015Z | l | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | v | 2019-02-15T00:00:00.000Z |
+| | eeeeee | 2019-02-11T12:13:14.015Z | lu | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | vi | 2019-02-15T00:00:00.000Z |
+| Local day of week (stand-alone) | co | 2019-02-11T12:13:14.015Z | 1º | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5º | 2019-02-15T00:00:00.000Z |
+| | ccc | 2019-02-11T12:13:14.015Z | lun | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | vie | 2019-02-15T00:00:00.000Z |
+| | cccc | 2019-02-11T12:13:14.015Z | lunes | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | viernes | 2019-02-15T00:00:00.000Z |
+| | ccccc | 2019-02-11T12:13:14.015Z | l | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | v | 2019-02-15T00:00:00.000Z |
+| | cccccc | 2019-02-11T12:13:14.015Z | lu | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | vi | 2019-02-15T00:00:00.000Z |
+| AM, PM | a | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | aa | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | aaa | 2019-02-11T11:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | aaaa | 2019-02-11T11:13:14.015Z | a.m. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | p.m. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | p.m. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | a.m. | 2019-02-11T00:00:00.000Z |
+| | aaaaa | 2019-02-11T11:13:14.015Z | a | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | p | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | p | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | a | 2019-02-11T00:00:00.000Z |
+| AM, PM, noon, midnight | b | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | bb | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | bbb | 2019-02-11T11:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | bbbb | 2019-02-11T11:13:14.015Z | a.m. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | p.m. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | p.m. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | a.m. | 2019-02-11T00:00:00.000Z |
+| | bbbbb | 2019-02-11T11:13:14.015Z | a | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | p | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | p | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | a | 2019-02-11T00:00:00.000Z |
+| Flexible day period | B | 2019-02-11T11:13:14.015Z | de la mañana | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | de la tarde | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | de la tarde | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | de la noche | 2019-02-11T00:00:00.000Z |
+| | BB | 2019-02-11T11:13:14.015Z | de la mañana | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | de la tarde | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | de la tarde | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | de la noche | 2019-02-11T00:00:00.000Z |
+| | BBB | 2019-02-11T11:13:14.015Z | de la mañana | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | de la tarde | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | de la tarde | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | de la noche | 2019-02-11T00:00:00.000Z |
+| | BBBB | 2019-02-11T11:13:14.015Z | de la mañana | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | de la tarde | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | de la tarde | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | de la noche | 2019-02-11T00:00:00.000Z |
+| | BBBBB | 2019-02-11T11:13:14.015Z | de la mañana | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | de la tarde | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | de la tarde | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | de la noche | 2019-02-11T00:00:00.000Z |
+| Hour [1-12] | ho | 2019-02-11T11:13:14.015Z | 11º | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11º | 2019-02-11T23:00:00.000Z |
+| Hour [0-23] | Ho | 2019-02-11T11:13:14.015Z | 11º | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23º | 2019-02-11T23:00:00.000Z |
+| Hour [0-11] | Ko | 2019-02-11T11:13:14.015Z | 11º | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11º | 2019-02-11T23:00:00.000Z |
+| Hour [1-24] | ko | 2019-02-11T11:13:14.015Z | 11º | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23º | 2019-02-11T23:00:00.000Z |
+| Minute | mo | 2019-01-01T12:01:14.015Z | 1º | 2019-01-01T12:01:00.000Z |
+| | | 2019-04-01T12:55:14.015Z | 55º | 2019-04-01T12:55:00.000Z |
+| Second | so | 2019-01-01T12:13:01.015Z | 1º | 2019-01-01T12:13:01.000Z |
+| | | 2019-04-01T12:13:55.015Z | 55º | 2019-04-01T12:13:55.000Z |
+| Long localized date | P | 1987-02-11T12:13:14.015Z | 11/02/1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29/05/1453 | 1453-05-29T00:00:00.000Z |
+| | PP | 1987-02-11T12:13:14.015Z | 11 feb 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 may 1453 | 1453-05-29T00:00:00.000Z |
+| | PPP | 1987-02-11T12:13:14.015Z | 11 de febrero de 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 de mayo de 1453 | 1453-05-29T00:00:00.000Z |
+| | PPPP | 1987-02-11T12:13:14.015Z | miércoles, 11 de febrero de 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | domingo, 29 de mayo de 1453 | 1453-05-29T00:00:00.000Z |
+| Long localized time | p | 1987-02-11T12:13:14.015Z | 12:13 | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 23:59 | 1453-05-29T23:59:00.000Z |
+| | pp | 1987-02-11T12:13:14.015Z | 12:13:14 | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 | 1453-05-29T23:59:59.000Z |
+| | ppp | 1987-02-11T12:13:14.015Z | 12:13:14 GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 GMT+0 | Errored |
+| | pppp | 1987-02-11T12:13:14.015Z | 12:13:14 GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 GMT+00:00 | Errored |
+| Combination of date and time | Pp | 1987-02-11T12:13:14.015Z | 11/02/1987, 12:13 | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29/05/1453, 23:59 | 1453-05-29T23:59:00.000Z |
+| | PPpp | 1987-02-11T12:13:14.015Z | 11 feb 1987, 12:13:14 | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 may 1453, 23:59:59 | 1453-05-29T23:59:59.000Z |
+| | PPPppp | 1987-02-11T12:13:14.015Z | 11 de febrero de 1987 a las 12:13:14 GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 29 de mayo de 1453 a las 23:59:59 GMT+0 | Errored |
+| | PPPPpppp | 1987-02-11T12:13:14.015Z | miércoles, 11 de febrero de 1987 a las 12:13:14 GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | domingo, 29 de mayo de 1453 a las 23:59:59 GMT+00:00 | Errored |
+
+## `formatDistance`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `includeSeconds: true` | `addSuffix: true` |
+| ------------------------ | -------------------- | ---------------------- | ------------------------- |
+| 2006-01-01T00:00:00.000Z | alrededor de 6 años | alrededor de 6 años | en alrededor de 6 años |
+| 2005-01-01T00:00:00.000Z | alrededor de 5 años | alrededor de 5 años | en alrededor de 5 años |
+| 2004-01-01T00:00:00.000Z | alrededor de 4 años | alrededor de 4 años | en alrededor de 4 años |
+| 2003-01-01T00:00:00.000Z | alrededor de 3 años | alrededor de 3 años | en alrededor de 3 años |
+| 2002-01-01T00:00:00.000Z | alrededor de 2 años | alrededor de 2 años | en alrededor de 2 años |
+| 2001-06-01T00:00:00.000Z | más de 1 año | más de 1 año | en más de 1 año |
+| 2001-02-01T00:00:00.000Z | alrededor de 1 año | alrededor de 1 año | en alrededor de 1 año |
+| 2001-01-01T00:00:00.000Z | alrededor de 1 año | alrededor de 1 año | en alrededor de 1 año |
+| 2000-06-01T00:00:00.000Z | 5 meses | 5 meses | en 5 meses |
+| 2000-03-01T00:00:00.000Z | 2 meses | 2 meses | en 2 meses |
+| 2000-02-01T00:00:00.000Z | alrededor de 1 mes | alrededor de 1 mes | en alrededor de 1 mes |
+| 2000-01-15T00:00:00.000Z | 14 días | 14 días | en 14 días |
+| 2000-01-02T00:00:00.000Z | 1 día | 1 día | en 1 día |
+| 2000-01-01T06:00:00.000Z | alrededor de 6 horas | alrededor de 6 horas | en alrededor de 6 horas |
+| 2000-01-01T01:00:00.000Z | alrededor de 1 hora | alrededor de 1 hora | en alrededor de 1 hora |
+| 2000-01-01T00:45:00.000Z | alrededor de 1 hora | alrededor de 1 hora | en alrededor de 1 hora |
+| 2000-01-01T00:30:00.000Z | 30 minutos | 30 minutos | en 30 minutos |
+| 2000-01-01T00:15:00.000Z | 15 minutos | 15 minutos | en 15 minutos |
+| 2000-01-01T00:01:00.000Z | 1 minuto | 1 minuto | en 1 minuto |
+| 2000-01-01T00:00:25.000Z | menos de un minuto | medio minuto | en menos de un minuto |
+| 2000-01-01T00:00:15.000Z | menos de un minuto | menos de 20 segundos | en menos de un minuto |
+| 2000-01-01T00:00:05.000Z | menos de un minuto | menos de 10 segundos | en menos de un minuto |
+| 2000-01-01T00:00:00.000Z | menos de un minuto | menos de 5 segundos | hace menos de un minuto |
+| 1999-12-31T23:59:55.000Z | menos de un minuto | menos de 10 segundos | hace menos de un minuto |
+| 1999-12-31T23:59:45.000Z | menos de un minuto | menos de 20 segundos | hace menos de un minuto |
+| 1999-12-31T23:59:35.000Z | menos de un minuto | medio minuto | hace menos de un minuto |
+| 1999-12-31T23:59:00.000Z | 1 minuto | 1 minuto | hace 1 minuto |
+| 1999-12-31T23:45:00.000Z | 15 minutos | 15 minutos | hace 15 minutos |
+| 1999-12-31T23:30:00.000Z | 30 minutos | 30 minutos | hace 30 minutos |
+| 1999-12-31T23:15:00.000Z | alrededor de 1 hora | alrededor de 1 hora | hace alrededor de 1 hora |
+| 1999-12-31T23:00:00.000Z | alrededor de 1 hora | alrededor de 1 hora | hace alrededor de 1 hora |
+| 1999-12-31T18:00:00.000Z | alrededor de 6 horas | alrededor de 6 horas | hace alrededor de 6 horas |
+| 1999-12-30T00:00:00.000Z | 2 días | 2 días | hace 2 días |
+| 1999-12-15T00:00:00.000Z | 17 días | 17 días | hace 17 días |
+| 1999-12-01T00:00:00.000Z | alrededor de 1 mes | alrededor de 1 mes | hace alrededor de 1 mes |
+| 1999-11-01T00:00:00.000Z | 2 meses | 2 meses | hace 2 meses |
+| 1999-06-01T00:00:00.000Z | 7 meses | 7 meses | hace 7 meses |
+| 1999-01-01T00:00:00.000Z | alrededor de 1 año | alrededor de 1 año | hace alrededor de 1 año |
+| 1998-12-01T00:00:00.000Z | alrededor de 1 año | alrededor de 1 año | hace alrededor de 1 año |
+| 1998-06-01T00:00:00.000Z | más de 1 año | más de 1 año | hace más de 1 año |
+| 1998-01-01T00:00:00.000Z | alrededor de 2 años | alrededor de 2 años | hace alrededor de 2 años |
+| 1997-01-01T00:00:00.000Z | alrededor de 3 años | alrededor de 3 años | hace alrededor de 3 años |
+| 1996-01-01T00:00:00.000Z | alrededor de 4 años | alrededor de 4 años | hace alrededor de 4 años |
+| 1995-01-01T00:00:00.000Z | alrededor de 5 años | alrededor de 5 años | hace alrededor de 5 años |
+| 1994-01-01T00:00:00.000Z | alrededor de 6 años | alrededor de 6 años | hace alrededor de 6 años |
+
+## `formatDistanceStrict`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `addSuffix: true` | With forced unit (i.e. `hour`) |
+| ------------------------ | ----------- | ----------------- | ------------------------------ |
+| 2006-01-01T00:00:00.000Z | 6 años | en 6 años | 52608 horas |
+| 2005-01-01T00:00:00.000Z | 5 años | en 5 años | 43848 horas |
+| 2004-01-01T00:00:00.000Z | 4 años | en 4 años | 35064 horas |
+| 2003-01-01T00:00:00.000Z | 3 años | en 3 años | 26304 horas |
+| 2002-01-01T00:00:00.000Z | 2 años | en 2 años | 17544 horas |
+| 2001-06-01T00:00:00.000Z | 1 año | en 1 año | 12408 horas |
+| 2001-02-01T00:00:00.000Z | 1 año | en 1 año | 9528 horas |
+| 2001-01-01T00:00:00.000Z | 1 año | en 1 año | 8784 horas |
+| 2000-06-01T00:00:00.000Z | 5 meses | en 5 meses | 3648 horas |
+| 2000-03-01T00:00:00.000Z | 2 meses | en 2 meses | 1440 horas |
+| 2000-02-01T00:00:00.000Z | 1 mes | en 1 mes | 744 horas |
+| 2000-01-15T00:00:00.000Z | 14 días | en 14 días | 336 horas |
+| 2000-01-02T00:00:00.000Z | 1 día | en 1 día | 24 horas |
+| 2000-01-01T06:00:00.000Z | 6 horas | en 6 horas | 6 horas |
+| 2000-01-01T01:00:00.000Z | 1 hora | en 1 hora | 1 hora |
+| 2000-01-01T00:45:00.000Z | 45 minutos | en 45 minutos | 1 hora |
+| 2000-01-01T00:30:00.000Z | 30 minutos | en 30 minutos | 1 hora |
+| 2000-01-01T00:15:00.000Z | 15 minutos | en 15 minutos | 0 horas |
+| 2000-01-01T00:01:00.000Z | 1 minuto | en 1 minuto | 0 horas |
+| 2000-01-01T00:00:25.000Z | 25 segundos | en 25 segundos | 0 horas |
+| 2000-01-01T00:00:15.000Z | 15 segundos | en 15 segundos | 0 horas |
+| 2000-01-01T00:00:05.000Z | 5 segundos | en 5 segundos | 0 horas |
+| 2000-01-01T00:00:00.000Z | 0 segundos | hace 0 segundos | 0 horas |
+| 1999-12-31T23:59:55.000Z | 5 segundos | hace 5 segundos | 0 horas |
+| 1999-12-31T23:59:45.000Z | 15 segundos | hace 15 segundos | 0 horas |
+| 1999-12-31T23:59:35.000Z | 25 segundos | hace 25 segundos | 0 horas |
+| 1999-12-31T23:59:00.000Z | 1 minuto | hace 1 minuto | 0 horas |
+| 1999-12-31T23:45:00.000Z | 15 minutos | hace 15 minutos | 0 horas |
+| 1999-12-31T23:30:00.000Z | 30 minutos | hace 30 minutos | 1 hora |
+| 1999-12-31T23:15:00.000Z | 45 minutos | hace 45 minutos | 1 hora |
+| 1999-12-31T23:00:00.000Z | 1 hora | hace 1 hora | 1 hora |
+| 1999-12-31T18:00:00.000Z | 6 horas | hace 6 horas | 6 horas |
+| 1999-12-30T00:00:00.000Z | 2 días | hace 2 días | 48 horas |
+| 1999-12-15T00:00:00.000Z | 17 días | hace 17 días | 408 horas |
+| 1999-12-01T00:00:00.000Z | 1 mes | hace 1 mes | 744 horas |
+| 1999-11-01T00:00:00.000Z | 2 meses | hace 2 meses | 1464 horas |
+| 1999-06-01T00:00:00.000Z | 7 meses | hace 7 meses | 5136 horas |
+| 1999-01-01T00:00:00.000Z | 1 año | hace 1 año | 8760 horas |
+| 1998-12-01T00:00:00.000Z | 1 año | hace 1 año | 9504 horas |
+| 1998-06-01T00:00:00.000Z | 2 años | hace 2 años | 13896 horas |
+| 1998-01-01T00:00:00.000Z | 2 años | hace 2 años | 17520 horas |
+| 1997-01-01T00:00:00.000Z | 3 años | hace 3 años | 26280 horas |
+| 1996-01-01T00:00:00.000Z | 4 años | hace 4 años | 35064 horas |
+| 1995-01-01T00:00:00.000Z | 5 años | hace 5 años | 43824 horas |
+| 1994-01-01T00:00:00.000Z | 6 años | hace 6 años | 52584 horas |
+
+## `formatRelative`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result |
+| ------------------------ | --------------------------- |
+| 2000-01-10T00:00:00.000Z | 10/01/2000 |
+| 2000-01-05T00:00:00.000Z | miércoles a las 00:00 |
+| 2000-01-02T00:00:00.000Z | mañana a las 00:00 |
+| 2000-01-01T00:00:00.000Z | hoy a las 00:00 |
+| 1999-12-31T00:00:00.000Z | ayer a las 00:00 |
+| 1999-12-27T00:00:00.000Z | el lunes pasado a las 00:00 |
+| 1999-12-21T00:00:00.000Z | 21/12/1999 |
diff --git a/date-fns/src/locale/et/_lib/formatDistance/index.js b/date-fns/src/locale/et/_lib/formatDistance/index.js
new file mode 100644
index 0000000..1e4ed97
--- /dev/null
+++ b/date-fns/src/locale/et/_lib/formatDistance/index.js
@@ -0,0 +1,198 @@
+var formatDistanceLocale = {
+ lessThanXSeconds: {
+ standalone: {
+ one: 'vähem kui üks sekund',
+ other: 'vähem kui {{count}} sekundit'
+ },
+ withPreposition: {
+ one: 'vähem kui ühe sekundi',
+ other: 'vähem kui {{count}} sekundi'
+ }
+ },
+
+ xSeconds: {
+ standalone: {
+ one: 'üks sekund',
+ other: '{{count}} sekundit'
+ },
+ withPreposition: {
+ one: 'ühe sekundi',
+ other: '{{count}} sekundi'
+ }
+ },
+
+ halfAMinute: {
+ standalone: 'pool minutit',
+ withPreposition: 'poole minuti'
+ },
+
+ lessThanXMinutes: {
+ standalone: {
+ one: 'vähem kui üks minut',
+ other: 'vähem kui {{count}} minutit'
+ },
+ withPreposition: {
+ one: 'vähem kui ühe minuti',
+ other: 'vähem kui {{count}} minuti'
+ }
+ },
+
+ xMinutes: {
+ standalone: {
+ one: 'üks minut',
+ other: '{{count}} minutit'
+ },
+ withPreposition: {
+ one: 'ühe minuti',
+ other: '{{count}} minuti'
+ }
+ },
+
+ aboutXHours: {
+ standalone: {
+ one: 'umbes üks tund',
+ other: 'umbes {{count}} tundi'
+ },
+ withPreposition: {
+ one: 'umbes ühe tunni',
+ other: 'umbes {{count}} tunni'
+ }
+ },
+
+ xHours: {
+ standalone: {
+ one: 'üks tund',
+ other: '{{count}} tundi'
+ },
+ withPreposition: {
+ one: 'ühe tunni',
+ other: '{{count}} tunni'
+ }
+ },
+
+ xDays: {
+ standalone: {
+ one: 'üks päev',
+ other: '{{count}} päeva'
+ },
+ withPreposition: {
+ one: 'ühe päeva',
+ other: '{{count}} päeva'
+ }
+ },
+
+ aboutXWeeks: {
+ standalone: {
+ one: 'umbes üks nädal',
+ other: 'umbes {{count}} nädalat'
+ },
+ withPreposition: {
+ one: 'umbes ühe nädala',
+ other: 'umbes {{count}} nädala'
+ }
+ },
+
+ xWeeks: {
+ standalone: {
+ one: 'üks nädal',
+ other: '{{count}} nädalat'
+ },
+ withPreposition: {
+ one: 'ühe nädala',
+ other: '{{count}} nädala'
+ }
+ },
+
+ aboutXMonths: {
+ standalone: {
+ one: 'umbes üks kuu',
+ other: 'umbes {{count}} kuud'
+ },
+ withPreposition: {
+ one: 'umbes ühe kuu',
+ other: 'umbes {{count}} kuu'
+ }
+ },
+
+ xMonths: {
+ standalone: {
+ one: 'üks kuu',
+ other: '{{count}} kuud'
+ },
+ withPreposition: {
+ one: 'ühe kuu',
+ other: '{{count}} kuu'
+ }
+ },
+
+ aboutXYears: {
+ standalone: {
+ one: 'umbes üks aasta',
+ other: 'umbes {{count}} aastat'
+ },
+ withPreposition: {
+ one: 'umbes ühe aasta',
+ other: 'umbes {{count}} aasta'
+ }
+ },
+
+ xYears: {
+ standalone: {
+ one: 'üks aasta',
+ other: '{{count}} aastat'
+ },
+ withPreposition: {
+ one: 'ühe aasta',
+ other: '{{count}} aasta'
+ }
+ },
+
+ overXYears: {
+ standalone: {
+ one: 'rohkem kui üks aasta',
+ other: 'rohkem kui {{count}} aastat'
+ },
+ withPreposition: {
+ one: 'rohkem kui ühe aasta',
+ other: 'rohkem kui {{count}} aasta'
+ }
+ },
+
+ almostXYears: {
+ standalone: {
+ one: 'peaaegu üks aasta',
+ other: 'peaaegu {{count}} aastat'
+ },
+ withPreposition: {
+ one: 'peaaegu ühe aasta',
+ other: 'peaaegu {{count}} aasta'
+ }
+ }
+}
+
+export default function formatDistance(token, count, options) {
+ options = options || {}
+
+ var usageGroup = options.addSuffix
+ ? formatDistanceLocale[token].withPreposition
+ : formatDistanceLocale[token].standalone
+
+ var result
+ if (typeof usageGroup === 'string') {
+ result = usageGroup
+ } else if (count === 1) {
+ result = usageGroup.one
+ } else {
+ result = usageGroup.other.replace('{{count}}', count)
+ }
+
+ if (options.addSuffix) {
+ if (options.comparison > 0) {
+ return result + ' pärast'
+ } else {
+ return result + ' eest'
+ }
+ }
+
+ return result
+}
diff --git a/date-fns/src/locale/et/_lib/formatLong/index.js b/date-fns/src/locale/et/_lib/formatLong/index.js
new file mode 100644
index 0000000..c149b17
--- /dev/null
+++ b/date-fns/src/locale/et/_lib/formatLong/index.js
@@ -0,0 +1,41 @@
+import buildFormatLongFn from '../../../_lib/buildFormatLongFn/index'
+
+var dateFormats = {
+ full: 'eeee, d. MMMM y',
+ long: 'd. MMMM y',
+ medium: 'd. MMM y',
+ short: 'dd.MM.y'
+}
+
+var timeFormats = {
+ full: 'HH:mm:ss zzzz',
+ long: 'HH:mm:ss z',
+ medium: 'HH:mm:ss',
+ short: 'HH:mm'
+}
+
+var dateTimeFormats = {
+ full: "{{date}} 'kell' {{time}}",
+ long: "{{date}} 'kell' {{time}}",
+ medium: '{{date}}. {{time}}',
+ short: '{{date}}. {{time}}'
+}
+
+var formatLong = {
+ date: buildFormatLongFn({
+ formats: dateFormats,
+ defaultWidth: 'full'
+ }),
+
+ time: buildFormatLongFn({
+ formats: timeFormats,
+ defaultWidth: 'full'
+ }),
+
+ dateTime: buildFormatLongFn({
+ formats: dateTimeFormats,
+ defaultWidth: 'full'
+ })
+}
+
+export default formatLong
diff --git a/date-fns/src/locale/et/_lib/formatRelative/index.js b/date-fns/src/locale/et/_lib/formatRelative/index.js
new file mode 100644
index 0000000..50132f3
--- /dev/null
+++ b/date-fns/src/locale/et/_lib/formatRelative/index.js
@@ -0,0 +1,12 @@
+var formatRelativeLocale = {
+ lastWeek: "'eelmine' eeee 'kell' p",
+ yesterday: "'eile kell' p",
+ today: "'täna kell' p",
+ tomorrow: "'homme kell' p",
+ nextWeek: "'järgmine' eeee 'kell' p",
+ other: 'P'
+}
+
+export default function formatRelative(token, _date, _baseDate, _options) {
+ return formatRelativeLocale[token]
+}
diff --git a/date-fns/src/locale/et/_lib/localize/index.js b/date-fns/src/locale/et/_lib/localize/index.js
new file mode 100644
index 0000000..fac828f
--- /dev/null
+++ b/date-fns/src/locale/et/_lib/localize/index.js
@@ -0,0 +1,176 @@
+import buildLocalizeFn from '../../../_lib/buildLocalizeFn/index'
+
+var eraValues = {
+ narrow: ['e.m.a', 'm.a.j'],
+ abbreviated: ['e.m.a', 'm.a.j'],
+ wide: ['enne meie ajaarvamist', 'meie ajaarvamise järgi']
+}
+
+var quarterValues = {
+ narrow: ['1', '2', '3', '4'],
+ abbreviated: ['K1', 'K2', 'K3', 'K4'],
+ wide: ['1. kvartal', '2. kvartal', '3. kvartal', '4. kvartal']
+}
+
+var monthValues = {
+ narrow: ['J', 'V', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],
+ abbreviated: [
+ 'jaan',
+ 'veebr',
+ 'märts',
+ 'apr',
+ 'mai',
+ 'juuni',
+ 'juuli',
+ 'aug',
+ 'sept',
+ 'okt',
+ 'nov',
+ 'dets'
+ ],
+ wide: [
+ 'jaanuar',
+ 'veebruar',
+ 'märts',
+ 'aprill',
+ 'mai',
+ 'juuni',
+ 'juuli',
+ 'august',
+ 'september',
+ 'oktoober',
+ 'november',
+ 'detsember'
+ ]
+}
+
+var dayValues = {
+ narrow: ['P', 'E', 'T', 'K', 'N', 'R', 'L'],
+ short: ['P', 'E', 'T', 'K', 'N', 'R', 'L'],
+ abbreviated: [
+ 'pühap.',
+ 'esmasp.',
+ 'teisip.',
+ 'kolmap.',
+ 'neljap.',
+ 'reede.',
+ 'laup.'
+ ],
+ wide: [
+ 'pühapäev',
+ 'esmaspäev',
+ 'teisipäev',
+ 'kolmapäev',
+ 'neljapäev',
+ 'reede',
+ 'laupäev'
+ ]
+}
+
+var dayPeriodValues = {
+ narrow: {
+ am: 'AM',
+ pm: 'PM',
+ midnight: 'kesköö',
+ noon: 'keskpäev',
+ morning: 'hommik',
+ afternoon: 'pärastlõuna',
+ evening: 'õhtu',
+ night: 'öö'
+ },
+ abbreviated: {
+ am: 'AM',
+ pm: 'PM',
+ midnight: 'kesköö',
+ noon: 'keskpäev',
+ morning: 'hommik',
+ afternoon: 'pärastlõuna',
+ evening: 'õhtu',
+ night: 'öö'
+ },
+ wide: {
+ am: 'AM',
+ pm: 'PM',
+ midnight: 'kesköö',
+ noon: 'keskpäev',
+ morning: 'hommik',
+ afternoon: 'pärastlõuna',
+ evening: 'õhtu',
+ night: 'öö'
+ }
+}
+
+var formattingDayPeriodValues = {
+ narrow: {
+ am: 'AM',
+ pm: 'PM',
+ midnight: 'keskööl',
+ noon: 'keskpäeval',
+ morning: 'hommikul',
+ afternoon: 'pärastlõunal',
+ evening: 'õhtul',
+ night: 'öösel'
+ },
+ abbreviated: {
+ am: 'AM',
+ pm: 'PM',
+ midnight: 'keskööl',
+ noon: 'keskpäeval',
+ morning: 'hommikul',
+ afternoon: 'pärastlõunal',
+ evening: 'õhtul',
+ night: 'öösel'
+ },
+ wide: {
+ am: 'AM',
+ pm: 'PM',
+ midnight: 'keskööl',
+ noon: 'keskpäeval',
+ morning: 'hommikul',
+ afternoon: 'pärastlõunal',
+ evening: 'õhtul',
+ night: 'öösel'
+ }
+}
+
+function ordinalNumber(dirtyNumber) {
+ var number = Number(dirtyNumber)
+ return number + '.'
+}
+
+var localize = {
+ ordinalNumber: ordinalNumber,
+
+ era: buildLocalizeFn({
+ values: eraValues,
+ defaultWidth: 'wide'
+ }),
+
+ quarter: buildLocalizeFn({
+ values: quarterValues,
+ defaultWidth: 'wide',
+ argumentCallback: function(quarter) {
+ return Number(quarter) - 1
+ }
+ }),
+
+ month: buildLocalizeFn({
+ values: monthValues,
+ formattingValues: monthValues,
+ defaultWidth: 'wide'
+ }),
+
+ day: buildLocalizeFn({
+ values: dayValues,
+ formattingValues: dayValues,
+ defaultWidth: 'wide'
+ }),
+
+ dayPeriod: buildLocalizeFn({
+ values: dayPeriodValues,
+ formattingValues: formattingDayPeriodValues,
+ defaultWidth: 'wide'
+ })
+}
+
+export default localize
diff --git a/date-fns/src/locale/et/_lib/match/index.js b/date-fns/src/locale/et/_lib/match/index.js
new file mode 100644
index 0000000..7f0cc5c
--- /dev/null
+++ b/date-fns/src/locale/et/_lib/match/index.js
@@ -0,0 +1,139 @@
+import buildMatchPatternFn from '../../../_lib/buildMatchPatternFn/index'
+import buildMatchFn from '../../../_lib/buildMatchFn/index'
+
+var matchOrdinalNumberPattern = /^\d+\./i
+var parseOrdinalNumberPattern = /\d+/i
+
+var matchEraPatterns = {
+ narrow: /^(e\.m\.a|m\.a\.j|eKr|pKr)/i,
+ abbreviated: /^(e\.m\.a|m\.a\.j|eKr|pKr)/i,
+ wide: /^(enne meie ajaarvamist|meie ajaarvamise järgi|enne Kristust|pärast Kristust)/i
+}
+
+var parseEraPatterns = {
+ any: [/^e/i, /^(m|p)/i]
+}
+
+var matchQuarterPatterns = {
+ narrow: /^[1234]/i,
+ abbreviated: /^K[1234]/i,
+ wide: /^[1234](\.)? kvartal/i
+}
+var parseQuarterPatterns = {
+ any: [/1/i, /2/i, /3/i, /4/i]
+}
+
+var matchMonthPatterns = {
+ narrow: /^[jvmasond]/i,
+ abbreviated: /^('jaan|veebr|märts|apr|mai|juuni|juuli|aug|sept|okt|nov|dets')/i,
+ wide: /^('jaanuar|veebruar|märts|aprill|mai|juuni|juuli|august|september|oktoober|november|detsember')/i
+}
+
+var parseMonthPatterns = {
+ narrow: [
+ /^j/i,
+ /^v/i,
+ /^m/i,
+ /^a/i,
+ /^m/i,
+ /^j/i,
+ /^j/i,
+ /^a/i,
+ /^s/i,
+ /^o/i,
+ /^n/i,
+ /^d/i
+ ],
+ any: [
+ /^ja/i,
+ /^v/i,
+ /^mär/i,
+ /^ap/i,
+ /^mai/i,
+ /^jun/i,
+ /^jul/i,
+ /^au/i,
+ /^s/i,
+ /^o/i,
+ /^n/i,
+ /^d/i
+ ]
+}
+
+var matchDayPatterns = {
+ narrow: /^[petknrl]/i,
+ short: /^[petknrl]/i,
+ abbreviated: /^(püh?|esm?|tei?|kolm?|nel?|ree?|laup?)\.?/i,
+ wide: /^('pühapäev|esmaspäev|teisipäev|kolmapäev|neljapäev|reede|laupäev')/i
+}
+
+var parseDayPatterns = {
+ any: [/^p/i, /^e/i, /^t/i, /^k/i, /^n/i, /^r/i, /^l/i]
+}
+
+var matchDayPeriodPatterns = {
+ any: /^(am|pm|kesköö|keskpäev|hommik|pärastlõuna|õhtu|öö)/i
+}
+
+var parseDayPeriodPatterns = {
+ any: {
+ am: /^a/i,
+ pm: /^p/i,
+ midnight: /^keskö/i,
+ noon: /^keskp/i,
+ morning: /hommik/i,
+ afternoon: /pärastlõuna/i,
+ evening: /õhtu/i,
+ night: /öö/i
+ }
+}
+
+var match = {
+ ordinalNumber: buildMatchPatternFn({
+ matchPattern: matchOrdinalNumberPattern,
+ parsePattern: parseOrdinalNumberPattern,
+ valueCallback: function(value) {
+ return parseInt(value, 10)
+ }
+ }),
+
+ era: buildMatchFn({
+ matchPatterns: matchEraPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseEraPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ quarter: buildMatchFn({
+ matchPatterns: matchQuarterPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseQuarterPatterns,
+ defaultParseWidth: 'any',
+ valueCallback: function(index) {
+ return index + 1
+ }
+ }),
+
+ month: buildMatchFn({
+ matchPatterns: matchMonthPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseMonthPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ day: buildMatchFn({
+ matchPatterns: matchDayPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseDayPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ dayPeriod: buildMatchFn({
+ matchPatterns: matchDayPeriodPatterns,
+ defaultMatchWidth: 'any',
+ parsePatterns: parseDayPeriodPatterns,
+ defaultParseWidth: 'any'
+ })
+}
+
+export default match
diff --git a/date-fns/src/locale/et/index.d.ts b/date-fns/src/locale/et/index.d.ts
new file mode 100644
index 0000000..debd0b9
--- /dev/null
+++ b/date-fns/src/locale/et/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { et } from 'date-fns/locale'
+export default et
diff --git a/date-fns/src/locale/et/index.js b/date-fns/src/locale/et/index.js
new file mode 100644
index 0000000..af163e0
--- /dev/null
+++ b/date-fns/src/locale/et/index.js
@@ -0,0 +1,28 @@
+import formatDistance from './_lib/formatDistance/index'
+import formatLong from './_lib/formatLong/index'
+import formatRelative from './_lib/formatRelative/index'
+import localize from './_lib/localize/index'
+import match from './_lib/match/index'
+
+/**
+ * @type {Locale}
+ * @category Locales
+ * @summary Estonian locale.
+ * @language Estonian
+ * @iso-639-2 est
+ * @author Priit Hansen [@HansenPriit]{@link https://github.com/priithansen}
+ */
+var locale = {
+ code: 'et',
+ formatDistance: formatDistance,
+ formatLong: formatLong,
+ formatRelative: formatRelative,
+ localize: localize,
+ match: match,
+ options: {
+ weekStartsOn: 1 /* Monday */,
+ firstWeekContainsDate: 4
+ }
+}
+
+export default locale
diff --git a/date-fns/src/locale/et/index.js.flow b/date-fns/src/locale/et/index.js.flow
new file mode 100644
index 0000000..b9dfe66
--- /dev/null
+++ b/date-fns/src/locale/et/index.js.flow
@@ -0,0 +1,35 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+declare module.exports: Locale
diff --git a/date-fns/src/locale/et/snapshot.md b/date-fns/src/locale/et/snapshot.md
new file mode 100644
index 0000000..9e4100b
--- /dev/null
+++ b/date-fns/src/locale/et/snapshot.md
@@ -0,0 +1,304 @@
+# Estonian (et) locale
+
+## `format` and `parse`
+
+| Title | Token string | Date | `format` result | `parse` result |
+| ------------------------------- | ------------ | ------------------------ | ---------------------------------------------------- | ------------------------ |
+| Calendar year | yo | 1987-02-11T12:13:14.015Z | 1987. | 1987-01-01T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 5. | 0005-01-01T00:00:00.000Z |
+| Local week-numbering year | Yo | 1987-02-11T12:13:14.015Z | 1987. | 1986-12-29T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 4. | 0003-12-29T00:00:00.000Z |
+| Quarter (formatting) | Qo | 2019-01-01T12:13:14.015Z | 1. | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2. | 2019-04-01T00:00:00.000Z |
+| | QQQ | 2019-01-01T12:13:14.015Z | K1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | K2 | 2019-04-01T00:00:00.000Z |
+| | QQQQ | 2019-01-01T12:13:14.015Z | 1. kvartal | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2. kvartal | 2019-04-01T00:00:00.000Z |
+| | QQQQQ | 2019-01-01T12:13:14.015Z | 1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2 | 2019-04-01T00:00:00.000Z |
+| Quarter (stand-alone) | qo | 2019-01-01T12:13:14.015Z | 1. | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2. | 2019-04-01T00:00:00.000Z |
+| | qqq | 2019-01-01T12:13:14.015Z | K1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | K2 | 2019-04-01T00:00:00.000Z |
+| | qqqq | 2019-01-01T12:13:14.015Z | 1. kvartal | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2. kvartal | 2019-04-01T00:00:00.000Z |
+| Month (formatting) | Mo | 2019-02-11T12:13:14.015Z | 2. | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7. | 2019-07-01T00:00:00.000Z |
+| | MMM | 2019-02-11T12:13:14.015Z | veebr | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | juuli | Invalid Date |
+| | MMMM | 2019-02-11T12:13:14.015Z | veebruar | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | juuli | Invalid Date |
+| | MMMMM | 2019-02-11T12:13:14.015Z | V | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | J | 2019-01-01T00:00:00.000Z |
+| Month (stand-alone) | Lo | 2019-02-11T12:13:14.015Z | 2. | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7. | 2019-07-01T00:00:00.000Z |
+| | LLL | 2019-02-11T12:13:14.015Z | veebr | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | juuli | Invalid Date |
+| | LLLL | 2019-02-11T12:13:14.015Z | veebruar | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | juuli | Invalid Date |
+| | LLLLL | 2019-02-11T12:13:14.015Z | V | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | J | 2019-01-01T00:00:00.000Z |
+| Local week of year | wo | 2019-01-01T12:13:14.015Z | 1. | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48. | 2019-11-25T00:00:00.000Z |
+| ISO week of year | Io | 2019-01-01T12:13:14.015Z | 1. | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48. | 2019-11-25T00:00:00.000Z |
+| Day of month | do | 2019-02-11T12:13:14.015Z | 11. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-28T12:13:14.015Z | 28. | 2019-02-28T00:00:00.000Z |
+| Day of year | Do | 2019-02-11T12:13:14.015Z | 42. | 2019-02-11T00:00:00.000Z |
+| | | 2019-12-31T12:13:14.015Z | 365. | 2019-12-31T00:00:00.000Z |
+| Day of week (formatting) | E | 2019-02-11T12:13:14.015Z | esmasp. | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | reede. | Invalid Date |
+| | EE | 2019-02-11T12:13:14.015Z | esmasp. | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | reede. | Invalid Date |
+| | EEE | 2019-02-11T12:13:14.015Z | esmasp. | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | reede. | Invalid Date |
+| | EEEE | 2019-02-11T12:13:14.015Z | esmaspäev | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | reede | 2019-02-15T00:00:00.000Z |
+| | EEEEE | 2019-02-11T12:13:14.015Z | E | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | R | 2019-02-15T00:00:00.000Z |
+| | EEEEEE | 2019-02-11T12:13:14.015Z | E | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | R | 2019-02-15T00:00:00.000Z |
+| ISO day of week (formatting) | io | 2019-02-11T12:13:14.015Z | 1. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5. | 2019-02-15T00:00:00.000Z |
+| | iii | 2019-02-11T12:13:14.015Z | esmasp. | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | reede. | Invalid Date |
+| | iiii | 2019-02-11T12:13:14.015Z | esmaspäev | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | reede | 2019-02-15T00:00:00.000Z |
+| | iiiii | 2019-02-11T12:13:14.015Z | E | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | R | 2019-02-15T00:00:00.000Z |
+| | iiiiii | 2019-02-11T12:13:14.015Z | E | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | R | 2019-02-15T00:00:00.000Z |
+| Local day of week (formatting) | eo | 2019-02-11T12:13:14.015Z | 1. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5. | 2019-02-15T00:00:00.000Z |
+| | eee | 2019-02-11T12:13:14.015Z | esmasp. | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | reede. | Invalid Date |
+| | eeee | 2019-02-11T12:13:14.015Z | esmaspäev | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | reede | 2019-02-15T00:00:00.000Z |
+| | eeeee | 2019-02-11T12:13:14.015Z | E | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | R | 2019-02-15T00:00:00.000Z |
+| | eeeeee | 2019-02-11T12:13:14.015Z | E | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | R | 2019-02-15T00:00:00.000Z |
+| Local day of week (stand-alone) | co | 2019-02-11T12:13:14.015Z | 1. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5. | 2019-02-15T00:00:00.000Z |
+| | ccc | 2019-02-11T12:13:14.015Z | esmasp. | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | reede. | Invalid Date |
+| | cccc | 2019-02-11T12:13:14.015Z | esmaspäev | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | reede | 2019-02-15T00:00:00.000Z |
+| | ccccc | 2019-02-11T12:13:14.015Z | E | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | R | 2019-02-15T00:00:00.000Z |
+| | cccccc | 2019-02-11T12:13:14.015Z | E | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | R | 2019-02-15T00:00:00.000Z |
+| AM, PM | a | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | aa | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | aaa | 2019-02-11T11:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | aaaa | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | aaaaa | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| AM, PM, noon, midnight | b | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | bb | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | bbb | 2019-02-11T11:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | bbbb | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | bbbbb | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| Flexible day period | B | 2019-02-11T11:13:14.015Z | hommikul | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | pärastlõunal | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | õhtul | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | öösel | Invalid Date |
+| | BB | 2019-02-11T11:13:14.015Z | hommikul | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | pärastlõunal | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | õhtul | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | öösel | Invalid Date |
+| | BBB | 2019-02-11T11:13:14.015Z | hommikul | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | pärastlõunal | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | õhtul | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | öösel | Invalid Date |
+| | BBBB | 2019-02-11T11:13:14.015Z | hommikul | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | pärastlõunal | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | õhtul | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | öösel | Invalid Date |
+| | BBBBB | 2019-02-11T11:13:14.015Z | hommikul | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | pärastlõunal | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | õhtul | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | öösel | Invalid Date |
+| Hour [1-12] | ho | 2019-02-11T11:13:14.015Z | 11. | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11. | 2019-02-11T23:00:00.000Z |
+| Hour [0-23] | Ho | 2019-02-11T11:13:14.015Z | 11. | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23. | 2019-02-11T23:00:00.000Z |
+| Hour [0-11] | Ko | 2019-02-11T11:13:14.015Z | 11. | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11. | 2019-02-11T23:00:00.000Z |
+| Hour [1-24] | ko | 2019-02-11T11:13:14.015Z | 11. | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23. | 2019-02-11T23:00:00.000Z |
+| Minute | mo | 2019-01-01T12:01:14.015Z | 1. | 2019-01-01T12:01:00.000Z |
+| | | 2019-04-01T12:55:14.015Z | 55. | 2019-04-01T12:55:00.000Z |
+| Second | so | 2019-01-01T12:13:01.015Z | 1. | 2019-01-01T12:13:01.000Z |
+| | | 2019-04-01T12:13:55.015Z | 55. | 2019-04-01T12:13:55.000Z |
+| Long localized date | P | 1987-02-11T12:13:14.015Z | 11.02.1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29.05.1453 | 1453-05-29T00:00:00.000Z |
+| | PP | 1987-02-11T12:13:14.015Z | 11. veebr 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29. mai 1453 | 1453-05-29T00:00:00.000Z |
+| | PPP | 1987-02-11T12:13:14.015Z | 11. veebruar 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29. mai 1453 | 1453-05-29T00:00:00.000Z |
+| | PPPP | 1987-02-11T12:13:14.015Z | kolmapäev, 11. veebruar 1987 | Errored |
+| | | 1453-05-29T23:59:59.999Z | pühapäev, 29. mai 1453 | Invalid Date |
+| Long localized time | p | 1987-02-11T12:13:14.015Z | 12:13 | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 23:59 | 1453-05-29T23:59:00.000Z |
+| | pp | 1987-02-11T12:13:14.015Z | 12:13:14 | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 | 1453-05-29T23:59:59.000Z |
+| | ppp | 1987-02-11T12:13:14.015Z | 12:13:14 GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 GMT+0 | Errored |
+| | pppp | 1987-02-11T12:13:14.015Z | 12:13:14 GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 GMT+00:00 | Errored |
+| Combination of date and time | Pp | 1987-02-11T12:13:14.015Z | 11.02.1987. 12:13 | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29.05.1453. 23:59 | 1453-05-29T23:59:00.000Z |
+| | PPpp | 1987-02-11T12:13:14.015Z | 11. veebr 1987. 12:13:14 | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29. mai 1453. 23:59:59 | 1453-05-29T23:59:59.000Z |
+| | PPPppp | 1987-02-11T12:13:14.015Z | 11. veebruar 1987 kell 12:13:14 GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 29. mai 1453 kell 23:59:59 GMT+0 | Errored |
+| | PPPPpppp | 1987-02-11T12:13:14.015Z | kolmapäev, 11. veebruar 1987 kell 12:13:14 GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | pühapäev, 29. mai 1453 kell 23:59:59 GMT+00:00 | Invalid Date |
+
+## `formatDistance`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `includeSeconds: true` | `addSuffix: true` |
+| ------------------------ | -------------------- | ---------------------- | --------------------------- |
+| 2006-01-01T00:00:00.000Z | umbes 6 aastat | umbes 6 aastat | umbes 6 aasta pärast |
+| 2005-01-01T00:00:00.000Z | umbes 5 aastat | umbes 5 aastat | umbes 5 aasta pärast |
+| 2004-01-01T00:00:00.000Z | umbes 4 aastat | umbes 4 aastat | umbes 4 aasta pärast |
+| 2003-01-01T00:00:00.000Z | umbes 3 aastat | umbes 3 aastat | umbes 3 aasta pärast |
+| 2002-01-01T00:00:00.000Z | umbes 2 aastat | umbes 2 aastat | umbes 2 aasta pärast |
+| 2001-06-01T00:00:00.000Z | rohkem kui üks aasta | rohkem kui üks aasta | rohkem kui ühe aasta pärast |
+| 2001-02-01T00:00:00.000Z | umbes üks aasta | umbes üks aasta | umbes ühe aasta pärast |
+| 2001-01-01T00:00:00.000Z | umbes üks aasta | umbes üks aasta | umbes ühe aasta pärast |
+| 2000-06-01T00:00:00.000Z | 5 kuud | 5 kuud | 5 kuu pärast |
+| 2000-03-01T00:00:00.000Z | 2 kuud | 2 kuud | 2 kuu pärast |
+| 2000-02-01T00:00:00.000Z | umbes üks kuu | umbes üks kuu | umbes ühe kuu pärast |
+| 2000-01-15T00:00:00.000Z | 14 päeva | 14 päeva | 14 päeva pärast |
+| 2000-01-02T00:00:00.000Z | üks päev | üks päev | ühe päeva pärast |
+| 2000-01-01T06:00:00.000Z | umbes 6 tundi | umbes 6 tundi | umbes 6 tunni pärast |
+| 2000-01-01T01:00:00.000Z | umbes üks tund | umbes üks tund | umbes ühe tunni pärast |
+| 2000-01-01T00:45:00.000Z | umbes üks tund | umbes üks tund | umbes ühe tunni pärast |
+| 2000-01-01T00:30:00.000Z | 30 minutit | 30 minutit | 30 minuti pärast |
+| 2000-01-01T00:15:00.000Z | 15 minutit | 15 minutit | 15 minuti pärast |
+| 2000-01-01T00:01:00.000Z | üks minut | üks minut | ühe minuti pärast |
+| 2000-01-01T00:00:25.000Z | vähem kui üks minut | pool minutit | vähem kui ühe minuti pärast |
+| 2000-01-01T00:00:15.000Z | vähem kui üks minut | vähem kui 20 sekundit | vähem kui ühe minuti pärast |
+| 2000-01-01T00:00:05.000Z | vähem kui üks minut | vähem kui 10 sekundit | vähem kui ühe minuti pärast |
+| 2000-01-01T00:00:00.000Z | vähem kui üks minut | vähem kui 5 sekundit | vähem kui ühe minuti eest |
+| 1999-12-31T23:59:55.000Z | vähem kui üks minut | vähem kui 10 sekundit | vähem kui ühe minuti eest |
+| 1999-12-31T23:59:45.000Z | vähem kui üks minut | vähem kui 20 sekundit | vähem kui ühe minuti eest |
+| 1999-12-31T23:59:35.000Z | vähem kui üks minut | pool minutit | vähem kui ühe minuti eest |
+| 1999-12-31T23:59:00.000Z | üks minut | üks minut | ühe minuti eest |
+| 1999-12-31T23:45:00.000Z | 15 minutit | 15 minutit | 15 minuti eest |
+| 1999-12-31T23:30:00.000Z | 30 minutit | 30 minutit | 30 minuti eest |
+| 1999-12-31T23:15:00.000Z | umbes üks tund | umbes üks tund | umbes ühe tunni eest |
+| 1999-12-31T23:00:00.000Z | umbes üks tund | umbes üks tund | umbes ühe tunni eest |
+| 1999-12-31T18:00:00.000Z | umbes 6 tundi | umbes 6 tundi | umbes 6 tunni eest |
+| 1999-12-30T00:00:00.000Z | 2 päeva | 2 päeva | 2 päeva eest |
+| 1999-12-15T00:00:00.000Z | 17 päeva | 17 päeva | 17 päeva eest |
+| 1999-12-01T00:00:00.000Z | umbes üks kuu | umbes üks kuu | umbes ühe kuu eest |
+| 1999-11-01T00:00:00.000Z | 2 kuud | 2 kuud | 2 kuu eest |
+| 1999-06-01T00:00:00.000Z | 7 kuud | 7 kuud | 7 kuu eest |
+| 1999-01-01T00:00:00.000Z | umbes üks aasta | umbes üks aasta | umbes ühe aasta eest |
+| 1998-12-01T00:00:00.000Z | umbes üks aasta | umbes üks aasta | umbes ühe aasta eest |
+| 1998-06-01T00:00:00.000Z | rohkem kui üks aasta | rohkem kui üks aasta | rohkem kui ühe aasta eest |
+| 1998-01-01T00:00:00.000Z | umbes 2 aastat | umbes 2 aastat | umbes 2 aasta eest |
+| 1997-01-01T00:00:00.000Z | umbes 3 aastat | umbes 3 aastat | umbes 3 aasta eest |
+| 1996-01-01T00:00:00.000Z | umbes 4 aastat | umbes 4 aastat | umbes 4 aasta eest |
+| 1995-01-01T00:00:00.000Z | umbes 5 aastat | umbes 5 aastat | umbes 5 aasta eest |
+| 1994-01-01T00:00:00.000Z | umbes 6 aastat | umbes 6 aastat | umbes 6 aasta eest |
+
+## `formatDistanceStrict`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `addSuffix: true` | With forced unit (i.e. `hour`) |
+| ------------------------ | ----------- | ----------------- | ------------------------------ |
+| 2006-01-01T00:00:00.000Z | 6 aastat | 6 aasta pärast | 52608 tundi |
+| 2005-01-01T00:00:00.000Z | 5 aastat | 5 aasta pärast | 43848 tundi |
+| 2004-01-01T00:00:00.000Z | 4 aastat | 4 aasta pärast | 35064 tundi |
+| 2003-01-01T00:00:00.000Z | 3 aastat | 3 aasta pärast | 26304 tundi |
+| 2002-01-01T00:00:00.000Z | 2 aastat | 2 aasta pärast | 17544 tundi |
+| 2001-06-01T00:00:00.000Z | üks aasta | ühe aasta pärast | 12408 tundi |
+| 2001-02-01T00:00:00.000Z | üks aasta | ühe aasta pärast | 9528 tundi |
+| 2001-01-01T00:00:00.000Z | üks aasta | ühe aasta pärast | 8784 tundi |
+| 2000-06-01T00:00:00.000Z | 5 kuud | 5 kuu pärast | 3648 tundi |
+| 2000-03-01T00:00:00.000Z | 2 kuud | 2 kuu pärast | 1440 tundi |
+| 2000-02-01T00:00:00.000Z | üks kuu | ühe kuu pärast | 744 tundi |
+| 2000-01-15T00:00:00.000Z | 14 päeva | 14 päeva pärast | 336 tundi |
+| 2000-01-02T00:00:00.000Z | üks päev | ühe päeva pärast | 24 tundi |
+| 2000-01-01T06:00:00.000Z | 6 tundi | 6 tunni pärast | 6 tundi |
+| 2000-01-01T01:00:00.000Z | üks tund | ühe tunni pärast | üks tund |
+| 2000-01-01T00:45:00.000Z | 45 minutit | 45 minuti pärast | üks tund |
+| 2000-01-01T00:30:00.000Z | 30 minutit | 30 minuti pärast | üks tund |
+| 2000-01-01T00:15:00.000Z | 15 minutit | 15 minuti pärast | 0 tundi |
+| 2000-01-01T00:01:00.000Z | üks minut | ühe minuti pärast | 0 tundi |
+| 2000-01-01T00:00:25.000Z | 25 sekundit | 25 sekundi pärast | 0 tundi |
+| 2000-01-01T00:00:15.000Z | 15 sekundit | 15 sekundi pärast | 0 tundi |
+| 2000-01-01T00:00:05.000Z | 5 sekundit | 5 sekundi pärast | 0 tundi |
+| 2000-01-01T00:00:00.000Z | 0 sekundit | 0 sekundi eest | 0 tundi |
+| 1999-12-31T23:59:55.000Z | 5 sekundit | 5 sekundi eest | 0 tundi |
+| 1999-12-31T23:59:45.000Z | 15 sekundit | 15 sekundi eest | 0 tundi |
+| 1999-12-31T23:59:35.000Z | 25 sekundit | 25 sekundi eest | 0 tundi |
+| 1999-12-31T23:59:00.000Z | üks minut | ühe minuti eest | 0 tundi |
+| 1999-12-31T23:45:00.000Z | 15 minutit | 15 minuti eest | 0 tundi |
+| 1999-12-31T23:30:00.000Z | 30 minutit | 30 minuti eest | üks tund |
+| 1999-12-31T23:15:00.000Z | 45 minutit | 45 minuti eest | üks tund |
+| 1999-12-31T23:00:00.000Z | üks tund | ühe tunni eest | üks tund |
+| 1999-12-31T18:00:00.000Z | 6 tundi | 6 tunni eest | 6 tundi |
+| 1999-12-30T00:00:00.000Z | 2 päeva | 2 päeva eest | 48 tundi |
+| 1999-12-15T00:00:00.000Z | 17 päeva | 17 päeva eest | 408 tundi |
+| 1999-12-01T00:00:00.000Z | üks kuu | ühe kuu eest | 744 tundi |
+| 1999-11-01T00:00:00.000Z | 2 kuud | 2 kuu eest | 1464 tundi |
+| 1999-06-01T00:00:00.000Z | 7 kuud | 7 kuu eest | 5136 tundi |
+| 1999-01-01T00:00:00.000Z | üks aasta | ühe aasta eest | 8760 tundi |
+| 1998-12-01T00:00:00.000Z | üks aasta | ühe aasta eest | 9504 tundi |
+| 1998-06-01T00:00:00.000Z | 2 aastat | 2 aasta eest | 13896 tundi |
+| 1998-01-01T00:00:00.000Z | 2 aastat | 2 aasta eest | 17520 tundi |
+| 1997-01-01T00:00:00.000Z | 3 aastat | 3 aasta eest | 26280 tundi |
+| 1996-01-01T00:00:00.000Z | 4 aastat | 4 aasta eest | 35064 tundi |
+| 1995-01-01T00:00:00.000Z | 5 aastat | 5 aasta eest | 43824 tundi |
+| 1994-01-01T00:00:00.000Z | 6 aastat | 6 aasta eest | 52584 tundi |
+
+## `formatRelative`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result |
+| ------------------------ | ----------------------------- |
+| 2000-01-10T00:00:00.000Z | 10.01.2000 |
+| 2000-01-05T00:00:00.000Z | järgmine kolmapäev kell 00:00 |
+| 2000-01-02T00:00:00.000Z | homme kell 00:00 |
+| 2000-01-01T00:00:00.000Z | täna kell 00:00 |
+| 1999-12-31T00:00:00.000Z | eile kell 00:00 |
+| 1999-12-27T00:00:00.000Z | eelmine esmaspäev kell 00:00 |
+| 1999-12-21T00:00:00.000Z | 21.12.1999 |
diff --git a/date-fns/src/locale/eu/_lib/formatDistance/index.js b/date-fns/src/locale/eu/_lib/formatDistance/index.js
new file mode 100644
index 0000000..b36bef9
--- /dev/null
+++ b/date-fns/src/locale/eu/_lib/formatDistance/index.js
@@ -0,0 +1,101 @@
+var formatDistanceLocale = {
+ lessThanXSeconds: {
+ one: 'segundo bat baino gutxiago',
+ other: '{{count}} segundo baino gutxiago'
+ },
+
+ xSeconds: {
+ one: '1 segundo',
+ other: '{{count}} segundo'
+ },
+
+ halfAMinute: 'minutu erdi',
+
+ lessThanXMinutes: {
+ one: 'minutu bat baino gutxiago',
+ other: '{{count}} minutu baino gutxiago'
+ },
+
+ xMinutes: {
+ one: '1 minutu',
+ other: '{{count}} minutu'
+ },
+
+ aboutXHours: {
+ one: '1 ordu gutxi gorabehera',
+ other: '{{count}} ordu gutxi gorabehera'
+ },
+
+ xHours: {
+ one: '1 ordu',
+ other: '{{count}} ordu'
+ },
+
+ xDays: {
+ one: '1 egun',
+ other: '{{count}} egun'
+ },
+
+ aboutXWeeks: {
+ one: 'aste 1 inguru',
+ other: '{{count}} aste inguru'
+ },
+
+ xWeeks: {
+ one: '1 aste',
+ other: '{{count}} astean'
+ },
+
+ aboutXMonths: {
+ one: '1 hilabete gutxi gorabehera',
+ other: '{{count}} hilabete gutxi gorabehera'
+ },
+
+ xMonths: {
+ one: '1 hilabete',
+ other: '{{count}} hilabete'
+ },
+
+ aboutXYears: {
+ one: '1 urte gutxi gorabehera',
+ other: '{{count}} urte gutxi gorabehera'
+ },
+
+ xYears: {
+ one: '1 urte',
+ other: '{{count}} urte'
+ },
+
+ overXYears: {
+ one: '1 urte baino gehiago',
+ other: '{{count}} urte baino gehiago'
+ },
+
+ almostXYears: {
+ one: 'ia 1 urte',
+ other: 'ia {{count}} urte'
+ }
+}
+
+export default function formatDistance(token, count, options) {
+ options = options || {}
+
+ var result
+ if (typeof formatDistanceLocale[token] === 'string') {
+ result = formatDistanceLocale[token]
+ } else if (count === 1) {
+ result = formatDistanceLocale[token].one
+ } else {
+ result = formatDistanceLocale[token].other.replace('{{count}}', count)
+ }
+
+ if (options.addSuffix) {
+ if (options.comparison > 0) {
+ return 'en ' + result
+ } else {
+ return 'duela ' + result
+ }
+ }
+
+ return result
+}
diff --git a/date-fns/src/locale/eu/_lib/formatLong/index.js b/date-fns/src/locale/eu/_lib/formatLong/index.js
new file mode 100644
index 0000000..7551df6
--- /dev/null
+++ b/date-fns/src/locale/eu/_lib/formatLong/index.js
@@ -0,0 +1,40 @@
+import buildFormatLongFn from '../../../_lib/buildFormatLongFn/index'
+
+var dateFormats = {
+ full: "EEEE, y'ko' MMMM'ren' d'a' y'ren'",
+ long: "y'ko' MMMM'ren' d'a'",
+ medium: 'y MMM d',
+ short: 'yy/MM/dd',
+}
+var timeFormats = {
+ full: 'HH:mm:ss zzzz',
+ long: 'HH:mm:ss z',
+ medium: 'HH:mm:ss',
+ short: 'HH:mm'
+}
+
+var dateTimeFormats = {
+ full: "{{date}} 'tan' {{time}}",
+ long: "{{date}} 'tan' {{time}}",
+ medium: '{{date}}, {{time}}',
+ short: '{{date}}, {{time}}'
+}
+
+var formatLong = {
+ date: buildFormatLongFn({
+ formats: dateFormats,
+ defaultWidth: 'full'
+ }),
+
+ time: buildFormatLongFn({
+ formats: timeFormats,
+ defaultWidth: 'full'
+ }),
+
+ dateTime: buildFormatLongFn({
+ formats: dateTimeFormats,
+ defaultWidth: 'full'
+ })
+}
+
+export default formatLong
diff --git a/date-fns/src/locale/eu/_lib/formatRelative/index.js b/date-fns/src/locale/eu/_lib/formatRelative/index.js
new file mode 100644
index 0000000..4cf3407
--- /dev/null
+++ b/date-fns/src/locale/eu/_lib/formatRelative/index.js
@@ -0,0 +1,24 @@
+var formatRelativeLocale = {
+ lastWeek: "'joan den' eeee, LT",
+ yesterday: "'atzo,' p",
+ today: "'gaur,' p",
+ tomorrow: "'bihar,' p",
+ nextWeek: 'eeee, p',
+ other: 'P'
+}
+
+var formatRelativeLocalePlural = {
+ lastWeek: "'joan den' eeee, p",
+ yesterday: "'atzo,' p",
+ today: "'gaur,' p",
+ tomorrow: "'bihar,' p",
+ nextWeek: 'eeee, p',
+ other: 'P'
+}
+
+export default function formatRelative(token, date, _baseDate, _options) {
+ if (date.getUTCHours() !== 1) {
+ return formatRelativeLocalePlural[token]
+ }
+ return formatRelativeLocale[token]
+}
diff --git a/date-fns/src/locale/eu/_lib/localize/index.js b/date-fns/src/locale/eu/_lib/localize/index.js
new file mode 100644
index 0000000..4244774
--- /dev/null
+++ b/date-fns/src/locale/eu/_lib/localize/index.js
@@ -0,0 +1,167 @@
+import buildLocalizeFn from '../../../_lib/buildLocalizeFn/index'
+
+var eraValues = {
+ narrow: ['k.a.', 'k.o.'],
+ abbreviated: ['k.a.', 'k.o.'],
+ wide: ['kristo aurretik', 'kristo ondoren']
+}
+
+var quarterValues = {
+ narrow: ['1', '2', '3', '4'],
+ abbreviated: ['1H', '2H', '3H', '4H'],
+ wide: ['1. hiruhilekoa', '2. hiruhilekoa', '3. hiruhilekoa', '4. hiruhilekoa']
+}
+
+var monthValues = {
+ narrow: ['u', 'o', 'm', 'a', 'm', 'e', 'u', 'a', 'i', 'u', 'a', 'a'],
+ abbreviated: [
+ 'urt',
+ 'ots',
+ 'mar',
+ 'api',
+ 'mai',
+ 'eka',
+ 'uzt',
+ 'abu',
+ 'ira',
+ 'urr',
+ 'aza',
+ 'abe'
+ ],
+ wide: [
+ 'urtarrila',
+ 'otsaila',
+ 'martxoa',
+ 'apirila',
+ 'maiatza',
+ 'ekaina',
+ 'uztaila',
+ 'abuztua',
+ 'iraila',
+ 'urria',
+ 'azaroa',
+ 'abendua'
+ ]
+}
+
+var dayValues = {
+ narrow: ['i', 'a', 'a', 'a', 'o', 'o', 'l'],
+ short: ['ig', 'al', 'as', 'az', 'og', 'or', 'lr'],
+ abbreviated: ['iga', 'ast', 'ast', 'ast', 'ost', 'ost', 'lar'],
+ wide: [
+ 'igandea',
+ 'astelehena',
+ 'asteartea',
+ 'asteazkena',
+ 'osteguna',
+ 'ostirala',
+ 'larunbata'
+ ]
+}
+
+var dayPeriodValues = {
+ narrow: {
+ am: 'a',
+ pm: 'p',
+ midnight: 'ge',
+ noon: 'eg',
+ morning: 'goiza',
+ afternoon: 'arratsaldea',
+ evening: 'arratsaldea',
+ night: 'gaua'
+ },
+ abbreviated: {
+ am: 'AM',
+ pm: 'PM',
+ midnight: 'gauerdia',
+ noon: 'eguerdia',
+ morning: 'goiza',
+ afternoon: 'arratsaldea',
+ evening: 'arratsaldea',
+ night: 'gaua'
+ },
+ wide: {
+ am: 'a.m.',
+ pm: 'p.m.',
+ midnight: 'gauerdia',
+ noon: 'eguerdia',
+ morning: 'goiza',
+ afternoon: 'arratsaldea',
+ evening: 'arratsaldea',
+ night: 'gaua'
+ }
+}
+
+var formattingDayPeriodValues = {
+ narrow: {
+ am: 'a',
+ pm: 'p',
+ midnight: 'ge',
+ noon: 'eg',
+ morning: 'goizean',
+ afternoon: 'arratsaldean',
+ evening: 'arratsaldean',
+ night: 'gauean'
+ },
+ abbreviated: {
+ am: 'AM',
+ pm: 'PM',
+ midnight: 'gauerdia',
+ noon: 'eguerdia',
+ morning: 'goizean',
+ afternoon: 'arratsaldean',
+ evening: 'arratsaldean',
+ night: 'gauean'
+ },
+ wide: {
+ am: 'a.m.',
+ pm: 'p.m.',
+ midnight: 'gauerdia',
+ noon: 'eguerdia',
+ morning: 'goizean',
+ afternoon: 'arratsaldean',
+ evening: 'arratsaldean',
+ night: 'gauean'
+ }
+}
+
+function ordinalNumber(dirtyNumber) {
+ var number = Number(dirtyNumber)
+ return number + '.'
+}
+
+var localize = {
+ ordinalNumber: ordinalNumber,
+
+ era: buildLocalizeFn({
+ values: eraValues,
+ defaultWidth: 'wide'
+ }),
+
+ quarter: buildLocalizeFn({
+ values: quarterValues,
+ defaultWidth: 'wide',
+ argumentCallback: function(quarter) {
+ return Number(quarter) - 1
+ }
+ }),
+
+ month: buildLocalizeFn({
+ values: monthValues,
+ defaultWidth: 'wide'
+ }),
+
+ day: buildLocalizeFn({
+ values: dayValues,
+ defaultWidth: 'wide'
+ }),
+
+ dayPeriod: buildLocalizeFn({
+ values: dayPeriodValues,
+ defaultWidth: 'wide',
+ formattingValues: formattingDayPeriodValues,
+ defaultFormattingWidth: 'wide'
+ })
+}
+
+export default localize
diff --git a/date-fns/src/locale/eu/_lib/match/index.js b/date-fns/src/locale/eu/_lib/match/index.js
new file mode 100644
index 0000000..049b51d
--- /dev/null
+++ b/date-fns/src/locale/eu/_lib/match/index.js
@@ -0,0 +1,159 @@
+import buildMatchPatternFn from '../../../_lib/buildMatchPatternFn/index'
+import buildMatchFn from '../../../_lib/buildMatchFn/index'
+
+var matchOrdinalNumberPattern = /^(\d+)(.)?/i
+var parseOrdinalNumberPattern = /\d+/i
+
+var matchEraPatterns = {
+ narrow: /^(k.a.|k.o.)/i,
+ abbreviated: /^(k.a.|k.o.)/i,
+ wide: /^(kristo aurretik|kristo ondoren)/i
+}
+var parseEraPatterns = {
+ narrow: [/^k.a./i, /^k.o./i],
+ abbreviated: [/^(k.a.)/i, /^(k.o.)/i],
+ wide: [/^(kristo aurretik)/i, /^(kristo ondoren)/i]
+}
+
+var matchQuarterPatterns = {
+ narrow: /^[1234]/i,
+ abbreviated: /^[1234]H/i,
+ wide: /^[1234](.)? hiruhilekoa/i
+}
+var parseQuarterPatterns = {
+ any: [/1/i, /2/i, /3/i, /4/i]
+}
+
+var matchMonthPatterns = {
+ narrow: /^[uomaei]/i,
+ abbreviated: /^(urt|ots|mar|api|mai|eka|uzt|abu|ira|urr|aza|abe)/i,
+ wide: /^(urtarrila|otsaila|martxoa|apirila|maiatza|ekaina|uztaila|abuztua|iraila|urria|azaroa|abendua)/i
+}
+var parseMonthPatterns = {
+ narrow: [
+ /^u/i,
+ /^o/i,
+ /^m/i,
+ /^a/i,
+ /^m/i,
+ /^e/i,
+ /^u/i,
+ /^a/i,
+ /^i/i,
+ /^u/i,
+ /^a/i,
+ /^a/i
+ ],
+ any: [
+ /^urt/i,
+ /^ots/i,
+ /^mar/i,
+ /^api/i,
+ /^mai/i,
+ /^eka/i,
+ /^uzt/i,
+ /^abu/i,
+ /^ira/i,
+ /^urr/i,
+ /^aza/i,
+ /^abe/i
+ ]
+}
+
+var matchDayPatterns = {
+ narrow: /^[iaol]/i,
+ short: /^(ig|al|as|az|og|or|lr)/i,
+ abbreviated: /^(iga|ast|ast|ast|ost|ost|lar)/i,
+ wide: /^(igandea|astelehena|asteartea|asteazkena|osteguna|ostirala|larunbata)/i
+}
+var parseDayPatterns = {
+ narrow: [/^i/i, /^a/i, /^a/i, /^a/i, /^o/i, /^o/i, /^l/i],
+ short: [/^ig/i, /^al/i, /^as/i, /^az/i, /^og/i, /^or/i, /^lr/i],
+ abbreviated: [/^iga/i, /^ast/i, /^ast/i, /^ast/i, /^ost/i, /^ost/i, /^lar/i],
+ wide: [
+ /^igandea/i,
+ /^astelehena/i,
+ /^asteartea/i,
+ /^asteazkena/i,
+ /^osteguna/i,
+ /^ostirala/i,
+ /^larunbata/i
+ ]
+}
+
+var matchDayPeriodPatterns = {
+ narrow: /^(a|p|ge|eg|((goiza|goizean)|arratsaldea|(gaua|gauean)))/i,
+ any: /^([ap]\.?\s?m\.?|gauerdia|eguerdia|((goiza|goizean)|arratsaldea|(gaua|gauean)))/i
+}
+var parseDayPeriodPatterns = {
+ narrow: {
+ am: /^a/i,
+ pm: /^p/i,
+ midnight: /^ge/i,
+ noon: /^eg/i,
+ morning: /goiz/i,
+ afternoon: /arratsaldea/i,
+ evening: /arratsaldea/i,
+ night: /gau/i
+ },
+ any: {
+ am: /^a/i,
+ pm: /^p/i,
+ midnight: /^gauerdia/i,
+ noon: /^eguerdia/i,
+ morning: /goiz/i,
+ afternoon: /arratsaldea/i,
+ evening: /arratsaldea/i,
+ night: /gau/i
+ }
+}
+
+var match = {
+ ordinalNumber: buildMatchPatternFn({
+ matchPattern: matchOrdinalNumberPattern,
+ parsePattern: parseOrdinalNumberPattern,
+ valueCallback: function(value) {
+ return parseInt(value, 10)
+ }
+ }),
+
+ era: buildMatchFn({
+ matchPatterns: matchEraPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseEraPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ quarter: buildMatchFn({
+ matchPatterns: matchQuarterPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseQuarterPatterns,
+ defaultParseWidth: 'any',
+ valueCallback: function(index) {
+ return index + 1
+ }
+ }),
+
+ month: buildMatchFn({
+ matchPatterns: matchMonthPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseMonthPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ day: buildMatchFn({
+ matchPatterns: matchDayPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseDayPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ dayPeriod: buildMatchFn({
+ matchPatterns: matchDayPeriodPatterns,
+ defaultMatchWidth: 'any',
+ parsePatterns: parseDayPeriodPatterns,
+ defaultParseWidth: 'any'
+ })
+}
+
+export default match
diff --git a/date-fns/src/locale/eu/index.d.ts b/date-fns/src/locale/eu/index.d.ts
new file mode 100644
index 0000000..ec84189
--- /dev/null
+++ b/date-fns/src/locale/eu/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { eu } from 'date-fns/locale'
+export default eu
diff --git a/date-fns/src/locale/eu/index.js b/date-fns/src/locale/eu/index.js
new file mode 100644
index 0000000..51dd659
--- /dev/null
+++ b/date-fns/src/locale/eu/index.js
@@ -0,0 +1,28 @@
+import formatDistance from './_lib/formatDistance/index'
+import formatLong from './_lib/formatLong/index'
+import formatRelative from './_lib/formatRelative/index'
+import localize from './_lib/localize/index'
+import match from './_lib/match/index'
+
+/**
+ * @type {Locale}
+ * @category Locales
+ * @summary Basque locale.
+ * @language Basque
+ * @iso-639-2 eus
+ * @author Jacob Söderblom [@JacobSoderblom]{@link https://github.com/JacobSoderblom}
+ */
+var locale = {
+ code: 'eu',
+ formatDistance: formatDistance,
+ formatLong: formatLong,
+ formatRelative: formatRelative,
+ localize: localize,
+ match: match,
+ options: {
+ weekStartsOn: 1 /* Monday */,
+ firstWeekContainsDate: 1
+ }
+}
+
+export default locale
diff --git a/date-fns/src/locale/eu/index.js.flow b/date-fns/src/locale/eu/index.js.flow
new file mode 100644
index 0000000..b9dfe66
--- /dev/null
+++ b/date-fns/src/locale/eu/index.js.flow
@@ -0,0 +1,35 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+declare module.exports: Locale
diff --git a/date-fns/src/locale/eu/snapshot.md b/date-fns/src/locale/eu/snapshot.md
new file mode 100644
index 0000000..13f3146
--- /dev/null
+++ b/date-fns/src/locale/eu/snapshot.md
@@ -0,0 +1,304 @@
+# Basque (eu) locale
+
+## `format` and `parse`
+
+| Title | Token string | Date | `format` result | `parse` result |
+| ------------------------------- | ------------ | ------------------------ | ---------------------------------------------------------------- | ------------------------ |
+| Calendar year | yo | 1987-02-11T12:13:14.015Z | 1987. | 1987-01-01T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 5. | 0005-01-01T00:00:00.000Z |
+| Local week-numbering year | Yo | 1987-02-11T12:13:14.015Z | 1987. | 1986-12-29T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 5. | 0004-12-27T00:00:00.000Z |
+| Quarter (formatting) | Qo | 2019-01-01T12:13:14.015Z | 1. | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2. | 2019-04-01T00:00:00.000Z |
+| | QQQ | 2019-01-01T12:13:14.015Z | 1H | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2H | 2019-04-01T00:00:00.000Z |
+| | QQQQ | 2019-01-01T12:13:14.015Z | 1. hiruhilekoa | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2. hiruhilekoa | 2019-04-01T00:00:00.000Z |
+| | QQQQQ | 2019-01-01T12:13:14.015Z | 1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2 | 2019-04-01T00:00:00.000Z |
+| Quarter (stand-alone) | qo | 2019-01-01T12:13:14.015Z | 1. | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2. | 2019-04-01T00:00:00.000Z |
+| | qqq | 2019-01-01T12:13:14.015Z | 1H | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2H | 2019-04-01T00:00:00.000Z |
+| | qqqq | 2019-01-01T12:13:14.015Z | 1. hiruhilekoa | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2. hiruhilekoa | 2019-04-01T00:00:00.000Z |
+| Month (formatting) | Mo | 2019-02-11T12:13:14.015Z | 2. | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7. | 2019-07-01T00:00:00.000Z |
+| | MMM | 2019-02-11T12:13:14.015Z | ots | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | uzt | 2019-07-01T00:00:00.000Z |
+| | MMMM | 2019-02-11T12:13:14.015Z | otsaila | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | uztaila | 2019-07-01T00:00:00.000Z |
+| | MMMMM | 2019-02-11T12:13:14.015Z | o | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | u | 2019-01-01T00:00:00.000Z |
+| Month (stand-alone) | Lo | 2019-02-11T12:13:14.015Z | 2. | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7. | 2019-07-01T00:00:00.000Z |
+| | LLL | 2019-02-11T12:13:14.015Z | ots | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | uzt | 2019-07-01T00:00:00.000Z |
+| | LLLL | 2019-02-11T12:13:14.015Z | otsaila | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | uztaila | 2019-07-01T00:00:00.000Z |
+| | LLLLL | 2019-02-11T12:13:14.015Z | o | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | u | 2019-01-01T00:00:00.000Z |
+| Local week of year | wo | 2019-01-01T12:13:14.015Z | 1. | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48. | 2019-11-25T00:00:00.000Z |
+| ISO week of year | Io | 2019-01-01T12:13:14.015Z | 1. | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48. | 2019-11-25T00:00:00.000Z |
+| Day of month | do | 2019-02-11T12:13:14.015Z | 11. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-28T12:13:14.015Z | 28. | 2019-02-28T00:00:00.000Z |
+| Day of year | Do | 2019-02-11T12:13:14.015Z | 42. | 2019-02-11T00:00:00.000Z |
+| | | 2019-12-31T12:13:14.015Z | 365. | 2019-12-31T00:00:00.000Z |
+| Day of week (formatting) | E | 2019-02-11T12:13:14.015Z | ast | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ost | 2019-02-14T00:00:00.000Z |
+| | EE | 2019-02-11T12:13:14.015Z | ast | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ost | 2019-02-14T00:00:00.000Z |
+| | EEE | 2019-02-11T12:13:14.015Z | ast | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ost | 2019-02-14T00:00:00.000Z |
+| | EEEE | 2019-02-11T12:13:14.015Z | astelehena | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ostirala | 2019-02-15T00:00:00.000Z |
+| | EEEEE | 2019-02-11T12:13:14.015Z | a | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | o | 2019-02-14T00:00:00.000Z |
+| | EEEEEE | 2019-02-11T12:13:14.015Z | al | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | or | 2019-02-15T00:00:00.000Z |
+| ISO day of week (formatting) | io | 2019-02-11T12:13:14.015Z | 1. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5. | 2019-02-15T00:00:00.000Z |
+| | iii | 2019-02-11T12:13:14.015Z | ast | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ost | 2019-02-14T00:00:00.000Z |
+| | iiii | 2019-02-11T12:13:14.015Z | astelehena | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ostirala | 2019-02-15T00:00:00.000Z |
+| | iiiii | 2019-02-11T12:13:14.015Z | a | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | o | 2019-02-14T00:00:00.000Z |
+| | iiiiii | 2019-02-11T12:13:14.015Z | al | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | or | 2019-02-15T00:00:00.000Z |
+| Local day of week (formatting) | eo | 2019-02-11T12:13:14.015Z | 1. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5. | 2019-02-15T00:00:00.000Z |
+| | eee | 2019-02-11T12:13:14.015Z | ast | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ost | 2019-02-14T00:00:00.000Z |
+| | eeee | 2019-02-11T12:13:14.015Z | astelehena | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ostirala | 2019-02-15T00:00:00.000Z |
+| | eeeee | 2019-02-11T12:13:14.015Z | a | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | o | 2019-02-14T00:00:00.000Z |
+| | eeeeee | 2019-02-11T12:13:14.015Z | al | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | or | 2019-02-15T00:00:00.000Z |
+| Local day of week (stand-alone) | co | 2019-02-11T12:13:14.015Z | 1. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5. | 2019-02-15T00:00:00.000Z |
+| | ccc | 2019-02-11T12:13:14.015Z | ast | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ost | 2019-02-14T00:00:00.000Z |
+| | cccc | 2019-02-11T12:13:14.015Z | astelehena | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ostirala | 2019-02-15T00:00:00.000Z |
+| | ccccc | 2019-02-11T12:13:14.015Z | a | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | o | 2019-02-14T00:00:00.000Z |
+| | cccccc | 2019-02-11T12:13:14.015Z | al | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | or | 2019-02-15T00:00:00.000Z |
+| AM, PM | a | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | aa | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | aaa | 2019-02-11T11:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | aaaa | 2019-02-11T11:13:14.015Z | a.m. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | p.m. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | p.m. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | a.m. | 2019-02-11T00:00:00.000Z |
+| | aaaaa | 2019-02-11T11:13:14.015Z | a | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | p | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | p | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | a | 2019-02-11T00:00:00.000Z |
+| AM, PM, noon, midnight | b | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | bb | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | bbb | 2019-02-11T11:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | bbbb | 2019-02-11T11:13:14.015Z | a.m. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | p.m. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | p.m. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | a.m. | 2019-02-11T00:00:00.000Z |
+| | bbbbb | 2019-02-11T11:13:14.015Z | a | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | p | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | p | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | a | 2019-02-11T00:00:00.000Z |
+| Flexible day period | B | 2019-02-11T11:13:14.015Z | goizean | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | arratsaldean | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | arratsaldean | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | gauean | 2019-02-11T00:00:00.000Z |
+| | BB | 2019-02-11T11:13:14.015Z | goizean | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | arratsaldean | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | arratsaldean | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | gauean | 2019-02-11T00:00:00.000Z |
+| | BBB | 2019-02-11T11:13:14.015Z | goizean | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | arratsaldean | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | arratsaldean | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | gauean | 2019-02-11T00:00:00.000Z |
+| | BBBB | 2019-02-11T11:13:14.015Z | goizean | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | arratsaldean | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | arratsaldean | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | gauean | 2019-02-11T00:00:00.000Z |
+| | BBBBB | 2019-02-11T11:13:14.015Z | goizean | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | arratsaldean | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | arratsaldean | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | gauean | 2019-02-11T00:00:00.000Z |
+| Hour [1-12] | ho | 2019-02-11T11:13:14.015Z | 11. | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11. | 2019-02-11T23:00:00.000Z |
+| Hour [0-23] | Ho | 2019-02-11T11:13:14.015Z | 11. | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23. | 2019-02-11T23:00:00.000Z |
+| Hour [0-11] | Ko | 2019-02-11T11:13:14.015Z | 11. | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11. | 2019-02-11T23:00:00.000Z |
+| Hour [1-24] | ko | 2019-02-11T11:13:14.015Z | 11. | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23. | 2019-02-11T23:00:00.000Z |
+| Minute | mo | 2019-01-01T12:01:14.015Z | 1. | 2019-01-01T12:01:00.000Z |
+| | | 2019-04-01T12:55:14.015Z | 55. | 2019-04-01T12:55:00.000Z |
+| Second | so | 2019-01-01T12:13:01.015Z | 1. | 2019-01-01T12:13:01.000Z |
+| | | 2019-04-01T12:13:55.015Z | 55. | 2019-04-01T12:13:55.000Z |
+| Long localized date | P | 1987-02-11T12:13:14.015Z | 87/02/11 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 53/05/29 | 1453-05-29T00:00:00.000Z |
+| | PP | 1987-02-11T12:13:14.015Z | 1987 ots 11 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 1453 mai 29 | 1453-05-29T00:00:00.000Z |
+| | PPP | 1987-02-11T12:13:14.015Z | 1987ko otsailaren 11a | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 1453ko maiatzaren 29a | 1453-05-29T00:00:00.000Z |
+| | PPPP | 1987-02-11T12:13:14.015Z | asteazkena, 1987ko otsailaren 11a 1987ren | Errored |
+| | | 1453-05-29T23:59:59.999Z | igandea, 1453ko maiatzaren 29a 1453ren | Errored |
+| Long localized time | p | 1987-02-11T12:13:14.015Z | 12:13 | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 23:59 | 1453-05-29T23:59:00.000Z |
+| | pp | 1987-02-11T12:13:14.015Z | 12:13:14 | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 | 1453-05-29T23:59:59.000Z |
+| | ppp | 1987-02-11T12:13:14.015Z | 12:13:14 GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 GMT+0 | Errored |
+| | pppp | 1987-02-11T12:13:14.015Z | 12:13:14 GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 GMT+00:00 | Errored |
+| Combination of date and time | Pp | 1987-02-11T12:13:14.015Z | 87/02/11, 12:13 | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 53/05/29, 23:59 | 1453-05-29T23:59:00.000Z |
+| | PPpp | 1987-02-11T12:13:14.015Z | 1987 ots 11, 12:13:14 | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 1453 mai 29, 23:59:59 | 1453-05-29T23:59:59.000Z |
+| | PPPppp | 1987-02-11T12:13:14.015Z | 1987ko otsailaren 11a tan 12:13:14 GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 1453ko maiatzaren 29a tan 23:59:59 GMT+0 | Errored |
+| | PPPPpppp | 1987-02-11T12:13:14.015Z | asteazkena, 1987ko otsailaren 11a 1987ren tan 12:13:14 GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | igandea, 1453ko maiatzaren 29a 1453ren tan 23:59:59 GMT+00:00 | Errored |
+
+## `formatDistance`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `includeSeconds: true` | `addSuffix: true` |
+| ------------------------ | --------------------------- | --------------------------- | --------------------------------- |
+| 2006-01-01T00:00:00.000Z | 6 urte gutxi gorabehera | 6 urte gutxi gorabehera | en 6 urte gutxi gorabehera |
+| 2005-01-01T00:00:00.000Z | 5 urte gutxi gorabehera | 5 urte gutxi gorabehera | en 5 urte gutxi gorabehera |
+| 2004-01-01T00:00:00.000Z | 4 urte gutxi gorabehera | 4 urte gutxi gorabehera | en 4 urte gutxi gorabehera |
+| 2003-01-01T00:00:00.000Z | 3 urte gutxi gorabehera | 3 urte gutxi gorabehera | en 3 urte gutxi gorabehera |
+| 2002-01-01T00:00:00.000Z | 2 urte gutxi gorabehera | 2 urte gutxi gorabehera | en 2 urte gutxi gorabehera |
+| 2001-06-01T00:00:00.000Z | 1 urte baino gehiago | 1 urte baino gehiago | en 1 urte baino gehiago |
+| 2001-02-01T00:00:00.000Z | 1 urte gutxi gorabehera | 1 urte gutxi gorabehera | en 1 urte gutxi gorabehera |
+| 2001-01-01T00:00:00.000Z | 1 urte gutxi gorabehera | 1 urte gutxi gorabehera | en 1 urte gutxi gorabehera |
+| 2000-06-01T00:00:00.000Z | 5 hilabete | 5 hilabete | en 5 hilabete |
+| 2000-03-01T00:00:00.000Z | 2 hilabete | 2 hilabete | en 2 hilabete |
+| 2000-02-01T00:00:00.000Z | 1 hilabete gutxi gorabehera | 1 hilabete gutxi gorabehera | en 1 hilabete gutxi gorabehera |
+| 2000-01-15T00:00:00.000Z | 14 egun | 14 egun | en 14 egun |
+| 2000-01-02T00:00:00.000Z | 1 egun | 1 egun | en 1 egun |
+| 2000-01-01T06:00:00.000Z | 6 ordu gutxi gorabehera | 6 ordu gutxi gorabehera | en 6 ordu gutxi gorabehera |
+| 2000-01-01T01:00:00.000Z | 1 ordu gutxi gorabehera | 1 ordu gutxi gorabehera | en 1 ordu gutxi gorabehera |
+| 2000-01-01T00:45:00.000Z | 1 ordu gutxi gorabehera | 1 ordu gutxi gorabehera | en 1 ordu gutxi gorabehera |
+| 2000-01-01T00:30:00.000Z | 30 minutu | 30 minutu | en 30 minutu |
+| 2000-01-01T00:15:00.000Z | 15 minutu | 15 minutu | en 15 minutu |
+| 2000-01-01T00:01:00.000Z | 1 minutu | 1 minutu | en 1 minutu |
+| 2000-01-01T00:00:25.000Z | minutu bat baino gutxiago | minutu erdi | en minutu bat baino gutxiago |
+| 2000-01-01T00:00:15.000Z | minutu bat baino gutxiago | 20 segundo baino gutxiago | en minutu bat baino gutxiago |
+| 2000-01-01T00:00:05.000Z | minutu bat baino gutxiago | 10 segundo baino gutxiago | en minutu bat baino gutxiago |
+| 2000-01-01T00:00:00.000Z | minutu bat baino gutxiago | 5 segundo baino gutxiago | duela minutu bat baino gutxiago |
+| 1999-12-31T23:59:55.000Z | minutu bat baino gutxiago | 10 segundo baino gutxiago | duela minutu bat baino gutxiago |
+| 1999-12-31T23:59:45.000Z | minutu bat baino gutxiago | 20 segundo baino gutxiago | duela minutu bat baino gutxiago |
+| 1999-12-31T23:59:35.000Z | minutu bat baino gutxiago | minutu erdi | duela minutu bat baino gutxiago |
+| 1999-12-31T23:59:00.000Z | 1 minutu | 1 minutu | duela 1 minutu |
+| 1999-12-31T23:45:00.000Z | 15 minutu | 15 minutu | duela 15 minutu |
+| 1999-12-31T23:30:00.000Z | 30 minutu | 30 minutu | duela 30 minutu |
+| 1999-12-31T23:15:00.000Z | 1 ordu gutxi gorabehera | 1 ordu gutxi gorabehera | duela 1 ordu gutxi gorabehera |
+| 1999-12-31T23:00:00.000Z | 1 ordu gutxi gorabehera | 1 ordu gutxi gorabehera | duela 1 ordu gutxi gorabehera |
+| 1999-12-31T18:00:00.000Z | 6 ordu gutxi gorabehera | 6 ordu gutxi gorabehera | duela 6 ordu gutxi gorabehera |
+| 1999-12-30T00:00:00.000Z | 2 egun | 2 egun | duela 2 egun |
+| 1999-12-15T00:00:00.000Z | 17 egun | 17 egun | duela 17 egun |
+| 1999-12-01T00:00:00.000Z | 1 hilabete gutxi gorabehera | 1 hilabete gutxi gorabehera | duela 1 hilabete gutxi gorabehera |
+| 1999-11-01T00:00:00.000Z | 2 hilabete | 2 hilabete | duela 2 hilabete |
+| 1999-06-01T00:00:00.000Z | 7 hilabete | 7 hilabete | duela 7 hilabete |
+| 1999-01-01T00:00:00.000Z | 1 urte gutxi gorabehera | 1 urte gutxi gorabehera | duela 1 urte gutxi gorabehera |
+| 1998-12-01T00:00:00.000Z | 1 urte gutxi gorabehera | 1 urte gutxi gorabehera | duela 1 urte gutxi gorabehera |
+| 1998-06-01T00:00:00.000Z | 1 urte baino gehiago | 1 urte baino gehiago | duela 1 urte baino gehiago |
+| 1998-01-01T00:00:00.000Z | 2 urte gutxi gorabehera | 2 urte gutxi gorabehera | duela 2 urte gutxi gorabehera |
+| 1997-01-01T00:00:00.000Z | 3 urte gutxi gorabehera | 3 urte gutxi gorabehera | duela 3 urte gutxi gorabehera |
+| 1996-01-01T00:00:00.000Z | 4 urte gutxi gorabehera | 4 urte gutxi gorabehera | duela 4 urte gutxi gorabehera |
+| 1995-01-01T00:00:00.000Z | 5 urte gutxi gorabehera | 5 urte gutxi gorabehera | duela 5 urte gutxi gorabehera |
+| 1994-01-01T00:00:00.000Z | 6 urte gutxi gorabehera | 6 urte gutxi gorabehera | duela 6 urte gutxi gorabehera |
+
+## `formatDistanceStrict`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `addSuffix: true` | With forced unit (i.e. `hour`) |
+| ------------------------ | ---------- | ----------------- | ------------------------------ |
+| 2006-01-01T00:00:00.000Z | 6 urte | en 6 urte | 52608 ordu |
+| 2005-01-01T00:00:00.000Z | 5 urte | en 5 urte | 43848 ordu |
+| 2004-01-01T00:00:00.000Z | 4 urte | en 4 urte | 35064 ordu |
+| 2003-01-01T00:00:00.000Z | 3 urte | en 3 urte | 26304 ordu |
+| 2002-01-01T00:00:00.000Z | 2 urte | en 2 urte | 17544 ordu |
+| 2001-06-01T00:00:00.000Z | 1 urte | en 1 urte | 12408 ordu |
+| 2001-02-01T00:00:00.000Z | 1 urte | en 1 urte | 9528 ordu |
+| 2001-01-01T00:00:00.000Z | 1 urte | en 1 urte | 8784 ordu |
+| 2000-06-01T00:00:00.000Z | 5 hilabete | en 5 hilabete | 3648 ordu |
+| 2000-03-01T00:00:00.000Z | 2 hilabete | en 2 hilabete | 1440 ordu |
+| 2000-02-01T00:00:00.000Z | 1 hilabete | en 1 hilabete | 744 ordu |
+| 2000-01-15T00:00:00.000Z | 14 egun | en 14 egun | 336 ordu |
+| 2000-01-02T00:00:00.000Z | 1 egun | en 1 egun | 24 ordu |
+| 2000-01-01T06:00:00.000Z | 6 ordu | en 6 ordu | 6 ordu |
+| 2000-01-01T01:00:00.000Z | 1 ordu | en 1 ordu | 1 ordu |
+| 2000-01-01T00:45:00.000Z | 45 minutu | en 45 minutu | 1 ordu |
+| 2000-01-01T00:30:00.000Z | 30 minutu | en 30 minutu | 1 ordu |
+| 2000-01-01T00:15:00.000Z | 15 minutu | en 15 minutu | 0 ordu |
+| 2000-01-01T00:01:00.000Z | 1 minutu | en 1 minutu | 0 ordu |
+| 2000-01-01T00:00:25.000Z | 25 segundo | en 25 segundo | 0 ordu |
+| 2000-01-01T00:00:15.000Z | 15 segundo | en 15 segundo | 0 ordu |
+| 2000-01-01T00:00:05.000Z | 5 segundo | en 5 segundo | 0 ordu |
+| 2000-01-01T00:00:00.000Z | 0 segundo | duela 0 segundo | 0 ordu |
+| 1999-12-31T23:59:55.000Z | 5 segundo | duela 5 segundo | 0 ordu |
+| 1999-12-31T23:59:45.000Z | 15 segundo | duela 15 segundo | 0 ordu |
+| 1999-12-31T23:59:35.000Z | 25 segundo | duela 25 segundo | 0 ordu |
+| 1999-12-31T23:59:00.000Z | 1 minutu | duela 1 minutu | 0 ordu |
+| 1999-12-31T23:45:00.000Z | 15 minutu | duela 15 minutu | 0 ordu |
+| 1999-12-31T23:30:00.000Z | 30 minutu | duela 30 minutu | 1 ordu |
+| 1999-12-31T23:15:00.000Z | 45 minutu | duela 45 minutu | 1 ordu |
+| 1999-12-31T23:00:00.000Z | 1 ordu | duela 1 ordu | 1 ordu |
+| 1999-12-31T18:00:00.000Z | 6 ordu | duela 6 ordu | 6 ordu |
+| 1999-12-30T00:00:00.000Z | 2 egun | duela 2 egun | 48 ordu |
+| 1999-12-15T00:00:00.000Z | 17 egun | duela 17 egun | 408 ordu |
+| 1999-12-01T00:00:00.000Z | 1 hilabete | duela 1 hilabete | 744 ordu |
+| 1999-11-01T00:00:00.000Z | 2 hilabete | duela 2 hilabete | 1464 ordu |
+| 1999-06-01T00:00:00.000Z | 7 hilabete | duela 7 hilabete | 5136 ordu |
+| 1999-01-01T00:00:00.000Z | 1 urte | duela 1 urte | 8760 ordu |
+| 1998-12-01T00:00:00.000Z | 1 urte | duela 1 urte | 9504 ordu |
+| 1998-06-01T00:00:00.000Z | 2 urte | duela 2 urte | 13896 ordu |
+| 1998-01-01T00:00:00.000Z | 2 urte | duela 2 urte | 17520 ordu |
+| 1997-01-01T00:00:00.000Z | 3 urte | duela 3 urte | 26280 ordu |
+| 1996-01-01T00:00:00.000Z | 4 urte | duela 4 urte | 35064 ordu |
+| 1995-01-01T00:00:00.000Z | 5 urte | duela 5 urte | 43824 ordu |
+| 1994-01-01T00:00:00.000Z | 6 urte | duela 6 urte | 52584 ordu |
+
+## `formatRelative`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result |
+| ------------------------ | -------------------------- |
+| 2000-01-10T00:00:00.000Z | 00/01/10 |
+| 2000-01-05T00:00:00.000Z | asteazkena, 00:00 |
+| 2000-01-02T00:00:00.000Z | bihar, 00:00 |
+| 2000-01-01T00:00:00.000Z | gaur, 00:00 |
+| 1999-12-31T00:00:00.000Z | atzo, 00:00 |
+| 1999-12-27T00:00:00.000Z | joan den astelehena, 00:00 |
+| 1999-12-21T00:00:00.000Z | 99/12/21 |
diff --git a/date-fns/src/locale/fa-IR/_lib/formatDistance/index.js b/date-fns/src/locale/fa-IR/_lib/formatDistance/index.js
new file mode 100644
index 0000000..e9ba208
--- /dev/null
+++ b/date-fns/src/locale/fa-IR/_lib/formatDistance/index.js
@@ -0,0 +1,101 @@
+var formatDistanceLocale = {
+ lessThanXSeconds: {
+ one: 'کمتر از یک ثانیه',
+ other: 'کمتر از {{count}} ثانیه'
+ },
+
+ xSeconds: {
+ one: '1 ثانیه',
+ other: '{{count}} ثانیه'
+ },
+
+ halfAMinute: 'نیم دقیقه',
+
+ lessThanXMinutes: {
+ one: 'کمتر از یک دقیقه',
+ other: 'کمتر از {{count}} دقیقه'
+ },
+
+ xMinutes: {
+ one: '1 دقیقه',
+ other: '{{count}} دقیقه'
+ },
+
+ aboutXHours: {
+ one: 'حدود 1 ساعت',
+ other: 'حدود {{count}} ساعت'
+ },
+
+ xHours: {
+ one: '1 ساعت',
+ other: '{{count}} ساعت'
+ },
+
+ xDays: {
+ one: '1 روز',
+ other: '{{count}} روز'
+ },
+
+ aboutXWeeks: {
+ one: 'حدود 1 هفته',
+ other: 'حدود {{count}} هفته'
+ },
+
+ xWeeks: {
+ one: '1 هفته',
+ other: '{{count}} هفته'
+ },
+
+ aboutXMonths: {
+ one: 'حدود 1 ماه',
+ other: 'حدود {{count}} ماه'
+ },
+
+ xMonths: {
+ one: '1 ماه',
+ other: '{{count}} ماه'
+ },
+
+ aboutXYears: {
+ one: 'حدود 1 سال',
+ other: 'حدود {{count}} سال'
+ },
+
+ xYears: {
+ one: '1 سال',
+ other: '{{count}} سال'
+ },
+
+ overXYears: {
+ one: 'بیشتر از 1 سال',
+ other: 'بیشتر از {{count}} سال'
+ },
+
+ almostXYears: {
+ one: 'نزدیک 1 سال',
+ other: 'نزدیک {{count}} سال'
+ }
+}
+
+export default function formatDistance(token, count, options) {
+ options = options || {}
+
+ var result
+ if (typeof formatDistanceLocale[token] === 'string') {
+ result = formatDistanceLocale[token]
+ } else if (count === 1) {
+ result = formatDistanceLocale[token].one
+ } else {
+ result = formatDistanceLocale[token].other.replace('{{count}}', count)
+ }
+
+ if (options.addSuffix) {
+ if (options.comparison > 0) {
+ return 'در ' + result
+ } else {
+ return result + ' قبل'
+ }
+ }
+
+ return result
+}
diff --git a/date-fns/src/locale/fa-IR/_lib/formatLong/index.js b/date-fns/src/locale/fa-IR/_lib/formatLong/index.js
new file mode 100644
index 0000000..9fc97e4
--- /dev/null
+++ b/date-fns/src/locale/fa-IR/_lib/formatLong/index.js
@@ -0,0 +1,41 @@
+import buildFormatLongFn from '../../../_lib/buildFormatLongFn/index'
+
+var dateFormats = {
+ full: 'EEEE do MMMM y',
+ long: 'do MMMM y',
+ medium: 'd MMM y',
+ short: 'yyyy/MM/dd'
+}
+
+var timeFormats = {
+ full: 'h:mm:ss a zzzz',
+ long: 'h:mm:ss a z',
+ medium: 'h:mm:ss a',
+ short: 'h:mm a'
+}
+
+var dateTimeFormats = {
+ full: "{{date}} 'در' {{time}}",
+ long: "{{date}} 'در' {{time}}",
+ medium: '{{date}}, {{time}}',
+ short: '{{date}}, {{time}}'
+}
+
+var formatLong = {
+ date: buildFormatLongFn({
+ formats: dateFormats,
+ defaultWidth: 'full'
+ }),
+
+ time: buildFormatLongFn({
+ formats: timeFormats,
+ defaultWidth: 'full'
+ }),
+
+ dateTime: buildFormatLongFn({
+ formats: dateTimeFormats,
+ defaultWidth: 'full'
+ })
+}
+
+export default formatLong
diff --git a/date-fns/src/locale/fa-IR/_lib/formatRelative/index.js b/date-fns/src/locale/fa-IR/_lib/formatRelative/index.js
new file mode 100644
index 0000000..34244e1
--- /dev/null
+++ b/date-fns/src/locale/fa-IR/_lib/formatRelative/index.js
@@ -0,0 +1,12 @@
+var formatRelativeLocale = {
+ lastWeek: "eeee 'گذشته در' p",
+ yesterday: "'دیروز در' p",
+ today: "'امروز در' p",
+ tomorrow: "'فردا در' p",
+ nextWeek: "eeee 'در' p",
+ other: 'P'
+}
+
+export default function formatRelative(token, _date, _baseDate, _options) {
+ return formatRelativeLocale[token]
+}
diff --git a/date-fns/src/locale/fa-IR/_lib/localize/index.js b/date-fns/src/locale/fa-IR/_lib/localize/index.js
new file mode 100644
index 0000000..e8f5de2
--- /dev/null
+++ b/date-fns/src/locale/fa-IR/_lib/localize/index.js
@@ -0,0 +1,169 @@
+import buildLocalizeFn from '../../../_lib/buildLocalizeFn/index'
+
+var eraValues = {
+ narrow: ['ق', 'ب'],
+ abbreviated: ['ق.م.', 'ب.م.'],
+ wide: ['قبل از میلاد', 'بعد از میلاد']
+}
+
+var quarterValues = {
+ narrow: ['1', '2', '3', '4'],
+ abbreviated: ['س‌م1', 'س‌م2', 'س‌م3', 'س‌م4'],
+ wide: ['سه‌ماهه 1', 'سه‌ماهه 2', 'سه‌ماهه 3', 'سه‌ماهه 4']
+}
+
+// Note: in English, the names of days of the week and months are capitalized.
+// If you are making a new locale based on this one, check if the same is true for the language you're working on.
+// Generally, formatted dates should look like they are in the middle of a sentence,
+// e.g. in Spanish language the weekdays and months should be in the lowercase.
+var monthValues = {
+ narrow: ['ژ', 'ف', 'م', 'آ', 'م', 'ج', 'ج', 'آ', 'س', 'ا', 'ن', 'د'],
+ abbreviated: [
+ 'ژانـ',
+ 'فور',
+ 'مارس',
+ 'آپر',
+ 'می',
+ 'جون',
+ 'جولـ',
+ 'آگو',
+ 'سپتـ',
+ 'اکتـ',
+ 'نوامـ',
+ 'دسامـ'
+ ],
+ wide: [
+ 'ژانویه',
+ 'فوریه',
+ 'مارس',
+ 'آپریل',
+ 'می',
+ 'جون',
+ 'جولای',
+ 'آگوست',
+ 'سپتامبر',
+ 'اکتبر',
+ 'نوامبر',
+ 'دسامبر'
+ ]
+}
+
+var dayValues = {
+ narrow: ['ی', 'د', 'س', 'چ', 'پ', 'ج', 'ش'],
+ short: ['1ش', '2ش', '3ش', '4ش', '5ش', 'ج', 'ش'],
+ abbreviated: [
+ 'یکشنبه',
+ 'دوشنبه',
+ 'سه‌شنبه',
+ 'چهارشنبه',
+ 'پنجشنبه',
+ 'جمعه',
+ 'شنبه'
+ ],
+ wide: ['یکشنبه', 'دوشنبه', 'سه‌شنبه', 'چهارشنبه', 'پنجشنبه', 'جمعه', 'شنبه']
+}
+
+var dayPeriodValues = {
+ narrow: {
+ am: 'ق',
+ pm: 'ب',
+ midnight: 'ن',
+ noon: 'ظ',
+ morning: 'ص',
+ afternoon: 'ب.ظ.',
+ evening: 'ع',
+ night: 'ش'
+ },
+ abbreviated: {
+ am: 'ق.ظ.',
+ pm: 'ب.ظ.',
+ midnight: 'نیمه‌شب',
+ noon: 'ظهر',
+ morning: 'صبح',
+ afternoon: 'بعدازظهر',
+ evening: 'عصر',
+ night: 'شب'
+ },
+ wide: {
+ am: 'قبل‌ازظهر',
+ pm: 'بعدازظهر',
+ midnight: 'نیمه‌شب',
+ noon: 'ظهر',
+ morning: 'صبح',
+ afternoon: 'بعدازظهر',
+ evening: 'عصر',
+ night: 'شب'
+ }
+}
+var formattingDayPeriodValues = {
+ narrow: {
+ am: 'ق',
+ pm: 'ب',
+ midnight: 'ن',
+ noon: 'ظ',
+ morning: 'ص',
+ afternoon: 'ب.ظ.',
+ evening: 'ع',
+ night: 'ش'
+ },
+ abbreviated: {
+ am: 'ق.ظ.',
+ pm: 'ب.ظ.',
+ midnight: 'نیمه‌شب',
+ noon: 'ظهر',
+ morning: 'صبح',
+ afternoon: 'بعدازظهر',
+ evening: 'عصر',
+ night: 'شب'
+ },
+ wide: {
+ am: 'قبل‌ازظهر',
+ pm: 'بعدازظهر',
+ midnight: 'نیمه‌شب',
+ noon: 'ظهر',
+ morning: 'صبح',
+ afternoon: 'بعدازظهر',
+ evening: 'عصر',
+ night: 'شب'
+ }
+}
+
+function ordinalNumber(dirtyNumber) {
+ return String(dirtyNumber)
+}
+
+var localize = {
+ ordinalNumber: ordinalNumber,
+
+ era: buildLocalizeFn({
+ values: eraValues,
+ defaultWidth: 'wide'
+ }),
+
+ quarter: buildLocalizeFn({
+ values: quarterValues,
+ defaultWidth: 'wide',
+ argumentCallback: function(quarter) {
+ return Number(quarter) - 1
+ }
+ }),
+
+ month: buildLocalizeFn({
+ values: monthValues,
+ defaultWidth: 'wide'
+ }),
+
+ day: buildLocalizeFn({
+ values: dayValues,
+ defaultWidth: 'wide'
+ }),
+
+ dayPeriod: buildLocalizeFn({
+ values: dayPeriodValues,
+ defaultWidth: 'wide',
+ formattingValues: formattingDayPeriodValues,
+ defaultFormattingWidth: 'wide'
+ })
+}
+
+export default localize
diff --git a/date-fns/src/locale/fa-IR/_lib/match/index.js b/date-fns/src/locale/fa-IR/_lib/match/index.js
new file mode 100644
index 0000000..e7ebd3f
--- /dev/null
+++ b/date-fns/src/locale/fa-IR/_lib/match/index.js
@@ -0,0 +1,146 @@
+import buildMatchPatternFn from '../../../_lib/buildMatchPatternFn/index'
+import buildMatchFn from '../../../_lib/buildMatchFn/index'
+
+var matchOrdinalNumberPattern = /^(\d+)(th|st|nd|rd)?/i
+var parseOrdinalNumberPattern = /\d+/i
+
+var matchEraPatterns = {
+ narrow: /^(ق|ب)/i,
+ abbreviated: /^(ق\.?\s?م\.?|ق\.?\s?د\.?\s?م\.?|م\.?\s?|د\.?\s?م\.?)/i,
+ wide: /^(قبل از میلاد|قبل از دوران مشترک|میلادی|دوران مشترک|بعد از میلاد)/i
+}
+var parseEraPatterns = {
+ any: [/^قبل/i, /^بعد/i]
+}
+
+var matchQuarterPatterns = {
+ narrow: /^[1234]/i,
+ abbreviated: /^س‌م[1234]/i,
+ wide: /^سه‌ماهه [1234]/i
+}
+var parseQuarterPatterns = {
+ any: [/1/i, /2/i, /3/i, /4/i]
+}
+
+var matchMonthPatterns = {
+ narrow: /^[جژفمآاماسند]/i,
+ abbreviated: /^(جنو|ژانـ|ژانویه|فوریه|فور|مارس|آوریل|آپر|مه|می|ژوئن|جون|جول|جولـ|ژوئیه|اوت|آگو|سپتمبر|سپتامبر|اکتبر|اکتوبر|نوامبر|نوامـ|دسامبر|دسامـ|دسم)/i,
+ wide: /^(ژانویه|جنوری|فبروری|فوریه|مارچ|مارس|آپریل|اپریل|ایپریل|آوریل|مه|می|ژوئن|جون|جولای|ژوئیه|آگست|اگست|آگوست|اوت|سپتمبر|سپتامبر|اکتبر|اکتوبر|نوامبر|نومبر|دسامبر|دسمبر)/i
+}
+var parseMonthPatterns = {
+ narrow: [
+ /^(ژ|ج)/i,
+ /^ف/i,
+ /^م/i,
+ /^(آ|ا)/i,
+ /^م/i,
+ /^(ژ|ج)/i,
+ /^(ج|ژ)/i,
+ /^(آ|ا)/i,
+ /^س/i,
+ /^ا/i,
+ /^ن/i,
+ /^د/i
+ ],
+ any: [
+ /^ژا/i,
+ /^ف/i,
+ /^ما/i,
+ /^آپ/i,
+ /^(می|مه)/i,
+ /^(ژوئن|جون)/i,
+ /^(ژوئی|جول)/i,
+ /^(اوت|آگ)/i,
+ /^س/i,
+ /^(اوک|اک)/i,
+ /^ن/i,
+ /^د/i
+ ]
+}
+
+var matchDayPatterns = {
+ narrow: /^[شیدسچپج]/i,
+ short: /^(ش|ج|1ش|2ش|3ش|4ش|5ش)/i,
+ abbreviated: /^(یکشنبه|دوشنبه|سه‌شنبه|چهارشنبه|پنج‌شنبه|جمعه|شنبه)/i,
+ wide: /^(یکشنبه|دوشنبه|سه‌شنبه|چهارشنبه|پنج‌شنبه|جمعه|شنبه)/i
+}
+var parseDayPatterns = {
+ narrow: [/^ی/i, /^دو/i, /^س/i, /^چ/i, /^پ/i, /^ج/i, /^ش/i],
+ any: [
+ /^(ی|1ش|یکشنبه)/i,
+ /^(د|2ش|دوشنبه)/i,
+ /^(س|3ش|سه‌شنبه)/i,
+ /^(چ|4ش|چهارشنبه)/i,
+ /^(پ|5ش|پنجشنبه)/i,
+ /^(ج|جمعه)/i,
+ /^(ش|شنبه)/i
+ ]
+}
+
+var matchDayPeriodPatterns = {
+ narrow: /^(ب|ق|ن|ظ|ص|ب.ظ.|ع|ش)/i,
+ abbreviated: /^(ق.ظ.|ب.ظ.|نیمه‌شب|ظهر|صبح|بعدازظهر|عصر|شب)/i,
+ wide: /^(قبل‌ازظهر|نیمه‌شب|ظهر|صبح|بعدازظهر|عصر|شب)/i
+}
+var parseDayPeriodPatterns = {
+ any: {
+ am: /^(ق|ق.ظ.|قبل‌ازظهر)/i,
+ pm: /^(ب|ب.ظ.|بعدازظهر)/i,
+ midnight: /^(‌نیمه‌شب|ن)/i,
+ noon: /^(ظ|ظهر)/i,
+ morning: /(ص|صبح)/i,
+ afternoon: /(ب|ب.ظ.|بعدازظهر)/i,
+ evening: /(ع|عصر)/i,
+ night: /(ش|شب)/i
+ }
+}
+
+var match = {
+ ordinalNumber: buildMatchPatternFn({
+ matchPattern: matchOrdinalNumberPattern,
+ parsePattern: parseOrdinalNumberPattern,
+ valueCallback: function(value) {
+ return parseInt(value, 10)
+ }
+ }),
+
+ era: buildMatchFn({
+ matchPatterns: matchEraPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseEraPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ quarter: buildMatchFn({
+ matchPatterns: matchQuarterPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseQuarterPatterns,
+ defaultParseWidth: 'any',
+ valueCallback: function(index) {
+ return index + 1
+ }
+ }),
+
+ month: buildMatchFn({
+ matchPatterns: matchMonthPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseMonthPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ day: buildMatchFn({
+ matchPatterns: matchDayPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseDayPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ dayPeriod: buildMatchFn({
+ matchPatterns: matchDayPeriodPatterns,
+ defaultMatchWidth: 'any',
+ parsePatterns: parseDayPeriodPatterns,
+ defaultParseWidth: 'any'
+ })
+}
+
+export default match
diff --git a/date-fns/src/locale/fa-IR/index.d.ts b/date-fns/src/locale/fa-IR/index.d.ts
new file mode 100644
index 0000000..2e6e4bb
--- /dev/null
+++ b/date-fns/src/locale/fa-IR/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { faIR } from 'date-fns/locale'
+export default faIR
diff --git a/date-fns/src/locale/fa-IR/index.js b/date-fns/src/locale/fa-IR/index.js
new file mode 100644
index 0000000..a09d202
--- /dev/null
+++ b/date-fns/src/locale/fa-IR/index.js
@@ -0,0 +1,28 @@
+import formatDistance from './_lib/formatDistance/index'
+import formatLong from './_lib/formatLong/index'
+import formatRelative from './_lib/formatRelative/index'
+import localize from './_lib/localize/index'
+import match from './_lib/match/index'
+
+/**
+ * @type {Locale}
+ * @category Locales
+ * @summary Persian/Farsi locale (Iran).
+ * @language Persian
+ * @iso-639-2 ira
+ * @author Morteza Ziyae [@mort3za]{@link https://github.com/mort3za}
+ */
+var locale = {
+ code: 'fa-IR',
+ formatDistance: formatDistance,
+ formatLong: formatLong,
+ formatRelative: formatRelative,
+ localize: localize,
+ match: match,
+ options: {
+ weekStartsOn: 6 /* Saturday */,
+ firstWeekContainsDate: 1
+ }
+}
+
+export default locale
diff --git a/date-fns/src/locale/fa-IR/index.js.flow b/date-fns/src/locale/fa-IR/index.js.flow
new file mode 100644
index 0000000..b9dfe66
--- /dev/null
+++ b/date-fns/src/locale/fa-IR/index.js.flow
@@ -0,0 +1,35 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+declare module.exports: Locale
diff --git a/date-fns/src/locale/fa-IR/snapshot.md b/date-fns/src/locale/fa-IR/snapshot.md
new file mode 100644
index 0000000..b4fbfcb
--- /dev/null
+++ b/date-fns/src/locale/fa-IR/snapshot.md
@@ -0,0 +1,304 @@
+# Persian (fa-IR) locale
+
+## `format` and `parse`
+
+| Title | Token string | Date | `format` result | `parse` result |
+| ------------------------------- | ------------ | ------------------------ | ------------------------------------------------- | ------------------------ |
+| Calendar year | yo | 1987-02-11T12:13:14.015Z | 1987 | 1987-01-01T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 5 | 0005-01-01T00:00:00.000Z |
+| Local week-numbering year | Yo | 1987-02-11T12:13:14.015Z | 1987 | 1986-12-27T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 5 | 0005-01-01T00:00:00.000Z |
+| Quarter (formatting) | Qo | 2019-01-01T12:13:14.015Z | 1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2 | 2019-04-01T00:00:00.000Z |
+| | QQQ | 2019-01-01T12:13:14.015Z | س‌م1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | س‌م2 | 2019-04-01T00:00:00.000Z |
+| | QQQQ | 2019-01-01T12:13:14.015Z | سه‌ماهه 1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | سه‌ماهه 2 | 2019-04-01T00:00:00.000Z |
+| | QQQQQ | 2019-01-01T12:13:14.015Z | 1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2 | 2019-04-01T00:00:00.000Z |
+| Quarter (stand-alone) | qo | 2019-01-01T12:13:14.015Z | 1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2 | 2019-04-01T00:00:00.000Z |
+| | qqq | 2019-01-01T12:13:14.015Z | س‌م1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | س‌م2 | 2019-04-01T00:00:00.000Z |
+| | qqqq | 2019-01-01T12:13:14.015Z | سه‌ماهه 1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | سه‌ماهه 2 | 2019-04-01T00:00:00.000Z |
+| Month (formatting) | Mo | 2019-02-11T12:13:14.015Z | 2 | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7 | 2019-07-01T00:00:00.000Z |
+| | MMM | 2019-02-11T12:13:14.015Z | فور | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | جولـ | Invalid Date |
+| | MMMM | 2019-02-11T12:13:14.015Z | فوریه | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | جولای | 2019-07-01T00:00:00.000Z |
+| | MMMMM | 2019-02-11T12:13:14.015Z | ف | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | ج | 2019-01-01T00:00:00.000Z |
+| Month (stand-alone) | Lo | 2019-02-11T12:13:14.015Z | 2 | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7 | 2019-07-01T00:00:00.000Z |
+| | LLL | 2019-02-11T12:13:14.015Z | فور | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | جولـ | Invalid Date |
+| | LLLL | 2019-02-11T12:13:14.015Z | فوریه | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | جولای | 2019-07-01T00:00:00.000Z |
+| | LLLLL | 2019-02-11T12:13:14.015Z | ف | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | ج | 2019-01-01T00:00:00.000Z |
+| Local week of year | wo | 2019-01-01T12:13:14.015Z | 1 | 2018-12-29T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 49 | 2019-11-30T00:00:00.000Z |
+| ISO week of year | Io | 2019-01-01T12:13:14.015Z | 1 | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48 | 2019-11-25T00:00:00.000Z |
+| Day of month | do | 2019-02-11T12:13:14.015Z | 11 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-28T12:13:14.015Z | 28 | 2019-02-28T00:00:00.000Z |
+| Day of year | Do | 2019-02-11T12:13:14.015Z | 42 | 2019-02-11T00:00:00.000Z |
+| | | 2019-12-31T12:13:14.015Z | 365 | 2019-12-31T00:00:00.000Z |
+| Day of week (formatting) | E | 2019-02-11T12:13:14.015Z | دوشنبه | 2019-02-18T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | جمعه | 2019-02-22T00:00:00.000Z |
+| | EE | 2019-02-11T12:13:14.015Z | دوشنبه | 2019-02-18T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | جمعه | 2019-02-22T00:00:00.000Z |
+| | EEE | 2019-02-11T12:13:14.015Z | دوشنبه | 2019-02-18T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | جمعه | 2019-02-22T00:00:00.000Z |
+| | EEEE | 2019-02-11T12:13:14.015Z | دوشنبه | 2019-02-18T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | جمعه | 2019-02-22T00:00:00.000Z |
+| | EEEEE | 2019-02-11T12:13:14.015Z | د | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | ج | 2019-02-22T00:00:00.000Z |
+| | EEEEEE | 2019-02-11T12:13:14.015Z | 2ش | 2019-02-18T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ج | 2019-02-22T00:00:00.000Z |
+| ISO day of week (formatting) | io | 2019-02-11T12:13:14.015Z | 1 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5 | 2019-02-15T00:00:00.000Z |
+| | iii | 2019-02-11T12:13:14.015Z | دوشنبه | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | جمعه | 2019-02-15T00:00:00.000Z |
+| | iiii | 2019-02-11T12:13:14.015Z | دوشنبه | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | جمعه | 2019-02-15T00:00:00.000Z |
+| | iiiii | 2019-02-11T12:13:14.015Z | د | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | ج | 2019-02-15T00:00:00.000Z |
+| | iiiiii | 2019-02-11T12:13:14.015Z | 2ش | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ج | 2019-02-15T00:00:00.000Z |
+| Local day of week (formatting) | eo | 2019-02-11T12:13:14.015Z | 3 | 2019-02-18T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 7 | 2019-02-22T00:00:00.000Z |
+| | eee | 2019-02-11T12:13:14.015Z | دوشنبه | 2019-02-18T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | جمعه | 2019-02-22T00:00:00.000Z |
+| | eeee | 2019-02-11T12:13:14.015Z | دوشنبه | 2019-02-18T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | جمعه | 2019-02-22T00:00:00.000Z |
+| | eeeee | 2019-02-11T12:13:14.015Z | د | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | ج | 2019-02-22T00:00:00.000Z |
+| | eeeeee | 2019-02-11T12:13:14.015Z | 2ش | 2019-02-18T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ج | 2019-02-22T00:00:00.000Z |
+| Local day of week (stand-alone) | co | 2019-02-11T12:13:14.015Z | 3 | 2019-02-18T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 7 | 2019-02-22T00:00:00.000Z |
+| | ccc | 2019-02-11T12:13:14.015Z | دوشنبه | 2019-02-18T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | جمعه | 2019-02-22T00:00:00.000Z |
+| | cccc | 2019-02-11T12:13:14.015Z | دوشنبه | 2019-02-18T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | جمعه | 2019-02-22T00:00:00.000Z |
+| | ccccc | 2019-02-11T12:13:14.015Z | د | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | ج | 2019-02-22T00:00:00.000Z |
+| | cccccc | 2019-02-11T12:13:14.015Z | 2ش | 2019-02-18T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ج | 2019-02-22T00:00:00.000Z |
+| AM, PM | a | 2019-02-11T11:13:14.015Z | ق.ظ. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | ب.ظ. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | ب.ظ. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ق.ظ. | 2019-02-11T00:00:00.000Z |
+| | aa | 2019-02-11T11:13:14.015Z | ق.ظ. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | ب.ظ. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | ب.ظ. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ق.ظ. | 2019-02-11T00:00:00.000Z |
+| | aaa | 2019-02-11T11:13:14.015Z | ق.ظ. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | ب.ظ. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | ب.ظ. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ق.ظ. | 2019-02-11T00:00:00.000Z |
+| | aaaa | 2019-02-11T11:13:14.015Z | قبل‌ازظهر | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | بعدازظهر | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | بعدازظهر | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | قبل‌ازظهر | 2019-02-11T00:00:00.000Z |
+| | aaaaa | 2019-02-11T11:13:14.015Z | ق | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | ب | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | ب | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ق | 2019-02-11T00:00:00.000Z |
+| AM, PM, noon, midnight | b | 2019-02-11T11:13:14.015Z | ق.ظ. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | ب.ظ. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | ب.ظ. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ق.ظ. | 2019-02-11T00:00:00.000Z |
+| | bb | 2019-02-11T11:13:14.015Z | ق.ظ. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | ب.ظ. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | ب.ظ. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ق.ظ. | 2019-02-11T00:00:00.000Z |
+| | bbb | 2019-02-11T11:13:14.015Z | ق.ظ. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | ب.ظ. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | ب.ظ. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ق.ظ. | 2019-02-11T00:00:00.000Z |
+| | bbbb | 2019-02-11T11:13:14.015Z | قبل‌ازظهر | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | بعدازظهر | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | بعدازظهر | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | قبل‌ازظهر | 2019-02-11T00:00:00.000Z |
+| | bbbbb | 2019-02-11T11:13:14.015Z | ق | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | ب | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | ب | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ق | 2019-02-11T00:00:00.000Z |
+| Flexible day period | B | 2019-02-11T11:13:14.015Z | صبح | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | بعدازظهر | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | عصر | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | شب | 2019-02-11T12:00:00.000Z |
+| | BB | 2019-02-11T11:13:14.015Z | صبح | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | بعدازظهر | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | عصر | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | شب | 2019-02-11T12:00:00.000Z |
+| | BBB | 2019-02-11T11:13:14.015Z | صبح | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | بعدازظهر | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | عصر | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | شب | 2019-02-11T12:00:00.000Z |
+| | BBBB | 2019-02-11T11:13:14.015Z | صبح | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | بعدازظهر | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | عصر | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | شب | 2019-02-11T12:00:00.000Z |
+| | BBBBB | 2019-02-11T11:13:14.015Z | ص | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | ب.ظ. | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | ع | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ش | 2019-02-11T00:00:00.000Z |
+| Hour [1-12] | ho | 2019-02-11T11:13:14.015Z | 11 | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11 | 2019-02-11T23:00:00.000Z |
+| Hour [0-23] | Ho | 2019-02-11T11:13:14.015Z | 11 | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23 | 2019-02-11T23:00:00.000Z |
+| Hour [0-11] | Ko | 2019-02-11T11:13:14.015Z | 11 | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11 | 2019-02-11T23:00:00.000Z |
+| Hour [1-24] | ko | 2019-02-11T11:13:14.015Z | 11 | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23 | 2019-02-11T23:00:00.000Z |
+| Minute | mo | 2019-01-01T12:01:14.015Z | 1 | 2019-01-01T12:01:00.000Z |
+| | | 2019-04-01T12:55:14.015Z | 55 | 2019-04-01T12:55:00.000Z |
+| Second | so | 2019-01-01T12:13:01.015Z | 1 | 2019-01-01T12:13:01.000Z |
+| | | 2019-04-01T12:13:55.015Z | 55 | 2019-04-01T12:13:55.000Z |
+| Long localized date | P | 1987-02-11T12:13:14.015Z | 1987/02/11 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 1453/05/29 | 1453-05-29T00:00:00.000Z |
+| | PP | 1987-02-11T12:13:14.015Z | 11 فور 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 می 1453 | 1453-05-29T00:00:00.000Z |
+| | PPP | 1987-02-11T12:13:14.015Z | 11 فوریه 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 می 1453 | 1453-05-29T00:00:00.000Z |
+| | PPPP | 1987-02-11T12:13:14.015Z | چهارشنبه 11 فوریه 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | یکشنبه 29 می 1453 | 1453-05-29T00:00:00.000Z |
+| Long localized time | p | 1987-02-11T12:13:14.015Z | 12:13 ب.ظ. | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 11:59 ب.ظ. | 1453-05-29T23:59:00.000Z |
+| | pp | 1987-02-11T12:13:14.015Z | 12:13:14 ب.ظ. | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 11:59:59 ب.ظ. | 1453-05-29T23:59:59.000Z |
+| | ppp | 1987-02-11T12:13:14.015Z | 12:13:14 ب.ظ. GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 11:59:59 ب.ظ. GMT+0 | Errored |
+| | pppp | 1987-02-11T12:13:14.015Z | 12:13:14 ب.ظ. GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 11:59:59 ب.ظ. GMT+00:00 | Errored |
+| Combination of date and time | Pp | 1987-02-11T12:13:14.015Z | 1987/02/11, 12:13 ب.ظ. | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 1453/05/29, 11:59 ب.ظ. | 1453-05-29T23:59:00.000Z |
+| | PPpp | 1987-02-11T12:13:14.015Z | 11 فور 1987, 12:13:14 ب.ظ. | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 می 1453, 11:59:59 ب.ظ. | 1453-05-29T23:59:59.000Z |
+| | PPPppp | 1987-02-11T12:13:14.015Z | 11 فوریه 1987 در 12:13:14 ب.ظ. GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 29 می 1453 در 11:59:59 ب.ظ. GMT+0 | Errored |
+| | PPPPpppp | 1987-02-11T12:13:14.015Z | چهارشنبه 11 فوریه 1987 در 12:13:14 ب.ظ. GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | یکشنبه 29 می 1453 در 11:59:59 ب.ظ. GMT+00:00 | Errored |
+
+## `formatDistance`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `includeSeconds: true` | `addSuffix: true` |
+| ------------------------ | ---------------- | ---------------------- | -------------------- |
+| 2006-01-01T00:00:00.000Z | حدود 6 سال | حدود 6 سال | در حدود 6 سال |
+| 2005-01-01T00:00:00.000Z | حدود 5 سال | حدود 5 سال | در حدود 5 سال |
+| 2004-01-01T00:00:00.000Z | حدود 4 سال | حدود 4 سال | در حدود 4 سال |
+| 2003-01-01T00:00:00.000Z | حدود 3 سال | حدود 3 سال | در حدود 3 سال |
+| 2002-01-01T00:00:00.000Z | حدود 2 سال | حدود 2 سال | در حدود 2 سال |
+| 2001-06-01T00:00:00.000Z | بیشتر از 1 سال | بیشتر از 1 سال | در بیشتر از 1 سال |
+| 2001-02-01T00:00:00.000Z | حدود 1 سال | حدود 1 سال | در حدود 1 سال |
+| 2001-01-01T00:00:00.000Z | حدود 1 سال | حدود 1 سال | در حدود 1 سال |
+| 2000-06-01T00:00:00.000Z | 5 ماه | 5 ماه | در 5 ماه |
+| 2000-03-01T00:00:00.000Z | 2 ماه | 2 ماه | در 2 ماه |
+| 2000-02-01T00:00:00.000Z | حدود 1 ماه | حدود 1 ماه | در حدود 1 ماه |
+| 2000-01-15T00:00:00.000Z | 14 روز | 14 روز | در 14 روز |
+| 2000-01-02T00:00:00.000Z | 1 روز | 1 روز | در 1 روز |
+| 2000-01-01T06:00:00.000Z | حدود 6 ساعت | حدود 6 ساعت | در حدود 6 ساعت |
+| 2000-01-01T01:00:00.000Z | حدود 1 ساعت | حدود 1 ساعت | در حدود 1 ساعت |
+| 2000-01-01T00:45:00.000Z | حدود 1 ساعت | حدود 1 ساعت | در حدود 1 ساعت |
+| 2000-01-01T00:30:00.000Z | 30 دقیقه | 30 دقیقه | در 30 دقیقه |
+| 2000-01-01T00:15:00.000Z | 15 دقیقه | 15 دقیقه | در 15 دقیقه |
+| 2000-01-01T00:01:00.000Z | 1 دقیقه | 1 دقیقه | در 1 دقیقه |
+| 2000-01-01T00:00:25.000Z | کمتر از یک دقیقه | نیم دقیقه | در کمتر از یک دقیقه |
+| 2000-01-01T00:00:15.000Z | کمتر از یک دقیقه | کمتر از 20 ثانیه | در کمتر از یک دقیقه |
+| 2000-01-01T00:00:05.000Z | کمتر از یک دقیقه | کمتر از 10 ثانیه | در کمتر از یک دقیقه |
+| 2000-01-01T00:00:00.000Z | کمتر از یک دقیقه | کمتر از 5 ثانیه | کمتر از یک دقیقه قبل |
+| 1999-12-31T23:59:55.000Z | کمتر از یک دقیقه | کمتر از 10 ثانیه | کمتر از یک دقیقه قبل |
+| 1999-12-31T23:59:45.000Z | کمتر از یک دقیقه | کمتر از 20 ثانیه | کمتر از یک دقیقه قبل |
+| 1999-12-31T23:59:35.000Z | کمتر از یک دقیقه | نیم دقیقه | کمتر از یک دقیقه قبل |
+| 1999-12-31T23:59:00.000Z | 1 دقیقه | 1 دقیقه | 1 دقیقه قبل |
+| 1999-12-31T23:45:00.000Z | 15 دقیقه | 15 دقیقه | 15 دقیقه قبل |
+| 1999-12-31T23:30:00.000Z | 30 دقیقه | 30 دقیقه | 30 دقیقه قبل |
+| 1999-12-31T23:15:00.000Z | حدود 1 ساعت | حدود 1 ساعت | حدود 1 ساعت قبل |
+| 1999-12-31T23:00:00.000Z | حدود 1 ساعت | حدود 1 ساعت | حدود 1 ساعت قبل |
+| 1999-12-31T18:00:00.000Z | حدود 6 ساعت | حدود 6 ساعت | حدود 6 ساعت قبل |
+| 1999-12-30T00:00:00.000Z | 2 روز | 2 روز | 2 روز قبل |
+| 1999-12-15T00:00:00.000Z | 17 روز | 17 روز | 17 روز قبل |
+| 1999-12-01T00:00:00.000Z | حدود 1 ماه | حدود 1 ماه | حدود 1 ماه قبل |
+| 1999-11-01T00:00:00.000Z | 2 ماه | 2 ماه | 2 ماه قبل |
+| 1999-06-01T00:00:00.000Z | 7 ماه | 7 ماه | 7 ماه قبل |
+| 1999-01-01T00:00:00.000Z | حدود 1 سال | حدود 1 سال | حدود 1 سال قبل |
+| 1998-12-01T00:00:00.000Z | حدود 1 سال | حدود 1 سال | حدود 1 سال قبل |
+| 1998-06-01T00:00:00.000Z | بیشتر از 1 سال | بیشتر از 1 سال | بیشتر از 1 سال قبل |
+| 1998-01-01T00:00:00.000Z | حدود 2 سال | حدود 2 سال | حدود 2 سال قبل |
+| 1997-01-01T00:00:00.000Z | حدود 3 سال | حدود 3 سال | حدود 3 سال قبل |
+| 1996-01-01T00:00:00.000Z | حدود 4 سال | حدود 4 سال | حدود 4 سال قبل |
+| 1995-01-01T00:00:00.000Z | حدود 5 سال | حدود 5 سال | حدود 5 سال قبل |
+| 1994-01-01T00:00:00.000Z | حدود 6 سال | حدود 6 سال | حدود 6 سال قبل |
+
+## `formatDistanceStrict`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `addSuffix: true` | With forced unit (i.e. `hour`) |
+| ------------------------ | -------- | ----------------- | ------------------------------ |
+| 2006-01-01T00:00:00.000Z | 6 سال | در 6 سال | 52608 ساعت |
+| 2005-01-01T00:00:00.000Z | 5 سال | در 5 سال | 43848 ساعت |
+| 2004-01-01T00:00:00.000Z | 4 سال | در 4 سال | 35064 ساعت |
+| 2003-01-01T00:00:00.000Z | 3 سال | در 3 سال | 26304 ساعت |
+| 2002-01-01T00:00:00.000Z | 2 سال | در 2 سال | 17544 ساعت |
+| 2001-06-01T00:00:00.000Z | 1 سال | در 1 سال | 12408 ساعت |
+| 2001-02-01T00:00:00.000Z | 1 سال | در 1 سال | 9528 ساعت |
+| 2001-01-01T00:00:00.000Z | 1 سال | در 1 سال | 8784 ساعت |
+| 2000-06-01T00:00:00.000Z | 5 ماه | در 5 ماه | 3648 ساعت |
+| 2000-03-01T00:00:00.000Z | 2 ماه | در 2 ماه | 1440 ساعت |
+| 2000-02-01T00:00:00.000Z | 1 ماه | در 1 ماه | 744 ساعت |
+| 2000-01-15T00:00:00.000Z | 14 روز | در 14 روز | 336 ساعت |
+| 2000-01-02T00:00:00.000Z | 1 روز | در 1 روز | 24 ساعت |
+| 2000-01-01T06:00:00.000Z | 6 ساعت | در 6 ساعت | 6 ساعت |
+| 2000-01-01T01:00:00.000Z | 1 ساعت | در 1 ساعت | 1 ساعت |
+| 2000-01-01T00:45:00.000Z | 45 دقیقه | در 45 دقیقه | 1 ساعت |
+| 2000-01-01T00:30:00.000Z | 30 دقیقه | در 30 دقیقه | 1 ساعت |
+| 2000-01-01T00:15:00.000Z | 15 دقیقه | در 15 دقیقه | 0 ساعت |
+| 2000-01-01T00:01:00.000Z | 1 دقیقه | در 1 دقیقه | 0 ساعت |
+| 2000-01-01T00:00:25.000Z | 25 ثانیه | در 25 ثانیه | 0 ساعت |
+| 2000-01-01T00:00:15.000Z | 15 ثانیه | در 15 ثانیه | 0 ساعت |
+| 2000-01-01T00:00:05.000Z | 5 ثانیه | در 5 ثانیه | 0 ساعت |
+| 2000-01-01T00:00:00.000Z | 0 ثانیه | 0 ثانیه قبل | 0 ساعت |
+| 1999-12-31T23:59:55.000Z | 5 ثانیه | 5 ثانیه قبل | 0 ساعت |
+| 1999-12-31T23:59:45.000Z | 15 ثانیه | 15 ثانیه قبل | 0 ساعت |
+| 1999-12-31T23:59:35.000Z | 25 ثانیه | 25 ثانیه قبل | 0 ساعت |
+| 1999-12-31T23:59:00.000Z | 1 دقیقه | 1 دقیقه قبل | 0 ساعت |
+| 1999-12-31T23:45:00.000Z | 15 دقیقه | 15 دقیقه قبل | 0 ساعت |
+| 1999-12-31T23:30:00.000Z | 30 دقیقه | 30 دقیقه قبل | 1 ساعت |
+| 1999-12-31T23:15:00.000Z | 45 دقیقه | 45 دقیقه قبل | 1 ساعت |
+| 1999-12-31T23:00:00.000Z | 1 ساعت | 1 ساعت قبل | 1 ساعت |
+| 1999-12-31T18:00:00.000Z | 6 ساعت | 6 ساعت قبل | 6 ساعت |
+| 1999-12-30T00:00:00.000Z | 2 روز | 2 روز قبل | 48 ساعت |
+| 1999-12-15T00:00:00.000Z | 17 روز | 17 روز قبل | 408 ساعت |
+| 1999-12-01T00:00:00.000Z | 1 ماه | 1 ماه قبل | 744 ساعت |
+| 1999-11-01T00:00:00.000Z | 2 ماه | 2 ماه قبل | 1464 ساعت |
+| 1999-06-01T00:00:00.000Z | 7 ماه | 7 ماه قبل | 5136 ساعت |
+| 1999-01-01T00:00:00.000Z | 1 سال | 1 سال قبل | 8760 ساعت |
+| 1998-12-01T00:00:00.000Z | 1 سال | 1 سال قبل | 9504 ساعت |
+| 1998-06-01T00:00:00.000Z | 2 سال | 2 سال قبل | 13896 ساعت |
+| 1998-01-01T00:00:00.000Z | 2 سال | 2 سال قبل | 17520 ساعت |
+| 1997-01-01T00:00:00.000Z | 3 سال | 3 سال قبل | 26280 ساعت |
+| 1996-01-01T00:00:00.000Z | 4 سال | 4 سال قبل | 35064 ساعت |
+| 1995-01-01T00:00:00.000Z | 5 سال | 5 سال قبل | 43824 ساعت |
+| 1994-01-01T00:00:00.000Z | 6 سال | 6 سال قبل | 52584 ساعت |
+
+## `formatRelative`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result |
+| ------------------------ | -------------------------- |
+| 2000-01-10T00:00:00.000Z | 2000/01/10 |
+| 2000-01-05T00:00:00.000Z | چهارشنبه در 12:00 ق.ظ. |
+| 2000-01-02T00:00:00.000Z | فردا در 12:00 ق.ظ. |
+| 2000-01-01T00:00:00.000Z | امروز در 12:00 ق.ظ. |
+| 1999-12-31T00:00:00.000Z | دیروز در 12:00 ق.ظ. |
+| 1999-12-27T00:00:00.000Z | دوشنبه گذشته در 12:00 ق.ظ. |
+| 1999-12-21T00:00:00.000Z | 1999/12/21 |
diff --git a/date-fns/src/locale/fi/_lib/formatDistance/index.js b/date-fns/src/locale/fi/_lib/formatDistance/index.js
new file mode 100644
index 0000000..5ff6a48
--- /dev/null
+++ b/date-fns/src/locale/fi/_lib/formatDistance/index.js
@@ -0,0 +1,145 @@
+function futureSeconds(text) {
+ return text.replace(/sekuntia?/, 'sekunnin')
+}
+
+function futureMinutes(text) {
+ return text.replace(/minuuttia?/, 'minuutin')
+}
+
+function futureHours(text) {
+ return text.replace(/tuntia?/, 'tunnin')
+}
+
+function futureDays(text) {
+ return text.replace(/päivää?/, 'päivän')
+}
+
+function futureWeeks(text) {
+ return text.replace(/(viikko|viikkoa)/, 'viikon')
+}
+
+function futureMonths(text) {
+ return text.replace(/(kuukausi|kuukautta)/, 'kuukauden')
+}
+
+function futureYears(text) {
+ return text.replace(/(vuosi|vuotta)/, 'vuoden')
+}
+
+var formatDistanceLocale = {
+ lessThanXSeconds: {
+ one: 'alle sekunti',
+ other: 'alle {{count}} sekuntia',
+ futureTense: futureSeconds
+ },
+
+ xSeconds: {
+ one: 'sekunti',
+ other: '{{count}} sekuntia',
+ futureTense: futureSeconds
+ },
+
+ halfAMinute: {
+ one: 'puoli minuuttia',
+ other: 'puoli minuuttia',
+ futureTense: function(_text) {
+ return 'puolen minuutin'
+ }
+ },
+
+ lessThanXMinutes: {
+ one: 'alle minuutti',
+ other: 'alle {{count}} minuuttia',
+ futureTense: futureMinutes
+ },
+
+ xMinutes: {
+ one: 'minuutti',
+ other: '{{count}} minuuttia',
+ futureTense: futureMinutes
+ },
+
+ aboutXHours: {
+ one: 'noin tunti',
+ other: 'noin {{count}} tuntia',
+ futureTense: futureHours
+ },
+
+ xHours: {
+ one: 'tunti',
+ other: '{{count}} tuntia',
+ futureTense: futureHours
+ },
+
+ xDays: {
+ one: 'päivä',
+ other: '{{count}} päivää',
+ futureTense: futureDays
+ },
+
+ aboutXWeeks: {
+ one: 'noin viikko',
+ other: 'noin {{count}} viikkoa',
+ futureTense: futureWeeks
+ },
+
+ xWeeks: {
+ one: 'viikko',
+ other: '{{count}} viikkoa',
+ futureTense: futureWeeks
+ },
+
+ aboutXMonths: {
+ one: 'noin kuukausi',
+ other: 'noin {{count}} kuukautta',
+ futureTense: futureMonths
+ },
+
+ xMonths: {
+ one: 'kuukausi',
+ other: '{{count}} kuukautta',
+ futureTense: futureMonths
+ },
+
+ aboutXYears: {
+ one: 'noin vuosi',
+ other: 'noin {{count}} vuotta',
+ futureTense: futureYears
+ },
+
+ xYears: {
+ one: 'vuosi',
+ other: '{{count}} vuotta',
+ futureTense: futureYears
+ },
+
+ overXYears: {
+ one: 'yli vuosi',
+ other: 'yli {{count}} vuotta',
+ futureTense: futureYears
+ },
+
+ almostXYears: {
+ one: 'lähes vuosi',
+ other: 'lähes {{count}} vuotta',
+ futureTense: futureYears
+ }
+}
+
+export default function formatDistance(token, count, options) {
+ options = options || {}
+
+ var distance = formatDistanceLocale[token]
+ var result =
+ count === 1 ? distance.one : distance.other.replace('{{count}}', count)
+
+ if (options.addSuffix) {
+ if (options.comparison > 0) {
+ return distance.futureTense(result) + ' kuluttua'
+ } else {
+ return result + ' sitten'
+ }
+ }
+
+ return result
+}
diff --git a/date-fns/src/locale/fi/_lib/formatLong/index.js b/date-fns/src/locale/fi/_lib/formatLong/index.js
new file mode 100644
index 0000000..670ac7b
--- /dev/null
+++ b/date-fns/src/locale/fi/_lib/formatLong/index.js
@@ -0,0 +1,41 @@
+import buildFormatLongFn from '../../../_lib/buildFormatLongFn/index'
+
+var dateFormats = {
+ full: 'eeee d. MMMM y',
+ long: 'd. MMMM y',
+ medium: 'd. MMM y',
+ short: 'd.M.y'
+}
+
+var timeFormats = {
+ full: 'HH.mm.ss zzzz',
+ long: 'HH.mm.ss z',
+ medium: 'HH.mm.ss',
+ short: 'HH.mm'
+}
+
+var dateTimeFormats = {
+ full: "{{date}} 'klo' {{time}}",
+ long: "{{date}} 'klo' {{time}}",
+ medium: '{{date}} {{time}}',
+ short: '{{date}} {{time}}'
+}
+
+var formatLong = {
+ date: buildFormatLongFn({
+ formats: dateFormats,
+ defaultWidth: 'full'
+ }),
+
+ time: buildFormatLongFn({
+ formats: timeFormats,
+ defaultWidth: 'full'
+ }),
+
+ dateTime: buildFormatLongFn({
+ formats: dateTimeFormats,
+ defaultWidth: 'full'
+ })
+}
+
+export default formatLong
diff --git a/date-fns/src/locale/fi/_lib/formatRelative/index.js b/date-fns/src/locale/fi/_lib/formatRelative/index.js
new file mode 100644
index 0000000..1b0cbe8
--- /dev/null
+++ b/date-fns/src/locale/fi/_lib/formatRelative/index.js
@@ -0,0 +1,12 @@
+var formatRelativeLocale = {
+ lastWeek: "'viime' eeee 'klo' p",
+ yesterday: "'eilen klo' p",
+ today: "'tänään klo' p",
+ tomorrow: "'huomenna klo' p",
+ nextWeek: "'ensi' eeee 'klo' p",
+ other: 'P'
+}
+
+export default function formatRelative(token, _date, _baseDate, _options) {
+ return formatRelativeLocale[token]
+}
diff --git a/date-fns/src/locale/fi/_lib/localize/index.js b/date-fns/src/locale/fi/_lib/localize/index.js
new file mode 100644
index 0000000..02f94c2
--- /dev/null
+++ b/date-fns/src/locale/fi/_lib/localize/index.js
@@ -0,0 +1,147 @@
+import buildLocalizeFn from '../../../_lib/buildLocalizeFn/index'
+
+var eraValues = {
+ narrow: ['eaa.', 'jaa.'],
+ abbreviated: ['eaa.', 'jaa.'],
+ wide: ['ennen ajanlaskun alkua', 'jälkeen ajanlaskun alun']
+}
+
+var quarterValues = {
+ narrow: ['1', '2', '3', '4'],
+ abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],
+ wide: ['1. kvartaali', '2. kvartaali', '3. kvartaali', '4. kvartaali']
+}
+
+var monthValues = {
+ narrow: ['T', 'H', 'M', 'H', 'T', 'K', 'H', 'E', 'S', 'L', 'M', 'J'],
+ abbreviated: [
+ 'tammi',
+ 'helmi',
+ 'maalis',
+ 'huhti',
+ 'touko',
+ 'kesä',
+ 'heinä',
+ 'elo',
+ 'syys',
+ 'loka',
+ 'marras',
+ 'joulu'
+ ],
+ wide: [
+ 'tammikuu',
+ 'helmikuu',
+ 'maaliskuu',
+ 'huhtikuu',
+ 'toukokuu',
+ 'kesäkuu',
+ 'heinäkuu',
+ 'elokuu',
+ 'syyskuu',
+ 'lokakuu',
+ 'marraskuu',
+ 'joulukuu'
+ ]
+}
+
+var formattingMonthValues = {
+ narrow: monthValues.narrow,
+ abbreviated: monthValues.abbreviated,
+ wide: monthValues.wide.map(name => name + 'ta')
+}
+
+var dayValues = {
+ narrow: ['S', 'M', 'T', 'K', 'T', 'P', 'L'],
+ short: ['su', 'ma', 'ti', 'ke', 'to', 'pe', 'la'],
+ abbreviated: ['sunn.', 'maan.', 'tiis.', 'kesk.', 'torst.', 'perj.', 'la'],
+ wide: [
+ 'sunnuntai',
+ 'maanantai',
+ 'tiistai',
+ 'keskiviikko',
+ 'torstai',
+ 'perjantai',
+ 'lauantai'
+ ]
+}
+
+var formattingDayValues = {
+ narrow: dayValues.narrow,
+ short: dayValues.short,
+ abbreviated: dayValues.abbreviated,
+ wide: dayValues.wide.map(name => name + 'na')
+}
+
+var dayPeriodValues = {
+ narrow: {
+ am: 'ap',
+ pm: 'ip',
+ midnight: 'keskiyö',
+ noon: 'keskipäivä',
+ morning: 'ap',
+ afternoon: 'ip',
+ evening: 'illalla',
+ night: 'yöllä'
+ },
+ abbreviated: {
+ am: 'ap',
+ pm: 'ip',
+ midnight: 'keskiyö',
+ noon: 'keskipäivä',
+ morning: 'ap',
+ afternoon: 'ip',
+ evening: 'illalla',
+ night: 'yöllä'
+ },
+ wide: {
+ am: 'ap',
+ pm: 'ip',
+ midnight: 'keskiyöllä',
+ noon: 'keskipäivällä',
+ morning: 'aamupäivällä',
+ afternoon: 'iltapäivällä',
+ evening: 'illalla',
+ night: 'yöllä'
+ }
+}
+
+function ordinalNumber(dirtyNumber) {
+ var number = Number(dirtyNumber)
+ return number + '.'
+}
+
+var localize = {
+ ordinalNumber: ordinalNumber,
+
+ era: buildLocalizeFn({
+ values: eraValues,
+ defaultWidth: 'wide'
+ }),
+
+ quarter: buildLocalizeFn({
+ values: quarterValues,
+ defaultWidth: 'wide',
+ argumentCallback: function(quarter) {
+ return Number(quarter) - 1
+ }
+ }),
+
+ month: buildLocalizeFn({
+ values: monthValues,
+ formattingValues: formattingMonthValues,
+ defaultWidth: 'wide'
+ }),
+
+ day: buildLocalizeFn({
+ values: dayValues,
+ formattingValues: formattingDayValues,
+ defaultWidth: 'wide'
+ }),
+
+ dayPeriod: buildLocalizeFn({
+ values: dayPeriodValues,
+ defaultWidth: 'wide'
+ })
+}
+
+export default localize
diff --git a/date-fns/src/locale/fi/_lib/match/index.js b/date-fns/src/locale/fi/_lib/match/index.js
new file mode 100644
index 0000000..0717d41
--- /dev/null
+++ b/date-fns/src/locale/fi/_lib/match/index.js
@@ -0,0 +1,137 @@
+import buildMatchPatternFn from '../../../_lib/buildMatchPatternFn/index'
+import buildMatchFn from '../../../_lib/buildMatchFn/index'
+
+var matchOrdinalNumberPattern = /^(\d+)(\.)/i
+var parseOrdinalNumberPattern = /\d+/i
+
+var matchEraPatterns = {
+ narrow: /^(e|j)/i,
+ abbreviated: /^(eaa.|jaa.)/i,
+ wide: /^(ennen ajanlaskun alkua|jälkeen ajanlaskun alun)/i
+}
+var parseEraPatterns = {
+ any: [/^e/i, /^j/i]
+}
+
+var matchQuarterPatterns = {
+ narrow: /^[1234]/i,
+ abbreviated: /^q[1234]/i,
+ wide: /^[1234]\.? kvartaali/i
+}
+var parseQuarterPatterns = {
+ any: [/1/i, /2/i, /3/i, /4/i]
+}
+
+var matchMonthPatterns = {
+ narrow: /^[thmkeslj]/i,
+ abbreviated: /^(tammi|helmi|maalis|huhti|touko|kesä|heinä|elo|syys|loka|marras|joulu)/i,
+ wide: /^(tammikuu|helmikuu|maaliskuu|huhtikuu|toukokuu|kesäkuu|heinäkuu|elokuu|syyskuu|lokakuu|marraskuu|joulukuu)(ta)?/i
+}
+var parseMonthPatterns = {
+ narrow: [
+ /^t/i,
+ /^h/i,
+ /^m/i,
+ /^h/i,
+ /^t/i,
+ /^k/i,
+ /^h/i,
+ /^e/i,
+ /^s/i,
+ /^l/i,
+ /^m/i,
+ /^j/i
+ ],
+ any: [
+ /^ta/i,
+ /^hel/i,
+ /^maa/i,
+ /^hu/i,
+ /^to/i,
+ /^k/i,
+ /^hei/i,
+ /^e/i,
+ /^s/i,
+ /^l/i,
+ /^mar/i,
+ /^j/i
+ ]
+}
+
+var matchDayPatterns = {
+ narrow: /^[smtkpl]/i,
+ short: /^(su|ma|ti|ke|to|pe|la)/i,
+ abbreviated: /^(sunn.|maan.|tiis.|kesk.|torst.|perj.|la)/i,
+ wide: /^(sunnuntai|maanantai|tiistai|keskiviikko|torstai|perjantai|lauantai)(na)?/i
+}
+var parseDayPatterns = {
+ narrow: [/^s/i, /^m/i, /^t/i, /^k/i, /^t/i, /^p/i, /^l/i],
+ any: [/^s/i, /^m/i, /^ti/i, /^k/i, /^to/i, /^p/i, /^l/i]
+}
+
+var matchDayPeriodPatterns = {
+ narrow: /^(ap|ip|keskiyö|keskipäivä|aamupäivällä|iltapäivällä|illalla|yöllä)/i,
+ any: /^(ap|ip|keskiyöllä|keskipäivällä|aamupäivällä|iltapäivällä|illalla|yöllä)/i
+}
+var parseDayPeriodPatterns = {
+ any: {
+ am: /^ap/i,
+ pm: /^ip/i,
+ midnight: /^keskiyö/i,
+ noon: /^keskipäivä/i,
+ morning: /aamupäivällä/i,
+ afternoon: /iltapäivällä/i,
+ evening: /illalla/i,
+ night: /yöllä/i
+ }
+}
+
+var match = {
+ ordinalNumber: buildMatchPatternFn({
+ matchPattern: matchOrdinalNumberPattern,
+ parsePattern: parseOrdinalNumberPattern,
+ valueCallback: function(value) {
+ return parseInt(value, 10)
+ }
+ }),
+
+ era: buildMatchFn({
+ matchPatterns: matchEraPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseEraPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ quarter: buildMatchFn({
+ matchPatterns: matchQuarterPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseQuarterPatterns,
+ defaultParseWidth: 'any',
+ valueCallback: function(index) {
+ return index + 1
+ }
+ }),
+
+ month: buildMatchFn({
+ matchPatterns: matchMonthPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseMonthPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ day: buildMatchFn({
+ matchPatterns: matchDayPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseDayPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ dayPeriod: buildMatchFn({
+ matchPatterns: matchDayPeriodPatterns,
+ defaultMatchWidth: 'any',
+ parsePatterns: parseDayPeriodPatterns,
+ defaultParseWidth: 'any'
+ })
+}
+
+export default match
diff --git a/date-fns/src/locale/fi/index.d.ts b/date-fns/src/locale/fi/index.d.ts
new file mode 100644
index 0000000..e400702
--- /dev/null
+++ b/date-fns/src/locale/fi/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { fi } from 'date-fns/locale'
+export default fi
diff --git a/date-fns/src/locale/fi/index.js b/date-fns/src/locale/fi/index.js
new file mode 100644
index 0000000..35e9287
--- /dev/null
+++ b/date-fns/src/locale/fi/index.js
@@ -0,0 +1,30 @@
+import formatDistance from './_lib/formatDistance/index'
+import formatLong from './_lib/formatLong/index'
+import formatRelative from './_lib/formatRelative/index'
+import localize from './_lib/localize/index'
+import match from './_lib/match/index'
+
+/**
+ * @type {Locale}
+ * @category Locales
+ * @summary Finnish locale.
+ * @language Finnish
+ * @iso-639-2 fin
+ * @author Pyry-Samuli Lahti [@Pyppe]{@link https://github.com/Pyppe}
+ * @author Edo Rivai [@mikolajgrzyb]{@link https://github.com/mikolajgrzyb}
+ * @author Samu Juvonen [@sjuvonen]{@link https://github.com/sjuvonen}
+ */
+var locale = {
+ code: 'fi',
+ formatDistance: formatDistance,
+ formatLong: formatLong,
+ formatRelative: formatRelative,
+ localize: localize,
+ match: match,
+ options: {
+ weekStartsOn: 1 /* Monday */,
+ firstWeekContainsDate: 4
+ }
+}
+
+export default locale
diff --git a/date-fns/src/locale/fi/index.js.flow b/date-fns/src/locale/fi/index.js.flow
new file mode 100644
index 0000000..b9dfe66
--- /dev/null
+++ b/date-fns/src/locale/fi/index.js.flow
@@ -0,0 +1,35 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+declare module.exports: Locale
diff --git a/date-fns/src/locale/fi/snapshot.md b/date-fns/src/locale/fi/snapshot.md
new file mode 100644
index 0000000..29e621f
--- /dev/null
+++ b/date-fns/src/locale/fi/snapshot.md
@@ -0,0 +1,304 @@
+# Finnish (fi) locale
+
+## `format` and `parse`
+
+| Title | Token string | Date | `format` result | `parse` result |
+| ------------------------------- | ------------ | ------------------------ | -------------------------------------------------------- | ------------------------ |
+| Calendar year | yo | 1987-02-11T12:13:14.015Z | 1987. | 1987-01-01T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 5. | 0005-01-01T00:00:00.000Z |
+| Local week-numbering year | Yo | 1987-02-11T12:13:14.015Z | 1987. | 1986-12-29T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 4. | 0003-12-29T00:00:00.000Z |
+| Quarter (formatting) | Qo | 2019-01-01T12:13:14.015Z | 1. | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2. | 2019-04-01T00:00:00.000Z |
+| | QQQ | 2019-01-01T12:13:14.015Z | Q1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | Q2 | 2019-04-01T00:00:00.000Z |
+| | QQQQ | 2019-01-01T12:13:14.015Z | 1. kvartaali | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2. kvartaali | 2019-04-01T00:00:00.000Z |
+| | QQQQQ | 2019-01-01T12:13:14.015Z | 1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2 | 2019-04-01T00:00:00.000Z |
+| Quarter (stand-alone) | qo | 2019-01-01T12:13:14.015Z | 1. | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2. | 2019-04-01T00:00:00.000Z |
+| | qqq | 2019-01-01T12:13:14.015Z | Q1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | Q2 | 2019-04-01T00:00:00.000Z |
+| | qqqq | 2019-01-01T12:13:14.015Z | 1. kvartaali | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2. kvartaali | 2019-04-01T00:00:00.000Z |
+| Month (formatting) | Mo | 2019-02-11T12:13:14.015Z | 2. | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7. | 2019-07-01T00:00:00.000Z |
+| | MMM | 2019-02-11T12:13:14.015Z | helmi | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | heinä | 2019-07-01T00:00:00.000Z |
+| | MMMM | 2019-02-11T12:13:14.015Z | helmikuuta | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | heinäkuuta | 2019-07-01T00:00:00.000Z |
+| | MMMMM | 2019-02-11T12:13:14.015Z | H | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | H | 2019-02-01T00:00:00.000Z |
+| Month (stand-alone) | Lo | 2019-02-11T12:13:14.015Z | 2. | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7. | 2019-07-01T00:00:00.000Z |
+| | LLL | 2019-02-11T12:13:14.015Z | helmi | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | heinä | 2019-07-01T00:00:00.000Z |
+| | LLLL | 2019-02-11T12:13:14.015Z | helmikuu | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | heinäkuu | 2019-07-01T00:00:00.000Z |
+| | LLLLL | 2019-02-11T12:13:14.015Z | H | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | H | 2019-02-01T00:00:00.000Z |
+| Local week of year | wo | 2019-01-01T12:13:14.015Z | 1. | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48. | 2019-11-25T00:00:00.000Z |
+| ISO week of year | Io | 2019-01-01T12:13:14.015Z | 1. | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48. | 2019-11-25T00:00:00.000Z |
+| Day of month | do | 2019-02-11T12:13:14.015Z | 11. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-28T12:13:14.015Z | 28. | 2019-02-28T00:00:00.000Z |
+| Day of year | Do | 2019-02-11T12:13:14.015Z | 42. | 2019-02-11T00:00:00.000Z |
+| | | 2019-12-31T12:13:14.015Z | 365. | 2019-12-31T00:00:00.000Z |
+| Day of week (formatting) | E | 2019-02-11T12:13:14.015Z | maan. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | perj. | 2019-02-15T00:00:00.000Z |
+| | EE | 2019-02-11T12:13:14.015Z | maan. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | perj. | 2019-02-15T00:00:00.000Z |
+| | EEE | 2019-02-11T12:13:14.015Z | maan. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | perj. | 2019-02-15T00:00:00.000Z |
+| | EEEE | 2019-02-11T12:13:14.015Z | maanantaina | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | perjantaina | 2019-02-15T00:00:00.000Z |
+| | EEEEE | 2019-02-11T12:13:14.015Z | M | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | P | 2019-02-15T00:00:00.000Z |
+| | EEEEEE | 2019-02-11T12:13:14.015Z | ma | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | pe | 2019-02-15T00:00:00.000Z |
+| ISO day of week (formatting) | io | 2019-02-11T12:13:14.015Z | 1. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5. | 2019-02-15T00:00:00.000Z |
+| | iii | 2019-02-11T12:13:14.015Z | maan. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | perj. | 2019-02-15T00:00:00.000Z |
+| | iiii | 2019-02-11T12:13:14.015Z | maanantaina | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | perjantaina | 2019-02-15T00:00:00.000Z |
+| | iiiii | 2019-02-11T12:13:14.015Z | M | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | P | 2019-02-15T00:00:00.000Z |
+| | iiiiii | 2019-02-11T12:13:14.015Z | ma | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | pe | 2019-02-15T00:00:00.000Z |
+| Local day of week (formatting) | eo | 2019-02-11T12:13:14.015Z | 1. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5. | 2019-02-15T00:00:00.000Z |
+| | eee | 2019-02-11T12:13:14.015Z | maan. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | perj. | 2019-02-15T00:00:00.000Z |
+| | eeee | 2019-02-11T12:13:14.015Z | maanantaina | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | perjantaina | 2019-02-15T00:00:00.000Z |
+| | eeeee | 2019-02-11T12:13:14.015Z | M | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | P | 2019-02-15T00:00:00.000Z |
+| | eeeeee | 2019-02-11T12:13:14.015Z | ma | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | pe | 2019-02-15T00:00:00.000Z |
+| Local day of week (stand-alone) | co | 2019-02-11T12:13:14.015Z | 1. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5. | 2019-02-15T00:00:00.000Z |
+| | ccc | 2019-02-11T12:13:14.015Z | maan. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | perj. | 2019-02-15T00:00:00.000Z |
+| | cccc | 2019-02-11T12:13:14.015Z | maanantai | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | perjantai | 2019-02-15T00:00:00.000Z |
+| | ccccc | 2019-02-11T12:13:14.015Z | M | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | P | 2019-02-15T00:00:00.000Z |
+| | cccccc | 2019-02-11T12:13:14.015Z | ma | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | pe | 2019-02-15T00:00:00.000Z |
+| AM, PM | a | 2019-02-11T11:13:14.015Z | ap | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | ip | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | ip | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ap | 2019-02-11T00:00:00.000Z |
+| | aa | 2019-02-11T11:13:14.015Z | ap | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | ip | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | ip | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ap | 2019-02-11T00:00:00.000Z |
+| | aaa | 2019-02-11T11:13:14.015Z | ap | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | ip | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | ip | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ap | 2019-02-11T00:00:00.000Z |
+| | aaaa | 2019-02-11T11:13:14.015Z | ap | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | ip | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | ip | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ap | 2019-02-11T00:00:00.000Z |
+| | aaaaa | 2019-02-11T11:13:14.015Z | ap | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | ip | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | ip | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ap | 2019-02-11T00:00:00.000Z |
+| AM, PM, noon, midnight | b | 2019-02-11T11:13:14.015Z | ap | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | ip | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | ip | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ap | 2019-02-11T00:00:00.000Z |
+| | bb | 2019-02-11T11:13:14.015Z | ap | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | ip | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | ip | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ap | 2019-02-11T00:00:00.000Z |
+| | bbb | 2019-02-11T11:13:14.015Z | ap | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | ip | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | ip | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ap | 2019-02-11T00:00:00.000Z |
+| | bbbb | 2019-02-11T11:13:14.015Z | ap | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | ip | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | ip | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ap | 2019-02-11T00:00:00.000Z |
+| | bbbbb | 2019-02-11T11:13:14.015Z | ap | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | ip | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | ip | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ap | 2019-02-11T00:00:00.000Z |
+| Flexible day period | B | 2019-02-11T11:13:14.015Z | ap | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | ip | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | illalla | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | yöllä | 2019-02-11T00:00:00.000Z |
+| | BB | 2019-02-11T11:13:14.015Z | ap | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | ip | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | illalla | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | yöllä | 2019-02-11T00:00:00.000Z |
+| | BBB | 2019-02-11T11:13:14.015Z | ap | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | ip | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | illalla | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | yöllä | 2019-02-11T00:00:00.000Z |
+| | BBBB | 2019-02-11T11:13:14.015Z | aamupäivällä | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | iltapäivällä | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | illalla | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | yöllä | 2019-02-11T00:00:00.000Z |
+| | BBBBB | 2019-02-11T11:13:14.015Z | ap | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | ip | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | illalla | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | yöllä | 2019-02-11T00:00:00.000Z |
+| Hour [1-12] | ho | 2019-02-11T11:13:14.015Z | 11. | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11. | 2019-02-11T23:00:00.000Z |
+| Hour [0-23] | Ho | 2019-02-11T11:13:14.015Z | 11. | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23. | 2019-02-11T23:00:00.000Z |
+| Hour [0-11] | Ko | 2019-02-11T11:13:14.015Z | 11. | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11. | 2019-02-11T23:00:00.000Z |
+| Hour [1-24] | ko | 2019-02-11T11:13:14.015Z | 11. | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23. | 2019-02-11T23:00:00.000Z |
+| Minute | mo | 2019-01-01T12:01:14.015Z | 1. | 2019-01-01T12:01:00.000Z |
+| | | 2019-04-01T12:55:14.015Z | 55. | 2019-04-01T12:55:00.000Z |
+| Second | so | 2019-01-01T12:13:01.015Z | 1. | 2019-01-01T12:13:01.000Z |
+| | | 2019-04-01T12:13:55.015Z | 55. | 2019-04-01T12:13:55.000Z |
+| Long localized date | P | 1987-02-11T12:13:14.015Z | 11.2.1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29.5.1453 | 1453-05-29T00:00:00.000Z |
+| | PP | 1987-02-11T12:13:14.015Z | 11. helmi 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29. touko 1453 | 1453-05-29T00:00:00.000Z |
+| | PPP | 1987-02-11T12:13:14.015Z | 11. helmikuuta 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29. toukokuuta 1453 | 1453-05-29T00:00:00.000Z |
+| | PPPP | 1987-02-11T12:13:14.015Z | keskiviikkona 11. helmikuuta 1987 | Errored |
+| | | 1453-05-29T23:59:59.999Z | sunnuntaina 29. toukokuuta 1453 | Errored |
+| Long localized time | p | 1987-02-11T12:13:14.015Z | 12.13 | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 23.59 | 1453-05-29T23:59:00.000Z |
+| | pp | 1987-02-11T12:13:14.015Z | 12.13.14 | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 23.59.59 | 1453-05-29T23:59:59.000Z |
+| | ppp | 1987-02-11T12:13:14.015Z | 12.13.14 GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 23.59.59 GMT+0 | Errored |
+| | pppp | 1987-02-11T12:13:14.015Z | 12.13.14 GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 23.59.59 GMT+00:00 | Errored |
+| Combination of date and time | Pp | 1987-02-11T12:13:14.015Z | 11.2.1987 12.13 | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29.5.1453 23.59 | 1453-05-29T23:59:00.000Z |
+| | PPpp | 1987-02-11T12:13:14.015Z | 11. helmi 1987 12.13.14 | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29. touko 1453 23.59.59 | 1453-05-29T23:59:59.000Z |
+| | PPPppp | 1987-02-11T12:13:14.015Z | 11. helmikuuta 1987 klo 12.13.14 GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 29. toukokuuta 1453 klo 23.59.59 GMT+0 | Errored |
+| | PPPPpppp | 1987-02-11T12:13:14.015Z | keskiviikkona 11. helmikuuta 1987 klo 12.13.14 GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | sunnuntaina 29. toukokuuta 1453 klo 23.59.59 GMT+00:00 | Errored |
+
+## `formatDistance`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `includeSeconds: true` | `addSuffix: true` |
+| ------------------------ | ------------- | ---------------------- | ----------------------- |
+| 2006-01-01T00:00:00.000Z | noin 6 vuotta | noin 6 vuotta | noin 6 vuoden kuluttua |
+| 2005-01-01T00:00:00.000Z | noin 5 vuotta | noin 5 vuotta | noin 5 vuoden kuluttua |
+| 2004-01-01T00:00:00.000Z | noin 4 vuotta | noin 4 vuotta | noin 4 vuoden kuluttua |
+| 2003-01-01T00:00:00.000Z | noin 3 vuotta | noin 3 vuotta | noin 3 vuoden kuluttua |
+| 2002-01-01T00:00:00.000Z | noin 2 vuotta | noin 2 vuotta | noin 2 vuoden kuluttua |
+| 2001-06-01T00:00:00.000Z | yli vuosi | yli vuosi | yli vuoden kuluttua |
+| 2001-02-01T00:00:00.000Z | noin vuosi | noin vuosi | noin vuoden kuluttua |
+| 2001-01-01T00:00:00.000Z | noin vuosi | noin vuosi | noin vuoden kuluttua |
+| 2000-06-01T00:00:00.000Z | 5 kuukautta | 5 kuukautta | 5 kuukauden kuluttua |
+| 2000-03-01T00:00:00.000Z | 2 kuukautta | 2 kuukautta | 2 kuukauden kuluttua |
+| 2000-02-01T00:00:00.000Z | noin kuukausi | noin kuukausi | noin kuukauden kuluttua |
+| 2000-01-15T00:00:00.000Z | 14 päivää | 14 päivää | 14 päivän kuluttua |
+| 2000-01-02T00:00:00.000Z | päivä | päivä | päivän kuluttua |
+| 2000-01-01T06:00:00.000Z | noin 6 tuntia | noin 6 tuntia | noin 6 tunnin kuluttua |
+| 2000-01-01T01:00:00.000Z | noin tunti | noin tunti | noin tunnin kuluttua |
+| 2000-01-01T00:45:00.000Z | noin tunti | noin tunti | noin tunnin kuluttua |
+| 2000-01-01T00:30:00.000Z | 30 minuuttia | 30 minuuttia | 30 minuutin kuluttua |
+| 2000-01-01T00:15:00.000Z | 15 minuuttia | 15 minuuttia | 15 minuutin kuluttua |
+| 2000-01-01T00:01:00.000Z | minuutti | minuutti | minuutin kuluttua |
+| 2000-01-01T00:00:25.000Z | alle minuutti | puoli minuuttia | alle minuutin kuluttua |
+| 2000-01-01T00:00:15.000Z | alle minuutti | alle 20 sekuntia | alle minuutin kuluttua |
+| 2000-01-01T00:00:05.000Z | alle minuutti | alle 10 sekuntia | alle minuutin kuluttua |
+| 2000-01-01T00:00:00.000Z | alle minuutti | alle 5 sekuntia | alle minuutti sitten |
+| 1999-12-31T23:59:55.000Z | alle minuutti | alle 10 sekuntia | alle minuutti sitten |
+| 1999-12-31T23:59:45.000Z | alle minuutti | alle 20 sekuntia | alle minuutti sitten |
+| 1999-12-31T23:59:35.000Z | alle minuutti | puoli minuuttia | alle minuutti sitten |
+| 1999-12-31T23:59:00.000Z | minuutti | minuutti | minuutti sitten |
+| 1999-12-31T23:45:00.000Z | 15 minuuttia | 15 minuuttia | 15 minuuttia sitten |
+| 1999-12-31T23:30:00.000Z | 30 minuuttia | 30 minuuttia | 30 minuuttia sitten |
+| 1999-12-31T23:15:00.000Z | noin tunti | noin tunti | noin tunti sitten |
+| 1999-12-31T23:00:00.000Z | noin tunti | noin tunti | noin tunti sitten |
+| 1999-12-31T18:00:00.000Z | noin 6 tuntia | noin 6 tuntia | noin 6 tuntia sitten |
+| 1999-12-30T00:00:00.000Z | 2 päivää | 2 päivää | 2 päivää sitten |
+| 1999-12-15T00:00:00.000Z | 17 päivää | 17 päivää | 17 päivää sitten |
+| 1999-12-01T00:00:00.000Z | noin kuukausi | noin kuukausi | noin kuukausi sitten |
+| 1999-11-01T00:00:00.000Z | 2 kuukautta | 2 kuukautta | 2 kuukautta sitten |
+| 1999-06-01T00:00:00.000Z | 7 kuukautta | 7 kuukautta | 7 kuukautta sitten |
+| 1999-01-01T00:00:00.000Z | noin vuosi | noin vuosi | noin vuosi sitten |
+| 1998-12-01T00:00:00.000Z | noin vuosi | noin vuosi | noin vuosi sitten |
+| 1998-06-01T00:00:00.000Z | yli vuosi | yli vuosi | yli vuosi sitten |
+| 1998-01-01T00:00:00.000Z | noin 2 vuotta | noin 2 vuotta | noin 2 vuotta sitten |
+| 1997-01-01T00:00:00.000Z | noin 3 vuotta | noin 3 vuotta | noin 3 vuotta sitten |
+| 1996-01-01T00:00:00.000Z | noin 4 vuotta | noin 4 vuotta | noin 4 vuotta sitten |
+| 1995-01-01T00:00:00.000Z | noin 5 vuotta | noin 5 vuotta | noin 5 vuotta sitten |
+| 1994-01-01T00:00:00.000Z | noin 6 vuotta | noin 6 vuotta | noin 6 vuotta sitten |
+
+## `formatDistanceStrict`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `addSuffix: true` | With forced unit (i.e. `hour`) |
+| ------------------------ | ------------ | -------------------- | ------------------------------ |
+| 2006-01-01T00:00:00.000Z | 6 vuotta | 6 vuoden kuluttua | 52608 tuntia |
+| 2005-01-01T00:00:00.000Z | 5 vuotta | 5 vuoden kuluttua | 43848 tuntia |
+| 2004-01-01T00:00:00.000Z | 4 vuotta | 4 vuoden kuluttua | 35064 tuntia |
+| 2003-01-01T00:00:00.000Z | 3 vuotta | 3 vuoden kuluttua | 26304 tuntia |
+| 2002-01-01T00:00:00.000Z | 2 vuotta | 2 vuoden kuluttua | 17544 tuntia |
+| 2001-06-01T00:00:00.000Z | vuosi | vuoden kuluttua | 12408 tuntia |
+| 2001-02-01T00:00:00.000Z | vuosi | vuoden kuluttua | 9528 tuntia |
+| 2001-01-01T00:00:00.000Z | vuosi | vuoden kuluttua | 8784 tuntia |
+| 2000-06-01T00:00:00.000Z | 5 kuukautta | 5 kuukauden kuluttua | 3648 tuntia |
+| 2000-03-01T00:00:00.000Z | 2 kuukautta | 2 kuukauden kuluttua | 1440 tuntia |
+| 2000-02-01T00:00:00.000Z | kuukausi | kuukauden kuluttua | 744 tuntia |
+| 2000-01-15T00:00:00.000Z | 14 päivää | 14 päivän kuluttua | 336 tuntia |
+| 2000-01-02T00:00:00.000Z | päivä | päivän kuluttua | 24 tuntia |
+| 2000-01-01T06:00:00.000Z | 6 tuntia | 6 tunnin kuluttua | 6 tuntia |
+| 2000-01-01T01:00:00.000Z | tunti | tunnin kuluttua | tunti |
+| 2000-01-01T00:45:00.000Z | 45 minuuttia | 45 minuutin kuluttua | tunti |
+| 2000-01-01T00:30:00.000Z | 30 minuuttia | 30 minuutin kuluttua | tunti |
+| 2000-01-01T00:15:00.000Z | 15 minuuttia | 15 minuutin kuluttua | 0 tuntia |
+| 2000-01-01T00:01:00.000Z | minuutti | minuutin kuluttua | 0 tuntia |
+| 2000-01-01T00:00:25.000Z | 25 sekuntia | 25 sekunnin kuluttua | 0 tuntia |
+| 2000-01-01T00:00:15.000Z | 15 sekuntia | 15 sekunnin kuluttua | 0 tuntia |
+| 2000-01-01T00:00:05.000Z | 5 sekuntia | 5 sekunnin kuluttua | 0 tuntia |
+| 2000-01-01T00:00:00.000Z | 0 sekuntia | 0 sekuntia sitten | 0 tuntia |
+| 1999-12-31T23:59:55.000Z | 5 sekuntia | 5 sekuntia sitten | 0 tuntia |
+| 1999-12-31T23:59:45.000Z | 15 sekuntia | 15 sekuntia sitten | 0 tuntia |
+| 1999-12-31T23:59:35.000Z | 25 sekuntia | 25 sekuntia sitten | 0 tuntia |
+| 1999-12-31T23:59:00.000Z | minuutti | minuutti sitten | 0 tuntia |
+| 1999-12-31T23:45:00.000Z | 15 minuuttia | 15 minuuttia sitten | 0 tuntia |
+| 1999-12-31T23:30:00.000Z | 30 minuuttia | 30 minuuttia sitten | tunti |
+| 1999-12-31T23:15:00.000Z | 45 minuuttia | 45 minuuttia sitten | tunti |
+| 1999-12-31T23:00:00.000Z | tunti | tunti sitten | tunti |
+| 1999-12-31T18:00:00.000Z | 6 tuntia | 6 tuntia sitten | 6 tuntia |
+| 1999-12-30T00:00:00.000Z | 2 päivää | 2 päivää sitten | 48 tuntia |
+| 1999-12-15T00:00:00.000Z | 17 päivää | 17 päivää sitten | 408 tuntia |
+| 1999-12-01T00:00:00.000Z | kuukausi | kuukausi sitten | 744 tuntia |
+| 1999-11-01T00:00:00.000Z | 2 kuukautta | 2 kuukautta sitten | 1464 tuntia |
+| 1999-06-01T00:00:00.000Z | 7 kuukautta | 7 kuukautta sitten | 5136 tuntia |
+| 1999-01-01T00:00:00.000Z | vuosi | vuosi sitten | 8760 tuntia |
+| 1998-12-01T00:00:00.000Z | vuosi | vuosi sitten | 9504 tuntia |
+| 1998-06-01T00:00:00.000Z | 2 vuotta | 2 vuotta sitten | 13896 tuntia |
+| 1998-01-01T00:00:00.000Z | 2 vuotta | 2 vuotta sitten | 17520 tuntia |
+| 1997-01-01T00:00:00.000Z | 3 vuotta | 3 vuotta sitten | 26280 tuntia |
+| 1996-01-01T00:00:00.000Z | 4 vuotta | 4 vuotta sitten | 35064 tuntia |
+| 1995-01-01T00:00:00.000Z | 5 vuotta | 5 vuotta sitten | 43824 tuntia |
+| 1994-01-01T00:00:00.000Z | 6 vuotta | 6 vuotta sitten | 52584 tuntia |
+
+## `formatRelative`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result |
+| ------------------------ | ---------------------------- |
+| 2000-01-10T00:00:00.000Z | 10.1.2000 |
+| 2000-01-05T00:00:00.000Z | ensi keskiviikkona klo 00.00 |
+| 2000-01-02T00:00:00.000Z | huomenna klo 00.00 |
+| 2000-01-01T00:00:00.000Z | tänään klo 00.00 |
+| 1999-12-31T00:00:00.000Z | eilen klo 00.00 |
+| 1999-12-27T00:00:00.000Z | viime maanantaina klo 00.00 |
+| 1999-12-21T00:00:00.000Z | 21.12.1999 |
diff --git a/date-fns/src/locale/fil/_lib/formatDistance/index.js b/date-fns/src/locale/fil/_lib/formatDistance/index.js
new file mode 100644
index 0000000..4da5dfa
--- /dev/null
+++ b/date-fns/src/locale/fil/_lib/formatDistance/index.js
@@ -0,0 +1,101 @@
+var formatDistanceLocale = {
+ lessThanXSeconds: {
+ one: 'mas maliit sa isang segundo',
+ other: 'mas maliit sa {{count}} segundo'
+ },
+
+ xSeconds: {
+ one: '1 segundo',
+ other: '{{count}} segundo'
+ },
+
+ halfAMinute: 'kalahating minuto',
+
+ lessThanXMinutes: {
+ one: 'mas maliit sa isang minuto',
+ other: 'mas maliit sa {{count}} minuto'
+ },
+
+ xMinutes: {
+ one: '1 minuto',
+ other: '{{count}} minuto'
+ },
+
+ aboutXHours: {
+ one: 'mga 1 oras',
+ other: 'mga {{count}} oras'
+ },
+
+ xHours: {
+ one: '1 oras',
+ other: '{{count}} oras'
+ },
+
+ xDays: {
+ one: '1 araw',
+ other: '{{count}} araw'
+ },
+
+ aboutXWeeks: {
+ one: 'mga 1 buwan', // TODO
+ other: 'mga {{count}} buwan' // TODO
+ },
+
+ xWeeks: {
+ one: '1 buwan', // TODO
+ other: '{{count}} buwan' // TODO
+ },
+
+ aboutXMonths: {
+ one: 'mga 1 buwan',
+ other: 'mga {{count}} buwan'
+ },
+
+ xMonths: {
+ one: '1 buwan',
+ other: '{{count}} buwan'
+ },
+
+ aboutXYears: {
+ one: 'mga 1 taon',
+ other: 'mga {{count}} taon'
+ },
+
+ xYears: {
+ one: '1 taon',
+ other: '{{count}} taon'
+ },
+
+ overXYears: {
+ one: 'higit sa 1 taon',
+ other: 'higit sa {{count}} taon'
+ },
+
+ almostXYears: {
+ one: 'halos 1 taon',
+ other: 'halos {{count}} taon'
+ }
+}
+
+export default function formatDistance(token, count, options) {
+ options = options || {}
+
+ var result
+ if (typeof formatDistanceLocale[token] === 'string') {
+ result = formatDistanceLocale[token]
+ } else if (count === 1) {
+ result = formatDistanceLocale[token].one
+ } else {
+ result = formatDistanceLocale[token].other.replace('{{count}}', count)
+ }
+
+ if (options.addSuffix) {
+ if (options.comparison > 0) {
+ return 'sa loob ng ' + result
+ } else {
+ return result + ' ang nakalipas'
+ }
+ }
+
+ return result
+}
diff --git a/date-fns/src/locale/fil/_lib/formatLong/index.js b/date-fns/src/locale/fil/_lib/formatLong/index.js
new file mode 100644
index 0000000..2cf1867
--- /dev/null
+++ b/date-fns/src/locale/fil/_lib/formatLong/index.js
@@ -0,0 +1,12 @@
+import buildFormatLongFn from '../../../_lib/buildFormatLongFn/index'
+
+var formatLong = buildFormatLongFn({
+ LT: 'h:mm aa',
+ LTS: 'h:mm:ss aa',
+ L: 'MM/DD/YYYY',
+ LL: 'MMMM D YYYY',
+ LLL: 'MMMM D YYYY h:mm aa',
+ LLLL: 'dddd, MMMM D YYYY h:mm aa'
+})
+
+export default formatLong
diff --git a/date-fns/src/locale/fil/_lib/formatRelative/index.js b/date-fns/src/locale/fil/_lib/formatRelative/index.js
new file mode 100644
index 0000000..52ebbf1
--- /dev/null
+++ b/date-fns/src/locale/fil/_lib/formatRelative/index.js
@@ -0,0 +1,12 @@
+var formatRelativeLocale = {
+ lastWeek: '[last] dddd [at] LT',
+ yesterday: '[yesterday at] LT',
+ today: '[today at] LT',
+ tomorrow: '[tomorrow at] LT',
+ nextWeek: 'dddd [at] LT',
+ other: 'L'
+}
+
+export default function formatRelative(token, _date, _baseDate, _options) {
+ return formatRelativeLocale[token]
+}
diff --git a/date-fns/src/locale/fil/_lib/localize/index.js b/date-fns/src/locale/fil/_lib/localize/index.js
new file mode 100644
index 0000000..6be8e61
--- /dev/null
+++ b/date-fns/src/locale/fil/_lib/localize/index.js
@@ -0,0 +1,83 @@
+import buildLocalizeFn from '../../../_lib/buildLocalizeFn/index'
+import buildLocalizeArrayFn from '../../../_lib/buildLocalizeArrayFn/index'
+
+var weekdayValues = {
+ narrow: ['Li', 'Lu', 'Ma', 'Mi', 'Hu', 'Bi', 'Sa'],
+ short: ['Lin', 'Lun', 'Mar', 'Miy', 'Huw', 'Biy', 'Sab'],
+ long: [
+ 'Linggo',
+ 'Lunes',
+ 'Martes',
+ 'Miyerkules',
+ 'Huwebes',
+ 'Biyernes',
+ 'Sabado'
+ ]
+}
+
+var monthValues = {
+ short: [
+ 'Ene',
+ 'Peb',
+ 'Mar',
+ 'Abr',
+ 'May',
+ 'Hun',
+ 'Hul',
+ 'Ago',
+ 'Set',
+ 'Okt',
+ 'Nob',
+ 'Dis'
+ ],
+ long: [
+ 'Enero',
+ 'Pebrero',
+ 'Marso',
+ 'Abril',
+ 'Mayo',
+ 'Hunyo',
+ 'Hulyo',
+ 'Agosto',
+ 'Setyembre',
+ 'Oktubre',
+ 'Nobyembre',
+ 'Disyembre'
+ ]
+}
+
+var timeOfDayValues = {
+ uppercase: ['NU', 'NT', 'NH', 'NG'],
+ lowercase: ['nu', 'nt', 'nh', 'ng'],
+ long: ['ng umaga', 'ng tanghali', 'ng hapon', 'ng gabi']
+}
+
+function ordinalNumber(dirtyNumber) {
+ var number = Number(dirtyNumber)
+ return 'ika-' + number
+}
+
+var localize = {
+ ordinalNumber: ordinalNumber,
+ weekday: buildLocalizeFn(weekdayValues, 'long'),
+ weekdays: buildLocalizeArrayFn(weekdayValues, 'long'),
+ month: buildLocalizeFn(monthValues, 'long'),
+ months: buildLocalizeArrayFn(monthValues, 'long'),
+ timeOfDay: buildLocalizeFn(timeOfDayValues, 'long', function(hours) {
+ if (hours > 12) {
+ var modulo = hours % 12
+ if (modulo < 6) {
+ return 2
+ } else {
+ return 3
+ }
+ } else if (hours < 12) {
+ return 0
+ } else {
+ return 1
+ }
+ }),
+ timesOfDay: buildLocalizeArrayFn(timeOfDayValues, 'long')
+}
+
+export default localize
diff --git a/date-fns/src/locale/fil/_lib/match/index.js b/date-fns/src/locale/fil/_lib/match/index.js
new file mode 100644
index 0000000..5a3f4c5
--- /dev/null
+++ b/date-fns/src/locale/fil/_lib/match/index.js
@@ -0,0 +1,60 @@
+import buildMatchFn from '../../../_lib/buildMatchFn/index'
+import buildParseFn from '../../../_lib/buildParseFn/index'
+import buildMatchPatternFn from '../../../_lib/buildMatchPatternFn/index'
+import parseDecimal from '../../../_lib/parseDecimal/index'
+
+var matchOrdinalNumbersPattern = /^(\d+)(th|st|nd|rd)?/i
+
+var matchWeekdaysPatterns = {
+ narrow: /^(su|mo|tu|we|th|fr|sa)/i,
+ short: /^(sun|mon|tue|wed|thu|fri|sat)/i,
+ long: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i
+}
+
+var parseWeekdayPatterns = {
+ any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i]
+}
+
+var matchMonthsPatterns = {
+ short: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,
+ long: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i
+}
+
+var parseMonthPatterns = {
+ any: [
+ /^ja/i,
+ /^f/i,
+ /^mar/i,
+ /^ap/i,
+ /^may/i,
+ /^jun/i,
+ /^jul/i,
+ /^au/i,
+ /^s/i,
+ /^o/i,
+ /^n/i,
+ /^d/i
+ ]
+}
+
+var matchTimesOfDayPatterns = {
+ short: /^(am|pm)/i,
+ long: /^([ap]\.?\s?m\.?)/i
+}
+
+var parseTimeOfDayPatterns = {
+ any: [/^a/i, /^p/i]
+}
+
+var match = {
+ ordinalNumbers: buildMatchPatternFn(matchOrdinalNumbersPattern),
+ ordinalNumber: parseDecimal,
+ weekdays: buildMatchFn(matchWeekdaysPatterns, 'long'),
+ weekday: buildParseFn(parseWeekdayPatterns, 'any'),
+ months: buildMatchFn(matchMonthsPatterns, 'long'),
+ month: buildParseFn(parseMonthPatterns, 'any'),
+ timesOfDay: buildMatchFn(matchTimesOfDayPatterns, 'long'),
+ timeOfDay: buildParseFn(parseTimeOfDayPatterns, 'any')
+}
+
+export default match
diff --git a/date-fns/src/locale/fil/index.d.ts b/date-fns/src/locale/fil/index.d.ts
new file mode 100644
index 0000000..edd13d6
--- /dev/null
+++ b/date-fns/src/locale/fil/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { fil } from 'date-fns/locale'
+export default fil
diff --git a/date-fns/src/locale/fil/index.js b/date-fns/src/locale/fil/index.js
new file mode 100644
index 0000000..63c9477
--- /dev/null
+++ b/date-fns/src/locale/fil/index.js
@@ -0,0 +1,32 @@
+// import formatDistance from './_lib/formatDistance/index'
+// import formatLong from './_lib/formatLong/index'
+// import formatRelative from './_lib/formatRelative/index'
+// import localize from './_lib/localize/index'
+// import match from './_lib/match/index'
+
+/**
+ * @type {Locale}
+ * @category Locales
+ * @summary Filipino locale.
+ * @language Filipino
+ * @iso-639-2 fil
+ * @author Ian De La Cruz [@RIanDeLaCruz]{@link https://github.com/RIanDeLaCruz}
+ */
+// var locale = {
+// code: 'fil',
+// formatDistance: formatDistance,
+// formatLong: formatLong,
+// formatRelative: formatRelative,
+// localize: localize,
+// match: match,
+// options: {
+// weekStartsOn: 0 /* Sunday */,
+// firstWeekContainsDate: 1
+// }
+// }
+
+// export default locale
+
+throw new Error(
+ 'fil locale is currently unavailable. Please check the progress of converting this locale to v2.0.0 in this issue on Github: TBA'
+)
diff --git a/date-fns/src/locale/fil/index.js.flow b/date-fns/src/locale/fil/index.js.flow
new file mode 100644
index 0000000..b9dfe66
--- /dev/null
+++ b/date-fns/src/locale/fil/index.js.flow
@@ -0,0 +1,35 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+declare module.exports: Locale
diff --git a/date-fns/src/locale/fr-CA/_lib/formatLong/index.js b/date-fns/src/locale/fr-CA/_lib/formatLong/index.js
new file mode 100644
index 0000000..3810ebe
--- /dev/null
+++ b/date-fns/src/locale/fr-CA/_lib/formatLong/index.js
@@ -0,0 +1,41 @@
+import buildFormatLongFn from '../../../_lib/buildFormatLongFn/index'
+
+var dateFormats = {
+ full: 'EEEE d MMMM y',
+ long: 'd MMMM y',
+ medium: 'd MMM y',
+ short: 'yy-MM-dd'
+}
+
+var timeFormats = {
+ full: 'HH:mm:ss zzzz',
+ long: 'HH:mm:ss z',
+ medium: 'HH:mm:ss',
+ short: 'HH:mm'
+}
+
+var dateTimeFormats = {
+ full: "{{date}} 'à' {{time}}",
+ long: "{{date}} 'à' {{time}}",
+ medium: '{{date}}, {{time}}',
+ short: '{{date}}, {{time}}'
+}
+
+var formatLong = {
+ date: buildFormatLongFn({
+ formats: dateFormats,
+ defaultWidth: 'full'
+ }),
+
+ time: buildFormatLongFn({
+ formats: timeFormats,
+ defaultWidth: 'full'
+ }),
+
+ dateTime: buildFormatLongFn({
+ formats: dateTimeFormats,
+ defaultWidth: 'full'
+ })
+}
+
+export default formatLong
diff --git a/date-fns/src/locale/fr-CA/index.d.ts b/date-fns/src/locale/fr-CA/index.d.ts
new file mode 100644
index 0000000..533b466
--- /dev/null
+++ b/date-fns/src/locale/fr-CA/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { frCA } from 'date-fns/locale'
+export default frCA
diff --git a/date-fns/src/locale/fr-CA/index.js b/date-fns/src/locale/fr-CA/index.js
new file mode 100644
index 0000000..1986220
--- /dev/null
+++ b/date-fns/src/locale/fr-CA/index.js
@@ -0,0 +1,35 @@
+// Same as fr
+import formatDistance from '../fr/_lib/formatDistance/index'
+import formatRelative from '../fr/_lib/formatRelative/index'
+import localize from '../fr/_lib/localize/index'
+import match from '../fr/_lib/match/index'
+
+// Unique for fr-CA
+import formatLong from './_lib/formatLong/index'
+
+/**
+ * @type {Locale}
+ * @category Locales
+ * @summary French locale (Canada).
+ * @language French
+ * @iso-639-2 fra
+ * @author Jean Dupouy [@izeau]{@link https://github.com/izeau}
+ * @author François B [@fbonzon]{@link https://github.com/fbonzon}
+ * @author Gabriele Petrioli [@gpetrioli]{@link https://github.com/gpetrioli}
+ */
+var locale = {
+ code: 'fr-CA',
+ formatDistance: formatDistance,
+ formatLong: formatLong,
+ formatRelative: formatRelative,
+ localize: localize,
+ match: match,
+
+ // Unique for fr-CA
+ options: {
+ weekStartsOn: 0 /* Sunday */,
+ firstWeekContainsDate: 1
+ }
+}
+
+export default locale
diff --git a/date-fns/src/locale/fr-CA/index.js.flow b/date-fns/src/locale/fr-CA/index.js.flow
new file mode 100644
index 0000000..b9dfe66
--- /dev/null
+++ b/date-fns/src/locale/fr-CA/index.js.flow
@@ -0,0 +1,35 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+declare module.exports: Locale
diff --git a/date-fns/src/locale/fr-CA/snapshot.md b/date-fns/src/locale/fr-CA/snapshot.md
new file mode 100644
index 0000000..4c471e8
--- /dev/null
+++ b/date-fns/src/locale/fr-CA/snapshot.md
@@ -0,0 +1,304 @@
+# French (fr-CA) locale
+
+## `format` and `parse`
+
+| Title | Token string | Date | `format` result | `parse` result |
+| ------------------------------- | ------------ | ------------------------ | --------------------------------------------- | ------------------------ |
+| Calendar year | yo | 1987-02-11T12:13:14.015Z | 1987ème | 1987-01-01T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 5ème | 0005-01-01T00:00:00.000Z |
+| Local week-numbering year | Yo | 1987-02-11T12:13:14.015Z | 1987ème | 1986-12-28T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 5ème | 0004-12-26T00:00:00.000Z |
+| Quarter (formatting) | Qo | 2019-01-01T12:13:14.015Z | 1er | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2ème | 2019-04-01T00:00:00.000Z |
+| | QQQ | 2019-01-01T12:13:14.015Z | 1er trim. | Invalid Date |
+| | | 2019-04-01T12:13:14.015Z | 2ème trim. | Invalid Date |
+| | QQQQ | 2019-01-01T12:13:14.015Z | 1er trimestre | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2ème trimestre | 2019-04-01T00:00:00.000Z |
+| | QQQQQ | 2019-01-01T12:13:14.015Z | T1 | Invalid Date |
+| | | 2019-04-01T12:13:14.015Z | T2 | Invalid Date |
+| Quarter (stand-alone) | qo | 2019-01-01T12:13:14.015Z | 1er | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2ème | 2019-04-01T00:00:00.000Z |
+| | qqq | 2019-01-01T12:13:14.015Z | 1er trim. | Invalid Date |
+| | | 2019-04-01T12:13:14.015Z | 2ème trim. | Invalid Date |
+| | qqqq | 2019-01-01T12:13:14.015Z | 1er trimestre | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2ème trimestre | 2019-04-01T00:00:00.000Z |
+| Month (formatting) | Mo | 2019-02-11T12:13:14.015Z | 2ème | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7ème | 2019-07-01T00:00:00.000Z |
+| | MMM | 2019-02-11T12:13:14.015Z | févr. | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | juil. | 2019-07-01T00:00:00.000Z |
+| | MMMM | 2019-02-11T12:13:14.015Z | février | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | juillet | 2019-07-01T00:00:00.000Z |
+| | MMMMM | 2019-02-11T12:13:14.015Z | F | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | J | 2019-01-01T00:00:00.000Z |
+| Month (stand-alone) | Lo | 2019-02-11T12:13:14.015Z | 2ème | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7ème | 2019-07-01T00:00:00.000Z |
+| | LLL | 2019-02-11T12:13:14.015Z | févr. | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | juil. | 2019-07-01T00:00:00.000Z |
+| | LLLL | 2019-02-11T12:13:14.015Z | février | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | juillet | 2019-07-01T00:00:00.000Z |
+| | LLLLL | 2019-02-11T12:13:14.015Z | F | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | J | 2019-01-01T00:00:00.000Z |
+| Local week of year | wo | 2019-01-01T12:13:14.015Z | 1ère | 2018-12-30T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 49ème | 2019-12-01T00:00:00.000Z |
+| ISO week of year | Io | 2019-01-01T12:13:14.015Z | 1ère | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48ème | 2019-11-25T00:00:00.000Z |
+| Day of month | do | 2019-02-11T12:13:14.015Z | 11ème | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-28T12:13:14.015Z | 28ème | 2019-02-28T00:00:00.000Z |
+| Day of year | Do | 2019-02-11T12:13:14.015Z | 42ème | 2019-02-11T00:00:00.000Z |
+| | | 2019-12-31T12:13:14.015Z | 365ème | 2019-12-31T00:00:00.000Z |
+| Day of week (formatting) | E | 2019-02-11T12:13:14.015Z | lun. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ven. | 2019-02-15T00:00:00.000Z |
+| | EE | 2019-02-11T12:13:14.015Z | lun. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ven. | 2019-02-15T00:00:00.000Z |
+| | EEE | 2019-02-11T12:13:14.015Z | lun. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ven. | 2019-02-15T00:00:00.000Z |
+| | EEEE | 2019-02-11T12:13:14.015Z | lundi | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | vendredi | 2019-02-15T00:00:00.000Z |
+| | EEEEE | 2019-02-11T12:13:14.015Z | L | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | V | 2019-02-15T00:00:00.000Z |
+| | EEEEEE | 2019-02-11T12:13:14.015Z | lu | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ve | 2019-02-15T00:00:00.000Z |
+| ISO day of week (formatting) | io | 2019-02-11T12:13:14.015Z | 1er | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5ème | 2019-02-15T00:00:00.000Z |
+| | iii | 2019-02-11T12:13:14.015Z | lun. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ven. | 2019-02-15T00:00:00.000Z |
+| | iiii | 2019-02-11T12:13:14.015Z | lundi | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | vendredi | 2019-02-15T00:00:00.000Z |
+| | iiiii | 2019-02-11T12:13:14.015Z | L | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | V | 2019-02-15T00:00:00.000Z |
+| | iiiiii | 2019-02-11T12:13:14.015Z | lu | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ve | 2019-02-15T00:00:00.000Z |
+| Local day of week (formatting) | eo | 2019-02-11T12:13:14.015Z | 2ème | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 6ème | 2019-02-15T00:00:00.000Z |
+| | eee | 2019-02-11T12:13:14.015Z | lun. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ven. | 2019-02-15T00:00:00.000Z |
+| | eeee | 2019-02-11T12:13:14.015Z | lundi | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | vendredi | 2019-02-15T00:00:00.000Z |
+| | eeeee | 2019-02-11T12:13:14.015Z | L | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | V | 2019-02-15T00:00:00.000Z |
+| | eeeeee | 2019-02-11T12:13:14.015Z | lu | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ve | 2019-02-15T00:00:00.000Z |
+| Local day of week (stand-alone) | co | 2019-02-11T12:13:14.015Z | 2ème | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 6ème | 2019-02-15T00:00:00.000Z |
+| | ccc | 2019-02-11T12:13:14.015Z | lun. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ven. | 2019-02-15T00:00:00.000Z |
+| | cccc | 2019-02-11T12:13:14.015Z | lundi | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | vendredi | 2019-02-15T00:00:00.000Z |
+| | ccccc | 2019-02-11T12:13:14.015Z | L | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | V | 2019-02-15T00:00:00.000Z |
+| | cccccc | 2019-02-11T12:13:14.015Z | lu | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ve | 2019-02-15T00:00:00.000Z |
+| AM, PM | a | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | aa | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | aaa | 2019-02-11T11:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | aaaa | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | aaaaa | 2019-02-11T11:13:14.015Z | AM | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | PM | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | PM | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | AM | Invalid Date |
+| AM, PM, noon, midnight | b | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | bb | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | bbb | 2019-02-11T11:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | bbbb | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | bbbbb | 2019-02-11T11:13:14.015Z | AM | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | PM | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | PM | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | AM | Invalid Date |
+| Flexible day period | B | 2019-02-11T11:13:14.015Z | matin | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | après-midi | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | soir | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | matin | Invalid Date |
+| | BB | 2019-02-11T11:13:14.015Z | matin | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | après-midi | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | soir | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | matin | Invalid Date |
+| | BBB | 2019-02-11T11:13:14.015Z | matin | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | après-midi | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | soir | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | matin | Invalid Date |
+| | BBBB | 2019-02-11T11:13:14.015Z | du matin | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | de l’après-midi | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | du soir | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | du matin | 2019-02-11T04:00:00.000Z |
+| | BBBBB | 2019-02-11T11:13:14.015Z | mat. | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | ap.m. | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | soir | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | mat. | 2019-02-11T04:00:00.000Z |
+| Hour [1-12] | ho | 2019-02-11T11:13:14.015Z | 11ème | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11ème | 2019-02-11T23:00:00.000Z |
+| Hour [0-23] | Ho | 2019-02-11T11:13:14.015Z | 11ème | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23ème | 2019-02-11T23:00:00.000Z |
+| Hour [0-11] | Ko | 2019-02-11T11:13:14.015Z | 11ème | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11ème | 2019-02-11T23:00:00.000Z |
+| Hour [1-24] | ko | 2019-02-11T11:13:14.015Z | 11ème | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23ème | 2019-02-11T23:00:00.000Z |
+| Minute | mo | 2019-01-01T12:01:14.015Z | 1er | 2019-01-01T12:01:00.000Z |
+| | | 2019-04-01T12:55:14.015Z | 55ème | 2019-04-01T12:55:00.000Z |
+| Second | so | 2019-01-01T12:13:01.015Z | 1er | 2019-01-01T12:13:01.000Z |
+| | | 2019-04-01T12:13:55.015Z | 55ème | 2019-04-01T12:13:55.000Z |
+| Long localized date | P | 1987-02-11T12:13:14.015Z | 87-02-11 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 53-05-29 | 1453-05-29T00:00:00.000Z |
+| | PP | 1987-02-11T12:13:14.015Z | 11 févr. 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 mai 1453 | 1453-05-29T00:00:00.000Z |
+| | PPP | 1987-02-11T12:13:14.015Z | 11 février 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 mai 1453 | 1453-05-29T00:00:00.000Z |
+| | PPPP | 1987-02-11T12:13:14.015Z | mercredi 11 février 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | dimanche 29 mai 1453 | 1453-05-29T00:00:00.000Z |
+| Long localized time | p | 1987-02-11T12:13:14.015Z | 12:13 | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 23:59 | 1453-05-29T23:59:00.000Z |
+| | pp | 1987-02-11T12:13:14.015Z | 12:13:14 | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 | 1453-05-29T23:59:59.000Z |
+| | ppp | 1987-02-11T12:13:14.015Z | 12:13:14 GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 GMT+0 | Errored |
+| | pppp | 1987-02-11T12:13:14.015Z | 12:13:14 GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 GMT+00:00 | Errored |
+| Combination of date and time | Pp | 1987-02-11T12:13:14.015Z | 87-02-11, 12:13 | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 53-05-29, 23:59 | 1453-05-29T23:59:00.000Z |
+| | PPpp | 1987-02-11T12:13:14.015Z | 11 févr. 1987, 12:13:14 | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 mai 1453, 23:59:59 | 1453-05-29T23:59:59.000Z |
+| | PPPppp | 1987-02-11T12:13:14.015Z | 11 février 1987 à 12:13:14 GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 29 mai 1453 à 23:59:59 GMT+0 | Errored |
+| | PPPPpppp | 1987-02-11T12:13:14.015Z | mercredi 11 février 1987 à 12:13:14 GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | dimanche 29 mai 1453 à 23:59:59 GMT+00:00 | Errored |
+
+## `formatDistance`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `includeSeconds: true` | `addSuffix: true` |
+| ------------------------ | ------------------ | ---------------------- | ------------------------- |
+| 2006-01-01T00:00:00.000Z | environ 6 ans | environ 6 ans | dans environ 6 ans |
+| 2005-01-01T00:00:00.000Z | environ 5 ans | environ 5 ans | dans environ 5 ans |
+| 2004-01-01T00:00:00.000Z | environ 4 ans | environ 4 ans | dans environ 4 ans |
+| 2003-01-01T00:00:00.000Z | environ 3 ans | environ 3 ans | dans environ 3 ans |
+| 2002-01-01T00:00:00.000Z | environ 2 ans | environ 2 ans | dans environ 2 ans |
+| 2001-06-01T00:00:00.000Z | plus d’un an | plus d’un an | dans plus d’un an |
+| 2001-02-01T00:00:00.000Z | environ 1 an | environ 1 an | dans environ 1 an |
+| 2001-01-01T00:00:00.000Z | environ 1 an | environ 1 an | dans environ 1 an |
+| 2000-06-01T00:00:00.000Z | 5 mois | 5 mois | dans 5 mois |
+| 2000-03-01T00:00:00.000Z | 2 mois | 2 mois | dans 2 mois |
+| 2000-02-01T00:00:00.000Z | environ 1 mois | environ 1 mois | dans environ 1 mois |
+| 2000-01-15T00:00:00.000Z | 14 jours | 14 jours | dans 14 jours |
+| 2000-01-02T00:00:00.000Z | 1 jour | 1 jour | dans 1 jour |
+| 2000-01-01T06:00:00.000Z | environ 6 heures | environ 6 heures | dans environ 6 heures |
+| 2000-01-01T01:00:00.000Z | environ 1 heure | environ 1 heure | dans environ 1 heure |
+| 2000-01-01T00:45:00.000Z | environ 1 heure | environ 1 heure | dans environ 1 heure |
+| 2000-01-01T00:30:00.000Z | 30 minutes | 30 minutes | dans 30 minutes |
+| 2000-01-01T00:15:00.000Z | 15 minutes | 15 minutes | dans 15 minutes |
+| 2000-01-01T00:01:00.000Z | 1 minute | 1 minute | dans 1 minute |
+| 2000-01-01T00:00:25.000Z | moins d’une minute | 30 secondes | dans moins d’une minute |
+| 2000-01-01T00:00:15.000Z | moins d’une minute | moins de 20 secondes | dans moins d’une minute |
+| 2000-01-01T00:00:05.000Z | moins d’une minute | moins de 10 secondes | dans moins d’une minute |
+| 2000-01-01T00:00:00.000Z | moins d’une minute | moins de 5 secondes | il y a moins d’une minute |
+| 1999-12-31T23:59:55.000Z | moins d’une minute | moins de 10 secondes | il y a moins d’une minute |
+| 1999-12-31T23:59:45.000Z | moins d’une minute | moins de 20 secondes | il y a moins d’une minute |
+| 1999-12-31T23:59:35.000Z | moins d’une minute | 30 secondes | il y a moins d’une minute |
+| 1999-12-31T23:59:00.000Z | 1 minute | 1 minute | il y a 1 minute |
+| 1999-12-31T23:45:00.000Z | 15 minutes | 15 minutes | il y a 15 minutes |
+| 1999-12-31T23:30:00.000Z | 30 minutes | 30 minutes | il y a 30 minutes |
+| 1999-12-31T23:15:00.000Z | environ 1 heure | environ 1 heure | il y a environ 1 heure |
+| 1999-12-31T23:00:00.000Z | environ 1 heure | environ 1 heure | il y a environ 1 heure |
+| 1999-12-31T18:00:00.000Z | environ 6 heures | environ 6 heures | il y a environ 6 heures |
+| 1999-12-30T00:00:00.000Z | 2 jours | 2 jours | il y a 2 jours |
+| 1999-12-15T00:00:00.000Z | 17 jours | 17 jours | il y a 17 jours |
+| 1999-12-01T00:00:00.000Z | environ 1 mois | environ 1 mois | il y a environ 1 mois |
+| 1999-11-01T00:00:00.000Z | 2 mois | 2 mois | il y a 2 mois |
+| 1999-06-01T00:00:00.000Z | 7 mois | 7 mois | il y a 7 mois |
+| 1999-01-01T00:00:00.000Z | environ 1 an | environ 1 an | il y a environ 1 an |
+| 1998-12-01T00:00:00.000Z | environ 1 an | environ 1 an | il y a environ 1 an |
+| 1998-06-01T00:00:00.000Z | plus d’un an | plus d’un an | il y a plus d’un an |
+| 1998-01-01T00:00:00.000Z | environ 2 ans | environ 2 ans | il y a environ 2 ans |
+| 1997-01-01T00:00:00.000Z | environ 3 ans | environ 3 ans | il y a environ 3 ans |
+| 1996-01-01T00:00:00.000Z | environ 4 ans | environ 4 ans | il y a environ 4 ans |
+| 1995-01-01T00:00:00.000Z | environ 5 ans | environ 5 ans | il y a environ 5 ans |
+| 1994-01-01T00:00:00.000Z | environ 6 ans | environ 6 ans | il y a environ 6 ans |
+
+## `formatDistanceStrict`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `addSuffix: true` | With forced unit (i.e. `hour`) |
+| ------------------------ | ----------- | ------------------ | ------------------------------ |
+| 2006-01-01T00:00:00.000Z | 6 ans | dans 6 ans | 52608 heures |
+| 2005-01-01T00:00:00.000Z | 5 ans | dans 5 ans | 43848 heures |
+| 2004-01-01T00:00:00.000Z | 4 ans | dans 4 ans | 35064 heures |
+| 2003-01-01T00:00:00.000Z | 3 ans | dans 3 ans | 26304 heures |
+| 2002-01-01T00:00:00.000Z | 2 ans | dans 2 ans | 17544 heures |
+| 2001-06-01T00:00:00.000Z | 1 an | dans 1 an | 12408 heures |
+| 2001-02-01T00:00:00.000Z | 1 an | dans 1 an | 9528 heures |
+| 2001-01-01T00:00:00.000Z | 1 an | dans 1 an | 8784 heures |
+| 2000-06-01T00:00:00.000Z | 5 mois | dans 5 mois | 3648 heures |
+| 2000-03-01T00:00:00.000Z | 2 mois | dans 2 mois | 1440 heures |
+| 2000-02-01T00:00:00.000Z | 1 mois | dans 1 mois | 744 heures |
+| 2000-01-15T00:00:00.000Z | 14 jours | dans 14 jours | 336 heures |
+| 2000-01-02T00:00:00.000Z | 1 jour | dans 1 jour | 24 heures |
+| 2000-01-01T06:00:00.000Z | 6 heures | dans 6 heures | 6 heures |
+| 2000-01-01T01:00:00.000Z | 1 heure | dans 1 heure | 1 heure |
+| 2000-01-01T00:45:00.000Z | 45 minutes | dans 45 minutes | 1 heure |
+| 2000-01-01T00:30:00.000Z | 30 minutes | dans 30 minutes | 1 heure |
+| 2000-01-01T00:15:00.000Z | 15 minutes | dans 15 minutes | 0 heures |
+| 2000-01-01T00:01:00.000Z | 1 minute | dans 1 minute | 0 heures |
+| 2000-01-01T00:00:25.000Z | 25 secondes | dans 25 secondes | 0 heures |
+| 2000-01-01T00:00:15.000Z | 15 secondes | dans 15 secondes | 0 heures |
+| 2000-01-01T00:00:05.000Z | 5 secondes | dans 5 secondes | 0 heures |
+| 2000-01-01T00:00:00.000Z | 0 secondes | il y a 0 secondes | 0 heures |
+| 1999-12-31T23:59:55.000Z | 5 secondes | il y a 5 secondes | 0 heures |
+| 1999-12-31T23:59:45.000Z | 15 secondes | il y a 15 secondes | 0 heures |
+| 1999-12-31T23:59:35.000Z | 25 secondes | il y a 25 secondes | 0 heures |
+| 1999-12-31T23:59:00.000Z | 1 minute | il y a 1 minute | 0 heures |
+| 1999-12-31T23:45:00.000Z | 15 minutes | il y a 15 minutes | 0 heures |
+| 1999-12-31T23:30:00.000Z | 30 minutes | il y a 30 minutes | 1 heure |
+| 1999-12-31T23:15:00.000Z | 45 minutes | il y a 45 minutes | 1 heure |
+| 1999-12-31T23:00:00.000Z | 1 heure | il y a 1 heure | 1 heure |
+| 1999-12-31T18:00:00.000Z | 6 heures | il y a 6 heures | 6 heures |
+| 1999-12-30T00:00:00.000Z | 2 jours | il y a 2 jours | 48 heures |
+| 1999-12-15T00:00:00.000Z | 17 jours | il y a 17 jours | 408 heures |
+| 1999-12-01T00:00:00.000Z | 1 mois | il y a 1 mois | 744 heures |
+| 1999-11-01T00:00:00.000Z | 2 mois | il y a 2 mois | 1464 heures |
+| 1999-06-01T00:00:00.000Z | 7 mois | il y a 7 mois | 5136 heures |
+| 1999-01-01T00:00:00.000Z | 1 an | il y a 1 an | 8760 heures |
+| 1998-12-01T00:00:00.000Z | 1 an | il y a 1 an | 9504 heures |
+| 1998-06-01T00:00:00.000Z | 2 ans | il y a 2 ans | 13896 heures |
+| 1998-01-01T00:00:00.000Z | 2 ans | il y a 2 ans | 17520 heures |
+| 1997-01-01T00:00:00.000Z | 3 ans | il y a 3 ans | 26280 heures |
+| 1996-01-01T00:00:00.000Z | 4 ans | il y a 4 ans | 35064 heures |
+| 1995-01-01T00:00:00.000Z | 5 ans | il y a 5 ans | 43824 heures |
+| 1994-01-01T00:00:00.000Z | 6 ans | il y a 6 ans | 52584 heures |
+
+## `formatRelative`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result |
+| ------------------------ | ------------------------- |
+| 2000-01-10T00:00:00.000Z | 00-01-10 |
+| 2000-01-05T00:00:00.000Z | mercredi prochain à 00:00 |
+| 2000-01-02T00:00:00.000Z | demain à 00:00 |
+| 2000-01-01T00:00:00.000Z | aujourd’hui à 00:00 |
+| 1999-12-31T00:00:00.000Z | hier à 00:00 |
+| 1999-12-27T00:00:00.000Z | lundi dernier à 00:00 |
+| 1999-12-21T00:00:00.000Z | 99-12-21 |
diff --git a/date-fns/src/locale/fr-CH/_lib/formatDistance/index.js b/date-fns/src/locale/fr-CH/_lib/formatDistance/index.js
new file mode 100644
index 0000000..e5bbf4f
--- /dev/null
+++ b/date-fns/src/locale/fr-CH/_lib/formatDistance/index.js
@@ -0,0 +1,101 @@
+var formatDistanceLocale = {
+ lessThanXSeconds: {
+ one: 'moins d’une seconde',
+ other: 'moins de {{count}} secondes'
+ },
+
+ xSeconds: {
+ one: '1 seconde',
+ other: '{{count}} secondes'
+ },
+
+ halfAMinute: '30 secondes',
+
+ lessThanXMinutes: {
+ one: 'moins d’une minute',
+ other: 'moins de {{count}} minutes'
+ },
+
+ xMinutes: {
+ one: '1 minute',
+ other: '{{count}} minutes'
+ },
+
+ aboutXHours: {
+ one: 'environ 1 heure',
+ other: 'environ {{count}} heures'
+ },
+
+ xHours: {
+ one: '1 heure',
+ other: '{{count}} heures'
+ },
+
+ xDays: {
+ one: '1 jour',
+ other: '{{count}} jours'
+ },
+
+ aboutXWeeks: {
+ one: 'environ 1 semaine',
+ other: 'environ {{count}} semaines'
+ },
+
+ xWeeks: {
+ one: '1 semaine',
+ other: '{{count}} semaines'
+ },
+
+ aboutXMonths: {
+ one: 'environ 1 mois',
+ other: 'environ {{count}} mois'
+ },
+
+ xMonths: {
+ one: '1 mois',
+ other: '{{count}} mois'
+ },
+
+ aboutXYears: {
+ one: 'environ 1 an',
+ other: 'environ {{count}} ans'
+ },
+
+ xYears: {
+ one: '1 an',
+ other: '{{count}} ans'
+ },
+
+ overXYears: {
+ one: 'plus d’un an',
+ other: 'plus de {{count}} ans'
+ },
+
+ almostXYears: {
+ one: 'presqu’un an',
+ other: 'presque {{count}} ans'
+ }
+}
+
+export default function formatDistance(token, count, options) {
+ options = options || {}
+
+ var result
+ if (typeof formatDistanceLocale[token] === 'string') {
+ result = formatDistanceLocale[token]
+ } else if (count === 1) {
+ result = formatDistanceLocale[token].one
+ } else {
+ result = formatDistanceLocale[token].other.replace('{{count}}', count)
+ }
+
+ if (options.addSuffix) {
+ if (options.comparison > 0) {
+ return 'dans ' + result
+ } else {
+ return 'il y a ' + result
+ }
+ }
+
+ return result
+}
diff --git a/date-fns/src/locale/fr-CH/_lib/formatLong/index.js b/date-fns/src/locale/fr-CH/_lib/formatLong/index.js
new file mode 100644
index 0000000..16cdba1
--- /dev/null
+++ b/date-fns/src/locale/fr-CH/_lib/formatLong/index.js
@@ -0,0 +1,41 @@
+import buildFormatLongFn from '../../../_lib/buildFormatLongFn/index'
+
+var dateFormats = {
+ full: 'EEEE d MMMM y',
+ long: 'd MMMM y',
+ medium: 'd MMM y',
+ short: 'dd.MM.y'
+}
+
+var timeFormats = {
+ full: 'HH:mm:ss zzzz',
+ long: 'HH:mm:ss z',
+ medium: 'HH:mm:ss',
+ short: 'HH:mm'
+}
+
+var dateTimeFormats = {
+ full: "{{date}} 'à' {{time}}",
+ long: "{{date}} 'à' {{time}}",
+ medium: '{{date}}, {{time}}',
+ short: '{{date}}, {{time}}'
+}
+
+var formatLong = {
+ date: buildFormatLongFn({
+ formats: dateFormats,
+ defaultWidth: 'full'
+ }),
+
+ time: buildFormatLongFn({
+ formats: timeFormats,
+ defaultWidth: 'full'
+ }),
+
+ dateTime: buildFormatLongFn({
+ formats: dateTimeFormats,
+ defaultWidth: 'full'
+ })
+}
+
+export default formatLong
diff --git a/date-fns/src/locale/fr-CH/_lib/formatRelative/index.js b/date-fns/src/locale/fr-CH/_lib/formatRelative/index.js
new file mode 100644
index 0000000..fff22de
--- /dev/null
+++ b/date-fns/src/locale/fr-CH/_lib/formatRelative/index.js
@@ -0,0 +1,12 @@
+var formatRelativeLocale = {
+ lastWeek: "eeee 'la semaine dernière à' p",
+ yesterday: "'hier à' p",
+ today: "'aujourd’hui à' p",
+ tomorrow: "'demain à' p'",
+ nextWeek: "eeee 'la semaine prochaine à' p",
+ other: 'P'
+}
+
+export default function formatRelative(token, _date, _baseDate, _options) {
+ return formatRelativeLocale[token]
+}
diff --git a/date-fns/src/locale/fr-CH/_lib/formatters/index.js b/date-fns/src/locale/fr-CH/_lib/formatters/index.js
new file mode 100644
index 0000000..b270774
--- /dev/null
+++ b/date-fns/src/locale/fr-CH/_lib/formatters/index.js
@@ -0,0 +1,17 @@
+var formatters = {}
+
+// Special case for day of month ordinals in long date format context:
+// 1er mars, 2 mars, 3 mars, …
+// See https://github.com/date-fns/date-fns/issues/437
+var monthsTokens = ['MMM', 'MMMM']
+monthsTokens.forEach(function (monthToken) {
+ formatters['Do ' + monthToken] = function (date, options) {
+ var commonFormatters = options.formatters
+ var dayOfMonthToken = date.getUTCDate() === 1 ? 'Do' : 'D'
+ var dayOfMonthFormatter = commonFormatters[dayOfMonthToken]
+ var monthFormatter = commonFormatters[monthToken]
+ return dayOfMonthFormatter(date, options) + ' ' + monthFormatter(date, options)
+ }
+})
+
+export default formatters
diff --git a/date-fns/src/locale/fr-CH/_lib/localize/index.js b/date-fns/src/locale/fr-CH/_lib/localize/index.js
new file mode 100644
index 0000000..01d52b3
--- /dev/null
+++ b/date-fns/src/locale/fr-CH/_lib/localize/index.js
@@ -0,0 +1,155 @@
+import buildLocalizeFn from '../../../_lib/buildLocalizeFn/index'
+
+var eraValues = {
+ narrow: ['av. J.-C', 'ap. J.-C'],
+ abbreviated: ['av. J.-C', 'ap. J.-C'],
+ wide: ['avant Jésus-Christ', 'après Jésus-Christ']
+}
+
+var quarterValues = {
+ narrow: ['T1', 'T2', 'T3', 'T4'],
+ abbreviated: ['1er trim.', '2ème trim.', '3ème trim.', '4ème trim.'],
+ wide: ['1er trimestre', '2ème trimestre', '3ème trimestre', '4ème trimestre']
+}
+
+var monthValues = {
+ narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],
+ abbreviated: [
+ 'janv.',
+ 'févr.',
+ 'mars',
+ 'avr.',
+ 'mai',
+ 'juin',
+ 'juil.',
+ 'août',
+ 'sept.',
+ 'oct.',
+ 'nov.',
+ 'déc.'
+ ],
+ wide: [
+ 'janvier',
+ 'février',
+ 'mars',
+ 'avril',
+ 'mai',
+ 'juin',
+ 'juillet',
+ 'août',
+ 'septembre',
+ 'octobre',
+ 'novembre',
+ 'décembre'
+ ]
+}
+
+var dayValues = {
+ narrow: ['D', 'L', 'M', 'M', 'J', 'V', 'S'],
+ short: ['di', 'lu', 'ma', 'me', 'je', 've', 'sa'],
+ abbreviated: ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'],
+ wide: [
+ 'dimanche',
+ 'lundi',
+ 'mardi',
+ 'mercredi',
+ 'jeudi',
+ 'vendredi',
+ 'samedi'
+ ]
+}
+
+var dayPeriodValues = {
+ narrow: {
+ am: 'AM',
+ pm: 'PM',
+ midnight: 'minuit',
+ noon: 'midi',
+ morning: 'mat.',
+ afternoon: 'ap.m.',
+ evening: 'soir',
+ night: 'mat.'
+ },
+ abbreviated: {
+ am: 'AM',
+ pm: 'PM',
+ midnight: 'minuit',
+ noon: 'midi',
+ morning: 'matin',
+ afternoon: 'après-midi',
+ evening: 'soir',
+ night: 'matin'
+ },
+ wide: {
+ am: 'AM',
+ pm: 'PM',
+ midnight: 'minuit',
+ noon: 'midi',
+ morning: 'du matin',
+ afternoon: 'de l’après-midi',
+ evening: 'du soir',
+ night: 'du matin'
+ }
+}
+
+function ordinalNumber(dirtyNumber, dirtyOptions) {
+ var number = Number(dirtyNumber)
+
+ var options = dirtyOptions || {}
+ var unit = String(options.unit)
+ var suffix
+
+ if (number === 0) {
+ return number
+ }
+
+ if (unit === 'year' || unit === 'hour' || unit === 'week') {
+ if (number === 1) {
+ suffix = 'ère'
+ } else {
+ suffix = 'ème'
+ }
+ } else {
+ if (number === 1) {
+ suffix = 'er'
+ } else {
+ suffix = 'ème'
+ }
+ }
+
+ return number + suffix
+}
+
+var localize = {
+ ordinalNumber: ordinalNumber,
+
+ era: buildLocalizeFn({
+ values: eraValues,
+ defaultWidth: 'wide'
+ }),
+
+ quarter: buildLocalizeFn({
+ values: quarterValues,
+ defaultWidth: 'wide',
+ argumentCallback: function(quarter) {
+ return Number(quarter) - 1
+ }
+ }),
+
+ month: buildLocalizeFn({
+ values: monthValues,
+ defaultWidth: 'wide'
+ }),
+
+ day: buildLocalizeFn({
+ values: dayValues,
+ defaultWidth: 'wide'
+ }),
+
+ dayPeriod: buildLocalizeFn({
+ values: dayPeriodValues,
+ defaultWidth: 'wide'
+ })
+}
+
+export default localize
diff --git a/date-fns/src/locale/fr-CH/_lib/match/index.js b/date-fns/src/locale/fr-CH/_lib/match/index.js
new file mode 100644
index 0000000..e5c36f8
--- /dev/null
+++ b/date-fns/src/locale/fr-CH/_lib/match/index.js
@@ -0,0 +1,137 @@
+import buildMatchPatternFn from '../../../_lib/buildMatchPatternFn/index'
+import buildMatchFn from '../../../_lib/buildMatchFn/index'
+
+var matchOrdinalNumberPattern = /^(\d+)(ième|ère|ème|er|e)?/i
+var parseOrdinalNumberPattern = /\d+/i
+
+var matchEraPatterns = {
+ narrow: /^(av\.J\.C|ap\.J\.C|ap\.J\.-C)/i,
+ abbreviated: /^(av\.J\.-C|av\.J-C|apr\.J\.-C|apr\.J-C|ap\.J-C)/i,
+ wide: /^(avant Jésus-Christ|après Jésus-Christ)/i
+}
+var parseEraPatterns = {
+ any: [/^av/i, /^ap/i]
+}
+
+var matchQuarterPatterns = {
+ narrow: /^[1234]/i,
+ abbreviated: /^t[1234]/i,
+ wide: /^[1234](er|ème|e)? trimestre/i
+}
+var parseQuarterPatterns = {
+ any: [/1/i, /2/i, /3/i, /4/i]
+}
+
+var matchMonthPatterns = {
+ narrow: /^[jfmasond]/i,
+ abbreviated: /^(janv|févr|mars|avr|mai|juin|juill|juil|août|sept|oct|nov|déc)\.?/i,
+ wide: /^(janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i
+}
+var parseMonthPatterns = {
+ narrow: [
+ /^j/i,
+ /^f/i,
+ /^m/i,
+ /^a/i,
+ /^m/i,
+ /^j/i,
+ /^j/i,
+ /^a/i,
+ /^s/i,
+ /^o/i,
+ /^n/i,
+ /^d/i
+ ],
+ any: [
+ /^ja/i,
+ /^f/i,
+ /^mar/i,
+ /^av/i,
+ /^ma/i,
+ /^juin/i,
+ /^juil/i,
+ /^ao/i,
+ /^s/i,
+ /^o/i,
+ /^n/i,
+ /^d/i
+ ]
+}
+
+var matchDayPatterns = {
+ narrow: /^[lmjvsd]/i,
+ short: /^(di|lu|ma|me|je|ve|sa)/i,
+ abbreviated: /^(dim|lun|mar|mer|jeu|ven|sam)\.?/i,
+ wide: /^(dimanche|lundi|mardi|mercredi|jeudi|vendredi|samedi)/i
+}
+var parseDayPatterns = {
+ narrow: [/^d/i, /^l/i, /^m/i, /^m/i, /^j/i, /^v/i, /^s/i],
+ any: [/^di/i, /^lu/i, /^ma/i, /^me/i, /^je/i, /^ve/i, /^sa/i]
+}
+
+var matchDayPeriodPatterns = {
+ narrow: /^(a|p|minuit|midi|mat\.?|ap\.?m\.?|soir|nuit)/i,
+ any: /^([ap]\.?\s?m\.?|du matin|de l'après[-\s]midi|du soir|de la nuit)/i
+}
+var parseDayPeriodPatterns = {
+ any: {
+ am: /^a/i,
+ pm: /^p/i,
+ midnight: /^min/i,
+ noon: /^mid/i,
+ morning: /mat/i,
+ afternoon: /ap/i,
+ evening: /soir/i,
+ night: /nuit/i
+ }
+}
+
+var match = {
+ ordinalNumber: buildMatchPatternFn({
+ matchPattern: matchOrdinalNumberPattern,
+ parsePattern: parseOrdinalNumberPattern,
+ valueCallback: function(value) {
+ return parseInt(value, 10)
+ }
+ }),
+
+ era: buildMatchFn({
+ matchPatterns: matchEraPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseEraPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ quarter: buildMatchFn({
+ matchPatterns: matchQuarterPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseQuarterPatterns,
+ defaultParseWidth: 'any',
+ valueCallback: function(index) {
+ return index + 1
+ }
+ }),
+
+ month: buildMatchFn({
+ matchPatterns: matchMonthPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseMonthPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ day: buildMatchFn({
+ matchPatterns: matchDayPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseDayPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ dayPeriod: buildMatchFn({
+ matchPatterns: matchDayPeriodPatterns,
+ defaultMatchWidth: 'any',
+ parsePatterns: parseDayPeriodPatterns,
+ defaultParseWidth: 'any'
+ })
+}
+
+export default match
diff --git a/date-fns/src/locale/fr-CH/index.d.ts b/date-fns/src/locale/fr-CH/index.d.ts
new file mode 100644
index 0000000..5fdd3c5
--- /dev/null
+++ b/date-fns/src/locale/fr-CH/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { frCH } from 'date-fns/locale'
+export default frCH
diff --git a/date-fns/src/locale/fr-CH/index.js b/date-fns/src/locale/fr-CH/index.js
new file mode 100644
index 0000000..d153f05
--- /dev/null
+++ b/date-fns/src/locale/fr-CH/index.js
@@ -0,0 +1,32 @@
+import formatDistance from './_lib/formatDistance/index'
+import formatLong from './_lib/formatLong/index'
+import formatRelative from './_lib/formatRelative/index'
+import localize from './_lib/localize/index'
+import match from './_lib/match/index'
+
+/**
+ * @type {Locale}
+ * @category Locales
+ * @summary French locale.
+ * @language French
+ * @iso-639-2 fra
+ * @author Jean Dupouy [@izeau]{@link https://github.com/izeau}
+ * @author François B [@fbonzon]{@link https://github.com/fbonzon}
+ * @author Van Vuong Ngo [@vanvuongngo]{@link https://github.com/vanvuongngo}
+ * @author Alex Hoeing [@dcbn]{@link https://github.com/dcbn}
+ */
+
+var locale = {
+ code: 'fr-CH',
+ formatDistance: formatDistance,
+ formatLong: formatLong,
+ formatRelative: formatRelative,
+ localize: localize,
+ match: match,
+ options: {
+ weekStartsOn: 1 /* Monday */,
+ firstWeekContainsDate: 4
+ }
+}
+
+export default locale
diff --git a/date-fns/src/locale/fr-CH/index.js.flow b/date-fns/src/locale/fr-CH/index.js.flow
new file mode 100644
index 0000000..b9dfe66
--- /dev/null
+++ b/date-fns/src/locale/fr-CH/index.js.flow
@@ -0,0 +1,35 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+declare module.exports: Locale
diff --git a/date-fns/src/locale/fr-CH/snapshot.md b/date-fns/src/locale/fr-CH/snapshot.md
new file mode 100644
index 0000000..f92944e
--- /dev/null
+++ b/date-fns/src/locale/fr-CH/snapshot.md
@@ -0,0 +1,304 @@
+# French (fr-CH) locale
+
+## `format` and `parse`
+
+| Title | Token string | Date | `format` result | `parse` result |
+| ------------------------------- | ------------ | ------------------------ | --------------------------------------------- | ------------------------ |
+| Calendar year | yo | 1987-02-11T12:13:14.015Z | 1987ème | 1987-01-01T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 5ème | 0005-01-01T00:00:00.000Z |
+| Local week-numbering year | Yo | 1987-02-11T12:13:14.015Z | 1987ème | 1986-12-29T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 4ème | 0003-12-29T00:00:00.000Z |
+| Quarter (formatting) | Qo | 2019-01-01T12:13:14.015Z | 1er | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2ème | 2019-04-01T00:00:00.000Z |
+| | QQQ | 2019-01-01T12:13:14.015Z | 1er trim. | Invalid Date |
+| | | 2019-04-01T12:13:14.015Z | 2ème trim. | Invalid Date |
+| | QQQQ | 2019-01-01T12:13:14.015Z | 1er trimestre | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2ème trimestre | 2019-04-01T00:00:00.000Z |
+| | QQQQQ | 2019-01-01T12:13:14.015Z | T1 | Invalid Date |
+| | | 2019-04-01T12:13:14.015Z | T2 | Invalid Date |
+| Quarter (stand-alone) | qo | 2019-01-01T12:13:14.015Z | 1er | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2ème | 2019-04-01T00:00:00.000Z |
+| | qqq | 2019-01-01T12:13:14.015Z | 1er trim. | Invalid Date |
+| | | 2019-04-01T12:13:14.015Z | 2ème trim. | Invalid Date |
+| | qqqq | 2019-01-01T12:13:14.015Z | 1er trimestre | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2ème trimestre | 2019-04-01T00:00:00.000Z |
+| Month (formatting) | Mo | 2019-02-11T12:13:14.015Z | 2ème | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7ème | 2019-07-01T00:00:00.000Z |
+| | MMM | 2019-02-11T12:13:14.015Z | févr. | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | juil. | 2019-07-01T00:00:00.000Z |
+| | MMMM | 2019-02-11T12:13:14.015Z | février | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | juillet | 2019-07-01T00:00:00.000Z |
+| | MMMMM | 2019-02-11T12:13:14.015Z | F | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | J | 2019-01-01T00:00:00.000Z |
+| Month (stand-alone) | Lo | 2019-02-11T12:13:14.015Z | 2ème | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7ème | 2019-07-01T00:00:00.000Z |
+| | LLL | 2019-02-11T12:13:14.015Z | févr. | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | juil. | 2019-07-01T00:00:00.000Z |
+| | LLLL | 2019-02-11T12:13:14.015Z | février | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | juillet | 2019-07-01T00:00:00.000Z |
+| | LLLLL | 2019-02-11T12:13:14.015Z | F | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | J | 2019-01-01T00:00:00.000Z |
+| Local week of year | wo | 2019-01-01T12:13:14.015Z | 1ère | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48ème | 2019-11-25T00:00:00.000Z |
+| ISO week of year | Io | 2019-01-01T12:13:14.015Z | 1ère | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48ème | 2019-11-25T00:00:00.000Z |
+| Day of month | do | 2019-02-11T12:13:14.015Z | 11ème | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-28T12:13:14.015Z | 28ème | 2019-02-28T00:00:00.000Z |
+| Day of year | Do | 2019-02-11T12:13:14.015Z | 42ème | 2019-02-11T00:00:00.000Z |
+| | | 2019-12-31T12:13:14.015Z | 365ème | 2019-12-31T00:00:00.000Z |
+| Day of week (formatting) | E | 2019-02-11T12:13:14.015Z | lun. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ven. | 2019-02-15T00:00:00.000Z |
+| | EE | 2019-02-11T12:13:14.015Z | lun. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ven. | 2019-02-15T00:00:00.000Z |
+| | EEE | 2019-02-11T12:13:14.015Z | lun. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ven. | 2019-02-15T00:00:00.000Z |
+| | EEEE | 2019-02-11T12:13:14.015Z | lundi | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | vendredi | 2019-02-15T00:00:00.000Z |
+| | EEEEE | 2019-02-11T12:13:14.015Z | L | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | V | 2019-02-15T00:00:00.000Z |
+| | EEEEEE | 2019-02-11T12:13:14.015Z | lu | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ve | 2019-02-15T00:00:00.000Z |
+| ISO day of week (formatting) | io | 2019-02-11T12:13:14.015Z | 1er | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5ème | 2019-02-15T00:00:00.000Z |
+| | iii | 2019-02-11T12:13:14.015Z | lun. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ven. | 2019-02-15T00:00:00.000Z |
+| | iiii | 2019-02-11T12:13:14.015Z | lundi | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | vendredi | 2019-02-15T00:00:00.000Z |
+| | iiiii | 2019-02-11T12:13:14.015Z | L | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | V | 2019-02-15T00:00:00.000Z |
+| | iiiiii | 2019-02-11T12:13:14.015Z | lu | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ve | 2019-02-15T00:00:00.000Z |
+| Local day of week (formatting) | eo | 2019-02-11T12:13:14.015Z | 1er | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5ème | 2019-02-15T00:00:00.000Z |
+| | eee | 2019-02-11T12:13:14.015Z | lun. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ven. | 2019-02-15T00:00:00.000Z |
+| | eeee | 2019-02-11T12:13:14.015Z | lundi | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | vendredi | 2019-02-15T00:00:00.000Z |
+| | eeeee | 2019-02-11T12:13:14.015Z | L | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | V | 2019-02-15T00:00:00.000Z |
+| | eeeeee | 2019-02-11T12:13:14.015Z | lu | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ve | 2019-02-15T00:00:00.000Z |
+| Local day of week (stand-alone) | co | 2019-02-11T12:13:14.015Z | 1er | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5ème | 2019-02-15T00:00:00.000Z |
+| | ccc | 2019-02-11T12:13:14.015Z | lun. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ven. | 2019-02-15T00:00:00.000Z |
+| | cccc | 2019-02-11T12:13:14.015Z | lundi | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | vendredi | 2019-02-15T00:00:00.000Z |
+| | ccccc | 2019-02-11T12:13:14.015Z | L | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | V | 2019-02-15T00:00:00.000Z |
+| | cccccc | 2019-02-11T12:13:14.015Z | lu | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ve | 2019-02-15T00:00:00.000Z |
+| AM, PM | a | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | aa | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | aaa | 2019-02-11T11:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | aaaa | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | aaaaa | 2019-02-11T11:13:14.015Z | AM | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | PM | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | PM | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | AM | Invalid Date |
+| AM, PM, noon, midnight | b | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | bb | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | bbb | 2019-02-11T11:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | bbbb | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | bbbbb | 2019-02-11T11:13:14.015Z | AM | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | PM | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | PM | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | AM | Invalid Date |
+| Flexible day period | B | 2019-02-11T11:13:14.015Z | matin | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | après-midi | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | soir | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | matin | Invalid Date |
+| | BB | 2019-02-11T11:13:14.015Z | matin | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | après-midi | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | soir | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | matin | Invalid Date |
+| | BBB | 2019-02-11T11:13:14.015Z | matin | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | après-midi | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | soir | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | matin | Invalid Date |
+| | BBBB | 2019-02-11T11:13:14.015Z | du matin | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | de l’après-midi | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | du soir | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | du matin | 2019-02-11T04:00:00.000Z |
+| | BBBBB | 2019-02-11T11:13:14.015Z | mat. | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | ap.m. | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | soir | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | mat. | 2019-02-11T04:00:00.000Z |
+| Hour [1-12] | ho | 2019-02-11T11:13:14.015Z | 11ème | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11ème | 2019-02-11T23:00:00.000Z |
+| Hour [0-23] | Ho | 2019-02-11T11:13:14.015Z | 11ème | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23ème | 2019-02-11T23:00:00.000Z |
+| Hour [0-11] | Ko | 2019-02-11T11:13:14.015Z | 11ème | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11ème | 2019-02-11T23:00:00.000Z |
+| Hour [1-24] | ko | 2019-02-11T11:13:14.015Z | 11ème | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23ème | 2019-02-11T23:00:00.000Z |
+| Minute | mo | 2019-01-01T12:01:14.015Z | 1er | 2019-01-01T12:01:00.000Z |
+| | | 2019-04-01T12:55:14.015Z | 55ème | 2019-04-01T12:55:00.000Z |
+| Second | so | 2019-01-01T12:13:01.015Z | 1er | 2019-01-01T12:13:01.000Z |
+| | | 2019-04-01T12:13:55.015Z | 55ème | 2019-04-01T12:13:55.000Z |
+| Long localized date | P | 1987-02-11T12:13:14.015Z | 11.02.1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29.05.1453 | 1453-05-29T00:00:00.000Z |
+| | PP | 1987-02-11T12:13:14.015Z | 11 févr. 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 mai 1453 | 1453-05-29T00:00:00.000Z |
+| | PPP | 1987-02-11T12:13:14.015Z | 11 février 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 mai 1453 | 1453-05-29T00:00:00.000Z |
+| | PPPP | 1987-02-11T12:13:14.015Z | mercredi 11 février 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | dimanche 29 mai 1453 | 1453-05-29T00:00:00.000Z |
+| Long localized time | p | 1987-02-11T12:13:14.015Z | 12:13 | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 23:59 | 1453-05-29T23:59:00.000Z |
+| | pp | 1987-02-11T12:13:14.015Z | 12:13:14 | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 | 1453-05-29T23:59:59.000Z |
+| | ppp | 1987-02-11T12:13:14.015Z | 12:13:14 GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 GMT+0 | Errored |
+| | pppp | 1987-02-11T12:13:14.015Z | 12:13:14 GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 GMT+00:00 | Errored |
+| Combination of date and time | Pp | 1987-02-11T12:13:14.015Z | 11.02.1987, 12:13 | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29.05.1453, 23:59 | 1453-05-29T23:59:00.000Z |
+| | PPpp | 1987-02-11T12:13:14.015Z | 11 févr. 1987, 12:13:14 | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 mai 1453, 23:59:59 | 1453-05-29T23:59:59.000Z |
+| | PPPppp | 1987-02-11T12:13:14.015Z | 11 février 1987 à 12:13:14 GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 29 mai 1453 à 23:59:59 GMT+0 | Errored |
+| | PPPPpppp | 1987-02-11T12:13:14.015Z | mercredi 11 février 1987 à 12:13:14 GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | dimanche 29 mai 1453 à 23:59:59 GMT+00:00 | Errored |
+
+## `formatDistance`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `includeSeconds: true` | `addSuffix: true` |
+| ------------------------ | ------------------ | ---------------------- | ------------------------- |
+| 2006-01-01T00:00:00.000Z | environ 6 ans | environ 6 ans | dans environ 6 ans |
+| 2005-01-01T00:00:00.000Z | environ 5 ans | environ 5 ans | dans environ 5 ans |
+| 2004-01-01T00:00:00.000Z | environ 4 ans | environ 4 ans | dans environ 4 ans |
+| 2003-01-01T00:00:00.000Z | environ 3 ans | environ 3 ans | dans environ 3 ans |
+| 2002-01-01T00:00:00.000Z | environ 2 ans | environ 2 ans | dans environ 2 ans |
+| 2001-06-01T00:00:00.000Z | plus d’un an | plus d’un an | dans plus d’un an |
+| 2001-02-01T00:00:00.000Z | environ 1 an | environ 1 an | dans environ 1 an |
+| 2001-01-01T00:00:00.000Z | environ 1 an | environ 1 an | dans environ 1 an |
+| 2000-06-01T00:00:00.000Z | 5 mois | 5 mois | dans 5 mois |
+| 2000-03-01T00:00:00.000Z | 2 mois | 2 mois | dans 2 mois |
+| 2000-02-01T00:00:00.000Z | environ 1 mois | environ 1 mois | dans environ 1 mois |
+| 2000-01-15T00:00:00.000Z | 14 jours | 14 jours | dans 14 jours |
+| 2000-01-02T00:00:00.000Z | 1 jour | 1 jour | dans 1 jour |
+| 2000-01-01T06:00:00.000Z | environ 6 heures | environ 6 heures | dans environ 6 heures |
+| 2000-01-01T01:00:00.000Z | environ 1 heure | environ 1 heure | dans environ 1 heure |
+| 2000-01-01T00:45:00.000Z | environ 1 heure | environ 1 heure | dans environ 1 heure |
+| 2000-01-01T00:30:00.000Z | 30 minutes | 30 minutes | dans 30 minutes |
+| 2000-01-01T00:15:00.000Z | 15 minutes | 15 minutes | dans 15 minutes |
+| 2000-01-01T00:01:00.000Z | 1 minute | 1 minute | dans 1 minute |
+| 2000-01-01T00:00:25.000Z | moins d’une minute | 30 secondes | dans moins d’une minute |
+| 2000-01-01T00:00:15.000Z | moins d’une minute | moins de 20 secondes | dans moins d’une minute |
+| 2000-01-01T00:00:05.000Z | moins d’une minute | moins de 10 secondes | dans moins d’une minute |
+| 2000-01-01T00:00:00.000Z | moins d’une minute | moins de 5 secondes | il y a moins d’une minute |
+| 1999-12-31T23:59:55.000Z | moins d’une minute | moins de 10 secondes | il y a moins d’une minute |
+| 1999-12-31T23:59:45.000Z | moins d’une minute | moins de 20 secondes | il y a moins d’une minute |
+| 1999-12-31T23:59:35.000Z | moins d’une minute | 30 secondes | il y a moins d’une minute |
+| 1999-12-31T23:59:00.000Z | 1 minute | 1 minute | il y a 1 minute |
+| 1999-12-31T23:45:00.000Z | 15 minutes | 15 minutes | il y a 15 minutes |
+| 1999-12-31T23:30:00.000Z | 30 minutes | 30 minutes | il y a 30 minutes |
+| 1999-12-31T23:15:00.000Z | environ 1 heure | environ 1 heure | il y a environ 1 heure |
+| 1999-12-31T23:00:00.000Z | environ 1 heure | environ 1 heure | il y a environ 1 heure |
+| 1999-12-31T18:00:00.000Z | environ 6 heures | environ 6 heures | il y a environ 6 heures |
+| 1999-12-30T00:00:00.000Z | 2 jours | 2 jours | il y a 2 jours |
+| 1999-12-15T00:00:00.000Z | 17 jours | 17 jours | il y a 17 jours |
+| 1999-12-01T00:00:00.000Z | environ 1 mois | environ 1 mois | il y a environ 1 mois |
+| 1999-11-01T00:00:00.000Z | 2 mois | 2 mois | il y a 2 mois |
+| 1999-06-01T00:00:00.000Z | 7 mois | 7 mois | il y a 7 mois |
+| 1999-01-01T00:00:00.000Z | environ 1 an | environ 1 an | il y a environ 1 an |
+| 1998-12-01T00:00:00.000Z | environ 1 an | environ 1 an | il y a environ 1 an |
+| 1998-06-01T00:00:00.000Z | plus d’un an | plus d’un an | il y a plus d’un an |
+| 1998-01-01T00:00:00.000Z | environ 2 ans | environ 2 ans | il y a environ 2 ans |
+| 1997-01-01T00:00:00.000Z | environ 3 ans | environ 3 ans | il y a environ 3 ans |
+| 1996-01-01T00:00:00.000Z | environ 4 ans | environ 4 ans | il y a environ 4 ans |
+| 1995-01-01T00:00:00.000Z | environ 5 ans | environ 5 ans | il y a environ 5 ans |
+| 1994-01-01T00:00:00.000Z | environ 6 ans | environ 6 ans | il y a environ 6 ans |
+
+## `formatDistanceStrict`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `addSuffix: true` | With forced unit (i.e. `hour`) |
+| ------------------------ | ----------- | ------------------ | ------------------------------ |
+| 2006-01-01T00:00:00.000Z | 6 ans | dans 6 ans | 52608 heures |
+| 2005-01-01T00:00:00.000Z | 5 ans | dans 5 ans | 43848 heures |
+| 2004-01-01T00:00:00.000Z | 4 ans | dans 4 ans | 35064 heures |
+| 2003-01-01T00:00:00.000Z | 3 ans | dans 3 ans | 26304 heures |
+| 2002-01-01T00:00:00.000Z | 2 ans | dans 2 ans | 17544 heures |
+| 2001-06-01T00:00:00.000Z | 1 an | dans 1 an | 12408 heures |
+| 2001-02-01T00:00:00.000Z | 1 an | dans 1 an | 9528 heures |
+| 2001-01-01T00:00:00.000Z | 1 an | dans 1 an | 8784 heures |
+| 2000-06-01T00:00:00.000Z | 5 mois | dans 5 mois | 3648 heures |
+| 2000-03-01T00:00:00.000Z | 2 mois | dans 2 mois | 1440 heures |
+| 2000-02-01T00:00:00.000Z | 1 mois | dans 1 mois | 744 heures |
+| 2000-01-15T00:00:00.000Z | 14 jours | dans 14 jours | 336 heures |
+| 2000-01-02T00:00:00.000Z | 1 jour | dans 1 jour | 24 heures |
+| 2000-01-01T06:00:00.000Z | 6 heures | dans 6 heures | 6 heures |
+| 2000-01-01T01:00:00.000Z | 1 heure | dans 1 heure | 1 heure |
+| 2000-01-01T00:45:00.000Z | 45 minutes | dans 45 minutes | 1 heure |
+| 2000-01-01T00:30:00.000Z | 30 minutes | dans 30 minutes | 1 heure |
+| 2000-01-01T00:15:00.000Z | 15 minutes | dans 15 minutes | 0 heures |
+| 2000-01-01T00:01:00.000Z | 1 minute | dans 1 minute | 0 heures |
+| 2000-01-01T00:00:25.000Z | 25 secondes | dans 25 secondes | 0 heures |
+| 2000-01-01T00:00:15.000Z | 15 secondes | dans 15 secondes | 0 heures |
+| 2000-01-01T00:00:05.000Z | 5 secondes | dans 5 secondes | 0 heures |
+| 2000-01-01T00:00:00.000Z | 0 secondes | il y a 0 secondes | 0 heures |
+| 1999-12-31T23:59:55.000Z | 5 secondes | il y a 5 secondes | 0 heures |
+| 1999-12-31T23:59:45.000Z | 15 secondes | il y a 15 secondes | 0 heures |
+| 1999-12-31T23:59:35.000Z | 25 secondes | il y a 25 secondes | 0 heures |
+| 1999-12-31T23:59:00.000Z | 1 minute | il y a 1 minute | 0 heures |
+| 1999-12-31T23:45:00.000Z | 15 minutes | il y a 15 minutes | 0 heures |
+| 1999-12-31T23:30:00.000Z | 30 minutes | il y a 30 minutes | 1 heure |
+| 1999-12-31T23:15:00.000Z | 45 minutes | il y a 45 minutes | 1 heure |
+| 1999-12-31T23:00:00.000Z | 1 heure | il y a 1 heure | 1 heure |
+| 1999-12-31T18:00:00.000Z | 6 heures | il y a 6 heures | 6 heures |
+| 1999-12-30T00:00:00.000Z | 2 jours | il y a 2 jours | 48 heures |
+| 1999-12-15T00:00:00.000Z | 17 jours | il y a 17 jours | 408 heures |
+| 1999-12-01T00:00:00.000Z | 1 mois | il y a 1 mois | 744 heures |
+| 1999-11-01T00:00:00.000Z | 2 mois | il y a 2 mois | 1464 heures |
+| 1999-06-01T00:00:00.000Z | 7 mois | il y a 7 mois | 5136 heures |
+| 1999-01-01T00:00:00.000Z | 1 an | il y a 1 an | 8760 heures |
+| 1998-12-01T00:00:00.000Z | 1 an | il y a 1 an | 9504 heures |
+| 1998-06-01T00:00:00.000Z | 2 ans | il y a 2 ans | 13896 heures |
+| 1998-01-01T00:00:00.000Z | 2 ans | il y a 2 ans | 17520 heures |
+| 1997-01-01T00:00:00.000Z | 3 ans | il y a 3 ans | 26280 heures |
+| 1996-01-01T00:00:00.000Z | 4 ans | il y a 4 ans | 35064 heures |
+| 1995-01-01T00:00:00.000Z | 5 ans | il y a 5 ans | 43824 heures |
+| 1994-01-01T00:00:00.000Z | 6 ans | il y a 6 ans | 52584 heures |
+
+## `formatRelative`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result |
+| ------------------------ | ------------------------------------- |
+| 2000-01-10T00:00:00.000Z | 10.01.2000 |
+| 2000-01-05T00:00:00.000Z | mercredi la semaine prochaine à 00:00 |
+| 2000-01-02T00:00:00.000Z | demain à 00:00 |
+| 2000-01-01T00:00:00.000Z | aujourd’hui à 00:00 |
+| 1999-12-31T00:00:00.000Z | hier à 00:00 |
+| 1999-12-27T00:00:00.000Z | lundi la semaine dernière à 00:00 |
+| 1999-12-21T00:00:00.000Z | 21.12.1999 |
diff --git a/date-fns/src/locale/fr/_lib/formatDistance/index.js b/date-fns/src/locale/fr/_lib/formatDistance/index.js
new file mode 100644
index 0000000..e5bbf4f
--- /dev/null
+++ b/date-fns/src/locale/fr/_lib/formatDistance/index.js
@@ -0,0 +1,101 @@
+var formatDistanceLocale = {
+ lessThanXSeconds: {
+ one: 'moins d’une seconde',
+ other: 'moins de {{count}} secondes'
+ },
+
+ xSeconds: {
+ one: '1 seconde',
+ other: '{{count}} secondes'
+ },
+
+ halfAMinute: '30 secondes',
+
+ lessThanXMinutes: {
+ one: 'moins d’une minute',
+ other: 'moins de {{count}} minutes'
+ },
+
+ xMinutes: {
+ one: '1 minute',
+ other: '{{count}} minutes'
+ },
+
+ aboutXHours: {
+ one: 'environ 1 heure',
+ other: 'environ {{count}} heures'
+ },
+
+ xHours: {
+ one: '1 heure',
+ other: '{{count}} heures'
+ },
+
+ xDays: {
+ one: '1 jour',
+ other: '{{count}} jours'
+ },
+
+ aboutXWeeks: {
+ one: 'environ 1 semaine',
+ other: 'environ {{count}} semaines'
+ },
+
+ xWeeks: {
+ one: '1 semaine',
+ other: '{{count}} semaines'
+ },
+
+ aboutXMonths: {
+ one: 'environ 1 mois',
+ other: 'environ {{count}} mois'
+ },
+
+ xMonths: {
+ one: '1 mois',
+ other: '{{count}} mois'
+ },
+
+ aboutXYears: {
+ one: 'environ 1 an',
+ other: 'environ {{count}} ans'
+ },
+
+ xYears: {
+ one: '1 an',
+ other: '{{count}} ans'
+ },
+
+ overXYears: {
+ one: 'plus d’un an',
+ other: 'plus de {{count}} ans'
+ },
+
+ almostXYears: {
+ one: 'presqu’un an',
+ other: 'presque {{count}} ans'
+ }
+}
+
+export default function formatDistance(token, count, options) {
+ options = options || {}
+
+ var result
+ if (typeof formatDistanceLocale[token] === 'string') {
+ result = formatDistanceLocale[token]
+ } else if (count === 1) {
+ result = formatDistanceLocale[token].one
+ } else {
+ result = formatDistanceLocale[token].other.replace('{{count}}', count)
+ }
+
+ if (options.addSuffix) {
+ if (options.comparison > 0) {
+ return 'dans ' + result
+ } else {
+ return 'il y a ' + result
+ }
+ }
+
+ return result
+}
diff --git a/date-fns/src/locale/fr/_lib/formatLong/index.js b/date-fns/src/locale/fr/_lib/formatLong/index.js
new file mode 100644
index 0000000..509d10a
--- /dev/null
+++ b/date-fns/src/locale/fr/_lib/formatLong/index.js
@@ -0,0 +1,41 @@
+import buildFormatLongFn from '../../../_lib/buildFormatLongFn/index'
+
+var dateFormats = {
+ full: 'EEEE d MMMM y',
+ long: 'd MMMM y',
+ medium: 'd MMM y',
+ short: 'dd/MM/y'
+}
+
+var timeFormats = {
+ full: 'HH:mm:ss zzzz',
+ long: 'HH:mm:ss z',
+ medium: 'HH:mm:ss',
+ short: 'HH:mm'
+}
+
+var dateTimeFormats = {
+ full: "{{date}} 'à' {{time}}",
+ long: "{{date}} 'à' {{time}}",
+ medium: '{{date}}, {{time}}',
+ short: '{{date}}, {{time}}'
+}
+
+var formatLong = {
+ date: buildFormatLongFn({
+ formats: dateFormats,
+ defaultWidth: 'full'
+ }),
+
+ time: buildFormatLongFn({
+ formats: timeFormats,
+ defaultWidth: 'full'
+ }),
+
+ dateTime: buildFormatLongFn({
+ formats: dateTimeFormats,
+ defaultWidth: 'full'
+ })
+}
+
+export default formatLong
diff --git a/date-fns/src/locale/fr/_lib/formatRelative/index.js b/date-fns/src/locale/fr/_lib/formatRelative/index.js
new file mode 100644
index 0000000..c4905f3
--- /dev/null
+++ b/date-fns/src/locale/fr/_lib/formatRelative/index.js
@@ -0,0 +1,12 @@
+var formatRelativeLocale = {
+ lastWeek: "eeee 'dernier à' p",
+ yesterday: "'hier à' p",
+ today: "'aujourd’hui à' p",
+ tomorrow: "'demain à' p'",
+ nextWeek: "eeee 'prochain à' p",
+ other: 'P'
+}
+
+export default function formatRelative(token, _date, _baseDate, _options) {
+ return formatRelativeLocale[token]
+}
diff --git a/date-fns/src/locale/fr/_lib/formatters/index.js b/date-fns/src/locale/fr/_lib/formatters/index.js
new file mode 100644
index 0000000..b270774
--- /dev/null
+++ b/date-fns/src/locale/fr/_lib/formatters/index.js
@@ -0,0 +1,17 @@
+var formatters = {}
+
+// Special case for day of month ordinals in long date format context:
+// 1er mars, 2 mars, 3 mars, …
+// See https://github.com/date-fns/date-fns/issues/437
+var monthsTokens = ['MMM', 'MMMM']
+monthsTokens.forEach(function (monthToken) {
+ formatters['Do ' + monthToken] = function (date, options) {
+ var commonFormatters = options.formatters
+ var dayOfMonthToken = date.getUTCDate() === 1 ? 'Do' : 'D'
+ var dayOfMonthFormatter = commonFormatters[dayOfMonthToken]
+ var monthFormatter = commonFormatters[monthToken]
+ return dayOfMonthFormatter(date, options) + ' ' + monthFormatter(date, options)
+ }
+})
+
+export default formatters
diff --git a/date-fns/src/locale/fr/_lib/localize/index.js b/date-fns/src/locale/fr/_lib/localize/index.js
new file mode 100644
index 0000000..01d52b3
--- /dev/null
+++ b/date-fns/src/locale/fr/_lib/localize/index.js
@@ -0,0 +1,155 @@
+import buildLocalizeFn from '../../../_lib/buildLocalizeFn/index'
+
+var eraValues = {
+ narrow: ['av. J.-C', 'ap. J.-C'],
+ abbreviated: ['av. J.-C', 'ap. J.-C'],
+ wide: ['avant Jésus-Christ', 'après Jésus-Christ']
+}
+
+var quarterValues = {
+ narrow: ['T1', 'T2', 'T3', 'T4'],
+ abbreviated: ['1er trim.', '2ème trim.', '3ème trim.', '4ème trim.'],
+ wide: ['1er trimestre', '2ème trimestre', '3ème trimestre', '4ème trimestre']
+}
+
+var monthValues = {
+ narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],
+ abbreviated: [
+ 'janv.',
+ 'févr.',
+ 'mars',
+ 'avr.',
+ 'mai',
+ 'juin',
+ 'juil.',
+ 'août',
+ 'sept.',
+ 'oct.',
+ 'nov.',
+ 'déc.'
+ ],
+ wide: [
+ 'janvier',
+ 'février',
+ 'mars',
+ 'avril',
+ 'mai',
+ 'juin',
+ 'juillet',
+ 'août',
+ 'septembre',
+ 'octobre',
+ 'novembre',
+ 'décembre'
+ ]
+}
+
+var dayValues = {
+ narrow: ['D', 'L', 'M', 'M', 'J', 'V', 'S'],
+ short: ['di', 'lu', 'ma', 'me', 'je', 've', 'sa'],
+ abbreviated: ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'],
+ wide: [
+ 'dimanche',
+ 'lundi',
+ 'mardi',
+ 'mercredi',
+ 'jeudi',
+ 'vendredi',
+ 'samedi'
+ ]
+}
+
+var dayPeriodValues = {
+ narrow: {
+ am: 'AM',
+ pm: 'PM',
+ midnight: 'minuit',
+ noon: 'midi',
+ morning: 'mat.',
+ afternoon: 'ap.m.',
+ evening: 'soir',
+ night: 'mat.'
+ },
+ abbreviated: {
+ am: 'AM',
+ pm: 'PM',
+ midnight: 'minuit',
+ noon: 'midi',
+ morning: 'matin',
+ afternoon: 'après-midi',
+ evening: 'soir',
+ night: 'matin'
+ },
+ wide: {
+ am: 'AM',
+ pm: 'PM',
+ midnight: 'minuit',
+ noon: 'midi',
+ morning: 'du matin',
+ afternoon: 'de l’après-midi',
+ evening: 'du soir',
+ night: 'du matin'
+ }
+}
+
+function ordinalNumber(dirtyNumber, dirtyOptions) {
+ var number = Number(dirtyNumber)
+
+ var options = dirtyOptions || {}
+ var unit = String(options.unit)
+ var suffix
+
+ if (number === 0) {
+ return number
+ }
+
+ if (unit === 'year' || unit === 'hour' || unit === 'week') {
+ if (number === 1) {
+ suffix = 'ère'
+ } else {
+ suffix = 'ème'
+ }
+ } else {
+ if (number === 1) {
+ suffix = 'er'
+ } else {
+ suffix = 'ème'
+ }
+ }
+
+ return number + suffix
+}
+
+var localize = {
+ ordinalNumber: ordinalNumber,
+
+ era: buildLocalizeFn({
+ values: eraValues,
+ defaultWidth: 'wide'
+ }),
+
+ quarter: buildLocalizeFn({
+ values: quarterValues,
+ defaultWidth: 'wide',
+ argumentCallback: function(quarter) {
+ return Number(quarter) - 1
+ }
+ }),
+
+ month: buildLocalizeFn({
+ values: monthValues,
+ defaultWidth: 'wide'
+ }),
+
+ day: buildLocalizeFn({
+ values: dayValues,
+ defaultWidth: 'wide'
+ }),
+
+ dayPeriod: buildLocalizeFn({
+ values: dayPeriodValues,
+ defaultWidth: 'wide'
+ })
+}
+
+export default localize
diff --git a/date-fns/src/locale/fr/_lib/match/index.js b/date-fns/src/locale/fr/_lib/match/index.js
new file mode 100644
index 0000000..e5c36f8
--- /dev/null
+++ b/date-fns/src/locale/fr/_lib/match/index.js
@@ -0,0 +1,137 @@
+import buildMatchPatternFn from '../../../_lib/buildMatchPatternFn/index'
+import buildMatchFn from '../../../_lib/buildMatchFn/index'
+
+var matchOrdinalNumberPattern = /^(\d+)(ième|ère|ème|er|e)?/i
+var parseOrdinalNumberPattern = /\d+/i
+
+var matchEraPatterns = {
+ narrow: /^(av\.J\.C|ap\.J\.C|ap\.J\.-C)/i,
+ abbreviated: /^(av\.J\.-C|av\.J-C|apr\.J\.-C|apr\.J-C|ap\.J-C)/i,
+ wide: /^(avant Jésus-Christ|après Jésus-Christ)/i
+}
+var parseEraPatterns = {
+ any: [/^av/i, /^ap/i]
+}
+
+var matchQuarterPatterns = {
+ narrow: /^[1234]/i,
+ abbreviated: /^t[1234]/i,
+ wide: /^[1234](er|ème|e)? trimestre/i
+}
+var parseQuarterPatterns = {
+ any: [/1/i, /2/i, /3/i, /4/i]
+}
+
+var matchMonthPatterns = {
+ narrow: /^[jfmasond]/i,
+ abbreviated: /^(janv|févr|mars|avr|mai|juin|juill|juil|août|sept|oct|nov|déc)\.?/i,
+ wide: /^(janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i
+}
+var parseMonthPatterns = {
+ narrow: [
+ /^j/i,
+ /^f/i,
+ /^m/i,
+ /^a/i,
+ /^m/i,
+ /^j/i,
+ /^j/i,
+ /^a/i,
+ /^s/i,
+ /^o/i,
+ /^n/i,
+ /^d/i
+ ],
+ any: [
+ /^ja/i,
+ /^f/i,
+ /^mar/i,
+ /^av/i,
+ /^ma/i,
+ /^juin/i,
+ /^juil/i,
+ /^ao/i,
+ /^s/i,
+ /^o/i,
+ /^n/i,
+ /^d/i
+ ]
+}
+
+var matchDayPatterns = {
+ narrow: /^[lmjvsd]/i,
+ short: /^(di|lu|ma|me|je|ve|sa)/i,
+ abbreviated: /^(dim|lun|mar|mer|jeu|ven|sam)\.?/i,
+ wide: /^(dimanche|lundi|mardi|mercredi|jeudi|vendredi|samedi)/i
+}
+var parseDayPatterns = {
+ narrow: [/^d/i, /^l/i, /^m/i, /^m/i, /^j/i, /^v/i, /^s/i],
+ any: [/^di/i, /^lu/i, /^ma/i, /^me/i, /^je/i, /^ve/i, /^sa/i]
+}
+
+var matchDayPeriodPatterns = {
+ narrow: /^(a|p|minuit|midi|mat\.?|ap\.?m\.?|soir|nuit)/i,
+ any: /^([ap]\.?\s?m\.?|du matin|de l'après[-\s]midi|du soir|de la nuit)/i
+}
+var parseDayPeriodPatterns = {
+ any: {
+ am: /^a/i,
+ pm: /^p/i,
+ midnight: /^min/i,
+ noon: /^mid/i,
+ morning: /mat/i,
+ afternoon: /ap/i,
+ evening: /soir/i,
+ night: /nuit/i
+ }
+}
+
+var match = {
+ ordinalNumber: buildMatchPatternFn({
+ matchPattern: matchOrdinalNumberPattern,
+ parsePattern: parseOrdinalNumberPattern,
+ valueCallback: function(value) {
+ return parseInt(value, 10)
+ }
+ }),
+
+ era: buildMatchFn({
+ matchPatterns: matchEraPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseEraPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ quarter: buildMatchFn({
+ matchPatterns: matchQuarterPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseQuarterPatterns,
+ defaultParseWidth: 'any',
+ valueCallback: function(index) {
+ return index + 1
+ }
+ }),
+
+ month: buildMatchFn({
+ matchPatterns: matchMonthPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseMonthPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ day: buildMatchFn({
+ matchPatterns: matchDayPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseDayPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ dayPeriod: buildMatchFn({
+ matchPatterns: matchDayPeriodPatterns,
+ defaultMatchWidth: 'any',
+ parsePatterns: parseDayPeriodPatterns,
+ defaultParseWidth: 'any'
+ })
+}
+
+export default match
diff --git a/date-fns/src/locale/fr/index.d.ts b/date-fns/src/locale/fr/index.d.ts
new file mode 100644
index 0000000..5dc7fe0
--- /dev/null
+++ b/date-fns/src/locale/fr/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { fr } from 'date-fns/locale'
+export default fr
diff --git a/date-fns/src/locale/fr/index.js b/date-fns/src/locale/fr/index.js
new file mode 100644
index 0000000..34f9438
--- /dev/null
+++ b/date-fns/src/locale/fr/index.js
@@ -0,0 +1,30 @@
+import formatDistance from './_lib/formatDistance/index'
+import formatLong from './_lib/formatLong/index'
+import formatRelative from './_lib/formatRelative/index'
+import localize from './_lib/localize/index'
+import match from './_lib/match/index'
+
+/**
+ * @type {Locale}
+ * @category Locales
+ * @summary French locale.
+ * @language French
+ * @iso-639-2 fra
+ * @author Jean Dupouy [@izeau]{@link https://github.com/izeau}
+ * @author François B [@fbonzon]{@link https://github.com/fbonzon}
+ */
+
+var locale = {
+ code: 'fr',
+ formatDistance: formatDistance,
+ formatLong: formatLong,
+ formatRelative: formatRelative,
+ localize: localize,
+ match: match,
+ options: {
+ weekStartsOn: 1 /* Monday */,
+ firstWeekContainsDate: 4,
+ },
+}
+
+export default locale
diff --git a/date-fns/src/locale/fr/index.js.flow b/date-fns/src/locale/fr/index.js.flow
new file mode 100644
index 0000000..b9dfe66
--- /dev/null
+++ b/date-fns/src/locale/fr/index.js.flow
@@ -0,0 +1,35 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+declare module.exports: Locale
diff --git a/date-fns/src/locale/fr/snapshot.md b/date-fns/src/locale/fr/snapshot.md
new file mode 100644
index 0000000..1edb19f
--- /dev/null
+++ b/date-fns/src/locale/fr/snapshot.md
@@ -0,0 +1,304 @@
+# French (fr) locale
+
+## `format` and `parse`
+
+| Title | Token string | Date | `format` result | `parse` result |
+| ------------------------------- | ------------ | ------------------------ | --------------------------------------------- | ------------------------ |
+| Calendar year | yo | 1987-02-11T12:13:14.015Z | 1987ème | 1987-01-01T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 5ème | 0005-01-01T00:00:00.000Z |
+| Local week-numbering year | Yo | 1987-02-11T12:13:14.015Z | 1987ème | 1986-12-29T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 4ème | 0003-12-29T00:00:00.000Z |
+| Quarter (formatting) | Qo | 2019-01-01T12:13:14.015Z | 1er | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2ème | 2019-04-01T00:00:00.000Z |
+| | QQQ | 2019-01-01T12:13:14.015Z | 1er trim. | Invalid Date |
+| | | 2019-04-01T12:13:14.015Z | 2ème trim. | Invalid Date |
+| | QQQQ | 2019-01-01T12:13:14.015Z | 1er trimestre | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2ème trimestre | 2019-04-01T00:00:00.000Z |
+| | QQQQQ | 2019-01-01T12:13:14.015Z | T1 | Invalid Date |
+| | | 2019-04-01T12:13:14.015Z | T2 | Invalid Date |
+| Quarter (stand-alone) | qo | 2019-01-01T12:13:14.015Z | 1er | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2ème | 2019-04-01T00:00:00.000Z |
+| | qqq | 2019-01-01T12:13:14.015Z | 1er trim. | Invalid Date |
+| | | 2019-04-01T12:13:14.015Z | 2ème trim. | Invalid Date |
+| | qqqq | 2019-01-01T12:13:14.015Z | 1er trimestre | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2ème trimestre | 2019-04-01T00:00:00.000Z |
+| Month (formatting) | Mo | 2019-02-11T12:13:14.015Z | 2ème | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7ème | 2019-07-01T00:00:00.000Z |
+| | MMM | 2019-02-11T12:13:14.015Z | févr. | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | juil. | 2019-07-01T00:00:00.000Z |
+| | MMMM | 2019-02-11T12:13:14.015Z | février | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | juillet | 2019-07-01T00:00:00.000Z |
+| | MMMMM | 2019-02-11T12:13:14.015Z | F | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | J | 2019-01-01T00:00:00.000Z |
+| Month (stand-alone) | Lo | 2019-02-11T12:13:14.015Z | 2ème | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7ème | 2019-07-01T00:00:00.000Z |
+| | LLL | 2019-02-11T12:13:14.015Z | févr. | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | juil. | 2019-07-01T00:00:00.000Z |
+| | LLLL | 2019-02-11T12:13:14.015Z | février | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | juillet | 2019-07-01T00:00:00.000Z |
+| | LLLLL | 2019-02-11T12:13:14.015Z | F | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | J | 2019-01-01T00:00:00.000Z |
+| Local week of year | wo | 2019-01-01T12:13:14.015Z | 1ère | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48ème | 2019-11-25T00:00:00.000Z |
+| ISO week of year | Io | 2019-01-01T12:13:14.015Z | 1ère | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48ème | 2019-11-25T00:00:00.000Z |
+| Day of month | do | 2019-02-11T12:13:14.015Z | 11ème | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-28T12:13:14.015Z | 28ème | 2019-02-28T00:00:00.000Z |
+| Day of year | Do | 2019-02-11T12:13:14.015Z | 42ème | 2019-02-11T00:00:00.000Z |
+| | | 2019-12-31T12:13:14.015Z | 365ème | 2019-12-31T00:00:00.000Z |
+| Day of week (formatting) | E | 2019-02-11T12:13:14.015Z | lun. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ven. | 2019-02-15T00:00:00.000Z |
+| | EE | 2019-02-11T12:13:14.015Z | lun. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ven. | 2019-02-15T00:00:00.000Z |
+| | EEE | 2019-02-11T12:13:14.015Z | lun. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ven. | 2019-02-15T00:00:00.000Z |
+| | EEEE | 2019-02-11T12:13:14.015Z | lundi | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | vendredi | 2019-02-15T00:00:00.000Z |
+| | EEEEE | 2019-02-11T12:13:14.015Z | L | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | V | 2019-02-15T00:00:00.000Z |
+| | EEEEEE | 2019-02-11T12:13:14.015Z | lu | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ve | 2019-02-15T00:00:00.000Z |
+| ISO day of week (formatting) | io | 2019-02-11T12:13:14.015Z | 1er | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5ème | 2019-02-15T00:00:00.000Z |
+| | iii | 2019-02-11T12:13:14.015Z | lun. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ven. | 2019-02-15T00:00:00.000Z |
+| | iiii | 2019-02-11T12:13:14.015Z | lundi | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | vendredi | 2019-02-15T00:00:00.000Z |
+| | iiiii | 2019-02-11T12:13:14.015Z | L | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | V | 2019-02-15T00:00:00.000Z |
+| | iiiiii | 2019-02-11T12:13:14.015Z | lu | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ve | 2019-02-15T00:00:00.000Z |
+| Local day of week (formatting) | eo | 2019-02-11T12:13:14.015Z | 1er | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5ème | 2019-02-15T00:00:00.000Z |
+| | eee | 2019-02-11T12:13:14.015Z | lun. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ven. | 2019-02-15T00:00:00.000Z |
+| | eeee | 2019-02-11T12:13:14.015Z | lundi | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | vendredi | 2019-02-15T00:00:00.000Z |
+| | eeeee | 2019-02-11T12:13:14.015Z | L | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | V | 2019-02-15T00:00:00.000Z |
+| | eeeeee | 2019-02-11T12:13:14.015Z | lu | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ve | 2019-02-15T00:00:00.000Z |
+| Local day of week (stand-alone) | co | 2019-02-11T12:13:14.015Z | 1er | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5ème | 2019-02-15T00:00:00.000Z |
+| | ccc | 2019-02-11T12:13:14.015Z | lun. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ven. | 2019-02-15T00:00:00.000Z |
+| | cccc | 2019-02-11T12:13:14.015Z | lundi | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | vendredi | 2019-02-15T00:00:00.000Z |
+| | ccccc | 2019-02-11T12:13:14.015Z | L | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | V | 2019-02-15T00:00:00.000Z |
+| | cccccc | 2019-02-11T12:13:14.015Z | lu | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ve | 2019-02-15T00:00:00.000Z |
+| AM, PM | a | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | aa | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | aaa | 2019-02-11T11:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | aaaa | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | aaaaa | 2019-02-11T11:13:14.015Z | AM | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | PM | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | PM | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | AM | Invalid Date |
+| AM, PM, noon, midnight | b | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | bb | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | bbb | 2019-02-11T11:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | bbbb | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | bbbbb | 2019-02-11T11:13:14.015Z | AM | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | PM | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | PM | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | AM | Invalid Date |
+| Flexible day period | B | 2019-02-11T11:13:14.015Z | matin | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | après-midi | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | soir | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | matin | Invalid Date |
+| | BB | 2019-02-11T11:13:14.015Z | matin | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | après-midi | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | soir | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | matin | Invalid Date |
+| | BBB | 2019-02-11T11:13:14.015Z | matin | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | après-midi | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | soir | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | matin | Invalid Date |
+| | BBBB | 2019-02-11T11:13:14.015Z | du matin | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | de l’après-midi | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | du soir | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | du matin | 2019-02-11T04:00:00.000Z |
+| | BBBBB | 2019-02-11T11:13:14.015Z | mat. | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | ap.m. | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | soir | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | mat. | 2019-02-11T04:00:00.000Z |
+| Hour [1-12] | ho | 2019-02-11T11:13:14.015Z | 11ème | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11ème | 2019-02-11T23:00:00.000Z |
+| Hour [0-23] | Ho | 2019-02-11T11:13:14.015Z | 11ème | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23ème | 2019-02-11T23:00:00.000Z |
+| Hour [0-11] | Ko | 2019-02-11T11:13:14.015Z | 11ème | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11ème | 2019-02-11T23:00:00.000Z |
+| Hour [1-24] | ko | 2019-02-11T11:13:14.015Z | 11ème | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23ème | 2019-02-11T23:00:00.000Z |
+| Minute | mo | 2019-01-01T12:01:14.015Z | 1er | 2019-01-01T12:01:00.000Z |
+| | | 2019-04-01T12:55:14.015Z | 55ème | 2019-04-01T12:55:00.000Z |
+| Second | so | 2019-01-01T12:13:01.015Z | 1er | 2019-01-01T12:13:01.000Z |
+| | | 2019-04-01T12:13:55.015Z | 55ème | 2019-04-01T12:13:55.000Z |
+| Long localized date | P | 1987-02-11T12:13:14.015Z | 11/02/1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29/05/1453 | 1453-05-29T00:00:00.000Z |
+| | PP | 1987-02-11T12:13:14.015Z | 11 févr. 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 mai 1453 | 1453-05-29T00:00:00.000Z |
+| | PPP | 1987-02-11T12:13:14.015Z | 11 février 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 mai 1453 | 1453-05-29T00:00:00.000Z |
+| | PPPP | 1987-02-11T12:13:14.015Z | mercredi 11 février 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | dimanche 29 mai 1453 | 1453-05-29T00:00:00.000Z |
+| Long localized time | p | 1987-02-11T12:13:14.015Z | 12:13 | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 23:59 | 1453-05-29T23:59:00.000Z |
+| | pp | 1987-02-11T12:13:14.015Z | 12:13:14 | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 | 1453-05-29T23:59:59.000Z |
+| | ppp | 1987-02-11T12:13:14.015Z | 12:13:14 GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 GMT+0 | Errored |
+| | pppp | 1987-02-11T12:13:14.015Z | 12:13:14 GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 GMT+00:00 | Errored |
+| Combination of date and time | Pp | 1987-02-11T12:13:14.015Z | 11/02/1987, 12:13 | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29/05/1453, 23:59 | 1453-05-29T23:59:00.000Z |
+| | PPpp | 1987-02-11T12:13:14.015Z | 11 févr. 1987, 12:13:14 | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 mai 1453, 23:59:59 | 1453-05-29T23:59:59.000Z |
+| | PPPppp | 1987-02-11T12:13:14.015Z | 11 février 1987 à 12:13:14 GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 29 mai 1453 à 23:59:59 GMT+0 | Errored |
+| | PPPPpppp | 1987-02-11T12:13:14.015Z | mercredi 11 février 1987 à 12:13:14 GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | dimanche 29 mai 1453 à 23:59:59 GMT+00:00 | Errored |
+
+## `formatDistance`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `includeSeconds: true` | `addSuffix: true` |
+| ------------------------ | ------------------ | ---------------------- | ------------------------- |
+| 2006-01-01T00:00:00.000Z | environ 6 ans | environ 6 ans | dans environ 6 ans |
+| 2005-01-01T00:00:00.000Z | environ 5 ans | environ 5 ans | dans environ 5 ans |
+| 2004-01-01T00:00:00.000Z | environ 4 ans | environ 4 ans | dans environ 4 ans |
+| 2003-01-01T00:00:00.000Z | environ 3 ans | environ 3 ans | dans environ 3 ans |
+| 2002-01-01T00:00:00.000Z | environ 2 ans | environ 2 ans | dans environ 2 ans |
+| 2001-06-01T00:00:00.000Z | plus d’un an | plus d’un an | dans plus d’un an |
+| 2001-02-01T00:00:00.000Z | environ 1 an | environ 1 an | dans environ 1 an |
+| 2001-01-01T00:00:00.000Z | environ 1 an | environ 1 an | dans environ 1 an |
+| 2000-06-01T00:00:00.000Z | 5 mois | 5 mois | dans 5 mois |
+| 2000-03-01T00:00:00.000Z | 2 mois | 2 mois | dans 2 mois |
+| 2000-02-01T00:00:00.000Z | environ 1 mois | environ 1 mois | dans environ 1 mois |
+| 2000-01-15T00:00:00.000Z | 14 jours | 14 jours | dans 14 jours |
+| 2000-01-02T00:00:00.000Z | 1 jour | 1 jour | dans 1 jour |
+| 2000-01-01T06:00:00.000Z | environ 6 heures | environ 6 heures | dans environ 6 heures |
+| 2000-01-01T01:00:00.000Z | environ 1 heure | environ 1 heure | dans environ 1 heure |
+| 2000-01-01T00:45:00.000Z | environ 1 heure | environ 1 heure | dans environ 1 heure |
+| 2000-01-01T00:30:00.000Z | 30 minutes | 30 minutes | dans 30 minutes |
+| 2000-01-01T00:15:00.000Z | 15 minutes | 15 minutes | dans 15 minutes |
+| 2000-01-01T00:01:00.000Z | 1 minute | 1 minute | dans 1 minute |
+| 2000-01-01T00:00:25.000Z | moins d’une minute | 30 secondes | dans moins d’une minute |
+| 2000-01-01T00:00:15.000Z | moins d’une minute | moins de 20 secondes | dans moins d’une minute |
+| 2000-01-01T00:00:05.000Z | moins d’une minute | moins de 10 secondes | dans moins d’une minute |
+| 2000-01-01T00:00:00.000Z | moins d’une minute | moins de 5 secondes | il y a moins d’une minute |
+| 1999-12-31T23:59:55.000Z | moins d’une minute | moins de 10 secondes | il y a moins d’une minute |
+| 1999-12-31T23:59:45.000Z | moins d’une minute | moins de 20 secondes | il y a moins d’une minute |
+| 1999-12-31T23:59:35.000Z | moins d’une minute | 30 secondes | il y a moins d’une minute |
+| 1999-12-31T23:59:00.000Z | 1 minute | 1 minute | il y a 1 minute |
+| 1999-12-31T23:45:00.000Z | 15 minutes | 15 minutes | il y a 15 minutes |
+| 1999-12-31T23:30:00.000Z | 30 minutes | 30 minutes | il y a 30 minutes |
+| 1999-12-31T23:15:00.000Z | environ 1 heure | environ 1 heure | il y a environ 1 heure |
+| 1999-12-31T23:00:00.000Z | environ 1 heure | environ 1 heure | il y a environ 1 heure |
+| 1999-12-31T18:00:00.000Z | environ 6 heures | environ 6 heures | il y a environ 6 heures |
+| 1999-12-30T00:00:00.000Z | 2 jours | 2 jours | il y a 2 jours |
+| 1999-12-15T00:00:00.000Z | 17 jours | 17 jours | il y a 17 jours |
+| 1999-12-01T00:00:00.000Z | environ 1 mois | environ 1 mois | il y a environ 1 mois |
+| 1999-11-01T00:00:00.000Z | 2 mois | 2 mois | il y a 2 mois |
+| 1999-06-01T00:00:00.000Z | 7 mois | 7 mois | il y a 7 mois |
+| 1999-01-01T00:00:00.000Z | environ 1 an | environ 1 an | il y a environ 1 an |
+| 1998-12-01T00:00:00.000Z | environ 1 an | environ 1 an | il y a environ 1 an |
+| 1998-06-01T00:00:00.000Z | plus d’un an | plus d’un an | il y a plus d’un an |
+| 1998-01-01T00:00:00.000Z | environ 2 ans | environ 2 ans | il y a environ 2 ans |
+| 1997-01-01T00:00:00.000Z | environ 3 ans | environ 3 ans | il y a environ 3 ans |
+| 1996-01-01T00:00:00.000Z | environ 4 ans | environ 4 ans | il y a environ 4 ans |
+| 1995-01-01T00:00:00.000Z | environ 5 ans | environ 5 ans | il y a environ 5 ans |
+| 1994-01-01T00:00:00.000Z | environ 6 ans | environ 6 ans | il y a environ 6 ans |
+
+## `formatDistanceStrict`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `addSuffix: true` | With forced unit (i.e. `hour`) |
+| ------------------------ | ----------- | ------------------ | ------------------------------ |
+| 2006-01-01T00:00:00.000Z | 6 ans | dans 6 ans | 52608 heures |
+| 2005-01-01T00:00:00.000Z | 5 ans | dans 5 ans | 43848 heures |
+| 2004-01-01T00:00:00.000Z | 4 ans | dans 4 ans | 35064 heures |
+| 2003-01-01T00:00:00.000Z | 3 ans | dans 3 ans | 26304 heures |
+| 2002-01-01T00:00:00.000Z | 2 ans | dans 2 ans | 17544 heures |
+| 2001-06-01T00:00:00.000Z | 1 an | dans 1 an | 12408 heures |
+| 2001-02-01T00:00:00.000Z | 1 an | dans 1 an | 9528 heures |
+| 2001-01-01T00:00:00.000Z | 1 an | dans 1 an | 8784 heures |
+| 2000-06-01T00:00:00.000Z | 5 mois | dans 5 mois | 3648 heures |
+| 2000-03-01T00:00:00.000Z | 2 mois | dans 2 mois | 1440 heures |
+| 2000-02-01T00:00:00.000Z | 1 mois | dans 1 mois | 744 heures |
+| 2000-01-15T00:00:00.000Z | 14 jours | dans 14 jours | 336 heures |
+| 2000-01-02T00:00:00.000Z | 1 jour | dans 1 jour | 24 heures |
+| 2000-01-01T06:00:00.000Z | 6 heures | dans 6 heures | 6 heures |
+| 2000-01-01T01:00:00.000Z | 1 heure | dans 1 heure | 1 heure |
+| 2000-01-01T00:45:00.000Z | 45 minutes | dans 45 minutes | 1 heure |
+| 2000-01-01T00:30:00.000Z | 30 minutes | dans 30 minutes | 1 heure |
+| 2000-01-01T00:15:00.000Z | 15 minutes | dans 15 minutes | 0 heures |
+| 2000-01-01T00:01:00.000Z | 1 minute | dans 1 minute | 0 heures |
+| 2000-01-01T00:00:25.000Z | 25 secondes | dans 25 secondes | 0 heures |
+| 2000-01-01T00:00:15.000Z | 15 secondes | dans 15 secondes | 0 heures |
+| 2000-01-01T00:00:05.000Z | 5 secondes | dans 5 secondes | 0 heures |
+| 2000-01-01T00:00:00.000Z | 0 secondes | il y a 0 secondes | 0 heures |
+| 1999-12-31T23:59:55.000Z | 5 secondes | il y a 5 secondes | 0 heures |
+| 1999-12-31T23:59:45.000Z | 15 secondes | il y a 15 secondes | 0 heures |
+| 1999-12-31T23:59:35.000Z | 25 secondes | il y a 25 secondes | 0 heures |
+| 1999-12-31T23:59:00.000Z | 1 minute | il y a 1 minute | 0 heures |
+| 1999-12-31T23:45:00.000Z | 15 minutes | il y a 15 minutes | 0 heures |
+| 1999-12-31T23:30:00.000Z | 30 minutes | il y a 30 minutes | 1 heure |
+| 1999-12-31T23:15:00.000Z | 45 minutes | il y a 45 minutes | 1 heure |
+| 1999-12-31T23:00:00.000Z | 1 heure | il y a 1 heure | 1 heure |
+| 1999-12-31T18:00:00.000Z | 6 heures | il y a 6 heures | 6 heures |
+| 1999-12-30T00:00:00.000Z | 2 jours | il y a 2 jours | 48 heures |
+| 1999-12-15T00:00:00.000Z | 17 jours | il y a 17 jours | 408 heures |
+| 1999-12-01T00:00:00.000Z | 1 mois | il y a 1 mois | 744 heures |
+| 1999-11-01T00:00:00.000Z | 2 mois | il y a 2 mois | 1464 heures |
+| 1999-06-01T00:00:00.000Z | 7 mois | il y a 7 mois | 5136 heures |
+| 1999-01-01T00:00:00.000Z | 1 an | il y a 1 an | 8760 heures |
+| 1998-12-01T00:00:00.000Z | 1 an | il y a 1 an | 9504 heures |
+| 1998-06-01T00:00:00.000Z | 2 ans | il y a 2 ans | 13896 heures |
+| 1998-01-01T00:00:00.000Z | 2 ans | il y a 2 ans | 17520 heures |
+| 1997-01-01T00:00:00.000Z | 3 ans | il y a 3 ans | 26280 heures |
+| 1996-01-01T00:00:00.000Z | 4 ans | il y a 4 ans | 35064 heures |
+| 1995-01-01T00:00:00.000Z | 5 ans | il y a 5 ans | 43824 heures |
+| 1994-01-01T00:00:00.000Z | 6 ans | il y a 6 ans | 52584 heures |
+
+## `formatRelative`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result |
+| ------------------------ | ------------------------- |
+| 2000-01-10T00:00:00.000Z | 10/01/2000 |
+| 2000-01-05T00:00:00.000Z | mercredi prochain à 00:00 |
+| 2000-01-02T00:00:00.000Z | demain à 00:00 |
+| 2000-01-01T00:00:00.000Z | aujourd’hui à 00:00 |
+| 1999-12-31T00:00:00.000Z | hier à 00:00 |
+| 1999-12-27T00:00:00.000Z | lundi dernier à 00:00 |
+| 1999-12-21T00:00:00.000Z | 21/12/1999 |
diff --git a/date-fns/src/locale/gd/_lib/formatDistance/index.js b/date-fns/src/locale/gd/_lib/formatDistance/index.js
new file mode 100644
index 0000000..e24c2be
--- /dev/null
+++ b/date-fns/src/locale/gd/_lib/formatDistance/index.js
@@ -0,0 +1,115 @@
+var formatDistanceLocale = {
+ lessThanXSeconds: {
+ one: 'nas lugha na diog',
+ other: 'nas lugha na {{count}} diogan'
+ },
+
+ xSeconds: {
+ one: '1 diog',
+ two: '2 dhiog',
+ twenty: '20 diog',
+ other: '{{count}} diogan'
+ },
+
+ halfAMinute: 'leth mhionaid',
+
+ lessThanXMinutes: {
+ one: 'nas lugha na mionaid',
+ other: 'nas lugha na {{count}} mionaidean'
+ },
+
+ xMinutes: {
+ one: '1 mionaid',
+ two: '2 mhionaid',
+ twenty: '20 mionaid',
+ other: '{{count}} mionaidean'
+ },
+
+ aboutXHours: {
+ one: 'mu uair de thìde',
+ other: 'mu {{count}} uairean de thìde'
+ },
+
+ xHours: {
+ one: '1 uair de thìde',
+ two: '2 uair de thìde',
+ twenty: '20 uair de thìde',
+ other: '{{count}} uairean de thìde'
+ },
+
+ xDays: {
+ one: '1 là',
+ other: '{{count}} là'
+ },
+
+ aboutXWeeks: {
+ one: 'mu 1 seachdain',
+ other: 'mu {{count}} seachdainean'
+ },
+
+ xWeeks: {
+ one: '1 seachdain',
+ other: '{{count}} seachdainean'
+ },
+
+ aboutXMonths: {
+ one: 'mu mhìos',
+ other: 'mu {{count}} mìosan'
+ },
+
+ xMonths: {
+ one: '1 mìos',
+ other: '{{count}} mìosan'
+ },
+
+ aboutXYears: {
+ one: 'mu bhliadhna',
+ other: 'mu {{count}} bliadhnaichean'
+ },
+
+ xYears: {
+ one: '1 bhliadhna',
+ other: '{{count}} bliadhna'
+ },
+
+ overXYears: {
+ one: 'còrr is bliadhna',
+ other: 'còrr is {{count}} bliadhnaichean'
+ },
+
+ almostXYears: {
+ one: 'cha mhòr bliadhna',
+ other: 'cha mhòr {{count}} bliadhnaichean'
+ }
+}
+
+export default function formatDistance(token, count, options) {
+ options = options || {}
+
+ var result
+ if (typeof formatDistanceLocale[token] === 'string') {
+ result = formatDistanceLocale[token]
+ } else if (count === 1) {
+ result = formatDistanceLocale[token].one
+ } else if (count === 2 && !!formatDistanceLocale[token].two) {
+ result = formatDistanceLocale[token].two
+ } else if (count === 9 && !!formatDistanceLocale[token].nine) {
+ result = formatDistanceLocale[token].nine
+ } else if (count === 20 && !!formatDistanceLocale[token].twenty) {
+ result = formatDistanceLocale[token].twenty
+ } else if (count === 30 && !!formatDistanceLocale[token].thirty) {
+ result = formatDistanceLocale[token].thirty
+ } else {
+ result = formatDistanceLocale[token].other.replace('{{count}}', count)
+ }
+
+ if (options.addSuffix) {
+ if (options.comparison > 0) {
+ return 'ann an ' + result
+ } else {
+ return 'o chionn ' + result
+ }
+ }
+
+ return result
+}
diff --git a/date-fns/src/locale/gd/_lib/formatLong/index.js b/date-fns/src/locale/gd/_lib/formatLong/index.js
new file mode 100644
index 0000000..24513da
--- /dev/null
+++ b/date-fns/src/locale/gd/_lib/formatLong/index.js
@@ -0,0 +1,41 @@
+import buildFormatLongFn from '../../../_lib/buildFormatLongFn/index'
+
+var dateFormats = {
+ full: 'EEEE, MMMM do, y',
+ long: 'MMMM do, y',
+ medium: 'MMM d, y',
+ short: 'MM/dd/yyyy'
+}
+
+var timeFormats = {
+ full: 'h:mm:ss a zzzz',
+ long: 'h:mm:ss a z',
+ medium: 'h:mm:ss a',
+ short: 'h:mm a'
+}
+
+var dateTimeFormats = {
+ full: "{{date}} 'aig' {{time}}",
+ long: "{{date}} 'aig' {{time}}",
+ medium: '{{date}}, {{time}}',
+ short: '{{date}}, {{time}}'
+}
+
+var formatLong = {
+ date: buildFormatLongFn({
+ formats: dateFormats,
+ defaultWidth: 'full'
+ }),
+
+ time: buildFormatLongFn({
+ formats: timeFormats,
+ defaultWidth: 'full'
+ }),
+
+ dateTime: buildFormatLongFn({
+ formats: dateTimeFormats,
+ defaultWidth: 'full'
+ })
+}
+
+export default formatLong
diff --git a/date-fns/src/locale/gd/_lib/formatRelative/index.js b/date-fns/src/locale/gd/_lib/formatRelative/index.js
new file mode 100644
index 0000000..ea9d357
--- /dev/null
+++ b/date-fns/src/locale/gd/_lib/formatRelative/index.js
@@ -0,0 +1,12 @@
+var formatRelativeLocale = {
+ lastWeek: "'mu dheireadh' eeee 'aig' p", //FIX
+ yesterday: "'an-dè aig' p",
+ today: "'an-diugh aig' p",
+ tomorrow: "'a-màireach aig' p",
+ nextWeek: "eeee 'aig' p",
+ other: 'P'
+}
+
+export default function formatRelative(token, _date, _baseDate, _options) {
+ return formatRelativeLocale[token]
+}
diff --git a/date-fns/src/locale/gd/_lib/localize/index.js b/date-fns/src/locale/gd/_lib/localize/index.js
new file mode 100644
index 0000000..6c29358
--- /dev/null
+++ b/date-fns/src/locale/gd/_lib/localize/index.js
@@ -0,0 +1,200 @@
+import buildLocalizeFn from '../../../_lib/buildLocalizeFn/index'
+
+var eraValues = {
+ narrow: ['R', 'A'],
+ abbreviated: ['RC', 'AD'],
+ wide: ['ro Chrìosta', 'anno domini']
+}
+
+var quarterValues = {
+ narrow: ['1', '2', '3', '4'],
+ abbreviated: ['C1', 'C2', 'C3', 'C4'],
+ wide: [
+ "a' chiad chairteal",
+ 'an dàrna cairteal',
+ 'an treas cairteal',
+ 'an ceathramh cairteal'
+ ]
+}
+
+// Note: in English, the names of days of the week and months are capitalized.
+// If you are making a new locale based on this one, check if the same is true for the language you're working on.
+// Generally, formatted dates should look like they are in the middle of a sentence,
+// e.g. in Spanish language the weekdays and months should be in the lowercase.
+var monthValues = {
+ narrow: ['F', 'G', 'M', 'G', 'C', 'Ò', 'I', 'L', 'S', 'D', 'S', 'D'],
+ abbreviated: [
+ 'Faoi',
+ 'Gear',
+ 'Màrt',
+ 'Gibl',
+ 'Cèit',
+ 'Ògmh',
+ 'Iuch',
+ 'Lùn',
+ 'Sult',
+ 'Dàmh',
+ 'Samh',
+ 'Dùbh'
+ ],
+ wide: [
+ 'Am Faoilleach',
+ 'An Gearran',
+ 'Am Màrt',
+ 'An Giblean',
+ 'An Cèitean',
+ 'An t-Ògmhios',
+ 'An t-Iuchar',
+ 'An Lùnastal',
+ 'An t-Sultain',
+ 'An Dàmhair',
+ 'An t-Samhain',
+ 'An Dùbhlachd'
+ ]
+}
+
+var dayValues = {
+ narrow: ['D', 'L', 'M', 'C', 'A', 'H', 'S'],
+ short: ['Dò', 'Lu', 'Mà', 'Ci', 'Ar', 'Ha', 'Sa'],
+ abbreviated: ['Did', 'Dil', 'Dim', 'Dic', 'Dia', 'Dih', 'Dis'],
+ wide: [
+ 'Didòmhnaich',
+ 'Diluain',
+ 'Dimàirt',
+ 'Diciadain',
+ 'Diardaoin',
+ 'Dihaoine',
+ 'Disathairne'
+ ]
+}
+
+var dayPeriodValues = {
+ narrow: {
+ am: 'm',
+ pm: 'f',
+ midnight: 'm.o.',
+ noon: 'm.l.',
+ morning: 'madainn',
+ afternoon: 'feasgar',
+ evening: 'feasgar',
+ night: 'oidhche'
+ },
+ abbreviated: {
+ am: 'M.',
+ pm: 'F.',
+ midnight: 'meadhan oidhche',
+ noon: 'meadhan là',
+ morning: 'madainn',
+ afternoon: 'feasgar',
+ evening: 'feasgar',
+ night: 'oidhche'
+ },
+ wide: {
+ am: 'm.',
+ pm: 'f.',
+ midnight: 'meadhan oidhche',
+ noon: 'meadhan là',
+ morning: 'madainn',
+ afternoon: 'feasgar',
+ evening: 'feasgar',
+ night: 'oidhche'
+ }
+}
+var formattingDayPeriodValues = {
+ narrow: {
+ am: 'm',
+ pm: 'f',
+ midnight: 'm.o.',
+ noon: 'm.l.',
+ morning: 'sa mhadainn',
+ afternoon: 'feasgar',
+ evening: 'feasgar',
+ night: 'air an oidhche'
+ },
+ abbreviated: {
+ am: 'M.',
+ pm: 'F.',
+ midnight: 'meadhan oidhche',
+ noon: 'meadhan là',
+ morning: 'sa mhadainn',
+ afternoon: 'feasgar',
+ evening: 'feasgar',
+ night: 'air an oidhche'
+ },
+ wide: {
+ am: 'm.',
+ pm: 'f.',
+ midnight: 'meadhan oidhche',
+ noon: 'meadhan là',
+ morning: 'sa mhadainn',
+ afternoon: 'feasgar',
+ evening: 'feasgar',
+ night: 'air an oidhche'
+ }
+}
+
+function ordinalNumber(dirtyNumber, _dirtyOptions) {
+ var number = Number(dirtyNumber)
+
+ // If ordinal numbers depend on context, for example,
+ // if they are different for different grammatical genders,
+ // use `options.unit`:
+ //
+ // var options = dirtyOptions || {}
+ // var unit = String(options.unit)
+ //
+ // where `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',
+ // 'day', 'hour', 'minute', 'second'
+
+ var rem100 = number % 100
+ if (rem100 > 20 || rem100 < 10) {
+ switch (rem100 % 10) {
+ case 1:
+ return number + 'd'
+ case 2:
+ return number + 'na'
+ }
+ }
+
+ if (rem100 === 12) {
+ return number + 'na'
+ }
+
+ return number + 'mh'
+}
+
+var localize = {
+ ordinalNumber: ordinalNumber,
+
+ era: buildLocalizeFn({
+ values: eraValues,
+ defaultWidth: 'wide'
+ }),
+
+ quarter: buildLocalizeFn({
+ values: quarterValues,
+ defaultWidth: 'wide',
+ argumentCallback: function(quarter) {
+ return Number(quarter) - 1
+ }
+ }),
+
+ month: buildLocalizeFn({
+ values: monthValues,
+ defaultWidth: 'wide'
+ }),
+
+ day: buildLocalizeFn({
+ values: dayValues,
+ defaultWidth: 'wide'
+ }),
+
+ dayPeriod: buildLocalizeFn({
+ values: dayPeriodValues,
+ defaultWidth: 'wide',
+ formattingValues: formattingDayPeriodValues,
+ defaultFormattingWidth: 'wide'
+ })
+}
+
+export default localize
diff --git a/date-fns/src/locale/gd/_lib/match/index.js b/date-fns/src/locale/gd/_lib/match/index.js
new file mode 100644
index 0000000..bb23794
--- /dev/null
+++ b/date-fns/src/locale/gd/_lib/match/index.js
@@ -0,0 +1,138 @@
+import buildMatchPatternFn from '../../../_lib/buildMatchPatternFn/index'
+import buildMatchFn from '../../../_lib/buildMatchFn/index'
+
+var matchOrdinalNumberPattern = /^(\d+)(d|na|tr|mh)?/i
+var parseOrdinalNumberPattern = /\d+/i
+
+var matchEraPatterns = {
+ narrow: /^(r|a)/i,
+ abbreviated: /^(r\.?\s?c\.?|r\.?\s?a\.?\s?c\.?|a\.?\s?d\.?|a\.?\s?c\.?)/i,
+ wide: /^(ro Chrìosta|ron aois choitchinn|anno domini|aois choitcheann)/i
+}
+var parseEraPatterns = {
+ any: [/^b/i, /^(a|c)/i]
+}
+
+var matchQuarterPatterns = {
+ narrow: /^[1234]/i,
+ abbreviated: /^c[1234]/i,
+ wide: /^[1234](cd|na|tr|mh)? cairteal/i
+}
+var parseQuarterPatterns = {
+ any: [/1/i, /2/i, /3/i, /4/i]
+}
+
+var matchMonthPatterns = {
+ narrow: /^[fgmcòilsd]/i,
+ abbreviated: /^(faoi|gear|màrt|gibl|cèit|ògmh|iuch|lùn|sult|dàmh|samh|dùbh)/i,
+ wide: /^(am faoilleach|an gearran|am màrt|an giblean|an cèitean|an t-Ògmhios|an t-Iuchar|an lùnastal|an t-Sultain|an dàmhair|an t-Samhain|an dùbhlachd)/i
+}
+var parseMonthPatterns = {
+ narrow: [
+ /^f/i,
+ /^g/i,
+ /^m/i,
+ /^g/i,
+ /^c/i,
+ /^ò/i,
+ /^i/i,
+ /^l/i,
+ /^s/i,
+ /^d/i,
+ /^s/i,
+ /^d/i
+ ],
+ any: [
+ /^fa/i,
+ /^ge/i,
+ /^mà/i,
+ /^gi/i,
+ /^c/i,
+ /^ò/i,
+ /^i/i,
+ /^l/i,
+ /^su/i,
+ /^d/i,
+ /^sa/i,
+ /^d/i
+ ]
+}
+
+var matchDayPatterns = {
+ narrow: /^[dlmcahs]/i,
+ short: /^(dò|lu|mà|ci|ar|ha|sa)/i,
+ abbreviated: /^(did|dil|dim|dic|dia|dih|dis)/i,
+ wide: /^(didòmhnaich|diluain|dimàirt|diciadain|diardaoin|dihaoine|disathairne)/i
+}
+var parseDayPatterns = {
+ narrow: [/^d/i, /^l/i, /^m/i, /^c/i, /^a/i, /^h/i, /^s/i],
+ any: [/^d/i, /^l/i, /^m/i, /^c/i, /^a/i, /^h/i, /^s/i]
+}
+
+var matchDayPeriodPatterns = {
+ narrow: /^(a|p|mi|n|(san|aig) (madainn|feasgar|feasgar|oidhche))/i,
+ any: /^([ap]\.?\s?m\.?|meadhan oidhche|meadhan là|(san|aig) (madainn|feasgar|feasgar|oidhche))/i
+}
+
+var parseDayPeriodPatterns = {
+ any: {
+ am: /^m/i,
+ pm: /^f/i,
+ midnight: /^meadhan oidhche/i,
+ noon: /^meadhan là/i,
+ morning: /sa mhadainn/i,
+ afternoon: /feasgar/i,
+ evening: /feasgar/i,
+ night: /air an oidhche/i
+ }
+}
+
+var match = {
+ ordinalNumber: buildMatchPatternFn({
+ matchPattern: matchOrdinalNumberPattern,
+ parsePattern: parseOrdinalNumberPattern,
+ valueCallback: function(value) {
+ return parseInt(value, 10)
+ }
+ }),
+
+ era: buildMatchFn({
+ matchPatterns: matchEraPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseEraPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ quarter: buildMatchFn({
+ matchPatterns: matchQuarterPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseQuarterPatterns,
+ defaultParseWidth: 'any',
+ valueCallback: function(index) {
+ return index + 1
+ }
+ }),
+
+ month: buildMatchFn({
+ matchPatterns: matchMonthPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseMonthPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ day: buildMatchFn({
+ matchPatterns: matchDayPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseDayPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ dayPeriod: buildMatchFn({
+ matchPatterns: matchDayPeriodPatterns,
+ defaultMatchWidth: 'any',
+ parsePatterns: parseDayPeriodPatterns,
+ defaultParseWidth: 'any'
+ })
+}
+
+export default match
diff --git a/date-fns/src/locale/gd/index.d.ts b/date-fns/src/locale/gd/index.d.ts
new file mode 100644
index 0000000..2b24744
--- /dev/null
+++ b/date-fns/src/locale/gd/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { gd } from 'date-fns/locale'
+export default gd
diff --git a/date-fns/src/locale/gd/index.js b/date-fns/src/locale/gd/index.js
new file mode 100644
index 0000000..05e8cd4
--- /dev/null
+++ b/date-fns/src/locale/gd/index.js
@@ -0,0 +1,28 @@
+import formatDistance from './_lib/formatDistance/index'
+import formatLong from './_lib/formatLong/index'
+import formatRelative from './_lib/formatRelative/index'
+import localize from './_lib/localize/index'
+import match from './_lib/match/index'
+
+/**
+ * @type {Locale}
+ * @category Locales
+ * @summary Scottish Gaelic.
+ * @language Scottish Gaelic
+ * @iso-639-2 gla
+ * @author Lee Driscoll [@leedriscoll]{@link https://github.com/leedriscoll}
+ */
+var locale = {
+ code: 'gd',
+ formatDistance: formatDistance,
+ formatLong: formatLong,
+ formatRelative: formatRelative,
+ localize: localize,
+ match: match,
+ options: {
+ weekStartsOn: 0 /* Sunday */,
+ firstWeekContainsDate: 1
+ }
+}
+
+export default locale
diff --git a/date-fns/src/locale/gd/index.js.flow b/date-fns/src/locale/gd/index.js.flow
new file mode 100644
index 0000000..b9dfe66
--- /dev/null
+++ b/date-fns/src/locale/gd/index.js.flow
@@ -0,0 +1,35 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+declare module.exports: Locale
diff --git a/date-fns/src/locale/gd/snapshot.md b/date-fns/src/locale/gd/snapshot.md
new file mode 100644
index 0000000..0378d1b
--- /dev/null
+++ b/date-fns/src/locale/gd/snapshot.md
@@ -0,0 +1,304 @@
+# Scottish Gaelic (gd) locale
+
+## `format` and `parse`
+
+| Title | Token string | Date | `format` result | `parse` result |
+| ------------------------------- | ------------ | ------------------------ | ------------------------------------------------------------ | ------------------------ |
+| Calendar year | yo | 1987-02-11T12:13:14.015Z | 1987mh | 1987-01-01T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 5mh | 0005-01-01T00:00:00.000Z |
+| Local week-numbering year | Yo | 1987-02-11T12:13:14.015Z | 1987mh | 1986-12-28T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 5mh | 0004-12-26T00:00:00.000Z |
+| Quarter (formatting) | Qo | 2019-01-01T12:13:14.015Z | 1d | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2na | 2019-04-01T00:00:00.000Z |
+| | QQQ | 2019-01-01T12:13:14.015Z | C1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | C2 | 2019-04-01T00:00:00.000Z |
+| | QQQQ | 2019-01-01T12:13:14.015Z | a' chiad chairteal | Invalid Date |
+| | | 2019-04-01T12:13:14.015Z | an dàrna cairteal | Invalid Date |
+| | QQQQQ | 2019-01-01T12:13:14.015Z | 1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2 | 2019-04-01T00:00:00.000Z |
+| Quarter (stand-alone) | qo | 2019-01-01T12:13:14.015Z | 1d | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2na | 2019-04-01T00:00:00.000Z |
+| | qqq | 2019-01-01T12:13:14.015Z | C1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | C2 | 2019-04-01T00:00:00.000Z |
+| | qqqq | 2019-01-01T12:13:14.015Z | a' chiad chairteal | Invalid Date |
+| | | 2019-04-01T12:13:14.015Z | an dàrna cairteal | Invalid Date |
+| Month (formatting) | Mo | 2019-02-11T12:13:14.015Z | 2na | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7mh | 2019-07-01T00:00:00.000Z |
+| | MMM | 2019-02-11T12:13:14.015Z | Gear | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | Iuch | 2019-07-01T00:00:00.000Z |
+| | MMMM | 2019-02-11T12:13:14.015Z | An Gearran | Invalid Date |
+| | | 2019-07-10T12:13:14.015Z | An t-Iuchar | Invalid Date |
+| | MMMMM | 2019-02-11T12:13:14.015Z | G | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | I | 2019-07-01T00:00:00.000Z |
+| Month (stand-alone) | Lo | 2019-02-11T12:13:14.015Z | 2na | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7mh | 2019-07-01T00:00:00.000Z |
+| | LLL | 2019-02-11T12:13:14.015Z | Gear | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | Iuch | 2019-07-01T00:00:00.000Z |
+| | LLLL | 2019-02-11T12:13:14.015Z | An Gearran | Invalid Date |
+| | | 2019-07-10T12:13:14.015Z | An t-Iuchar | Invalid Date |
+| | LLLLL | 2019-02-11T12:13:14.015Z | G | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | I | 2019-07-01T00:00:00.000Z |
+| Local week of year | wo | 2019-01-01T12:13:14.015Z | 1d | 2018-12-30T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 49mh | 2019-12-01T00:00:00.000Z |
+| ISO week of year | Io | 2019-01-01T12:13:14.015Z | 1d | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48mh | 2019-11-25T00:00:00.000Z |
+| Day of month | do | 2019-02-11T12:13:14.015Z | 11mh | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-28T12:13:14.015Z | 28mh | 2019-02-28T00:00:00.000Z |
+| Day of year | Do | 2019-02-11T12:13:14.015Z | 42na | 2019-02-11T00:00:00.000Z |
+| | | 2019-12-31T12:13:14.015Z | 365mh | 2019-12-31T00:00:00.000Z |
+| Day of week (formatting) | E | 2019-02-11T12:13:14.015Z | Dil | 2019-02-10T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Dih | 2019-02-10T00:00:00.000Z |
+| | EE | 2019-02-11T12:13:14.015Z | Dil | 2019-02-10T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Dih | 2019-02-10T00:00:00.000Z |
+| | EEE | 2019-02-11T12:13:14.015Z | Dil | 2019-02-10T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Dih | 2019-02-10T00:00:00.000Z |
+| | EEEE | 2019-02-11T12:13:14.015Z | Diluain | 2019-02-10T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Dihaoine | 2019-02-10T00:00:00.000Z |
+| | EEEEE | 2019-02-11T12:13:14.015Z | L | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | H | 2019-02-15T00:00:00.000Z |
+| | EEEEEE | 2019-02-11T12:13:14.015Z | Lu | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Ha | 2019-02-15T00:00:00.000Z |
+| ISO day of week (formatting) | io | 2019-02-11T12:13:14.015Z | 1d | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5mh | 2019-02-15T00:00:00.000Z |
+| | iii | 2019-02-11T12:13:14.015Z | Dil | 2019-02-17T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Dih | 2019-02-17T00:00:00.000Z |
+| | iiii | 2019-02-11T12:13:14.015Z | Diluain | 2019-02-17T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Dihaoine | 2019-02-17T00:00:00.000Z |
+| | iiiii | 2019-02-11T12:13:14.015Z | L | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | H | 2019-02-15T00:00:00.000Z |
+| | iiiiii | 2019-02-11T12:13:14.015Z | Lu | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Ha | 2019-02-15T00:00:00.000Z |
+| Local day of week (formatting) | eo | 2019-02-11T12:13:14.015Z | 2na | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 6mh | 2019-02-15T00:00:00.000Z |
+| | eee | 2019-02-11T12:13:14.015Z | Dil | 2019-02-10T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Dih | 2019-02-10T00:00:00.000Z |
+| | eeee | 2019-02-11T12:13:14.015Z | Diluain | 2019-02-10T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Dihaoine | 2019-02-10T00:00:00.000Z |
+| | eeeee | 2019-02-11T12:13:14.015Z | L | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | H | 2019-02-15T00:00:00.000Z |
+| | eeeeee | 2019-02-11T12:13:14.015Z | Lu | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Ha | 2019-02-15T00:00:00.000Z |
+| Local day of week (stand-alone) | co | 2019-02-11T12:13:14.015Z | 2na | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 6mh | 2019-02-15T00:00:00.000Z |
+| | ccc | 2019-02-11T12:13:14.015Z | Dil | 2019-02-10T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Dih | 2019-02-10T00:00:00.000Z |
+| | cccc | 2019-02-11T12:13:14.015Z | Diluain | 2019-02-10T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Dihaoine | 2019-02-10T00:00:00.000Z |
+| | ccccc | 2019-02-11T12:13:14.015Z | L | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | H | 2019-02-15T00:00:00.000Z |
+| | cccccc | 2019-02-11T12:13:14.015Z | Lu | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Ha | 2019-02-15T00:00:00.000Z |
+| AM, PM | a | 2019-02-11T11:13:14.015Z | M. | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | F. | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | F. | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | M. | Invalid Date |
+| | aa | 2019-02-11T11:13:14.015Z | M. | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | F. | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | F. | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | M. | Invalid Date |
+| | aaa | 2019-02-11T11:13:14.015Z | m. | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | f. | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | f. | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | m. | Invalid Date |
+| | aaaa | 2019-02-11T11:13:14.015Z | m. | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | f. | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | f. | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | m. | Invalid Date |
+| | aaaaa | 2019-02-11T11:13:14.015Z | m | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | f | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | f | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | m | Invalid Date |
+| AM, PM, noon, midnight | b | 2019-02-11T11:13:14.015Z | M. | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | F. | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | F. | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | M. | Invalid Date |
+| | bb | 2019-02-11T11:13:14.015Z | M. | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | F. | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | F. | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | M. | Invalid Date |
+| | bbb | 2019-02-11T11:13:14.015Z | m. | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | f. | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | f. | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | m. | Invalid Date |
+| | bbbb | 2019-02-11T11:13:14.015Z | m. | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | f. | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | f. | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | m. | Invalid Date |
+| | bbbbb | 2019-02-11T11:13:14.015Z | m | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | f | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | f | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | m | Invalid Date |
+| Flexible day period | B | 2019-02-11T11:13:14.015Z | sa mhadainn | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | feasgar | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | feasgar | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | air an oidhche | Invalid Date |
+| | BB | 2019-02-11T11:13:14.015Z | sa mhadainn | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | feasgar | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | feasgar | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | air an oidhche | Invalid Date |
+| | BBB | 2019-02-11T11:13:14.015Z | sa mhadainn | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | feasgar | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | feasgar | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | air an oidhche | Invalid Date |
+| | BBBB | 2019-02-11T11:13:14.015Z | sa mhadainn | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | feasgar | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | feasgar | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | air an oidhche | Invalid Date |
+| | BBBBB | 2019-02-11T11:13:14.015Z | sa mhadainn | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | feasgar | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | feasgar | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | air an oidhche | Invalid Date |
+| Hour [1-12] | ho | 2019-02-11T11:13:14.015Z | 11mh | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11mh | 2019-02-11T23:00:00.000Z |
+| Hour [0-23] | Ho | 2019-02-11T11:13:14.015Z | 11mh | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23mh | 2019-02-11T23:00:00.000Z |
+| Hour [0-11] | Ko | 2019-02-11T11:13:14.015Z | 11mh | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11mh | 2019-02-11T23:00:00.000Z |
+| Hour [1-24] | ko | 2019-02-11T11:13:14.015Z | 11mh | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23mh | 2019-02-11T23:00:00.000Z |
+| Minute | mo | 2019-01-01T12:01:14.015Z | 1d | 2019-01-01T12:01:00.000Z |
+| | | 2019-04-01T12:55:14.015Z | 55mh | 2019-04-01T12:55:00.000Z |
+| Second | so | 2019-01-01T12:13:01.015Z | 1d | 2019-01-01T12:13:01.000Z |
+| | | 2019-04-01T12:13:55.015Z | 55mh | 2019-04-01T12:13:55.000Z |
+| Long localized date | P | 1987-02-11T12:13:14.015Z | 02/11/1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 05/29/1453 | 1453-05-29T00:00:00.000Z |
+| | PP | 1987-02-11T12:13:14.015Z | Gear 11, 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | Cèit 29, 1453 | 1453-05-29T00:00:00.000Z |
+| | PPP | 1987-02-11T12:13:14.015Z | An Gearran 11mh, 1987 | Invalid Date |
+| | | 1453-05-29T23:59:59.999Z | An Cèitean 29mh, 1453 | Invalid Date |
+| | PPPP | 1987-02-11T12:13:14.015Z | Diciadain, An Gearran 11mh, 1987 | Invalid Date |
+| | | 1453-05-29T23:59:59.999Z | Didòmhnaich, An Cèitean 29mh, 1453 | Invalid Date |
+| Long localized time | p | 1987-02-11T12:13:14.015Z | 12:13 F. | Invalid Date |
+| | | 1453-05-29T23:59:59.999Z | 11:59 F. | Invalid Date |
+| | pp | 1987-02-11T12:13:14.015Z | 12:13:14 F. | Invalid Date |
+| | | 1453-05-29T23:59:59.999Z | 11:59:59 F. | Invalid Date |
+| | ppp | 1987-02-11T12:13:14.015Z | 12:13:14 F. GMT+0 | Invalid Date |
+| | | 1453-05-29T23:59:59.999Z | 11:59:59 F. GMT+0 | Invalid Date |
+| | pppp | 1987-02-11T12:13:14.015Z | 12:13:14 F. GMT+00:00 | Invalid Date |
+| | | 1453-05-29T23:59:59.999Z | 11:59:59 F. GMT+00:00 | Invalid Date |
+| Combination of date and time | Pp | 1987-02-11T12:13:14.015Z | 02/11/1987, 12:13 F. | Invalid Date |
+| | | 1453-05-29T23:59:59.999Z | 05/29/1453, 11:59 F. | Invalid Date |
+| | PPpp | 1987-02-11T12:13:14.015Z | Gear 11, 1987, 12:13:14 F. | Invalid Date |
+| | | 1453-05-29T23:59:59.999Z | Cèit 29, 1453, 11:59:59 F. | Invalid Date |
+| | PPPppp | 1987-02-11T12:13:14.015Z | An Gearran 11mh, 1987 aig 12:13:14 F. GMT+0 | Invalid Date |
+| | | 1453-05-29T23:59:59.999Z | An Cèitean 29mh, 1453 aig 11:59:59 F. GMT+0 | Invalid Date |
+| | PPPPpppp | 1987-02-11T12:13:14.015Z | Diciadain, An Gearran 11mh, 1987 aig 12:13:14 F. GMT+00:00 | Invalid Date |
+| | | 1453-05-29T23:59:59.999Z | Didòmhnaich, An Cèitean 29mh, 1453 aig 11:59:59 F. GMT+00:00 | Invalid Date |
+
+## `formatDistance`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `includeSeconds: true` | `addSuffix: true` |
+| ------------------------ | --------------------- | ---------------------- | ------------------------------ |
+| 2006-01-01T00:00:00.000Z | mu 6 bliadhnaichean | mu 6 bliadhnaichean | ann an mu 6 bliadhnaichean |
+| 2005-01-01T00:00:00.000Z | mu 5 bliadhnaichean | mu 5 bliadhnaichean | ann an mu 5 bliadhnaichean |
+| 2004-01-01T00:00:00.000Z | mu 4 bliadhnaichean | mu 4 bliadhnaichean | ann an mu 4 bliadhnaichean |
+| 2003-01-01T00:00:00.000Z | mu 3 bliadhnaichean | mu 3 bliadhnaichean | ann an mu 3 bliadhnaichean |
+| 2002-01-01T00:00:00.000Z | mu 2 bliadhnaichean | mu 2 bliadhnaichean | ann an mu 2 bliadhnaichean |
+| 2001-06-01T00:00:00.000Z | còrr is bliadhna | còrr is bliadhna | ann an còrr is bliadhna |
+| 2001-02-01T00:00:00.000Z | mu bhliadhna | mu bhliadhna | ann an mu bhliadhna |
+| 2001-01-01T00:00:00.000Z | mu bhliadhna | mu bhliadhna | ann an mu bhliadhna |
+| 2000-06-01T00:00:00.000Z | 5 mìosan | 5 mìosan | ann an 5 mìosan |
+| 2000-03-01T00:00:00.000Z | 2 mìosan | 2 mìosan | ann an 2 mìosan |
+| 2000-02-01T00:00:00.000Z | mu mhìos | mu mhìos | ann an mu mhìos |
+| 2000-01-15T00:00:00.000Z | 14 là | 14 là | ann an 14 là |
+| 2000-01-02T00:00:00.000Z | 1 là | 1 là | ann an 1 là |
+| 2000-01-01T06:00:00.000Z | mu 6 uairean de thìde | mu 6 uairean de thìde | ann an mu 6 uairean de thìde |
+| 2000-01-01T01:00:00.000Z | mu uair de thìde | mu uair de thìde | ann an mu uair de thìde |
+| 2000-01-01T00:45:00.000Z | mu uair de thìde | mu uair de thìde | ann an mu uair de thìde |
+| 2000-01-01T00:30:00.000Z | 30 mionaidean | 30 mionaidean | ann an 30 mionaidean |
+| 2000-01-01T00:15:00.000Z | 15 mionaidean | 15 mionaidean | ann an 15 mionaidean |
+| 2000-01-01T00:01:00.000Z | 1 mionaid | 1 mionaid | ann an 1 mionaid |
+| 2000-01-01T00:00:25.000Z | nas lugha na mionaid | leth mhionaid | ann an nas lugha na mionaid |
+| 2000-01-01T00:00:15.000Z | nas lugha na mionaid | nas lugha na 20 diogan | ann an nas lugha na mionaid |
+| 2000-01-01T00:00:05.000Z | nas lugha na mionaid | nas lugha na 10 diogan | ann an nas lugha na mionaid |
+| 2000-01-01T00:00:00.000Z | nas lugha na mionaid | nas lugha na 5 diogan | o chionn nas lugha na mionaid |
+| 1999-12-31T23:59:55.000Z | nas lugha na mionaid | nas lugha na 10 diogan | o chionn nas lugha na mionaid |
+| 1999-12-31T23:59:45.000Z | nas lugha na mionaid | nas lugha na 20 diogan | o chionn nas lugha na mionaid |
+| 1999-12-31T23:59:35.000Z | nas lugha na mionaid | leth mhionaid | o chionn nas lugha na mionaid |
+| 1999-12-31T23:59:00.000Z | 1 mionaid | 1 mionaid | o chionn 1 mionaid |
+| 1999-12-31T23:45:00.000Z | 15 mionaidean | 15 mionaidean | o chionn 15 mionaidean |
+| 1999-12-31T23:30:00.000Z | 30 mionaidean | 30 mionaidean | o chionn 30 mionaidean |
+| 1999-12-31T23:15:00.000Z | mu uair de thìde | mu uair de thìde | o chionn mu uair de thìde |
+| 1999-12-31T23:00:00.000Z | mu uair de thìde | mu uair de thìde | o chionn mu uair de thìde |
+| 1999-12-31T18:00:00.000Z | mu 6 uairean de thìde | mu 6 uairean de thìde | o chionn mu 6 uairean de thìde |
+| 1999-12-30T00:00:00.000Z | 2 là | 2 là | o chionn 2 là |
+| 1999-12-15T00:00:00.000Z | 17 là | 17 là | o chionn 17 là |
+| 1999-12-01T00:00:00.000Z | mu mhìos | mu mhìos | o chionn mu mhìos |
+| 1999-11-01T00:00:00.000Z | 2 mìosan | 2 mìosan | o chionn 2 mìosan |
+| 1999-06-01T00:00:00.000Z | 7 mìosan | 7 mìosan | o chionn 7 mìosan |
+| 1999-01-01T00:00:00.000Z | mu bhliadhna | mu bhliadhna | o chionn mu bhliadhna |
+| 1998-12-01T00:00:00.000Z | mu bhliadhna | mu bhliadhna | o chionn mu bhliadhna |
+| 1998-06-01T00:00:00.000Z | còrr is bliadhna | còrr is bliadhna | o chionn còrr is bliadhna |
+| 1998-01-01T00:00:00.000Z | mu 2 bliadhnaichean | mu 2 bliadhnaichean | o chionn mu 2 bliadhnaichean |
+| 1997-01-01T00:00:00.000Z | mu 3 bliadhnaichean | mu 3 bliadhnaichean | o chionn mu 3 bliadhnaichean |
+| 1996-01-01T00:00:00.000Z | mu 4 bliadhnaichean | mu 4 bliadhnaichean | o chionn mu 4 bliadhnaichean |
+| 1995-01-01T00:00:00.000Z | mu 5 bliadhnaichean | mu 5 bliadhnaichean | o chionn mu 5 bliadhnaichean |
+| 1994-01-01T00:00:00.000Z | mu 6 bliadhnaichean | mu 6 bliadhnaichean | o chionn mu 6 bliadhnaichean |
+
+## `formatDistanceStrict`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `addSuffix: true` | With forced unit (i.e. `hour`) |
+| ------------------------ | ------------------ | --------------------------- | ------------------------------ |
+| 2006-01-01T00:00:00.000Z | 6 bliadhna | ann an 6 bliadhna | 52608 uairean de thìde |
+| 2005-01-01T00:00:00.000Z | 5 bliadhna | ann an 5 bliadhna | 43848 uairean de thìde |
+| 2004-01-01T00:00:00.000Z | 4 bliadhna | ann an 4 bliadhna | 35064 uairean de thìde |
+| 2003-01-01T00:00:00.000Z | 3 bliadhna | ann an 3 bliadhna | 26304 uairean de thìde |
+| 2002-01-01T00:00:00.000Z | 2 bliadhna | ann an 2 bliadhna | 17544 uairean de thìde |
+| 2001-06-01T00:00:00.000Z | 1 bhliadhna | ann an 1 bhliadhna | 12408 uairean de thìde |
+| 2001-02-01T00:00:00.000Z | 1 bhliadhna | ann an 1 bhliadhna | 9528 uairean de thìde |
+| 2001-01-01T00:00:00.000Z | 1 bhliadhna | ann an 1 bhliadhna | 8784 uairean de thìde |
+| 2000-06-01T00:00:00.000Z | 5 mìosan | ann an 5 mìosan | 3648 uairean de thìde |
+| 2000-03-01T00:00:00.000Z | 2 mìosan | ann an 2 mìosan | 1440 uairean de thìde |
+| 2000-02-01T00:00:00.000Z | 1 mìos | ann an 1 mìos | 744 uairean de thìde |
+| 2000-01-15T00:00:00.000Z | 14 là | ann an 14 là | 336 uairean de thìde |
+| 2000-01-02T00:00:00.000Z | 1 là | ann an 1 là | 24 uairean de thìde |
+| 2000-01-01T06:00:00.000Z | 6 uairean de thìde | ann an 6 uairean de thìde | 6 uairean de thìde |
+| 2000-01-01T01:00:00.000Z | 1 uair de thìde | ann an 1 uair de thìde | 1 uair de thìde |
+| 2000-01-01T00:45:00.000Z | 45 mionaidean | ann an 45 mionaidean | 1 uair de thìde |
+| 2000-01-01T00:30:00.000Z | 30 mionaidean | ann an 30 mionaidean | 1 uair de thìde |
+| 2000-01-01T00:15:00.000Z | 15 mionaidean | ann an 15 mionaidean | 0 uairean de thìde |
+| 2000-01-01T00:01:00.000Z | 1 mionaid | ann an 1 mionaid | 0 uairean de thìde |
+| 2000-01-01T00:00:25.000Z | 25 diogan | ann an 25 diogan | 0 uairean de thìde |
+| 2000-01-01T00:00:15.000Z | 15 diogan | ann an 15 diogan | 0 uairean de thìde |
+| 2000-01-01T00:00:05.000Z | 5 diogan | ann an 5 diogan | 0 uairean de thìde |
+| 2000-01-01T00:00:00.000Z | 0 diogan | o chionn 0 diogan | 0 uairean de thìde |
+| 1999-12-31T23:59:55.000Z | 5 diogan | o chionn 5 diogan | 0 uairean de thìde |
+| 1999-12-31T23:59:45.000Z | 15 diogan | o chionn 15 diogan | 0 uairean de thìde |
+| 1999-12-31T23:59:35.000Z | 25 diogan | o chionn 25 diogan | 0 uairean de thìde |
+| 1999-12-31T23:59:00.000Z | 1 mionaid | o chionn 1 mionaid | 0 uairean de thìde |
+| 1999-12-31T23:45:00.000Z | 15 mionaidean | o chionn 15 mionaidean | 0 uairean de thìde |
+| 1999-12-31T23:30:00.000Z | 30 mionaidean | o chionn 30 mionaidean | 1 uair de thìde |
+| 1999-12-31T23:15:00.000Z | 45 mionaidean | o chionn 45 mionaidean | 1 uair de thìde |
+| 1999-12-31T23:00:00.000Z | 1 uair de thìde | o chionn 1 uair de thìde | 1 uair de thìde |
+| 1999-12-31T18:00:00.000Z | 6 uairean de thìde | o chionn 6 uairean de thìde | 6 uairean de thìde |
+| 1999-12-30T00:00:00.000Z | 2 là | o chionn 2 là | 48 uairean de thìde |
+| 1999-12-15T00:00:00.000Z | 17 là | o chionn 17 là | 408 uairean de thìde |
+| 1999-12-01T00:00:00.000Z | 1 mìos | o chionn 1 mìos | 744 uairean de thìde |
+| 1999-11-01T00:00:00.000Z | 2 mìosan | o chionn 2 mìosan | 1464 uairean de thìde |
+| 1999-06-01T00:00:00.000Z | 7 mìosan | o chionn 7 mìosan | 5136 uairean de thìde |
+| 1999-01-01T00:00:00.000Z | 1 bhliadhna | o chionn 1 bhliadhna | 8760 uairean de thìde |
+| 1998-12-01T00:00:00.000Z | 1 bhliadhna | o chionn 1 bhliadhna | 9504 uairean de thìde |
+| 1998-06-01T00:00:00.000Z | 2 bliadhna | o chionn 2 bliadhna | 13896 uairean de thìde |
+| 1998-01-01T00:00:00.000Z | 2 bliadhna | o chionn 2 bliadhna | 17520 uairean de thìde |
+| 1997-01-01T00:00:00.000Z | 3 bliadhna | o chionn 3 bliadhna | 26280 uairean de thìde |
+| 1996-01-01T00:00:00.000Z | 4 bliadhna | o chionn 4 bliadhna | 35064 uairean de thìde |
+| 1995-01-01T00:00:00.000Z | 5 bliadhna | o chionn 5 bliadhna | 43824 uairean de thìde |
+| 1994-01-01T00:00:00.000Z | 6 bliadhna | o chionn 6 bliadhna | 52584 uairean de thìde |
+
+## `formatRelative`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result |
+| ------------------------ | --------------------------------- |
+| 2000-01-10T00:00:00.000Z | 01/10/2000 |
+| 2000-01-05T00:00:00.000Z | Diciadain aig 12:00 M. |
+| 2000-01-02T00:00:00.000Z | a-màireach aig 12:00 M. |
+| 2000-01-01T00:00:00.000Z | an-diugh aig 12:00 M. |
+| 1999-12-31T00:00:00.000Z | an-dè aig 12:00 M. |
+| 1999-12-27T00:00:00.000Z | mu dheireadh Diluain aig 12:00 M. |
+| 1999-12-21T00:00:00.000Z | 12/21/1999 |
diff --git a/date-fns/src/locale/gl/_lib/formatDistance/index.js b/date-fns/src/locale/gl/_lib/formatDistance/index.js
new file mode 100644
index 0000000..dbb841f
--- /dev/null
+++ b/date-fns/src/locale/gl/_lib/formatDistance/index.js
@@ -0,0 +1,101 @@
+var formatDistanceLocale = {
+ lessThanXSeconds: {
+ one: 'menos dun segundo',
+ other: 'menos de {{count}} segundos'
+ },
+
+ xSeconds: {
+ one: '1 segundo',
+ other: '{{count}} segundos'
+ },
+
+ halfAMinute: 'medio minuto',
+
+ lessThanXMinutes: {
+ one: 'menos dun minuto',
+ other: 'menos de {{count}} minutos'
+ },
+
+ xMinutes: {
+ one: '1 minuto',
+ other: '{{count}} minutos'
+ },
+
+ aboutXHours: {
+ one: 'arredor dunha hora',
+ other: 'arredor de {{count}} horas'
+ },
+
+ xHours: {
+ one: '1 hora',
+ other: '{{count}} horas'
+ },
+
+ xDays: {
+ one: '1 día',
+ other: '{{count}} días'
+ },
+
+ aboutXWeeks: {
+ one: 'arredor dunha semana',
+ other: 'arredor de {{count}} semanas'
+ },
+
+ xWeeks: {
+ one: '1 semana',
+ other: '{{count}} semanas'
+ },
+
+ aboutXMonths: {
+ one: 'arredor de 1 mes',
+ other: 'arredor de {{count}} meses'
+ },
+
+ xMonths: {
+ one: '1 mes',
+ other: '{{count}} meses'
+ },
+
+ aboutXYears: {
+ one: 'arredor dun ano',
+ other: 'arredor de {{count}} anos'
+ },
+
+ xYears: {
+ one: '1 ano',
+ other: '{{count}} anos'
+ },
+
+ overXYears: {
+ one: 'máis dun ano',
+ other: 'máis de {{count}} anos'
+ },
+
+ almostXYears: {
+ one: 'case un ano',
+ other: 'case {{count}} anos'
+ }
+}
+
+export default function formatDistance(token, count, options) {
+ options = options || {}
+
+ var result
+ if (typeof formatDistanceLocale[token] === 'string') {
+ result = formatDistanceLocale[token]
+ } else if (count === 1) {
+ result = formatDistanceLocale[token].one
+ } else {
+ result = formatDistanceLocale[token].other.replace('{{count}}', count)
+ }
+
+ if (options.addSuffix) {
+ if (options.comparison > 0) {
+ return 'en ' + result
+ } else {
+ return 'hai ' + result
+ }
+ }
+
+ return result
+}
diff --git a/date-fns/src/locale/gl/_lib/formatLong/index.js b/date-fns/src/locale/gl/_lib/formatLong/index.js
new file mode 100644
index 0000000..e95cb7f
--- /dev/null
+++ b/date-fns/src/locale/gl/_lib/formatLong/index.js
@@ -0,0 +1,41 @@
+import buildFormatLongFn from '../../../_lib/buildFormatLongFn/index'
+
+var dateFormats = {
+ full: "EEEE, d 'de' MMMM y",
+ long: "d 'de' MMMM y",
+ medium: 'd MMM y',
+ short: 'dd/MM/y'
+}
+
+var timeFormats = {
+ full: 'HH:mm:ss zzzz',
+ long: 'HH:mm:ss z',
+ medium: 'HH:mm:ss',
+ short: 'HH:mm'
+}
+
+var dateTimeFormats = {
+ full: "{{date}} 'ás' {{time}}",
+ long: "{{date}} 'ás' {{time}}",
+ medium: '{{date}}, {{time}}',
+ short: '{{date}}, {{time}}'
+}
+
+var formatLong = {
+ date: buildFormatLongFn({
+ formats: dateFormats,
+ defaultWidth: 'full'
+ }),
+
+ time: buildFormatLongFn({
+ formats: timeFormats,
+ defaultWidth: 'full'
+ }),
+
+ dateTime: buildFormatLongFn({
+ formats: dateTimeFormats,
+ defaultWidth: 'full'
+ })
+}
+
+export default formatLong
diff --git a/date-fns/src/locale/gl/_lib/formatRelative/index.js b/date-fns/src/locale/gl/_lib/formatRelative/index.js
new file mode 100644
index 0000000..36f217f
--- /dev/null
+++ b/date-fns/src/locale/gl/_lib/formatRelative/index.js
@@ -0,0 +1,24 @@
+var formatRelativeLocale = {
+ lastWeek: "'o' eeee 'pasado á' LT",
+ yesterday: "'onte á' p",
+ today: "'hoxe á' p",
+ tomorrow: "'mañá á' p",
+ nextWeek: "eeee 'á' p",
+ other: 'P'
+}
+
+var formatRelativeLocalePlural = {
+ lastWeek: "'o' eeee 'pasado ás' p",
+ yesterday: "'onte ás' p",
+ today: "'hoxe ás' p",
+ tomorrow: "'mañá ás' p",
+ nextWeek: "eeee 'ás' p",
+ other: 'P'
+}
+
+export default function formatRelative(token, date, _baseDate, _options) {
+ if (date.getUTCHours() !== 1) {
+ return formatRelativeLocalePlural[token]
+ }
+ return formatRelativeLocale[token]
+}
diff --git a/date-fns/src/locale/gl/_lib/localize/index.js b/date-fns/src/locale/gl/_lib/localize/index.js
new file mode 100644
index 0000000..aea5255
--- /dev/null
+++ b/date-fns/src/locale/gl/_lib/localize/index.js
@@ -0,0 +1,158 @@
+import buildLocalizeFn from '../../../_lib/buildLocalizeFn/index'
+
+var eraValues = {
+ narrow: ['AC', 'DC'],
+ abbreviated: ['AC', 'DC'],
+ wide: ['antes de cristo', 'despois de cristo']
+}
+
+var quarterValues = {
+ narrow: ['1', '2', '3', '4'],
+ abbreviated: ['T1', 'T2', 'T3', 'T4'],
+ wide: ['1º trimestre', '2º trimestre', '3º trimestre', '4º trimestre']
+}
+
+var monthValues = {
+ narrow: ['e', 'f', 'm', 'a', 'm', 'j', 'j', 'a', 's', 'o', 'n', 'd'],
+ abbreviated: [
+ 'xan',
+ 'feb',
+ 'mar',
+ 'abr',
+ 'mai',
+ 'xun',
+ 'xul',
+ 'ago',
+ 'set',
+ 'out',
+ 'nov',
+ 'dec'
+ ],
+ wide: [
+ 'xaneiro',
+ 'febreiro',
+ 'marzo',
+ 'abril',
+ 'maio',
+ 'xuño',
+ 'xullo',
+ 'agosto',
+ 'setembro',
+ 'outubro',
+ 'novembro',
+ 'decembro'
+ ]
+}
+
+var dayValues = {
+ narrow: ['d', 'l', 'm', 'm', 'j', 'v', 's'],
+ short: ['do', 'lu', 'ma', 'me', 'xo', 've', 'sa'],
+ abbreviated: ['dom', 'lun', 'mar', 'mer', 'xov', 'ven', 'sab'],
+ wide: ['domingo', 'luns', 'martes', 'mércores', 'xoves', 'venres', 'sábado']
+}
+
+var dayPeriodValues = {
+ narrow: {
+ am: 'a',
+ pm: 'p',
+ midnight: 'mn',
+ noon: 'md',
+ morning: 'mañá',
+ afternoon: 'tarde',
+ evening: 'tarde',
+ night: 'noite'
+ },
+ abbreviated: {
+ am: 'AM',
+ pm: 'PM',
+ midnight: 'medianoite',
+ noon: 'mediodía',
+ morning: 'mañá',
+ afternoon: 'tarde',
+ evening: 'tardiña',
+ night: 'noite'
+ },
+ wide: {
+ am: 'a.m.',
+ pm: 'p.m.',
+ midnight: 'medianoite',
+ noon: 'mediodía',
+ morning: 'mañá',
+ afternoon: 'tarde',
+ evening: 'tardiña',
+ night: 'noite'
+ }
+}
+var formattingDayPeriodValues = {
+ narrow: {
+ am: 'a',
+ pm: 'p',
+ midnight: 'mn',
+ noon: 'md',
+ morning: 'da mañá',
+ afternoon: 'da tarde',
+ evening: 'da tardiña',
+ night: 'da noite'
+ },
+ abbreviated: {
+ am: 'AM',
+ pm: 'PM',
+ midnight: 'medianoite',
+ noon: 'mediodía',
+ morning: 'da mañá',
+ afternoon: 'da tarde',
+ evening: 'da tardiña',
+ night: 'da noite'
+ },
+ wide: {
+ am: 'a.m.',
+ pm: 'p.m.',
+ midnight: 'medianoite',
+ noon: 'mediodía',
+ morning: 'da mañá',
+ afternoon: 'da tarde',
+ evening: 'da tardiña',
+ night: 'da noite'
+ }
+}
+
+function ordinalNumber(dirtyNumber) {
+ var number = Number(dirtyNumber)
+ return number + 'º'
+}
+
+var localize = {
+ ordinalNumber: ordinalNumber,
+
+ era: buildLocalizeFn({
+ values: eraValues,
+ defaultWidth: 'wide'
+ }),
+
+ quarter: buildLocalizeFn({
+ values: quarterValues,
+ defaultWidth: 'wide',
+ argumentCallback: function(quarter) {
+ return Number(quarter) - 1
+ }
+ }),
+
+ month: buildLocalizeFn({
+ values: monthValues,
+ defaultWidth: 'wide'
+ }),
+
+ day: buildLocalizeFn({
+ values: dayValues,
+ defaultWidth: 'wide'
+ }),
+
+ dayPeriod: buildLocalizeFn({
+ values: dayPeriodValues,
+ defaultWidth: 'wide',
+ formattingValues: formattingDayPeriodValues,
+ defaultFormattingWidth: 'wide'
+ })
+}
+
+export default localize
diff --git a/date-fns/src/locale/gl/_lib/match/index.js b/date-fns/src/locale/gl/_lib/match/index.js
new file mode 100644
index 0000000..08a957c
--- /dev/null
+++ b/date-fns/src/locale/gl/_lib/match/index.js
@@ -0,0 +1,141 @@
+import buildMatchPatternFn from '../../../_lib/buildMatchPatternFn/index'
+import buildMatchFn from '../../../_lib/buildMatchFn/index'
+
+var matchOrdinalNumberPattern = /^(\d+)(º)?/i
+var parseOrdinalNumberPattern = /\d+/i
+
+var matchEraPatterns = {
+ narrow: /^(ac|dc|a|d)/i,
+ abbreviated: /^(a\.?\s?c\.?|a\.?\s?e\.?\s?c\.?|d\.?\s?c\.?|e\.?\s?c\.?)/i,
+ wide: /^(antes de cristo|antes da era com[uú]n|despois de cristo|era com[uú]n)/i
+}
+var parseEraPatterns = {
+ any: [/^ac/i, /^dc/i],
+ wide: [
+ /^(antes de cristo|antes da era com[uú]n)/i,
+ /^(despois de cristo|era com[uú]n)/i
+ ]
+}
+
+var matchQuarterPatterns = {
+ narrow: /^[1234]/i,
+ abbreviated: /^T[1234]/i,
+ wide: /^[1234](º)? trimestre/i
+}
+var parseQuarterPatterns = {
+ any: [/1/i, /2/i, /3/i, /4/i]
+}
+
+var matchMonthPatterns = {
+ narrow: /^[xfmasond]/i,
+ abbreviated: /^(xan|feb|mar|abr|mai|xun|xul|ago|set|out|nov|dec)/i,
+ wide: /^(xaneiro|febreiro|marzo|abril|maio|xuño|xullo|agosto|setembro|outubro|novembro|decembro)/i
+}
+var parseMonthPatterns = {
+ narrow: [
+ /^x/i,
+ /^f/i,
+ /^m/i,
+ /^a/i,
+ /^m/i,
+ /^x/i,
+ /^x/i,
+ /^a/i,
+ /^s/i,
+ /^o/i,
+ /^n/i,
+ /^d/i
+ ],
+ any: [
+ /^xan/i,
+ /^feb/i,
+ /^mar/i,
+ /^abr/i,
+ /^mai/i,
+ /^xun/i,
+ /^xul/i,
+ /^ago/i,
+ /^set/i,
+ /^out/i,
+ /^nov/i,
+ /^dec/i
+ ]
+}
+
+var matchDayPatterns = {
+ narrow: /^[dlmxvs]/i,
+ short: /^(do|lu|ma|me|xo|ve|sa)/i,
+ abbreviated: /^(dom|lun|mar|mer|xov|ven|sab)/i,
+ wide: /^(domingo|luns|martes|m[eé]rcores|xoves|venres|s[áa]bado)/i
+}
+var parseDayPatterns = {
+ narrow: [/^d/i, /^l/i, /^m/i, /^m/i, /^x/i, /^v/i, /^s/i],
+ any: [/^do/i, /^lu/i, /^ma/i, /^me/i, /^xo/i, /^ve/i, /^sa/i]
+}
+
+var matchDayPeriodPatterns = {
+ narrow: /^(a|p|mn|md|(da|[aá]s) (mañ[aá]|tarde|noite))/i,
+ any: /^([ap]\.?\s?m\.?|medianoite|mediod[ií]a|(da|[aá]s) (mañ[aá]|tarde|noite))/i
+}
+var parseDayPeriodPatterns = {
+ any: {
+ am: /^a/i,
+ pm: /^p/i,
+ midnight: /^mn/i,
+ noon: /^md/i,
+ morning: /mañ[aá]/i,
+ afternoon: /tarde/i,
+ evening: /tardiña/i,
+ night: /noite/i
+ }
+}
+
+var match = {
+ ordinalNumber: buildMatchPatternFn({
+ matchPattern: matchOrdinalNumberPattern,
+ parsePattern: parseOrdinalNumberPattern,
+ valueCallback: function(value) {
+ return parseInt(value, 10)
+ }
+ }),
+
+ era: buildMatchFn({
+ matchPatterns: matchEraPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseEraPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ quarter: buildMatchFn({
+ matchPatterns: matchQuarterPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseQuarterPatterns,
+ defaultParseWidth: 'any',
+ valueCallback: function(index) {
+ return index + 1
+ }
+ }),
+
+ month: buildMatchFn({
+ matchPatterns: matchMonthPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseMonthPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ day: buildMatchFn({
+ matchPatterns: matchDayPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseDayPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ dayPeriod: buildMatchFn({
+ matchPatterns: matchDayPeriodPatterns,
+ defaultMatchWidth: 'any',
+ parsePatterns: parseDayPeriodPatterns,
+ defaultParseWidth: 'any'
+ })
+}
+
+export default match
diff --git a/date-fns/src/locale/gl/index.d.ts b/date-fns/src/locale/gl/index.d.ts
new file mode 100644
index 0000000..67954c6
--- /dev/null
+++ b/date-fns/src/locale/gl/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { gl } from 'date-fns/locale'
+export default gl
diff --git a/date-fns/src/locale/gl/index.js b/date-fns/src/locale/gl/index.js
new file mode 100644
index 0000000..67561fe
--- /dev/null
+++ b/date-fns/src/locale/gl/index.js
@@ -0,0 +1,29 @@
+import formatDistance from './_lib/formatDistance/index'
+import formatLong from './_lib/formatLong/index'
+import formatRelative from './_lib/formatRelative/index'
+import localize from './_lib/localize/index'
+import match from './_lib/match/index'
+
+/**
+ * @type {Locale}
+ * @category Locales
+ * @summary Galician locale.
+ * @language Galician
+ * @iso-639-2 glg
+ * @author Alberto Doval - Cocodin Technology[@cocodinTech]{@link https://github.com/cocodinTech}
+ * @author Fidel Pita [@fidelpita]{@link https://github.com/fidelpita}
+ */
+var locale = {
+ code: 'gl',
+ formatDistance: formatDistance,
+ formatLong: formatLong,
+ formatRelative: formatRelative,
+ localize: localize,
+ match: match,
+ options: {
+ weekStartsOn: 1 /* Monday */,
+ firstWeekContainsDate: 1
+ }
+}
+
+export default locale
diff --git a/date-fns/src/locale/gl/index.js.flow b/date-fns/src/locale/gl/index.js.flow
new file mode 100644
index 0000000..b9dfe66
--- /dev/null
+++ b/date-fns/src/locale/gl/index.js.flow
@@ -0,0 +1,35 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+declare module.exports: Locale
diff --git a/date-fns/src/locale/gl/snapshot.md b/date-fns/src/locale/gl/snapshot.md
new file mode 100644
index 0000000..46fa888
--- /dev/null
+++ b/date-fns/src/locale/gl/snapshot.md
@@ -0,0 +1,304 @@
+# Galician (gl) locale
+
+## `format` and `parse`
+
+| Title | Token string | Date | `format` result | `parse` result |
+| ------------------------------- | ------------ | ------------------------ | --------------------------------------------------- | ------------------------ |
+| Calendar year | yo | 1987-02-11T12:13:14.015Z | 1987º | 1987-01-01T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 5º | 0005-01-01T00:00:00.000Z |
+| Local week-numbering year | Yo | 1987-02-11T12:13:14.015Z | 1987º | 1986-12-29T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 5º | 0004-12-27T00:00:00.000Z |
+| Quarter (formatting) | Qo | 2019-01-01T12:13:14.015Z | 1º | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2º | 2019-04-01T00:00:00.000Z |
+| | QQQ | 2019-01-01T12:13:14.015Z | T1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | T2 | 2019-04-01T00:00:00.000Z |
+| | QQQQ | 2019-01-01T12:13:14.015Z | 1º trimestre | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2º trimestre | 2019-04-01T00:00:00.000Z |
+| | QQQQQ | 2019-01-01T12:13:14.015Z | 1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2 | 2019-04-01T00:00:00.000Z |
+| Quarter (stand-alone) | qo | 2019-01-01T12:13:14.015Z | 1º | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2º | 2019-04-01T00:00:00.000Z |
+| | qqq | 2019-01-01T12:13:14.015Z | T1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | T2 | 2019-04-01T00:00:00.000Z |
+| | qqqq | 2019-01-01T12:13:14.015Z | 1º trimestre | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2º trimestre | 2019-04-01T00:00:00.000Z |
+| Month (formatting) | Mo | 2019-02-11T12:13:14.015Z | 2º | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7º | 2019-07-01T00:00:00.000Z |
+| | MMM | 2019-02-11T12:13:14.015Z | feb | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | xul | 2019-07-01T00:00:00.000Z |
+| | MMMM | 2019-02-11T12:13:14.015Z | febreiro | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | xullo | 2019-07-01T00:00:00.000Z |
+| | MMMMM | 2019-02-11T12:13:14.015Z | f | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | j | Invalid Date |
+| Month (stand-alone) | Lo | 2019-02-11T12:13:14.015Z | 2º | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7º | 2019-07-01T00:00:00.000Z |
+| | LLL | 2019-02-11T12:13:14.015Z | feb | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | xul | 2019-07-01T00:00:00.000Z |
+| | LLLL | 2019-02-11T12:13:14.015Z | febreiro | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | xullo | 2019-07-01T00:00:00.000Z |
+| | LLLLL | 2019-02-11T12:13:14.015Z | f | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | j | Invalid Date |
+| Local week of year | wo | 2019-01-01T12:13:14.015Z | 1º | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48º | 2019-11-25T00:00:00.000Z |
+| ISO week of year | Io | 2019-01-01T12:13:14.015Z | 1º | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48º | 2019-11-25T00:00:00.000Z |
+| Day of month | do | 2019-02-11T12:13:14.015Z | 11º | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-28T12:13:14.015Z | 28º | 2019-02-28T00:00:00.000Z |
+| Day of year | Do | 2019-02-11T12:13:14.015Z | 42º | 2019-02-11T00:00:00.000Z |
+| | | 2019-12-31T12:13:14.015Z | 365º | 2019-12-31T00:00:00.000Z |
+| Day of week (formatting) | E | 2019-02-11T12:13:14.015Z | lun | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ven | 2019-02-15T00:00:00.000Z |
+| | EE | 2019-02-11T12:13:14.015Z | lun | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ven | 2019-02-15T00:00:00.000Z |
+| | EEE | 2019-02-11T12:13:14.015Z | lun | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ven | 2019-02-15T00:00:00.000Z |
+| | EEEE | 2019-02-11T12:13:14.015Z | luns | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | venres | 2019-02-15T00:00:00.000Z |
+| | EEEEE | 2019-02-11T12:13:14.015Z | l | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | v | 2019-02-15T00:00:00.000Z |
+| | EEEEEE | 2019-02-11T12:13:14.015Z | lu | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ve | 2019-02-15T00:00:00.000Z |
+| ISO day of week (formatting) | io | 2019-02-11T12:13:14.015Z | 1º | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5º | 2019-02-15T00:00:00.000Z |
+| | iii | 2019-02-11T12:13:14.015Z | lun | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ven | 2019-02-15T00:00:00.000Z |
+| | iiii | 2019-02-11T12:13:14.015Z | luns | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | venres | 2019-02-15T00:00:00.000Z |
+| | iiiii | 2019-02-11T12:13:14.015Z | l | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | v | 2019-02-15T00:00:00.000Z |
+| | iiiiii | 2019-02-11T12:13:14.015Z | lu | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ve | 2019-02-15T00:00:00.000Z |
+| Local day of week (formatting) | eo | 2019-02-11T12:13:14.015Z | 1º | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5º | 2019-02-15T00:00:00.000Z |
+| | eee | 2019-02-11T12:13:14.015Z | lun | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ven | 2019-02-15T00:00:00.000Z |
+| | eeee | 2019-02-11T12:13:14.015Z | luns | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | venres | 2019-02-15T00:00:00.000Z |
+| | eeeee | 2019-02-11T12:13:14.015Z | l | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | v | 2019-02-15T00:00:00.000Z |
+| | eeeeee | 2019-02-11T12:13:14.015Z | lu | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ve | 2019-02-15T00:00:00.000Z |
+| Local day of week (stand-alone) | co | 2019-02-11T12:13:14.015Z | 1º | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5º | 2019-02-15T00:00:00.000Z |
+| | ccc | 2019-02-11T12:13:14.015Z | lun | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ven | 2019-02-15T00:00:00.000Z |
+| | cccc | 2019-02-11T12:13:14.015Z | luns | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | venres | 2019-02-15T00:00:00.000Z |
+| | ccccc | 2019-02-11T12:13:14.015Z | l | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | v | 2019-02-15T00:00:00.000Z |
+| | cccccc | 2019-02-11T12:13:14.015Z | lu | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ve | 2019-02-15T00:00:00.000Z |
+| AM, PM | a | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | aa | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | aaa | 2019-02-11T11:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | aaaa | 2019-02-11T11:13:14.015Z | a.m. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | p.m. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | p.m. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | a.m. | 2019-02-11T00:00:00.000Z |
+| | aaaaa | 2019-02-11T11:13:14.015Z | a | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | p | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | p | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | a | 2019-02-11T00:00:00.000Z |
+| AM, PM, noon, midnight | b | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | bb | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | bbb | 2019-02-11T11:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | bbbb | 2019-02-11T11:13:14.015Z | a.m. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | p.m. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | p.m. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | a.m. | 2019-02-11T00:00:00.000Z |
+| | bbbbb | 2019-02-11T11:13:14.015Z | a | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | p | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | p | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | a | 2019-02-11T00:00:00.000Z |
+| Flexible day period | B | 2019-02-11T11:13:14.015Z | da mañá | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | da tarde | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | da tardiña | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | da noite | 2019-02-11T00:00:00.000Z |
+| | BB | 2019-02-11T11:13:14.015Z | da mañá | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | da tarde | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | da tardiña | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | da noite | 2019-02-11T00:00:00.000Z |
+| | BBB | 2019-02-11T11:13:14.015Z | da mañá | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | da tarde | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | da tardiña | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | da noite | 2019-02-11T00:00:00.000Z |
+| | BBBB | 2019-02-11T11:13:14.015Z | da mañá | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | da tarde | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | da tardiña | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | da noite | 2019-02-11T00:00:00.000Z |
+| | BBBBB | 2019-02-11T11:13:14.015Z | da mañá | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | da tarde | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | da tardiña | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | da noite | 2019-02-11T00:00:00.000Z |
+| Hour [1-12] | ho | 2019-02-11T11:13:14.015Z | 11º | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11º | 2019-02-11T23:00:00.000Z |
+| Hour [0-23] | Ho | 2019-02-11T11:13:14.015Z | 11º | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23º | 2019-02-11T23:00:00.000Z |
+| Hour [0-11] | Ko | 2019-02-11T11:13:14.015Z | 11º | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11º | 2019-02-11T23:00:00.000Z |
+| Hour [1-24] | ko | 2019-02-11T11:13:14.015Z | 11º | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23º | 2019-02-11T23:00:00.000Z |
+| Minute | mo | 2019-01-01T12:01:14.015Z | 1º | 2019-01-01T12:01:00.000Z |
+| | | 2019-04-01T12:55:14.015Z | 55º | 2019-04-01T12:55:00.000Z |
+| Second | so | 2019-01-01T12:13:01.015Z | 1º | 2019-01-01T12:13:01.000Z |
+| | | 2019-04-01T12:13:55.015Z | 55º | 2019-04-01T12:13:55.000Z |
+| Long localized date | P | 1987-02-11T12:13:14.015Z | 11/02/1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29/05/1453 | 1453-05-29T00:00:00.000Z |
+| | PP | 1987-02-11T12:13:14.015Z | 11 feb 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 mai 1453 | 1453-05-29T00:00:00.000Z |
+| | PPP | 1987-02-11T12:13:14.015Z | 11 de febreiro 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 de maio 1453 | 1453-05-29T00:00:00.000Z |
+| | PPPP | 1987-02-11T12:13:14.015Z | mércores, 11 de febreiro 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | domingo, 29 de maio 1453 | 1453-05-29T00:00:00.000Z |
+| Long localized time | p | 1987-02-11T12:13:14.015Z | 12:13 | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 23:59 | 1453-05-29T23:59:00.000Z |
+| | pp | 1987-02-11T12:13:14.015Z | 12:13:14 | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 | 1453-05-29T23:59:59.000Z |
+| | ppp | 1987-02-11T12:13:14.015Z | 12:13:14 GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 GMT+0 | Errored |
+| | pppp | 1987-02-11T12:13:14.015Z | 12:13:14 GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 GMT+00:00 | Errored |
+| Combination of date and time | Pp | 1987-02-11T12:13:14.015Z | 11/02/1987, 12:13 | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29/05/1453, 23:59 | 1453-05-29T23:59:00.000Z |
+| | PPpp | 1987-02-11T12:13:14.015Z | 11 feb 1987, 12:13:14 | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 mai 1453, 23:59:59 | 1453-05-29T23:59:59.000Z |
+| | PPPppp | 1987-02-11T12:13:14.015Z | 11 de febreiro 1987 ás 12:13:14 GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 29 de maio 1453 ás 23:59:59 GMT+0 | Errored |
+| | PPPPpppp | 1987-02-11T12:13:14.015Z | mércores, 11 de febreiro 1987 ás 12:13:14 GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | domingo, 29 de maio 1453 ás 23:59:59 GMT+00:00 | Errored |
+
+## `formatDistance`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `includeSeconds: true` | `addSuffix: true` |
+| ------------------------ | ------------------ | ---------------------- | ---------------------- |
+| 2006-01-01T00:00:00.000Z | arredor de 6 anos | arredor de 6 anos | en arredor de 6 anos |
+| 2005-01-01T00:00:00.000Z | arredor de 5 anos | arredor de 5 anos | en arredor de 5 anos |
+| 2004-01-01T00:00:00.000Z | arredor de 4 anos | arredor de 4 anos | en arredor de 4 anos |
+| 2003-01-01T00:00:00.000Z | arredor de 3 anos | arredor de 3 anos | en arredor de 3 anos |
+| 2002-01-01T00:00:00.000Z | arredor de 2 anos | arredor de 2 anos | en arredor de 2 anos |
+| 2001-06-01T00:00:00.000Z | máis dun ano | máis dun ano | en máis dun ano |
+| 2001-02-01T00:00:00.000Z | arredor dun ano | arredor dun ano | en arredor dun ano |
+| 2001-01-01T00:00:00.000Z | arredor dun ano | arredor dun ano | en arredor dun ano |
+| 2000-06-01T00:00:00.000Z | 5 meses | 5 meses | en 5 meses |
+| 2000-03-01T00:00:00.000Z | 2 meses | 2 meses | en 2 meses |
+| 2000-02-01T00:00:00.000Z | arredor de 1 mes | arredor de 1 mes | en arredor de 1 mes |
+| 2000-01-15T00:00:00.000Z | 14 días | 14 días | en 14 días |
+| 2000-01-02T00:00:00.000Z | 1 día | 1 día | en 1 día |
+| 2000-01-01T06:00:00.000Z | arredor de 6 horas | arredor de 6 horas | en arredor de 6 horas |
+| 2000-01-01T01:00:00.000Z | arredor dunha hora | arredor dunha hora | en arredor dunha hora |
+| 2000-01-01T00:45:00.000Z | arredor dunha hora | arredor dunha hora | en arredor dunha hora |
+| 2000-01-01T00:30:00.000Z | 30 minutos | 30 minutos | en 30 minutos |
+| 2000-01-01T00:15:00.000Z | 15 minutos | 15 minutos | en 15 minutos |
+| 2000-01-01T00:01:00.000Z | 1 minuto | 1 minuto | en 1 minuto |
+| 2000-01-01T00:00:25.000Z | menos dun minuto | medio minuto | en menos dun minuto |
+| 2000-01-01T00:00:15.000Z | menos dun minuto | menos de 20 segundos | en menos dun minuto |
+| 2000-01-01T00:00:05.000Z | menos dun minuto | menos de 10 segundos | en menos dun minuto |
+| 2000-01-01T00:00:00.000Z | menos dun minuto | menos de 5 segundos | hai menos dun minuto |
+| 1999-12-31T23:59:55.000Z | menos dun minuto | menos de 10 segundos | hai menos dun minuto |
+| 1999-12-31T23:59:45.000Z | menos dun minuto | menos de 20 segundos | hai menos dun minuto |
+| 1999-12-31T23:59:35.000Z | menos dun minuto | medio minuto | hai menos dun minuto |
+| 1999-12-31T23:59:00.000Z | 1 minuto | 1 minuto | hai 1 minuto |
+| 1999-12-31T23:45:00.000Z | 15 minutos | 15 minutos | hai 15 minutos |
+| 1999-12-31T23:30:00.000Z | 30 minutos | 30 minutos | hai 30 minutos |
+| 1999-12-31T23:15:00.000Z | arredor dunha hora | arredor dunha hora | hai arredor dunha hora |
+| 1999-12-31T23:00:00.000Z | arredor dunha hora | arredor dunha hora | hai arredor dunha hora |
+| 1999-12-31T18:00:00.000Z | arredor de 6 horas | arredor de 6 horas | hai arredor de 6 horas |
+| 1999-12-30T00:00:00.000Z | 2 días | 2 días | hai 2 días |
+| 1999-12-15T00:00:00.000Z | 17 días | 17 días | hai 17 días |
+| 1999-12-01T00:00:00.000Z | arredor de 1 mes | arredor de 1 mes | hai arredor de 1 mes |
+| 1999-11-01T00:00:00.000Z | 2 meses | 2 meses | hai 2 meses |
+| 1999-06-01T00:00:00.000Z | 7 meses | 7 meses | hai 7 meses |
+| 1999-01-01T00:00:00.000Z | arredor dun ano | arredor dun ano | hai arredor dun ano |
+| 1998-12-01T00:00:00.000Z | arredor dun ano | arredor dun ano | hai arredor dun ano |
+| 1998-06-01T00:00:00.000Z | máis dun ano | máis dun ano | hai máis dun ano |
+| 1998-01-01T00:00:00.000Z | arredor de 2 anos | arredor de 2 anos | hai arredor de 2 anos |
+| 1997-01-01T00:00:00.000Z | arredor de 3 anos | arredor de 3 anos | hai arredor de 3 anos |
+| 1996-01-01T00:00:00.000Z | arredor de 4 anos | arredor de 4 anos | hai arredor de 4 anos |
+| 1995-01-01T00:00:00.000Z | arredor de 5 anos | arredor de 5 anos | hai arredor de 5 anos |
+| 1994-01-01T00:00:00.000Z | arredor de 6 anos | arredor de 6 anos | hai arredor de 6 anos |
+
+## `formatDistanceStrict`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `addSuffix: true` | With forced unit (i.e. `hour`) |
+| ------------------------ | ----------- | ----------------- | ------------------------------ |
+| 2006-01-01T00:00:00.000Z | 6 anos | en 6 anos | 52608 horas |
+| 2005-01-01T00:00:00.000Z | 5 anos | en 5 anos | 43848 horas |
+| 2004-01-01T00:00:00.000Z | 4 anos | en 4 anos | 35064 horas |
+| 2003-01-01T00:00:00.000Z | 3 anos | en 3 anos | 26304 horas |
+| 2002-01-01T00:00:00.000Z | 2 anos | en 2 anos | 17544 horas |
+| 2001-06-01T00:00:00.000Z | 1 ano | en 1 ano | 12408 horas |
+| 2001-02-01T00:00:00.000Z | 1 ano | en 1 ano | 9528 horas |
+| 2001-01-01T00:00:00.000Z | 1 ano | en 1 ano | 8784 horas |
+| 2000-06-01T00:00:00.000Z | 5 meses | en 5 meses | 3648 horas |
+| 2000-03-01T00:00:00.000Z | 2 meses | en 2 meses | 1440 horas |
+| 2000-02-01T00:00:00.000Z | 1 mes | en 1 mes | 744 horas |
+| 2000-01-15T00:00:00.000Z | 14 días | en 14 días | 336 horas |
+| 2000-01-02T00:00:00.000Z | 1 día | en 1 día | 24 horas |
+| 2000-01-01T06:00:00.000Z | 6 horas | en 6 horas | 6 horas |
+| 2000-01-01T01:00:00.000Z | 1 hora | en 1 hora | 1 hora |
+| 2000-01-01T00:45:00.000Z | 45 minutos | en 45 minutos | 1 hora |
+| 2000-01-01T00:30:00.000Z | 30 minutos | en 30 minutos | 1 hora |
+| 2000-01-01T00:15:00.000Z | 15 minutos | en 15 minutos | 0 horas |
+| 2000-01-01T00:01:00.000Z | 1 minuto | en 1 minuto | 0 horas |
+| 2000-01-01T00:00:25.000Z | 25 segundos | en 25 segundos | 0 horas |
+| 2000-01-01T00:00:15.000Z | 15 segundos | en 15 segundos | 0 horas |
+| 2000-01-01T00:00:05.000Z | 5 segundos | en 5 segundos | 0 horas |
+| 2000-01-01T00:00:00.000Z | 0 segundos | hai 0 segundos | 0 horas |
+| 1999-12-31T23:59:55.000Z | 5 segundos | hai 5 segundos | 0 horas |
+| 1999-12-31T23:59:45.000Z | 15 segundos | hai 15 segundos | 0 horas |
+| 1999-12-31T23:59:35.000Z | 25 segundos | hai 25 segundos | 0 horas |
+| 1999-12-31T23:59:00.000Z | 1 minuto | hai 1 minuto | 0 horas |
+| 1999-12-31T23:45:00.000Z | 15 minutos | hai 15 minutos | 0 horas |
+| 1999-12-31T23:30:00.000Z | 30 minutos | hai 30 minutos | 1 hora |
+| 1999-12-31T23:15:00.000Z | 45 minutos | hai 45 minutos | 1 hora |
+| 1999-12-31T23:00:00.000Z | 1 hora | hai 1 hora | 1 hora |
+| 1999-12-31T18:00:00.000Z | 6 horas | hai 6 horas | 6 horas |
+| 1999-12-30T00:00:00.000Z | 2 días | hai 2 días | 48 horas |
+| 1999-12-15T00:00:00.000Z | 17 días | hai 17 días | 408 horas |
+| 1999-12-01T00:00:00.000Z | 1 mes | hai 1 mes | 744 horas |
+| 1999-11-01T00:00:00.000Z | 2 meses | hai 2 meses | 1464 horas |
+| 1999-06-01T00:00:00.000Z | 7 meses | hai 7 meses | 5136 horas |
+| 1999-01-01T00:00:00.000Z | 1 ano | hai 1 ano | 8760 horas |
+| 1998-12-01T00:00:00.000Z | 1 ano | hai 1 ano | 9504 horas |
+| 1998-06-01T00:00:00.000Z | 2 anos | hai 2 anos | 13896 horas |
+| 1998-01-01T00:00:00.000Z | 2 anos | hai 2 anos | 17520 horas |
+| 1997-01-01T00:00:00.000Z | 3 anos | hai 3 anos | 26280 horas |
+| 1996-01-01T00:00:00.000Z | 4 anos | hai 4 anos | 35064 horas |
+| 1995-01-01T00:00:00.000Z | 5 anos | hai 5 anos | 43824 horas |
+| 1994-01-01T00:00:00.000Z | 6 anos | hai 6 anos | 52584 horas |
+
+## `formatRelative`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result |
+| ------------------------ | ---------------------- |
+| 2000-01-10T00:00:00.000Z | 10/01/2000 |
+| 2000-01-05T00:00:00.000Z | mércores ás 00:00 |
+| 2000-01-02T00:00:00.000Z | mañá ás 00:00 |
+| 2000-01-01T00:00:00.000Z | hoxe ás 00:00 |
+| 1999-12-31T00:00:00.000Z | onte ás 00:00 |
+| 1999-12-27T00:00:00.000Z | o luns pasado ás 00:00 |
+| 1999-12-21T00:00:00.000Z | 21/12/1999 |
diff --git a/date-fns/src/locale/gu/_lib/formatDistance/index.js b/date-fns/src/locale/gu/_lib/formatDistance/index.js
new file mode 100644
index 0000000..1502cc3
--- /dev/null
+++ b/date-fns/src/locale/gu/_lib/formatDistance/index.js
@@ -0,0 +1,102 @@
+// Source: https://www.unicode.org/cldr/charts/32/summary/gu.html
+var formatDistanceLocale = {
+ lessThanXSeconds: {
+ one: 'હમણાં', // CLDR #1461
+ other: '​આશરે {{count}} સેકંડ'
+ },
+
+ xSeconds: {
+ one: '1 સેકંડ',
+ other: '{{count}} સેકંડ'
+ },
+
+ halfAMinute: 'અડધી મિનિટ',
+
+ lessThanXMinutes: {
+ one: 'આ મિનિટ', // CLDR #1448
+ other: '​આશરે {{count}} મિનિટ'
+ },
+
+ xMinutes: {
+ one: '1 મિનિટ',
+ other: '{{count}} મિનિટ'
+ },
+
+ aboutXHours: {
+ one: '​આશરે 1 કલાક',
+ other: '​આશરે {{count}} કલાક'
+ },
+
+ xHours: {
+ one: '1 કલાક',
+ other: '{{count}} કલાક'
+ },
+
+ xDays: {
+ one: '1 દિવસ',
+ other: '{{count}} દિવસ'
+ },
+
+ aboutXWeeks: {
+ one: 'આશરે 1 અઠવાડિયું',
+ other: 'આશરે {{count}} અઠવાડિયા'
+ },
+
+ xWeeks: {
+ one: '1 અઠવાડિયું',
+ other: '{{count}} અઠવાડિયા'
+ },
+
+ aboutXMonths: {
+ one: 'આશરે 1 મહિનો',
+ other: 'આશરે {{count}} મહિના'
+ },
+
+ xMonths: {
+ one: '1 મહિનો',
+ other: '{{count}} મહિના'
+ },
+
+ aboutXYears: {
+ one: 'આશરે 1 વર્ષ',
+ other: 'આશરે {{count}} વર્ષ'
+ },
+
+ xYears: {
+ one: '1 વર્ષ',
+ other: '{{count}} વર્ષ'
+ },
+
+ overXYears: {
+ one: '1 વર્ષથી વધુ',
+ other: '{{count}} વર્ષથી વધુ'
+ },
+
+ almostXYears: {
+ one: 'લગભગ 1 વર્ષ',
+ other: 'લગભગ {{count}} વર્ષ'
+ }
+}
+
+export default function formatDistance(token, count, options) {
+ options = options || {}
+
+ var result
+ if (typeof formatDistanceLocale[token] === 'string') {
+ result = formatDistanceLocale[token]
+ } else if (count === 1) {
+ result = formatDistanceLocale[token].one
+ } else {
+ result = formatDistanceLocale[token].other.replace('{{count}}', count)
+ }
+
+ if (options.addSuffix) {
+ if (options.comparison > 0) {
+ return result + 'માં'
+ } else {
+ return result + ' પહેલાં'
+ }
+ }
+
+ return result
+}
diff --git a/date-fns/src/locale/gu/_lib/formatLong/index.js b/date-fns/src/locale/gu/_lib/formatLong/index.js
new file mode 100644
index 0000000..064953b
--- /dev/null
+++ b/date-fns/src/locale/gu/_lib/formatLong/index.js
@@ -0,0 +1,42 @@
+import buildFormatLongFn from '../../../_lib/buildFormatLongFn/index'
+
+//Source: https://www.unicode.org/cldr/charts/32/summary/gu.html
+var dateFormats = {
+ full: 'EEEE, d MMMM, y', // CLDR #1825
+ long: 'd MMMM, y', // CLDR #1826
+ medium: 'd MMM, y', // CLDR #1827
+ short: 'd/M/yy' // CLDR #1828
+}
+
+var timeFormats = {
+ full: 'hh:mm:ss a zzzz', // CLDR #1829
+ long: 'hh:mm:ss a z', // CLDR #1830
+ medium: 'hh:mm:ss a', // CLDR #1831
+ short: 'hh:mm a' // CLDR #1832
+}
+
+var dateTimeFormats = {
+ full: '{{date}} {{time}}', // CLDR #1833
+ long: '{{date}} {{time}}', // CLDR #1834
+ medium: '{{date}} {{time}}', // CLDR #1835
+ short: '{{date}} {{time}}' // CLDR #1836
+}
+
+var formatLong = {
+ date: buildFormatLongFn({
+ formats: dateFormats,
+ defaultWidth: 'full'
+ }),
+
+ time: buildFormatLongFn({
+ formats: timeFormats,
+ defaultWidth: 'full'
+ }),
+
+ dateTime: buildFormatLongFn({
+ formats: dateTimeFormats,
+ defaultWidth: 'full'
+ })
+}
+
+export default formatLong
diff --git a/date-fns/src/locale/gu/_lib/formatRelative/index.js b/date-fns/src/locale/gu/_lib/formatRelative/index.js
new file mode 100644
index 0000000..367399b
--- /dev/null
+++ b/date-fns/src/locale/gu/_lib/formatRelative/index.js
@@ -0,0 +1,14 @@
+// Source: https://www.unicode.org/cldr/charts/32/summary/gu.html
+
+var formatRelativeLocale = {
+ lastWeek: "'પાછલા' eeee p", // CLDR #1384
+ yesterday: "'ગઈકાલે' p", // CLDR #1409
+ today: "'આજે' p", // CLDR #1410
+ tomorrow: "'આવતીકાલે' p", // CLDR #1411
+ nextWeek: 'eeee p', // CLDR #1386
+ other: 'P'
+}
+
+export default function formatRelative(token, _date, _baseDate, _options) {
+ return formatRelativeLocale[token]
+}
diff --git a/date-fns/src/locale/gu/_lib/localize/index.js b/date-fns/src/locale/gu/_lib/localize/index.js
new file mode 100644
index 0000000..690beaf
--- /dev/null
+++ b/date-fns/src/locale/gu/_lib/localize/index.js
@@ -0,0 +1,181 @@
+import buildLocalizeFn from '../../../_lib/buildLocalizeFn/index'
+
+// https://www.unicode.org/cldr/charts/32/summary/gu.html
+// #1621 - #1630
+var eraValues = {
+ narrow: ['ઈસપૂ', 'ઈસ'],
+ abbreviated: ['ઈ.સ.પૂર્વે', 'ઈ.સ.'],
+ wide: ['ઈસવીસન પૂર્વે', 'ઈસવીસન']
+}
+
+// https://www.unicode.org/cldr/charts/32/summary/gu.html
+// #1631 - #1654
+var quarterValues = {
+ narrow: ['1', '2', '3', '4'],
+ abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],
+ wide: ['1લો ત્રિમાસ', '2જો ત્રિમાસ', '3જો ત્રિમાસ', '4થો ત્રિમાસ']
+}
+
+// Note: in English, the names of days of the week and months are capitalized.
+// If you are making a new locale based on this one, check if the same is true for the language you're working on.
+// Generally, formatted dates should look like they are in the middle of a sentence,
+// e.g. in Spanish language the weekdays and months should be in the lowercase.
+
+// https://www.unicode.org/cldr/charts/32/summary/gu.html
+// #1655 - #1726
+var monthValues = {
+ narrow: ['જા', 'ફે', 'મા', 'એ', 'મે', 'જૂ', 'જુ', 'ઓ', 'સ', 'ઓ', 'ન', 'ડિ'],
+ abbreviated: [
+ 'જાન્યુ',
+ 'ફેબ્રુ',
+ 'માર્ચ',
+ 'એપ્રિલ',
+ 'મે',
+ 'જૂન',
+ 'જુલાઈ',
+ 'ઑગસ્ટ',
+ 'સપ્ટે',
+ 'ઓક્ટો',
+ 'નવે',
+ 'ડિસે'
+ ],
+ wide: [
+ 'જાન્યુઆરી',
+ 'ફેબ્રુઆરી',
+ 'માર્ચ',
+ 'એપ્રિલ',
+ 'મે',
+ 'જૂન',
+ 'જુલાઇ',
+ 'ઓગસ્ટ',
+ 'સપ્ટેમ્બર',
+ 'ઓક્ટોબર',
+ 'નવેમ્બર',
+ 'ડિસેમ્બર'
+ ]
+}
+
+// https://www.unicode.org/cldr/charts/32/summary/gu.html
+// #1727 - #1768
+var dayValues = {
+ narrow: ['ર', 'સો', 'મં', 'બુ', 'ગુ', 'શુ', 'શ'],
+ short: ['ર', 'સો', 'મં', 'બુ', 'ગુ', 'શુ', 'શ'],
+ abbreviated: ['રવિ', 'સોમ', 'મંગળ', 'બુધ', 'ગુરુ', 'શુક્ર', 'શનિ'],
+ wide: [
+ 'રવિવાર' /* Sunday */,
+ 'સોમવાર' /* Monday */,
+ 'મંગળવાર' /* Tuesday */,
+ 'બુધવાર' /* Wednesday */,
+ 'ગુરુવાર' /* Thursday */,
+ 'શુક્રવાર' /* Friday */,
+ 'શનિવાર' /* Saturday */
+ ]
+}
+
+// https://www.unicode.org/cldr/charts/32/summary/gu.html
+// #1783 - #1824
+var dayPeriodValues = {
+ narrow: {
+ am: 'AM',
+ pm: 'PM',
+ midnight: 'મ.રાત્રિ',
+ noon: 'બ.',
+ morning: 'સવારે',
+ afternoon: 'બપોરે',
+ evening: 'સાંજે',
+ night: 'રાત્રે'
+ },
+ abbreviated: {
+ am: 'AM',
+ pm: 'PM',
+ midnight: '​મધ્યરાત્રિ',
+ noon: 'બપોરે',
+ morning: 'સવારે',
+ afternoon: 'બપોરે',
+ evening: 'સાંજે',
+ night: 'રાત્રે'
+ },
+ wide: {
+ am: 'AM',
+ pm: 'PM',
+ midnight: '​મધ્યરાત્રિ',
+ noon: 'બપોરે',
+ morning: 'સવારે',
+ afternoon: 'બપોરે',
+ evening: 'સાંજે',
+ night: 'રાત્રે'
+ }
+}
+var formattingDayPeriodValues = {
+ narrow: {
+ am: 'AM',
+ pm: 'PM',
+ midnight: 'મ.રાત્રિ',
+ noon: 'બપોરે',
+ morning: 'સવારે',
+ afternoon: 'બપોરે',
+ evening: 'સાંજે',
+ night: 'રાત્રે'
+ },
+ abbreviated: {
+ am: 'AM',
+ pm: 'PM',
+ midnight: 'મધ્યરાત્રિ',
+ noon: 'બપોરે',
+ morning: 'સવારે',
+ afternoon: 'બપોરે',
+ evening: 'સાંજે',
+ night: 'રાત્રે'
+ },
+ wide: {
+ am: 'AM',
+ pm: 'PM',
+ midnight: '​મધ્યરાત્રિ',
+ noon: 'બપોરે',
+ morning: 'સવારે',
+ afternoon: 'બપોરે',
+ evening: 'સાંજે',
+ night: 'રાત્રે'
+ }
+}
+
+function ordinalNumber(dirtyNumber, _dirtyOptions) {
+ var number = Number(dirtyNumber)
+ return number
+}
+
+var localize = {
+ ordinalNumber: ordinalNumber,
+
+ era: buildLocalizeFn({
+ values: eraValues,
+ defaultWidth: 'wide'
+ }),
+
+ quarter: buildLocalizeFn({
+ values: quarterValues,
+ defaultWidth: 'wide',
+ argumentCallback: function(quarter) {
+ return Number(quarter) - 1
+ }
+ }),
+
+ month: buildLocalizeFn({
+ values: monthValues,
+ defaultWidth: 'wide'
+ }),
+
+ day: buildLocalizeFn({
+ values: dayValues,
+ defaultWidth: 'wide'
+ }),
+
+ dayPeriod: buildLocalizeFn({
+ values: dayPeriodValues,
+ defaultWidth: 'wide',
+ formattingValues: formattingDayPeriodValues,
+ defaultFormattingWidth: 'wide'
+ })
+}
+
+export default localize
diff --git a/date-fns/src/locale/gu/_lib/match/index.js b/date-fns/src/locale/gu/_lib/match/index.js
new file mode 100644
index 0000000..5386ce3
--- /dev/null
+++ b/date-fns/src/locale/gu/_lib/match/index.js
@@ -0,0 +1,137 @@
+import buildMatchPatternFn from '../../../_lib/buildMatchPatternFn/index'
+import buildMatchFn from '../../../_lib/buildMatchFn/index'
+
+var matchOrdinalNumberPattern = /^(\d+)(લ|જ|થ|ઠ્ઠ|મ)?/i
+var parseOrdinalNumberPattern = /\d+/i
+
+var matchEraPatterns = {
+ narrow: /^(ઈસપૂ|ઈસ)/i,
+ abbreviated: /^(ઈ\.સ\.પૂર્વે|ઈ\.સ\.)/i,
+ wide: /^(ઈસવીસન\sપૂર્વે|ઈસવીસન)/i
+}
+var parseEraPatterns = {
+ any: [/^(ઈસપૂ|ઈસ)/i, /^(ઈ\.સ\.પૂર્વે|ઈ\.સ\.)/i, /^(ઈસવીસન\sપૂર્વે|ઈસવીસન)/i]
+}
+
+var matchQuarterPatterns = {
+ narrow: /^[1234]/i,
+ abbreviated: /^q[1234]/i,
+ wide: /^[1234](લો|જો|થો)? ત્રિમાસ/i
+}
+var parseQuarterPatterns = {
+ any: [/1/i, /2/i, /3/i, /4/i]
+}
+
+var matchMonthPatterns = {
+ narrow: /^[જાફેમાએમેજૂજુઓસઓનડિ]/i,
+ abbreviated: /^(જાન્યુ|ફેબ્રુ|માર્ચ|એપ્રિલ|મે|જૂન|જુલાઈ|ઑગસ્ટ|સપ્ટે|ઓક્ટો|નવે|ડિસે)/i,
+ wide: /^(જાન્યુઆરી|ફેબ્રુઆરી|માર્ચ|એપ્રિલ|મે|જૂન|જુલાઇ|ઓગસ્ટ|સપ્ટેમ્બર|ઓક્ટોબર|નવેમ્બર|ડિસેમ્બર)/i
+}
+var parseMonthPatterns = {
+ narrow: [
+ /^જા/i,
+ /^ફે/i,
+ /^મા/i,
+ /^એ/i,
+ /^મે/i,
+ /^જૂ/i,
+ /^જુ/i,
+ /^ઑગ/i,
+ /^સ/i,
+ /^ઓક્ટો/i,
+ /^ન/i,
+ /^ડિ/i
+ ],
+ any: [
+ /^જા/i,
+ /^ફે/i,
+ /^મા/i,
+ /^એ/i,
+ /^મે/i,
+ /^જૂ/i,
+ /^જુ/i,
+ /^ઑગ/i,
+ /^સ/i,
+ /^ઓક્ટો/i,
+ /^ન/i,
+ /^ડિ/i
+ ]
+}
+
+var matchDayPatterns = {
+ narrow: /^(ર|સો|મં|બુ|ગુ|શુ|શ)/i,
+ short: /^(ર|સો|મં|બુ|ગુ|શુ|શ)/i,
+ abbreviated: /^(રવિ|સોમ|મંગળ|બુધ|ગુરુ|શુક્ર|શનિ)/i,
+ wide: /^(રવિવાર|સોમવાર|મંગળવાર|બુધવાર|ગુરુવાર|શુક્રવાર|શનિવાર)/i
+}
+var parseDayPatterns = {
+ narrow: [/^ર/i, /^સો/i, /^મં/i, /^બુ/i, /^ગુ/i, /^શુ/i, /^શ/i],
+ any: [/^ર/i, /^સો/i, /^મં/i, /^બુ/i, /^ગુ/i, /^શુ/i, /^શ/i]
+}
+
+var matchDayPeriodPatterns = {
+ narrow: /^(a|p|મ\.?|સ|બ|સાં|રા)/i,
+ any: /^(a|p|મ\.?|સ|બ|સાં|રા)/i
+}
+var parseDayPeriodPatterns = {
+ any: {
+ am: /^a/i,
+ pm: /^p/i,
+ midnight: /^મ\.?/i,
+ noon: /^બ/i,
+ morning: /સ/i,
+ afternoon: /બ/i,
+ evening: /સાં/i,
+ night: /રા/i
+ }
+}
+
+var match = {
+ ordinalNumber: buildMatchPatternFn({
+ matchPattern: matchOrdinalNumberPattern,
+ parsePattern: parseOrdinalNumberPattern,
+ valueCallback: function(value) {
+ return parseInt(value, 10)
+ }
+ }),
+
+ era: buildMatchFn({
+ matchPatterns: matchEraPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseEraPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ quarter: buildMatchFn({
+ matchPatterns: matchQuarterPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseQuarterPatterns,
+ defaultParseWidth: 'any',
+ valueCallback: function(index) {
+ return index + 1
+ }
+ }),
+
+ month: buildMatchFn({
+ matchPatterns: matchMonthPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseMonthPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ day: buildMatchFn({
+ matchPatterns: matchDayPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseDayPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ dayPeriod: buildMatchFn({
+ matchPatterns: matchDayPeriodPatterns,
+ defaultMatchWidth: 'any',
+ parsePatterns: parseDayPeriodPatterns,
+ defaultParseWidth: 'any'
+ })
+}
+
+export default match
diff --git a/date-fns/src/locale/gu/index.d.ts b/date-fns/src/locale/gu/index.d.ts
new file mode 100644
index 0000000..42642b6
--- /dev/null
+++ b/date-fns/src/locale/gu/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { gu } from 'date-fns/locale'
+export default gu
diff --git a/date-fns/src/locale/gu/index.js b/date-fns/src/locale/gu/index.js
new file mode 100644
index 0000000..69026da
--- /dev/null
+++ b/date-fns/src/locale/gu/index.js
@@ -0,0 +1,28 @@
+import formatDistance from './_lib/formatDistance/index'
+import formatLong from './_lib/formatLong/index'
+import formatRelative from './_lib/formatRelative/index'
+import localize from './_lib/localize/index'
+import match from './_lib/match/index'
+
+/**
+ * @type {Locale}
+ * @category Locales
+ * @summary Gujarati locale (India).
+ * @language Gujarati
+ * @iso-639-2 guj
+ * @author Manaday Mavani [@ManadayM]{@link https://github.com/manadaym}
+ */
+var locale = {
+ code: 'gu',
+ formatDistance: formatDistance,
+ formatLong: formatLong,
+ formatRelative: formatRelative,
+ localize: localize,
+ match: match,
+ options: {
+ weekStartsOn: 1 /* Monday */,
+ firstWeekContainsDate: 4
+ }
+}
+
+export default locale
diff --git a/date-fns/src/locale/gu/index.js.flow b/date-fns/src/locale/gu/index.js.flow
new file mode 100644
index 0000000..b9dfe66
--- /dev/null
+++ b/date-fns/src/locale/gu/index.js.flow
@@ -0,0 +1,35 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+declare module.exports: Locale
diff --git a/date-fns/src/locale/gu/snapshot.md b/date-fns/src/locale/gu/snapshot.md
new file mode 100644
index 0000000..21353dd
--- /dev/null
+++ b/date-fns/src/locale/gu/snapshot.md
@@ -0,0 +1,304 @@
+# Gujarati (gu) locale
+
+## `format` and `parse`
+
+| Title | Token string | Date | `format` result | `parse` result |
+| ------------------------------- | ------------ | ------------------------ | ------------------------------------------------ | ------------------------ |
+| Calendar year | yo | 1987-02-11T12:13:14.015Z | 1987 | 1987-01-01T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 5 | 0005-01-01T00:00:00.000Z |
+| Local week-numbering year | Yo | 1987-02-11T12:13:14.015Z | 1987 | 1986-12-29T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 4 | 0003-12-29T00:00:00.000Z |
+| Quarter (formatting) | Qo | 2019-01-01T12:13:14.015Z | 1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2 | 2019-04-01T00:00:00.000Z |
+| | QQQ | 2019-01-01T12:13:14.015Z | Q1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | Q2 | 2019-04-01T00:00:00.000Z |
+| | QQQQ | 2019-01-01T12:13:14.015Z | 1લો ત્રિમાસ | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2જો ત્રિમાસ | 2019-04-01T00:00:00.000Z |
+| | QQQQQ | 2019-01-01T12:13:14.015Z | 1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2 | 2019-04-01T00:00:00.000Z |
+| Quarter (stand-alone) | qo | 2019-01-01T12:13:14.015Z | 1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2 | 2019-04-01T00:00:00.000Z |
+| | qqq | 2019-01-01T12:13:14.015Z | Q1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | Q2 | 2019-04-01T00:00:00.000Z |
+| | qqqq | 2019-01-01T12:13:14.015Z | 1લો ત્રિમાસ | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2જો ત્રિમાસ | 2019-04-01T00:00:00.000Z |
+| Month (formatting) | Mo | 2019-02-11T12:13:14.015Z | 2 | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7 | 2019-07-01T00:00:00.000Z |
+| | MMM | 2019-02-11T12:13:14.015Z | ફેબ્રુ | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | જુલાઈ | 2019-07-01T00:00:00.000Z |
+| | MMMM | 2019-02-11T12:13:14.015Z | ફેબ્રુઆરી | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | જુલાઇ | 2019-07-01T00:00:00.000Z |
+| | MMMMM | 2019-02-11T12:13:14.015Z | ફે | Invalid Date |
+| | | 2019-07-10T12:13:14.015Z | જુ | Invalid Date |
+| Month (stand-alone) | Lo | 2019-02-11T12:13:14.015Z | 2 | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7 | 2019-07-01T00:00:00.000Z |
+| | LLL | 2019-02-11T12:13:14.015Z | ફેબ્રુ | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | જુલાઈ | 2019-07-01T00:00:00.000Z |
+| | LLLL | 2019-02-11T12:13:14.015Z | ફેબ્રુઆરી | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | જુલાઇ | 2019-07-01T00:00:00.000Z |
+| | LLLLL | 2019-02-11T12:13:14.015Z | ફે | Invalid Date |
+| | | 2019-07-10T12:13:14.015Z | જુ | Invalid Date |
+| Local week of year | wo | 2019-01-01T12:13:14.015Z | 1 | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48 | 2019-11-25T00:00:00.000Z |
+| ISO week of year | Io | 2019-01-01T12:13:14.015Z | 1 | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48 | 2019-11-25T00:00:00.000Z |
+| Day of month | do | 2019-02-11T12:13:14.015Z | 11 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-28T12:13:14.015Z | 28 | 2019-02-28T00:00:00.000Z |
+| Day of year | Do | 2019-02-11T12:13:14.015Z | 42 | 2019-02-11T00:00:00.000Z |
+| | | 2019-12-31T12:13:14.015Z | 365 | 2019-12-31T00:00:00.000Z |
+| Day of week (formatting) | E | 2019-02-11T12:13:14.015Z | સોમ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | શુક્ર | 2019-02-15T00:00:00.000Z |
+| | EE | 2019-02-11T12:13:14.015Z | સોમ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | શુક્ર | 2019-02-15T00:00:00.000Z |
+| | EEE | 2019-02-11T12:13:14.015Z | સોમ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | શુક્ર | 2019-02-15T00:00:00.000Z |
+| | EEEE | 2019-02-11T12:13:14.015Z | સોમવાર | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | શુક્રવાર | 2019-02-15T00:00:00.000Z |
+| | EEEEE | 2019-02-11T12:13:14.015Z | સો | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | શુ | 2019-02-15T00:00:00.000Z |
+| | EEEEEE | 2019-02-11T12:13:14.015Z | સો | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | શુ | 2019-02-15T00:00:00.000Z |
+| ISO day of week (formatting) | io | 2019-02-11T12:13:14.015Z | 1 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5 | 2019-02-15T00:00:00.000Z |
+| | iii | 2019-02-11T12:13:14.015Z | સોમ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | શુક્ર | 2019-02-15T00:00:00.000Z |
+| | iiii | 2019-02-11T12:13:14.015Z | સોમવાર | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | શુક્રવાર | 2019-02-15T00:00:00.000Z |
+| | iiiii | 2019-02-11T12:13:14.015Z | સો | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | શુ | 2019-02-15T00:00:00.000Z |
+| | iiiiii | 2019-02-11T12:13:14.015Z | સો | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | શુ | 2019-02-15T00:00:00.000Z |
+| Local day of week (formatting) | eo | 2019-02-11T12:13:14.015Z | 1 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5 | 2019-02-15T00:00:00.000Z |
+| | eee | 2019-02-11T12:13:14.015Z | સોમ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | શુક્ર | 2019-02-15T00:00:00.000Z |
+| | eeee | 2019-02-11T12:13:14.015Z | સોમવાર | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | શુક્રવાર | 2019-02-15T00:00:00.000Z |
+| | eeeee | 2019-02-11T12:13:14.015Z | સો | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | શુ | 2019-02-15T00:00:00.000Z |
+| | eeeeee | 2019-02-11T12:13:14.015Z | સો | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | શુ | 2019-02-15T00:00:00.000Z |
+| Local day of week (stand-alone) | co | 2019-02-11T12:13:14.015Z | 1 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5 | 2019-02-15T00:00:00.000Z |
+| | ccc | 2019-02-11T12:13:14.015Z | સોમ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | શુક્ર | 2019-02-15T00:00:00.000Z |
+| | cccc | 2019-02-11T12:13:14.015Z | સોમવાર | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | શુક્રવાર | 2019-02-15T00:00:00.000Z |
+| | ccccc | 2019-02-11T12:13:14.015Z | સો | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | શુ | 2019-02-15T00:00:00.000Z |
+| | cccccc | 2019-02-11T12:13:14.015Z | સો | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | શુ | 2019-02-15T00:00:00.000Z |
+| AM, PM | a | 2019-02-11T11:13:14.015Z | AM | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | PM | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | PM | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | AM | Invalid Date |
+| | aa | 2019-02-11T11:13:14.015Z | AM | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | PM | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | PM | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | AM | Invalid Date |
+| | aaa | 2019-02-11T11:13:14.015Z | am | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | pm | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | pm | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | am | Invalid Date |
+| | aaaa | 2019-02-11T11:13:14.015Z | AM | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | PM | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | PM | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | AM | Invalid Date |
+| | aaaaa | 2019-02-11T11:13:14.015Z | AM | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | PM | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | PM | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | AM | Invalid Date |
+| AM, PM, noon, midnight | b | 2019-02-11T11:13:14.015Z | AM | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | PM | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | PM | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | AM | Invalid Date |
+| | bb | 2019-02-11T11:13:14.015Z | AM | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | PM | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | PM | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | AM | Invalid Date |
+| | bbb | 2019-02-11T11:13:14.015Z | am | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | pm | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | pm | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | am | Invalid Date |
+| | bbbb | 2019-02-11T11:13:14.015Z | AM | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | PM | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | PM | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | AM | Invalid Date |
+| | bbbbb | 2019-02-11T11:13:14.015Z | AM | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | PM | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | PM | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | AM | Invalid Date |
+| Flexible day period | B | 2019-02-11T11:13:14.015Z | સવારે | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | બપોરે | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | સાંજે | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | રાત્રે | Invalid Date |
+| | BB | 2019-02-11T11:13:14.015Z | સવારે | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | બપોરે | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | સાંજે | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | રાત્રે | Invalid Date |
+| | BBB | 2019-02-11T11:13:14.015Z | સવારે | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | બપોરે | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | સાંજે | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | રાત્રે | Invalid Date |
+| | BBBB | 2019-02-11T11:13:14.015Z | સવારે | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | બપોરે | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | સાંજે | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | રાત્રે | Invalid Date |
+| | BBBBB | 2019-02-11T11:13:14.015Z | સવારે | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | બપોરે | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | સાંજે | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | રાત્રે | Invalid Date |
+| Hour [1-12] | ho | 2019-02-11T11:13:14.015Z | 11 | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11 | 2019-02-11T23:00:00.000Z |
+| Hour [0-23] | Ho | 2019-02-11T11:13:14.015Z | 11 | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23 | 2019-02-11T23:00:00.000Z |
+| Hour [0-11] | Ko | 2019-02-11T11:13:14.015Z | 11 | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11 | 2019-02-11T23:00:00.000Z |
+| Hour [1-24] | ko | 2019-02-11T11:13:14.015Z | 11 | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23 | 2019-02-11T23:00:00.000Z |
+| Minute | mo | 2019-01-01T12:01:14.015Z | 1 | 2019-01-01T12:01:00.000Z |
+| | | 2019-04-01T12:55:14.015Z | 55 | 2019-04-01T12:55:00.000Z |
+| Second | so | 2019-01-01T12:13:01.015Z | 1 | 2019-01-01T12:13:01.000Z |
+| | | 2019-04-01T12:13:55.015Z | 55 | 2019-04-01T12:13:55.000Z |
+| Long localized date | P | 1987-02-11T12:13:14.015Z | 11/2/87 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29/5/53 | 1453-05-29T00:00:00.000Z |
+| | PP | 1987-02-11T12:13:14.015Z | 11 ફેબ્રુ, 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 મે, 1453 | 1453-05-29T00:00:00.000Z |
+| | PPP | 1987-02-11T12:13:14.015Z | 11 ફેબ્રુઆરી, 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 મે, 1453 | 1453-05-29T00:00:00.000Z |
+| | PPPP | 1987-02-11T12:13:14.015Z | બુધવાર, 11 ફેબ્રુઆરી, 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | રવિવાર, 29 મે, 1453 | 1453-05-29T00:00:00.000Z |
+| Long localized time | p | 1987-02-11T12:13:14.015Z | 12:13 PM | Invalid Date |
+| | | 1453-05-29T23:59:59.999Z | 11:59 PM | Invalid Date |
+| | pp | 1987-02-11T12:13:14.015Z | 12:13:14 PM | Invalid Date |
+| | | 1453-05-29T23:59:59.999Z | 11:59:59 PM | Invalid Date |
+| | ppp | 1987-02-11T12:13:14.015Z | 12:13:14 PM GMT+0 | Invalid Date |
+| | | 1453-05-29T23:59:59.999Z | 11:59:59 PM GMT+0 | Invalid Date |
+| | pppp | 1987-02-11T12:13:14.015Z | 12:13:14 PM GMT+00:00 | Invalid Date |
+| | | 1453-05-29T23:59:59.999Z | 11:59:59 PM GMT+00:00 | Invalid Date |
+| Combination of date and time | Pp | 1987-02-11T12:13:14.015Z | 11/2/87 12:13 PM | Invalid Date |
+| | | 1453-05-29T23:59:59.999Z | 29/5/53 11:59 PM | Invalid Date |
+| | PPpp | 1987-02-11T12:13:14.015Z | 11 ફેબ્રુ, 1987 12:13:14 PM | Invalid Date |
+| | | 1453-05-29T23:59:59.999Z | 29 મે, 1453 11:59:59 PM | Invalid Date |
+| | PPPppp | 1987-02-11T12:13:14.015Z | 11 ફેબ્રુઆરી, 1987 12:13:14 PM GMT+0 | Invalid Date |
+| | | 1453-05-29T23:59:59.999Z | 29 મે, 1453 11:59:59 PM GMT+0 | Invalid Date |
+| | PPPPpppp | 1987-02-11T12:13:14.015Z | બુધવાર, 11 ફેબ્રુઆરી, 1987 12:13:14 PM GMT+00:00 | Invalid Date |
+| | | 1453-05-29T23:59:59.999Z | રવિવાર, 29 મે, 1453 11:59:59 PM GMT+00:00 | Invalid Date |
+
+## `formatDistance`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `includeSeconds: true` | `addSuffix: true` |
+| ------------------------ | ------------ | ---------------------- | ------------------- |
+| 2006-01-01T00:00:00.000Z | આશરે 6 વર્ષ | આશરે 6 વર્ષ | આશરે 6 વર્ષમાં |
+| 2005-01-01T00:00:00.000Z | આશરે 5 વર્ષ | આશરે 5 વર્ષ | આશરે 5 વર્ષમાં |
+| 2004-01-01T00:00:00.000Z | આશરે 4 વર્ષ | આશરે 4 વર્ષ | આશરે 4 વર્ષમાં |
+| 2003-01-01T00:00:00.000Z | આશરે 3 વર્ષ | આશરે 3 વર્ષ | આશરે 3 વર્ષમાં |
+| 2002-01-01T00:00:00.000Z | આશરે 2 વર્ષ | આશરે 2 વર્ષ | આશરે 2 વર્ષમાં |
+| 2001-06-01T00:00:00.000Z | 1 વર્ષથી વધુ | 1 વર્ષથી વધુ | 1 વર્ષથી વધુમાં |
+| 2001-02-01T00:00:00.000Z | આશરે 1 વર્ષ | આશરે 1 વર્ષ | આશરે 1 વર્ષમાં |
+| 2001-01-01T00:00:00.000Z | આશરે 1 વર્ષ | આશરે 1 વર્ષ | આશરે 1 વર્ષમાં |
+| 2000-06-01T00:00:00.000Z | 5 મહિના | 5 મહિના | 5 મહિનામાં |
+| 2000-03-01T00:00:00.000Z | 2 મહિના | 2 મહિના | 2 મહિનામાં |
+| 2000-02-01T00:00:00.000Z | આશરે 1 મહિનો | આશરે 1 મહિનો | આશરે 1 મહિનોમાં |
+| 2000-01-15T00:00:00.000Z | 14 દિવસ | 14 દિવસ | 14 દિવસમાં |
+| 2000-01-02T00:00:00.000Z | 1 દિવસ | 1 દિવસ | 1 દિવસમાં |
+| 2000-01-01T06:00:00.000Z | ​આશરે 6 કલાક | ​આશરે 6 કલાક | ​આશરે 6 કલાકમાં |
+| 2000-01-01T01:00:00.000Z | ​આશરે 1 કલાક | ​આશરે 1 કલાક | ​આશરે 1 કલાકમાં |
+| 2000-01-01T00:45:00.000Z | ​આશરે 1 કલાક | ​આશરે 1 કલાક | ​આશરે 1 કલાકમાં |
+| 2000-01-01T00:30:00.000Z | 30 મિનિટ | 30 મિનિટ | 30 મિનિટમાં |
+| 2000-01-01T00:15:00.000Z | 15 મિનિટ | 15 મિનિટ | 15 મિનિટમાં |
+| 2000-01-01T00:01:00.000Z | 1 મિનિટ | 1 મિનિટ | 1 મિનિટમાં |
+| 2000-01-01T00:00:25.000Z | આ મિનિટ | અડધી મિનિટ | આ મિનિટમાં |
+| 2000-01-01T00:00:15.000Z | આ મિનિટ | ​આશરે 20 સેકંડ | આ મિનિટમાં |
+| 2000-01-01T00:00:05.000Z | આ મિનિટ | ​આશરે 10 સેકંડ | આ મિનિટમાં |
+| 2000-01-01T00:00:00.000Z | આ મિનિટ | ​આશરે 5 સેકંડ | આ મિનિટ પહેલાં |
+| 1999-12-31T23:59:55.000Z | આ મિનિટ | ​આશરે 10 સેકંડ | આ મિનિટ પહેલાં |
+| 1999-12-31T23:59:45.000Z | આ મિનિટ | ​આશરે 20 સેકંડ | આ મિનિટ પહેલાં |
+| 1999-12-31T23:59:35.000Z | આ મિનિટ | અડધી મિનિટ | આ મિનિટ પહેલાં |
+| 1999-12-31T23:59:00.000Z | 1 મિનિટ | 1 મિનિટ | 1 મિનિટ પહેલાં |
+| 1999-12-31T23:45:00.000Z | 15 મિનિટ | 15 મિનિટ | 15 મિનિટ પહેલાં |
+| 1999-12-31T23:30:00.000Z | 30 મિનિટ | 30 મિનિટ | 30 મિનિટ પહેલાં |
+| 1999-12-31T23:15:00.000Z | ​આશરે 1 કલાક | ​આશરે 1 કલાક | ​આશરે 1 કલાક પહેલાં |
+| 1999-12-31T23:00:00.000Z | ​આશરે 1 કલાક | ​આશરે 1 કલાક | ​આશરે 1 કલાક પહેલાં |
+| 1999-12-31T18:00:00.000Z | ​આશરે 6 કલાક | ​આશરે 6 કલાક | ​આશરે 6 કલાક પહેલાં |
+| 1999-12-30T00:00:00.000Z | 2 દિવસ | 2 દિવસ | 2 દિવસ પહેલાં |
+| 1999-12-15T00:00:00.000Z | 17 દિવસ | 17 દિવસ | 17 દિવસ પહેલાં |
+| 1999-12-01T00:00:00.000Z | આશરે 1 મહિનો | આશરે 1 મહિનો | આશરે 1 મહિનો પહેલાં |
+| 1999-11-01T00:00:00.000Z | 2 મહિના | 2 મહિના | 2 મહિના પહેલાં |
+| 1999-06-01T00:00:00.000Z | 7 મહિના | 7 મહિના | 7 મહિના પહેલાં |
+| 1999-01-01T00:00:00.000Z | આશરે 1 વર્ષ | આશરે 1 વર્ષ | આશરે 1 વર્ષ પહેલાં |
+| 1998-12-01T00:00:00.000Z | આશરે 1 વર્ષ | આશરે 1 વર્ષ | આશરે 1 વર્ષ પહેલાં |
+| 1998-06-01T00:00:00.000Z | 1 વર્ષથી વધુ | 1 વર્ષથી વધુ | 1 વર્ષથી વધુ પહેલાં |
+| 1998-01-01T00:00:00.000Z | આશરે 2 વર્ષ | આશરે 2 વર્ષ | આશરે 2 વર્ષ પહેલાં |
+| 1997-01-01T00:00:00.000Z | આશરે 3 વર્ષ | આશરે 3 વર્ષ | આશરે 3 વર્ષ પહેલાં |
+| 1996-01-01T00:00:00.000Z | આશરે 4 વર્ષ | આશરે 4 વર્ષ | આશરે 4 વર્ષ પહેલાં |
+| 1995-01-01T00:00:00.000Z | આશરે 5 વર્ષ | આશરે 5 વર્ષ | આશરે 5 વર્ષ પહેલાં |
+| 1994-01-01T00:00:00.000Z | આશરે 6 વર્ષ | આશરે 6 વર્ષ | આશરે 6 વર્ષ પહેલાં |
+
+## `formatDistanceStrict`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `addSuffix: true` | With forced unit (i.e. `hour`) |
+| ------------------------ | -------- | ----------------- | ------------------------------ |
+| 2006-01-01T00:00:00.000Z | 6 વર્ષ | 6 વર્ષમાં | 52608 કલાક |
+| 2005-01-01T00:00:00.000Z | 5 વર્ષ | 5 વર્ષમાં | 43848 કલાક |
+| 2004-01-01T00:00:00.000Z | 4 વર્ષ | 4 વર્ષમાં | 35064 કલાક |
+| 2003-01-01T00:00:00.000Z | 3 વર્ષ | 3 વર્ષમાં | 26304 કલાક |
+| 2002-01-01T00:00:00.000Z | 2 વર્ષ | 2 વર્ષમાં | 17544 કલાક |
+| 2001-06-01T00:00:00.000Z | 1 વર્ષ | 1 વર્ષમાં | 12408 કલાક |
+| 2001-02-01T00:00:00.000Z | 1 વર્ષ | 1 વર્ષમાં | 9528 કલાક |
+| 2001-01-01T00:00:00.000Z | 1 વર્ષ | 1 વર્ષમાં | 8784 કલાક |
+| 2000-06-01T00:00:00.000Z | 5 મહિના | 5 મહિનામાં | 3648 કલાક |
+| 2000-03-01T00:00:00.000Z | 2 મહિના | 2 મહિનામાં | 1440 કલાક |
+| 2000-02-01T00:00:00.000Z | 1 મહિનો | 1 મહિનોમાં | 744 કલાક |
+| 2000-01-15T00:00:00.000Z | 14 દિવસ | 14 દિવસમાં | 336 કલાક |
+| 2000-01-02T00:00:00.000Z | 1 દિવસ | 1 દિવસમાં | 24 કલાક |
+| 2000-01-01T06:00:00.000Z | 6 કલાક | 6 કલાકમાં | 6 કલાક |
+| 2000-01-01T01:00:00.000Z | 1 કલાક | 1 કલાકમાં | 1 કલાક |
+| 2000-01-01T00:45:00.000Z | 45 મિનિટ | 45 મિનિટમાં | 1 કલાક |
+| 2000-01-01T00:30:00.000Z | 30 મિનિટ | 30 મિનિટમાં | 1 કલાક |
+| 2000-01-01T00:15:00.000Z | 15 મિનિટ | 15 મિનિટમાં | 0 કલાક |
+| 2000-01-01T00:01:00.000Z | 1 મિનિટ | 1 મિનિટમાં | 0 કલાક |
+| 2000-01-01T00:00:25.000Z | 25 સેકંડ | 25 સેકંડમાં | 0 કલાક |
+| 2000-01-01T00:00:15.000Z | 15 સેકંડ | 15 સેકંડમાં | 0 કલાક |
+| 2000-01-01T00:00:05.000Z | 5 સેકંડ | 5 સેકંડમાં | 0 કલાક |
+| 2000-01-01T00:00:00.000Z | 0 સેકંડ | 0 સેકંડ પહેલાં | 0 કલાક |
+| 1999-12-31T23:59:55.000Z | 5 સેકંડ | 5 સેકંડ પહેલાં | 0 કલાક |
+| 1999-12-31T23:59:45.000Z | 15 સેકંડ | 15 સેકંડ પહેલાં | 0 કલાક |
+| 1999-12-31T23:59:35.000Z | 25 સેકંડ | 25 સેકંડ પહેલાં | 0 કલાક |
+| 1999-12-31T23:59:00.000Z | 1 મિનિટ | 1 મિનિટ પહેલાં | 0 કલાક |
+| 1999-12-31T23:45:00.000Z | 15 મિનિટ | 15 મિનિટ પહેલાં | 0 કલાક |
+| 1999-12-31T23:30:00.000Z | 30 મિનિટ | 30 મિનિટ પહેલાં | 1 કલાક |
+| 1999-12-31T23:15:00.000Z | 45 મિનિટ | 45 મિનિટ પહેલાં | 1 કલાક |
+| 1999-12-31T23:00:00.000Z | 1 કલાક | 1 કલાક પહેલાં | 1 કલાક |
+| 1999-12-31T18:00:00.000Z | 6 કલાક | 6 કલાક પહેલાં | 6 કલાક |
+| 1999-12-30T00:00:00.000Z | 2 દિવસ | 2 દિવસ પહેલાં | 48 કલાક |
+| 1999-12-15T00:00:00.000Z | 17 દિવસ | 17 દિવસ પહેલાં | 408 કલાક |
+| 1999-12-01T00:00:00.000Z | 1 મહિનો | 1 મહિનો પહેલાં | 744 કલાક |
+| 1999-11-01T00:00:00.000Z | 2 મહિના | 2 મહિના પહેલાં | 1464 કલાક |
+| 1999-06-01T00:00:00.000Z | 7 મહિના | 7 મહિના પહેલાં | 5136 કલાક |
+| 1999-01-01T00:00:00.000Z | 1 વર્ષ | 1 વર્ષ પહેલાં | 8760 કલાક |
+| 1998-12-01T00:00:00.000Z | 1 વર્ષ | 1 વર્ષ પહેલાં | 9504 કલાક |
+| 1998-06-01T00:00:00.000Z | 2 વર્ષ | 2 વર્ષ પહેલાં | 13896 કલાક |
+| 1998-01-01T00:00:00.000Z | 2 વર્ષ | 2 વર્ષ પહેલાં | 17520 કલાક |
+| 1997-01-01T00:00:00.000Z | 3 વર્ષ | 3 વર્ષ પહેલાં | 26280 કલાક |
+| 1996-01-01T00:00:00.000Z | 4 વર્ષ | 4 વર્ષ પહેલાં | 35064 કલાક |
+| 1995-01-01T00:00:00.000Z | 5 વર્ષ | 5 વર્ષ પહેલાં | 43824 કલાક |
+| 1994-01-01T00:00:00.000Z | 6 વર્ષ | 6 વર્ષ પહેલાં | 52584 કલાક |
+
+## `formatRelative`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result |
+| ------------------------ | --------------------- |
+| 2000-01-10T00:00:00.000Z | 10/1/00 |
+| 2000-01-05T00:00:00.000Z | બુધવાર 12:00 AM |
+| 2000-01-02T00:00:00.000Z | આવતીકાલે 12:00 AM |
+| 2000-01-01T00:00:00.000Z | આજે 12:00 AM |
+| 1999-12-31T00:00:00.000Z | ગઈકાલે 12:00 AM |
+| 1999-12-27T00:00:00.000Z | પાછલા સોમવાર 12:00 AM |
+| 1999-12-21T00:00:00.000Z | 21/12/99 |
diff --git a/date-fns/src/locale/he/_lib/formatDistance/index.js b/date-fns/src/locale/he/_lib/formatDistance/index.js
new file mode 100644
index 0000000..a900cb0
--- /dev/null
+++ b/date-fns/src/locale/he/_lib/formatDistance/index.js
@@ -0,0 +1,131 @@
+var formatDistanceLocale = {
+ lessThanXSeconds: {
+ one: 'פחות משנייה',
+ two: 'פחות משתי שניות',
+ other: 'פחות מ־{{count}} שניות'
+ },
+
+ xSeconds: {
+ one: 'שנייה',
+ two: 'שתי שניות',
+ other: '{{count}} שניות'
+ },
+
+ halfAMinute: 'חצי דקה',
+
+ lessThanXMinutes: {
+ one: 'פחות מדקה',
+ two: 'פחות משתי דקות',
+ other: 'פחות מ־{{count}} דקות'
+ },
+
+ xMinutes: {
+ one: 'דקה',
+ two: 'שתי דקות',
+ other: '{{count}} דקות'
+ },
+
+ aboutXHours: {
+ one: 'כשעה',
+ two: 'כשעתיים',
+ other: 'כ־{{count}} שעות'
+ },
+
+ xHours: {
+ one: 'שעה',
+ two: 'שעתיים',
+ other: '{{count}} שעות'
+ },
+
+ xDays: {
+ one: 'יום',
+ two: 'יומיים',
+ other: '{{count}} ימים'
+ },
+
+ aboutXWeeks: {
+ one: 'כשבוע',
+ two: 'כשבועיים',
+ other: 'כ־{{count}} שבועות'
+ },
+
+ xWeeks: {
+ one: 'שבוע',
+ two: 'שבועיים',
+ other: '{{count}} שבועות'
+ },
+
+ aboutXMonths: {
+ one: 'כחודש',
+ two: 'כחודשיים',
+ other: 'כ־{{count}} חודשים'
+ },
+
+ xMonths: {
+ one: 'חודש',
+ two: 'חודשיים',
+ other: '{{count}} חודשים'
+ },
+
+ aboutXYears: {
+ one: 'כשנה',
+ two: 'כשנתיים',
+ other: 'כ־{{count}} שנים'
+ },
+
+ xYears: {
+ one: 'שנה',
+ two: 'שנתיים',
+ other: '{{count}} שנים'
+ },
+
+ overXYears: {
+ one: 'יותר משנה',
+ two: 'יותר משנתיים',
+ other: 'יותר מ־{{count}} שנים'
+ },
+
+ almostXYears: {
+ one: 'כמעט שנה',
+ two: 'כמעט שנתיים',
+ other: 'כמעט {{count}} שנים'
+ }
+}
+
+export default function formatDistance(token, count, options) {
+ options = options || {}
+
+ // Return word instead of `in one day` or `one day ago`
+ if (token === 'xDays' && options.addSuffix && count <= 2) {
+ var past = {
+ 1: 'אתמול',
+ 2: 'שלשום'
+ }
+ var future = {
+ 1: 'מחר',
+ 2: 'מחרתיים'
+ }
+ return options.comparison > 0 ? future[count] : past[count]
+ }
+
+ var result
+ if (typeof formatDistanceLocale[token] === 'string') {
+ result = formatDistanceLocale[token]
+ } else if (count === 1) {
+ result = formatDistanceLocale[token].one
+ } else if (count === 2) {
+ result = formatDistanceLocale[token].two
+ } else {
+ result = formatDistanceLocale[token].other.replace('{{count}}', count)
+ }
+
+ if (options.addSuffix) {
+ if (options.comparison > 0) {
+ return 'בעוד ' + result
+ } else {
+ return 'לפני ' + result
+ }
+ }
+
+ return result
+}
diff --git a/date-fns/src/locale/he/_lib/formatLong/index.js b/date-fns/src/locale/he/_lib/formatLong/index.js
new file mode 100644
index 0000000..74ebc14
--- /dev/null
+++ b/date-fns/src/locale/he/_lib/formatLong/index.js
@@ -0,0 +1,41 @@
+import buildFormatLongFn from '../../../_lib/buildFormatLongFn/index'
+
+var dateFormats = {
+ full: 'EEEE, d בMMMM y',
+ long: 'd בMMMM y',
+ medium: 'd בMMM y',
+ short: 'd.M.y'
+}
+
+var timeFormats = {
+ full: 'H:mm:ss zzzz',
+ long: 'H:mm:ss z',
+ medium: 'H:mm:ss',
+ short: 'H:mm'
+}
+
+var dateTimeFormats = {
+ full: "{{date}} 'בשעה' {{time}}",
+ long: "{{date}} 'בשעה' {{time}}",
+ medium: '{{date}}, {{time}}',
+ short: '{{date}}, {{time}}'
+}
+
+var formatLong = {
+ date: buildFormatLongFn({
+ formats: dateFormats,
+ defaultWidth: 'full'
+ }),
+
+ time: buildFormatLongFn({
+ formats: timeFormats,
+ defaultWidth: 'full'
+ }),
+
+ dateTime: buildFormatLongFn({
+ formats: dateTimeFormats,
+ defaultWidth: 'full'
+ })
+}
+
+export default formatLong
diff --git a/date-fns/src/locale/he/_lib/formatRelative/index.js b/date-fns/src/locale/he/_lib/formatRelative/index.js
new file mode 100644
index 0000000..3589cc3
--- /dev/null
+++ b/date-fns/src/locale/he/_lib/formatRelative/index.js
@@ -0,0 +1,12 @@
+var formatRelativeLocale = {
+ lastWeek: "eeee 'שעבר בשעה' p",
+ yesterday: "'אתמול בשעה' p",
+ today: "'היום בשעה' p",
+ tomorrow: "'מחר בשעה' p",
+ nextWeek: "eeee 'בשעה' p",
+ other: 'P'
+}
+
+export default function formatRelative(token, _date, _baseDate, _options) {
+ return formatRelativeLocale[token]
+}
diff --git a/date-fns/src/locale/he/_lib/localize/index.js b/date-fns/src/locale/he/_lib/localize/index.js
new file mode 100644
index 0000000..c06ba32
--- /dev/null
+++ b/date-fns/src/locale/he/_lib/localize/index.js
@@ -0,0 +1,209 @@
+import buildLocalizeFn from '../../../_lib/buildLocalizeFn/index'
+
+var eraValues = {
+ narrow: ['לפנה״ס', 'לספירה'],
+ abbreviated: ['לפנה״ס', 'לספירה'],
+ wide: ['לפני הספירה', 'לספירה']
+}
+
+var quarterValues = {
+ narrow: ['1', '2', '3', '4'],
+ abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],
+ wide: ['רבעון 1', 'רבעון 2', 'רבעון 3', 'רבעון 4']
+}
+
+var monthValues = {
+ narrow: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'],
+ abbreviated: [
+ 'ינו׳',
+ 'פבר׳',
+ 'מרץ',
+ 'אפר׳',
+ 'מאי',
+ 'יוני',
+ 'יולי',
+ 'אוג׳',
+ 'ספט׳',
+ 'אוק׳',
+ 'נוב׳',
+ 'דצמ׳'
+ ],
+ wide: [
+ 'ינואר',
+ 'פברואר',
+ 'מרץ',
+ 'אפריל',
+ 'מאי',
+ 'יוני',
+ 'יולי',
+ 'אוגוסט',
+ 'ספטמבר',
+ 'אוקטובר',
+ 'נובמבר',
+ 'דצמבר'
+ ]
+}
+
+var dayValues = {
+ narrow: ['א׳', 'ב׳', 'ג׳', 'ד׳', 'ה׳', 'ו׳', 'ש׳'],
+ short: ['א׳', 'ב׳', 'ג׳', 'ד׳', 'ה׳', 'ו׳', 'ש׳'],
+ abbreviated: [
+ 'יום א׳',
+ 'יום ב׳',
+ 'יום ג׳',
+ 'יום ד׳',
+ 'יום ה׳',
+ 'יום ו׳',
+ 'שבת'
+ ],
+ wide: [
+ 'יום ראשון',
+ 'יום שני',
+ 'יום שלישי',
+ 'יום רביעי',
+ 'יום חמישי',
+ 'יום שישי',
+ 'יום שבת'
+ ]
+}
+
+var dayPeriodValues = {
+ narrow: {
+ am: 'לפנה״צ',
+ pm: 'אחה״צ',
+ midnight: 'חצות',
+ noon: 'צהריים',
+ morning: 'בוקר',
+ afternoon: 'אחר הצהריים',
+ evening: 'ערב',
+ night: 'לילה'
+ },
+ abbreviated: {
+ am: 'לפנה״צ',
+ pm: 'אחה״צ',
+ midnight: 'חצות',
+ noon: 'צהריים',
+ morning: 'בוקר',
+ afternoon: 'אחר הצהריים',
+ evening: 'ערב',
+ night: 'לילה'
+ },
+ wide: {
+ am: 'לפנה״צ',
+ pm: 'אחה״צ',
+ midnight: 'חצות',
+ noon: 'צהריים',
+ morning: 'בוקר',
+ afternoon: 'אחר הצהריים',
+ evening: 'ערב',
+ night: 'לילה'
+ }
+}
+var formattingDayPeriodValues = {
+ narrow: {
+ am: 'לפנה״צ',
+ pm: 'אחה״צ',
+ midnight: 'חצות',
+ noon: 'צהריים',
+ morning: 'בבוקר',
+ afternoon: 'בצהריים',
+ evening: 'בערב',
+ night: 'בלילה'
+ },
+ abbreviated: {
+ am: 'לפנה״צ',
+ pm: 'אחה״צ',
+ midnight: 'חצות',
+ noon: 'צהריים',
+ morning: 'בבוקר',
+ afternoon: 'אחר הצהריים',
+ evening: 'בערב',
+ night: 'בלילה'
+ },
+ wide: {
+ am: 'לפנה״צ',
+ pm: 'אחה״צ',
+ midnight: 'חצות',
+ noon: 'צהריים',
+ morning: 'בבוקר',
+ afternoon: 'אחר הצהריים',
+ evening: 'בערב',
+ night: 'בלילה'
+ }
+}
+
+function ordinalNumber(dirtyNumber, dirtyOptions) {
+ var number = Number(dirtyNumber)
+
+ // We only show words till 10
+ if (number <= 0 || number > 10) return number
+
+ var options = dirtyOptions || {}
+ var unit = String(options.unit)
+
+ var isFemale = ['year', 'hour', 'minute', 'second'].indexOf(unit) >= 0
+
+ var male = [
+ 'ראשון',
+ 'שני',
+ 'שלישי',
+ 'רביעי',
+ 'חמישי',
+ 'שישי',
+ 'שביעי',
+ 'שמיני',
+ 'תשיעי',
+ 'עשירי'
+ ]
+ var female = [
+ 'ראשונה',
+ 'שנייה',
+ 'שלישית',
+ 'רביעית',
+ 'חמישית',
+ 'שישית',
+ 'שביעית',
+ 'שמינית',
+ 'תשיעית',
+ 'עשירית'
+ ]
+
+ var index = number - 1
+ return isFemale ? female[index] : male[index]
+}
+
+var localize = {
+ ordinalNumber: ordinalNumber,
+
+ era: buildLocalizeFn({
+ values: eraValues,
+ defaultWidth: 'wide'
+ }),
+
+ quarter: buildLocalizeFn({
+ values: quarterValues,
+ defaultWidth: 'wide',
+ argumentCallback: function(quarter) {
+ return Number(quarter) - 1
+ }
+ }),
+
+ month: buildLocalizeFn({
+ values: monthValues,
+ defaultWidth: 'wide'
+ }),
+
+ day: buildLocalizeFn({
+ values: dayValues,
+ defaultWidth: 'wide'
+ }),
+
+ dayPeriod: buildLocalizeFn({
+ values: dayPeriodValues,
+ defaultWidth: 'wide',
+ formattingValues: formattingDayPeriodValues,
+ defaultFormattingWidth: 'wide'
+ })
+}
+
+export default localize
diff --git a/date-fns/src/locale/he/_lib/match/index.js b/date-fns/src/locale/he/_lib/match/index.js
new file mode 100644
index 0000000..fa4dbb5
--- /dev/null
+++ b/date-fns/src/locale/he/_lib/match/index.js
@@ -0,0 +1,140 @@
+import buildMatchPatternFn from '../../../_lib/buildMatchPatternFn/index'
+import buildMatchFn from '../../../_lib/buildMatchFn/index'
+
+var matchOrdinalNumberPattern = /^(\d+|(ראשון|שני|שלישי|רביעי|חמישי|שישי|שביעי|שמיני|תשיעי|עשירי|ראשונה|שנייה|שלישית|רביעית|חמישית|שישית|שביעית|שמינית|תשיעית|עשירית))/i
+var parseOrdinalNumberPattern = /^(\d+|רא|שנ|של|רב|ח|שי|שב|שמ|ת|ע)/i
+
+var matchEraPatterns = {
+ narrow: /^ל(ספירה|פנה״ס)/i,
+ abbreviated: /^ל(ספירה|פנה״ס)/i,
+ wide: /^ל(פני ה)?ספירה/i
+}
+var parseEraPatterns = {
+ any: [/^לפ/i, /^לס/i]
+}
+
+var matchQuarterPatterns = {
+ narrow: /^[1234]/i,
+ abbreviated: /^q[1234]/i,
+ wide: /^רבעון [1234]/i
+}
+var parseQuarterPatterns = {
+ any: [/1/i, /2/i, /3/i, /4/i]
+}
+
+var matchMonthPatterns = {
+ narrow: /^\d+/i,
+ abbreviated: /^(ינו|פבר|מרץ|אפר|מאי|יוני|יולי|אוג|ספט|אוק|נוב|דצמ)׳?/i,
+ wide: /^(ינואר|פברואר|מרץ|אפריל|מאי|יוני|יולי|אוגוסט|ספטמבר|אוקטובר|נובמבר|דצמבר)/i
+}
+var parseMonthPatterns = {
+ narrow: [
+ /^1$/i,
+ /^2/i,
+ /^3/i,
+ /^4/i,
+ /^5/i,
+ /^6/i,
+ /^7/i,
+ /^8/i,
+ /^9/i,
+ /^10/i,
+ /^11/i,
+ /^12/i
+ ],
+ any: [
+ /^ינ/i,
+ /^פ/i,
+ /^מר/i,
+ /^אפ/i,
+ /^מא/i,
+ /^יונ/i,
+ /^יול/i,
+ /^אוג/i,
+ /^ס/i,
+ /^אוק/i,
+ /^נ/i,
+ /^ד/i
+ ]
+}
+
+var matchDayPatterns = {
+ narrow: /^[אבגדהוש]׳/i,
+ short: /^[אבגדהוש]׳/i,
+ abbreviated: /^(שבת|יום (א|ב|ג|ד|ה|ו)׳)/i,
+ wide: /^יום (ראשון|שני|שלישי|רביעי|חמישי|שישי|שבת)/i
+}
+var parseDayPatterns = {
+ abbreviated: [/א׳$/i, /ב׳$/i, /ג׳$/i, /ד׳$/i, /ה׳$/i, /ו׳$/i, /^ש/i],
+ wide: [/ן$/i, /ני$/i, /לישי$/i, /עי$/i, /מישי$/i, /שישי$/i, /ת$/i],
+ any: [/^א/i, /^ב/i, /^ג/i, /^ד/i, /^ה/i, /^ו/i, /^ש/i]
+}
+
+var matchDayPeriodPatterns = {
+ any: /^(אחר ה|ב)?(חצות|צהריים|בוקר|ערב|לילה|אחה״צ|לפנה״צ)/i
+}
+var parseDayPeriodPatterns = {
+ any: {
+ am: /^לפ/i,
+ pm: /^אחה/i,
+ midnight: /^ח/i,
+ noon: /^צ/i,
+ morning: /בוקר/i,
+ afternoon: /בצ|אחר/i,
+ evening: /ערב/i,
+ night: /לילה/i
+ }
+}
+
+var ordinalName = ['רא', 'שנ', 'של', 'רב', 'ח', 'שי', 'שב', 'שמ', 'ת', 'ע']
+
+var match = {
+ ordinalNumber: buildMatchPatternFn({
+ matchPattern: matchOrdinalNumberPattern,
+ parsePattern: parseOrdinalNumberPattern,
+ valueCallback: function(value) {
+ var number = parseInt(value, 10)
+ return isNaN(number) ? ordinalName.indexOf(value) + 1 : number
+ }
+ }),
+
+ era: buildMatchFn({
+ matchPatterns: matchEraPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseEraPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ quarter: buildMatchFn({
+ matchPatterns: matchQuarterPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseQuarterPatterns,
+ defaultParseWidth: 'any',
+ valueCallback: function(index) {
+ return index + 1
+ }
+ }),
+
+ month: buildMatchFn({
+ matchPatterns: matchMonthPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseMonthPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ day: buildMatchFn({
+ matchPatterns: matchDayPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseDayPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ dayPeriod: buildMatchFn({
+ matchPatterns: matchDayPeriodPatterns,
+ defaultMatchWidth: 'any',
+ parsePatterns: parseDayPeriodPatterns,
+ defaultParseWidth: 'any'
+ })
+}
+
+export default match
diff --git a/date-fns/src/locale/he/index.d.ts b/date-fns/src/locale/he/index.d.ts
new file mode 100644
index 0000000..33d6042
--- /dev/null
+++ b/date-fns/src/locale/he/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { he } from 'date-fns/locale'
+export default he
diff --git a/date-fns/src/locale/he/index.js b/date-fns/src/locale/he/index.js
new file mode 100644
index 0000000..3194b14
--- /dev/null
+++ b/date-fns/src/locale/he/index.js
@@ -0,0 +1,28 @@
+import formatDistance from './_lib/formatDistance/index'
+import formatLong from './_lib/formatLong/index'
+import formatRelative from './_lib/formatRelative/index'
+import localize from './_lib/localize/index'
+import match from './_lib/match/index'
+
+/**
+ * @type {Locale}
+ * @category Locales
+ * @summary Hebrew locale.
+ * @language Hebrew
+ * @iso-639-2 heb
+ * @author Nir Lahad [@nirlah]{@link https://github.com/nirlah}
+ */
+var locale = {
+ code: 'he',
+ formatDistance: formatDistance,
+ formatLong: formatLong,
+ formatRelative: formatRelative,
+ localize: localize,
+ match: match,
+ options: {
+ weekStartsOn: 0 /* Sunday */,
+ firstWeekContainsDate: 1
+ }
+}
+
+export default locale
diff --git a/date-fns/src/locale/he/index.js.flow b/date-fns/src/locale/he/index.js.flow
new file mode 100644
index 0000000..b9dfe66
--- /dev/null
+++ b/date-fns/src/locale/he/index.js.flow
@@ -0,0 +1,35 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+declare module.exports: Locale
diff --git a/date-fns/src/locale/he/snapshot.md b/date-fns/src/locale/he/snapshot.md
new file mode 100644
index 0000000..9ca3f24
--- /dev/null
+++ b/date-fns/src/locale/he/snapshot.md
@@ -0,0 +1,304 @@
+# Hebrew (he) locale
+
+## `format` and `parse`
+
+| Title | Token string | Date | `format` result | `parse` result |
+| ------------------------------- | ------------ | ------------------------ | -------------------------------------------------- | ------------------------ |
+| Calendar year | yo | 1987-02-11T12:13:14.015Z | 1987 | 1987-01-01T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | חמישית | Invalid Date |
+| Local week-numbering year | Yo | 1987-02-11T12:13:14.015Z | 1987 | 1986-12-28T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | חמישית | Invalid Date |
+| Quarter (formatting) | Qo | 2019-01-01T12:13:14.015Z | ראשון | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | שני | 2019-04-01T00:00:00.000Z |
+| | QQQ | 2019-01-01T12:13:14.015Z | Q1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | Q2 | 2019-04-01T00:00:00.000Z |
+| | QQQQ | 2019-01-01T12:13:14.015Z | רבעון 1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | רבעון 2 | 2019-04-01T00:00:00.000Z |
+| | QQQQQ | 2019-01-01T12:13:14.015Z | 1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2 | 2019-04-01T00:00:00.000Z |
+| Quarter (stand-alone) | qo | 2019-01-01T12:13:14.015Z | ראשון | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | שני | 2019-04-01T00:00:00.000Z |
+| | qqq | 2019-01-01T12:13:14.015Z | Q1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | Q2 | 2019-04-01T00:00:00.000Z |
+| | qqqq | 2019-01-01T12:13:14.015Z | רבעון 1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | רבעון 2 | 2019-04-01T00:00:00.000Z |
+| Month (formatting) | Mo | 2019-02-11T12:13:14.015Z | שני | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | שביעי | 2019-07-01T00:00:00.000Z |
+| | MMM | 2019-02-11T12:13:14.015Z | פבר׳ | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | יולי | 2019-07-01T00:00:00.000Z |
+| | MMMM | 2019-02-11T12:13:14.015Z | פברואר | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | יולי | 2019-07-01T00:00:00.000Z |
+| | MMMMM | 2019-02-11T12:13:14.015Z | 2 | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7 | 2019-07-01T00:00:00.000Z |
+| Month (stand-alone) | Lo | 2019-02-11T12:13:14.015Z | שני | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | שביעי | 2019-07-01T00:00:00.000Z |
+| | LLL | 2019-02-11T12:13:14.015Z | פבר׳ | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | יולי | 2019-07-01T00:00:00.000Z |
+| | LLLL | 2019-02-11T12:13:14.015Z | פברואר | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | יולי | 2019-07-01T00:00:00.000Z |
+| | LLLLL | 2019-02-11T12:13:14.015Z | 2 | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7 | 2019-07-01T00:00:00.000Z |
+| Local week of year | wo | 2019-01-01T12:13:14.015Z | ראשון | 2018-12-30T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 49 | 2019-12-01T00:00:00.000Z |
+| ISO week of year | Io | 2019-01-01T12:13:14.015Z | ראשון | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48 | 2019-11-25T00:00:00.000Z |
+| Day of month | do | 2019-02-11T12:13:14.015Z | 11 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-28T12:13:14.015Z | 28 | 2019-02-28T00:00:00.000Z |
+| Day of year | Do | 2019-02-11T12:13:14.015Z | 42 | 2019-02-11T00:00:00.000Z |
+| | | 2019-12-31T12:13:14.015Z | 365 | 2019-12-31T00:00:00.000Z |
+| Day of week (formatting) | E | 2019-02-11T12:13:14.015Z | יום ב׳ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | יום ו׳ | 2019-02-15T00:00:00.000Z |
+| | EE | 2019-02-11T12:13:14.015Z | יום ב׳ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | יום ו׳ | 2019-02-15T00:00:00.000Z |
+| | EEE | 2019-02-11T12:13:14.015Z | יום ב׳ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | יום ו׳ | 2019-02-15T00:00:00.000Z |
+| | EEEE | 2019-02-11T12:13:14.015Z | יום שני | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | יום שישי | 2019-02-15T00:00:00.000Z |
+| | EEEEE | 2019-02-11T12:13:14.015Z | ב׳ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ו׳ | 2019-02-15T00:00:00.000Z |
+| | EEEEEE | 2019-02-11T12:13:14.015Z | ב׳ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ו׳ | 2019-02-15T00:00:00.000Z |
+| ISO day of week (formatting) | io | 2019-02-11T12:13:14.015Z | ראשון | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | חמישי | 2019-02-15T00:00:00.000Z |
+| | iii | 2019-02-11T12:13:14.015Z | יום ב׳ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | יום ו׳ | 2019-02-15T00:00:00.000Z |
+| | iiii | 2019-02-11T12:13:14.015Z | יום שני | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | יום שישי | 2019-02-15T00:00:00.000Z |
+| | iiiii | 2019-02-11T12:13:14.015Z | ב׳ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ו׳ | 2019-02-15T00:00:00.000Z |
+| | iiiiii | 2019-02-11T12:13:14.015Z | ב׳ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ו׳ | 2019-02-15T00:00:00.000Z |
+| Local day of week (formatting) | eo | 2019-02-11T12:13:14.015Z | שני | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | שישי | 2019-02-15T00:00:00.000Z |
+| | eee | 2019-02-11T12:13:14.015Z | יום ב׳ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | יום ו׳ | 2019-02-15T00:00:00.000Z |
+| | eeee | 2019-02-11T12:13:14.015Z | יום שני | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | יום שישי | 2019-02-15T00:00:00.000Z |
+| | eeeee | 2019-02-11T12:13:14.015Z | ב׳ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ו׳ | 2019-02-15T00:00:00.000Z |
+| | eeeeee | 2019-02-11T12:13:14.015Z | ב׳ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ו׳ | 2019-02-15T00:00:00.000Z |
+| Local day of week (stand-alone) | co | 2019-02-11T12:13:14.015Z | שני | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | שישי | 2019-02-15T00:00:00.000Z |
+| | ccc | 2019-02-11T12:13:14.015Z | יום ב׳ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | יום ו׳ | 2019-02-15T00:00:00.000Z |
+| | cccc | 2019-02-11T12:13:14.015Z | יום שני | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | יום שישי | 2019-02-15T00:00:00.000Z |
+| | ccccc | 2019-02-11T12:13:14.015Z | ב׳ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ו׳ | 2019-02-15T00:00:00.000Z |
+| | cccccc | 2019-02-11T12:13:14.015Z | ב׳ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ו׳ | 2019-02-15T00:00:00.000Z |
+| AM, PM | a | 2019-02-11T11:13:14.015Z | לפנה״צ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | אחה״צ | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | אחה״צ | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | לפנה״צ | 2019-02-11T00:00:00.000Z |
+| | aa | 2019-02-11T11:13:14.015Z | לפנה״צ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | אחה״צ | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | אחה״צ | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | לפנה״צ | 2019-02-11T00:00:00.000Z |
+| | aaa | 2019-02-11T11:13:14.015Z | לפנה״צ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | אחה״צ | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | אחה״צ | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | לפנה״צ | 2019-02-11T00:00:00.000Z |
+| | aaaa | 2019-02-11T11:13:14.015Z | לפנה״צ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | אחה״צ | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | אחה״צ | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | לפנה״צ | 2019-02-11T00:00:00.000Z |
+| | aaaaa | 2019-02-11T11:13:14.015Z | לפנה״צ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | אחה״צ | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | אחה״צ | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | לפנה״צ | 2019-02-11T00:00:00.000Z |
+| AM, PM, noon, midnight | b | 2019-02-11T11:13:14.015Z | לפנה״צ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | אחה״צ | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | אחה״צ | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | לפנה״צ | 2019-02-11T00:00:00.000Z |
+| | bb | 2019-02-11T11:13:14.015Z | לפנה״צ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | אחה״צ | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | אחה״צ | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | לפנה״צ | 2019-02-11T00:00:00.000Z |
+| | bbb | 2019-02-11T11:13:14.015Z | לפנה״צ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | אחה״צ | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | אחה״צ | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | לפנה״צ | 2019-02-11T00:00:00.000Z |
+| | bbbb | 2019-02-11T11:13:14.015Z | לפנה״צ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | אחה״צ | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | אחה״צ | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | לפנה״צ | 2019-02-11T00:00:00.000Z |
+| | bbbbb | 2019-02-11T11:13:14.015Z | לפנה״צ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | אחה״צ | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | אחה״צ | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | לפנה״צ | 2019-02-11T00:00:00.000Z |
+| Flexible day period | B | 2019-02-11T11:13:14.015Z | בבוקר | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | אחר הצהריים | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | בערב | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | בלילה | 2019-02-11T00:00:00.000Z |
+| | BB | 2019-02-11T11:13:14.015Z | בבוקר | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | אחר הצהריים | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | בערב | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | בלילה | 2019-02-11T00:00:00.000Z |
+| | BBB | 2019-02-11T11:13:14.015Z | בבוקר | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | אחר הצהריים | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | בערב | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | בלילה | 2019-02-11T00:00:00.000Z |
+| | BBBB | 2019-02-11T11:13:14.015Z | בבוקר | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | אחר הצהריים | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | בערב | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | בלילה | 2019-02-11T00:00:00.000Z |
+| | BBBBB | 2019-02-11T11:13:14.015Z | בבוקר | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | בצהריים | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | בערב | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | בלילה | 2019-02-11T00:00:00.000Z |
+| Hour [1-12] | ho | 2019-02-11T11:13:14.015Z | 11 | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11 | 2019-02-11T23:00:00.000Z |
+| Hour [0-23] | Ho | 2019-02-11T11:13:14.015Z | 11 | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23 | 2019-02-11T23:00:00.000Z |
+| Hour [0-11] | Ko | 2019-02-11T11:13:14.015Z | 11 | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11 | 2019-02-11T23:00:00.000Z |
+| Hour [1-24] | ko | 2019-02-11T11:13:14.015Z | 11 | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23 | 2019-02-11T23:00:00.000Z |
+| Minute | mo | 2019-01-01T12:01:14.015Z | ראשונה | 2019-01-01T12:01:00.000Z |
+| | | 2019-04-01T12:55:14.015Z | 55 | 2019-04-01T12:55:00.000Z |
+| Second | so | 2019-01-01T12:13:01.015Z | ראשונה | 2019-01-01T12:13:01.000Z |
+| | | 2019-04-01T12:13:55.015Z | 55 | 2019-04-01T12:13:55.000Z |
+| Long localized date | P | 1987-02-11T12:13:14.015Z | 11.2.1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29.5.1453 | 1453-05-29T00:00:00.000Z |
+| | PP | 1987-02-11T12:13:14.015Z | 11 בפבר׳ 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 במאי 1453 | 1453-05-29T00:00:00.000Z |
+| | PPP | 1987-02-11T12:13:14.015Z | 11 בפברואר 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 במאי 1453 | 1453-05-29T00:00:00.000Z |
+| | PPPP | 1987-02-11T12:13:14.015Z | יום רביעי, 11 בפברואר 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | יום ראשון, 29 במאי 1453 | 1453-05-29T00:00:00.000Z |
+| Long localized time | p | 1987-02-11T12:13:14.015Z | 12:13 | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 23:59 | 1453-05-29T23:59:00.000Z |
+| | pp | 1987-02-11T12:13:14.015Z | 12:13:14 | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 | 1453-05-29T23:59:59.000Z |
+| | ppp | 1987-02-11T12:13:14.015Z | 12:13:14 GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 GMT+0 | Errored |
+| | pppp | 1987-02-11T12:13:14.015Z | 12:13:14 GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 GMT+00:00 | Errored |
+| Combination of date and time | Pp | 1987-02-11T12:13:14.015Z | 11.2.1987, 12:13 | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29.5.1453, 23:59 | 1453-05-29T23:59:00.000Z |
+| | PPpp | 1987-02-11T12:13:14.015Z | 11 בפבר׳ 1987, 12:13:14 | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 במאי 1453, 23:59:59 | 1453-05-29T23:59:59.000Z |
+| | PPPppp | 1987-02-11T12:13:14.015Z | 11 בפברואר 1987 בשעה 12:13:14 GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 29 במאי 1453 בשעה 23:59:59 GMT+0 | Errored |
+| | PPPPpppp | 1987-02-11T12:13:14.015Z | יום רביעי, 11 בפברואר 1987 בשעה 12:13:14 GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | יום ראשון, 29 במאי 1453 בשעה 23:59:59 GMT+00:00 | Errored |
+
+## `formatDistance`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `includeSeconds: true` | `addSuffix: true` |
+| ------------------------ | --------- | ---------------------- | ----------------- |
+| 2006-01-01T00:00:00.000Z | כ־6 שנים | כ־6 שנים | בעוד כ־6 שנים |
+| 2005-01-01T00:00:00.000Z | כ־5 שנים | כ־5 שנים | בעוד כ־5 שנים |
+| 2004-01-01T00:00:00.000Z | כ־4 שנים | כ־4 שנים | בעוד כ־4 שנים |
+| 2003-01-01T00:00:00.000Z | כ־3 שנים | כ־3 שנים | בעוד כ־3 שנים |
+| 2002-01-01T00:00:00.000Z | כשנתיים | כשנתיים | בעוד כשנתיים |
+| 2001-06-01T00:00:00.000Z | יותר משנה | יותר משנה | בעוד יותר משנה |
+| 2001-02-01T00:00:00.000Z | כשנה | כשנה | בעוד כשנה |
+| 2001-01-01T00:00:00.000Z | כשנה | כשנה | בעוד כשנה |
+| 2000-06-01T00:00:00.000Z | 5 חודשים | 5 חודשים | בעוד 5 חודשים |
+| 2000-03-01T00:00:00.000Z | חודשיים | חודשיים | בעוד חודשיים |
+| 2000-02-01T00:00:00.000Z | כחודש | כחודש | בעוד כחודש |
+| 2000-01-15T00:00:00.000Z | 14 ימים | 14 ימים | בעוד 14 ימים |
+| 2000-01-02T00:00:00.000Z | יום | יום | מחר |
+| 2000-01-01T06:00:00.000Z | כ־6 שעות | כ־6 שעות | בעוד כ־6 שעות |
+| 2000-01-01T01:00:00.000Z | כשעה | כשעה | בעוד כשעה |
+| 2000-01-01T00:45:00.000Z | כשעה | כשעה | בעוד כשעה |
+| 2000-01-01T00:30:00.000Z | 30 דקות | 30 דקות | בעוד 30 דקות |
+| 2000-01-01T00:15:00.000Z | 15 דקות | 15 דקות | בעוד 15 דקות |
+| 2000-01-01T00:01:00.000Z | דקה | דקה | בעוד דקה |
+| 2000-01-01T00:00:25.000Z | פחות מדקה | חצי דקה | בעוד פחות מדקה |
+| 2000-01-01T00:00:15.000Z | פחות מדקה | פחות מ־20 שניות | בעוד פחות מדקה |
+| 2000-01-01T00:00:05.000Z | פחות מדקה | פחות מ־10 שניות | בעוד פחות מדקה |
+| 2000-01-01T00:00:00.000Z | פחות מדקה | פחות מ־5 שניות | לפני פחות מדקה |
+| 1999-12-31T23:59:55.000Z | פחות מדקה | פחות מ־10 שניות | לפני פחות מדקה |
+| 1999-12-31T23:59:45.000Z | פחות מדקה | פחות מ־20 שניות | לפני פחות מדקה |
+| 1999-12-31T23:59:35.000Z | פחות מדקה | חצי דקה | לפני פחות מדקה |
+| 1999-12-31T23:59:00.000Z | דקה | דקה | לפני דקה |
+| 1999-12-31T23:45:00.000Z | 15 דקות | 15 דקות | לפני 15 דקות |
+| 1999-12-31T23:30:00.000Z | 30 דקות | 30 דקות | לפני 30 דקות |
+| 1999-12-31T23:15:00.000Z | כשעה | כשעה | לפני כשעה |
+| 1999-12-31T23:00:00.000Z | כשעה | כשעה | לפני כשעה |
+| 1999-12-31T18:00:00.000Z | כ־6 שעות | כ־6 שעות | לפני כ־6 שעות |
+| 1999-12-30T00:00:00.000Z | יומיים | יומיים | שלשום |
+| 1999-12-15T00:00:00.000Z | 17 ימים | 17 ימים | לפני 17 ימים |
+| 1999-12-01T00:00:00.000Z | כחודש | כחודש | לפני כחודש |
+| 1999-11-01T00:00:00.000Z | חודשיים | חודשיים | לפני חודשיים |
+| 1999-06-01T00:00:00.000Z | 7 חודשים | 7 חודשים | לפני 7 חודשים |
+| 1999-01-01T00:00:00.000Z | כשנה | כשנה | לפני כשנה |
+| 1998-12-01T00:00:00.000Z | כשנה | כשנה | לפני כשנה |
+| 1998-06-01T00:00:00.000Z | יותר משנה | יותר משנה | לפני יותר משנה |
+| 1998-01-01T00:00:00.000Z | כשנתיים | כשנתיים | לפני כשנתיים |
+| 1997-01-01T00:00:00.000Z | כ־3 שנים | כ־3 שנים | לפני כ־3 שנים |
+| 1996-01-01T00:00:00.000Z | כ־4 שנים | כ־4 שנים | לפני כ־4 שנים |
+| 1995-01-01T00:00:00.000Z | כ־5 שנים | כ־5 שנים | לפני כ־5 שנים |
+| 1994-01-01T00:00:00.000Z | כ־6 שנים | כ־6 שנים | לפני כ־6 שנים |
+
+## `formatDistanceStrict`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `addSuffix: true` | With forced unit (i.e. `hour`) |
+| ------------------------ | -------- | ----------------- | ------------------------------ |
+| 2006-01-01T00:00:00.000Z | 6 שנים | בעוד 6 שנים | 52608 שעות |
+| 2005-01-01T00:00:00.000Z | 5 שנים | בעוד 5 שנים | 43848 שעות |
+| 2004-01-01T00:00:00.000Z | 4 שנים | בעוד 4 שנים | 35064 שעות |
+| 2003-01-01T00:00:00.000Z | 3 שנים | בעוד 3 שנים | 26304 שעות |
+| 2002-01-01T00:00:00.000Z | שנתיים | בעוד שנתיים | 17544 שעות |
+| 2001-06-01T00:00:00.000Z | שנה | בעוד שנה | 12408 שעות |
+| 2001-02-01T00:00:00.000Z | שנה | בעוד שנה | 9528 שעות |
+| 2001-01-01T00:00:00.000Z | שנה | בעוד שנה | 8784 שעות |
+| 2000-06-01T00:00:00.000Z | 5 חודשים | בעוד 5 חודשים | 3648 שעות |
+| 2000-03-01T00:00:00.000Z | חודשיים | בעוד חודשיים | 1440 שעות |
+| 2000-02-01T00:00:00.000Z | חודש | בעוד חודש | 744 שעות |
+| 2000-01-15T00:00:00.000Z | 14 ימים | בעוד 14 ימים | 336 שעות |
+| 2000-01-02T00:00:00.000Z | יום | מחר | 24 שעות |
+| 2000-01-01T06:00:00.000Z | 6 שעות | בעוד 6 שעות | 6 שעות |
+| 2000-01-01T01:00:00.000Z | שעה | בעוד שעה | שעה |
+| 2000-01-01T00:45:00.000Z | 45 דקות | בעוד 45 דקות | שעה |
+| 2000-01-01T00:30:00.000Z | 30 דקות | בעוד 30 דקות | שעה |
+| 2000-01-01T00:15:00.000Z | 15 דקות | בעוד 15 דקות | 0 שעות |
+| 2000-01-01T00:01:00.000Z | דקה | בעוד דקה | 0 שעות |
+| 2000-01-01T00:00:25.000Z | 25 שניות | בעוד 25 שניות | 0 שעות |
+| 2000-01-01T00:00:15.000Z | 15 שניות | בעוד 15 שניות | 0 שעות |
+| 2000-01-01T00:00:05.000Z | 5 שניות | בעוד 5 שניות | 0 שעות |
+| 2000-01-01T00:00:00.000Z | 0 שניות | לפני 0 שניות | 0 שעות |
+| 1999-12-31T23:59:55.000Z | 5 שניות | לפני 5 שניות | 0 שעות |
+| 1999-12-31T23:59:45.000Z | 15 שניות | לפני 15 שניות | 0 שעות |
+| 1999-12-31T23:59:35.000Z | 25 שניות | לפני 25 שניות | 0 שעות |
+| 1999-12-31T23:59:00.000Z | דקה | לפני דקה | 0 שעות |
+| 1999-12-31T23:45:00.000Z | 15 דקות | לפני 15 דקות | 0 שעות |
+| 1999-12-31T23:30:00.000Z | 30 דקות | לפני 30 דקות | שעה |
+| 1999-12-31T23:15:00.000Z | 45 דקות | לפני 45 דקות | שעה |
+| 1999-12-31T23:00:00.000Z | שעה | לפני שעה | שעה |
+| 1999-12-31T18:00:00.000Z | 6 שעות | לפני 6 שעות | 6 שעות |
+| 1999-12-30T00:00:00.000Z | יומיים | שלשום | 48 שעות |
+| 1999-12-15T00:00:00.000Z | 17 ימים | לפני 17 ימים | 408 שעות |
+| 1999-12-01T00:00:00.000Z | חודש | לפני חודש | 744 שעות |
+| 1999-11-01T00:00:00.000Z | חודשיים | לפני חודשיים | 1464 שעות |
+| 1999-06-01T00:00:00.000Z | 7 חודשים | לפני 7 חודשים | 5136 שעות |
+| 1999-01-01T00:00:00.000Z | שנה | לפני שנה | 8760 שעות |
+| 1998-12-01T00:00:00.000Z | שנה | לפני שנה | 9504 שעות |
+| 1998-06-01T00:00:00.000Z | שנתיים | לפני שנתיים | 13896 שעות |
+| 1998-01-01T00:00:00.000Z | שנתיים | לפני שנתיים | 17520 שעות |
+| 1997-01-01T00:00:00.000Z | 3 שנים | לפני 3 שנים | 26280 שעות |
+| 1996-01-01T00:00:00.000Z | 4 שנים | לפני 4 שנים | 35064 שעות |
+| 1995-01-01T00:00:00.000Z | 5 שנים | לפני 5 שנים | 43824 שעות |
+| 1994-01-01T00:00:00.000Z | 6 שנים | לפני 6 שנים | 52584 שעות |
+
+## `formatRelative`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result |
+| ------------------------ | ---------------------- |
+| 2000-01-10T00:00:00.000Z | 10.1.2000 |
+| 2000-01-05T00:00:00.000Z | יום רביעי בשעה 0:00 |
+| 2000-01-02T00:00:00.000Z | מחר בשעה 0:00 |
+| 2000-01-01T00:00:00.000Z | היום בשעה 0:00 |
+| 1999-12-31T00:00:00.000Z | אתמול בשעה 0:00 |
+| 1999-12-27T00:00:00.000Z | יום שני שעבר בשעה 0:00 |
+| 1999-12-21T00:00:00.000Z | 21.12.1999 |
diff --git a/date-fns/src/locale/hi/_lib/formatDistance/index.js b/date-fns/src/locale/hi/_lib/formatDistance/index.js
new file mode 100644
index 0000000..8cdad47
--- /dev/null
+++ b/date-fns/src/locale/hi/_lib/formatDistance/index.js
@@ -0,0 +1,106 @@
+import localize from '../localize/index'
+// Source: https://www.unicode.org/cldr/charts/32/summary/hi.html
+var formatDistanceLocale = {
+ lessThanXSeconds: {
+ one: '१ सेकंड से कम', // CLDR #1310
+ other: '{{count}} सेकंड से कम'
+ },
+
+ xSeconds: {
+ one: '१ सेकंड',
+ other: '{{count}} सेकंड'
+ },
+
+ halfAMinute: 'आधा मिनट',
+
+ lessThanXMinutes: {
+ one: '१ मिनट से कम',
+ other: '{{count}} मिनट से कम'
+ },
+
+ xMinutes: {
+ one: '१ मिनट', // CLDR #1307
+ other: '{{count}} मिनट'
+ },
+
+ aboutXHours: {
+ one: 'लगभग १ घंटा',
+ other: 'लगभग {{count}} घंटे'
+ },
+
+ xHours: {
+ one: '१ घंटा', // CLDR #1304
+ other: '{{count}} घंटे' // CLDR #4467
+ },
+
+ xDays: {
+ one: '१ दिन', // CLDR #1286
+ other: '{{count}} दिन'
+ },
+
+ aboutXWeeks: {
+ one: 'लगभग १ सप्ताह',
+ other: 'लगभग {{count}} सप्ताह'
+ },
+
+ xWeeks: {
+ one: '१ सप्ताह',
+ other: '{{count}} सप्ताह'
+ },
+
+ aboutXMonths: {
+ one: 'लगभग १ महीना',
+ other: 'लगभग {{count}} महीने'
+ },
+
+ xMonths: {
+ one: '१ महीना',
+ other: '{{count}} महीने'
+ },
+
+ aboutXYears: {
+ one: 'लगभग १ वर्ष',
+ other: 'लगभग {{count}} वर्ष' // CLDR #4823
+ },
+
+ xYears: {
+ one: '१ वर्ष',
+ other: '{{count}} वर्ष'
+ },
+
+ overXYears: {
+ one: '१ वर्ष से अधिक',
+ other: '{{count}} वर्ष से अधिक'
+ },
+
+ almostXYears: {
+ one: 'लगभग १ वर्ष',
+ other: 'लगभग {{count}} वर्ष'
+ }
+}
+
+export default function formatDistance(token, count, options) {
+ options = options || {}
+
+ var result
+ if (typeof formatDistanceLocale[token] === 'string') {
+ result = formatDistanceLocale[token]
+ } else if (count === 1) {
+ result = formatDistanceLocale[token].one
+ } else {
+ result = formatDistanceLocale[token].other.replace(
+ '{{count}}',
+ localize.numberToLocale(count)
+ )
+ }
+
+ if (options.addSuffix) {
+ if (options.comparison > 0) {
+ return result + 'मे '
+ } else {
+ return result + ' पहले'
+ }
+ }
+
+ return result
+}
diff --git a/date-fns/src/locale/hi/_lib/formatLong/index.js b/date-fns/src/locale/hi/_lib/formatLong/index.js
new file mode 100644
index 0000000..91a7b41
--- /dev/null
+++ b/date-fns/src/locale/hi/_lib/formatLong/index.js
@@ -0,0 +1,41 @@
+import buildFormatLongFn from '../../../_lib/buildFormatLongFn/index'
+
+var dateFormats = {
+ full: 'EEEE, do MMMM, y', // CLDR #1787
+ long: 'do MMMM, y', // CLDR #1788
+ medium: 'd MMM, y', // CLDR #1789
+ short: 'dd/MM/yyyy' // CLDR #1790
+}
+
+var timeFormats = {
+ full: 'h:mm:ss a zzzz', // CLDR #1791
+ long: 'h:mm:ss a z', // CLDR #1792
+ medium: 'h:mm:ss a', // CLDR #1793
+ short: 'h:mm a' // CLDR #1794
+}
+
+var dateTimeFormats = {
+ full: "{{date}} 'को' {{time}}", // CLDR #1795
+ long: "{{date}} 'को' {{time}}", // CLDR #1796
+ medium: '{{date}}, {{time}}', // CLDR #1797
+ short: '{{date}}, {{time}}' // CLDR #1798
+}
+
+var formatLong = {
+ date: buildFormatLongFn({
+ formats: dateFormats,
+ defaultWidth: 'full'
+ }),
+
+ time: buildFormatLongFn({
+ formats: timeFormats,
+ defaultWidth: 'full'
+ }),
+
+ dateTime: buildFormatLongFn({
+ formats: dateTimeFormats,
+ defaultWidth: 'full'
+ })
+}
+
+export default formatLong
diff --git a/date-fns/src/locale/hi/_lib/formatRelative/index.js b/date-fns/src/locale/hi/_lib/formatRelative/index.js
new file mode 100644
index 0000000..6098a56
--- /dev/null
+++ b/date-fns/src/locale/hi/_lib/formatRelative/index.js
@@ -0,0 +1,12 @@
+var formatRelativeLocale = {
+ lastWeek: "'पिछले' eeee p",
+ yesterday: "'कल' p",
+ today: "'आज' p",
+ tomorrow: "'कल' p",
+ nextWeek: "eeee 'को' p",
+ other: 'P'
+}
+
+export default function formatRelative(token, _date, _baseDate, _options) {
+ return formatRelativeLocale[token]
+}
diff --git a/date-fns/src/locale/hi/_lib/localize/index.js b/date-fns/src/locale/hi/_lib/localize/index.js
new file mode 100644
index 0000000..5d0b90c
--- /dev/null
+++ b/date-fns/src/locale/hi/_lib/localize/index.js
@@ -0,0 +1,244 @@
+import buildLocalizeFn from '../../../_lib/buildLocalizeFn/index'
+
+var numberValues = {
+ locale: {
+ '1': '१',
+ '2': '२',
+ '3': '३',
+ '4': '४',
+ '5': '५',
+ '6': '६',
+ '7': '७',
+ '8': '८',
+ '9': '९',
+ '0': '०'
+ },
+ number: {
+ '१': '1',
+ '२': '2',
+ '३': '3',
+ '४': '4',
+ '५': '5',
+ '६': '6',
+ '७': '7',
+ '८': '8',
+ '९': '9',
+ '०': '0'
+ }
+}
+
+// CLDR #1585 - #1592
+var eraValues = {
+ narrow: ['ईसा-पूर्व', 'ईस्वी'],
+ abbreviated: ['ईसा-पूर्व', 'ईस्वी'],
+ wide: ['ईसा-पूर्व', 'ईसवी सन']
+}
+// CLDR #1593 - #1616
+var quarterValues = {
+ narrow: ['1', '2', '3', '4'],
+ abbreviated: ['ति1', 'ति2', 'ति3', 'ति4'],
+ wide: ['पहली तिमाही', 'दूसरी तिमाही', 'तीसरी तिमाही', 'चौथी तिमाही']
+}
+
+// Note: in English, the names of days of the week and months are capitalized.
+// If you are making a new locale based on this one, check if the same is true for the language you're working on.
+// Generally, formatted dates should look like they are in the middle of a sentence,
+// e.g. in Spanish language the weekdays and months should be in the lowercase.
+// https://www.unicode.org/cldr/charts/32/summary/hi.html
+// CLDR #1617 - #1688
+var monthValues = {
+ narrow: [
+ 'ज',
+ 'फ़',
+ 'मा',
+ 'अ',
+ 'मई',
+ 'जू',
+ 'जु',
+ 'अग',
+ 'सि',
+ 'अक्तू',
+ 'न',
+ 'दि'
+ ],
+ abbreviated: [
+ 'जन',
+ 'फ़र',
+ 'मार्च',
+ 'अप्रैल',
+ 'मई',
+ 'जून',
+ 'जुल',
+ 'अग',
+ 'सित',
+ 'अक्तू',
+ 'नव',
+ 'दिस'
+ ],
+ wide: [
+ 'जनवरी',
+ 'फ़रवरी',
+ 'मार्च',
+ 'अप्रैल',
+ 'मई',
+ 'जून',
+ 'जुलाई',
+ 'अगस्त',
+ 'सितंबर',
+ 'अक्तूबर',
+ 'नवंबर',
+ 'दिसंबर'
+ ]
+}
+
+// CLDR #1689 - #1744
+var dayValues = {
+ narrow: ['र', 'सो', 'मं', 'बु', 'गु', 'शु', 'श'],
+ short: ['र', 'सो', 'मं', 'बु', 'गु', 'शु', 'श'],
+ abbreviated: ['रवि', 'सोम', 'मंगल', 'बुध', 'गुरु', 'शुक्र', 'शनि'],
+ wide: [
+ 'रविवार',
+ 'सोमवार',
+ 'मंगलवार',
+ 'बुधवार',
+ 'गुरुवार',
+ 'शुक्रवार',
+ 'शनिवार'
+ ]
+}
+
+var dayPeriodValues = {
+ narrow: {
+ am: 'पूर्वाह्न',
+ pm: 'अपराह्न',
+ midnight: 'मध्यरात्रि',
+ noon: 'दोपहर',
+ morning: 'सुबह',
+ afternoon: 'दोपहर',
+ evening: 'शाम',
+ night: 'रात'
+ },
+ abbreviated: {
+ am: 'पूर्वाह्न',
+ pm: 'अपराह्न',
+ midnight: 'मध्यरात्रि',
+ noon: 'दोपहर',
+ morning: 'सुबह',
+ afternoon: 'दोपहर',
+ evening: 'शाम',
+ night: 'रात'
+ },
+ wide: {
+ am: 'पूर्वाह्न',
+ pm: 'अपराह्न',
+ midnight: 'मध्यरात्रि',
+ noon: 'दोपहर',
+ morning: 'सुबह',
+ afternoon: 'दोपहर',
+ evening: 'शाम',
+ night: 'रात'
+ }
+}
+var formattingDayPeriodValues = {
+ narrow: {
+ am: 'पूर्वाह्न',
+ pm: 'अपराह्न',
+ midnight: 'मध्यरात्रि',
+ noon: 'दोपहर',
+ morning: 'सुबह',
+ afternoon: 'दोपहर',
+ evening: 'शाम',
+ night: 'रात'
+ },
+ abbreviated: {
+ am: 'पूर्वाह्न',
+ pm: 'अपराह्न',
+ midnight: 'मध्यरात्रि',
+ noon: 'दोपहर',
+ morning: 'सुबह',
+ afternoon: 'दोपहर',
+ evening: 'शाम',
+ night: 'रात'
+ },
+ wide: {
+ am: 'पूर्वाह्न',
+ pm: 'अपराह्न',
+ midnight: 'मध्यरात्रि',
+ noon: 'दोपहर',
+ morning: 'सुबह',
+ afternoon: 'दोपहर',
+ evening: 'शाम',
+ night: 'रात'
+ }
+}
+
+function ordinalNumber(dirtyNumber) {
+ var number = localize.localeToNumber(dirtyNumber)
+ var localeNumber = localize.numberToLocale(number)
+
+ var rem10 = number % 10
+ switch (rem10) {
+ case 2:
+ case 3:
+ case 4:
+ case 6:
+ case 1:
+ case 5:
+ case 7:
+ case 8:
+ case 9:
+ case 0:
+ return localeNumber
+ }
+}
+
+function localeToNumber(locale) {
+ var number = locale.toString().replace(/[१२३४५६७८९०]/g, function(match) {
+ return numberValues.number[match]
+ })
+ return Number(number)
+}
+
+function numberToLocale(number) {
+ return number.toString().replace(/\d/g, function(match) {
+ return numberValues.locale[match]
+ })
+}
+
+var localize = {
+ localeToNumber: localeToNumber,
+ numberToLocale: numberToLocale,
+ ordinalNumber: ordinalNumber,
+
+ era: buildLocalizeFn({
+ values: eraValues,
+ defaultWidth: 'wide'
+ }),
+
+ quarter: buildLocalizeFn({
+ values: quarterValues,
+ defaultWidth: 'wide',
+ argumentCallback: function(quarter) {
+ return Number(quarter) - 1
+ }
+ }),
+
+ month: buildLocalizeFn({
+ values: monthValues,
+ defaultWidth: 'wide'
+ }),
+
+ day: buildLocalizeFn({
+ values: dayValues,
+ defaultWidth: 'wide'
+ }),
+
+ dayPeriod: buildLocalizeFn({
+ values: dayPeriodValues,
+ defaultWidth: 'wide',
+ formattingValues: formattingDayPeriodValues,
+ defaultFormattingWidth: 'wide'
+ })
+}
+
+export default localize
diff --git a/date-fns/src/locale/hi/_lib/match/index.js b/date-fns/src/locale/hi/_lib/match/index.js
new file mode 100644
index 0000000..9ec15da
--- /dev/null
+++ b/date-fns/src/locale/hi/_lib/match/index.js
@@ -0,0 +1,136 @@
+import buildMatchPatternFn from '../../../_lib/buildMatchPatternFn/index'
+import buildMatchFn from '../../../_lib/buildMatchFn/index'
+import localize from '../localize/index'
+
+var matchOrdinalNumberPattern = /^[०१२३४५६७८९]+/i
+var parseOrdinalNumberPattern = /^[०१२३४५६७८९]+/i
+
+var matchEraPatterns = {
+ narrow: /^(ईसा-पूर्व|ईस्वी)/i,
+ abbreviated: /^(ईसा\.?\s?पूर्व\.?|ईसा\.?)/i,
+ wide: /^(ईसा-पूर्व|ईसवी पूर्व|ईसवी सन|ईसवी)/i
+}
+var parseEraPatterns = {
+ any: [/^b/i, /^(a|c)/i]
+}
+
+var matchQuarterPatterns = {
+ narrow: /^[1234]/i,
+ abbreviated: /^ति[1234]/i,
+ wide: /^[1234](पहली|दूसरी|तीसरी|चौथी)? तिमाही/i
+}
+var parseQuarterPatterns = {
+ any: [/1/i, /2/i, /3/i, /4/i]
+}
+
+var matchMonthPatterns = {
+ narrow: /^[जफ़माअप्मईजूनजुअगसिअक्तनदि]/i,
+ abbreviated: /^(जन|फ़र|मार्च|अप्|मई|जून|जुल|अग|सित|अक्तू|नव|दिस)/i,
+ wide: /^(जनवरी|फ़रवरी|मार्च|अप्रैल|मई|जून|जुलाई|अगस्त|सितंबर|अक्तूबर|नवंबर|दिसंबर)/i
+}
+var parseMonthPatterns = {
+ narrow: [
+ /^ज/i,
+ /^फ़/i,
+ /^मा/i,
+ /^अप्/i,
+ /^मई/i,
+ /^जू/i,
+ /^जु/i,
+ /^अग/i,
+ /^सि/i,
+ /^अक्तू/i,
+ /^न/i,
+ /^दि/i
+ ],
+ any: [
+ /^जन/i,
+ /^फ़/i,
+ /^मा/i,
+ /^अप्/i,
+ /^मई/i,
+ /^जू/i,
+ /^जु/i,
+ /^अग/i,
+ /^सि/i,
+ /^अक्तू/i,
+ /^नव/i,
+ /^दिस/i
+ ]
+}
+
+var matchDayPatterns = {
+ narrow: /^[रविसोममंगलबुधगुरुशुक्रशनि]/i,
+ short: /^(रवि|सोम|मंगल|बुध|गुरु|शुक्र|शनि)/i,
+ abbreviated: /^(रवि|सोम|मंगल|बुध|गुरु|शुक्र|शनि)/i,
+ wide: /^(रविवार|सोमवार|मंगलवार|बुधवार|गुरुवार|शुक्रवार|शनिवार)/i
+}
+var parseDayPatterns = {
+ narrow: [/^रवि/i, /^सोम/i, /^मंगल/i, /^बुध/i, /^गुरु/i, /^शुक्र/i, /^शनि/i],
+ any: [/^रवि/i, /^सोम/i, /^मंगल/i, /^बुध/i, /^गुरु/i, /^शुक्र/i, /^शनि/i]
+}
+
+var matchDayPeriodPatterns = {
+ narrow: /^(पू|अ|म|द.\?|सु|दो|शा|रा)/i,
+ any: /^(पूर्वाह्न|अपराह्न|म|द.\?|सु|दो|शा|रा)/i
+}
+var parseDayPeriodPatterns = {
+ any: {
+ am: /^पूर्वाह्न/i,
+ pm: /^अपराह्न/i,
+ midnight: /^मध्य/i,
+ noon: /^दो/i,
+ morning: /सु/i,
+ afternoon: /दो/i,
+ evening: /शा/i,
+ night: /रा/i
+ }
+}
+
+var match = {
+ ordinalNumber: buildMatchPatternFn({
+ matchPattern: matchOrdinalNumberPattern,
+ parsePattern: parseOrdinalNumberPattern,
+ valueCallback: localize.localeToNumber
+ }),
+
+ era: buildMatchFn({
+ matchPatterns: matchEraPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseEraPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ quarter: buildMatchFn({
+ matchPatterns: matchQuarterPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseQuarterPatterns,
+ defaultParseWidth: 'any',
+ valueCallback: function(index) {
+ return index + 1
+ }
+ }),
+
+ month: buildMatchFn({
+ matchPatterns: matchMonthPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseMonthPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ day: buildMatchFn({
+ matchPatterns: matchDayPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseDayPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ dayPeriod: buildMatchFn({
+ matchPatterns: matchDayPeriodPatterns,
+ defaultMatchWidth: 'any',
+ parsePatterns: parseDayPeriodPatterns,
+ defaultParseWidth: 'any'
+ })
+}
+
+export default match
diff --git a/date-fns/src/locale/hi/index.d.ts b/date-fns/src/locale/hi/index.d.ts
new file mode 100644
index 0000000..089bdd9
--- /dev/null
+++ b/date-fns/src/locale/hi/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { hi } from 'date-fns/locale'
+export default hi
diff --git a/date-fns/src/locale/hi/index.js b/date-fns/src/locale/hi/index.js
new file mode 100644
index 0000000..bec68d1
--- /dev/null
+++ b/date-fns/src/locale/hi/index.js
@@ -0,0 +1,28 @@
+import formatDistance from './_lib/formatDistance/index'
+import formatLong from './_lib/formatLong/index'
+import formatRelative from './_lib/formatRelative/index'
+import localize from './_lib/localize/index'
+import match from './_lib/match/index'
+
+/**
+ * @type {Locale}
+ * @category Locales
+ * @summary Hindi locale (India).
+ * @language Hindi
+ * @iso-639-2 hin
+ * @author Mukesh Mandiwal [@mukeshmandiwal]{@link https://github.com/mukeshmandiwal}
+ */
+var locale = {
+ code: 'hi',
+ formatDistance: formatDistance,
+ formatLong: formatLong,
+ formatRelative: formatRelative,
+ localize: localize,
+ match: match,
+ options: {
+ weekStartsOn: 0 /* Monday */,
+ firstWeekContainsDate: 4
+ }
+}
+
+export default locale
diff --git a/date-fns/src/locale/hi/index.js.flow b/date-fns/src/locale/hi/index.js.flow
new file mode 100644
index 0000000..b9dfe66
--- /dev/null
+++ b/date-fns/src/locale/hi/index.js.flow
@@ -0,0 +1,35 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+declare module.exports: Locale
diff --git a/date-fns/src/locale/hi/snapshot.md b/date-fns/src/locale/hi/snapshot.md
new file mode 100644
index 0000000..172a55f
--- /dev/null
+++ b/date-fns/src/locale/hi/snapshot.md
@@ -0,0 +1,304 @@
+# Hindi (hi) locale
+
+## `format` and `parse`
+
+| Title | Token string | Date | `format` result | `parse` result |
+| ------------------------------- | ------------ | ------------------------ | ----------------------------------------------------- | ------------------------ |
+| Calendar year | yo | 1987-02-11T12:13:14.015Z | १९८७ | 1987-01-01T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | ५ | 0005-01-01T00:00:00.000Z |
+| Local week-numbering year | Yo | 1987-02-11T12:13:14.015Z | १९८७ | 1987-01-04T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | ४ | 0004-01-04T00:00:00.000Z |
+| Quarter (formatting) | Qo | 2019-01-01T12:13:14.015Z | १ | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | २ | 2019-04-01T00:00:00.000Z |
+| | QQQ | 2019-01-01T12:13:14.015Z | ति1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | ति2 | 2019-04-01T00:00:00.000Z |
+| | QQQQ | 2019-01-01T12:13:14.015Z | पहली तिमाही | Invalid Date |
+| | | 2019-04-01T12:13:14.015Z | दूसरी तिमाही | Invalid Date |
+| | QQQQQ | 2019-01-01T12:13:14.015Z | 1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2 | 2019-04-01T00:00:00.000Z |
+| Quarter (stand-alone) | qo | 2019-01-01T12:13:14.015Z | १ | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | २ | 2019-04-01T00:00:00.000Z |
+| | qqq | 2019-01-01T12:13:14.015Z | ति1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | ति2 | 2019-04-01T00:00:00.000Z |
+| | qqqq | 2019-01-01T12:13:14.015Z | पहली तिमाही | Invalid Date |
+| | | 2019-04-01T12:13:14.015Z | दूसरी तिमाही | Invalid Date |
+| Month (formatting) | Mo | 2019-02-11T12:13:14.015Z | २ | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | ७ | 2019-07-01T00:00:00.000Z |
+| | MMM | 2019-02-11T12:13:14.015Z | फ़र | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | जुल | 2019-07-01T00:00:00.000Z |
+| | MMMM | 2019-02-11T12:13:14.015Z | फ़रवरी | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | जुलाई | 2019-07-01T00:00:00.000Z |
+| | MMMMM | 2019-02-11T12:13:14.015Z | फ़ | Invalid Date |
+| | | 2019-07-10T12:13:14.015Z | जु | Invalid Date |
+| Month (stand-alone) | Lo | 2019-02-11T12:13:14.015Z | २ | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | ७ | 2019-07-01T00:00:00.000Z |
+| | LLL | 2019-02-11T12:13:14.015Z | फ़र | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | जुल | 2019-07-01T00:00:00.000Z |
+| | LLLL | 2019-02-11T12:13:14.015Z | फ़रवरी | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | जुलाई | 2019-07-01T00:00:00.000Z |
+| | LLLLL | 2019-02-11T12:13:14.015Z | फ़ | Invalid Date |
+| | | 2019-07-10T12:13:14.015Z | जु | Invalid Date |
+| Local week of year | wo | 2019-01-01T12:13:14.015Z | १ | 2018-12-30T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | ४९ | 2019-12-01T00:00:00.000Z |
+| ISO week of year | Io | 2019-01-01T12:13:14.015Z | १ | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | ४८ | 2019-11-25T00:00:00.000Z |
+| Day of month | do | 2019-02-11T12:13:14.015Z | ११ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-28T12:13:14.015Z | २८ | 2019-02-28T00:00:00.000Z |
+| Day of year | Do | 2019-02-11T12:13:14.015Z | ४२ | 2019-02-11T00:00:00.000Z |
+| | | 2019-12-31T12:13:14.015Z | ३६५ | 2019-12-31T00:00:00.000Z |
+| Day of week (formatting) | E | 2019-02-11T12:13:14.015Z | सोम | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | शुक्र | 2019-02-15T00:00:00.000Z |
+| | EE | 2019-02-11T12:13:14.015Z | सोम | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | शुक्र | 2019-02-15T00:00:00.000Z |
+| | EEE | 2019-02-11T12:13:14.015Z | सोम | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | शुक्र | 2019-02-15T00:00:00.000Z |
+| | EEEE | 2019-02-11T12:13:14.015Z | सोमवार | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | शुक्रवार | 2019-02-15T00:00:00.000Z |
+| | EEEEE | 2019-02-11T12:13:14.015Z | सो | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | शु | Invalid Date |
+| | EEEEEE | 2019-02-11T12:13:14.015Z | सो | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | शु | Invalid Date |
+| ISO day of week (formatting) | io | 2019-02-11T12:13:14.015Z | १ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ५ | 2019-02-15T00:00:00.000Z |
+| | iii | 2019-02-11T12:13:14.015Z | सोम | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | शुक्र | 2019-02-15T00:00:00.000Z |
+| | iiii | 2019-02-11T12:13:14.015Z | सोमवार | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | शुक्रवार | 2019-02-15T00:00:00.000Z |
+| | iiiii | 2019-02-11T12:13:14.015Z | सो | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | शु | Invalid Date |
+| | iiiiii | 2019-02-11T12:13:14.015Z | सो | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | शु | Invalid Date |
+| Local day of week (formatting) | eo | 2019-02-11T12:13:14.015Z | २ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ६ | 2019-02-15T00:00:00.000Z |
+| | eee | 2019-02-11T12:13:14.015Z | सोम | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | शुक्र | 2019-02-15T00:00:00.000Z |
+| | eeee | 2019-02-11T12:13:14.015Z | सोमवार | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | शुक्रवार | 2019-02-15T00:00:00.000Z |
+| | eeeee | 2019-02-11T12:13:14.015Z | सो | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | शु | Invalid Date |
+| | eeeeee | 2019-02-11T12:13:14.015Z | सो | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | शु | Invalid Date |
+| Local day of week (stand-alone) | co | 2019-02-11T12:13:14.015Z | २ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ६ | 2019-02-15T00:00:00.000Z |
+| | ccc | 2019-02-11T12:13:14.015Z | सोम | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | शुक्र | 2019-02-15T00:00:00.000Z |
+| | cccc | 2019-02-11T12:13:14.015Z | सोमवार | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | शुक्रवार | 2019-02-15T00:00:00.000Z |
+| | ccccc | 2019-02-11T12:13:14.015Z | सो | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | शु | Invalid Date |
+| | cccccc | 2019-02-11T12:13:14.015Z | सो | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | शु | Invalid Date |
+| AM, PM | a | 2019-02-11T11:13:14.015Z | पूर्वाह्न | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | अपराह्न | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | अपराह्न | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | पूर्वाह्न | 2019-02-11T00:00:00.000Z |
+| | aa | 2019-02-11T11:13:14.015Z | पूर्वाह्न | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | अपराह्न | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | अपराह्न | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | पूर्वाह्न | 2019-02-11T00:00:00.000Z |
+| | aaa | 2019-02-11T11:13:14.015Z | पूर्वाह्न | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | अपराह्न | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | अपराह्न | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | पूर्वाह्न | 2019-02-11T00:00:00.000Z |
+| | aaaa | 2019-02-11T11:13:14.015Z | पूर्वाह्न | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | अपराह्न | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | अपराह्न | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | पूर्वाह्न | 2019-02-11T00:00:00.000Z |
+| | aaaaa | 2019-02-11T11:13:14.015Z | पूर्वाह्न | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | अपराह्न | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | अपराह्न | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | पूर्वाह्न | Invalid Date |
+| AM, PM, noon, midnight | b | 2019-02-11T11:13:14.015Z | पूर्वाह्न | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | अपराह्न | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | अपराह्न | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | पूर्वाह्न | 2019-02-11T00:00:00.000Z |
+| | bb | 2019-02-11T11:13:14.015Z | पूर्वाह्न | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | अपराह्न | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | अपराह्न | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | पूर्वाह्न | 2019-02-11T00:00:00.000Z |
+| | bbb | 2019-02-11T11:13:14.015Z | पूर्वाह्न | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | अपराह्न | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | अपराह्न | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | पूर्वाह्न | 2019-02-11T00:00:00.000Z |
+| | bbbb | 2019-02-11T11:13:14.015Z | पूर्वाह्न | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | अपराह्न | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | अपराह्न | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | पूर्वाह्न | 2019-02-11T00:00:00.000Z |
+| | bbbbb | 2019-02-11T11:13:14.015Z | पूर्वाह्न | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | अपराह्न | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | अपराह्न | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | पूर्वाह्न | Invalid Date |
+| Flexible day period | B | 2019-02-11T11:13:14.015Z | सुबह | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | दोपहर | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | शाम | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | रात | Invalid Date |
+| | BB | 2019-02-11T11:13:14.015Z | सुबह | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | दोपहर | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | शाम | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | रात | Invalid Date |
+| | BBB | 2019-02-11T11:13:14.015Z | सुबह | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | दोपहर | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | शाम | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | रात | Invalid Date |
+| | BBBB | 2019-02-11T11:13:14.015Z | सुबह | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | दोपहर | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | शाम | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | रात | Invalid Date |
+| | BBBBB | 2019-02-11T11:13:14.015Z | सुबह | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | दोपहर | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | शाम | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | रात | Invalid Date |
+| Hour [1-12] | ho | 2019-02-11T11:13:14.015Z | ११ | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | ११ | 2019-02-11T23:00:00.000Z |
+| Hour [0-23] | Ho | 2019-02-11T11:13:14.015Z | ११ | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | २३ | 2019-02-11T23:00:00.000Z |
+| Hour [0-11] | Ko | 2019-02-11T11:13:14.015Z | ११ | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | ११ | 2019-02-11T23:00:00.000Z |
+| Hour [1-24] | ko | 2019-02-11T11:13:14.015Z | ११ | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | २३ | 2019-02-11T23:00:00.000Z |
+| Minute | mo | 2019-01-01T12:01:14.015Z | १ | 2019-01-01T12:01:00.000Z |
+| | | 2019-04-01T12:55:14.015Z | ५५ | 2019-04-01T12:55:00.000Z |
+| Second | so | 2019-01-01T12:13:01.015Z | १ | 2019-01-01T12:13:01.000Z |
+| | | 2019-04-01T12:13:55.015Z | ५५ | 2019-04-01T12:13:55.000Z |
+| Long localized date | P | 1987-02-11T12:13:14.015Z | 11/02/1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29/05/1453 | 1453-05-29T00:00:00.000Z |
+| | PP | 1987-02-11T12:13:14.015Z | 11 फ़र, 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 मई, 1453 | 1453-05-29T00:00:00.000Z |
+| | PPP | 1987-02-11T12:13:14.015Z | ११ फ़रवरी, 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | २९ मई, 1453 | 1453-05-29T00:00:00.000Z |
+| | PPPP | 1987-02-11T12:13:14.015Z | बुधवार, ११ फ़रवरी, 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | रविवार, २९ मई, 1453 | 1453-05-29T00:00:00.000Z |
+| Long localized time | p | 1987-02-11T12:13:14.015Z | 12:13 अपराह्न | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 11:59 अपराह्न | 1453-05-29T23:59:00.000Z |
+| | pp | 1987-02-11T12:13:14.015Z | 12:13:14 अपराह्न | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 11:59:59 अपराह्न | 1453-05-29T23:59:59.000Z |
+| | ppp | 1987-02-11T12:13:14.015Z | 12:13:14 अपराह्न GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 11:59:59 अपराह्न GMT+0 | Errored |
+| | pppp | 1987-02-11T12:13:14.015Z | 12:13:14 अपराह्न GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 11:59:59 अपराह्न GMT+00:00 | Errored |
+| Combination of date and time | Pp | 1987-02-11T12:13:14.015Z | 11/02/1987, 12:13 अपराह्न | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29/05/1453, 11:59 अपराह्न | 1453-05-29T23:59:00.000Z |
+| | PPpp | 1987-02-11T12:13:14.015Z | 11 फ़र, 1987, 12:13:14 अपराह्न | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 मई, 1453, 11:59:59 अपराह्न | 1453-05-29T23:59:59.000Z |
+| | PPPppp | 1987-02-11T12:13:14.015Z | ११ फ़रवरी, 1987 को 12:13:14 अपराह्न GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | २९ मई, 1453 को 11:59:59 अपराह्न GMT+0 | Errored |
+| | PPPPpppp | 1987-02-11T12:13:14.015Z | बुधवार, ११ फ़रवरी, 1987 को 12:13:14 अपराह्न GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | रविवार, २९ मई, 1453 को 11:59:59 अपराह्न GMT+00:00 | Errored |
+
+## `formatDistance`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `includeSeconds: true` | `addSuffix: true` |
+| ------------------------ | -------------- | ---------------------- | ------------------- |
+| 2006-01-01T00:00:00.000Z | लगभग ६ वर्ष | लगभग ६ वर्ष | लगभग ६ वर्षमे |
+| 2005-01-01T00:00:00.000Z | लगभग ५ वर्ष | लगभग ५ वर्ष | लगभग ५ वर्षमे |
+| 2004-01-01T00:00:00.000Z | लगभग ४ वर्ष | लगभग ४ वर्ष | लगभग ४ वर्षमे |
+| 2003-01-01T00:00:00.000Z | लगभग ३ वर्ष | लगभग ३ वर्ष | लगभग ३ वर्षमे |
+| 2002-01-01T00:00:00.000Z | लगभग २ वर्ष | लगभग २ वर्ष | लगभग २ वर्षमे |
+| 2001-06-01T00:00:00.000Z | १ वर्ष से अधिक | १ वर्ष से अधिक | १ वर्ष से अधिकमे |
+| 2001-02-01T00:00:00.000Z | लगभग १ वर्ष | लगभग १ वर्ष | लगभग १ वर्षमे |
+| 2001-01-01T00:00:00.000Z | लगभग १ वर्ष | लगभग १ वर्ष | लगभग १ वर्षमे |
+| 2000-06-01T00:00:00.000Z | ५ महीने | ५ महीने | ५ महीनेमे |
+| 2000-03-01T00:00:00.000Z | २ महीने | २ महीने | २ महीनेमे |
+| 2000-02-01T00:00:00.000Z | लगभग १ महीना | लगभग १ महीना | लगभग १ महीनामे |
+| 2000-01-15T00:00:00.000Z | १४ दिन | १४ दिन | १४ दिनमे |
+| 2000-01-02T00:00:00.000Z | १ दिन | १ दिन | १ दिनमे |
+| 2000-01-01T06:00:00.000Z | लगभग ६ घंटे | लगभग ६ घंटे | लगभग ६ घंटेमे |
+| 2000-01-01T01:00:00.000Z | लगभग १ घंटा | लगभग १ घंटा | लगभग १ घंटामे |
+| 2000-01-01T00:45:00.000Z | लगभग १ घंटा | लगभग १ घंटा | लगभग १ घंटामे |
+| 2000-01-01T00:30:00.000Z | ३० मिनट | ३० मिनट | ३० मिनटमे |
+| 2000-01-01T00:15:00.000Z | १५ मिनट | १५ मिनट | १५ मिनटमे |
+| 2000-01-01T00:01:00.000Z | १ मिनट | १ मिनट | १ मिनटमे |
+| 2000-01-01T00:00:25.000Z | १ मिनट से कम | आधा मिनट | १ मिनट से कममे |
+| 2000-01-01T00:00:15.000Z | १ मिनट से कम | २० सेकंड से कम | १ मिनट से कममे |
+| 2000-01-01T00:00:05.000Z | १ मिनट से कम | १० सेकंड से कम | १ मिनट से कममे |
+| 2000-01-01T00:00:00.000Z | १ मिनट से कम | ५ सेकंड से कम | १ मिनट से कम पहले |
+| 1999-12-31T23:59:55.000Z | १ मिनट से कम | १० सेकंड से कम | १ मिनट से कम पहले |
+| 1999-12-31T23:59:45.000Z | १ मिनट से कम | २० सेकंड से कम | १ मिनट से कम पहले |
+| 1999-12-31T23:59:35.000Z | १ मिनट से कम | आधा मिनट | १ मिनट से कम पहले |
+| 1999-12-31T23:59:00.000Z | १ मिनट | १ मिनट | १ मिनट पहले |
+| 1999-12-31T23:45:00.000Z | १५ मिनट | १५ मिनट | १५ मिनट पहले |
+| 1999-12-31T23:30:00.000Z | ३० मिनट | ३० मिनट | ३० मिनट पहले |
+| 1999-12-31T23:15:00.000Z | लगभग १ घंटा | लगभग १ घंटा | लगभग १ घंटा पहले |
+| 1999-12-31T23:00:00.000Z | लगभग १ घंटा | लगभग १ घंटा | लगभग १ घंटा पहले |
+| 1999-12-31T18:00:00.000Z | लगभग ६ घंटे | लगभग ६ घंटे | लगभग ६ घंटे पहले |
+| 1999-12-30T00:00:00.000Z | २ दिन | २ दिन | २ दिन पहले |
+| 1999-12-15T00:00:00.000Z | १७ दिन | १७ दिन | १७ दिन पहले |
+| 1999-12-01T00:00:00.000Z | लगभग १ महीना | लगभग १ महीना | लगभग १ महीना पहले |
+| 1999-11-01T00:00:00.000Z | २ महीने | २ महीने | २ महीने पहले |
+| 1999-06-01T00:00:00.000Z | ७ महीने | ७ महीने | ७ महीने पहले |
+| 1999-01-01T00:00:00.000Z | लगभग १ वर्ष | लगभग १ वर्ष | लगभग १ वर्ष पहले |
+| 1998-12-01T00:00:00.000Z | लगभग १ वर्ष | लगभग १ वर्ष | लगभग १ वर्ष पहले |
+| 1998-06-01T00:00:00.000Z | १ वर्ष से अधिक | १ वर्ष से अधिक | १ वर्ष से अधिक पहले |
+| 1998-01-01T00:00:00.000Z | लगभग २ वर्ष | लगभग २ वर्ष | लगभग २ वर्ष पहले |
+| 1997-01-01T00:00:00.000Z | लगभग ३ वर्ष | लगभग ३ वर्ष | लगभग ३ वर्ष पहले |
+| 1996-01-01T00:00:00.000Z | लगभग ४ वर्ष | लगभग ४ वर्ष | लगभग ४ वर्ष पहले |
+| 1995-01-01T00:00:00.000Z | लगभग ५ वर्ष | लगभग ५ वर्ष | लगभग ५ वर्ष पहले |
+| 1994-01-01T00:00:00.000Z | लगभग ६ वर्ष | लगभग ६ वर्ष | लगभग ६ वर्ष पहले |
+
+## `formatDistanceStrict`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `addSuffix: true` | With forced unit (i.e. `hour`) |
+| ------------------------ | -------- | ----------------- | ------------------------------ |
+| 2006-01-01T00:00:00.000Z | ६ वर्ष | ६ वर्षमे | ५२६०८ घंटे |
+| 2005-01-01T00:00:00.000Z | ५ वर्ष | ५ वर्षमे | ४३८४८ घंटे |
+| 2004-01-01T00:00:00.000Z | ४ वर्ष | ४ वर्षमे | ३५०६४ घंटे |
+| 2003-01-01T00:00:00.000Z | ३ वर्ष | ३ वर्षमे | २६३०४ घंटे |
+| 2002-01-01T00:00:00.000Z | २ वर्ष | २ वर्षमे | १७५४४ घंटे |
+| 2001-06-01T00:00:00.000Z | १ वर्ष | १ वर्षमे | १२४०८ घंटे |
+| 2001-02-01T00:00:00.000Z | १ वर्ष | १ वर्षमे | ९५२८ घंटे |
+| 2001-01-01T00:00:00.000Z | १ वर्ष | १ वर्षमे | ८७८४ घंटे |
+| 2000-06-01T00:00:00.000Z | ५ महीने | ५ महीनेमे | ३६४८ घंटे |
+| 2000-03-01T00:00:00.000Z | २ महीने | २ महीनेमे | १४४० घंटे |
+| 2000-02-01T00:00:00.000Z | १ महीना | १ महीनामे | ७४४ घंटे |
+| 2000-01-15T00:00:00.000Z | १४ दिन | १४ दिनमे | ३३६ घंटे |
+| 2000-01-02T00:00:00.000Z | १ दिन | १ दिनमे | २४ घंटे |
+| 2000-01-01T06:00:00.000Z | ६ घंटे | ६ घंटेमे | ६ घंटे |
+| 2000-01-01T01:00:00.000Z | १ घंटा | १ घंटामे | १ घंटा |
+| 2000-01-01T00:45:00.000Z | ४५ मिनट | ४५ मिनटमे | १ घंटा |
+| 2000-01-01T00:30:00.000Z | ३० मिनट | ३० मिनटमे | १ घंटा |
+| 2000-01-01T00:15:00.000Z | १५ मिनट | १५ मिनटमे | ० घंटे |
+| 2000-01-01T00:01:00.000Z | १ मिनट | १ मिनटमे | ० घंटे |
+| 2000-01-01T00:00:25.000Z | २५ सेकंड | २५ सेकंडमे | ० घंटे |
+| 2000-01-01T00:00:15.000Z | १५ सेकंड | १५ सेकंडमे | ० घंटे |
+| 2000-01-01T00:00:05.000Z | ५ सेकंड | ५ सेकंडमे | ० घंटे |
+| 2000-01-01T00:00:00.000Z | ० सेकंड | ० सेकंड पहले | ० घंटे |
+| 1999-12-31T23:59:55.000Z | ५ सेकंड | ५ सेकंड पहले | ० घंटे |
+| 1999-12-31T23:59:45.000Z | १५ सेकंड | १५ सेकंड पहले | ० घंटे |
+| 1999-12-31T23:59:35.000Z | २५ सेकंड | २५ सेकंड पहले | ० घंटे |
+| 1999-12-31T23:59:00.000Z | १ मिनट | १ मिनट पहले | ० घंटे |
+| 1999-12-31T23:45:00.000Z | १५ मिनट | १५ मिनट पहले | ० घंटे |
+| 1999-12-31T23:30:00.000Z | ३० मिनट | ३० मिनट पहले | १ घंटा |
+| 1999-12-31T23:15:00.000Z | ४५ मिनट | ४५ मिनट पहले | १ घंटा |
+| 1999-12-31T23:00:00.000Z | १ घंटा | १ घंटा पहले | १ घंटा |
+| 1999-12-31T18:00:00.000Z | ६ घंटे | ६ घंटे पहले | ६ घंटे |
+| 1999-12-30T00:00:00.000Z | २ दिन | २ दिन पहले | ४८ घंटे |
+| 1999-12-15T00:00:00.000Z | १७ दिन | १७ दिन पहले | ४०८ घंटे |
+| 1999-12-01T00:00:00.000Z | १ महीना | १ महीना पहले | ७४४ घंटे |
+| 1999-11-01T00:00:00.000Z | २ महीने | २ महीने पहले | १४६४ घंटे |
+| 1999-06-01T00:00:00.000Z | ७ महीने | ७ महीने पहले | ५१३६ घंटे |
+| 1999-01-01T00:00:00.000Z | १ वर्ष | १ वर्ष पहले | ८७६० घंटे |
+| 1998-12-01T00:00:00.000Z | १ वर्ष | १ वर्ष पहले | ९५०४ घंटे |
+| 1998-06-01T00:00:00.000Z | २ वर्ष | २ वर्ष पहले | १३८९६ घंटे |
+| 1998-01-01T00:00:00.000Z | २ वर्ष | २ वर्ष पहले | १७५२० घंटे |
+| 1997-01-01T00:00:00.000Z | ३ वर्ष | ३ वर्ष पहले | २६२८० घंटे |
+| 1996-01-01T00:00:00.000Z | ४ वर्ष | ४ वर्ष पहले | ३५०६४ घंटे |
+| 1995-01-01T00:00:00.000Z | ५ वर्ष | ५ वर्ष पहले | ४३८२४ घंटे |
+| 1994-01-01T00:00:00.000Z | ६ वर्ष | ६ वर्ष पहले | ५२५८४ घंटे |
+
+## `formatRelative`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result |
+| ------------------------ | ---------------------------- |
+| 2000-01-10T00:00:00.000Z | 10/01/2000 |
+| 2000-01-05T00:00:00.000Z | बुधवार को 12:00 पूर्वाह्न |
+| 2000-01-02T00:00:00.000Z | कल 12:00 पूर्वाह्न |
+| 2000-01-01T00:00:00.000Z | आज 12:00 पूर्वाह्न |
+| 1999-12-31T00:00:00.000Z | कल 12:00 पूर्वाह्न |
+| 1999-12-27T00:00:00.000Z | पिछले सोमवार 12:00 पूर्वाह्न |
+| 1999-12-21T00:00:00.000Z | 21/12/1999 |
diff --git a/date-fns/src/locale/hr/_lib/formatDistance/index.js b/date-fns/src/locale/hr/_lib/formatDistance/index.js
new file mode 100644
index 0000000..0076d08
--- /dev/null
+++ b/date-fns/src/locale/hr/_lib/formatDistance/index.js
@@ -0,0 +1,191 @@
+var formatDistanceLocale = {
+ lessThanXSeconds: {
+ one: {
+ standalone: 'manje od 1 sekunde',
+ withPrepositionAgo: 'manje od 1 sekunde',
+ withPrepositionIn: 'manje od 1 sekundu'
+ },
+ dual: 'manje od {{count}} sekunde',
+ other: 'manje od {{count}} sekundi'
+ },
+
+ xSeconds: {
+ one: {
+ standalone: '1 sekunda',
+ withPrepositionAgo: '1 sekunde',
+ withPrepositionIn: '1 sekundu'
+ },
+ dual: '{{count}} sekunde',
+ other: '{{count}} sekundi'
+ },
+
+ halfAMinute: 'pola minute',
+
+ lessThanXMinutes: {
+ one: {
+ standalone: 'manje od 1 minute',
+ withPrepositionAgo: 'manje od 1 minute',
+ withPrepositionIn: 'manje od 1 minutu'
+ },
+ dual: 'manje od {{count}} minute',
+ other: 'manje od {{count}} minuta'
+ },
+
+ xMinutes: {
+ one: {
+ standalone: '1 minuta',
+ withPrepositionAgo: '1 minute',
+ withPrepositionIn: '1 minutu'
+ },
+ dual: '{{count}} minute',
+ other: '{{count}} minuta'
+ },
+
+ aboutXHours: {
+ one: {
+ standalone: 'oko 1 sat',
+ withPrepositionAgo: 'oko 1 sat',
+ withPrepositionIn: 'oko 1 sat'
+ },
+ dual: 'oko {{count}} sata',
+ other: 'oko {{count}} sati'
+ },
+
+ xHours: {
+ one: {
+ standalone: '1 sat',
+ withPrepositionAgo: '1 sat',
+ withPrepositionIn: '1 sat'
+ },
+ dual: '{{count}} sata',
+ other: '{{count}} sati'
+ },
+
+ xDays: {
+ one: {
+ standalone: '1 dan',
+ withPrepositionAgo: '1 dan',
+ withPrepositionIn: '1 dan'
+ },
+ dual: '{{count}} dana',
+ other: '{{count}} dana'
+ },
+
+ aboutXWeeks: {
+ one: {
+ standalone: 'oko 1 tjedan',
+ withPrepositionAgo: 'oko 1 tjedan',
+ withPrepositionIn: 'oko 1 tjedan'
+ },
+ dual: 'oko {{count}} tjedna',
+ other: 'oko {{count}} tjedana'
+ },
+
+ xWeeks: {
+ one: {
+ standalone: '1 tjedan',
+ withPrepositionAgo: '1 tjedan',
+ withPrepositionIn: '1 tjedan'
+ },
+ dual: '{{count}} tjedna',
+ other: '{{count}} tjedana'
+ },
+
+ aboutXMonths: {
+ one: {
+ standalone: 'oko 1 mjesec',
+ withPrepositionAgo: 'oko 1 mjesec',
+ withPrepositionIn: 'oko 1 mjesec'
+ },
+ dual: 'oko {{count}} mjeseca',
+ other: 'oko {{count}} mjeseci'
+ },
+
+ xMonths: {
+ one: {
+ standalone: '1 mjesec',
+ withPrepositionAgo: '1 mjesec',
+ withPrepositionIn: '1 mjesec'
+ },
+ dual: '{{count}} mjeseca',
+ other: '{{count}} mjeseci'
+ },
+
+ aboutXYears: {
+ one: {
+ standalone: 'oko 1 godinu',
+ withPrepositionAgo: 'oko 1 godinu',
+ withPrepositionIn: 'oko 1 godinu'
+ },
+ dual: 'oko {{count}} godine',
+ other: 'oko {{count}} godina'
+ },
+
+ xYears: {
+ one: {
+ standalone: '1 godina',
+ withPrepositionAgo: '1 godine',
+ withPrepositionIn: '1 godinu'
+ },
+ dual: '{{count}} godine',
+ other: '{{count}} godina'
+ },
+
+ overXYears: {
+ one: {
+ standalone: 'preko 1 godinu',
+ withPrepositionAgo: 'preko 1 godinu',
+ withPrepositionIn: 'preko 1 godinu'
+ },
+ dual: 'preko {{count}} godine',
+ other: 'preko {{count}} godina'
+ },
+
+ almostXYears: {
+ one: {
+ standalone: 'gotovo 1 godinu',
+ withPrepositionAgo: 'gotovo 1 godinu',
+ withPrepositionIn: 'gotovo 1 godinu'
+ },
+ dual: 'gotovo {{count}} godine',
+ other: 'gotovo {{count}} godina'
+ }
+}
+
+export default function formatDistance(token, count, options) {
+ options = options || {}
+
+ var result
+
+ if (typeof formatDistanceLocale[token] === 'string') {
+ result = formatDistanceLocale[token]
+ } else if (count === 1) {
+ if (options.addSuffix) {
+ if (options.comparison > 0) {
+ result = formatDistanceLocale[token].one.withPrepositionIn
+ } else {
+ result = formatDistanceLocale[token].one.withPrepositionAgo
+ }
+ } else {
+ result = formatDistanceLocale[token].one.standalone
+ }
+ } else if (
+ count % 10 > 1 &&
+ count % 10 < 5 && // if last digit is between 2 and 4
+ String(count).substr(-2, 1) !== '1' // unless the 2nd to last digit is "1"
+ ) {
+ result = formatDistanceLocale[token].dual.replace('{{count}}', count)
+ } else {
+ result = formatDistanceLocale[token].other.replace('{{count}}', count)
+ }
+
+ if (options.addSuffix) {
+ if (options.comparison > 0) {
+ return 'za ' + result
+ } else {
+ return 'prije ' + result
+ }
+ }
+
+ return result
+}
diff --git a/date-fns/src/locale/hr/_lib/formatLong/index.js b/date-fns/src/locale/hr/_lib/formatLong/index.js
new file mode 100644
index 0000000..0d8e62f
--- /dev/null
+++ b/date-fns/src/locale/hr/_lib/formatLong/index.js
@@ -0,0 +1,39 @@
+import buildFormatLongFn from '../../../_lib/buildFormatLongFn/index'
+
+var dateFormats = {
+ full: 'EEEE, d. MMMM y.',
+ long: 'd. MMMM y.',
+ medium: 'd. MMM y.',
+ short: 'dd. MM. y.'
+}
+
+var timeFormats = {
+ full: 'HH:mm:ss (zzzz)',
+ long: 'HH:mm:ss z',
+ medium: 'HH:mm:ss',
+ short: 'HH:mm'
+}
+
+var dateTimeFormats = {
+ full: "{{date}} 'u' {{time}}",
+ long: "{{date}} 'u' {{time}}",
+ medium: '{{date}} {{time}}',
+ short: '{{date}} {{time}}'
+}
+
+var formatLong = {
+ date: buildFormatLongFn({
+ formats: dateFormats,
+ defaultWidth: 'full'
+ }),
+ time: buildFormatLongFn({
+ formats: timeFormats,
+ defaultWidth: 'full'
+ }),
+ dateTime: buildFormatLongFn({
+ formats: dateTimeFormats,
+ defaultWidth: 'full'
+ })
+}
+
+export default formatLong
diff --git a/date-fns/src/locale/hr/_lib/formatRelative/index.js b/date-fns/src/locale/hr/_lib/formatRelative/index.js
new file mode 100644
index 0000000..6f4ff43
--- /dev/null
+++ b/date-fns/src/locale/hr/_lib/formatRelative/index.js
@@ -0,0 +1,44 @@
+var formatRelativeLocale = {
+ lastWeek: function(date) {
+ var day = date.getUTCDay()
+
+ switch (day) {
+ case 0:
+ return "'prošlu nedjelju u' p"
+ case 3:
+ return "'prošlu srijedu u' p"
+ case 6:
+ return "'prošlu subotu u' p"
+ default:
+ return "'prošli' EEEE 'u' p"
+ }
+ },
+ yesterday: "'jučer u' p",
+ today: "'danas u' p",
+ tomorrow: "'sutra u' p",
+ nextWeek: function(date) {
+ var day = date.getUTCDay()
+
+ switch (day) {
+ case 0:
+ return "'iduću nedjelju u' p"
+ case 3:
+ return "'iduću srijedu u' p"
+ case 6:
+ return "'iduću subotu u' p"
+ default:
+ return "'prošli' EEEE 'u' p"
+ }
+ },
+ other: 'P'
+}
+
+export default function formatRelative(token, date, _baseDate, _options) {
+ var format = formatRelativeLocale[token]
+
+ if (typeof format === 'function') {
+ return format(date)
+ }
+
+ return format
+}
diff --git a/date-fns/src/locale/hr/_lib/localize/index.js b/date-fns/src/locale/hr/_lib/localize/index.js
new file mode 100644
index 0000000..76b64be
--- /dev/null
+++ b/date-fns/src/locale/hr/_lib/localize/index.js
@@ -0,0 +1,222 @@
+import buildLocalizeFn from '../../../_lib/buildLocalizeFn/index'
+
+function ordinalNumber(dirtyNumber) {
+ var number = Number(dirtyNumber)
+ return String(number).concat('.')
+}
+
+var eraValues = {
+ narrow: ['pr.n.e.', 'AD'],
+ abbreviated: ['pr. Kr.', 'po. Kr.'],
+ wide: ['Prije Krista', 'Poslije Krista']
+}
+
+var monthValues = {
+ narrow: [
+ '1.',
+ '2.',
+ '3.',
+ '4.',
+ '5.',
+ '6.',
+ '7.',
+ '8.',
+ '9.',
+ '10.',
+ '11.',
+ '12.'
+ ],
+ abbreviated: [
+ 'sij',
+ 'velj',
+ 'ožu',
+ 'tra',
+ 'svi',
+ 'lip',
+ 'srp',
+ 'kol',
+ 'ruj',
+ 'lis',
+ 'stu',
+ 'pro'
+ ],
+ wide: [
+ 'siječanj',
+ 'veljača',
+ 'ožujak',
+ 'travanj',
+ 'svibanj',
+ 'lipanj',
+ 'srpanj',
+ 'kolovoz',
+ 'rujan',
+ 'listopad',
+ 'studeni',
+ 'prosinac'
+ ]
+}
+
+var formattingMonthValues = {
+ narrow: [
+ '1.',
+ '2.',
+ '3.',
+ '4.',
+ '5.',
+ '6.',
+ '7.',
+ '8.',
+ '9.',
+ '10.',
+ '11.',
+ '12.'
+ ],
+ abbreviated: [
+ 'sij',
+ 'velj',
+ 'ožu',
+ 'tra',
+ 'svi',
+ 'lip',
+ 'srp',
+ 'kol',
+ 'ruj',
+ 'lis',
+ 'stu',
+ 'pro'
+ ],
+ wide: [
+ 'siječnja',
+ 'veljače',
+ 'ožujka',
+ 'travnja',
+ 'svibnja',
+ 'lipnja',
+ 'srpnja',
+ 'kolovoza',
+ 'rujna',
+ 'listopada',
+ 'studenog',
+ 'prosinca'
+ ]
+}
+
+var quarterValues = {
+ narrow: ['1.', '2.', '3.', '4.'],
+ abbreviated: ['1. kv.', '2. kv.', '3. kv.', '4. kv.'],
+ wide: ['1. kvartal', '2. kvartal', '3. kvartal', '4. kvartal']
+}
+
+var dayValues = {
+ narrow: ['N', 'P', 'U', 'S', 'Č', 'P', 'S'],
+ short: ['ned', 'pon', 'uto', 'sri', 'čet', 'pet', 'sub'],
+ abbreviated: ['ned', 'pon', 'uto', 'sri', 'čet', 'pet', 'sub'],
+ wide: [
+ 'nedjelja',
+ 'ponedjeljak',
+ 'utorak',
+ 'srijeda',
+ 'četvrtak',
+ 'petak',
+ 'subota'
+ ]
+}
+
+var formattingDayPeriodValues = {
+ narrow: {
+ am: 'AM',
+ pm: 'PM',
+ midnight: 'ponoć',
+ noon: 'podne',
+ morning: 'ujutro',
+ afternoon: 'popodne',
+ evening: 'navečer',
+ night: 'noću'
+ },
+ abbreviated: {
+ am: 'AM',
+ pm: 'PM',
+ midnight: 'ponoć',
+ noon: 'podne',
+ morning: 'ujutro',
+ afternoon: 'popodne',
+ evening: 'navečer',
+ night: 'noću'
+ },
+ wide: {
+ am: 'AM',
+ pm: 'PM',
+ midnight: 'ponoć',
+ noon: 'podne',
+ morning: 'ujutro',
+ afternoon: 'poslije podne',
+ evening: 'navečer',
+ night: 'noću'
+ }
+}
+
+var dayPeriodValues = {
+ narrow: {
+ am: 'AM',
+ pm: 'PM',
+ midnight: 'ponoć',
+ noon: 'podne',
+ morning: 'ujutro',
+ afternoon: 'popodne',
+ evening: 'navečer',
+ night: 'noću'
+ },
+ abbreviated: {
+ am: 'AM',
+ pm: 'PM',
+ midnight: 'ponoć',
+ noon: 'podne',
+ morning: 'ujutro',
+ afternoon: 'popodne',
+ evening: 'navečer',
+ night: 'noću'
+ },
+ wide: {
+ am: 'AM',
+ pm: 'PM',
+ midnight: 'ponoć',
+ noon: 'podne',
+ morning: 'ujutro',
+ afternoon: 'poslije podne',
+ evening: 'navečer',
+ night: 'noću'
+ }
+}
+
+var localize = {
+ ordinalNumber: ordinalNumber,
+ era: buildLocalizeFn({
+ values: eraValues,
+ defaultWidth: 'wide'
+ }),
+ quarter: buildLocalizeFn({
+ values: quarterValues,
+ defaultWidth: 'wide',
+ argumentCallback: function(quarter) {
+ return Number(quarter) - 1
+ }
+ }),
+ month: buildLocalizeFn({
+ values: monthValues,
+ defaultWidth: 'wide',
+ formattingValues: formattingMonthValues,
+ defaultFormattingWidth: 'wide'
+ }),
+ day: buildLocalizeFn({
+ values: dayValues,
+ defaultWidth: 'wide'
+ }),
+ dayPeriod: buildLocalizeFn({
+ values: dayPeriodValues,
+ defaultWidth: 'wide',
+ formattingValues: formattingDayPeriodValues,
+ defaultFormattingWidth: 'wide'
+ })
+}
+
+export default localize
diff --git a/date-fns/src/locale/hr/_lib/match/index.js b/date-fns/src/locale/hr/_lib/match/index.js
new file mode 100644
index 0000000..78cb630
--- /dev/null
+++ b/date-fns/src/locale/hr/_lib/match/index.js
@@ -0,0 +1,132 @@
+import buildMatchFn from '../../../_lib/buildMatchFn/index'
+import buildMatchPatternFn from '../../../_lib/buildMatchPatternFn/index'
+
+var matchOrdinalNumberPattern = /^(\d+)\./i
+var parseOrdinalNumberPattern = /\d+/i
+
+var matchEraPatterns = {
+ narrow: /^(pr\.n\.e\.|AD)/i,
+ abbreviated: /^(pr\.\s?Kr\.|po\.\s?Kr\.)/i,
+ wide: /^(Prije Krista|prije nove ere|Poslije Krista|nova era)/i
+}
+var parseEraPatterns = {
+ any: [/^pr/i, /^(po|nova)/i]
+}
+
+var matchQuarterPatterns = {
+ narrow: /^[1234]/i,
+ abbreviated: /^[1234]\.\s?kv\.?/i,
+ wide: /^[1234]\. kvartal/i
+}
+var parseQuarterPatterns = {
+ any: [/1/i, /2/i, /3/i, /4/i]
+}
+
+var matchMonthPatterns = {
+ narrow: /^(10|11|12|[123456789])\./i,
+ abbreviated: /^(sij|velj|(ožu|ozu)|tra|svi|lip|srp|kol|ruj|lis|stu|pro)/i,
+ wide: /^((siječanj|siječnja|sijecanj|sijecnja)|(veljača|veljače|veljaca|veljace)|(ožujak|ožujka|ozujak|ozujka)|(travanj|travnja)|(svibanj|svibnja)|(lipanj|lipnja)|(srpanj|srpnja)|(kolovoz|kolovoza)|(rujan|rujna)|(listopad|listopada)|(studeni|studenog)|(prosinac|prosinca))/i
+}
+var parseMonthPatterns = {
+ narrow: [/(10|11|12|[123456789])/i],
+ abbreviated: [
+ /^sij/i,
+ /^velj/i,
+ /^(ožu|ozu)/i,
+ /^tra/i,
+ /^svi/i,
+ /^lip/i,
+ /^srp/i,
+ /^kol/i,
+ /^ruj/i,
+ /^lis/i,
+ /^stu/i,
+ /^pro/i
+ ],
+ wide: [
+ /^sij/i,
+ /^velj/i,
+ /^(ožu|ozu)/i,
+ /^tra/i,
+ /^svi/i,
+ /^lip/i,
+ /^srp/i,
+ /^kol/i,
+ /^ruj/i,
+ /^lis/i,
+ /^stu/i,
+ /^pro/i
+ ]
+}
+
+var matchDayPatterns = {
+ narrow: /^[npusčc]/i,
+ short: /^(ned|pon|uto|sri|(čet|cet)|pet|sub)/i,
+ abbreviated: /^(ned|pon|uto|sri|(čet|cet)|pet|sub)/i,
+ wide: /^(nedjelja|ponedjeljak|utorak|srijeda|(četvrtak|cetvrtak)|petak|subota)/i
+}
+var parseDayPatterns = {
+ narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],
+ any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i]
+}
+
+var matchDayPeriodPatterns = {
+ any: /^(am|pm|ponoc|ponoć|(po)?podne|navecer|navečer|noću|poslije podne|ujutro)/i
+}
+var parseDayPeriodPatterns = {
+ any: {
+ am: /^a/i,
+ pm: /^p/i,
+ midnight: /^pono/i,
+ noon: /^pod/i,
+ morning: /jutro/i,
+ afternoon: /(poslije\s|po)+podne/i,
+ evening: /(navece|naveče)/i,
+ night: /(nocu|noću)/i
+ }
+}
+
+var match = {
+ ordinalNumber: buildMatchPatternFn({
+ matchPattern: matchOrdinalNumberPattern,
+ parsePattern: parseOrdinalNumberPattern,
+ valueCallback: function(value) {
+ return parseInt(value, 10)
+ }
+ }),
+ era: buildMatchFn({
+ matchPatterns: matchEraPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseEraPatterns,
+ defaultParseWidth: 'any'
+ }),
+ quarter: buildMatchFn({
+ matchPatterns: matchQuarterPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseQuarterPatterns,
+ defaultParseWidth: 'any',
+ valueCallback: function(index) {
+ return index + 1
+ }
+ }),
+ month: buildMatchFn({
+ matchPatterns: matchMonthPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseMonthPatterns,
+ defaultParseWidth: 'wide'
+ }),
+ day: buildMatchFn({
+ matchPatterns: matchDayPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseDayPatterns,
+ defaultParseWidth: 'any'
+ }),
+ dayPeriod: buildMatchFn({
+ matchPatterns: matchDayPeriodPatterns,
+ defaultMatchWidth: 'any',
+ parsePatterns: parseDayPeriodPatterns,
+ defaultParseWidth: 'any'
+ })
+}
+
+export default match
diff --git a/date-fns/src/locale/hr/index.d.ts b/date-fns/src/locale/hr/index.d.ts
new file mode 100644
index 0000000..025baa3
--- /dev/null
+++ b/date-fns/src/locale/hr/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { hr } from 'date-fns/locale'
+export default hr
diff --git a/date-fns/src/locale/hr/index.js b/date-fns/src/locale/hr/index.js
new file mode 100644
index 0000000..e48232d
--- /dev/null
+++ b/date-fns/src/locale/hr/index.js
@@ -0,0 +1,30 @@
+import formatDistance from './_lib/formatDistance/index'
+import formatLong from './_lib/formatLong/index'
+import formatRelative from './_lib/formatRelative/index'
+import localize from './_lib/localize/index'
+import match from './_lib/match/index'
+
+/**
+ * @type {Locale}
+ * @category Locales
+ * @summary Croatian locale.
+ * @language Croatian
+ * @iso-639-2 hrv
+ * @author Matija Marohnić [@silvenon]{@link https://github.com/silvenon}
+ * @author Manico [@manico]{@link https://github.com/manico}
+ * @author Ivan Jeržabek [@jerzabek]{@link https://github.com/jerzabek}
+ */
+var locale = {
+ code: 'hr',
+ formatDistance: formatDistance,
+ formatLong: formatLong,
+ formatRelative: formatRelative,
+ localize: localize,
+ match: match,
+ options: {
+ weekStartsOn: 1 /* Monday */,
+ firstWeekContainsDate: 1
+ }
+}
+
+export default locale
diff --git a/date-fns/src/locale/hr/index.js.flow b/date-fns/src/locale/hr/index.js.flow
new file mode 100644
index 0000000..b9dfe66
--- /dev/null
+++ b/date-fns/src/locale/hr/index.js.flow
@@ -0,0 +1,35 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+declare module.exports: Locale
diff --git a/date-fns/src/locale/hr/snapshot.md b/date-fns/src/locale/hr/snapshot.md
new file mode 100644
index 0000000..95bcd16
--- /dev/null
+++ b/date-fns/src/locale/hr/snapshot.md
@@ -0,0 +1,304 @@
+# Croatian (hr) locale
+
+## `format` and `parse`
+
+| Title | Token string | Date | `format` result | `parse` result |
+| ------------------------------- | ------------ | ------------------------ | -------------------------------------------------- | ------------------------ |
+| Calendar year | yo | 1987-02-11T12:13:14.015Z | 1987. | 1987-01-01T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 5. | 0005-01-01T00:00:00.000Z |
+| Local week-numbering year | Yo | 1987-02-11T12:13:14.015Z | 1987. | 1986-12-29T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 5. | 0004-12-27T00:00:00.000Z |
+| Quarter (formatting) | Qo | 2019-01-01T12:13:14.015Z | 1. | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2. | 2019-04-01T00:00:00.000Z |
+| | QQQ | 2019-01-01T12:13:14.015Z | 1. kv. | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2. kv. | 2019-04-01T00:00:00.000Z |
+| | QQQQ | 2019-01-01T12:13:14.015Z | 1. kvartal | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2. kvartal | 2019-04-01T00:00:00.000Z |
+| | QQQQQ | 2019-01-01T12:13:14.015Z | 1. | Invalid Date |
+| | | 2019-04-01T12:13:14.015Z | 2. | Invalid Date |
+| Quarter (stand-alone) | qo | 2019-01-01T12:13:14.015Z | 1. | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2. | 2019-04-01T00:00:00.000Z |
+| | qqq | 2019-01-01T12:13:14.015Z | 1. kv. | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2. kv. | 2019-04-01T00:00:00.000Z |
+| | qqqq | 2019-01-01T12:13:14.015Z | 1. kvartal | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2. kvartal | 2019-04-01T00:00:00.000Z |
+| Month (formatting) | Mo | 2019-02-11T12:13:14.015Z | 2. | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7. | 2019-07-01T00:00:00.000Z |
+| | MMM | 2019-02-11T12:13:14.015Z | velj | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | srp | 2019-07-01T00:00:00.000Z |
+| | MMMM | 2019-02-11T12:13:14.015Z | veljače | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | srpnja | 2019-07-01T00:00:00.000Z |
+| | MMMMM | 2019-02-11T12:13:14.015Z | 2. | 2019-01-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7. | 2019-01-01T00:00:00.000Z |
+| Month (stand-alone) | Lo | 2019-02-11T12:13:14.015Z | 2. | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7. | 2019-07-01T00:00:00.000Z |
+| | LLL | 2019-02-11T12:13:14.015Z | velj | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | srp | 2019-07-01T00:00:00.000Z |
+| | LLLL | 2019-02-11T12:13:14.015Z | veljača | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | srpanj | 2019-07-01T00:00:00.000Z |
+| | LLLLL | 2019-02-11T12:13:14.015Z | 2. | 2019-01-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7. | 2019-01-01T00:00:00.000Z |
+| Local week of year | wo | 2019-01-01T12:13:14.015Z | 1. | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48. | 2019-11-25T00:00:00.000Z |
+| ISO week of year | Io | 2019-01-01T12:13:14.015Z | 1. | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48. | 2019-11-25T00:00:00.000Z |
+| Day of month | do | 2019-02-11T12:13:14.015Z | 11. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-28T12:13:14.015Z | 28. | 2019-02-28T00:00:00.000Z |
+| Day of year | Do | 2019-02-11T12:13:14.015Z | 42. | 2019-02-11T00:00:00.000Z |
+| | | 2019-12-31T12:13:14.015Z | 365. | 2019-12-31T00:00:00.000Z |
+| Day of week (formatting) | E | 2019-02-11T12:13:14.015Z | pon | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | pet | Invalid Date |
+| | EE | 2019-02-11T12:13:14.015Z | pon | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | pet | Invalid Date |
+| | EEE | 2019-02-11T12:13:14.015Z | pon | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | pet | Invalid Date |
+| | EEEE | 2019-02-11T12:13:14.015Z | ponedjeljak | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | petak | Invalid Date |
+| | EEEEE | 2019-02-11T12:13:14.015Z | P | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | P | Invalid Date |
+| | EEEEEE | 2019-02-11T12:13:14.015Z | pon | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | pet | Invalid Date |
+| ISO day of week (formatting) | io | 2019-02-11T12:13:14.015Z | 1. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5. | 2019-02-15T00:00:00.000Z |
+| | iii | 2019-02-11T12:13:14.015Z | pon | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | pet | Invalid Date |
+| | iiii | 2019-02-11T12:13:14.015Z | ponedjeljak | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | petak | Invalid Date |
+| | iiiii | 2019-02-11T12:13:14.015Z | P | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | P | Invalid Date |
+| | iiiiii | 2019-02-11T12:13:14.015Z | pon | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | pet | Invalid Date |
+| Local day of week (formatting) | eo | 2019-02-11T12:13:14.015Z | 1. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5. | 2019-02-15T00:00:00.000Z |
+| | eee | 2019-02-11T12:13:14.015Z | pon | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | pet | Invalid Date |
+| | eeee | 2019-02-11T12:13:14.015Z | ponedjeljak | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | petak | Invalid Date |
+| | eeeee | 2019-02-11T12:13:14.015Z | P | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | P | Invalid Date |
+| | eeeeee | 2019-02-11T12:13:14.015Z | pon | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | pet | Invalid Date |
+| Local day of week (stand-alone) | co | 2019-02-11T12:13:14.015Z | 1. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5. | 2019-02-15T00:00:00.000Z |
+| | ccc | 2019-02-11T12:13:14.015Z | pon | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | pet | Invalid Date |
+| | cccc | 2019-02-11T12:13:14.015Z | ponedjeljak | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | petak | Invalid Date |
+| | ccccc | 2019-02-11T12:13:14.015Z | P | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | P | Invalid Date |
+| | cccccc | 2019-02-11T12:13:14.015Z | pon | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | pet | Invalid Date |
+| AM, PM | a | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | aa | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | aaa | 2019-02-11T11:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | aaaa | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | aaaaa | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| AM, PM, noon, midnight | b | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | bb | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | bbb | 2019-02-11T11:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | bbbb | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | bbbbb | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| Flexible day period | B | 2019-02-11T11:13:14.015Z | ujutro | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | popodne | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | navečer | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | noću | 2019-02-11T00:00:00.000Z |
+| | BB | 2019-02-11T11:13:14.015Z | ujutro | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | popodne | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | navečer | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | noću | 2019-02-11T00:00:00.000Z |
+| | BBB | 2019-02-11T11:13:14.015Z | ujutro | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | popodne | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | navečer | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | noću | 2019-02-11T00:00:00.000Z |
+| | BBBB | 2019-02-11T11:13:14.015Z | ujutro | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | poslije podne | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | navečer | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | noću | 2019-02-11T00:00:00.000Z |
+| | BBBBB | 2019-02-11T11:13:14.015Z | ujutro | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | popodne | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | navečer | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | noću | 2019-02-11T00:00:00.000Z |
+| Hour [1-12] | ho | 2019-02-11T11:13:14.015Z | 11. | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11. | 2019-02-11T23:00:00.000Z |
+| Hour [0-23] | Ho | 2019-02-11T11:13:14.015Z | 11. | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23. | 2019-02-11T23:00:00.000Z |
+| Hour [0-11] | Ko | 2019-02-11T11:13:14.015Z | 11. | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11. | 2019-02-11T23:00:00.000Z |
+| Hour [1-24] | ko | 2019-02-11T11:13:14.015Z | 11. | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23. | 2019-02-11T23:00:00.000Z |
+| Minute | mo | 2019-01-01T12:01:14.015Z | 1. | 2019-01-01T12:01:00.000Z |
+| | | 2019-04-01T12:55:14.015Z | 55. | 2019-04-01T12:55:00.000Z |
+| Second | so | 2019-01-01T12:13:01.015Z | 1. | 2019-01-01T12:13:01.000Z |
+| | | 2019-04-01T12:13:55.015Z | 55. | 2019-04-01T12:13:55.000Z |
+| Long localized date | P | 1987-02-11T12:13:14.015Z | 11. 02. 1987. | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29. 05. 1453. | 1453-05-29T00:00:00.000Z |
+| | PP | 1987-02-11T12:13:14.015Z | 11. velj 1987. | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29. svi 1453. | 1453-05-29T00:00:00.000Z |
+| | PPP | 1987-02-11T12:13:14.015Z | 11. veljače 1987. | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29. svibnja 1453. | 1453-05-29T00:00:00.000Z |
+| | PPPP | 1987-02-11T12:13:14.015Z | srijeda, 11. veljače 1987. | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | nedjelja, 29. svibnja 1453. | 1453-05-29T00:00:00.000Z |
+| Long localized time | p | 1987-02-11T12:13:14.015Z | 12:13 | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 23:59 | 1453-05-29T23:59:00.000Z |
+| | pp | 1987-02-11T12:13:14.015Z | 12:13:14 | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 | 1453-05-29T23:59:59.000Z |
+| | ppp | 1987-02-11T12:13:14.015Z | 12:13:14 GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 GMT+0 | Errored |
+| | pppp | 1987-02-11T12:13:14.015Z | 12:13:14 (GMT+00:00) | Errored |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 (GMT+00:00) | Errored |
+| Combination of date and time | Pp | 1987-02-11T12:13:14.015Z | 11. 02. 1987. 12:13 | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29. 05. 1453. 23:59 | 1453-05-29T23:59:00.000Z |
+| | PPpp | 1987-02-11T12:13:14.015Z | 11. velj 1987. 12:13:14 | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29. svi 1453. 23:59:59 | 1453-05-29T23:59:59.000Z |
+| | PPPppp | 1987-02-11T12:13:14.015Z | 11. veljače 1987. u 12:13:14 GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 29. svibnja 1453. u 23:59:59 GMT+0 | Errored |
+| | PPPPpppp | 1987-02-11T12:13:14.015Z | srijeda, 11. veljače 1987. u 12:13:14 (GMT+00:00) | Errored |
+| | | 1453-05-29T23:59:59.999Z | nedjelja, 29. svibnja 1453. u 23:59:59 (GMT+00:00) | Errored |
+
+## `formatDistance`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `includeSeconds: true` | `addSuffix: true` |
+| ------------------------ | ----------------- | ---------------------- | ----------------------- |
+| 2006-01-01T00:00:00.000Z | oko 6 godina | oko 6 godina | za oko 6 godina |
+| 2005-01-01T00:00:00.000Z | oko 5 godina | oko 5 godina | za oko 5 godina |
+| 2004-01-01T00:00:00.000Z | oko 4 godine | oko 4 godine | za oko 4 godine |
+| 2003-01-01T00:00:00.000Z | oko 3 godine | oko 3 godine | za oko 3 godine |
+| 2002-01-01T00:00:00.000Z | oko 2 godine | oko 2 godine | za oko 2 godine |
+| 2001-06-01T00:00:00.000Z | preko 1 godinu | preko 1 godinu | za preko 1 godinu |
+| 2001-02-01T00:00:00.000Z | oko 1 godinu | oko 1 godinu | za oko 1 godinu |
+| 2001-01-01T00:00:00.000Z | oko 1 godinu | oko 1 godinu | za oko 1 godinu |
+| 2000-06-01T00:00:00.000Z | 5 mjeseci | 5 mjeseci | za 5 mjeseci |
+| 2000-03-01T00:00:00.000Z | 2 mjeseca | 2 mjeseca | za 2 mjeseca |
+| 2000-02-01T00:00:00.000Z | oko 1 mjesec | oko 1 mjesec | za oko 1 mjesec |
+| 2000-01-15T00:00:00.000Z | 14 dana | 14 dana | za 14 dana |
+| 2000-01-02T00:00:00.000Z | 1 dan | 1 dan | za 1 dan |
+| 2000-01-01T06:00:00.000Z | oko 6 sati | oko 6 sati | za oko 6 sati |
+| 2000-01-01T01:00:00.000Z | oko 1 sat | oko 1 sat | za oko 1 sat |
+| 2000-01-01T00:45:00.000Z | oko 1 sat | oko 1 sat | za oko 1 sat |
+| 2000-01-01T00:30:00.000Z | 30 minuta | 30 minuta | za 30 minuta |
+| 2000-01-01T00:15:00.000Z | 15 minuta | 15 minuta | za 15 minuta |
+| 2000-01-01T00:01:00.000Z | 1 minuta | 1 minuta | za 1 minutu |
+| 2000-01-01T00:00:25.000Z | manje od 1 minute | pola minute | za manje od 1 minutu |
+| 2000-01-01T00:00:15.000Z | manje od 1 minute | manje od 20 sekundi | za manje od 1 minutu |
+| 2000-01-01T00:00:05.000Z | manje od 1 minute | manje od 10 sekundi | za manje od 1 minutu |
+| 2000-01-01T00:00:00.000Z | manje od 1 minute | manje od 5 sekundi | prije manje od 1 minute |
+| 1999-12-31T23:59:55.000Z | manje od 1 minute | manje od 10 sekundi | prije manje od 1 minute |
+| 1999-12-31T23:59:45.000Z | manje od 1 minute | manje od 20 sekundi | prije manje od 1 minute |
+| 1999-12-31T23:59:35.000Z | manje od 1 minute | pola minute | prije manje od 1 minute |
+| 1999-12-31T23:59:00.000Z | 1 minuta | 1 minuta | prije 1 minute |
+| 1999-12-31T23:45:00.000Z | 15 minuta | 15 minuta | prije 15 minuta |
+| 1999-12-31T23:30:00.000Z | 30 minuta | 30 minuta | prije 30 minuta |
+| 1999-12-31T23:15:00.000Z | oko 1 sat | oko 1 sat | prije oko 1 sat |
+| 1999-12-31T23:00:00.000Z | oko 1 sat | oko 1 sat | prije oko 1 sat |
+| 1999-12-31T18:00:00.000Z | oko 6 sati | oko 6 sati | prije oko 6 sati |
+| 1999-12-30T00:00:00.000Z | 2 dana | 2 dana | prije 2 dana |
+| 1999-12-15T00:00:00.000Z | 17 dana | 17 dana | prije 17 dana |
+| 1999-12-01T00:00:00.000Z | oko 1 mjesec | oko 1 mjesec | prije oko 1 mjesec |
+| 1999-11-01T00:00:00.000Z | 2 mjeseca | 2 mjeseca | prije 2 mjeseca |
+| 1999-06-01T00:00:00.000Z | 7 mjeseci | 7 mjeseci | prije 7 mjeseci |
+| 1999-01-01T00:00:00.000Z | oko 1 godinu | oko 1 godinu | prije oko 1 godinu |
+| 1998-12-01T00:00:00.000Z | oko 1 godinu | oko 1 godinu | prije oko 1 godinu |
+| 1998-06-01T00:00:00.000Z | preko 1 godinu | preko 1 godinu | prije preko 1 godinu |
+| 1998-01-01T00:00:00.000Z | oko 2 godine | oko 2 godine | prije oko 2 godine |
+| 1997-01-01T00:00:00.000Z | oko 3 godine | oko 3 godine | prije oko 3 godine |
+| 1996-01-01T00:00:00.000Z | oko 4 godine | oko 4 godine | prije oko 4 godine |
+| 1995-01-01T00:00:00.000Z | oko 5 godina | oko 5 godina | prije oko 5 godina |
+| 1994-01-01T00:00:00.000Z | oko 6 godina | oko 6 godina | prije oko 6 godina |
+
+## `formatDistanceStrict`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `addSuffix: true` | With forced unit (i.e. `hour`) |
+| ------------------------ | ---------- | ----------------- | ------------------------------ |
+| 2006-01-01T00:00:00.000Z | 6 godina | za 6 godina | 52608 sati |
+| 2005-01-01T00:00:00.000Z | 5 godina | za 5 godina | 43848 sati |
+| 2004-01-01T00:00:00.000Z | 4 godine | za 4 godine | 35064 sata |
+| 2003-01-01T00:00:00.000Z | 3 godine | za 3 godine | 26304 sata |
+| 2002-01-01T00:00:00.000Z | 2 godine | za 2 godine | 17544 sata |
+| 2001-06-01T00:00:00.000Z | 1 godina | za 1 godinu | 12408 sati |
+| 2001-02-01T00:00:00.000Z | 1 godina | za 1 godinu | 9528 sati |
+| 2001-01-01T00:00:00.000Z | 1 godina | za 1 godinu | 8784 sata |
+| 2000-06-01T00:00:00.000Z | 5 mjeseci | za 5 mjeseci | 3648 sati |
+| 2000-03-01T00:00:00.000Z | 2 mjeseca | za 2 mjeseca | 1440 sati |
+| 2000-02-01T00:00:00.000Z | 1 mjesec | za 1 mjesec | 744 sata |
+| 2000-01-15T00:00:00.000Z | 14 dana | za 14 dana | 336 sati |
+| 2000-01-02T00:00:00.000Z | 1 dan | za 1 dan | 24 sata |
+| 2000-01-01T06:00:00.000Z | 6 sati | za 6 sati | 6 sati |
+| 2000-01-01T01:00:00.000Z | 1 sat | za 1 sat | 1 sat |
+| 2000-01-01T00:45:00.000Z | 45 minuta | za 45 minuta | 1 sat |
+| 2000-01-01T00:30:00.000Z | 30 minuta | za 30 minuta | 1 sat |
+| 2000-01-01T00:15:00.000Z | 15 minuta | za 15 minuta | 0 sati |
+| 2000-01-01T00:01:00.000Z | 1 minuta | za 1 minutu | 0 sati |
+| 2000-01-01T00:00:25.000Z | 25 sekundi | za 25 sekundi | 0 sati |
+| 2000-01-01T00:00:15.000Z | 15 sekundi | za 15 sekundi | 0 sati |
+| 2000-01-01T00:00:05.000Z | 5 sekundi | za 5 sekundi | 0 sati |
+| 2000-01-01T00:00:00.000Z | 0 sekundi | prije 0 sekundi | 0 sati |
+| 1999-12-31T23:59:55.000Z | 5 sekundi | prije 5 sekundi | 0 sati |
+| 1999-12-31T23:59:45.000Z | 15 sekundi | prije 15 sekundi | 0 sati |
+| 1999-12-31T23:59:35.000Z | 25 sekundi | prije 25 sekundi | 0 sati |
+| 1999-12-31T23:59:00.000Z | 1 minuta | prije 1 minute | 0 sati |
+| 1999-12-31T23:45:00.000Z | 15 minuta | prije 15 minuta | 0 sati |
+| 1999-12-31T23:30:00.000Z | 30 minuta | prije 30 minuta | 1 sat |
+| 1999-12-31T23:15:00.000Z | 45 minuta | prije 45 minuta | 1 sat |
+| 1999-12-31T23:00:00.000Z | 1 sat | prije 1 sat | 1 sat |
+| 1999-12-31T18:00:00.000Z | 6 sati | prije 6 sati | 6 sati |
+| 1999-12-30T00:00:00.000Z | 2 dana | prije 2 dana | 48 sati |
+| 1999-12-15T00:00:00.000Z | 17 dana | prije 17 dana | 408 sati |
+| 1999-12-01T00:00:00.000Z | 1 mjesec | prije 1 mjesec | 744 sata |
+| 1999-11-01T00:00:00.000Z | 2 mjeseca | prije 2 mjeseca | 1464 sata |
+| 1999-06-01T00:00:00.000Z | 7 mjeseci | prije 7 mjeseci | 5136 sati |
+| 1999-01-01T00:00:00.000Z | 1 godina | prije 1 godine | 8760 sati |
+| 1998-12-01T00:00:00.000Z | 1 godina | prije 1 godine | 9504 sata |
+| 1998-06-01T00:00:00.000Z | 2 godine | prije 2 godine | 13896 sati |
+| 1998-01-01T00:00:00.000Z | 2 godine | prije 2 godine | 17520 sati |
+| 1997-01-01T00:00:00.000Z | 3 godine | prije 3 godine | 26280 sati |
+| 1996-01-01T00:00:00.000Z | 4 godine | prije 4 godine | 35064 sata |
+| 1995-01-01T00:00:00.000Z | 5 godina | prije 5 godina | 43824 sata |
+| 1994-01-01T00:00:00.000Z | 6 godina | prije 6 godina | 52584 sata |
+
+## `formatRelative`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result |
+| ------------------------ | -------------------------- |
+| 2000-01-10T00:00:00.000Z | 10. 01. 2000. |
+| 2000-01-05T00:00:00.000Z | iduću srijedu u 00:00 |
+| 2000-01-02T00:00:00.000Z | sutra u 00:00 |
+| 2000-01-01T00:00:00.000Z | danas u 00:00 |
+| 1999-12-31T00:00:00.000Z | jučer u 00:00 |
+| 1999-12-27T00:00:00.000Z | prošli ponedjeljak u 00:00 |
+| 1999-12-21T00:00:00.000Z | 21. 12. 1999. |
diff --git a/date-fns/src/locale/ht/_lib/formatDistance/index.js b/date-fns/src/locale/ht/_lib/formatDistance/index.js
new file mode 100644
index 0000000..47fd416
--- /dev/null
+++ b/date-fns/src/locale/ht/_lib/formatDistance/index.js
@@ -0,0 +1,101 @@
+var formatDistanceLocale = {
+ lessThanXSeconds: {
+ one: 'mwens pase yon segond',
+ other: 'mwens pase {{count}} segond',
+ },
+
+ xSeconds: {
+ one: '1 segond',
+ other: '{{count}} segond',
+ },
+
+ halfAMinute: '30 segond',
+
+ lessThanXMinutes: {
+ one: 'mwens pase yon minit',
+ other: 'mwens pase {{count}} minit',
+ },
+
+ xMinutes: {
+ one: '1 minit',
+ other: '{{count}} minit',
+ },
+
+ aboutXHours: {
+ one: 'anviwon inè',
+ other: 'anviwon {{count}} è',
+ },
+
+ xHours: {
+ one: '1 lè',
+ other: '{{count}} lè',
+ },
+
+ xDays: {
+ one: '1 jou',
+ other: '{{count}} jou',
+ },
+
+ aboutXWeeks: {
+ one: 'anviwon 1 semèn',
+ other: 'anviwon {{count}} semèn',
+ },
+
+ xWeeks: {
+ one: '1 semèn',
+ other: '{{count}} semèn',
+ },
+
+ aboutXMonths: {
+ one: 'anviwon 1 mwa',
+ other: 'anviwon {{count}} mwa',
+ },
+
+ xMonths: {
+ one: '1 mwa',
+ other: '{{count}} mwa',
+ },
+
+ aboutXYears: {
+ one: 'anviwon 1 an',
+ other: 'anviwon {{count}} an',
+ },
+
+ xYears: {
+ one: '1 an',
+ other: '{{count}} an',
+ },
+
+ overXYears: {
+ one: 'plis pase 1 an',
+ other: 'plis pase {{count}} an',
+ },
+
+ almostXYears: {
+ one: 'prèske 1 an',
+ other: 'prèske {{count}} an',
+ },
+}
+
+export default function formatDistance(token, count, options) {
+ options = options || {}
+
+ var result
+ if (typeof formatDistanceLocale[token] === 'string') {
+ result = formatDistanceLocale[token]
+ } else if (count === 1) {
+ result = formatDistanceLocale[token].one
+ } else {
+ result = formatDistanceLocale[token].other.replace('{{count}}', count)
+ }
+
+ if (options.addSuffix) {
+ if (options.comparison > 0) {
+ return 'nan ' + result
+ } else {
+ return 'sa fè ' + result
+ }
+ }
+
+ return result
+}
diff --git a/date-fns/src/locale/ht/_lib/formatLong/index.js b/date-fns/src/locale/ht/_lib/formatLong/index.js
new file mode 100644
index 0000000..94972ec
--- /dev/null
+++ b/date-fns/src/locale/ht/_lib/formatLong/index.js
@@ -0,0 +1,41 @@
+import buildFormatLongFn from '../../../_lib/buildFormatLongFn/index'
+
+var dateFormats = {
+ full: 'EEEE d MMMM y',
+ long: 'd MMMM y',
+ medium: 'd MMM y',
+ short: 'dd/MM/y',
+}
+
+var timeFormats = {
+ full: 'HH:mm:ss zzzz',
+ long: 'HH:mm:ss z',
+ medium: 'HH:mm:ss',
+ short: 'HH:mm',
+}
+
+var dateTimeFormats = {
+ full: "{{date}} 'nan lè' {{time}}",
+ long: "{{date}} 'nan lè' {{time}}",
+ medium: '{{date}}, {{time}}',
+ short: '{{date}}, {{time}}',
+}
+
+var formatLong = {
+ date: buildFormatLongFn({
+ formats: dateFormats,
+ defaultWidth: 'full',
+ }),
+
+ time: buildFormatLongFn({
+ formats: timeFormats,
+ defaultWidth: 'full',
+ }),
+
+ dateTime: buildFormatLongFn({
+ formats: dateTimeFormats,
+ defaultWidth: 'full',
+ }),
+}
+
+export default formatLong
diff --git a/date-fns/src/locale/ht/_lib/formatRelative/index.js b/date-fns/src/locale/ht/_lib/formatRelative/index.js
new file mode 100644
index 0000000..5de726c
--- /dev/null
+++ b/date-fns/src/locale/ht/_lib/formatRelative/index.js
@@ -0,0 +1,12 @@
+var formatRelativeLocale = {
+ lastWeek: "eeee 'pase nan lè' p",
+ yesterday: "'yè nan lè' p",
+ today: "'jodi a' p",
+ tomorrow: "'demen nan lè' p'",
+ nextWeek: "eeee 'pwochen nan lè' p",
+ other: 'P',
+}
+
+export default function formatRelative(token, _date, _baseDate, _options) {
+ return formatRelativeLocale[token]
+}
diff --git a/date-fns/src/locale/ht/_lib/formatters/index.js b/date-fns/src/locale/ht/_lib/formatters/index.js
new file mode 100644
index 0000000..dfb0661
--- /dev/null
+++ b/date-fns/src/locale/ht/_lib/formatters/index.js
@@ -0,0 +1,19 @@
+var formatters = {}
+
+// Special case for day of month ordinals in long date format context:
+// 1er mars, 2 mars, 3 mars, …
+// See https://github.com/date-fns/date-fns/issues/437
+var monthsTokens = ['MMM', 'MMMM']
+monthsTokens.forEach(function (monthToken) {
+ formatters['Do ' + monthToken] = function (date, options) {
+ var commonFormatters = options.formatters
+ var dayOfMonthToken = date.getUTCDate() === 1 ? 'Do' : 'D'
+ var dayOfMonthFormatter = commonFormatters[dayOfMonthToken]
+ var monthFormatter = commonFormatters[monthToken]
+ return (
+ dayOfMonthFormatter(date, options) + ' ' + monthFormatter(date, options)
+ )
+ }
+})
+
+export default formatters
diff --git a/date-fns/src/locale/ht/_lib/localize/index.js b/date-fns/src/locale/ht/_lib/localize/index.js
new file mode 100644
index 0000000..a809fc6
--- /dev/null
+++ b/date-fns/src/locale/ht/_lib/localize/index.js
@@ -0,0 +1,147 @@
+import buildLocalizeFn from '../../../_lib/buildLocalizeFn/index'
+
+var eraValues = {
+ narrow: ['av. J.-K', 'ap. J.-K'],
+ abbreviated: ['av. J.-K', 'ap. J.-K'],
+ wide: ['anvan Jezi Kris', 'apre Jezi Kris'],
+}
+
+var quarterValues = {
+ narrow: ['T1', 'T2', 'T3', 'T4'],
+ abbreviated: ['1ye trim.', '2yèm trim.', '3yèm trim.', '4yèm trim.'],
+ wide: ['1ye trimès', '2yèm trimès', '3yèm trimès', '4yèm trimès'],
+}
+
+var monthValues = {
+ narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'O', 'S', 'O', 'N', 'D'],
+ abbreviated: [
+ 'janv.',
+ 'fevr.',
+ 'mas',
+ 'avr.',
+ 'me',
+ 'jen',
+ 'jiyè',
+ 'out',
+ 'sept.',
+ 'okt.',
+ 'nov.',
+ 'des.',
+ ],
+ wide: [
+ 'janvye',
+ 'fevrye',
+ 'mas',
+ 'avril',
+ 'me',
+ 'jen',
+ 'jiyè',
+ 'out',
+ 'septanm',
+ 'oktòb',
+ 'novanm',
+ 'desanm',
+ ],
+}
+
+var dayValues = {
+ narrow: ['D', 'L', 'M', 'M', 'J', 'V', 'S'],
+ short: ['di', 'le', 'ma', 'mè', 'je', 'va', 'sa'],
+ abbreviated: ['dim.', 'len.', 'mad.', 'mèk.', 'jed.', 'van.', 'sam.'],
+ wide: ['dimanch', 'lendi', 'madi', 'mèkredi', 'jedi', 'vandredi', 'samdi'],
+}
+
+var dayPeriodValues = {
+ narrow: {
+ am: 'AM',
+ pm: 'PM',
+ midnight: 'minwit',
+ noon: 'midi',
+ morning: 'mat.',
+ afternoon: 'ap.m.',
+ evening: 'swa',
+ night: 'mat.',
+ },
+ abbreviated: {
+ am: 'AM',
+ pm: 'PM',
+ midnight: 'minwit',
+ noon: 'midi',
+ morning: 'maten',
+ afternoon: 'aprèmidi',
+ evening: 'swa',
+ night: 'maten',
+ },
+ wide: {
+ am: 'AM',
+ pm: 'PM',
+ midnight: 'minwit',
+ noon: 'midi',
+ morning: 'nan maten',
+ afternoon: 'nan aprèmidi',
+ evening: 'nan aswè',
+ night: 'nan maten',
+ },
+}
+
+function ordinalNumber(dirtyNumber, dirtyOptions) {
+ var number = Number(dirtyNumber)
+
+ var options = dirtyOptions || {}
+ var unit = String(options.unit)
+ var suffix
+
+ if (number === 0) {
+ return number
+ }
+
+ if (unit === 'year' || unit === 'hour' || unit === 'week') {
+ if (number === 1) {
+ suffix = 'ye'
+ } else {
+ suffix = 'yèm'
+ }
+ } else {
+ if (number === 1) {
+ suffix = 'ye'
+ } else {
+ suffix = 'yèm'
+ }
+ }
+
+ return number + suffix
+}
+
+var localize = {
+ ordinalNumber: ordinalNumber,
+
+ era: buildLocalizeFn({
+ values: eraValues,
+ defaultWidth: 'wide',
+ }),
+
+ quarter: buildLocalizeFn({
+ values: quarterValues,
+ defaultWidth: 'wide',
+ argumentCallback: function (quarter) {
+ return Number(quarter) - 1
+ },
+ }),
+
+ month: buildLocalizeFn({
+ values: monthValues,
+ defaultWidth: 'wide',
+ }),
+
+ day: buildLocalizeFn({
+ values: dayValues,
+ defaultWidth: 'wide',
+ }),
+
+ dayPeriod: buildLocalizeFn({
+ values: dayPeriodValues,
+ defaultWidth: 'wide',
+ }),
+}
+
+export default localize
diff --git a/date-fns/src/locale/ht/_lib/match/index.js b/date-fns/src/locale/ht/_lib/match/index.js
new file mode 100644
index 0000000..2248991
--- /dev/null
+++ b/date-fns/src/locale/ht/_lib/match/index.js
@@ -0,0 +1,137 @@
+import buildMatchPatternFn from '../../../_lib/buildMatchPatternFn/index'
+import buildMatchFn from '../../../_lib/buildMatchFn/index'
+
+var matchOrdinalNumberPattern = /^(\d+)(ye|yèm)?/i
+var parseOrdinalNumberPattern = /\d+/i
+
+var matchEraPatterns = {
+ narrow: /^(av\.J\.K|ap\.J\.K|ap\.J\.-K)/i,
+ abbreviated: /^(av\.J\.-K|av\.J-K|apr\.J\.-K|apr\.J-K|ap\.J-K)/i,
+ wide: /^(avan Jezi Kris|apre Jezi Kris)/i,
+}
+var parseEraPatterns = {
+ any: [/^av/i, /^ap/i],
+}
+
+var matchQuarterPatterns = {
+ narrow: /^[1234]/i,
+ abbreviated: /^t[1234]/i,
+ wide: /^[1234](ye|yèm)? trimès/i,
+}
+var parseQuarterPatterns = {
+ any: [/1/i, /2/i, /3/i, /4/i],
+}
+
+var matchMonthPatterns = {
+ narrow: /^[jfmasond]/i,
+ abbreviated: /^(janv|fevr|mas|avr|me|jen|jiyè|out|sept|okt|nov|des)\.?/i,
+ wide: /^(janvye|fevrye|mas|avril|me|jen|jiyè|out|septanm|oktòb|novanm|desanm)/i,
+}
+var parseMonthPatterns = {
+ narrow: [
+ /^j/i,
+ /^f/i,
+ /^m/i,
+ /^a/i,
+ /^m/i,
+ /^j/i,
+ /^j/i,
+ /^o/i,
+ /^s/i,
+ /^o/i,
+ /^n/i,
+ /^d/i,
+ ],
+ any: [
+ /^ja/i,
+ /^f/i,
+ /^ma/i,
+ /^av/i,
+ /^me/i,
+ /^je/i,
+ /^ji/i,
+ /^ou/i,
+ /^s/i,
+ /^ok/i,
+ /^n/i,
+ /^d/i,
+ ],
+}
+
+var matchDayPatterns = {
+ narrow: /^[lmjvsd]/i,
+ short: /^(di|le|ma|me|je|va|sa)/i,
+ abbreviated: /^(dim|len|mad|mèk|jed|van|sam)\.?/i,
+ wide: /^(dimanch|lendi|madi|mèkredi|jedi|vandredi|samdi)/i,
+}
+var parseDayPatterns = {
+ narrow: [/^d/i, /^l/i, /^m/i, /^m/i, /^j/i, /^v/i, /^s/i],
+ any: [/^di/i, /^le/i, /^ma/i, /^mè/i, /^je/i, /^va/i, /^sa/i],
+}
+
+var matchDayPeriodPatterns = {
+ narrow: /^(a|p|minwit|midi|mat\.?|ap\.?m\.?|swa)/i,
+ any: /^([ap]\.?\s?m\.?|nan maten|nan aprèmidi|nan aswè)/i,
+}
+var parseDayPeriodPatterns = {
+ any: {
+ am: /^a/i,
+ pm: /^p/i,
+ midnight: /^min/i,
+ noon: /^mid/i,
+ morning: /mat/i,
+ afternoon: /ap/i,
+ evening: /sw/i,
+ night: /nwit/i,
+ },
+}
+
+var match = {
+ ordinalNumber: buildMatchPatternFn({
+ matchPattern: matchOrdinalNumberPattern,
+ parsePattern: parseOrdinalNumberPattern,
+ valueCallback: function (value) {
+ return parseInt(value, 10)
+ },
+ }),
+
+ era: buildMatchFn({
+ matchPatterns: matchEraPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseEraPatterns,
+ defaultParseWidth: 'any',
+ }),
+
+ quarter: buildMatchFn({
+ matchPatterns: matchQuarterPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseQuarterPatterns,
+ defaultParseWidth: 'any',
+ valueCallback: function (index) {
+ return index + 1
+ },
+ }),
+
+ month: buildMatchFn({
+ matchPatterns: matchMonthPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseMonthPatterns,
+ defaultParseWidth: 'any',
+ }),
+
+ day: buildMatchFn({
+ matchPatterns: matchDayPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseDayPatterns,
+ defaultParseWidth: 'any',
+ }),
+
+ dayPeriod: buildMatchFn({
+ matchPatterns: matchDayPeriodPatterns,
+ defaultMatchWidth: 'any',
+ parsePatterns: parseDayPeriodPatterns,
+ defaultParseWidth: 'any',
+ }),
+}
+
+export default match
diff --git a/date-fns/src/locale/ht/index.d.ts b/date-fns/src/locale/ht/index.d.ts
new file mode 100644
index 0000000..7362d75
--- /dev/null
+++ b/date-fns/src/locale/ht/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { ht } from 'date-fns/locale'
+export default ht
diff --git a/date-fns/src/locale/ht/index.js b/date-fns/src/locale/ht/index.js
new file mode 100644
index 0000000..033406f
--- /dev/null
+++ b/date-fns/src/locale/ht/index.js
@@ -0,0 +1,30 @@
+import formatDistance from './_lib/formatDistance/index'
+import formatLong from './_lib/formatLong/index'
+import formatRelative from './_lib/formatRelative/index'
+import localize from './_lib/localize/index'
+import match from './_lib/match/index'
+
+/**
+ * @type {Locale}
+ * @category Locales
+ * @summary Haitian Creole locale.
+ * @language Haitian Creole
+ * @iso-639-2 hat
+ * @author Rubens Mariuzzo [@rmariuzzo]{@link https://github.com/rmariuzzo}
+ * @author Watson Marcelain [@watsongm24]{@link https://github.com/watsongm24}
+ */
+
+var locale = {
+ code: 'ht',
+ formatDistance: formatDistance,
+ formatLong: formatLong,
+ formatRelative: formatRelative,
+ localize: localize,
+ match: match,
+ options: {
+ weekStartsOn: 1 /* Monday */,
+ firstWeekContainsDate: 4,
+ },
+}
+
+export default locale
diff --git a/date-fns/src/locale/ht/index.js.flow b/date-fns/src/locale/ht/index.js.flow
new file mode 100644
index 0000000..b9dfe66
--- /dev/null
+++ b/date-fns/src/locale/ht/index.js.flow
@@ -0,0 +1,35 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+declare module.exports: Locale
diff --git a/date-fns/src/locale/ht/snapshot.md b/date-fns/src/locale/ht/snapshot.md
new file mode 100644
index 0000000..9ffb330
--- /dev/null
+++ b/date-fns/src/locale/ht/snapshot.md
@@ -0,0 +1,304 @@
+# Haitian Creole (ht) locale
+
+## `format` and `parse`
+
+| Title | Token string | Date | `format` result | `parse` result |
+| ------------------------------- | ------------ | ------------------------ | ------------------------------------------------ | ------------------------ |
+| Calendar year | yo | 1987-02-11T12:13:14.015Z | 1987yèm | 1987-01-01T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 5yèm | 0005-01-01T00:00:00.000Z |
+| Local week-numbering year | Yo | 1987-02-11T12:13:14.015Z | 1987yèm | 1986-12-29T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 4yèm | 0003-12-29T00:00:00.000Z |
+| Quarter (formatting) | Qo | 2019-01-01T12:13:14.015Z | 1ye | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2yèm | 2019-04-01T00:00:00.000Z |
+| | QQQ | 2019-01-01T12:13:14.015Z | 1ye trim. | Invalid Date |
+| | | 2019-04-01T12:13:14.015Z | 2yèm trim. | Invalid Date |
+| | QQQQ | 2019-01-01T12:13:14.015Z | 1ye trimès | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2yèm trimès | 2019-04-01T00:00:00.000Z |
+| | QQQQQ | 2019-01-01T12:13:14.015Z | T1 | Invalid Date |
+| | | 2019-04-01T12:13:14.015Z | T2 | Invalid Date |
+| Quarter (stand-alone) | qo | 2019-01-01T12:13:14.015Z | 1ye | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2yèm | 2019-04-01T00:00:00.000Z |
+| | qqq | 2019-01-01T12:13:14.015Z | 1ye trim. | Invalid Date |
+| | | 2019-04-01T12:13:14.015Z | 2yèm trim. | Invalid Date |
+| | qqqq | 2019-01-01T12:13:14.015Z | 1ye trimès | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2yèm trimès | 2019-04-01T00:00:00.000Z |
+| Month (formatting) | Mo | 2019-02-11T12:13:14.015Z | 2yèm | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7yèm | 2019-07-01T00:00:00.000Z |
+| | MMM | 2019-02-11T12:13:14.015Z | fevr. | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | jiyè | 2019-07-01T00:00:00.000Z |
+| | MMMM | 2019-02-11T12:13:14.015Z | fevrye | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | jiyè | 2019-07-01T00:00:00.000Z |
+| | MMMMM | 2019-02-11T12:13:14.015Z | F | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | J | 2019-01-01T00:00:00.000Z |
+| Month (stand-alone) | Lo | 2019-02-11T12:13:14.015Z | 2yèm | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7yèm | 2019-07-01T00:00:00.000Z |
+| | LLL | 2019-02-11T12:13:14.015Z | fevr. | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | jiyè | 2019-07-01T00:00:00.000Z |
+| | LLLL | 2019-02-11T12:13:14.015Z | fevrye | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | jiyè | 2019-07-01T00:00:00.000Z |
+| | LLLLL | 2019-02-11T12:13:14.015Z | F | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | J | 2019-01-01T00:00:00.000Z |
+| Local week of year | wo | 2019-01-01T12:13:14.015Z | 1ye | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48yèm | 2019-11-25T00:00:00.000Z |
+| ISO week of year | Io | 2019-01-01T12:13:14.015Z | 1ye | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48yèm | 2019-11-25T00:00:00.000Z |
+| Day of month | do | 2019-02-11T12:13:14.015Z | 11yèm | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-28T12:13:14.015Z | 28yèm | 2019-02-28T00:00:00.000Z |
+| Day of year | Do | 2019-02-11T12:13:14.015Z | 42yèm | 2019-02-11T00:00:00.000Z |
+| | | 2019-12-31T12:13:14.015Z | 365yèm | 2019-12-31T00:00:00.000Z |
+| Day of week (formatting) | E | 2019-02-11T12:13:14.015Z | len. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | van. | 2019-02-15T00:00:00.000Z |
+| | EE | 2019-02-11T12:13:14.015Z | len. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | van. | 2019-02-15T00:00:00.000Z |
+| | EEE | 2019-02-11T12:13:14.015Z | len. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | van. | 2019-02-15T00:00:00.000Z |
+| | EEEE | 2019-02-11T12:13:14.015Z | lendi | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | vandredi | 2019-02-15T00:00:00.000Z |
+| | EEEEE | 2019-02-11T12:13:14.015Z | L | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | V | 2019-02-15T00:00:00.000Z |
+| | EEEEEE | 2019-02-11T12:13:14.015Z | le | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | va | 2019-02-15T00:00:00.000Z |
+| ISO day of week (formatting) | io | 2019-02-11T12:13:14.015Z | 1ye | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5yèm | 2019-02-15T00:00:00.000Z |
+| | iii | 2019-02-11T12:13:14.015Z | len. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | van. | 2019-02-15T00:00:00.000Z |
+| | iiii | 2019-02-11T12:13:14.015Z | lendi | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | vandredi | 2019-02-15T00:00:00.000Z |
+| | iiiii | 2019-02-11T12:13:14.015Z | L | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | V | 2019-02-15T00:00:00.000Z |
+| | iiiiii | 2019-02-11T12:13:14.015Z | le | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | va | 2019-02-15T00:00:00.000Z |
+| Local day of week (formatting) | eo | 2019-02-11T12:13:14.015Z | 1ye | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5yèm | 2019-02-15T00:00:00.000Z |
+| | eee | 2019-02-11T12:13:14.015Z | len. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | van. | 2019-02-15T00:00:00.000Z |
+| | eeee | 2019-02-11T12:13:14.015Z | lendi | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | vandredi | 2019-02-15T00:00:00.000Z |
+| | eeeee | 2019-02-11T12:13:14.015Z | L | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | V | 2019-02-15T00:00:00.000Z |
+| | eeeeee | 2019-02-11T12:13:14.015Z | le | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | va | 2019-02-15T00:00:00.000Z |
+| Local day of week (stand-alone) | co | 2019-02-11T12:13:14.015Z | 1ye | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5yèm | 2019-02-15T00:00:00.000Z |
+| | ccc | 2019-02-11T12:13:14.015Z | len. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | van. | 2019-02-15T00:00:00.000Z |
+| | cccc | 2019-02-11T12:13:14.015Z | lendi | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | vandredi | 2019-02-15T00:00:00.000Z |
+| | ccccc | 2019-02-11T12:13:14.015Z | L | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | V | 2019-02-15T00:00:00.000Z |
+| | cccccc | 2019-02-11T12:13:14.015Z | le | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | va | 2019-02-15T00:00:00.000Z |
+| AM, PM | a | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | aa | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | aaa | 2019-02-11T11:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | aaaa | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | aaaaa | 2019-02-11T11:13:14.015Z | AM | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | PM | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | PM | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | AM | Invalid Date |
+| AM, PM, noon, midnight | b | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | bb | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | bbb | 2019-02-11T11:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | bbbb | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | bbbbb | 2019-02-11T11:13:14.015Z | AM | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | PM | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | PM | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | AM | Invalid Date |
+| Flexible day period | B | 2019-02-11T11:13:14.015Z | maten | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | aprèmidi | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | swa | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | maten | Invalid Date |
+| | BB | 2019-02-11T11:13:14.015Z | maten | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | aprèmidi | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | swa | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | maten | Invalid Date |
+| | BBB | 2019-02-11T11:13:14.015Z | maten | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | aprèmidi | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | swa | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | maten | Invalid Date |
+| | BBBB | 2019-02-11T11:13:14.015Z | nan maten | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | nan aprèmidi | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | nan aswè | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | nan maten | 2019-02-11T04:00:00.000Z |
+| | BBBBB | 2019-02-11T11:13:14.015Z | mat. | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | ap.m. | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | swa | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | mat. | 2019-02-11T04:00:00.000Z |
+| Hour [1-12] | ho | 2019-02-11T11:13:14.015Z | 11yèm | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11yèm | 2019-02-11T23:00:00.000Z |
+| Hour [0-23] | Ho | 2019-02-11T11:13:14.015Z | 11yèm | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23yèm | 2019-02-11T23:00:00.000Z |
+| Hour [0-11] | Ko | 2019-02-11T11:13:14.015Z | 11yèm | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11yèm | 2019-02-11T23:00:00.000Z |
+| Hour [1-24] | ko | 2019-02-11T11:13:14.015Z | 11yèm | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23yèm | 2019-02-11T23:00:00.000Z |
+| Minute | mo | 2019-01-01T12:01:14.015Z | 1ye | 2019-01-01T12:01:00.000Z |
+| | | 2019-04-01T12:55:14.015Z | 55yèm | 2019-04-01T12:55:00.000Z |
+| Second | so | 2019-01-01T12:13:01.015Z | 1ye | 2019-01-01T12:13:01.000Z |
+| | | 2019-04-01T12:13:55.015Z | 55yèm | 2019-04-01T12:13:55.000Z |
+| Long localized date | P | 1987-02-11T12:13:14.015Z | 11/02/1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29/05/1453 | 1453-05-29T00:00:00.000Z |
+| | PP | 1987-02-11T12:13:14.015Z | 11 fevr. 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 me 1453 | 1453-05-29T00:00:00.000Z |
+| | PPP | 1987-02-11T12:13:14.015Z | 11 fevrye 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 me 1453 | 1453-05-29T00:00:00.000Z |
+| | PPPP | 1987-02-11T12:13:14.015Z | mèkredi 11 fevrye 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | dimanch 29 me 1453 | 1453-05-29T00:00:00.000Z |
+| Long localized time | p | 1987-02-11T12:13:14.015Z | 12:13 | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 23:59 | 1453-05-29T23:59:00.000Z |
+| | pp | 1987-02-11T12:13:14.015Z | 12:13:14 | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 | 1453-05-29T23:59:59.000Z |
+| | ppp | 1987-02-11T12:13:14.015Z | 12:13:14 GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 GMT+0 | Errored |
+| | pppp | 1987-02-11T12:13:14.015Z | 12:13:14 GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 GMT+00:00 | Errored |
+| Combination of date and time | Pp | 1987-02-11T12:13:14.015Z | 11/02/1987, 12:13 | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29/05/1453, 23:59 | 1453-05-29T23:59:00.000Z |
+| | PPpp | 1987-02-11T12:13:14.015Z | 11 fevr. 1987, 12:13:14 | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 me 1453, 23:59:59 | 1453-05-29T23:59:59.000Z |
+| | PPPppp | 1987-02-11T12:13:14.015Z | 11 fevrye 1987 nan lè 12:13:14 GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 29 me 1453 nan lè 23:59:59 GMT+0 | Errored |
+| | PPPPpppp | 1987-02-11T12:13:14.015Z | mèkredi 11 fevrye 1987 nan lè 12:13:14 GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | dimanch 29 me 1453 nan lè 23:59:59 GMT+00:00 | Errored |
+
+## `formatDistance`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `includeSeconds: true` | `addSuffix: true` |
+| ------------------------ | -------------------- | ---------------------- | -------------------------- |
+| 2006-01-01T00:00:00.000Z | anviwon 6 an | anviwon 6 an | nan anviwon 6 an |
+| 2005-01-01T00:00:00.000Z | anviwon 5 an | anviwon 5 an | nan anviwon 5 an |
+| 2004-01-01T00:00:00.000Z | anviwon 4 an | anviwon 4 an | nan anviwon 4 an |
+| 2003-01-01T00:00:00.000Z | anviwon 3 an | anviwon 3 an | nan anviwon 3 an |
+| 2002-01-01T00:00:00.000Z | anviwon 2 an | anviwon 2 an | nan anviwon 2 an |
+| 2001-06-01T00:00:00.000Z | plis pase 1 an | plis pase 1 an | nan plis pase 1 an |
+| 2001-02-01T00:00:00.000Z | anviwon 1 an | anviwon 1 an | nan anviwon 1 an |
+| 2001-01-01T00:00:00.000Z | anviwon 1 an | anviwon 1 an | nan anviwon 1 an |
+| 2000-06-01T00:00:00.000Z | 5 mwa | 5 mwa | nan 5 mwa |
+| 2000-03-01T00:00:00.000Z | 2 mwa | 2 mwa | nan 2 mwa |
+| 2000-02-01T00:00:00.000Z | anviwon 1 mwa | anviwon 1 mwa | nan anviwon 1 mwa |
+| 2000-01-15T00:00:00.000Z | 14 jou | 14 jou | nan 14 jou |
+| 2000-01-02T00:00:00.000Z | 1 jou | 1 jou | nan 1 jou |
+| 2000-01-01T06:00:00.000Z | anviwon 6 è | anviwon 6 è | nan anviwon 6 è |
+| 2000-01-01T01:00:00.000Z | anviwon inè | anviwon inè | nan anviwon inè |
+| 2000-01-01T00:45:00.000Z | anviwon inè | anviwon inè | nan anviwon inè |
+| 2000-01-01T00:30:00.000Z | 30 minit | 30 minit | nan 30 minit |
+| 2000-01-01T00:15:00.000Z | 15 minit | 15 minit | nan 15 minit |
+| 2000-01-01T00:01:00.000Z | 1 minit | 1 minit | nan 1 minit |
+| 2000-01-01T00:00:25.000Z | mwens pase yon minit | 30 segond | nan mwens pase yon minit |
+| 2000-01-01T00:00:15.000Z | mwens pase yon minit | mwens pase 20 segond | nan mwens pase yon minit |
+| 2000-01-01T00:00:05.000Z | mwens pase yon minit | mwens pase 10 segond | nan mwens pase yon minit |
+| 2000-01-01T00:00:00.000Z | mwens pase yon minit | mwens pase 5 segond | sa fè mwens pase yon minit |
+| 1999-12-31T23:59:55.000Z | mwens pase yon minit | mwens pase 10 segond | sa fè mwens pase yon minit |
+| 1999-12-31T23:59:45.000Z | mwens pase yon minit | mwens pase 20 segond | sa fè mwens pase yon minit |
+| 1999-12-31T23:59:35.000Z | mwens pase yon minit | 30 segond | sa fè mwens pase yon minit |
+| 1999-12-31T23:59:00.000Z | 1 minit | 1 minit | sa fè 1 minit |
+| 1999-12-31T23:45:00.000Z | 15 minit | 15 minit | sa fè 15 minit |
+| 1999-12-31T23:30:00.000Z | 30 minit | 30 minit | sa fè 30 minit |
+| 1999-12-31T23:15:00.000Z | anviwon inè | anviwon inè | sa fè anviwon inè |
+| 1999-12-31T23:00:00.000Z | anviwon inè | anviwon inè | sa fè anviwon inè |
+| 1999-12-31T18:00:00.000Z | anviwon 6 è | anviwon 6 è | sa fè anviwon 6 è |
+| 1999-12-30T00:00:00.000Z | 2 jou | 2 jou | sa fè 2 jou |
+| 1999-12-15T00:00:00.000Z | 17 jou | 17 jou | sa fè 17 jou |
+| 1999-12-01T00:00:00.000Z | anviwon 1 mwa | anviwon 1 mwa | sa fè anviwon 1 mwa |
+| 1999-11-01T00:00:00.000Z | 2 mwa | 2 mwa | sa fè 2 mwa |
+| 1999-06-01T00:00:00.000Z | 7 mwa | 7 mwa | sa fè 7 mwa |
+| 1999-01-01T00:00:00.000Z | anviwon 1 an | anviwon 1 an | sa fè anviwon 1 an |
+| 1998-12-01T00:00:00.000Z | anviwon 1 an | anviwon 1 an | sa fè anviwon 1 an |
+| 1998-06-01T00:00:00.000Z | plis pase 1 an | plis pase 1 an | sa fè plis pase 1 an |
+| 1998-01-01T00:00:00.000Z | anviwon 2 an | anviwon 2 an | sa fè anviwon 2 an |
+| 1997-01-01T00:00:00.000Z | anviwon 3 an | anviwon 3 an | sa fè anviwon 3 an |
+| 1996-01-01T00:00:00.000Z | anviwon 4 an | anviwon 4 an | sa fè anviwon 4 an |
+| 1995-01-01T00:00:00.000Z | anviwon 5 an | anviwon 5 an | sa fè anviwon 5 an |
+| 1994-01-01T00:00:00.000Z | anviwon 6 an | anviwon 6 an | sa fè anviwon 6 an |
+
+## `formatDistanceStrict`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `addSuffix: true` | With forced unit (i.e. `hour`) |
+| ------------------------ | --------- | ----------------- | ------------------------------ |
+| 2006-01-01T00:00:00.000Z | 6 an | nan 6 an | 52608 lè |
+| 2005-01-01T00:00:00.000Z | 5 an | nan 5 an | 43848 lè |
+| 2004-01-01T00:00:00.000Z | 4 an | nan 4 an | 35064 lè |
+| 2003-01-01T00:00:00.000Z | 3 an | nan 3 an | 26304 lè |
+| 2002-01-01T00:00:00.000Z | 2 an | nan 2 an | 17544 lè |
+| 2001-06-01T00:00:00.000Z | 1 an | nan 1 an | 12408 lè |
+| 2001-02-01T00:00:00.000Z | 1 an | nan 1 an | 9528 lè |
+| 2001-01-01T00:00:00.000Z | 1 an | nan 1 an | 8784 lè |
+| 2000-06-01T00:00:00.000Z | 5 mwa | nan 5 mwa | 3648 lè |
+| 2000-03-01T00:00:00.000Z | 2 mwa | nan 2 mwa | 1440 lè |
+| 2000-02-01T00:00:00.000Z | 1 mwa | nan 1 mwa | 744 lè |
+| 2000-01-15T00:00:00.000Z | 14 jou | nan 14 jou | 336 lè |
+| 2000-01-02T00:00:00.000Z | 1 jou | nan 1 jou | 24 lè |
+| 2000-01-01T06:00:00.000Z | 6 lè | nan 6 lè | 6 lè |
+| 2000-01-01T01:00:00.000Z | 1 lè | nan 1 lè | 1 lè |
+| 2000-01-01T00:45:00.000Z | 45 minit | nan 45 minit | 1 lè |
+| 2000-01-01T00:30:00.000Z | 30 minit | nan 30 minit | 1 lè |
+| 2000-01-01T00:15:00.000Z | 15 minit | nan 15 minit | 0 lè |
+| 2000-01-01T00:01:00.000Z | 1 minit | nan 1 minit | 0 lè |
+| 2000-01-01T00:00:25.000Z | 25 segond | nan 25 segond | 0 lè |
+| 2000-01-01T00:00:15.000Z | 15 segond | nan 15 segond | 0 lè |
+| 2000-01-01T00:00:05.000Z | 5 segond | nan 5 segond | 0 lè |
+| 2000-01-01T00:00:00.000Z | 0 segond | sa fè 0 segond | 0 lè |
+| 1999-12-31T23:59:55.000Z | 5 segond | sa fè 5 segond | 0 lè |
+| 1999-12-31T23:59:45.000Z | 15 segond | sa fè 15 segond | 0 lè |
+| 1999-12-31T23:59:35.000Z | 25 segond | sa fè 25 segond | 0 lè |
+| 1999-12-31T23:59:00.000Z | 1 minit | sa fè 1 minit | 0 lè |
+| 1999-12-31T23:45:00.000Z | 15 minit | sa fè 15 minit | 0 lè |
+| 1999-12-31T23:30:00.000Z | 30 minit | sa fè 30 minit | 1 lè |
+| 1999-12-31T23:15:00.000Z | 45 minit | sa fè 45 minit | 1 lè |
+| 1999-12-31T23:00:00.000Z | 1 lè | sa fè 1 lè | 1 lè |
+| 1999-12-31T18:00:00.000Z | 6 lè | sa fè 6 lè | 6 lè |
+| 1999-12-30T00:00:00.000Z | 2 jou | sa fè 2 jou | 48 lè |
+| 1999-12-15T00:00:00.000Z | 17 jou | sa fè 17 jou | 408 lè |
+| 1999-12-01T00:00:00.000Z | 1 mwa | sa fè 1 mwa | 744 lè |
+| 1999-11-01T00:00:00.000Z | 2 mwa | sa fè 2 mwa | 1464 lè |
+| 1999-06-01T00:00:00.000Z | 7 mwa | sa fè 7 mwa | 5136 lè |
+| 1999-01-01T00:00:00.000Z | 1 an | sa fè 1 an | 8760 lè |
+| 1998-12-01T00:00:00.000Z | 1 an | sa fè 1 an | 9504 lè |
+| 1998-06-01T00:00:00.000Z | 2 an | sa fè 2 an | 13896 lè |
+| 1998-01-01T00:00:00.000Z | 2 an | sa fè 2 an | 17520 lè |
+| 1997-01-01T00:00:00.000Z | 3 an | sa fè 3 an | 26280 lè |
+| 1996-01-01T00:00:00.000Z | 4 an | sa fè 4 an | 35064 lè |
+| 1995-01-01T00:00:00.000Z | 5 an | sa fè 5 an | 43824 lè |
+| 1994-01-01T00:00:00.000Z | 6 an | sa fè 6 an | 52584 lè |
+
+## `formatRelative`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result |
+| ------------------------ | ---------------------------- |
+| 2000-01-10T00:00:00.000Z | 10/01/2000 |
+| 2000-01-05T00:00:00.000Z | mèkredi pwochen nan lè 00:00 |
+| 2000-01-02T00:00:00.000Z | demen nan lè 00:00 |
+| 2000-01-01T00:00:00.000Z | jodi a 00:00 |
+| 1999-12-31T00:00:00.000Z | yè nan lè 00:00 |
+| 1999-12-27T00:00:00.000Z | lendi pase nan lè 00:00 |
+| 1999-12-21T00:00:00.000Z | 21/12/1999 |
diff --git a/date-fns/src/locale/hu/_lib/formatDistance/index.js b/date-fns/src/locale/hu/_lib/formatDistance/index.js
new file mode 100644
index 0000000..97d3af2
--- /dev/null
+++ b/date-fns/src/locale/hu/_lib/formatDistance/index.js
@@ -0,0 +1,92 @@
+var translations = {
+ about: 'körülbelül',
+ over: 'több mint',
+ almost: 'majdnem',
+ lessthan: 'kevesebb mint'
+}
+
+const withoutSuffixes = {
+ xseconds: ' másodperc',
+ halfaminute: 'fél perc',
+ xminutes: ' perc',
+ xhours: ' óra',
+ xdays: ' nap',
+ xweeks: ' hét',
+ xmonths: ' hónap',
+ xyears: ' év'
+}
+
+const withSuffixes = {
+ xseconds: {
+ '-1': ' másodperccel ezelőtt',
+ '1': ' másodperc múlva',
+ '0': ' másodperce'
+ },
+ halfaminute: {
+ '-1': 'fél perccel ezelőtt',
+ '1': 'fél perc múlva',
+ '0': 'fél perce'
+ },
+ xminutes: {
+ '-1': ' perccel ezelőtt',
+ '1': ' perc múlva',
+ '0': ' perce'
+ },
+ xhours: {
+ '-1': ' órával ezelőtt',
+ '1': ' óra múlva',
+ '0': ' órája'
+ },
+ xdays: {
+ '-1': ' nappal ezelőtt',
+ '1': ' nap múlva',
+ '0': ' napja'
+ },
+ xweeks: {
+ '-1': ' héttel ezelőtt',
+ '1': ' hét múlva',
+ '0': ' hete'
+ },
+ xmonths: {
+ '-1': ' hónappal ezelőtt',
+ '1': ' hónap múlva',
+ '0': ' hónapja'
+ },
+ xyears: {
+ '-1': ' évvel ezelőtt',
+ '1': ' év múlva',
+ '0': ' éve'
+ }
+}
+
+function translate(number, addSuffix, key, comparison) {
+ const translated = addSuffix
+ ? withSuffixes[key][comparison]
+ : withoutSuffixes[key]
+
+ if (key === 'halfaminute') {
+ return translated
+ }
+
+ return number + translated
+}
+
+export default function formatDistance(token, count, options) {
+ options = options || {}
+ var adverb = token.match(/about|over|almost|lessthan/i)
+ var unit = token.replace(adverb, '')
+
+ var result
+ result = translate(
+ count,
+ options.addSuffix,
+ unit.toLowerCase(),
+ options.comparison
+ )
+
+ if (adverb) {
+ result = translations[adverb[0].toLowerCase()] + ' ' + result
+ }
+
+ return result
+}
diff --git a/date-fns/src/locale/hu/_lib/formatLong/index.js b/date-fns/src/locale/hu/_lib/formatLong/index.js
new file mode 100644
index 0000000..3dd9916
--- /dev/null
+++ b/date-fns/src/locale/hu/_lib/formatLong/index.js
@@ -0,0 +1,41 @@
+import buildFormatLongFn from '../../../_lib/buildFormatLongFn/index'
+
+var dateFormats = {
+ full: 'y. MMMM d., EEEE',
+ long: 'y. MMMM d.',
+ medium: 'y. MMM d.',
+ short: 'y. MM. dd.'
+}
+
+var timeFormats = {
+ full: 'H:mm:ss zzzz',
+ long: 'H:mm:ss z',
+ medium: 'H:mm:ss',
+ short: 'H:mm'
+}
+
+var dateTimeFormats = {
+ full: '{{date}} {{time}}',
+ long: '{{date}} {{time}}',
+ medium: '{{date}} {{time}}',
+ short: '{{date}} {{time}}'
+}
+
+var formatLong = {
+ date: buildFormatLongFn({
+ formats: dateFormats,
+ defaultWidth: 'full'
+ }),
+
+ time: buildFormatLongFn({
+ formats: timeFormats,
+ defaultWidth: 'full'
+ }),
+
+ dateTime: buildFormatLongFn({
+ formats: dateTimeFormats,
+ defaultWidth: 'full'
+ })
+}
+
+export default formatLong
diff --git a/date-fns/src/locale/hu/_lib/formatRelative/index.js b/date-fns/src/locale/hu/_lib/formatRelative/index.js
new file mode 100644
index 0000000..cfdea74
--- /dev/null
+++ b/date-fns/src/locale/hu/_lib/formatRelative/index.js
@@ -0,0 +1,40 @@
+var accusativeWeekdays = [
+ 'vasárnap',
+ 'hétfőn',
+ 'kedden',
+ 'szerdán',
+ 'csütörtökön',
+ 'pénteken',
+ 'szombaton'
+]
+
+function week(isFuture) {
+ return function(date, _baseDate, _options) {
+ var day = date.getUTCDay()
+ return (
+ (isFuture ? '' : "'múlt' ") +
+ "'" +
+ accusativeWeekdays[day] +
+ "'" +
+ " p'-kor'"
+ )
+ }
+}
+var formatRelativeLocale = {
+ lastWeek: week(false),
+ yesterday: "'tegnap' p'-kor'",
+ today: "'ma' p'-kor'",
+ tomorrow: "'holnap' p'-kor'",
+ nextWeek: week(true),
+ other: 'P'
+}
+
+export default function formatRelative(token, date, baseDate, options) {
+ var format = formatRelativeLocale[token]
+
+ if (typeof format === 'function') {
+ return format(date, baseDate, options)
+ }
+
+ return format
+}
diff --git a/date-fns/src/locale/hu/_lib/localize/index.js b/date-fns/src/locale/hu/_lib/localize/index.js
new file mode 100644
index 0000000..fd1e8a2
--- /dev/null
+++ b/date-fns/src/locale/hu/_lib/localize/index.js
@@ -0,0 +1,140 @@
+import buildLocalizeFn from '../../../_lib/buildLocalizeFn/index'
+
+var eraValues = {
+ narrow: ['ie.', 'isz.'],
+ abbreviated: ['i. e.', 'i. sz.'],
+ wide: ['Krisztus előtt', 'időszámításunk szerint']
+}
+
+var quarterValues = {
+ narrow: ['1.', '2.', '3.', '4.'],
+ abbreviated: ['1. n.év', '2. n.év', '3. n.év', '4. n.év'],
+ wide: ['1. negyedév', '2. negyedév', '3. negyedév', '4. negyedév']
+}
+
+var formattingQuarterValues = {
+ narrow: ['I.', 'II.', 'III.', 'IV.'],
+ abbreviated: ['I. n.év', 'II. n.év', 'III. n.év', 'IV. n.év'],
+ wide: ['I. negyedév', 'II. negyedév', 'III. negyedév', 'IV. negyedév']
+}
+
+var monthValues = {
+ narrow: ['J', 'F', 'M', 'Á', 'M', 'J', 'J', 'A', 'Sz', 'O', 'N', 'D'],
+ abbreviated: [
+ 'jan.',
+ 'febr.',
+ 'márc.',
+ 'ápr.',
+ 'máj.',
+ 'jún.',
+ 'júl.',
+ 'aug.',
+ 'szept.',
+ 'okt.',
+ 'nov.',
+ 'dec.'
+ ],
+ wide: [
+ 'január',
+ 'február',
+ 'március',
+ 'április',
+ 'május',
+ 'június',
+ 'július',
+ 'augusztus',
+ 'szeptember',
+ 'október',
+ 'november',
+ 'december'
+ ]
+}
+
+var dayValues = {
+ narrow: ['V', 'H', 'K', 'Sz', 'Cs', 'P', 'Sz'],
+ short: ['V', 'H', 'K', 'Sze', 'Cs', 'P', 'Szo'],
+ abbreviated: ['V', 'H', 'K', 'Sze', 'Cs', 'P', 'Szo'],
+ wide: [
+ 'vasárnap',
+ 'hétfő',
+ 'kedd',
+ 'szerda',
+ 'csütörtök',
+ 'péntek',
+ 'szombat'
+ ]
+}
+
+var dayPeriodValues = {
+ narrow: {
+ am: 'de.',
+ pm: 'du.',
+ midnight: 'éjfél',
+ noon: 'dél',
+ morning: 'reggel',
+ afternoon: 'du.',
+ evening: 'este',
+ night: 'éjjel'
+ },
+ abbreviated: {
+ am: 'de.',
+ pm: 'du.',
+ midnight: 'éjfél',
+ noon: 'dél',
+ morning: 'reggel',
+ afternoon: 'du.',
+ evening: 'este',
+ night: 'éjjel'
+ },
+ wide: {
+ am: 'de.',
+ pm: 'du.',
+ midnight: 'éjfél',
+ noon: 'dél',
+ morning: 'reggel',
+ afternoon: 'délután',
+ evening: 'este',
+ night: 'éjjel'
+ }
+}
+
+function ordinalNumber(dirtyNumber, _dirtyOptions) {
+ var number = Number(dirtyNumber)
+ return number + '.'
+}
+
+var localize = {
+ ordinalNumber: ordinalNumber,
+
+ era: buildLocalizeFn({
+ values: eraValues,
+ defaultWidth: 'wide'
+ }),
+
+ quarter: buildLocalizeFn({
+ values: quarterValues,
+ defaultWidth: 'wide',
+ formattingValues: formattingQuarterValues,
+ argumentCallback: function(quarter) {
+ return Number(quarter) - 1
+ }
+ }),
+
+ month: buildLocalizeFn({
+ values: monthValues,
+ defaultWidth: 'wide'
+ }),
+
+ day: buildLocalizeFn({
+ values: dayValues,
+ defaultWidth: 'wide'
+ }),
+
+ dayPeriod: buildLocalizeFn({
+ values: dayPeriodValues,
+ defaultWidth: 'wide',
+ defaultFormattingWidth: 'wide'
+ })
+}
+
+export default localize
diff --git a/date-fns/src/locale/hu/_lib/match/index.js b/date-fns/src/locale/hu/_lib/match/index.js
new file mode 100644
index 0000000..0ac275c
--- /dev/null
+++ b/date-fns/src/locale/hu/_lib/match/index.js
@@ -0,0 +1,138 @@
+import buildMatchPatternFn from '../../../_lib/buildMatchPatternFn/index'
+import buildMatchFn from '../../../_lib/buildMatchFn/index'
+
+var matchOrdinalNumberPattern = /^(\d+)\.?/i
+var parseOrdinalNumberPattern = /\d+/i
+
+var matchEraPatterns = {
+ narrow: /^(ie\.|isz\.)/i,
+ abbreviated: /^(i\.\s?e\.?|b?\s?c\s?e|i\.\s?sz\.?)/i,
+ wide: /^(Krisztus előtt|időszámításunk előtt|időszámításunk szerint|i\. sz\.)/i
+}
+var parseEraPatterns = {
+ narrow: [/ie/i, /isz/i],
+ abbreviated: [/^(i\.?\s?e\.?|b\s?ce)/i, /^(i\.?\s?sz\.?|c\s?e)/i],
+ any: [/előtt/i, /(szerint|i. sz.)/i]
+}
+
+var matchQuarterPatterns = {
+ narrow: /^[1234]\.?/i,
+ abbreviated: /^[1234]?\.?\s?n\.év/i,
+ wide: /^([1234]|I|II|III|IV)?\.?\s?negyedév/i
+}
+var parseQuarterPatterns = {
+ any: [/1|I$/i, /2|II$/i, /3|III/i, /4|IV/i]
+}
+
+var matchMonthPatterns = {
+ narrow: /^[jfmaásond]|sz/i,
+ abbreviated: /^(jan\.?|febr\.?|márc\.?|ápr\.?|máj\.?|jún\.?|júl\.?|aug\.?|szept\.?|okt\.?|nov\.?|dec\.?)/i,
+ wide: /^(január|február|március|április|május|június|július|augusztus|szeptember|október|november|december)/i
+}
+var parseMonthPatterns = {
+ narrow: [
+ /^j/i,
+ /^f/i,
+ /^m/i,
+ /^a|á/i,
+ /^m/i,
+ /^j/i,
+ /^j/i,
+ /^a/i,
+ /^s|sz/i,
+ /^o/i,
+ /^n/i,
+ /^d/i
+ ],
+ any: [
+ /^ja/i,
+ /^f/i,
+ /^már/i,
+ /^áp/i,
+ /^máj/i,
+ /^jún/i,
+ /^júl/i,
+ /^au/i,
+ /^s/i,
+ /^o/i,
+ /^n/i,
+ /^d/i
+ ]
+}
+
+var matchDayPatterns = {
+ narrow: /^([vhkpc]|sz|cs|sz)/i,
+ short: /^([vhkp]|sze|cs|szo)/i,
+ abbreviated: /^([vhkp]|sze|cs|szo)/i,
+ wide: /^(vasárnap|hétfő|kedd|szerda|csütörtök|péntek|szombat)/i
+}
+var parseDayPatterns = {
+ narrow: [/^v/i, /^h/i, /^k/i, /^sz/i, /^c/i, /^p/i, /^sz/i],
+ any: [/^v/i, /^h/i, /^k/i, /^sze/i, /^c/i, /^p/i, /^szo/i]
+}
+
+var matchDayPeriodPatterns = {
+ any: /^((de|du)\.?|éjfél|délután|dél|reggel|este|éjjel)/i
+}
+var parseDayPeriodPatterns = {
+ any: {
+ am: /^de\.?/i,
+ pm: /^du\.?/i,
+ midnight: /^éjf/i,
+ noon: /^dé/i,
+ morning: /reg/i,
+ afternoon: /^délu\.?/i,
+ evening: /es/i,
+ night: /éjj/i
+ }
+}
+
+var match = {
+ ordinalNumber: buildMatchPatternFn({
+ matchPattern: matchOrdinalNumberPattern,
+ parsePattern: parseOrdinalNumberPattern,
+ valueCallback: function(value) {
+ return parseInt(value, 10)
+ }
+ }),
+
+ era: buildMatchFn({
+ matchPatterns: matchEraPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseEraPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ quarter: buildMatchFn({
+ matchPatterns: matchQuarterPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseQuarterPatterns,
+ defaultParseWidth: 'any',
+ valueCallback: function(index) {
+ return index + 1
+ }
+ }),
+
+ month: buildMatchFn({
+ matchPatterns: matchMonthPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseMonthPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ day: buildMatchFn({
+ matchPatterns: matchDayPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseDayPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ dayPeriod: buildMatchFn({
+ matchPatterns: matchDayPeriodPatterns,
+ defaultMatchWidth: 'any',
+ parsePatterns: parseDayPeriodPatterns,
+ defaultParseWidth: 'any'
+ })
+}
+
+export default match
diff --git a/date-fns/src/locale/hu/index.d.ts b/date-fns/src/locale/hu/index.d.ts
new file mode 100644
index 0000000..979baa6
--- /dev/null
+++ b/date-fns/src/locale/hu/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { hu } from 'date-fns/locale'
+export default hu
diff --git a/date-fns/src/locale/hu/index.js b/date-fns/src/locale/hu/index.js
new file mode 100644
index 0000000..13e9cb4
--- /dev/null
+++ b/date-fns/src/locale/hu/index.js
@@ -0,0 +1,33 @@
+import formatDistance from './_lib/formatDistance/index'
+import formatLong from './_lib/formatLong/index'
+import formatRelative from './_lib/formatRelative/index'
+import localize from './_lib/localize/index'
+import match from './_lib/match/index'
+
+/**
+ * @type {Locale}
+ * @category Locales
+ *
+ * @summary Hungarian locale.
+ * @language Hungarian
+ *
+ * @iso-639-2 hun
+ *
+ * @author Pavlo Shpak [@pshpak]{@link https://github.com/pshpak}
+ * @author Eduardo Pardo [@eduardopsll]{@link https://github.com/eduardopsll}
+ * @author Zoltan Szepesi [@twodcube]{@link https://github.com/twodcube}
+ */
+var locale = {
+ code: 'hu',
+ formatDistance: formatDistance,
+ formatLong: formatLong,
+ formatRelative: formatRelative,
+ localize: localize,
+ match: match,
+ options: {
+ weekStartsOn: 1 /* Monday */,
+ firstWeekContainsDate: 4
+ }
+}
+
+export default locale
diff --git a/date-fns/src/locale/hu/index.js.flow b/date-fns/src/locale/hu/index.js.flow
new file mode 100644
index 0000000..b9dfe66
--- /dev/null
+++ b/date-fns/src/locale/hu/index.js.flow
@@ -0,0 +1,35 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+declare module.exports: Locale
diff --git a/date-fns/src/locale/hu/snapshot.md b/date-fns/src/locale/hu/snapshot.md
new file mode 100644
index 0000000..848adac
--- /dev/null
+++ b/date-fns/src/locale/hu/snapshot.md
@@ -0,0 +1,304 @@
+# Hungarian (hu) locale
+
+## `format` and `parse`
+
+| Title | Token string | Date | `format` result | `parse` result |
+| ------------------------------- | ------------ | ------------------------ | -------------------------------------------- | ------------------------ |
+| Calendar year | yo | 1987-02-11T12:13:14.015Z | 1987. | 1987-01-01T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 5. | 0005-01-01T00:00:00.000Z |
+| Local week-numbering year | Yo | 1987-02-11T12:13:14.015Z | 1987. | 1986-12-29T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 4. | 0003-12-29T00:00:00.000Z |
+| Quarter (formatting) | Qo | 2019-01-01T12:13:14.015Z | 1. | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2. | 2019-04-01T00:00:00.000Z |
+| | QQQ | 2019-01-01T12:13:14.015Z | I. n.év | Invalid Date |
+| | | 2019-04-01T12:13:14.015Z | II. n.év | Invalid Date |
+| | QQQQ | 2019-01-01T12:13:14.015Z | I. negyedév | Invalid Date |
+| | | 2019-04-01T12:13:14.015Z | II. negyedév | Invalid Date |
+| | QQQQQ | 2019-01-01T12:13:14.015Z | I. | Invalid Date |
+| | | 2019-04-01T12:13:14.015Z | II. | Invalid Date |
+| Quarter (stand-alone) | qo | 2019-01-01T12:13:14.015Z | 1. | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2. | 2019-04-01T00:00:00.000Z |
+| | qqq | 2019-01-01T12:13:14.015Z | 1. n.év | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2. n.év | 2019-04-01T00:00:00.000Z |
+| | qqqq | 2019-01-01T12:13:14.015Z | 1. negyedév | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2. negyedév | 2019-04-01T00:00:00.000Z |
+| Month (formatting) | Mo | 2019-02-11T12:13:14.015Z | 2. | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7. | 2019-07-01T00:00:00.000Z |
+| | MMM | 2019-02-11T12:13:14.015Z | febr. | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | júl. | 2019-07-01T00:00:00.000Z |
+| | MMMM | 2019-02-11T12:13:14.015Z | február | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | július | 2019-07-01T00:00:00.000Z |
+| | MMMMM | 2019-02-11T12:13:14.015Z | F | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | J | 2019-01-01T00:00:00.000Z |
+| Month (stand-alone) | Lo | 2019-02-11T12:13:14.015Z | 2. | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7. | 2019-07-01T00:00:00.000Z |
+| | LLL | 2019-02-11T12:13:14.015Z | febr. | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | júl. | 2019-07-01T00:00:00.000Z |
+| | LLLL | 2019-02-11T12:13:14.015Z | február | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | július | 2019-07-01T00:00:00.000Z |
+| | LLLLL | 2019-02-11T12:13:14.015Z | F | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | J | 2019-01-01T00:00:00.000Z |
+| Local week of year | wo | 2019-01-01T12:13:14.015Z | 1. | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48. | 2019-11-25T00:00:00.000Z |
+| ISO week of year | Io | 2019-01-01T12:13:14.015Z | 1. | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48. | 2019-11-25T00:00:00.000Z |
+| Day of month | do | 2019-02-11T12:13:14.015Z | 11. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-28T12:13:14.015Z | 28. | 2019-02-28T00:00:00.000Z |
+| Day of year | Do | 2019-02-11T12:13:14.015Z | 42. | 2019-02-11T00:00:00.000Z |
+| | | 2019-12-31T12:13:14.015Z | 365. | 2019-12-31T00:00:00.000Z |
+| Day of week (formatting) | E | 2019-02-11T12:13:14.015Z | H | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | P | 2019-02-15T00:00:00.000Z |
+| | EE | 2019-02-11T12:13:14.015Z | H | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | P | 2019-02-15T00:00:00.000Z |
+| | EEE | 2019-02-11T12:13:14.015Z | H | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | P | 2019-02-15T00:00:00.000Z |
+| | EEEE | 2019-02-11T12:13:14.015Z | hétfő | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | péntek | 2019-02-15T00:00:00.000Z |
+| | EEEEE | 2019-02-11T12:13:14.015Z | H | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | P | 2019-02-15T00:00:00.000Z |
+| | EEEEEE | 2019-02-11T12:13:14.015Z | H | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | P | 2019-02-15T00:00:00.000Z |
+| ISO day of week (formatting) | io | 2019-02-11T12:13:14.015Z | 1. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5. | 2019-02-15T00:00:00.000Z |
+| | iii | 2019-02-11T12:13:14.015Z | H | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | P | 2019-02-15T00:00:00.000Z |
+| | iiii | 2019-02-11T12:13:14.015Z | hétfő | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | péntek | 2019-02-15T00:00:00.000Z |
+| | iiiii | 2019-02-11T12:13:14.015Z | H | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | P | 2019-02-15T00:00:00.000Z |
+| | iiiiii | 2019-02-11T12:13:14.015Z | H | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | P | 2019-02-15T00:00:00.000Z |
+| Local day of week (formatting) | eo | 2019-02-11T12:13:14.015Z | 1. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5. | 2019-02-15T00:00:00.000Z |
+| | eee | 2019-02-11T12:13:14.015Z | H | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | P | 2019-02-15T00:00:00.000Z |
+| | eeee | 2019-02-11T12:13:14.015Z | hétfő | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | péntek | 2019-02-15T00:00:00.000Z |
+| | eeeee | 2019-02-11T12:13:14.015Z | H | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | P | 2019-02-15T00:00:00.000Z |
+| | eeeeee | 2019-02-11T12:13:14.015Z | H | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | P | 2019-02-15T00:00:00.000Z |
+| Local day of week (stand-alone) | co | 2019-02-11T12:13:14.015Z | 1. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5. | 2019-02-15T00:00:00.000Z |
+| | ccc | 2019-02-11T12:13:14.015Z | H | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | P | 2019-02-15T00:00:00.000Z |
+| | cccc | 2019-02-11T12:13:14.015Z | hétfő | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | péntek | 2019-02-15T00:00:00.000Z |
+| | ccccc | 2019-02-11T12:13:14.015Z | H | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | P | 2019-02-15T00:00:00.000Z |
+| | cccccc | 2019-02-11T12:13:14.015Z | H | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | P | 2019-02-15T00:00:00.000Z |
+| AM, PM | a | 2019-02-11T11:13:14.015Z | de. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | du. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | du. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | de. | 2019-02-11T00:00:00.000Z |
+| | aa | 2019-02-11T11:13:14.015Z | de. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | du. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | du. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | de. | 2019-02-11T00:00:00.000Z |
+| | aaa | 2019-02-11T11:13:14.015Z | de. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | du. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | du. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | de. | 2019-02-11T00:00:00.000Z |
+| | aaaa | 2019-02-11T11:13:14.015Z | de. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | du. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | du. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | de. | 2019-02-11T00:00:00.000Z |
+| | aaaaa | 2019-02-11T11:13:14.015Z | de. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | du. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | du. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | de. | 2019-02-11T00:00:00.000Z |
+| AM, PM, noon, midnight | b | 2019-02-11T11:13:14.015Z | de. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | du. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | du. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | de. | 2019-02-11T00:00:00.000Z |
+| | bb | 2019-02-11T11:13:14.015Z | de. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | du. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | du. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | de. | 2019-02-11T00:00:00.000Z |
+| | bbb | 2019-02-11T11:13:14.015Z | de. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | du. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | du. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | de. | 2019-02-11T00:00:00.000Z |
+| | bbbb | 2019-02-11T11:13:14.015Z | de. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | du. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | du. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | de. | 2019-02-11T00:00:00.000Z |
+| | bbbbb | 2019-02-11T11:13:14.015Z | de. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | du. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | du. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | de. | 2019-02-11T00:00:00.000Z |
+| Flexible day period | B | 2019-02-11T11:13:14.015Z | reggel | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | du. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | este | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | éjjel | 2019-02-11T00:00:00.000Z |
+| | BB | 2019-02-11T11:13:14.015Z | reggel | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | du. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | este | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | éjjel | 2019-02-11T00:00:00.000Z |
+| | BBB | 2019-02-11T11:13:14.015Z | reggel | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | du. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | este | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | éjjel | 2019-02-11T00:00:00.000Z |
+| | BBBB | 2019-02-11T11:13:14.015Z | reggel | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | délután | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | este | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | éjjel | 2019-02-11T00:00:00.000Z |
+| | BBBBB | 2019-02-11T11:13:14.015Z | reggel | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | du. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | este | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | éjjel | 2019-02-11T00:00:00.000Z |
+| Hour [1-12] | ho | 2019-02-11T11:13:14.015Z | 11. | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11. | 2019-02-11T23:00:00.000Z |
+| Hour [0-23] | Ho | 2019-02-11T11:13:14.015Z | 11. | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23. | 2019-02-11T23:00:00.000Z |
+| Hour [0-11] | Ko | 2019-02-11T11:13:14.015Z | 11. | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11. | 2019-02-11T23:00:00.000Z |
+| Hour [1-24] | ko | 2019-02-11T11:13:14.015Z | 11. | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23. | 2019-02-11T23:00:00.000Z |
+| Minute | mo | 2019-01-01T12:01:14.015Z | 1. | 2019-01-01T12:01:00.000Z |
+| | | 2019-04-01T12:55:14.015Z | 55. | 2019-04-01T12:55:00.000Z |
+| Second | so | 2019-01-01T12:13:01.015Z | 1. | 2019-01-01T12:13:01.000Z |
+| | | 2019-04-01T12:13:55.015Z | 55. | 2019-04-01T12:13:55.000Z |
+| Long localized date | P | 1987-02-11T12:13:14.015Z | 1987. 02. 11. | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 1453. 05. 29. | 1453-05-29T00:00:00.000Z |
+| | PP | 1987-02-11T12:13:14.015Z | 1987. febr. 11. | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 1453. máj. 29. | 1453-05-29T00:00:00.000Z |
+| | PPP | 1987-02-11T12:13:14.015Z | 1987. február 11. | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 1453. május 29. | 1453-05-29T00:00:00.000Z |
+| | PPPP | 1987-02-11T12:13:14.015Z | 1987. február 11., szerda | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 1453. május 29., vasárnap | 1453-05-29T00:00:00.000Z |
+| Long localized time | p | 1987-02-11T12:13:14.015Z | 12:13 | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 23:59 | 1453-05-29T23:59:00.000Z |
+| | pp | 1987-02-11T12:13:14.015Z | 12:13:14 | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 | 1453-05-29T23:59:59.000Z |
+| | ppp | 1987-02-11T12:13:14.015Z | 12:13:14 GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 GMT+0 | Errored |
+| | pppp | 1987-02-11T12:13:14.015Z | 12:13:14 GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 GMT+00:00 | Errored |
+| Combination of date and time | Pp | 1987-02-11T12:13:14.015Z | 1987. 02. 11. 12:13 | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 1453. 05. 29. 23:59 | 1453-05-29T23:59:00.000Z |
+| | PPpp | 1987-02-11T12:13:14.015Z | 1987. febr. 11. 12:13:14 | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 1453. máj. 29. 23:59:59 | 1453-05-29T23:59:59.000Z |
+| | PPPppp | 1987-02-11T12:13:14.015Z | 1987. február 11. 12:13:14 GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 1453. május 29. 23:59:59 GMT+0 | Errored |
+| | PPPPpppp | 1987-02-11T12:13:14.015Z | 1987. február 11., szerda 12:13:14 GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 1453. május 29., vasárnap 23:59:59 GMT+00:00 | Errored |
+
+## `formatDistance`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `includeSeconds: true` | `addSuffix: true` |
+| ------------------------ | -------------------- | -------------------------- | ------------------------------- |
+| 2006-01-01T00:00:00.000Z | körülbelül 6 év | körülbelül 6 év | körülbelül 6 év múlva |
+| 2005-01-01T00:00:00.000Z | körülbelül 5 év | körülbelül 5 év | körülbelül 5 év múlva |
+| 2004-01-01T00:00:00.000Z | körülbelül 4 év | körülbelül 4 év | körülbelül 4 év múlva |
+| 2003-01-01T00:00:00.000Z | körülbelül 3 év | körülbelül 3 év | körülbelül 3 év múlva |
+| 2002-01-01T00:00:00.000Z | körülbelül 2 év | körülbelül 2 év | körülbelül 2 év múlva |
+| 2001-06-01T00:00:00.000Z | több mint 1 év | több mint 1 év | több mint 1 év múlva |
+| 2001-02-01T00:00:00.000Z | körülbelül 1 év | körülbelül 1 év | körülbelül 1 év múlva |
+| 2001-01-01T00:00:00.000Z | körülbelül 1 év | körülbelül 1 év | körülbelül 1 év múlva |
+| 2000-06-01T00:00:00.000Z | 5 hónap | 5 hónap | 5 hónap múlva |
+| 2000-03-01T00:00:00.000Z | 2 hónap | 2 hónap | 2 hónap múlva |
+| 2000-02-01T00:00:00.000Z | körülbelül 1 hónap | körülbelül 1 hónap | körülbelül 1 hónap múlva |
+| 2000-01-15T00:00:00.000Z | 14 nap | 14 nap | 14 nap múlva |
+| 2000-01-02T00:00:00.000Z | 1 nap | 1 nap | 1 nap múlva |
+| 2000-01-01T06:00:00.000Z | körülbelül 6 óra | körülbelül 6 óra | körülbelül 6 óra múlva |
+| 2000-01-01T01:00:00.000Z | körülbelül 1 óra | körülbelül 1 óra | körülbelül 1 óra múlva |
+| 2000-01-01T00:45:00.000Z | körülbelül 1 óra | körülbelül 1 óra | körülbelül 1 óra múlva |
+| 2000-01-01T00:30:00.000Z | 30 perc | 30 perc | 30 perc múlva |
+| 2000-01-01T00:15:00.000Z | 15 perc | 15 perc | 15 perc múlva |
+| 2000-01-01T00:01:00.000Z | 1 perc | 1 perc | 1 perc múlva |
+| 2000-01-01T00:00:25.000Z | kevesebb mint 1 perc | fél perc | kevesebb mint 1 perc múlva |
+| 2000-01-01T00:00:15.000Z | kevesebb mint 1 perc | kevesebb mint 20 másodperc | kevesebb mint 1 perc múlva |
+| 2000-01-01T00:00:05.000Z | kevesebb mint 1 perc | kevesebb mint 10 másodperc | kevesebb mint 1 perc múlva |
+| 2000-01-01T00:00:00.000Z | kevesebb mint 1 perc | kevesebb mint 5 másodperc | kevesebb mint 1 perce |
+| 1999-12-31T23:59:55.000Z | kevesebb mint 1 perc | kevesebb mint 10 másodperc | kevesebb mint 1 perccel ezelőtt |
+| 1999-12-31T23:59:45.000Z | kevesebb mint 1 perc | kevesebb mint 20 másodperc | kevesebb mint 1 perccel ezelőtt |
+| 1999-12-31T23:59:35.000Z | kevesebb mint 1 perc | fél perc | kevesebb mint 1 perccel ezelőtt |
+| 1999-12-31T23:59:00.000Z | 1 perc | 1 perc | 1 perccel ezelőtt |
+| 1999-12-31T23:45:00.000Z | 15 perc | 15 perc | 15 perccel ezelőtt |
+| 1999-12-31T23:30:00.000Z | 30 perc | 30 perc | 30 perccel ezelőtt |
+| 1999-12-31T23:15:00.000Z | körülbelül 1 óra | körülbelül 1 óra | körülbelül 1 órával ezelőtt |
+| 1999-12-31T23:00:00.000Z | körülbelül 1 óra | körülbelül 1 óra | körülbelül 1 órával ezelőtt |
+| 1999-12-31T18:00:00.000Z | körülbelül 6 óra | körülbelül 6 óra | körülbelül 6 órával ezelőtt |
+| 1999-12-30T00:00:00.000Z | 2 nap | 2 nap | 2 nappal ezelőtt |
+| 1999-12-15T00:00:00.000Z | 17 nap | 17 nap | 17 nappal ezelőtt |
+| 1999-12-01T00:00:00.000Z | körülbelül 1 hónap | körülbelül 1 hónap | körülbelül 1 hónappal ezelőtt |
+| 1999-11-01T00:00:00.000Z | 2 hónap | 2 hónap | 2 hónappal ezelőtt |
+| 1999-06-01T00:00:00.000Z | 7 hónap | 7 hónap | 7 hónappal ezelőtt |
+| 1999-01-01T00:00:00.000Z | körülbelül 1 év | körülbelül 1 év | körülbelül 1 évvel ezelőtt |
+| 1998-12-01T00:00:00.000Z | körülbelül 1 év | körülbelül 1 év | körülbelül 1 évvel ezelőtt |
+| 1998-06-01T00:00:00.000Z | több mint 1 év | több mint 1 év | több mint 1 évvel ezelőtt |
+| 1998-01-01T00:00:00.000Z | körülbelül 2 év | körülbelül 2 év | körülbelül 2 évvel ezelőtt |
+| 1997-01-01T00:00:00.000Z | körülbelül 3 év | körülbelül 3 év | körülbelül 3 évvel ezelőtt |
+| 1996-01-01T00:00:00.000Z | körülbelül 4 év | körülbelül 4 év | körülbelül 4 évvel ezelőtt |
+| 1995-01-01T00:00:00.000Z | körülbelül 5 év | körülbelül 5 év | körülbelül 5 évvel ezelőtt |
+| 1994-01-01T00:00:00.000Z | körülbelül 6 év | körülbelül 6 év | körülbelül 6 évvel ezelőtt |
+
+## `formatDistanceStrict`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `addSuffix: true` | With forced unit (i.e. `hour`) |
+| ------------------------ | ------------ | ----------------------- | ------------------------------ |
+| 2006-01-01T00:00:00.000Z | 6 év | 6 év múlva | 52608 óra |
+| 2005-01-01T00:00:00.000Z | 5 év | 5 év múlva | 43848 óra |
+| 2004-01-01T00:00:00.000Z | 4 év | 4 év múlva | 35064 óra |
+| 2003-01-01T00:00:00.000Z | 3 év | 3 év múlva | 26304 óra |
+| 2002-01-01T00:00:00.000Z | 2 év | 2 év múlva | 17544 óra |
+| 2001-06-01T00:00:00.000Z | 1 év | 1 év múlva | 12408 óra |
+| 2001-02-01T00:00:00.000Z | 1 év | 1 év múlva | 9528 óra |
+| 2001-01-01T00:00:00.000Z | 1 év | 1 év múlva | 8784 óra |
+| 2000-06-01T00:00:00.000Z | 5 hónap | 5 hónap múlva | 3648 óra |
+| 2000-03-01T00:00:00.000Z | 2 hónap | 2 hónap múlva | 1440 óra |
+| 2000-02-01T00:00:00.000Z | 1 hónap | 1 hónap múlva | 744 óra |
+| 2000-01-15T00:00:00.000Z | 14 nap | 14 nap múlva | 336 óra |
+| 2000-01-02T00:00:00.000Z | 1 nap | 1 nap múlva | 24 óra |
+| 2000-01-01T06:00:00.000Z | 6 óra | 6 óra múlva | 6 óra |
+| 2000-01-01T01:00:00.000Z | 1 óra | 1 óra múlva | 1 óra |
+| 2000-01-01T00:45:00.000Z | 45 perc | 45 perc múlva | 1 óra |
+| 2000-01-01T00:30:00.000Z | 30 perc | 30 perc múlva | 1 óra |
+| 2000-01-01T00:15:00.000Z | 15 perc | 15 perc múlva | 0 óra |
+| 2000-01-01T00:01:00.000Z | 1 perc | 1 perc múlva | 0 óra |
+| 2000-01-01T00:00:25.000Z | 25 másodperc | 25 másodperc múlva | 0 óra |
+| 2000-01-01T00:00:15.000Z | 15 másodperc | 15 másodperc múlva | 0 óra |
+| 2000-01-01T00:00:05.000Z | 5 másodperc | 5 másodperc múlva | 0 óra |
+| 2000-01-01T00:00:00.000Z | 0 másodperc | 0 másodperce | 0 óra |
+| 1999-12-31T23:59:55.000Z | 5 másodperc | 5 másodperccel ezelőtt | 0 óra |
+| 1999-12-31T23:59:45.000Z | 15 másodperc | 15 másodperccel ezelőtt | 0 óra |
+| 1999-12-31T23:59:35.000Z | 25 másodperc | 25 másodperccel ezelőtt | 0 óra |
+| 1999-12-31T23:59:00.000Z | 1 perc | 1 perccel ezelőtt | 0 óra |
+| 1999-12-31T23:45:00.000Z | 15 perc | 15 perccel ezelőtt | 0 óra |
+| 1999-12-31T23:30:00.000Z | 30 perc | 30 perccel ezelőtt | 1 óra |
+| 1999-12-31T23:15:00.000Z | 45 perc | 45 perccel ezelőtt | 1 óra |
+| 1999-12-31T23:00:00.000Z | 1 óra | 1 órával ezelőtt | 1 óra |
+| 1999-12-31T18:00:00.000Z | 6 óra | 6 órával ezelőtt | 6 óra |
+| 1999-12-30T00:00:00.000Z | 2 nap | 2 nappal ezelőtt | 48 óra |
+| 1999-12-15T00:00:00.000Z | 17 nap | 17 nappal ezelőtt | 408 óra |
+| 1999-12-01T00:00:00.000Z | 1 hónap | 1 hónappal ezelőtt | 744 óra |
+| 1999-11-01T00:00:00.000Z | 2 hónap | 2 hónappal ezelőtt | 1464 óra |
+| 1999-06-01T00:00:00.000Z | 7 hónap | 7 hónappal ezelőtt | 5136 óra |
+| 1999-01-01T00:00:00.000Z | 1 év | 1 évvel ezelőtt | 8760 óra |
+| 1998-12-01T00:00:00.000Z | 1 év | 1 évvel ezelőtt | 9504 óra |
+| 1998-06-01T00:00:00.000Z | 2 év | 2 évvel ezelőtt | 13896 óra |
+| 1998-01-01T00:00:00.000Z | 2 év | 2 évvel ezelőtt | 17520 óra |
+| 1997-01-01T00:00:00.000Z | 3 év | 3 évvel ezelőtt | 26280 óra |
+| 1996-01-01T00:00:00.000Z | 4 év | 4 évvel ezelőtt | 35064 óra |
+| 1995-01-01T00:00:00.000Z | 5 év | 5 évvel ezelőtt | 43824 óra |
+| 1994-01-01T00:00:00.000Z | 6 év | 6 évvel ezelőtt | 52584 óra |
+
+## `formatRelative`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result |
+| ------------------------ | -------------------- |
+| 2000-01-10T00:00:00.000Z | 2000. 01. 10. |
+| 2000-01-05T00:00:00.000Z | szerdán 0:00-kor |
+| 2000-01-02T00:00:00.000Z | holnap 0:00-kor |
+| 2000-01-01T00:00:00.000Z | ma 0:00-kor |
+| 1999-12-31T00:00:00.000Z | tegnap 0:00-kor |
+| 1999-12-27T00:00:00.000Z | múlt hétfőn 0:00-kor |
+| 1999-12-21T00:00:00.000Z | 1999. 12. 21. |
diff --git a/date-fns/src/locale/hy/_lib/formatDistance/index.js b/date-fns/src/locale/hy/_lib/formatDistance/index.js
new file mode 100644
index 0000000..1a13041
--- /dev/null
+++ b/date-fns/src/locale/hy/_lib/formatDistance/index.js
@@ -0,0 +1,101 @@
+var formatDistanceLocale = {
+ lessThanXSeconds: {
+ one: 'ավելի քիչ քան 1 վայրկյան',
+ other: 'ավելի քիչ քան {{count}} վայրկյան'
+ },
+
+ xSeconds: {
+ one: '1 վայրկյան',
+ other: '{{count}} վայրկյան'
+ },
+
+ halfAMinute: 'կես րոպե',
+
+ lessThanXMinutes: {
+ one: 'ավելի քիչ քան 1 րոպե',
+ other: 'ավելի քիչ քան {{count}} րոպե'
+ },
+
+ xMinutes: {
+ one: '1 րոպե',
+ other: '{{count}} րոպե'
+ },
+
+ aboutXHours: {
+ one: 'մոտ 1 ժամ',
+ other: 'մոտ {{count}} ժամ'
+ },
+
+ xHours: {
+ one: '1 ժամ',
+ other: '{{count}} ժամ'
+ },
+
+ xDays: {
+ one: '1 օր',
+ other: '{{count}} օր'
+ },
+
+ aboutXWeeks: {
+ one: 'մոտ 1 շաբաթ',
+ other: 'մոտ {{count}} շաբաթ'
+ },
+
+ xWeeks: {
+ one: '1 շաբաթ',
+ other: '{{count}} շաբաթ'
+ },
+
+ aboutXMonths: {
+ one: 'մոտ 1 ամիս',
+ other: 'մոտ {{count}} ամիս'
+ },
+
+ xMonths: {
+ one: '1 ամիս',
+ other: '{{count}} ամիս'
+ },
+
+ aboutXYears: {
+ one: 'մոտ 1 տարի',
+ other: 'մոտ {{count}} տարի'
+ },
+
+ xYears: {
+ one: '1 տարի',
+ other: '{{count}} տարի'
+ },
+
+ overXYears: {
+ one: 'ավելի քան 1 տարի',
+ other: 'ավելի քան {{count}} տարի'
+ },
+
+ almostXYears: {
+ one: 'համարյա 1 տարի',
+ other: 'համարյա {{count}} տարի'
+ }
+}
+
+export default function formatDistance(token, count, options) {
+ options = options || {}
+ var result
+
+ if (typeof formatDistanceLocale[token] === 'string') {
+ result = formatDistanceLocale[token]
+ } else if (count === 1) {
+ result = formatDistanceLocale[token].one
+ } else {
+ result = formatDistanceLocale[token].other.replace('{{count}}', count)
+ }
+
+ if (options.addSuffix) {
+ if (options.comparison > 0) {
+ return result + ' հետո'
+ } else {
+ return result + ' առաջ'
+ }
+ }
+
+ return result
+}
diff --git a/date-fns/src/locale/hy/_lib/formatLong/index.js b/date-fns/src/locale/hy/_lib/formatLong/index.js
new file mode 100644
index 0000000..ba7518c
--- /dev/null
+++ b/date-fns/src/locale/hy/_lib/formatLong/index.js
@@ -0,0 +1,36 @@
+import buildFormatLongFn from '../../../_lib/buildFormatLongFn/index'
+
+var dateFormats = {
+ full: 'd MMMM, y, EEEE',
+ long: 'd MMMM, y',
+ medium: 'd MMM, y',
+ short: 'dd.MM.yyyy'
+}
+var timeFormats = {
+ full: 'HH:mm:ss zzzz',
+ long: 'HH:mm:ss z',
+ medium: 'HH:mm:ss',
+ short: 'HH:mm'
+}
+var dateTimeFormats = {
+ full: "{{date}} 'ժ․'{{time}}",
+ long: "{{date}} 'ժ․'{{time}}",
+ medium: '{{date}}, {{time}}',
+ short: '{{date}}, {{time}}'
+}
+
+var formatLong = {
+ date: buildFormatLongFn({
+ formats: dateFormats,
+ defaultWidth: 'full'
+ }),
+ time: buildFormatLongFn({
+ formats: timeFormats,
+ defaultWidth: 'full'
+ }),
+ dateTime: buildFormatLongFn({
+ formats: dateTimeFormats,
+ defaultWidth: 'full'
+ })
+}
+export default formatLong
diff --git a/date-fns/src/locale/hy/_lib/formatRelative/index.js b/date-fns/src/locale/hy/_lib/formatRelative/index.js
new file mode 100644
index 0000000..60c8bf3
--- /dev/null
+++ b/date-fns/src/locale/hy/_lib/formatRelative/index.js
@@ -0,0 +1,12 @@
+var formatRelativeLocale = {
+ lastWeek: "'նախորդ' eeee p'֊ին'",
+ yesterday: "'երեկ' p'֊ին'",
+ today: "'այսօր' p'֊ին'",
+ tomorrow: "'վաղը' p'֊ին'",
+ nextWeek: "'հաջորդ' eeee p'֊ին'",
+ other: 'P'
+}
+
+export default function formatRelative(token, _date, _baseDate, _options) {
+ return formatRelativeLocale[token]
+}
diff --git a/date-fns/src/locale/hy/_lib/localize/index.js b/date-fns/src/locale/hy/_lib/localize/index.js
new file mode 100644
index 0000000..acd4bbb
--- /dev/null
+++ b/date-fns/src/locale/hy/_lib/localize/index.js
@@ -0,0 +1,179 @@
+import buildLocalizeFn from '../../../_lib/buildLocalizeFn/index'
+
+var eraValues = {
+ narrow: ['Ք', 'Մ'],
+ abbreviated: ['ՔԱ', 'ՄԹ'],
+ wide: ['Քրիստոսից առաջ', 'Մեր թվարկության']
+}
+var quarterValues = {
+ narrow: ['1', '2', '3', '4'],
+ abbreviated: ['Ք1', 'Ք2', 'Ք3', 'Ք4'],
+ wide: ['1֊ին քառորդ', '2֊րդ քառորդ', '3֊րդ քառորդ', '4֊րդ քառորդ']
+}
+var monthValues = {
+ narrow: ['Հ', 'Փ', 'Մ', 'Ա', 'Մ', 'Հ', 'Հ', 'Օ', 'Ս', 'Հ', 'Ն', 'Դ'],
+ abbreviated: [
+ 'հուն',
+ 'փետ',
+ 'մար',
+ 'ապր',
+ 'մայ',
+ 'հուն',
+ 'հուլ',
+ 'օգս',
+ 'սեպ',
+ 'հոկ',
+ 'նոյ',
+ 'դեկ'
+ ],
+ wide: [
+ 'հունվար',
+ 'փետրվար',
+ 'մարտ',
+ 'ապրիլ',
+ 'մայիս',
+ 'հունիս',
+ 'հուլիս',
+ 'օգոստոս',
+ 'սեպտեմբեր',
+ 'հոկտեմբեր',
+ 'նոյեմբեր',
+ 'դեկտեմբեր'
+ ]
+}
+var dayValues = {
+ narrow: ['Կ', 'Ե', 'Ե', 'Չ', 'Հ', 'Ո', 'Շ'],
+ short: ['կր', 'եր', 'եք', 'չք', 'հգ', 'ուր', 'շբ'],
+ abbreviated: ['կիր', 'երկ', 'երք', 'չոր', 'հնգ', 'ուրբ', 'շաբ'],
+ wide: [
+ 'կիրակի',
+ 'երկուշաբթի',
+ 'երեքշաբթի',
+ 'չորեքշաբթի',
+ 'հինգշաբթի',
+ 'ուրբաթ',
+ 'շաբաթ'
+ ]
+}
+var dayPeriodValues = {
+ narrow: {
+ am: 'a',
+ pm: 'p',
+ midnight: 'կեսգշ',
+ noon: 'կեսօր',
+ morning: 'առավոտ',
+ afternoon: 'ցերեկ',
+ evening: 'երեկո',
+ night: 'գիշեր'
+ },
+ abbreviated: {
+ am: 'AM',
+ pm: 'PM',
+ midnight: 'կեսգիշեր',
+ noon: 'կեսօր',
+ morning: 'առավոտ',
+ afternoon: 'ցերեկ',
+ evening: 'երեկո',
+ night: 'գիշեր'
+ },
+ wide: {
+ am: 'a.m.',
+ pm: 'p.m.',
+ midnight: 'կեսգիշեր',
+ noon: 'կեսօր',
+ morning: 'առավոտ',
+ afternoon: 'ցերեկ',
+ evening: 'երեկո',
+ night: 'գիշեր'
+ }
+}
+var formattingDayPeriodValues = {
+ narrow: {
+ am: 'a',
+ pm: 'p',
+ midnight: 'կեսգշ',
+ noon: 'կեսօր',
+ morning: 'առավոտը',
+ afternoon: 'ցերեկը',
+ evening: 'երեկոյան',
+ night: 'գիշերը'
+ },
+ abbreviated: {
+ am: 'AM',
+ pm: 'PM',
+ midnight: 'կեսգիշերին',
+ noon: 'կեսօրին',
+ morning: 'առավոտը',
+ afternoon: 'ցերեկը',
+ evening: 'երեկոյան',
+ night: 'գիշերը'
+ },
+ wide: {
+ am: 'a.m.',
+ pm: 'p.m.',
+ midnight: 'կեսգիշերին',
+ noon: 'կեսօրին',
+ morning: 'առավոտը',
+ afternoon: 'ցերեկը',
+ evening: 'երեկոյան',
+ night: 'գիշերը'
+ }
+}
+
+function ordinalNumber(dirtyNumber, _dirtyOptions) {
+ var number = Number(dirtyNumber) // If ordinal numbers depend on context, for example,
+ // if they are different for different grammatical genders,
+ // use `options.unit`:
+ //
+ // var options = dirtyOptions || {}
+ // var unit = String(options.unit)
+ //
+ // where `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',
+ // 'day', 'hour', 'minute', 'second'
+
+ var rem100 = number % 100
+
+ if (rem100 < 10) {
+ if (rem100 % 10 === 1) {
+ return number + '֊ին'
+ }
+ }
+
+ return number + '֊րդ'
+}
+
+var localize = {
+ ordinalNumber: ordinalNumber,
+
+ era: buildLocalizeFn({
+ values: eraValues,
+ defaultWidth: 'wide'
+ }),
+
+ quarter: buildLocalizeFn({
+ values: quarterValues,
+ defaultWidth: 'wide',
+ argumentCallback: function(quarter) {
+ return Number(quarter) - 1
+ }
+ }),
+
+ month: buildLocalizeFn({
+ values: monthValues,
+ defaultWidth: 'wide'
+ }),
+
+ day: buildLocalizeFn({
+ values: dayValues,
+ defaultWidth: 'wide'
+ }),
+
+ dayPeriod: buildLocalizeFn({
+ values: dayPeriodValues,
+ defaultWidth: 'wide',
+ formattingValues: formattingDayPeriodValues,
+ defaultFormattingWidth: 'wide'
+ })
+}
+
+export default localize
diff --git a/date-fns/src/locale/hy/_lib/match/index.js b/date-fns/src/locale/hy/_lib/match/index.js
new file mode 100644
index 0000000..3078402
--- /dev/null
+++ b/date-fns/src/locale/hy/_lib/match/index.js
@@ -0,0 +1,139 @@
+import buildMatchPatternFn from '../../../_lib/buildMatchPatternFn/index'
+import buildMatchFn from '../../../_lib/buildMatchFn/index'
+
+var matchOrdinalNumberPattern = /^(\d+)((-|֊)?(ին|րդ))?/i
+var parseOrdinalNumberPattern = /\d+/i
+
+var matchEraPatterns = {
+ narrow: /^(Ք|Մ)/i,
+ abbreviated: /^(Ք\.?\s?Ա\.?|Մ\.?\s?Թ\.?\s?Ա\.?|Մ\.?\s?Թ\.?|Ք\.?\s?Հ\.?)/i,
+ wide: /^(քրիստոսից առաջ|մեր թվարկությունից առաջ|մեր թվարկության|քրիստոսից հետո)/i
+}
+var parseEraPatterns = {
+ any: [/^(ք|մ)/i]
+}
+
+var matchQuarterPatterns = {
+ narrow: /^[1234]/i,
+ abbreviated: /^ք[1234]/i,
+ wide: /^[1234]((-|֊)?(ին|րդ)) քառորդ/i
+}
+var parseQuarterPatterns = {
+ any: [/1/i, /2/i, /3/i, /4/i]
+}
+
+var matchMonthPatterns = {
+ narrow: /^[հփմաօսնդ]/i,
+ abbreviated: /^(հուն|փետ|մար|ապր|մայ|հուն|հուլ|օգս|սեպ|հոկ|նոյ|դեկ)/i,
+ wide: /^(հունվար|փետրվար|մարտ|ապրիլ|մայիս|հունիս|հուլիս|օգոստոս|սեպտեմբեր|հոկտեմբեր|նոյեմբեր|դեկտեմբեր)/i
+}
+var parseMonthPatterns = {
+ narrow: [
+ /^հ/i,
+ /^փ/i,
+ /^մ/i,
+ /^ա/i,
+ /^մ/i,
+ /^հ/i,
+ /^հ/i,
+ /^օ/i,
+ /^ս/i,
+ /^հ/i,
+ /^ն/i,
+ /^դ/i
+ ],
+ any: [
+ /^հու/i,
+ /^փ/i,
+ /^մար/i,
+ /^ա/i,
+ /^մայ/i,
+ /^հուն/i,
+ /^հուլ/i,
+ /^օ/i,
+ /^ս/i,
+ /^հոկ/i,
+ /^ն/i,
+ /^դ/i
+ ]
+}
+
+var matchDayPatterns = {
+ narrow: /^[եչհոշկ]/i,
+ short: /^(կր|եր|եք|չք|հգ|ուր|շբ)/i,
+ abbreviated: /^(կիր|երկ|երք|չոր|հնգ|ուրբ|շաբ)/i,
+ wide: /^(կիրակի|երկուշաբթի|երեքշաբթի|չորեքշաբթի|հինգշաբթի|ուրբաթ|շաբաթ)/i
+}
+var parseDayPatterns = {
+ narrow: [/^կ/i, /^ե/i, /^ե/i, /^չ/i, /^հ/i, /^(ո|Ո)/, /^շ/i],
+ short: [/^կ/i, /^եր/i, /^եք/i, /^չ/i, /^հ/i, /^(ո|Ո)/, /^շ/i],
+ abbreviated: [/^կ/i, /^երկ/i, /^երք/i, /^չ/i, /^հ/i, /^(ո|Ո)/, /^շ/i],
+ wide: [/^կ/i, /^երկ/i, /^երե/i, /^չ/i, /^հ/i, /^(ո|Ո)/, /^շ/i]
+}
+
+var matchDayPeriodPatterns = {
+ narrow: /^([ap]|կեսգշ|կեսօր|(առավոտը?|ցերեկը?|երեկո(յան)?|գիշերը?))/i,
+ any: /^([ap]\.?\s?m\.?|կեսգիշեր(ին)?|կեսօր(ին)?|(առավոտը?|ցերեկը?|երեկո(յան)?|գիշերը?))/i
+}
+var parseDayPeriodPatterns = {
+ any: {
+ am: /^a/i,
+ pm: /^p/i,
+ midnight: /կեսգիշեր/i,
+ noon: /կեսօր/i,
+ morning: /առավոտ/i,
+ afternoon: /ցերեկ/i,
+ evening: /երեկո/i,
+ night: /գիշեր/i
+ }
+}
+
+var match = {
+ ordinalNumber: buildMatchPatternFn({
+ matchPattern: matchOrdinalNumberPattern,
+ parsePattern: parseOrdinalNumberPattern,
+ valueCallback: function(value) {
+ return parseInt(value, 10)
+ }
+ }),
+
+ era: buildMatchFn({
+ matchPatterns: matchEraPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseEraPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ quarter: buildMatchFn({
+ matchPatterns: matchQuarterPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseQuarterPatterns,
+ defaultParseWidth: 'any',
+ valueCallback: function(index) {
+ return index + 1
+ }
+ }),
+
+ month: buildMatchFn({
+ matchPatterns: matchMonthPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseMonthPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ day: buildMatchFn({
+ matchPatterns: matchDayPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseDayPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ dayPeriod: buildMatchFn({
+ matchPatterns: matchDayPeriodPatterns,
+ defaultMatchWidth: 'any',
+ parsePatterns: parseDayPeriodPatterns,
+ defaultParseWidth: 'any'
+ })
+}
+
+export default match
diff --git a/date-fns/src/locale/hy/index.d.ts b/date-fns/src/locale/hy/index.d.ts
new file mode 100644
index 0000000..a79f29e
--- /dev/null
+++ b/date-fns/src/locale/hy/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { hy } from 'date-fns/locale'
+export default hy
diff --git a/date-fns/src/locale/hy/index.js b/date-fns/src/locale/hy/index.js
new file mode 100644
index 0000000..25a68f3
--- /dev/null
+++ b/date-fns/src/locale/hy/index.js
@@ -0,0 +1,29 @@
+import formatDistance from './_lib/formatDistance/index'
+import formatLong from './_lib/formatLong/index'
+import formatRelative from './_lib/formatRelative/index'
+import localize from './_lib/localize/index'
+import match from './_lib/match/index'
+
+/**
+ * @type {Locale}
+ * @category Locales
+ * @summary Armenian locale
+ * @language Armenian
+ * @iso-639-2 arm
+ * @author Alex Igityan [@alexigityan]{@link https://github.com/alexigityan}
+ */
+
+var locale = {
+ code: 'hy',
+ formatDistance: formatDistance,
+ formatLong: formatLong,
+ formatRelative: formatRelative,
+ localize: localize,
+ match: match,
+ options: {
+ weekStartsOn: 1 /* Monday */,
+ firstWeekContainsDate: 1
+ }
+}
+
+export default locale
diff --git a/date-fns/src/locale/hy/index.js.flow b/date-fns/src/locale/hy/index.js.flow
new file mode 100644
index 0000000..b9dfe66
--- /dev/null
+++ b/date-fns/src/locale/hy/index.js.flow
@@ -0,0 +1,35 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+declare module.exports: Locale
diff --git a/date-fns/src/locale/hy/snapshot.md b/date-fns/src/locale/hy/snapshot.md
new file mode 100644
index 0000000..bd98019
--- /dev/null
+++ b/date-fns/src/locale/hy/snapshot.md
@@ -0,0 +1,304 @@
+# Armenian (hy) locale
+
+## `format` and `parse`
+
+| Title | Token string | Date | `format` result | `parse` result |
+| ------------------------------- | ------------ | ------------------------ | ------------------------------------------------- | ------------------------ |
+| Calendar year | yo | 1987-02-11T12:13:14.015Z | 1987֊րդ | 1987-01-01T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 5֊րդ | 0005-01-01T00:00:00.000Z |
+| Local week-numbering year | Yo | 1987-02-11T12:13:14.015Z | 1987֊րդ | 1986-12-29T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 5֊րդ | 0004-12-27T00:00:00.000Z |
+| Quarter (formatting) | Qo | 2019-01-01T12:13:14.015Z | 1֊ին | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2֊րդ | 2019-04-01T00:00:00.000Z |
+| | QQQ | 2019-01-01T12:13:14.015Z | Ք1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | Ք2 | 2019-04-01T00:00:00.000Z |
+| | QQQQ | 2019-01-01T12:13:14.015Z | 1֊ին քառորդ | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2֊րդ քառորդ | 2019-04-01T00:00:00.000Z |
+| | QQQQQ | 2019-01-01T12:13:14.015Z | 1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2 | 2019-04-01T00:00:00.000Z |
+| Quarter (stand-alone) | qo | 2019-01-01T12:13:14.015Z | 1֊ին | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2֊րդ | 2019-04-01T00:00:00.000Z |
+| | qqq | 2019-01-01T12:13:14.015Z | Ք1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | Ք2 | 2019-04-01T00:00:00.000Z |
+| | qqqq | 2019-01-01T12:13:14.015Z | 1֊ին քառորդ | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2֊րդ քառորդ | 2019-04-01T00:00:00.000Z |
+| Month (formatting) | Mo | 2019-02-11T12:13:14.015Z | 2֊րդ | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7֊րդ | 2019-07-01T00:00:00.000Z |
+| | MMM | 2019-02-11T12:13:14.015Z | փետ | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | հուլ | 2019-01-01T00:00:00.000Z |
+| | MMMM | 2019-02-11T12:13:14.015Z | փետրվար | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | հուլիս | 2019-01-01T00:00:00.000Z |
+| | MMMMM | 2019-02-11T12:13:14.015Z | Փ | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | Հ | 2019-01-01T00:00:00.000Z |
+| Month (stand-alone) | Lo | 2019-02-11T12:13:14.015Z | 2֊րդ | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7֊րդ | 2019-07-01T00:00:00.000Z |
+| | LLL | 2019-02-11T12:13:14.015Z | փետ | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | հուլ | 2019-01-01T00:00:00.000Z |
+| | LLLL | 2019-02-11T12:13:14.015Z | փետրվար | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | հուլիս | 2019-01-01T00:00:00.000Z |
+| | LLLLL | 2019-02-11T12:13:14.015Z | Փ | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | Հ | 2019-01-01T00:00:00.000Z |
+| Local week of year | wo | 2019-01-01T12:13:14.015Z | 1֊ին | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48֊րդ | 2019-11-25T00:00:00.000Z |
+| ISO week of year | Io | 2019-01-01T12:13:14.015Z | 1֊ին | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48֊րդ | 2019-11-25T00:00:00.000Z |
+| Day of month | do | 2019-02-11T12:13:14.015Z | 11֊րդ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-28T12:13:14.015Z | 28֊րդ | 2019-02-28T00:00:00.000Z |
+| Day of year | Do | 2019-02-11T12:13:14.015Z | 42֊րդ | 2019-02-11T00:00:00.000Z |
+| | | 2019-12-31T12:13:14.015Z | 365֊րդ | 2019-12-31T00:00:00.000Z |
+| Day of week (formatting) | E | 2019-02-11T12:13:14.015Z | երկ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ուրբ | 2019-02-15T00:00:00.000Z |
+| | EE | 2019-02-11T12:13:14.015Z | երկ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ուրբ | 2019-02-15T00:00:00.000Z |
+| | EEE | 2019-02-11T12:13:14.015Z | երկ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ուրբ | 2019-02-15T00:00:00.000Z |
+| | EEEE | 2019-02-11T12:13:14.015Z | երկուշաբթի | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ուրբաթ | 2019-02-15T00:00:00.000Z |
+| | EEEEE | 2019-02-11T12:13:14.015Z | Ե | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Ո | 2019-02-15T00:00:00.000Z |
+| | EEEEEE | 2019-02-11T12:13:14.015Z | եր | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ուր | 2019-02-15T00:00:00.000Z |
+| ISO day of week (formatting) | io | 2019-02-11T12:13:14.015Z | 1֊ին | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5֊րդ | 2019-02-15T00:00:00.000Z |
+| | iii | 2019-02-11T12:13:14.015Z | երկ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ուրբ | 2019-02-15T00:00:00.000Z |
+| | iiii | 2019-02-11T12:13:14.015Z | երկուշաբթի | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ուրբաթ | 2019-02-15T00:00:00.000Z |
+| | iiiii | 2019-02-11T12:13:14.015Z | Ե | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Ո | 2019-02-15T00:00:00.000Z |
+| | iiiiii | 2019-02-11T12:13:14.015Z | եր | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ուր | 2019-02-15T00:00:00.000Z |
+| Local day of week (formatting) | eo | 2019-02-11T12:13:14.015Z | 1֊ին | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5֊րդ | 2019-02-15T00:00:00.000Z |
+| | eee | 2019-02-11T12:13:14.015Z | երկ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ուրբ | 2019-02-15T00:00:00.000Z |
+| | eeee | 2019-02-11T12:13:14.015Z | երկուշաբթի | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ուրբաթ | 2019-02-15T00:00:00.000Z |
+| | eeeee | 2019-02-11T12:13:14.015Z | Ե | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Ո | 2019-02-15T00:00:00.000Z |
+| | eeeeee | 2019-02-11T12:13:14.015Z | եր | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ուր | 2019-02-15T00:00:00.000Z |
+| Local day of week (stand-alone) | co | 2019-02-11T12:13:14.015Z | 1֊ին | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5֊րդ | 2019-02-15T00:00:00.000Z |
+| | ccc | 2019-02-11T12:13:14.015Z | երկ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ուրբ | 2019-02-15T00:00:00.000Z |
+| | cccc | 2019-02-11T12:13:14.015Z | երկուշաբթի | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ուրբաթ | 2019-02-15T00:00:00.000Z |
+| | ccccc | 2019-02-11T12:13:14.015Z | Ե | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Ո | 2019-02-15T00:00:00.000Z |
+| | cccccc | 2019-02-11T12:13:14.015Z | եր | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ուր | 2019-02-15T00:00:00.000Z |
+| AM, PM | a | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | aa | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | aaa | 2019-02-11T11:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | aaaa | 2019-02-11T11:13:14.015Z | a.m. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | p.m. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | p.m. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | a.m. | 2019-02-11T00:00:00.000Z |
+| | aaaaa | 2019-02-11T11:13:14.015Z | a | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | p | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | p | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | a | 2019-02-11T00:00:00.000Z |
+| AM, PM, noon, midnight | b | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | bb | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | bbb | 2019-02-11T11:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | bbbb | 2019-02-11T11:13:14.015Z | a.m. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | p.m. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | p.m. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | a.m. | 2019-02-11T00:00:00.000Z |
+| | bbbbb | 2019-02-11T11:13:14.015Z | a | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | p | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | p | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | a | 2019-02-11T00:00:00.000Z |
+| Flexible day period | B | 2019-02-11T11:13:14.015Z | առավոտը | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | ցերեկը | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | երեկոյան | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | գիշերը | 2019-02-11T00:00:00.000Z |
+| | BB | 2019-02-11T11:13:14.015Z | առավոտը | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | ցերեկը | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | երեկոյան | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | գիշերը | 2019-02-11T00:00:00.000Z |
+| | BBB | 2019-02-11T11:13:14.015Z | առավոտը | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | ցերեկը | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | երեկոյան | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | գիշերը | 2019-02-11T00:00:00.000Z |
+| | BBBB | 2019-02-11T11:13:14.015Z | առավոտը | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | ցերեկը | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | երեկոյան | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | գիշերը | 2019-02-11T00:00:00.000Z |
+| | BBBBB | 2019-02-11T11:13:14.015Z | առավոտը | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | ցերեկը | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | երեկոյան | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | գիշերը | 2019-02-11T00:00:00.000Z |
+| Hour [1-12] | ho | 2019-02-11T11:13:14.015Z | 11֊րդ | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11֊րդ | 2019-02-11T23:00:00.000Z |
+| Hour [0-23] | Ho | 2019-02-11T11:13:14.015Z | 11֊րդ | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23֊րդ | 2019-02-11T23:00:00.000Z |
+| Hour [0-11] | Ko | 2019-02-11T11:13:14.015Z | 11֊րդ | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11֊րդ | 2019-02-11T23:00:00.000Z |
+| Hour [1-24] | ko | 2019-02-11T11:13:14.015Z | 11֊րդ | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23֊րդ | 2019-02-11T23:00:00.000Z |
+| Minute | mo | 2019-01-01T12:01:14.015Z | 1֊ին | 2019-01-01T12:01:00.000Z |
+| | | 2019-04-01T12:55:14.015Z | 55֊րդ | 2019-04-01T12:55:00.000Z |
+| Second | so | 2019-01-01T12:13:01.015Z | 1֊ին | 2019-01-01T12:13:01.000Z |
+| | | 2019-04-01T12:13:55.015Z | 55֊րդ | 2019-04-01T12:13:55.000Z |
+| Long localized date | P | 1987-02-11T12:13:14.015Z | 11.02.1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29.05.1453 | 1453-05-29T00:00:00.000Z |
+| | PP | 1987-02-11T12:13:14.015Z | 11 փետ, 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 մայ, 1453 | 1453-05-29T00:00:00.000Z |
+| | PPP | 1987-02-11T12:13:14.015Z | 11 փետրվար, 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 մայիս, 1453 | 1453-05-29T00:00:00.000Z |
+| | PPPP | 1987-02-11T12:13:14.015Z | 11 փետրվար, 1987, չորեքշաբթի | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 մայիս, 1453, կիրակի | 1453-05-29T00:00:00.000Z |
+| Long localized time | p | 1987-02-11T12:13:14.015Z | 12:13 | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 23:59 | 1453-05-29T23:59:00.000Z |
+| | pp | 1987-02-11T12:13:14.015Z | 12:13:14 | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 | 1453-05-29T23:59:59.000Z |
+| | ppp | 1987-02-11T12:13:14.015Z | 12:13:14 GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 GMT+0 | Errored |
+| | pppp | 1987-02-11T12:13:14.015Z | 12:13:14 GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 GMT+00:00 | Errored |
+| Combination of date and time | Pp | 1987-02-11T12:13:14.015Z | 11.02.1987, 12:13 | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29.05.1453, 23:59 | 1453-05-29T23:59:00.000Z |
+| | PPpp | 1987-02-11T12:13:14.015Z | 11 փետ, 1987, 12:13:14 | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 մայ, 1453, 23:59:59 | 1453-05-29T23:59:59.000Z |
+| | PPPppp | 1987-02-11T12:13:14.015Z | 11 փետրվար, 1987 ժ․12:13:14 GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 29 մայիս, 1453 ժ․23:59:59 GMT+0 | Errored |
+| | PPPPpppp | 1987-02-11T12:13:14.015Z | 11 փետրվար, 1987, չորեքշաբթի ժ․12:13:14 GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 29 մայիս, 1453, կիրակի ժ․23:59:59 GMT+00:00 | Errored |
+
+## `formatDistance`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `includeSeconds: true` | `addSuffix: true` |
+| ------------------------ | -------------------- | ------------------------- | ------------------------- |
+| 2006-01-01T00:00:00.000Z | մոտ 6 տարի | մոտ 6 տարի | մոտ 6 տարի հետո |
+| 2005-01-01T00:00:00.000Z | մոտ 5 տարի | մոտ 5 տարի | մոտ 5 տարի հետո |
+| 2004-01-01T00:00:00.000Z | մոտ 4 տարի | մոտ 4 տարի | մոտ 4 տարի հետո |
+| 2003-01-01T00:00:00.000Z | մոտ 3 տարի | մոտ 3 տարի | մոտ 3 տարի հետո |
+| 2002-01-01T00:00:00.000Z | մոտ 2 տարի | մոտ 2 տարի | մոտ 2 տարի հետո |
+| 2001-06-01T00:00:00.000Z | ավելի քան 1 տարի | ավելի քան 1 տարի | ավելի քան 1 տարի հետո |
+| 2001-02-01T00:00:00.000Z | մոտ 1 տարի | մոտ 1 տարի | մոտ 1 տարի հետո |
+| 2001-01-01T00:00:00.000Z | մոտ 1 տարի | մոտ 1 տարի | մոտ 1 տարի հետո |
+| 2000-06-01T00:00:00.000Z | 5 ամիս | 5 ամիս | 5 ամիս հետո |
+| 2000-03-01T00:00:00.000Z | 2 ամիս | 2 ամիս | 2 ամիս հետո |
+| 2000-02-01T00:00:00.000Z | մոտ 1 ամիս | մոտ 1 ամիս | մոտ 1 ամիս հետո |
+| 2000-01-15T00:00:00.000Z | 14 օր | 14 օր | 14 օր հետո |
+| 2000-01-02T00:00:00.000Z | 1 օր | 1 օր | 1 օր հետո |
+| 2000-01-01T06:00:00.000Z | մոտ 6 ժամ | մոտ 6 ժամ | մոտ 6 ժամ հետո |
+| 2000-01-01T01:00:00.000Z | մոտ 1 ժամ | մոտ 1 ժամ | մոտ 1 ժամ հետո |
+| 2000-01-01T00:45:00.000Z | մոտ 1 ժամ | մոտ 1 ժամ | մոտ 1 ժամ հետո |
+| 2000-01-01T00:30:00.000Z | 30 րոպե | 30 րոպե | 30 րոպե հետո |
+| 2000-01-01T00:15:00.000Z | 15 րոպե | 15 րոպե | 15 րոպե հետո |
+| 2000-01-01T00:01:00.000Z | 1 րոպե | 1 րոպե | 1 րոպե հետո |
+| 2000-01-01T00:00:25.000Z | ավելի քիչ քան 1 րոպե | կես րոպե | ավելի քիչ քան 1 րոպե հետո |
+| 2000-01-01T00:00:15.000Z | ավելի քիչ քան 1 րոպե | ավելի քիչ քան 20 վայրկյան | ավելի քիչ քան 1 րոպե հետո |
+| 2000-01-01T00:00:05.000Z | ավելի քիչ քան 1 րոպե | ավելի քիչ քան 10 վայրկյան | ավելի քիչ քան 1 րոպե հետո |
+| 2000-01-01T00:00:00.000Z | ավելի քիչ քան 1 րոպե | ավելի քիչ քան 5 վայրկյան | ավելի քիչ քան 1 րոպե առաջ |
+| 1999-12-31T23:59:55.000Z | ավելի քիչ քան 1 րոպե | ավելի քիչ քան 10 վայրկյան | ավելի քիչ քան 1 րոպե առաջ |
+| 1999-12-31T23:59:45.000Z | ավելի քիչ քան 1 րոպե | ավելի քիչ քան 20 վայրկյան | ավելի քիչ քան 1 րոպե առաջ |
+| 1999-12-31T23:59:35.000Z | ավելի քիչ քան 1 րոպե | կես րոպե | ավելի քիչ քան 1 րոպե առաջ |
+| 1999-12-31T23:59:00.000Z | 1 րոպե | 1 րոպե | 1 րոպե առաջ |
+| 1999-12-31T23:45:00.000Z | 15 րոպե | 15 րոպե | 15 րոպե առաջ |
+| 1999-12-31T23:30:00.000Z | 30 րոպե | 30 րոպե | 30 րոպե առաջ |
+| 1999-12-31T23:15:00.000Z | մոտ 1 ժամ | մոտ 1 ժամ | մոտ 1 ժամ առաջ |
+| 1999-12-31T23:00:00.000Z | մոտ 1 ժամ | մոտ 1 ժամ | մոտ 1 ժամ առաջ |
+| 1999-12-31T18:00:00.000Z | մոտ 6 ժամ | մոտ 6 ժամ | մոտ 6 ժամ առաջ |
+| 1999-12-30T00:00:00.000Z | 2 օր | 2 օր | 2 օր առաջ |
+| 1999-12-15T00:00:00.000Z | 17 օր | 17 օր | 17 օր առաջ |
+| 1999-12-01T00:00:00.000Z | մոտ 1 ամիս | մոտ 1 ամիս | մոտ 1 ամիս առաջ |
+| 1999-11-01T00:00:00.000Z | 2 ամիս | 2 ամիս | 2 ամիս առաջ |
+| 1999-06-01T00:00:00.000Z | 7 ամիս | 7 ամիս | 7 ամիս առաջ |
+| 1999-01-01T00:00:00.000Z | մոտ 1 տարի | մոտ 1 տարի | մոտ 1 տարի առաջ |
+| 1998-12-01T00:00:00.000Z | մոտ 1 տարի | մոտ 1 տարի | մոտ 1 տարի առաջ |
+| 1998-06-01T00:00:00.000Z | ավելի քան 1 տարի | ավելի քան 1 տարի | ավելի քան 1 տարի առաջ |
+| 1998-01-01T00:00:00.000Z | մոտ 2 տարի | մոտ 2 տարի | մոտ 2 տարի առաջ |
+| 1997-01-01T00:00:00.000Z | մոտ 3 տարի | մոտ 3 տարի | մոտ 3 տարի առաջ |
+| 1996-01-01T00:00:00.000Z | մոտ 4 տարի | մոտ 4 տարի | մոտ 4 տարի առաջ |
+| 1995-01-01T00:00:00.000Z | մոտ 5 տարի | մոտ 5 տարի | մոտ 5 տարի առաջ |
+| 1994-01-01T00:00:00.000Z | մոտ 6 տարի | մոտ 6 տարի | մոտ 6 տարի առաջ |
+
+## `formatDistanceStrict`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `addSuffix: true` | With forced unit (i.e. `hour`) |
+| ------------------------ | ----------- | ----------------- | ------------------------------ |
+| 2006-01-01T00:00:00.000Z | 6 տարի | 6 տարի հետո | 52608 ժամ |
+| 2005-01-01T00:00:00.000Z | 5 տարի | 5 տարի հետո | 43848 ժամ |
+| 2004-01-01T00:00:00.000Z | 4 տարի | 4 տարի հետո | 35064 ժամ |
+| 2003-01-01T00:00:00.000Z | 3 տարի | 3 տարի հետո | 26304 ժամ |
+| 2002-01-01T00:00:00.000Z | 2 տարի | 2 տարի հետո | 17544 ժամ |
+| 2001-06-01T00:00:00.000Z | 1 տարի | 1 տարի հետո | 12408 ժամ |
+| 2001-02-01T00:00:00.000Z | 1 տարի | 1 տարի հետո | 9528 ժամ |
+| 2001-01-01T00:00:00.000Z | 1 տարի | 1 տարի հետո | 8784 ժամ |
+| 2000-06-01T00:00:00.000Z | 5 ամիս | 5 ամիս հետո | 3648 ժամ |
+| 2000-03-01T00:00:00.000Z | 2 ամիս | 2 ամիս հետո | 1440 ժամ |
+| 2000-02-01T00:00:00.000Z | 1 ամիս | 1 ամիս հետո | 744 ժամ |
+| 2000-01-15T00:00:00.000Z | 14 օր | 14 օր հետո | 336 ժամ |
+| 2000-01-02T00:00:00.000Z | 1 օր | 1 օր հետո | 24 ժամ |
+| 2000-01-01T06:00:00.000Z | 6 ժամ | 6 ժամ հետո | 6 ժամ |
+| 2000-01-01T01:00:00.000Z | 1 ժամ | 1 ժամ հետո | 1 ժամ |
+| 2000-01-01T00:45:00.000Z | 45 րոպե | 45 րոպե հետո | 1 ժամ |
+| 2000-01-01T00:30:00.000Z | 30 րոպե | 30 րոպե հետո | 1 ժամ |
+| 2000-01-01T00:15:00.000Z | 15 րոպե | 15 րոպե հետո | 0 ժամ |
+| 2000-01-01T00:01:00.000Z | 1 րոպե | 1 րոպե հետո | 0 ժամ |
+| 2000-01-01T00:00:25.000Z | 25 վայրկյան | 25 վայրկյան հետո | 0 ժամ |
+| 2000-01-01T00:00:15.000Z | 15 վայրկյան | 15 վայրկյան հետո | 0 ժամ |
+| 2000-01-01T00:00:05.000Z | 5 վայրկյան | 5 վայրկյան հետո | 0 ժամ |
+| 2000-01-01T00:00:00.000Z | 0 վայրկյան | 0 վայրկյան առաջ | 0 ժամ |
+| 1999-12-31T23:59:55.000Z | 5 վայրկյան | 5 վայրկյան առաջ | 0 ժամ |
+| 1999-12-31T23:59:45.000Z | 15 վայրկյան | 15 վայրկյան առաջ | 0 ժամ |
+| 1999-12-31T23:59:35.000Z | 25 վայրկյան | 25 վայրկյան առաջ | 0 ժամ |
+| 1999-12-31T23:59:00.000Z | 1 րոպե | 1 րոպե առաջ | 0 ժամ |
+| 1999-12-31T23:45:00.000Z | 15 րոպե | 15 րոպե առաջ | 0 ժամ |
+| 1999-12-31T23:30:00.000Z | 30 րոպե | 30 րոպե առաջ | 1 ժամ |
+| 1999-12-31T23:15:00.000Z | 45 րոպե | 45 րոպե առաջ | 1 ժամ |
+| 1999-12-31T23:00:00.000Z | 1 ժամ | 1 ժամ առաջ | 1 ժամ |
+| 1999-12-31T18:00:00.000Z | 6 ժամ | 6 ժամ առաջ | 6 ժամ |
+| 1999-12-30T00:00:00.000Z | 2 օր | 2 օր առաջ | 48 ժամ |
+| 1999-12-15T00:00:00.000Z | 17 օր | 17 օր առաջ | 408 ժամ |
+| 1999-12-01T00:00:00.000Z | 1 ամիս | 1 ամիս առաջ | 744 ժամ |
+| 1999-11-01T00:00:00.000Z | 2 ամիս | 2 ամիս առաջ | 1464 ժամ |
+| 1999-06-01T00:00:00.000Z | 7 ամիս | 7 ամիս առաջ | 5136 ժամ |
+| 1999-01-01T00:00:00.000Z | 1 տարի | 1 տարի առաջ | 8760 ժամ |
+| 1998-12-01T00:00:00.000Z | 1 տարի | 1 տարի առաջ | 9504 ժամ |
+| 1998-06-01T00:00:00.000Z | 2 տարի | 2 տարի առաջ | 13896 ժամ |
+| 1998-01-01T00:00:00.000Z | 2 տարի | 2 տարի առաջ | 17520 ժամ |
+| 1997-01-01T00:00:00.000Z | 3 տարի | 3 տարի առաջ | 26280 ժամ |
+| 1996-01-01T00:00:00.000Z | 4 տարի | 4 տարի առաջ | 35064 ժամ |
+| 1995-01-01T00:00:00.000Z | 5 տարի | 5 տարի առաջ | 43824 ժամ |
+| 1994-01-01T00:00:00.000Z | 6 տարի | 6 տարի առաջ | 52584 ժամ |
+
+## `formatRelative`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result |
+| ------------------------ | -------------------------- |
+| 2000-01-10T00:00:00.000Z | 10.01.2000 |
+| 2000-01-05T00:00:00.000Z | հաջորդ չորեքշաբթի 00:00֊ին |
+| 2000-01-02T00:00:00.000Z | վաղը 00:00֊ին |
+| 2000-01-01T00:00:00.000Z | այսօր 00:00֊ին |
+| 1999-12-31T00:00:00.000Z | երեկ 00:00֊ին |
+| 1999-12-27T00:00:00.000Z | նախորդ երկուշաբթի 00:00֊ին |
+| 1999-12-21T00:00:00.000Z | 21.12.1999 |
diff --git a/date-fns/src/locale/id/_lib/formatDistance/index.js b/date-fns/src/locale/id/_lib/formatDistance/index.js
new file mode 100644
index 0000000..2c19c22
--- /dev/null
+++ b/date-fns/src/locale/id/_lib/formatDistance/index.js
@@ -0,0 +1,101 @@
+var formatDistanceLocale = {
+ lessThanXSeconds: {
+ one: 'kurang dari 1 detik',
+ other: 'kurang dari {{count}} detik'
+ },
+
+ xSeconds: {
+ one: '1 detik',
+ other: '{{count}} detik'
+ },
+
+ halfAMinute: 'setengah menit',
+
+ lessThanXMinutes: {
+ one: 'kurang dari 1 menit',
+ other: 'kurang dari {{count}} menit'
+ },
+
+ xMinutes: {
+ one: '1 menit',
+ other: '{{count}} menit'
+ },
+
+ aboutXHours: {
+ one: 'sekitar 1 jam',
+ other: 'sekitar {{count}} jam'
+ },
+
+ xHours: {
+ one: '1 jam',
+ other: '{{count}} jam'
+ },
+
+ xDays: {
+ one: '1 hari',
+ other: '{{count}} hari'
+ },
+
+ aboutXWeeks: {
+ one: 'sekitar 1 minggu',
+ other: 'sekitar {{count}} minggu'
+ },
+
+ xWeeks: {
+ one: '1 minggu',
+ other: '{{count}} minggu'
+ },
+
+ aboutXMonths: {
+ one: 'sekitar 1 bulan',
+ other: 'sekitar {{count}} bulan'
+ },
+
+ xMonths: {
+ one: '1 bulan',
+ other: '{{count}} bulan'
+ },
+
+ aboutXYears: {
+ one: 'sekitar 1 tahun',
+ other: 'sekitar {{count}} tahun'
+ },
+
+ xYears: {
+ one: '1 tahun',
+ other: '{{count}} tahun'
+ },
+
+ overXYears: {
+ one: 'lebih dari 1 tahun',
+ other: 'lebih dari {{count}} tahun'
+ },
+
+ almostXYears: {
+ one: 'hampir 1 tahun',
+ other: 'hampir {{count}} tahun'
+ }
+}
+
+export default function formatDistance(token, count, options) {
+ options = options || {}
+
+ var result
+ if (typeof formatDistanceLocale[token] === 'string') {
+ result = formatDistanceLocale[token]
+ } else if (count === 1) {
+ result = formatDistanceLocale[token].one
+ } else {
+ result = formatDistanceLocale[token].other.replace('{{count}}', count)
+ }
+
+ if (options.addSuffix) {
+ if (options.comparison > 0) {
+ return 'dalam waktu ' + result
+ } else {
+ return result + ' yang lalu'
+ }
+ }
+
+ return result
+}
diff --git a/date-fns/src/locale/id/_lib/formatLong/index.js b/date-fns/src/locale/id/_lib/formatLong/index.js
new file mode 100644
index 0000000..d8ea107
--- /dev/null
+++ b/date-fns/src/locale/id/_lib/formatLong/index.js
@@ -0,0 +1,41 @@
+import buildFormatLongFn from '../../../_lib/buildFormatLongFn/index'
+
+var dateFormats = {
+ full: 'EEEE, d MMMM yyyy',
+ long: 'd MMMM yyyy',
+ medium: 'd MMM yyyy',
+ short: 'd/M/yyyy'
+}
+
+var timeFormats = {
+ full: 'HH.mm.ss',
+ long: 'HH.mm.ss',
+ medium: 'HH.mm',
+ short: 'HH.mm'
+}
+
+var dateTimeFormats = {
+ full: "{{date}} 'pukul' {{time}}",
+ long: "{{date}} 'pukul' {{time}}",
+ medium: '{{date}}, {{time}}',
+ short: '{{date}}, {{time}}'
+}
+
+var formatLong = {
+ date: buildFormatLongFn({
+ formats: dateFormats,
+ defaultWidth: 'full'
+ }),
+
+ time: buildFormatLongFn({
+ formats: timeFormats,
+ defaultWidth: 'full'
+ }),
+
+ dateTime: buildFormatLongFn({
+ formats: dateTimeFormats,
+ defaultWidth: 'full'
+ })
+}
+
+export default formatLong
diff --git a/date-fns/src/locale/id/_lib/formatRelative/index.js b/date-fns/src/locale/id/_lib/formatRelative/index.js
new file mode 100644
index 0000000..ed8fa29
--- /dev/null
+++ b/date-fns/src/locale/id/_lib/formatRelative/index.js
@@ -0,0 +1,12 @@
+var formatRelativeLocale = {
+ lastWeek: "eeee 'lalu pukul' p",
+ yesterday: "'Kemarin pukul' p",
+ today: "'Hari ini pukul' p",
+ tomorrow: "'Besok pukul' p",
+ nextWeek: "eeee 'pukul' p",
+ other: 'P'
+}
+
+export default function formatRelative(token, _date, _baseDate, _options) {
+ return formatRelativeLocale[token]
+}
diff --git a/date-fns/src/locale/id/_lib/localize/index.js b/date-fns/src/locale/id/_lib/localize/index.js
new file mode 100644
index 0000000..5ab0723
--- /dev/null
+++ b/date-fns/src/locale/id/_lib/localize/index.js
@@ -0,0 +1,169 @@
+import buildLocalizeFn from '../../../_lib/buildLocalizeFn/index'
+
+// All data for localization are taken from this page
+// https://www.unicode.org/cldr/charts/32/summary/id.html
+var eraValues = {
+ narrow: ['SM', 'M'],
+ abbreviated: ['SM', 'M'],
+ wide: ['Sebelum Masehi', 'Masehi']
+}
+
+var quarterValues = {
+ narrow: ['1', '2', '3', '4'],
+ abbreviated: ['K1', 'K2', 'K3', 'K4'],
+ wide: ['Kuartal ke-1', 'Kuartal ke-2', 'Kuartal ke-3', 'Kuartal ke-4']
+}
+
+// Note: in Indonesian, the names of days of the week and months are capitalized.
+// If you are making a new locale based on this one, check if the same is true for the language you're working on.
+// Generally, formatted dates should look like they are in the middle of a sentence,
+// e.g. in Spanish language the weekdays and months should be in the lowercase.
+var monthValues = {
+ narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],
+ abbreviated: [
+ 'Jan',
+ 'Feb',
+ 'Mar',
+ 'Apr',
+ 'Mei',
+ 'Jun',
+ 'Jul',
+ 'Ags',
+ 'Sep',
+ 'Okt',
+ 'Nov',
+ 'Des'
+ ],
+ wide: [
+ 'Januari',
+ 'Februari',
+ 'Maret',
+ 'April',
+ 'Mei',
+ 'Juni',
+ 'Juli',
+ 'Agustus',
+ 'September',
+ 'Oktober',
+ 'November',
+ 'Desember'
+ ]
+}
+
+var dayValues = {
+ narrow: ['M', 'S', 'S', 'R', 'K', 'J', 'S'],
+ short: ['Min', 'Sen', 'Sel', 'Rab', 'Kam', 'Jum', 'Sab'],
+ abbreviated: ['Min', 'Sen', 'Sel', 'Rab', 'Kam', 'Jum', 'Sab'],
+ wide: ['Minggu', 'Senin', 'Selasa', 'Rabu', 'Kamis', 'Jumat', 'Sabtu']
+}
+
+var dayPeriodValues = {
+ narrow: {
+ am: 'AM',
+ pm: 'PM',
+ midnight: 'tengah malam',
+ noon: 'tengah hari',
+ morning: 'pagi',
+ afternoon: 'siang',
+ evening: 'sore',
+ night: 'malam'
+ },
+ abbreviated: {
+ am: 'AM',
+ pm: 'PM',
+ midnight: 'tengah malam',
+ noon: 'tengah hari',
+ morning: 'pagi',
+ afternoon: 'siang',
+ evening: 'sore',
+ night: 'malam'
+ },
+ wide: {
+ am: 'AM',
+ pm: 'PM',
+ midnight: 'tengah malam',
+ noon: 'tengah hari',
+ morning: 'pagi',
+ afternoon: 'siang',
+ evening: 'sore',
+ night: 'malam'
+ }
+}
+var formattingDayPeriodValues = {
+ narrow: {
+ am: 'AM',
+ pm: 'PM',
+ midnight: 'tengah malam',
+ noon: 'tengah hari',
+ morning: 'pagi',
+ afternoon: 'siang',
+ evening: 'sore',
+ night: 'malam'
+ },
+ abbreviated: {
+ am: 'AM',
+ pm: 'PM',
+ midnight: 'tengah malam',
+ noon: 'tengah hari',
+ morning: 'pagi',
+ afternoon: 'siang',
+ evening: 'sore',
+ night: 'malam'
+ },
+ wide: {
+ am: 'AM',
+ pm: 'PM',
+ midnight: 'tengah malam',
+ noon: 'tengah hari',
+ morning: 'pagi',
+ afternoon: 'siang',
+ evening: 'sore',
+ night: 'malam'
+ }
+}
+
+function ordinalNumber(dirtyNumber, _dirtyOptions) {
+ var number = Number(dirtyNumber)
+
+ // Can't use "pertama", "kedua" because can't be parsed
+ switch (number) {
+ default:
+ return 'ke-' + number
+ }
+}
+
+var localize = {
+ ordinalNumber: ordinalNumber,
+
+ era: buildLocalizeFn({
+ values: eraValues,
+ defaultWidth: 'wide'
+ }),
+
+ quarter: buildLocalizeFn({
+ values: quarterValues,
+ defaultWidth: 'wide',
+ argumentCallback: function(quarter) {
+ return Number(quarter) - 1
+ }
+ }),
+
+ month: buildLocalizeFn({
+ values: monthValues,
+ defaultWidth: 'wide'
+ }),
+
+ day: buildLocalizeFn({
+ values: dayValues,
+ defaultWidth: 'wide'
+ }),
+
+ dayPeriod: buildLocalizeFn({
+ values: dayPeriodValues,
+ defaultWidth: 'wide',
+ formattingValues: formattingDayPeriodValues,
+ defaultFormattingWidth: 'wide'
+ })
+}
+
+export default localize
diff --git a/date-fns/src/locale/id/_lib/match/index.js b/date-fns/src/locale/id/_lib/match/index.js
new file mode 100644
index 0000000..2d49ac8
--- /dev/null
+++ b/date-fns/src/locale/id/_lib/match/index.js
@@ -0,0 +1,137 @@
+import buildMatchFn from '../../../_lib/buildMatchFn/index'
+import buildMatchPatternFn from '../../../_lib/buildMatchPatternFn/index'
+
+var matchOrdinalNumberPattern = /^ke-(\d+)?/i
+var parseOrdinalNumberPattern = /\d+/i
+
+var matchEraPatterns = {
+ narrow: /^(sm|m)/i,
+ abbreviated: /^(s\.?\s?m\.?|s\.?\s?e\.?\s?u\.?|m\.?|e\.?\s?u\.?)/i,
+ wide: /^(sebelum masehi|sebelum era umum|masehi|era umum)/i
+}
+var parseEraPatterns = {
+ any: [/^s/i, /^(m|e)/i]
+}
+
+var matchQuarterPatterns = {
+ narrow: /^[1234]/i,
+ abbreviated: /^K-?\s[1234]/i,
+ wide: /^Kuartal ke-?\s?[1234]/i
+}
+var parseQuarterPatterns = {
+ any: [/1/i, /2/i, /3/i, /4/i]
+}
+
+var matchMonthPatterns = {
+ narrow: /^[jfmasond]/i,
+ abbreviated: /^(jan|feb|mar|apr|mei|jun|jul|agt|sep|okt|nov|des)/i,
+ wide: /^(januari|februari|maret|april|mei|juni|juli|agustus|september|oktober|november|desember)/i
+}
+var parseMonthPatterns = {
+ narrow: [
+ /^j/i,
+ /^f/i,
+ /^m/i,
+ /^a/i,
+ /^m/i,
+ /^j/i,
+ /^j/i,
+ /^a/i,
+ /^s/i,
+ /^o/i,
+ /^n/i,
+ /^d/i
+ ],
+ any: [
+ /^ja/i,
+ /^f/i,
+ /^ma/i,
+ /^ap/i,
+ /^me/i,
+ /^jun/i,
+ /^jul/i,
+ /^ag/i,
+ /^s/i,
+ /^o/i,
+ /^n/i,
+ /^d/i
+ ]
+}
+
+var matchDayPatterns = {
+ narrow: /^[srkjm]/i,
+ short: /^(min|sen|sel|rab|kam|jum|sab)/i,
+ abbreviated: /^(min|sen|sel|rab|kam|jum|sab)/i,
+ wide: /^(minggu|senin|selasa|rabu|kamis|jumat|sabtu)/i
+}
+var parseDayPatterns = {
+ narrow: [/^m/i, /^s/i, /^s/i, /^r/i, /^k/i, /^j/i, /^s/i],
+ any: [/^m/i, /^sen/i, /^sel/i, /^r/i, /^k/i, /^j/i, /^sa/i]
+}
+
+var matchDayPeriodPatterns = {
+ narrow: /^(a|p|tengah m|tengah h|(di(\swaktu)?) (pagi|siang|sore|malam))/i,
+ any: /^([ap]\.?\s?m\.?|tengah malam|tengah hari|(di(\swaktu)?) (pagi|siang|sore|malam))/i
+}
+var parseDayPeriodPatterns = {
+ any: {
+ am: /^a/i,
+ pm: /^pm/i,
+ midnight: /^tengah m/i,
+ noon: /^tengah h/i,
+ morning: /pagi/i,
+ afternoon: /siang/i,
+ evening: /sore/i,
+ night: /malam/i
+ }
+}
+
+var match = {
+ ordinalNumber: buildMatchPatternFn({
+ matchPattern: matchOrdinalNumberPattern,
+ parsePattern: parseOrdinalNumberPattern,
+ valueCallback: function(value) {
+ return parseInt(value, 10)
+ }
+ }),
+
+ era: buildMatchFn({
+ matchPatterns: matchEraPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseEraPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ quarter: buildMatchFn({
+ matchPatterns: matchQuarterPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseQuarterPatterns,
+ defaultParseWidth: 'any',
+ valueCallback: function(index) {
+ return index + 1
+ }
+ }),
+
+ month: buildMatchFn({
+ matchPatterns: matchMonthPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseMonthPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ day: buildMatchFn({
+ matchPatterns: matchDayPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseDayPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ dayPeriod: buildMatchFn({
+ matchPatterns: matchDayPeriodPatterns,
+ defaultMatchWidth: 'any',
+ parsePatterns: parseDayPeriodPatterns,
+ defaultParseWidth: 'any'
+ })
+}
+
+export default match
diff --git a/date-fns/src/locale/id/index.d.ts b/date-fns/src/locale/id/index.d.ts
new file mode 100644
index 0000000..2bf83f4
--- /dev/null
+++ b/date-fns/src/locale/id/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { id } from 'date-fns/locale'
+export default id
diff --git a/date-fns/src/locale/id/index.js b/date-fns/src/locale/id/index.js
new file mode 100644
index 0000000..ab331e8
--- /dev/null
+++ b/date-fns/src/locale/id/index.js
@@ -0,0 +1,31 @@
+import formatDistance from './_lib/formatDistance/index'
+import formatLong from './_lib/formatLong/index'
+import formatRelative from './_lib/formatRelative/index'
+import localize from './_lib/localize/index'
+import match from './_lib/match/index'
+
+/**
+ * @type {Locale}
+ * @category Locales
+ * @summary Indonesian locale.
+ * @language Indonesian
+ * @iso-639-2 ind
+ * @author Rahmat Budiharso [@rbudiharso]{@link https://github.com/rbudiharso}
+ * @author Benget Nata [@bentinata]{@link https://github.com/bentinata}
+ * @author Budi Irawan [@deerawan]{@link https://github.com/deerawan}
+ * @author Try Ajitiono [@imballinst]{@link https://github.com/imballinst}
+ */
+var locale = {
+ code: 'id',
+ formatDistance: formatDistance,
+ formatLong: formatLong,
+ formatRelative: formatRelative,
+ localize: localize,
+ match: match,
+ options: {
+ weekStartsOn: 1 /* Monday */,
+ firstWeekContainsDate: 1
+ }
+}
+
+export default locale
diff --git a/date-fns/src/locale/id/index.js.flow b/date-fns/src/locale/id/index.js.flow
new file mode 100644
index 0000000..b9dfe66
--- /dev/null
+++ b/date-fns/src/locale/id/index.js.flow
@@ -0,0 +1,35 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+declare module.exports: Locale
diff --git a/date-fns/src/locale/id/snapshot.md b/date-fns/src/locale/id/snapshot.md
new file mode 100644
index 0000000..e331679
--- /dev/null
+++ b/date-fns/src/locale/id/snapshot.md
@@ -0,0 +1,304 @@
+# Indonesian (id) locale
+
+## `format` and `parse`
+
+| Title | Token string | Date | `format` result | `parse` result |
+| ------------------------------- | ------------ | ------------------------ | ------------------------------------- | ------------------------ |
+| Calendar year | yo | 1987-02-11T12:13:14.015Z | ke-1987 | 1987-01-01T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | ke-5 | 0005-01-01T00:00:00.000Z |
+| Local week-numbering year | Yo | 1987-02-11T12:13:14.015Z | ke-1987 | 1986-12-29T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | ke-5 | 0004-12-27T00:00:00.000Z |
+| Quarter (formatting) | Qo | 2019-01-01T12:13:14.015Z | ke-1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | ke-2 | 2019-04-01T00:00:00.000Z |
+| | QQQ | 2019-01-01T12:13:14.015Z | K1 | Invalid Date |
+| | | 2019-04-01T12:13:14.015Z | K2 | Invalid Date |
+| | QQQQ | 2019-01-01T12:13:14.015Z | Kuartal ke-1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | Kuartal ke-2 | 2019-04-01T00:00:00.000Z |
+| | QQQQQ | 2019-01-01T12:13:14.015Z | 1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2 | 2019-04-01T00:00:00.000Z |
+| Quarter (stand-alone) | qo | 2019-01-01T12:13:14.015Z | ke-1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | ke-2 | 2019-04-01T00:00:00.000Z |
+| | qqq | 2019-01-01T12:13:14.015Z | K1 | Invalid Date |
+| | | 2019-04-01T12:13:14.015Z | K2 | Invalid Date |
+| | qqqq | 2019-01-01T12:13:14.015Z | Kuartal ke-1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | Kuartal ke-2 | 2019-04-01T00:00:00.000Z |
+| Month (formatting) | Mo | 2019-02-11T12:13:14.015Z | ke-2 | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | ke-7 | 2019-07-01T00:00:00.000Z |
+| | MMM | 2019-02-11T12:13:14.015Z | Feb | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | Jul | 2019-07-01T00:00:00.000Z |
+| | MMMM | 2019-02-11T12:13:14.015Z | Februari | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | Juli | 2019-07-01T00:00:00.000Z |
+| | MMMMM | 2019-02-11T12:13:14.015Z | F | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | J | 2019-01-01T00:00:00.000Z |
+| Month (stand-alone) | Lo | 2019-02-11T12:13:14.015Z | ke-2 | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | ke-7 | 2019-07-01T00:00:00.000Z |
+| | LLL | 2019-02-11T12:13:14.015Z | Feb | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | Jul | 2019-07-01T00:00:00.000Z |
+| | LLLL | 2019-02-11T12:13:14.015Z | Februari | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | Juli | 2019-07-01T00:00:00.000Z |
+| | LLLLL | 2019-02-11T12:13:14.015Z | F | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | J | 2019-01-01T00:00:00.000Z |
+| Local week of year | wo | 2019-01-01T12:13:14.015Z | ke-1 | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | ke-48 | 2019-11-25T00:00:00.000Z |
+| ISO week of year | Io | 2019-01-01T12:13:14.015Z | ke-1 | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | ke-48 | 2019-11-25T00:00:00.000Z |
+| Day of month | do | 2019-02-11T12:13:14.015Z | ke-11 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-28T12:13:14.015Z | ke-28 | 2019-02-28T00:00:00.000Z |
+| Day of year | Do | 2019-02-11T12:13:14.015Z | ke-42 | 2019-02-11T00:00:00.000Z |
+| | | 2019-12-31T12:13:14.015Z | ke-365 | 2019-12-31T00:00:00.000Z |
+| Day of week (formatting) | E | 2019-02-11T12:13:14.015Z | Sen | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Jum | 2019-02-15T00:00:00.000Z |
+| | EE | 2019-02-11T12:13:14.015Z | Sen | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Jum | 2019-02-15T00:00:00.000Z |
+| | EEE | 2019-02-11T12:13:14.015Z | Sen | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Jum | 2019-02-15T00:00:00.000Z |
+| | EEEE | 2019-02-11T12:13:14.015Z | Senin | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Jumat | 2019-02-15T00:00:00.000Z |
+| | EEEEE | 2019-02-11T12:13:14.015Z | S | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | J | 2019-02-15T00:00:00.000Z |
+| | EEEEEE | 2019-02-11T12:13:14.015Z | Sen | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Jum | 2019-02-15T00:00:00.000Z |
+| ISO day of week (formatting) | io | 2019-02-11T12:13:14.015Z | ke-1 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ke-5 | 2019-02-15T00:00:00.000Z |
+| | iii | 2019-02-11T12:13:14.015Z | Sen | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Jum | 2019-02-15T00:00:00.000Z |
+| | iiii | 2019-02-11T12:13:14.015Z | Senin | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Jumat | 2019-02-15T00:00:00.000Z |
+| | iiiii | 2019-02-11T12:13:14.015Z | S | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | J | 2019-02-15T00:00:00.000Z |
+| | iiiiii | 2019-02-11T12:13:14.015Z | Sen | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Jum | 2019-02-15T00:00:00.000Z |
+| Local day of week (formatting) | eo | 2019-02-11T12:13:14.015Z | ke-1 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ke-5 | 2019-02-15T00:00:00.000Z |
+| | eee | 2019-02-11T12:13:14.015Z | Sen | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Jum | 2019-02-15T00:00:00.000Z |
+| | eeee | 2019-02-11T12:13:14.015Z | Senin | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Jumat | 2019-02-15T00:00:00.000Z |
+| | eeeee | 2019-02-11T12:13:14.015Z | S | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | J | 2019-02-15T00:00:00.000Z |
+| | eeeeee | 2019-02-11T12:13:14.015Z | Sen | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Jum | 2019-02-15T00:00:00.000Z |
+| Local day of week (stand-alone) | co | 2019-02-11T12:13:14.015Z | ke-1 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ke-5 | 2019-02-15T00:00:00.000Z |
+| | ccc | 2019-02-11T12:13:14.015Z | Sen | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Jum | 2019-02-15T00:00:00.000Z |
+| | cccc | 2019-02-11T12:13:14.015Z | Senin | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Jumat | 2019-02-15T00:00:00.000Z |
+| | ccccc | 2019-02-11T12:13:14.015Z | S | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | J | 2019-02-15T00:00:00.000Z |
+| | cccccc | 2019-02-11T12:13:14.015Z | Sen | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Jum | 2019-02-15T00:00:00.000Z |
+| AM, PM | a | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | aa | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | aaa | 2019-02-11T11:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | aaaa | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | aaaaa | 2019-02-11T11:13:14.015Z | AM | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | PM | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | PM | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | AM | Invalid Date |
+| AM, PM, noon, midnight | b | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | bb | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | bbb | 2019-02-11T11:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | bbbb | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | bbbbb | 2019-02-11T11:13:14.015Z | AM | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | PM | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | PM | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | AM | Invalid Date |
+| Flexible day period | B | 2019-02-11T11:13:14.015Z | pagi | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | siang | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | sore | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | malam | Invalid Date |
+| | BB | 2019-02-11T11:13:14.015Z | pagi | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | siang | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | sore | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | malam | Invalid Date |
+| | BBB | 2019-02-11T11:13:14.015Z | pagi | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | siang | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | sore | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | malam | Invalid Date |
+| | BBBB | 2019-02-11T11:13:14.015Z | pagi | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | siang | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | sore | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | malam | Invalid Date |
+| | BBBBB | 2019-02-11T11:13:14.015Z | pagi | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | siang | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | sore | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | malam | Invalid Date |
+| Hour [1-12] | ho | 2019-02-11T11:13:14.015Z | ke-11 | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | ke-11 | 2019-02-11T23:00:00.000Z |
+| Hour [0-23] | Ho | 2019-02-11T11:13:14.015Z | ke-11 | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | ke-23 | 2019-02-11T23:00:00.000Z |
+| Hour [0-11] | Ko | 2019-02-11T11:13:14.015Z | ke-11 | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | ke-11 | 2019-02-11T23:00:00.000Z |
+| Hour [1-24] | ko | 2019-02-11T11:13:14.015Z | ke-11 | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | ke-23 | 2019-02-11T23:00:00.000Z |
+| Minute | mo | 2019-01-01T12:01:14.015Z | ke-1 | 2019-01-01T12:01:00.000Z |
+| | | 2019-04-01T12:55:14.015Z | ke-55 | 2019-04-01T12:55:00.000Z |
+| Second | so | 2019-01-01T12:13:01.015Z | ke-1 | 2019-01-01T12:13:01.000Z |
+| | | 2019-04-01T12:13:55.015Z | ke-55 | 2019-04-01T12:13:55.000Z |
+| Long localized date | P | 1987-02-11T12:13:14.015Z | 11/2/1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29/5/1453 | 1453-05-29T00:00:00.000Z |
+| | PP | 1987-02-11T12:13:14.015Z | 11 Feb 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 Mei 1453 | 1453-05-29T00:00:00.000Z |
+| | PPP | 1987-02-11T12:13:14.015Z | 11 Februari 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 Mei 1453 | 1453-05-29T00:00:00.000Z |
+| | PPPP | 1987-02-11T12:13:14.015Z | Rabu, 11 Februari 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | Minggu, 29 Mei 1453 | 1453-05-29T00:00:00.000Z |
+| Long localized time | p | 1987-02-11T12:13:14.015Z | 12.13 | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 23.59 | 1453-05-29T23:59:00.000Z |
+| | pp | 1987-02-11T12:13:14.015Z | 12.13 | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 23.59 | 1453-05-29T23:59:00.000Z |
+| | ppp | 1987-02-11T12:13:14.015Z | 12.13.14 | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 23.59.59 | 1453-05-29T23:59:59.000Z |
+| | pppp | 1987-02-11T12:13:14.015Z | 12.13.14 | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 23.59.59 | 1453-05-29T23:59:59.000Z |
+| Combination of date and time | Pp | 1987-02-11T12:13:14.015Z | 11/2/1987, 12.13 | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29/5/1453, 23.59 | 1453-05-29T23:59:00.000Z |
+| | PPpp | 1987-02-11T12:13:14.015Z | 11 Feb 1987, 12.13 | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 Mei 1453, 23.59 | 1453-05-29T23:59:00.000Z |
+| | PPPppp | 1987-02-11T12:13:14.015Z | 11 Februari 1987 pukul 12.13.14 | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 Mei 1453 pukul 23.59.59 | 1453-05-29T23:59:59.000Z |
+| | PPPPpppp | 1987-02-11T12:13:14.015Z | Rabu, 11 Februari 1987 pukul 12.13.14 | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | Minggu, 29 Mei 1453 pukul 23.59.59 | 1453-05-29T23:59:59.000Z |
+
+## `formatDistance`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `includeSeconds: true` | `addSuffix: true` |
+| ------------------------ | ------------------- | ---------------------- | ------------------------------- |
+| 2006-01-01T00:00:00.000Z | sekitar 6 tahun | sekitar 6 tahun | dalam waktu sekitar 6 tahun |
+| 2005-01-01T00:00:00.000Z | sekitar 5 tahun | sekitar 5 tahun | dalam waktu sekitar 5 tahun |
+| 2004-01-01T00:00:00.000Z | sekitar 4 tahun | sekitar 4 tahun | dalam waktu sekitar 4 tahun |
+| 2003-01-01T00:00:00.000Z | sekitar 3 tahun | sekitar 3 tahun | dalam waktu sekitar 3 tahun |
+| 2002-01-01T00:00:00.000Z | sekitar 2 tahun | sekitar 2 tahun | dalam waktu sekitar 2 tahun |
+| 2001-06-01T00:00:00.000Z | lebih dari 1 tahun | lebih dari 1 tahun | dalam waktu lebih dari 1 tahun |
+| 2001-02-01T00:00:00.000Z | sekitar 1 tahun | sekitar 1 tahun | dalam waktu sekitar 1 tahun |
+| 2001-01-01T00:00:00.000Z | sekitar 1 tahun | sekitar 1 tahun | dalam waktu sekitar 1 tahun |
+| 2000-06-01T00:00:00.000Z | 5 bulan | 5 bulan | dalam waktu 5 bulan |
+| 2000-03-01T00:00:00.000Z | 2 bulan | 2 bulan | dalam waktu 2 bulan |
+| 2000-02-01T00:00:00.000Z | sekitar 1 bulan | sekitar 1 bulan | dalam waktu sekitar 1 bulan |
+| 2000-01-15T00:00:00.000Z | 14 hari | 14 hari | dalam waktu 14 hari |
+| 2000-01-02T00:00:00.000Z | 1 hari | 1 hari | dalam waktu 1 hari |
+| 2000-01-01T06:00:00.000Z | sekitar 6 jam | sekitar 6 jam | dalam waktu sekitar 6 jam |
+| 2000-01-01T01:00:00.000Z | sekitar 1 jam | sekitar 1 jam | dalam waktu sekitar 1 jam |
+| 2000-01-01T00:45:00.000Z | sekitar 1 jam | sekitar 1 jam | dalam waktu sekitar 1 jam |
+| 2000-01-01T00:30:00.000Z | 30 menit | 30 menit | dalam waktu 30 menit |
+| 2000-01-01T00:15:00.000Z | 15 menit | 15 menit | dalam waktu 15 menit |
+| 2000-01-01T00:01:00.000Z | 1 menit | 1 menit | dalam waktu 1 menit |
+| 2000-01-01T00:00:25.000Z | kurang dari 1 menit | setengah menit | dalam waktu kurang dari 1 menit |
+| 2000-01-01T00:00:15.000Z | kurang dari 1 menit | kurang dari 20 detik | dalam waktu kurang dari 1 menit |
+| 2000-01-01T00:00:05.000Z | kurang dari 1 menit | kurang dari 10 detik | dalam waktu kurang dari 1 menit |
+| 2000-01-01T00:00:00.000Z | kurang dari 1 menit | kurang dari 5 detik | kurang dari 1 menit yang lalu |
+| 1999-12-31T23:59:55.000Z | kurang dari 1 menit | kurang dari 10 detik | kurang dari 1 menit yang lalu |
+| 1999-12-31T23:59:45.000Z | kurang dari 1 menit | kurang dari 20 detik | kurang dari 1 menit yang lalu |
+| 1999-12-31T23:59:35.000Z | kurang dari 1 menit | setengah menit | kurang dari 1 menit yang lalu |
+| 1999-12-31T23:59:00.000Z | 1 menit | 1 menit | 1 menit yang lalu |
+| 1999-12-31T23:45:00.000Z | 15 menit | 15 menit | 15 menit yang lalu |
+| 1999-12-31T23:30:00.000Z | 30 menit | 30 menit | 30 menit yang lalu |
+| 1999-12-31T23:15:00.000Z | sekitar 1 jam | sekitar 1 jam | sekitar 1 jam yang lalu |
+| 1999-12-31T23:00:00.000Z | sekitar 1 jam | sekitar 1 jam | sekitar 1 jam yang lalu |
+| 1999-12-31T18:00:00.000Z | sekitar 6 jam | sekitar 6 jam | sekitar 6 jam yang lalu |
+| 1999-12-30T00:00:00.000Z | 2 hari | 2 hari | 2 hari yang lalu |
+| 1999-12-15T00:00:00.000Z | 17 hari | 17 hari | 17 hari yang lalu |
+| 1999-12-01T00:00:00.000Z | sekitar 1 bulan | sekitar 1 bulan | sekitar 1 bulan yang lalu |
+| 1999-11-01T00:00:00.000Z | 2 bulan | 2 bulan | 2 bulan yang lalu |
+| 1999-06-01T00:00:00.000Z | 7 bulan | 7 bulan | 7 bulan yang lalu |
+| 1999-01-01T00:00:00.000Z | sekitar 1 tahun | sekitar 1 tahun | sekitar 1 tahun yang lalu |
+| 1998-12-01T00:00:00.000Z | sekitar 1 tahun | sekitar 1 tahun | sekitar 1 tahun yang lalu |
+| 1998-06-01T00:00:00.000Z | lebih dari 1 tahun | lebih dari 1 tahun | lebih dari 1 tahun yang lalu |
+| 1998-01-01T00:00:00.000Z | sekitar 2 tahun | sekitar 2 tahun | sekitar 2 tahun yang lalu |
+| 1997-01-01T00:00:00.000Z | sekitar 3 tahun | sekitar 3 tahun | sekitar 3 tahun yang lalu |
+| 1996-01-01T00:00:00.000Z | sekitar 4 tahun | sekitar 4 tahun | sekitar 4 tahun yang lalu |
+| 1995-01-01T00:00:00.000Z | sekitar 5 tahun | sekitar 5 tahun | sekitar 5 tahun yang lalu |
+| 1994-01-01T00:00:00.000Z | sekitar 6 tahun | sekitar 6 tahun | sekitar 6 tahun yang lalu |
+
+## `formatDistanceStrict`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `addSuffix: true` | With forced unit (i.e. `hour`) |
+| ------------------------ | -------- | -------------------- | ------------------------------ |
+| 2006-01-01T00:00:00.000Z | 6 tahun | dalam waktu 6 tahun | 52608 jam |
+| 2005-01-01T00:00:00.000Z | 5 tahun | dalam waktu 5 tahun | 43848 jam |
+| 2004-01-01T00:00:00.000Z | 4 tahun | dalam waktu 4 tahun | 35064 jam |
+| 2003-01-01T00:00:00.000Z | 3 tahun | dalam waktu 3 tahun | 26304 jam |
+| 2002-01-01T00:00:00.000Z | 2 tahun | dalam waktu 2 tahun | 17544 jam |
+| 2001-06-01T00:00:00.000Z | 1 tahun | dalam waktu 1 tahun | 12408 jam |
+| 2001-02-01T00:00:00.000Z | 1 tahun | dalam waktu 1 tahun | 9528 jam |
+| 2001-01-01T00:00:00.000Z | 1 tahun | dalam waktu 1 tahun | 8784 jam |
+| 2000-06-01T00:00:00.000Z | 5 bulan | dalam waktu 5 bulan | 3648 jam |
+| 2000-03-01T00:00:00.000Z | 2 bulan | dalam waktu 2 bulan | 1440 jam |
+| 2000-02-01T00:00:00.000Z | 1 bulan | dalam waktu 1 bulan | 744 jam |
+| 2000-01-15T00:00:00.000Z | 14 hari | dalam waktu 14 hari | 336 jam |
+| 2000-01-02T00:00:00.000Z | 1 hari | dalam waktu 1 hari | 24 jam |
+| 2000-01-01T06:00:00.000Z | 6 jam | dalam waktu 6 jam | 6 jam |
+| 2000-01-01T01:00:00.000Z | 1 jam | dalam waktu 1 jam | 1 jam |
+| 2000-01-01T00:45:00.000Z | 45 menit | dalam waktu 45 menit | 1 jam |
+| 2000-01-01T00:30:00.000Z | 30 menit | dalam waktu 30 menit | 1 jam |
+| 2000-01-01T00:15:00.000Z | 15 menit | dalam waktu 15 menit | 0 jam |
+| 2000-01-01T00:01:00.000Z | 1 menit | dalam waktu 1 menit | 0 jam |
+| 2000-01-01T00:00:25.000Z | 25 detik | dalam waktu 25 detik | 0 jam |
+| 2000-01-01T00:00:15.000Z | 15 detik | dalam waktu 15 detik | 0 jam |
+| 2000-01-01T00:00:05.000Z | 5 detik | dalam waktu 5 detik | 0 jam |
+| 2000-01-01T00:00:00.000Z | 0 detik | 0 detik yang lalu | 0 jam |
+| 1999-12-31T23:59:55.000Z | 5 detik | 5 detik yang lalu | 0 jam |
+| 1999-12-31T23:59:45.000Z | 15 detik | 15 detik yang lalu | 0 jam |
+| 1999-12-31T23:59:35.000Z | 25 detik | 25 detik yang lalu | 0 jam |
+| 1999-12-31T23:59:00.000Z | 1 menit | 1 menit yang lalu | 0 jam |
+| 1999-12-31T23:45:00.000Z | 15 menit | 15 menit yang lalu | 0 jam |
+| 1999-12-31T23:30:00.000Z | 30 menit | 30 menit yang lalu | 1 jam |
+| 1999-12-31T23:15:00.000Z | 45 menit | 45 menit yang lalu | 1 jam |
+| 1999-12-31T23:00:00.000Z | 1 jam | 1 jam yang lalu | 1 jam |
+| 1999-12-31T18:00:00.000Z | 6 jam | 6 jam yang lalu | 6 jam |
+| 1999-12-30T00:00:00.000Z | 2 hari | 2 hari yang lalu | 48 jam |
+| 1999-12-15T00:00:00.000Z | 17 hari | 17 hari yang lalu | 408 jam |
+| 1999-12-01T00:00:00.000Z | 1 bulan | 1 bulan yang lalu | 744 jam |
+| 1999-11-01T00:00:00.000Z | 2 bulan | 2 bulan yang lalu | 1464 jam |
+| 1999-06-01T00:00:00.000Z | 7 bulan | 7 bulan yang lalu | 5136 jam |
+| 1999-01-01T00:00:00.000Z | 1 tahun | 1 tahun yang lalu | 8760 jam |
+| 1998-12-01T00:00:00.000Z | 1 tahun | 1 tahun yang lalu | 9504 jam |
+| 1998-06-01T00:00:00.000Z | 2 tahun | 2 tahun yang lalu | 13896 jam |
+| 1998-01-01T00:00:00.000Z | 2 tahun | 2 tahun yang lalu | 17520 jam |
+| 1997-01-01T00:00:00.000Z | 3 tahun | 3 tahun yang lalu | 26280 jam |
+| 1996-01-01T00:00:00.000Z | 4 tahun | 4 tahun yang lalu | 35064 jam |
+| 1995-01-01T00:00:00.000Z | 5 tahun | 5 tahun yang lalu | 43824 jam |
+| 1994-01-01T00:00:00.000Z | 6 tahun | 6 tahun yang lalu | 52584 jam |
+
+## `formatRelative`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result |
+| ------------------------ | ---------------------- |
+| 2000-01-10T00:00:00.000Z | 10/1/2000 |
+| 2000-01-05T00:00:00.000Z | Rabu pukul 00.00 |
+| 2000-01-02T00:00:00.000Z | Besok pukul 00.00 |
+| 2000-01-01T00:00:00.000Z | Hari ini pukul 00.00 |
+| 1999-12-31T00:00:00.000Z | Kemarin pukul 00.00 |
+| 1999-12-27T00:00:00.000Z | Senin lalu pukul 00.00 |
+| 1999-12-21T00:00:00.000Z | 21/12/1999 |
diff --git a/date-fns/src/locale/index.js b/date-fns/src/locale/index.js
new file mode 100644
index 0000000..dc56bfb
--- /dev/null
+++ b/date-fns/src/locale/index.js
@@ -0,0 +1,82 @@
+// This file is generated automatically by `scripts/build/indices.js`. Please, don't change it.
+
+export { default as af } from './af/index'
+export { default as arDZ } from './ar-DZ/index'
+export { default as arMA } from './ar-MA/index'
+export { default as arSA } from './ar-SA/index'
+export { default as az } from './az/index'
+export { default as be } from './be/index'
+export { default as bg } from './bg/index'
+export { default as bn } from './bn/index'
+export { default as ca } from './ca/index'
+export { default as cs } from './cs/index'
+export { default as cy } from './cy/index'
+export { default as da } from './da/index'
+export { default as de } from './de/index'
+export { default as deAT } from './de-AT/index'
+export { default as el } from './el/index'
+export { default as enAU } from './en-AU/index'
+export { default as enCA } from './en-CA/index'
+export { default as enGB } from './en-GB/index'
+export { default as enIN } from './en-IN/index'
+export { default as enNZ } from './en-NZ/index'
+export { default as enUS } from './en-US/index'
+export { default as enZA } from './en-ZA/index'
+export { default as eo } from './eo/index'
+export { default as es } from './es/index'
+export { default as et } from './et/index'
+export { default as eu } from './eu/index'
+export { default as faIR } from './fa-IR/index'
+export { default as fi } from './fi/index'
+export { default as fr } from './fr/index'
+export { default as frCA } from './fr-CA/index'
+export { default as frCH } from './fr-CH/index'
+export { default as gd } from './gd/index'
+export { default as gl } from './gl/index'
+export { default as gu } from './gu/index'
+export { default as he } from './he/index'
+export { default as hi } from './hi/index'
+export { default as hr } from './hr/index'
+export { default as ht } from './ht/index'
+export { default as hu } from './hu/index'
+export { default as hy } from './hy/index'
+export { default as id } from './id/index'
+export { default as is } from './is/index'
+export { default as it } from './it/index'
+export { default as ja } from './ja/index'
+export { default as ka } from './ka/index'
+export { default as kk } from './kk/index'
+export { default as kn } from './kn/index'
+export { default as ko } from './ko/index'
+export { default as lb } from './lb/index'
+export { default as lt } from './lt/index'
+export { default as lv } from './lv/index'
+export { default as mk } from './mk/index'
+export { default as mn } from './mn/index'
+export { default as ms } from './ms/index'
+export { default as mt } from './mt/index'
+export { default as nb } from './nb/index'
+export { default as nl } from './nl/index'
+export { default as nlBE } from './nl-BE/index'
+export { default as nn } from './nn/index'
+export { default as pl } from './pl/index'
+export { default as pt } from './pt/index'
+export { default as ptBR } from './pt-BR/index'
+export { default as ro } from './ro/index'
+export { default as ru } from './ru/index'
+export { default as sk } from './sk/index'
+export { default as sl } from './sl/index'
+export { default as sq } from './sq/index'
+export { default as sr } from './sr/index'
+export { default as srLatn } from './sr-Latn/index'
+export { default as sv } from './sv/index'
+export { default as ta } from './ta/index'
+export { default as te } from './te/index'
+export { default as th } from './th/index'
+export { default as tr } from './tr/index'
+export { default as ug } from './ug/index'
+export { default as uk } from './uk/index'
+export { default as uz } from './uz/index'
+export { default as vi } from './vi/index'
+export { default as zhCN } from './zh-CN/index'
+export { default as zhTW } from './zh-TW/index'
diff --git a/date-fns/src/locale/index.js.flow b/date-fns/src/locale/index.js.flow
new file mode 100644
index 0000000..4998a2e
--- /dev/null
+++ b/date-fns/src/locale/index.js.flow
@@ -0,0 +1,118 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+declare module.exports: {
+ af: Locale,
+ ar: Locale,
+ arDZ: Locale,
+ arMA: Locale,
+ arSA: Locale,
+ az: Locale,
+ be: Locale,
+ bg: Locale,
+ bn: Locale,
+ ca: Locale,
+ cs: Locale,
+ cy: Locale,
+ da: Locale,
+ de: Locale,
+ deAT: Locale,
+ el: Locale,
+ enAU: Locale,
+ enCA: Locale,
+ enGB: Locale,
+ enIN: Locale,
+ enNZ: Locale,
+ enUS: Locale,
+ enZA: Locale,
+ eo: Locale,
+ es: Locale,
+ et: Locale,
+ eu: Locale,
+ faIR: Locale,
+ fi: Locale,
+ fil: Locale,
+ fr: Locale,
+ frCA: Locale,
+ frCH: Locale,
+ gd: Locale,
+ gl: Locale,
+ gu: Locale,
+ he: Locale,
+ hi: Locale,
+ hr: Locale,
+ ht: Locale,
+ hu: Locale,
+ hy: Locale,
+ id: Locale,
+ is: Locale,
+ it: Locale,
+ ja: Locale,
+ ka: Locale,
+ kk: Locale,
+ kn: Locale,
+ ko: Locale,
+ lb: Locale,
+ lt: Locale,
+ lv: Locale,
+ mk: Locale,
+ mn: Locale,
+ ms: Locale,
+ mt: Locale,
+ nb: Locale,
+ nl: Locale,
+ nlBE: Locale,
+ nn: Locale,
+ pl: Locale,
+ pt: Locale,
+ ptBR: Locale,
+ ro: Locale,
+ ru: Locale,
+ sk: Locale,
+ sl: Locale,
+ sq: Locale,
+ sr: Locale,
+ srLatn: Locale,
+ sv: Locale,
+ ta: Locale,
+ te: Locale,
+ th: Locale,
+ tr: Locale,
+ ug: Locale,
+ uk: Locale,
+ uz: Locale,
+ vi: Locale,
+ zhCN: Locale,
+ zhTW: Locale,
+}
diff --git a/date-fns/src/locale/is/_lib/formatDistance/index.js b/date-fns/src/locale/is/_lib/formatDistance/index.js
new file mode 100644
index 0000000..4a21daf
--- /dev/null
+++ b/date-fns/src/locale/is/_lib/formatDistance/index.js
@@ -0,0 +1,101 @@
+var formatDistanceLocale = {
+ lessThanXSeconds: {
+ one: 'minna en 1 sekúnda',
+ other: 'minna en {{count}} sekúndur'
+ },
+
+ xSeconds: {
+ one: '1 sekúnda',
+ other: '{{count}} sekúndur'
+ },
+
+ halfAMinute: 'hálf mínúta',
+
+ lessThanXMinutes: {
+ one: 'minna en 1 mínúta',
+ other: 'minna en {{count}} mínútur'
+ },
+
+ xMinutes: {
+ one: '1 mínúta',
+ other: '{{count}} mínútur'
+ },
+
+ aboutXHours: {
+ one: 'u.þ.b. 1 klukkustund',
+ other: 'u.þ.b. {{count}} klukkustundir'
+ },
+
+ xHours: {
+ one: '1 klukkustund',
+ other: '{{count}} klukkustundir'
+ },
+
+ xDays: {
+ one: '1 dagur',
+ other: '{{count}} dagar'
+ },
+
+ aboutXWeeks: {
+ one: 'um viku',
+ other: 'um {{count}} vikur'
+ },
+
+ xWeeks: {
+ one: '1 viku',
+ other: '{{count}} vikur'
+ },
+
+ aboutXMonths: {
+ one: 'u.þ.b. 1 mánuður',
+ other: 'u.þ.b. {{count}} mánuðir'
+ },
+
+ xMonths: {
+ one: '1 mánuður',
+ other: '{{count}} mánuðir'
+ },
+
+ aboutXYears: {
+ one: 'u.þ.b. 1 ár',
+ other: 'u.þ.b. {{count}} ár'
+ },
+
+ xYears: {
+ one: '1 ár',
+ other: '{{count}} ár'
+ },
+
+ overXYears: {
+ one: 'meira en 1 ár',
+ other: 'meira en {{count}} ár'
+ },
+
+ almostXYears: {
+ one: 'næstum 1 ár',
+ other: 'næstum {{count}} ár'
+ }
+}
+
+export default function formatDistance(token, count, options) {
+ options = options || {}
+
+ var result
+ if (typeof formatDistanceLocale[token] === 'string') {
+ result = formatDistanceLocale[token]
+ } else if (count === 1) {
+ result = formatDistanceLocale[token].one
+ } else {
+ result = formatDistanceLocale[token].other.replace('{{count}}', count)
+ }
+
+ if (options.addSuffix) {
+ if (options.comparison > 0) {
+ return 'í ' + result
+ } else {
+ return result + ' síðan'
+ }
+ }
+
+ return result
+}
diff --git a/date-fns/src/locale/is/_lib/formatLong/index.js b/date-fns/src/locale/is/_lib/formatLong/index.js
new file mode 100644
index 0000000..5d67398
--- /dev/null
+++ b/date-fns/src/locale/is/_lib/formatLong/index.js
@@ -0,0 +1,41 @@
+import buildFormatLongFn from '../../../_lib/buildFormatLongFn/index'
+
+var dateFormats = {
+ full: 'EEEE, do MMMM y',
+ long: 'do MMMM y',
+ medium: 'do MMM y',
+ short: 'd.MM.y'
+}
+
+var timeFormats = {
+ full: "'kl'. HH:mm:ss zzzz",
+ long: 'HH:mm:ss z',
+ medium: 'HH:mm:ss',
+ short: 'HH:mm'
+}
+
+var dateTimeFormats = {
+ full: "{{date}} 'kl.' {{time}}",
+ long: "{{date}} 'kl.' {{time}}",
+ medium: '{{date}} {{time}}',
+ short: '{{date}} {{time}}'
+}
+
+var formatLong = {
+ date: buildFormatLongFn({
+ formats: dateFormats,
+ defaultWidth: 'full'
+ }),
+
+ time: buildFormatLongFn({
+ formats: timeFormats,
+ defaultWidth: 'full'
+ }),
+
+ dateTime: buildFormatLongFn({
+ formats: dateTimeFormats,
+ defaultWidth: 'full'
+ })
+}
+
+export default formatLong
diff --git a/date-fns/src/locale/is/_lib/formatRelative/index.js b/date-fns/src/locale/is/_lib/formatRelative/index.js
new file mode 100644
index 0000000..14de903
--- /dev/null
+++ b/date-fns/src/locale/is/_lib/formatRelative/index.js
@@ -0,0 +1,12 @@
+var formatRelativeLocale = {
+ lastWeek: "'síðasta' dddd 'kl.' p",
+ yesterday: "'í gær kl.' p",
+ today: "'í dag kl.' p",
+ tomorrow: "'á morgun kl.' p",
+ nextWeek: "dddd 'kl.' p",
+ other: 'L'
+}
+
+export default function formatRelative(token, _date, _baseDate, _options) {
+ return formatRelativeLocale[token]
+}
diff --git a/date-fns/src/locale/is/_lib/localize/index.js b/date-fns/src/locale/is/_lib/localize/index.js
new file mode 100644
index 0000000..06fcc6d
--- /dev/null
+++ b/date-fns/src/locale/is/_lib/localize/index.js
@@ -0,0 +1,167 @@
+import buildLocalizeFn from '../../../_lib/buildLocalizeFn/index'
+
+var eraValues = {
+ narrow: ['f.Kr.', 'e.Kr.'],
+ abbreviated: ['f.Kr.', 'e.Kr.'],
+ wide: ['fyrir Krist', 'eftir Krist']
+}
+
+var quarterValues = {
+ narrow: ['1', '2', '3', '4'],
+ abbreviated: ['1F', '2F', '3F', '4F'],
+ wide: ['1. fjórðungur', '2. fjórðungur', '3. fjórðungur', '4. fjórðungur']
+}
+
+var monthValues = {
+ narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'Á', 'S', 'Ó', 'N', 'D'],
+ abbreviated: [
+ 'jan.',
+ 'feb.',
+ 'mars',
+ 'apríl',
+ 'maí',
+ 'júní',
+ 'júlí',
+ 'ágúst',
+ 'sept.',
+ 'okt.',
+ 'nóv.',
+ 'des.'
+ ],
+ wide: [
+ 'janúar',
+ 'febrúar',
+ 'mars',
+ 'apríl',
+ 'maí',
+ 'júní',
+ 'júlí',
+ 'ágúst',
+ 'september',
+ 'október',
+ 'nóvember',
+ 'desember'
+ ]
+}
+
+var dayValues = {
+ narrow: ['S', 'M', 'Þ', 'M', 'F', 'F', 'L'],
+ short: ['Su', 'Má', 'Þr', 'Mi', 'Fi', 'Fö', 'La'],
+ abbreviated: ['sun.', 'mán.', 'þri.', 'mið.', 'fim.', 'fös.', 'lau'],
+ wide: [
+ 'sunnudagur',
+ 'mánudagur',
+ 'þriðjudagur',
+ 'miðvikudagur',
+ 'fimmtudagur',
+ 'föstudagur',
+ 'laugardagur'
+ ]
+}
+
+var dayPeriodValues = {
+ narrow: {
+ am: 'f',
+ pm: 'e',
+ midnight: 'miðnætti',
+ noon: 'hádegi',
+ morning: 'morgunn',
+ afternoon: 'síðdegi',
+ evening: 'kvöld',
+ night: 'nótt'
+ },
+ abbreviated: {
+ am: 'f.h.',
+ pm: 'e.h.',
+ midnight: 'miðnætti',
+ noon: 'hádegi',
+ morning: 'morgunn',
+ afternoon: 'síðdegi',
+ evening: 'kvöld',
+ night: 'nótt'
+ },
+ wide: {
+ am: 'fyrir hádegi',
+ pm: 'eftir hádegi',
+ midnight: 'miðnætti',
+ noon: 'hádegi',
+ morning: 'morgunn',
+ afternoon: 'síðdegi',
+ evening: 'kvöld',
+ night: 'nótt'
+ }
+}
+var formattingDayPeriodValues = {
+ narrow: {
+ am: 'f',
+ pm: 'e',
+ midnight: 'á miðnætti',
+ noon: 'á hádegi',
+ morning: 'að morgni',
+ afternoon: 'síðdegis',
+ evening: 'um kvöld',
+ night: 'um nótt'
+ },
+ abbreviated: {
+ am: 'f.h.',
+ pm: 'e.h.',
+ midnight: 'á miðnætti',
+ noon: 'á hádegi',
+ morning: 'að morgni',
+ afternoon: 'síðdegis',
+ evening: 'um kvöld',
+ night: 'um nótt'
+ },
+ wide: {
+ am: 'fyrir hádegi',
+ pm: 'eftir hádegi',
+ midnight: 'á miðnætti',
+ noon: 'á hádegi',
+ morning: 'að morgni',
+ afternoon: 'síðdegis',
+ evening: 'um kvöld',
+ night: 'um nótt'
+ }
+}
+
+function ordinalNumber(dirtyNumber, _dirtyOptions) {
+ var number = Number(dirtyNumber)
+
+ return number + '.'
+}
+
+var localize = {
+ ordinalNumber: ordinalNumber,
+
+ era: buildLocalizeFn({
+ values: eraValues,
+ defaultWidth: 'wide'
+ }),
+
+ quarter: buildLocalizeFn({
+ values: quarterValues,
+ defaultWidth: 'wide',
+ argumentCallback: function(quarter) {
+ return Number(quarter) - 1
+ }
+ }),
+
+ month: buildLocalizeFn({
+ values: monthValues,
+ defaultWidth: 'wide'
+ }),
+
+ day: buildLocalizeFn({
+ values: dayValues,
+ defaultWidth: 'wide'
+ }),
+
+ dayPeriod: buildLocalizeFn({
+ values: dayPeriodValues,
+ defaultWidth: 'wide',
+ formattingValues: formattingDayPeriodValues,
+ defaultFormattingWidth: 'wide'
+ })
+}
+
+export default localize
diff --git a/date-fns/src/locale/is/_lib/match/index.js b/date-fns/src/locale/is/_lib/match/index.js
new file mode 100644
index 0000000..889c7ca
--- /dev/null
+++ b/date-fns/src/locale/is/_lib/match/index.js
@@ -0,0 +1,141 @@
+import buildMatchPatternFn from '../../../_lib/buildMatchPatternFn/index'
+import buildMatchFn from '../../../_lib/buildMatchFn/index'
+
+var matchOrdinalNumberPattern = /^(\d+)(th|st|nd|rd)?/i
+var parseOrdinalNumberPattern = /\d+/i
+
+var matchEraPatterns = {
+ narrow: /^(f\.Kr\.|e\.Kr\.)/i,
+ abbreviated: /^(f\.Kr\.|e\.Kr\.)/i,
+ wide: /^(fyrir Krist|eftir Krist)/i
+}
+
+var parseEraPatterns = {
+ any: [/^(f\.Kr\.|e\.Kr\.)/i]
+}
+
+var matchQuarterPatterns = {
+ narrow: /^[1234]/i,
+ abbreviated: /^q[1234]/i,
+ wide: /^[1234] fjórðungur/i
+}
+var parseQuarterPatterns = {
+ any: [/1/i, /2/i, /3/i, /4/i]
+}
+
+var matchMonthPatterns = {
+ narrow: /^[jfmásónd]/i,
+ abbreviated: /^(jan\.|feb\.|mars\.|apríl\.|maí|júní|júlí|águst|sep\.|oct\.|nov\.|dec\.)/i,
+ wide: /^(januar|februar|mars|apríl|maí|júní|júlí|águst|september|október|nóvember|desember)/i
+}
+
+var parseMonthPatterns = {
+ narrow: [
+ /^j/i,
+ /^f/i,
+ /^m/i,
+ /^a/i,
+ /^m/i,
+ /^j/i,
+ /^j/i,
+ /^á/i,
+ /^s/i,
+ /^ó/i,
+ /^n/i,
+ /^d/i
+ ],
+ any: [
+ /^ja/i,
+ /^f/i,
+ /^mar/i,
+ /^ap/i,
+ /^maí/i,
+ /^jún/i,
+ /^júl/i,
+ /^áu/i,
+ /^s/i,
+ /^ó/i,
+ /^n/i,
+ /^d/i
+ ]
+}
+
+var matchDayPatterns = {
+ narrow: /^[smtwf]/i,
+ short: /^(su|má|þr|mi|fi|fö|la)/i,
+ abbreviated: /^(sun|mán|þri|mið|fim|fös|lau)\.?/i,
+ wide: /^(sunnudagur|mánudagur|þriðjudagur|miðvikudagur|fimmtudagur|föstudagur|laugardagur)/i
+}
+
+var parseDayPatterns = {
+ narrow: [/^s/i, /^m/i, /^þ/i, /^m/i, /^f/i, /^f/i, /^l/i],
+ any: [/^su/i, /^má/i, /^þr/i, /^mi/i, /^fi/i, /^fö/i, /^la/i]
+}
+
+var matchDayPeriodPatterns = {
+ narrow: /^(f|e|síðdegis|(á|að|um) (morgni|kvöld|nótt|miðnætti))/i,
+ any: /^(fyrir hádegi|eftir hádegi|[ef]\.?h\.?|síðdegis|morgunn|(á|að|um) (morgni|kvöld|nótt|miðnætti))/i
+}
+
+var parseDayPeriodPatterns = {
+ any: {
+ am: /^f/i,
+ pm: /^e/i,
+ midnight: /^mi/i,
+ noon: /^há/i,
+ morning: /morgunn/i,
+ afternoon: /síðdegi/i,
+ evening: /kvöld/i,
+ night: /nótt/i
+ }
+}
+
+var match = {
+ ordinalNumber: buildMatchPatternFn({
+ matchPattern: matchOrdinalNumberPattern,
+ parsePattern: parseOrdinalNumberPattern,
+ valueCallback: function(value) {
+ return parseInt(value, 10)
+ }
+ }),
+
+ era: buildMatchFn({
+ matchPatterns: matchEraPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseEraPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ quarter: buildMatchFn({
+ matchPatterns: matchQuarterPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseQuarterPatterns,
+ defaultParseWidth: 'any',
+ valueCallback: function(index) {
+ return index + 1
+ }
+ }),
+
+ month: buildMatchFn({
+ matchPatterns: matchMonthPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseMonthPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ day: buildMatchFn({
+ matchPatterns: matchDayPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseDayPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ dayPeriod: buildMatchFn({
+ matchPatterns: matchDayPeriodPatterns,
+ defaultMatchWidth: 'any',
+ parsePatterns: parseDayPeriodPatterns,
+ defaultParseWidth: 'any'
+ })
+}
+
+export default match
diff --git a/date-fns/src/locale/is/index.d.ts b/date-fns/src/locale/is/index.d.ts
new file mode 100644
index 0000000..0d12119
--- /dev/null
+++ b/date-fns/src/locale/is/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { is } from 'date-fns/locale'
+export default is
diff --git a/date-fns/src/locale/is/index.js b/date-fns/src/locale/is/index.js
new file mode 100644
index 0000000..0d46f93
--- /dev/null
+++ b/date-fns/src/locale/is/index.js
@@ -0,0 +1,29 @@
+import formatDistance from './_lib/formatDistance/index'
+import formatLong from './_lib/formatLong/index'
+import formatRelative from './_lib/formatRelative/index'
+import localize from './_lib/localize/index'
+import match from './_lib/match/index'
+
+/**
+ * @type {Locale}
+ * @category Locales
+ * @summary Icelandic locale.
+ * @language Icelandic
+ * @iso-639-2 isl
+ * @author Derek Blank [@derekblank]{@link https://github.com/derekblank}
+ * @author Arnór Ýmir [@lamayg]{@link https://github.com/lamayg}
+ */
+var locale = {
+ code: 'is',
+ formatDistance: formatDistance,
+ formatLong: formatLong,
+ formatRelative: formatRelative,
+ localize: localize,
+ match: match,
+ options: {
+ weekStartsOn: 1 /* Monday */,
+ firstWeekContainsDate: 4
+ }
+}
+
+export default locale
diff --git a/date-fns/src/locale/is/index.js.flow b/date-fns/src/locale/is/index.js.flow
new file mode 100644
index 0000000..b9dfe66
--- /dev/null
+++ b/date-fns/src/locale/is/index.js.flow
@@ -0,0 +1,35 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+declare module.exports: Locale
diff --git a/date-fns/src/locale/is/snapshot.md b/date-fns/src/locale/is/snapshot.md
new file mode 100644
index 0000000..629dfc8
--- /dev/null
+++ b/date-fns/src/locale/is/snapshot.md
@@ -0,0 +1,304 @@
+# Icelandic (is) locale
+
+## `format` and `parse`
+
+| Title | Token string | Date | `format` result | `parse` result |
+| ------------------------------- | ------------ | ------------------------ | --------------------------------------------------------- | ------------------------ |
+| Calendar year | yo | 1987-02-11T12:13:14.015Z | 1987. | Invalid Date |
+| | | 0005-01-01T12:13:14.015Z | 5. | Invalid Date |
+| Local week-numbering year | Yo | 1987-02-11T12:13:14.015Z | 1987. | Invalid Date |
+| | | 0005-01-01T12:13:14.015Z | 4. | Invalid Date |
+| Quarter (formatting) | Qo | 2019-01-01T12:13:14.015Z | 1. | Invalid Date |
+| | | 2019-04-01T12:13:14.015Z | 2. | Invalid Date |
+| | QQQ | 2019-01-01T12:13:14.015Z | 1F | Invalid Date |
+| | | 2019-04-01T12:13:14.015Z | 2F | Invalid Date |
+| | QQQQ | 2019-01-01T12:13:14.015Z | 1. fjórðungur | Invalid Date |
+| | | 2019-04-01T12:13:14.015Z | 2. fjórðungur | Invalid Date |
+| | QQQQQ | 2019-01-01T12:13:14.015Z | 1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2 | 2019-04-01T00:00:00.000Z |
+| Quarter (stand-alone) | qo | 2019-01-01T12:13:14.015Z | 1. | Invalid Date |
+| | | 2019-04-01T12:13:14.015Z | 2. | Invalid Date |
+| | qqq | 2019-01-01T12:13:14.015Z | 1F | Invalid Date |
+| | | 2019-04-01T12:13:14.015Z | 2F | Invalid Date |
+| | qqqq | 2019-01-01T12:13:14.015Z | 1. fjórðungur | Invalid Date |
+| | | 2019-04-01T12:13:14.015Z | 2. fjórðungur | Invalid Date |
+| Month (formatting) | Mo | 2019-02-11T12:13:14.015Z | 2. | Invalid Date |
+| | | 2019-07-10T12:13:14.015Z | 7. | Invalid Date |
+| | MMM | 2019-02-11T12:13:14.015Z | feb. | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | júlí | 2019-07-01T00:00:00.000Z |
+| | MMMM | 2019-02-11T12:13:14.015Z | febrúar | Invalid Date |
+| | | 2019-07-10T12:13:14.015Z | júlí | 2019-07-01T00:00:00.000Z |
+| | MMMMM | 2019-02-11T12:13:14.015Z | F | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | J | 2019-01-01T00:00:00.000Z |
+| Month (stand-alone) | Lo | 2019-02-11T12:13:14.015Z | 2. | Invalid Date |
+| | | 2019-07-10T12:13:14.015Z | 7. | Invalid Date |
+| | LLL | 2019-02-11T12:13:14.015Z | feb. | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | júlí | 2019-07-01T00:00:00.000Z |
+| | LLLL | 2019-02-11T12:13:14.015Z | febrúar | Invalid Date |
+| | | 2019-07-10T12:13:14.015Z | júlí | 2019-07-01T00:00:00.000Z |
+| | LLLLL | 2019-02-11T12:13:14.015Z | F | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | J | 2019-01-01T00:00:00.000Z |
+| Local week of year | wo | 2019-01-01T12:13:14.015Z | 1. | Invalid Date |
+| | | 2019-12-01T12:13:14.015Z | 48. | Invalid Date |
+| ISO week of year | Io | 2019-01-01T12:13:14.015Z | 1. | Invalid Date |
+| | | 2019-12-01T12:13:14.015Z | 48. | Invalid Date |
+| Day of month | do | 2019-02-11T12:13:14.015Z | 11. | Invalid Date |
+| | | 2019-02-28T12:13:14.015Z | 28. | Invalid Date |
+| Day of year | Do | 2019-02-11T12:13:14.015Z | 42. | Invalid Date |
+| | | 2019-12-31T12:13:14.015Z | 365. | Invalid Date |
+| Day of week (formatting) | E | 2019-02-11T12:13:14.015Z | mán. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | fös. | 2019-02-15T00:00:00.000Z |
+| | EE | 2019-02-11T12:13:14.015Z | mán. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | fös. | 2019-02-15T00:00:00.000Z |
+| | EEE | 2019-02-11T12:13:14.015Z | mán. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | fös. | 2019-02-15T00:00:00.000Z |
+| | EEEE | 2019-02-11T12:13:14.015Z | mánudagur | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | föstudagur | 2019-02-15T00:00:00.000Z |
+| | EEEEE | 2019-02-11T12:13:14.015Z | M | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | F | 2019-02-14T00:00:00.000Z |
+| | EEEEEE | 2019-02-11T12:13:14.015Z | Má | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Fö | 2019-02-15T00:00:00.000Z |
+| ISO day of week (formatting) | io | 2019-02-11T12:13:14.015Z | 1. | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | 5. | Invalid Date |
+| | iii | 2019-02-11T12:13:14.015Z | mán. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | fös. | 2019-02-15T00:00:00.000Z |
+| | iiii | 2019-02-11T12:13:14.015Z | mánudagur | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | föstudagur | 2019-02-15T00:00:00.000Z |
+| | iiiii | 2019-02-11T12:13:14.015Z | M | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | F | 2019-02-14T00:00:00.000Z |
+| | iiiiii | 2019-02-11T12:13:14.015Z | Má | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Fö | 2019-02-15T00:00:00.000Z |
+| Local day of week (formatting) | eo | 2019-02-11T12:13:14.015Z | 1. | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | 5. | Invalid Date |
+| | eee | 2019-02-11T12:13:14.015Z | mán. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | fös. | 2019-02-15T00:00:00.000Z |
+| | eeee | 2019-02-11T12:13:14.015Z | mánudagur | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | föstudagur | 2019-02-15T00:00:00.000Z |
+| | eeeee | 2019-02-11T12:13:14.015Z | M | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | F | 2019-02-14T00:00:00.000Z |
+| | eeeeee | 2019-02-11T12:13:14.015Z | Má | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Fö | 2019-02-15T00:00:00.000Z |
+| Local day of week (stand-alone) | co | 2019-02-11T12:13:14.015Z | 1. | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | 5. | Invalid Date |
+| | ccc | 2019-02-11T12:13:14.015Z | mán. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | fös. | 2019-02-15T00:00:00.000Z |
+| | cccc | 2019-02-11T12:13:14.015Z | mánudagur | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | föstudagur | 2019-02-15T00:00:00.000Z |
+| | ccccc | 2019-02-11T12:13:14.015Z | M | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | F | 2019-02-14T00:00:00.000Z |
+| | cccccc | 2019-02-11T12:13:14.015Z | Má | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Fö | 2019-02-15T00:00:00.000Z |
+| AM, PM | a | 2019-02-11T11:13:14.015Z | f.h. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | e.h. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | e.h. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | f.h. | 2019-02-11T00:00:00.000Z |
+| | aa | 2019-02-11T11:13:14.015Z | f.h. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | e.h. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | e.h. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | f.h. | 2019-02-11T00:00:00.000Z |
+| | aaa | 2019-02-11T11:13:14.015Z | f.h. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | e.h. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | e.h. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | f.h. | 2019-02-11T00:00:00.000Z |
+| | aaaa | 2019-02-11T11:13:14.015Z | fyrir hádegi | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | eftir hádegi | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | eftir hádegi | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | fyrir hádegi | 2019-02-11T00:00:00.000Z |
+| | aaaaa | 2019-02-11T11:13:14.015Z | f | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | e | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | e | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | f | 2019-02-11T00:00:00.000Z |
+| AM, PM, noon, midnight | b | 2019-02-11T11:13:14.015Z | f.h. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | e.h. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | e.h. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | f.h. | 2019-02-11T00:00:00.000Z |
+| | bb | 2019-02-11T11:13:14.015Z | f.h. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | e.h. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | e.h. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | f.h. | 2019-02-11T00:00:00.000Z |
+| | bbb | 2019-02-11T11:13:14.015Z | f.h. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | e.h. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | e.h. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | f.h. | 2019-02-11T00:00:00.000Z |
+| | bbbb | 2019-02-11T11:13:14.015Z | fyrir hádegi | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | eftir hádegi | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | eftir hádegi | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | fyrir hádegi | 2019-02-11T00:00:00.000Z |
+| | bbbbb | 2019-02-11T11:13:14.015Z | f | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | e | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | e | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | f | 2019-02-11T00:00:00.000Z |
+| Flexible day period | B | 2019-02-11T11:13:14.015Z | að morgni | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | síðdegis | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | um kvöld | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | um nótt | 2019-02-11T00:00:00.000Z |
+| | BB | 2019-02-11T11:13:14.015Z | að morgni | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | síðdegis | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | um kvöld | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | um nótt | 2019-02-11T00:00:00.000Z |
+| | BBB | 2019-02-11T11:13:14.015Z | að morgni | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | síðdegis | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | um kvöld | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | um nótt | 2019-02-11T00:00:00.000Z |
+| | BBBB | 2019-02-11T11:13:14.015Z | að morgni | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | síðdegis | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | um kvöld | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | um nótt | 2019-02-11T00:00:00.000Z |
+| | BBBBB | 2019-02-11T11:13:14.015Z | að morgni | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | síðdegis | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | um kvöld | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | um nótt | 2019-02-11T00:00:00.000Z |
+| Hour [1-12] | ho | 2019-02-11T11:13:14.015Z | 11. | Invalid Date |
+| | | 2019-02-11T23:13:14.015Z | 11. | Invalid Date |
+| Hour [0-23] | Ho | 2019-02-11T11:13:14.015Z | 11. | Invalid Date |
+| | | 2019-02-11T23:13:14.015Z | 23. | Invalid Date |
+| Hour [0-11] | Ko | 2019-02-11T11:13:14.015Z | 11. | Invalid Date |
+| | | 2019-02-11T23:13:14.015Z | 11. | Invalid Date |
+| Hour [1-24] | ko | 2019-02-11T11:13:14.015Z | 11. | Invalid Date |
+| | | 2019-02-11T23:13:14.015Z | 23. | Invalid Date |
+| Minute | mo | 2019-01-01T12:01:14.015Z | 1. | Invalid Date |
+| | | 2019-04-01T12:55:14.015Z | 55. | Invalid Date |
+| Second | so | 2019-01-01T12:13:01.015Z | 1. | Invalid Date |
+| | | 2019-04-01T12:13:55.015Z | 55. | Invalid Date |
+| Long localized date | P | 1987-02-11T12:13:14.015Z | 11.02.1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29.05.1453 | 1453-05-29T00:00:00.000Z |
+| | PP | 1987-02-11T12:13:14.015Z | 11. feb. 1987 | Invalid Date |
+| | | 1453-05-29T23:59:59.999Z | 29. maí 1453 | Invalid Date |
+| | PPP | 1987-02-11T12:13:14.015Z | 11. febrúar 1987 | Invalid Date |
+| | | 1453-05-29T23:59:59.999Z | 29. maí 1453 | Invalid Date |
+| | PPPP | 1987-02-11T12:13:14.015Z | miðvikudagur, 11. febrúar 1987 | Invalid Date |
+| | | 1453-05-29T23:59:59.999Z | sunnudagur, 29. maí 1453 | Invalid Date |
+| Long localized time | p | 1987-02-11T12:13:14.015Z | 12:13 | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 23:59 | 1453-05-29T23:59:00.000Z |
+| | pp | 1987-02-11T12:13:14.015Z | 12:13:14 | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 | 1453-05-29T23:59:59.000Z |
+| | ppp | 1987-02-11T12:13:14.015Z | 12:13:14 GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 GMT+0 | Errored |
+| | pppp | 1987-02-11T12:13:14.015Z | kl. 12:13:14 GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | kl. 23:59:59 GMT+00:00 | Errored |
+| Combination of date and time | Pp | 1987-02-11T12:13:14.015Z | 11.02.1987 12:13 | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29.05.1453 23:59 | 1453-05-29T23:59:00.000Z |
+| | PPpp | 1987-02-11T12:13:14.015Z | 11. feb. 1987 12:13:14 | Invalid Date |
+| | | 1453-05-29T23:59:59.999Z | 29. maí 1453 23:59:59 | Invalid Date |
+| | PPPppp | 1987-02-11T12:13:14.015Z | 11. febrúar 1987 kl. 12:13:14 GMT+0 | Invalid Date |
+| | | 1453-05-29T23:59:59.999Z | 29. maí 1453 kl. 23:59:59 GMT+0 | Invalid Date |
+| | PPPPpppp | 1987-02-11T12:13:14.015Z | miðvikudagur, 11. febrúar 1987 kl. kl. 12:13:14 GMT+00:00 | Invalid Date |
+| | | 1453-05-29T23:59:59.999Z | sunnudagur, 29. maí 1453 kl. kl. 23:59:59 GMT+00:00 | Invalid Date |
+
+## `formatDistance`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `includeSeconds: true` | `addSuffix: true` |
+| ------------------------ | ---------------------- | ---------------------- | ---------------------------- |
+| 2006-01-01T00:00:00.000Z | u.þ.b. 6 ár | u.þ.b. 6 ár | í u.þ.b. 6 ár |
+| 2005-01-01T00:00:00.000Z | u.þ.b. 5 ár | u.þ.b. 5 ár | í u.þ.b. 5 ár |
+| 2004-01-01T00:00:00.000Z | u.þ.b. 4 ár | u.þ.b. 4 ár | í u.þ.b. 4 ár |
+| 2003-01-01T00:00:00.000Z | u.þ.b. 3 ár | u.þ.b. 3 ár | í u.þ.b. 3 ár |
+| 2002-01-01T00:00:00.000Z | u.þ.b. 2 ár | u.þ.b. 2 ár | í u.þ.b. 2 ár |
+| 2001-06-01T00:00:00.000Z | meira en 1 ár | meira en 1 ár | í meira en 1 ár |
+| 2001-02-01T00:00:00.000Z | u.þ.b. 1 ár | u.þ.b. 1 ár | í u.þ.b. 1 ár |
+| 2001-01-01T00:00:00.000Z | u.þ.b. 1 ár | u.þ.b. 1 ár | í u.þ.b. 1 ár |
+| 2000-06-01T00:00:00.000Z | 5 mánuðir | 5 mánuðir | í 5 mánuðir |
+| 2000-03-01T00:00:00.000Z | 2 mánuðir | 2 mánuðir | í 2 mánuðir |
+| 2000-02-01T00:00:00.000Z | u.þ.b. 1 mánuður | u.þ.b. 1 mánuður | í u.þ.b. 1 mánuður |
+| 2000-01-15T00:00:00.000Z | 14 dagar | 14 dagar | í 14 dagar |
+| 2000-01-02T00:00:00.000Z | 1 dagur | 1 dagur | í 1 dagur |
+| 2000-01-01T06:00:00.000Z | u.þ.b. 6 klukkustundir | u.þ.b. 6 klukkustundir | í u.þ.b. 6 klukkustundir |
+| 2000-01-01T01:00:00.000Z | u.þ.b. 1 klukkustund | u.þ.b. 1 klukkustund | í u.þ.b. 1 klukkustund |
+| 2000-01-01T00:45:00.000Z | u.þ.b. 1 klukkustund | u.þ.b. 1 klukkustund | í u.þ.b. 1 klukkustund |
+| 2000-01-01T00:30:00.000Z | 30 mínútur | 30 mínútur | í 30 mínútur |
+| 2000-01-01T00:15:00.000Z | 15 mínútur | 15 mínútur | í 15 mínútur |
+| 2000-01-01T00:01:00.000Z | 1 mínúta | 1 mínúta | í 1 mínúta |
+| 2000-01-01T00:00:25.000Z | minna en 1 mínúta | hálf mínúta | í minna en 1 mínúta |
+| 2000-01-01T00:00:15.000Z | minna en 1 mínúta | minna en 20 sekúndur | í minna en 1 mínúta |
+| 2000-01-01T00:00:05.000Z | minna en 1 mínúta | minna en 10 sekúndur | í minna en 1 mínúta |
+| 2000-01-01T00:00:00.000Z | minna en 1 mínúta | minna en 5 sekúndur | minna en 1 mínúta síðan |
+| 1999-12-31T23:59:55.000Z | minna en 1 mínúta | minna en 10 sekúndur | minna en 1 mínúta síðan |
+| 1999-12-31T23:59:45.000Z | minna en 1 mínúta | minna en 20 sekúndur | minna en 1 mínúta síðan |
+| 1999-12-31T23:59:35.000Z | minna en 1 mínúta | hálf mínúta | minna en 1 mínúta síðan |
+| 1999-12-31T23:59:00.000Z | 1 mínúta | 1 mínúta | 1 mínúta síðan |
+| 1999-12-31T23:45:00.000Z | 15 mínútur | 15 mínútur | 15 mínútur síðan |
+| 1999-12-31T23:30:00.000Z | 30 mínútur | 30 mínútur | 30 mínútur síðan |
+| 1999-12-31T23:15:00.000Z | u.þ.b. 1 klukkustund | u.þ.b. 1 klukkustund | u.þ.b. 1 klukkustund síðan |
+| 1999-12-31T23:00:00.000Z | u.þ.b. 1 klukkustund | u.þ.b. 1 klukkustund | u.þ.b. 1 klukkustund síðan |
+| 1999-12-31T18:00:00.000Z | u.þ.b. 6 klukkustundir | u.þ.b. 6 klukkustundir | u.þ.b. 6 klukkustundir síðan |
+| 1999-12-30T00:00:00.000Z | 2 dagar | 2 dagar | 2 dagar síðan |
+| 1999-12-15T00:00:00.000Z | 17 dagar | 17 dagar | 17 dagar síðan |
+| 1999-12-01T00:00:00.000Z | u.þ.b. 1 mánuður | u.þ.b. 1 mánuður | u.þ.b. 1 mánuður síðan |
+| 1999-11-01T00:00:00.000Z | 2 mánuðir | 2 mánuðir | 2 mánuðir síðan |
+| 1999-06-01T00:00:00.000Z | 7 mánuðir | 7 mánuðir | 7 mánuðir síðan |
+| 1999-01-01T00:00:00.000Z | u.þ.b. 1 ár | u.þ.b. 1 ár | u.þ.b. 1 ár síðan |
+| 1998-12-01T00:00:00.000Z | u.þ.b. 1 ár | u.þ.b. 1 ár | u.þ.b. 1 ár síðan |
+| 1998-06-01T00:00:00.000Z | meira en 1 ár | meira en 1 ár | meira en 1 ár síðan |
+| 1998-01-01T00:00:00.000Z | u.þ.b. 2 ár | u.þ.b. 2 ár | u.þ.b. 2 ár síðan |
+| 1997-01-01T00:00:00.000Z | u.þ.b. 3 ár | u.þ.b. 3 ár | u.þ.b. 3 ár síðan |
+| 1996-01-01T00:00:00.000Z | u.þ.b. 4 ár | u.þ.b. 4 ár | u.þ.b. 4 ár síðan |
+| 1995-01-01T00:00:00.000Z | u.þ.b. 5 ár | u.þ.b. 5 ár | u.þ.b. 5 ár síðan |
+| 1994-01-01T00:00:00.000Z | u.þ.b. 6 ár | u.þ.b. 6 ár | u.þ.b. 6 ár síðan |
+
+## `formatDistanceStrict`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `addSuffix: true` | With forced unit (i.e. `hour`) |
+| ------------------------ | --------------- | --------------------- | ------------------------------ |
+| 2006-01-01T00:00:00.000Z | 6 ár | í 6 ár | 52608 klukkustundir |
+| 2005-01-01T00:00:00.000Z | 5 ár | í 5 ár | 43848 klukkustundir |
+| 2004-01-01T00:00:00.000Z | 4 ár | í 4 ár | 35064 klukkustundir |
+| 2003-01-01T00:00:00.000Z | 3 ár | í 3 ár | 26304 klukkustundir |
+| 2002-01-01T00:00:00.000Z | 2 ár | í 2 ár | 17544 klukkustundir |
+| 2001-06-01T00:00:00.000Z | 1 ár | í 1 ár | 12408 klukkustundir |
+| 2001-02-01T00:00:00.000Z | 1 ár | í 1 ár | 9528 klukkustundir |
+| 2001-01-01T00:00:00.000Z | 1 ár | í 1 ár | 8784 klukkustundir |
+| 2000-06-01T00:00:00.000Z | 5 mánuðir | í 5 mánuðir | 3648 klukkustundir |
+| 2000-03-01T00:00:00.000Z | 2 mánuðir | í 2 mánuðir | 1440 klukkustundir |
+| 2000-02-01T00:00:00.000Z | 1 mánuður | í 1 mánuður | 744 klukkustundir |
+| 2000-01-15T00:00:00.000Z | 14 dagar | í 14 dagar | 336 klukkustundir |
+| 2000-01-02T00:00:00.000Z | 1 dagur | í 1 dagur | 24 klukkustundir |
+| 2000-01-01T06:00:00.000Z | 6 klukkustundir | í 6 klukkustundir | 6 klukkustundir |
+| 2000-01-01T01:00:00.000Z | 1 klukkustund | í 1 klukkustund | 1 klukkustund |
+| 2000-01-01T00:45:00.000Z | 45 mínútur | í 45 mínútur | 1 klukkustund |
+| 2000-01-01T00:30:00.000Z | 30 mínútur | í 30 mínútur | 1 klukkustund |
+| 2000-01-01T00:15:00.000Z | 15 mínútur | í 15 mínútur | 0 klukkustundir |
+| 2000-01-01T00:01:00.000Z | 1 mínúta | í 1 mínúta | 0 klukkustundir |
+| 2000-01-01T00:00:25.000Z | 25 sekúndur | í 25 sekúndur | 0 klukkustundir |
+| 2000-01-01T00:00:15.000Z | 15 sekúndur | í 15 sekúndur | 0 klukkustundir |
+| 2000-01-01T00:00:05.000Z | 5 sekúndur | í 5 sekúndur | 0 klukkustundir |
+| 2000-01-01T00:00:00.000Z | 0 sekúndur | 0 sekúndur síðan | 0 klukkustundir |
+| 1999-12-31T23:59:55.000Z | 5 sekúndur | 5 sekúndur síðan | 0 klukkustundir |
+| 1999-12-31T23:59:45.000Z | 15 sekúndur | 15 sekúndur síðan | 0 klukkustundir |
+| 1999-12-31T23:59:35.000Z | 25 sekúndur | 25 sekúndur síðan | 0 klukkustundir |
+| 1999-12-31T23:59:00.000Z | 1 mínúta | 1 mínúta síðan | 0 klukkustundir |
+| 1999-12-31T23:45:00.000Z | 15 mínútur | 15 mínútur síðan | 0 klukkustundir |
+| 1999-12-31T23:30:00.000Z | 30 mínútur | 30 mínútur síðan | 1 klukkustund |
+| 1999-12-31T23:15:00.000Z | 45 mínútur | 45 mínútur síðan | 1 klukkustund |
+| 1999-12-31T23:00:00.000Z | 1 klukkustund | 1 klukkustund síðan | 1 klukkustund |
+| 1999-12-31T18:00:00.000Z | 6 klukkustundir | 6 klukkustundir síðan | 6 klukkustundir |
+| 1999-12-30T00:00:00.000Z | 2 dagar | 2 dagar síðan | 48 klukkustundir |
+| 1999-12-15T00:00:00.000Z | 17 dagar | 17 dagar síðan | 408 klukkustundir |
+| 1999-12-01T00:00:00.000Z | 1 mánuður | 1 mánuður síðan | 744 klukkustundir |
+| 1999-11-01T00:00:00.000Z | 2 mánuðir | 2 mánuðir síðan | 1464 klukkustundir |
+| 1999-06-01T00:00:00.000Z | 7 mánuðir | 7 mánuðir síðan | 5136 klukkustundir |
+| 1999-01-01T00:00:00.000Z | 1 ár | 1 ár síðan | 8760 klukkustundir |
+| 1998-12-01T00:00:00.000Z | 1 ár | 1 ár síðan | 9504 klukkustundir |
+| 1998-06-01T00:00:00.000Z | 2 ár | 2 ár síðan | 13896 klukkustundir |
+| 1998-01-01T00:00:00.000Z | 2 ár | 2 ár síðan | 17520 klukkustundir |
+| 1997-01-01T00:00:00.000Z | 3 ár | 3 ár síðan | 26280 klukkustundir |
+| 1996-01-01T00:00:00.000Z | 4 ár | 4 ár síðan | 35064 klukkustundir |
+| 1995-01-01T00:00:00.000Z | 5 ár | 5 ár síðan | 43824 klukkustundir |
+| 1994-01-01T00:00:00.000Z | 6 ár | 6 ár síðan | 52584 klukkustundir |
+
+## `formatRelative`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result |
+| ------------------------ | ---------------------- |
+| 2000-01-10T00:00:00.000Z | 1 |
+| 2000-01-05T00:00:00.000Z | 0005 kl. 00:00 |
+| 2000-01-02T00:00:00.000Z | á morgun kl. 00:00 |
+| 2000-01-01T00:00:00.000Z | í dag kl. 00:00 |
+| 1999-12-31T00:00:00.000Z | í gær kl. 00:00 |
+| 1999-12-27T00:00:00.000Z | síðasta 0027 kl. 00:00 |
+| 1999-12-21T00:00:00.000Z | 12 |
diff --git a/date-fns/src/locale/it/_lib/formatDistance/index.js b/date-fns/src/locale/it/_lib/formatDistance/index.js
new file mode 100644
index 0000000..be8b937
--- /dev/null
+++ b/date-fns/src/locale/it/_lib/formatDistance/index.js
@@ -0,0 +1,101 @@
+var formatDistanceLocale = {
+ lessThanXSeconds: {
+ one: 'meno di un secondo',
+ other: 'meno di {{count}} secondi'
+ },
+
+ xSeconds: {
+ one: 'un secondo',
+ other: '{{count}} secondi'
+ },
+
+ halfAMinute: 'alcuni secondi',
+
+ lessThanXMinutes: {
+ one: 'meno di un minuto',
+ other: 'meno di {{count}} minuti'
+ },
+
+ xMinutes: {
+ one: 'un minuto',
+ other: '{{count}} minuti'
+ },
+
+ aboutXHours: {
+ one: "circa un'ora",
+ other: 'circa {{count}} ore'
+ },
+
+ xHours: {
+ one: "un'ora",
+ other: '{{count}} ore'
+ },
+
+ xDays: {
+ one: 'un giorno',
+ other: '{{count}} giorni'
+ },
+
+ aboutXWeeks: {
+ one: 'circa una settimana',
+ other: 'circa {{count}} settimane'
+ },
+
+ xWeeks: {
+ one: 'una settimana',
+ other: '{{count}} settimane'
+ },
+
+ aboutXMonths: {
+ one: 'circa un mese',
+ other: 'circa {{count}} mesi'
+ },
+
+ xMonths: {
+ one: 'un mese',
+ other: '{{count}} mesi'
+ },
+
+ aboutXYears: {
+ one: 'circa un anno',
+ other: 'circa {{count}} anni'
+ },
+
+ xYears: {
+ one: 'un anno',
+ other: '{{count}} anni'
+ },
+
+ overXYears: {
+ one: 'più di un anno',
+ other: 'più di {{count}} anni'
+ },
+
+ almostXYears: {
+ one: 'quasi un anno',
+ other: 'quasi {{count}} anni'
+ }
+}
+
+export default function formatDistance(token, count, options) {
+ options = options || {}
+
+ var result
+ if (typeof formatDistanceLocale[token] === 'string') {
+ result = formatDistanceLocale[token]
+ } else if (count === 1) {
+ result = formatDistanceLocale[token].one
+ } else {
+ result = formatDistanceLocale[token].other.replace('{{count}}', count)
+ }
+
+ if (options.addSuffix) {
+ if (options.comparison > 0) {
+ return 'tra ' + result
+ } else {
+ return result + ' fa'
+ }
+ }
+
+ return result
+}
diff --git a/date-fns/src/locale/it/_lib/formatLong/index.js b/date-fns/src/locale/it/_lib/formatLong/index.js
new file mode 100644
index 0000000..6a45204
--- /dev/null
+++ b/date-fns/src/locale/it/_lib/formatLong/index.js
@@ -0,0 +1,41 @@
+import buildFormatLongFn from '../../../_lib/buildFormatLongFn/index'
+
+var dateFormats = {
+ full: 'EEEE d MMMM y',
+ long: 'd MMMM y',
+ medium: 'd MMM y',
+ short: 'dd/MM/y'
+}
+
+var timeFormats = {
+ full: 'HH:mm:ss zzzz',
+ long: 'HH:mm:ss z',
+ medium: 'HH:mm:ss',
+ short: 'HH:mm'
+}
+
+var dateTimeFormats = {
+ full: '{{date}} {{time}}',
+ long: '{{date}} {{time}}',
+ medium: '{{date}} {{time}}',
+ short: '{{date}} {{time}}'
+}
+
+var formatLong = {
+ date: buildFormatLongFn({
+ formats: dateFormats,
+ defaultWidth: 'full'
+ }),
+
+ time: buildFormatLongFn({
+ formats: timeFormats,
+ defaultWidth: 'full'
+ }),
+
+ dateTime: buildFormatLongFn({
+ formats: dateTimeFormats,
+ defaultWidth: 'full'
+ })
+}
+
+export default formatLong
diff --git a/date-fns/src/locale/it/_lib/formatRelative/index.js b/date-fns/src/locale/it/_lib/formatRelative/index.js
new file mode 100644
index 0000000..7258059
--- /dev/null
+++ b/date-fns/src/locale/it/_lib/formatRelative/index.js
@@ -0,0 +1,66 @@
+import isSameUTCWeek from '../../../../_lib/isSameUTCWeek/index'
+
+var weekdays = [
+ 'domenica',
+ 'lunedì',
+ 'martedì',
+ 'mercoledì',
+ 'giovedì',
+ 'venerdì',
+ 'sabato'
+]
+
+function lastWeek(day) {
+ switch (day) {
+ case 0:
+ return "'domenica scorsa alle' p"
+ default:
+ return "'" + weekdays[day] + " scorso alle' p"
+ }
+}
+
+function thisWeek(day) {
+ return "'" + weekdays[day] + " alle' p"
+}
+
+function nextWeek(day) {
+ switch (day) {
+ case 0:
+ return "'domenica prossima alle' p"
+ default:
+ return "'" + weekdays[day] + " prossimo alle' p"
+ }
+}
+
+var formatRelativeLocale = {
+ lastWeek: function(date, baseDate, options) {
+ var day = date.getUTCDay()
+ if (isSameUTCWeek(date, baseDate, options)) {
+ return thisWeek(day)
+ } else {
+ return lastWeek(day)
+ }
+ },
+ yesterday: "'ieri alle' p",
+ today: "'oggi alle' p",
+ tomorrow: "'domani alle' p",
+ nextWeek: function(date, baseDate, options) {
+ var day = date.getUTCDay()
+ if (isSameUTCWeek(date, baseDate, options)) {
+ return thisWeek(day)
+ } else {
+ return nextWeek(day)
+ }
+ },
+ other: 'P'
+}
+
+export default function formatRelative(token, date, baseDate, options) {
+ var format = formatRelativeLocale[token]
+
+ if (typeof format === 'function') {
+ return format(date, baseDate, options)
+ }
+
+ return format
+}
diff --git a/date-fns/src/locale/it/_lib/localize/index.js b/date-fns/src/locale/it/_lib/localize/index.js
new file mode 100644
index 0000000..2707f5c
--- /dev/null
+++ b/date-fns/src/locale/it/_lib/localize/index.js
@@ -0,0 +1,166 @@
+import buildLocalizeFn from '../../../_lib/buildLocalizeFn/index'
+
+var eraValues = {
+ narrow: ['aC', 'dC'],
+ abbreviated: ['a.C.', 'd.C.'],
+ wide: ['avanti Cristo', 'dopo Cristo']
+}
+
+var quarterValues = {
+ narrow: ['1', '2', '3', '4'],
+ abbreviated: ['T1', 'T2', 'T3', 'T4'],
+ wide: ['1º trimestre', '2º trimestre', '3º trimestre', '4º trimestre']
+}
+
+var monthValues = {
+ narrow: ['G', 'F', 'M', 'A', 'M', 'G', 'L', 'A', 'S', 'O', 'N', 'D'],
+ abbreviated: [
+ 'gen',
+ 'feb',
+ 'mar',
+ 'apr',
+ 'mag',
+ 'giu',
+ 'lug',
+ 'ago',
+ 'set',
+ 'ott',
+ 'nov',
+ 'dic'
+ ],
+ wide: [
+ 'gennaio',
+ 'febbraio',
+ 'marzo',
+ 'aprile',
+ 'maggio',
+ 'giugno',
+ 'luglio',
+ 'agosto',
+ 'settembre',
+ 'ottobre',
+ 'novembre',
+ 'dicembre'
+ ]
+}
+
+var dayValues = {
+ narrow: ['D', 'L', 'M', 'M', 'G', 'V', 'S'],
+ short: ['dom', 'lun', 'mar', 'mer', 'gio', 'ven', 'sab'],
+ abbreviated: ['dom', 'lun', 'mar', 'mer', 'gio', 'ven', 'sab'],
+ wide: [
+ 'domenica',
+ 'lunedì',
+ 'martedì',
+ 'mercoledì',
+ 'giovedì',
+ 'venerdì',
+ 'sabato'
+ ]
+}
+
+var dayPeriodValues = {
+ narrow: {
+ am: 'm.',
+ pm: 'p.',
+ midnight: 'mezzanotte',
+ noon: 'mezzogiorno',
+ morning: 'mattina',
+ afternoon: 'pomeriggio',
+ evening: 'sera',
+ night: 'notte'
+ },
+ abbreviated: {
+ am: 'AM',
+ pm: 'PM',
+ midnight: 'mezzanotte',
+ noon: 'mezzogiorno',
+ morning: 'mattina',
+ afternoon: 'pomeriggio',
+ evening: 'sera',
+ night: 'notte'
+ },
+ wide: {
+ am: 'AM',
+ pm: 'PM',
+ midnight: 'mezzanotte',
+ noon: 'mezzogiorno',
+ morning: 'mattina',
+ afternoon: 'pomeriggio',
+ evening: 'sera',
+ night: 'notte'
+ }
+}
+var formattingDayPeriodValues = {
+ narrow: {
+ am: 'm.',
+ pm: 'p.',
+ midnight: 'mezzanotte',
+ noon: 'mezzogiorno',
+ morning: 'di mattina',
+ afternoon: 'del pomeriggio',
+ evening: 'di sera',
+ night: 'di notte'
+ },
+ abbreviated: {
+ am: 'AM',
+ pm: 'PM',
+ midnight: 'mezzanotte',
+ noon: 'mezzogiorno',
+ morning: 'di mattina',
+ afternoon: 'del pomeriggio',
+ evening: 'di sera',
+ night: 'di notte'
+ },
+ wide: {
+ am: 'AM',
+ pm: 'PM',
+ midnight: 'mezzanotte',
+ noon: 'mezzogiorno',
+ morning: 'di mattina',
+ afternoon: 'del pomeriggio',
+ evening: 'di sera',
+ night: 'di notte'
+ }
+}
+
+function ordinalNumber(dirtyNumber) {
+ var number = Number(dirtyNumber)
+ return number + 'º'
+}
+
+var localize = {
+ ordinalNumber: ordinalNumber,
+
+ era: buildLocalizeFn({
+ values: eraValues,
+ defaultWidth: 'wide'
+ }),
+
+ quarter: buildLocalizeFn({
+ values: quarterValues,
+ defaultWidth: 'wide',
+ argumentCallback: function(quarter) {
+ return Number(quarter) - 1
+ }
+ }),
+
+ month: buildLocalizeFn({
+ values: monthValues,
+ defaultWidth: 'wide'
+ }),
+
+ day: buildLocalizeFn({
+ values: dayValues,
+ defaultWidth: 'wide'
+ }),
+
+ dayPeriod: buildLocalizeFn({
+ values: dayPeriodValues,
+ defaultWidth: 'wide',
+ formattingValues: formattingDayPeriodValues,
+ defaultFormattingWidth: 'wide'
+ })
+}
+
+export default localize
diff --git a/date-fns/src/locale/it/_lib/match/index.js b/date-fns/src/locale/it/_lib/match/index.js
new file mode 100644
index 0000000..fa4e057
--- /dev/null
+++ b/date-fns/src/locale/it/_lib/match/index.js
@@ -0,0 +1,137 @@
+import buildMatchPatternFn from '../../../_lib/buildMatchPatternFn/index'
+import buildMatchFn from '../../../_lib/buildMatchFn/index'
+
+var matchOrdinalNumberPattern = /^(\d+)(º)?/i
+var parseOrdinalNumberPattern = /\d+/i
+
+var matchEraPatterns = {
+ narrow: /^(aC|dC)/i,
+ abbreviated: /^(a\.?\s?C\.?|a\.?\s?e\.?\s?v\.?|d\.?\s?C\.?|e\.?\s?v\.?)/i,
+ wide: /^(avanti Cristo|avanti Era Volgare|dopo Cristo|Era Volgare)/i
+}
+var parseEraPatterns = {
+ any: [/^a/i, /^(d|e)/i]
+}
+
+var matchQuarterPatterns = {
+ narrow: /^[1234]/i,
+ abbreviated: /^t[1234]/i,
+ wide: /^[1234](º)? trimestre/i
+}
+var parseQuarterPatterns = {
+ any: [/1/i, /2/i, /3/i, /4/i]
+}
+
+var matchMonthPatterns = {
+ narrow: /^[gfmalsond]/i,
+ abbreviated: /^(gen|feb|mar|apr|mag|giu|lug|ago|set|ott|nov|dic)/i,
+ wide: /^(gennaio|febbraio|marzo|aprile|maggio|giugno|luglio|agosto|settembre|ottobre|novembre|dicembre)/i
+}
+var parseMonthPatterns = {
+ narrow: [
+ /^g/i,
+ /^f/i,
+ /^m/i,
+ /^a/i,
+ /^m/i,
+ /^g/i,
+ /^l/i,
+ /^a/i,
+ /^s/i,
+ /^o/i,
+ /^n/i,
+ /^d/i
+ ],
+ any: [
+ /^ge/i,
+ /^f/i,
+ /^mar/i,
+ /^ap/i,
+ /^mag/i,
+ /^gi/i,
+ /^l/i,
+ /^ag/i,
+ /^s/i,
+ /^o/i,
+ /^n/i,
+ /^d/i
+ ]
+}
+
+var matchDayPatterns = {
+ narrow: /^[dlmgvs]/i,
+ short: /^(do|lu|ma|me|gi|ve|sa)/i,
+ abbreviated: /^(dom|lun|mar|mer|gio|ven|sab)/i,
+ wide: /^(domenica|luned[i|ì]|marted[i|ì]|mercoled[i|ì]|gioved[i|ì]|venerd[i|ì]|sabato)/i
+}
+var parseDayPatterns = {
+ narrow: [/^d/i, /^l/i, /^m/i, /^m/i, /^g/i, /^v/i, /^s/i],
+ any: [/^d/i, /^l/i, /^ma/i, /^me/i, /^g/i, /^v/i, /^s/i]
+}
+
+var matchDayPeriodPatterns = {
+ narrow: /^(a|m\.|p|mezzanotte|mezzogiorno|(di|del) (mattina|pomeriggio|sera|notte))/i,
+ any: /^([ap]\.?\s?m\.?|mezzanotte|mezzogiorno|(di|del) (mattina|pomeriggio|sera|notte))/i
+}
+var parseDayPeriodPatterns = {
+ any: {
+ am: /^a/i,
+ pm: /^p/i,
+ midnight: /^mezza/i,
+ noon: /^mezzo/i,
+ morning: /mattina/i,
+ afternoon: /pomeriggio/i,
+ evening: /sera/i,
+ night: /notte/i
+ }
+}
+
+var match = {
+ ordinalNumber: buildMatchPatternFn({
+ matchPattern: matchOrdinalNumberPattern,
+ parsePattern: parseOrdinalNumberPattern,
+ valueCallback: function(value) {
+ return parseInt(value, 10)
+ }
+ }),
+
+ era: buildMatchFn({
+ matchPatterns: matchEraPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseEraPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ quarter: buildMatchFn({
+ matchPatterns: matchQuarterPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseQuarterPatterns,
+ defaultParseWidth: 'any',
+ valueCallback: function(index) {
+ return index + 1
+ }
+ }),
+
+ month: buildMatchFn({
+ matchPatterns: matchMonthPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseMonthPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ day: buildMatchFn({
+ matchPatterns: matchDayPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseDayPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ dayPeriod: buildMatchFn({
+ matchPatterns: matchDayPeriodPatterns,
+ defaultMatchWidth: 'any',
+ parsePatterns: parseDayPeriodPatterns,
+ defaultParseWidth: 'any'
+ })
+}
+
+export default match
diff --git a/date-fns/src/locale/it/index.d.ts b/date-fns/src/locale/it/index.d.ts
new file mode 100644
index 0000000..6e0422e
--- /dev/null
+++ b/date-fns/src/locale/it/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { it } from 'date-fns/locale'
+export default it
diff --git a/date-fns/src/locale/it/index.js b/date-fns/src/locale/it/index.js
new file mode 100644
index 0000000..b7aeec0
--- /dev/null
+++ b/date-fns/src/locale/it/index.js
@@ -0,0 +1,30 @@
+import formatDistance from './_lib/formatDistance/index'
+import formatLong from './_lib/formatLong/index'
+import formatRelative from './_lib/formatRelative/index'
+import localize from './_lib/localize/index'
+import match from './_lib/match/index'
+
+/**
+ * @type {Locale}
+ * @category Locales
+ * @summary Italian locale.
+ * @language Italian
+ * @iso-639-2 ita
+ * @author Alberto Restifo [@albertorestifo]{@link https://github.com/albertorestifo}
+ * @author Giovanni Polimeni [@giofilo]{@link https://github.com/giofilo}
+ * @author Vincenzo Carrese [@vin-car]{@link https://github.com/vin-car}
+ */
+var locale = {
+ code: 'it',
+ formatDistance: formatDistance,
+ formatLong: formatLong,
+ formatRelative: formatRelative,
+ localize: localize,
+ match: match,
+ options: {
+ weekStartsOn: 1 /* Monday */,
+ firstWeekContainsDate: 4
+ }
+}
+
+export default locale
diff --git a/date-fns/src/locale/it/index.js.flow b/date-fns/src/locale/it/index.js.flow
new file mode 100644
index 0000000..b9dfe66
--- /dev/null
+++ b/date-fns/src/locale/it/index.js.flow
@@ -0,0 +1,35 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+declare module.exports: Locale
diff --git a/date-fns/src/locale/it/snapshot.md b/date-fns/src/locale/it/snapshot.md
new file mode 100644
index 0000000..53f0aea
--- /dev/null
+++ b/date-fns/src/locale/it/snapshot.md
@@ -0,0 +1,304 @@
+# Italian (it) locale
+
+## `format` and `parse`
+
+| Title | Token string | Date | `format` result | `parse` result |
+| ------------------------------- | ------------ | ------------------------ | --------------------------------------------- | ------------------------ |
+| Calendar year | yo | 1987-02-11T12:13:14.015Z | 1987º | 1987-01-01T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 5º | 0005-01-01T00:00:00.000Z |
+| Local week-numbering year | Yo | 1987-02-11T12:13:14.015Z | 1987º | 1986-12-29T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 4º | 0003-12-29T00:00:00.000Z |
+| Quarter (formatting) | Qo | 2019-01-01T12:13:14.015Z | 1º | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2º | 2019-04-01T00:00:00.000Z |
+| | QQQ | 2019-01-01T12:13:14.015Z | T1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | T2 | 2019-04-01T00:00:00.000Z |
+| | QQQQ | 2019-01-01T12:13:14.015Z | 1º trimestre | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2º trimestre | 2019-04-01T00:00:00.000Z |
+| | QQQQQ | 2019-01-01T12:13:14.015Z | 1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2 | 2019-04-01T00:00:00.000Z |
+| Quarter (stand-alone) | qo | 2019-01-01T12:13:14.015Z | 1º | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2º | 2019-04-01T00:00:00.000Z |
+| | qqq | 2019-01-01T12:13:14.015Z | T1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | T2 | 2019-04-01T00:00:00.000Z |
+| | qqqq | 2019-01-01T12:13:14.015Z | 1º trimestre | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2º trimestre | 2019-04-01T00:00:00.000Z |
+| Month (formatting) | Mo | 2019-02-11T12:13:14.015Z | 2º | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7º | 2019-07-01T00:00:00.000Z |
+| | MMM | 2019-02-11T12:13:14.015Z | feb | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | lug | 2019-07-01T00:00:00.000Z |
+| | MMMM | 2019-02-11T12:13:14.015Z | febbraio | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | luglio | 2019-07-01T00:00:00.000Z |
+| | MMMMM | 2019-02-11T12:13:14.015Z | F | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | L | 2019-07-01T00:00:00.000Z |
+| Month (stand-alone) | Lo | 2019-02-11T12:13:14.015Z | 2º | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7º | 2019-07-01T00:00:00.000Z |
+| | LLL | 2019-02-11T12:13:14.015Z | feb | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | lug | 2019-07-01T00:00:00.000Z |
+| | LLLL | 2019-02-11T12:13:14.015Z | febbraio | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | luglio | 2019-07-01T00:00:00.000Z |
+| | LLLLL | 2019-02-11T12:13:14.015Z | F | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | L | 2019-07-01T00:00:00.000Z |
+| Local week of year | wo | 2019-01-01T12:13:14.015Z | 1º | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48º | 2019-11-25T00:00:00.000Z |
+| ISO week of year | Io | 2019-01-01T12:13:14.015Z | 1º | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48º | 2019-11-25T00:00:00.000Z |
+| Day of month | do | 2019-02-11T12:13:14.015Z | 11º | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-28T12:13:14.015Z | 28º | 2019-02-28T00:00:00.000Z |
+| Day of year | Do | 2019-02-11T12:13:14.015Z | 42º | 2019-02-11T00:00:00.000Z |
+| | | 2019-12-31T12:13:14.015Z | 365º | 2019-12-31T00:00:00.000Z |
+| Day of week (formatting) | E | 2019-02-11T12:13:14.015Z | lun | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ven | 2019-02-15T00:00:00.000Z |
+| | EE | 2019-02-11T12:13:14.015Z | lun | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ven | 2019-02-15T00:00:00.000Z |
+| | EEE | 2019-02-11T12:13:14.015Z | lun | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ven | 2019-02-15T00:00:00.000Z |
+| | EEEE | 2019-02-11T12:13:14.015Z | lunedì | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | venerdì | 2019-02-15T00:00:00.000Z |
+| | EEEEE | 2019-02-11T12:13:14.015Z | L | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | V | 2019-02-15T00:00:00.000Z |
+| | EEEEEE | 2019-02-11T12:13:14.015Z | lun | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | ven | Invalid Date |
+| ISO day of week (formatting) | io | 2019-02-11T12:13:14.015Z | 1º | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5º | 2019-02-15T00:00:00.000Z |
+| | iii | 2019-02-11T12:13:14.015Z | lun | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ven | 2019-02-15T00:00:00.000Z |
+| | iiii | 2019-02-11T12:13:14.015Z | lunedì | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | venerdì | 2019-02-15T00:00:00.000Z |
+| | iiiii | 2019-02-11T12:13:14.015Z | L | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | V | 2019-02-15T00:00:00.000Z |
+| | iiiiii | 2019-02-11T12:13:14.015Z | lun | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | ven | Invalid Date |
+| Local day of week (formatting) | eo | 2019-02-11T12:13:14.015Z | 1º | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5º | 2019-02-15T00:00:00.000Z |
+| | eee | 2019-02-11T12:13:14.015Z | lun | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ven | 2019-02-15T00:00:00.000Z |
+| | eeee | 2019-02-11T12:13:14.015Z | lunedì | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | venerdì | 2019-02-15T00:00:00.000Z |
+| | eeeee | 2019-02-11T12:13:14.015Z | L | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | V | 2019-02-15T00:00:00.000Z |
+| | eeeeee | 2019-02-11T12:13:14.015Z | lun | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | ven | Invalid Date |
+| Local day of week (stand-alone) | co | 2019-02-11T12:13:14.015Z | 1º | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5º | 2019-02-15T00:00:00.000Z |
+| | ccc | 2019-02-11T12:13:14.015Z | lun | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ven | 2019-02-15T00:00:00.000Z |
+| | cccc | 2019-02-11T12:13:14.015Z | lunedì | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | venerdì | 2019-02-15T00:00:00.000Z |
+| | ccccc | 2019-02-11T12:13:14.015Z | L | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | V | 2019-02-15T00:00:00.000Z |
+| | cccccc | 2019-02-11T12:13:14.015Z | lun | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | ven | Invalid Date |
+| AM, PM | a | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | aa | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | aaa | 2019-02-11T11:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | aaaa | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | aaaaa | 2019-02-11T11:13:14.015Z | m. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | p. | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | p. | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | m. | 2019-02-11T00:00:00.000Z |
+| AM, PM, noon, midnight | b | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | bb | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | bbb | 2019-02-11T11:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | bbbb | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | bbbbb | 2019-02-11T11:13:14.015Z | m. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | p. | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | p. | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | m. | 2019-02-11T00:00:00.000Z |
+| Flexible day period | B | 2019-02-11T11:13:14.015Z | di mattina | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | del pomeriggio | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | di sera | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | di notte | 2019-02-11T00:00:00.000Z |
+| | BB | 2019-02-11T11:13:14.015Z | di mattina | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | del pomeriggio | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | di sera | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | di notte | 2019-02-11T00:00:00.000Z |
+| | BBB | 2019-02-11T11:13:14.015Z | di mattina | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | del pomeriggio | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | di sera | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | di notte | 2019-02-11T00:00:00.000Z |
+| | BBBB | 2019-02-11T11:13:14.015Z | di mattina | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | del pomeriggio | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | di sera | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | di notte | 2019-02-11T00:00:00.000Z |
+| | BBBBB | 2019-02-11T11:13:14.015Z | di mattina | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | del pomeriggio | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | di sera | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | di notte | 2019-02-11T00:00:00.000Z |
+| Hour [1-12] | ho | 2019-02-11T11:13:14.015Z | 11º | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11º | 2019-02-11T23:00:00.000Z |
+| Hour [0-23] | Ho | 2019-02-11T11:13:14.015Z | 11º | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23º | 2019-02-11T23:00:00.000Z |
+| Hour [0-11] | Ko | 2019-02-11T11:13:14.015Z | 11º | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11º | 2019-02-11T23:00:00.000Z |
+| Hour [1-24] | ko | 2019-02-11T11:13:14.015Z | 11º | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23º | 2019-02-11T23:00:00.000Z |
+| Minute | mo | 2019-01-01T12:01:14.015Z | 1º | 2019-01-01T12:01:00.000Z |
+| | | 2019-04-01T12:55:14.015Z | 55º | 2019-04-01T12:55:00.000Z |
+| Second | so | 2019-01-01T12:13:01.015Z | 1º | 2019-01-01T12:13:01.000Z |
+| | | 2019-04-01T12:13:55.015Z | 55º | 2019-04-01T12:13:55.000Z |
+| Long localized date | P | 1987-02-11T12:13:14.015Z | 11/02/1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29/05/1453 | 1453-05-29T00:00:00.000Z |
+| | PP | 1987-02-11T12:13:14.015Z | 11 feb 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 mag 1453 | 1453-05-29T00:00:00.000Z |
+| | PPP | 1987-02-11T12:13:14.015Z | 11 febbraio 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 maggio 1453 | 1453-05-29T00:00:00.000Z |
+| | PPPP | 1987-02-11T12:13:14.015Z | mercoledì 11 febbraio 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | domenica 29 maggio 1453 | 1453-05-29T00:00:00.000Z |
+| Long localized time | p | 1987-02-11T12:13:14.015Z | 12:13 | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 23:59 | 1453-05-29T23:59:00.000Z |
+| | pp | 1987-02-11T12:13:14.015Z | 12:13:14 | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 | 1453-05-29T23:59:59.000Z |
+| | ppp | 1987-02-11T12:13:14.015Z | 12:13:14 GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 GMT+0 | Errored |
+| | pppp | 1987-02-11T12:13:14.015Z | 12:13:14 GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 GMT+00:00 | Errored |
+| Combination of date and time | Pp | 1987-02-11T12:13:14.015Z | 11/02/1987 12:13 | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29/05/1453 23:59 | 1453-05-29T23:59:00.000Z |
+| | PPpp | 1987-02-11T12:13:14.015Z | 11 feb 1987 12:13:14 | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 mag 1453 23:59:59 | 1453-05-29T23:59:59.000Z |
+| | PPPppp | 1987-02-11T12:13:14.015Z | 11 febbraio 1987 12:13:14 GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 29 maggio 1453 23:59:59 GMT+0 | Errored |
+| | PPPPpppp | 1987-02-11T12:13:14.015Z | mercoledì 11 febbraio 1987 12:13:14 GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | domenica 29 maggio 1453 23:59:59 GMT+00:00 | Errored |
+
+## `formatDistance`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `includeSeconds: true` | `addSuffix: true` |
+| ------------------------ | ----------------- | ---------------------- | --------------------- |
+| 2006-01-01T00:00:00.000Z | circa 6 anni | circa 6 anni | tra circa 6 anni |
+| 2005-01-01T00:00:00.000Z | circa 5 anni | circa 5 anni | tra circa 5 anni |
+| 2004-01-01T00:00:00.000Z | circa 4 anni | circa 4 anni | tra circa 4 anni |
+| 2003-01-01T00:00:00.000Z | circa 3 anni | circa 3 anni | tra circa 3 anni |
+| 2002-01-01T00:00:00.000Z | circa 2 anni | circa 2 anni | tra circa 2 anni |
+| 2001-06-01T00:00:00.000Z | più di un anno | più di un anno | tra più di un anno |
+| 2001-02-01T00:00:00.000Z | circa un anno | circa un anno | tra circa un anno |
+| 2001-01-01T00:00:00.000Z | circa un anno | circa un anno | tra circa un anno |
+| 2000-06-01T00:00:00.000Z | 5 mesi | 5 mesi | tra 5 mesi |
+| 2000-03-01T00:00:00.000Z | 2 mesi | 2 mesi | tra 2 mesi |
+| 2000-02-01T00:00:00.000Z | circa un mese | circa un mese | tra circa un mese |
+| 2000-01-15T00:00:00.000Z | 14 giorni | 14 giorni | tra 14 giorni |
+| 2000-01-02T00:00:00.000Z | un giorno | un giorno | tra un giorno |
+| 2000-01-01T06:00:00.000Z | circa 6 ore | circa 6 ore | tra circa 6 ore |
+| 2000-01-01T01:00:00.000Z | circa un'ora | circa un'ora | tra circa un'ora |
+| 2000-01-01T00:45:00.000Z | circa un'ora | circa un'ora | tra circa un'ora |
+| 2000-01-01T00:30:00.000Z | 30 minuti | 30 minuti | tra 30 minuti |
+| 2000-01-01T00:15:00.000Z | 15 minuti | 15 minuti | tra 15 minuti |
+| 2000-01-01T00:01:00.000Z | un minuto | un minuto | tra un minuto |
+| 2000-01-01T00:00:25.000Z | meno di un minuto | alcuni secondi | tra meno di un minuto |
+| 2000-01-01T00:00:15.000Z | meno di un minuto | meno di 20 secondi | tra meno di un minuto |
+| 2000-01-01T00:00:05.000Z | meno di un minuto | meno di 10 secondi | tra meno di un minuto |
+| 2000-01-01T00:00:00.000Z | meno di un minuto | meno di 5 secondi | meno di un minuto fa |
+| 1999-12-31T23:59:55.000Z | meno di un minuto | meno di 10 secondi | meno di un minuto fa |
+| 1999-12-31T23:59:45.000Z | meno di un minuto | meno di 20 secondi | meno di un minuto fa |
+| 1999-12-31T23:59:35.000Z | meno di un minuto | alcuni secondi | meno di un minuto fa |
+| 1999-12-31T23:59:00.000Z | un minuto | un minuto | un minuto fa |
+| 1999-12-31T23:45:00.000Z | 15 minuti | 15 minuti | 15 minuti fa |
+| 1999-12-31T23:30:00.000Z | 30 minuti | 30 minuti | 30 minuti fa |
+| 1999-12-31T23:15:00.000Z | circa un'ora | circa un'ora | circa un'ora fa |
+| 1999-12-31T23:00:00.000Z | circa un'ora | circa un'ora | circa un'ora fa |
+| 1999-12-31T18:00:00.000Z | circa 6 ore | circa 6 ore | circa 6 ore fa |
+| 1999-12-30T00:00:00.000Z | 2 giorni | 2 giorni | 2 giorni fa |
+| 1999-12-15T00:00:00.000Z | 17 giorni | 17 giorni | 17 giorni fa |
+| 1999-12-01T00:00:00.000Z | circa un mese | circa un mese | circa un mese fa |
+| 1999-11-01T00:00:00.000Z | 2 mesi | 2 mesi | 2 mesi fa |
+| 1999-06-01T00:00:00.000Z | 7 mesi | 7 mesi | 7 mesi fa |
+| 1999-01-01T00:00:00.000Z | circa un anno | circa un anno | circa un anno fa |
+| 1998-12-01T00:00:00.000Z | circa un anno | circa un anno | circa un anno fa |
+| 1998-06-01T00:00:00.000Z | più di un anno | più di un anno | più di un anno fa |
+| 1998-01-01T00:00:00.000Z | circa 2 anni | circa 2 anni | circa 2 anni fa |
+| 1997-01-01T00:00:00.000Z | circa 3 anni | circa 3 anni | circa 3 anni fa |
+| 1996-01-01T00:00:00.000Z | circa 4 anni | circa 4 anni | circa 4 anni fa |
+| 1995-01-01T00:00:00.000Z | circa 5 anni | circa 5 anni | circa 5 anni fa |
+| 1994-01-01T00:00:00.000Z | circa 6 anni | circa 6 anni | circa 6 anni fa |
+
+## `formatDistanceStrict`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `addSuffix: true` | With forced unit (i.e. `hour`) |
+| ------------------------ | ---------- | ----------------- | ------------------------------ |
+| 2006-01-01T00:00:00.000Z | 6 anni | tra 6 anni | 52608 ore |
+| 2005-01-01T00:00:00.000Z | 5 anni | tra 5 anni | 43848 ore |
+| 2004-01-01T00:00:00.000Z | 4 anni | tra 4 anni | 35064 ore |
+| 2003-01-01T00:00:00.000Z | 3 anni | tra 3 anni | 26304 ore |
+| 2002-01-01T00:00:00.000Z | 2 anni | tra 2 anni | 17544 ore |
+| 2001-06-01T00:00:00.000Z | un anno | tra un anno | 12408 ore |
+| 2001-02-01T00:00:00.000Z | un anno | tra un anno | 9528 ore |
+| 2001-01-01T00:00:00.000Z | un anno | tra un anno | 8784 ore |
+| 2000-06-01T00:00:00.000Z | 5 mesi | tra 5 mesi | 3648 ore |
+| 2000-03-01T00:00:00.000Z | 2 mesi | tra 2 mesi | 1440 ore |
+| 2000-02-01T00:00:00.000Z | un mese | tra un mese | 744 ore |
+| 2000-01-15T00:00:00.000Z | 14 giorni | tra 14 giorni | 336 ore |
+| 2000-01-02T00:00:00.000Z | un giorno | tra un giorno | 24 ore |
+| 2000-01-01T06:00:00.000Z | 6 ore | tra 6 ore | 6 ore |
+| 2000-01-01T01:00:00.000Z | un'ora | tra un'ora | un'ora |
+| 2000-01-01T00:45:00.000Z | 45 minuti | tra 45 minuti | un'ora |
+| 2000-01-01T00:30:00.000Z | 30 minuti | tra 30 minuti | un'ora |
+| 2000-01-01T00:15:00.000Z | 15 minuti | tra 15 minuti | 0 ore |
+| 2000-01-01T00:01:00.000Z | un minuto | tra un minuto | 0 ore |
+| 2000-01-01T00:00:25.000Z | 25 secondi | tra 25 secondi | 0 ore |
+| 2000-01-01T00:00:15.000Z | 15 secondi | tra 15 secondi | 0 ore |
+| 2000-01-01T00:00:05.000Z | 5 secondi | tra 5 secondi | 0 ore |
+| 2000-01-01T00:00:00.000Z | 0 secondi | 0 secondi fa | 0 ore |
+| 1999-12-31T23:59:55.000Z | 5 secondi | 5 secondi fa | 0 ore |
+| 1999-12-31T23:59:45.000Z | 15 secondi | 15 secondi fa | 0 ore |
+| 1999-12-31T23:59:35.000Z | 25 secondi | 25 secondi fa | 0 ore |
+| 1999-12-31T23:59:00.000Z | un minuto | un minuto fa | 0 ore |
+| 1999-12-31T23:45:00.000Z | 15 minuti | 15 minuti fa | 0 ore |
+| 1999-12-31T23:30:00.000Z | 30 minuti | 30 minuti fa | un'ora |
+| 1999-12-31T23:15:00.000Z | 45 minuti | 45 minuti fa | un'ora |
+| 1999-12-31T23:00:00.000Z | un'ora | un'ora fa | un'ora |
+| 1999-12-31T18:00:00.000Z | 6 ore | 6 ore fa | 6 ore |
+| 1999-12-30T00:00:00.000Z | 2 giorni | 2 giorni fa | 48 ore |
+| 1999-12-15T00:00:00.000Z | 17 giorni | 17 giorni fa | 408 ore |
+| 1999-12-01T00:00:00.000Z | un mese | un mese fa | 744 ore |
+| 1999-11-01T00:00:00.000Z | 2 mesi | 2 mesi fa | 1464 ore |
+| 1999-06-01T00:00:00.000Z | 7 mesi | 7 mesi fa | 5136 ore |
+| 1999-01-01T00:00:00.000Z | un anno | un anno fa | 8760 ore |
+| 1998-12-01T00:00:00.000Z | un anno | un anno fa | 9504 ore |
+| 1998-06-01T00:00:00.000Z | 2 anni | 2 anni fa | 13896 ore |
+| 1998-01-01T00:00:00.000Z | 2 anni | 2 anni fa | 17520 ore |
+| 1997-01-01T00:00:00.000Z | 3 anni | 3 anni fa | 26280 ore |
+| 1996-01-01T00:00:00.000Z | 4 anni | 4 anni fa | 35064 ore |
+| 1995-01-01T00:00:00.000Z | 5 anni | 5 anni fa | 43824 ore |
+| 1994-01-01T00:00:00.000Z | 6 anni | 6 anni fa | 52584 ore |
+
+## `formatRelative`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result |
+| ------------------------ | ----------------------------- |
+| 2000-01-10T00:00:00.000Z | 10/01/2000 |
+| 2000-01-05T00:00:00.000Z | mercoledì prossimo alle 00:00 |
+| 2000-01-02T00:00:00.000Z | domani alle 00:00 |
+| 2000-01-01T00:00:00.000Z | oggi alle 00:00 |
+| 1999-12-31T00:00:00.000Z | ieri alle 00:00 |
+| 1999-12-27T00:00:00.000Z | lunedì alle 00:00 |
+| 1999-12-21T00:00:00.000Z | 21/12/1999 |
diff --git a/date-fns/src/locale/ja/_lib/formatDistance/index.js b/date-fns/src/locale/ja/_lib/formatDistance/index.js
new file mode 100644
index 0000000..e3f05e1
--- /dev/null
+++ b/date-fns/src/locale/ja/_lib/formatDistance/index.js
@@ -0,0 +1,116 @@
+var formatDistanceLocale = {
+ lessThanXSeconds: {
+ one: '1秒未満',
+ other: '{{count}}秒未満',
+ oneWithSuffix: '約1秒',
+ otherWithSuffix: '約{{count}}秒'
+ },
+
+ xSeconds: {
+ one: '1秒',
+ other: '{{count}}秒'
+ },
+
+ halfAMinute: '30秒',
+
+ lessThanXMinutes: {
+ one: '1分未満',
+ other: '{{count}}分未満',
+ oneWithSuffix: '約1分',
+ otherWithSuffix: '約{{count}}分'
+ },
+
+ xMinutes: {
+ one: '1分',
+ other: '{{count}}分'
+ },
+
+ aboutXHours: {
+ one: '約1時間',
+ other: '約{{count}}時間'
+ },
+
+ xHours: {
+ one: '1時間',
+ other: '{{count}}時間'
+ },
+
+ xDays: {
+ one: '1日',
+ other: '{{count}}日'
+ },
+
+ aboutXWeeks: {
+ one: '約1週間',
+ other: '約{{count}}週間'
+ },
+
+ xWeeks: {
+ one: '1週間',
+ other: '{{count}}週間'
+ },
+
+ aboutXMonths: {
+ one: '約1か月',
+ other: '約{{count}}か月'
+ },
+
+ xMonths: {
+ one: '1か月',
+ other: '{{count}}か月'
+ },
+
+ aboutXYears: {
+ one: '約1年',
+ other: '約{{count}}年'
+ },
+
+ xYears: {
+ one: '1年',
+ other: '{{count}}年'
+ },
+
+ overXYears: {
+ one: '1年以上',
+ other: '{{count}}年以上'
+ },
+
+ almostXYears: {
+ one: '1年近く',
+ other: '{{count}}年近く'
+ }
+}
+
+export default function formatDistance(token, count, options) {
+ options = options || {}
+
+ var result
+ if (typeof formatDistanceLocale[token] === 'string') {
+ result = formatDistanceLocale[token]
+ } else if (count === 1) {
+ if (options.addSuffix && formatDistanceLocale[token].oneWithSuffix) {
+ result = formatDistanceLocale[token].oneWithSuffix
+ } else {
+ result = formatDistanceLocale[token].one
+ }
+ } else {
+ if (options.addSuffix && formatDistanceLocale[token].otherWithSuffix) {
+ result = formatDistanceLocale[token].otherWithSuffix.replace(
+ '{{count}}',
+ count
+ )
+ } else {
+ result = formatDistanceLocale[token].other.replace('{{count}}', count)
+ }
+ }
+
+ if (options.addSuffix) {
+ if (options.comparison > 0) {
+ return result + '後'
+ } else {
+ return result + '前'
+ }
+ }
+
+ return result
+}
diff --git a/date-fns/src/locale/ja/_lib/formatLong/index.js b/date-fns/src/locale/ja/_lib/formatLong/index.js
new file mode 100644
index 0000000..c1331de
--- /dev/null
+++ b/date-fns/src/locale/ja/_lib/formatLong/index.js
@@ -0,0 +1,41 @@
+import buildFormatLongFn from '../../../_lib/buildFormatLongFn/index'
+
+var dateFormats = {
+ full: 'y年M月d日EEEE',
+ long: 'y年M月d日',
+ medium: 'y/MM/dd',
+ short: 'y/MM/dd'
+}
+
+var timeFormats = {
+ full: 'H時mm分ss秒 zzzz',
+ long: 'H:mm:ss z',
+ medium: 'H:mm:ss',
+ short: 'H:mm'
+}
+
+var dateTimeFormats = {
+ full: '{{date}} {{time}}',
+ long: '{{date}} {{time}}',
+ medium: '{{date}} {{time}}',
+ short: '{{date}} {{time}}'
+}
+
+var formatLong = {
+ date: buildFormatLongFn({
+ formats: dateFormats,
+ defaultWidth: 'full'
+ }),
+
+ time: buildFormatLongFn({
+ formats: timeFormats,
+ defaultWidth: 'full'
+ }),
+
+ dateTime: buildFormatLongFn({
+ formats: dateTimeFormats,
+ defaultWidth: 'full'
+ })
+}
+
+export default formatLong
diff --git a/date-fns/src/locale/ja/_lib/formatRelative/index.js b/date-fns/src/locale/ja/_lib/formatRelative/index.js
new file mode 100644
index 0000000..38c57b3
--- /dev/null
+++ b/date-fns/src/locale/ja/_lib/formatRelative/index.js
@@ -0,0 +1,12 @@
+var formatRelativeLocale = {
+ lastWeek: '先週のeeeeのp',
+ yesterday: '昨日のp',
+ today: '今日のp',
+ tomorrow: '明日のp',
+ nextWeek: '翌週のeeeeのp',
+ other: 'P'
+}
+
+export default function formatRelative(token, _date, _baseDate, _options) {
+ return formatRelativeLocale[token]
+}
diff --git a/date-fns/src/locale/ja/_lib/localize/index.js b/date-fns/src/locale/ja/_lib/localize/index.js
new file mode 100644
index 0000000..165e97c
--- /dev/null
+++ b/date-fns/src/locale/ja/_lib/localize/index.js
@@ -0,0 +1,180 @@
+import buildLocalizeFn from '../../../_lib/buildLocalizeFn/index'
+
+var eraValues = {
+ narrow: ['BC', 'AC'],
+ abbreviated: ['紀元前', '西暦'],
+ wide: ['紀元前', '西暦'],
+}
+
+var quarterValues = {
+ narrow: ['1', '2', '3', '4'],
+ abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],
+ wide: ['第1四半期', '第2四半期', '第3四半期', '第4四半期'],
+}
+
+var monthValues = {
+ narrow: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'],
+ abbreviated: [
+ '1月',
+ '2月',
+ '3月',
+ '4月',
+ '5月',
+ '6月',
+ '7月',
+ '8月',
+ '9月',
+ '10月',
+ '11月',
+ '12月',
+ ],
+ wide: [
+ '1月',
+ '2月',
+ '3月',
+ '4月',
+ '5月',
+ '6月',
+ '7月',
+ '8月',
+ '9月',
+ '10月',
+ '11月',
+ '12月',
+ ],
+}
+
+var dayValues = {
+ narrow: ['日', '月', '火', '水', '木', '金', '土'],
+ short: ['日', '月', '火', '水', '木', '金', '土'],
+ abbreviated: ['日', '月', '火', '水', '木', '金', '土'],
+ wide: ['日曜日', '月曜日', '火曜日', '水曜日', '木曜日', '金曜日', '土曜日'],
+}
+
+var dayPeriodValues = {
+ narrow: {
+ am: '午前',
+ pm: '午後',
+ midnight: '深夜',
+ noon: '正午',
+ morning: '朝',
+ afternoon: '午後',
+ evening: '夜',
+ night: '深夜',
+ },
+ abbreviated: {
+ am: '午前',
+ pm: '午後',
+ midnight: '深夜',
+ noon: '正午',
+ morning: '朝',
+ afternoon: '午後',
+ evening: '夜',
+ night: '深夜',
+ },
+ wide: {
+ am: '午前',
+ pm: '午後',
+ midnight: '深夜',
+ noon: '正午',
+ morning: '朝',
+ afternoon: '午後',
+ evening: '夜',
+ night: '深夜',
+ },
+}
+var formattingDayPeriodValues = {
+ narrow: {
+ am: '午前',
+ pm: '午後',
+ midnight: '深夜',
+ noon: '正午',
+ morning: '朝',
+ afternoon: '午後',
+ evening: '夜',
+ night: '深夜',
+ },
+ abbreviated: {
+ am: '午前',
+ pm: '午後',
+ midnight: '深夜',
+ noon: '正午',
+ morning: '朝',
+ afternoon: '午後',
+ evening: '夜',
+ night: '深夜',
+ },
+ wide: {
+ am: '午前',
+ pm: '午後',
+ midnight: '深夜',
+ noon: '正午',
+ morning: '朝',
+ afternoon: '午後',
+ evening: '夜',
+ night: '深夜',
+ },
+}
+
+function ordinalNumber(dirtyNumber, dirtyOptions) {
+ var number = Number(dirtyNumber)
+
+ // If ordinal numbers depend on context, for example,
+ // if they are different for different grammatical genders,
+ // use `options.unit`:
+ //
+ // var options = dirtyOptions || {}
+ // var unit = String(options.unit)
+ //
+ // where `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',
+ // 'day', 'hour', 'minute', 'second'
+
+ var options = dirtyOptions || {}
+ var unit = String(options.unit)
+
+ if (unit === 'date') {
+ return number + '日'
+ }
+
+ if (unit === 'year') {
+ return number + '年'
+ }
+
+ return number
+}
+
+var localize = {
+ ordinalNumber: ordinalNumber,
+
+ era: buildLocalizeFn({
+ values: eraValues,
+ defaultWidth: 'wide',
+ }),
+
+ quarter: buildLocalizeFn({
+ values: quarterValues,
+ defaultWidth: 'wide',
+ argumentCallback: function (quarter) {
+ return Number(quarter) - 1
+ },
+ }),
+
+ month: buildLocalizeFn({
+ values: monthValues,
+ defaultWidth: 'wide',
+ }),
+
+ day: buildLocalizeFn({
+ values: dayValues,
+ defaultWidth: 'wide',
+ }),
+
+ dayPeriod: buildLocalizeFn({
+ values: dayPeriodValues,
+ defaultWidth: 'wide',
+ formattingValues: formattingDayPeriodValues,
+ defaultFormattingWidth: 'wide',
+ }),
+}
+
+export default localize
diff --git a/date-fns/src/locale/ja/_lib/match/index.js b/date-fns/src/locale/ja/_lib/match/index.js
new file mode 100644
index 0000000..0f14680
--- /dev/null
+++ b/date-fns/src/locale/ja/_lib/match/index.js
@@ -0,0 +1,122 @@
+import buildMatchPatternFn from '../../../_lib/buildMatchPatternFn/index'
+import buildMatchFn from '../../../_lib/buildMatchFn/index'
+
+var matchOrdinalNumberPattern = /^第?\d+(日)?(年)?/i
+var parseOrdinalNumberPattern = /\d+/i
+
+var matchEraPatterns = {
+ narrow: /^(B\.?C\.?|A\.?D\.?)/i,
+ abbreviated: /^(紀元[前後]|西暦)/i,
+ wide: /^(紀元[前後]|西暦)/i,
+}
+var parseEraPatterns = {
+ narrow: [/^B/i, /^A/i],
+ any: [/^(紀元前)/i, /^(西暦|紀元後)/i],
+}
+
+var matchQuarterPatterns = {
+ narrow: /^[1234]/i,
+ abbreviated: /^Q[1234]/i,
+ wide: /^第[1234一二三四1234]四半期/i,
+}
+var parseQuarterPatterns = {
+ any: [/(1|一|1)/i, /(2|二|2)/i, /(3|三|3)/i, /(4|四|4)/i],
+}
+
+var matchMonthPatterns = {
+ narrow: /^([123456789]|1[012])/,
+ abbreviated: /^([123456789]|1[012])月/i,
+ wide: /^([123456789]|1[012])月/i,
+}
+var parseMonthPatterns = {
+ any: [
+ /^1\D/,
+ /^2/,
+ /^3/,
+ /^4/,
+ /^5/,
+ /^6/,
+ /^7/,
+ /^8/,
+ /^9/,
+ /^10/,
+ /^11/,
+ /^12/,
+ ],
+}
+
+var matchDayPatterns = {
+ narrow: /^[日月火水木金土]/,
+ short: /^[日月火水木金土]/,
+ abbreviated: /^[日月火水木金土]/,
+ wide: /^[日月火水木金土]曜日/,
+}
+var parseDayPatterns = {
+ any: [/^日/, /^月/, /^火/, /^水/, /^木/, /^金/, /^土/],
+}
+
+var matchDayPeriodPatterns = {
+ any: /^(AM|PM|午前|午後|正午|深夜|真夜中|夜|朝)/i,
+}
+var parseDayPeriodPatterns = {
+ any: {
+ am: /^(A|午前)/i,
+ pm: /^(P|午後)/i,
+ midnight: /^深夜|真夜中/i,
+ noon: /^正午/i,
+ morning: /^朝/i,
+ afternoon: /^午後/i,
+ evening: /^夜/i,
+ night: /^深夜/i,
+ },
+}
+
+var match = {
+ ordinalNumber: buildMatchPatternFn({
+ matchPattern: matchOrdinalNumberPattern,
+ parsePattern: parseOrdinalNumberPattern,
+ valueCallback: function (value) {
+ return parseInt(value, 10)
+ },
+ }),
+
+ era: buildMatchFn({
+ matchPatterns: matchEraPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseEraPatterns,
+ defaultParseWidth: 'any',
+ }),
+
+ quarter: buildMatchFn({
+ matchPatterns: matchQuarterPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseQuarterPatterns,
+ defaultParseWidth: 'any',
+ valueCallback: function (index) {
+ return index + 1
+ },
+ }),
+
+ month: buildMatchFn({
+ matchPatterns: matchMonthPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseMonthPatterns,
+ defaultParseWidth: 'any',
+ }),
+
+ day: buildMatchFn({
+ matchPatterns: matchDayPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseDayPatterns,
+ defaultParseWidth: 'any',
+ }),
+
+ dayPeriod: buildMatchFn({
+ matchPatterns: matchDayPeriodPatterns,
+ defaultMatchWidth: 'any',
+ parsePatterns: parseDayPeriodPatterns,
+ defaultParseWidth: 'any',
+ }),
+}
+
+export default match
diff --git a/date-fns/src/locale/ja/index.d.ts b/date-fns/src/locale/ja/index.d.ts
new file mode 100644
index 0000000..dec4f9c
--- /dev/null
+++ b/date-fns/src/locale/ja/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { ja } from 'date-fns/locale'
+export default ja
diff --git a/date-fns/src/locale/ja/index.js b/date-fns/src/locale/ja/index.js
new file mode 100644
index 0000000..251eda9
--- /dev/null
+++ b/date-fns/src/locale/ja/index.js
@@ -0,0 +1,32 @@
+import formatDistance from './_lib/formatDistance/index'
+import formatLong from './_lib/formatLong/index'
+import formatRelative from './_lib/formatRelative/index'
+import localize from './_lib/localize/index'
+import match from './_lib/match/index'
+
+/**
+ * @type {Locale}
+ * @category Locales
+ * @summary Japanese locale.
+ * @language Japanese
+ * @iso-639-2 jpn
+ * @author Thomas Eilmsteiner [@DeMuu]{@link https://github.com/DeMuu}
+ * @author Yamagishi Kazutoshi [@ykzts]{@link https://github.com/ykzts}
+ * @author Luca Ban [@mesqueeb]{@link https://github.com/mesqueeb}
+ * @author Terrence Lam [@skyuplam]{@link https://github.com/skyuplam}
+ * @author Taiki IKeda [@so99ynoodles]{@link https://github.com/so99ynoodles}
+ */
+var locale = {
+ code: 'ja',
+ formatDistance: formatDistance,
+ formatLong: formatLong,
+ formatRelative: formatRelative,
+ localize: localize,
+ match: match,
+ options: {
+ weekStartsOn: 0 /* Sunday */,
+ firstWeekContainsDate: 1
+ }
+}
+
+export default locale
diff --git a/date-fns/src/locale/ja/index.js.flow b/date-fns/src/locale/ja/index.js.flow
new file mode 100644
index 0000000..b9dfe66
--- /dev/null
+++ b/date-fns/src/locale/ja/index.js.flow
@@ -0,0 +1,35 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+declare module.exports: Locale
diff --git a/date-fns/src/locale/ja/snapshot.md b/date-fns/src/locale/ja/snapshot.md
new file mode 100644
index 0000000..ed600e5
--- /dev/null
+++ b/date-fns/src/locale/ja/snapshot.md
@@ -0,0 +1,304 @@
+# Japanese (ja) locale
+
+## `format` and `parse`
+
+| Title | Token string | Date | `format` result | `parse` result |
+| ------------------------------- | ------------ | ------------------------ | ---------------------------------------------------- | ------------------------ |
+| Calendar year | yo | 1987-02-11T12:13:14.015Z | 1987 年 | 1987-01-01T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 5 年 | 0005-01-01T00:00:00.000Z |
+| Local week-numbering year | Yo | 1987-02-11T12:13:14.015Z | 1987 年 | 1986-12-28T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 5 年 | 0004-12-26T00:00:00.000Z |
+| Quarter (formatting) | Qo | 2019-01-01T12:13:14.015Z | 1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2 | 2019-04-01T00:00:00.000Z |
+| | QQQ | 2019-01-01T12:13:14.015Z | Q1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | Q2 | 2019-04-01T00:00:00.000Z |
+| | QQQQ | 2019-01-01T12:13:14.015Z | 第 1 四半期 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 第 2 四半期 | 2019-04-01T00:00:00.000Z |
+| | QQQQQ | 2019-01-01T12:13:14.015Z | 1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2 | 2019-04-01T00:00:00.000Z |
+| Quarter (stand-alone) | qo | 2019-01-01T12:13:14.015Z | 1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2 | 2019-04-01T00:00:00.000Z |
+| | qqq | 2019-01-01T12:13:14.015Z | Q1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | Q2 | 2019-04-01T00:00:00.000Z |
+| | qqqq | 2019-01-01T12:13:14.015Z | 第 1 四半期 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 第 2 四半期 | 2019-04-01T00:00:00.000Z |
+| Month (formatting) | Mo | 2019-02-11T12:13:14.015Z | 2 | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7 | 2019-07-01T00:00:00.000Z |
+| | MMM | 2019-02-11T12:13:14.015Z | 2 月 | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7 月 | 2019-07-01T00:00:00.000Z |
+| | MMMM | 2019-02-11T12:13:14.015Z | 2 月 | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7 月 | 2019-07-01T00:00:00.000Z |
+| | MMMMM | 2019-02-11T12:13:14.015Z | 2 | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7 | 2019-07-01T00:00:00.000Z |
+| Month (stand-alone) | Lo | 2019-02-11T12:13:14.015Z | 2 | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7 | 2019-07-01T00:00:00.000Z |
+| | LLL | 2019-02-11T12:13:14.015Z | 2 月 | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7 月 | 2019-07-01T00:00:00.000Z |
+| | LLLL | 2019-02-11T12:13:14.015Z | 2 月 | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7 月 | 2019-07-01T00:00:00.000Z |
+| | LLLLL | 2019-02-11T12:13:14.015Z | 2 | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7 | 2019-07-01T00:00:00.000Z |
+| Local week of year | wo | 2019-01-01T12:13:14.015Z | 1 | 2018-12-30T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 49 | 2019-12-01T00:00:00.000Z |
+| ISO week of year | Io | 2019-01-01T12:13:14.015Z | 1 | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48 | 2019-11-25T00:00:00.000Z |
+| Day of month | do | 2019-02-11T12:13:14.015Z | 11 日 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-28T12:13:14.015Z | 28 日 | 2019-02-28T00:00:00.000Z |
+| Day of year | Do | 2019-02-11T12:13:14.015Z | 42 | 2019-02-11T00:00:00.000Z |
+| | | 2019-12-31T12:13:14.015Z | 365 | 2019-12-31T00:00:00.000Z |
+| Day of week (formatting) | E | 2019-02-11T12:13:14.015Z | 月 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 金 | 2019-02-15T00:00:00.000Z |
+| | EE | 2019-02-11T12:13:14.015Z | 月 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 金 | 2019-02-15T00:00:00.000Z |
+| | EEE | 2019-02-11T12:13:14.015Z | 月 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 金 | 2019-02-15T00:00:00.000Z |
+| | EEEE | 2019-02-11T12:13:14.015Z | 月曜日 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 金曜日 | 2019-02-15T00:00:00.000Z |
+| | EEEEE | 2019-02-11T12:13:14.015Z | 月 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 金 | 2019-02-15T00:00:00.000Z |
+| | EEEEEE | 2019-02-11T12:13:14.015Z | 月 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 金 | 2019-02-15T00:00:00.000Z |
+| ISO day of week (formatting) | io | 2019-02-11T12:13:14.015Z | 1 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5 | 2019-02-15T00:00:00.000Z |
+| | iii | 2019-02-11T12:13:14.015Z | 月 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 金 | 2019-02-15T00:00:00.000Z |
+| | iiii | 2019-02-11T12:13:14.015Z | 月曜日 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 金曜日 | 2019-02-15T00:00:00.000Z |
+| | iiiii | 2019-02-11T12:13:14.015Z | 月 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 金 | 2019-02-15T00:00:00.000Z |
+| | iiiiii | 2019-02-11T12:13:14.015Z | 月 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 金 | 2019-02-15T00:00:00.000Z |
+| Local day of week (formatting) | eo | 2019-02-11T12:13:14.015Z | 2 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 6 | 2019-02-15T00:00:00.000Z |
+| | eee | 2019-02-11T12:13:14.015Z | 月 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 金 | 2019-02-15T00:00:00.000Z |
+| | eeee | 2019-02-11T12:13:14.015Z | 月曜日 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 金曜日 | 2019-02-15T00:00:00.000Z |
+| | eeeee | 2019-02-11T12:13:14.015Z | 月 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 金 | 2019-02-15T00:00:00.000Z |
+| | eeeeee | 2019-02-11T12:13:14.015Z | 月 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 金 | 2019-02-15T00:00:00.000Z |
+| Local day of week (stand-alone) | co | 2019-02-11T12:13:14.015Z | 2 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 6 | 2019-02-15T00:00:00.000Z |
+| | ccc | 2019-02-11T12:13:14.015Z | 月 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 金 | 2019-02-15T00:00:00.000Z |
+| | cccc | 2019-02-11T12:13:14.015Z | 月曜日 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 金曜日 | 2019-02-15T00:00:00.000Z |
+| | ccccc | 2019-02-11T12:13:14.015Z | 月 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 金 | 2019-02-15T00:00:00.000Z |
+| | cccccc | 2019-02-11T12:13:14.015Z | 月 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 金 | 2019-02-15T00:00:00.000Z |
+| AM, PM | a | 2019-02-11T11:13:14.015Z | 午前 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | 午後 | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | 午後 | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | 午前 | 2019-02-11T00:00:00.000Z |
+| | aa | 2019-02-11T11:13:14.015Z | 午前 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | 午後 | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | 午後 | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | 午前 | 2019-02-11T00:00:00.000Z |
+| | aaa | 2019-02-11T11:13:14.015Z | 午前 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | 午後 | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | 午後 | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | 午前 | 2019-02-11T00:00:00.000Z |
+| | aaaa | 2019-02-11T11:13:14.015Z | 午前 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | 午後 | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | 午後 | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | 午前 | 2019-02-11T00:00:00.000Z |
+| | aaaaa | 2019-02-11T11:13:14.015Z | 午前 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | 午後 | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | 午後 | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | 午前 | 2019-02-11T00:00:00.000Z |
+| AM, PM, noon, midnight | b | 2019-02-11T11:13:14.015Z | 午前 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | 午後 | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | 午後 | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | 午前 | 2019-02-11T00:00:00.000Z |
+| | bb | 2019-02-11T11:13:14.015Z | 午前 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | 午後 | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | 午後 | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | 午前 | 2019-02-11T00:00:00.000Z |
+| | bbb | 2019-02-11T11:13:14.015Z | 午前 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | 午後 | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | 午後 | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | 午前 | 2019-02-11T00:00:00.000Z |
+| | bbbb | 2019-02-11T11:13:14.015Z | 午前 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | 午後 | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | 午後 | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | 午前 | 2019-02-11T00:00:00.000Z |
+| | bbbbb | 2019-02-11T11:13:14.015Z | 午前 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | 午後 | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | 午後 | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | 午前 | 2019-02-11T00:00:00.000Z |
+| Flexible day period | B | 2019-02-11T11:13:14.015Z | 朝 | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | 午後 | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | 夜 | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | 深夜 | 2019-02-11T00:00:00.000Z |
+| | BB | 2019-02-11T11:13:14.015Z | 朝 | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | 午後 | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | 夜 | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | 深夜 | 2019-02-11T00:00:00.000Z |
+| | BBB | 2019-02-11T11:13:14.015Z | 朝 | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | 午後 | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | 夜 | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | 深夜 | 2019-02-11T00:00:00.000Z |
+| | BBBB | 2019-02-11T11:13:14.015Z | 朝 | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | 午後 | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | 夜 | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | 深夜 | 2019-02-11T00:00:00.000Z |
+| | BBBBB | 2019-02-11T11:13:14.015Z | 朝 | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | 午後 | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | 夜 | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | 深夜 | 2019-02-11T00:00:00.000Z |
+| Hour [1-12] | ho | 2019-02-11T11:13:14.015Z | 11 | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11 | 2019-02-11T23:00:00.000Z |
+| Hour [0-23] | Ho | 2019-02-11T11:13:14.015Z | 11 | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23 | 2019-02-11T23:00:00.000Z |
+| Hour [0-11] | Ko | 2019-02-11T11:13:14.015Z | 11 | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11 | 2019-02-11T23:00:00.000Z |
+| Hour [1-24] | ko | 2019-02-11T11:13:14.015Z | 11 | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23 | 2019-02-11T23:00:00.000Z |
+| Minute | mo | 2019-01-01T12:01:14.015Z | 1 | 2019-01-01T12:01:00.000Z |
+| | | 2019-04-01T12:55:14.015Z | 55 | 2019-04-01T12:55:00.000Z |
+| Second | so | 2019-01-01T12:13:01.015Z | 1 | 2019-01-01T12:13:01.000Z |
+| | | 2019-04-01T12:13:55.015Z | 55 | 2019-04-01T12:13:55.000Z |
+| Long localized date | P | 1987-02-11T12:13:14.015Z | 1987/02/11 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 1453/05/29 | 1453-05-29T00:00:00.000Z |
+| | PP | 1987-02-11T12:13:14.015Z | 1987/02/11 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 1453/05/29 | 1453-05-29T00:00:00.000Z |
+| | PPP | 1987-02-11T12:13:14.015Z | 1987 年 2 月 11 日 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 1453 年 5 月 29 日 | 1453-05-29T00:00:00.000Z |
+| | PPPP | 1987-02-11T12:13:14.015Z | 1987 年 2 月 11 日水曜日 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 1453 年 5 月 29 日日曜日 | 1453-05-29T00:00:00.000Z |
+| Long localized time | p | 1987-02-11T12:13:14.015Z | 12:13 | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 23:59 | 1453-05-29T23:59:00.000Z |
+| | pp | 1987-02-11T12:13:14.015Z | 12:13:14 | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 | 1453-05-29T23:59:59.000Z |
+| | ppp | 1987-02-11T12:13:14.015Z | 12:13:14 GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 GMT+0 | Errored |
+| | pppp | 1987-02-11T12:13:14.015Z | 12 時 13 分 14 秒 GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 23 時 59 分 59 秒 GMT+00:00 | Errored |
+| Combination of date and time | Pp | 1987-02-11T12:13:14.015Z | 1987/02/11 12:13 | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 1453/05/29 23:59 | 1453-05-29T23:59:00.000Z |
+| | PPpp | 1987-02-11T12:13:14.015Z | 1987/02/11 12:13:14 | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 1453/05/29 23:59:59 | 1453-05-29T23:59:59.000Z |
+| | PPPppp | 1987-02-11T12:13:14.015Z | 1987 年 2 月 11 日 12:13:14 GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 1453 年 5 月 29 日 23:59:59 GMT+0 | Errored |
+| | PPPPpppp | 1987-02-11T12:13:14.015Z | 1987 年 2 月 11 日水曜日 12 時 13 分 14 秒 GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 1453 年 5 月 29 日日曜日 23 時 59 分 59 秒 GMT+00:00 | Errored |
+
+## `formatDistance`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `includeSeconds: true` | `addSuffix: true` |
+| ------------------------ | --------- | ---------------------- | ----------------- |
+| 2006-01-01T00:00:00.000Z | 約 6 年 | 約 6 年 | 約 6 年後 |
+| 2005-01-01T00:00:00.000Z | 約 5 年 | 約 5 年 | 約 5 年後 |
+| 2004-01-01T00:00:00.000Z | 約 4 年 | 約 4 年 | 約 4 年後 |
+| 2003-01-01T00:00:00.000Z | 約 3 年 | 約 3 年 | 約 3 年後 |
+| 2002-01-01T00:00:00.000Z | 約 2 年 | 約 2 年 | 約 2 年後 |
+| 2001-06-01T00:00:00.000Z | 1 年以上 | 1 年以上 | 1 年以上後 |
+| 2001-02-01T00:00:00.000Z | 約 1 年 | 約 1 年 | 約 1 年後 |
+| 2001-01-01T00:00:00.000Z | 約 1 年 | 約 1 年 | 約 1 年後 |
+| 2000-06-01T00:00:00.000Z | 5 か月 | 5 か月 | 5 か月後 |
+| 2000-03-01T00:00:00.000Z | 2 か月 | 2 か月 | 2 か月後 |
+| 2000-02-01T00:00:00.000Z | 約 1 か月 | 約 1 か月 | 約 1 か月後 |
+| 2000-01-15T00:00:00.000Z | 14 日 | 14 日 | 14 日後 |
+| 2000-01-02T00:00:00.000Z | 1 日 | 1 日 | 1 日後 |
+| 2000-01-01T06:00:00.000Z | 約 6 時間 | 約 6 時間 | 約 6 時間後 |
+| 2000-01-01T01:00:00.000Z | 約 1 時間 | 約 1 時間 | 約 1 時間後 |
+| 2000-01-01T00:45:00.000Z | 約 1 時間 | 約 1 時間 | 約 1 時間後 |
+| 2000-01-01T00:30:00.000Z | 30 分 | 30 分 | 30 分後 |
+| 2000-01-01T00:15:00.000Z | 15 分 | 15 分 | 15 分後 |
+| 2000-01-01T00:01:00.000Z | 1 分 | 1 分 | 1 分後 |
+| 2000-01-01T00:00:25.000Z | 1 分未満 | 30 秒 | 約 1 分後 |
+| 2000-01-01T00:00:15.000Z | 1 分未満 | 20 秒未満 | 約 1 分後 |
+| 2000-01-01T00:00:05.000Z | 1 分未満 | 10 秒未満 | 約 1 分後 |
+| 2000-01-01T00:00:00.000Z | 1 分未満 | 5 秒未満 | 約 1 分前 |
+| 1999-12-31T23:59:55.000Z | 1 分未満 | 10 秒未満 | 約 1 分前 |
+| 1999-12-31T23:59:45.000Z | 1 分未満 | 20 秒未満 | 約 1 分前 |
+| 1999-12-31T23:59:35.000Z | 1 分未満 | 30 秒 | 約 1 分前 |
+| 1999-12-31T23:59:00.000Z | 1 分 | 1 分 | 1 分前 |
+| 1999-12-31T23:45:00.000Z | 15 分 | 15 分 | 15 分前 |
+| 1999-12-31T23:30:00.000Z | 30 分 | 30 分 | 30 分前 |
+| 1999-12-31T23:15:00.000Z | 約 1 時間 | 約 1 時間 | 約 1 時間前 |
+| 1999-12-31T23:00:00.000Z | 約 1 時間 | 約 1 時間 | 約 1 時間前 |
+| 1999-12-31T18:00:00.000Z | 約 6 時間 | 約 6 時間 | 約 6 時間前 |
+| 1999-12-30T00:00:00.000Z | 2 日 | 2 日 | 2 日前 |
+| 1999-12-15T00:00:00.000Z | 17 日 | 17 日 | 17 日前 |
+| 1999-12-01T00:00:00.000Z | 約 1 か月 | 約 1 か月 | 約 1 か月前 |
+| 1999-11-01T00:00:00.000Z | 2 か月 | 2 か月 | 2 か月前 |
+| 1999-06-01T00:00:00.000Z | 7 か月 | 7 か月 | 7 か月前 |
+| 1999-01-01T00:00:00.000Z | 約 1 年 | 約 1 年 | 約 1 年前 |
+| 1998-12-01T00:00:00.000Z | 約 1 年 | 約 1 年 | 約 1 年前 |
+| 1998-06-01T00:00:00.000Z | 1 年以上 | 1 年以上 | 1 年以上前 |
+| 1998-01-01T00:00:00.000Z | 約 2 年 | 約 2 年 | 約 2 年前 |
+| 1997-01-01T00:00:00.000Z | 約 3 年 | 約 3 年 | 約 3 年前 |
+| 1996-01-01T00:00:00.000Z | 約 4 年 | 約 4 年 | 約 4 年前 |
+| 1995-01-01T00:00:00.000Z | 約 5 年 | 約 5 年 | 約 5 年前 |
+| 1994-01-01T00:00:00.000Z | 約 6 年 | 約 6 年 | 約 6 年前 |
+
+## `formatDistanceStrict`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `addSuffix: true` | With forced unit (i.e. `hour`) |
+| ------------------------ | ------ | ----------------- | ------------------------------ |
+| 2006-01-01T00:00:00.000Z | 6 年 | 6 年後 | 52608 時間 |
+| 2005-01-01T00:00:00.000Z | 5 年 | 5 年後 | 43848 時間 |
+| 2004-01-01T00:00:00.000Z | 4 年 | 4 年後 | 35064 時間 |
+| 2003-01-01T00:00:00.000Z | 3 年 | 3 年後 | 26304 時間 |
+| 2002-01-01T00:00:00.000Z | 2 年 | 2 年後 | 17544 時間 |
+| 2001-06-01T00:00:00.000Z | 1 年 | 1 年後 | 12408 時間 |
+| 2001-02-01T00:00:00.000Z | 1 年 | 1 年後 | 9528 時間 |
+| 2001-01-01T00:00:00.000Z | 1 年 | 1 年後 | 8784 時間 |
+| 2000-06-01T00:00:00.000Z | 5 か月 | 5 か月後 | 3648 時間 |
+| 2000-03-01T00:00:00.000Z | 2 か月 | 2 か月後 | 1440 時間 |
+| 2000-02-01T00:00:00.000Z | 1 か月 | 1 か月後 | 744 時間 |
+| 2000-01-15T00:00:00.000Z | 14 日 | 14 日後 | 336 時間 |
+| 2000-01-02T00:00:00.000Z | 1 日 | 1 日後 | 24 時間 |
+| 2000-01-01T06:00:00.000Z | 6 時間 | 6 時間後 | 6 時間 |
+| 2000-01-01T01:00:00.000Z | 1 時間 | 1 時間後 | 1 時間 |
+| 2000-01-01T00:45:00.000Z | 45 分 | 45 分後 | 1 時間 |
+| 2000-01-01T00:30:00.000Z | 30 分 | 30 分後 | 1 時間 |
+| 2000-01-01T00:15:00.000Z | 15 分 | 15 分後 | 0 時間 |
+| 2000-01-01T00:01:00.000Z | 1 分 | 1 分後 | 0 時間 |
+| 2000-01-01T00:00:25.000Z | 25 秒 | 25 秒後 | 0 時間 |
+| 2000-01-01T00:00:15.000Z | 15 秒 | 15 秒後 | 0 時間 |
+| 2000-01-01T00:00:05.000Z | 5 秒 | 5 秒後 | 0 時間 |
+| 2000-01-01T00:00:00.000Z | 0 秒 | 0 秒前 | 0 時間 |
+| 1999-12-31T23:59:55.000Z | 5 秒 | 5 秒前 | 0 時間 |
+| 1999-12-31T23:59:45.000Z | 15 秒 | 15 秒前 | 0 時間 |
+| 1999-12-31T23:59:35.000Z | 25 秒 | 25 秒前 | 0 時間 |
+| 1999-12-31T23:59:00.000Z | 1 分 | 1 分前 | 0 時間 |
+| 1999-12-31T23:45:00.000Z | 15 分 | 15 分前 | 0 時間 |
+| 1999-12-31T23:30:00.000Z | 30 分 | 30 分前 | 1 時間 |
+| 1999-12-31T23:15:00.000Z | 45 分 | 45 分前 | 1 時間 |
+| 1999-12-31T23:00:00.000Z | 1 時間 | 1 時間前 | 1 時間 |
+| 1999-12-31T18:00:00.000Z | 6 時間 | 6 時間前 | 6 時間 |
+| 1999-12-30T00:00:00.000Z | 2 日 | 2 日前 | 48 時間 |
+| 1999-12-15T00:00:00.000Z | 17 日 | 17 日前 | 408 時間 |
+| 1999-12-01T00:00:00.000Z | 1 か月 | 1 か月前 | 744 時間 |
+| 1999-11-01T00:00:00.000Z | 2 か月 | 2 か月前 | 1464 時間 |
+| 1999-06-01T00:00:00.000Z | 7 か月 | 7 か月前 | 5136 時間 |
+| 1999-01-01T00:00:00.000Z | 1 年 | 1 年前 | 8760 時間 |
+| 1998-12-01T00:00:00.000Z | 1 年 | 1 年前 | 9504 時間 |
+| 1998-06-01T00:00:00.000Z | 2 年 | 2 年前 | 13896 時間 |
+| 1998-01-01T00:00:00.000Z | 2 年 | 2 年前 | 17520 時間 |
+| 1997-01-01T00:00:00.000Z | 3 年 | 3 年前 | 26280 時間 |
+| 1996-01-01T00:00:00.000Z | 4 年 | 4 年前 | 35064 時間 |
+| 1995-01-01T00:00:00.000Z | 5 年 | 5 年前 | 43824 時間 |
+| 1994-01-01T00:00:00.000Z | 6 年 | 6 年前 | 52584 時間 |
+
+## `formatRelative`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result |
+| ------------------------ | ------------------- |
+| 2000-01-10T00:00:00.000Z | 2000/01/10 |
+| 2000-01-05T00:00:00.000Z | 翌週の水曜日の 0:00 |
+| 2000-01-02T00:00:00.000Z | 明日の 0:00 |
+| 2000-01-01T00:00:00.000Z | 今日の 0:00 |
+| 1999-12-31T00:00:00.000Z | 昨日の 0:00 |
+| 1999-12-27T00:00:00.000Z | 先週の月曜日の 0:00 |
+| 1999-12-21T00:00:00.000Z | 1999/12/21 |
diff --git a/date-fns/src/locale/ka/_lib/formatDistance/index.js b/date-fns/src/locale/ka/_lib/formatDistance/index.js
new file mode 100644
index 0000000..717f353
--- /dev/null
+++ b/date-fns/src/locale/ka/_lib/formatDistance/index.js
@@ -0,0 +1,114 @@
+var formatDistanceLocale = {
+ lessThanXSeconds: {
+ past: '{{count}} წამზე ნაკლები ხნის წინ',
+ present: '{{count}} წამზე ნაკლები',
+ future: '{{count}} წამზე ნაკლებში'
+ },
+
+ xSeconds: {
+ past: '{{count}} წამის წინ',
+ present: '{{count}} წამი',
+ future: '{{count}} წამში'
+ },
+
+ halfAMinute: {
+ past: 'ნახევარი წუთის წინ',
+ present: 'ნახევარი წუთი',
+ future: 'ნახევარი წუთში'
+ },
+
+ lessThanXMinutes: {
+ past: '{{count}} წუთზე ნაკლები ხნის წინ',
+ present: '{{count}} წუთზე ნაკლები',
+ future: '{{count}} წუთზე ნაკლებში'
+ },
+
+ xMinutes: {
+ past: '{{count}} წუთის წინ',
+ present: '{{count}} წუთი',
+ future: '{{count}} წუთში'
+ },
+
+ aboutXHours: {
+ past: 'დაახლოებით {{count}} საათის წინ',
+ present: 'დაახლოებით {{count}} საათი',
+ future: 'დაახლოებით {{count}} საათში'
+ },
+
+ xHours: {
+ past: '{{count}} საათის წინ',
+ present: '{{count}} საათი',
+ future: '{{count}} საათში'
+ },
+
+ xDays: {
+ past: '{{count}} დღის წინ',
+ present: '{{count}} დღე',
+ future: '{{count}} დღეში'
+ },
+
+ aboutXWeeks: {
+ past: 'დაახლოებით {{count}} კვირას წინ',
+ present: 'დაახლოებით {{count}} კვირა',
+ future: 'დაახლოებით {{count}} კვირაში'
+ },
+
+ xWeeks: {
+ past: '{{count}} კვირას კვირა',
+ present: '{{count}} კვირა',
+ future: '{{count}} კვირაში'
+ },
+
+ aboutXMonths: {
+ past: 'დაახლოებით {{count}} თვის წინ',
+ present: 'დაახლოებით {{count}} თვე',
+ future: 'დაახლოებით {{count}} თვეში'
+ },
+
+ xMonths: {
+ past: '{{count}} თვის წინ',
+ present: '{{count}} თვე',
+ future: '{{count}} თვეში'
+ },
+
+ aboutXYears: {
+ past: 'დაახლოებით {{count}} წლის წინ',
+ present: 'დაახლოებით {{count}} წელი',
+ future: 'დაახლოებით {{count}} წელში'
+ },
+
+ xYears: {
+ past: '{{count}} წლის წინ',
+ present: '{{count}} წელი',
+ future: '{{count}} წელში'
+ },
+
+ overXYears: {
+ past: '{{count}} წელზე მეტი ხნის წინ',
+ present: '{{count}} წელზე მეტი',
+ future: '{{count}} წელზე მეტი ხნის შემდეგ'
+ },
+
+ almostXYears: {
+ past: 'თითქმის {{count}} წლის წინ',
+ present: 'თითქმის {{count}} წელი',
+ future: 'თითქმის {{count}} წელში'
+ }
+}
+
+export default function formatDistance(token, count, options) {
+ options = options || {}
+
+ var result
+ if (typeof formatDistanceLocale[token] === 'string') {
+ result = formatDistanceLocale[token]
+ } else if (options.addSuffix && options.comparison > 0) {
+ result = formatDistanceLocale[token].future.replace('{{count}}', count)
+ } else if (options.addSuffix && options.comparison <= 0) {
+ result = formatDistanceLocale[token].past.replace('{{count}}', count)
+ } else {
+ result = formatDistanceLocale[token].present.replace('{{count}}', count)
+ }
+
+ return result
+}
diff --git a/date-fns/src/locale/ka/_lib/formatLong/index.js b/date-fns/src/locale/ka/_lib/formatLong/index.js
new file mode 100644
index 0000000..a310361
--- /dev/null
+++ b/date-fns/src/locale/ka/_lib/formatLong/index.js
@@ -0,0 +1,41 @@
+import buildFormatLongFn from '../../../_lib/buildFormatLongFn/index'
+
+var dateFormats = {
+ full: 'EEEE, do MMMM, y',
+ long: 'do, MMMM, y',
+ medium: 'd, MMM, y',
+ short: 'dd/MM/yyyy'
+}
+
+var timeFormats = {
+ full: 'h:mm:ss a zzzz',
+ long: 'h:mm:ss a z',
+ medium: 'h:mm:ss a',
+ short: 'h:mm a'
+}
+
+var dateTimeFormats = {
+ full: "{{date}} {{time}}'-ზე'",
+ long: "{{date}} {{time}}'-ზე'",
+ medium: '{{date}}, {{time}}',
+ short: '{{date}}, {{time}}'
+}
+
+var formatLong = {
+ date: buildFormatLongFn({
+ formats: dateFormats,
+ defaultWidth: 'full'
+ }),
+
+ time: buildFormatLongFn({
+ formats: timeFormats,
+ defaultWidth: 'full'
+ }),
+
+ dateTime: buildFormatLongFn({
+ formats: dateTimeFormats,
+ defaultWidth: 'full'
+ })
+}
+
+export default formatLong
diff --git a/date-fns/src/locale/ka/_lib/formatRelative/index.js b/date-fns/src/locale/ka/_lib/formatRelative/index.js
new file mode 100644
index 0000000..e4f0ef0
--- /dev/null
+++ b/date-fns/src/locale/ka/_lib/formatRelative/index.js
@@ -0,0 +1,12 @@
+var formatRelativeLocale = {
+ lastWeek: "'წინა' eeee LT'-ზე'",
+ yesterday: "'გუშინ' LT'-ზე'",
+ today: "'დღეს' LT'-ზე'",
+ tomorrow: "'ხვალ' LT'-ზე'",
+ nextWeek: "'შემდეგი' eeee LT'-ზე'",
+ other: 'L'
+}
+
+export default function formatRelative(token, _date, _baseDate, _options) {
+ return formatRelativeLocale[token]
+}
diff --git a/date-fns/src/locale/ka/_lib/localize/index.js b/date-fns/src/locale/ka/_lib/localize/index.js
new file mode 100644
index 0000000..f658893
--- /dev/null
+++ b/date-fns/src/locale/ka/_lib/localize/index.js
@@ -0,0 +1,198 @@
+import buildLocalizeFn from '../../../_lib/buildLocalizeFn/index'
+
+var eraValues = {
+ narrow: ['ჩ.წ-მდე', 'ჩ.წ'],
+ abbreviated: ['ჩვ.წ-მდე', 'ჩვ.წ'],
+ wide: ['ჩვენს წელთაღრიცხვამდე', 'ჩვენი წელთაღრიცხვით']
+}
+
+var quarterValues = {
+ narrow: ['1', '2', '3', '4'],
+ abbreviated: ['1-ლი კვ', '2-ე კვ', '3-ე კვ', '4-ე კვ'],
+ wide: ['1-ლი კვარტალი', '2-ე კვარტალი', '3-ე კვარტალი', '4-ე კვარტალი']
+}
+
+// Note: in English, the names of days of the week and months are capitalized.
+// If you are making a new locale based on this one, check if the same is true for the language you're working on.
+// Generally, formatted dates should look like they are in the middle of a sentence,
+// e.g. in Spanish language the weekdays and months should be in the lowercase.
+var monthValues = {
+ narrow: [
+ 'ია',
+ 'თე',
+ 'მა',
+ 'აპ',
+ 'მს',
+ 'ვნ',
+ 'ვლ',
+ 'აგ',
+ 'სე',
+ 'ოქ',
+ 'ნო',
+ 'დე'
+ ],
+ abbreviated: [
+ 'იან',
+ 'თებ',
+ 'მარ',
+ 'აპრ',
+ 'მაი',
+ 'ივნ',
+ 'ივლ',
+ 'აგვ',
+ 'სექ',
+ 'ოქტ',
+ 'ნოე',
+ 'დეკ'
+ ],
+ wide: [
+ 'იანვარი',
+ 'თებერვალი',
+ 'მარტი',
+ 'აპრილი',
+ 'მაისი',
+ 'ივნისი',
+ 'ივლისი',
+ 'აგვისტო',
+ 'სექტემბერი',
+ 'ოქტომბერი',
+ 'ნოემბერი',
+ 'დეკემბერი'
+ ]
+}
+
+var dayValues = {
+ narrow: ['კვ', 'ორ', 'სა', 'ოთ', 'ხუ', 'პა', 'შა'],
+ short: ['კვი', 'ორშ', 'სამ', 'ოთხ', 'ხუთ', 'პარ', 'შაბ'],
+ abbreviated: ['კვი', 'ორშ', 'სამ', 'ოთხ', 'ხუთ', 'პარ', 'შაბ'],
+ wide: [
+ 'კვირა',
+ 'ორშაბათი',
+ 'სამშაბათი',
+ 'ოთხშაბათი',
+ 'ხუთშაბათი',
+ 'პარასკევი',
+ 'შაბათი'
+ ]
+}
+
+var dayPeriodValues = {
+ narrow: {
+ am: 'a',
+ pm: 'p',
+ midnight: 'შუაღამე',
+ noon: 'შუადღე',
+ morning: 'დილა',
+ afternoon: 'საღამო',
+ evening: 'საღამო',
+ night: 'ღამე'
+ },
+ abbreviated: {
+ am: 'AM',
+ pm: 'PM',
+ midnight: 'შუაღამე',
+ noon: 'შუადღე',
+ morning: 'დილა',
+ afternoon: 'საღამო',
+ evening: 'საღამო',
+ night: 'ღამე'
+ },
+ wide: {
+ am: 'a.m.',
+ pm: 'p.m.',
+ midnight: 'შუაღამე',
+ noon: 'შუადღე',
+ morning: 'დილა',
+ afternoon: 'საღამო',
+ evening: 'საღამო',
+ night: 'ღამე'
+ }
+}
+var formattingDayPeriodValues = {
+ narrow: {
+ am: 'a',
+ pm: 'p',
+ midnight: 'შუაღამით',
+ noon: 'შუადღისას',
+ morning: 'დილით',
+ afternoon: 'ნაშუადღევს',
+ evening: 'საღამოს',
+ night: 'ღამით'
+ },
+ abbreviated: {
+ am: 'AM',
+ pm: 'PM',
+ midnight: 'შუაღამით',
+ noon: 'შუადღისას',
+ morning: 'დილით',
+ afternoon: 'ნაშუადღევს',
+ evening: 'საღამოს',
+ night: 'ღამით'
+ },
+ wide: {
+ am: 'a.m.',
+ pm: 'p.m.',
+ midnight: 'შუაღამით',
+ noon: 'შუადღისას',
+ morning: 'დილით',
+ afternoon: 'ნაშუადღევს',
+ evening: 'საღამოს',
+ night: 'ღამით'
+ }
+}
+
+function ordinalNumber(dirtyNumber, _dirtyOptions) {
+ var number = Number(dirtyNumber)
+
+ // If ordinal numbers depend on context, for example,
+ // if they are different for different grammatical genders,
+ // use `options.unit`:
+ //
+ // var options = dirtyOptions || {}
+ // var unit = String(options.unit)
+ //
+ // where `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',
+ // 'day', 'hour', 'minute', 'second'
+
+ if (number === 1) {
+ return number + '-ლი'
+ }
+
+ return number + '-ე'
+}
+
+var localize = {
+ ordinalNumber: ordinalNumber,
+
+ era: buildLocalizeFn({
+ values: eraValues,
+ defaultWidth: 'wide'
+ }),
+
+ quarter: buildLocalizeFn({
+ values: quarterValues,
+ defaultWidth: 'wide',
+ argumentCallback: function(quarter) {
+ return Number(quarter) - 1
+ }
+ }),
+
+ month: buildLocalizeFn({
+ values: monthValues,
+ defaultWidth: 'wide'
+ }),
+
+ day: buildLocalizeFn({
+ values: dayValues,
+ defaultWidth: 'wide'
+ }),
+
+ dayPeriod: buildLocalizeFn({
+ values: dayPeriodValues,
+ defaultWidth: 'wide',
+ formattingValues: formattingDayPeriodValues,
+ defaultFormattingWidth: 'wide'
+ })
+}
+
+export default localize
diff --git a/date-fns/src/locale/ka/_lib/match/index.js b/date-fns/src/locale/ka/_lib/match/index.js
new file mode 100644
index 0000000..f7493d4
--- /dev/null
+++ b/date-fns/src/locale/ka/_lib/match/index.js
@@ -0,0 +1,121 @@
+import buildMatchPatternFn from '../../../_lib/buildMatchPatternFn/index'
+import buildMatchFn from '../../../_lib/buildMatchFn/index'
+
+var matchOrdinalNumberPattern = /^(\d+)(-ლი|-ე)?/i
+var parseOrdinalNumberPattern = /\d+/i
+
+var matchEraPatterns = {
+ narrow: /^(ჩვ?\.წ)/i,
+ abbreviated: /^(ჩვ?\.წ)/i,
+ wide: /^(ჩვენს წელთაღრიცხვამდე|ქრისტეშობამდე|ჩვენი წელთაღრიცხვით|ქრისტეშობიდან)/i
+}
+var parseEraPatterns = {
+ any: [
+ /^(ჩვენს წელთაღრიცხვამდე|ქრისტეშობამდე)/i,
+ /^(ჩვენი წელთაღრიცხვით|ქრისტეშობიდან)/i
+ ]
+}
+
+var matchQuarterPatterns = {
+ narrow: /^[1234]/i,
+ abbreviated: /^[1234]-(ლი|ე)? კვ/i,
+ wide: /^[1234]-(ლი|ე)? კვარტალი/i
+}
+var parseQuarterPatterns = {
+ any: [/1/i, /2/i, /3/i, /4/i]
+}
+
+var matchMonthPatterns = {
+ any: /^(ია|თე|მა|აპ|მს|ვნ|ვლ|აგ|სე|ოქ|ნო|დე)/i
+}
+var parseMonthPatterns = {
+ any: [
+ /^ია/i,
+ /^თ/i,
+ /^მარ/i,
+ /^აპ/i,
+ /^მაი/i,
+ /^ი?ვნ/i,
+ /^ი?ვლ/i,
+ /^აგ/i,
+ /^ს/i,
+ /^ო/i,
+ /^ნ/i,
+ /^დ/i
+ ]
+}
+
+var matchDayPatterns = {
+ narrow: /^(კვ|ორ|სა|ოთ|ხუ|პა|შა)/i,
+ short: /^(კვი|ორშ|სამ|ოთხ|ხუთ|პარ|შაბ)/i,
+ long: /^(კვირა|ორშაბათი|სამშაბათი|ოთხშაბათი|ხუთშაბათი|პარასკევი|შაბათი)/i
+}
+var parseDayPatterns = {
+ any: [/^კვ/i, /^ორ/i, /^სა/i, /^ოთ/i, /^ხუ/i, /^პა/i, /^შა/i]
+}
+
+var matchDayPeriodPatterns = {
+ any: /^([ap]\.?\s?m\.?|შუაღ|დილ)/i
+}
+var parseDayPeriodPatterns = {
+ any: {
+ am: /^a/i,
+ pm: /^p/i,
+ midnight: /^შუაღ/i,
+ noon: /^შუადღ/i,
+ morning: /^დილ/i,
+ afternoon: /ნაშუადღევს/i,
+ evening: /საღამო/i,
+ night: /ღამ/i
+ }
+}
+
+var match = {
+ ordinalNumber: buildMatchPatternFn({
+ matchPattern: matchOrdinalNumberPattern,
+ parsePattern: parseOrdinalNumberPattern,
+ valueCallback: function(value) {
+ return parseInt(value, 10)
+ }
+ }),
+
+ era: buildMatchFn({
+ matchPatterns: matchEraPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseEraPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ quarter: buildMatchFn({
+ matchPatterns: matchQuarterPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseQuarterPatterns,
+ defaultParseWidth: 'any',
+ valueCallback: function(index) {
+ return index + 1
+ }
+ }),
+
+ month: buildMatchFn({
+ matchPatterns: matchMonthPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseMonthPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ day: buildMatchFn({
+ matchPatterns: matchDayPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseDayPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ dayPeriod: buildMatchFn({
+ matchPatterns: matchDayPeriodPatterns,
+ defaultMatchWidth: 'any',
+ parsePatterns: parseDayPeriodPatterns,
+ defaultParseWidth: 'any'
+ })
+}
+
+export default match
diff --git a/date-fns/src/locale/ka/index.d.ts b/date-fns/src/locale/ka/index.d.ts
new file mode 100644
index 0000000..c0be71a
--- /dev/null
+++ b/date-fns/src/locale/ka/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { ka } from 'date-fns/locale'
+export default ka
diff --git a/date-fns/src/locale/ka/index.js b/date-fns/src/locale/ka/index.js
new file mode 100644
index 0000000..f586bad
--- /dev/null
+++ b/date-fns/src/locale/ka/index.js
@@ -0,0 +1,29 @@
+import formatDistance from './_lib/formatDistance/index'
+import formatLong from './_lib/formatLong/index'
+import formatRelative from './_lib/formatRelative/index'
+import localize from './_lib/localize/index'
+import match from './_lib/match/index'
+
+/**
+ * @type {Locale}
+ * @category Locales
+ * @summary Georgian locale.
+ * @language Georgian
+ * @iso-639-2 geo
+ * @author Lado Lomidze [@Landish]{@link https://github.com/Landish}
+ * @author Nick Shvelidze [@shvelo]{@link https://github.com/shvelo}
+ */
+var locale = {
+ code: 'ka',
+ formatDistance: formatDistance,
+ formatLong: formatLong,
+ formatRelative: formatRelative,
+ localize: localize,
+ match: match,
+ options: {
+ weekStartsOn: 1 /* Monday */,
+ firstWeekContainsDate: 1
+ }
+}
+
+export default locale
diff --git a/date-fns/src/locale/ka/index.js.flow b/date-fns/src/locale/ka/index.js.flow
new file mode 100644
index 0000000..b9dfe66
--- /dev/null
+++ b/date-fns/src/locale/ka/index.js.flow
@@ -0,0 +1,35 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+declare module.exports: Locale
diff --git a/date-fns/src/locale/ka/snapshot.md b/date-fns/src/locale/ka/snapshot.md
new file mode 100644
index 0000000..4c878bf
--- /dev/null
+++ b/date-fns/src/locale/ka/snapshot.md
@@ -0,0 +1,304 @@
+# Georgian (ka) locale
+
+## `format` and `parse`
+
+| Title | Token string | Date | `format` result | `parse` result |
+| ------------------------------- | ------------ | ------------------------ | -------------------------------------------------------- | ------------------------ |
+| Calendar year | yo | 1987-02-11T12:13:14.015Z | 1987-ე | 1987-01-01T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 5-ე | 0005-01-01T00:00:00.000Z |
+| Local week-numbering year | Yo | 1987-02-11T12:13:14.015Z | 1987-ე | 1986-12-29T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 5-ე | 0004-12-27T00:00:00.000Z |
+| Quarter (formatting) | Qo | 2019-01-01T12:13:14.015Z | 1-ლი | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2-ე | 2019-04-01T00:00:00.000Z |
+| | QQQ | 2019-01-01T12:13:14.015Z | 1-ლი კვ | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2-ე კვ | 2019-04-01T00:00:00.000Z |
+| | QQQQ | 2019-01-01T12:13:14.015Z | 1-ლი კვარტალი | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2-ე კვარტალი | 2019-04-01T00:00:00.000Z |
+| | QQQQQ | 2019-01-01T12:13:14.015Z | 1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2 | 2019-04-01T00:00:00.000Z |
+| Quarter (stand-alone) | qo | 2019-01-01T12:13:14.015Z | 1-ლი | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2-ე | 2019-04-01T00:00:00.000Z |
+| | qqq | 2019-01-01T12:13:14.015Z | 1-ლი კვ | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2-ე კვ | 2019-04-01T00:00:00.000Z |
+| | qqqq | 2019-01-01T12:13:14.015Z | 1-ლი კვარტალი | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2-ე კვარტალი | 2019-04-01T00:00:00.000Z |
+| Month (formatting) | Mo | 2019-02-11T12:13:14.015Z | 2-ე | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7-ე | 2019-07-01T00:00:00.000Z |
+| | MMM | 2019-02-11T12:13:14.015Z | თებ | Invalid Date |
+| | | 2019-07-10T12:13:14.015Z | ივლ | Invalid Date |
+| | MMMM | 2019-02-11T12:13:14.015Z | თებერვალი | Invalid Date |
+| | | 2019-07-10T12:13:14.015Z | ივლისი | Invalid Date |
+| | MMMMM | 2019-02-11T12:13:14.015Z | თე | Invalid Date |
+| | | 2019-07-10T12:13:14.015Z | ვლ | Invalid Date |
+| Month (stand-alone) | Lo | 2019-02-11T12:13:14.015Z | 2-ე | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7-ე | 2019-07-01T00:00:00.000Z |
+| | LLL | 2019-02-11T12:13:14.015Z | თებ | Invalid Date |
+| | | 2019-07-10T12:13:14.015Z | ივლ | Invalid Date |
+| | LLLL | 2019-02-11T12:13:14.015Z | თებერვალი | Invalid Date |
+| | | 2019-07-10T12:13:14.015Z | ივლისი | Invalid Date |
+| | LLLLL | 2019-02-11T12:13:14.015Z | თე | Invalid Date |
+| | | 2019-07-10T12:13:14.015Z | ვლ | Invalid Date |
+| Local week of year | wo | 2019-01-01T12:13:14.015Z | 1-ლი | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48-ე | 2019-11-25T00:00:00.000Z |
+| ISO week of year | Io | 2019-01-01T12:13:14.015Z | 1-ლი | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48-ე | 2019-11-25T00:00:00.000Z |
+| Day of month | do | 2019-02-11T12:13:14.015Z | 11-ე | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-28T12:13:14.015Z | 28-ე | 2019-02-28T00:00:00.000Z |
+| Day of year | Do | 2019-02-11T12:13:14.015Z | 42-ე | 2019-02-11T00:00:00.000Z |
+| | | 2019-12-31T12:13:14.015Z | 365-ე | 2019-12-31T00:00:00.000Z |
+| Day of week (formatting) | E | 2019-02-11T12:13:14.015Z | ორშ | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | პარ | Invalid Date |
+| | EE | 2019-02-11T12:13:14.015Z | ორშ | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | პარ | Invalid Date |
+| | EEE | 2019-02-11T12:13:14.015Z | ორშ | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | პარ | Invalid Date |
+| | EEEE | 2019-02-11T12:13:14.015Z | ორშაბათი | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | პარასკევი | Invalid Date |
+| | EEEEE | 2019-02-11T12:13:14.015Z | ორ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | პა | 2019-02-15T00:00:00.000Z |
+| | EEEEEE | 2019-02-11T12:13:14.015Z | ორშ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | პარ | 2019-02-15T00:00:00.000Z |
+| ISO day of week (formatting) | io | 2019-02-11T12:13:14.015Z | 1-ლი | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5-ე | 2019-02-15T00:00:00.000Z |
+| | iii | 2019-02-11T12:13:14.015Z | ორშ | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | პარ | Invalid Date |
+| | iiii | 2019-02-11T12:13:14.015Z | ორშაბათი | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | პარასკევი | Invalid Date |
+| | iiiii | 2019-02-11T12:13:14.015Z | ორ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | პა | 2019-02-15T00:00:00.000Z |
+| | iiiiii | 2019-02-11T12:13:14.015Z | ორშ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | პარ | 2019-02-15T00:00:00.000Z |
+| Local day of week (formatting) | eo | 2019-02-11T12:13:14.015Z | 1-ლი | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5-ე | 2019-02-15T00:00:00.000Z |
+| | eee | 2019-02-11T12:13:14.015Z | ორშ | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | პარ | Invalid Date |
+| | eeee | 2019-02-11T12:13:14.015Z | ორშაბათი | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | პარასკევი | Invalid Date |
+| | eeeee | 2019-02-11T12:13:14.015Z | ორ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | პა | 2019-02-15T00:00:00.000Z |
+| | eeeeee | 2019-02-11T12:13:14.015Z | ორშ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | პარ | 2019-02-15T00:00:00.000Z |
+| Local day of week (stand-alone) | co | 2019-02-11T12:13:14.015Z | 1-ლი | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5-ე | 2019-02-15T00:00:00.000Z |
+| | ccc | 2019-02-11T12:13:14.015Z | ორშ | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | პარ | Invalid Date |
+| | cccc | 2019-02-11T12:13:14.015Z | ორშაბათი | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | პარასკევი | Invalid Date |
+| | ccccc | 2019-02-11T12:13:14.015Z | ორ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | პა | 2019-02-15T00:00:00.000Z |
+| | cccccc | 2019-02-11T12:13:14.015Z | ორშ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | პარ | 2019-02-15T00:00:00.000Z |
+| AM, PM | a | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | aa | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | aaa | 2019-02-11T11:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | aaaa | 2019-02-11T11:13:14.015Z | a.m. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | p.m. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | p.m. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | a.m. | 2019-02-11T00:00:00.000Z |
+| | aaaaa | 2019-02-11T11:13:14.015Z | a | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | p | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | p | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | a | Invalid Date |
+| AM, PM, noon, midnight | b | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | bb | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | bbb | 2019-02-11T11:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | bbbb | 2019-02-11T11:13:14.015Z | a.m. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | p.m. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | p.m. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | a.m. | 2019-02-11T00:00:00.000Z |
+| | bbbbb | 2019-02-11T11:13:14.015Z | a | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | p | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | p | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | a | Invalid Date |
+| Flexible day period | B | 2019-02-11T11:13:14.015Z | დილით | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | ნაშუადღევს | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | საღამოს | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | ღამით | Invalid Date |
+| | BB | 2019-02-11T11:13:14.015Z | დილით | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | ნაშუადღევს | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | საღამოს | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | ღამით | Invalid Date |
+| | BBB | 2019-02-11T11:13:14.015Z | დილით | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | ნაშუადღევს | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | საღამოს | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | ღამით | Invalid Date |
+| | BBBB | 2019-02-11T11:13:14.015Z | დილით | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | ნაშუადღევს | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | საღამოს | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | ღამით | Invalid Date |
+| | BBBBB | 2019-02-11T11:13:14.015Z | დილით | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | ნაშუადღევს | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | საღამოს | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | ღამით | Invalid Date |
+| Hour [1-12] | ho | 2019-02-11T11:13:14.015Z | 11-ე | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11-ე | 2019-02-11T23:00:00.000Z |
+| Hour [0-23] | Ho | 2019-02-11T11:13:14.015Z | 11-ე | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23-ე | 2019-02-11T23:00:00.000Z |
+| Hour [0-11] | Ko | 2019-02-11T11:13:14.015Z | 11-ე | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11-ე | 2019-02-11T23:00:00.000Z |
+| Hour [1-24] | ko | 2019-02-11T11:13:14.015Z | 11-ე | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23-ე | 2019-02-11T23:00:00.000Z |
+| Minute | mo | 2019-01-01T12:01:14.015Z | 1-ლი | 2019-01-01T12:01:00.000Z |
+| | | 2019-04-01T12:55:14.015Z | 55-ე | 2019-04-01T12:55:00.000Z |
+| Second | so | 2019-01-01T12:13:01.015Z | 1-ლი | 2019-01-01T12:13:01.000Z |
+| | | 2019-04-01T12:13:55.015Z | 55-ე | 2019-04-01T12:13:55.000Z |
+| Long localized date | P | 1987-02-11T12:13:14.015Z | 11/02/1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29/05/1453 | 1453-05-29T00:00:00.000Z |
+| | PP | 1987-02-11T12:13:14.015Z | 11, თებ, 1987 | Invalid Date |
+| | | 1453-05-29T23:59:59.999Z | 29, მაი, 1453 | Invalid Date |
+| | PPP | 1987-02-11T12:13:14.015Z | 11-ე, თებერვალი, 1987 | Invalid Date |
+| | | 1453-05-29T23:59:59.999Z | 29-ე, მაისი, 1453 | Invalid Date |
+| | PPPP | 1987-02-11T12:13:14.015Z | ოთხშაბათი, 11-ე თებერვალი, 1987 | Invalid Date |
+| | | 1453-05-29T23:59:59.999Z | კვირა, 29-ე მაისი, 1453 | Invalid Date |
+| Long localized time | p | 1987-02-11T12:13:14.015Z | 12:13 PM | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 11:59 PM | 1453-05-29T23:59:00.000Z |
+| | pp | 1987-02-11T12:13:14.015Z | 12:13:14 PM | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 11:59:59 PM | 1453-05-29T23:59:59.000Z |
+| | ppp | 1987-02-11T12:13:14.015Z | 12:13:14 PM GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 11:59:59 PM GMT+0 | Errored |
+| | pppp | 1987-02-11T12:13:14.015Z | 12:13:14 PM GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 11:59:59 PM GMT+00:00 | Errored |
+| Combination of date and time | Pp | 1987-02-11T12:13:14.015Z | 11/02/1987, 12:13 PM | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29/05/1453, 11:59 PM | 1453-05-29T23:59:00.000Z |
+| | PPpp | 1987-02-11T12:13:14.015Z | 11, თებ, 1987, 12:13:14 PM | Invalid Date |
+| | | 1453-05-29T23:59:59.999Z | 29, მაი, 1453, 11:59:59 PM | Invalid Date |
+| | PPPppp | 1987-02-11T12:13:14.015Z | 11-ე, თებერვალი, 1987 12:13:14 PM GMT+0-ზე | Invalid Date |
+| | | 1453-05-29T23:59:59.999Z | 29-ე, მაისი, 1453 11:59:59 PM GMT+0-ზე | Invalid Date |
+| | PPPPpppp | 1987-02-11T12:13:14.015Z | ოთხშაბათი, 11-ე თებერვალი, 1987 12:13:14 PM GMT+00:00-ზე | Invalid Date |
+| | | 1453-05-29T23:59:59.999Z | კვირა, 29-ე მაისი, 1453 11:59:59 PM GMT+00:00-ზე | Invalid Date |
+
+## `formatDistance`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `includeSeconds: true` | `addSuffix: true` |
+| ------------------------ | ------------------ | ---------------------- | ------------------------ |
+| 2006-01-01T00:00:00.000Z | დაახლოებით 6 წელი | დაახლოებით 6 წელი | დაახლოებით 6 წელში |
+| 2005-01-01T00:00:00.000Z | დაახლოებით 5 წელი | დაახლოებით 5 წელი | დაახლოებით 5 წელში |
+| 2004-01-01T00:00:00.000Z | დაახლოებით 4 წელი | დაახლოებით 4 წელი | დაახლოებით 4 წელში |
+| 2003-01-01T00:00:00.000Z | დაახლოებით 3 წელი | დაახლოებით 3 წელი | დაახლოებით 3 წელში |
+| 2002-01-01T00:00:00.000Z | დაახლოებით 2 წელი | დაახლოებით 2 წელი | დაახლოებით 2 წელში |
+| 2001-06-01T00:00:00.000Z | 1 წელზე მეტი | 1 წელზე მეტი | 1 წელზე მეტი ხნის შემდეგ |
+| 2001-02-01T00:00:00.000Z | დაახლოებით 1 წელი | დაახლოებით 1 წელი | დაახლოებით 1 წელში |
+| 2001-01-01T00:00:00.000Z | დაახლოებით 1 წელი | დაახლოებით 1 წელი | დაახლოებით 1 წელში |
+| 2000-06-01T00:00:00.000Z | 5 თვე | 5 თვე | 5 თვეში |
+| 2000-03-01T00:00:00.000Z | 2 თვე | 2 თვე | 2 თვეში |
+| 2000-02-01T00:00:00.000Z | დაახლოებით 1 თვე | დაახლოებით 1 თვე | დაახლოებით 1 თვეში |
+| 2000-01-15T00:00:00.000Z | 14 დღე | 14 დღე | 14 დღეში |
+| 2000-01-02T00:00:00.000Z | 1 დღე | 1 დღე | 1 დღეში |
+| 2000-01-01T06:00:00.000Z | დაახლოებით 6 საათი | დაახლოებით 6 საათი | დაახლოებით 6 საათში |
+| 2000-01-01T01:00:00.000Z | დაახლოებით 1 საათი | დაახლოებით 1 საათი | დაახლოებით 1 საათში |
+| 2000-01-01T00:45:00.000Z | დაახლოებით 1 საათი | დაახლოებით 1 საათი | დაახლოებით 1 საათში |
+| 2000-01-01T00:30:00.000Z | 30 წუთი | 30 წუთი | 30 წუთში |
+| 2000-01-01T00:15:00.000Z | 15 წუთი | 15 წუთი | 15 წუთში |
+| 2000-01-01T00:01:00.000Z | 1 წუთი | 1 წუთი | 1 წუთში |
+| 2000-01-01T00:00:25.000Z | 1 წუთზე ნაკლები | ნახევარი წუთი | 1 წუთზე ნაკლებში |
+| 2000-01-01T00:00:15.000Z | 1 წუთზე ნაკლები | 20 წამზე ნაკლები | 1 წუთზე ნაკლებში |
+| 2000-01-01T00:00:05.000Z | 1 წუთზე ნაკლები | 10 წამზე ნაკლები | 1 წუთზე ნაკლებში |
+| 2000-01-01T00:00:00.000Z | 1 წუთზე ნაკლები | 5 წამზე ნაკლები | 1 წუთზე ნაკლები ხნის წინ |
+| 1999-12-31T23:59:55.000Z | 1 წუთზე ნაკლები | 10 წამზე ნაკლები | 1 წუთზე ნაკლები ხნის წინ |
+| 1999-12-31T23:59:45.000Z | 1 წუთზე ნაკლები | 20 წამზე ნაკლები | 1 წუთზე ნაკლები ხნის წინ |
+| 1999-12-31T23:59:35.000Z | 1 წუთზე ნაკლები | ნახევარი წუთი | 1 წუთზე ნაკლები ხნის წინ |
+| 1999-12-31T23:59:00.000Z | 1 წუთი | 1 წუთი | 1 წუთის წინ |
+| 1999-12-31T23:45:00.000Z | 15 წუთი | 15 წუთი | 15 წუთის წინ |
+| 1999-12-31T23:30:00.000Z | 30 წუთი | 30 წუთი | 30 წუთის წინ |
+| 1999-12-31T23:15:00.000Z | დაახლოებით 1 საათი | დაახლოებით 1 საათი | დაახლოებით 1 საათის წინ |
+| 1999-12-31T23:00:00.000Z | დაახლოებით 1 საათი | დაახლოებით 1 საათი | დაახლოებით 1 საათის წინ |
+| 1999-12-31T18:00:00.000Z | დაახლოებით 6 საათი | დაახლოებით 6 საათი | დაახლოებით 6 საათის წინ |
+| 1999-12-30T00:00:00.000Z | 2 დღე | 2 დღე | 2 დღის წინ |
+| 1999-12-15T00:00:00.000Z | 17 დღე | 17 დღე | 17 დღის წინ |
+| 1999-12-01T00:00:00.000Z | დაახლოებით 1 თვე | დაახლოებით 1 თვე | დაახლოებით 1 თვის წინ |
+| 1999-11-01T00:00:00.000Z | 2 თვე | 2 თვე | 2 თვის წინ |
+| 1999-06-01T00:00:00.000Z | 7 თვე | 7 თვე | 7 თვის წინ |
+| 1999-01-01T00:00:00.000Z | დაახლოებით 1 წელი | დაახლოებით 1 წელი | დაახლოებით 1 წლის წინ |
+| 1998-12-01T00:00:00.000Z | დაახლოებით 1 წელი | დაახლოებით 1 წელი | დაახლოებით 1 წლის წინ |
+| 1998-06-01T00:00:00.000Z | 1 წელზე მეტი | 1 წელზე მეტი | 1 წელზე მეტი ხნის წინ |
+| 1998-01-01T00:00:00.000Z | დაახლოებით 2 წელი | დაახლოებით 2 წელი | დაახლოებით 2 წლის წინ |
+| 1997-01-01T00:00:00.000Z | დაახლოებით 3 წელი | დაახლოებით 3 წელი | დაახლოებით 3 წლის წინ |
+| 1996-01-01T00:00:00.000Z | დაახლოებით 4 წელი | დაახლოებით 4 წელი | დაახლოებით 4 წლის წინ |
+| 1995-01-01T00:00:00.000Z | დაახლოებით 5 წელი | დაახლოებით 5 წელი | დაახლოებით 5 წლის წინ |
+| 1994-01-01T00:00:00.000Z | დაახლოებით 6 წელი | დაახლოებით 6 წელი | დაახლოებით 6 წლის წინ |
+
+## `formatDistanceStrict`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `addSuffix: true` | With forced unit (i.e. `hour`) |
+| ------------------------ | ------- | ----------------- | ------------------------------ |
+| 2006-01-01T00:00:00.000Z | 6 წელი | 6 წელში | 52608 საათი |
+| 2005-01-01T00:00:00.000Z | 5 წელი | 5 წელში | 43848 საათი |
+| 2004-01-01T00:00:00.000Z | 4 წელი | 4 წელში | 35064 საათი |
+| 2003-01-01T00:00:00.000Z | 3 წელი | 3 წელში | 26304 საათი |
+| 2002-01-01T00:00:00.000Z | 2 წელი | 2 წელში | 17544 საათი |
+| 2001-06-01T00:00:00.000Z | 1 წელი | 1 წელში | 12408 საათი |
+| 2001-02-01T00:00:00.000Z | 1 წელი | 1 წელში | 9528 საათი |
+| 2001-01-01T00:00:00.000Z | 1 წელი | 1 წელში | 8784 საათი |
+| 2000-06-01T00:00:00.000Z | 5 თვე | 5 თვეში | 3648 საათი |
+| 2000-03-01T00:00:00.000Z | 2 თვე | 2 თვეში | 1440 საათი |
+| 2000-02-01T00:00:00.000Z | 1 თვე | 1 თვეში | 744 საათი |
+| 2000-01-15T00:00:00.000Z | 14 დღე | 14 დღეში | 336 საათი |
+| 2000-01-02T00:00:00.000Z | 1 დღე | 1 დღეში | 24 საათი |
+| 2000-01-01T06:00:00.000Z | 6 საათი | 6 საათში | 6 საათი |
+| 2000-01-01T01:00:00.000Z | 1 საათი | 1 საათში | 1 საათი |
+| 2000-01-01T00:45:00.000Z | 45 წუთი | 45 წუთში | 1 საათი |
+| 2000-01-01T00:30:00.000Z | 30 წუთი | 30 წუთში | 1 საათი |
+| 2000-01-01T00:15:00.000Z | 15 წუთი | 15 წუთში | 0 საათი |
+| 2000-01-01T00:01:00.000Z | 1 წუთი | 1 წუთში | 0 საათი |
+| 2000-01-01T00:00:25.000Z | 25 წამი | 25 წამში | 0 საათი |
+| 2000-01-01T00:00:15.000Z | 15 წამი | 15 წამში | 0 საათი |
+| 2000-01-01T00:00:05.000Z | 5 წამი | 5 წამში | 0 საათი |
+| 2000-01-01T00:00:00.000Z | 0 წამი | 0 წამის წინ | 0 საათი |
+| 1999-12-31T23:59:55.000Z | 5 წამი | 5 წამის წინ | 0 საათი |
+| 1999-12-31T23:59:45.000Z | 15 წამი | 15 წამის წინ | 0 საათი |
+| 1999-12-31T23:59:35.000Z | 25 წამი | 25 წამის წინ | 0 საათი |
+| 1999-12-31T23:59:00.000Z | 1 წუთი | 1 წუთის წინ | 0 საათი |
+| 1999-12-31T23:45:00.000Z | 15 წუთი | 15 წუთის წინ | 0 საათი |
+| 1999-12-31T23:30:00.000Z | 30 წუთი | 30 წუთის წინ | 1 საათი |
+| 1999-12-31T23:15:00.000Z | 45 წუთი | 45 წუთის წინ | 1 საათი |
+| 1999-12-31T23:00:00.000Z | 1 საათი | 1 საათის წინ | 1 საათი |
+| 1999-12-31T18:00:00.000Z | 6 საათი | 6 საათის წინ | 6 საათი |
+| 1999-12-30T00:00:00.000Z | 2 დღე | 2 დღის წინ | 48 საათი |
+| 1999-12-15T00:00:00.000Z | 17 დღე | 17 დღის წინ | 408 საათი |
+| 1999-12-01T00:00:00.000Z | 1 თვე | 1 თვის წინ | 744 საათი |
+| 1999-11-01T00:00:00.000Z | 2 თვე | 2 თვის წინ | 1464 საათი |
+| 1999-06-01T00:00:00.000Z | 7 თვე | 7 თვის წინ | 5136 საათი |
+| 1999-01-01T00:00:00.000Z | 1 წელი | 1 წლის წინ | 8760 საათი |
+| 1998-12-01T00:00:00.000Z | 1 წელი | 1 წლის წინ | 9504 საათი |
+| 1998-06-01T00:00:00.000Z | 2 წელი | 2 წლის წინ | 13896 საათი |
+| 1998-01-01T00:00:00.000Z | 2 წელი | 2 წლის წინ | 17520 საათი |
+| 1997-01-01T00:00:00.000Z | 3 წელი | 3 წლის წინ | 26280 საათი |
+| 1996-01-01T00:00:00.000Z | 4 წელი | 4 წლის წინ | 35064 საათი |
+| 1995-01-01T00:00:00.000Z | 5 წელი | 5 წლის წინ | 43824 საათი |
+| 1994-01-01T00:00:00.000Z | 6 წელი | 6 წლის წინ | 52584 საათი |
+
+## `formatRelative`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result |
+| ------------------------ | ---------------------------------- |
+| 2000-01-10T00:00:00.000Z | 1 |
+| 2000-01-05T00:00:00.000Z | შემდეგი ოთხშაბათი 1947030400000-ზე |
+| 2000-01-02T00:00:00.000Z | ხვალ 1946771200000-ზე |
+| 2000-01-01T00:00:00.000Z | დღეს 1946684800000-ზე |
+| 1999-12-31T00:00:00.000Z | გუშინ 12946598400000-ზე |
+| 1999-12-27T00:00:00.000Z | წინა ორშაბათი 12946252800000-ზე |
+| 1999-12-21T00:00:00.000Z | 12 |
diff --git a/date-fns/src/locale/kk/_lib/formatDistance/index.js b/date-fns/src/locale/kk/_lib/formatDistance/index.js
new file mode 100644
index 0000000..a5c38de
--- /dev/null
+++ b/date-fns/src/locale/kk/_lib/formatDistance/index.js
@@ -0,0 +1,246 @@
+function declension(scheme, count) {
+ // scheme for count=1 exists
+ if (scheme.one !== undefined && count === 1) {
+ return scheme.one
+ }
+
+ var rem10 = count % 10
+ var rem100 = count % 100
+
+ // 1, 21, 31, ...
+ if (rem10 === 1 && rem100 !== 11) {
+ return scheme.singularNominative.replace('{{count}}', count)
+
+ // 2, 3, 4, 22, 23, 24, 32 ...
+ } else if (rem10 >= 2 && rem10 <= 4 && (rem100 < 10 || rem100 > 20)) {
+ return scheme.singularGenitive.replace('{{count}}', count)
+
+ // 5, 6, 7, 8, 9, 10, 11, ...
+ } else {
+ return scheme.pluralGenitive.replace('{{count}}', count)
+ }
+}
+
+function buildLocalizeTokenFn(scheme) {
+ return function(count, options) {
+ if (options.addSuffix) {
+ if (options.comparison > 0) {
+ if (scheme.future) {
+ return declension(scheme.future, count)
+ } else {
+ return declension(scheme.regular, count) + ' кейін'
+ }
+ } else {
+ if (scheme.past) {
+ return declension(scheme.past, count)
+ } else {
+ return declension(scheme.regular, count) + ' бұрын'
+ }
+ }
+ } else {
+ return declension(scheme.regular, count)
+ }
+ }
+}
+
+var formatDistanceLocale = {
+ lessThanXSeconds: buildLocalizeTokenFn({
+ regular: {
+ one: '1 секундтан аз',
+ singularNominative: '{{count}} секундтан аз',
+ singularGenitive: '{{count}} секундтан аз',
+ pluralGenitive: '{{count}} секундтан аз'
+ },
+ future: {
+ one: 'бір секундтан кейін',
+ singularNominative: '{{count}} секундтан кейін',
+ singularGenitive: '{{count}} секундтан кейін',
+ pluralGenitive: '{{count}} секундтан кейін'
+ }
+ }),
+
+ xSeconds: buildLocalizeTokenFn({
+ regular: {
+ singularNominative: '{{count}} секунд',
+ singularGenitive: '{{count}} секунд',
+ pluralGenitive: '{{count}} секунд'
+ },
+ past: {
+ singularNominative: '{{count}} секунд бұрын',
+ singularGenitive: '{{count}} секунд бұрын',
+ pluralGenitive: '{{count}} секунд бұрын'
+ },
+ future: {
+ singularNominative: '{{count}} секундтан кейін',
+ singularGenitive: '{{count}} секундтан кейін',
+ pluralGenitive: '{{count}} секундтан кейін'
+ }
+ }),
+
+ halfAMinute: function(_, options) {
+ if (options.addSuffix) {
+ if (options.comparison > 0) {
+ return 'жарты минут ішінде'
+ } else {
+ return 'жарты минут бұрын'
+ }
+ }
+
+ return 'жарты минут'
+ },
+
+ lessThanXMinutes: buildLocalizeTokenFn({
+ regular: {
+ one: '1 минуттан аз',
+ singularNominative: '{{count}} минуттан аз',
+ singularGenitive: '{{count}} минуттан аз',
+ pluralGenitive: '{{count}} минуттан аз'
+ },
+ future: {
+ one: 'минуттан кем ',
+ singularNominative: '{{count}} минуттан кем',
+ singularGenitive: '{{count}} минуттан кем',
+ pluralGenitive: '{{count}} минуттан кем'
+ }
+ }),
+
+ xMinutes: buildLocalizeTokenFn({
+ regular: {
+ singularNominative: '{{count}} минут',
+ singularGenitive: '{{count}} минут',
+ pluralGenitive: '{{count}} минут'
+ },
+ past: {
+ singularNominative: '{{count}} минут бұрын',
+ singularGenitive: '{{count}} минут бұрын',
+ pluralGenitive: '{{count}} минут бұрын'
+ },
+ future: {
+ singularNominative: '{{count}} минуттан кейін',
+ singularGenitive: '{{count}} минуттан кейін',
+ pluralGenitive: '{{count}} минуттан кейін'
+ }
+ }),
+
+ aboutXHours: buildLocalizeTokenFn({
+ regular: {
+ singularNominative: 'шамамен {{count}} сағат',
+ singularGenitive: 'шамамен {{count}} сағат',
+ pluralGenitive: 'шамамен {{count}} сағат'
+ },
+ future: {
+ singularNominative: 'шамамен {{count}} сағаттан кейін',
+ singularGenitive: 'шамамен {{count}} сағаттан кейін',
+ pluralGenitive: 'шамамен {{count}} сағаттан кейін'
+ }
+ }),
+
+ xHours: buildLocalizeTokenFn({
+ regular: {
+ singularNominative: '{{count}} сағат',
+ singularGenitive: '{{count}} сағат',
+ pluralGenitive: '{{count}} сағат'
+ }
+ }),
+
+ xDays: buildLocalizeTokenFn({
+ regular: {
+ singularNominative: '{{count}} күн',
+ singularGenitive: '{{count}} күн',
+ pluralGenitive: '{{count}} күн'
+ },
+ future: {
+ singularNominative: '{{count}} күннен кейін',
+ singularGenitive: '{{count}} күннен кейін',
+ pluralGenitive: '{{count}} күннен кейін'
+ }
+ }),
+
+ aboutXWeeks: {
+ one: 'шамамен 1 апта',
+ other: 'шамамен {{count}} апта'
+ },
+
+ xWeeks: {
+ one: '1 апта',
+ other: '{{count}} апта'
+ },
+
+ aboutXMonths: buildLocalizeTokenFn({
+ regular: {
+ singularNominative: 'шамамен {{count}} ай',
+ singularGenitive: 'шамамен {{count}} ай',
+ pluralGenitive: 'шамамен {{count}} ай'
+ },
+ future: {
+ singularNominative: 'шамамен {{count}} айдан кейін',
+ singularGenitive: 'шамамен {{count}} айдан кейін',
+ pluralGenitive: 'шамамен {{count}} айдан кейін'
+ }
+ }),
+
+ xMonths: buildLocalizeTokenFn({
+ regular: {
+ singularNominative: '{{count}} ай',
+ singularGenitive: '{{count}} ай',
+ pluralGenitive: '{{count}} ай'
+ }
+ }),
+
+ aboutXYears: buildLocalizeTokenFn({
+ regular: {
+ singularNominative: 'шамамен {{count}} жыл',
+ singularGenitive: 'шамамен {{count}} жыл',
+ pluralGenitive: 'шамамен {{count}} жыл'
+ },
+ future: {
+ singularNominative: 'шамамен {{count}} жылдан кейін',
+ singularGenitive: 'шамамен {{count}} жылдан кейін',
+ pluralGenitive: 'шамамен {{count}} жылдан кейін'
+ }
+ }),
+
+ xYears: buildLocalizeTokenFn({
+ regular: {
+ singularNominative: '{{count}} жыл',
+ singularGenitive: '{{count}} жыл',
+ pluralGenitive: '{{count}} жыл'
+ },
+ future: {
+ singularNominative: '{{count}} жылдан кейін',
+ singularGenitive: '{{count}} жылдан кейін',
+ pluralGenitive: '{{count}} жылдан кейін'
+ }
+ }),
+
+ overXYears: buildLocalizeTokenFn({
+ regular: {
+ singularNominative: '{{count}} жылдан астам',
+ singularGenitive: '{{count}} жылдан астам',
+ pluralGenitive: '{{count}} жылдан астам'
+ },
+ future: {
+ singularNominative: '{{count}} жылдан астам',
+ singularGenitive: '{{count}} жылдан астам',
+ pluralGenitive: '{{count}} жылдан астам'
+ }
+ }),
+
+ almostXYears: buildLocalizeTokenFn({
+ regular: {
+ singularNominative: '{{count}} жылға жақын',
+ singularGenitive: '{{count}} жылға жақын',
+ pluralGenitive: '{{count}} жылға жақын'
+ },
+ future: {
+ singularNominative: '{{count}} жылдан кейін',
+ singularGenitive: '{{count}} жылдан кейін',
+ pluralGenitive: '{{count}} жылдан кейін'
+ }
+ })
+}
+
+export default function formatDistance(token, count, options) {
+ options = options || {}
+ return formatDistanceLocale[token](count, options)
+}
diff --git a/date-fns/src/locale/kk/_lib/formatLong/index.js b/date-fns/src/locale/kk/_lib/formatLong/index.js
new file mode 100644
index 0000000..83f9208
--- /dev/null
+++ b/date-fns/src/locale/kk/_lib/formatLong/index.js
@@ -0,0 +1,38 @@
+import buildFormatLongFn from '../../../_lib/buildFormatLongFn/index'
+
+var dateFormats = {
+ full: "EEEE, do MMMM y 'ж.'",
+ long: "do MMMM y 'ж.'",
+ medium: "d MMM y 'ж.'",
+ short: 'dd.MM.yyyy'
+}
+
+var timeFormats = {
+ full: 'H:mm:ss zzzz',
+ long: 'H:mm:ss z',
+ medium: 'H:mm:ss',
+ short: 'H:mm'
+}
+
+var dateTimeFormats = {
+ any: '{{date}}, {{time}}'
+}
+
+var formatLong = {
+ date: buildFormatLongFn({
+ formats: dateFormats,
+ defaultWidth: 'full'
+ }),
+
+ time: buildFormatLongFn({
+ formats: timeFormats,
+ defaultWidth: 'full'
+ }),
+
+ dateTime: buildFormatLongFn({
+ formats: dateTimeFormats,
+ defaultWidth: 'any'
+ })
+}
+
+export default formatLong
diff --git a/date-fns/src/locale/kk/_lib/formatRelative/index.js b/date-fns/src/locale/kk/_lib/formatRelative/index.js
new file mode 100644
index 0000000..0ffadc3
--- /dev/null
+++ b/date-fns/src/locale/kk/_lib/formatRelative/index.js
@@ -0,0 +1,62 @@
+import isSameUTCWeek from '../../../../_lib/isSameUTCWeek/index'
+
+var accusativeWeekdays = [
+ 'жексенбіде',
+ 'дүйсенбіде',
+ 'сейсенбіде',
+ 'сәрсенбіде',
+ 'бейсенбіде',
+ 'жұмада',
+ 'сенбіде'
+]
+
+function lastWeek(day) {
+ var weekday = accusativeWeekdays[day]
+
+ return "'өткен " + weekday + " сағат' p'-де'"
+}
+
+function thisWeek(day) {
+ var weekday = accusativeWeekdays[day]
+
+ return "'" + weekday + " сағат' p'-де'"
+}
+
+function nextWeek(day) {
+ var weekday = accusativeWeekdays[day]
+
+ return "'келесі " + weekday + " сағат' p'-де'"
+}
+
+var formatRelativeLocale = {
+ lastWeek: function(date, baseDate, options) {
+ var day = date.getUTCDay()
+ if (isSameUTCWeek(date, baseDate, options)) {
+ return thisWeek(day)
+ } else {
+ return lastWeek(day)
+ }
+ },
+ yesterday: "'кеше сағат' p'-де'",
+ today: "'бүгін сағат' p'-де'",
+ tomorrow: "'ертең сағат' p'-де'",
+ nextWeek: function(date, baseDate, options) {
+ var day = date.getUTCDay()
+ if (isSameUTCWeek(date, baseDate, options)) {
+ return thisWeek(day)
+ } else {
+ return nextWeek(day)
+ }
+ },
+ other: 'P'
+}
+
+export default function formatRelative(token, date, baseDate, options) {
+ var format = formatRelativeLocale[token]
+
+ if (typeof format === 'function') {
+ return format(date, baseDate, options)
+ }
+
+ return format
+}
diff --git a/date-fns/src/locale/kk/_lib/localize/index.js b/date-fns/src/locale/kk/_lib/localize/index.js
new file mode 100644
index 0000000..eda70b2
--- /dev/null
+++ b/date-fns/src/locale/kk/_lib/localize/index.js
@@ -0,0 +1,203 @@
+import buildLocalizeFn from '../../../_lib/buildLocalizeFn/index'
+
+var eraValues = {
+ narrow: ['б.з.д.', 'б.з.'],
+ abbreviated: ['б.з.д.', 'б.з.'],
+ wide: ['біздің заманымызға дейін', 'біздің заманымыз']
+}
+
+var quarterValues = {
+ narrow: ['1', '2', '3', '4'],
+ abbreviated: ['1-ші тоқ.', '2-ші тоқ.', '3-ші тоқ.', '4-ші тоқ.'],
+ wide: ['1-ші тоқсан', '2-ші тоқсан', '3-ші тоқсан', '4-ші тоқсан']
+}
+
+var monthValues = {
+ narrow: ['Қ', 'А', 'Н', 'С', 'М', 'М', 'Ш', 'Т', 'Қ', 'Қ', 'Қ', 'Ж'],
+ abbreviated: [
+ 'қаң',
+ 'ақп',
+ 'нау',
+ 'сәу',
+ 'мам',
+ 'мау',
+ 'шіл',
+ 'там',
+ 'қыр',
+ 'қаз',
+ 'қар',
+ 'жел'
+ ],
+ wide: [
+ 'қаңтар',
+ 'ақпан',
+ 'наурыз',
+ 'сәуір',
+ 'мамыр',
+ 'маусым',
+ 'шілде',
+ 'тамыз',
+ 'қыркүйек',
+ 'қазан',
+ 'қараша',
+ 'желтоқсан'
+ ]
+}
+var formattingMonthValues = {
+ narrow: ['Қ', 'А', 'Н', 'С', 'М', 'М', 'Ш', 'Т', 'Қ', 'Қ', 'Қ', 'Ж'],
+ abbreviated: [
+ 'қаң',
+ 'ақп',
+ 'нау',
+ 'сәу',
+ 'мам',
+ 'мау',
+ 'шіл',
+ 'там',
+ 'қыр',
+ 'қаз',
+ 'қар',
+ 'жел'
+ ],
+ wide: [
+ 'қаңтар',
+ 'ақпан',
+ 'наурыз',
+ 'сәуір',
+ 'мамыр',
+ 'маусым',
+ 'шілде',
+ 'тамыз',
+ 'қыркүйек',
+ 'қазан',
+ 'қараша',
+ 'желтоқсан'
+ ]
+}
+
+var dayValues = {
+ narrow: ['Ж', 'Д', 'С', 'С', 'Б', 'Ж', 'С'],
+ short: ['жс', 'дс', 'сс', 'ср', 'бс', 'жм', 'сб'],
+ abbreviated: ['жс', 'дс', 'сс', 'ср', 'бс', 'жм', 'сб'],
+ wide: [
+ 'жексенбі',
+ 'дүйсенбі',
+ 'сейсенбі',
+ 'сәрсенбі',
+ 'бейсенбі',
+ 'жұма',
+ 'сенбі'
+ ]
+}
+
+var dayPeriodValues = {
+ narrow: {
+ am: 'ТД',
+ pm: 'ТК',
+ midnight: 'түн ортасы',
+ noon: 'түс',
+ morning: 'таң',
+ afternoon: 'күндіз',
+ evening: 'кеш',
+ night: 'түн'
+ },
+ wide: {
+ am: 'ТД',
+ pm: 'ТК',
+ midnight: 'түн ортасы',
+ noon: 'түс',
+ morning: 'таң',
+ afternoon: 'күндіз',
+ evening: 'кеш',
+ night: 'түн'
+ }
+}
+var formattingDayPeriodValues = {
+ narrow: {
+ am: 'ТД',
+ pm: 'ТК',
+ midnight: 'түн ортасында',
+ noon: 'түс',
+ morning: 'таң',
+ afternoon: 'күн',
+ evening: 'кеш',
+ night: 'түн'
+ },
+ wide: {
+ am: 'ТД',
+ pm: 'ТК',
+ midnight: 'түн ортасында',
+ noon: 'түсте',
+ morning: 'таңертең',
+ afternoon: 'күндіз',
+ evening: 'кеште',
+ night: 'түнде'
+ }
+}
+var suffixes = {
+ 0: '-ші',
+ 1: '-ші',
+ 2: '-ші',
+ 3: '-ші',
+ 4: '-ші',
+ 5: '-ші',
+ 6: '-шы',
+ 7: '-ші',
+ 8: '-ші',
+ 9: '-шы',
+ 10: '-шы',
+ 20: '-шы',
+ 30: '-шы',
+ 40: '-шы',
+ 50: '-ші',
+ 60: '-шы',
+ 70: '-ші',
+ 80: '-ші',
+ 90: '-шы',
+ 100: '-ші'
+}
+
+function ordinalNumber(dirtyNumber) {
+ var number = Number(dirtyNumber)
+ var a = number % 10
+ var b = number >= 100 ? 100 : null
+ return number + (suffixes[number] || suffixes[a] || suffixes[b])
+}
+
+var localize = {
+ ordinalNumber: ordinalNumber,
+
+ era: buildLocalizeFn({
+ values: eraValues,
+ defaultWidth: 'wide'
+ }),
+
+ quarter: buildLocalizeFn({
+ values: quarterValues,
+ defaultWidth: 'wide',
+ argumentCallback: function(quarter) {
+ return Number(quarter) - 1
+ }
+ }),
+
+ month: buildLocalizeFn({
+ values: monthValues,
+ defaultWidth: 'wide',
+ formattingValues: formattingMonthValues,
+ defaultFormattingWidth: 'wide'
+ }),
+
+ day: buildLocalizeFn({
+ values: dayValues,
+ defaultWidth: 'wide'
+ }),
+
+ dayPeriod: buildLocalizeFn({
+ values: dayPeriodValues,
+ defaultWidth: 'any',
+ formattingValues: formattingDayPeriodValues,
+ defaultFormattingWidth: 'wide'
+ })
+}
+
+export default localize
diff --git a/date-fns/src/locale/kk/_lib/match/index.js b/date-fns/src/locale/kk/_lib/match/index.js
new file mode 100644
index 0000000..80bd558
--- /dev/null
+++ b/date-fns/src/locale/kk/_lib/match/index.js
@@ -0,0 +1,160 @@
+import buildMatchPatternFn from '../../../_lib/buildMatchPatternFn/index'
+import buildMatchFn from '../../../_lib/buildMatchFn/index'
+
+var matchOrdinalNumberPattern = /^(\d+)(-?(ші|шы))?/i
+var parseOrdinalNumberPattern = /\d+/i
+
+var matchEraPatterns = {
+ narrow: /^((б )?з\.?\s?д\.?)/i,
+ abbreviated: /^((б )?з\.?\s?д\.?)/i,
+ wide: /^(біздің заманымызға дейін|біздің заманымыз|біздің заманымыздан)/i
+}
+var parseEraPatterns = {
+ any: [/^б/i, /^з/i]
+}
+
+var matchQuarterPatterns = {
+ narrow: /^[1234]/i,
+ abbreviated: /^[1234](-?ші)? тоқ.?/i,
+ wide: /^[1234](-?ші)? тоқсан/i
+}
+var parseQuarterPatterns = {
+ any: [/1/i, /2/i, /3/i, /4/i]
+}
+
+var matchMonthPatterns = {
+ narrow: /^(қ|а|н|с|м|мау|ш|т|қыр|қаз|қар|ж)/i,
+ abbreviated: /^(қаң|ақп|нау|сәу|мам|мау|шіл|там|қыр|қаз|қар|жел)/i,
+ wide: /^(қаңтар|ақпан|наурыз|сәуір|мамыр|маусым|шілде|тамыз|қыркүйек|қазан|қараша|желтоқсан)/i
+}
+var parseMonthPatterns = {
+ narrow: [
+ /^қ/i,
+ /^а/i,
+ /^н/i,
+ /^с/i,
+ /^м/i,
+ /^м/i,
+ /^ш/i,
+ /^т/i,
+ /^қ/i,
+ /^қ/i,
+ /^қ/i,
+ /^ж/i
+ ],
+ abbreviated: [
+ /^қаң/i,
+ /^ақп/i,
+ /^нау/i,
+ /^сәу/i,
+ /^мам/i,
+ /^мау/i,
+ /^шіл/i,
+ /^там/i,
+ /^қыр/i,
+ /^қаз/i,
+ /^қар/i,
+ /^жел/i
+ ],
+ any: [
+ /^қ/i,
+ /^а/i,
+ /^н/i,
+ /^с/i,
+ /^м/i,
+ /^м/i,
+ /^ш/i,
+ /^т/i,
+ /^қ/i,
+ /^қ/i,
+ /^қ/i,
+ /^ж/i
+ ]
+}
+
+var matchDayPatterns = {
+ narrow: /^(ж|д|с|с|б|ж|с)/i,
+ short: /^(жс|дс|сс|ср|бс|жм|сб)/i,
+ wide: /^(жексенбі|дүйсенбі|сейсенбі|сәрсенбі|бейсенбі|жұма|сенбі)/i
+}
+var parseDayPatterns = {
+ narrow: [/^ж/i, /^д/i, /^с/i, /^с/i, /^б/i, /^ж/i, /^с/i],
+ short: [/^жс/i, /^дс/i, /^сс/i, /^ср/i, /^бс/i, /^жм/i, /^сб/i],
+ any: [
+ /^ж[ек]/i,
+ /^д[үй]/i,
+ /^сe[й]/i,
+ /^сә[р]/i,
+ /^б[ей]/i,
+ /^ж[ұм]/i,
+ /^се[н]/i
+ ]
+}
+
+var matchDayPeriodPatterns = {
+ narrow: /^Т\.?\s?[ДК]\.?|түн ортасында|((түсте|таңертең|таңда|таңертең|таңмен|таң|күндіз|күн|кеште|кеш|түнде|түн)\.?)/i,
+ wide: /^Т\.?\s?[ДК]\.?|түн ортасында|((түсте|таңертең|таңда|таңертең|таңмен|таң|күндіз|күн|кеште|кеш|түнде|түн)\.?)/i,
+ any: /^Т\.?\s?[ДК]\.?|түн ортасында|((түсте|таңертең|таңда|таңертең|таңмен|таң|күндіз|күн|кеште|кеш|түнде|түн)\.?)/i
+}
+var parseDayPeriodPatterns = {
+ any: {
+ am: /^ТД/i,
+ pm: /^ТК/i,
+ midnight: /^түн орта/i,
+ noon: /^күндіз/i,
+ morning: /таң/i,
+ afternoon: /түс/i,
+ evening: /кеш/i,
+ night: /түн/i
+ }
+}
+
+var match = {
+ ordinalNumber: buildMatchPatternFn({
+ matchPattern: matchOrdinalNumberPattern,
+ parsePattern: parseOrdinalNumberPattern,
+ valueCallback: function(value) {
+ return parseInt(value, 10)
+ }
+ }),
+
+ era: buildMatchFn({
+ matchPatterns: matchEraPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseEraPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ quarter: buildMatchFn({
+ matchPatterns: matchQuarterPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseQuarterPatterns,
+ defaultParseWidth: 'any',
+ valueCallback: function(index) {
+ return index + 1
+ }
+ }),
+
+ month: buildMatchFn({
+ matchPatterns: matchMonthPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseMonthPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ day: buildMatchFn({
+ matchPatterns: matchDayPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseDayPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ dayPeriod: buildMatchFn({
+ matchPatterns: matchDayPeriodPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseDayPeriodPatterns,
+ defaultParseWidth: 'any'
+ })
+}
+
+export default match
diff --git a/date-fns/src/locale/kk/index.d.ts b/date-fns/src/locale/kk/index.d.ts
new file mode 100644
index 0000000..8ccf1a7
--- /dev/null
+++ b/date-fns/src/locale/kk/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { kk } from 'date-fns/locale'
+export default kk
diff --git a/date-fns/src/locale/kk/index.js b/date-fns/src/locale/kk/index.js
new file mode 100644
index 0000000..0dbe714
--- /dev/null
+++ b/date-fns/src/locale/kk/index.js
@@ -0,0 +1,28 @@
+import formatDistance from './_lib/formatDistance/index'
+import formatLong from './_lib/formatLong/index'
+import formatRelative from './_lib/formatRelative/index'
+import localize from './_lib/localize/index'
+import match from './_lib/match/index'
+
+/**
+ * @type {Locale}
+ * @category Locales
+ * @summary Kazakh locale.
+ * @language Kazakh
+ * @iso-639-2 kaz
+ * @author Nikita Bayev [@drugoi]{@link https://github.com/drugoi}
+ */
+var locale = {
+ code: 'kk',
+ formatDistance: formatDistance,
+ formatLong: formatLong,
+ formatRelative: formatRelative,
+ localize: localize,
+ match: match,
+ options: {
+ weekStartsOn: 1 /* Monday */,
+ firstWeekContainsDate: 1
+ }
+}
+
+export default locale
diff --git a/date-fns/src/locale/kk/index.js.flow b/date-fns/src/locale/kk/index.js.flow
new file mode 100644
index 0000000..b9dfe66
--- /dev/null
+++ b/date-fns/src/locale/kk/index.js.flow
@@ -0,0 +1,35 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+declare module.exports: Locale
diff --git a/date-fns/src/locale/kk/snapshot.md b/date-fns/src/locale/kk/snapshot.md
new file mode 100644
index 0000000..1daa59a
--- /dev/null
+++ b/date-fns/src/locale/kk/snapshot.md
@@ -0,0 +1,304 @@
+# Kazakh (kk) locale
+
+## `format` and `parse`
+
+| Title | Token string | Date | `format` result | `parse` result |
+| ------------------------------- | ------------ | ------------------------ | ------------------------------------------------- | ------------------------ |
+| Calendar year | yo | 1987-02-11T12:13:14.015Z | 1987-ші | 1987-01-01T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 5-ші | 0005-01-01T00:00:00.000Z |
+| Local week-numbering year | Yo | 1987-02-11T12:13:14.015Z | 1987-ші | 1986-12-29T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 5-ші | 0004-12-27T00:00:00.000Z |
+| Quarter (formatting) | Qo | 2019-01-01T12:13:14.015Z | 1-ші | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2-ші | 2019-04-01T00:00:00.000Z |
+| | QQQ | 2019-01-01T12:13:14.015Z | 1-ші тоқ. | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2-ші тоқ. | 2019-04-01T00:00:00.000Z |
+| | QQQQ | 2019-01-01T12:13:14.015Z | 1-ші тоқсан | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2-ші тоқсан | 2019-04-01T00:00:00.000Z |
+| | QQQQQ | 2019-01-01T12:13:14.015Z | 1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2 | 2019-04-01T00:00:00.000Z |
+| Quarter (stand-alone) | qo | 2019-01-01T12:13:14.015Z | 1-ші | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2-ші | 2019-04-01T00:00:00.000Z |
+| | qqq | 2019-01-01T12:13:14.015Z | 1-ші тоқ. | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2-ші тоқ. | 2019-04-01T00:00:00.000Z |
+| | qqqq | 2019-01-01T12:13:14.015Z | 1-ші тоқсан | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2-ші тоқсан | 2019-04-01T00:00:00.000Z |
+| Month (formatting) | Mo | 2019-02-11T12:13:14.015Z | 2-ші | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7-ші | 2019-07-01T00:00:00.000Z |
+| | MMM | 2019-02-11T12:13:14.015Z | ақп | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | шіл | 2019-07-01T00:00:00.000Z |
+| | MMMM | 2019-02-11T12:13:14.015Z | ақпан | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | шілде | 2019-07-01T00:00:00.000Z |
+| | MMMMM | 2019-02-11T12:13:14.015Z | А | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | Ш | 2019-07-01T00:00:00.000Z |
+| Month (stand-alone) | Lo | 2019-02-11T12:13:14.015Z | 2-ші | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7-ші | 2019-07-01T00:00:00.000Z |
+| | LLL | 2019-02-11T12:13:14.015Z | ақп | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | шіл | 2019-07-01T00:00:00.000Z |
+| | LLLL | 2019-02-11T12:13:14.015Z | ақпан | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | шілде | 2019-07-01T00:00:00.000Z |
+| | LLLLL | 2019-02-11T12:13:14.015Z | А | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | Ш | 2019-07-01T00:00:00.000Z |
+| Local week of year | wo | 2019-01-01T12:13:14.015Z | 1-ші | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48-ші | 2019-11-25T00:00:00.000Z |
+| ISO week of year | Io | 2019-01-01T12:13:14.015Z | 1-ші | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48-ші | 2019-11-25T00:00:00.000Z |
+| Day of month | do | 2019-02-11T12:13:14.015Z | 11-ші | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-28T12:13:14.015Z | 28-ші | 2019-02-28T00:00:00.000Z |
+| Day of year | Do | 2019-02-11T12:13:14.015Z | 42-ші | 2019-02-11T00:00:00.000Z |
+| | | 2019-12-31T12:13:14.015Z | 365-ші | 2019-12-31T00:00:00.000Z |
+| Day of week (formatting) | E | 2019-02-11T12:13:14.015Z | дс | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | жм | 2019-02-15T00:00:00.000Z |
+| | EE | 2019-02-11T12:13:14.015Z | дс | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | жм | 2019-02-15T00:00:00.000Z |
+| | EEE | 2019-02-11T12:13:14.015Z | дс | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | жм | 2019-02-15T00:00:00.000Z |
+| | EEEE | 2019-02-11T12:13:14.015Z | дүйсенбі | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | жұма | 2019-02-15T00:00:00.000Z |
+| | EEEEE | 2019-02-11T12:13:14.015Z | Д | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Ж | 2019-02-17T00:00:00.000Z |
+| | EEEEEE | 2019-02-11T12:13:14.015Z | дс | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | жм | 2019-02-15T00:00:00.000Z |
+| ISO day of week (formatting) | io | 2019-02-11T12:13:14.015Z | 1-ші | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5-ші | 2019-02-15T00:00:00.000Z |
+| | iii | 2019-02-11T12:13:14.015Z | дс | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | жм | 2019-02-15T00:00:00.000Z |
+| | iiii | 2019-02-11T12:13:14.015Z | дүйсенбі | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | жұма | 2019-02-15T00:00:00.000Z |
+| | iiiii | 2019-02-11T12:13:14.015Z | Д | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Ж | 2019-02-17T00:00:00.000Z |
+| | iiiiii | 2019-02-11T12:13:14.015Z | дс | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | жм | 2019-02-15T00:00:00.000Z |
+| Local day of week (formatting) | eo | 2019-02-11T12:13:14.015Z | 1-ші | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5-ші | 2019-02-15T00:00:00.000Z |
+| | eee | 2019-02-11T12:13:14.015Z | дс | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | жм | 2019-02-15T00:00:00.000Z |
+| | eeee | 2019-02-11T12:13:14.015Z | дүйсенбі | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | жұма | 2019-02-15T00:00:00.000Z |
+| | eeeee | 2019-02-11T12:13:14.015Z | Д | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Ж | 2019-02-17T00:00:00.000Z |
+| | eeeeee | 2019-02-11T12:13:14.015Z | дс | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | жм | 2019-02-15T00:00:00.000Z |
+| Local day of week (stand-alone) | co | 2019-02-11T12:13:14.015Z | 1-ші | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5-ші | 2019-02-15T00:00:00.000Z |
+| | ccc | 2019-02-11T12:13:14.015Z | дс | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | жм | 2019-02-15T00:00:00.000Z |
+| | cccc | 2019-02-11T12:13:14.015Z | дүйсенбі | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | жұма | 2019-02-15T00:00:00.000Z |
+| | ccccc | 2019-02-11T12:13:14.015Z | Д | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Ж | 2019-02-17T00:00:00.000Z |
+| | cccccc | 2019-02-11T12:13:14.015Z | дс | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | жм | 2019-02-15T00:00:00.000Z |
+| AM, PM | a | 2019-02-11T11:13:14.015Z | ТД | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | ТК | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | ТК | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ТД | 2019-02-11T00:00:00.000Z |
+| | aa | 2019-02-11T11:13:14.015Z | ТД | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | ТК | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | ТК | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ТД | 2019-02-11T00:00:00.000Z |
+| | aaa | 2019-02-11T11:13:14.015Z | тд | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | тк | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | тк | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | тд | 2019-02-11T00:00:00.000Z |
+| | aaaa | 2019-02-11T11:13:14.015Z | ТД | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | ТК | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | ТК | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ТД | 2019-02-11T00:00:00.000Z |
+| | aaaaa | 2019-02-11T11:13:14.015Z | ТД | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | ТК | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | ТК | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ТД | 2019-02-11T00:00:00.000Z |
+| AM, PM, noon, midnight | b | 2019-02-11T11:13:14.015Z | ТД | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | ТК | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | ТК | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ТД | 2019-02-11T00:00:00.000Z |
+| | bb | 2019-02-11T11:13:14.015Z | ТД | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | ТК | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | ТК | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ТД | 2019-02-11T00:00:00.000Z |
+| | bbb | 2019-02-11T11:13:14.015Z | тд | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | тк | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | тк | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | тд | 2019-02-11T00:00:00.000Z |
+| | bbbb | 2019-02-11T11:13:14.015Z | ТД | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | ТК | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | ТК | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ТД | 2019-02-11T00:00:00.000Z |
+| | bbbbb | 2019-02-11T11:13:14.015Z | ТД | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | ТК | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | ТК | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ТД | 2019-02-11T00:00:00.000Z |
+| Flexible day period | B | 2019-02-11T11:13:14.015Z | таңертең | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | күндіз | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | кеште | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | түнде | 2019-02-11T00:00:00.000Z |
+| | BB | 2019-02-11T11:13:14.015Z | таңертең | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | күндіз | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | кеште | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | түнде | 2019-02-11T00:00:00.000Z |
+| | BBB | 2019-02-11T11:13:14.015Z | таңертең | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | күндіз | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | кеште | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | түнде | 2019-02-11T00:00:00.000Z |
+| | BBBB | 2019-02-11T11:13:14.015Z | таңертең | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | күндіз | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | кеште | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | түнде | 2019-02-11T00:00:00.000Z |
+| | BBBBB | 2019-02-11T11:13:14.015Z | таң | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | күн | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | кеш | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | түн | 2019-02-11T00:00:00.000Z |
+| Hour [1-12] | ho | 2019-02-11T11:13:14.015Z | 11-ші | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11-ші | 2019-02-11T23:00:00.000Z |
+| Hour [0-23] | Ho | 2019-02-11T11:13:14.015Z | 11-ші | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23-ші | 2019-02-11T23:00:00.000Z |
+| Hour [0-11] | Ko | 2019-02-11T11:13:14.015Z | 11-ші | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11-ші | 2019-02-11T23:00:00.000Z |
+| Hour [1-24] | ko | 2019-02-11T11:13:14.015Z | 11-ші | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23-ші | 2019-02-11T23:00:00.000Z |
+| Minute | mo | 2019-01-01T12:01:14.015Z | 1-ші | 2019-01-01T12:01:00.000Z |
+| | | 2019-04-01T12:55:14.015Z | 55-ші | 2019-04-01T12:55:00.000Z |
+| Second | so | 2019-01-01T12:13:01.015Z | 1-ші | 2019-01-01T12:13:01.000Z |
+| | | 2019-04-01T12:13:55.015Z | 55-ші | 2019-04-01T12:13:55.000Z |
+| Long localized date | P | 1987-02-11T12:13:14.015Z | 11.02.1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29.05.1453 | 1453-05-29T00:00:00.000Z |
+| | PP | 1987-02-11T12:13:14.015Z | 11 ақп 1987 ж. | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 мам 1453 ж. | 1453-05-29T00:00:00.000Z |
+| | PPP | 1987-02-11T12:13:14.015Z | 11-ші ақпан 1987 ж. | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29-шы мамыр 1453 ж. | 1453-05-29T00:00:00.000Z |
+| | PPPP | 1987-02-11T12:13:14.015Z | сәрсенбі, 11-ші ақпан 1987 ж. | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | жексенбі, 29-шы мамыр 1453 ж. | 1453-05-29T00:00:00.000Z |
+| Long localized time | p | 1987-02-11T12:13:14.015Z | 12:13 | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 23:59 | 1453-05-29T23:59:00.000Z |
+| | pp | 1987-02-11T12:13:14.015Z | 12:13:14 | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 | 1453-05-29T23:59:59.000Z |
+| | ppp | 1987-02-11T12:13:14.015Z | 12:13:14 GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 GMT+0 | Errored |
+| | pppp | 1987-02-11T12:13:14.015Z | 12:13:14 GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 GMT+00:00 | Errored |
+| Combination of date and time | Pp | 1987-02-11T12:13:14.015Z | 11.02.1987, 12:13 | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29.05.1453, 23:59 | 1453-05-29T23:59:00.000Z |
+| | PPpp | 1987-02-11T12:13:14.015Z | 11 ақп 1987 ж., 12:13:14 | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 мам 1453 ж., 23:59:59 | 1453-05-29T23:59:59.000Z |
+| | PPPppp | 1987-02-11T12:13:14.015Z | 11-ші ақпан 1987 ж., 12:13:14 GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 29-шы мамыр 1453 ж., 23:59:59 GMT+0 | Errored |
+| | PPPPpppp | 1987-02-11T12:13:14.015Z | сәрсенбі, 11-ші ақпан 1987 ж., 12:13:14 GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | жексенбі, 29-шы мамыр 1453 ж., 23:59:59 GMT+00:00 | Errored |
+
+## `formatDistance`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `includeSeconds: true` | `addSuffix: true` |
+| ------------------------ | --------------- | ---------------------- | ------------------------ |
+| 2006-01-01T00:00:00.000Z | шамамен 6 жыл | шамамен 6 жыл | шамамен 6 жылдан кейін |
+| 2005-01-01T00:00:00.000Z | шамамен 5 жыл | шамамен 5 жыл | шамамен 5 жылдан кейін |
+| 2004-01-01T00:00:00.000Z | шамамен 4 жыл | шамамен 4 жыл | шамамен 4 жылдан кейін |
+| 2003-01-01T00:00:00.000Z | шамамен 3 жыл | шамамен 3 жыл | шамамен 3 жылдан кейін |
+| 2002-01-01T00:00:00.000Z | шамамен 2 жыл | шамамен 2 жыл | шамамен 2 жылдан кейін |
+| 2001-06-01T00:00:00.000Z | 1 жылдан астам | 1 жылдан астам | 1 жылдан астам |
+| 2001-02-01T00:00:00.000Z | шамамен 1 жыл | шамамен 1 жыл | шамамен 1 жылдан кейін |
+| 2001-01-01T00:00:00.000Z | шамамен 1 жыл | шамамен 1 жыл | шамамен 1 жылдан кейін |
+| 2000-06-01T00:00:00.000Z | 5 ай | 5 ай | 5 ай кейін |
+| 2000-03-01T00:00:00.000Z | 2 ай | 2 ай | 2 ай кейін |
+| 2000-02-01T00:00:00.000Z | шамамен 1 ай | шамамен 1 ай | шамамен 1 айдан кейін |
+| 2000-01-15T00:00:00.000Z | 14 күн | 14 күн | 14 күннен кейін |
+| 2000-01-02T00:00:00.000Z | 1 күн | 1 күн | 1 күннен кейін |
+| 2000-01-01T06:00:00.000Z | шамамен 6 сағат | шамамен 6 сағат | шамамен 6 сағаттан кейін |
+| 2000-01-01T01:00:00.000Z | шамамен 1 сағат | шамамен 1 сағат | шамамен 1 сағаттан кейін |
+| 2000-01-01T00:45:00.000Z | шамамен 1 сағат | шамамен 1 сағат | шамамен 1 сағаттан кейін |
+| 2000-01-01T00:30:00.000Z | 30 минут | 30 минут | 30 минуттан кейін |
+| 2000-01-01T00:15:00.000Z | 15 минут | 15 минут | 15 минуттан кейін |
+| 2000-01-01T00:01:00.000Z | 1 минут | 1 минут | 1 минуттан кейін |
+| 2000-01-01T00:00:25.000Z | 1 минуттан аз | жарты минут | минуттан кем |
+| 2000-01-01T00:00:15.000Z | 1 минуттан аз | 20 секундтан аз | минуттан кем |
+| 2000-01-01T00:00:05.000Z | 1 минуттан аз | 10 секундтан аз | минуттан кем |
+| 2000-01-01T00:00:00.000Z | 1 минуттан аз | 5 секундтан аз | 1 минуттан аз бұрын |
+| 1999-12-31T23:59:55.000Z | 1 минуттан аз | 10 секундтан аз | 1 минуттан аз бұрын |
+| 1999-12-31T23:59:45.000Z | 1 минуттан аз | 20 секундтан аз | 1 минуттан аз бұрын |
+| 1999-12-31T23:59:35.000Z | 1 минуттан аз | жарты минут | 1 минуттан аз бұрын |
+| 1999-12-31T23:59:00.000Z | 1 минут | 1 минут | 1 минут бұрын |
+| 1999-12-31T23:45:00.000Z | 15 минут | 15 минут | 15 минут бұрын |
+| 1999-12-31T23:30:00.000Z | 30 минут | 30 минут | 30 минут бұрын |
+| 1999-12-31T23:15:00.000Z | шамамен 1 сағат | шамамен 1 сағат | шамамен 1 сағат бұрын |
+| 1999-12-31T23:00:00.000Z | шамамен 1 сағат | шамамен 1 сағат | шамамен 1 сағат бұрын |
+| 1999-12-31T18:00:00.000Z | шамамен 6 сағат | шамамен 6 сағат | шамамен 6 сағат бұрын |
+| 1999-12-30T00:00:00.000Z | 2 күн | 2 күн | 2 күн бұрын |
+| 1999-12-15T00:00:00.000Z | 17 күн | 17 күн | 17 күн бұрын |
+| 1999-12-01T00:00:00.000Z | шамамен 1 ай | шамамен 1 ай | шамамен 1 ай бұрын |
+| 1999-11-01T00:00:00.000Z | 2 ай | 2 ай | 2 ай бұрын |
+| 1999-06-01T00:00:00.000Z | 7 ай | 7 ай | 7 ай бұрын |
+| 1999-01-01T00:00:00.000Z | шамамен 1 жыл | шамамен 1 жыл | шамамен 1 жыл бұрын |
+| 1998-12-01T00:00:00.000Z | шамамен 1 жыл | шамамен 1 жыл | шамамен 1 жыл бұрын |
+| 1998-06-01T00:00:00.000Z | 1 жылдан астам | 1 жылдан астам | 1 жылдан астам бұрын |
+| 1998-01-01T00:00:00.000Z | шамамен 2 жыл | шамамен 2 жыл | шамамен 2 жыл бұрын |
+| 1997-01-01T00:00:00.000Z | шамамен 3 жыл | шамамен 3 жыл | шамамен 3 жыл бұрын |
+| 1996-01-01T00:00:00.000Z | шамамен 4 жыл | шамамен 4 жыл | шамамен 4 жыл бұрын |
+| 1995-01-01T00:00:00.000Z | шамамен 5 жыл | шамамен 5 жыл | шамамен 5 жыл бұрын |
+| 1994-01-01T00:00:00.000Z | шамамен 6 жыл | шамамен 6 жыл | шамамен 6 жыл бұрын |
+
+## `formatDistanceStrict`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `addSuffix: true` | With forced unit (i.e. `hour`) |
+| ------------------------ | --------- | ------------------ | ------------------------------ |
+| 2006-01-01T00:00:00.000Z | 6 жыл | 6 жылдан кейін | 52608 сағат |
+| 2005-01-01T00:00:00.000Z | 5 жыл | 5 жылдан кейін | 43848 сағат |
+| 2004-01-01T00:00:00.000Z | 4 жыл | 4 жылдан кейін | 35064 сағат |
+| 2003-01-01T00:00:00.000Z | 3 жыл | 3 жылдан кейін | 26304 сағат |
+| 2002-01-01T00:00:00.000Z | 2 жыл | 2 жылдан кейін | 17544 сағат |
+| 2001-06-01T00:00:00.000Z | 1 жыл | 1 жылдан кейін | 12408 сағат |
+| 2001-02-01T00:00:00.000Z | 1 жыл | 1 жылдан кейін | 9528 сағат |
+| 2001-01-01T00:00:00.000Z | 1 жыл | 1 жылдан кейін | 8784 сағат |
+| 2000-06-01T00:00:00.000Z | 5 ай | 5 ай кейін | 3648 сағат |
+| 2000-03-01T00:00:00.000Z | 2 ай | 2 ай кейін | 1440 сағат |
+| 2000-02-01T00:00:00.000Z | 1 ай | 1 ай кейін | 744 сағат |
+| 2000-01-15T00:00:00.000Z | 14 күн | 14 күннен кейін | 336 сағат |
+| 2000-01-02T00:00:00.000Z | 1 күн | 1 күннен кейін | 24 сағат |
+| 2000-01-01T06:00:00.000Z | 6 сағат | 6 сағат кейін | 6 сағат |
+| 2000-01-01T01:00:00.000Z | 1 сағат | 1 сағат кейін | 1 сағат |
+| 2000-01-01T00:45:00.000Z | 45 минут | 45 минуттан кейін | 1 сағат |
+| 2000-01-01T00:30:00.000Z | 30 минут | 30 минуттан кейін | 1 сағат |
+| 2000-01-01T00:15:00.000Z | 15 минут | 15 минуттан кейін | 0 сағат |
+| 2000-01-01T00:01:00.000Z | 1 минут | 1 минуттан кейін | 0 сағат |
+| 2000-01-01T00:00:25.000Z | 25 секунд | 25 секундтан кейін | 0 сағат |
+| 2000-01-01T00:00:15.000Z | 15 секунд | 15 секундтан кейін | 0 сағат |
+| 2000-01-01T00:00:05.000Z | 5 секунд | 5 секундтан кейін | 0 сағат |
+| 2000-01-01T00:00:00.000Z | 0 секунд | 0 секунд бұрын | 0 сағат |
+| 1999-12-31T23:59:55.000Z | 5 секунд | 5 секунд бұрын | 0 сағат |
+| 1999-12-31T23:59:45.000Z | 15 секунд | 15 секунд бұрын | 0 сағат |
+| 1999-12-31T23:59:35.000Z | 25 секунд | 25 секунд бұрын | 0 сағат |
+| 1999-12-31T23:59:00.000Z | 1 минут | 1 минут бұрын | 0 сағат |
+| 1999-12-31T23:45:00.000Z | 15 минут | 15 минут бұрын | 0 сағат |
+| 1999-12-31T23:30:00.000Z | 30 минут | 30 минут бұрын | 1 сағат |
+| 1999-12-31T23:15:00.000Z | 45 минут | 45 минут бұрын | 1 сағат |
+| 1999-12-31T23:00:00.000Z | 1 сағат | 1 сағат бұрын | 1 сағат |
+| 1999-12-31T18:00:00.000Z | 6 сағат | 6 сағат бұрын | 6 сағат |
+| 1999-12-30T00:00:00.000Z | 2 күн | 2 күн бұрын | 48 сағат |
+| 1999-12-15T00:00:00.000Z | 17 күн | 17 күн бұрын | 408 сағат |
+| 1999-12-01T00:00:00.000Z | 1 ай | 1 ай бұрын | 744 сағат |
+| 1999-11-01T00:00:00.000Z | 2 ай | 2 ай бұрын | 1464 сағат |
+| 1999-06-01T00:00:00.000Z | 7 ай | 7 ай бұрын | 5136 сағат |
+| 1999-01-01T00:00:00.000Z | 1 жыл | 1 жыл бұрын | 8760 сағат |
+| 1998-12-01T00:00:00.000Z | 1 жыл | 1 жыл бұрын | 9504 сағат |
+| 1998-06-01T00:00:00.000Z | 2 жыл | 2 жыл бұрын | 13896 сағат |
+| 1998-01-01T00:00:00.000Z | 2 жыл | 2 жыл бұрын | 17520 сағат |
+| 1997-01-01T00:00:00.000Z | 3 жыл | 3 жыл бұрын | 26280 сағат |
+| 1996-01-01T00:00:00.000Z | 4 жыл | 4 жыл бұрын | 35064 сағат |
+| 1995-01-01T00:00:00.000Z | 5 жыл | 5 жыл бұрын | 43824 сағат |
+| 1994-01-01T00:00:00.000Z | 6 жыл | 6 жыл бұрын | 52584 сағат |
+
+## `formatRelative`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result |
+| ------------------------ | ------------------------------- |
+| 2000-01-10T00:00:00.000Z | 10.01.2000 |
+| 2000-01-05T00:00:00.000Z | келесі сәрсенбіде сағат 0:00-де |
+| 2000-01-02T00:00:00.000Z | ертең сағат 0:00-де |
+| 2000-01-01T00:00:00.000Z | бүгін сағат 0:00-де |
+| 1999-12-31T00:00:00.000Z | кеше сағат 0:00-де |
+| 1999-12-27T00:00:00.000Z | дүйсенбіде сағат 0:00-де |
+| 1999-12-21T00:00:00.000Z | 21.12.1999 |
diff --git a/date-fns/src/locale/kn/_lib/formatDistance/index.js b/date-fns/src/locale/kn/_lib/formatDistance/index.js
new file mode 100644
index 0000000..a658c64
--- /dev/null
+++ b/date-fns/src/locale/kn/_lib/formatDistance/index.js
@@ -0,0 +1,203 @@
+var formatDistanceLocale = {
+ lessThanXSeconds: {
+ one: {
+ default: '1 ಸೆಕೆಂಡ್‌ಗಿಂತ ಕಡಿಮೆ',
+ future: '1 ಸೆಕೆಂಡ್‌ಗಿಂತ ಕಡಿಮೆ',
+ past: '1 ಸೆಕೆಂಡ್‌ಗಿಂತ ಕಡಿಮೆ'
+ },
+ other: {
+ default: '{{count}} ಸೆಕೆಂಡ್‌ಗಿಂತ ಕಡಿಮೆ',
+ future: '{{count}} ಸೆಕೆಂಡ್‌ಗಿಂತ ಕಡಿಮೆ',
+ past: '{{count}} ಸೆಕೆಂಡ್‌ಗಿಂತ ಕಡಿಮೆ'
+ }
+ },
+
+ xSeconds: {
+ one: {
+ default: '1 ಸೆಕೆಂಡ್',
+ future: '1 ಸೆಕೆಂಡ್‌ನಲ್ಲಿ',
+ past: '1 ಸೆಕೆಂಡ್ ಹಿಂದೆ'
+ },
+ other: {
+ default: '{{count}} ಸೆಕೆಂಡುಗಳು',
+ future: '{{count}} ಸೆಕೆಂಡ್‌ಗಳಲ್ಲಿ',
+ past: '{{count}} ಸೆಕೆಂಡ್ ಹಿಂದೆ'
+ }
+ },
+
+ halfAMinute: {
+ other: {
+ default: 'ಅರ್ಧ ನಿಮಿಷ',
+ future: 'ಅರ್ಧ ನಿಮಿಷದಲ್ಲಿ',
+ past: 'ಅರ್ಧ ನಿಮಿಷದ ಹಿಂದೆ'
+ }
+ },
+
+ lessThanXMinutes: {
+ one: {
+ default: '1 ನಿಮಿಷಕ್ಕಿಂತ ಕಡಿಮೆ',
+ future: '1 ನಿಮಿಷಕ್ಕಿಂತ ಕಡಿಮೆ',
+ past: '1 ನಿಮಿಷಕ್ಕಿಂತ ಕಡಿಮೆ'
+ },
+ other: {
+ default: '{{count}} ನಿಮಿಷಕ್ಕಿಂತ ಕಡಿಮೆ',
+ future: '{{count}} ನಿಮಿಷಕ್ಕಿಂತ ಕಡಿಮೆ',
+ past: '{{count}} ನಿಮಿಷಕ್ಕಿಂತ ಕಡಿಮೆ'
+ }
+ },
+
+ xMinutes: {
+ one: {
+ default: '1 ನಿಮಿಷ',
+ future: '1 ನಿಮಿಷದಲ್ಲಿ',
+ past: '1 ನಿಮಿಷದ ಹಿಂದೆ'
+ },
+ other: {
+ default: '{{count}} ನಿಮಿಷಗಳು',
+ future: '{{count}} ನಿಮಿಷಗಳಲ್ಲಿ',
+ past: '{{count}} ನಿಮಿಷಗಳ ಹಿಂದೆ'
+ }
+ },
+
+ aboutXHours: {
+ one: {
+ default: 'ಸುಮಾರು 1 ಗಂಟೆ',
+ future: 'ಸುಮಾರು 1 ಗಂಟೆಯಲ್ಲಿ',
+ past: 'ಸುಮಾರು 1 ಗಂಟೆ ಹಿಂದೆ'
+ },
+ other: {
+ default: 'ಸುಮಾರು {{count}} ಗಂಟೆಗಳು',
+ future: 'ಸುಮಾರು {{count}} ಗಂಟೆಗಳಲ್ಲಿ',
+ past: 'ಸುಮಾರು {{count}} ಗಂಟೆಗಳ ಹಿಂದೆ'
+ }
+ },
+
+ xHours: {
+ one: {
+ default: '1 ಗಂಟೆ',
+ future: '1 ಗಂಟೆಯಲ್ಲಿ',
+ past: '1 ಗಂಟೆ ಹಿಂದೆ'
+ },
+ other: {
+ default: '{{count}} ಗಂಟೆಗಳು',
+ future: '{{count}} ಗಂಟೆಗಳಲ್ಲಿ',
+ past: '{{count}} ಗಂಟೆಗಳ ಹಿಂದೆ'
+ }
+ },
+
+ xDays: {
+ one: {
+ default: '1 ದಿನ',
+ future: '1 ದಿನದಲ್ಲಿ',
+ past: '1 ದಿನದ ಹಿಂದೆ'
+ },
+ other: {
+ default: '{{count}} ದಿನಗಳು',
+ future: '{{count}} ದಿನಗಳಲ್ಲಿ',
+ past: '{{count}} ದಿನಗಳ ಹಿಂದೆ'
+ }
+ },
+
+ aboutXMonths: {
+ one: {
+ default: 'ಸುಮಾರು 1 ತಿಂಗಳು',
+ future: 'ಸುಮಾರು 1 ತಿಂಗಳಲ್ಲಿ',
+ past: 'ಸುಮಾರು 1 ತಿಂಗಳ ಹಿಂದೆ'
+ },
+ other: {
+ default: 'ಸುಮಾರು {{count}} ತಿಂಗಳು',
+ future: 'ಸುಮಾರು {{count}} ತಿಂಗಳುಗಳಲ್ಲಿ',
+ past: 'ಸುಮಾರು {{count}} ತಿಂಗಳುಗಳ ಹಿಂದೆ'
+ }
+ },
+
+ xMonths: {
+ one: {
+ default: '1 ತಿಂಗಳು',
+ future: '1 ತಿಂಗಳಲ್ಲಿ',
+ past: '1 ತಿಂಗಳ ಹಿಂದೆ'
+ },
+ other: {
+ default: '{{count}} ತಿಂಗಳು',
+ future: '{{count}} ತಿಂಗಳುಗಳಲ್ಲಿ',
+ past: '{{count}} ತಿಂಗಳುಗಳ ಹಿಂದೆ'
+ }
+ },
+
+ aboutXYears: {
+ one: {
+ default: 'ಸುಮಾರು 1 ವರ್ಷ',
+ future: 'ಸುಮಾರು 1 ವರ್ಷದಲ್ಲಿ',
+ past: 'ಸುಮಾರು 1 ವರ್ಷದ ಹಿಂದೆ'
+ },
+ other: {
+ default: 'ಸುಮಾರು {{count}} ವರ್ಷಗಳು',
+ future: 'ಸುಮಾರು {{count}} ವರ್ಷಗಳಲ್ಲಿ',
+ past: 'ಸುಮಾರು {{count}} ವರ್ಷಗಳ ಹಿಂದೆ'
+ }
+ },
+
+ xYears: {
+ one: {
+ default: '1 ವರ್ಷ',
+ future: '1 ವರ್ಷದಲ್ಲಿ',
+ past: '1 ವರ್ಷದ ಹಿಂದೆ'
+ },
+ other: {
+ default: '{{count}} ವರ್ಷಗಳು',
+ future: '{{count}} ವರ್ಷಗಳಲ್ಲಿ',
+ past: '{{count}} ವರ್ಷಗಳ ಹಿಂದೆ'
+ }
+ },
+
+ overXYears: {
+ one: {
+ default: '1 ವರ್ಷದ ಮೇಲೆ',
+ future: '1 ವರ್ಷದ ಮೇಲೆ',
+ past: '1 ವರ್ಷದ ಮೇಲೆ'
+ },
+ other: {
+ default: '{{count}} ವರ್ಷಗಳ ಮೇಲೆ',
+ future: '{{count}} ವರ್ಷಗಳ ಮೇಲೆ',
+ past: '{{count}} ವರ್ಷಗಳ ಮೇಲೆ'
+ }
+ },
+
+ almostXYears: {
+ one: {
+ default: 'ಬಹುತೇಕ 1 ವರ್ಷದಲ್ಲಿ',
+ future: 'ಬಹುತೇಕ 1 ವರ್ಷದಲ್ಲಿ',
+ past: 'ಬಹುತೇಕ 1 ವರ್ಷದಲ್ಲಿ'
+ },
+ other: {
+ default: 'ಬಹುತೇಕ {{count}} ವರ್ಷಗಳಲ್ಲಿ',
+ future: 'ಬಹುತೇಕ {{count}} ವರ್ಷಗಳಲ್ಲಿ',
+ past: 'ಬಹುತೇಕ {{count}} ವರ್ಷಗಳಲ್ಲಿ'
+ }
+ }
+}
+
+function getResultByTense(parentToken, options) {
+ if (options.addSuffix) {
+ if (options.comparison > 0) {
+ return parentToken.future
+ } else {
+ return parentToken.past
+ }
+ }
+ return parentToken.default
+}
+
+export default function formatDistance(token, count, options) {
+ options = options || {}
+
+ var result
+ if (typeof formatDistanceLocale[token] === 'string') {
+ result = formatDistanceLocale[token]
+ } else if (count === 1) {
+ result = getResultByTense(formatDistanceLocale[token].one, options)
+ } else {
+ result = getResultByTense(formatDistanceLocale[token].other, options)
+ }
+ return result.replace('{{count}}', count)
+}
diff --git a/date-fns/src/locale/kn/_lib/formatLong/index.js b/date-fns/src/locale/kn/_lib/formatLong/index.js
new file mode 100644
index 0000000..124112a
--- /dev/null
+++ b/date-fns/src/locale/kn/_lib/formatLong/index.js
@@ -0,0 +1,42 @@
+// Reference: https://www.unicode.org/cldr/charts/32/summary/kn.html
+import buildFormatLongFn from '../../../_lib/buildFormatLongFn/index'
+
+var dateFormats = {
+ full: 'EEEE, MMMM d, y', // CLDR 1816
+ long: 'MMMM d, y', // CLDR 1817
+ medium: 'MMM d, y', // CLDR 1818
+ short: 'd/M/yy' // CLDR 1819
+}
+
+var timeFormats = {
+ full: 'hh:mm:ss a zzzz', // CLDR 1820
+ long: 'hh:mm:ss a z', // CLDR 1821
+ medium: 'hh:mm:ss a', // CLDR 1822
+ short: 'hh:mm a' // CLDR 1823
+}
+
+var dateTimeFormats = {
+ full: '{{date}} {{time}}', // CLDR 1824
+ long: '{{date}} {{time}}', // CLDR 1825
+ medium: '{{date}} {{time}}', // CLDR 1826
+ short: '{{date}} {{time}}' // CLDR 1827
+}
+
+var formatLong = {
+ date: buildFormatLongFn({
+ formats: dateFormats,
+ defaultWidth: 'full'
+ }),
+
+ time: buildFormatLongFn({
+ formats: timeFormats,
+ defaultWidth: 'full'
+ }),
+
+ dateTime: buildFormatLongFn({
+ formats: dateTimeFormats,
+ defaultWidth: 'full'
+ })
+}
+
+export default formatLong
diff --git a/date-fns/src/locale/kn/_lib/formatRelative/index.js b/date-fns/src/locale/kn/_lib/formatRelative/index.js
new file mode 100644
index 0000000..aefa301
--- /dev/null
+++ b/date-fns/src/locale/kn/_lib/formatRelative/index.js
@@ -0,0 +1,12 @@
+var formatRelativeLocale = {
+ lastWeek: "'ಕಳೆದ' eeee p 'ಕ್ಕೆ'",
+ yesterday: "'ನಿನ್ನೆ' p 'ಕ್ಕೆ'",
+ today: "'ಇಂದು' p 'ಕ್ಕೆ'",
+ tomorrow: "'ನಾಳೆ' p 'ಕ್ಕೆ'",
+ nextWeek: "eeee p 'ಕ್ಕೆ'",
+ other: 'P'
+}
+
+export default function formatRelative(token, _date, _baseDate, _options) {
+ return formatRelativeLocale[token]
+}
diff --git a/date-fns/src/locale/kn/_lib/localize/index.js b/date-fns/src/locale/kn/_lib/localize/index.js
new file mode 100644
index 0000000..cfe8e26
--- /dev/null
+++ b/date-fns/src/locale/kn/_lib/localize/index.js
@@ -0,0 +1,171 @@
+// Reference: https://www.unicode.org/cldr/charts/32/summary/kn.html
+
+import buildLocalizeFn from '../../../_lib/buildLocalizeFn/index'
+
+var eraValues = {
+ narrow: ['ಕ್ರಿ.ಪೂ', 'ಕ್ರಿ.ಶ'],
+ abbreviated: ['ಕ್ರಿ.ಪೂ', 'ಕ್ರಿ.ಶ'], // CLDR #1618, #1620
+ wide: ['ಕ್ರಿಸ್ತ ಪೂರ್ವ', 'ಕ್ರಿಸ್ತ ಶಕ'] // CLDR #1614, #1616
+}
+
+var quarterValues = {
+ narrow: ['1', '2', '3', '4'],
+ abbreviated: ['ತ್ರೈ 1', 'ತ್ರೈ 2', 'ತ್ರೈ 3', 'ತ್ರೈ 4'], // CLDR #1630 - #1638
+ wide: ['1ನೇ ತ್ರೈಮಾಸಿಕ', '2ನೇ ತ್ರೈಮಾಸಿಕ', '3ನೇ ತ್ರೈಮಾಸಿಕ', '4ನೇ ತ್ರೈಮಾಸಿಕ'] // CLDR #1622 - #1629
+}
+
+// CLDR #1646 - #1717
+var monthValues = {
+ narrow: ['ಜ', 'ಫೆ', 'ಮಾ', 'ಏ', 'ಮೇ', 'ಜೂ', 'ಜು', 'ಆ', 'ಸೆ', 'ಅ', 'ನ', 'ಡಿ'],
+ abbreviated: [
+ 'ಜನ',
+ 'ಫೆಬ್ರ',
+ 'ಮಾರ್ಚ್',
+ 'ಏಪ್ರಿ',
+ 'ಮೇ',
+ 'ಜೂನ್',
+ 'ಜುಲೈ',
+ 'ಆಗ',
+ 'ಸೆಪ್ಟೆಂ',
+ 'ಅಕ್ಟೋ',
+ 'ನವೆಂ',
+ 'ಡಿಸೆಂ'
+ ],
+ wide: [
+ 'ಜನವರಿ',
+ 'ಫೆಬ್ರವರಿ',
+ 'ಮಾರ್ಚ್',
+ 'ಏಪ್ರಿಲ್',
+ 'ಮೇ',
+ 'ಜೂನ್',
+ 'ಜುಲೈ',
+ 'ಆಗಸ್ಟ್',
+ 'ಸೆಪ್ಟೆಂಬರ್',
+ 'ಅಕ್ಟೋಬರ್',
+ 'ನವೆಂಬರ್',
+ 'ಡಿಸೆಂಬರ್'
+ ]
+}
+
+// CLDR #1718 - #1773
+var dayValues = {
+ narrow: ['ಭಾ', 'ಸೋ', 'ಮಂ', 'ಬು', 'ಗು', 'ಶು', 'ಶ'],
+ short: ['ಭಾನು', 'ಸೋಮ', 'ಮಂಗಳ', 'ಬುಧ', 'ಗುರು', 'ಶುಕ್ರ', 'ಶನಿ'],
+ abbreviated: ['ಭಾನು', 'ಸೋಮ', 'ಮಂಗಳ', 'ಬುಧ', 'ಗುರು', 'ಶುಕ್ರ', 'ಶನಿ'],
+ wide: [
+ 'ಭಾನುವಾರ',
+ 'ಸೋಮವಾರ',
+ 'ಮಂಗಳವಾರ',
+ 'ಬುಧವಾರ',
+ 'ಗುರುವಾರ',
+ 'ಶುಕ್ರವಾರ',
+ 'ಶನಿವಾರ'
+ ]
+}
+
+// CLDR #1774 - #1815
+var dayPeriodValues = {
+ narrow: {
+ am: 'ಪೂರ್ವಾಹ್ನ',
+ pm: 'ಅಪರಾಹ್ನ',
+ midnight: 'ಮಧ್ಯರಾತ್ರಿ',
+ noon: 'ಮಧ್ಯಾಹ್ನ',
+ morning: 'ಬೆಳಗ್ಗೆ',
+ afternoon: 'ಮಧ್ಯಾಹ್ನ',
+ evening: 'ಸಂಜೆ',
+ night: 'ರಾತ್ರಿ'
+ },
+ abbreviated: {
+ am: 'ಪೂರ್ವಾಹ್ನ',
+ pm: 'ಅಪರಾಹ್ನ',
+ midnight: 'ಮಧ್ಯರಾತ್ರಿ',
+ noon: 'ಮಧ್ಯಾನ್ಹ',
+ morning: 'ಬೆಳಗ್ಗೆ',
+ afternoon: 'ಮಧ್ಯಾನ್ಹ',
+ evening: 'ಸಂಜೆ',
+ night: 'ರಾತ್ರಿ'
+ },
+ wide: {
+ am: 'ಪೂರ್ವಾಹ್ನ',
+ pm: 'ಅಪರಾಹ್ನ',
+ midnight: 'ಮಧ್ಯರಾತ್ರಿ',
+ noon: 'ಮಧ್ಯಾನ್ಹ',
+ morning: 'ಬೆಳಗ್ಗೆ',
+ afternoon: 'ಮಧ್ಯಾನ್ಹ',
+ evening: 'ಸಂಜೆ',
+ night: 'ರಾತ್ರಿ'
+ }
+}
+var formattingDayPeriodValues = {
+ narrow: {
+ am: 'ಪೂ',
+ pm: 'ಅ',
+ midnight: 'ಮಧ್ಯರಾತ್ರಿ',
+ noon: 'ಮಧ್ಯಾನ್ಹ',
+ morning: 'ಬೆಳಗ್ಗೆ',
+ afternoon: 'ಮಧ್ಯಾನ್ಹ',
+ evening: 'ಸಂಜೆ',
+ night: 'ರಾತ್ರಿ'
+ },
+ abbreviated: {
+ am: 'ಪೂರ್ವಾಹ್ನ',
+ pm: 'ಅಪರಾಹ್ನ',
+ midnight: 'ಮಧ್ಯ ರಾತ್ರಿ',
+ noon: 'ಮಧ್ಯಾನ್ಹ',
+ morning: 'ಬೆಳಗ್ಗೆ',
+ afternoon: 'ಮಧ್ಯಾನ್ಹ',
+ evening: 'ಸಂಜೆ',
+ night: 'ರಾತ್ರಿ'
+ },
+ wide: {
+ am: 'ಪೂರ್ವಾಹ್ನ',
+ pm: 'ಅಪರಾಹ್ನ',
+ midnight: 'ಮಧ್ಯ ರಾತ್ರಿ',
+ noon: 'ಮಧ್ಯಾನ್ಹ',
+ morning: 'ಬೆಳಗ್ಗೆ',
+ afternoon: 'ಮಧ್ಯಾನ್ಹ',
+ evening: 'ಸಂಜೆ',
+ night: 'ರಾತ್ರಿ'
+ }
+}
+
+function ordinalNumber(dirtyNumber, _dirtyOptions) {
+ var number = Number(dirtyNumber)
+ return number + 'ನೇ'
+}
+
+var localize = {
+ ordinalNumber: ordinalNumber,
+
+ era: buildLocalizeFn({
+ values: eraValues,
+ defaultWidth: 'wide'
+ }),
+
+ quarter: buildLocalizeFn({
+ values: quarterValues,
+ defaultWidth: 'wide',
+ argumentCallback: function(quarter) {
+ return Number(quarter) - 1
+ }
+ }),
+
+ month: buildLocalizeFn({
+ values: monthValues,
+ defaultWidth: 'wide'
+ }),
+
+ day: buildLocalizeFn({
+ values: dayValues,
+ defaultWidth: 'wide'
+ }),
+
+ dayPeriod: buildLocalizeFn({
+ values: dayPeriodValues,
+ defaultWidth: 'wide',
+ formattingValues: formattingDayPeriodValues,
+ defaultFormattingWidth: 'wide'
+ })
+}
+
+export default localize
diff --git a/date-fns/src/locale/kn/_lib/match/index.js b/date-fns/src/locale/kn/_lib/match/index.js
new file mode 100644
index 0000000..0c3b0f1
--- /dev/null
+++ b/date-fns/src/locale/kn/_lib/match/index.js
@@ -0,0 +1,137 @@
+import buildMatchPatternFn from '../../../_lib/buildMatchPatternFn/index'
+import buildMatchFn from '../../../_lib/buildMatchFn/index'
+
+var matchOrdinalNumberPattern = /^(\d+)(ನೇ|ನೆ)?/i
+var parseOrdinalNumberPattern = /\d+/i
+
+var matchEraPatterns = {
+ narrow: /^(ಕ್ರಿ.ಪೂ|ಕ್ರಿ.ಶ)/i,
+ abbreviated: /^(ಕ್ರಿ\.?\s?ಪೂ\.?|ಕ್ರಿ\.?\s?ಶ\.?|ಪ್ರ\.?\s?ಶ\.?)/i,
+ wide: /^(ಕ್ರಿಸ್ತ ಪೂರ್ವ|ಕ್ರಿಸ್ತ ಶಕ|ಪ್ರಸಕ್ತ ಶಕ)/i
+}
+var parseEraPatterns = {
+ any: [/^ಪೂ/i, /^(ಶ|ಪ್ರ)/i]
+}
+
+var matchQuarterPatterns = {
+ narrow: /^[1234]/i,
+ abbreviated: /^ತ್ರೈ[1234]|ತ್ರೈ [1234]| [1234]ತ್ರೈ/i,
+ wide: /^[1234](ನೇ)? ತ್ರೈಮಾಸಿಕ/i
+}
+var parseQuarterPatterns = {
+ any: [/1/i, /2/i, /3/i, /4/i]
+}
+
+var matchMonthPatterns = {
+ narrow: /^(ಜೂ|ಜು|ಜ|ಫೆ|ಮಾ|ಏ|ಮೇ|ಆ|ಸೆ|ಅ|ನ|ಡಿ)/i,
+ abbreviated: /^(ಜನ|ಫೆಬ್ರ|ಮಾರ್ಚ್|ಏಪ್ರಿ|ಮೇ|ಜೂನ್|ಜುಲೈ|ಆಗ|ಸೆಪ್ಟೆಂ|ಅಕ್ಟೋ|ನವೆಂ|ಡಿಸೆಂ)/i,
+ wide: /^(ಜನವರಿ|ಫೆಬ್ರವರಿ|ಮಾರ್ಚ್|ಏಪ್ರಿಲ್|ಮೇ|ಜೂನ್|ಜುಲೈ|ಆಗಸ್ಟ್|ಸೆಪ್ಟೆಂಬರ್|ಅಕ್ಟೋಬರ್|ನವೆಂಬರ್|ಡಿಸೆಂಬರ್)/i
+}
+var parseMonthPatterns = {
+ narrow: [
+ /^ಜ$/i,
+ /^ಫೆ/i,
+ /^ಮಾ/i,
+ /^ಏ/i,
+ /^ಮೇ/i,
+ /^ಜೂ/i,
+ /^ಜು$/i,
+ /^ಆ/i,
+ /^ಸೆ/i,
+ /^ಅ/i,
+ /^ನ/i,
+ /^ಡಿ/i
+ ],
+ any: [
+ /^ಜನ/i,
+ /^ಫೆ/i,
+ /^ಮಾ/i,
+ /^ಏ/i,
+ /^ಮೇ/i,
+ /^ಜೂನ್/i,
+ /^ಜುಲೈ/i,
+ /^ಆ/i,
+ /^ಸೆ/i,
+ /^ಅ/i,
+ /^ನ/i,
+ /^ಡಿ/i
+ ]
+}
+
+var matchDayPatterns = {
+ narrow: /^(ಭಾ|ಸೋ|ಮ|ಬು|ಗು|ಶು|ಶ)/i,
+ short: /^(ಭಾನು|ಸೋಮ|ಮಂಗಳ|ಬುಧ|ಗುರು|ಶುಕ್ರ|ಶನಿ)/i,
+ abbreviated: /^(ಭಾನು|ಸೋಮ|ಮಂಗಳ|ಬುಧ|ಗುರು|ಶುಕ್ರ|ಶನಿ)/i,
+ wide: /^(ಭಾನುವಾರ|ಸೋಮವಾರ|ಮಂಗಳವಾರ|ಬುಧವಾರ|ಗುರುವಾರ|ಶುಕ್ರವಾರ|ಶನಿವಾರ)/i
+}
+var parseDayPatterns = {
+ narrow: [/^ಭಾ/i, /^ಸೋ/i, /^ಮ/i, /^ಬು/i, /^ಗು/i, /^ಶು/i, /^ಶ/i],
+ any: [/^ಭಾ/i, /^ಸೋ/i, /^ಮ/i, /^ಬು/i, /^ಗು/i, /^ಶು/i, /^ಶ/i]
+}
+
+var matchDayPeriodPatterns = {
+ narrow: /^(ಪೂ|ಅ|ಮಧ್ಯರಾತ್ರಿ|ಮಧ್ಯಾನ್ಹ|ಬೆಳಗ್ಗೆ|ಸಂಜೆ|ರಾತ್ರಿ)/i,
+ any: /^(ಪೂರ್ವಾಹ್ನ|ಅಪರಾಹ್ನ|ಮಧ್ಯರಾತ್ರಿ|ಮಧ್ಯಾನ್ಹ|ಬೆಳಗ್ಗೆ|ಸಂಜೆ|ರಾತ್ರಿ)/i
+}
+var parseDayPeriodPatterns = {
+ any: {
+ am: /^ಪೂ/i,
+ pm: /^ಅ/i,
+ midnight: /ಮಧ್ಯರಾತ್ರಿ/i,
+ noon: /ಮಧ್ಯಾನ್ಹ/i,
+ morning: /ಬೆಳಗ್ಗೆ/i,
+ afternoon: /ಮಧ್ಯಾನ್ಹ/i,
+ evening: /ಸಂಜೆ/i,
+ night: /ರಾತ್ರಿ/i
+ }
+}
+
+var match = {
+ ordinalNumber: buildMatchPatternFn({
+ matchPattern: matchOrdinalNumberPattern,
+ parsePattern: parseOrdinalNumberPattern,
+ valueCallback: function(value) {
+ return parseInt(value, 10)
+ }
+ }),
+
+ era: buildMatchFn({
+ matchPatterns: matchEraPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseEraPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ quarter: buildMatchFn({
+ matchPatterns: matchQuarterPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseQuarterPatterns,
+ defaultParseWidth: 'any',
+ valueCallback: function(index) {
+ return index + 1
+ }
+ }),
+
+ month: buildMatchFn({
+ matchPatterns: matchMonthPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseMonthPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ day: buildMatchFn({
+ matchPatterns: matchDayPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseDayPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ dayPeriod: buildMatchFn({
+ matchPatterns: matchDayPeriodPatterns,
+ defaultMatchWidth: 'any',
+ parsePatterns: parseDayPeriodPatterns,
+ defaultParseWidth: 'any'
+ })
+}
+
+export default match
diff --git a/date-fns/src/locale/kn/index.d.ts b/date-fns/src/locale/kn/index.d.ts
new file mode 100644
index 0000000..85a2ed5
--- /dev/null
+++ b/date-fns/src/locale/kn/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { kn } from 'date-fns/locale'
+export default kn
diff --git a/date-fns/src/locale/kn/index.js b/date-fns/src/locale/kn/index.js
new file mode 100644
index 0000000..ad1012b
--- /dev/null
+++ b/date-fns/src/locale/kn/index.js
@@ -0,0 +1,28 @@
+import formatDistance from './_lib/formatDistance/index'
+import formatLong from './_lib/formatLong/index'
+import formatRelative from './_lib/formatRelative/index'
+import localize from './_lib/localize/index'
+import match from './_lib/match/index'
+
+/**
+ * @type {Locale}
+ * @category Locales
+ * @summary Kannada locale (India).
+ * @language Kannada
+ * @iso-639-2 kan
+ * @author Manjunatha Gouli [@developergouli]{@link https://github.com/developergouli}
+ */
+var locale = {
+ code: 'kn',
+ formatDistance: formatDistance,
+ formatLong: formatLong,
+ formatRelative: formatRelative,
+ localize: localize,
+ match: match,
+ options: {
+ weekStartsOn: 1 /* Monday */,
+ firstWeekContainsDate: 1
+ }
+}
+
+export default locale
diff --git a/date-fns/src/locale/kn/index.js.flow b/date-fns/src/locale/kn/index.js.flow
new file mode 100644
index 0000000..b9dfe66
--- /dev/null
+++ b/date-fns/src/locale/kn/index.js.flow
@@ -0,0 +1,35 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+declare module.exports: Locale
diff --git a/date-fns/src/locale/kn/snapshot.md b/date-fns/src/locale/kn/snapshot.md
new file mode 100644
index 0000000..72ef2d2
--- /dev/null
+++ b/date-fns/src/locale/kn/snapshot.md
@@ -0,0 +1,304 @@
+# Kannada (kn) locale
+
+## `format` and `parse`
+
+| Title | Token string | Date | `format` result | `parse` result |
+| ------------------------------- | ------------ | ------------------------ | ---------------------------------------------------- | ------------------------ |
+| Calendar year | yo | 1987-02-11T12:13:14.015Z | 1987ನೇ | 1987-01-01T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 5ನೇ | 0005-01-01T00:00:00.000Z |
+| Local week-numbering year | Yo | 1987-02-11T12:13:14.015Z | 1987ನೇ | 1986-12-29T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 5ನೇ | 0004-12-27T00:00:00.000Z |
+| Quarter (formatting) | Qo | 2019-01-01T12:13:14.015Z | 1ನೇ | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2ನೇ | 2019-04-01T00:00:00.000Z |
+| | QQQ | 2019-01-01T12:13:14.015Z | ತ್ರೈ 1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | ತ್ರೈ 2 | 2019-04-01T00:00:00.000Z |
+| | QQQQ | 2019-01-01T12:13:14.015Z | 1ನೇ ತ್ರೈಮಾಸಿಕ | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2ನೇ ತ್ರೈಮಾಸಿಕ | 2019-04-01T00:00:00.000Z |
+| | QQQQQ | 2019-01-01T12:13:14.015Z | 1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2 | 2019-04-01T00:00:00.000Z |
+| Quarter (stand-alone) | qo | 2019-01-01T12:13:14.015Z | 1ನೇ | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2ನೇ | 2019-04-01T00:00:00.000Z |
+| | qqq | 2019-01-01T12:13:14.015Z | ತ್ರೈ 1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | ತ್ರೈ 2 | 2019-04-01T00:00:00.000Z |
+| | qqqq | 2019-01-01T12:13:14.015Z | 1ನೇ ತ್ರೈಮಾಸಿಕ | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2ನೇ ತ್ರೈಮಾಸಿಕ | 2019-04-01T00:00:00.000Z |
+| Month (formatting) | Mo | 2019-02-11T12:13:14.015Z | 2ನೇ | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7ನೇ | 2019-07-01T00:00:00.000Z |
+| | MMM | 2019-02-11T12:13:14.015Z | ಫೆಬ್ರ | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | ಜುಲೈ | 2019-07-01T00:00:00.000Z |
+| | MMMM | 2019-02-11T12:13:14.015Z | ಫೆಬ್ರವರಿ | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | ಜುಲೈ | 2019-07-01T00:00:00.000Z |
+| | MMMMM | 2019-02-11T12:13:14.015Z | ಫೆ | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | ಜು | 2019-07-01T00:00:00.000Z |
+| Month (stand-alone) | Lo | 2019-02-11T12:13:14.015Z | 2ನೇ | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7ನೇ | 2019-07-01T00:00:00.000Z |
+| | LLL | 2019-02-11T12:13:14.015Z | ಫೆಬ್ರ | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | ಜುಲೈ | 2019-07-01T00:00:00.000Z |
+| | LLLL | 2019-02-11T12:13:14.015Z | ಫೆಬ್ರವರಿ | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | ಜುಲೈ | 2019-07-01T00:00:00.000Z |
+| | LLLLL | 2019-02-11T12:13:14.015Z | ಫೆ | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | ಜು | 2019-07-01T00:00:00.000Z |
+| Local week of year | wo | 2019-01-01T12:13:14.015Z | 1ನೇ | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48ನೇ | 2019-11-25T00:00:00.000Z |
+| ISO week of year | Io | 2019-01-01T12:13:14.015Z | 1ನೇ | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48ನೇ | 2019-11-25T00:00:00.000Z |
+| Day of month | do | 2019-02-11T12:13:14.015Z | 11ನೇ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-28T12:13:14.015Z | 28ನೇ | 2019-02-28T00:00:00.000Z |
+| Day of year | Do | 2019-02-11T12:13:14.015Z | 42ನೇ | 2019-02-11T00:00:00.000Z |
+| | | 2019-12-31T12:13:14.015Z | 365ನೇ | 2019-12-31T00:00:00.000Z |
+| Day of week (formatting) | E | 2019-02-11T12:13:14.015Z | ಸೋಮ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ಶುಕ್ರ | 2019-02-15T00:00:00.000Z |
+| | EE | 2019-02-11T12:13:14.015Z | ಸೋಮ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ಶುಕ್ರ | 2019-02-15T00:00:00.000Z |
+| | EEE | 2019-02-11T12:13:14.015Z | ಸೋಮ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ಶುಕ್ರ | 2019-02-15T00:00:00.000Z |
+| | EEEE | 2019-02-11T12:13:14.015Z | ಸೋಮವಾರ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ಶುಕ್ರವಾರ | 2019-02-15T00:00:00.000Z |
+| | EEEEE | 2019-02-11T12:13:14.015Z | ಸೋ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ಶು | 2019-02-15T00:00:00.000Z |
+| | EEEEEE | 2019-02-11T12:13:14.015Z | ಸೋಮ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ಶುಕ್ರ | 2019-02-15T00:00:00.000Z |
+| ISO day of week (formatting) | io | 2019-02-11T12:13:14.015Z | 1ನೇ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5ನೇ | 2019-02-15T00:00:00.000Z |
+| | iii | 2019-02-11T12:13:14.015Z | ಸೋಮ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ಶುಕ್ರ | 2019-02-15T00:00:00.000Z |
+| | iiii | 2019-02-11T12:13:14.015Z | ಸೋಮವಾರ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ಶುಕ್ರವಾರ | 2019-02-15T00:00:00.000Z |
+| | iiiii | 2019-02-11T12:13:14.015Z | ಸೋ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ಶು | 2019-02-15T00:00:00.000Z |
+| | iiiiii | 2019-02-11T12:13:14.015Z | ಸೋಮ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ಶುಕ್ರ | 2019-02-15T00:00:00.000Z |
+| Local day of week (formatting) | eo | 2019-02-11T12:13:14.015Z | 1ನೇ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5ನೇ | 2019-02-15T00:00:00.000Z |
+| | eee | 2019-02-11T12:13:14.015Z | ಸೋಮ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ಶುಕ್ರ | 2019-02-15T00:00:00.000Z |
+| | eeee | 2019-02-11T12:13:14.015Z | ಸೋಮವಾರ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ಶುಕ್ರವಾರ | 2019-02-15T00:00:00.000Z |
+| | eeeee | 2019-02-11T12:13:14.015Z | ಸೋ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ಶು | 2019-02-15T00:00:00.000Z |
+| | eeeeee | 2019-02-11T12:13:14.015Z | ಸೋಮ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ಶುಕ್ರ | 2019-02-15T00:00:00.000Z |
+| Local day of week (stand-alone) | co | 2019-02-11T12:13:14.015Z | 1ನೇ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5ನೇ | 2019-02-15T00:00:00.000Z |
+| | ccc | 2019-02-11T12:13:14.015Z | ಸೋಮ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ಶುಕ್ರ | 2019-02-15T00:00:00.000Z |
+| | cccc | 2019-02-11T12:13:14.015Z | ಸೋಮವಾರ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ಶುಕ್ರವಾರ | 2019-02-15T00:00:00.000Z |
+| | ccccc | 2019-02-11T12:13:14.015Z | ಸೋ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ಶು | 2019-02-15T00:00:00.000Z |
+| | cccccc | 2019-02-11T12:13:14.015Z | ಸೋಮ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ಶುಕ್ರ | 2019-02-15T00:00:00.000Z |
+| AM, PM | a | 2019-02-11T11:13:14.015Z | ಪೂರ್ವಾಹ್ನ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | ಅಪರಾಹ್ನ | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | ಅಪರಾಹ್ನ | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ಪೂರ್ವಾಹ್ನ | 2019-02-11T00:00:00.000Z |
+| | aa | 2019-02-11T11:13:14.015Z | ಪೂರ್ವಾಹ್ನ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | ಅಪರಾಹ್ನ | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | ಅಪರಾಹ್ನ | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ಪೂರ್ವಾಹ್ನ | 2019-02-11T00:00:00.000Z |
+| | aaa | 2019-02-11T11:13:14.015Z | ಪೂರ್ವಾಹ್ನ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | ಅಪರಾಹ್ನ | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | ಅಪರಾಹ್ನ | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ಪೂರ್ವಾಹ್ನ | 2019-02-11T00:00:00.000Z |
+| | aaaa | 2019-02-11T11:13:14.015Z | ಪೂರ್ವಾಹ್ನ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | ಅಪರಾಹ್ನ | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | ಅಪರಾಹ್ನ | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ಪೂರ್ವಾಹ್ನ | 2019-02-11T00:00:00.000Z |
+| | aaaaa | 2019-02-11T11:13:14.015Z | ಪೂ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | ಅ | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | ಅ | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ಪೂ | 2019-02-11T00:00:00.000Z |
+| AM, PM, noon, midnight | b | 2019-02-11T11:13:14.015Z | ಪೂರ್ವಾಹ್ನ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | ಅಪರಾಹ್ನ | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | ಅಪರಾಹ್ನ | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ಪೂರ್ವಾಹ್ನ | 2019-02-11T00:00:00.000Z |
+| | bb | 2019-02-11T11:13:14.015Z | ಪೂರ್ವಾಹ್ನ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | ಅಪರಾಹ್ನ | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | ಅಪರಾಹ್ನ | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ಪೂರ್ವಾಹ್ನ | 2019-02-11T00:00:00.000Z |
+| | bbb | 2019-02-11T11:13:14.015Z | ಪೂರ್ವಾಹ್ನ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | ಅಪರಾಹ್ನ | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | ಅಪರಾಹ್ನ | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ಪೂರ್ವಾಹ್ನ | 2019-02-11T00:00:00.000Z |
+| | bbbb | 2019-02-11T11:13:14.015Z | ಪೂರ್ವಾಹ್ನ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | ಅಪರಾಹ್ನ | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | ಅಪರಾಹ್ನ | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ಪೂರ್ವಾಹ್ನ | 2019-02-11T00:00:00.000Z |
+| | bbbbb | 2019-02-11T11:13:14.015Z | ಪೂ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | ಅ | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | ಅ | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ಪೂ | 2019-02-11T00:00:00.000Z |
+| Flexible day period | B | 2019-02-11T11:13:14.015Z | ಬೆಳಗ್ಗೆ | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | ಮಧ್ಯಾನ್ಹ | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | ಸಂಜೆ | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ರಾತ್ರಿ | 2019-02-11T00:00:00.000Z |
+| | BB | 2019-02-11T11:13:14.015Z | ಬೆಳಗ್ಗೆ | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | ಮಧ್ಯಾನ್ಹ | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | ಸಂಜೆ | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ರಾತ್ರಿ | 2019-02-11T00:00:00.000Z |
+| | BBB | 2019-02-11T11:13:14.015Z | ಬೆಳಗ್ಗೆ | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | ಮಧ್ಯಾನ್ಹ | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | ಸಂಜೆ | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ರಾತ್ರಿ | 2019-02-11T00:00:00.000Z |
+| | BBBB | 2019-02-11T11:13:14.015Z | ಬೆಳಗ್ಗೆ | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | ಮಧ್ಯಾನ್ಹ | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | ಸಂಜೆ | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ರಾತ್ರಿ | 2019-02-11T00:00:00.000Z |
+| | BBBBB | 2019-02-11T11:13:14.015Z | ಬೆಳಗ್ಗೆ | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | ಮಧ್ಯಾನ್ಹ | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | ಸಂಜೆ | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ರಾತ್ರಿ | 2019-02-11T00:00:00.000Z |
+| Hour [1-12] | ho | 2019-02-11T11:13:14.015Z | 11ನೇ | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11ನೇ | 2019-02-11T23:00:00.000Z |
+| Hour [0-23] | Ho | 2019-02-11T11:13:14.015Z | 11ನೇ | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23ನೇ | 2019-02-11T23:00:00.000Z |
+| Hour [0-11] | Ko | 2019-02-11T11:13:14.015Z | 11ನೇ | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11ನೇ | 2019-02-11T23:00:00.000Z |
+| Hour [1-24] | ko | 2019-02-11T11:13:14.015Z | 11ನೇ | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23ನೇ | 2019-02-11T23:00:00.000Z |
+| Minute | mo | 2019-01-01T12:01:14.015Z | 1ನೇ | 2019-01-01T12:01:00.000Z |
+| | | 2019-04-01T12:55:14.015Z | 55ನೇ | 2019-04-01T12:55:00.000Z |
+| Second | so | 2019-01-01T12:13:01.015Z | 1ನೇ | 2019-01-01T12:13:01.000Z |
+| | | 2019-04-01T12:13:55.015Z | 55ನೇ | 2019-04-01T12:13:55.000Z |
+| Long localized date | P | 1987-02-11T12:13:14.015Z | 11/2/87 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29/5/53 | 1453-05-29T00:00:00.000Z |
+| | PP | 1987-02-11T12:13:14.015Z | ಫೆಬ್ರ 11, 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | ಮೇ 29, 1453 | 1453-05-29T00:00:00.000Z |
+| | PPP | 1987-02-11T12:13:14.015Z | ಫೆಬ್ರವರಿ 11, 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | ಮೇ 29, 1453 | 1453-05-29T00:00:00.000Z |
+| | PPPP | 1987-02-11T12:13:14.015Z | ಬುಧವಾರ, ಫೆಬ್ರವರಿ 11, 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | ಭಾನುವಾರ, ಮೇ 29, 1453 | 1453-05-29T00:00:00.000Z |
+| Long localized time | p | 1987-02-11T12:13:14.015Z | 12:13 ಅಪರಾಹ್ನ | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 11:59 ಅಪರಾಹ್ನ | 1453-05-29T23:59:00.000Z |
+| | pp | 1987-02-11T12:13:14.015Z | 12:13:14 ಅಪರಾಹ್ನ | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 11:59:59 ಅಪರಾಹ್ನ | 1453-05-29T23:59:59.000Z |
+| | ppp | 1987-02-11T12:13:14.015Z | 12:13:14 ಅಪರಾಹ್ನ GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 11:59:59 ಅಪರಾಹ್ನ GMT+0 | Errored |
+| | pppp | 1987-02-11T12:13:14.015Z | 12:13:14 ಅಪರಾಹ್ನ GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 11:59:59 ಅಪರಾಹ್ನ GMT+00:00 | Errored |
+| Combination of date and time | Pp | 1987-02-11T12:13:14.015Z | 11/2/87 12:13 ಅಪರಾಹ್ನ | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29/5/53 11:59 ಅಪರಾಹ್ನ | 1453-05-29T23:59:00.000Z |
+| | PPpp | 1987-02-11T12:13:14.015Z | ಫೆಬ್ರ 11, 1987 12:13:14 ಅಪರಾಹ್ನ | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | ಮೇ 29, 1453 11:59:59 ಅಪರಾಹ್ನ | 1453-05-29T23:59:59.000Z |
+| | PPPppp | 1987-02-11T12:13:14.015Z | ಫೆಬ್ರವರಿ 11, 1987 12:13:14 ಅಪರಾಹ್ನ GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | ಮೇ 29, 1453 11:59:59 ಅಪರಾಹ್ನ GMT+0 | Errored |
+| | PPPPpppp | 1987-02-11T12:13:14.015Z | ಬುಧವಾರ, ಫೆಬ್ರವರಿ 11, 1987 12:13:14 ಅಪರಾಹ್ನ GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | ಭಾನುವಾರ, ಮೇ 29, 1453 11:59:59 ಅಪರಾಹ್ನ GMT+00:00 | Errored |
+
+## `formatDistance`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `includeSeconds: true` | `addSuffix: true` |
+| ------------------------ | ------------------- | ---------------------- | --------------------- |
+| 2006-01-01T00:00:00.000Z | ಸುಮಾರು 6 ವರ್ಷಗಳು | ಸುಮಾರು 6 ವರ್ಷಗಳು | ಸುಮಾರು 6 ವರ್ಷಗಳಲ್ಲಿ |
+| 2005-01-01T00:00:00.000Z | ಸುಮಾರು 5 ವರ್ಷಗಳು | ಸುಮಾರು 5 ವರ್ಷಗಳು | ಸುಮಾರು 5 ವರ್ಷಗಳಲ್ಲಿ |
+| 2004-01-01T00:00:00.000Z | ಸುಮಾರು 4 ವರ್ಷಗಳು | ಸುಮಾರು 4 ವರ್ಷಗಳು | ಸುಮಾರು 4 ವರ್ಷಗಳಲ್ಲಿ |
+| 2003-01-01T00:00:00.000Z | ಸುಮಾರು 3 ವರ್ಷಗಳು | ಸುಮಾರು 3 ವರ್ಷಗಳು | ಸುಮಾರು 3 ವರ್ಷಗಳಲ್ಲಿ |
+| 2002-01-01T00:00:00.000Z | ಸುಮಾರು 2 ವರ್ಷಗಳು | ಸುಮಾರು 2 ವರ್ಷಗಳು | ಸುಮಾರು 2 ವರ್ಷಗಳಲ್ಲಿ |
+| 2001-06-01T00:00:00.000Z | 1 ವರ್ಷದ ಮೇಲೆ | 1 ವರ್ಷದ ಮೇಲೆ | 1 ವರ್ಷದ ಮೇಲೆ |
+| 2001-02-01T00:00:00.000Z | ಸುಮಾರು 1 ವರ್ಷ | ಸುಮಾರು 1 ವರ್ಷ | ಸುಮಾರು 1 ವರ್ಷದಲ್ಲಿ |
+| 2001-01-01T00:00:00.000Z | ಸುಮಾರು 1 ವರ್ಷ | ಸುಮಾರು 1 ವರ್ಷ | ಸುಮಾರು 1 ವರ್ಷದಲ್ಲಿ |
+| 2000-06-01T00:00:00.000Z | 5 ತಿಂಗಳು | 5 ತಿಂಗಳು | 5 ತಿಂಗಳುಗಳಲ್ಲಿ |
+| 2000-03-01T00:00:00.000Z | 2 ತಿಂಗಳು | 2 ತಿಂಗಳು | 2 ತಿಂಗಳುಗಳಲ್ಲಿ |
+| 2000-02-01T00:00:00.000Z | ಸುಮಾರು 1 ತಿಂಗಳು | ಸುಮಾರು 1 ತಿಂಗಳು | ಸುಮಾರು 1 ತಿಂಗಳಲ್ಲಿ |
+| 2000-01-15T00:00:00.000Z | 14 ದಿನಗಳು | 14 ದಿನಗಳು | 14 ದಿನಗಳಲ್ಲಿ |
+| 2000-01-02T00:00:00.000Z | 1 ದಿನ | 1 ದಿನ | 1 ದಿನದಲ್ಲಿ |
+| 2000-01-01T06:00:00.000Z | ಸುಮಾರು 6 ಗಂಟೆಗಳು | ಸುಮಾರು 6 ಗಂಟೆಗಳು | ಸುಮಾರು 6 ಗಂಟೆಗಳಲ್ಲಿ |
+| 2000-01-01T01:00:00.000Z | ಸುಮಾರು 1 ಗಂಟೆ | ಸುಮಾರು 1 ಗಂಟೆ | ಸುಮಾರು 1 ಗಂಟೆಯಲ್ಲಿ |
+| 2000-01-01T00:45:00.000Z | ಸುಮಾರು 1 ಗಂಟೆ | ಸುಮಾರು 1 ಗಂಟೆ | ಸುಮಾರು 1 ಗಂಟೆಯಲ್ಲಿ |
+| 2000-01-01T00:30:00.000Z | 30 ನಿಮಿಷಗಳು | 30 ನಿಮಿಷಗಳು | 30 ನಿಮಿಷಗಳಲ್ಲಿ |
+| 2000-01-01T00:15:00.000Z | 15 ನಿಮಿಷಗಳು | 15 ನಿಮಿಷಗಳು | 15 ನಿಮಿಷಗಳಲ್ಲಿ |
+| 2000-01-01T00:01:00.000Z | 1 ನಿಮಿಷ | 1 ನಿಮಿಷ | 1 ನಿಮಿಷದಲ್ಲಿ |
+| 2000-01-01T00:00:25.000Z | 1 ನಿಮಿಷಕ್ಕಿಂತ ಕಡಿಮೆ | ಅರ್ಧ ನಿಮಿಷ | 1 ನಿಮಿಷಕ್ಕಿಂತ ಕಡಿಮೆ |
+| 2000-01-01T00:00:15.000Z | 1 ನಿಮಿಷಕ್ಕಿಂತ ಕಡಿಮೆ | 20 ಸೆಕೆಂಡ್‌ಗಿಂತ ಕಡಿಮೆ | 1 ನಿಮಿಷಕ್ಕಿಂತ ಕಡಿಮೆ |
+| 2000-01-01T00:00:05.000Z | 1 ನಿಮಿಷಕ್ಕಿಂತ ಕಡಿಮೆ | 10 ಸೆಕೆಂಡ್‌ಗಿಂತ ಕಡಿಮೆ | 1 ನಿಮಿಷಕ್ಕಿಂತ ಕಡಿಮೆ |
+| 2000-01-01T00:00:00.000Z | 1 ನಿಮಿಷಕ್ಕಿಂತ ಕಡಿಮೆ | 5 ಸೆಕೆಂಡ್‌ಗಿಂತ ಕಡಿಮೆ | 1 ನಿಮಿಷಕ್ಕಿಂತ ಕಡಿಮೆ |
+| 1999-12-31T23:59:55.000Z | 1 ನಿಮಿಷಕ್ಕಿಂತ ಕಡಿಮೆ | 10 ಸೆಕೆಂಡ್‌ಗಿಂತ ಕಡಿಮೆ | 1 ನಿಮಿಷಕ್ಕಿಂತ ಕಡಿಮೆ |
+| 1999-12-31T23:59:45.000Z | 1 ನಿಮಿಷಕ್ಕಿಂತ ಕಡಿಮೆ | 20 ಸೆಕೆಂಡ್‌ಗಿಂತ ಕಡಿಮೆ | 1 ನಿಮಿಷಕ್ಕಿಂತ ಕಡಿಮೆ |
+| 1999-12-31T23:59:35.000Z | 1 ನಿಮಿಷಕ್ಕಿಂತ ಕಡಿಮೆ | ಅರ್ಧ ನಿಮಿಷ | 1 ನಿಮಿಷಕ್ಕಿಂತ ಕಡಿಮೆ |
+| 1999-12-31T23:59:00.000Z | 1 ನಿಮಿಷ | 1 ನಿಮಿಷ | 1 ನಿಮಿಷದ ಹಿಂದೆ |
+| 1999-12-31T23:45:00.000Z | 15 ನಿಮಿಷಗಳು | 15 ನಿಮಿಷಗಳು | 15 ನಿಮಿಷಗಳ ಹಿಂದೆ |
+| 1999-12-31T23:30:00.000Z | 30 ನಿಮಿಷಗಳು | 30 ನಿಮಿಷಗಳು | 30 ನಿಮಿಷಗಳ ಹಿಂದೆ |
+| 1999-12-31T23:15:00.000Z | ಸುಮಾರು 1 ಗಂಟೆ | ಸುಮಾರು 1 ಗಂಟೆ | ಸುಮಾರು 1 ಗಂಟೆ ಹಿಂದೆ |
+| 1999-12-31T23:00:00.000Z | ಸುಮಾರು 1 ಗಂಟೆ | ಸುಮಾರು 1 ಗಂಟೆ | ಸುಮಾರು 1 ಗಂಟೆ ಹಿಂದೆ |
+| 1999-12-31T18:00:00.000Z | ಸುಮಾರು 6 ಗಂಟೆಗಳು | ಸುಮಾರು 6 ಗಂಟೆಗಳು | ಸುಮಾರು 6 ಗಂಟೆಗಳ ಹಿಂದೆ |
+| 1999-12-30T00:00:00.000Z | 2 ದಿನಗಳು | 2 ದಿನಗಳು | 2 ದಿನಗಳ ಹಿಂದೆ |
+| 1999-12-15T00:00:00.000Z | 17 ದಿನಗಳು | 17 ದಿನಗಳು | 17 ದಿನಗಳ ಹಿಂದೆ |
+| 1999-12-01T00:00:00.000Z | ಸುಮಾರು 1 ತಿಂಗಳು | ಸುಮಾರು 1 ತಿಂಗಳು | ಸುಮಾರು 1 ತಿಂಗಳ ಹಿಂದೆ |
+| 1999-11-01T00:00:00.000Z | 2 ತಿಂಗಳು | 2 ತಿಂಗಳು | 2 ತಿಂಗಳುಗಳ ಹಿಂದೆ |
+| 1999-06-01T00:00:00.000Z | 7 ತಿಂಗಳು | 7 ತಿಂಗಳು | 7 ತಿಂಗಳುಗಳ ಹಿಂದೆ |
+| 1999-01-01T00:00:00.000Z | ಸುಮಾರು 1 ವರ್ಷ | ಸುಮಾರು 1 ವರ್ಷ | ಸುಮಾರು 1 ವರ್ಷದ ಹಿಂದೆ |
+| 1998-12-01T00:00:00.000Z | ಸುಮಾರು 1 ವರ್ಷ | ಸುಮಾರು 1 ವರ್ಷ | ಸುಮಾರು 1 ವರ್ಷದ ಹಿಂದೆ |
+| 1998-06-01T00:00:00.000Z | 1 ವರ್ಷದ ಮೇಲೆ | 1 ವರ್ಷದ ಮೇಲೆ | 1 ವರ್ಷದ ಮೇಲೆ |
+| 1998-01-01T00:00:00.000Z | ಸುಮಾರು 2 ವರ್ಷಗಳು | ಸುಮಾರು 2 ವರ್ಷಗಳು | ಸುಮಾರು 2 ವರ್ಷಗಳ ಹಿಂದೆ |
+| 1997-01-01T00:00:00.000Z | ಸುಮಾರು 3 ವರ್ಷಗಳು | ಸುಮಾರು 3 ವರ್ಷಗಳು | ಸುಮಾರು 3 ವರ್ಷಗಳ ಹಿಂದೆ |
+| 1996-01-01T00:00:00.000Z | ಸುಮಾರು 4 ವರ್ಷಗಳು | ಸುಮಾರು 4 ವರ್ಷಗಳು | ಸುಮಾರು 4 ವರ್ಷಗಳ ಹಿಂದೆ |
+| 1995-01-01T00:00:00.000Z | ಸುಮಾರು 5 ವರ್ಷಗಳು | ಸುಮಾರು 5 ವರ್ಷಗಳು | ಸುಮಾರು 5 ವರ್ಷಗಳ ಹಿಂದೆ |
+| 1994-01-01T00:00:00.000Z | ಸುಮಾರು 6 ವರ್ಷಗಳು | ಸುಮಾರು 6 ವರ್ಷಗಳು | ಸುಮಾರು 6 ವರ್ಷಗಳ ಹಿಂದೆ |
+
+## `formatDistanceStrict`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `addSuffix: true` | With forced unit (i.e. `hour`) |
+| ------------------------ | ------------- | ----------------- | ------------------------------ |
+| 2006-01-01T00:00:00.000Z | 6 ವರ್ಷಗಳು | 6 ವರ್ಷಗಳಲ್ಲಿ | 52608 ಗಂಟೆಗಳು |
+| 2005-01-01T00:00:00.000Z | 5 ವರ್ಷಗಳು | 5 ವರ್ಷಗಳಲ್ಲಿ | 43848 ಗಂಟೆಗಳು |
+| 2004-01-01T00:00:00.000Z | 4 ವರ್ಷಗಳು | 4 ವರ್ಷಗಳಲ್ಲಿ | 35064 ಗಂಟೆಗಳು |
+| 2003-01-01T00:00:00.000Z | 3 ವರ್ಷಗಳು | 3 ವರ್ಷಗಳಲ್ಲಿ | 26304 ಗಂಟೆಗಳು |
+| 2002-01-01T00:00:00.000Z | 2 ವರ್ಷಗಳು | 2 ವರ್ಷಗಳಲ್ಲಿ | 17544 ಗಂಟೆಗಳು |
+| 2001-06-01T00:00:00.000Z | 1 ವರ್ಷ | 1 ವರ್ಷದಲ್ಲಿ | 12408 ಗಂಟೆಗಳು |
+| 2001-02-01T00:00:00.000Z | 1 ವರ್ಷ | 1 ವರ್ಷದಲ್ಲಿ | 9528 ಗಂಟೆಗಳು |
+| 2001-01-01T00:00:00.000Z | 1 ವರ್ಷ | 1 ವರ್ಷದಲ್ಲಿ | 8784 ಗಂಟೆಗಳು |
+| 2000-06-01T00:00:00.000Z | 5 ತಿಂಗಳು | 5 ತಿಂಗಳುಗಳಲ್ಲಿ | 3648 ಗಂಟೆಗಳು |
+| 2000-03-01T00:00:00.000Z | 2 ತಿಂಗಳು | 2 ತಿಂಗಳುಗಳಲ್ಲಿ | 1440 ಗಂಟೆಗಳು |
+| 2000-02-01T00:00:00.000Z | 1 ತಿಂಗಳು | 1 ತಿಂಗಳಲ್ಲಿ | 744 ಗಂಟೆಗಳು |
+| 2000-01-15T00:00:00.000Z | 14 ದಿನಗಳು | 14 ದಿನಗಳಲ್ಲಿ | 336 ಗಂಟೆಗಳು |
+| 2000-01-02T00:00:00.000Z | 1 ದಿನ | 1 ದಿನದಲ್ಲಿ | 24 ಗಂಟೆಗಳು |
+| 2000-01-01T06:00:00.000Z | 6 ಗಂಟೆಗಳು | 6 ಗಂಟೆಗಳಲ್ಲಿ | 6 ಗಂಟೆಗಳು |
+| 2000-01-01T01:00:00.000Z | 1 ಗಂಟೆ | 1 ಗಂಟೆಯಲ್ಲಿ | 1 ಗಂಟೆ |
+| 2000-01-01T00:45:00.000Z | 45 ನಿಮಿಷಗಳು | 45 ನಿಮಿಷಗಳಲ್ಲಿ | 1 ಗಂಟೆ |
+| 2000-01-01T00:30:00.000Z | 30 ನಿಮಿಷಗಳು | 30 ನಿಮಿಷಗಳಲ್ಲಿ | 1 ಗಂಟೆ |
+| 2000-01-01T00:15:00.000Z | 15 ನಿಮಿಷಗಳು | 15 ನಿಮಿಷಗಳಲ್ಲಿ | 0 ಗಂಟೆಗಳು |
+| 2000-01-01T00:01:00.000Z | 1 ನಿಮಿಷ | 1 ನಿಮಿಷದಲ್ಲಿ | 0 ಗಂಟೆಗಳು |
+| 2000-01-01T00:00:25.000Z | 25 ಸೆಕೆಂಡುಗಳು | 25 ಸೆಕೆಂಡ್‌ಗಳಲ್ಲಿ | 0 ಗಂಟೆಗಳು |
+| 2000-01-01T00:00:15.000Z | 15 ಸೆಕೆಂಡುಗಳು | 15 ಸೆಕೆಂಡ್‌ಗಳಲ್ಲಿ | 0 ಗಂಟೆಗಳು |
+| 2000-01-01T00:00:05.000Z | 5 ಸೆಕೆಂಡುಗಳು | 5 ಸೆಕೆಂಡ್‌ಗಳಲ್ಲಿ | 0 ಗಂಟೆಗಳು |
+| 2000-01-01T00:00:00.000Z | 0 ಸೆಕೆಂಡುಗಳು | 0 ಸೆಕೆಂಡ್ ಹಿಂದೆ | 0 ಗಂಟೆಗಳು |
+| 1999-12-31T23:59:55.000Z | 5 ಸೆಕೆಂಡುಗಳು | 5 ಸೆಕೆಂಡ್ ಹಿಂದೆ | 0 ಗಂಟೆಗಳು |
+| 1999-12-31T23:59:45.000Z | 15 ಸೆಕೆಂಡುಗಳು | 15 ಸೆಕೆಂಡ್ ಹಿಂದೆ | 0 ಗಂಟೆಗಳು |
+| 1999-12-31T23:59:35.000Z | 25 ಸೆಕೆಂಡುಗಳು | 25 ಸೆಕೆಂಡ್ ಹಿಂದೆ | 0 ಗಂಟೆಗಳು |
+| 1999-12-31T23:59:00.000Z | 1 ನಿಮಿಷ | 1 ನಿಮಿಷದ ಹಿಂದೆ | 0 ಗಂಟೆಗಳು |
+| 1999-12-31T23:45:00.000Z | 15 ನಿಮಿಷಗಳು | 15 ನಿಮಿಷಗಳ ಹಿಂದೆ | 0 ಗಂಟೆಗಳು |
+| 1999-12-31T23:30:00.000Z | 30 ನಿಮಿಷಗಳು | 30 ನಿಮಿಷಗಳ ಹಿಂದೆ | 1 ಗಂಟೆ |
+| 1999-12-31T23:15:00.000Z | 45 ನಿಮಿಷಗಳು | 45 ನಿಮಿಷಗಳ ಹಿಂದೆ | 1 ಗಂಟೆ |
+| 1999-12-31T23:00:00.000Z | 1 ಗಂಟೆ | 1 ಗಂಟೆ ಹಿಂದೆ | 1 ಗಂಟೆ |
+| 1999-12-31T18:00:00.000Z | 6 ಗಂಟೆಗಳು | 6 ಗಂಟೆಗಳ ಹಿಂದೆ | 6 ಗಂಟೆಗಳು |
+| 1999-12-30T00:00:00.000Z | 2 ದಿನಗಳು | 2 ದಿನಗಳ ಹಿಂದೆ | 48 ಗಂಟೆಗಳು |
+| 1999-12-15T00:00:00.000Z | 17 ದಿನಗಳು | 17 ದಿನಗಳ ಹಿಂದೆ | 408 ಗಂಟೆಗಳು |
+| 1999-12-01T00:00:00.000Z | 1 ತಿಂಗಳು | 1 ತಿಂಗಳ ಹಿಂದೆ | 744 ಗಂಟೆಗಳು |
+| 1999-11-01T00:00:00.000Z | 2 ತಿಂಗಳು | 2 ತಿಂಗಳುಗಳ ಹಿಂದೆ | 1464 ಗಂಟೆಗಳು |
+| 1999-06-01T00:00:00.000Z | 7 ತಿಂಗಳು | 7 ತಿಂಗಳುಗಳ ಹಿಂದೆ | 5136 ಗಂಟೆಗಳು |
+| 1999-01-01T00:00:00.000Z | 1 ವರ್ಷ | 1 ವರ್ಷದ ಹಿಂದೆ | 8760 ಗಂಟೆಗಳು |
+| 1998-12-01T00:00:00.000Z | 1 ವರ್ಷ | 1 ವರ್ಷದ ಹಿಂದೆ | 9504 ಗಂಟೆಗಳು |
+| 1998-06-01T00:00:00.000Z | 2 ವರ್ಷಗಳು | 2 ವರ್ಷಗಳ ಹಿಂದೆ | 13896 ಗಂಟೆಗಳು |
+| 1998-01-01T00:00:00.000Z | 2 ವರ್ಷಗಳು | 2 ವರ್ಷಗಳ ಹಿಂದೆ | 17520 ಗಂಟೆಗಳು |
+| 1997-01-01T00:00:00.000Z | 3 ವರ್ಷಗಳು | 3 ವರ್ಷಗಳ ಹಿಂದೆ | 26280 ಗಂಟೆಗಳು |
+| 1996-01-01T00:00:00.000Z | 4 ವರ್ಷಗಳು | 4 ವರ್ಷಗಳ ಹಿಂದೆ | 35064 ಗಂಟೆಗಳು |
+| 1995-01-01T00:00:00.000Z | 5 ವರ್ಷಗಳು | 5 ವರ್ಷಗಳ ಹಿಂದೆ | 43824 ಗಂಟೆಗಳು |
+| 1994-01-01T00:00:00.000Z | 6 ವರ್ಷಗಳು | 6 ವರ್ಷಗಳ ಹಿಂದೆ | 52584 ಗಂಟೆಗಳು |
+
+## `formatRelative`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result |
+| ------------------------ | -------------------------------- |
+| 2000-01-10T00:00:00.000Z | 10/1/00 |
+| 2000-01-05T00:00:00.000Z | ಬುಧವಾರ 12:00 ಪೂರ್ವಾಹ್ನ ಕ್ಕೆ |
+| 2000-01-02T00:00:00.000Z | ನಾಳೆ 12:00 ಪೂರ್ವಾಹ್ನ ಕ್ಕೆ |
+| 2000-01-01T00:00:00.000Z | ಇಂದು 12:00 ಪೂರ್ವಾಹ್ನ ಕ್ಕೆ |
+| 1999-12-31T00:00:00.000Z | ನಿನ್ನೆ 12:00 ಪೂರ್ವಾಹ್ನ ಕ್ಕೆ |
+| 1999-12-27T00:00:00.000Z | ಕಳೆದ ಸೋಮವಾರ 12:00 ಪೂರ್ವಾಹ್ನ ಕ್ಕೆ |
+| 1999-12-21T00:00:00.000Z | 21/12/99 |
diff --git a/date-fns/src/locale/ko/_lib/formatDistance/index.js b/date-fns/src/locale/ko/_lib/formatDistance/index.js
new file mode 100644
index 0000000..e05cc3a
--- /dev/null
+++ b/date-fns/src/locale/ko/_lib/formatDistance/index.js
@@ -0,0 +1,101 @@
+var formatDistanceLocale = {
+ lessThanXSeconds: {
+ one: '1초 미만',
+ other: '{{count}}초 미만'
+ },
+
+ xSeconds: {
+ one: '1초',
+ other: '{{count}}초'
+ },
+
+ halfAMinute: '30초',
+
+ lessThanXMinutes: {
+ one: '1분 미만',
+ other: '{{count}}분 미만'
+ },
+
+ xMinutes: {
+ one: '1분',
+ other: '{{count}}분'
+ },
+
+ aboutXHours: {
+ one: '약 1시간',
+ other: '약 {{count}}시간'
+ },
+
+ xHours: {
+ one: '1시간',
+ other: '{{count}}시간'
+ },
+
+ xDays: {
+ one: '1일',
+ other: '{{count}}일'
+ },
+
+ aboutXWeeks: {
+ one: '약 1주',
+ other: '약 {{count}}주'
+ },
+
+ xWeeks: {
+ one: '1주',
+ other: '{{count}}주'
+ },
+
+ aboutXMonths: {
+ one: '약 1개월',
+ other: '약 {{count}}개월'
+ },
+
+ xMonths: {
+ one: '1개월',
+ other: '{{count}}개월'
+ },
+
+ aboutXYears: {
+ one: '약 1년',
+ other: '약 {{count}}년'
+ },
+
+ xYears: {
+ one: '1년',
+ other: '{{count}}년'
+ },
+
+ overXYears: {
+ one: '1년 이상',
+ other: '{{count}}년 이상'
+ },
+
+ almostXYears: {
+ one: '거의 1년',
+ other: '거의 {{count}}년'
+ }
+}
+
+export default function formatDistance(token, count, options) {
+ options = options || {}
+
+ var result
+ if (typeof formatDistanceLocale[token] === 'string') {
+ result = formatDistanceLocale[token]
+ } else if (count === 1) {
+ result = formatDistanceLocale[token].one
+ } else {
+ result = formatDistanceLocale[token].other.replace('{{count}}', count)
+ }
+
+ if (options.addSuffix) {
+ if (options.comparison > 0) {
+ return result + ' 후'
+ } else {
+ return result + ' 전'
+ }
+ }
+
+ return result
+}
diff --git a/date-fns/src/locale/ko/_lib/formatLong/index.js b/date-fns/src/locale/ko/_lib/formatLong/index.js
new file mode 100644
index 0000000..6b40e1d
--- /dev/null
+++ b/date-fns/src/locale/ko/_lib/formatLong/index.js
@@ -0,0 +1,41 @@
+import buildFormatLongFn from '../../../_lib/buildFormatLongFn/index'
+
+var dateFormats = {
+ full: 'y년 M월 d일 EEEE',
+ long: 'y년 M월 d일',
+ medium: 'y.MM.dd',
+ short: 'y.MM.dd'
+}
+
+var timeFormats = {
+ full: 'a H시 mm분 ss초 zzzz',
+ long: 'a H:mm:ss z',
+ medium: 'HH:mm:ss',
+ short: 'HH:mm'
+}
+
+var dateTimeFormats = {
+ full: '{{date}} {{time}}',
+ long: '{{date}} {{time}}',
+ medium: '{{date}} {{time}}',
+ short: '{{date}} {{time}}'
+}
+
+var formatLong = {
+ date: buildFormatLongFn({
+ formats: dateFormats,
+ defaultWidth: 'full'
+ }),
+
+ time: buildFormatLongFn({
+ formats: timeFormats,
+ defaultWidth: 'full'
+ }),
+
+ dateTime: buildFormatLongFn({
+ formats: dateTimeFormats,
+ defaultWidth: 'full'
+ })
+}
+
+export default formatLong
diff --git a/date-fns/src/locale/ko/_lib/formatRelative/index.js b/date-fns/src/locale/ko/_lib/formatRelative/index.js
new file mode 100644
index 0000000..724448b
--- /dev/null
+++ b/date-fns/src/locale/ko/_lib/formatRelative/index.js
@@ -0,0 +1,12 @@
+var formatRelativeLocale = {
+ lastWeek: "'지난' eeee p",
+ yesterday: "'어제' p",
+ today: "'오늘' p",
+ tomorrow: "'내일' p",
+ nextWeek: "'다음' eeee p",
+ other: 'P'
+}
+
+export default function formatRelative(token, _date, _baseDate, _options) {
+ return formatRelativeLocale[token]
+}
diff --git a/date-fns/src/locale/ko/_lib/localize/index.js b/date-fns/src/locale/ko/_lib/localize/index.js
new file mode 100644
index 0000000..71a4f96
--- /dev/null
+++ b/date-fns/src/locale/ko/_lib/localize/index.js
@@ -0,0 +1,171 @@
+import buildLocalizeFn from '../../../_lib/buildLocalizeFn/index'
+
+var eraValues = {
+ narrow: ['BC', 'AD'],
+ abbreviated: ['BC', 'AD'],
+ wide: ['기원전', '서기']
+}
+
+var quarterValues = {
+ narrow: ['1', '2', '3', '4'],
+ abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],
+ wide: ['1분기', '2분기', '3분기', '4분기']
+}
+
+var monthValues = {
+ narrow: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'],
+ abbreviated: [
+ '1월',
+ '2월',
+ '3월',
+ '4월',
+ '5월',
+ '6월',
+ '7월',
+ '8월',
+ '9월',
+ '10월',
+ '11월',
+ '12월'
+ ],
+ wide: [
+ '1월',
+ '2월',
+ '3월',
+ '4월',
+ '5월',
+ '6월',
+ '7월',
+ '8월',
+ '9월',
+ '10월',
+ '11월',
+ '12월'
+ ]
+}
+
+var dayValues = {
+ narrow: ['일', '월', '화', '수', '목', '금', '토'],
+ short: ['일', '월', '화', '수', '목', '금', '토'],
+ abbreviated: ['일', '월', '화', '수', '목', '금', '토'],
+ wide: ['일요일', '월요일', '화요일', '수요일', '목요일', '금요일', '토요일']
+}
+
+var dayPeriodValues = {
+ narrow: {
+ am: '오전',
+ pm: '오후',
+ midnight: '자정',
+ noon: '정오',
+ morning: '아침',
+ afternoon: '오후',
+ evening: '저녁',
+ night: '밤'
+ },
+ abbreviated: {
+ am: '오전',
+ pm: '오후',
+ midnight: '자정',
+ noon: '정오',
+ morning: '아침',
+ afternoon: '오후',
+ evening: '저녁',
+ night: '밤'
+ },
+ wide: {
+ am: '오전',
+ pm: '오후',
+ midnight: '자정',
+ noon: '정오',
+ morning: '아침',
+ afternoon: '오후',
+ evening: '저녁',
+ night: '밤'
+ }
+}
+
+var formattingDayPeriodValues = {
+ narrow: {
+ am: '오전',
+ pm: '오후',
+ midnight: '자정',
+ noon: '정오',
+ morning: '아침',
+ afternoon: '오후',
+ evening: '저녁',
+ night: '밤'
+ },
+ abbreviated: {
+ am: '오전',
+ pm: '오후',
+ midnight: '자정',
+ noon: '정오',
+ morning: '아침',
+ afternoon: '오후',
+ evening: '저녁',
+ night: '밤'
+ },
+ wide: {
+ am: '오전',
+ pm: '오후',
+ midnight: '자정',
+ noon: '정오',
+ morning: '아침',
+ afternoon: '오후',
+ evening: '저녁',
+ night: '밤'
+ }
+}
+
+function ordinalNumber(dirtyNumber, dirtyOptions) {
+ var number = Number(dirtyNumber)
+
+ var options = dirtyOptions || {}
+ var unit = String(options.unit)
+
+ switch (unit) {
+ case 'minute':
+ case 'second':
+ return number
+ case 'date':
+ return number + '일'
+ default:
+ return number + '번째'
+ }
+}
+
+var localize = {
+ ordinalNumber: ordinalNumber,
+
+ era: buildLocalizeFn({
+ values: eraValues,
+ defaultWidth: 'wide'
+ }),
+
+ quarter: buildLocalizeFn({
+ values: quarterValues,
+ defaultWidth: 'wide',
+ argumentCallback: function(quarter) {
+ return Number(quarter) - 1
+ }
+ }),
+
+ month: buildLocalizeFn({
+ values: monthValues,
+ defaultWidth: 'wide'
+ }),
+
+ day: buildLocalizeFn({
+ values: dayValues,
+ defaultWidth: 'wide'
+ }),
+
+ dayPeriod: buildLocalizeFn({
+ values: dayPeriodValues,
+ defaultWidth: 'wide',
+ formattingValues: formattingDayPeriodValues,
+ defaultFormattingWidth: 'wide'
+ })
+}
+
+export default localize
diff --git a/date-fns/src/locale/ko/_lib/match/index.js b/date-fns/src/locale/ko/_lib/match/index.js
new file mode 100644
index 0000000..7f495af
--- /dev/null
+++ b/date-fns/src/locale/ko/_lib/match/index.js
@@ -0,0 +1,126 @@
+import buildMatchPatternFn from '../../../_lib/buildMatchPatternFn/index'
+import buildMatchFn from '../../../_lib/buildMatchFn/index'
+
+var matchOrdinalNumberPattern = /^(\d+)(일|번째)?/i
+var parseOrdinalNumberPattern = /\d+/i
+
+var matchEraPatterns = {
+ narrow: /^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,
+ abbreviated: /^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,
+ wide: /^(기원전|서기)/i
+}
+
+var parseEraPatterns = {
+ any: [/^(bc|기원전)/i, /^(ad|서기)/i]
+}
+
+var matchQuarterPatterns = {
+ narrow: /^[1234]/i,
+ abbreviated: /^q[1234]/i,
+ wide: /^[1234]사?분기/i
+}
+
+var parseQuarterPatterns = {
+ any: [/1/i, /2/i, /3/i, /4/i]
+}
+
+var matchMonthPatterns = {
+ narrow: /^(1[012]|[123456789])/,
+ abbreviated: /^(1[012]|[123456789])월/i,
+ wide: /^(1[012]|[123456789])월/i
+}
+
+var parseMonthPatterns = {
+ any: [
+ /^1월?$/,
+ /^2/,
+ /^3/,
+ /^4/,
+ /^5/,
+ /^6/,
+ /^7/,
+ /^8/,
+ /^9/,
+ /^10/,
+ /^11/,
+ /^12/
+ ]
+}
+
+var matchDayPatterns = {
+ narrow: /^[일월화수목금토]/,
+ short: /^[일월화수목금토]/,
+ abbreviated: /^[일월화수목금토]/,
+ wide: /^[일월화수목금토]요일/
+}
+
+var parseDayPatterns = {
+ any: [/^일/, /^월/, /^화/, /^수/, /^목/, /^금/, /^토/]
+}
+
+var matchDayPeriodPatterns = {
+ any: /^(am|pm|오전|오후|자정|정오|아침|저녁|밤)/i
+}
+
+var parseDayPeriodPatterns = {
+ any: {
+ am: /^(am|오전)/i,
+ pm: /^(pm|오후)/i,
+ midnight: /^자정/i,
+ noon: /^정오/i,
+ morning: /^아침/i,
+ afternoon: /^오후/i,
+ evening: /^저녁/i,
+ night: /^밤/i
+ }
+}
+
+var match = {
+ ordinalNumber: buildMatchPatternFn({
+ matchPattern: matchOrdinalNumberPattern,
+ parsePattern: parseOrdinalNumberPattern,
+ valueCallback: function(value) {
+ return parseInt(value, 10)
+ }
+ }),
+
+ era: buildMatchFn({
+ matchPatterns: matchEraPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseEraPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ quarter: buildMatchFn({
+ matchPatterns: matchQuarterPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseQuarterPatterns,
+ defaultParseWidth: 'any',
+ valueCallback: function(index) {
+ return index + 1
+ }
+ }),
+
+ month: buildMatchFn({
+ matchPatterns: matchMonthPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseMonthPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ day: buildMatchFn({
+ matchPatterns: matchDayPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseDayPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ dayPeriod: buildMatchFn({
+ matchPatterns: matchDayPeriodPatterns,
+ defaultMatchWidth: 'any',
+ parsePatterns: parseDayPeriodPatterns,
+ defaultParseWidth: 'any'
+ })
+}
+
+export default match
diff --git a/date-fns/src/locale/ko/index.d.ts b/date-fns/src/locale/ko/index.d.ts
new file mode 100644
index 0000000..eac8228
--- /dev/null
+++ b/date-fns/src/locale/ko/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { ko } from 'date-fns/locale'
+export default ko
diff --git a/date-fns/src/locale/ko/index.js b/date-fns/src/locale/ko/index.js
new file mode 100644
index 0000000..c0725f8
--- /dev/null
+++ b/date-fns/src/locale/ko/index.js
@@ -0,0 +1,30 @@
+import formatDistance from './_lib/formatDistance/index'
+import formatLong from './_lib/formatLong/index'
+import formatRelative from './_lib/formatRelative/index'
+import localize from './_lib/localize/index'
+import match from './_lib/match/index'
+
+/**
+ * @type {Locale}
+ * @category Locales
+ * @summary Korean locale.
+ * @language Korean
+ * @iso-639-2 kor
+ * @author Hong Chulju [@angdev]{@link https://github.com/angdev}
+ * @author Lee Seoyoen [@iamssen]{@link https://github.com/iamssen}
+ * @author Taiki IKeda [@so99ynoodles]{@link https://github.com/so99ynoodles}
+ */
+var locale = {
+ code: 'ko',
+ formatDistance: formatDistance,
+ formatLong: formatLong,
+ formatRelative: formatRelative,
+ localize: localize,
+ match: match,
+ options: {
+ weekStartsOn: 0 /* Sunday */,
+ firstWeekContainsDate: 1
+ }
+}
+
+export default locale
diff --git a/date-fns/src/locale/ko/index.js.flow b/date-fns/src/locale/ko/index.js.flow
new file mode 100644
index 0000000..b9dfe66
--- /dev/null
+++ b/date-fns/src/locale/ko/index.js.flow
@@ -0,0 +1,35 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+declare module.exports: Locale
diff --git a/date-fns/src/locale/ko/snapshot.md b/date-fns/src/locale/ko/snapshot.md
new file mode 100644
index 0000000..9618884
--- /dev/null
+++ b/date-fns/src/locale/ko/snapshot.md
@@ -0,0 +1,304 @@
+# Korean (ko) locale
+
+## `format` and `parse`
+
+| Title | Token string | Date | `format` result | `parse` result |
+| ------------------------------- | ------------ | ------------------------ | ---------------------------------------------------- | ------------------------ |
+| Calendar year | yo | 1987-02-11T12:13:14.015Z | 1987번째 | 1987-01-01T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 5번째 | 0005-01-01T00:00:00.000Z |
+| Local week-numbering year | Yo | 1987-02-11T12:13:14.015Z | 1987번째 | 1986-12-28T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 5번째 | 0004-12-26T00:00:00.000Z |
+| Quarter (formatting) | Qo | 2019-01-01T12:13:14.015Z | 1번째 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2번째 | 2019-04-01T00:00:00.000Z |
+| | QQQ | 2019-01-01T12:13:14.015Z | Q1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | Q2 | 2019-04-01T00:00:00.000Z |
+| | QQQQ | 2019-01-01T12:13:14.015Z | 1분기 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2분기 | 2019-04-01T00:00:00.000Z |
+| | QQQQQ | 2019-01-01T12:13:14.015Z | 1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2 | 2019-04-01T00:00:00.000Z |
+| Quarter (stand-alone) | qo | 2019-01-01T12:13:14.015Z | 1번째 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2번째 | 2019-04-01T00:00:00.000Z |
+| | qqq | 2019-01-01T12:13:14.015Z | Q1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | Q2 | 2019-04-01T00:00:00.000Z |
+| | qqqq | 2019-01-01T12:13:14.015Z | 1분기 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2분기 | 2019-04-01T00:00:00.000Z |
+| Month (formatting) | Mo | 2019-02-11T12:13:14.015Z | 2번째 | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7번째 | 2019-07-01T00:00:00.000Z |
+| | MMM | 2019-02-11T12:13:14.015Z | 2월 | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7월 | 2019-07-01T00:00:00.000Z |
+| | MMMM | 2019-02-11T12:13:14.015Z | 2월 | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7월 | 2019-07-01T00:00:00.000Z |
+| | MMMMM | 2019-02-11T12:13:14.015Z | 2 | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7 | 2019-07-01T00:00:00.000Z |
+| Month (stand-alone) | Lo | 2019-02-11T12:13:14.015Z | 2번째 | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7번째 | 2019-07-01T00:00:00.000Z |
+| | LLL | 2019-02-11T12:13:14.015Z | 2월 | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7월 | 2019-07-01T00:00:00.000Z |
+| | LLLL | 2019-02-11T12:13:14.015Z | 2월 | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7월 | 2019-07-01T00:00:00.000Z |
+| | LLLLL | 2019-02-11T12:13:14.015Z | 2 | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7 | 2019-07-01T00:00:00.000Z |
+| Local week of year | wo | 2019-01-01T12:13:14.015Z | 1번째 | 2018-12-30T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 49번째 | 2019-12-01T00:00:00.000Z |
+| ISO week of year | Io | 2019-01-01T12:13:14.015Z | 1번째 | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48번째 | 2019-11-25T00:00:00.000Z |
+| Day of month | do | 2019-02-11T12:13:14.015Z | 11일 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-28T12:13:14.015Z | 28일 | 2019-02-28T00:00:00.000Z |
+| Day of year | Do | 2019-02-11T12:13:14.015Z | 42번째 | 2019-02-11T00:00:00.000Z |
+| | | 2019-12-31T12:13:14.015Z | 365번째 | 2019-12-31T00:00:00.000Z |
+| Day of week (formatting) | E | 2019-02-11T12:13:14.015Z | 월 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 금 | 2019-02-15T00:00:00.000Z |
+| | EE | 2019-02-11T12:13:14.015Z | 월 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 금 | 2019-02-15T00:00:00.000Z |
+| | EEE | 2019-02-11T12:13:14.015Z | 월 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 금 | 2019-02-15T00:00:00.000Z |
+| | EEEE | 2019-02-11T12:13:14.015Z | 월요일 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 금요일 | 2019-02-15T00:00:00.000Z |
+| | EEEEE | 2019-02-11T12:13:14.015Z | 월 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 금 | 2019-02-15T00:00:00.000Z |
+| | EEEEEE | 2019-02-11T12:13:14.015Z | 월 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 금 | 2019-02-15T00:00:00.000Z |
+| ISO day of week (formatting) | io | 2019-02-11T12:13:14.015Z | 1번째 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5번째 | 2019-02-15T00:00:00.000Z |
+| | iii | 2019-02-11T12:13:14.015Z | 월 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 금 | 2019-02-15T00:00:00.000Z |
+| | iiii | 2019-02-11T12:13:14.015Z | 월요일 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 금요일 | 2019-02-15T00:00:00.000Z |
+| | iiiii | 2019-02-11T12:13:14.015Z | 월 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 금 | 2019-02-15T00:00:00.000Z |
+| | iiiiii | 2019-02-11T12:13:14.015Z | 월 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 금 | 2019-02-15T00:00:00.000Z |
+| Local day of week (formatting) | eo | 2019-02-11T12:13:14.015Z | 2번째 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 6번째 | 2019-02-15T00:00:00.000Z |
+| | eee | 2019-02-11T12:13:14.015Z | 월 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 금 | 2019-02-15T00:00:00.000Z |
+| | eeee | 2019-02-11T12:13:14.015Z | 월요일 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 금요일 | 2019-02-15T00:00:00.000Z |
+| | eeeee | 2019-02-11T12:13:14.015Z | 월 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 금 | 2019-02-15T00:00:00.000Z |
+| | eeeeee | 2019-02-11T12:13:14.015Z | 월 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 금 | 2019-02-15T00:00:00.000Z |
+| Local day of week (stand-alone) | co | 2019-02-11T12:13:14.015Z | 2번째 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 6번째 | 2019-02-15T00:00:00.000Z |
+| | ccc | 2019-02-11T12:13:14.015Z | 월 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 금 | 2019-02-15T00:00:00.000Z |
+| | cccc | 2019-02-11T12:13:14.015Z | 월요일 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 금요일 | 2019-02-15T00:00:00.000Z |
+| | ccccc | 2019-02-11T12:13:14.015Z | 월 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 금 | 2019-02-15T00:00:00.000Z |
+| | cccccc | 2019-02-11T12:13:14.015Z | 월 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 금 | 2019-02-15T00:00:00.000Z |
+| AM, PM | a | 2019-02-11T11:13:14.015Z | 오전 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | 오후 | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | 오후 | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | 오전 | 2019-02-11T00:00:00.000Z |
+| | aa | 2019-02-11T11:13:14.015Z | 오전 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | 오후 | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | 오후 | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | 오전 | 2019-02-11T00:00:00.000Z |
+| | aaa | 2019-02-11T11:13:14.015Z | 오전 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | 오후 | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | 오후 | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | 오전 | 2019-02-11T00:00:00.000Z |
+| | aaaa | 2019-02-11T11:13:14.015Z | 오전 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | 오후 | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | 오후 | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | 오전 | 2019-02-11T00:00:00.000Z |
+| | aaaaa | 2019-02-11T11:13:14.015Z | 오전 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | 오후 | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | 오후 | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | 오전 | 2019-02-11T00:00:00.000Z |
+| AM, PM, noon, midnight | b | 2019-02-11T11:13:14.015Z | 오전 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | 오후 | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | 오후 | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | 오전 | 2019-02-11T00:00:00.000Z |
+| | bb | 2019-02-11T11:13:14.015Z | 오전 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | 오후 | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | 오후 | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | 오전 | 2019-02-11T00:00:00.000Z |
+| | bbb | 2019-02-11T11:13:14.015Z | 오전 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | 오후 | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | 오후 | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | 오전 | 2019-02-11T00:00:00.000Z |
+| | bbbb | 2019-02-11T11:13:14.015Z | 오전 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | 오후 | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | 오후 | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | 오전 | 2019-02-11T00:00:00.000Z |
+| | bbbbb | 2019-02-11T11:13:14.015Z | 오전 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | 오후 | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | 오후 | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | 오전 | 2019-02-11T00:00:00.000Z |
+| Flexible day period | B | 2019-02-11T11:13:14.015Z | 아침 | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | 오후 | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | 저녁 | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | 밤 | 2019-02-11T00:00:00.000Z |
+| | BB | 2019-02-11T11:13:14.015Z | 아침 | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | 오후 | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | 저녁 | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | 밤 | 2019-02-11T00:00:00.000Z |
+| | BBB | 2019-02-11T11:13:14.015Z | 아침 | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | 오후 | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | 저녁 | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | 밤 | 2019-02-11T00:00:00.000Z |
+| | BBBB | 2019-02-11T11:13:14.015Z | 아침 | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | 오후 | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | 저녁 | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | 밤 | 2019-02-11T00:00:00.000Z |
+| | BBBBB | 2019-02-11T11:13:14.015Z | 아침 | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | 오후 | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | 저녁 | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | 밤 | 2019-02-11T00:00:00.000Z |
+| Hour [1-12] | ho | 2019-02-11T11:13:14.015Z | 11번째 | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11번째 | 2019-02-11T23:00:00.000Z |
+| Hour [0-23] | Ho | 2019-02-11T11:13:14.015Z | 11번째 | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23번째 | 2019-02-11T23:00:00.000Z |
+| Hour [0-11] | Ko | 2019-02-11T11:13:14.015Z | 11번째 | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11번째 | 2019-02-11T23:00:00.000Z |
+| Hour [1-24] | ko | 2019-02-11T11:13:14.015Z | 11번째 | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23번째 | 2019-02-11T23:00:00.000Z |
+| Minute | mo | 2019-01-01T12:01:14.015Z | 1 | 2019-01-01T12:01:00.000Z |
+| | | 2019-04-01T12:55:14.015Z | 55 | 2019-04-01T12:55:00.000Z |
+| Second | so | 2019-01-01T12:13:01.015Z | 1 | 2019-01-01T12:13:01.000Z |
+| | | 2019-04-01T12:13:55.015Z | 55 | 2019-04-01T12:13:55.000Z |
+| Long localized date | P | 1987-02-11T12:13:14.015Z | 1987.02.11 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 1453.05.29 | 1453-05-29T00:00:00.000Z |
+| | PP | 1987-02-11T12:13:14.015Z | 1987.02.11 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 1453.05.29 | 1453-05-29T00:00:00.000Z |
+| | PPP | 1987-02-11T12:13:14.015Z | 1987년 2월 11일 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 1453년 5월 29일 | 1453-05-29T00:00:00.000Z |
+| | PPPP | 1987-02-11T12:13:14.015Z | 1987년 2월 11일 수요일 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 1453년 5월 29일 일요일 | 1453-05-29T00:00:00.000Z |
+| Long localized time | p | 1987-02-11T12:13:14.015Z | 12:13 | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 23:59 | 1453-05-29T23:59:00.000Z |
+| | pp | 1987-02-11T12:13:14.015Z | 12:13:14 | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 | 1453-05-29T23:59:59.000Z |
+| | ppp | 1987-02-11T12:13:14.015Z | 오후 12:13:14 GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 오후 23:59:59 GMT+0 | Errored |
+| | pppp | 1987-02-11T12:13:14.015Z | 오후 12시 13분 14초 GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 오후 23시 59분 59초 GMT+00:00 | Errored |
+| Combination of date and time | Pp | 1987-02-11T12:13:14.015Z | 1987.02.11 12:13 | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 1453.05.29 23:59 | 1453-05-29T23:59:00.000Z |
+| | PPpp | 1987-02-11T12:13:14.015Z | 1987.02.11 12:13:14 | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 1453.05.29 23:59:59 | 1453-05-29T23:59:59.000Z |
+| | PPPppp | 1987-02-11T12:13:14.015Z | 1987년 2월 11일 오후 12:13:14 GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 1453년 5월 29일 오후 23:59:59 GMT+0 | Errored |
+| | PPPPpppp | 1987-02-11T12:13:14.015Z | 1987년 2월 11일 수요일 오후 12시 13분 14초 GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 1453년 5월 29일 일요일 오후 23시 59분 59초 GMT+00:00 | Errored |
+
+## `formatDistance`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `includeSeconds: true` | `addSuffix: true` |
+| ------------------------ | -------- | ---------------------- | ----------------- |
+| 2006-01-01T00:00:00.000Z | 약 6년 | 약 6년 | 약 6년 후 |
+| 2005-01-01T00:00:00.000Z | 약 5년 | 약 5년 | 약 5년 후 |
+| 2004-01-01T00:00:00.000Z | 약 4년 | 약 4년 | 약 4년 후 |
+| 2003-01-01T00:00:00.000Z | 약 3년 | 약 3년 | 약 3년 후 |
+| 2002-01-01T00:00:00.000Z | 약 2년 | 약 2년 | 약 2년 후 |
+| 2001-06-01T00:00:00.000Z | 1년 이상 | 1년 이상 | 1년 이상 후 |
+| 2001-02-01T00:00:00.000Z | 약 1년 | 약 1년 | 약 1년 후 |
+| 2001-01-01T00:00:00.000Z | 약 1년 | 약 1년 | 약 1년 후 |
+| 2000-06-01T00:00:00.000Z | 5개월 | 5개월 | 5개월 후 |
+| 2000-03-01T00:00:00.000Z | 2개월 | 2개월 | 2개월 후 |
+| 2000-02-01T00:00:00.000Z | 약 1개월 | 약 1개월 | 약 1개월 후 |
+| 2000-01-15T00:00:00.000Z | 14일 | 14일 | 14일 후 |
+| 2000-01-02T00:00:00.000Z | 1일 | 1일 | 1일 후 |
+| 2000-01-01T06:00:00.000Z | 약 6시간 | 약 6시간 | 약 6시간 후 |
+| 2000-01-01T01:00:00.000Z | 약 1시간 | 약 1시간 | 약 1시간 후 |
+| 2000-01-01T00:45:00.000Z | 약 1시간 | 약 1시간 | 약 1시간 후 |
+| 2000-01-01T00:30:00.000Z | 30분 | 30분 | 30분 후 |
+| 2000-01-01T00:15:00.000Z | 15분 | 15분 | 15분 후 |
+| 2000-01-01T00:01:00.000Z | 1분 | 1분 | 1분 후 |
+| 2000-01-01T00:00:25.000Z | 1분 미만 | 30초 | 1분 미만 후 |
+| 2000-01-01T00:00:15.000Z | 1분 미만 | 20초 미만 | 1분 미만 후 |
+| 2000-01-01T00:00:05.000Z | 1분 미만 | 10초 미만 | 1분 미만 후 |
+| 2000-01-01T00:00:00.000Z | 1분 미만 | 5초 미만 | 1분 미만 전 |
+| 1999-12-31T23:59:55.000Z | 1분 미만 | 10초 미만 | 1분 미만 전 |
+| 1999-12-31T23:59:45.000Z | 1분 미만 | 20초 미만 | 1분 미만 전 |
+| 1999-12-31T23:59:35.000Z | 1분 미만 | 30초 | 1분 미만 전 |
+| 1999-12-31T23:59:00.000Z | 1분 | 1분 | 1분 전 |
+| 1999-12-31T23:45:00.000Z | 15분 | 15분 | 15분 전 |
+| 1999-12-31T23:30:00.000Z | 30분 | 30분 | 30분 전 |
+| 1999-12-31T23:15:00.000Z | 약 1시간 | 약 1시간 | 약 1시간 전 |
+| 1999-12-31T23:00:00.000Z | 약 1시간 | 약 1시간 | 약 1시간 전 |
+| 1999-12-31T18:00:00.000Z | 약 6시간 | 약 6시간 | 약 6시간 전 |
+| 1999-12-30T00:00:00.000Z | 2일 | 2일 | 2일 전 |
+| 1999-12-15T00:00:00.000Z | 17일 | 17일 | 17일 전 |
+| 1999-12-01T00:00:00.000Z | 약 1개월 | 약 1개월 | 약 1개월 전 |
+| 1999-11-01T00:00:00.000Z | 2개월 | 2개월 | 2개월 전 |
+| 1999-06-01T00:00:00.000Z | 7개월 | 7개월 | 7개월 전 |
+| 1999-01-01T00:00:00.000Z | 약 1년 | 약 1년 | 약 1년 전 |
+| 1998-12-01T00:00:00.000Z | 약 1년 | 약 1년 | 약 1년 전 |
+| 1998-06-01T00:00:00.000Z | 1년 이상 | 1년 이상 | 1년 이상 전 |
+| 1998-01-01T00:00:00.000Z | 약 2년 | 약 2년 | 약 2년 전 |
+| 1997-01-01T00:00:00.000Z | 약 3년 | 약 3년 | 약 3년 전 |
+| 1996-01-01T00:00:00.000Z | 약 4년 | 약 4년 | 약 4년 전 |
+| 1995-01-01T00:00:00.000Z | 약 5년 | 약 5년 | 약 5년 전 |
+| 1994-01-01T00:00:00.000Z | 약 6년 | 약 6년 | 약 6년 전 |
+
+## `formatDistanceStrict`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `addSuffix: true` | With forced unit (i.e. `hour`) |
+| ------------------------ | ------ | ----------------- | ------------------------------ |
+| 2006-01-01T00:00:00.000Z | 6년 | 6년 후 | 52608시간 |
+| 2005-01-01T00:00:00.000Z | 5년 | 5년 후 | 43848시간 |
+| 2004-01-01T00:00:00.000Z | 4년 | 4년 후 | 35064시간 |
+| 2003-01-01T00:00:00.000Z | 3년 | 3년 후 | 26304시간 |
+| 2002-01-01T00:00:00.000Z | 2년 | 2년 후 | 17544시간 |
+| 2001-06-01T00:00:00.000Z | 1년 | 1년 후 | 12408시간 |
+| 2001-02-01T00:00:00.000Z | 1년 | 1년 후 | 9528시간 |
+| 2001-01-01T00:00:00.000Z | 1년 | 1년 후 | 8784시간 |
+| 2000-06-01T00:00:00.000Z | 5개월 | 5개월 후 | 3648시간 |
+| 2000-03-01T00:00:00.000Z | 2개월 | 2개월 후 | 1440시간 |
+| 2000-02-01T00:00:00.000Z | 1개월 | 1개월 후 | 744시간 |
+| 2000-01-15T00:00:00.000Z | 14일 | 14일 후 | 336시간 |
+| 2000-01-02T00:00:00.000Z | 1일 | 1일 후 | 24시간 |
+| 2000-01-01T06:00:00.000Z | 6시간 | 6시간 후 | 6시간 |
+| 2000-01-01T01:00:00.000Z | 1시간 | 1시간 후 | 1시간 |
+| 2000-01-01T00:45:00.000Z | 45분 | 45분 후 | 1시간 |
+| 2000-01-01T00:30:00.000Z | 30분 | 30분 후 | 1시간 |
+| 2000-01-01T00:15:00.000Z | 15분 | 15분 후 | 0시간 |
+| 2000-01-01T00:01:00.000Z | 1분 | 1분 후 | 0시간 |
+| 2000-01-01T00:00:25.000Z | 25초 | 25초 후 | 0시간 |
+| 2000-01-01T00:00:15.000Z | 15초 | 15초 후 | 0시간 |
+| 2000-01-01T00:00:05.000Z | 5초 | 5초 후 | 0시간 |
+| 2000-01-01T00:00:00.000Z | 0초 | 0초 전 | 0시간 |
+| 1999-12-31T23:59:55.000Z | 5초 | 5초 전 | 0시간 |
+| 1999-12-31T23:59:45.000Z | 15초 | 15초 전 | 0시간 |
+| 1999-12-31T23:59:35.000Z | 25초 | 25초 전 | 0시간 |
+| 1999-12-31T23:59:00.000Z | 1분 | 1분 전 | 0시간 |
+| 1999-12-31T23:45:00.000Z | 15분 | 15분 전 | 0시간 |
+| 1999-12-31T23:30:00.000Z | 30분 | 30분 전 | 1시간 |
+| 1999-12-31T23:15:00.000Z | 45분 | 45분 전 | 1시간 |
+| 1999-12-31T23:00:00.000Z | 1시간 | 1시간 전 | 1시간 |
+| 1999-12-31T18:00:00.000Z | 6시간 | 6시간 전 | 6시간 |
+| 1999-12-30T00:00:00.000Z | 2일 | 2일 전 | 48시간 |
+| 1999-12-15T00:00:00.000Z | 17일 | 17일 전 | 408시간 |
+| 1999-12-01T00:00:00.000Z | 1개월 | 1개월 전 | 744시간 |
+| 1999-11-01T00:00:00.000Z | 2개월 | 2개월 전 | 1464시간 |
+| 1999-06-01T00:00:00.000Z | 7개월 | 7개월 전 | 5136시간 |
+| 1999-01-01T00:00:00.000Z | 1년 | 1년 전 | 8760시간 |
+| 1998-12-01T00:00:00.000Z | 1년 | 1년 전 | 9504시간 |
+| 1998-06-01T00:00:00.000Z | 2년 | 2년 전 | 13896시간 |
+| 1998-01-01T00:00:00.000Z | 2년 | 2년 전 | 17520시간 |
+| 1997-01-01T00:00:00.000Z | 3년 | 3년 전 | 26280시간 |
+| 1996-01-01T00:00:00.000Z | 4년 | 4년 전 | 35064시간 |
+| 1995-01-01T00:00:00.000Z | 5년 | 5년 전 | 43824시간 |
+| 1994-01-01T00:00:00.000Z | 6년 | 6년 전 | 52584시간 |
+
+## `formatRelative`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result |
+| ------------------------ | ----------------- |
+| 2000-01-10T00:00:00.000Z | 2000.01.10 |
+| 2000-01-05T00:00:00.000Z | 다음 수요일 00:00 |
+| 2000-01-02T00:00:00.000Z | 내일 00:00 |
+| 2000-01-01T00:00:00.000Z | 오늘 00:00 |
+| 1999-12-31T00:00:00.000Z | 어제 00:00 |
+| 1999-12-27T00:00:00.000Z | 지난 월요일 00:00 |
+| 1999-12-21T00:00:00.000Z | 1999.12.21 |
diff --git a/date-fns/src/locale/lb/_lib/formatDistance/index.js b/date-fns/src/locale/lb/_lib/formatDistance/index.js
new file mode 100644
index 0000000..3cde42c
--- /dev/null
+++ b/date-fns/src/locale/lb/_lib/formatDistance/index.js
@@ -0,0 +1,231 @@
+var formatDistanceLocale = {
+ lessThanXSeconds: {
+ standalone: {
+ one: 'manner wéi eng Sekonn',
+ other: 'manner wéi {{count}} Sekonnen'
+ },
+ withPreposition: {
+ one: 'manner wéi enger Sekonn',
+ other: 'manner wéi {{count}} Sekonnen'
+ }
+ },
+
+ xSeconds: {
+ standalone: {
+ one: 'eng Sekonn',
+ other: '{{count}} Sekonnen'
+ },
+ withPreposition: {
+ one: 'enger Sekonn',
+ other: '{{count}} Sekonnen'
+ }
+ },
+
+ halfAMinute: {
+ standalone: 'eng hallef Minutt',
+ withPreposition: 'enger hallwer Minutt'
+ },
+
+ lessThanXMinutes: {
+ standalone: {
+ one: 'manner wéi eng Minutt',
+ other: 'manner wéi {{count}} Minutten'
+ },
+ withPreposition: {
+ one: 'manner wéi enger Minutt',
+ other: 'manner wéi {{count}} Minutten'
+ }
+ },
+
+ xMinutes: {
+ standalone: {
+ one: 'eng Minutt',
+ other: '{{count}} Minutten'
+ },
+ withPreposition: {
+ one: 'enger Minutt',
+ other: '{{count}} Minutten'
+ }
+ },
+
+ aboutXHours: {
+ standalone: {
+ one: 'ongeféier eng Stonn',
+ other: 'ongeféier {{count}} Stonnen'
+ },
+ withPreposition: {
+ one: 'ongeféier enger Stonn',
+ other: 'ongeféier {{count}} Stonnen'
+ }
+ },
+
+ xHours: {
+ standalone: {
+ one: 'eng Stonn',
+ other: '{{count}} Stonnen'
+ },
+ withPreposition: {
+ one: 'enger Stonn',
+ other: '{{count}} Stonnen'
+ }
+ },
+
+ xDays: {
+ standalone: {
+ one: 'een Dag',
+ other: '{{count}} Deeg'
+ },
+ withPreposition: {
+ one: 'engem Dag',
+ other: '{{count}} Deeg'
+ }
+ },
+
+ aboutXWeeks: {
+ standalone: {
+ one: 'ongeféier eng Woch',
+ other: 'ongeféier {{count}} Wochen'
+ },
+ withPreposition: {
+ one: 'ongeféier enger Woche',
+ other: 'ongeféier {{count}} Wochen'
+ }
+ },
+
+ xWeeks: {
+ standalone: {
+ one: 'eng Woch',
+ other: '{{count}} Wochen'
+ },
+ withPreposition: {
+ one: 'enger Woch',
+ other: '{{count}} Wochen'
+ }
+ },
+
+ aboutXMonths: {
+ standalone: {
+ one: 'ongeféier ee Mount',
+ other: 'ongeféier {{count}} Méint'
+ },
+ withPreposition: {
+ one: 'ongeféier engem Mount',
+ other: 'ongeféier {{count}} Méint'
+ }
+ },
+
+ xMonths: {
+ standalone: {
+ one: 'ee Mount',
+ other: '{{count}} Méint'
+ },
+ withPreposition: {
+ one: 'engem Mount',
+ other: '{{count}} Méint'
+ }
+ },
+
+ aboutXYears: {
+ standalone: {
+ one: 'ongeféier ee Joer',
+ other: 'ongeféier {{count}} Joer'
+ },
+ withPreposition: {
+ one: 'ongeféier engem Joer',
+ other: 'ongeféier {{count}} Joer'
+ }
+ },
+
+ xYears: {
+ standalone: {
+ one: 'ee Joer',
+ other: '{{count}} Joer'
+ },
+ withPreposition: {
+ one: 'engem Joer',
+ other: '{{count}} Joer'
+ }
+ },
+
+ overXYears: {
+ standalone: {
+ one: 'méi wéi ee Joer',
+ other: 'méi wéi {{count}} Joer'
+ },
+ withPreposition: {
+ one: 'méi wéi engem Joer',
+ other: 'méi wéi {{count}} Joer'
+ }
+ },
+
+ almostXYears: {
+ standalone: {
+ one: 'bal ee Joer',
+ other: 'bal {{count}} Joer'
+ },
+ withPreposition: {
+ one: 'bal engem Joer',
+ other: 'bal {{count}} Joer'
+ }
+ }
+}
+
+var EXCEPTION_CONSONANTS = ['d', 'h', 'n', 't', 'z']
+var VOWELS = ['a,', 'e', 'i', 'o', 'u']
+var DIGITS_SPOKEN_N_NEEDED = [0, 1, 2, 3, 8, 9]
+var FIRST_TWO_DIGITS_SPOKEN_NO_N_NEEDED = [40, 50, 60, 70]
+
+// Eifeler Regel
+function isFinalNNeeded(nextWords) {
+ var firstLetter = nextWords.charAt(0).toLowerCase()
+ if (
+ VOWELS.indexOf(firstLetter) != -1 ||
+ EXCEPTION_CONSONANTS.indexOf(firstLetter) != -1
+ ) {
+ return true
+ }
+
+ // Numbers would need to converted into words for checking.
+ // Therefore, I have listed the digits that require a preceeding n with a few exceptions.
+ var firstWord = nextWords.split(' ')[0]
+ var number = parseInt(firstWord)
+ if (
+ !isNaN(number) &&
+ DIGITS_SPOKEN_N_NEEDED.indexOf(number % 10) != -1 &&
+ FIRST_TWO_DIGITS_SPOKEN_NO_N_NEEDED.indexOf(
+ parseInt(firstWord.substring(0, 2))
+ ) == -1
+ ) {
+ return true
+ }
+
+ // Omit other checks as they are not expected here.
+ return false
+}
+
+export default function formatDistance(token, count, options) {
+ options = options || {}
+
+ var usageGroup = options.addSuffix
+ ? formatDistanceLocale[token].withPreposition
+ : formatDistanceLocale[token].standalone
+
+ var result
+ if (typeof usageGroup === 'string') {
+ result = usageGroup
+ } else if (count === 1) {
+ result = usageGroup.one
+ } else {
+ result = usageGroup.other.replace('{{count}}', count)
+ }
+
+ if (options.addSuffix) {
+ if (options.comparison > 0) {
+ return 'a' + (isFinalNNeeded(result) ? 'n' : '') + ' ' + result
+ } else {
+ return 'viru' + (isFinalNNeeded(result) ? 'n' : '') + ' ' + result
+ }
+ }
+
+ return result
+}
diff --git a/date-fns/src/locale/lb/_lib/formatLong/index.js b/date-fns/src/locale/lb/_lib/formatLong/index.js
new file mode 100644
index 0000000..fd4a4ed
--- /dev/null
+++ b/date-fns/src/locale/lb/_lib/formatLong/index.js
@@ -0,0 +1,42 @@
+import buildFormatLongFn from '../../../_lib/buildFormatLongFn/index'
+
+// DIN 5008: https://de.wikipedia.org/wiki/Datumsformat#DIN_5008
+var dateFormats = {
+ full: 'EEEE, do MMMM y', // Méindeg, 7. Januar 2018
+ long: 'do MMMM y', // 7. Januar 2018
+ medium: 'do MMM y', // 7. Jan 2018
+ short: 'dd.MM.yy' // 07.01.18
+}
+
+var timeFormats = {
+ full: 'HH:mm:ss zzzz',
+ long: 'HH:mm:ss z',
+ medium: 'HH:mm:ss',
+ short: 'HH:mm'
+}
+
+var dateTimeFormats = {
+ full: "{{date}} 'um' {{time}}",
+ long: "{{date}} 'um' {{time}}",
+ medium: '{{date}} {{time}}',
+ short: '{{date}} {{time}}'
+}
+
+var formatLong = {
+ date: buildFormatLongFn({
+ formats: dateFormats,
+ defaultWidth: 'full'
+ }),
+
+ time: buildFormatLongFn({
+ formats: timeFormats,
+ defaultWidth: 'full'
+ }),
+
+ dateTime: buildFormatLongFn({
+ formats: dateTimeFormats,
+ defaultWidth: 'full'
+ })
+}
+
+export default formatLong
diff --git a/date-fns/src/locale/lb/_lib/formatRelative/index.js b/date-fns/src/locale/lb/_lib/formatRelative/index.js
new file mode 100644
index 0000000..75062cb
--- /dev/null
+++ b/date-fns/src/locale/lb/_lib/formatRelative/index.js
@@ -0,0 +1,27 @@
+var formatRelativeLocale = {
+ lastWeek: function(date) {
+ var day = date.getUTCDay()
+ var result = "'läschte"
+ if (day === 2 || day === 4) {
+ // Eifeler Regel: Add an n before the consonant d; Here "Dënschdeg" "and Donneschde".
+ result += 'n'
+ }
+ result += "' eeee 'um' p"
+ return result
+ },
+ yesterday: "'gëschter um' p",
+ today: "'haut um' p",
+ tomorrow: "'moien um' p",
+ nextWeek: "eeee 'um' p",
+ other: 'P'
+}
+
+export default function formatRelative(token, date, _baseDate, _options) {
+ var format = formatRelativeLocale[token]
+
+ if (typeof format === 'function') {
+ return format(date)
+ }
+
+ return format
+}
diff --git a/date-fns/src/locale/lb/_lib/localize/index.js b/date-fns/src/locale/lb/_lib/localize/index.js
new file mode 100644
index 0000000..33ee0b1
--- /dev/null
+++ b/date-fns/src/locale/lb/_lib/localize/index.js
@@ -0,0 +1,167 @@
+import buildLocalizeFn from '../../../_lib/buildLocalizeFn/index'
+
+var eraValues = {
+ narrow: ['v.Chr.', 'n.Chr.'],
+ abbreviated: ['v.Chr.', 'n.Chr.'],
+ wide: ['viru Christus', 'no Christus']
+}
+
+var quarterValues = {
+ narrow: ['1', '2', '3', '4'],
+ abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],
+ wide: ['1. Quartal', '2. Quartal', '3. Quartal', '4. Quartal']
+}
+
+var monthValues = {
+ narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],
+ abbreviated: [
+ 'Jan',
+ 'Feb',
+ 'Mäe',
+ 'Abr',
+ 'Mee',
+ 'Jun',
+ 'Jul',
+ 'Aug',
+ 'Sep',
+ 'Okt',
+ 'Nov',
+ 'Dez'
+ ],
+ wide: [
+ 'Januar',
+ 'Februar',
+ 'Mäerz',
+ 'Abrëll',
+ 'Mee',
+ 'Juni',
+ 'Juli',
+ 'August',
+ 'September',
+ 'Oktober',
+ 'November',
+ 'Dezember'
+ ]
+}
+
+var dayValues = {
+ narrow: ['S', 'M', 'D', 'M', 'D', 'F', 'S'],
+ short: ['So', 'Mé', 'Dë', 'Më', 'Do', 'Fr', 'Sa'],
+ abbreviated: ['So.', 'Mé.', 'Dë.', 'Më.', 'Do.', 'Fr.', 'Sa.'],
+ wide: [
+ 'Sonndeg',
+ 'Méindeg',
+ 'Dënschdeg',
+ 'Mëttwoch',
+ 'Donneschdeg',
+ 'Freideg',
+ 'Samschdeg'
+ ]
+}
+
+var dayPeriodValues = {
+ narrow: {
+ am: 'mo.',
+ pm: 'nomë.',
+ midnight: 'Mëtternuecht',
+ noon: 'Mëtteg',
+ morning: 'Moien',
+ afternoon: 'Nomëtteg',
+ evening: 'Owend',
+ night: 'Nuecht'
+ },
+ abbreviated: {
+ am: 'moies',
+ pm: 'nomëttes',
+ midnight: 'Mëtternuecht',
+ noon: 'Mëtteg',
+ morning: 'Moien',
+ afternoon: 'Nomëtteg',
+ evening: 'Owend',
+ night: 'Nuecht'
+ },
+ wide: {
+ am: 'moies',
+ pm: 'nomëttes',
+ midnight: 'Mëtternuecht',
+ noon: 'Mëtteg',
+ morning: 'Moien',
+ afternoon: 'Nomëtteg',
+ evening: 'Owend',
+ night: 'Nuecht'
+ }
+}
+var formattingDayPeriodValues = {
+ narrow: {
+ am: 'mo.',
+ pm: 'nom.',
+ midnight: 'Mëtternuecht',
+ noon: 'mëttes',
+ morning: 'moies',
+ afternoon: 'nomëttes',
+ evening: 'owes',
+ night: 'nuets'
+ },
+ abbreviated: {
+ am: 'moies',
+ pm: 'nomëttes',
+ midnight: 'Mëtternuecht',
+ noon: 'mëttes',
+ morning: 'moies',
+ afternoon: 'nomëttes',
+ evening: 'owes',
+ night: 'nuets'
+ },
+ wide: {
+ am: 'moies',
+ pm: 'nomëttes',
+ midnight: 'Mëtternuecht',
+ noon: 'mëttes',
+ morning: 'moies',
+ afternoon: 'nomëttes',
+ evening: 'owes',
+ night: 'nuets'
+ }
+}
+
+function ordinalNumber(dirtyNumber, _dirtyOptions) {
+ var number = Number(dirtyNumber)
+
+ return number + '.'
+}
+
+var localize = {
+ ordinalNumber: ordinalNumber,
+
+ era: buildLocalizeFn({
+ values: eraValues,
+ defaultWidth: 'wide'
+ }),
+
+ quarter: buildLocalizeFn({
+ values: quarterValues,
+ defaultWidth: 'wide',
+ argumentCallback: function(quarter) {
+ return Number(quarter) - 1
+ }
+ }),
+
+ month: buildLocalizeFn({
+ values: monthValues,
+ defaultWidth: 'wide'
+ }),
+
+ day: buildLocalizeFn({
+ values: dayValues,
+ defaultWidth: 'wide'
+ }),
+
+ dayPeriod: buildLocalizeFn({
+ values: dayPeriodValues,
+ defaultWidth: 'wide',
+ formattingValues: formattingDayPeriodValues,
+ defaultFormattingWidth: 'wide'
+ })
+}
+
+export default localize
diff --git a/date-fns/src/locale/lb/_lib/match/index.js b/date-fns/src/locale/lb/_lib/match/index.js
new file mode 100644
index 0000000..5935d86
--- /dev/null
+++ b/date-fns/src/locale/lb/_lib/match/index.js
@@ -0,0 +1,137 @@
+import buildMatchPatternFn from '../../../_lib/buildMatchPatternFn/index'
+import buildMatchFn from '../../../_lib/buildMatchFn/index'
+
+var matchOrdinalNumberPattern = /^(\d+)(\.)?/i
+var parseOrdinalNumberPattern = /\d+/i
+
+var matchEraPatterns = {
+ narrow: /^(v\.? ?Chr\.?|n\.? ?Chr\.?)/i,
+ abbreviated: /^(v\.? ?Chr\.?|n\.? ?Chr\.?)/i,
+ wide: /^(viru Christus|virun eiser Zäitrechnung|no Christus|eiser Zäitrechnung)/i
+}
+var parseEraPatterns = {
+ any: [/^v/i, /^n/i]
+}
+
+var matchQuarterPatterns = {
+ narrow: /^[1234]/i,
+ abbreviated: /^q[1234]/i,
+ wide: /^[1234](\.)? Quartal/i
+}
+var parseQuarterPatterns = {
+ any: [/1/i, /2/i, /3/i, /4/i]
+}
+
+var matchMonthPatterns = {
+ narrow: /^[jfmasond]/i,
+ abbreviated: /^(jan|feb|mäe|abr|mee|jun|jul|aug|sep|okt|nov|dez)/i,
+ wide: /^(januar|februar|mäerz|abrëll|mee|juni|juli|august|september|oktober|november|dezember)/i
+}
+var parseMonthPatterns = {
+ narrow: [
+ /^j/i,
+ /^f/i,
+ /^m/i,
+ /^a/i,
+ /^m/i,
+ /^j/i,
+ /^j/i,
+ /^a/i,
+ /^s/i,
+ /^o/i,
+ /^n/i,
+ /^d/i
+ ],
+ any: [
+ /^ja/i,
+ /^f/i,
+ /^mä/i,
+ /^ab/i,
+ /^me/i,
+ /^jun/i,
+ /^jul/i,
+ /^au/i,
+ /^s/i,
+ /^o/i,
+ /^n/i,
+ /^d/i
+ ]
+}
+
+var matchDayPatterns = {
+ narrow: /^[smdf]/i,
+ short: /^(so|mé|dë|më|do|fr|sa)/i,
+ abbreviated: /^(son?|méi?|dën?|mët?|don?|fre?|sam?)\.?/i,
+ wide: /^(sonndeg|méindeg|dënschdeg|mëttwoch|donneschdeg|freideg|samschdeg)/i
+}
+var parseDayPatterns = {
+ any: [/^so/i, /^mé/i, /^dë/i, /^më/i, /^do/i, /^f/i, /^sa/i]
+}
+
+var matchDayPeriodPatterns = {
+ narrow: /^(mo\.?|nomë\.?|Mëtternuecht|mëttes|moies|nomëttes|owes|nuets)/i,
+ abbreviated: /^(moi\.?|nomët\.?|Mëtternuecht|mëttes|moies|nomëttes|owes|nuets)/i,
+ wide: /^(moies|nomëttes|Mëtternuecht|mëttes|moies|nomëttes|owes|nuets)/i
+}
+var parseDayPeriodPatterns = {
+ any: {
+ am: /^m/i,
+ pm: /^n/i,
+ midnight: /^Mëtter/i,
+ noon: /^mëttes/i,
+ morning: /moies/i,
+ afternoon: /nomëttes/i, // will never be matched. Afternoon is matched by `pm`
+ evening: /owes/i,
+ night: /nuets/i // will never be matched. Night is matched by `pm`
+ }
+}
+
+var match = {
+ ordinalNumber: buildMatchPatternFn({
+ matchPattern: matchOrdinalNumberPattern,
+ parsePattern: parseOrdinalNumberPattern,
+ valueCallback: function(value) {
+ return parseInt(value, 10)
+ }
+ }),
+
+ era: buildMatchFn({
+ matchPatterns: matchEraPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseEraPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ quarter: buildMatchFn({
+ matchPatterns: matchQuarterPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseQuarterPatterns,
+ defaultParseWidth: 'any',
+ valueCallback: function(index) {
+ return index + 1
+ }
+ }),
+
+ month: buildMatchFn({
+ matchPatterns: matchMonthPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseMonthPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ day: buildMatchFn({
+ matchPatterns: matchDayPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseDayPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ dayPeriod: buildMatchFn({
+ matchPatterns: matchDayPeriodPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseDayPeriodPatterns,
+ defaultParseWidth: 'any'
+ })
+}
+
+export default match
diff --git a/date-fns/src/locale/lb/index.d.ts b/date-fns/src/locale/lb/index.d.ts
new file mode 100644
index 0000000..727529b
--- /dev/null
+++ b/date-fns/src/locale/lb/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { lb } from 'date-fns/locale'
+export default lb
diff --git a/date-fns/src/locale/lb/index.js b/date-fns/src/locale/lb/index.js
new file mode 100644
index 0000000..25c95c2
--- /dev/null
+++ b/date-fns/src/locale/lb/index.js
@@ -0,0 +1,28 @@
+import formatDistance from './_lib/formatDistance/index'
+import formatLong from './_lib/formatLong/index'
+import formatRelative from './_lib/formatRelative/index'
+import localize from './_lib/localize/index'
+import match from './_lib/match/index'
+
+/**
+ * @type {Locale}
+ * @category Locales
+ * @summary Luxembourgish locale.
+ * @language Luxembourgish
+ * @iso-639-2 ltz
+ * @author Daniel Waxweiler [@dwaxweiler]{@link https://github.com/dwaxweiler}
+ */
+var locale = {
+ code: 'lb',
+ formatDistance: formatDistance,
+ formatLong: formatLong,
+ formatRelative: formatRelative,
+ localize: localize,
+ match: match,
+ options: {
+ weekStartsOn: 1 /* Monday */,
+ firstWeekContainsDate: 4
+ }
+}
+
+export default locale
diff --git a/date-fns/src/locale/lb/index.js.flow b/date-fns/src/locale/lb/index.js.flow
new file mode 100644
index 0000000..b9dfe66
--- /dev/null
+++ b/date-fns/src/locale/lb/index.js.flow
@@ -0,0 +1,35 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+declare module.exports: Locale
diff --git a/date-fns/src/locale/lb/snapshot.md b/date-fns/src/locale/lb/snapshot.md
new file mode 100644
index 0000000..0820db5
--- /dev/null
+++ b/date-fns/src/locale/lb/snapshot.md
@@ -0,0 +1,304 @@
+# Luxembourgish (lb) locale
+
+## `format` and `parse`
+
+| Title | Token string | Date | `format` result | `parse` result |
+| ------------------------------- | ------------ | ------------------------ | ------------------------------------------------ | ------------------------ |
+| Calendar year | yo | 1987-02-11T12:13:14.015Z | 1987. | 1987-01-01T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 5. | 0005-01-01T00:00:00.000Z |
+| Local week-numbering year | Yo | 1987-02-11T12:13:14.015Z | 1987. | 1986-12-29T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 4. | 0003-12-29T00:00:00.000Z |
+| Quarter (formatting) | Qo | 2019-01-01T12:13:14.015Z | 1. | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2. | 2019-04-01T00:00:00.000Z |
+| | QQQ | 2019-01-01T12:13:14.015Z | Q1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | Q2 | 2019-04-01T00:00:00.000Z |
+| | QQQQ | 2019-01-01T12:13:14.015Z | 1. Quartal | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2. Quartal | 2019-04-01T00:00:00.000Z |
+| | QQQQQ | 2019-01-01T12:13:14.015Z | 1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2 | 2019-04-01T00:00:00.000Z |
+| Quarter (stand-alone) | qo | 2019-01-01T12:13:14.015Z | 1. | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2. | 2019-04-01T00:00:00.000Z |
+| | qqq | 2019-01-01T12:13:14.015Z | Q1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | Q2 | 2019-04-01T00:00:00.000Z |
+| | qqqq | 2019-01-01T12:13:14.015Z | 1. Quartal | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2. Quartal | 2019-04-01T00:00:00.000Z |
+| Month (formatting) | Mo | 2019-02-11T12:13:14.015Z | 2. | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7. | 2019-07-01T00:00:00.000Z |
+| | MMM | 2019-02-11T12:13:14.015Z | Feb | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | Jul | 2019-07-01T00:00:00.000Z |
+| | MMMM | 2019-02-11T12:13:14.015Z | Februar | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | Juli | 2019-07-01T00:00:00.000Z |
+| | MMMMM | 2019-02-11T12:13:14.015Z | F | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | J | 2019-01-01T00:00:00.000Z |
+| Month (stand-alone) | Lo | 2019-02-11T12:13:14.015Z | 2. | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7. | 2019-07-01T00:00:00.000Z |
+| | LLL | 2019-02-11T12:13:14.015Z | Feb | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | Jul | 2019-07-01T00:00:00.000Z |
+| | LLLL | 2019-02-11T12:13:14.015Z | Februar | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | Juli | 2019-07-01T00:00:00.000Z |
+| | LLLLL | 2019-02-11T12:13:14.015Z | F | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | J | 2019-01-01T00:00:00.000Z |
+| Local week of year | wo | 2019-01-01T12:13:14.015Z | 1. | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48. | 2019-11-25T00:00:00.000Z |
+| ISO week of year | Io | 2019-01-01T12:13:14.015Z | 1. | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48. | 2019-11-25T00:00:00.000Z |
+| Day of month | do | 2019-02-11T12:13:14.015Z | 11. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-28T12:13:14.015Z | 28. | 2019-02-28T00:00:00.000Z |
+| Day of year | Do | 2019-02-11T12:13:14.015Z | 42. | 2019-02-11T00:00:00.000Z |
+| | | 2019-12-31T12:13:14.015Z | 365. | 2019-12-31T00:00:00.000Z |
+| Day of week (formatting) | E | 2019-02-11T12:13:14.015Z | Mé. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Fr. | 2019-02-15T00:00:00.000Z |
+| | EE | 2019-02-11T12:13:14.015Z | Mé. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Fr. | 2019-02-15T00:00:00.000Z |
+| | EEE | 2019-02-11T12:13:14.015Z | Mé. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Fr. | 2019-02-15T00:00:00.000Z |
+| | EEEE | 2019-02-11T12:13:14.015Z | Méindeg | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Freideg | 2019-02-15T00:00:00.000Z |
+| | EEEEE | 2019-02-11T12:13:14.015Z | M | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | F | 2019-02-15T00:00:00.000Z |
+| | EEEEEE | 2019-02-11T12:13:14.015Z | Mé | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Fr | 2019-02-15T00:00:00.000Z |
+| ISO day of week (formatting) | io | 2019-02-11T12:13:14.015Z | 1. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5. | 2019-02-15T00:00:00.000Z |
+| | iii | 2019-02-11T12:13:14.015Z | Mé. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Fr. | 2019-02-15T00:00:00.000Z |
+| | iiii | 2019-02-11T12:13:14.015Z | Méindeg | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Freideg | 2019-02-15T00:00:00.000Z |
+| | iiiii | 2019-02-11T12:13:14.015Z | M | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | F | 2019-02-15T00:00:00.000Z |
+| | iiiiii | 2019-02-11T12:13:14.015Z | Mé | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Fr | 2019-02-15T00:00:00.000Z |
+| Local day of week (formatting) | eo | 2019-02-11T12:13:14.015Z | 1. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5. | 2019-02-15T00:00:00.000Z |
+| | eee | 2019-02-11T12:13:14.015Z | Mé. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Fr. | 2019-02-15T00:00:00.000Z |
+| | eeee | 2019-02-11T12:13:14.015Z | Méindeg | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Freideg | 2019-02-15T00:00:00.000Z |
+| | eeeee | 2019-02-11T12:13:14.015Z | M | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | F | 2019-02-15T00:00:00.000Z |
+| | eeeeee | 2019-02-11T12:13:14.015Z | Mé | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Fr | 2019-02-15T00:00:00.000Z |
+| Local day of week (stand-alone) | co | 2019-02-11T12:13:14.015Z | 1. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5. | 2019-02-15T00:00:00.000Z |
+| | ccc | 2019-02-11T12:13:14.015Z | Mé. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Fr. | 2019-02-15T00:00:00.000Z |
+| | cccc | 2019-02-11T12:13:14.015Z | Méindeg | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Freideg | 2019-02-15T00:00:00.000Z |
+| | ccccc | 2019-02-11T12:13:14.015Z | M | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | F | 2019-02-15T00:00:00.000Z |
+| | cccccc | 2019-02-11T12:13:14.015Z | Mé | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Fr | 2019-02-15T00:00:00.000Z |
+| AM, PM | a | 2019-02-11T11:13:14.015Z | moies | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | nomëttes | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | nomëttes | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | moies | Invalid Date |
+| | aa | 2019-02-11T11:13:14.015Z | moies | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | nomëttes | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | nomëttes | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | moies | Invalid Date |
+| | aaa | 2019-02-11T11:13:14.015Z | moies | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | nomëttes | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | nomëttes | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | moies | Invalid Date |
+| | aaaa | 2019-02-11T11:13:14.015Z | moies | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | nomëttes | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | nomëttes | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | moies | 2019-02-11T00:00:00.000Z |
+| | aaaaa | 2019-02-11T11:13:14.015Z | mo. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | nom. | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | nom. | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | mo. | 2019-02-11T00:00:00.000Z |
+| AM, PM, noon, midnight | b | 2019-02-11T11:13:14.015Z | moies | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | nomëttes | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | nomëttes | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | moies | Invalid Date |
+| | bb | 2019-02-11T11:13:14.015Z | moies | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | nomëttes | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | nomëttes | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | moies | Invalid Date |
+| | bbb | 2019-02-11T11:13:14.015Z | moies | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | nomëttes | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | nomëttes | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | moies | Invalid Date |
+| | bbbb | 2019-02-11T11:13:14.015Z | moies | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | nomëttes | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | nomëttes | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | moies | 2019-02-11T00:00:00.000Z |
+| | bbbbb | 2019-02-11T11:13:14.015Z | mo. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | nom. | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | nom. | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | mo. | 2019-02-11T00:00:00.000Z |
+| Flexible day period | B | 2019-02-11T11:13:14.015Z | moies | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | nomëttes | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | owes | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | nuets | 2019-02-11T12:00:00.000Z |
+| | BB | 2019-02-11T11:13:14.015Z | moies | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | nomëttes | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | owes | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | nuets | 2019-02-11T12:00:00.000Z |
+| | BBB | 2019-02-11T11:13:14.015Z | moies | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | nomëttes | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | owes | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | nuets | 2019-02-11T12:00:00.000Z |
+| | BBBB | 2019-02-11T11:13:14.015Z | moies | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | nomëttes | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | owes | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | nuets | 2019-02-11T12:00:00.000Z |
+| | BBBBB | 2019-02-11T11:13:14.015Z | moies | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | nomëttes | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | owes | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | nuets | 2019-02-11T12:00:00.000Z |
+| Hour [1-12] | ho | 2019-02-11T11:13:14.015Z | 11. | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11. | 2019-02-11T23:00:00.000Z |
+| Hour [0-23] | Ho | 2019-02-11T11:13:14.015Z | 11. | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23. | 2019-02-11T23:00:00.000Z |
+| Hour [0-11] | Ko | 2019-02-11T11:13:14.015Z | 11. | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11. | 2019-02-11T23:00:00.000Z |
+| Hour [1-24] | ko | 2019-02-11T11:13:14.015Z | 11. | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23. | 2019-02-11T23:00:00.000Z |
+| Minute | mo | 2019-01-01T12:01:14.015Z | 1. | 2019-01-01T12:01:00.000Z |
+| | | 2019-04-01T12:55:14.015Z | 55. | 2019-04-01T12:55:00.000Z |
+| Second | so | 2019-01-01T12:13:01.015Z | 1. | 2019-01-01T12:13:01.000Z |
+| | | 2019-04-01T12:13:55.015Z | 55. | 2019-04-01T12:13:55.000Z |
+| Long localized date | P | 1987-02-11T12:13:14.015Z | 11.02.87 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29.05.53 | 1453-05-29T00:00:00.000Z |
+| | PP | 1987-02-11T12:13:14.015Z | 11. Feb 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29. Mee 1453 | 1453-05-29T00:00:00.000Z |
+| | PPP | 1987-02-11T12:13:14.015Z | 11. Februar 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29. Mee 1453 | 1453-05-29T00:00:00.000Z |
+| | PPPP | 1987-02-11T12:13:14.015Z | Mëttwoch, 11. Februar 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | Sonndeg, 29. Mee 1453 | 1453-05-29T00:00:00.000Z |
+| Long localized time | p | 1987-02-11T12:13:14.015Z | 12:13 | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 23:59 | 1453-05-29T23:59:00.000Z |
+| | pp | 1987-02-11T12:13:14.015Z | 12:13:14 | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 | 1453-05-29T23:59:59.000Z |
+| | ppp | 1987-02-11T12:13:14.015Z | 12:13:14 GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 GMT+0 | Errored |
+| | pppp | 1987-02-11T12:13:14.015Z | 12:13:14 GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 GMT+00:00 | Errored |
+| Combination of date and time | Pp | 1987-02-11T12:13:14.015Z | 11.02.87 12:13 | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29.05.53 23:59 | 1453-05-29T23:59:00.000Z |
+| | PPpp | 1987-02-11T12:13:14.015Z | 11. Feb 1987 12:13:14 | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29. Mee 1453 23:59:59 | 1453-05-29T23:59:59.000Z |
+| | PPPppp | 1987-02-11T12:13:14.015Z | 11. Februar 1987 um 12:13:14 GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 29. Mee 1453 um 23:59:59 GMT+0 | Errored |
+| | PPPPpppp | 1987-02-11T12:13:14.015Z | Mëttwoch, 11. Februar 1987 um 12:13:14 GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | Sonndeg, 29. Mee 1453 um 23:59:59 GMT+00:00 | Errored |
+
+## `formatDistance`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `includeSeconds: true` | `addSuffix: true` |
+| ------------------------ | --------------------- | ---------------------- | ---------------------------- |
+| 2006-01-01T00:00:00.000Z | ongeféier 6 Joer | ongeféier 6 Joer | an ongeféier 6 Joer |
+| 2005-01-01T00:00:00.000Z | ongeféier 5 Joer | ongeféier 5 Joer | an ongeféier 5 Joer |
+| 2004-01-01T00:00:00.000Z | ongeféier 4 Joer | ongeféier 4 Joer | an ongeféier 4 Joer |
+| 2003-01-01T00:00:00.000Z | ongeféier 3 Joer | ongeféier 3 Joer | an ongeféier 3 Joer |
+| 2002-01-01T00:00:00.000Z | ongeféier 2 Joer | ongeféier 2 Joer | an ongeféier 2 Joer |
+| 2001-06-01T00:00:00.000Z | méi wéi ee Joer | méi wéi ee Joer | a méi wéi engem Joer |
+| 2001-02-01T00:00:00.000Z | ongeféier ee Joer | ongeféier ee Joer | an ongeféier engem Joer |
+| 2001-01-01T00:00:00.000Z | ongeféier ee Joer | ongeféier ee Joer | an ongeféier engem Joer |
+| 2000-06-01T00:00:00.000Z | 5 Méint | 5 Méint | a 5 Méint |
+| 2000-03-01T00:00:00.000Z | 2 Méint | 2 Méint | an 2 Méint |
+| 2000-02-01T00:00:00.000Z | ongeféier ee Mount | ongeféier ee Mount | an ongeféier engem Mount |
+| 2000-01-15T00:00:00.000Z | 14 Deeg | 14 Deeg | a 14 Deeg |
+| 2000-01-02T00:00:00.000Z | een Dag | een Dag | an engem Dag |
+| 2000-01-01T06:00:00.000Z | ongeféier 6 Stonnen | ongeféier 6 Stonnen | an ongeféier 6 Stonnen |
+| 2000-01-01T01:00:00.000Z | ongeféier eng Stonn | ongeféier eng Stonn | an ongeféier enger Stonn |
+| 2000-01-01T00:45:00.000Z | ongeféier eng Stonn | ongeféier eng Stonn | an ongeféier enger Stonn |
+| 2000-01-01T00:30:00.000Z | 30 Minutten | 30 Minutten | an 30 Minutten |
+| 2000-01-01T00:15:00.000Z | 15 Minutten | 15 Minutten | a 15 Minutten |
+| 2000-01-01T00:01:00.000Z | eng Minutt | eng Minutt | an enger Minutt |
+| 2000-01-01T00:00:25.000Z | manner wéi eng Minutt | eng hallef Minutt | a manner wéi enger Minutt |
+| 2000-01-01T00:00:15.000Z | manner wéi eng Minutt | manner wéi 20 Sekonnen | a manner wéi enger Minutt |
+| 2000-01-01T00:00:05.000Z | manner wéi eng Minutt | manner wéi 10 Sekonnen | a manner wéi enger Minutt |
+| 2000-01-01T00:00:00.000Z | manner wéi eng Minutt | manner wéi 5 Sekonnen | viru manner wéi enger Minutt |
+| 1999-12-31T23:59:55.000Z | manner wéi eng Minutt | manner wéi 10 Sekonnen | viru manner wéi enger Minutt |
+| 1999-12-31T23:59:45.000Z | manner wéi eng Minutt | manner wéi 20 Sekonnen | viru manner wéi enger Minutt |
+| 1999-12-31T23:59:35.000Z | manner wéi eng Minutt | eng hallef Minutt | viru manner wéi enger Minutt |
+| 1999-12-31T23:59:00.000Z | eng Minutt | eng Minutt | virun enger Minutt |
+| 1999-12-31T23:45:00.000Z | 15 Minutten | 15 Minutten | viru 15 Minutten |
+| 1999-12-31T23:30:00.000Z | 30 Minutten | 30 Minutten | virun 30 Minutten |
+| 1999-12-31T23:15:00.000Z | ongeféier eng Stonn | ongeféier eng Stonn | virun ongeféier enger Stonn |
+| 1999-12-31T23:00:00.000Z | ongeféier eng Stonn | ongeféier eng Stonn | virun ongeféier enger Stonn |
+| 1999-12-31T18:00:00.000Z | ongeféier 6 Stonnen | ongeféier 6 Stonnen | virun ongeféier 6 Stonnen |
+| 1999-12-30T00:00:00.000Z | 2 Deeg | 2 Deeg | virun 2 Deeg |
+| 1999-12-15T00:00:00.000Z | 17 Deeg | 17 Deeg | viru 17 Deeg |
+| 1999-12-01T00:00:00.000Z | ongeféier ee Mount | ongeféier ee Mount | virun ongeféier engem Mount |
+| 1999-11-01T00:00:00.000Z | 2 Méint | 2 Méint | virun 2 Méint |
+| 1999-06-01T00:00:00.000Z | 7 Méint | 7 Méint | viru 7 Méint |
+| 1999-01-01T00:00:00.000Z | ongeféier ee Joer | ongeféier ee Joer | virun ongeféier engem Joer |
+| 1998-12-01T00:00:00.000Z | ongeféier ee Joer | ongeféier ee Joer | virun ongeféier engem Joer |
+| 1998-06-01T00:00:00.000Z | méi wéi ee Joer | méi wéi ee Joer | viru méi wéi engem Joer |
+| 1998-01-01T00:00:00.000Z | ongeféier 2 Joer | ongeféier 2 Joer | virun ongeféier 2 Joer |
+| 1997-01-01T00:00:00.000Z | ongeféier 3 Joer | ongeféier 3 Joer | virun ongeféier 3 Joer |
+| 1996-01-01T00:00:00.000Z | ongeféier 4 Joer | ongeféier 4 Joer | virun ongeféier 4 Joer |
+| 1995-01-01T00:00:00.000Z | ongeféier 5 Joer | ongeféier 5 Joer | virun ongeféier 5 Joer |
+| 1994-01-01T00:00:00.000Z | ongeféier 6 Joer | ongeféier 6 Joer | virun ongeféier 6 Joer |
+
+## `formatDistanceStrict`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `addSuffix: true` | With forced unit (i.e. `hour`) |
+| ------------------------ | ----------- | ------------------ | ------------------------------ |
+| 2006-01-01T00:00:00.000Z | 6 Joer | a 6 Joer | 52608 Stonnen |
+| 2005-01-01T00:00:00.000Z | 5 Joer | a 5 Joer | 43848 Stonnen |
+| 2004-01-01T00:00:00.000Z | 4 Joer | a 4 Joer | 35064 Stonnen |
+| 2003-01-01T00:00:00.000Z | 3 Joer | an 3 Joer | 26304 Stonnen |
+| 2002-01-01T00:00:00.000Z | 2 Joer | an 2 Joer | 17544 Stonnen |
+| 2001-06-01T00:00:00.000Z | ee Joer | an engem Joer | 12408 Stonnen |
+| 2001-02-01T00:00:00.000Z | ee Joer | an engem Joer | 9528 Stonnen |
+| 2001-01-01T00:00:00.000Z | ee Joer | an engem Joer | 8784 Stonnen |
+| 2000-06-01T00:00:00.000Z | 5 Méint | a 5 Méint | 3648 Stonnen |
+| 2000-03-01T00:00:00.000Z | 2 Méint | an 2 Méint | 1440 Stonnen |
+| 2000-02-01T00:00:00.000Z | ee Mount | an engem Mount | 744 Stonnen |
+| 2000-01-15T00:00:00.000Z | 14 Deeg | a 14 Deeg | 336 Stonnen |
+| 2000-01-02T00:00:00.000Z | een Dag | an engem Dag | 24 Stonnen |
+| 2000-01-01T06:00:00.000Z | 6 Stonnen | a 6 Stonnen | 6 Stonnen |
+| 2000-01-01T01:00:00.000Z | eng Stonn | an enger Stonn | eng Stonn |
+| 2000-01-01T00:45:00.000Z | 45 Minutten | a 45 Minutten | eng Stonn |
+| 2000-01-01T00:30:00.000Z | 30 Minutten | an 30 Minutten | eng Stonn |
+| 2000-01-01T00:15:00.000Z | 15 Minutten | a 15 Minutten | 0 Stonnen |
+| 2000-01-01T00:01:00.000Z | eng Minutt | an enger Minutt | 0 Stonnen |
+| 2000-01-01T00:00:25.000Z | 25 Sekonnen | a 25 Sekonnen | 0 Stonnen |
+| 2000-01-01T00:00:15.000Z | 15 Sekonnen | a 15 Sekonnen | 0 Stonnen |
+| 2000-01-01T00:00:05.000Z | 5 Sekonnen | a 5 Sekonnen | 0 Stonnen |
+| 2000-01-01T00:00:00.000Z | 0 Sekonnen | virun 0 Sekonnen | 0 Stonnen |
+| 1999-12-31T23:59:55.000Z | 5 Sekonnen | viru 5 Sekonnen | 0 Stonnen |
+| 1999-12-31T23:59:45.000Z | 15 Sekonnen | viru 15 Sekonnen | 0 Stonnen |
+| 1999-12-31T23:59:35.000Z | 25 Sekonnen | viru 25 Sekonnen | 0 Stonnen |
+| 1999-12-31T23:59:00.000Z | eng Minutt | virun enger Minutt | 0 Stonnen |
+| 1999-12-31T23:45:00.000Z | 15 Minutten | viru 15 Minutten | 0 Stonnen |
+| 1999-12-31T23:30:00.000Z | 30 Minutten | virun 30 Minutten | eng Stonn |
+| 1999-12-31T23:15:00.000Z | 45 Minutten | viru 45 Minutten | eng Stonn |
+| 1999-12-31T23:00:00.000Z | eng Stonn | virun enger Stonn | eng Stonn |
+| 1999-12-31T18:00:00.000Z | 6 Stonnen | viru 6 Stonnen | 6 Stonnen |
+| 1999-12-30T00:00:00.000Z | 2 Deeg | virun 2 Deeg | 48 Stonnen |
+| 1999-12-15T00:00:00.000Z | 17 Deeg | viru 17 Deeg | 408 Stonnen |
+| 1999-12-01T00:00:00.000Z | ee Mount | virun engem Mount | 744 Stonnen |
+| 1999-11-01T00:00:00.000Z | 2 Méint | virun 2 Méint | 1464 Stonnen |
+| 1999-06-01T00:00:00.000Z | 7 Méint | viru 7 Méint | 5136 Stonnen |
+| 1999-01-01T00:00:00.000Z | ee Joer | virun engem Joer | 8760 Stonnen |
+| 1998-12-01T00:00:00.000Z | ee Joer | virun engem Joer | 9504 Stonnen |
+| 1998-06-01T00:00:00.000Z | 2 Joer | virun 2 Joer | 13896 Stonnen |
+| 1998-01-01T00:00:00.000Z | 2 Joer | virun 2 Joer | 17520 Stonnen |
+| 1997-01-01T00:00:00.000Z | 3 Joer | virun 3 Joer | 26280 Stonnen |
+| 1996-01-01T00:00:00.000Z | 4 Joer | viru 4 Joer | 35064 Stonnen |
+| 1995-01-01T00:00:00.000Z | 5 Joer | viru 5 Joer | 43824 Stonnen |
+| 1994-01-01T00:00:00.000Z | 6 Joer | viru 6 Joer | 52584 Stonnen |
+
+## `formatRelative`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result |
+| ------------------------ | ------------------------ |
+| 2000-01-10T00:00:00.000Z | 10.01.00 |
+| 2000-01-05T00:00:00.000Z | Mëttwoch um 00:00 |
+| 2000-01-02T00:00:00.000Z | moien um 00:00 |
+| 2000-01-01T00:00:00.000Z | haut um 00:00 |
+| 1999-12-31T00:00:00.000Z | gëschter um 00:00 |
+| 1999-12-27T00:00:00.000Z | läschte Méindeg um 00:00 |
+| 1999-12-21T00:00:00.000Z | 21.12.99 |
diff --git a/date-fns/src/locale/lt/_lib/formatDistance/index.js b/date-fns/src/locale/lt/_lib/formatDistance/index.js
new file mode 100644
index 0000000..0ec0f66
--- /dev/null
+++ b/date-fns/src/locale/lt/_lib/formatDistance/index.js
@@ -0,0 +1,165 @@
+var formatDistanceLocale = {
+ lessThanXSeconds: {
+ one: translateSeconds,
+ other: translate
+ },
+
+ xSeconds: {
+ one: translateSeconds,
+ other: translate
+ },
+
+ halfAMinute: 'pusė minutės',
+
+ lessThanXMinutes: {
+ one: translateSingular,
+ other: translate
+ },
+
+ xMinutes: {
+ one: translateSingular,
+ other: translate
+ },
+
+ aboutXHours: {
+ one: translateSingular,
+ other: translate
+ },
+
+ xHours: {
+ one: translateSingular,
+ other: translate
+ },
+
+ xDays: {
+ one: translateSingular,
+ other: translate
+ },
+
+ aboutWeeks: {
+ one: translateSingular,
+ other: translate
+ },
+
+ xWeeks: {
+ one: translateSingular,
+ other: translate
+ },
+
+ aboutXMonths: {
+ one: translateSingular,
+ other: translate
+ },
+
+ xMonths: {
+ one: translateSingular,
+ other: translate
+ },
+
+ aboutXYears: {
+ one: translateSingular,
+ other: translate
+ },
+
+ xYears: {
+ one: translateSingular,
+ other: translate
+ },
+
+ overXYears: {
+ one: translateSingular,
+ other: translate
+ },
+
+ almostXYears: {
+ one: translateSingular,
+ other: translate
+ }
+}
+
+var translations = {
+ xseconds_other: 'sekundė_sekundžių_sekundes',
+ xminutes_one: 'minutė_minutės_minutę',
+ xminutes_other: 'minutės_minučių_minutes',
+ xhours_one: 'valanda_valandos_valandą',
+ xhours_other: 'valandos_valandų_valandas',
+ xdays_one: 'diena_dienos_dieną',
+ xdays_other: 'dienos_dienų_dienas',
+ xweeks_one: 'savaitė_savaitės_savaitę',
+ xweeks_other: 'savaitės_savaičių_savaites',
+ xmonths_one: 'mėnuo_mėnesio_mėnesį',
+ xmonths_other: 'mėnesiai_mėnesių_mėnesius',
+ xyears_one: 'metai_metų_metus',
+ xyears_other: 'metai_metų_metus',
+ about: 'apie',
+ over: 'daugiau nei',
+ almost: 'beveik',
+ lessthan: 'mažiau nei'
+}
+function translateSeconds(number, addSuffix, key, isFuture) {
+ if (!addSuffix) {
+ return 'kelios sekundės'
+ } else {
+ return isFuture ? 'kelių sekundžių' : 'kelias sekundes'
+ }
+}
+function translateSingular(number, addSuffix, key, isFuture) {
+ return !addSuffix ? forms(key)[0] : isFuture ? forms(key)[1] : forms(key)[2]
+}
+function special(number) {
+ return number % 10 === 0 || (number > 10 && number < 20)
+}
+function forms(key) {
+ return translations[key].split('_')
+}
+function translate(number, addSuffix, key, isFuture) {
+ var result = number + ' '
+ if (number === 1) {
+ return result + translateSingular(number, addSuffix, key[0], isFuture)
+ } else if (!addSuffix) {
+ return result + (special(number) ? forms(key)[1] : forms(key)[0])
+ } else {
+ if (isFuture) {
+ return result + forms(key)[1]
+ } else {
+ return result + (special(number) ? forms(key)[1] : forms(key)[2])
+ }
+ }
+}
+
+export default function formatDistance(token, count, options) {
+ options = options || {}
+ var adverb = token.match(/about|over|almost|lessthan/i)
+ var unit = token.replace(adverb, '')
+
+ var result
+ if (typeof formatDistanceLocale[token] === 'string') {
+ result = formatDistanceLocale[token]
+ } else if (count === 1) {
+ result = formatDistanceLocale[token].one(
+ count,
+ options.addSuffix,
+ unit.toLowerCase() + '_one'
+ )
+ } else {
+ result = formatDistanceLocale[token].other(
+ count,
+ options.addSuffix,
+ unit.toLowerCase() + '_other'
+ )
+ }
+
+ if (adverb) {
+ result = translations[adverb[0].toLowerCase()] + ' ' + result
+ }
+
+ if (options.addSuffix) {
+ if (options.comparison > 0) {
+ return 'po ' + result
+ } else {
+ return 'prieš ' + result
+ }
+ }
+
+ return result
+}
diff --git a/date-fns/src/locale/lt/_lib/formatLong/index.js b/date-fns/src/locale/lt/_lib/formatLong/index.js
new file mode 100644
index 0000000..74448f9
--- /dev/null
+++ b/date-fns/src/locale/lt/_lib/formatLong/index.js
@@ -0,0 +1,41 @@
+import buildFormatLongFn from '../../../_lib/buildFormatLongFn/index'
+
+var dateFormats = {
+ full: "y 'm'. MMMM d 'd'., EEEE",
+ long: "y 'm'. MMMM d 'd'.",
+ medium: 'y-MM-dd',
+ short: 'y-MM-dd'
+}
+
+var timeFormats = {
+ full: 'HH:mm:ss zzzz',
+ long: 'HH:mm:ss z',
+ medium: 'HH:mm:ss',
+ short: 'HH:mm'
+}
+
+var dateTimeFormats = {
+ full: '{{date}} {{time}}',
+ long: '{{date}} {{time}}',
+ medium: '{{date}} {{time}}',
+ short: '{{date}} {{time}}'
+}
+
+var formatLong = {
+ date: buildFormatLongFn({
+ formats: dateFormats,
+ defaultWidth: 'full'
+ }),
+
+ time: buildFormatLongFn({
+ formats: timeFormats,
+ defaultWidth: 'full'
+ }),
+
+ dateTime: buildFormatLongFn({
+ formats: dateTimeFormats,
+ defaultWidth: 'full'
+ })
+}
+
+export default formatLong
diff --git a/date-fns/src/locale/lt/_lib/formatRelative/index.js b/date-fns/src/locale/lt/_lib/formatRelative/index.js
new file mode 100644
index 0000000..ca7f71e
--- /dev/null
+++ b/date-fns/src/locale/lt/_lib/formatRelative/index.js
@@ -0,0 +1,12 @@
+var formatRelativeLocale = {
+ lastWeek: "'Praėjusį' eeee p",
+ yesterday: "'Vakar' p",
+ today: "'Šiandien' p",
+ tomorrow: "'Rytoj' p",
+ nextWeek: 'eeee p',
+ other: 'P'
+}
+
+export default function formatRelative(token, _date, _baseDate, _options) {
+ return formatRelativeLocale[token]
+}
diff --git a/date-fns/src/locale/lt/_lib/localize/index.js b/date-fns/src/locale/lt/_lib/localize/index.js
new file mode 100644
index 0000000..f318617
--- /dev/null
+++ b/date-fns/src/locale/lt/_lib/localize/index.js
@@ -0,0 +1,225 @@
+import buildLocalizeFn from '../../../_lib/buildLocalizeFn/index'
+
+var eraValues = {
+ narrow: ['pr. Kr.', 'po Kr.'],
+ abbreviated: ['pr. Kr.', 'po Kr.'],
+ wide: ['prieš Kristų', 'po Kristaus']
+}
+
+var quarterValues = {
+ narrow: ['1', '2', '3', '4'],
+ abbreviated: ['I ketv.', 'II ketv.', 'III ketv.', 'IV ketv.'],
+ wide: ['I ketvirtis', 'II ketvirtis', 'III ketvirtis', 'IV ketvirtis']
+}
+
+var formattingQuarterValues = {
+ narrow: ['1', '2', '3', '4'],
+ abbreviated: ['I k.', 'II k.', 'III k.', 'IV k.'],
+ wide: ['I ketvirtis', 'II ketvirtis', 'III ketvirtis', 'IV ketvirtis']
+}
+
+var monthValues = {
+ narrow: ['S', 'V', 'K', 'B', 'G', 'B', 'L', 'R', 'R', 'S', 'L', 'G'],
+ abbreviated: [
+ 'saus.',
+ 'vas.',
+ 'kov.',
+ 'bal.',
+ 'geg.',
+ 'birž.',
+ 'liep.',
+ 'rugp.',
+ 'rugs.',
+ 'spal.',
+ 'lapkr.',
+ 'gruod.'
+ ],
+ wide: [
+ 'sausis',
+ 'vasaris',
+ 'kovas',
+ 'balandis',
+ 'gegužė',
+ 'birželis',
+ 'liepa',
+ 'rugpjūtis',
+ 'rugsėjis',
+ 'spalis',
+ 'lapkritis',
+ 'gruodis'
+ ]
+}
+
+var formattingMonthValues = {
+ narrow: ['S', 'V', 'K', 'B', 'G', 'B', 'L', 'R', 'R', 'S', 'L', 'G'],
+ abbreviated: [
+ 'saus.',
+ 'vas.',
+ 'kov.',
+ 'bal.',
+ 'geg.',
+ 'birž.',
+ 'liep.',
+ 'rugp.',
+ 'rugs.',
+ 'spal.',
+ 'lapkr.',
+ 'gruod.'
+ ],
+ wide: [
+ 'sausio',
+ 'vasario',
+ 'kovo',
+ 'balandžio',
+ 'gegužės',
+ 'birželio',
+ 'liepos',
+ 'rugpjūčio',
+ 'rugsėjo',
+ 'spalio',
+ 'lapkričio',
+ 'gruodžio'
+ ]
+}
+
+var dayValues = {
+ narrow: ['S', 'P', 'A', 'T', 'K', 'P', 'Š'],
+ short: ['Sk', 'Pr', 'An', 'Tr', 'Kt', 'Pn', 'Št'],
+ abbreviated: ['sk', 'pr', 'an', 'tr', 'kt', 'pn', 'št'],
+ wide: [
+ 'sekmadienis',
+ 'pirmadienis',
+ 'antradienis',
+ 'trečiadienis',
+ 'ketvirtadienis',
+ 'penktadienis',
+ 'šeštadienis'
+ ]
+}
+
+var formattingDayValues = {
+ narrow: ['S', 'P', 'A', 'T', 'K', 'P', 'Š'],
+ short: ['Sk', 'Pr', 'An', 'Tr', 'Kt', 'Pn', 'Št'],
+ abbreviated: ['sk', 'pr', 'an', 'tr', 'kt', 'pn', 'št'],
+ wide: [
+ 'sekmadienį',
+ 'pirmadienį',
+ 'antradienį',
+ 'trečiadienį',
+ 'ketvirtadienį',
+ 'penktadienį',
+ 'šeštadienį'
+ ]
+}
+
+var dayPeriodValues = {
+ narrow: {
+ am: 'pr. p.',
+ pm: 'pop.',
+ midnight: 'vidurnaktis',
+ noon: 'vidurdienis',
+ morning: 'rytas',
+ afternoon: 'diena',
+ evening: 'vakaras',
+ night: 'naktis'
+ },
+ abbreviated: {
+ am: 'priešpiet',
+ pm: 'popiet',
+ midnight: 'vidurnaktis',
+ noon: 'vidurdienis',
+ morning: 'rytas',
+ afternoon: 'diena',
+ evening: 'vakaras',
+ night: 'naktis'
+ },
+ wide: {
+ am: 'priešpiet',
+ pm: 'popiet',
+ midnight: 'vidurnaktis',
+ noon: 'vidurdienis',
+ morning: 'rytas',
+ afternoon: 'diena',
+ evening: 'vakaras',
+ night: 'naktis'
+ }
+}
+var formattingDayPeriodValues = {
+ narrow: {
+ am: 'pr. p.',
+ pm: 'pop.',
+ midnight: 'vidurnaktis',
+ noon: 'perpiet',
+ morning: 'rytas',
+ afternoon: 'popietė',
+ evening: 'vakaras',
+ night: 'naktis'
+ },
+ abbreviated: {
+ am: 'priešpiet',
+ pm: 'popiet',
+ midnight: 'vidurnaktis',
+ noon: 'perpiet',
+ morning: 'rytas',
+ afternoon: 'popietė',
+ evening: 'vakaras',
+ night: 'naktis'
+ },
+ wide: {
+ am: 'priešpiet',
+ pm: 'popiet',
+ midnight: 'vidurnaktis',
+ noon: 'perpiet',
+ morning: 'rytas',
+ afternoon: 'popietė',
+ evening: 'vakaras',
+ night: 'naktis'
+ }
+}
+
+function ordinalNumber(dirtyNumber, _dirtyOptions) {
+ var number = Number(dirtyNumber)
+ return number + '-oji'
+}
+
+var localize = {
+ ordinalNumber: ordinalNumber,
+
+ era: buildLocalizeFn({
+ values: eraValues,
+ defaultWidth: 'wide'
+ }),
+
+ quarter: buildLocalizeFn({
+ values: quarterValues,
+ defaultWidth: 'wide',
+ formattingValues: formattingQuarterValues,
+ defaultFormattingWidth: 'wide',
+ argumentCallback: function(quarter) {
+ return Number(quarter) - 1
+ }
+ }),
+
+ month: buildLocalizeFn({
+ values: monthValues,
+ defaultWidth: 'wide',
+ formattingValues: formattingMonthValues,
+ defaultFormattingWidth: 'wide'
+ }),
+
+ day: buildLocalizeFn({
+ values: dayValues,
+ defaultWidth: 'wide',
+ formattingValues: formattingDayValues,
+ defaultFormattingWidth: 'wide'
+ }),
+
+ dayPeriod: buildLocalizeFn({
+ values: dayPeriodValues,
+ defaultWidth: 'wide',
+ formattingValues: formattingDayPeriodValues,
+ defaultFormattingWidth: 'wide'
+ })
+}
+
+export default localize
diff --git a/date-fns/src/locale/lt/_lib/match/index.js b/date-fns/src/locale/lt/_lib/match/index.js
new file mode 100644
index 0000000..5bebf37
--- /dev/null
+++ b/date-fns/src/locale/lt/_lib/match/index.js
@@ -0,0 +1,150 @@
+import buildMatchPatternFn from '../../../_lib/buildMatchPatternFn/index'
+import buildMatchFn from '../../../_lib/buildMatchFn/index'
+
+var matchOrdinalNumberPattern = /^(\d+)(-oji)?/i
+var parseOrdinalNumberPattern = /\d+/i
+
+var matchEraPatterns = {
+ narrow: /^p(r|o)\.?\s?(kr\.?|me)/i,
+ abbreviated: /^(pr\.\s?(kr\.|m\.\s?e\.)|po\s?kr\.|mūsų eroje)/i,
+ wide: /^(prieš Kristų|prieš mūsų erą|po Kristaus|mūsų eroje)/i
+}
+var parseEraPatterns = {
+ wide: [/prieš/i, /(po|mūsų)/i],
+ any: [/^pr/i, /^(po|m)/i]
+}
+
+var matchQuarterPatterns = {
+ narrow: /^([1234])/i,
+ abbreviated: /^(I|II|III|IV)\s?ketv?\.?/i,
+ wide: /^(I|II|III|IV)\s?ketvirtis/i
+}
+var parseQuarterPatterns = {
+ narrow: [/1/i, /2/i, /3/i, /4/i],
+ any: [/I$/i, /II$/i, /III/i, /IV/i]
+}
+
+var matchMonthPatterns = {
+ narrow: /^[svkbglr]/i,
+ abbreviated: /^(saus\.|vas\.|kov\.|bal\.|geg\.|birž\.|liep\.|rugp\.|rugs\.|spal\.|lapkr\.|gruod\.)/i,
+ wide: /^(sausi(s|o)|vasari(s|o)|kov(a|o)s|balandž?i(s|o)|gegužės?|birželi(s|o)|liep(a|os)|rugpjū(t|č)i(s|o)|rugsėj(is|o)|spali(s|o)|lapkri(t|č)i(s|o)|gruodž?i(s|o))/i
+}
+var parseMonthPatterns = {
+ narrow: [
+ /^s/i,
+ /^v/i,
+ /^k/i,
+ /^b/i,
+ /^g/i,
+ /^b/i,
+ /^l/i,
+ /^r/i,
+ /^r/i,
+ /^s/i,
+ /^l/i,
+ /^g/i
+ ],
+ any: [
+ /^saus/i,
+ /^vas/i,
+ /^kov/i,
+ /^bal/i,
+ /^geg/i,
+ /^birž/i,
+ /^liep/i,
+ /^rugp/i,
+ /^rugs/i,
+ /^spal/i,
+ /^lapkr/i,
+ /^gruod/i
+ ]
+}
+
+var matchDayPatterns = {
+ narrow: /^[spatkš]/i,
+ short: /^(sk|pr|an|tr|kt|pn|št)/i,
+ abbreviated: /^(sk|pr|an|tr|kt|pn|št)/i,
+ wide: /^(sekmadien(is|į)|pirmadien(is|į)|antradien(is|į)|trečiadien(is|į)|ketvirtadien(is|į)|penktadien(is|į)|šeštadien(is|į))/i
+}
+var parseDayPatterns = {
+ narrow: [/^s/i, /^p/i, /^a/i, /^t/i, /^k/i, /^p/i, /^š/i],
+ wide: [/^se/i, /^pi/i, /^an/i, /^tr/i, /^ke/i, /^pe/i, /^še/i],
+ any: [/^sk/i, /^pr/i, /^an/i, /^tr/i, /^kt/i, /^pn/i, /^št/i]
+}
+
+var matchDayPeriodPatterns = {
+ narrow: /^(pr.\s?p.|pop.|vidurnaktis|(vidurdienis|perpiet)|rytas|(diena|popietė)|vakaras|naktis)/i,
+ any: /^(priešpiet|popiet$|vidurnaktis|(vidurdienis|perpiet)|rytas|(diena|popietė)|vakaras|naktis)/i
+}
+var parseDayPeriodPatterns = {
+ narrow: {
+ am: /^pr/i,
+ pm: /^pop./i,
+ midnight: /^vidurnaktis/i,
+ noon: /^(vidurdienis|perp)/i,
+ morning: /rytas/i,
+ afternoon: /(die|popietė)/i,
+ evening: /vakaras/i,
+ night: /naktis/i
+ },
+ any: {
+ am: /^pr/i,
+ pm: /^popiet$/i,
+ midnight: /^vidurnaktis/i,
+ noon: /^(vidurdienis|perp)/i,
+ morning: /rytas/i,
+ afternoon: /(die|popietė)/i,
+ evening: /vakaras/i,
+ night: /naktis/i
+ }
+}
+
+var match = {
+ ordinalNumber: buildMatchPatternFn({
+ matchPattern: matchOrdinalNumberPattern,
+ parsePattern: parseOrdinalNumberPattern,
+ valueCallback: function(value) {
+ return parseInt(value, 10)
+ }
+ }),
+
+ era: buildMatchFn({
+ matchPatterns: matchEraPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseEraPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ quarter: buildMatchFn({
+ matchPatterns: matchQuarterPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseQuarterPatterns,
+ defaultParseWidth: 'any',
+ valueCallback: function(index) {
+ return index + 1
+ }
+ }),
+
+ month: buildMatchFn({
+ matchPatterns: matchMonthPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseMonthPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ day: buildMatchFn({
+ matchPatterns: matchDayPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseDayPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ dayPeriod: buildMatchFn({
+ matchPatterns: matchDayPeriodPatterns,
+ defaultMatchWidth: 'any',
+ parsePatterns: parseDayPeriodPatterns,
+ defaultParseWidth: 'any'
+ })
+}
+
+export default match
diff --git a/date-fns/src/locale/lt/index.d.ts b/date-fns/src/locale/lt/index.d.ts
new file mode 100644
index 0000000..573a840
--- /dev/null
+++ b/date-fns/src/locale/lt/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { lt } from 'date-fns/locale'
+export default lt
diff --git a/date-fns/src/locale/lt/index.js b/date-fns/src/locale/lt/index.js
new file mode 100644
index 0000000..c954ccd
--- /dev/null
+++ b/date-fns/src/locale/lt/index.js
@@ -0,0 +1,32 @@
+import formatDistance from './_lib/formatDistance/index'
+import formatLong from './_lib/formatLong/index'
+import formatRelative from './_lib/formatRelative/index'
+import localize from './_lib/localize/index'
+import match from './_lib/match/index'
+
+/**
+ * @type {Locale}
+ * @category Locales
+ *
+ * @summary Lithuanian locale.
+ * @language Lithuanian
+ *
+ * @iso-639-2 lit
+ *
+ * @author Pavlo Shpak [@pshpak]{@link https://github.com/pshpak}
+ * @author Eduardo Pardo [@eduardopsll]{@link https://github.com/eduardopsll}
+ */
+var locale = {
+ code: 'lt',
+ formatDistance: formatDistance,
+ formatLong: formatLong,
+ formatRelative: formatRelative,
+ localize: localize,
+ match: match,
+ options: {
+ weekStartsOn: 1 /* Monday */,
+ firstWeekContainsDate: 4
+ }
+}
+
+export default locale
diff --git a/date-fns/src/locale/lt/index.js.flow b/date-fns/src/locale/lt/index.js.flow
new file mode 100644
index 0000000..b9dfe66
--- /dev/null
+++ b/date-fns/src/locale/lt/index.js.flow
@@ -0,0 +1,35 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+declare module.exports: Locale
diff --git a/date-fns/src/locale/lt/snapshot.md b/date-fns/src/locale/lt/snapshot.md
new file mode 100644
index 0000000..368443f
--- /dev/null
+++ b/date-fns/src/locale/lt/snapshot.md
@@ -0,0 +1,304 @@
+# Lithuanian (lt) locale
+
+## `format` and `parse`
+
+| Title | Token string | Date | `format` result | `parse` result |
+| ------------------------------- | ------------ | ------------------------ | ----------------------------------------------------- | ------------------------ |
+| Calendar year | yo | 1987-02-11T12:13:14.015Z | 1987-oji | 1987-01-01T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 5-oji | 0005-01-01T00:00:00.000Z |
+| Local week-numbering year | Yo | 1987-02-11T12:13:14.015Z | 1987-oji | 1986-12-29T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 4-oji | 0003-12-29T00:00:00.000Z |
+| Quarter (formatting) | Qo | 2019-01-01T12:13:14.015Z | 1-oji | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2-oji | 2019-04-01T00:00:00.000Z |
+| | QQQ | 2019-01-01T12:13:14.015Z | I k. | Invalid Date |
+| | | 2019-04-01T12:13:14.015Z | II k. | Invalid Date |
+| | QQQQ | 2019-01-01T12:13:14.015Z | I ketvirtis | Invalid Date |
+| | | 2019-04-01T12:13:14.015Z | II ketvirtis | Invalid Date |
+| | QQQQQ | 2019-01-01T12:13:14.015Z | 1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2 | 2019-04-01T00:00:00.000Z |
+| Quarter (stand-alone) | qo | 2019-01-01T12:13:14.015Z | 1-oji | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2-oji | 2019-04-01T00:00:00.000Z |
+| | qqq | 2019-01-01T12:13:14.015Z | I ketv. | Invalid Date |
+| | | 2019-04-01T12:13:14.015Z | II ketv. | Invalid Date |
+| | qqqq | 2019-01-01T12:13:14.015Z | I ketvirtis | Invalid Date |
+| | | 2019-04-01T12:13:14.015Z | II ketvirtis | Invalid Date |
+| Month (formatting) | Mo | 2019-02-11T12:13:14.015Z | 2-oji | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7-oji | 2019-07-01T00:00:00.000Z |
+| | MMM | 2019-02-11T12:13:14.015Z | vas. | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | liep. | 2019-07-01T00:00:00.000Z |
+| | MMMM | 2019-02-11T12:13:14.015Z | vasario | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | liepos | 2019-07-01T00:00:00.000Z |
+| | MMMMM | 2019-02-11T12:13:14.015Z | V | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | L | 2019-07-01T00:00:00.000Z |
+| Month (stand-alone) | Lo | 2019-02-11T12:13:14.015Z | 2-oji | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7-oji | 2019-07-01T00:00:00.000Z |
+| | LLL | 2019-02-11T12:13:14.015Z | vas. | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | liep. | 2019-07-01T00:00:00.000Z |
+| | LLLL | 2019-02-11T12:13:14.015Z | vasaris | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | liepa | 2019-07-01T00:00:00.000Z |
+| | LLLLL | 2019-02-11T12:13:14.015Z | V | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | L | 2019-07-01T00:00:00.000Z |
+| Local week of year | wo | 2019-01-01T12:13:14.015Z | 1-oji | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48-oji | 2019-11-25T00:00:00.000Z |
+| ISO week of year | Io | 2019-01-01T12:13:14.015Z | 1-oji | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48-oji | 2019-11-25T00:00:00.000Z |
+| Day of month | do | 2019-02-11T12:13:14.015Z | 11-oji | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-28T12:13:14.015Z | 28-oji | 2019-02-28T00:00:00.000Z |
+| Day of year | Do | 2019-02-11T12:13:14.015Z | 42-oji | 2019-02-11T00:00:00.000Z |
+| | | 2019-12-31T12:13:14.015Z | 365-oji | 2019-12-31T00:00:00.000Z |
+| Day of week (formatting) | E | 2019-02-11T12:13:14.015Z | pr | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | pn | 2019-02-15T00:00:00.000Z |
+| | EE | 2019-02-11T12:13:14.015Z | pr | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | pn | 2019-02-15T00:00:00.000Z |
+| | EEE | 2019-02-11T12:13:14.015Z | pr | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | pn | 2019-02-15T00:00:00.000Z |
+| | EEEE | 2019-02-11T12:13:14.015Z | pirmadienį | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | penktadienį | 2019-02-15T00:00:00.000Z |
+| | EEEEE | 2019-02-11T12:13:14.015Z | P | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | P | 2019-02-11T00:00:00.000Z |
+| | EEEEEE | 2019-02-11T12:13:14.015Z | Pr | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Pn | 2019-02-15T00:00:00.000Z |
+| ISO day of week (formatting) | io | 2019-02-11T12:13:14.015Z | 1-oji | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5-oji | 2019-02-15T00:00:00.000Z |
+| | iii | 2019-02-11T12:13:14.015Z | pr | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | pn | 2019-02-15T00:00:00.000Z |
+| | iiii | 2019-02-11T12:13:14.015Z | pirmadienį | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | penktadienį | 2019-02-15T00:00:00.000Z |
+| | iiiii | 2019-02-11T12:13:14.015Z | P | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | P | 2019-02-11T00:00:00.000Z |
+| | iiiiii | 2019-02-11T12:13:14.015Z | Pr | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Pn | 2019-02-15T00:00:00.000Z |
+| Local day of week (formatting) | eo | 2019-02-11T12:13:14.015Z | 1-oji | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5-oji | 2019-02-15T00:00:00.000Z |
+| | eee | 2019-02-11T12:13:14.015Z | pr | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | pn | 2019-02-15T00:00:00.000Z |
+| | eeee | 2019-02-11T12:13:14.015Z | pirmadienį | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | penktadienį | 2019-02-15T00:00:00.000Z |
+| | eeeee | 2019-02-11T12:13:14.015Z | P | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | P | 2019-02-11T00:00:00.000Z |
+| | eeeeee | 2019-02-11T12:13:14.015Z | Pr | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Pn | 2019-02-15T00:00:00.000Z |
+| Local day of week (stand-alone) | co | 2019-02-11T12:13:14.015Z | 1-oji | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5-oji | 2019-02-15T00:00:00.000Z |
+| | ccc | 2019-02-11T12:13:14.015Z | pr | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | pn | 2019-02-15T00:00:00.000Z |
+| | cccc | 2019-02-11T12:13:14.015Z | pirmadienis | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | penktadienis | 2019-02-15T00:00:00.000Z |
+| | ccccc | 2019-02-11T12:13:14.015Z | P | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | P | 2019-02-11T00:00:00.000Z |
+| | cccccc | 2019-02-11T12:13:14.015Z | Pr | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Pn | 2019-02-15T00:00:00.000Z |
+| AM, PM | a | 2019-02-11T11:13:14.015Z | priešpiet | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | popiet | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | popiet | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | priešpiet | 2019-02-11T00:00:00.000Z |
+| | aa | 2019-02-11T11:13:14.015Z | priešpiet | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | popiet | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | popiet | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | priešpiet | 2019-02-11T00:00:00.000Z |
+| | aaa | 2019-02-11T11:13:14.015Z | priešpiet | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | popiet | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | popiet | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | priešpiet | 2019-02-11T00:00:00.000Z |
+| | aaaa | 2019-02-11T11:13:14.015Z | priešpiet | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | popiet | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | popiet | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | priešpiet | 2019-02-11T00:00:00.000Z |
+| | aaaaa | 2019-02-11T11:13:14.015Z | pr. p. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | pop. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | pop. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | pr. p. | 2019-02-11T00:00:00.000Z |
+| AM, PM, noon, midnight | b | 2019-02-11T11:13:14.015Z | priešpiet | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | popiet | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | popiet | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | priešpiet | 2019-02-11T00:00:00.000Z |
+| | bb | 2019-02-11T11:13:14.015Z | priešpiet | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | popiet | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | popiet | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | priešpiet | 2019-02-11T00:00:00.000Z |
+| | bbb | 2019-02-11T11:13:14.015Z | priešpiet | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | popiet | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | popiet | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | priešpiet | 2019-02-11T00:00:00.000Z |
+| | bbbb | 2019-02-11T11:13:14.015Z | priešpiet | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | popiet | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | popiet | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | priešpiet | 2019-02-11T00:00:00.000Z |
+| | bbbbb | 2019-02-11T11:13:14.015Z | pr. p. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | pop. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | pop. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | pr. p. | 2019-02-11T00:00:00.000Z |
+| Flexible day period | B | 2019-02-11T11:13:14.015Z | rytas | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | popietė | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | vakaras | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | naktis | 2019-02-11T00:00:00.000Z |
+| | BB | 2019-02-11T11:13:14.015Z | rytas | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | popietė | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | vakaras | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | naktis | 2019-02-11T00:00:00.000Z |
+| | BBB | 2019-02-11T11:13:14.015Z | rytas | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | popietė | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | vakaras | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | naktis | 2019-02-11T00:00:00.000Z |
+| | BBBB | 2019-02-11T11:13:14.015Z | rytas | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | popietė | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | vakaras | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | naktis | 2019-02-11T00:00:00.000Z |
+| | BBBBB | 2019-02-11T11:13:14.015Z | rytas | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | popietė | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | vakaras | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | naktis | 2019-02-11T00:00:00.000Z |
+| Hour [1-12] | ho | 2019-02-11T11:13:14.015Z | 11-oji | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11-oji | 2019-02-11T23:00:00.000Z |
+| Hour [0-23] | Ho | 2019-02-11T11:13:14.015Z | 11-oji | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23-oji | 2019-02-11T23:00:00.000Z |
+| Hour [0-11] | Ko | 2019-02-11T11:13:14.015Z | 11-oji | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11-oji | 2019-02-11T23:00:00.000Z |
+| Hour [1-24] | ko | 2019-02-11T11:13:14.015Z | 11-oji | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23-oji | 2019-02-11T23:00:00.000Z |
+| Minute | mo | 2019-01-01T12:01:14.015Z | 1-oji | 2019-01-01T12:01:00.000Z |
+| | | 2019-04-01T12:55:14.015Z | 55-oji | 2019-04-01T12:55:00.000Z |
+| Second | so | 2019-01-01T12:13:01.015Z | 1-oji | 2019-01-01T12:13:01.000Z |
+| | | 2019-04-01T12:13:55.015Z | 55-oji | 2019-04-01T12:13:55.000Z |
+| Long localized date | P | 1987-02-11T12:13:14.015Z | 1987-02-11 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 1453-05-29 | 1453-05-29T00:00:00.000Z |
+| | PP | 1987-02-11T12:13:14.015Z | 1987-02-11 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 1453-05-29 | 1453-05-29T00:00:00.000Z |
+| | PPP | 1987-02-11T12:13:14.015Z | 1987 m. vasario 11 d. | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 1453 m. gegužės 29 d. | 1453-05-29T00:00:00.000Z |
+| | PPPP | 1987-02-11T12:13:14.015Z | 1987 m. vasario 11 d., trečiadienį | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 1453 m. gegužės 29 d., sekmadienį | 1453-05-29T00:00:00.000Z |
+| Long localized time | p | 1987-02-11T12:13:14.015Z | 12:13 | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 23:59 | 1453-05-29T23:59:00.000Z |
+| | pp | 1987-02-11T12:13:14.015Z | 12:13:14 | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 | 1453-05-29T23:59:59.000Z |
+| | ppp | 1987-02-11T12:13:14.015Z | 12:13:14 GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 GMT+0 | Errored |
+| | pppp | 1987-02-11T12:13:14.015Z | 12:13:14 GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 GMT+00:00 | Errored |
+| Combination of date and time | Pp | 1987-02-11T12:13:14.015Z | 1987-02-11 12:13 | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 1453-05-29 23:59 | 1453-05-29T23:59:00.000Z |
+| | PPpp | 1987-02-11T12:13:14.015Z | 1987-02-11 12:13:14 | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 1453-05-29 23:59:59 | 1453-05-29T23:59:59.000Z |
+| | PPPppp | 1987-02-11T12:13:14.015Z | 1987 m. vasario 11 d. 12:13:14 GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 1453 m. gegužės 29 d. 23:59:59 GMT+0 | Errored |
+| | PPPPpppp | 1987-02-11T12:13:14.015Z | 1987 m. vasario 11 d., trečiadienį 12:13:14 GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 1453 m. gegužės 29 d., sekmadienį 23:59:59 GMT+00:00 | Errored |
+
+## `formatDistance`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `includeSeconds: true` | `addSuffix: true` |
+| ------------------------ | ----------------- | ----------------------- | ----------------------- |
+| 2006-01-01T00:00:00.000Z | apie 6 metai | apie 6 metai | po apie 6 metus |
+| 2005-01-01T00:00:00.000Z | apie 5 metai | apie 5 metai | po apie 5 metus |
+| 2004-01-01T00:00:00.000Z | apie 4 metai | apie 4 metai | po apie 4 metus |
+| 2003-01-01T00:00:00.000Z | apie 3 metai | apie 3 metai | po apie 3 metus |
+| 2002-01-01T00:00:00.000Z | apie 2 metai | apie 2 metai | po apie 2 metus |
+| 2001-06-01T00:00:00.000Z | daugiau nei metai | daugiau nei metai | po daugiau nei metus |
+| 2001-02-01T00:00:00.000Z | apie metai | apie metai | po apie metus |
+| 2001-01-01T00:00:00.000Z | apie metai | apie metai | po apie metus |
+| 2000-06-01T00:00:00.000Z | 5 mėnesiai | 5 mėnesiai | po 5 mėnesius |
+| 2000-03-01T00:00:00.000Z | 2 mėnesiai | 2 mėnesiai | po 2 mėnesius |
+| 2000-02-01T00:00:00.000Z | apie mėnuo | apie mėnuo | po apie mėnesį |
+| 2000-01-15T00:00:00.000Z | 14 dienų | 14 dienų | po 14 dienų |
+| 2000-01-02T00:00:00.000Z | diena | diena | po dieną |
+| 2000-01-01T06:00:00.000Z | apie 6 valandos | apie 6 valandos | po apie 6 valandas |
+| 2000-01-01T01:00:00.000Z | apie valanda | apie valanda | po apie valandą |
+| 2000-01-01T00:45:00.000Z | apie valanda | apie valanda | po apie valandą |
+| 2000-01-01T00:30:00.000Z | 30 minučių | 30 minučių | po 30 minučių |
+| 2000-01-01T00:15:00.000Z | 15 minučių | 15 minučių | po 15 minučių |
+| 2000-01-01T00:01:00.000Z | minutė | minutė | po minutę |
+| 2000-01-01T00:00:25.000Z | mažiau nei minutė | pusė minutės | po mažiau nei minutę |
+| 2000-01-01T00:00:15.000Z | mažiau nei minutė | mažiau nei 20 sekundžių | po mažiau nei minutę |
+| 2000-01-01T00:00:05.000Z | mažiau nei minutė | mažiau nei 10 sekundžių | po mažiau nei minutę |
+| 2000-01-01T00:00:00.000Z | mažiau nei minutė | mažiau nei 5 sekundė | prieš mažiau nei minutę |
+| 1999-12-31T23:59:55.000Z | mažiau nei minutė | mažiau nei 10 sekundžių | prieš mažiau nei minutę |
+| 1999-12-31T23:59:45.000Z | mažiau nei minutė | mažiau nei 20 sekundžių | prieš mažiau nei minutę |
+| 1999-12-31T23:59:35.000Z | mažiau nei minutė | pusė minutės | prieš mažiau nei minutę |
+| 1999-12-31T23:59:00.000Z | minutė | minutė | prieš minutę |
+| 1999-12-31T23:45:00.000Z | 15 minučių | 15 minučių | prieš 15 minučių |
+| 1999-12-31T23:30:00.000Z | 30 minučių | 30 minučių | prieš 30 minučių |
+| 1999-12-31T23:15:00.000Z | apie valanda | apie valanda | prieš apie valandą |
+| 1999-12-31T23:00:00.000Z | apie valanda | apie valanda | prieš apie valandą |
+| 1999-12-31T18:00:00.000Z | apie 6 valandos | apie 6 valandos | prieš apie 6 valandas |
+| 1999-12-30T00:00:00.000Z | 2 dienos | 2 dienos | prieš 2 dienas |
+| 1999-12-15T00:00:00.000Z | 17 dienų | 17 dienų | prieš 17 dienų |
+| 1999-12-01T00:00:00.000Z | apie mėnuo | apie mėnuo | prieš apie mėnesį |
+| 1999-11-01T00:00:00.000Z | 2 mėnesiai | 2 mėnesiai | prieš 2 mėnesius |
+| 1999-06-01T00:00:00.000Z | 7 mėnesiai | 7 mėnesiai | prieš 7 mėnesius |
+| 1999-01-01T00:00:00.000Z | apie metai | apie metai | prieš apie metus |
+| 1998-12-01T00:00:00.000Z | apie metai | apie metai | prieš apie metus |
+| 1998-06-01T00:00:00.000Z | daugiau nei metai | daugiau nei metai | prieš daugiau nei metus |
+| 1998-01-01T00:00:00.000Z | apie 2 metai | apie 2 metai | prieš apie 2 metus |
+| 1997-01-01T00:00:00.000Z | apie 3 metai | apie 3 metai | prieš apie 3 metus |
+| 1996-01-01T00:00:00.000Z | apie 4 metai | apie 4 metai | prieš apie 4 metus |
+| 1995-01-01T00:00:00.000Z | apie 5 metai | apie 5 metai | prieš apie 5 metus |
+| 1994-01-01T00:00:00.000Z | apie 6 metai | apie 6 metai | prieš apie 6 metus |
+
+## `formatDistanceStrict`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `addSuffix: true` | With forced unit (i.e. `hour`) |
+| ------------------------ | ------------ | ------------------ | ------------------------------ |
+| 2006-01-01T00:00:00.000Z | 6 metai | po 6 metus | 52608 valandos |
+| 2005-01-01T00:00:00.000Z | 5 metai | po 5 metus | 43848 valandos |
+| 2004-01-01T00:00:00.000Z | 4 metai | po 4 metus | 35064 valandos |
+| 2003-01-01T00:00:00.000Z | 3 metai | po 3 metus | 26304 valandos |
+| 2002-01-01T00:00:00.000Z | 2 metai | po 2 metus | 17544 valandos |
+| 2001-06-01T00:00:00.000Z | metai | po metus | 12408 valandos |
+| 2001-02-01T00:00:00.000Z | metai | po metus | 9528 valandos |
+| 2001-01-01T00:00:00.000Z | metai | po metus | 8784 valandos |
+| 2000-06-01T00:00:00.000Z | 5 mėnesiai | po 5 mėnesius | 3648 valandos |
+| 2000-03-01T00:00:00.000Z | 2 mėnesiai | po 2 mėnesius | 1440 valandų |
+| 2000-02-01T00:00:00.000Z | mėnuo | po mėnesį | 744 valandos |
+| 2000-01-15T00:00:00.000Z | 14 dienų | po 14 dienų | 336 valandos |
+| 2000-01-02T00:00:00.000Z | diena | po dieną | 24 valandos |
+| 2000-01-01T06:00:00.000Z | 6 valandos | po 6 valandas | 6 valandos |
+| 2000-01-01T01:00:00.000Z | valanda | po valandą | valanda |
+| 2000-01-01T00:45:00.000Z | 45 minutės | po 45 minutes | valanda |
+| 2000-01-01T00:30:00.000Z | 30 minučių | po 30 minučių | valanda |
+| 2000-01-01T00:15:00.000Z | 15 minučių | po 15 minučių | 0 valandų |
+| 2000-01-01T00:01:00.000Z | minutė | po minutę | 0 valandų |
+| 2000-01-01T00:00:25.000Z | 25 sekundė | po 25 sekundes | 0 valandų |
+| 2000-01-01T00:00:15.000Z | 15 sekundžių | po 15 sekundžių | 0 valandų |
+| 2000-01-01T00:00:05.000Z | 5 sekundė | po 5 sekundes | 0 valandų |
+| 2000-01-01T00:00:00.000Z | 0 sekundžių | prieš 0 sekundžių | 0 valandų |
+| 1999-12-31T23:59:55.000Z | 5 sekundė | prieš 5 sekundes | 0 valandų |
+| 1999-12-31T23:59:45.000Z | 15 sekundžių | prieš 15 sekundžių | 0 valandų |
+| 1999-12-31T23:59:35.000Z | 25 sekundė | prieš 25 sekundes | 0 valandų |
+| 1999-12-31T23:59:00.000Z | minutė | prieš minutę | 0 valandų |
+| 1999-12-31T23:45:00.000Z | 15 minučių | prieš 15 minučių | 0 valandų |
+| 1999-12-31T23:30:00.000Z | 30 minučių | prieš 30 minučių | valanda |
+| 1999-12-31T23:15:00.000Z | 45 minutės | prieš 45 minutes | valanda |
+| 1999-12-31T23:00:00.000Z | valanda | prieš valandą | valanda |
+| 1999-12-31T18:00:00.000Z | 6 valandos | prieš 6 valandas | 6 valandos |
+| 1999-12-30T00:00:00.000Z | 2 dienos | prieš 2 dienas | 48 valandos |
+| 1999-12-15T00:00:00.000Z | 17 dienų | prieš 17 dienų | 408 valandos |
+| 1999-12-01T00:00:00.000Z | mėnuo | prieš mėnesį | 744 valandos |
+| 1999-11-01T00:00:00.000Z | 2 mėnesiai | prieš 2 mėnesius | 1464 valandos |
+| 1999-06-01T00:00:00.000Z | 7 mėnesiai | prieš 7 mėnesius | 5136 valandos |
+| 1999-01-01T00:00:00.000Z | metai | prieš metus | 8760 valandų |
+| 1998-12-01T00:00:00.000Z | metai | prieš metus | 9504 valandos |
+| 1998-06-01T00:00:00.000Z | 2 metai | prieš 2 metus | 13896 valandos |
+| 1998-01-01T00:00:00.000Z | 2 metai | prieš 2 metus | 17520 valandų |
+| 1997-01-01T00:00:00.000Z | 3 metai | prieš 3 metus | 26280 valandų |
+| 1996-01-01T00:00:00.000Z | 4 metai | prieš 4 metus | 35064 valandos |
+| 1995-01-01T00:00:00.000Z | 5 metai | prieš 5 metus | 43824 valandos |
+| 1994-01-01T00:00:00.000Z | 6 metai | prieš 6 metus | 52584 valandos |
+
+## `formatRelative`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result |
+| ------------------------ | ------------------------- |
+| 2000-01-10T00:00:00.000Z | 2000-01-10 |
+| 2000-01-05T00:00:00.000Z | trečiadienį 00:00 |
+| 2000-01-02T00:00:00.000Z | Rytoj 00:00 |
+| 2000-01-01T00:00:00.000Z | Šiandien 00:00 |
+| 1999-12-31T00:00:00.000Z | Vakar 00:00 |
+| 1999-12-27T00:00:00.000Z | Praėjusį pirmadienį 00:00 |
+| 1999-12-21T00:00:00.000Z | 1999-12-21 |
diff --git a/date-fns/src/locale/lv/_lib/formatDistance/index.js b/date-fns/src/locale/lv/_lib/formatDistance/index.js
new file mode 100644
index 0000000..012a98d
--- /dev/null
+++ b/date-fns/src/locale/lv/_lib/formatDistance/index.js
@@ -0,0 +1,158 @@
+function buildLocalizeTokenFn(schema) {
+ return function(count, options) {
+ if (count === 1) {
+ if (options.addSuffix) {
+ return schema.one[0].replace('{{time}}', schema.one[2])
+ } else {
+ return schema.one[0].replace('{{time}}', schema.one[1])
+ }
+ } else {
+ var rem = count % 10 === 1 && count % 100 !== 11
+ if (options.addSuffix) {
+ return schema.other[0]
+ .replace('{{time}}', rem ? schema.other[3] : schema.other[4])
+ .replace('{{count}}', count)
+ } else {
+ return schema.other[0]
+ .replace('{{time}}', rem ? schema.other[1] : schema.other[2])
+ .replace('{{count}}', count)
+ }
+ }
+ }
+}
+
+var formatDistanceLocale = {
+ lessThanXSeconds: buildLocalizeTokenFn({
+ one: ['mazāk par {{time}}', 'sekundi', 'sekundi'],
+ other: [
+ 'mazāk nekā {{count}} {{time}}',
+ 'sekunde',
+ 'sekundes',
+ 'sekundes',
+ 'sekundēm'
+ ]
+ }),
+
+ xSeconds: buildLocalizeTokenFn({
+ one: ['1 {{time}}', 'sekunde', 'sekundes'],
+ other: ['{{count}} {{time}}', 'sekunde', 'sekundes', 'sekundes', 'sekundēm']
+ }),
+
+ halfAMinute: function(count, options) {
+ if (options.addSuffix) {
+ return 'pusminūtes'
+ } else {
+ return 'pusminūte'
+ }
+ },
+
+ lessThanXMinutes: buildLocalizeTokenFn({
+ one: ['mazāk par {{time}}', 'minūti', 'minūti'],
+ other: [
+ 'mazāk nekā {{count}} {{time}}',
+ 'minūte',
+ 'minūtes',
+ 'minūtes',
+ 'minūtēm'
+ ]
+ }),
+
+ xMinutes: buildLocalizeTokenFn({
+ one: ['1 {{time}}', 'minūte', 'minūtes'],
+ other: ['{{count}} {{time}}', 'minūte', 'minūtes', 'minūtes', 'minūtēm']
+ }),
+
+ aboutXHours: buildLocalizeTokenFn({
+ one: ['apmēram 1 {{time}}', 'stunda', 'stundas'],
+ other: [
+ 'apmēram {{count}} {{time}}',
+ 'stunda',
+ 'stundas',
+ 'stundas',
+ 'stundām'
+ ]
+ }),
+
+ xHours: buildLocalizeTokenFn({
+ one: ['1 {{time}}', 'stunda', 'stundas'],
+ other: ['{{count}} {{time}}', 'stunda', 'stundas', 'stundas', 'stundām']
+ }),
+
+ xDays: buildLocalizeTokenFn({
+ one: ['1 {{time}}', 'diena', 'dienas'],
+ other: ['{{count}} {{time}}', 'diena', 'dienas', 'dienas', 'dienām']
+ }),
+
+ aboutXWeeks: buildLocalizeTokenFn({
+ one: ['apmēram 1 {{time}}', 'nedēļa', 'nedēļas'],
+ other: [
+ 'apmēram {{count}} {{time}}',
+ 'nedēļa',
+ 'nedēļu',
+ 'nedēļas',
+ 'nedēļām'
+ ]
+ }),
+
+ xWeeks: buildLocalizeTokenFn({
+ one: ['1 {{time}}', 'nedēļa', 'nedēļas'],
+ other: [
+ '{{count}} {{time}}', // TODO
+ 'nedēļa',
+ 'nedēļu',
+ 'nedēļas',
+ 'nedēļām'
+ ]
+ }),
+
+ aboutXMonths: buildLocalizeTokenFn({
+ one: ['apmēram 1 {{time}}', 'mēnesis', 'mēneša'],
+ other: [
+ 'apmēram {{count}} {{time}}',
+ 'mēnesis',
+ 'mēneši',
+ 'mēneša',
+ 'mēnešiem'
+ ]
+ }),
+
+ xMonths: buildLocalizeTokenFn({
+ one: ['1 {{time}}', 'mēnesis', 'mēneša'],
+ other: ['{{count}} {{time}}', 'mēnesis', 'mēneši', 'mēneša', 'mēnešiem']
+ }),
+
+ aboutXYears: buildLocalizeTokenFn({
+ one: ['apmēram 1 {{time}}', 'gads', 'gada'],
+ other: ['apmēram {{count}} {{time}}', 'gads', 'gadi', 'gada', 'gadiem']
+ }),
+
+ xYears: buildLocalizeTokenFn({
+ one: ['1 {{time}}', 'gads', 'gada'],
+ other: ['{{count}} {{time}}', 'gads', 'gadi', 'gada', 'gadiem']
+ }),
+
+ overXYears: buildLocalizeTokenFn({
+ one: ['ilgāk par 1 {{time}}', 'gadu', 'gadu'],
+ other: ['vairāk nekā {{count}} {{time}}', 'gads', 'gadi', 'gada', 'gadiem']
+ }),
+
+ almostXYears: buildLocalizeTokenFn({
+ one: ['gandrīz 1 {{time}}', 'gads', 'gada'],
+ other: ['vairāk nekā {{count}} {{time}}', 'gads', 'gadi', 'gada', 'gadiem']
+ })
+}
+
+export default function formatDistance(token, count, options) {
+ options = options || {}
+ var result = formatDistanceLocale[token](count, options)
+
+ if (options.addSuffix) {
+ if (options.comparison > 0) {
+ return 'pēc ' + result
+ } else {
+ return 'pirms ' + result
+ }
+ }
+
+ return result
+}
diff --git a/date-fns/src/locale/lv/_lib/formatLong/index.js b/date-fns/src/locale/lv/_lib/formatLong/index.js
new file mode 100644
index 0000000..673a967
--- /dev/null
+++ b/date-fns/src/locale/lv/_lib/formatLong/index.js
@@ -0,0 +1,41 @@
+import buildFormatLongFn from '../../../_lib/buildFormatLongFn/index'
+
+var dateFormats = {
+ full: "EEEE, y. 'gada' d. MMMM",
+ long: "y. 'gada' d. MMMM",
+ medium: 'dd.MM.y.',
+ short: 'dd.MM.y.',
+}
+
+var timeFormats = {
+ full: 'HH:mm:ss zzzz',
+ long: 'HH:mm:ss z',
+ medium: 'HH:mm:ss',
+ short: 'HH:mm',
+}
+
+var dateTimeFormats = {
+ full: "{{date}} 'plkst.' {{time}}",
+ long: "{{date}} 'plkst.' {{time}}",
+ medium: '{{date}}, {{time}}',
+ short: '{{date}}, {{time}}',
+}
+
+var formatLong = {
+ date: buildFormatLongFn({
+ formats: dateFormats,
+ defaultWidth: 'full',
+ }),
+
+ time: buildFormatLongFn({
+ formats: timeFormats,
+ defaultWidth: 'full',
+ }),
+
+ dateTime: buildFormatLongFn({
+ formats: dateTimeFormats,
+ defaultWidth: 'full',
+ }),
+}
+
+export default formatLong
diff --git a/date-fns/src/locale/lv/_lib/formatRelative/index.js b/date-fns/src/locale/lv/_lib/formatRelative/index.js
new file mode 100644
index 0000000..9f9b72d
--- /dev/null
+++ b/date-fns/src/locale/lv/_lib/formatRelative/index.js
@@ -0,0 +1,43 @@
+import isSameUTCWeek from '../../../../_lib/isSameUTCWeek/index'
+var weekdays = [
+ 'svētdienā',
+ 'pirmdienā',
+ 'otrdienā',
+ 'trešdienā',
+ 'ceturtdienā',
+ 'piektdienā',
+ 'sestdienā'
+]
+
+var formatRelativeLocale = {
+ lastWeek: function(date, baseDate, options) {
+ if (isSameUTCWeek(date, baseDate, options)) {
+ return "eeee 'plkst.' p"
+ }
+
+ var weekday = weekdays[date.getUTCDay()]
+ return "'Pagājušā " + weekday + " plkst.' p"
+ },
+ yesterday: "'Vakar plkst.' p",
+ today: "'Šodien plkst.' p",
+ tomorrow: "'Rīt plkst.' p",
+ nextWeek: function(date, baseDate, options) {
+ if (isSameUTCWeek(date, baseDate, options)) {
+ return "eeee 'plkst.' p"
+ }
+
+ var weekday = weekdays[date.getUTCDay()]
+ return "'Nākamajā " + weekday + " plkst.' p"
+ },
+ other: 'P'
+}
+
+export default function formatRelative(token, date, baseDate, options) {
+ var format = formatRelativeLocale[token]
+
+ if (typeof format === 'function') {
+ return format(date, baseDate, options)
+ }
+
+ return format
+}
diff --git a/date-fns/src/locale/lv/_lib/localize/index.js b/date-fns/src/locale/lv/_lib/localize/index.js
new file mode 100644
index 0000000..480fd4d
--- /dev/null
+++ b/date-fns/src/locale/lv/_lib/localize/index.js
@@ -0,0 +1,250 @@
+import buildLocalizeFn from '../../../_lib/buildLocalizeFn/index'
+
+var eraValues = {
+ narrow: ['p.m.ē', 'm.ē'],
+ abbreviated: ['p. m. ē.', 'm. ē.'],
+ wide: ['pirms mūsu ēras', 'mūsu ērā']
+}
+
+var quarterValues = {
+ narrow: ['1', '2', '3', '4'],
+ abbreviated: ['1. cet.', '2. cet.', '3. cet.', '4. cet.'],
+ wide: [
+ 'pirmais ceturksnis',
+ 'otrais ceturksnis',
+ 'trešais ceturksnis',
+ 'ceturtais ceturksnis'
+ ]
+}
+
+var formattingQuarterValues = {
+ narrow: ['1', '2', '3', '4'],
+ abbreviated: ['1. cet.', '2. cet.', '3. cet.', '4. cet.'],
+ wide: [
+ 'pirmajā ceturksnī',
+ 'otrajā ceturksnī',
+ 'trešajā ceturksnī',
+ 'ceturtajā ceturksnī'
+ ]
+}
+
+var monthValues = {
+ narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],
+ abbreviated: [
+ 'janv.',
+ 'febr.',
+ 'marts',
+ 'apr.',
+ 'maijs',
+ 'jūn.',
+ 'jūl.',
+ 'aug.',
+ 'sept.',
+ 'okt.',
+ 'nov.',
+ 'dec.'
+ ],
+ wide: [
+ 'janvāris',
+ 'februāris',
+ 'marts',
+ 'aprīlis',
+ 'maijs',
+ 'jūnijs',
+ 'jūlijs',
+ 'augusts',
+ 'septembris',
+ 'oktobris',
+ 'novembris',
+ 'decembris'
+ ]
+}
+
+var formattingMonthValues = {
+ narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],
+ abbreviated: [
+ 'janv.',
+ 'febr.',
+ 'martā',
+ 'apr.',
+ 'maijs',
+ 'jūn.',
+ 'jūl.',
+ 'aug.',
+ 'sept.',
+ 'okt.',
+ 'nov.',
+ 'dec.'
+ ],
+ wide: [
+ 'janvārī',
+ 'februārī',
+ 'martā',
+ 'aprīlī',
+ 'maijā',
+ 'jūnijā',
+ 'jūlijā',
+ 'augustā',
+ 'septembrī',
+ 'oktobrī',
+ 'novembrī',
+ 'decembrī'
+ ]
+}
+
+var dayValues = {
+ narrow: ['S', 'P', 'O', 'T', 'C', 'P', 'S'],
+ short: ['Sv', 'P', 'O', 'T', 'C', 'Pk', 'S'],
+ abbreviated: [
+ 'svētd.',
+ 'pirmd.',
+ 'otrd.',
+ 'trešd.',
+ 'ceturtd.',
+ 'piektd.',
+ 'sestd.'
+ ],
+ wide: [
+ 'svētdiena',
+ 'pirmdiena',
+ 'otrdiena',
+ 'trešdiena',
+ 'ceturtdiena',
+ 'piektdiena',
+ 'sestdiena'
+ ]
+}
+
+var formattingDayValues = {
+ narrow: ['S', 'P', 'O', 'T', 'C', 'P', 'S'],
+ short: ['Sv', 'P', 'O', 'T', 'C', 'Pk', 'S'],
+ abbreviated: [
+ 'svētd.',
+ 'pirmd.',
+ 'otrd.',
+ 'trešd.',
+ 'ceturtd.',
+ 'piektd.',
+ 'sestd.'
+ ],
+ wide: [
+ 'svētdienā',
+ 'pirmdienā',
+ 'otrdienā',
+ 'trešdienā',
+ 'ceturtdienā',
+ 'piektdienā',
+ 'sestdienā'
+ ]
+}
+
+var dayPeriodValues = {
+ narrow: {
+ am: 'am',
+ pm: 'pm',
+ midnight: 'pusn.',
+ noon: 'pusd.',
+ morning: 'rīts',
+ afternoon: 'diena',
+ evening: 'vakars',
+ night: 'nakts'
+ },
+ abbreviated: {
+ am: 'am',
+ pm: 'pm',
+ midnight: 'pusn.',
+ noon: 'pusd.',
+ morning: 'rīts',
+ afternoon: 'pēcpusd.',
+ evening: 'vakars',
+ night: 'nakts'
+ },
+ wide: {
+ am: 'am',
+ pm: 'pm',
+ midnight: 'pusnakts',
+ noon: 'pusdienlaiks',
+ morning: 'rīts',
+ afternoon: 'pēcpusdiena',
+ evening: 'vakars',
+ night: 'nakts'
+ }
+}
+var formattingDayPeriodValues = {
+ narrow: {
+ am: 'am',
+ pm: 'pm',
+ midnight: 'pusn.',
+ noon: 'pusd.',
+ morning: 'rītā',
+ afternoon: 'dienā',
+ evening: 'vakarā',
+ night: 'naktī'
+ },
+ abbreviated: {
+ am: 'am',
+ pm: 'pm',
+ midnight: 'pusn.',
+ noon: 'pusd.',
+ morning: 'rītā',
+ afternoon: 'pēcpusd.',
+ evening: 'vakarā',
+ night: 'naktī'
+ },
+ wide: {
+ am: 'am',
+ pm: 'pm',
+ midnight: 'pusnaktī',
+ noon: 'pusdienlaikā',
+ morning: 'rītā',
+ afternoon: 'pēcpusdienā',
+ evening: 'vakarā',
+ night: 'naktī'
+ }
+}
+
+function ordinalNumber(number, _options) {
+ return number + '.'
+}
+
+var localize = {
+ ordinalNumber: ordinalNumber,
+
+ era: buildLocalizeFn({
+ values: eraValues,
+ defaultWidth: 'wide'
+ }),
+
+ quarter: buildLocalizeFn({
+ values: quarterValues,
+ defaultWidth: 'wide',
+ formattingValues: formattingQuarterValues,
+ defaultFormattingWidth: 'wide',
+ argumentCallback: function(quarter) {
+ return Number(quarter) - 1
+ }
+ }),
+
+ month: buildLocalizeFn({
+ values: monthValues,
+ defaultWidth: 'wide',
+ formattingValues: formattingMonthValues,
+ defaultFormattingWidth: 'wide'
+ }),
+
+ day: buildLocalizeFn({
+ values: dayValues,
+ defaultWidth: 'wide',
+ formattingValues: formattingDayValues,
+ defaultFormattingWidth: 'wide'
+ }),
+
+ dayPeriod: buildLocalizeFn({
+ values: dayPeriodValues,
+ defaultWidth: 'wide',
+ formattingValues: formattingDayPeriodValues,
+ defaultFormattingWidth: 'wide'
+ })
+}
+
+export default localize
diff --git a/date-fns/src/locale/lv/_lib/match/index.js b/date-fns/src/locale/lv/_lib/match/index.js
new file mode 100644
index 0000000..abfdc8a
--- /dev/null
+++ b/date-fns/src/locale/lv/_lib/match/index.js
@@ -0,0 +1,140 @@
+import buildMatchPatternFn from '../../../_lib/buildMatchPatternFn/index'
+import buildMatchFn from '../../../_lib/buildMatchFn/index'
+
+var matchOrdinalNumberPattern = /^(\d+)\./i
+var parseOrdinalNumberPattern = /\d+/i
+
+var matchEraPatterns = {
+ narrow: /^(p\.m\.ē|m\.ē)/i,
+ abbreviated: /^(p\. m\. ē\.|m\. ē\.)/i,
+ wide: /^(pirms mūsu ēras|mūsu ērā)/i
+}
+var parseEraPatterns = {
+ any: [/^p/i, /^m/i]
+}
+
+var matchQuarterPatterns = {
+ narrow: /^[1234]/i,
+ abbreviated: /^[1234](\. cet\.)/i,
+ wide: /^(pirma(is|jā)|otra(is|jā)|treša(is|jā)|ceturta(is|jā)) ceturksn(is|ī)/i
+}
+var parseQuarterPatterns = {
+ narrow: [/^1/i, /^2/i, /^3/i, /^4/i],
+ abbreviated: [/^1/i, /^2/i, /^3/i, /^4/i],
+ wide: [/^p/i, /^o/i, /^t/i, /^c/i]
+}
+
+var matchMonthPatterns = {
+ narrow: /^[jfmasond]/i,
+ abbreviated: /^(janv\.|febr\.|marts|apr\.|maijs|jūn\.|jūl\.|aug\.|sept\.|okt\.|nov\.|dec\.)/i,
+ wide: /^(janvār(is|ī)|februār(is|ī)|mart[sā]|aprīl(is|ī)|maij[sā]|jūnij[sā]|jūlij[sā]|august[sā]|septembr(is|ī)|oktobr(is|ī)|novembr(is|ī)|decembr(is|ī))/i
+}
+var parseMonthPatterns = {
+ narrow: [
+ /^j/i,
+ /^f/i,
+ /^m/i,
+ /^a/i,
+ /^m/i,
+ /^j/i,
+ /^j/i,
+ /^a/i,
+ /^s/i,
+ /^o/i,
+ /^n/i,
+ /^d/i
+ ],
+ any: [
+ /^ja/i,
+ /^f/i,
+ /^mar/i,
+ /^ap/i,
+ /^mai/i,
+ /^jūn/i,
+ /^jūl/i,
+ /^au/i,
+ /^s/i,
+ /^o/i,
+ /^n/i,
+ /^d/i
+ ]
+}
+
+var matchDayPatterns = {
+ narrow: /^[spotc]/i,
+ short: /^(sv|pi|o|t|c|pk|s)/i,
+ abbreviated: /^(svētd\.|pirmd\.|otrd.\|trešd\.|ceturtd\.|piektd\.|sestd\.)/i,
+ wide: /^(svētdien(a|ā)|pirmdien(a|ā)|otrdien(a|ā)|trešdien(a|ā)|ceturtdien(a|ā)|piektdien(a|ā)|sestdien(a|ā))/i
+}
+var parseDayPatterns = {
+ narrow: [/^s/i, /^p/i, /^o/i, /^t/i, /^c/i, /^p/i, /^s/i],
+ any: [/^sv/i, /^pi/i, /^o/i, /^t/i, /^c/i, /^p/i, /^se/i]
+}
+
+var matchDayPeriodPatterns = {
+ narrow: /^(am|pm|pusn\.|pusd\.|rīt(s|ā)|dien(a|ā)|vakar(s|ā)|nakt(s|ī))/,
+ abbreviated: /^(am|pm|pusn\.|pusd\.|rīt(s|ā)|pēcpusd\.|vakar(s|ā)|nakt(s|ī))/,
+ wide: /^(am|pm|pusnakt(s|ī)|pusdienlaik(s|ā)|rīt(s|ā)|pēcpusdien(a|ā)|vakar(s|ā)|nakt(s|ī))/i
+}
+var parseDayPeriodPatterns = {
+ any: {
+ am: /^am/i,
+ pm: /^pm/i,
+ midnight: /^pusn/i,
+ noon: /^pusd/i,
+ morning: /^r/i,
+ afternoon: /^(d|pēc)/i,
+ evening: /^v/i,
+ night: /^n/i
+ }
+}
+
+var match = {
+ ordinalNumber: buildMatchPatternFn({
+ matchPattern: matchOrdinalNumberPattern,
+ parsePattern: parseOrdinalNumberPattern,
+ valueCallback: function(value) {
+ return parseInt(value, 10)
+ }
+ }),
+
+ era: buildMatchFn({
+ matchPatterns: matchEraPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseEraPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ quarter: buildMatchFn({
+ matchPatterns: matchQuarterPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseQuarterPatterns,
+ defaultParseWidth: 'any',
+ valueCallback: function(index) {
+ return index + 1
+ }
+ }),
+
+ month: buildMatchFn({
+ matchPatterns: matchMonthPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseMonthPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ day: buildMatchFn({
+ matchPatterns: matchDayPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseDayPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ dayPeriod: buildMatchFn({
+ matchPatterns: matchDayPeriodPatterns,
+ defaultMatchWidth: 'any',
+ parsePatterns: parseDayPeriodPatterns,
+ defaultParseWidth: 'any'
+ })
+}
+
+export default match
diff --git a/date-fns/src/locale/lv/index.d.ts b/date-fns/src/locale/lv/index.d.ts
new file mode 100644
index 0000000..14686a2
--- /dev/null
+++ b/date-fns/src/locale/lv/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { lv } from 'date-fns/locale'
+export default lv
diff --git a/date-fns/src/locale/lv/index.js b/date-fns/src/locale/lv/index.js
new file mode 100644
index 0000000..34dd097
--- /dev/null
+++ b/date-fns/src/locale/lv/index.js
@@ -0,0 +1,28 @@
+import formatDistance from './_lib/formatDistance/index'
+import formatLong from './_lib/formatLong/index'
+import formatRelative from './_lib/formatRelative/index'
+import localize from './_lib/localize/index'
+import match from './_lib/match/index'
+
+/**
+ * @type {Locale}
+ * @category Locales
+ * @summary Latvian locale (Latvia).
+ * @language Latvian
+ * @iso-639-2 lav
+ * @author Rūdolfs Puķītis [@prudolfs]{@link https://github.com/prudolfs}
+ */
+var locale = {
+ code: 'lv',
+ formatDistance: formatDistance,
+ formatLong: formatLong,
+ formatRelative: formatRelative,
+ localize: localize,
+ match: match,
+ options: {
+ weekStartsOn: 1 /* Monday */,
+ firstWeekContainsDate: 4
+ }
+}
+
+export default locale
diff --git a/date-fns/src/locale/lv/index.js.flow b/date-fns/src/locale/lv/index.js.flow
new file mode 100644
index 0000000..b9dfe66
--- /dev/null
+++ b/date-fns/src/locale/lv/index.js.flow
@@ -0,0 +1,35 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+declare module.exports: Locale
diff --git a/date-fns/src/locale/lv/snapshot.md b/date-fns/src/locale/lv/snapshot.md
new file mode 100644
index 0000000..96dd5e3
--- /dev/null
+++ b/date-fns/src/locale/lv/snapshot.md
@@ -0,0 +1,304 @@
+# Latvian (lv) locale
+
+## `format` and `parse`
+
+| Title | Token string | Date | `format` result | `parse` result |
+| ------------------------------- | ------------ | ------------------------ | ------------------------------------------------------------ | ------------------------ |
+| Calendar year | yo | 1987-02-11T12:13:14.015Z | 1987. | 1987-01-01T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 5. | 0005-01-01T00:00:00.000Z |
+| Local week-numbering year | Yo | 1987-02-11T12:13:14.015Z | 1987. | 1986-12-29T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 4. | 0003-12-29T00:00:00.000Z |
+| Quarter (formatting) | Qo | 2019-01-01T12:13:14.015Z | 1. | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2. | 2019-04-01T00:00:00.000Z |
+| | QQQ | 2019-01-01T12:13:14.015Z | 1. cet. | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2. cet. | 2019-04-01T00:00:00.000Z |
+| | QQQQ | 2019-01-01T12:13:14.015Z | pirmajā ceturksnī | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | otrajā ceturksnī | 2019-04-01T00:00:00.000Z |
+| | QQQQQ | 2019-01-01T12:13:14.015Z | 1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2 | 2019-04-01T00:00:00.000Z |
+| Quarter (stand-alone) | qo | 2019-01-01T12:13:14.015Z | 1. | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2. | 2019-04-01T00:00:00.000Z |
+| | qqq | 2019-01-01T12:13:14.015Z | 1. cet. | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2. cet. | 2019-04-01T00:00:00.000Z |
+| | qqqq | 2019-01-01T12:13:14.015Z | pirmais ceturksnis | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | otrais ceturksnis | 2019-04-01T00:00:00.000Z |
+| Month (formatting) | Mo | 2019-02-11T12:13:14.015Z | 2. | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7. | 2019-07-01T00:00:00.000Z |
+| | MMM | 2019-02-11T12:13:14.015Z | febr. | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | jūl. | 2019-07-01T00:00:00.000Z |
+| | MMMM | 2019-02-11T12:13:14.015Z | februārī | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | jūlijā | 2019-07-01T00:00:00.000Z |
+| | MMMMM | 2019-02-11T12:13:14.015Z | F | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | J | 2019-01-01T00:00:00.000Z |
+| Month (stand-alone) | Lo | 2019-02-11T12:13:14.015Z | 2. | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7. | 2019-07-01T00:00:00.000Z |
+| | LLL | 2019-02-11T12:13:14.015Z | febr. | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | jūl. | 2019-07-01T00:00:00.000Z |
+| | LLLL | 2019-02-11T12:13:14.015Z | februāris | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | jūlijs | 2019-07-01T00:00:00.000Z |
+| | LLLLL | 2019-02-11T12:13:14.015Z | F | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | J | 2019-01-01T00:00:00.000Z |
+| Local week of year | wo | 2019-01-01T12:13:14.015Z | 1. | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48. | 2019-11-25T00:00:00.000Z |
+| ISO week of year | Io | 2019-01-01T12:13:14.015Z | 1. | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48. | 2019-11-25T00:00:00.000Z |
+| Day of month | do | 2019-02-11T12:13:14.015Z | 11. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-28T12:13:14.015Z | 28. | 2019-02-28T00:00:00.000Z |
+| Day of year | Do | 2019-02-11T12:13:14.015Z | 42. | 2019-02-11T00:00:00.000Z |
+| | | 2019-12-31T12:13:14.015Z | 365. | 2019-12-31T00:00:00.000Z |
+| Day of week (formatting) | E | 2019-02-11T12:13:14.015Z | pirmd. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | piektd. | 2019-02-11T00:00:00.000Z |
+| | EE | 2019-02-11T12:13:14.015Z | pirmd. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | piektd. | 2019-02-11T00:00:00.000Z |
+| | EEE | 2019-02-11T12:13:14.015Z | pirmd. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | piektd. | 2019-02-11T00:00:00.000Z |
+| | EEEE | 2019-02-11T12:13:14.015Z | pirmdienā | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | piektdienā | 2019-02-11T00:00:00.000Z |
+| | EEEEE | 2019-02-11T12:13:14.015Z | P | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | P | 2019-02-11T00:00:00.000Z |
+| | EEEEEE | 2019-02-11T12:13:14.015Z | P | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Pk | 2019-02-15T00:00:00.000Z |
+| ISO day of week (formatting) | io | 2019-02-11T12:13:14.015Z | 1. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5. | 2019-02-15T00:00:00.000Z |
+| | iii | 2019-02-11T12:13:14.015Z | pirmd. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | piektd. | 2019-02-11T00:00:00.000Z |
+| | iiii | 2019-02-11T12:13:14.015Z | pirmdienā | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | piektdienā | 2019-02-11T00:00:00.000Z |
+| | iiiii | 2019-02-11T12:13:14.015Z | P | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | P | 2019-02-11T00:00:00.000Z |
+| | iiiiii | 2019-02-11T12:13:14.015Z | P | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Pk | 2019-02-15T00:00:00.000Z |
+| Local day of week (formatting) | eo | 2019-02-11T12:13:14.015Z | 1. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5. | 2019-02-15T00:00:00.000Z |
+| | eee | 2019-02-11T12:13:14.015Z | pirmd. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | piektd. | 2019-02-11T00:00:00.000Z |
+| | eeee | 2019-02-11T12:13:14.015Z | pirmdienā | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | piektdienā | 2019-02-11T00:00:00.000Z |
+| | eeeee | 2019-02-11T12:13:14.015Z | P | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | P | 2019-02-11T00:00:00.000Z |
+| | eeeeee | 2019-02-11T12:13:14.015Z | P | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Pk | 2019-02-15T00:00:00.000Z |
+| Local day of week (stand-alone) | co | 2019-02-11T12:13:14.015Z | 1. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5. | 2019-02-15T00:00:00.000Z |
+| | ccc | 2019-02-11T12:13:14.015Z | pirmd. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | piektd. | 2019-02-11T00:00:00.000Z |
+| | cccc | 2019-02-11T12:13:14.015Z | pirmdiena | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | piektdiena | 2019-02-11T00:00:00.000Z |
+| | ccccc | 2019-02-11T12:13:14.015Z | P | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | P | 2019-02-11T00:00:00.000Z |
+| | cccccc | 2019-02-11T12:13:14.015Z | P | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Pk | 2019-02-15T00:00:00.000Z |
+| AM, PM | a | 2019-02-11T11:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | aa | 2019-02-11T11:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | aaa | 2019-02-11T11:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | aaaa | 2019-02-11T11:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | aaaaa | 2019-02-11T11:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| AM, PM, noon, midnight | b | 2019-02-11T11:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | bb | 2019-02-11T11:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | bbb | 2019-02-11T11:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | bbbb | 2019-02-11T11:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | bbbbb | 2019-02-11T11:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| Flexible day period | B | 2019-02-11T11:13:14.015Z | rītā | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | pēcpusd. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | vakarā | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | naktī | 2019-02-11T00:00:00.000Z |
+| | BB | 2019-02-11T11:13:14.015Z | rītā | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | pēcpusd. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | vakarā | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | naktī | 2019-02-11T00:00:00.000Z |
+| | BBB | 2019-02-11T11:13:14.015Z | rītā | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | pēcpusd. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | vakarā | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | naktī | 2019-02-11T00:00:00.000Z |
+| | BBBB | 2019-02-11T11:13:14.015Z | rītā | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | pēcpusdienā | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | vakarā | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | naktī | 2019-02-11T00:00:00.000Z |
+| | BBBBB | 2019-02-11T11:13:14.015Z | rītā | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | dienā | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | vakarā | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | naktī | 2019-02-11T00:00:00.000Z |
+| Hour [1-12] | ho | 2019-02-11T11:13:14.015Z | 11. | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11. | 2019-02-11T23:00:00.000Z |
+| Hour [0-23] | Ho | 2019-02-11T11:13:14.015Z | 11. | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23. | 2019-02-11T23:00:00.000Z |
+| Hour [0-11] | Ko | 2019-02-11T11:13:14.015Z | 11. | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11. | 2019-02-11T23:00:00.000Z |
+| Hour [1-24] | ko | 2019-02-11T11:13:14.015Z | 11. | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23. | 2019-02-11T23:00:00.000Z |
+| Minute | mo | 2019-01-01T12:01:14.015Z | 1. | 2019-01-01T12:01:00.000Z |
+| | | 2019-04-01T12:55:14.015Z | 55. | 2019-04-01T12:55:00.000Z |
+| Second | so | 2019-01-01T12:13:01.015Z | 1. | 2019-01-01T12:13:01.000Z |
+| | | 2019-04-01T12:13:55.015Z | 55. | 2019-04-01T12:13:55.000Z |
+| Long localized date | P | 1987-02-11T12:13:14.015Z | 11.02.1987. | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29.05.1453. | 1453-05-29T00:00:00.000Z |
+| | PP | 1987-02-11T12:13:14.015Z | 11.02.1987. | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29.05.1453. | 1453-05-29T00:00:00.000Z |
+| | PPP | 1987-02-11T12:13:14.015Z | 1987. gada 11. februārī | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 1453. gada 29. maijā | 1453-05-29T00:00:00.000Z |
+| | PPPP | 1987-02-11T12:13:14.015Z | trešdienā, 1987. gada 11. februārī | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | svētdienā, 1453. gada 29. maijā | 1453-05-29T00:00:00.000Z |
+| Long localized time | p | 1987-02-11T12:13:14.015Z | 12:13 | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 23:59 | 1453-05-29T23:59:00.000Z |
+| | pp | 1987-02-11T12:13:14.015Z | 12:13:14 | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 | 1453-05-29T23:59:59.000Z |
+| | ppp | 1987-02-11T12:13:14.015Z | 12:13:14 GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 GMT+0 | Errored |
+| | pppp | 1987-02-11T12:13:14.015Z | 12:13:14 GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 GMT+00:00 | Errored |
+| Combination of date and time | Pp | 1987-02-11T12:13:14.015Z | 11.02.1987., 12:13 | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29.05.1453., 23:59 | 1453-05-29T23:59:00.000Z |
+| | PPpp | 1987-02-11T12:13:14.015Z | 11.02.1987., 12:13:14 | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29.05.1453., 23:59:59 | 1453-05-29T23:59:59.000Z |
+| | PPPppp | 1987-02-11T12:13:14.015Z | 1987. gada 11. februārī plkst. 12:13:14 GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 1453. gada 29. maijā plkst. 23:59:59 GMT+0 | Errored |
+| | PPPPpppp | 1987-02-11T12:13:14.015Z | trešdienā, 1987. gada 11. februārī plkst. 12:13:14 GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | svētdienā, 1453. gada 29. maijā plkst. 23:59:59 GMT+00:00 | Errored |
+
+## `formatDistance`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `includeSeconds: true` | `addSuffix: true` |
+| ------------------------ | ----------------- | ---------------------- | ----------------------- |
+| 2006-01-01T00:00:00.000Z | apmēram 6 gadi | apmēram 6 gadi | pēc apmēram 6 gadiem |
+| 2005-01-01T00:00:00.000Z | apmēram 5 gadi | apmēram 5 gadi | pēc apmēram 5 gadiem |
+| 2004-01-01T00:00:00.000Z | apmēram 4 gadi | apmēram 4 gadi | pēc apmēram 4 gadiem |
+| 2003-01-01T00:00:00.000Z | apmēram 3 gadi | apmēram 3 gadi | pēc apmēram 3 gadiem |
+| 2002-01-01T00:00:00.000Z | apmēram 2 gadi | apmēram 2 gadi | pēc apmēram 2 gadiem |
+| 2001-06-01T00:00:00.000Z | ilgāk par 1 gadu | ilgāk par 1 gadu | pēc ilgāk par 1 gadu |
+| 2001-02-01T00:00:00.000Z | apmēram 1 gads | apmēram 1 gads | pēc apmēram 1 gada |
+| 2001-01-01T00:00:00.000Z | apmēram 1 gads | apmēram 1 gads | pēc apmēram 1 gada |
+| 2000-06-01T00:00:00.000Z | 5 mēneši | 5 mēneši | pēc 5 mēnešiem |
+| 2000-03-01T00:00:00.000Z | 2 mēneši | 2 mēneši | pēc 2 mēnešiem |
+| 2000-02-01T00:00:00.000Z | apmēram 1 mēnesis | apmēram 1 mēnesis | pēc apmēram 1 mēneša |
+| 2000-01-15T00:00:00.000Z | 14 dienas | 14 dienas | pēc 14 dienām |
+| 2000-01-02T00:00:00.000Z | 1 diena | 1 diena | pēc 1 dienas |
+| 2000-01-01T06:00:00.000Z | apmēram 6 stundas | apmēram 6 stundas | pēc apmēram 6 stundām |
+| 2000-01-01T01:00:00.000Z | apmēram 1 stunda | apmēram 1 stunda | pēc apmēram 1 stundas |
+| 2000-01-01T00:45:00.000Z | apmēram 1 stunda | apmēram 1 stunda | pēc apmēram 1 stundas |
+| 2000-01-01T00:30:00.000Z | 30 minūtes | 30 minūtes | pēc 30 minūtēm |
+| 2000-01-01T00:15:00.000Z | 15 minūtes | 15 minūtes | pēc 15 minūtēm |
+| 2000-01-01T00:01:00.000Z | 1 minūte | 1 minūte | pēc 1 minūtes |
+| 2000-01-01T00:00:25.000Z | mazāk par minūti | pusminūte | pēc mazāk par minūti |
+| 2000-01-01T00:00:15.000Z | mazāk par minūti | mazāk nekā 20 sekundes | pēc mazāk par minūti |
+| 2000-01-01T00:00:05.000Z | mazāk par minūti | mazāk nekā 10 sekundes | pēc mazāk par minūti |
+| 2000-01-01T00:00:00.000Z | mazāk par minūti | mazāk nekā 5 sekundes | pirms mazāk par minūti |
+| 1999-12-31T23:59:55.000Z | mazāk par minūti | mazāk nekā 10 sekundes | pirms mazāk par minūti |
+| 1999-12-31T23:59:45.000Z | mazāk par minūti | mazāk nekā 20 sekundes | pirms mazāk par minūti |
+| 1999-12-31T23:59:35.000Z | mazāk par minūti | pusminūte | pirms mazāk par minūti |
+| 1999-12-31T23:59:00.000Z | 1 minūte | 1 minūte | pirms 1 minūtes |
+| 1999-12-31T23:45:00.000Z | 15 minūtes | 15 minūtes | pirms 15 minūtēm |
+| 1999-12-31T23:30:00.000Z | 30 minūtes | 30 minūtes | pirms 30 minūtēm |
+| 1999-12-31T23:15:00.000Z | apmēram 1 stunda | apmēram 1 stunda | pirms apmēram 1 stundas |
+| 1999-12-31T23:00:00.000Z | apmēram 1 stunda | apmēram 1 stunda | pirms apmēram 1 stundas |
+| 1999-12-31T18:00:00.000Z | apmēram 6 stundas | apmēram 6 stundas | pirms apmēram 6 stundām |
+| 1999-12-30T00:00:00.000Z | 2 dienas | 2 dienas | pirms 2 dienām |
+| 1999-12-15T00:00:00.000Z | 17 dienas | 17 dienas | pirms 17 dienām |
+| 1999-12-01T00:00:00.000Z | apmēram 1 mēnesis | apmēram 1 mēnesis | pirms apmēram 1 mēneša |
+| 1999-11-01T00:00:00.000Z | 2 mēneši | 2 mēneši | pirms 2 mēnešiem |
+| 1999-06-01T00:00:00.000Z | 7 mēneši | 7 mēneši | pirms 7 mēnešiem |
+| 1999-01-01T00:00:00.000Z | apmēram 1 gads | apmēram 1 gads | pirms apmēram 1 gada |
+| 1998-12-01T00:00:00.000Z | apmēram 1 gads | apmēram 1 gads | pirms apmēram 1 gada |
+| 1998-06-01T00:00:00.000Z | ilgāk par 1 gadu | ilgāk par 1 gadu | pirms ilgāk par 1 gadu |
+| 1998-01-01T00:00:00.000Z | apmēram 2 gadi | apmēram 2 gadi | pirms apmēram 2 gadiem |
+| 1997-01-01T00:00:00.000Z | apmēram 3 gadi | apmēram 3 gadi | pirms apmēram 3 gadiem |
+| 1996-01-01T00:00:00.000Z | apmēram 4 gadi | apmēram 4 gadi | pirms apmēram 4 gadiem |
+| 1995-01-01T00:00:00.000Z | apmēram 5 gadi | apmēram 5 gadi | pirms apmēram 5 gadiem |
+| 1994-01-01T00:00:00.000Z | apmēram 6 gadi | apmēram 6 gadi | pirms apmēram 6 gadiem |
+
+## `formatDistanceStrict`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `addSuffix: true` | With forced unit (i.e. `hour`) |
+| ------------------------ | ----------- | ----------------- | ------------------------------ |
+| 2006-01-01T00:00:00.000Z | 6 gadi | pēc 6 gadiem | 52608 stundas |
+| 2005-01-01T00:00:00.000Z | 5 gadi | pēc 5 gadiem | 43848 stundas |
+| 2004-01-01T00:00:00.000Z | 4 gadi | pēc 4 gadiem | 35064 stundas |
+| 2003-01-01T00:00:00.000Z | 3 gadi | pēc 3 gadiem | 26304 stundas |
+| 2002-01-01T00:00:00.000Z | 2 gadi | pēc 2 gadiem | 17544 stundas |
+| 2001-06-01T00:00:00.000Z | 1 gads | pēc 1 gada | 12408 stundas |
+| 2001-02-01T00:00:00.000Z | 1 gads | pēc 1 gada | 9528 stundas |
+| 2001-01-01T00:00:00.000Z | 1 gads | pēc 1 gada | 8784 stundas |
+| 2000-06-01T00:00:00.000Z | 5 mēneši | pēc 5 mēnešiem | 3648 stundas |
+| 2000-03-01T00:00:00.000Z | 2 mēneši | pēc 2 mēnešiem | 1440 stundas |
+| 2000-02-01T00:00:00.000Z | 1 mēnesis | pēc 1 mēneša | 744 stundas |
+| 2000-01-15T00:00:00.000Z | 14 dienas | pēc 14 dienām | 336 stundas |
+| 2000-01-02T00:00:00.000Z | 1 diena | pēc 1 dienas | 24 stundas |
+| 2000-01-01T06:00:00.000Z | 6 stundas | pēc 6 stundām | 6 stundas |
+| 2000-01-01T01:00:00.000Z | 1 stunda | pēc 1 stundas | 1 stunda |
+| 2000-01-01T00:45:00.000Z | 45 minūtes | pēc 45 minūtēm | 1 stunda |
+| 2000-01-01T00:30:00.000Z | 30 minūtes | pēc 30 minūtēm | 1 stunda |
+| 2000-01-01T00:15:00.000Z | 15 minūtes | pēc 15 minūtēm | 0 stundas |
+| 2000-01-01T00:01:00.000Z | 1 minūte | pēc 1 minūtes | 0 stundas |
+| 2000-01-01T00:00:25.000Z | 25 sekundes | pēc 25 sekundēm | 0 stundas |
+| 2000-01-01T00:00:15.000Z | 15 sekundes | pēc 15 sekundēm | 0 stundas |
+| 2000-01-01T00:00:05.000Z | 5 sekundes | pēc 5 sekundēm | 0 stundas |
+| 2000-01-01T00:00:00.000Z | 0 sekundes | pirms 0 sekundēm | 0 stundas |
+| 1999-12-31T23:59:55.000Z | 5 sekundes | pirms 5 sekundēm | 0 stundas |
+| 1999-12-31T23:59:45.000Z | 15 sekundes | pirms 15 sekundēm | 0 stundas |
+| 1999-12-31T23:59:35.000Z | 25 sekundes | pirms 25 sekundēm | 0 stundas |
+| 1999-12-31T23:59:00.000Z | 1 minūte | pirms 1 minūtes | 0 stundas |
+| 1999-12-31T23:45:00.000Z | 15 minūtes | pirms 15 minūtēm | 0 stundas |
+| 1999-12-31T23:30:00.000Z | 30 minūtes | pirms 30 minūtēm | 1 stunda |
+| 1999-12-31T23:15:00.000Z | 45 minūtes | pirms 45 minūtēm | 1 stunda |
+| 1999-12-31T23:00:00.000Z | 1 stunda | pirms 1 stundas | 1 stunda |
+| 1999-12-31T18:00:00.000Z | 6 stundas | pirms 6 stundām | 6 stundas |
+| 1999-12-30T00:00:00.000Z | 2 dienas | pirms 2 dienām | 48 stundas |
+| 1999-12-15T00:00:00.000Z | 17 dienas | pirms 17 dienām | 408 stundas |
+| 1999-12-01T00:00:00.000Z | 1 mēnesis | pirms 1 mēneša | 744 stundas |
+| 1999-11-01T00:00:00.000Z | 2 mēneši | pirms 2 mēnešiem | 1464 stundas |
+| 1999-06-01T00:00:00.000Z | 7 mēneši | pirms 7 mēnešiem | 5136 stundas |
+| 1999-01-01T00:00:00.000Z | 1 gads | pirms 1 gada | 8760 stundas |
+| 1998-12-01T00:00:00.000Z | 1 gads | pirms 1 gada | 9504 stundas |
+| 1998-06-01T00:00:00.000Z | 2 gadi | pirms 2 gadiem | 13896 stundas |
+| 1998-01-01T00:00:00.000Z | 2 gadi | pirms 2 gadiem | 17520 stundas |
+| 1997-01-01T00:00:00.000Z | 3 gadi | pirms 3 gadiem | 26280 stundas |
+| 1996-01-01T00:00:00.000Z | 4 gadi | pirms 4 gadiem | 35064 stundas |
+| 1995-01-01T00:00:00.000Z | 5 gadi | pirms 5 gadiem | 43824 stundas |
+| 1994-01-01T00:00:00.000Z | 6 gadi | pirms 6 gadiem | 52584 stundas |
+
+## `formatRelative`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result |
+| ------------------------ | ------------------------------- |
+| 2000-01-10T00:00:00.000Z | 10.01.2000. |
+| 2000-01-05T00:00:00.000Z | Nākamajā trešdienā plkst. 00:00 |
+| 2000-01-02T00:00:00.000Z | Rīt plkst. 00:00 |
+| 2000-01-01T00:00:00.000Z | Šodien plkst. 00:00 |
+| 1999-12-31T00:00:00.000Z | Vakar plkst. 00:00 |
+| 1999-12-27T00:00:00.000Z | pirmdienā plkst. 00:00 |
+| 1999-12-21T00:00:00.000Z | 21.12.1999. |
diff --git a/date-fns/src/locale/mk/_lib/formatDistance/index.js b/date-fns/src/locale/mk/_lib/formatDistance/index.js
new file mode 100644
index 0000000..395ebf4
--- /dev/null
+++ b/date-fns/src/locale/mk/_lib/formatDistance/index.js
@@ -0,0 +1,101 @@
+var formatDistanceLocale = {
+ lessThanXSeconds: {
+ one: 'помалку од секунда',
+ other: 'помалку од {{count}} секунди'
+ },
+
+ xSeconds: {
+ one: '1 секунда',
+ other: '{{count}} секунди'
+ },
+
+ halfAMinute: 'половина минута',
+
+ lessThanXMinutes: {
+ one: 'помалку од минута',
+ other: 'помалку од {{count}} минути'
+ },
+
+ xMinutes: {
+ one: '1 минута',
+ other: '{{count}} минути'
+ },
+
+ aboutXHours: {
+ one: 'околу 1 час',
+ other: 'околу {{count}} часа'
+ },
+
+ xHours: {
+ one: '1 час',
+ other: '{{count}} часа'
+ },
+
+ xDays: {
+ one: '1 ден',
+ other: '{{count}} дена'
+ },
+
+ aboutXWeeks: {
+ one: 'околу 1 недела',
+ other: 'околу {{count}} месеци'
+ },
+
+ xWeeks: {
+ one: '1 недела',
+ other: '{{count}} недели'
+ },
+
+ aboutXMonths: {
+ one: 'околу 1 месец',
+ other: 'околу {{count}} недели'
+ },
+
+ xMonths: {
+ one: '1 месец',
+ other: '{{count}} месеци'
+ },
+
+ aboutXYears: {
+ one: 'околу 1 година',
+ other: 'околу {{count}} години'
+ },
+
+ xYears: {
+ one: '1 година',
+ other: '{{count}} години'
+ },
+
+ overXYears: {
+ one: 'повеќе од 1 година',
+ other: 'повеќе од {{count}} години'
+ },
+
+ almostXYears: {
+ one: 'безмалку 1 година',
+ other: 'безмалку {{count}} години'
+ }
+}
+
+export default function formatDistance(token, count, options) {
+ options = options || {}
+
+ var result
+ if (typeof formatDistanceLocale[token] === 'string') {
+ result = formatDistanceLocale[token]
+ } else if (count === 1) {
+ result = formatDistanceLocale[token].one
+ } else {
+ result = formatDistanceLocale[token].other.replace('{{count}}', count)
+ }
+
+ if (options.addSuffix) {
+ if (options.comparison > 0) {
+ return 'за ' + result
+ } else {
+ return 'пред ' + result
+ }
+ }
+
+ return result
+}
diff --git a/date-fns/src/locale/mk/_lib/formatLong/index.js b/date-fns/src/locale/mk/_lib/formatLong/index.js
new file mode 100644
index 0000000..bf70409
--- /dev/null
+++ b/date-fns/src/locale/mk/_lib/formatLong/index.js
@@ -0,0 +1,38 @@
+import buildFormatLongFn from '../../../_lib/buildFormatLongFn/index'
+
+var dateFormats = {
+ full: 'EEEE, dd MMMM yyyy',
+ long: 'dd MMMM yyyy',
+ medium: 'dd MMM yyyy',
+ short: 'dd/MM/yyyy'
+}
+
+var timeFormats = {
+ full: 'HH:mm:ss zzzz',
+ long: 'HH:mm:ss z',
+ medium: 'HH:mm:ss',
+ short: 'H:mm'
+}
+
+var dateTimeFormats = {
+ any: '{{date}} {{time}}'
+}
+
+var formatLong = {
+ date: buildFormatLongFn({
+ formats: dateFormats,
+ defaultWidth: 'full'
+ }),
+
+ time: buildFormatLongFn({
+ formats: timeFormats,
+ defaultWidth: 'full'
+ }),
+
+ dateTime: buildFormatLongFn({
+ formats: dateTimeFormats,
+ defaultWidth: 'any'
+ })
+}
+
+export default formatLong
diff --git a/date-fns/src/locale/mk/_lib/formatRelative/index.js b/date-fns/src/locale/mk/_lib/formatRelative/index.js
new file mode 100644
index 0000000..380e1e2
--- /dev/null
+++ b/date-fns/src/locale/mk/_lib/formatRelative/index.js
@@ -0,0 +1,92 @@
+import isSameUTCWeek from '../../../../_lib/isSameUTCWeek/index'
+
+var weekdays = [
+ 'недела',
+ 'понеделник',
+ 'вторник',
+ 'среда',
+ 'четврток',
+ 'петок',
+ 'сабота'
+]
+
+function lastWeek(day) {
+ var weekday = weekdays[day]
+
+ switch (day) {
+ case 0:
+ case 3:
+ case 6:
+ return "'минатата " + weekday + " во' p"
+ case 1:
+ case 2:
+ case 4:
+ case 5:
+ return "'минатиот " + weekday + " во' p"
+ }
+}
+
+function thisWeek(day) {
+ var weekday = weekdays[day]
+
+ switch (day) {
+ case 0:
+ case 3:
+ case 6:
+ return "'ова " + weekday + " вo' p"
+ case 1:
+ case 2:
+ case 4:
+ case 5:
+ return "'овој " + weekday + " вo' p"
+ }
+}
+
+function nextWeek(day) {
+ var weekday = weekdays[day]
+
+ switch (day) {
+ case 0:
+ case 3:
+ case 6:
+ return "'следната " + weekday + " вo' p"
+ case 1:
+ case 2:
+ case 4:
+ case 5:
+ return "'следниот " + weekday + " вo' p"
+ }
+}
+
+var formatRelativeLocale = {
+ lastWeek: function(date, baseDate, options) {
+ var day = date.getUTCDay()
+ if (isSameUTCWeek(date, baseDate, options)) {
+ return thisWeek(day)
+ } else {
+ return lastWeek(day)
+ }
+ },
+ yesterday: "'вчера во' p",
+ today: "'денес во' p",
+ tomorrow: "'утре во' p",
+ nextWeek: function(date, baseDate, options) {
+ var day = date.getUTCDay()
+ if (isSameUTCWeek(date, baseDate, options)) {
+ return thisWeek(day)
+ } else {
+ return nextWeek(day)
+ }
+ },
+ other: 'P'
+}
+
+export default function formatRelative(token, date, baseDate, options) {
+ var format = formatRelativeLocale[token]
+
+ if (typeof format === 'function') {
+ return format(date, baseDate, options)
+ }
+
+ return format
+}
diff --git a/date-fns/src/locale/mk/_lib/localize/index.js b/date-fns/src/locale/mk/_lib/localize/index.js
new file mode 100644
index 0000000..cbda0ff
--- /dev/null
+++ b/date-fns/src/locale/mk/_lib/localize/index.js
@@ -0,0 +1,124 @@
+import buildLocalizeFn from '../../../_lib/buildLocalizeFn/index'
+
+var eraValues = {
+ narrow: ['пр.н.е.', 'н.е.'],
+ abbreviated: ['пред н. е.', 'н. е.'],
+ wide: ['пред нашата ера', 'нашата ера']
+}
+
+var quarterValues = {
+ narrow: ['1', '2', '3', '4'],
+ abbreviated: ['1-ви кв.', '2-ри кв.', '3-ти кв.', '4-ти кв.'],
+ wide: ['1-ви квартал', '2-ри квартал', '3-ти квартал', '4-ти квартал']
+}
+
+var monthValues = {
+ abbreviated: [
+ 'јан',
+ 'фев',
+ 'мар',
+ 'апр',
+ 'мај',
+ 'јун',
+ 'јул',
+ 'авг',
+ 'септ',
+ 'окт',
+ 'ноем',
+ 'дек'
+ ],
+ wide: [
+ 'јануари',
+ 'февруари',
+ 'март',
+ 'април',
+ 'мај',
+ 'јуни',
+ 'јули',
+ 'август',
+ 'септември',
+ 'октомври',
+ 'ноември',
+ 'декември'
+ ]
+}
+
+var dayValues = {
+ narrow: ['Н', 'П', 'В', 'С', 'Ч', 'П', 'С'],
+ short: ['не', 'по', 'вт', 'ср', 'че', 'пе', 'са'],
+ abbreviated: ['нед', 'пон', 'вто', 'сре', 'чет', 'пет', 'саб'],
+ wide: [
+ 'недела',
+ 'понеделник',
+ 'вторник',
+ 'среда',
+ 'четврток',
+ 'петок',
+ 'сабота'
+ ]
+}
+
+var dayPeriodValues = {
+ wide: {
+ am: 'претпладне',
+ pm: 'попладне',
+ midnight: 'полноќ',
+ noon: 'напладне',
+ morning: 'наутро',
+ afternoon: 'попладне',
+ evening: 'навечер',
+ night: 'ноќе'
+ }
+}
+
+function ordinalNumber(dirtyNumber) {
+ var number = Number(dirtyNumber)
+
+ var rem100 = number % 100
+ if (rem100 > 20 || rem100 < 10) {
+ switch (rem100 % 10) {
+ case 1:
+ return number + '-ви'
+ case 2:
+ return number + '-ри'
+ case 7:
+ case 8:
+ return number + '-ми'
+ }
+ }
+ return number + '-ти'
+}
+
+var localize = {
+ ordinalNumber: ordinalNumber,
+
+ era: buildLocalizeFn({
+ values: eraValues,
+ defaultWidth: 'wide'
+ }),
+
+ quarter: buildLocalizeFn({
+ values: quarterValues,
+ defaultWidth: 'wide',
+ argumentCallback: function(quarter) {
+ return Number(quarter) - 1
+ }
+ }),
+
+ month: buildLocalizeFn({
+ values: monthValues,
+ defaultWidth: 'wide'
+ }),
+
+ day: buildLocalizeFn({
+ values: dayValues,
+ defaultWidth: 'wide'
+ }),
+
+ dayPeriod: buildLocalizeFn({
+ values: dayPeriodValues,
+ defaultWidth: 'wide'
+ })
+}
+
+export default localize
diff --git a/date-fns/src/locale/mk/_lib/match/index.js b/date-fns/src/locale/mk/_lib/match/index.js
new file mode 100644
index 0000000..c8ccda6
--- /dev/null
+++ b/date-fns/src/locale/mk/_lib/match/index.js
@@ -0,0 +1,124 @@
+import buildMatchFn from '../../../_lib/buildMatchFn/index'
+import buildMatchPatternFn from '../../../_lib/buildMatchPatternFn/index'
+
+var matchOrdinalNumberPattern = /^(\d+)(-?[врмт][и])?/i
+var parseOrdinalNumberPattern = /\d+/i
+
+var matchEraPatterns = {
+ narrow: /^((пр)?н\.?\s?е\.?)/i,
+ abbreviated: /^((пр)?н\.?\s?е\.?)/i,
+ wide: /^(пред нашата ера|нашата ера)/i
+}
+var parseEraPatterns = {
+ any: [/^п/i, /^н/i]
+}
+
+var matchQuarterPatterns = {
+ narrow: /^[1234]/i,
+ abbreviated: /^[1234](-?[врт]?и?)? кв.?/i,
+ wide: /^[1234](-?[врт]?и?)? квартал/i
+}
+var parseQuarterPatterns = {
+ any: [/1/i, /2/i, /3/i, /4/i]
+}
+
+var matchDayPatterns = {
+ narrow: /^[нпвсч]/i,
+ short: /^(не|по|вт|ср|че|пе|са)/i,
+ abbreviated: /^(нед|пон|вто|сре|чет|пет|саб)/i,
+ wide: /^(недела|понеделник|вторник|среда|четврток|петок|сабота)/i
+}
+
+var parseDayPatterns = {
+ narrow: [/^н/i, /^п/i, /^в/i, /^с/i, /^ч/i, /^п/i, /^с/i],
+ any: [/^н[ед]/i, /^п[он]/i, /^вт/i, /^ср/i, /^ч[ет]/i, /^п[ет]/i, /^с[аб]/i]
+}
+
+var matchMonthPatterns = {
+ abbreviated: /^(јан|фев|мар|апр|мај|јун|јул|авг|сеп|окт|ноем|дек)/i,
+ wide: /^(јануари|февруари|март|април|мај|јуни|јули|август|септември|октомври|ноември|декември)/i
+}
+
+var parseMonthPatterns = {
+ any: [
+ /^ја/i,
+ /^Ф/i,
+ /^мар/i,
+ /^ап/i,
+ /^мај/i,
+ /^јун/i,
+ /^јул/i,
+ /^ав/i,
+ /^се/i,
+ /^окт/i,
+ /^но/i,
+ /^де/i
+ ]
+}
+
+var matchDayPeriodPatterns = {
+ any: /^(претп|попл|полноќ|утро|пладне|вечер|ноќ)/i
+}
+
+var parseDayPeriodPatterns = {
+ any: {
+ am: /претпладне/i,
+ pm: /попладне/i,
+ midnight: /полноќ/i,
+ noon: /напладне/i,
+ morning: /наутро/i,
+ afternoon: /попладне/i,
+ evening: /навечер/i,
+ night: /ноќе/i
+ }
+}
+
+var match = {
+ ordinalNumber: buildMatchPatternFn({
+ matchPattern: matchOrdinalNumberPattern,
+ parsePattern: parseOrdinalNumberPattern,
+ valueCallback: function(value) {
+ return parseInt(value, 10)
+ }
+ }),
+
+ era: buildMatchFn({
+ matchPatterns: matchEraPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseEraPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ quarter: buildMatchFn({
+ matchPatterns: matchQuarterPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseQuarterPatterns,
+ defaultParseWidth: 'any',
+ valueCallback: function(index) {
+ return index + 1
+ }
+ }),
+
+ month: buildMatchFn({
+ matchPatterns: matchMonthPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseMonthPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ day: buildMatchFn({
+ matchPatterns: matchDayPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseDayPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ dayPeriod: buildMatchFn({
+ matchPatterns: matchDayPeriodPatterns,
+ defaultMatchWidth: 'any',
+ parsePatterns: parseDayPeriodPatterns,
+ defaultParseWidth: 'any'
+ })
+}
+
+export default match
diff --git a/date-fns/src/locale/mk/index.d.ts b/date-fns/src/locale/mk/index.d.ts
new file mode 100644
index 0000000..b845b31
--- /dev/null
+++ b/date-fns/src/locale/mk/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { mk } from 'date-fns/locale'
+export default mk
diff --git a/date-fns/src/locale/mk/index.js b/date-fns/src/locale/mk/index.js
new file mode 100644
index 0000000..469a3e2
--- /dev/null
+++ b/date-fns/src/locale/mk/index.js
@@ -0,0 +1,29 @@
+import formatDistance from './_lib/formatDistance/index'
+import formatLong from './_lib/formatLong/index'
+import formatRelative from './_lib/formatRelative/index'
+import localize from './_lib/localize/index'
+import match from './_lib/match/index'
+
+/**
+ * @type {Locale}
+ * @category Locales
+ * @summary Macedonian locale.
+ * @language Macedonian
+ * @iso-639-2 mkd
+ * @author Petar Vlahu [@vlahupetar]{@link https://github.com/vlahupetar}
+ * @author Altrim Beqiri [@altrim]{@link https://github.com/altrim}
+ */
+var locale = {
+ code: 'mk',
+ formatDistance: formatDistance,
+ formatLong: formatLong,
+ formatRelative: formatRelative,
+ localize: localize,
+ match: match,
+ options: {
+ weekStartsOn: 1 /* Monday */,
+ firstWeekContainsDate: 4
+ }
+}
+
+export default locale
diff --git a/date-fns/src/locale/mk/index.js.flow b/date-fns/src/locale/mk/index.js.flow
new file mode 100644
index 0000000..b9dfe66
--- /dev/null
+++ b/date-fns/src/locale/mk/index.js.flow
@@ -0,0 +1,35 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+declare module.exports: Locale
diff --git a/date-fns/src/locale/mk/snapshot.md b/date-fns/src/locale/mk/snapshot.md
new file mode 100644
index 0000000..d4ef913
--- /dev/null
+++ b/date-fns/src/locale/mk/snapshot.md
@@ -0,0 +1,304 @@
+# Macedonian (mk) locale
+
+## `format` and `parse`
+
+| Title | Token string | Date | `format` result | `parse` result |
+| ------------------------------- | ------------ | ------------------------ | ------------------------------------------ | ------------------------ |
+| Calendar year | yo | 1987-02-11T12:13:14.015Z | 1987-ми | 1987-01-01T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 5-ти | 0005-01-01T00:00:00.000Z |
+| Local week-numbering year | Yo | 1987-02-11T12:13:14.015Z | 1987-ми | 1986-12-29T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 4-ти | 0003-12-29T00:00:00.000Z |
+| Quarter (formatting) | Qo | 2019-01-01T12:13:14.015Z | 1-ви | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2-ри | 2019-04-01T00:00:00.000Z |
+| | QQQ | 2019-01-01T12:13:14.015Z | 1-ви кв. | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2-ри кв. | 2019-04-01T00:00:00.000Z |
+| | QQQQ | 2019-01-01T12:13:14.015Z | 1-ви квартал | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2-ри квартал | 2019-04-01T00:00:00.000Z |
+| | QQQQQ | 2019-01-01T12:13:14.015Z | 1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2 | 2019-04-01T00:00:00.000Z |
+| Quarter (stand-alone) | qo | 2019-01-01T12:13:14.015Z | 1-ви | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2-ри | 2019-04-01T00:00:00.000Z |
+| | qqq | 2019-01-01T12:13:14.015Z | 1-ви кв. | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2-ри кв. | 2019-04-01T00:00:00.000Z |
+| | qqqq | 2019-01-01T12:13:14.015Z | 1-ви квартал | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2-ри квартал | 2019-04-01T00:00:00.000Z |
+| Month (formatting) | Mo | 2019-02-11T12:13:14.015Z | 2-ри | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7-ми | 2019-07-01T00:00:00.000Z |
+| | MMM | 2019-02-11T12:13:14.015Z | фев | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | јул | 2019-07-01T00:00:00.000Z |
+| | MMMM | 2019-02-11T12:13:14.015Z | февруари | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | јули | 2019-07-01T00:00:00.000Z |
+| | MMMMM | 2019-02-11T12:13:14.015Z | февруари | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | јули | 2019-07-01T00:00:00.000Z |
+| Month (stand-alone) | Lo | 2019-02-11T12:13:14.015Z | 2-ри | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7-ми | 2019-07-01T00:00:00.000Z |
+| | LLL | 2019-02-11T12:13:14.015Z | фев | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | јул | 2019-07-01T00:00:00.000Z |
+| | LLLL | 2019-02-11T12:13:14.015Z | февруари | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | јули | 2019-07-01T00:00:00.000Z |
+| | LLLLL | 2019-02-11T12:13:14.015Z | февруари | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | јули | 2019-07-01T00:00:00.000Z |
+| Local week of year | wo | 2019-01-01T12:13:14.015Z | 1-ви | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48-ми | 2019-11-25T00:00:00.000Z |
+| ISO week of year | Io | 2019-01-01T12:13:14.015Z | 1-ви | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48-ми | 2019-11-25T00:00:00.000Z |
+| Day of month | do | 2019-02-11T12:13:14.015Z | 11-ти | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-28T12:13:14.015Z | 28-ми | 2019-02-28T00:00:00.000Z |
+| Day of year | Do | 2019-02-11T12:13:14.015Z | 42-ри | 2019-02-11T00:00:00.000Z |
+| | | 2019-12-31T12:13:14.015Z | 365-ти | 2019-12-31T00:00:00.000Z |
+| Day of week (formatting) | E | 2019-02-11T12:13:14.015Z | пон | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | пет | 2019-02-15T00:00:00.000Z |
+| | EE | 2019-02-11T12:13:14.015Z | пон | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | пет | 2019-02-15T00:00:00.000Z |
+| | EEE | 2019-02-11T12:13:14.015Z | пон | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | пет | 2019-02-15T00:00:00.000Z |
+| | EEEE | 2019-02-11T12:13:14.015Z | понеделник | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | петок | 2019-02-15T00:00:00.000Z |
+| | EEEEE | 2019-02-11T12:13:14.015Z | П | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | П | 2019-02-11T00:00:00.000Z |
+| | EEEEEE | 2019-02-11T12:13:14.015Z | по | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | пе | 2019-02-15T00:00:00.000Z |
+| ISO day of week (formatting) | io | 2019-02-11T12:13:14.015Z | 1-ви | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5-ти | 2019-02-15T00:00:00.000Z |
+| | iii | 2019-02-11T12:13:14.015Z | пон | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | пет | 2019-02-15T00:00:00.000Z |
+| | iiii | 2019-02-11T12:13:14.015Z | понеделник | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | петок | 2019-02-15T00:00:00.000Z |
+| | iiiii | 2019-02-11T12:13:14.015Z | П | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | П | 2019-02-11T00:00:00.000Z |
+| | iiiiii | 2019-02-11T12:13:14.015Z | по | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | пе | 2019-02-15T00:00:00.000Z |
+| Local day of week (formatting) | eo | 2019-02-11T12:13:14.015Z | 1-ви | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5-ти | 2019-02-15T00:00:00.000Z |
+| | eee | 2019-02-11T12:13:14.015Z | пон | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | пет | 2019-02-15T00:00:00.000Z |
+| | eeee | 2019-02-11T12:13:14.015Z | понеделник | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | петок | 2019-02-15T00:00:00.000Z |
+| | eeeee | 2019-02-11T12:13:14.015Z | П | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | П | 2019-02-11T00:00:00.000Z |
+| | eeeeee | 2019-02-11T12:13:14.015Z | по | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | пе | 2019-02-15T00:00:00.000Z |
+| Local day of week (stand-alone) | co | 2019-02-11T12:13:14.015Z | 1-ви | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5-ти | 2019-02-15T00:00:00.000Z |
+| | ccc | 2019-02-11T12:13:14.015Z | пон | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | пет | 2019-02-15T00:00:00.000Z |
+| | cccc | 2019-02-11T12:13:14.015Z | понеделник | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | петок | 2019-02-15T00:00:00.000Z |
+| | ccccc | 2019-02-11T12:13:14.015Z | П | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | П | 2019-02-11T00:00:00.000Z |
+| | cccccc | 2019-02-11T12:13:14.015Z | по | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | пе | 2019-02-15T00:00:00.000Z |
+| AM, PM | a | 2019-02-11T11:13:14.015Z | претпладне | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | попладне | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | попладне | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | претпладне | Invalid Date |
+| | aa | 2019-02-11T11:13:14.015Z | претпладне | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | попладне | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | попладне | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | претпладне | Invalid Date |
+| | aaa | 2019-02-11T11:13:14.015Z | претпладне | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | попладне | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | попладне | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | претпладне | Invalid Date |
+| | aaaa | 2019-02-11T11:13:14.015Z | претпладне | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | попладне | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | попладне | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | претпладне | Invalid Date |
+| | aaaaa | 2019-02-11T11:13:14.015Z | претпладне | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | попладне | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | попладне | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | претпладне | Invalid Date |
+| AM, PM, noon, midnight | b | 2019-02-11T11:13:14.015Z | претпладне | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | попладне | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | попладне | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | претпладне | Invalid Date |
+| | bb | 2019-02-11T11:13:14.015Z | претпладне | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | попладне | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | попладне | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | претпладне | Invalid Date |
+| | bbb | 2019-02-11T11:13:14.015Z | претпладне | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | попладне | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | попладне | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | претпладне | Invalid Date |
+| | bbbb | 2019-02-11T11:13:14.015Z | претпладне | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | попладне | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | попладне | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | претпладне | Invalid Date |
+| | bbbbb | 2019-02-11T11:13:14.015Z | претпладне | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | попладне | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | попладне | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | претпладне | Invalid Date |
+| Flexible day period | B | 2019-02-11T11:13:14.015Z | наутро | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | попладне | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | навечер | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | ноќе | Invalid Date |
+| | BB | 2019-02-11T11:13:14.015Z | наутро | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | попладне | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | навечер | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | ноќе | Invalid Date |
+| | BBB | 2019-02-11T11:13:14.015Z | наутро | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | попладне | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | навечер | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | ноќе | Invalid Date |
+| | BBBB | 2019-02-11T11:13:14.015Z | наутро | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | попладне | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | навечер | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | ноќе | Invalid Date |
+| | BBBBB | 2019-02-11T11:13:14.015Z | наутро | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | попладне | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | навечер | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | ноќе | Invalid Date |
+| Hour [1-12] | ho | 2019-02-11T11:13:14.015Z | 11-ти | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11-ти | 2019-02-11T23:00:00.000Z |
+| Hour [0-23] | Ho | 2019-02-11T11:13:14.015Z | 11-ти | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23-ти | 2019-02-11T23:00:00.000Z |
+| Hour [0-11] | Ko | 2019-02-11T11:13:14.015Z | 11-ти | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11-ти | 2019-02-11T23:00:00.000Z |
+| Hour [1-24] | ko | 2019-02-11T11:13:14.015Z | 11-ти | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23-ти | 2019-02-11T23:00:00.000Z |
+| Minute | mo | 2019-01-01T12:01:14.015Z | 1-ви | 2019-01-01T12:01:00.000Z |
+| | | 2019-04-01T12:55:14.015Z | 55-ти | 2019-04-01T12:55:00.000Z |
+| Second | so | 2019-01-01T12:13:01.015Z | 1-ви | 2019-01-01T12:13:01.000Z |
+| | | 2019-04-01T12:13:55.015Z | 55-ти | 2019-04-01T12:13:55.000Z |
+| Long localized date | P | 1987-02-11T12:13:14.015Z | 11/02/1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29/05/1453 | 1453-05-29T00:00:00.000Z |
+| | PP | 1987-02-11T12:13:14.015Z | 11 фев 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 мај 1453 | 1453-05-29T00:00:00.000Z |
+| | PPP | 1987-02-11T12:13:14.015Z | 11 февруари 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 мај 1453 | 1453-05-29T00:00:00.000Z |
+| | PPPP | 1987-02-11T12:13:14.015Z | среда, 11 февруари 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | недела, 29 мај 1453 | 1453-05-29T00:00:00.000Z |
+| Long localized time | p | 1987-02-11T12:13:14.015Z | 12:13 | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 23:59 | 1453-05-29T23:59:00.000Z |
+| | pp | 1987-02-11T12:13:14.015Z | 12:13:14 | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 | 1453-05-29T23:59:59.000Z |
+| | ppp | 1987-02-11T12:13:14.015Z | 12:13:14 GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 GMT+0 | Errored |
+| | pppp | 1987-02-11T12:13:14.015Z | 12:13:14 GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 GMT+00:00 | Errored |
+| Combination of date and time | Pp | 1987-02-11T12:13:14.015Z | 11/02/1987 12:13 | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29/05/1453 23:59 | 1453-05-29T23:59:00.000Z |
+| | PPpp | 1987-02-11T12:13:14.015Z | 11 фев 1987 12:13:14 | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 мај 1453 23:59:59 | 1453-05-29T23:59:59.000Z |
+| | PPPppp | 1987-02-11T12:13:14.015Z | 11 февруари 1987 12:13:14 GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 29 мај 1453 23:59:59 GMT+0 | Errored |
+| | PPPPpppp | 1987-02-11T12:13:14.015Z | среда, 11 февруари 1987 12:13:14 GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | недела, 29 мај 1453 23:59:59 GMT+00:00 | Errored |
+
+## `formatDistance`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `includeSeconds: true` | `addSuffix: true` |
+| ------------------------ | ------------------ | ---------------------- | ----------------------- |
+| 2006-01-01T00:00:00.000Z | околу 6 години | околу 6 години | за околу 6 години |
+| 2005-01-01T00:00:00.000Z | околу 5 години | околу 5 години | за околу 5 години |
+| 2004-01-01T00:00:00.000Z | околу 4 години | околу 4 години | за околу 4 години |
+| 2003-01-01T00:00:00.000Z | околу 3 години | околу 3 години | за околу 3 години |
+| 2002-01-01T00:00:00.000Z | околу 2 години | околу 2 години | за околу 2 години |
+| 2001-06-01T00:00:00.000Z | повеќе од 1 година | повеќе од 1 година | за повеќе од 1 година |
+| 2001-02-01T00:00:00.000Z | околу 1 година | околу 1 година | за околу 1 година |
+| 2001-01-01T00:00:00.000Z | околу 1 година | околу 1 година | за околу 1 година |
+| 2000-06-01T00:00:00.000Z | 5 месеци | 5 месеци | за 5 месеци |
+| 2000-03-01T00:00:00.000Z | 2 месеци | 2 месеци | за 2 месеци |
+| 2000-02-01T00:00:00.000Z | околу 1 месец | околу 1 месец | за околу 1 месец |
+| 2000-01-15T00:00:00.000Z | 14 дена | 14 дена | за 14 дена |
+| 2000-01-02T00:00:00.000Z | 1 ден | 1 ден | за 1 ден |
+| 2000-01-01T06:00:00.000Z | околу 6 часа | околу 6 часа | за околу 6 часа |
+| 2000-01-01T01:00:00.000Z | околу 1 час | околу 1 час | за околу 1 час |
+| 2000-01-01T00:45:00.000Z | околу 1 час | околу 1 час | за околу 1 час |
+| 2000-01-01T00:30:00.000Z | 30 минути | 30 минути | за 30 минути |
+| 2000-01-01T00:15:00.000Z | 15 минути | 15 минути | за 15 минути |
+| 2000-01-01T00:01:00.000Z | 1 минута | 1 минута | за 1 минута |
+| 2000-01-01T00:00:25.000Z | помалку од минута | половина минута | за помалку од минута |
+| 2000-01-01T00:00:15.000Z | помалку од минута | помалку од 20 секунди | за помалку од минута |
+| 2000-01-01T00:00:05.000Z | помалку од минута | помалку од 10 секунди | за помалку од минута |
+| 2000-01-01T00:00:00.000Z | помалку од минута | помалку од 5 секунди | пред помалку од минута |
+| 1999-12-31T23:59:55.000Z | помалку од минута | помалку од 10 секунди | пред помалку од минута |
+| 1999-12-31T23:59:45.000Z | помалку од минута | помалку од 20 секунди | пред помалку од минута |
+| 1999-12-31T23:59:35.000Z | помалку од минута | половина минута | пред помалку од минута |
+| 1999-12-31T23:59:00.000Z | 1 минута | 1 минута | пред 1 минута |
+| 1999-12-31T23:45:00.000Z | 15 минути | 15 минути | пред 15 минути |
+| 1999-12-31T23:30:00.000Z | 30 минути | 30 минути | пред 30 минути |
+| 1999-12-31T23:15:00.000Z | околу 1 час | околу 1 час | пред околу 1 час |
+| 1999-12-31T23:00:00.000Z | околу 1 час | околу 1 час | пред околу 1 час |
+| 1999-12-31T18:00:00.000Z | околу 6 часа | околу 6 часа | пред околу 6 часа |
+| 1999-12-30T00:00:00.000Z | 2 дена | 2 дена | пред 2 дена |
+| 1999-12-15T00:00:00.000Z | 17 дена | 17 дена | пред 17 дена |
+| 1999-12-01T00:00:00.000Z | околу 1 месец | околу 1 месец | пред околу 1 месец |
+| 1999-11-01T00:00:00.000Z | 2 месеци | 2 месеци | пред 2 месеци |
+| 1999-06-01T00:00:00.000Z | 7 месеци | 7 месеци | пред 7 месеци |
+| 1999-01-01T00:00:00.000Z | околу 1 година | околу 1 година | пред околу 1 година |
+| 1998-12-01T00:00:00.000Z | околу 1 година | околу 1 година | пред околу 1 година |
+| 1998-06-01T00:00:00.000Z | повеќе од 1 година | повеќе од 1 година | пред повеќе од 1 година |
+| 1998-01-01T00:00:00.000Z | околу 2 години | околу 2 години | пред околу 2 години |
+| 1997-01-01T00:00:00.000Z | околу 3 години | околу 3 години | пред околу 3 години |
+| 1996-01-01T00:00:00.000Z | околу 4 години | околу 4 години | пред околу 4 години |
+| 1995-01-01T00:00:00.000Z | околу 5 години | околу 5 години | пред околу 5 години |
+| 1994-01-01T00:00:00.000Z | околу 6 години | околу 6 години | пред околу 6 години |
+
+## `formatDistanceStrict`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `addSuffix: true` | With forced unit (i.e. `hour`) |
+| ------------------------ | ---------- | ----------------- | ------------------------------ |
+| 2006-01-01T00:00:00.000Z | 6 години | за 6 години | 52608 часа |
+| 2005-01-01T00:00:00.000Z | 5 години | за 5 години | 43848 часа |
+| 2004-01-01T00:00:00.000Z | 4 години | за 4 години | 35064 часа |
+| 2003-01-01T00:00:00.000Z | 3 години | за 3 години | 26304 часа |
+| 2002-01-01T00:00:00.000Z | 2 години | за 2 години | 17544 часа |
+| 2001-06-01T00:00:00.000Z | 1 година | за 1 година | 12408 часа |
+| 2001-02-01T00:00:00.000Z | 1 година | за 1 година | 9528 часа |
+| 2001-01-01T00:00:00.000Z | 1 година | за 1 година | 8784 часа |
+| 2000-06-01T00:00:00.000Z | 5 месеци | за 5 месеци | 3648 часа |
+| 2000-03-01T00:00:00.000Z | 2 месеци | за 2 месеци | 1440 часа |
+| 2000-02-01T00:00:00.000Z | 1 месец | за 1 месец | 744 часа |
+| 2000-01-15T00:00:00.000Z | 14 дена | за 14 дена | 336 часа |
+| 2000-01-02T00:00:00.000Z | 1 ден | за 1 ден | 24 часа |
+| 2000-01-01T06:00:00.000Z | 6 часа | за 6 часа | 6 часа |
+| 2000-01-01T01:00:00.000Z | 1 час | за 1 час | 1 час |
+| 2000-01-01T00:45:00.000Z | 45 минути | за 45 минути | 1 час |
+| 2000-01-01T00:30:00.000Z | 30 минути | за 30 минути | 1 час |
+| 2000-01-01T00:15:00.000Z | 15 минути | за 15 минути | 0 часа |
+| 2000-01-01T00:01:00.000Z | 1 минута | за 1 минута | 0 часа |
+| 2000-01-01T00:00:25.000Z | 25 секунди | за 25 секунди | 0 часа |
+| 2000-01-01T00:00:15.000Z | 15 секунди | за 15 секунди | 0 часа |
+| 2000-01-01T00:00:05.000Z | 5 секунди | за 5 секунди | 0 часа |
+| 2000-01-01T00:00:00.000Z | 0 секунди | пред 0 секунди | 0 часа |
+| 1999-12-31T23:59:55.000Z | 5 секунди | пред 5 секунди | 0 часа |
+| 1999-12-31T23:59:45.000Z | 15 секунди | пред 15 секунди | 0 часа |
+| 1999-12-31T23:59:35.000Z | 25 секунди | пред 25 секунди | 0 часа |
+| 1999-12-31T23:59:00.000Z | 1 минута | пред 1 минута | 0 часа |
+| 1999-12-31T23:45:00.000Z | 15 минути | пред 15 минути | 0 часа |
+| 1999-12-31T23:30:00.000Z | 30 минути | пред 30 минути | 1 час |
+| 1999-12-31T23:15:00.000Z | 45 минути | пред 45 минути | 1 час |
+| 1999-12-31T23:00:00.000Z | 1 час | пред 1 час | 1 час |
+| 1999-12-31T18:00:00.000Z | 6 часа | пред 6 часа | 6 часа |
+| 1999-12-30T00:00:00.000Z | 2 дена | пред 2 дена | 48 часа |
+| 1999-12-15T00:00:00.000Z | 17 дена | пред 17 дена | 408 часа |
+| 1999-12-01T00:00:00.000Z | 1 месец | пред 1 месец | 744 часа |
+| 1999-11-01T00:00:00.000Z | 2 месеци | пред 2 месеци | 1464 часа |
+| 1999-06-01T00:00:00.000Z | 7 месеци | пред 7 месеци | 5136 часа |
+| 1999-01-01T00:00:00.000Z | 1 година | пред 1 година | 8760 часа |
+| 1998-12-01T00:00:00.000Z | 1 година | пред 1 година | 9504 часа |
+| 1998-06-01T00:00:00.000Z | 2 години | пред 2 години | 13896 часа |
+| 1998-01-01T00:00:00.000Z | 2 години | пред 2 години | 17520 часа |
+| 1997-01-01T00:00:00.000Z | 3 години | пред 3 години | 26280 часа |
+| 1996-01-01T00:00:00.000Z | 4 години | пред 4 години | 35064 часа |
+| 1995-01-01T00:00:00.000Z | 5 години | пред 5 години | 43824 часа |
+| 1994-01-01T00:00:00.000Z | 6 години | пред 6 години | 52584 часа |
+
+## `formatRelative`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result |
+| ------------------------ | ----------------------- |
+| 2000-01-10T00:00:00.000Z | 10/01/2000 |
+| 2000-01-05T00:00:00.000Z | следната среда вo 0:00 |
+| 2000-01-02T00:00:00.000Z | утре во 0:00 |
+| 2000-01-01T00:00:00.000Z | денес во 0:00 |
+| 1999-12-31T00:00:00.000Z | вчера во 0:00 |
+| 1999-12-27T00:00:00.000Z | овој понеделник вo 0:00 |
+| 1999-12-21T00:00:00.000Z | 21/12/1999 |
diff --git a/date-fns/src/locale/mn/_lib/formatDistance/index.js b/date-fns/src/locale/mn/_lib/formatDistance/index.js
new file mode 100644
index 0000000..28952ae
--- /dev/null
+++ b/date-fns/src/locale/mn/_lib/formatDistance/index.js
@@ -0,0 +1,138 @@
+var formatDistanceLocale = {
+ lessThanXSeconds: {
+ one: 'секунд хүрэхгүй',
+ other: '{{count}} секунд хүрэхгүй'
+ },
+
+ xSeconds: {
+ one: '1 секунд',
+ other: '{{count}} секунд'
+ },
+
+ halfAMinute: 'хагас минут',
+
+ lessThanXMinutes: {
+ one: 'минут хүрэхгүй',
+ other: '{{count}} минут хүрэхгүй'
+ },
+
+ xMinutes: {
+ one: '1 минут',
+ other: '{{count}} минут'
+ },
+
+ aboutXHours: {
+ one: 'ойролцоогоор 1 цаг',
+ other: 'ойролцоогоор {{count}} цаг'
+ },
+
+ xHours: {
+ one: '1 цаг',
+ other: '{{count}} цаг'
+ },
+
+ xDays: {
+ one: '1 өдөр',
+ other: '{{count}} өдөр'
+ },
+
+ aboutXWeeks: {
+ one: 'ойролцоогоор 1 долоо хоног',
+ other: 'ойролцоогоор {{count}} долоо хоног'
+ },
+
+ xWeeks: {
+ one: '1 долоо хоног',
+ other: '{{count}} долоо хоног'
+ },
+
+ aboutXMonths: {
+ one: 'ойролцоогоор 1 сар',
+ other: 'ойролцоогоор {{count}} сар'
+ },
+
+ xMonths: {
+ one: '1 сар',
+ other: '{{count}} сар'
+ },
+
+ aboutXYears: {
+ one: 'ойролцоогоор 1 жил',
+ other: 'ойролцоогоор {{count}} жил'
+ },
+
+ xYears: {
+ one: '1 жил',
+ other: '{{count}} жил'
+ },
+
+ overXYears: {
+ one: '1 жил гаран',
+ other: '{{count}} жил гаран'
+ },
+
+ almostXYears: {
+ one: 'бараг 1 жил',
+ other: 'бараг {{count}} жил'
+ }
+}
+
+export default function formatDistance(token, count, options) {
+ options = options || {}
+
+ var result
+ if (typeof formatDistanceLocale[token] === 'string') {
+ result = formatDistanceLocale[token]
+ } else if (count === 1) {
+ result = formatDistanceLocale[token].one
+ } else {
+ result = formatDistanceLocale[token].other.replace('{{count}}', count)
+ }
+
+ if (options.addSuffix) {
+ /**
+ * Append genitive case
+ */
+ var words = result.split(' ')
+ var lastword = words.pop()
+ result = words.join(' ')
+ switch (lastword) {
+ case 'секунд':
+ result += ' секундийн'
+ break
+ case 'минут':
+ result += ' минутын'
+ break
+ case 'цаг':
+ result += ' цагийн'
+ break
+ case 'өдөр':
+ result += ' өдрийн'
+ break
+ case 'сар':
+ result += ' сарын'
+ break
+ case 'жил':
+ result += ' жилийн'
+ break
+ case 'хоног':
+ result += ' хоногийн'
+ break
+ case 'гаран':
+ result += ' гараны'
+ break
+ case 'хүрэхгүй':
+ result += ' хүрэхгүй хугацааны'
+ break
+ default:
+ result += lastword + '-н'
+ }
+ if (options.comparison > 0) {
+ return result + ' дараа'
+ } else {
+ return result + ' өмнө'
+ }
+ }
+
+ return result
+}
diff --git a/date-fns/src/locale/mn/_lib/formatLong/index.js b/date-fns/src/locale/mn/_lib/formatLong/index.js
new file mode 100644
index 0000000..2db4a91
--- /dev/null
+++ b/date-fns/src/locale/mn/_lib/formatLong/index.js
@@ -0,0 +1,41 @@
+import buildFormatLongFn from '../../../_lib/buildFormatLongFn/index'
+
+var dateFormats = {
+ full: "y 'оны' MMMM'ын' d, EEEE 'гараг'",
+ long: "y 'оны' MMMM'ын' d",
+ medium: "y 'оны' MMM'ын' d",
+ short: 'y.MM.dd'
+}
+
+var timeFormats = {
+ full: 'H:mm:ss zzzz',
+ long: 'H:mm:ss z',
+ medium: 'H:mm:ss',
+ short: 'H:mm'
+}
+
+var dateTimeFormats = {
+ full: '{{date}} {{time}}',
+ long: '{{date}} {{time}}',
+ medium: '{{date}} {{time}}',
+ short: '{{date}} {{time}}'
+}
+
+var formatLong = {
+ date: buildFormatLongFn({
+ formats: dateFormats,
+ defaultWidth: 'full'
+ }),
+
+ time: buildFormatLongFn({
+ formats: timeFormats,
+ defaultWidth: 'full'
+ }),
+
+ dateTime: buildFormatLongFn({
+ formats: dateTimeFormats,
+ defaultWidth: 'full'
+ })
+}
+
+export default formatLong
diff --git a/date-fns/src/locale/mn/_lib/formatRelative/index.js b/date-fns/src/locale/mn/_lib/formatRelative/index.js
new file mode 100644
index 0000000..52461ba
--- /dev/null
+++ b/date-fns/src/locale/mn/_lib/formatRelative/index.js
@@ -0,0 +1,12 @@
+var formatRelativeLocale = {
+ lastWeek: "'өнгөрсөн' eeee 'гарагийн' p 'цагт'",
+ yesterday: "'өчигдөр' p 'цагт'",
+ today: "'өнөөдөр' p 'цагт'",
+ tomorrow: "'маргааш' p 'цагт'",
+ nextWeek: "'ирэх' eeee 'гарагийн' p 'цагт'",
+ other: 'P'
+}
+
+export default function formatRelative(token, _date, _baseDate, _options) {
+ return formatRelativeLocale[token]
+}
diff --git a/date-fns/src/locale/mn/_lib/localize/index.js b/date-fns/src/locale/mn/_lib/localize/index.js
new file mode 100644
index 0000000..76b5ba2
--- /dev/null
+++ b/date-fns/src/locale/mn/_lib/localize/index.js
@@ -0,0 +1,208 @@
+import buildLocalizeFn from '../../../_lib/buildLocalizeFn/index'
+
+var eraValues = {
+ narrow: ['НТӨ', 'НТ'],
+ abbreviated: ['НТӨ', 'НТ'],
+ wide: ['нийтийн тооллын өмнөх', 'нийтийн тооллын'],
+}
+
+var quarterValues = {
+ narrow: ['I', 'II', 'III', 'IV'],
+ abbreviated: ['I улирал', 'II улирал', 'III улирал', 'IV улирал'],
+ wide: ['1-р улирал', '2-р улирал', '3-р улирал', '4-р улирал'],
+}
+
+// Note: in English, the names of days of the week and months are capitalized.
+// If you are making a new locale based on this one, check if the same is true for the language you're working on.
+// Generally, formatted dates should look like they are in the middle of a sentence,
+// e.g. in Spanish language the weekdays and months should be in the lowercase.
+var monthValues = {
+ narrow: [
+ 'I',
+ 'II',
+ 'III',
+ 'IV',
+ 'V',
+ 'VI',
+ 'VII',
+ 'VIII',
+ 'IX',
+ 'X',
+ 'XI',
+ 'XII',
+ ],
+ abbreviated: [
+ '1-р сар',
+ '2-р сар',
+ '3-р сар',
+ '4-р сар',
+ '5-р сар',
+ '6-р сар',
+ '7-р сар',
+ '8-р сар',
+ '9-р сар',
+ '10-р сар',
+ '11-р сар',
+ '12-р сар',
+ ],
+ wide: [
+ 'Нэгдүгээр сар',
+ 'Хоёрдугаар сар',
+ 'Гуравдугаар сар',
+ 'Дөрөвдүгээр сар',
+ 'Тавдугаар сар',
+ 'Зургаадугаар сар',
+ 'Долоодугаар сар',
+ 'Наймдугаар сар',
+ 'Есдүгээр сар',
+ 'Аравдугаар сар',
+ 'Арваннэгдүгээр сар',
+ 'Арван хоёрдугаар сар',
+ ],
+}
+
+var formattingMonthValues = {
+ narrow: [
+ 'I',
+ 'II',
+ 'III',
+ 'IV',
+ 'V',
+ 'VI',
+ 'VII',
+ 'VIII',
+ 'IX',
+ 'X',
+ 'XI',
+ 'XII',
+ ],
+ abbreviated: [
+ '1-р сар',
+ '2-р сар',
+ '3-р сар',
+ '4-р сар',
+ '5-р сар',
+ '6-р сар',
+ '7-р сар',
+ '8-р сар',
+ '9-р сар',
+ '10-р сар',
+ '11-р сар',
+ '12-р сар',
+ ],
+ wide: [
+ 'нэгдүгээр сар',
+ 'хоёрдугаар сар',
+ 'гуравдугаар сар',
+ 'дөрөвдүгээр сар',
+ 'тавдугаар сар',
+ 'зургаадугаар сар',
+ 'долоодугаар сар',
+ 'наймдугаар сар',
+ 'есдүгээр сар',
+ 'аравдугаар сар',
+ 'арваннэгдүгээр сар',
+ 'арван хоёрдугаар сар',
+ ],
+}
+
+var dayValues = {
+ narrow: ['Н', 'Д', 'М', 'Л', 'П', 'Б', 'Б'],
+ short: ['Ня', 'Да', 'Мя', 'Лх', 'Пү', 'Ба', 'Бя'],
+ abbreviated: ['Ням', 'Дав', 'Мяг', 'Лха', 'Пүр', 'Баа', 'Бям'],
+ wide: ['Ням', 'Даваа', 'Мягмар', 'Лхагва', 'Пүрэв', 'Баасан', 'Бямба'],
+}
+
+var formattingDayValues = {
+ narrow: ['Н', 'Д', 'М', 'Л', 'П', 'Б', 'Б'],
+ short: ['Ня', 'Да', 'Мя', 'Лх', 'Пү', 'Ба', 'Бя'],
+ abbreviated: ['Ням', 'Дав', 'Мяг', 'Лха', 'Пүр', 'Баа', 'Бям'],
+ wide: ['ням', 'даваа', 'мягмар', 'лхагва', 'пүрэв', 'баасан', 'бямба'],
+}
+
+var dayPeriodValues = {
+ narrow: {
+ am: 'ү.ө.',
+ pm: 'ү.х.',
+ midnight: 'шөнө дунд',
+ noon: 'үд дунд',
+ morning: 'өглөө',
+ afternoon: 'өдөр',
+ evening: 'орой',
+ night: 'шөнө',
+ },
+ abbreviated: {
+ am: 'ү.ө.',
+ pm: 'ү.х.',
+ midnight: 'шөнө дунд',
+ noon: 'үд дунд',
+ morning: 'өглөө',
+ afternoon: 'өдөр',
+ evening: 'орой',
+ night: 'шөнө',
+ },
+ wide: {
+ am: 'ү.ө.',
+ pm: 'ү.х.',
+ midnight: 'шөнө дунд',
+ noon: 'үд дунд',
+ morning: 'өглөө',
+ afternoon: 'өдөр',
+ evening: 'орой',
+ night: 'шөнө',
+ },
+}
+
+function ordinalNumber(dirtyNumber, _dirtyOptions) {
+ var number = Number(dirtyNumber)
+
+ // If ordinal numbers depend on context, for example,
+ // if they are different for different grammatical genders,
+ // use `options.unit`:
+ //
+ // var options = dirtyOptions || {}
+ // var unit = String(options.unit)
+ //
+ // where `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',
+ // 'day', 'hour', 'minute', 'second'
+
+ return number
+}
+
+var localize = {
+ ordinalNumber: ordinalNumber,
+
+ era: buildLocalizeFn({
+ values: eraValues,
+ defaultWidth: 'wide',
+ }),
+
+ quarter: buildLocalizeFn({
+ values: quarterValues,
+ defaultWidth: 'wide',
+ argumentCallback: function (quarter) {
+ return Number(quarter) - 1
+ },
+ }),
+
+ month: buildLocalizeFn({
+ values: monthValues,
+ defaultWidth: 'wide',
+ formattingValues: formattingMonthValues,
+ defaultFormattingWidth: 'wide',
+ }),
+
+ day: buildLocalizeFn({
+ values: dayValues,
+ defaultWidth: 'wide',
+ formattingValues: formattingDayValues,
+ defaultFormattingWidth: 'wide',
+ }),
+
+ dayPeriod: buildLocalizeFn({
+ values: dayPeriodValues,
+ defaultWidth: 'wide',
+ }),
+}
+
+export default localize
diff --git a/date-fns/src/locale/mn/_lib/match/index.js b/date-fns/src/locale/mn/_lib/match/index.js
new file mode 100644
index 0000000..de6a8b3
--- /dev/null
+++ b/date-fns/src/locale/mn/_lib/match/index.js
@@ -0,0 +1,137 @@
+import buildMatchPatternFn from '../../../_lib/buildMatchPatternFn/index'
+import buildMatchFn from '../../../_lib/buildMatchFn/index'
+
+var matchOrdinalNumberPattern = /\d+/i
+var parseOrdinalNumberPattern = /\d+/i
+
+var matchEraPatterns = {
+ narrow: /^(нтө|нт)/i,
+ abbreviated: /^(нтө|нт)/i,
+ wide: /^(нийтийн тооллын өмнө|нийтийн тооллын)/i
+}
+var parseEraPatterns = {
+ any: [/^(нтө|нийтийн тооллын өмнө)/i, /^(нт|нийтийн тооллын)/i]
+}
+
+var matchQuarterPatterns = {
+ narrow: /^(iv|iii|ii|i)/i,
+ abbreviated: /^(iv|iii|ii|i) улирал/i,
+ wide: /^[1-4]-р улирал/i
+}
+var parseQuarterPatterns = {
+ any: [/^(i(\s|$)|1)/i, /^(ii(\s|$)|2)/i, /^(iii(\s|$)|3)/i, /^(iv(\s|$)|4)/i]
+}
+
+var matchMonthPatterns = {
+ narrow: /^(xii|xi|x|ix|viii|vii|vi|v|iv|iii|ii|i)/i,
+ abbreviated: /^(1-р сар|2-р сар|3-р сар|4-р сар|5-р сар|6-р сар|7-р сар|8-р сар|9-р сар|10-р сар|11-р сар|12-р сар)/i,
+ wide: /^(нэгдүгээр сар|хоёрдугаар сар|гуравдугаар сар|дөрөвдүгээр сар|тавдугаар сар|зургаадугаар сар|долоодугаар сар|наймдугаар сар|есдүгээр сар|аравдугаар сар|арван нэгдүгээр сар|арван хоёрдугаар сар)/i
+}
+var parseMonthPatterns = {
+ narrow: [
+ /^i$/i,
+ /^ii$/i,
+ /^iii$/i,
+ /^iv$/i,
+ /^v$/i,
+ /^vi$/i,
+ /^vii$/i,
+ /^viii$/i,
+ /^ix$/i,
+ /^x$/i,
+ /^xi$/i,
+ /^xii$/i
+ ],
+ any: [
+ /^(1|нэгдүгээр)/i,
+ /^(2|хоёрдугаар)/i,
+ /^(3|гуравдугаар)/i,
+ /^(4|дөрөвдүгээр)/i,
+ /^(5|тавдугаар)/i,
+ /^(6|зургаадугаар)/i,
+ /^(7|долоодугаар)/i,
+ /^(8|наймдугаар)/i,
+ /^(9|есдүгээр)/i,
+ /^(10|аравдугаар)/i,
+ /^(11|арван нэгдүгээр)/i,
+ /^(12|арван хоёрдугаар)/i
+ ]
+}
+
+var matchDayPatterns = {
+ narrow: /^[ндмлпбб]/i,
+ short: /^(ня|да|мя|лх|пү|ба|бя)/i,
+ abbreviated: /^(ням|дав|мяг|лха|пүр|баа|бям)/i,
+ wide: /^(ням|даваа|мягмар|лхагва|пүрэв|баасан|бямба)/i
+}
+var parseDayPatterns = {
+ narrow: [/^н/i, /^д/i, /^м/i, /^л/i, /^п/i, /^б/i, /^б/i],
+ any: [/^ня/i, /^да/i, /^мя/i, /^лх/i, /^пү/i, /^ба/i, /^бя/i]
+}
+
+var matchDayPeriodPatterns = {
+ narrow: /^(ү\.ө\.|ү\.х\.|шөнө дунд|үд дунд|өглөө|өдөр|орой|шөнө)/i,
+ any: /^(ү\.ө\.|ү\.х\.|шөнө дунд|үд дунд|өглөө|өдөр|орой|шөнө)/i
+}
+var parseDayPeriodPatterns = {
+ any: {
+ am: /^ү\.ө\./i,
+ pm: /^ү\.х\./i,
+ midnight: /^шөнө дунд/i,
+ noon: /^үд дунд/i,
+ morning: /өглөө/i,
+ afternoon: /өдөр/i,
+ evening: /орой/i,
+ night: /шөнө/i
+ }
+}
+
+var match = {
+ ordinalNumber: buildMatchPatternFn({
+ matchPattern: matchOrdinalNumberPattern,
+ parsePattern: parseOrdinalNumberPattern,
+ valueCallback: function(value) {
+ return parseInt(value, 10)
+ }
+ }),
+
+ era: buildMatchFn({
+ matchPatterns: matchEraPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseEraPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ quarter: buildMatchFn({
+ matchPatterns: matchQuarterPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseQuarterPatterns,
+ defaultParseWidth: 'any',
+ valueCallback: function(index) {
+ return index + 1
+ }
+ }),
+
+ month: buildMatchFn({
+ matchPatterns: matchMonthPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseMonthPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ day: buildMatchFn({
+ matchPatterns: matchDayPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseDayPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ dayPeriod: buildMatchFn({
+ matchPatterns: matchDayPeriodPatterns,
+ defaultMatchWidth: 'any',
+ parsePatterns: parseDayPeriodPatterns,
+ defaultParseWidth: 'any'
+ })
+}
+
+export default match
diff --git a/date-fns/src/locale/mn/index.d.ts b/date-fns/src/locale/mn/index.d.ts
new file mode 100644
index 0000000..9b27ad9
--- /dev/null
+++ b/date-fns/src/locale/mn/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { mn } from 'date-fns/locale'
+export default mn
diff --git a/date-fns/src/locale/mn/index.js b/date-fns/src/locale/mn/index.js
new file mode 100644
index 0000000..dcb3562
--- /dev/null
+++ b/date-fns/src/locale/mn/index.js
@@ -0,0 +1,28 @@
+import formatDistance from './_lib/formatDistance/index'
+import formatLong from './_lib/formatLong/index'
+import formatRelative from './_lib/formatRelative/index'
+import localize from './_lib/localize/index'
+import match from './_lib/match/index'
+
+/**
+ * @type {Locale}
+ * @category Locales
+ * @summary Mongolian locale.
+ * @language Mongolian
+ * @iso-639-2 mon
+ * @author Bilguun Ochirbat [@bilguun0203]{@link https://github.com/bilguun0203}
+ */
+var locale = {
+ code: 'mn',
+ formatDistance: formatDistance,
+ formatLong: formatLong,
+ formatRelative: formatRelative,
+ localize: localize,
+ match: match,
+ options: {
+ weekStartsOn: 1 /* Monday */,
+ firstWeekContainsDate: 1
+ }
+}
+
+export default locale
diff --git a/date-fns/src/locale/mn/index.js.flow b/date-fns/src/locale/mn/index.js.flow
new file mode 100644
index 0000000..b9dfe66
--- /dev/null
+++ b/date-fns/src/locale/mn/index.js.flow
@@ -0,0 +1,35 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+declare module.exports: Locale
diff --git a/date-fns/src/locale/mn/snapshot.md b/date-fns/src/locale/mn/snapshot.md
new file mode 100644
index 0000000..a94b472
--- /dev/null
+++ b/date-fns/src/locale/mn/snapshot.md
@@ -0,0 +1,304 @@
+# Mongolian (mn) locale
+
+## `format` and `parse`
+
+| Title | Token string | Date | `format` result | `parse` result |
+| ------------------------------- | ------------ | ------------------------ | ------------------------------------------------------------- | ------------------------ |
+| Calendar year | yo | 1987-02-11T12:13:14.015Z | 1987 | 1987-01-01T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 5 | 0005-01-01T00:00:00.000Z |
+| Local week-numbering year | Yo | 1987-02-11T12:13:14.015Z | 1987 | 1986-12-29T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 5 | 0004-12-27T00:00:00.000Z |
+| Quarter (formatting) | Qo | 2019-01-01T12:13:14.015Z | 1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2 | 2019-04-01T00:00:00.000Z |
+| | QQQ | 2019-01-01T12:13:14.015Z | I улирал | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | II улирал | 2019-04-01T00:00:00.000Z |
+| | QQQQ | 2019-01-01T12:13:14.015Z | 1-р улирал | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2-р улирал | 2019-04-01T00:00:00.000Z |
+| | QQQQQ | 2019-01-01T12:13:14.015Z | I | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | II | 2019-04-01T00:00:00.000Z |
+| Quarter (stand-alone) | qo | 2019-01-01T12:13:14.015Z | 1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2 | 2019-04-01T00:00:00.000Z |
+| | qqq | 2019-01-01T12:13:14.015Z | I улирал | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | II улирал | 2019-04-01T00:00:00.000Z |
+| | qqqq | 2019-01-01T12:13:14.015Z | 1-р улирал | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2-р улирал | 2019-04-01T00:00:00.000Z |
+| Month (formatting) | Mo | 2019-02-11T12:13:14.015Z | 2 | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7 | 2019-07-01T00:00:00.000Z |
+| | MMM | 2019-02-11T12:13:14.015Z | 2-р сар | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7-р сар | 2019-07-01T00:00:00.000Z |
+| | MMMM | 2019-02-11T12:13:14.015Z | хоёрдугаар сар | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | долоодугаар сар | 2019-07-01T00:00:00.000Z |
+| | MMMMM | 2019-02-11T12:13:14.015Z | II | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | VII | 2019-07-01T00:00:00.000Z |
+| Month (stand-alone) | Lo | 2019-02-11T12:13:14.015Z | 2 | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7 | 2019-07-01T00:00:00.000Z |
+| | LLL | 2019-02-11T12:13:14.015Z | 2-р сар | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7-р сар | 2019-07-01T00:00:00.000Z |
+| | LLLL | 2019-02-11T12:13:14.015Z | Хоёрдугаар сар | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | Долоодугаар сар | 2019-07-01T00:00:00.000Z |
+| | LLLLL | 2019-02-11T12:13:14.015Z | II | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | VII | 2019-07-01T00:00:00.000Z |
+| Local week of year | wo | 2019-01-01T12:13:14.015Z | 1 | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48 | 2019-11-25T00:00:00.000Z |
+| ISO week of year | Io | 2019-01-01T12:13:14.015Z | 1 | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48 | 2019-11-25T00:00:00.000Z |
+| Day of month | do | 2019-02-11T12:13:14.015Z | 11 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-28T12:13:14.015Z | 28 | 2019-02-28T00:00:00.000Z |
+| Day of year | Do | 2019-02-11T12:13:14.015Z | 42 | 2019-02-11T00:00:00.000Z |
+| | | 2019-12-31T12:13:14.015Z | 365 | 2019-12-31T00:00:00.000Z |
+| Day of week (formatting) | E | 2019-02-11T12:13:14.015Z | Дав | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Баа | 2019-02-15T00:00:00.000Z |
+| | EE | 2019-02-11T12:13:14.015Z | Дав | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Баа | 2019-02-15T00:00:00.000Z |
+| | EEE | 2019-02-11T12:13:14.015Z | Дав | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Баа | 2019-02-15T00:00:00.000Z |
+| | EEEE | 2019-02-11T12:13:14.015Z | даваа | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | баасан | 2019-02-15T00:00:00.000Z |
+| | EEEEE | 2019-02-11T12:13:14.015Z | Д | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Б | 2019-02-15T00:00:00.000Z |
+| | EEEEEE | 2019-02-11T12:13:14.015Z | Да | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Ба | 2019-02-15T00:00:00.000Z |
+| ISO day of week (formatting) | io | 2019-02-11T12:13:14.015Z | 1 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5 | 2019-02-15T00:00:00.000Z |
+| | iii | 2019-02-11T12:13:14.015Z | Дав | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Баа | 2019-02-15T00:00:00.000Z |
+| | iiii | 2019-02-11T12:13:14.015Z | даваа | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | баасан | 2019-02-15T00:00:00.000Z |
+| | iiiii | 2019-02-11T12:13:14.015Z | Д | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Б | 2019-02-15T00:00:00.000Z |
+| | iiiiii | 2019-02-11T12:13:14.015Z | Да | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Ба | 2019-02-15T00:00:00.000Z |
+| Local day of week (formatting) | eo | 2019-02-11T12:13:14.015Z | 1 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5 | 2019-02-15T00:00:00.000Z |
+| | eee | 2019-02-11T12:13:14.015Z | Дав | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Баа | 2019-02-15T00:00:00.000Z |
+| | eeee | 2019-02-11T12:13:14.015Z | даваа | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | баасан | 2019-02-15T00:00:00.000Z |
+| | eeeee | 2019-02-11T12:13:14.015Z | Д | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Б | 2019-02-15T00:00:00.000Z |
+| | eeeeee | 2019-02-11T12:13:14.015Z | Да | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Ба | 2019-02-15T00:00:00.000Z |
+| Local day of week (stand-alone) | co | 2019-02-11T12:13:14.015Z | 1 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5 | 2019-02-15T00:00:00.000Z |
+| | ccc | 2019-02-11T12:13:14.015Z | Дав | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Баа | 2019-02-15T00:00:00.000Z |
+| | cccc | 2019-02-11T12:13:14.015Z | Даваа | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Баасан | 2019-02-15T00:00:00.000Z |
+| | ccccc | 2019-02-11T12:13:14.015Z | Д | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Б | 2019-02-15T00:00:00.000Z |
+| | cccccc | 2019-02-11T12:13:14.015Z | Да | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Ба | 2019-02-15T00:00:00.000Z |
+| AM, PM | a | 2019-02-11T11:13:14.015Z | ү.ө. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | ү.х. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | ү.х. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ү.ө. | 2019-02-11T00:00:00.000Z |
+| | aa | 2019-02-11T11:13:14.015Z | ү.ө. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | ү.х. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | ү.х. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ү.ө. | 2019-02-11T00:00:00.000Z |
+| | aaa | 2019-02-11T11:13:14.015Z | ү.ө. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | ү.х. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | ү.х. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ү.ө. | 2019-02-11T00:00:00.000Z |
+| | aaaa | 2019-02-11T11:13:14.015Z | ү.ө. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | ү.х. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | ү.х. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ү.ө. | 2019-02-11T00:00:00.000Z |
+| | aaaaa | 2019-02-11T11:13:14.015Z | ү.ө. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | ү.х. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | ү.х. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ү.ө. | 2019-02-11T00:00:00.000Z |
+| AM, PM, noon, midnight | b | 2019-02-11T11:13:14.015Z | ү.ө. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | ү.х. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | ү.х. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ү.ө. | 2019-02-11T00:00:00.000Z |
+| | bb | 2019-02-11T11:13:14.015Z | ү.ө. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | ү.х. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | ү.х. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ү.ө. | 2019-02-11T00:00:00.000Z |
+| | bbb | 2019-02-11T11:13:14.015Z | ү.ө. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | ү.х. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | ү.х. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ү.ө. | 2019-02-11T00:00:00.000Z |
+| | bbbb | 2019-02-11T11:13:14.015Z | ү.ө. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | ү.х. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | ү.х. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ү.ө. | 2019-02-11T00:00:00.000Z |
+| | bbbbb | 2019-02-11T11:13:14.015Z | ү.ө. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | ү.х. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | ү.х. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ү.ө. | 2019-02-11T00:00:00.000Z |
+| Flexible day period | B | 2019-02-11T11:13:14.015Z | өглөө | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | өдөр | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | орой | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | шөнө | 2019-02-11T00:00:00.000Z |
+| | BB | 2019-02-11T11:13:14.015Z | өглөө | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | өдөр | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | орой | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | шөнө | 2019-02-11T00:00:00.000Z |
+| | BBB | 2019-02-11T11:13:14.015Z | өглөө | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | өдөр | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | орой | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | шөнө | 2019-02-11T00:00:00.000Z |
+| | BBBB | 2019-02-11T11:13:14.015Z | өглөө | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | өдөр | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | орой | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | шөнө | 2019-02-11T00:00:00.000Z |
+| | BBBBB | 2019-02-11T11:13:14.015Z | өглөө | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | өдөр | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | орой | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | шөнө | 2019-02-11T00:00:00.000Z |
+| Hour [1-12] | ho | 2019-02-11T11:13:14.015Z | 11 | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11 | 2019-02-11T23:00:00.000Z |
+| Hour [0-23] | Ho | 2019-02-11T11:13:14.015Z | 11 | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23 | 2019-02-11T23:00:00.000Z |
+| Hour [0-11] | Ko | 2019-02-11T11:13:14.015Z | 11 | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11 | 2019-02-11T23:00:00.000Z |
+| Hour [1-24] | ko | 2019-02-11T11:13:14.015Z | 11 | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23 | 2019-02-11T23:00:00.000Z |
+| Minute | mo | 2019-01-01T12:01:14.015Z | 1 | 2019-01-01T12:01:00.000Z |
+| | | 2019-04-01T12:55:14.015Z | 55 | 2019-04-01T12:55:00.000Z |
+| Second | so | 2019-01-01T12:13:01.015Z | 1 | 2019-01-01T12:13:01.000Z |
+| | | 2019-04-01T12:13:55.015Z | 55 | 2019-04-01T12:13:55.000Z |
+| Long localized date | P | 1987-02-11T12:13:14.015Z | 1987.02.11 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 1453.05.29 | 1453-05-29T00:00:00.000Z |
+| | PP | 1987-02-11T12:13:14.015Z | 1987 оны 2-р сарын 11 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 1453 оны 5-р сарын 29 | 1453-05-29T00:00:00.000Z |
+| | PPP | 1987-02-11T12:13:14.015Z | 1987 оны хоёрдугаар сарын 11 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 1453 оны тавдугаар сарын 29 | 1453-05-29T00:00:00.000Z |
+| | PPPP | 1987-02-11T12:13:14.015Z | 1987 оны хоёрдугаар сарын 11, лхагва гараг | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 1453 оны тавдугаар сарын 29, ням гараг | 1453-05-29T00:00:00.000Z |
+| Long localized time | p | 1987-02-11T12:13:14.015Z | 12:13 | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 23:59 | 1453-05-29T23:59:00.000Z |
+| | pp | 1987-02-11T12:13:14.015Z | 12:13:14 | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 | 1453-05-29T23:59:59.000Z |
+| | ppp | 1987-02-11T12:13:14.015Z | 12:13:14 GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 GMT+0 | Errored |
+| | pppp | 1987-02-11T12:13:14.015Z | 12:13:14 GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 GMT+00:00 | Errored |
+| Combination of date and time | Pp | 1987-02-11T12:13:14.015Z | 1987.02.11 12:13 | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 1453.05.29 23:59 | 1453-05-29T23:59:00.000Z |
+| | PPpp | 1987-02-11T12:13:14.015Z | 1987 оны 2-р сарын 11 12:13:14 | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 1453 оны 5-р сарын 29 23:59:59 | 1453-05-29T23:59:59.000Z |
+| | PPPppp | 1987-02-11T12:13:14.015Z | 1987 оны хоёрдугаар сарын 11 12:13:14 GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 1453 оны тавдугаар сарын 29 23:59:59 GMT+0 | Errored |
+| | PPPPpppp | 1987-02-11T12:13:14.015Z | 1987 оны хоёрдугаар сарын 11, лхагва гараг 12:13:14 GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 1453 оны тавдугаар сарын 29, ням гараг 23:59:59 GMT+00:00 | Errored |
+
+## `formatDistance`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `includeSeconds: true` | `addSuffix: true` |
+| ------------------------ | ------------------ | ---------------------- | ------------------------------ |
+| 2006-01-01T00:00:00.000Z | ойролцоогоор 6 жил | ойролцоогоор 6 жил | ойролцоогоор 6 жилийн дараа |
+| 2005-01-01T00:00:00.000Z | ойролцоогоор 5 жил | ойролцоогоор 5 жил | ойролцоогоор 5 жилийн дараа |
+| 2004-01-01T00:00:00.000Z | ойролцоогоор 4 жил | ойролцоогоор 4 жил | ойролцоогоор 4 жилийн дараа |
+| 2003-01-01T00:00:00.000Z | ойролцоогоор 3 жил | ойролцоогоор 3 жил | ойролцоогоор 3 жилийн дараа |
+| 2002-01-01T00:00:00.000Z | ойролцоогоор 2 жил | ойролцоогоор 2 жил | ойролцоогоор 2 жилийн дараа |
+| 2001-06-01T00:00:00.000Z | 1 жил гаран | 1 жил гаран | 1 жил гараны дараа |
+| 2001-02-01T00:00:00.000Z | ойролцоогоор 1 жил | ойролцоогоор 1 жил | ойролцоогоор 1 жилийн дараа |
+| 2001-01-01T00:00:00.000Z | ойролцоогоор 1 жил | ойролцоогоор 1 жил | ойролцоогоор 1 жилийн дараа |
+| 2000-06-01T00:00:00.000Z | 5 сар | 5 сар | 5 сарын дараа |
+| 2000-03-01T00:00:00.000Z | 2 сар | 2 сар | 2 сарын дараа |
+| 2000-02-01T00:00:00.000Z | ойролцоогоор 1 сар | ойролцоогоор 1 сар | ойролцоогоор 1 сарын дараа |
+| 2000-01-15T00:00:00.000Z | 14 өдөр | 14 өдөр | 14 өдрийн дараа |
+| 2000-01-02T00:00:00.000Z | 1 өдөр | 1 өдөр | 1 өдрийн дараа |
+| 2000-01-01T06:00:00.000Z | ойролцоогоор 6 цаг | ойролцоогоор 6 цаг | ойролцоогоор 6 цагийн дараа |
+| 2000-01-01T01:00:00.000Z | ойролцоогоор 1 цаг | ойролцоогоор 1 цаг | ойролцоогоор 1 цагийн дараа |
+| 2000-01-01T00:45:00.000Z | ойролцоогоор 1 цаг | ойролцоогоор 1 цаг | ойролцоогоор 1 цагийн дараа |
+| 2000-01-01T00:30:00.000Z | 30 минут | 30 минут | 30 минутын дараа |
+| 2000-01-01T00:15:00.000Z | 15 минут | 15 минут | 15 минутын дараа |
+| 2000-01-01T00:01:00.000Z | 1 минут | 1 минут | 1 минутын дараа |
+| 2000-01-01T00:00:25.000Z | минут хүрэхгүй | хагас минут | минут хүрэхгүй хугацааны дараа |
+| 2000-01-01T00:00:15.000Z | минут хүрэхгүй | 20 секунд хүрэхгүй | минут хүрэхгүй хугацааны дараа |
+| 2000-01-01T00:00:05.000Z | минут хүрэхгүй | 10 секунд хүрэхгүй | минут хүрэхгүй хугацааны дараа |
+| 2000-01-01T00:00:00.000Z | минут хүрэхгүй | 5 секунд хүрэхгүй | минут хүрэхгүй хугацааны өмнө |
+| 1999-12-31T23:59:55.000Z | минут хүрэхгүй | 10 секунд хүрэхгүй | минут хүрэхгүй хугацааны өмнө |
+| 1999-12-31T23:59:45.000Z | минут хүрэхгүй | 20 секунд хүрэхгүй | минут хүрэхгүй хугацааны өмнө |
+| 1999-12-31T23:59:35.000Z | минут хүрэхгүй | хагас минут | минут хүрэхгүй хугацааны өмнө |
+| 1999-12-31T23:59:00.000Z | 1 минут | 1 минут | 1 минутын өмнө |
+| 1999-12-31T23:45:00.000Z | 15 минут | 15 минут | 15 минутын өмнө |
+| 1999-12-31T23:30:00.000Z | 30 минут | 30 минут | 30 минутын өмнө |
+| 1999-12-31T23:15:00.000Z | ойролцоогоор 1 цаг | ойролцоогоор 1 цаг | ойролцоогоор 1 цагийн өмнө |
+| 1999-12-31T23:00:00.000Z | ойролцоогоор 1 цаг | ойролцоогоор 1 цаг | ойролцоогоор 1 цагийн өмнө |
+| 1999-12-31T18:00:00.000Z | ойролцоогоор 6 цаг | ойролцоогоор 6 цаг | ойролцоогоор 6 цагийн өмнө |
+| 1999-12-30T00:00:00.000Z | 2 өдөр | 2 өдөр | 2 өдрийн өмнө |
+| 1999-12-15T00:00:00.000Z | 17 өдөр | 17 өдөр | 17 өдрийн өмнө |
+| 1999-12-01T00:00:00.000Z | ойролцоогоор 1 сар | ойролцоогоор 1 сар | ойролцоогоор 1 сарын өмнө |
+| 1999-11-01T00:00:00.000Z | 2 сар | 2 сар | 2 сарын өмнө |
+| 1999-06-01T00:00:00.000Z | 7 сар | 7 сар | 7 сарын өмнө |
+| 1999-01-01T00:00:00.000Z | ойролцоогоор 1 жил | ойролцоогоор 1 жил | ойролцоогоор 1 жилийн өмнө |
+| 1998-12-01T00:00:00.000Z | ойролцоогоор 1 жил | ойролцоогоор 1 жил | ойролцоогоор 1 жилийн өмнө |
+| 1998-06-01T00:00:00.000Z | 1 жил гаран | 1 жил гаран | 1 жил гараны өмнө |
+| 1998-01-01T00:00:00.000Z | ойролцоогоор 2 жил | ойролцоогоор 2 жил | ойролцоогоор 2 жилийн өмнө |
+| 1997-01-01T00:00:00.000Z | ойролцоогоор 3 жил | ойролцоогоор 3 жил | ойролцоогоор 3 жилийн өмнө |
+| 1996-01-01T00:00:00.000Z | ойролцоогоор 4 жил | ойролцоогоор 4 жил | ойролцоогоор 4 жилийн өмнө |
+| 1995-01-01T00:00:00.000Z | ойролцоогоор 5 жил | ойролцоогоор 5 жил | ойролцоогоор 5 жилийн өмнө |
+| 1994-01-01T00:00:00.000Z | ойролцоогоор 6 жил | ойролцоогоор 6 жил | ойролцоогоор 6 жилийн өмнө |
+
+## `formatDistanceStrict`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `addSuffix: true` | With forced unit (i.e. `hour`) |
+| ------------------------ | --------- | ------------------ | ------------------------------ |
+| 2006-01-01T00:00:00.000Z | 6 жил | 6 жилийн дараа | 52608 цаг |
+| 2005-01-01T00:00:00.000Z | 5 жил | 5 жилийн дараа | 43848 цаг |
+| 2004-01-01T00:00:00.000Z | 4 жил | 4 жилийн дараа | 35064 цаг |
+| 2003-01-01T00:00:00.000Z | 3 жил | 3 жилийн дараа | 26304 цаг |
+| 2002-01-01T00:00:00.000Z | 2 жил | 2 жилийн дараа | 17544 цаг |
+| 2001-06-01T00:00:00.000Z | 1 жил | 1 жилийн дараа | 12408 цаг |
+| 2001-02-01T00:00:00.000Z | 1 жил | 1 жилийн дараа | 9528 цаг |
+| 2001-01-01T00:00:00.000Z | 1 жил | 1 жилийн дараа | 8784 цаг |
+| 2000-06-01T00:00:00.000Z | 5 сар | 5 сарын дараа | 3648 цаг |
+| 2000-03-01T00:00:00.000Z | 2 сар | 2 сарын дараа | 1440 цаг |
+| 2000-02-01T00:00:00.000Z | 1 сар | 1 сарын дараа | 744 цаг |
+| 2000-01-15T00:00:00.000Z | 14 өдөр | 14 өдрийн дараа | 336 цаг |
+| 2000-01-02T00:00:00.000Z | 1 өдөр | 1 өдрийн дараа | 24 цаг |
+| 2000-01-01T06:00:00.000Z | 6 цаг | 6 цагийн дараа | 6 цаг |
+| 2000-01-01T01:00:00.000Z | 1 цаг | 1 цагийн дараа | 1 цаг |
+| 2000-01-01T00:45:00.000Z | 45 минут | 45 минутын дараа | 1 цаг |
+| 2000-01-01T00:30:00.000Z | 30 минут | 30 минутын дараа | 1 цаг |
+| 2000-01-01T00:15:00.000Z | 15 минут | 15 минутын дараа | 0 цаг |
+| 2000-01-01T00:01:00.000Z | 1 минут | 1 минутын дараа | 0 цаг |
+| 2000-01-01T00:00:25.000Z | 25 секунд | 25 секундийн дараа | 0 цаг |
+| 2000-01-01T00:00:15.000Z | 15 секунд | 15 секундийн дараа | 0 цаг |
+| 2000-01-01T00:00:05.000Z | 5 секунд | 5 секундийн дараа | 0 цаг |
+| 2000-01-01T00:00:00.000Z | 0 секунд | 0 секундийн өмнө | 0 цаг |
+| 1999-12-31T23:59:55.000Z | 5 секунд | 5 секундийн өмнө | 0 цаг |
+| 1999-12-31T23:59:45.000Z | 15 секунд | 15 секундийн өмнө | 0 цаг |
+| 1999-12-31T23:59:35.000Z | 25 секунд | 25 секундийн өмнө | 0 цаг |
+| 1999-12-31T23:59:00.000Z | 1 минут | 1 минутын өмнө | 0 цаг |
+| 1999-12-31T23:45:00.000Z | 15 минут | 15 минутын өмнө | 0 цаг |
+| 1999-12-31T23:30:00.000Z | 30 минут | 30 минутын өмнө | 1 цаг |
+| 1999-12-31T23:15:00.000Z | 45 минут | 45 минутын өмнө | 1 цаг |
+| 1999-12-31T23:00:00.000Z | 1 цаг | 1 цагийн өмнө | 1 цаг |
+| 1999-12-31T18:00:00.000Z | 6 цаг | 6 цагийн өмнө | 6 цаг |
+| 1999-12-30T00:00:00.000Z | 2 өдөр | 2 өдрийн өмнө | 48 цаг |
+| 1999-12-15T00:00:00.000Z | 17 өдөр | 17 өдрийн өмнө | 408 цаг |
+| 1999-12-01T00:00:00.000Z | 1 сар | 1 сарын өмнө | 744 цаг |
+| 1999-11-01T00:00:00.000Z | 2 сар | 2 сарын өмнө | 1464 цаг |
+| 1999-06-01T00:00:00.000Z | 7 сар | 7 сарын өмнө | 5136 цаг |
+| 1999-01-01T00:00:00.000Z | 1 жил | 1 жилийн өмнө | 8760 цаг |
+| 1998-12-01T00:00:00.000Z | 1 жил | 1 жилийн өмнө | 9504 цаг |
+| 1998-06-01T00:00:00.000Z | 2 жил | 2 жилийн өмнө | 13896 цаг |
+| 1998-01-01T00:00:00.000Z | 2 жил | 2 жилийн өмнө | 17520 цаг |
+| 1997-01-01T00:00:00.000Z | 3 жил | 3 жилийн өмнө | 26280 цаг |
+| 1996-01-01T00:00:00.000Z | 4 жил | 4 жилийн өмнө | 35064 цаг |
+| 1995-01-01T00:00:00.000Z | 5 жил | 5 жилийн өмнө | 43824 цаг |
+| 1994-01-01T00:00:00.000Z | 6 жил | 6 жилийн өмнө | 52584 цаг |
+
+## `formatRelative`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result |
+| ------------------------ | --------------------------------- |
+| 2000-01-10T00:00:00.000Z | 2000.01.10 |
+| 2000-01-05T00:00:00.000Z | ирэх лхагва гарагийн 0:00 цагт |
+| 2000-01-02T00:00:00.000Z | маргааш 0:00 цагт |
+| 2000-01-01T00:00:00.000Z | өнөөдөр 0:00 цагт |
+| 1999-12-31T00:00:00.000Z | өчигдөр 0:00 цагт |
+| 1999-12-27T00:00:00.000Z | өнгөрсөн даваа гарагийн 0:00 цагт |
+| 1999-12-21T00:00:00.000Z | 1999.12.21 |
diff --git a/date-fns/src/locale/ms/_lib/formatDistance/index.js b/date-fns/src/locale/ms/_lib/formatDistance/index.js
new file mode 100644
index 0000000..f3e90e3
--- /dev/null
+++ b/date-fns/src/locale/ms/_lib/formatDistance/index.js
@@ -0,0 +1,101 @@
+var formatDistanceLocale = {
+ lessThanXSeconds: {
+ one: 'kurang dari 1 saat',
+ other: 'kurang dari {{count}} saat'
+ },
+
+ xSeconds: {
+ one: '1 saat',
+ other: '{{count}} saat'
+ },
+
+ halfAMinute: 'setengah minit',
+
+ lessThanXMinutes: {
+ one: 'kurang dari 1 minit',
+ other: 'kurang dari {{count}} minit'
+ },
+
+ xMinutes: {
+ one: '1 minit',
+ other: '{{count}} minit'
+ },
+
+ aboutXHours: {
+ one: 'sekitar 1 jam',
+ other: 'sekitar {{count}} jam'
+ },
+
+ xHours: {
+ one: '1 jam',
+ other: '{{count}} jam'
+ },
+
+ xDays: {
+ one: '1 hari',
+ other: '{{count}} hari'
+ },
+
+ aboutXWeeks: {
+ one: 'sekitar 1 minggu',
+ other: 'sekitar {{count}} minggu'
+ },
+
+ xWeeks: {
+ one: '1 minggu',
+ other: '{{count}} minggu'
+ },
+
+ aboutXMonths: {
+ one: 'sekitar 1 bulan',
+ other: 'sekitar {{count}} bulan'
+ },
+
+ xMonths: {
+ one: '1 bulan',
+ other: '{{count}} bulan'
+ },
+
+ aboutXYears: {
+ one: 'sekitar 1 tahun',
+ other: 'sekitar {{count}} tahun'
+ },
+
+ xYears: {
+ one: '1 tahun',
+ other: '{{count}} tahun'
+ },
+
+ overXYears: {
+ one: 'lebih dari 1 tahun',
+ other: 'lebih dari {{count}} tahun'
+ },
+
+ almostXYears: {
+ one: 'hampir 1 tahun',
+ other: 'hampir {{count}} tahun'
+ }
+}
+
+export default function formatDistance(token, count, options) {
+ options = options || {}
+
+ var result
+ if (typeof formatDistanceLocale[token] === 'string') {
+ result = formatDistanceLocale[token]
+ } else if (count === 1) {
+ result = formatDistanceLocale[token].one
+ } else {
+ result = formatDistanceLocale[token].other.replace('{{count}}', count)
+ }
+
+ if (options.addSuffix) {
+ if (options.comparison > 0) {
+ return 'dalam masa ' + result
+ } else {
+ return result + ' yang lalu'
+ }
+ }
+
+ return result
+}
diff --git a/date-fns/src/locale/ms/_lib/formatLong/index.js b/date-fns/src/locale/ms/_lib/formatLong/index.js
new file mode 100644
index 0000000..d8ea107
--- /dev/null
+++ b/date-fns/src/locale/ms/_lib/formatLong/index.js
@@ -0,0 +1,41 @@
+import buildFormatLongFn from '../../../_lib/buildFormatLongFn/index'
+
+var dateFormats = {
+ full: 'EEEE, d MMMM yyyy',
+ long: 'd MMMM yyyy',
+ medium: 'd MMM yyyy',
+ short: 'd/M/yyyy'
+}
+
+var timeFormats = {
+ full: 'HH.mm.ss',
+ long: 'HH.mm.ss',
+ medium: 'HH.mm',
+ short: 'HH.mm'
+}
+
+var dateTimeFormats = {
+ full: "{{date}} 'pukul' {{time}}",
+ long: "{{date}} 'pukul' {{time}}",
+ medium: '{{date}}, {{time}}',
+ short: '{{date}}, {{time}}'
+}
+
+var formatLong = {
+ date: buildFormatLongFn({
+ formats: dateFormats,
+ defaultWidth: 'full'
+ }),
+
+ time: buildFormatLongFn({
+ formats: timeFormats,
+ defaultWidth: 'full'
+ }),
+
+ dateTime: buildFormatLongFn({
+ formats: dateTimeFormats,
+ defaultWidth: 'full'
+ })
+}
+
+export default formatLong
diff --git a/date-fns/src/locale/ms/_lib/formatRelative/index.js b/date-fns/src/locale/ms/_lib/formatRelative/index.js
new file mode 100644
index 0000000..60b6541
--- /dev/null
+++ b/date-fns/src/locale/ms/_lib/formatRelative/index.js
@@ -0,0 +1,12 @@
+var formatRelativeLocale = {
+ lastWeek: "eeee 'lepas pada jam' p",
+ yesterday: "'Semalam pada jam' p",
+ today: "'Hari ini pada jam' p",
+ tomorrow: "'Esok pada jam' p",
+ nextWeek: "eeee 'pada jam' p",
+ other: 'P'
+}
+
+export default function formatRelative(token, _date, _baseDate, _options) {
+ return formatRelativeLocale[token]
+}
diff --git a/date-fns/src/locale/ms/_lib/localize/index.js b/date-fns/src/locale/ms/_lib/localize/index.js
new file mode 100644
index 0000000..038457a
--- /dev/null
+++ b/date-fns/src/locale/ms/_lib/localize/index.js
@@ -0,0 +1,169 @@
+import buildLocalizeFn from '../../../_lib/buildLocalizeFn/index'
+
+// Most data for localization are taken from this page
+// https://www.unicode.org/cldr/charts/32/summary/ms.html
+var eraValues = {
+ narrow: ['SM', 'M'],
+ abbreviated: ['SM', 'M'],
+ wide: ['Sebelum Masihi', 'Masihi']
+}
+
+var quarterValues = {
+ narrow: ['1', '2', '3', '4'],
+ abbreviated: ['S1', 'S2', 'S3', 'S4'],
+ wide: ['Suku pertama', 'Suku kedua', 'Suku ketiga', 'Suku keempat']
+}
+
+// Note: in Malay, the names of days of the week and months are capitalized.
+// If you are making a new locale based on this one, check if the same is true for the language you're working on.
+// Generally, formatted dates should look like they are in the middle of a sentence,
+// e.g. in Spanish language the weekdays and months should be in the lowercase.
+var monthValues = {
+ narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'O', 'S', 'O', 'N', 'D'],
+ abbreviated: [
+ 'Jan',
+ 'Feb',
+ 'Mac',
+ 'Apr',
+ 'Mei',
+ 'Jun',
+ 'Jul',
+ 'Ogo',
+ 'Sep',
+ 'Okt',
+ 'Nov',
+ 'Dis'
+ ],
+ wide: [
+ 'Januari',
+ 'Februari',
+ 'Mac',
+ 'April',
+ 'Mei',
+ 'Jun',
+ 'Julai',
+ 'Ogos',
+ 'September',
+ 'Oktober',
+ 'November',
+ 'Disember'
+ ]
+}
+
+var dayValues = {
+ narrow: ['A', 'I', 'S', 'R', 'K', 'J', 'S'],
+ short: ['Ahd', 'Isn', 'Sel', 'Rab', 'Kha', 'Jum', 'Sab'],
+ abbreviated: ['Ahd', 'Isn', 'Sel', 'Rab', 'Kha', 'Jum', 'Sab'],
+ wide: ['Ahad', 'Isnin', 'Selasa', 'Rabu', 'Khamis', 'Jumaat', 'Sabtu']
+}
+
+var dayPeriodValues = {
+ narrow: {
+ am: 'am',
+ pm: 'pm',
+ midnight: 'tgh malam',
+ noon: 'tgh hari',
+ morning: 'pagi',
+ afternoon: 'tengah hari',
+ evening: 'petang',
+ night: 'malam'
+ },
+ abbreviated: {
+ am: 'AM',
+ pm: 'PM',
+ midnight: 'tengah malam',
+ noon: 'tengah hari',
+ morning: 'pagi',
+ afternoon: 'tengah hari',
+ evening: 'petang',
+ night: 'malam'
+ },
+ wide: {
+ am: 'a.m.',
+ pm: 'p.m.',
+ midnight: 'tengah malam',
+ noon: 'tengah hari',
+ morning: 'pagi',
+ afternoon: 'tengah hari',
+ evening: 'petang',
+ night: 'malam'
+ }
+}
+var formattingDayPeriodValues = {
+ narrow: {
+ am: 'am',
+ pm: 'pm',
+ midnight: 'tengah malam',
+ noon: 'tengah hari',
+ morning: 'pagi',
+ afternoon: 'tengah hari',
+ evening: 'petang',
+ night: 'malam'
+ },
+ abbreviated: {
+ am: 'AM',
+ pm: 'PM',
+ midnight: 'tengah malam',
+ noon: 'tengah hari',
+ morning: 'pagi',
+ afternoon: 'tengah hari',
+ evening: 'petang',
+ night: 'malam'
+ },
+ wide: {
+ am: 'a.m.',
+ pm: 'p.m.',
+ midnight: 'tengah malam',
+ noon: 'tengah hari',
+ morning: 'pagi',
+ afternoon: 'tengah hari',
+ evening: 'petang',
+ night: 'malam'
+ }
+}
+
+function ordinalNumber(dirtyNumber, _dirtyOptions) {
+ var number = Number(dirtyNumber)
+
+ // Can't use "pertama", "kedua" because can't be parsed
+ switch (number) {
+ default:
+ return 'ke-' + number
+ }
+}
+
+var localize = {
+ ordinalNumber: ordinalNumber,
+
+ era: buildLocalizeFn({
+ values: eraValues,
+ defaultWidth: 'wide'
+ }),
+
+ quarter: buildLocalizeFn({
+ values: quarterValues,
+ defaultWidth: 'wide',
+ argumentCallback: function(quarter) {
+ return Number(quarter) - 1
+ }
+ }),
+
+ month: buildLocalizeFn({
+ values: monthValues,
+ defaultWidth: 'wide'
+ }),
+
+ day: buildLocalizeFn({
+ values: dayValues,
+ defaultWidth: 'wide'
+ }),
+
+ dayPeriod: buildLocalizeFn({
+ values: dayPeriodValues,
+ defaultWidth: 'wide',
+ formattingValues: formattingDayPeriodValues,
+ defaultFormattingWidth: 'wide'
+ })
+}
+
+export default localize
diff --git a/date-fns/src/locale/ms/_lib/match/index.js b/date-fns/src/locale/ms/_lib/match/index.js
new file mode 100644
index 0000000..650e1de
--- /dev/null
+++ b/date-fns/src/locale/ms/_lib/match/index.js
@@ -0,0 +1,137 @@
+import buildMatchFn from '../../../_lib/buildMatchFn/index'
+import buildMatchPatternFn from '../../../_lib/buildMatchPatternFn/index'
+
+var matchOrdinalNumberPattern = /^ke-(\d+)?/i
+var parseOrdinalNumberPattern = /petama|\d+/i
+
+var matchEraPatterns = {
+ narrow: /^(sm|m)/i,
+ abbreviated: /^(s\.?\s?m\.?|m\.?)/i,
+ wide: /^(sebelum masihi|masihi)/i
+}
+var parseEraPatterns = {
+ any: [/^s/i, /^(m)/i]
+}
+
+var matchQuarterPatterns = {
+ narrow: /^[1234]/i,
+ abbreviated: /^S[1234]/i,
+ wide: /Suku (pertama|kedua|ketiga|keempat)/i
+}
+var parseQuarterPatterns = {
+ any: [/pertama|1/i, /kedua|2/i, /ketiga|3/i, /keempat|4/i]
+}
+
+var matchMonthPatterns = {
+ narrow: /^[jfmasond]/i,
+ abbreviated: /^(jan|feb|mac|apr|mei|jun|jul|ogo|sep|okt|nov|dis)/i,
+ wide: /^(januari|februari|mac|april|mei|jun|julai|ogos|september|oktober|november|disember)/i
+}
+var parseMonthPatterns = {
+ narrow: [
+ /^j/i,
+ /^f/i,
+ /^m/i,
+ /^a/i,
+ /^m/i,
+ /^j/i,
+ /^j/i,
+ /^o/i,
+ /^s/i,
+ /^o/i,
+ /^n/i,
+ /^d/i
+ ],
+ any: [
+ /^ja/i,
+ /^f/i,
+ /^ma/i,
+ /^ap/i,
+ /^me/i,
+ /^jun/i,
+ /^jul/i,
+ /^og/i,
+ /^s/i,
+ /^ok/i,
+ /^n/i,
+ /^d/i
+ ]
+}
+
+var matchDayPatterns = {
+ narrow: /^[aisrkj]/i,
+ short: /^(ahd|isn|sel|rab|kha|jum|sab)/i,
+ abbreviated: /^(ahd|isn|sel|rab|kha|jum|sab)/i,
+ wide: /^(ahad|isnin|selasa|rabu|khamis|jumaat|sabtu)/i
+}
+var parseDayPatterns = {
+ narrow: [/^a/i, /^i/i, /^s/i, /^r/i, /^k/i, /^j/i, /^s/i],
+ any: [/^a/i, /^i/i, /^se/i, /^r/i, /^k/i, /^j/i, /^sa/i]
+}
+
+var matchDayPeriodPatterns = {
+ narrow: /^(am|pm|tengah malam|tengah hari|pagi|petang|malam)/i,
+ any: /^([ap]\.?\s?m\.?|tengah malam|tengah hari|pagi|petang|malam)/i
+}
+var parseDayPeriodPatterns = {
+ any: {
+ am: /^a/i,
+ pm: /^pm/i,
+ midnight: /^tengah m/i,
+ noon: /^tengah h/i,
+ morning: /pa/i,
+ afternoon: /tengah h/i,
+ evening: /pe/i,
+ night: /m/i
+ }
+}
+
+var match = {
+ ordinalNumber: buildMatchPatternFn({
+ matchPattern: matchOrdinalNumberPattern,
+ parsePattern: parseOrdinalNumberPattern,
+ valueCallback: function(value) {
+ return parseInt(value, 10)
+ }
+ }),
+
+ era: buildMatchFn({
+ matchPatterns: matchEraPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseEraPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ quarter: buildMatchFn({
+ matchPatterns: matchQuarterPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseQuarterPatterns,
+ defaultParseWidth: 'any',
+ valueCallback: function(index) {
+ return index + 1
+ }
+ }),
+
+ month: buildMatchFn({
+ matchPatterns: matchMonthPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseMonthPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ day: buildMatchFn({
+ matchPatterns: matchDayPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseDayPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ dayPeriod: buildMatchFn({
+ matchPatterns: matchDayPeriodPatterns,
+ defaultMatchWidth: 'any',
+ parsePatterns: parseDayPeriodPatterns,
+ defaultParseWidth: 'any'
+ })
+}
+
+export default match
diff --git a/date-fns/src/locale/ms/index.d.ts b/date-fns/src/locale/ms/index.d.ts
new file mode 100644
index 0000000..d7450bd
--- /dev/null
+++ b/date-fns/src/locale/ms/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { ms } from 'date-fns/locale'
+export default ms
diff --git a/date-fns/src/locale/ms/index.js b/date-fns/src/locale/ms/index.js
new file mode 100644
index 0000000..a143645
--- /dev/null
+++ b/date-fns/src/locale/ms/index.js
@@ -0,0 +1,28 @@
+import formatDistance from './_lib/formatDistance/index'
+import formatLong from './_lib/formatLong/index'
+import formatRelative from './_lib/formatRelative/index'
+import localize from './_lib/localize/index'
+import match from './_lib/match/index'
+
+/**
+ * @type {Locale}
+ * @category Locales
+ * @summary Malay locale.
+ * @language Malay
+ * @iso-639-2 msa
+ * @author Ruban Selvarajah [@Zyten]{@link https://github.com/Zyten}
+ */
+var locale = {
+ code: 'ms',
+ formatDistance: formatDistance,
+ formatLong: formatLong,
+ formatRelative: formatRelative,
+ localize: localize,
+ match: match,
+ options: {
+ weekStartsOn: 1 /* Monday */,
+ firstWeekContainsDate: 1
+ }
+}
+
+export default locale
diff --git a/date-fns/src/locale/ms/index.js.flow b/date-fns/src/locale/ms/index.js.flow
new file mode 100644
index 0000000..b9dfe66
--- /dev/null
+++ b/date-fns/src/locale/ms/index.js.flow
@@ -0,0 +1,35 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+declare module.exports: Locale
diff --git a/date-fns/src/locale/ms/snapshot.md b/date-fns/src/locale/ms/snapshot.md
new file mode 100644
index 0000000..dc85b8f
--- /dev/null
+++ b/date-fns/src/locale/ms/snapshot.md
@@ -0,0 +1,304 @@
+# Malay (ms) locale
+
+## `format` and `parse`
+
+| Title | Token string | Date | `format` result | `parse` result |
+| ------------------------------- | ------------ | ------------------------ | ------------------------------------- | ------------------------ |
+| Calendar year | yo | 1987-02-11T12:13:14.015Z | ke-1987 | 1987-01-01T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | ke-5 | 0005-01-01T00:00:00.000Z |
+| Local week-numbering year | Yo | 1987-02-11T12:13:14.015Z | ke-1987 | 1986-12-29T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | ke-5 | 0004-12-27T00:00:00.000Z |
+| Quarter (formatting) | Qo | 2019-01-01T12:13:14.015Z | ke-1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | ke-2 | 2019-04-01T00:00:00.000Z |
+| | QQQ | 2019-01-01T12:13:14.015Z | S1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | S2 | 2019-04-01T00:00:00.000Z |
+| | QQQQ | 2019-01-01T12:13:14.015Z | Suku pertama | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | Suku kedua | 2019-04-01T00:00:00.000Z |
+| | QQQQQ | 2019-01-01T12:13:14.015Z | 1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2 | 2019-04-01T00:00:00.000Z |
+| Quarter (stand-alone) | qo | 2019-01-01T12:13:14.015Z | ke-1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | ke-2 | 2019-04-01T00:00:00.000Z |
+| | qqq | 2019-01-01T12:13:14.015Z | S1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | S2 | 2019-04-01T00:00:00.000Z |
+| | qqqq | 2019-01-01T12:13:14.015Z | Suku pertama | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | Suku kedua | 2019-04-01T00:00:00.000Z |
+| Month (formatting) | Mo | 2019-02-11T12:13:14.015Z | ke-2 | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | ke-7 | 2019-07-01T00:00:00.000Z |
+| | MMM | 2019-02-11T12:13:14.015Z | Feb | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | Jul | 2019-07-01T00:00:00.000Z |
+| | MMMM | 2019-02-11T12:13:14.015Z | Februari | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | Julai | 2019-07-01T00:00:00.000Z |
+| | MMMMM | 2019-02-11T12:13:14.015Z | F | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | J | 2019-01-01T00:00:00.000Z |
+| Month (stand-alone) | Lo | 2019-02-11T12:13:14.015Z | ke-2 | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | ke-7 | 2019-07-01T00:00:00.000Z |
+| | LLL | 2019-02-11T12:13:14.015Z | Feb | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | Jul | 2019-07-01T00:00:00.000Z |
+| | LLLL | 2019-02-11T12:13:14.015Z | Februari | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | Julai | 2019-07-01T00:00:00.000Z |
+| | LLLLL | 2019-02-11T12:13:14.015Z | F | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | J | 2019-01-01T00:00:00.000Z |
+| Local week of year | wo | 2019-01-01T12:13:14.015Z | ke-1 | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | ke-48 | 2019-11-25T00:00:00.000Z |
+| ISO week of year | Io | 2019-01-01T12:13:14.015Z | ke-1 | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | ke-48 | 2019-11-25T00:00:00.000Z |
+| Day of month | do | 2019-02-11T12:13:14.015Z | ke-11 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-28T12:13:14.015Z | ke-28 | 2019-02-28T00:00:00.000Z |
+| Day of year | Do | 2019-02-11T12:13:14.015Z | ke-42 | 2019-02-11T00:00:00.000Z |
+| | | 2019-12-31T12:13:14.015Z | ke-365 | 2019-12-31T00:00:00.000Z |
+| Day of week (formatting) | E | 2019-02-11T12:13:14.015Z | Isn | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Jum | 2019-02-15T00:00:00.000Z |
+| | EE | 2019-02-11T12:13:14.015Z | Isn | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Jum | 2019-02-15T00:00:00.000Z |
+| | EEE | 2019-02-11T12:13:14.015Z | Isn | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Jum | 2019-02-15T00:00:00.000Z |
+| | EEEE | 2019-02-11T12:13:14.015Z | Isnin | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Jumaat | 2019-02-15T00:00:00.000Z |
+| | EEEEE | 2019-02-11T12:13:14.015Z | I | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | J | 2019-02-15T00:00:00.000Z |
+| | EEEEEE | 2019-02-11T12:13:14.015Z | Isn | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Jum | 2019-02-15T00:00:00.000Z |
+| ISO day of week (formatting) | io | 2019-02-11T12:13:14.015Z | ke-1 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ke-5 | 2019-02-15T00:00:00.000Z |
+| | iii | 2019-02-11T12:13:14.015Z | Isn | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Jum | 2019-02-15T00:00:00.000Z |
+| | iiii | 2019-02-11T12:13:14.015Z | Isnin | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Jumaat | 2019-02-15T00:00:00.000Z |
+| | iiiii | 2019-02-11T12:13:14.015Z | I | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | J | 2019-02-15T00:00:00.000Z |
+| | iiiiii | 2019-02-11T12:13:14.015Z | Isn | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Jum | 2019-02-15T00:00:00.000Z |
+| Local day of week (formatting) | eo | 2019-02-11T12:13:14.015Z | ke-1 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ke-5 | 2019-02-15T00:00:00.000Z |
+| | eee | 2019-02-11T12:13:14.015Z | Isn | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Jum | 2019-02-15T00:00:00.000Z |
+| | eeee | 2019-02-11T12:13:14.015Z | Isnin | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Jumaat | 2019-02-15T00:00:00.000Z |
+| | eeeee | 2019-02-11T12:13:14.015Z | I | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | J | 2019-02-15T00:00:00.000Z |
+| | eeeeee | 2019-02-11T12:13:14.015Z | Isn | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Jum | 2019-02-15T00:00:00.000Z |
+| Local day of week (stand-alone) | co | 2019-02-11T12:13:14.015Z | ke-1 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ke-5 | 2019-02-15T00:00:00.000Z |
+| | ccc | 2019-02-11T12:13:14.015Z | Isn | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Jum | 2019-02-15T00:00:00.000Z |
+| | cccc | 2019-02-11T12:13:14.015Z | Isnin | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Jumaat | 2019-02-15T00:00:00.000Z |
+| | ccccc | 2019-02-11T12:13:14.015Z | I | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | J | 2019-02-15T00:00:00.000Z |
+| | cccccc | 2019-02-11T12:13:14.015Z | Isn | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Jum | 2019-02-15T00:00:00.000Z |
+| AM, PM | a | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | aa | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | aaa | 2019-02-11T11:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | aaaa | 2019-02-11T11:13:14.015Z | a.m. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | p.m. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | p.m. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | a.m. | 2019-02-11T00:00:00.000Z |
+| | aaaaa | 2019-02-11T11:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| AM, PM, noon, midnight | b | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | bb | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | bbb | 2019-02-11T11:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | bbbb | 2019-02-11T11:13:14.015Z | a.m. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | p.m. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | p.m. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | a.m. | 2019-02-11T00:00:00.000Z |
+| | bbbbb | 2019-02-11T11:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| Flexible day period | B | 2019-02-11T11:13:14.015Z | pagi | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | tengah hari | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | petang | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | malam | 2019-02-11T00:00:00.000Z |
+| | BB | 2019-02-11T11:13:14.015Z | pagi | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | tengah hari | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | petang | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | malam | 2019-02-11T00:00:00.000Z |
+| | BBB | 2019-02-11T11:13:14.015Z | pagi | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | tengah hari | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | petang | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | malam | 2019-02-11T00:00:00.000Z |
+| | BBBB | 2019-02-11T11:13:14.015Z | pagi | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | tengah hari | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | petang | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | malam | 2019-02-11T00:00:00.000Z |
+| | BBBBB | 2019-02-11T11:13:14.015Z | pagi | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | tengah hari | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | petang | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | malam | 2019-02-11T00:00:00.000Z |
+| Hour [1-12] | ho | 2019-02-11T11:13:14.015Z | ke-11 | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | ke-11 | 2019-02-11T23:00:00.000Z |
+| Hour [0-23] | Ho | 2019-02-11T11:13:14.015Z | ke-11 | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | ke-23 | 2019-02-11T23:00:00.000Z |
+| Hour [0-11] | Ko | 2019-02-11T11:13:14.015Z | ke-11 | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | ke-11 | 2019-02-11T23:00:00.000Z |
+| Hour [1-24] | ko | 2019-02-11T11:13:14.015Z | ke-11 | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | ke-23 | 2019-02-11T23:00:00.000Z |
+| Minute | mo | 2019-01-01T12:01:14.015Z | ke-1 | 2019-01-01T12:01:00.000Z |
+| | | 2019-04-01T12:55:14.015Z | ke-55 | 2019-04-01T12:55:00.000Z |
+| Second | so | 2019-01-01T12:13:01.015Z | ke-1 | 2019-01-01T12:13:01.000Z |
+| | | 2019-04-01T12:13:55.015Z | ke-55 | 2019-04-01T12:13:55.000Z |
+| Long localized date | P | 1987-02-11T12:13:14.015Z | 11/2/1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29/5/1453 | 1453-05-29T00:00:00.000Z |
+| | PP | 1987-02-11T12:13:14.015Z | 11 Feb 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 Mei 1453 | 1453-05-29T00:00:00.000Z |
+| | PPP | 1987-02-11T12:13:14.015Z | 11 Februari 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 Mei 1453 | 1453-05-29T00:00:00.000Z |
+| | PPPP | 1987-02-11T12:13:14.015Z | Rabu, 11 Februari 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | Ahad, 29 Mei 1453 | 1453-05-29T00:00:00.000Z |
+| Long localized time | p | 1987-02-11T12:13:14.015Z | 12.13 | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 23.59 | 1453-05-29T23:59:00.000Z |
+| | pp | 1987-02-11T12:13:14.015Z | 12.13 | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 23.59 | 1453-05-29T23:59:00.000Z |
+| | ppp | 1987-02-11T12:13:14.015Z | 12.13.14 | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 23.59.59 | 1453-05-29T23:59:59.000Z |
+| | pppp | 1987-02-11T12:13:14.015Z | 12.13.14 | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 23.59.59 | 1453-05-29T23:59:59.000Z |
+| Combination of date and time | Pp | 1987-02-11T12:13:14.015Z | 11/2/1987, 12.13 | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29/5/1453, 23.59 | 1453-05-29T23:59:00.000Z |
+| | PPpp | 1987-02-11T12:13:14.015Z | 11 Feb 1987, 12.13 | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 Mei 1453, 23.59 | 1453-05-29T23:59:00.000Z |
+| | PPPppp | 1987-02-11T12:13:14.015Z | 11 Februari 1987 pukul 12.13.14 | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 Mei 1453 pukul 23.59.59 | 1453-05-29T23:59:59.000Z |
+| | PPPPpppp | 1987-02-11T12:13:14.015Z | Rabu, 11 Februari 1987 pukul 12.13.14 | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | Ahad, 29 Mei 1453 pukul 23.59.59 | 1453-05-29T23:59:59.000Z |
+
+## `formatDistance`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `includeSeconds: true` | `addSuffix: true` |
+| ------------------------ | ------------------- | ---------------------- | ------------------------------ |
+| 2006-01-01T00:00:00.000Z | sekitar 6 tahun | sekitar 6 tahun | dalam masa sekitar 6 tahun |
+| 2005-01-01T00:00:00.000Z | sekitar 5 tahun | sekitar 5 tahun | dalam masa sekitar 5 tahun |
+| 2004-01-01T00:00:00.000Z | sekitar 4 tahun | sekitar 4 tahun | dalam masa sekitar 4 tahun |
+| 2003-01-01T00:00:00.000Z | sekitar 3 tahun | sekitar 3 tahun | dalam masa sekitar 3 tahun |
+| 2002-01-01T00:00:00.000Z | sekitar 2 tahun | sekitar 2 tahun | dalam masa sekitar 2 tahun |
+| 2001-06-01T00:00:00.000Z | lebih dari 1 tahun | lebih dari 1 tahun | dalam masa lebih dari 1 tahun |
+| 2001-02-01T00:00:00.000Z | sekitar 1 tahun | sekitar 1 tahun | dalam masa sekitar 1 tahun |
+| 2001-01-01T00:00:00.000Z | sekitar 1 tahun | sekitar 1 tahun | dalam masa sekitar 1 tahun |
+| 2000-06-01T00:00:00.000Z | 5 bulan | 5 bulan | dalam masa 5 bulan |
+| 2000-03-01T00:00:00.000Z | 2 bulan | 2 bulan | dalam masa 2 bulan |
+| 2000-02-01T00:00:00.000Z | sekitar 1 bulan | sekitar 1 bulan | dalam masa sekitar 1 bulan |
+| 2000-01-15T00:00:00.000Z | 14 hari | 14 hari | dalam masa 14 hari |
+| 2000-01-02T00:00:00.000Z | 1 hari | 1 hari | dalam masa 1 hari |
+| 2000-01-01T06:00:00.000Z | sekitar 6 jam | sekitar 6 jam | dalam masa sekitar 6 jam |
+| 2000-01-01T01:00:00.000Z | sekitar 1 jam | sekitar 1 jam | dalam masa sekitar 1 jam |
+| 2000-01-01T00:45:00.000Z | sekitar 1 jam | sekitar 1 jam | dalam masa sekitar 1 jam |
+| 2000-01-01T00:30:00.000Z | 30 minit | 30 minit | dalam masa 30 minit |
+| 2000-01-01T00:15:00.000Z | 15 minit | 15 minit | dalam masa 15 minit |
+| 2000-01-01T00:01:00.000Z | 1 minit | 1 minit | dalam masa 1 minit |
+| 2000-01-01T00:00:25.000Z | kurang dari 1 minit | setengah minit | dalam masa kurang dari 1 minit |
+| 2000-01-01T00:00:15.000Z | kurang dari 1 minit | kurang dari 20 saat | dalam masa kurang dari 1 minit |
+| 2000-01-01T00:00:05.000Z | kurang dari 1 minit | kurang dari 10 saat | dalam masa kurang dari 1 minit |
+| 2000-01-01T00:00:00.000Z | kurang dari 1 minit | kurang dari 5 saat | kurang dari 1 minit yang lalu |
+| 1999-12-31T23:59:55.000Z | kurang dari 1 minit | kurang dari 10 saat | kurang dari 1 minit yang lalu |
+| 1999-12-31T23:59:45.000Z | kurang dari 1 minit | kurang dari 20 saat | kurang dari 1 minit yang lalu |
+| 1999-12-31T23:59:35.000Z | kurang dari 1 minit | setengah minit | kurang dari 1 minit yang lalu |
+| 1999-12-31T23:59:00.000Z | 1 minit | 1 minit | 1 minit yang lalu |
+| 1999-12-31T23:45:00.000Z | 15 minit | 15 minit | 15 minit yang lalu |
+| 1999-12-31T23:30:00.000Z | 30 minit | 30 minit | 30 minit yang lalu |
+| 1999-12-31T23:15:00.000Z | sekitar 1 jam | sekitar 1 jam | sekitar 1 jam yang lalu |
+| 1999-12-31T23:00:00.000Z | sekitar 1 jam | sekitar 1 jam | sekitar 1 jam yang lalu |
+| 1999-12-31T18:00:00.000Z | sekitar 6 jam | sekitar 6 jam | sekitar 6 jam yang lalu |
+| 1999-12-30T00:00:00.000Z | 2 hari | 2 hari | 2 hari yang lalu |
+| 1999-12-15T00:00:00.000Z | 17 hari | 17 hari | 17 hari yang lalu |
+| 1999-12-01T00:00:00.000Z | sekitar 1 bulan | sekitar 1 bulan | sekitar 1 bulan yang lalu |
+| 1999-11-01T00:00:00.000Z | 2 bulan | 2 bulan | 2 bulan yang lalu |
+| 1999-06-01T00:00:00.000Z | 7 bulan | 7 bulan | 7 bulan yang lalu |
+| 1999-01-01T00:00:00.000Z | sekitar 1 tahun | sekitar 1 tahun | sekitar 1 tahun yang lalu |
+| 1998-12-01T00:00:00.000Z | sekitar 1 tahun | sekitar 1 tahun | sekitar 1 tahun yang lalu |
+| 1998-06-01T00:00:00.000Z | lebih dari 1 tahun | lebih dari 1 tahun | lebih dari 1 tahun yang lalu |
+| 1998-01-01T00:00:00.000Z | sekitar 2 tahun | sekitar 2 tahun | sekitar 2 tahun yang lalu |
+| 1997-01-01T00:00:00.000Z | sekitar 3 tahun | sekitar 3 tahun | sekitar 3 tahun yang lalu |
+| 1996-01-01T00:00:00.000Z | sekitar 4 tahun | sekitar 4 tahun | sekitar 4 tahun yang lalu |
+| 1995-01-01T00:00:00.000Z | sekitar 5 tahun | sekitar 5 tahun | sekitar 5 tahun yang lalu |
+| 1994-01-01T00:00:00.000Z | sekitar 6 tahun | sekitar 6 tahun | sekitar 6 tahun yang lalu |
+
+## `formatDistanceStrict`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `addSuffix: true` | With forced unit (i.e. `hour`) |
+| ------------------------ | -------- | ------------------- | ------------------------------ |
+| 2006-01-01T00:00:00.000Z | 6 tahun | dalam masa 6 tahun | 52608 jam |
+| 2005-01-01T00:00:00.000Z | 5 tahun | dalam masa 5 tahun | 43848 jam |
+| 2004-01-01T00:00:00.000Z | 4 tahun | dalam masa 4 tahun | 35064 jam |
+| 2003-01-01T00:00:00.000Z | 3 tahun | dalam masa 3 tahun | 26304 jam |
+| 2002-01-01T00:00:00.000Z | 2 tahun | dalam masa 2 tahun | 17544 jam |
+| 2001-06-01T00:00:00.000Z | 1 tahun | dalam masa 1 tahun | 12408 jam |
+| 2001-02-01T00:00:00.000Z | 1 tahun | dalam masa 1 tahun | 9528 jam |
+| 2001-01-01T00:00:00.000Z | 1 tahun | dalam masa 1 tahun | 8784 jam |
+| 2000-06-01T00:00:00.000Z | 5 bulan | dalam masa 5 bulan | 3648 jam |
+| 2000-03-01T00:00:00.000Z | 2 bulan | dalam masa 2 bulan | 1440 jam |
+| 2000-02-01T00:00:00.000Z | 1 bulan | dalam masa 1 bulan | 744 jam |
+| 2000-01-15T00:00:00.000Z | 14 hari | dalam masa 14 hari | 336 jam |
+| 2000-01-02T00:00:00.000Z | 1 hari | dalam masa 1 hari | 24 jam |
+| 2000-01-01T06:00:00.000Z | 6 jam | dalam masa 6 jam | 6 jam |
+| 2000-01-01T01:00:00.000Z | 1 jam | dalam masa 1 jam | 1 jam |
+| 2000-01-01T00:45:00.000Z | 45 minit | dalam masa 45 minit | 1 jam |
+| 2000-01-01T00:30:00.000Z | 30 minit | dalam masa 30 minit | 1 jam |
+| 2000-01-01T00:15:00.000Z | 15 minit | dalam masa 15 minit | 0 jam |
+| 2000-01-01T00:01:00.000Z | 1 minit | dalam masa 1 minit | 0 jam |
+| 2000-01-01T00:00:25.000Z | 25 saat | dalam masa 25 saat | 0 jam |
+| 2000-01-01T00:00:15.000Z | 15 saat | dalam masa 15 saat | 0 jam |
+| 2000-01-01T00:00:05.000Z | 5 saat | dalam masa 5 saat | 0 jam |
+| 2000-01-01T00:00:00.000Z | 0 saat | 0 saat yang lalu | 0 jam |
+| 1999-12-31T23:59:55.000Z | 5 saat | 5 saat yang lalu | 0 jam |
+| 1999-12-31T23:59:45.000Z | 15 saat | 15 saat yang lalu | 0 jam |
+| 1999-12-31T23:59:35.000Z | 25 saat | 25 saat yang lalu | 0 jam |
+| 1999-12-31T23:59:00.000Z | 1 minit | 1 minit yang lalu | 0 jam |
+| 1999-12-31T23:45:00.000Z | 15 minit | 15 minit yang lalu | 0 jam |
+| 1999-12-31T23:30:00.000Z | 30 minit | 30 minit yang lalu | 1 jam |
+| 1999-12-31T23:15:00.000Z | 45 minit | 45 minit yang lalu | 1 jam |
+| 1999-12-31T23:00:00.000Z | 1 jam | 1 jam yang lalu | 1 jam |
+| 1999-12-31T18:00:00.000Z | 6 jam | 6 jam yang lalu | 6 jam |
+| 1999-12-30T00:00:00.000Z | 2 hari | 2 hari yang lalu | 48 jam |
+| 1999-12-15T00:00:00.000Z | 17 hari | 17 hari yang lalu | 408 jam |
+| 1999-12-01T00:00:00.000Z | 1 bulan | 1 bulan yang lalu | 744 jam |
+| 1999-11-01T00:00:00.000Z | 2 bulan | 2 bulan yang lalu | 1464 jam |
+| 1999-06-01T00:00:00.000Z | 7 bulan | 7 bulan yang lalu | 5136 jam |
+| 1999-01-01T00:00:00.000Z | 1 tahun | 1 tahun yang lalu | 8760 jam |
+| 1998-12-01T00:00:00.000Z | 1 tahun | 1 tahun yang lalu | 9504 jam |
+| 1998-06-01T00:00:00.000Z | 2 tahun | 2 tahun yang lalu | 13896 jam |
+| 1998-01-01T00:00:00.000Z | 2 tahun | 2 tahun yang lalu | 17520 jam |
+| 1997-01-01T00:00:00.000Z | 3 tahun | 3 tahun yang lalu | 26280 jam |
+| 1996-01-01T00:00:00.000Z | 4 tahun | 4 tahun yang lalu | 35064 jam |
+| 1995-01-01T00:00:00.000Z | 5 tahun | 5 tahun yang lalu | 43824 jam |
+| 1994-01-01T00:00:00.000Z | 6 tahun | 6 tahun yang lalu | 52584 jam |
+
+## `formatRelative`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result |
+| ------------------------ | -------------------------- |
+| 2000-01-10T00:00:00.000Z | 10/1/2000 |
+| 2000-01-05T00:00:00.000Z | Rabu pada jam 00.00 |
+| 2000-01-02T00:00:00.000Z | Esok pada jam 00.00 |
+| 2000-01-01T00:00:00.000Z | Hari ini pada jam 00.00 |
+| 1999-12-31T00:00:00.000Z | Semalam pada jam 00.00 |
+| 1999-12-27T00:00:00.000Z | Isnin lepas pada jam 00.00 |
+| 1999-12-21T00:00:00.000Z | 21/12/1999 |
diff --git a/date-fns/src/locale/mt/_lib/formatDistance/index.js b/date-fns/src/locale/mt/_lib/formatDistance/index.js
new file mode 100644
index 0000000..3fd8f18
--- /dev/null
+++ b/date-fns/src/locale/mt/_lib/formatDistance/index.js
@@ -0,0 +1,108 @@
+var formatDistanceLocale = {
+ lessThanXSeconds: {
+ one: 'inqas minn sekonda',
+ other: 'inqas minn {{count}} sekondi'
+ },
+
+ xSeconds: {
+ one: 'sekonda',
+ other: '{{count}} sekondi'
+ },
+
+ halfAMinute: 'nofs minuta',
+
+ lessThanXMinutes: {
+ one: 'inqas minn minuta',
+ other: 'inqas minn {{count}} minuti'
+ },
+
+ xMinutes: {
+ one: 'minuta',
+ other: '{{count}} minuti'
+ },
+
+ aboutXHours: {
+ one: 'madwar siegħa',
+ other: 'madwar {{count}} siegħat'
+ },
+
+ xHours: {
+ one: 'siegħa',
+ other: '{{count}} siegħat'
+ },
+
+ xDays: {
+ one: 'ġurnata',
+ other: '{{count}} ġranet'
+ },
+
+ aboutXWeeks: {
+ one: 'madwar ġimgħa',
+ other: 'madwar {{count}} ġimgħat'
+ },
+
+ xWeeks: {
+ one: 'ġimgħa',
+ other: '{{count}} ġimgħat'
+ },
+
+ aboutXMonths: {
+ one: 'madwar xahar',
+ other: 'madwar {{count}} xhur'
+ },
+
+ xMonths: {
+ one: 'xahar',
+ other: '{{count}} xhur'
+ },
+
+ aboutXYears: {
+ one: 'madwar sena',
+ two: 'madwar sentejn',
+ other: 'madwar {{count}} snin'
+ },
+
+ xYears: {
+ one: 'sena',
+ two: 'sentejn',
+ other: '{{count}} snin'
+ },
+
+ overXYears: {
+ one: 'aktar minn sena',
+ two: 'aktar minn sentejn',
+ other: 'aktar minn {{count}} snin'
+ },
+
+ almostXYears: {
+ one: 'kważi sena',
+ two: 'kważi sentejn',
+ other: 'kważi {{count}} snin'
+ }
+}
+
+export default function formatDistance(token, count, options) {
+ options = options || {}
+ var adverb = token.match(/years/i)
+
+ var result
+ if (typeof formatDistanceLocale[token] === 'string') {
+ result = formatDistanceLocale[token]
+ } else if (count === 1) {
+ result = formatDistanceLocale[token].one
+ } else if (count === 2 && adverb) {
+ result = formatDistanceLocale[token].two
+ } else {
+ result = formatDistanceLocale[token].other.replace('{{count}}', count)
+ }
+
+ if (options.addSuffix) {
+ if (options.comparison > 0) {
+ return "f'" + result
+ } else {
+ return result + ' ilu'
+ }
+ }
+
+ return result
+}
diff --git a/date-fns/src/locale/mt/_lib/formatLong/index.js b/date-fns/src/locale/mt/_lib/formatLong/index.js
new file mode 100644
index 0000000..4547713
--- /dev/null
+++ b/date-fns/src/locale/mt/_lib/formatLong/index.js
@@ -0,0 +1,41 @@
+import buildFormatLongFn from '../../../_lib/buildFormatLongFn/index'
+
+var dateFormats = {
+ full: 'EEEE, d MMMM yyyy',
+ long: 'd MMMM yyyy',
+ medium: 'd MMM yyyy',
+ short: 'dd/MM/yyyy'
+}
+
+var timeFormats = {
+ full: 'HH:mm:ss zzzz',
+ long: 'HH:mm:ss z',
+ medium: 'HH:mm:ss',
+ short: 'HH:mm'
+}
+
+var dateTimeFormats = {
+ full: '{{date}} {{time}}',
+ long: '{{date}} {{time}}',
+ medium: '{{date}} {{time}}',
+ short: '{{date}} {{time}}'
+}
+
+var formatLong = {
+ date: buildFormatLongFn({
+ formats: dateFormats,
+ defaultWidth: 'full'
+ }),
+
+ time: buildFormatLongFn({
+ formats: timeFormats,
+ defaultWidth: 'full'
+ }),
+
+ dateTime: buildFormatLongFn({
+ formats: dateTimeFormats,
+ defaultWidth: 'full'
+ })
+}
+
+export default formatLong
diff --git a/date-fns/src/locale/mt/_lib/formatRelative/index.js b/date-fns/src/locale/mt/_lib/formatRelative/index.js
new file mode 100644
index 0000000..82f0aee
--- /dev/null
+++ b/date-fns/src/locale/mt/_lib/formatRelative/index.js
@@ -0,0 +1,12 @@
+var formatRelativeLocale = {
+ lastWeek: "eeee 'li għadda' 'fil-'p",
+ yesterday: "'Il-bieraħ fil-'p",
+ today: "'Illum fil-'p",
+ tomorrow: "'Għada fil-'p",
+ nextWeek: "eeee 'fil-'p",
+ other: 'P'
+}
+
+export default function formatRelative(token, _date, _baseDate, _options) {
+ return formatRelativeLocale[token]
+}
diff --git a/date-fns/src/locale/mt/_lib/localize/index.js b/date-fns/src/locale/mt/_lib/localize/index.js
new file mode 100644
index 0000000..8b29870
--- /dev/null
+++ b/date-fns/src/locale/mt/_lib/localize/index.js
@@ -0,0 +1,167 @@
+import buildLocalizeFn from '../../../_lib/buildLocalizeFn/index'
+
+var eraValues = {
+ narrow: ['Q', 'W'],
+ abbreviated: ['QK', 'WK'],
+ wide: ['qabel Kristu', 'wara Kristu']
+}
+
+var quarterValues = {
+ narrow: ['1', '2', '3', '4'],
+ abbreviated: ['K1', 'K2', 'K3', 'K4'],
+ wide: ['1. kwart', '2. kwart', '3. kwart', '4. kwart']
+}
+
+var monthValues = {
+ narrow: ['J', 'F', 'M', 'A', 'M', 'Ġ', 'L', 'A', 'S', 'O', 'N', 'D'],
+ abbreviated: [
+ 'Jan',
+ 'Fra',
+ 'Mar',
+ 'Apr',
+ 'Mej',
+ 'Ġun',
+ 'Lul',
+ 'Aww',
+ 'Set',
+ 'Ott',
+ 'Nov',
+ 'Diċ'
+ ],
+ wide: [
+ 'Jannar',
+ 'Frar',
+ 'Marzu',
+ 'April',
+ 'Mejju',
+ 'Ġunju',
+ 'Lulju',
+ 'Awwissu',
+ 'Settembru',
+ 'Ottubru',
+ 'Novembru',
+ 'Diċembru'
+ ]
+}
+
+var dayValues = {
+ narrow: ['Ħ', 'T', 'T', 'E', 'Ħ', 'Ġ', 'S'],
+ short: ['Ħa', 'Tn', 'Tl', 'Er', 'Ħa', 'Ġi', 'Si'],
+ abbreviated: ['Ħad', 'Tne', 'Tli', 'Erb', 'Ħam', 'Ġim', 'Sib'],
+ wide: [
+ 'Il-Ħadd',
+ 'It-Tnejn',
+ 'It-Tlieta',
+ 'L-Erbgħa',
+ 'Il-Ħamis',
+ 'Il-Ġimgħa',
+ 'Is-Sibt'
+ ]
+}
+
+var dayPeriodValues = {
+ narrow: {
+ am: 'a',
+ pm: 'p',
+ midnight: 'nofsillejl',
+ noon: 'nofsinhar',
+ morning: 'għodwa',
+ afternoon: 'wara nofsinhar',
+ evening: 'filgħaxija',
+ night: 'lejl'
+ },
+ abbreviated: {
+ am: 'AM',
+ pm: 'PM',
+ midnight: 'nofsillejl',
+ noon: 'nofsinhar',
+ morning: 'għodwa',
+ afternoon: 'wara nofsinhar',
+ evening: 'filgħaxija',
+ night: 'lejl'
+ },
+ wide: {
+ am: 'a.m.',
+ pm: 'p.m.',
+ midnight: 'nofsillejl',
+ noon: 'nofsinhar',
+ morning: 'għodwa',
+ afternoon: 'wara nofsinhar',
+ evening: 'filgħaxija',
+ night: 'lejl'
+ }
+}
+
+var formattingDayPeriodValues = {
+ narrow: {
+ am: 'a',
+ pm: 'p',
+ midnight: "f'nofsillejl",
+ noon: "f'nofsinhar",
+ morning: 'filgħodu',
+ afternoon: 'wara nofsinhar',
+ evening: 'filgħaxija',
+ night: 'billejl'
+ },
+ abbreviated: {
+ am: 'AM',
+ pm: 'PM',
+ midnight: "f'nofsillejl",
+ noon: "f'nofsinhar",
+ morning: 'filgħodu',
+ afternoon: 'wara nofsinhar',
+ evening: 'filgħaxija',
+ night: 'billejl'
+ },
+ wide: {
+ am: 'a.m.',
+ pm: 'p.m.',
+ midnight: "f'nofsillejl",
+ noon: "f'nofsinhar",
+ morning: 'filgħodu',
+ afternoon: 'wara nofsinhar',
+ evening: 'filgħaxija',
+ night: 'billejl'
+ }
+}
+
+function ordinalNumber(dirtyNumber) {
+ var number = Number(dirtyNumber)
+ return number + 'º'
+}
+
+var localize = {
+ ordinalNumber: ordinalNumber,
+
+ era: buildLocalizeFn({
+ values: eraValues,
+ defaultWidth: 'wide'
+ }),
+
+ quarter: buildLocalizeFn({
+ values: quarterValues,
+ defaultWidth: 'wide',
+ argumentCallback: function(quarter) {
+ return Number(quarter) - 1
+ }
+ }),
+
+ month: buildLocalizeFn({
+ values: monthValues,
+ defaultWidth: 'wide'
+ }),
+
+ day: buildLocalizeFn({
+ values: dayValues,
+ defaultWidth: 'wide'
+ }),
+
+ dayPeriod: buildLocalizeFn({
+ values: dayPeriodValues,
+ defaultWidth: 'wide',
+ formattingValues: formattingDayPeriodValues,
+ defaultFormattingWidth: 'wide'
+ })
+}
+
+export default localize
diff --git a/date-fns/src/locale/mt/_lib/match/index.js b/date-fns/src/locale/mt/_lib/match/index.js
new file mode 100644
index 0000000..5f5c881
--- /dev/null
+++ b/date-fns/src/locale/mt/_lib/match/index.js
@@ -0,0 +1,145 @@
+import buildMatchPatternFn from '../../../_lib/buildMatchPatternFn/index'
+import buildMatchFn from '../../../_lib/buildMatchFn/index'
+
+var matchOrdinalNumberPattern = /^(\d+)(º)?/i
+var parseOrdinalNumberPattern = /\d+/i
+
+var matchEraPatterns = {
+ narrow: /^(q|w)/i,
+ abbreviated: /^(q\.?\s?k\.?|b\.?\s?c\.?\s?e\.?|w\.?\s?k\.?)/i,
+ wide: /^(qabel kristu|before common era|wara kristu|common era)/i
+}
+var parseEraPatterns = {
+ any: [/^(q|b)/i, /^(w|c)/i]
+}
+
+var matchQuarterPatterns = {
+ narrow: /^[1234]/i,
+ abbreviated: /^k[1234]/i,
+ wide: /^[1234](\.)? kwart/i
+}
+var parseQuarterPatterns = {
+ any: [/1/i, /2/i, /3/i, /4/i]
+}
+
+var matchMonthPatterns = {
+ narrow: /^[jfmaglsond]/i,
+ abbreviated: /^(jan|fra|mar|apr|mej|ġun|lul|aww|set|ott|nov|diċ)/i,
+ wide: /^(jannar|frar|marzu|april|mejju|ġunju|lulju|awwissu|settembru|ottubru|novembru|diċembru)/i
+}
+var parseMonthPatterns = {
+ narrow: [
+ /^j/i,
+ /^f/i,
+ /^m/i,
+ /^a/i,
+ /^m/i,
+ /^ġ/i,
+ /^l/i,
+ /^a/i,
+ /^s/i,
+ /^o/i,
+ /^n/i,
+ /^d/i
+ ],
+ any: [
+ /^ja/i,
+ /^f/i,
+ /^mar/i,
+ /^ap/i,
+ /^mej/i,
+ /^ġ/i,
+ /^l/i,
+ /^aw/i,
+ /^s/i,
+ /^o/i,
+ /^n/i,
+ /^d/i
+ ]
+}
+
+var matchDayPatterns = {
+ narrow: /^[ħteġs]/i,
+ short: /^(ħa|tn|tl|er|ħa|ġi|si)/i,
+ abbreviated: /^(ħad|tne|tli|erb|ħam|ġim|sib)/i,
+ wide: /^(il-ħadd|it-tnejn|it-tlieta|l-erbgħa|il-ħamis|il-ġimgħa|is-sibt)/i
+}
+var parseDayPatterns = {
+ narrow: [/^ħ/i, /^t/i, /^t/i, /^e/i, /^ħ/i, /^ġ/i, /^s/i],
+ any: [
+ /^(il-)?ħad/i,
+ /^(it-)?tn/i,
+ /^(it-)?tl/i,
+ /^(l-)?er/i,
+ /^(il-)?ham/i,
+ /^(il-)?ġi/i,
+ /^(is-)?si/i
+ ]
+}
+
+var matchDayPeriodPatterns = {
+ narrow: /^(a|p|f'nofsillejl|f'nofsinhar|(ta') (għodwa|wara nofsinhar|filgħaxija|lejl))/i,
+ any: /^([ap]\.?\s?m\.?|f'nofsillejl|f'nofsinhar|(ta') (għodwa|wara nofsinhar|filgħaxija|lejl))/i
+}
+var parseDayPeriodPatterns = {
+ any: {
+ am: /^a/i,
+ pm: /^p/i,
+ midnight: /^f'nofsillejl/i,
+ noon: /^f'nofsinhar/i,
+ morning: /għodwa/i,
+ afternoon: /wara(\s.*)nofsinhar/i,
+ evening: /filgħaxija/i,
+ night: /lejl/i
+ }
+}
+
+var match = {
+ ordinalNumber: buildMatchPatternFn({
+ matchPattern: matchOrdinalNumberPattern,
+ parsePattern: parseOrdinalNumberPattern,
+ valueCallback: function(value) {
+ return parseInt(value, 10)
+ }
+ }),
+
+ era: buildMatchFn({
+ matchPatterns: matchEraPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseEraPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ quarter: buildMatchFn({
+ matchPatterns: matchQuarterPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseQuarterPatterns,
+ defaultParseWidth: 'any',
+ valueCallback: function(index) {
+ return index + 1
+ }
+ }),
+
+ month: buildMatchFn({
+ matchPatterns: matchMonthPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseMonthPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ day: buildMatchFn({
+ matchPatterns: matchDayPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseDayPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ dayPeriod: buildMatchFn({
+ matchPatterns: matchDayPeriodPatterns,
+ defaultMatchWidth: 'any',
+ parsePatterns: parseDayPeriodPatterns,
+ defaultParseWidth: 'any'
+ })
+}
+
+export default match
diff --git a/date-fns/src/locale/mt/index.d.ts b/date-fns/src/locale/mt/index.d.ts
new file mode 100644
index 0000000..a845625
--- /dev/null
+++ b/date-fns/src/locale/mt/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { mt } from 'date-fns/locale'
+export default mt
diff --git a/date-fns/src/locale/mt/index.js b/date-fns/src/locale/mt/index.js
new file mode 100644
index 0000000..2a162d6
--- /dev/null
+++ b/date-fns/src/locale/mt/index.js
@@ -0,0 +1,29 @@
+import formatDistance from './_lib/formatDistance/index'
+import formatLong from './_lib/formatLong/index'
+import formatRelative from './_lib/formatRelative/index'
+import localize from './_lib/localize/index'
+import match from './_lib/match/index'
+
+/**
+ * @type {Locale}
+ * @category Locales
+ * @summary Maltese locale.
+ * @language Maltese
+ * @iso-639-2 mlt
+ * @author Andras Matzon [@amatzon](@link https://github.com/amatzon)
+ * @author Bryan Borg [@bryanMt](@link https://github.com/bryanMt)
+ */
+var locale = {
+ code: 'mt',
+ formatDistance: formatDistance,
+ formatLong: formatLong,
+ formatRelative: formatRelative,
+ localize: localize,
+ match: match,
+ options: {
+ weekStartsOn: 1 /* Monday */,
+ firstWeekContainsDate: 4
+ }
+}
+
+export default locale
diff --git a/date-fns/src/locale/mt/index.js.flow b/date-fns/src/locale/mt/index.js.flow
new file mode 100644
index 0000000..b9dfe66
--- /dev/null
+++ b/date-fns/src/locale/mt/index.js.flow
@@ -0,0 +1,35 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+declare module.exports: Locale
diff --git a/date-fns/src/locale/mt/snapshot.md b/date-fns/src/locale/mt/snapshot.md
new file mode 100644
index 0000000..1055dc9
--- /dev/null
+++ b/date-fns/src/locale/mt/snapshot.md
@@ -0,0 +1,304 @@
+# Maltese (mt) locale
+
+## `format` and `parse`
+
+| Title | Token string | Date | `format` result | `parse` result |
+| ------------------------------- | ------------ | ------------------------ | ----------------------------------------- | ------------------------ |
+| Calendar year | yo | 1987-02-11T12:13:14.015Z | 1987º | 1987-01-01T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 5º | 0005-01-01T00:00:00.000Z |
+| Local week-numbering year | Yo | 1987-02-11T12:13:14.015Z | 1987º | 1986-12-29T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 4º | 0003-12-29T00:00:00.000Z |
+| Quarter (formatting) | Qo | 2019-01-01T12:13:14.015Z | 1º | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2º | 2019-04-01T00:00:00.000Z |
+| | QQQ | 2019-01-01T12:13:14.015Z | K1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | K2 | 2019-04-01T00:00:00.000Z |
+| | QQQQ | 2019-01-01T12:13:14.015Z | 1. kwart | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2. kwart | 2019-04-01T00:00:00.000Z |
+| | QQQQQ | 2019-01-01T12:13:14.015Z | 1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2 | 2019-04-01T00:00:00.000Z |
+| Quarter (stand-alone) | qo | 2019-01-01T12:13:14.015Z | 1º | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2º | 2019-04-01T00:00:00.000Z |
+| | qqq | 2019-01-01T12:13:14.015Z | K1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | K2 | 2019-04-01T00:00:00.000Z |
+| | qqqq | 2019-01-01T12:13:14.015Z | 1. kwart | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2. kwart | 2019-04-01T00:00:00.000Z |
+| Month (formatting) | Mo | 2019-02-11T12:13:14.015Z | 2º | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7º | 2019-07-01T00:00:00.000Z |
+| | MMM | 2019-02-11T12:13:14.015Z | Fra | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | Lul | 2019-07-01T00:00:00.000Z |
+| | MMMM | 2019-02-11T12:13:14.015Z | Frar | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | Lulju | 2019-07-01T00:00:00.000Z |
+| | MMMMM | 2019-02-11T12:13:14.015Z | F | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | L | 2019-07-01T00:00:00.000Z |
+| Month (stand-alone) | Lo | 2019-02-11T12:13:14.015Z | 2º | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7º | 2019-07-01T00:00:00.000Z |
+| | LLL | 2019-02-11T12:13:14.015Z | Fra | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | Lul | 2019-07-01T00:00:00.000Z |
+| | LLLL | 2019-02-11T12:13:14.015Z | Frar | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | Lulju | 2019-07-01T00:00:00.000Z |
+| | LLLLL | 2019-02-11T12:13:14.015Z | F | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | L | 2019-07-01T00:00:00.000Z |
+| Local week of year | wo | 2019-01-01T12:13:14.015Z | 1º | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48º | 2019-11-25T00:00:00.000Z |
+| ISO week of year | Io | 2019-01-01T12:13:14.015Z | 1º | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48º | 2019-11-25T00:00:00.000Z |
+| Day of month | do | 2019-02-11T12:13:14.015Z | 11º | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-28T12:13:14.015Z | 28º | 2019-02-28T00:00:00.000Z |
+| Day of year | Do | 2019-02-11T12:13:14.015Z | 42º | 2019-02-11T00:00:00.000Z |
+| | | 2019-12-31T12:13:14.015Z | 365º | 2019-12-31T00:00:00.000Z |
+| Day of week (formatting) | E | 2019-02-11T12:13:14.015Z | Tne | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Ġim | 2019-02-15T00:00:00.000Z |
+| | EE | 2019-02-11T12:13:14.015Z | Tne | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Ġim | 2019-02-15T00:00:00.000Z |
+| | EEE | 2019-02-11T12:13:14.015Z | Tne | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Ġim | 2019-02-15T00:00:00.000Z |
+| | EEEE | 2019-02-11T12:13:14.015Z | It-Tnejn | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Il-Ġimgħa | 2019-02-15T00:00:00.000Z |
+| | EEEEE | 2019-02-11T12:13:14.015Z | T | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Ġ | 2019-02-15T00:00:00.000Z |
+| | EEEEEE | 2019-02-11T12:13:14.015Z | Tn | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Ġi | 2019-02-15T00:00:00.000Z |
+| ISO day of week (formatting) | io | 2019-02-11T12:13:14.015Z | 1º | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5º | 2019-02-15T00:00:00.000Z |
+| | iii | 2019-02-11T12:13:14.015Z | Tne | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Ġim | 2019-02-15T00:00:00.000Z |
+| | iiii | 2019-02-11T12:13:14.015Z | It-Tnejn | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Il-Ġimgħa | 2019-02-15T00:00:00.000Z |
+| | iiiii | 2019-02-11T12:13:14.015Z | T | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Ġ | 2019-02-15T00:00:00.000Z |
+| | iiiiii | 2019-02-11T12:13:14.015Z | Tn | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Ġi | 2019-02-15T00:00:00.000Z |
+| Local day of week (formatting) | eo | 2019-02-11T12:13:14.015Z | 1º | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5º | 2019-02-15T00:00:00.000Z |
+| | eee | 2019-02-11T12:13:14.015Z | Tne | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Ġim | 2019-02-15T00:00:00.000Z |
+| | eeee | 2019-02-11T12:13:14.015Z | It-Tnejn | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Il-Ġimgħa | 2019-02-15T00:00:00.000Z |
+| | eeeee | 2019-02-11T12:13:14.015Z | T | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Ġ | 2019-02-15T00:00:00.000Z |
+| | eeeeee | 2019-02-11T12:13:14.015Z | Tn | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Ġi | 2019-02-15T00:00:00.000Z |
+| Local day of week (stand-alone) | co | 2019-02-11T12:13:14.015Z | 1º | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5º | 2019-02-15T00:00:00.000Z |
+| | ccc | 2019-02-11T12:13:14.015Z | Tne | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Ġim | 2019-02-15T00:00:00.000Z |
+| | cccc | 2019-02-11T12:13:14.015Z | It-Tnejn | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Il-Ġimgħa | 2019-02-15T00:00:00.000Z |
+| | ccccc | 2019-02-11T12:13:14.015Z | T | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Ġ | 2019-02-15T00:00:00.000Z |
+| | cccccc | 2019-02-11T12:13:14.015Z | Tn | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Ġi | 2019-02-15T00:00:00.000Z |
+| AM, PM | a | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | aa | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | aaa | 2019-02-11T11:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | aaaa | 2019-02-11T11:13:14.015Z | a.m. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | p.m. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | p.m. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | a.m. | 2019-02-11T00:00:00.000Z |
+| | aaaaa | 2019-02-11T11:13:14.015Z | a | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | p | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | p | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | a | 2019-02-11T00:00:00.000Z |
+| AM, PM, noon, midnight | b | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | bb | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | bbb | 2019-02-11T11:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | bbbb | 2019-02-11T11:13:14.015Z | a.m. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | p.m. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | p.m. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | a.m. | 2019-02-11T00:00:00.000Z |
+| | bbbbb | 2019-02-11T11:13:14.015Z | a | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | p | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | p | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | a | 2019-02-11T00:00:00.000Z |
+| Flexible day period | B | 2019-02-11T11:13:14.015Z | filgħodu | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | wara nofsinhar | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | filgħaxija | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | billejl | Invalid Date |
+| | BB | 2019-02-11T11:13:14.015Z | filgħodu | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | wara nofsinhar | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | filgħaxija | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | billejl | Invalid Date |
+| | BBB | 2019-02-11T11:13:14.015Z | filgħodu | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | wara nofsinhar | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | filgħaxija | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | billejl | Invalid Date |
+| | BBBB | 2019-02-11T11:13:14.015Z | filgħodu | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | wara nofsinhar | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | filgħaxija | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | billejl | Invalid Date |
+| | BBBBB | 2019-02-11T11:13:14.015Z | filgħodu | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | wara nofsinhar | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | filgħaxija | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | billejl | Invalid Date |
+| Hour [1-12] | ho | 2019-02-11T11:13:14.015Z | 11º | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11º | 2019-02-11T23:00:00.000Z |
+| Hour [0-23] | Ho | 2019-02-11T11:13:14.015Z | 11º | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23º | 2019-02-11T23:00:00.000Z |
+| Hour [0-11] | Ko | 2019-02-11T11:13:14.015Z | 11º | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11º | 2019-02-11T23:00:00.000Z |
+| Hour [1-24] | ko | 2019-02-11T11:13:14.015Z | 11º | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23º | 2019-02-11T23:00:00.000Z |
+| Minute | mo | 2019-01-01T12:01:14.015Z | 1º | 2019-01-01T12:01:00.000Z |
+| | | 2019-04-01T12:55:14.015Z | 55º | 2019-04-01T12:55:00.000Z |
+| Second | so | 2019-01-01T12:13:01.015Z | 1º | 2019-01-01T12:13:01.000Z |
+| | | 2019-04-01T12:13:55.015Z | 55º | 2019-04-01T12:13:55.000Z |
+| Long localized date | P | 1987-02-11T12:13:14.015Z | 11/02/1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29/05/1453 | 1453-05-29T00:00:00.000Z |
+| | PP | 1987-02-11T12:13:14.015Z | 11 Fra 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 Mej 1453 | 1453-05-29T00:00:00.000Z |
+| | PPP | 1987-02-11T12:13:14.015Z | 11 Frar 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 Mejju 1453 | 1453-05-29T00:00:00.000Z |
+| | PPPP | 1987-02-11T12:13:14.015Z | L-Erbgħa, 11 Frar 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | Il-Ħadd, 29 Mejju 1453 | 1453-05-29T00:00:00.000Z |
+| Long localized time | p | 1987-02-11T12:13:14.015Z | 12:13 | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 23:59 | 1453-05-29T23:59:00.000Z |
+| | pp | 1987-02-11T12:13:14.015Z | 12:13:14 | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 | 1453-05-29T23:59:59.000Z |
+| | ppp | 1987-02-11T12:13:14.015Z | 12:13:14 GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 GMT+0 | Errored |
+| | pppp | 1987-02-11T12:13:14.015Z | 12:13:14 GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 GMT+00:00 | Errored |
+| Combination of date and time | Pp | 1987-02-11T12:13:14.015Z | 11/02/1987 12:13 | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29/05/1453 23:59 | 1453-05-29T23:59:00.000Z |
+| | PPpp | 1987-02-11T12:13:14.015Z | 11 Fra 1987 12:13:14 | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 Mej 1453 23:59:59 | 1453-05-29T23:59:59.000Z |
+| | PPPppp | 1987-02-11T12:13:14.015Z | 11 Frar 1987 12:13:14 GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 29 Mejju 1453 23:59:59 GMT+0 | Errored |
+| | PPPPpppp | 1987-02-11T12:13:14.015Z | L-Erbgħa, 11 Frar 1987 12:13:14 GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | Il-Ħadd, 29 Mejju 1453 23:59:59 GMT+00:00 | Errored |
+
+## `formatDistance`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `includeSeconds: true` | `addSuffix: true` |
+| ------------------------ | ----------------- | ---------------------- | --------------------- |
+| 2006-01-01T00:00:00.000Z | madwar 6 snin | madwar 6 snin | f'madwar 6 snin |
+| 2005-01-01T00:00:00.000Z | madwar 5 snin | madwar 5 snin | f'madwar 5 snin |
+| 2004-01-01T00:00:00.000Z | madwar 4 snin | madwar 4 snin | f'madwar 4 snin |
+| 2003-01-01T00:00:00.000Z | madwar 3 snin | madwar 3 snin | f'madwar 3 snin |
+| 2002-01-01T00:00:00.000Z | madwar sentejn | madwar sentejn | f'madwar sentejn |
+| 2001-06-01T00:00:00.000Z | aktar minn sena | aktar minn sena | f'aktar minn sena |
+| 2001-02-01T00:00:00.000Z | madwar sena | madwar sena | f'madwar sena |
+| 2001-01-01T00:00:00.000Z | madwar sena | madwar sena | f'madwar sena |
+| 2000-06-01T00:00:00.000Z | 5 xhur | 5 xhur | f'5 xhur |
+| 2000-03-01T00:00:00.000Z | 2 xhur | 2 xhur | f'2 xhur |
+| 2000-02-01T00:00:00.000Z | madwar xahar | madwar xahar | f'madwar xahar |
+| 2000-01-15T00:00:00.000Z | 14 ġranet | 14 ġranet | f'14 ġranet |
+| 2000-01-02T00:00:00.000Z | ġurnata | ġurnata | f'ġurnata |
+| 2000-01-01T06:00:00.000Z | madwar 6 siegħat | madwar 6 siegħat | f'madwar 6 siegħat |
+| 2000-01-01T01:00:00.000Z | madwar siegħa | madwar siegħa | f'madwar siegħa |
+| 2000-01-01T00:45:00.000Z | madwar siegħa | madwar siegħa | f'madwar siegħa |
+| 2000-01-01T00:30:00.000Z | 30 minuti | 30 minuti | f'30 minuti |
+| 2000-01-01T00:15:00.000Z | 15 minuti | 15 minuti | f'15 minuti |
+| 2000-01-01T00:01:00.000Z | minuta | minuta | f'minuta |
+| 2000-01-01T00:00:25.000Z | inqas minn minuta | nofs minuta | f'inqas minn minuta |
+| 2000-01-01T00:00:15.000Z | inqas minn minuta | inqas minn 20 sekondi | f'inqas minn minuta |
+| 2000-01-01T00:00:05.000Z | inqas minn minuta | inqas minn 10 sekondi | f'inqas minn minuta |
+| 2000-01-01T00:00:00.000Z | inqas minn minuta | inqas minn 5 sekondi | inqas minn minuta ilu |
+| 1999-12-31T23:59:55.000Z | inqas minn minuta | inqas minn 10 sekondi | inqas minn minuta ilu |
+| 1999-12-31T23:59:45.000Z | inqas minn minuta | inqas minn 20 sekondi | inqas minn minuta ilu |
+| 1999-12-31T23:59:35.000Z | inqas minn minuta | nofs minuta | inqas minn minuta ilu |
+| 1999-12-31T23:59:00.000Z | minuta | minuta | minuta ilu |
+| 1999-12-31T23:45:00.000Z | 15 minuti | 15 minuti | 15 minuti ilu |
+| 1999-12-31T23:30:00.000Z | 30 minuti | 30 minuti | 30 minuti ilu |
+| 1999-12-31T23:15:00.000Z | madwar siegħa | madwar siegħa | madwar siegħa ilu |
+| 1999-12-31T23:00:00.000Z | madwar siegħa | madwar siegħa | madwar siegħa ilu |
+| 1999-12-31T18:00:00.000Z | madwar 6 siegħat | madwar 6 siegħat | madwar 6 siegħat ilu |
+| 1999-12-30T00:00:00.000Z | 2 ġranet | 2 ġranet | 2 ġranet ilu |
+| 1999-12-15T00:00:00.000Z | 17 ġranet | 17 ġranet | 17 ġranet ilu |
+| 1999-12-01T00:00:00.000Z | madwar xahar | madwar xahar | madwar xahar ilu |
+| 1999-11-01T00:00:00.000Z | 2 xhur | 2 xhur | 2 xhur ilu |
+| 1999-06-01T00:00:00.000Z | 7 xhur | 7 xhur | 7 xhur ilu |
+| 1999-01-01T00:00:00.000Z | madwar sena | madwar sena | madwar sena ilu |
+| 1998-12-01T00:00:00.000Z | madwar sena | madwar sena | madwar sena ilu |
+| 1998-06-01T00:00:00.000Z | aktar minn sena | aktar minn sena | aktar minn sena ilu |
+| 1998-01-01T00:00:00.000Z | madwar sentejn | madwar sentejn | madwar sentejn ilu |
+| 1997-01-01T00:00:00.000Z | madwar 3 snin | madwar 3 snin | madwar 3 snin ilu |
+| 1996-01-01T00:00:00.000Z | madwar 4 snin | madwar 4 snin | madwar 4 snin ilu |
+| 1995-01-01T00:00:00.000Z | madwar 5 snin | madwar 5 snin | madwar 5 snin ilu |
+| 1994-01-01T00:00:00.000Z | madwar 6 snin | madwar 6 snin | madwar 6 snin ilu |
+
+## `formatDistanceStrict`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `addSuffix: true` | With forced unit (i.e. `hour`) |
+| ------------------------ | ---------- | ----------------- | ------------------------------ |
+| 2006-01-01T00:00:00.000Z | 6 snin | f'6 snin | 52608 siegħat |
+| 2005-01-01T00:00:00.000Z | 5 snin | f'5 snin | 43848 siegħat |
+| 2004-01-01T00:00:00.000Z | 4 snin | f'4 snin | 35064 siegħat |
+| 2003-01-01T00:00:00.000Z | 3 snin | f'3 snin | 26304 siegħat |
+| 2002-01-01T00:00:00.000Z | sentejn | f'sentejn | 17544 siegħat |
+| 2001-06-01T00:00:00.000Z | sena | f'sena | 12408 siegħat |
+| 2001-02-01T00:00:00.000Z | sena | f'sena | 9528 siegħat |
+| 2001-01-01T00:00:00.000Z | sena | f'sena | 8784 siegħat |
+| 2000-06-01T00:00:00.000Z | 5 xhur | f'5 xhur | 3648 siegħat |
+| 2000-03-01T00:00:00.000Z | 2 xhur | f'2 xhur | 1440 siegħat |
+| 2000-02-01T00:00:00.000Z | xahar | f'xahar | 744 siegħat |
+| 2000-01-15T00:00:00.000Z | 14 ġranet | f'14 ġranet | 336 siegħat |
+| 2000-01-02T00:00:00.000Z | ġurnata | f'ġurnata | 24 siegħat |
+| 2000-01-01T06:00:00.000Z | 6 siegħat | f'6 siegħat | 6 siegħat |
+| 2000-01-01T01:00:00.000Z | siegħa | f'siegħa | siegħa |
+| 2000-01-01T00:45:00.000Z | 45 minuti | f'45 minuti | siegħa |
+| 2000-01-01T00:30:00.000Z | 30 minuti | f'30 minuti | siegħa |
+| 2000-01-01T00:15:00.000Z | 15 minuti | f'15 minuti | 0 siegħat |
+| 2000-01-01T00:01:00.000Z | minuta | f'minuta | 0 siegħat |
+| 2000-01-01T00:00:25.000Z | 25 sekondi | f'25 sekondi | 0 siegħat |
+| 2000-01-01T00:00:15.000Z | 15 sekondi | f'15 sekondi | 0 siegħat |
+| 2000-01-01T00:00:05.000Z | 5 sekondi | f'5 sekondi | 0 siegħat |
+| 2000-01-01T00:00:00.000Z | 0 sekondi | 0 sekondi ilu | 0 siegħat |
+| 1999-12-31T23:59:55.000Z | 5 sekondi | 5 sekondi ilu | 0 siegħat |
+| 1999-12-31T23:59:45.000Z | 15 sekondi | 15 sekondi ilu | 0 siegħat |
+| 1999-12-31T23:59:35.000Z | 25 sekondi | 25 sekondi ilu | 0 siegħat |
+| 1999-12-31T23:59:00.000Z | minuta | minuta ilu | 0 siegħat |
+| 1999-12-31T23:45:00.000Z | 15 minuti | 15 minuti ilu | 0 siegħat |
+| 1999-12-31T23:30:00.000Z | 30 minuti | 30 minuti ilu | siegħa |
+| 1999-12-31T23:15:00.000Z | 45 minuti | 45 minuti ilu | siegħa |
+| 1999-12-31T23:00:00.000Z | siegħa | siegħa ilu | siegħa |
+| 1999-12-31T18:00:00.000Z | 6 siegħat | 6 siegħat ilu | 6 siegħat |
+| 1999-12-30T00:00:00.000Z | 2 ġranet | 2 ġranet ilu | 48 siegħat |
+| 1999-12-15T00:00:00.000Z | 17 ġranet | 17 ġranet ilu | 408 siegħat |
+| 1999-12-01T00:00:00.000Z | xahar | xahar ilu | 744 siegħat |
+| 1999-11-01T00:00:00.000Z | 2 xhur | 2 xhur ilu | 1464 siegħat |
+| 1999-06-01T00:00:00.000Z | 7 xhur | 7 xhur ilu | 5136 siegħat |
+| 1999-01-01T00:00:00.000Z | sena | sena ilu | 8760 siegħat |
+| 1998-12-01T00:00:00.000Z | sena | sena ilu | 9504 siegħat |
+| 1998-06-01T00:00:00.000Z | sentejn | sentejn ilu | 13896 siegħat |
+| 1998-01-01T00:00:00.000Z | sentejn | sentejn ilu | 17520 siegħat |
+| 1997-01-01T00:00:00.000Z | 3 snin | 3 snin ilu | 26280 siegħat |
+| 1996-01-01T00:00:00.000Z | 4 snin | 4 snin ilu | 35064 siegħat |
+| 1995-01-01T00:00:00.000Z | 5 snin | 5 snin ilu | 43824 siegħat |
+| 1994-01-01T00:00:00.000Z | 6 snin | 6 snin ilu | 52584 siegħat |
+
+## `formatRelative`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result |
+| ------------------------ | ---------------------------- |
+| 2000-01-10T00:00:00.000Z | 10/01/2000 |
+| 2000-01-05T00:00:00.000Z | L-Erbgħa fil-00:00 |
+| 2000-01-02T00:00:00.000Z | Għada fil-00:00 |
+| 2000-01-01T00:00:00.000Z | Illum fil-00:00 |
+| 1999-12-31T00:00:00.000Z | Il-bieraħ fil-00:00 |
+| 1999-12-27T00:00:00.000Z | It-Tnejn li għadda fil-00:00 |
+| 1999-12-21T00:00:00.000Z | 21/12/1999 |
diff --git a/date-fns/src/locale/nb/_lib/formatDistance/index.js b/date-fns/src/locale/nb/_lib/formatDistance/index.js
new file mode 100644
index 0000000..79ef4f9
--- /dev/null
+++ b/date-fns/src/locale/nb/_lib/formatDistance/index.js
@@ -0,0 +1,127 @@
+var formatDistanceLocale = {
+ lessThanXSeconds: {
+ singular: 'mindre enn ett sekund',
+ plural: 'mindre enn {{count}} sekunder'
+ },
+
+ xSeconds: {
+ singular: 'ett sekund',
+ plural: '{{count}} sekunder'
+ },
+
+ halfAMinute: 'et halvt minutt',
+
+ lessThanXMinutes: {
+ singular: 'mindre enn ett minutt',
+ plural: 'mindre enn {{count}} minutter'
+ },
+
+ xMinutes: {
+ singular: 'ett minutt',
+ plural: '{{count}} minutter'
+ },
+
+ aboutXHours: {
+ singular: 'omtrent en time',
+ plural: 'omtrent {{count}} timer'
+ },
+
+ xHours: {
+ singular: 'en time',
+ plural: '{{count}} timer'
+ },
+
+ xDays: {
+ singular: 'en dag',
+ plural: '{{count}} dager'
+ },
+
+ aboutXWeeks: {
+ singular: 'omtrent en uke',
+ plural: 'omtrent {{count}} uker'
+ },
+
+ xWeeks: {
+ singular: 'en uke',
+ plural: '{{count}} uker'
+ },
+
+ aboutXMonths: {
+ singular: 'omtrent en måned',
+ plural: 'omtrent {{count}} måneder'
+ },
+
+ xMonths: {
+ singular: 'en måned',
+ plural: '{{count}} måneder'
+ },
+
+ aboutXYears: {
+ singular: 'omtrent ett år',
+ plural: 'omtrent {{count}} år'
+ },
+
+ xYears: {
+ singular: 'ett år',
+ plural: '{{count}} år'
+ },
+
+ overXYears: {
+ singular: 'over ett år',
+ plural: 'over {{count}} år'
+ },
+
+ almostXYears: {
+ singular: 'nesten ett år',
+ plural: 'nesten {{count}} år'
+ }
+}
+
+var wordMapping = [
+ 'null',
+ 'en',
+ 'to',
+ 'tre',
+ 'fire',
+ 'fem',
+ 'seks',
+ 'sju',
+ 'åtte',
+ 'ni',
+ 'ti',
+ 'elleve',
+ 'tolv'
+]
+
+export default function formatDistance(token, count, options) {
+ options = options || {
+ onlyNumeric: false
+ }
+
+ var translation = formatDistanceLocale[token]
+ var result
+ if (typeof translation === 'string') {
+ result = translation
+ } else if (count === 0 || count > 1) {
+ if (options.onlyNumeric) {
+ result = translation.plural.replace('{{count}}', count)
+ } else {
+ result = translation.plural.replace(
+ '{{count}}',
+ count < 13 ? wordMapping[count] : count
+ )
+ }
+ } else {
+ result = translation.singular
+ }
+
+ if (options.addSuffix) {
+ if (options.comparison > 0) {
+ return 'om ' + result
+ } else {
+ return result + ' siden'
+ }
+ }
+
+ return result
+}
diff --git a/date-fns/src/locale/nb/_lib/formatLong/index.js b/date-fns/src/locale/nb/_lib/formatLong/index.js
new file mode 100644
index 0000000..067f59e
--- /dev/null
+++ b/date-fns/src/locale/nb/_lib/formatLong/index.js
@@ -0,0 +1,41 @@
+import buildFormatLongFn from '../../../_lib/buildFormatLongFn/index'
+
+var dateFormats = {
+ full: 'EEEE d. MMMM y',
+ long: 'd. MMMM y',
+ medium: 'd. MMM y',
+ short: 'dd.MM.y'
+}
+
+var timeFormats = {
+ full: "'kl'. HH:mm:ss zzzz",
+ long: 'HH:mm:ss z',
+ medium: 'HH:mm:ss',
+ short: 'HH:mm'
+}
+
+var dateTimeFormats = {
+ full: "{{date}} 'kl.' {{time}}",
+ long: "{{date}} 'kl.' {{time}}",
+ medium: '{{date}} {{time}}',
+ short: '{{date}} {{time}}'
+}
+
+var formatLong = {
+ date: buildFormatLongFn({
+ formats: dateFormats,
+ defaultWidth: 'full'
+ }),
+
+ time: buildFormatLongFn({
+ formats: timeFormats,
+ defaultWidth: 'full'
+ }),
+
+ dateTime: buildFormatLongFn({
+ formats: dateTimeFormats,
+ defaultWidth: 'full'
+ })
+}
+
+export default formatLong
diff --git a/date-fns/src/locale/nb/_lib/formatRelative/index.js b/date-fns/src/locale/nb/_lib/formatRelative/index.js
new file mode 100644
index 0000000..3884132
--- /dev/null
+++ b/date-fns/src/locale/nb/_lib/formatRelative/index.js
@@ -0,0 +1,12 @@
+var formatRelativeLocale = {
+ lastWeek: "'forrige' eeee 'kl.' p",
+ yesterday: "'i går kl.' p",
+ today: "'i dag kl.' p",
+ tomorrow: "'i morgen kl.' p",
+ nextWeek: "EEEE 'kl.' p",
+ other: 'P'
+}
+
+export default function formatRelative(token, _date, _baseDate, _options) {
+ return formatRelativeLocale[token]
+}
diff --git a/date-fns/src/locale/nb/_lib/localize/index.js b/date-fns/src/locale/nb/_lib/localize/index.js
new file mode 100644
index 0000000..075f868
--- /dev/null
+++ b/date-fns/src/locale/nb/_lib/localize/index.js
@@ -0,0 +1,124 @@
+import buildLocalizeFn from '../../../_lib/buildLocalizeFn/index'
+
+var eraValues = {
+ narrow: ['f.Kr.', 'e.Kr.'],
+ abbreviated: ['f.Kr.', 'e.Kr.'],
+ wide: ['før Kristus', 'etter Kristus']
+}
+
+var quarterValues = {
+ narrow: ['1', '2', '3', '4'],
+ abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],
+ wide: ['1. kvartal', '2. kvartal', '3. kvartal', '4. kvartal']
+}
+
+var monthValues = {
+ narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],
+ abbreviated: [
+ 'jan.',
+ 'feb.',
+ 'mars',
+ 'apr.',
+ 'mai',
+ 'juni',
+ 'juli',
+ 'aug.',
+ 'sep.',
+ 'okt.',
+ 'nov.',
+ 'des.'
+ ],
+ wide: [
+ 'januar',
+ 'februar',
+ 'mars',
+ 'april',
+ 'mai',
+ 'juni',
+ 'juli',
+ 'august',
+ 'september',
+ 'oktober',
+ 'november',
+ 'desember'
+ ]
+}
+
+var dayValues = {
+ narrow: ['S', 'M', 'T', 'O', 'T', 'F', 'L'],
+ short: ['sø', 'ma', 'ti', 'on', 'to', 'fr', 'lø'],
+ abbreviated: ['søn', 'man', 'tir', 'ons', 'tor', 'fre', 'lør'],
+ wide: ['søndag', 'mandag', 'tirsdag', 'onsdag', 'torsdag', 'fredag', 'lørdag']
+}
+
+var dayPeriodValues = {
+ narrow: {
+ am: 'a',
+ pm: 'p',
+ midnight: 'midnatt',
+ noon: 'middag',
+ morning: 'på morg.',
+ afternoon: 'på etterm.',
+ evening: 'på kvelden',
+ night: 'på natten'
+ },
+ abbreviated: {
+ am: 'a.m.',
+ pm: 'p.m.',
+ midnight: 'midnatt',
+ noon: 'middag',
+ morning: 'på morg.',
+ afternoon: 'på etterm.',
+ evening: 'på kvelden',
+ night: 'på natten'
+ },
+ wide: {
+ am: 'a.m.',
+ pm: 'p.m.',
+ midnight: 'midnatt',
+ noon: 'middag',
+ morning: 'på morgenen',
+ afternoon: 'på ettermiddagen',
+ evening: 'på kvelden',
+ night: 'på natten'
+ }
+}
+
+function ordinalNumber(dirtyNumber) {
+ var number = Number(dirtyNumber)
+ return number + '.'
+}
+
+var localize = {
+ ordinalNumber: ordinalNumber,
+
+ era: buildLocalizeFn({
+ values: eraValues,
+ defaultWidth: 'wide'
+ }),
+
+ quarter: buildLocalizeFn({
+ values: quarterValues,
+ defaultWidth: 'wide',
+ argumentCallback: function(quarter) {
+ return Number(quarter) - 1
+ }
+ }),
+
+ month: buildLocalizeFn({
+ values: monthValues,
+ defaultWidth: 'wide'
+ }),
+
+ day: buildLocalizeFn({
+ values: dayValues,
+ defaultWidth: 'wide'
+ }),
+
+ dayPeriod: buildLocalizeFn({
+ values: dayPeriodValues,
+ defaultWidth: 'wide'
+ })
+}
+
+export default localize
diff --git a/date-fns/src/locale/nb/_lib/match/index.js b/date-fns/src/locale/nb/_lib/match/index.js
new file mode 100644
index 0000000..d0c00da
--- /dev/null
+++ b/date-fns/src/locale/nb/_lib/match/index.js
@@ -0,0 +1,136 @@
+import buildMatchPatternFn from '../../../_lib/buildMatchPatternFn/index'
+import buildMatchFn from '../../../_lib/buildMatchFn/index'
+
+var matchOrdinalNumberPattern = /^(\d+)\.?/i
+var parseOrdinalNumberPattern = /\d+/i
+
+var matchEraPatterns = {
+ narrow: /^(f\.? ?Kr\.?|fvt\.?|e\.? ?Kr\.?|evt\.?)/i,
+ abbreviated: /^(f\.? ?Kr\.?|fvt\.?|e\.? ?Kr\.?|evt\.?)/i,
+ wide: /^(før Kristus|før vår tid|etter Kristus|vår tid)/i
+}
+var parseEraPatterns = {
+ any: [/^f/i, /^e/i]
+}
+
+var matchQuarterPatterns = {
+ narrow: /^[1234]/i,
+ abbreviated: /^q[1234]/i,
+ wide: /^[1234](\.)? kvartal/i
+}
+var parseQuarterPatterns = {
+ any: [/1/i, /2/i, /3/i, /4/i]
+}
+
+var matchMonthPatterns = {
+ narrow: /^[jfmasond]/i,
+ abbreviated: /^(jan|feb|mars?|apr|mai|juni?|juli?|aug|sep|okt|nov|des)\.?/i,
+ wide: /^(januar|februar|mars|april|mai|juni|juli|august|september|oktober|november|desember)/i
+}
+var parseMonthPatterns = {
+ narrow: [
+ /^j/i,
+ /^f/i,
+ /^m/i,
+ /^a/i,
+ /^m/i,
+ /^j/i,
+ /^j/i,
+ /^a/i,
+ /^s/i,
+ /^o/i,
+ /^n/i,
+ /^d/i
+ ],
+ any: [
+ /^ja/i,
+ /^f/i,
+ /^mar/i,
+ /^ap/i,
+ /^mai/i,
+ /^jun/i,
+ /^jul/i,
+ /^aug/i,
+ /^s/i,
+ /^o/i,
+ /^n/i,
+ /^d/i
+ ]
+}
+
+var matchDayPatterns = {
+ narrow: /^[smtofl]/i,
+ short: /^(sø|ma|ti|on|to|fr|lø)/i,
+ abbreviated: /^(søn|man|tir|ons|tor|fre|lør)/i,
+ wide: /^(søndag|mandag|tirsdag|onsdag|torsdag|fredag|lørdag)/i
+}
+var parseDayPatterns = {
+ any: [/^s/i, /^m/i, /^ti/i, /^o/i, /^to/i, /^f/i, /^l/i]
+}
+
+var matchDayPeriodPatterns = {
+ narrow: /^(midnatt|middag|(på) (morgenen|ettermiddagen|kvelden|natten)|[ap])/i,
+ any: /^([ap]\.?\s?m\.?|midnatt|middag|(på) (morgenen|ettermiddagen|kvelden|natten))/i
+}
+var parseDayPeriodPatterns = {
+ any: {
+ am: /^a(\.?\s?m\.?)?$/i,
+ pm: /^p(\.?\s?m\.?)?$/i,
+ midnight: /^midn/i,
+ noon: /^midd/i,
+ morning: /morgen/i,
+ afternoon: /ettermiddag/i,
+ evening: /kveld/i,
+ night: /natt/i
+ }
+}
+
+var match = {
+ ordinalNumber: buildMatchPatternFn({
+ matchPattern: matchOrdinalNumberPattern,
+ parsePattern: parseOrdinalNumberPattern,
+ valueCallback: function(value) {
+ return parseInt(value, 10)
+ }
+ }),
+
+ era: buildMatchFn({
+ matchPatterns: matchEraPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseEraPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ quarter: buildMatchFn({
+ matchPatterns: matchQuarterPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseQuarterPatterns,
+ defaultParseWidth: 'any',
+ valueCallback: function(index) {
+ return index + 1
+ }
+ }),
+
+ month: buildMatchFn({
+ matchPatterns: matchMonthPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseMonthPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ day: buildMatchFn({
+ matchPatterns: matchDayPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseDayPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ dayPeriod: buildMatchFn({
+ matchPatterns: matchDayPeriodPatterns,
+ defaultMatchWidth: 'any',
+ parsePatterns: parseDayPeriodPatterns,
+ defaultParseWidth: 'any'
+ })
+}
+
+export default match
diff --git a/date-fns/src/locale/nb/index.d.ts b/date-fns/src/locale/nb/index.d.ts
new file mode 100644
index 0000000..75c06bb
--- /dev/null
+++ b/date-fns/src/locale/nb/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { nb } from 'date-fns/locale'
+export default nb
diff --git a/date-fns/src/locale/nb/index.js b/date-fns/src/locale/nb/index.js
new file mode 100644
index 0000000..2f6c68a
--- /dev/null
+++ b/date-fns/src/locale/nb/index.js
@@ -0,0 +1,30 @@
+import formatDistance from './_lib/formatDistance/index'
+import formatLong from './_lib/formatLong/index'
+import formatRelative from './_lib/formatRelative/index'
+import localize from './_lib/localize/index'
+import match from './_lib/match/index'
+
+/**
+ * @type {Locale}
+ * @category Locales
+ * @summary Norwegian Bokmål locale.
+ * @language Norwegian Bokmål
+ * @iso-639-2 nob
+ * @author Hans-Kristian Koren [@Hanse]{@link https://github.com/Hanse}
+ * @author Mikolaj Grzyb [@mikolajgrzyb]{@link https://github.com/mikolajgrzyb}
+ * @author Dag Stuan [@dagstuan]{@link https://github.com/dagstuan}
+ */
+var locale = {
+ code: 'nb',
+ formatDistance: formatDistance,
+ formatLong: formatLong,
+ formatRelative: formatRelative,
+ localize: localize,
+ match: match,
+ options: {
+ weekStartsOn: 1 /* Monday */,
+ firstWeekContainsDate: 4
+ }
+}
+
+export default locale
diff --git a/date-fns/src/locale/nb/index.js.flow b/date-fns/src/locale/nb/index.js.flow
new file mode 100644
index 0000000..b9dfe66
--- /dev/null
+++ b/date-fns/src/locale/nb/index.js.flow
@@ -0,0 +1,35 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+declare module.exports: Locale
diff --git a/date-fns/src/locale/nb/snapshot.md b/date-fns/src/locale/nb/snapshot.md
new file mode 100644
index 0000000..09b0da9
--- /dev/null
+++ b/date-fns/src/locale/nb/snapshot.md
@@ -0,0 +1,304 @@
+# Norwegian Bokmål (nb) locale
+
+## `format` and `parse`
+
+| Title | Token string | Date | `format` result | `parse` result |
+| ------------------------------- | ------------ | ------------------------ | -------------------------------------------------- | ------------------------ |
+| Calendar year | yo | 1987-02-11T12:13:14.015Z | 1987. | 1987-01-01T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 5. | 0005-01-01T00:00:00.000Z |
+| Local week-numbering year | Yo | 1987-02-11T12:13:14.015Z | 1987. | 1986-12-29T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 4. | 0003-12-29T00:00:00.000Z |
+| Quarter (formatting) | Qo | 2019-01-01T12:13:14.015Z | 1. | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2. | 2019-04-01T00:00:00.000Z |
+| | QQQ | 2019-01-01T12:13:14.015Z | Q1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | Q2 | 2019-04-01T00:00:00.000Z |
+| | QQQQ | 2019-01-01T12:13:14.015Z | 1. kvartal | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2. kvartal | 2019-04-01T00:00:00.000Z |
+| | QQQQQ | 2019-01-01T12:13:14.015Z | 1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2 | 2019-04-01T00:00:00.000Z |
+| Quarter (stand-alone) | qo | 2019-01-01T12:13:14.015Z | 1. | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2. | 2019-04-01T00:00:00.000Z |
+| | qqq | 2019-01-01T12:13:14.015Z | Q1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | Q2 | 2019-04-01T00:00:00.000Z |
+| | qqqq | 2019-01-01T12:13:14.015Z | 1. kvartal | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2. kvartal | 2019-04-01T00:00:00.000Z |
+| Month (formatting) | Mo | 2019-02-11T12:13:14.015Z | 2. | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7. | 2019-07-01T00:00:00.000Z |
+| | MMM | 2019-02-11T12:13:14.015Z | feb. | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | juli | 2019-07-01T00:00:00.000Z |
+| | MMMM | 2019-02-11T12:13:14.015Z | februar | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | juli | 2019-07-01T00:00:00.000Z |
+| | MMMMM | 2019-02-11T12:13:14.015Z | F | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | J | 2019-01-01T00:00:00.000Z |
+| Month (stand-alone) | Lo | 2019-02-11T12:13:14.015Z | 2. | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7. | 2019-07-01T00:00:00.000Z |
+| | LLL | 2019-02-11T12:13:14.015Z | feb. | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | juli | 2019-07-01T00:00:00.000Z |
+| | LLLL | 2019-02-11T12:13:14.015Z | februar | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | juli | 2019-07-01T00:00:00.000Z |
+| | LLLLL | 2019-02-11T12:13:14.015Z | F | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | J | 2019-01-01T00:00:00.000Z |
+| Local week of year | wo | 2019-01-01T12:13:14.015Z | 1. | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48. | 2019-11-25T00:00:00.000Z |
+| ISO week of year | Io | 2019-01-01T12:13:14.015Z | 1. | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48. | 2019-11-25T00:00:00.000Z |
+| Day of month | do | 2019-02-11T12:13:14.015Z | 11. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-28T12:13:14.015Z | 28. | 2019-02-28T00:00:00.000Z |
+| Day of year | Do | 2019-02-11T12:13:14.015Z | 42. | 2019-02-11T00:00:00.000Z |
+| | | 2019-12-31T12:13:14.015Z | 365. | 2019-12-31T00:00:00.000Z |
+| Day of week (formatting) | E | 2019-02-11T12:13:14.015Z | man | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | fre | 2019-02-15T00:00:00.000Z |
+| | EE | 2019-02-11T12:13:14.015Z | man | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | fre | 2019-02-15T00:00:00.000Z |
+| | EEE | 2019-02-11T12:13:14.015Z | man | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | fre | 2019-02-15T00:00:00.000Z |
+| | EEEE | 2019-02-11T12:13:14.015Z | mandag | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | fredag | 2019-02-15T00:00:00.000Z |
+| | EEEEE | 2019-02-11T12:13:14.015Z | M | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | F | 2019-02-15T00:00:00.000Z |
+| | EEEEEE | 2019-02-11T12:13:14.015Z | ma | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | fr | 2019-02-15T00:00:00.000Z |
+| ISO day of week (formatting) | io | 2019-02-11T12:13:14.015Z | 1. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5. | 2019-02-15T00:00:00.000Z |
+| | iii | 2019-02-11T12:13:14.015Z | man | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | fre | 2019-02-15T00:00:00.000Z |
+| | iiii | 2019-02-11T12:13:14.015Z | mandag | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | fredag | 2019-02-15T00:00:00.000Z |
+| | iiiii | 2019-02-11T12:13:14.015Z | M | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | F | 2019-02-15T00:00:00.000Z |
+| | iiiiii | 2019-02-11T12:13:14.015Z | ma | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | fr | 2019-02-15T00:00:00.000Z |
+| Local day of week (formatting) | eo | 2019-02-11T12:13:14.015Z | 1. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5. | 2019-02-15T00:00:00.000Z |
+| | eee | 2019-02-11T12:13:14.015Z | man | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | fre | 2019-02-15T00:00:00.000Z |
+| | eeee | 2019-02-11T12:13:14.015Z | mandag | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | fredag | 2019-02-15T00:00:00.000Z |
+| | eeeee | 2019-02-11T12:13:14.015Z | M | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | F | 2019-02-15T00:00:00.000Z |
+| | eeeeee | 2019-02-11T12:13:14.015Z | ma | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | fr | 2019-02-15T00:00:00.000Z |
+| Local day of week (stand-alone) | co | 2019-02-11T12:13:14.015Z | 1. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5. | 2019-02-15T00:00:00.000Z |
+| | ccc | 2019-02-11T12:13:14.015Z | man | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | fre | 2019-02-15T00:00:00.000Z |
+| | cccc | 2019-02-11T12:13:14.015Z | mandag | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | fredag | 2019-02-15T00:00:00.000Z |
+| | ccccc | 2019-02-11T12:13:14.015Z | M | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | F | 2019-02-15T00:00:00.000Z |
+| | cccccc | 2019-02-11T12:13:14.015Z | ma | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | fr | 2019-02-15T00:00:00.000Z |
+| AM, PM | a | 2019-02-11T11:13:14.015Z | a.m. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | p.m. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | p.m. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | a.m. | 2019-02-11T00:00:00.000Z |
+| | aa | 2019-02-11T11:13:14.015Z | a.m. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | p.m. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | p.m. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | a.m. | 2019-02-11T00:00:00.000Z |
+| | aaa | 2019-02-11T11:13:14.015Z | a.m. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | p.m. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | p.m. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | a.m. | 2019-02-11T00:00:00.000Z |
+| | aaaa | 2019-02-11T11:13:14.015Z | a.m. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | p.m. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | p.m. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | a.m. | 2019-02-11T00:00:00.000Z |
+| | aaaaa | 2019-02-11T11:13:14.015Z | a | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | p | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | p | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | a | 2019-02-11T00:00:00.000Z |
+| AM, PM, noon, midnight | b | 2019-02-11T11:13:14.015Z | a.m. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | p.m. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | p.m. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | a.m. | 2019-02-11T00:00:00.000Z |
+| | bb | 2019-02-11T11:13:14.015Z | a.m. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | p.m. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | p.m. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | a.m. | 2019-02-11T00:00:00.000Z |
+| | bbb | 2019-02-11T11:13:14.015Z | a.m. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | p.m. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | p.m. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | a.m. | 2019-02-11T00:00:00.000Z |
+| | bbbb | 2019-02-11T11:13:14.015Z | a.m. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | p.m. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | p.m. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | a.m. | 2019-02-11T00:00:00.000Z |
+| | bbbbb | 2019-02-11T11:13:14.015Z | a | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | p | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | p | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | a | 2019-02-11T00:00:00.000Z |
+| Flexible day period | B | 2019-02-11T11:13:14.015Z | på morg. | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | på etterm. | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | på kvelden | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | på natten | 2019-02-11T00:00:00.000Z |
+| | BB | 2019-02-11T11:13:14.015Z | på morg. | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | på etterm. | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | på kvelden | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | på natten | 2019-02-11T00:00:00.000Z |
+| | BBB | 2019-02-11T11:13:14.015Z | på morg. | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | på etterm. | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | på kvelden | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | på natten | 2019-02-11T00:00:00.000Z |
+| | BBBB | 2019-02-11T11:13:14.015Z | på morgenen | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | på ettermiddagen | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | på kvelden | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | på natten | 2019-02-11T00:00:00.000Z |
+| | BBBBB | 2019-02-11T11:13:14.015Z | på morg. | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | på etterm. | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | på kvelden | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | på natten | 2019-02-11T00:00:00.000Z |
+| Hour [1-12] | ho | 2019-02-11T11:13:14.015Z | 11. | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11. | 2019-02-11T23:00:00.000Z |
+| Hour [0-23] | Ho | 2019-02-11T11:13:14.015Z | 11. | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23. | 2019-02-11T23:00:00.000Z |
+| Hour [0-11] | Ko | 2019-02-11T11:13:14.015Z | 11. | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11. | 2019-02-11T23:00:00.000Z |
+| Hour [1-24] | ko | 2019-02-11T11:13:14.015Z | 11. | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23. | 2019-02-11T23:00:00.000Z |
+| Minute | mo | 2019-01-01T12:01:14.015Z | 1. | 2019-01-01T12:01:00.000Z |
+| | | 2019-04-01T12:55:14.015Z | 55. | 2019-04-01T12:55:00.000Z |
+| Second | so | 2019-01-01T12:13:01.015Z | 1. | 2019-01-01T12:13:01.000Z |
+| | | 2019-04-01T12:13:55.015Z | 55. | 2019-04-01T12:13:55.000Z |
+| Long localized date | P | 1987-02-11T12:13:14.015Z | 11.02.1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29.05.1453 | 1453-05-29T00:00:00.000Z |
+| | PP | 1987-02-11T12:13:14.015Z | 11. feb. 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29. mai 1453 | 1453-05-29T00:00:00.000Z |
+| | PPP | 1987-02-11T12:13:14.015Z | 11. februar 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29. mai 1453 | 1453-05-29T00:00:00.000Z |
+| | PPPP | 1987-02-11T12:13:14.015Z | onsdag 11. februar 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | søndag 29. mai 1453 | 1453-05-29T00:00:00.000Z |
+| Long localized time | p | 1987-02-11T12:13:14.015Z | 12:13 | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 23:59 | 1453-05-29T23:59:00.000Z |
+| | pp | 1987-02-11T12:13:14.015Z | 12:13:14 | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 | 1453-05-29T23:59:59.000Z |
+| | ppp | 1987-02-11T12:13:14.015Z | 12:13:14 GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 GMT+0 | Errored |
+| | pppp | 1987-02-11T12:13:14.015Z | kl. 12:13:14 GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | kl. 23:59:59 GMT+00:00 | Errored |
+| Combination of date and time | Pp | 1987-02-11T12:13:14.015Z | 11.02.1987 12:13 | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29.05.1453 23:59 | 1453-05-29T23:59:00.000Z |
+| | PPpp | 1987-02-11T12:13:14.015Z | 11. feb. 1987 12:13:14 | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29. mai 1453 23:59:59 | 1453-05-29T23:59:59.000Z |
+| | PPPppp | 1987-02-11T12:13:14.015Z | 11. februar 1987 kl. 12:13:14 GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 29. mai 1453 kl. 23:59:59 GMT+0 | Errored |
+| | PPPPpppp | 1987-02-11T12:13:14.015Z | onsdag 11. februar 1987 kl. kl. 12:13:14 GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | søndag 29. mai 1453 kl. kl. 23:59:59 GMT+00:00 | Errored |
+
+## `formatDistance`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `includeSeconds: true` | `addSuffix: true` |
+| ------------------------ | --------------------- | ----------------------- | --------------------------- |
+| 2006-01-01T00:00:00.000Z | omtrent seks år | omtrent seks år | om omtrent seks år |
+| 2005-01-01T00:00:00.000Z | omtrent fem år | omtrent fem år | om omtrent fem år |
+| 2004-01-01T00:00:00.000Z | omtrent fire år | omtrent fire år | om omtrent fire år |
+| 2003-01-01T00:00:00.000Z | omtrent tre år | omtrent tre år | om omtrent tre år |
+| 2002-01-01T00:00:00.000Z | omtrent to år | omtrent to år | om omtrent to år |
+| 2001-06-01T00:00:00.000Z | over ett år | over ett år | om over ett år |
+| 2001-02-01T00:00:00.000Z | omtrent ett år | omtrent ett år | om omtrent ett år |
+| 2001-01-01T00:00:00.000Z | omtrent ett år | omtrent ett år | om omtrent ett år |
+| 2000-06-01T00:00:00.000Z | fem måneder | fem måneder | om fem måneder |
+| 2000-03-01T00:00:00.000Z | to måneder | to måneder | om to måneder |
+| 2000-02-01T00:00:00.000Z | omtrent en måned | omtrent en måned | om omtrent en måned |
+| 2000-01-15T00:00:00.000Z | 14 dager | 14 dager | om 14 dager |
+| 2000-01-02T00:00:00.000Z | en dag | en dag | om en dag |
+| 2000-01-01T06:00:00.000Z | omtrent seks timer | omtrent seks timer | om omtrent seks timer |
+| 2000-01-01T01:00:00.000Z | omtrent en time | omtrent en time | om omtrent en time |
+| 2000-01-01T00:45:00.000Z | omtrent en time | omtrent en time | om omtrent en time |
+| 2000-01-01T00:30:00.000Z | 30 minutter | 30 minutter | om 30 minutter |
+| 2000-01-01T00:15:00.000Z | 15 minutter | 15 minutter | om 15 minutter |
+| 2000-01-01T00:01:00.000Z | ett minutt | ett minutt | om ett minutt |
+| 2000-01-01T00:00:25.000Z | mindre enn ett minutt | et halvt minutt | om mindre enn ett minutt |
+| 2000-01-01T00:00:15.000Z | mindre enn ett minutt | mindre enn 20 sekunder | om mindre enn ett minutt |
+| 2000-01-01T00:00:05.000Z | mindre enn ett minutt | mindre enn ti sekunder | om mindre enn ett minutt |
+| 2000-01-01T00:00:00.000Z | mindre enn ett minutt | mindre enn fem sekunder | mindre enn ett minutt siden |
+| 1999-12-31T23:59:55.000Z | mindre enn ett minutt | mindre enn ti sekunder | mindre enn ett minutt siden |
+| 1999-12-31T23:59:45.000Z | mindre enn ett minutt | mindre enn 20 sekunder | mindre enn ett minutt siden |
+| 1999-12-31T23:59:35.000Z | mindre enn ett minutt | et halvt minutt | mindre enn ett minutt siden |
+| 1999-12-31T23:59:00.000Z | ett minutt | ett minutt | ett minutt siden |
+| 1999-12-31T23:45:00.000Z | 15 minutter | 15 minutter | 15 minutter siden |
+| 1999-12-31T23:30:00.000Z | 30 minutter | 30 minutter | 30 minutter siden |
+| 1999-12-31T23:15:00.000Z | omtrent en time | omtrent en time | omtrent en time siden |
+| 1999-12-31T23:00:00.000Z | omtrent en time | omtrent en time | omtrent en time siden |
+| 1999-12-31T18:00:00.000Z | omtrent seks timer | omtrent seks timer | omtrent seks timer siden |
+| 1999-12-30T00:00:00.000Z | to dager | to dager | to dager siden |
+| 1999-12-15T00:00:00.000Z | 17 dager | 17 dager | 17 dager siden |
+| 1999-12-01T00:00:00.000Z | omtrent en måned | omtrent en måned | omtrent en måned siden |
+| 1999-11-01T00:00:00.000Z | to måneder | to måneder | to måneder siden |
+| 1999-06-01T00:00:00.000Z | sju måneder | sju måneder | sju måneder siden |
+| 1999-01-01T00:00:00.000Z | omtrent ett år | omtrent ett år | omtrent ett år siden |
+| 1998-12-01T00:00:00.000Z | omtrent ett år | omtrent ett år | omtrent ett år siden |
+| 1998-06-01T00:00:00.000Z | over ett år | over ett år | over ett år siden |
+| 1998-01-01T00:00:00.000Z | omtrent to år | omtrent to år | omtrent to år siden |
+| 1997-01-01T00:00:00.000Z | omtrent tre år | omtrent tre år | omtrent tre år siden |
+| 1996-01-01T00:00:00.000Z | omtrent fire år | omtrent fire år | omtrent fire år siden |
+| 1995-01-01T00:00:00.000Z | omtrent fem år | omtrent fem år | omtrent fem år siden |
+| 1994-01-01T00:00:00.000Z | omtrent seks år | omtrent seks år | omtrent seks år siden |
+
+## `formatDistanceStrict`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `addSuffix: true` | With forced unit (i.e. `hour`) |
+| ------------------------ | ------------- | ------------------- | ------------------------------ |
+| 2006-01-01T00:00:00.000Z | seks år | om seks år | 52608 timer |
+| 2005-01-01T00:00:00.000Z | fem år | om fem år | 43848 timer |
+| 2004-01-01T00:00:00.000Z | fire år | om fire år | 35064 timer |
+| 2003-01-01T00:00:00.000Z | tre år | om tre år | 26304 timer |
+| 2002-01-01T00:00:00.000Z | to år | om to år | 17544 timer |
+| 2001-06-01T00:00:00.000Z | ett år | om ett år | 12408 timer |
+| 2001-02-01T00:00:00.000Z | ett år | om ett år | 9528 timer |
+| 2001-01-01T00:00:00.000Z | ett år | om ett år | 8784 timer |
+| 2000-06-01T00:00:00.000Z | fem måneder | om fem måneder | 3648 timer |
+| 2000-03-01T00:00:00.000Z | to måneder | om to måneder | 1440 timer |
+| 2000-02-01T00:00:00.000Z | en måned | om en måned | 744 timer |
+| 2000-01-15T00:00:00.000Z | 14 dager | om 14 dager | 336 timer |
+| 2000-01-02T00:00:00.000Z | en dag | om en dag | 24 timer |
+| 2000-01-01T06:00:00.000Z | seks timer | om seks timer | seks timer |
+| 2000-01-01T01:00:00.000Z | en time | om en time | en time |
+| 2000-01-01T00:45:00.000Z | 45 minutter | om 45 minutter | en time |
+| 2000-01-01T00:30:00.000Z | 30 minutter | om 30 minutter | en time |
+| 2000-01-01T00:15:00.000Z | 15 minutter | om 15 minutter | null timer |
+| 2000-01-01T00:01:00.000Z | ett minutt | om ett minutt | null timer |
+| 2000-01-01T00:00:25.000Z | 25 sekunder | om 25 sekunder | null timer |
+| 2000-01-01T00:00:15.000Z | 15 sekunder | om 15 sekunder | null timer |
+| 2000-01-01T00:00:05.000Z | fem sekunder | om fem sekunder | null timer |
+| 2000-01-01T00:00:00.000Z | null sekunder | null sekunder siden | null timer |
+| 1999-12-31T23:59:55.000Z | fem sekunder | fem sekunder siden | null timer |
+| 1999-12-31T23:59:45.000Z | 15 sekunder | 15 sekunder siden | null timer |
+| 1999-12-31T23:59:35.000Z | 25 sekunder | 25 sekunder siden | null timer |
+| 1999-12-31T23:59:00.000Z | ett minutt | ett minutt siden | null timer |
+| 1999-12-31T23:45:00.000Z | 15 minutter | 15 minutter siden | null timer |
+| 1999-12-31T23:30:00.000Z | 30 minutter | 30 minutter siden | en time |
+| 1999-12-31T23:15:00.000Z | 45 minutter | 45 minutter siden | en time |
+| 1999-12-31T23:00:00.000Z | en time | en time siden | en time |
+| 1999-12-31T18:00:00.000Z | seks timer | seks timer siden | seks timer |
+| 1999-12-30T00:00:00.000Z | to dager | to dager siden | 48 timer |
+| 1999-12-15T00:00:00.000Z | 17 dager | 17 dager siden | 408 timer |
+| 1999-12-01T00:00:00.000Z | en måned | en måned siden | 744 timer |
+| 1999-11-01T00:00:00.000Z | to måneder | to måneder siden | 1464 timer |
+| 1999-06-01T00:00:00.000Z | sju måneder | sju måneder siden | 5136 timer |
+| 1999-01-01T00:00:00.000Z | ett år | ett år siden | 8760 timer |
+| 1998-12-01T00:00:00.000Z | ett år | ett år siden | 9504 timer |
+| 1998-06-01T00:00:00.000Z | to år | to år siden | 13896 timer |
+| 1998-01-01T00:00:00.000Z | to år | to år siden | 17520 timer |
+| 1997-01-01T00:00:00.000Z | tre år | tre år siden | 26280 timer |
+| 1996-01-01T00:00:00.000Z | fire år | fire år siden | 35064 timer |
+| 1995-01-01T00:00:00.000Z | fem år | fem år siden | 43824 timer |
+| 1994-01-01T00:00:00.000Z | seks år | seks år siden | 52584 timer |
+
+## `formatRelative`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result |
+| ------------------------ | ------------------------ |
+| 2000-01-10T00:00:00.000Z | 10.01.2000 |
+| 2000-01-05T00:00:00.000Z | onsdag kl. 00:00 |
+| 2000-01-02T00:00:00.000Z | i morgen kl. 00:00 |
+| 2000-01-01T00:00:00.000Z | i dag kl. 00:00 |
+| 1999-12-31T00:00:00.000Z | i går kl. 00:00 |
+| 1999-12-27T00:00:00.000Z | forrige mandag kl. 00:00 |
+| 1999-12-21T00:00:00.000Z | 21.12.1999 |
diff --git a/date-fns/src/locale/nl-BE/_lib/formatDistance/index.js b/date-fns/src/locale/nl-BE/_lib/formatDistance/index.js
new file mode 100644
index 0000000..e5fafde
--- /dev/null
+++ b/date-fns/src/locale/nl-BE/_lib/formatDistance/index.js
@@ -0,0 +1,86 @@
+var formatDistanceLocale = {
+ lessThanXSeconds: {
+ one: 'minder dan een seconde',
+ other: 'minder dan {{count}} seconden'
+ },
+ xSeconds: {
+ one: '1 seconde',
+ other: '{{count}} seconden'
+ },
+ halfAMinute: 'een halve minuut',
+ lessThanXMinutes: {
+ one: 'minder dan een minuut',
+ other: 'minder dan {{count}} minuten'
+ },
+ xMinutes: {
+ one: 'een minuut',
+ other: '{{count}} minuten'
+ },
+ aboutXHours: {
+ one: 'ongeveer 1 uur',
+ other: 'ongeveer {{count}} uur'
+ },
+ xHours: {
+ one: '1 uur',
+ other: '{{count}} uur'
+ },
+ xDays: {
+ one: '1 dag',
+ other: '{{count}} dagen'
+ },
+ aboutXWeeks: {
+ one: 'ongeveer 1 week',
+ other: 'ongeveer {{count}} weken'
+ },
+ xWeeks: {
+ one: '1 week',
+ other: '{{count}} weken'
+ },
+ aboutXMonths: {
+ one: 'ongeveer 1 maand',
+ other: 'ongeveer {{count}} maanden'
+ },
+ xMonths: {
+ one: '1 maand',
+ other: '{{count}} maanden'
+ },
+ aboutXYears: {
+ one: 'ongeveer 1 jaar',
+ other: 'ongeveer {{count}} jaar'
+ },
+ xYears: {
+ one: '1 jaar',
+ other: '{{count}} jaar'
+ },
+ overXYears: {
+ one: 'meer dan 1 jaar',
+ other: 'meer dan {{count}} jaar'
+ },
+ almostXYears: {
+ one: 'bijna 1 jaar',
+ other: 'bijna {{count}} jaar'
+ }
+}
+
+export default function formatDistance(token, count, options) {
+ options = options || {}
+
+ var result
+ if (typeof formatDistanceLocale[token] === 'string') {
+ result = formatDistanceLocale[token]
+ } else if (count === 1) {
+ result = formatDistanceLocale[token].one
+ } else {
+ result = formatDistanceLocale[token].other.replace('{{count}}', count)
+ }
+
+ if (options.addSuffix) {
+ if (options.comparison > 0) {
+ return 'over ' + result
+ } else {
+ return result + ' geleden'
+ }
+ }
+
+ return result
+}
diff --git a/date-fns/src/locale/nl-BE/_lib/formatLong/index.js b/date-fns/src/locale/nl-BE/_lib/formatLong/index.js
new file mode 100644
index 0000000..2b6cb47
--- /dev/null
+++ b/date-fns/src/locale/nl-BE/_lib/formatLong/index.js
@@ -0,0 +1,41 @@
+import buildFormatLongFn from '../../../_lib/buildFormatLongFn/index'
+
+var dateFormats = {
+ full: 'EEEE d MMMM y',
+ long: 'd MMMM y',
+ medium: 'd MMM y',
+ short: 'dd-MM-y'
+}
+
+var timeFormats = {
+ full: 'HH:mm:ss zzzz',
+ long: 'HH:mm:ss z',
+ medium: 'HH:mm:ss',
+ short: 'HH:mm'
+}
+
+var dateTimeFormats = {
+ full: "{{date}} 'om' {{time}}",
+ long: "{{date}} 'om' {{time}}",
+ medium: '{{date}}, {{time}}',
+ short: '{{date}}, {{time}}'
+}
+
+var formatLong = {
+ date: buildFormatLongFn({
+ formats: dateFormats,
+ defaultWidth: 'full'
+ }),
+
+ time: buildFormatLongFn({
+ formats: timeFormats,
+ defaultWidth: 'full'
+ }),
+
+ dateTime: buildFormatLongFn({
+ formats: dateTimeFormats,
+ defaultWidth: 'full'
+ })
+}
+
+export default formatLong
diff --git a/date-fns/src/locale/nl-BE/_lib/formatRelative/index.js b/date-fns/src/locale/nl-BE/_lib/formatRelative/index.js
new file mode 100644
index 0000000..4b6db42
--- /dev/null
+++ b/date-fns/src/locale/nl-BE/_lib/formatRelative/index.js
@@ -0,0 +1,12 @@
+var formatRelativeLocale = {
+ lastWeek: "'vorige' eeee 'om' p",
+ yesterday: "'gisteren om' p",
+ today: "'vandaag om' p",
+ tomorrow: "'morgen om' p",
+ nextWeek: "eeee 'om' p",
+ other: 'P'
+}
+
+export default function formatRelative(token, _date, _baseDate, _options) {
+ return formatRelativeLocale[token]
+}
diff --git a/date-fns/src/locale/nl-BE/_lib/localize/index.js b/date-fns/src/locale/nl-BE/_lib/localize/index.js
new file mode 100644
index 0000000..ce52b6e
--- /dev/null
+++ b/date-fns/src/locale/nl-BE/_lib/localize/index.js
@@ -0,0 +1,132 @@
+import buildLocalizeFn from '../../../_lib/buildLocalizeFn/index'
+
+var eraValues = {
+ narrow: ['v.C.', 'n.C.'],
+ abbreviated: ['v.Chr.', 'n.Chr.'],
+ wide: ['voor Christus', 'na Christus']
+}
+
+var quarterValues = {
+ narrow: ['1', '2', '3', '4'],
+ abbreviated: ['K1', 'K2', 'K3', 'K4'],
+ wide: ['1e kwartaal', '2e kwartaal', '3e kwartaal', '4e kwartaal']
+}
+
+var monthValues = {
+ narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],
+ abbreviated: [
+ 'jan.',
+ 'feb.',
+ 'mrt.',
+ 'apr.',
+ 'mei',
+ 'jun.',
+ 'jul.',
+ 'aug.',
+ 'sep.',
+ 'okt.',
+ 'nov.',
+ 'dec.'
+ ],
+ wide: [
+ 'januari',
+ 'februari',
+ 'maart',
+ 'april',
+ 'mei',
+ 'juni',
+ 'juli',
+ 'augustus',
+ 'september',
+ 'oktober',
+ 'november',
+ 'december'
+ ]
+}
+
+var dayValues = {
+ narrow: ['Z', 'M', 'D', 'W', 'D', 'V', 'Z'],
+ short: ['zo', 'ma', 'di', 'wo', 'do', 'vr', 'za'],
+ abbreviated: ['zon', 'maa', 'din', 'woe', 'don', 'vri', 'zat'],
+ wide: [
+ 'zondag',
+ 'maandag',
+ 'dinsdag',
+ 'woensdag',
+ 'donderdag',
+ 'vrijdag',
+ 'zaterdag'
+ ]
+}
+
+var dayPeriodValues = {
+ narrow: {
+ am: 'AM',
+ pm: 'PM',
+ midnight: 'middernacht',
+ noon: 'het middag',
+ morning: "'s ochtends",
+ afternoon: "'s namiddags",
+ evening: "'s avonds",
+ night: "'s nachts"
+ },
+ abbreviated: {
+ am: 'AM',
+ pm: 'PM',
+ midnight: 'middernacht',
+ noon: 'het middag',
+ morning: "'s ochtends",
+ afternoon: "'s namiddags",
+ evening: "'s avonds",
+ night: "'s nachts"
+ },
+ wide: {
+ am: 'AM',
+ pm: 'PM',
+ midnight: 'middernacht',
+ noon: 'het middag',
+ morning: "'s ochtends",
+ afternoon: "'s namiddags",
+ evening: "'s avonds",
+ night: "'s nachts"
+ }
+}
+
+function ordinalNumber(dirtyNumber) {
+ var number = Number(dirtyNumber)
+ return number + 'e'
+}
+
+var localize = {
+ ordinalNumber: ordinalNumber,
+
+ era: buildLocalizeFn({
+ values: eraValues,
+ defaultWidth: 'wide'
+ }),
+
+ quarter: buildLocalizeFn({
+ values: quarterValues,
+ defaultWidth: 'wide',
+ argumentCallback: function(quarter) {
+ return Number(quarter) - 1
+ }
+ }),
+
+ month: buildLocalizeFn({
+ values: monthValues,
+ defaultWidth: 'wide'
+ }),
+
+ day: buildLocalizeFn({
+ values: dayValues,
+ defaultWidth: 'wide'
+ }),
+
+ dayPeriod: buildLocalizeFn({
+ values: dayPeriodValues,
+ defaultWidth: 'wide'
+ })
+}
+
+export default localize
diff --git a/date-fns/src/locale/nl-BE/_lib/match/index.js b/date-fns/src/locale/nl-BE/_lib/match/index.js
new file mode 100644
index 0000000..cbc7bce
--- /dev/null
+++ b/date-fns/src/locale/nl-BE/_lib/match/index.js
@@ -0,0 +1,136 @@
+import buildMatchPatternFn from '../../../_lib/buildMatchPatternFn/index'
+import buildMatchFn from '../../../_lib/buildMatchFn/index'
+
+var matchOrdinalNumberPattern = /^(\d+)e?/i
+var parseOrdinalNumberPattern = /\d+/i
+
+var matchEraPatterns = {
+ narrow: /^([vn]\.? ?C\.?)/,
+ abbreviated: /^([vn]\. ?Chr\.?)/,
+ wide: /^((voor|na) Christus)/
+}
+var parseEraPatterns = {
+ any: [/^v/, /^n/]
+}
+
+var matchQuarterPatterns = {
+ narrow: /^[1234]/i,
+ abbreviated: /^K[1234]/i,
+ wide: /^[1234]e kwartaal/i
+}
+var parseQuarterPatterns = {
+ any: [/1/i, /2/i, /3/i, /4/i]
+}
+
+var matchMonthPatterns = {
+ narrow: /^[jfmasond]/i,
+ abbreviated: /^(jan.|feb.|mrt.|apr.|mei|jun.|jul.|aug.|sep.|okt.|nov.|dec.)/i,
+ wide: /^(januari|februari|maart|april|mei|juni|juli|augustus|september|oktober|november|december)/i
+}
+var parseMonthPatterns = {
+ narrow: [
+ /^j/i,
+ /^f/i,
+ /^m/i,
+ /^a/i,
+ /^m/i,
+ /^j/i,
+ /^j/i,
+ /^a/i,
+ /^s/i,
+ /^o/i,
+ /^n/i,
+ /^d/i
+ ],
+ any: [
+ /^jan/i,
+ /^feb/i,
+ /^m(r|a)/i,
+ /^apr/i,
+ /^mei/i,
+ /^jun/i,
+ /^jul/i,
+ /^aug/i,
+ /^sep/i,
+ /^okt/i,
+ /^nov/i,
+ /^dec/i
+ ]
+}
+
+var matchDayPatterns = {
+ narrow: /^[zmdwv]/i,
+ short: /^(zo|ma|di|wo|do|vr|za)/i,
+ abbreviated: /^(zon|maa|din|woe|don|vri|zat)/i,
+ wide: /^(zondag|maandag|dinsdag|woensdag|donderdag|vrijdag|zaterdag)/i
+}
+var parseDayPatterns = {
+ narrow: [/^z/i, /^m/i, /^d/i, /^w/i, /^d/i, /^v/i, /^z/i],
+ any: [/^zo/i, /^ma/i, /^di/i, /^wo/i, /^do/i, /^vr/i, /^za/i]
+}
+
+var matchDayPeriodPatterns = {
+ any: /^(am|pm|middernacht|het middaguur|'s (ochtends|middags|avonds|nachts))/i
+}
+var parseDayPeriodPatterns = {
+ any: {
+ am: /^am/i,
+ pm: /^pm/i,
+ midnight: /^middernacht/i,
+ noon: /^het middaguur/i,
+ morning: /ochtend/i,
+ afternoon: /middag/i,
+ evening: /avond/i,
+ night: /nacht/i
+ }
+}
+
+var match = {
+ ordinalNumber: buildMatchPatternFn({
+ matchPattern: matchOrdinalNumberPattern,
+ parsePattern: parseOrdinalNumberPattern,
+ valueCallback: function(value) {
+ return parseInt(value, 10)
+ }
+ }),
+
+ era: buildMatchFn({
+ matchPatterns: matchEraPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseEraPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ quarter: buildMatchFn({
+ matchPatterns: matchQuarterPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseQuarterPatterns,
+ defaultParseWidth: 'any',
+ valueCallback: function(index) {
+ return index + 1
+ }
+ }),
+
+ month: buildMatchFn({
+ matchPatterns: matchMonthPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseMonthPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ day: buildMatchFn({
+ matchPatterns: matchDayPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseDayPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ dayPeriod: buildMatchFn({
+ matchPatterns: matchDayPeriodPatterns,
+ defaultMatchWidth: 'any',
+ parsePatterns: parseDayPeriodPatterns,
+ defaultParseWidth: 'any'
+ })
+}
+
+export default match
diff --git a/date-fns/src/locale/nl-BE/index.d.ts b/date-fns/src/locale/nl-BE/index.d.ts
new file mode 100644
index 0000000..c2970a4
--- /dev/null
+++ b/date-fns/src/locale/nl-BE/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { nlBE } from 'date-fns/locale'
+export default nlBE
diff --git a/date-fns/src/locale/nl-BE/index.js b/date-fns/src/locale/nl-BE/index.js
new file mode 100644
index 0000000..787115d
--- /dev/null
+++ b/date-fns/src/locale/nl-BE/index.js
@@ -0,0 +1,31 @@
+import formatDistance from './_lib/formatDistance/index'
+import formatLong from './_lib/formatLong/index'
+import formatRelative from './_lib/formatRelative/index'
+import localize from './_lib/localize/index'
+import match from './_lib/match/index'
+
+/**
+ * @type {Locale}
+ * @category Locales
+ * @summary Dutch locale.
+ * @language Dutch
+ * @iso-639-2 nld
+ * @author Jorik Tangelder [@jtangelder]{@link https://github.com/jtangelder}
+ * @author Ruben Stolk [@rubenstolk]{@link https://github.com/rubenstolk}
+ * @author Lode Vanhove [@bitcrumb]{@link https://github.com/bitcrumb}
+ * @author Alex Hoeing [@dcbn]{@link https://github.com/dcbn}
+ */
+var locale = {
+ code: 'nl-BE',
+ formatDistance: formatDistance,
+ formatLong: formatLong,
+ formatRelative: formatRelative,
+ localize: localize,
+ match: match,
+ options: {
+ weekStartsOn: 1 /* Monday */,
+ firstWeekContainsDate: 4
+ }
+}
+
+export default locale
diff --git a/date-fns/src/locale/nl-BE/index.js.flow b/date-fns/src/locale/nl-BE/index.js.flow
new file mode 100644
index 0000000..b9dfe66
--- /dev/null
+++ b/date-fns/src/locale/nl-BE/index.js.flow
@@ -0,0 +1,35 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+declare module.exports: Locale
diff --git a/date-fns/src/locale/nl-BE/snapshot.md b/date-fns/src/locale/nl-BE/snapshot.md
new file mode 100644
index 0000000..83abbca
--- /dev/null
+++ b/date-fns/src/locale/nl-BE/snapshot.md
@@ -0,0 +1,304 @@
+# Dutch (nl-BE) locale
+
+## `format` and `parse`
+
+| Title | Token string | Date | `format` result | `parse` result |
+| ------------------------------- | ------------ | ------------------------ | ----------------------------------------------- | ------------------------ |
+| Calendar year | yo | 1987-02-11T12:13:14.015Z | 1987e | 1987-01-01T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 5e | 0005-01-01T00:00:00.000Z |
+| Local week-numbering year | Yo | 1987-02-11T12:13:14.015Z | 1987e | 1986-12-29T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 4e | 0003-12-29T00:00:00.000Z |
+| Quarter (formatting) | Qo | 2019-01-01T12:13:14.015Z | 1e | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2e | 2019-04-01T00:00:00.000Z |
+| | QQQ | 2019-01-01T12:13:14.015Z | K1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | K2 | 2019-04-01T00:00:00.000Z |
+| | QQQQ | 2019-01-01T12:13:14.015Z | 1e kwartaal | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2e kwartaal | 2019-04-01T00:00:00.000Z |
+| | QQQQQ | 2019-01-01T12:13:14.015Z | 1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2 | 2019-04-01T00:00:00.000Z |
+| Quarter (stand-alone) | qo | 2019-01-01T12:13:14.015Z | 1e | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2e | 2019-04-01T00:00:00.000Z |
+| | qqq | 2019-01-01T12:13:14.015Z | K1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | K2 | 2019-04-01T00:00:00.000Z |
+| | qqqq | 2019-01-01T12:13:14.015Z | 1e kwartaal | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2e kwartaal | 2019-04-01T00:00:00.000Z |
+| Month (formatting) | Mo | 2019-02-11T12:13:14.015Z | 2e | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7e | 2019-07-01T00:00:00.000Z |
+| | MMM | 2019-02-11T12:13:14.015Z | feb. | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | jul. | 2019-07-01T00:00:00.000Z |
+| | MMMM | 2019-02-11T12:13:14.015Z | februari | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | juli | 2019-07-01T00:00:00.000Z |
+| | MMMMM | 2019-02-11T12:13:14.015Z | F | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | J | 2019-01-01T00:00:00.000Z |
+| Month (stand-alone) | Lo | 2019-02-11T12:13:14.015Z | 2e | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7e | 2019-07-01T00:00:00.000Z |
+| | LLL | 2019-02-11T12:13:14.015Z | feb. | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | jul. | 2019-07-01T00:00:00.000Z |
+| | LLLL | 2019-02-11T12:13:14.015Z | februari | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | juli | 2019-07-01T00:00:00.000Z |
+| | LLLLL | 2019-02-11T12:13:14.015Z | F | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | J | 2019-01-01T00:00:00.000Z |
+| Local week of year | wo | 2019-01-01T12:13:14.015Z | 1e | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48e | 2019-11-25T00:00:00.000Z |
+| ISO week of year | Io | 2019-01-01T12:13:14.015Z | 1e | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48e | 2019-11-25T00:00:00.000Z |
+| Day of month | do | 2019-02-11T12:13:14.015Z | 11e | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-28T12:13:14.015Z | 28e | 2019-02-28T00:00:00.000Z |
+| Day of year | Do | 2019-02-11T12:13:14.015Z | 42e | 2019-02-11T00:00:00.000Z |
+| | | 2019-12-31T12:13:14.015Z | 365e | 2019-12-31T00:00:00.000Z |
+| Day of week (formatting) | E | 2019-02-11T12:13:14.015Z | maa | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | vri | 2019-02-15T00:00:00.000Z |
+| | EE | 2019-02-11T12:13:14.015Z | maa | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | vri | 2019-02-15T00:00:00.000Z |
+| | EEE | 2019-02-11T12:13:14.015Z | maa | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | vri | 2019-02-15T00:00:00.000Z |
+| | EEEE | 2019-02-11T12:13:14.015Z | maandag | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | vrijdag | 2019-02-15T00:00:00.000Z |
+| | EEEEE | 2019-02-11T12:13:14.015Z | M | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | V | 2019-02-15T00:00:00.000Z |
+| | EEEEEE | 2019-02-11T12:13:14.015Z | ma | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | vr | 2019-02-15T00:00:00.000Z |
+| ISO day of week (formatting) | io | 2019-02-11T12:13:14.015Z | 1e | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5e | 2019-02-15T00:00:00.000Z |
+| | iii | 2019-02-11T12:13:14.015Z | maa | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | vri | 2019-02-15T00:00:00.000Z |
+| | iiii | 2019-02-11T12:13:14.015Z | maandag | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | vrijdag | 2019-02-15T00:00:00.000Z |
+| | iiiii | 2019-02-11T12:13:14.015Z | M | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | V | 2019-02-15T00:00:00.000Z |
+| | iiiiii | 2019-02-11T12:13:14.015Z | ma | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | vr | 2019-02-15T00:00:00.000Z |
+| Local day of week (formatting) | eo | 2019-02-11T12:13:14.015Z | 1e | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5e | 2019-02-15T00:00:00.000Z |
+| | eee | 2019-02-11T12:13:14.015Z | maa | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | vri | 2019-02-15T00:00:00.000Z |
+| | eeee | 2019-02-11T12:13:14.015Z | maandag | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | vrijdag | 2019-02-15T00:00:00.000Z |
+| | eeeee | 2019-02-11T12:13:14.015Z | M | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | V | 2019-02-15T00:00:00.000Z |
+| | eeeeee | 2019-02-11T12:13:14.015Z | ma | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | vr | 2019-02-15T00:00:00.000Z |
+| Local day of week (stand-alone) | co | 2019-02-11T12:13:14.015Z | 1e | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5e | 2019-02-15T00:00:00.000Z |
+| | ccc | 2019-02-11T12:13:14.015Z | maa | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | vri | 2019-02-15T00:00:00.000Z |
+| | cccc | 2019-02-11T12:13:14.015Z | maandag | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | vrijdag | 2019-02-15T00:00:00.000Z |
+| | ccccc | 2019-02-11T12:13:14.015Z | M | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | V | 2019-02-15T00:00:00.000Z |
+| | cccccc | 2019-02-11T12:13:14.015Z | ma | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | vr | 2019-02-15T00:00:00.000Z |
+| AM, PM | a | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | aa | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | aaa | 2019-02-11T11:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | aaaa | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | aaaaa | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| AM, PM, noon, midnight | b | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | bb | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | bbb | 2019-02-11T11:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | bbbb | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | bbbbb | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| Flexible day period | B | 2019-02-11T11:13:14.015Z | 's ochtends | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | 's namiddags | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | 's avonds | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | 's nachts | 2019-02-11T00:00:00.000Z |
+| | BB | 2019-02-11T11:13:14.015Z | 's ochtends | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | 's namiddags | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | 's avonds | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | 's nachts | 2019-02-11T00:00:00.000Z |
+| | BBB | 2019-02-11T11:13:14.015Z | 's ochtends | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | 's namiddags | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | 's avonds | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | 's nachts | 2019-02-11T00:00:00.000Z |
+| | BBBB | 2019-02-11T11:13:14.015Z | 's ochtends | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | 's namiddags | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | 's avonds | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | 's nachts | 2019-02-11T00:00:00.000Z |
+| | BBBBB | 2019-02-11T11:13:14.015Z | 's ochtends | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | 's namiddags | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | 's avonds | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | 's nachts | 2019-02-11T00:00:00.000Z |
+| Hour [1-12] | ho | 2019-02-11T11:13:14.015Z | 11e | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11e | 2019-02-11T23:00:00.000Z |
+| Hour [0-23] | Ho | 2019-02-11T11:13:14.015Z | 11e | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23e | 2019-02-11T23:00:00.000Z |
+| Hour [0-11] | Ko | 2019-02-11T11:13:14.015Z | 11e | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11e | 2019-02-11T23:00:00.000Z |
+| Hour [1-24] | ko | 2019-02-11T11:13:14.015Z | 11e | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23e | 2019-02-11T23:00:00.000Z |
+| Minute | mo | 2019-01-01T12:01:14.015Z | 1e | 2019-01-01T12:01:00.000Z |
+| | | 2019-04-01T12:55:14.015Z | 55e | 2019-04-01T12:55:00.000Z |
+| Second | so | 2019-01-01T12:13:01.015Z | 1e | 2019-01-01T12:13:01.000Z |
+| | | 2019-04-01T12:13:55.015Z | 55e | 2019-04-01T12:13:55.000Z |
+| Long localized date | P | 1987-02-11T12:13:14.015Z | 11-02-1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29-05-1453 | 1453-05-29T00:00:00.000Z |
+| | PP | 1987-02-11T12:13:14.015Z | 11 feb. 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 mei 1453 | 1453-05-29T00:00:00.000Z |
+| | PPP | 1987-02-11T12:13:14.015Z | 11 februari 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 mei 1453 | 1453-05-29T00:00:00.000Z |
+| | PPPP | 1987-02-11T12:13:14.015Z | woensdag 11 februari 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | zondag 29 mei 1453 | 1453-05-29T00:00:00.000Z |
+| Long localized time | p | 1987-02-11T12:13:14.015Z | 12:13 | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 23:59 | 1453-05-29T23:59:00.000Z |
+| | pp | 1987-02-11T12:13:14.015Z | 12:13:14 | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 | 1453-05-29T23:59:59.000Z |
+| | ppp | 1987-02-11T12:13:14.015Z | 12:13:14 GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 GMT+0 | Errored |
+| | pppp | 1987-02-11T12:13:14.015Z | 12:13:14 GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 GMT+00:00 | Errored |
+| Combination of date and time | Pp | 1987-02-11T12:13:14.015Z | 11-02-1987, 12:13 | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29-05-1453, 23:59 | 1453-05-29T23:59:00.000Z |
+| | PPpp | 1987-02-11T12:13:14.015Z | 11 feb. 1987, 12:13:14 | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 mei 1453, 23:59:59 | 1453-05-29T23:59:59.000Z |
+| | PPPppp | 1987-02-11T12:13:14.015Z | 11 februari 1987 om 12:13:14 GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 29 mei 1453 om 23:59:59 GMT+0 | Errored |
+| | PPPPpppp | 1987-02-11T12:13:14.015Z | woensdag 11 februari 1987 om 12:13:14 GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | zondag 29 mei 1453 om 23:59:59 GMT+00:00 | Errored |
+
+## `formatDistance`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `includeSeconds: true` | `addSuffix: true` |
+| ------------------------ | --------------------- | ---------------------- | ----------------------------- |
+| 2006-01-01T00:00:00.000Z | ongeveer 6 jaar | ongeveer 6 jaar | over ongeveer 6 jaar |
+| 2005-01-01T00:00:00.000Z | ongeveer 5 jaar | ongeveer 5 jaar | over ongeveer 5 jaar |
+| 2004-01-01T00:00:00.000Z | ongeveer 4 jaar | ongeveer 4 jaar | over ongeveer 4 jaar |
+| 2003-01-01T00:00:00.000Z | ongeveer 3 jaar | ongeveer 3 jaar | over ongeveer 3 jaar |
+| 2002-01-01T00:00:00.000Z | ongeveer 2 jaar | ongeveer 2 jaar | over ongeveer 2 jaar |
+| 2001-06-01T00:00:00.000Z | meer dan 1 jaar | meer dan 1 jaar | over meer dan 1 jaar |
+| 2001-02-01T00:00:00.000Z | ongeveer 1 jaar | ongeveer 1 jaar | over ongeveer 1 jaar |
+| 2001-01-01T00:00:00.000Z | ongeveer 1 jaar | ongeveer 1 jaar | over ongeveer 1 jaar |
+| 2000-06-01T00:00:00.000Z | 5 maanden | 5 maanden | over 5 maanden |
+| 2000-03-01T00:00:00.000Z | 2 maanden | 2 maanden | over 2 maanden |
+| 2000-02-01T00:00:00.000Z | ongeveer 1 maand | ongeveer 1 maand | over ongeveer 1 maand |
+| 2000-01-15T00:00:00.000Z | 14 dagen | 14 dagen | over 14 dagen |
+| 2000-01-02T00:00:00.000Z | 1 dag | 1 dag | over 1 dag |
+| 2000-01-01T06:00:00.000Z | ongeveer 6 uur | ongeveer 6 uur | over ongeveer 6 uur |
+| 2000-01-01T01:00:00.000Z | ongeveer 1 uur | ongeveer 1 uur | over ongeveer 1 uur |
+| 2000-01-01T00:45:00.000Z | ongeveer 1 uur | ongeveer 1 uur | over ongeveer 1 uur |
+| 2000-01-01T00:30:00.000Z | 30 minuten | 30 minuten | over 30 minuten |
+| 2000-01-01T00:15:00.000Z | 15 minuten | 15 minuten | over 15 minuten |
+| 2000-01-01T00:01:00.000Z | een minuut | een minuut | over een minuut |
+| 2000-01-01T00:00:25.000Z | minder dan een minuut | een halve minuut | over minder dan een minuut |
+| 2000-01-01T00:00:15.000Z | minder dan een minuut | minder dan 20 seconden | over minder dan een minuut |
+| 2000-01-01T00:00:05.000Z | minder dan een minuut | minder dan 10 seconden | over minder dan een minuut |
+| 2000-01-01T00:00:00.000Z | minder dan een minuut | minder dan 5 seconden | minder dan een minuut geleden |
+| 1999-12-31T23:59:55.000Z | minder dan een minuut | minder dan 10 seconden | minder dan een minuut geleden |
+| 1999-12-31T23:59:45.000Z | minder dan een minuut | minder dan 20 seconden | minder dan een minuut geleden |
+| 1999-12-31T23:59:35.000Z | minder dan een minuut | een halve minuut | minder dan een minuut geleden |
+| 1999-12-31T23:59:00.000Z | een minuut | een minuut | een minuut geleden |
+| 1999-12-31T23:45:00.000Z | 15 minuten | 15 minuten | 15 minuten geleden |
+| 1999-12-31T23:30:00.000Z | 30 minuten | 30 minuten | 30 minuten geleden |
+| 1999-12-31T23:15:00.000Z | ongeveer 1 uur | ongeveer 1 uur | ongeveer 1 uur geleden |
+| 1999-12-31T23:00:00.000Z | ongeveer 1 uur | ongeveer 1 uur | ongeveer 1 uur geleden |
+| 1999-12-31T18:00:00.000Z | ongeveer 6 uur | ongeveer 6 uur | ongeveer 6 uur geleden |
+| 1999-12-30T00:00:00.000Z | 2 dagen | 2 dagen | 2 dagen geleden |
+| 1999-12-15T00:00:00.000Z | 17 dagen | 17 dagen | 17 dagen geleden |
+| 1999-12-01T00:00:00.000Z | ongeveer 1 maand | ongeveer 1 maand | ongeveer 1 maand geleden |
+| 1999-11-01T00:00:00.000Z | 2 maanden | 2 maanden | 2 maanden geleden |
+| 1999-06-01T00:00:00.000Z | 7 maanden | 7 maanden | 7 maanden geleden |
+| 1999-01-01T00:00:00.000Z | ongeveer 1 jaar | ongeveer 1 jaar | ongeveer 1 jaar geleden |
+| 1998-12-01T00:00:00.000Z | ongeveer 1 jaar | ongeveer 1 jaar | ongeveer 1 jaar geleden |
+| 1998-06-01T00:00:00.000Z | meer dan 1 jaar | meer dan 1 jaar | meer dan 1 jaar geleden |
+| 1998-01-01T00:00:00.000Z | ongeveer 2 jaar | ongeveer 2 jaar | ongeveer 2 jaar geleden |
+| 1997-01-01T00:00:00.000Z | ongeveer 3 jaar | ongeveer 3 jaar | ongeveer 3 jaar geleden |
+| 1996-01-01T00:00:00.000Z | ongeveer 4 jaar | ongeveer 4 jaar | ongeveer 4 jaar geleden |
+| 1995-01-01T00:00:00.000Z | ongeveer 5 jaar | ongeveer 5 jaar | ongeveer 5 jaar geleden |
+| 1994-01-01T00:00:00.000Z | ongeveer 6 jaar | ongeveer 6 jaar | ongeveer 6 jaar geleden |
+
+## `formatDistanceStrict`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `addSuffix: true` | With forced unit (i.e. `hour`) |
+| ------------------------ | ----------- | ------------------- | ------------------------------ |
+| 2006-01-01T00:00:00.000Z | 6 jaar | over 6 jaar | 52608 uur |
+| 2005-01-01T00:00:00.000Z | 5 jaar | over 5 jaar | 43848 uur |
+| 2004-01-01T00:00:00.000Z | 4 jaar | over 4 jaar | 35064 uur |
+| 2003-01-01T00:00:00.000Z | 3 jaar | over 3 jaar | 26304 uur |
+| 2002-01-01T00:00:00.000Z | 2 jaar | over 2 jaar | 17544 uur |
+| 2001-06-01T00:00:00.000Z | 1 jaar | over 1 jaar | 12408 uur |
+| 2001-02-01T00:00:00.000Z | 1 jaar | over 1 jaar | 9528 uur |
+| 2001-01-01T00:00:00.000Z | 1 jaar | over 1 jaar | 8784 uur |
+| 2000-06-01T00:00:00.000Z | 5 maanden | over 5 maanden | 3648 uur |
+| 2000-03-01T00:00:00.000Z | 2 maanden | over 2 maanden | 1440 uur |
+| 2000-02-01T00:00:00.000Z | 1 maand | over 1 maand | 744 uur |
+| 2000-01-15T00:00:00.000Z | 14 dagen | over 14 dagen | 336 uur |
+| 2000-01-02T00:00:00.000Z | 1 dag | over 1 dag | 24 uur |
+| 2000-01-01T06:00:00.000Z | 6 uur | over 6 uur | 6 uur |
+| 2000-01-01T01:00:00.000Z | 1 uur | over 1 uur | 1 uur |
+| 2000-01-01T00:45:00.000Z | 45 minuten | over 45 minuten | 1 uur |
+| 2000-01-01T00:30:00.000Z | 30 minuten | over 30 minuten | 1 uur |
+| 2000-01-01T00:15:00.000Z | 15 minuten | over 15 minuten | 0 uur |
+| 2000-01-01T00:01:00.000Z | een minuut | over een minuut | 0 uur |
+| 2000-01-01T00:00:25.000Z | 25 seconden | over 25 seconden | 0 uur |
+| 2000-01-01T00:00:15.000Z | 15 seconden | over 15 seconden | 0 uur |
+| 2000-01-01T00:00:05.000Z | 5 seconden | over 5 seconden | 0 uur |
+| 2000-01-01T00:00:00.000Z | 0 seconden | 0 seconden geleden | 0 uur |
+| 1999-12-31T23:59:55.000Z | 5 seconden | 5 seconden geleden | 0 uur |
+| 1999-12-31T23:59:45.000Z | 15 seconden | 15 seconden geleden | 0 uur |
+| 1999-12-31T23:59:35.000Z | 25 seconden | 25 seconden geleden | 0 uur |
+| 1999-12-31T23:59:00.000Z | een minuut | een minuut geleden | 0 uur |
+| 1999-12-31T23:45:00.000Z | 15 minuten | 15 minuten geleden | 0 uur |
+| 1999-12-31T23:30:00.000Z | 30 minuten | 30 minuten geleden | 1 uur |
+| 1999-12-31T23:15:00.000Z | 45 minuten | 45 minuten geleden | 1 uur |
+| 1999-12-31T23:00:00.000Z | 1 uur | 1 uur geleden | 1 uur |
+| 1999-12-31T18:00:00.000Z | 6 uur | 6 uur geleden | 6 uur |
+| 1999-12-30T00:00:00.000Z | 2 dagen | 2 dagen geleden | 48 uur |
+| 1999-12-15T00:00:00.000Z | 17 dagen | 17 dagen geleden | 408 uur |
+| 1999-12-01T00:00:00.000Z | 1 maand | 1 maand geleden | 744 uur |
+| 1999-11-01T00:00:00.000Z | 2 maanden | 2 maanden geleden | 1464 uur |
+| 1999-06-01T00:00:00.000Z | 7 maanden | 7 maanden geleden | 5136 uur |
+| 1999-01-01T00:00:00.000Z | 1 jaar | 1 jaar geleden | 8760 uur |
+| 1998-12-01T00:00:00.000Z | 1 jaar | 1 jaar geleden | 9504 uur |
+| 1998-06-01T00:00:00.000Z | 2 jaar | 2 jaar geleden | 13896 uur |
+| 1998-01-01T00:00:00.000Z | 2 jaar | 2 jaar geleden | 17520 uur |
+| 1997-01-01T00:00:00.000Z | 3 jaar | 3 jaar geleden | 26280 uur |
+| 1996-01-01T00:00:00.000Z | 4 jaar | 4 jaar geleden | 35064 uur |
+| 1995-01-01T00:00:00.000Z | 5 jaar | 5 jaar geleden | 43824 uur |
+| 1994-01-01T00:00:00.000Z | 6 jaar | 6 jaar geleden | 52584 uur |
+
+## `formatRelative`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result |
+| ------------------------ | ----------------------- |
+| 2000-01-10T00:00:00.000Z | 10-01-2000 |
+| 2000-01-05T00:00:00.000Z | woensdag om 00:00 |
+| 2000-01-02T00:00:00.000Z | morgen om 00:00 |
+| 2000-01-01T00:00:00.000Z | vandaag om 00:00 |
+| 1999-12-31T00:00:00.000Z | gisteren om 00:00 |
+| 1999-12-27T00:00:00.000Z | vorige maandag om 00:00 |
+| 1999-12-21T00:00:00.000Z | 21-12-1999 |
diff --git a/date-fns/src/locale/nl/_lib/formatDistance/index.js b/date-fns/src/locale/nl/_lib/formatDistance/index.js
new file mode 100644
index 0000000..f1c2d88
--- /dev/null
+++ b/date-fns/src/locale/nl/_lib/formatDistance/index.js
@@ -0,0 +1,101 @@
+var formatDistanceLocale = {
+ lessThanXSeconds: {
+ one: 'minder dan een seconde',
+ other: 'minder dan {{count}} seconden'
+ },
+
+ xSeconds: {
+ one: '1 seconde',
+ other: '{{count}} seconden'
+ },
+
+ halfAMinute: 'een halve minuut',
+
+ lessThanXMinutes: {
+ one: 'minder dan een minuut',
+ other: 'minder dan {{count}} minuten'
+ },
+
+ xMinutes: {
+ one: 'een minuut',
+ other: '{{count}} minuten'
+ },
+
+ aboutXHours: {
+ one: 'ongeveer 1 uur',
+ other: 'ongeveer {{count}} uur'
+ },
+
+ xHours: {
+ one: '1 uur',
+ other: '{{count}} uur'
+ },
+
+ xDays: {
+ one: '1 dag',
+ other: '{{count}} dagen'
+ },
+
+ aboutXWeeks: {
+ one: 'ongeveer 1 week',
+ other: 'ongeveer {{count}} weken'
+ },
+
+ xWeeks: {
+ one: '1 week',
+ other: '{{count}} weken'
+ },
+
+ aboutXMonths: {
+ one: 'ongeveer 1 maand',
+ other: 'ongeveer {{count}} maanden'
+ },
+
+ xMonths: {
+ one: '1 maand',
+ other: '{{count}} maanden'
+ },
+
+ aboutXYears: {
+ one: 'ongeveer 1 jaar',
+ other: 'ongeveer {{count}} jaar'
+ },
+
+ xYears: {
+ one: '1 jaar',
+ other: '{{count}} jaar'
+ },
+
+ overXYears: {
+ one: 'meer dan 1 jaar',
+ other: 'meer dan {{count}} jaar'
+ },
+
+ almostXYears: {
+ one: 'bijna 1 jaar',
+ other: 'bijna {{count}} jaar'
+ }
+}
+
+export default function formatDistance(token, count, options) {
+ options = options || {}
+
+ var result
+ if (typeof formatDistanceLocale[token] === 'string') {
+ result = formatDistanceLocale[token]
+ } else if (count === 1) {
+ result = formatDistanceLocale[token].one
+ } else {
+ result = formatDistanceLocale[token].other.replace('{{count}}', count)
+ }
+
+ if (options.addSuffix) {
+ if (options.comparison > 0) {
+ return 'over ' + result
+ } else {
+ return result + ' geleden'
+ }
+ }
+
+ return result
+}
diff --git a/date-fns/src/locale/nl/_lib/formatLong/index.js b/date-fns/src/locale/nl/_lib/formatLong/index.js
new file mode 100644
index 0000000..2b6cb47
--- /dev/null
+++ b/date-fns/src/locale/nl/_lib/formatLong/index.js
@@ -0,0 +1,41 @@
+import buildFormatLongFn from '../../../_lib/buildFormatLongFn/index'
+
+var dateFormats = {
+ full: 'EEEE d MMMM y',
+ long: 'd MMMM y',
+ medium: 'd MMM y',
+ short: 'dd-MM-y'
+}
+
+var timeFormats = {
+ full: 'HH:mm:ss zzzz',
+ long: 'HH:mm:ss z',
+ medium: 'HH:mm:ss',
+ short: 'HH:mm'
+}
+
+var dateTimeFormats = {
+ full: "{{date}} 'om' {{time}}",
+ long: "{{date}} 'om' {{time}}",
+ medium: '{{date}}, {{time}}',
+ short: '{{date}}, {{time}}'
+}
+
+var formatLong = {
+ date: buildFormatLongFn({
+ formats: dateFormats,
+ defaultWidth: 'full'
+ }),
+
+ time: buildFormatLongFn({
+ formats: timeFormats,
+ defaultWidth: 'full'
+ }),
+
+ dateTime: buildFormatLongFn({
+ formats: dateTimeFormats,
+ defaultWidth: 'full'
+ })
+}
+
+export default formatLong
diff --git a/date-fns/src/locale/nl/_lib/formatRelative/index.js b/date-fns/src/locale/nl/_lib/formatRelative/index.js
new file mode 100644
index 0000000..63473fa
--- /dev/null
+++ b/date-fns/src/locale/nl/_lib/formatRelative/index.js
@@ -0,0 +1,12 @@
+var formatRelativeLocale = {
+ lastWeek: "'afgelopen' eeee 'om' p",
+ yesterday: "'gisteren om' p",
+ today: "'vandaag om' p",
+ tomorrow: "'morgen om' p",
+ nextWeek: "eeee 'om' p",
+ other: 'P'
+}
+
+export default function formatRelative(token, _date, _baseDate, _options) {
+ return formatRelativeLocale[token]
+}
diff --git a/date-fns/src/locale/nl/_lib/localize/index.js b/date-fns/src/locale/nl/_lib/localize/index.js
new file mode 100644
index 0000000..e126041
--- /dev/null
+++ b/date-fns/src/locale/nl/_lib/localize/index.js
@@ -0,0 +1,132 @@
+import buildLocalizeFn from '../../../_lib/buildLocalizeFn/index'
+
+var eraValues = {
+ narrow: ['v.C.', 'n.C.'],
+ abbreviated: ['v.Chr.', 'n.Chr.'],
+ wide: ['voor Christus', 'na Christus']
+}
+
+var quarterValues = {
+ narrow: ['1', '2', '3', '4'],
+ abbreviated: ['K1', 'K2', 'K3', 'K4'],
+ wide: ['1e kwartaal', '2e kwartaal', '3e kwartaal', '4e kwartaal']
+}
+
+var monthValues = {
+ narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],
+ abbreviated: [
+ 'jan.',
+ 'feb.',
+ 'mrt.',
+ 'apr.',
+ 'mei',
+ 'jun.',
+ 'jul.',
+ 'aug.',
+ 'sep.',
+ 'okt.',
+ 'nov.',
+ 'dec.'
+ ],
+ wide: [
+ 'januari',
+ 'februari',
+ 'maart',
+ 'april',
+ 'mei',
+ 'juni',
+ 'juli',
+ 'augustus',
+ 'september',
+ 'oktober',
+ 'november',
+ 'december'
+ ]
+}
+
+var dayValues = {
+ narrow: ['Z', 'M', 'D', 'W', 'D', 'V', 'Z'],
+ short: ['zo', 'ma', 'di', 'wo', 'do', 'vr', 'za'],
+ abbreviated: ['zon', 'maa', 'din', 'woe', 'don', 'vri', 'zat'],
+ wide: [
+ 'zondag',
+ 'maandag',
+ 'dinsdag',
+ 'woensdag',
+ 'donderdag',
+ 'vrijdag',
+ 'zaterdag'
+ ]
+}
+
+var dayPeriodValues = {
+ narrow: {
+ am: 'AM',
+ pm: 'PM',
+ midnight: 'middernacht',
+ noon: 'het middaguur',
+ morning: "'s ochtends",
+ afternoon: "'s middags",
+ evening: "'s avonds",
+ night: "'s nachts"
+ },
+ abbreviated: {
+ am: 'AM',
+ pm: 'PM',
+ midnight: 'middernacht',
+ noon: 'het middaguur',
+ morning: "'s ochtends",
+ afternoon: "'s middags",
+ evening: "'s avonds",
+ night: "'s nachts"
+ },
+ wide: {
+ am: 'AM',
+ pm: 'PM',
+ midnight: 'middernacht',
+ noon: 'het middaguur',
+ morning: "'s ochtends",
+ afternoon: "'s middags",
+ evening: "'s avonds",
+ night: "'s nachts"
+ }
+}
+
+function ordinalNumber(dirtyNumber) {
+ var number = Number(dirtyNumber)
+ return number + 'e'
+}
+
+var localize = {
+ ordinalNumber: ordinalNumber,
+
+ era: buildLocalizeFn({
+ values: eraValues,
+ defaultWidth: 'wide'
+ }),
+
+ quarter: buildLocalizeFn({
+ values: quarterValues,
+ defaultWidth: 'wide',
+ argumentCallback: function(quarter) {
+ return Number(quarter) - 1
+ }
+ }),
+
+ month: buildLocalizeFn({
+ values: monthValues,
+ defaultWidth: 'wide'
+ }),
+
+ day: buildLocalizeFn({
+ values: dayValues,
+ defaultWidth: 'wide'
+ }),
+
+ dayPeriod: buildLocalizeFn({
+ values: dayPeriodValues,
+ defaultWidth: 'wide'
+ })
+}
+
+export default localize
diff --git a/date-fns/src/locale/nl/_lib/match/index.js b/date-fns/src/locale/nl/_lib/match/index.js
new file mode 100644
index 0000000..cbc7bce
--- /dev/null
+++ b/date-fns/src/locale/nl/_lib/match/index.js
@@ -0,0 +1,136 @@
+import buildMatchPatternFn from '../../../_lib/buildMatchPatternFn/index'
+import buildMatchFn from '../../../_lib/buildMatchFn/index'
+
+var matchOrdinalNumberPattern = /^(\d+)e?/i
+var parseOrdinalNumberPattern = /\d+/i
+
+var matchEraPatterns = {
+ narrow: /^([vn]\.? ?C\.?)/,
+ abbreviated: /^([vn]\. ?Chr\.?)/,
+ wide: /^((voor|na) Christus)/
+}
+var parseEraPatterns = {
+ any: [/^v/, /^n/]
+}
+
+var matchQuarterPatterns = {
+ narrow: /^[1234]/i,
+ abbreviated: /^K[1234]/i,
+ wide: /^[1234]e kwartaal/i
+}
+var parseQuarterPatterns = {
+ any: [/1/i, /2/i, /3/i, /4/i]
+}
+
+var matchMonthPatterns = {
+ narrow: /^[jfmasond]/i,
+ abbreviated: /^(jan.|feb.|mrt.|apr.|mei|jun.|jul.|aug.|sep.|okt.|nov.|dec.)/i,
+ wide: /^(januari|februari|maart|april|mei|juni|juli|augustus|september|oktober|november|december)/i
+}
+var parseMonthPatterns = {
+ narrow: [
+ /^j/i,
+ /^f/i,
+ /^m/i,
+ /^a/i,
+ /^m/i,
+ /^j/i,
+ /^j/i,
+ /^a/i,
+ /^s/i,
+ /^o/i,
+ /^n/i,
+ /^d/i
+ ],
+ any: [
+ /^jan/i,
+ /^feb/i,
+ /^m(r|a)/i,
+ /^apr/i,
+ /^mei/i,
+ /^jun/i,
+ /^jul/i,
+ /^aug/i,
+ /^sep/i,
+ /^okt/i,
+ /^nov/i,
+ /^dec/i
+ ]
+}
+
+var matchDayPatterns = {
+ narrow: /^[zmdwv]/i,
+ short: /^(zo|ma|di|wo|do|vr|za)/i,
+ abbreviated: /^(zon|maa|din|woe|don|vri|zat)/i,
+ wide: /^(zondag|maandag|dinsdag|woensdag|donderdag|vrijdag|zaterdag)/i
+}
+var parseDayPatterns = {
+ narrow: [/^z/i, /^m/i, /^d/i, /^w/i, /^d/i, /^v/i, /^z/i],
+ any: [/^zo/i, /^ma/i, /^di/i, /^wo/i, /^do/i, /^vr/i, /^za/i]
+}
+
+var matchDayPeriodPatterns = {
+ any: /^(am|pm|middernacht|het middaguur|'s (ochtends|middags|avonds|nachts))/i
+}
+var parseDayPeriodPatterns = {
+ any: {
+ am: /^am/i,
+ pm: /^pm/i,
+ midnight: /^middernacht/i,
+ noon: /^het middaguur/i,
+ morning: /ochtend/i,
+ afternoon: /middag/i,
+ evening: /avond/i,
+ night: /nacht/i
+ }
+}
+
+var match = {
+ ordinalNumber: buildMatchPatternFn({
+ matchPattern: matchOrdinalNumberPattern,
+ parsePattern: parseOrdinalNumberPattern,
+ valueCallback: function(value) {
+ return parseInt(value, 10)
+ }
+ }),
+
+ era: buildMatchFn({
+ matchPatterns: matchEraPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseEraPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ quarter: buildMatchFn({
+ matchPatterns: matchQuarterPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseQuarterPatterns,
+ defaultParseWidth: 'any',
+ valueCallback: function(index) {
+ return index + 1
+ }
+ }),
+
+ month: buildMatchFn({
+ matchPatterns: matchMonthPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseMonthPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ day: buildMatchFn({
+ matchPatterns: matchDayPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseDayPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ dayPeriod: buildMatchFn({
+ matchPatterns: matchDayPeriodPatterns,
+ defaultMatchWidth: 'any',
+ parsePatterns: parseDayPeriodPatterns,
+ defaultParseWidth: 'any'
+ })
+}
+
+export default match
diff --git a/date-fns/src/locale/nl/index.d.ts b/date-fns/src/locale/nl/index.d.ts
new file mode 100644
index 0000000..eb92f4e
--- /dev/null
+++ b/date-fns/src/locale/nl/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { nl } from 'date-fns/locale'
+export default nl
diff --git a/date-fns/src/locale/nl/index.js b/date-fns/src/locale/nl/index.js
new file mode 100644
index 0000000..1e0b931
--- /dev/null
+++ b/date-fns/src/locale/nl/index.js
@@ -0,0 +1,33 @@
+import formatDistance from './_lib/formatDistance/index'
+import formatLong from './_lib/formatLong/index'
+import formatRelative from './_lib/formatRelative/index'
+import localize from './_lib/localize/index'
+import match from './_lib/match/index'
+
+/**
+ * @type {Locale}
+ * @category Locales
+ * @summary Dutch locale.
+ * @language Dutch
+ * @iso-639-2 nld
+ * @author Jorik Tangelder [@jtangelder]{@link https://github.com/jtangelder}
+ * @author Ruben Stolk [@rubenstolk]{@link https://github.com/rubenstolk}
+ * @author Lode Vanhove [@bitcrumb]{@link https://github.com/bitcrumb}
+ * @author Edo Rivai [@edorivai]{@link https://github.com/edorivai}
+ * @author Niels Keurentjes [@curry684]{@link https://github.com/curry684}
+ * @author Stefan Vermaas [@stefanvermaas]{@link https://github.com/stefanvermaas}
+ */
+var locale = {
+ code: 'nl',
+ formatDistance: formatDistance,
+ formatLong: formatLong,
+ formatRelative: formatRelative,
+ localize: localize,
+ match: match,
+ options: {
+ weekStartsOn: 1 /* Monday */,
+ firstWeekContainsDate: 4
+ }
+}
+
+export default locale
diff --git a/date-fns/src/locale/nl/index.js.flow b/date-fns/src/locale/nl/index.js.flow
new file mode 100644
index 0000000..b9dfe66
--- /dev/null
+++ b/date-fns/src/locale/nl/index.js.flow
@@ -0,0 +1,35 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+declare module.exports: Locale
diff --git a/date-fns/src/locale/nl/snapshot.md b/date-fns/src/locale/nl/snapshot.md
new file mode 100644
index 0000000..18b8556
--- /dev/null
+++ b/date-fns/src/locale/nl/snapshot.md
@@ -0,0 +1,304 @@
+# Dutch (nl) locale
+
+## `format` and `parse`
+
+| Title | Token string | Date | `format` result | `parse` result |
+| ------------------------------- | ------------ | ------------------------ | ----------------------------------------------- | ------------------------ |
+| Calendar year | yo | 1987-02-11T12:13:14.015Z | 1987e | 1987-01-01T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 5e | 0005-01-01T00:00:00.000Z |
+| Local week-numbering year | Yo | 1987-02-11T12:13:14.015Z | 1987e | 1986-12-29T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 4e | 0003-12-29T00:00:00.000Z |
+| Quarter (formatting) | Qo | 2019-01-01T12:13:14.015Z | 1e | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2e | 2019-04-01T00:00:00.000Z |
+| | QQQ | 2019-01-01T12:13:14.015Z | K1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | K2 | 2019-04-01T00:00:00.000Z |
+| | QQQQ | 2019-01-01T12:13:14.015Z | 1e kwartaal | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2e kwartaal | 2019-04-01T00:00:00.000Z |
+| | QQQQQ | 2019-01-01T12:13:14.015Z | 1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2 | 2019-04-01T00:00:00.000Z |
+| Quarter (stand-alone) | qo | 2019-01-01T12:13:14.015Z | 1e | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2e | 2019-04-01T00:00:00.000Z |
+| | qqq | 2019-01-01T12:13:14.015Z | K1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | K2 | 2019-04-01T00:00:00.000Z |
+| | qqqq | 2019-01-01T12:13:14.015Z | 1e kwartaal | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2e kwartaal | 2019-04-01T00:00:00.000Z |
+| Month (formatting) | Mo | 2019-02-11T12:13:14.015Z | 2e | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7e | 2019-07-01T00:00:00.000Z |
+| | MMM | 2019-02-11T12:13:14.015Z | feb. | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | jul. | 2019-07-01T00:00:00.000Z |
+| | MMMM | 2019-02-11T12:13:14.015Z | februari | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | juli | 2019-07-01T00:00:00.000Z |
+| | MMMMM | 2019-02-11T12:13:14.015Z | F | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | J | 2019-01-01T00:00:00.000Z |
+| Month (stand-alone) | Lo | 2019-02-11T12:13:14.015Z | 2e | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7e | 2019-07-01T00:00:00.000Z |
+| | LLL | 2019-02-11T12:13:14.015Z | feb. | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | jul. | 2019-07-01T00:00:00.000Z |
+| | LLLL | 2019-02-11T12:13:14.015Z | februari | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | juli | 2019-07-01T00:00:00.000Z |
+| | LLLLL | 2019-02-11T12:13:14.015Z | F | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | J | 2019-01-01T00:00:00.000Z |
+| Local week of year | wo | 2019-01-01T12:13:14.015Z | 1e | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48e | 2019-11-25T00:00:00.000Z |
+| ISO week of year | Io | 2019-01-01T12:13:14.015Z | 1e | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48e | 2019-11-25T00:00:00.000Z |
+| Day of month | do | 2019-02-11T12:13:14.015Z | 11e | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-28T12:13:14.015Z | 28e | 2019-02-28T00:00:00.000Z |
+| Day of year | Do | 2019-02-11T12:13:14.015Z | 42e | 2019-02-11T00:00:00.000Z |
+| | | 2019-12-31T12:13:14.015Z | 365e | 2019-12-31T00:00:00.000Z |
+| Day of week (formatting) | E | 2019-02-11T12:13:14.015Z | maa | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | vri | 2019-02-15T00:00:00.000Z |
+| | EE | 2019-02-11T12:13:14.015Z | maa | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | vri | 2019-02-15T00:00:00.000Z |
+| | EEE | 2019-02-11T12:13:14.015Z | maa | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | vri | 2019-02-15T00:00:00.000Z |
+| | EEEE | 2019-02-11T12:13:14.015Z | maandag | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | vrijdag | 2019-02-15T00:00:00.000Z |
+| | EEEEE | 2019-02-11T12:13:14.015Z | M | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | V | 2019-02-15T00:00:00.000Z |
+| | EEEEEE | 2019-02-11T12:13:14.015Z | ma | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | vr | 2019-02-15T00:00:00.000Z |
+| ISO day of week (formatting) | io | 2019-02-11T12:13:14.015Z | 1e | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5e | 2019-02-15T00:00:00.000Z |
+| | iii | 2019-02-11T12:13:14.015Z | maa | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | vri | 2019-02-15T00:00:00.000Z |
+| | iiii | 2019-02-11T12:13:14.015Z | maandag | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | vrijdag | 2019-02-15T00:00:00.000Z |
+| | iiiii | 2019-02-11T12:13:14.015Z | M | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | V | 2019-02-15T00:00:00.000Z |
+| | iiiiii | 2019-02-11T12:13:14.015Z | ma | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | vr | 2019-02-15T00:00:00.000Z |
+| Local day of week (formatting) | eo | 2019-02-11T12:13:14.015Z | 1e | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5e | 2019-02-15T00:00:00.000Z |
+| | eee | 2019-02-11T12:13:14.015Z | maa | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | vri | 2019-02-15T00:00:00.000Z |
+| | eeee | 2019-02-11T12:13:14.015Z | maandag | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | vrijdag | 2019-02-15T00:00:00.000Z |
+| | eeeee | 2019-02-11T12:13:14.015Z | M | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | V | 2019-02-15T00:00:00.000Z |
+| | eeeeee | 2019-02-11T12:13:14.015Z | ma | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | vr | 2019-02-15T00:00:00.000Z |
+| Local day of week (stand-alone) | co | 2019-02-11T12:13:14.015Z | 1e | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5e | 2019-02-15T00:00:00.000Z |
+| | ccc | 2019-02-11T12:13:14.015Z | maa | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | vri | 2019-02-15T00:00:00.000Z |
+| | cccc | 2019-02-11T12:13:14.015Z | maandag | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | vrijdag | 2019-02-15T00:00:00.000Z |
+| | ccccc | 2019-02-11T12:13:14.015Z | M | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | V | 2019-02-15T00:00:00.000Z |
+| | cccccc | 2019-02-11T12:13:14.015Z | ma | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | vr | 2019-02-15T00:00:00.000Z |
+| AM, PM | a | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | aa | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | aaa | 2019-02-11T11:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | aaaa | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | aaaaa | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| AM, PM, noon, midnight | b | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | bb | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | bbb | 2019-02-11T11:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | bbbb | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | bbbbb | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| Flexible day period | B | 2019-02-11T11:13:14.015Z | 's ochtends | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | 's middags | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | 's avonds | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | 's nachts | 2019-02-11T00:00:00.000Z |
+| | BB | 2019-02-11T11:13:14.015Z | 's ochtends | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | 's middags | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | 's avonds | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | 's nachts | 2019-02-11T00:00:00.000Z |
+| | BBB | 2019-02-11T11:13:14.015Z | 's ochtends | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | 's middags | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | 's avonds | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | 's nachts | 2019-02-11T00:00:00.000Z |
+| | BBBB | 2019-02-11T11:13:14.015Z | 's ochtends | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | 's middags | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | 's avonds | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | 's nachts | 2019-02-11T00:00:00.000Z |
+| | BBBBB | 2019-02-11T11:13:14.015Z | 's ochtends | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | 's middags | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | 's avonds | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | 's nachts | 2019-02-11T00:00:00.000Z |
+| Hour [1-12] | ho | 2019-02-11T11:13:14.015Z | 11e | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11e | 2019-02-11T23:00:00.000Z |
+| Hour [0-23] | Ho | 2019-02-11T11:13:14.015Z | 11e | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23e | 2019-02-11T23:00:00.000Z |
+| Hour [0-11] | Ko | 2019-02-11T11:13:14.015Z | 11e | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11e | 2019-02-11T23:00:00.000Z |
+| Hour [1-24] | ko | 2019-02-11T11:13:14.015Z | 11e | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23e | 2019-02-11T23:00:00.000Z |
+| Minute | mo | 2019-01-01T12:01:14.015Z | 1e | 2019-01-01T12:01:00.000Z |
+| | | 2019-04-01T12:55:14.015Z | 55e | 2019-04-01T12:55:00.000Z |
+| Second | so | 2019-01-01T12:13:01.015Z | 1e | 2019-01-01T12:13:01.000Z |
+| | | 2019-04-01T12:13:55.015Z | 55e | 2019-04-01T12:13:55.000Z |
+| Long localized date | P | 1987-02-11T12:13:14.015Z | 11-02-1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29-05-1453 | 1453-05-29T00:00:00.000Z |
+| | PP | 1987-02-11T12:13:14.015Z | 11 feb. 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 mei 1453 | 1453-05-29T00:00:00.000Z |
+| | PPP | 1987-02-11T12:13:14.015Z | 11 februari 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 mei 1453 | 1453-05-29T00:00:00.000Z |
+| | PPPP | 1987-02-11T12:13:14.015Z | woensdag 11 februari 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | zondag 29 mei 1453 | 1453-05-29T00:00:00.000Z |
+| Long localized time | p | 1987-02-11T12:13:14.015Z | 12:13 | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 23:59 | 1453-05-29T23:59:00.000Z |
+| | pp | 1987-02-11T12:13:14.015Z | 12:13:14 | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 | 1453-05-29T23:59:59.000Z |
+| | ppp | 1987-02-11T12:13:14.015Z | 12:13:14 GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 GMT+0 | Errored |
+| | pppp | 1987-02-11T12:13:14.015Z | 12:13:14 GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 GMT+00:00 | Errored |
+| Combination of date and time | Pp | 1987-02-11T12:13:14.015Z | 11-02-1987, 12:13 | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29-05-1453, 23:59 | 1453-05-29T23:59:00.000Z |
+| | PPpp | 1987-02-11T12:13:14.015Z | 11 feb. 1987, 12:13:14 | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 mei 1453, 23:59:59 | 1453-05-29T23:59:59.000Z |
+| | PPPppp | 1987-02-11T12:13:14.015Z | 11 februari 1987 om 12:13:14 GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 29 mei 1453 om 23:59:59 GMT+0 | Errored |
+| | PPPPpppp | 1987-02-11T12:13:14.015Z | woensdag 11 februari 1987 om 12:13:14 GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | zondag 29 mei 1453 om 23:59:59 GMT+00:00 | Errored |
+
+## `formatDistance`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `includeSeconds: true` | `addSuffix: true` |
+| ------------------------ | --------------------- | ---------------------- | ----------------------------- |
+| 2006-01-01T00:00:00.000Z | ongeveer 6 jaar | ongeveer 6 jaar | over ongeveer 6 jaar |
+| 2005-01-01T00:00:00.000Z | ongeveer 5 jaar | ongeveer 5 jaar | over ongeveer 5 jaar |
+| 2004-01-01T00:00:00.000Z | ongeveer 4 jaar | ongeveer 4 jaar | over ongeveer 4 jaar |
+| 2003-01-01T00:00:00.000Z | ongeveer 3 jaar | ongeveer 3 jaar | over ongeveer 3 jaar |
+| 2002-01-01T00:00:00.000Z | ongeveer 2 jaar | ongeveer 2 jaar | over ongeveer 2 jaar |
+| 2001-06-01T00:00:00.000Z | meer dan 1 jaar | meer dan 1 jaar | over meer dan 1 jaar |
+| 2001-02-01T00:00:00.000Z | ongeveer 1 jaar | ongeveer 1 jaar | over ongeveer 1 jaar |
+| 2001-01-01T00:00:00.000Z | ongeveer 1 jaar | ongeveer 1 jaar | over ongeveer 1 jaar |
+| 2000-06-01T00:00:00.000Z | 5 maanden | 5 maanden | over 5 maanden |
+| 2000-03-01T00:00:00.000Z | 2 maanden | 2 maanden | over 2 maanden |
+| 2000-02-01T00:00:00.000Z | ongeveer 1 maand | ongeveer 1 maand | over ongeveer 1 maand |
+| 2000-01-15T00:00:00.000Z | 14 dagen | 14 dagen | over 14 dagen |
+| 2000-01-02T00:00:00.000Z | 1 dag | 1 dag | over 1 dag |
+| 2000-01-01T06:00:00.000Z | ongeveer 6 uur | ongeveer 6 uur | over ongeveer 6 uur |
+| 2000-01-01T01:00:00.000Z | ongeveer 1 uur | ongeveer 1 uur | over ongeveer 1 uur |
+| 2000-01-01T00:45:00.000Z | ongeveer 1 uur | ongeveer 1 uur | over ongeveer 1 uur |
+| 2000-01-01T00:30:00.000Z | 30 minuten | 30 minuten | over 30 minuten |
+| 2000-01-01T00:15:00.000Z | 15 minuten | 15 minuten | over 15 minuten |
+| 2000-01-01T00:01:00.000Z | een minuut | een minuut | over een minuut |
+| 2000-01-01T00:00:25.000Z | minder dan een minuut | een halve minuut | over minder dan een minuut |
+| 2000-01-01T00:00:15.000Z | minder dan een minuut | minder dan 20 seconden | over minder dan een minuut |
+| 2000-01-01T00:00:05.000Z | minder dan een minuut | minder dan 10 seconden | over minder dan een minuut |
+| 2000-01-01T00:00:00.000Z | minder dan een minuut | minder dan 5 seconden | minder dan een minuut geleden |
+| 1999-12-31T23:59:55.000Z | minder dan een minuut | minder dan 10 seconden | minder dan een minuut geleden |
+| 1999-12-31T23:59:45.000Z | minder dan een minuut | minder dan 20 seconden | minder dan een minuut geleden |
+| 1999-12-31T23:59:35.000Z | minder dan een minuut | een halve minuut | minder dan een minuut geleden |
+| 1999-12-31T23:59:00.000Z | een minuut | een minuut | een minuut geleden |
+| 1999-12-31T23:45:00.000Z | 15 minuten | 15 minuten | 15 minuten geleden |
+| 1999-12-31T23:30:00.000Z | 30 minuten | 30 minuten | 30 minuten geleden |
+| 1999-12-31T23:15:00.000Z | ongeveer 1 uur | ongeveer 1 uur | ongeveer 1 uur geleden |
+| 1999-12-31T23:00:00.000Z | ongeveer 1 uur | ongeveer 1 uur | ongeveer 1 uur geleden |
+| 1999-12-31T18:00:00.000Z | ongeveer 6 uur | ongeveer 6 uur | ongeveer 6 uur geleden |
+| 1999-12-30T00:00:00.000Z | 2 dagen | 2 dagen | 2 dagen geleden |
+| 1999-12-15T00:00:00.000Z | 17 dagen | 17 dagen | 17 dagen geleden |
+| 1999-12-01T00:00:00.000Z | ongeveer 1 maand | ongeveer 1 maand | ongeveer 1 maand geleden |
+| 1999-11-01T00:00:00.000Z | 2 maanden | 2 maanden | 2 maanden geleden |
+| 1999-06-01T00:00:00.000Z | 7 maanden | 7 maanden | 7 maanden geleden |
+| 1999-01-01T00:00:00.000Z | ongeveer 1 jaar | ongeveer 1 jaar | ongeveer 1 jaar geleden |
+| 1998-12-01T00:00:00.000Z | ongeveer 1 jaar | ongeveer 1 jaar | ongeveer 1 jaar geleden |
+| 1998-06-01T00:00:00.000Z | meer dan 1 jaar | meer dan 1 jaar | meer dan 1 jaar geleden |
+| 1998-01-01T00:00:00.000Z | ongeveer 2 jaar | ongeveer 2 jaar | ongeveer 2 jaar geleden |
+| 1997-01-01T00:00:00.000Z | ongeveer 3 jaar | ongeveer 3 jaar | ongeveer 3 jaar geleden |
+| 1996-01-01T00:00:00.000Z | ongeveer 4 jaar | ongeveer 4 jaar | ongeveer 4 jaar geleden |
+| 1995-01-01T00:00:00.000Z | ongeveer 5 jaar | ongeveer 5 jaar | ongeveer 5 jaar geleden |
+| 1994-01-01T00:00:00.000Z | ongeveer 6 jaar | ongeveer 6 jaar | ongeveer 6 jaar geleden |
+
+## `formatDistanceStrict`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `addSuffix: true` | With forced unit (i.e. `hour`) |
+| ------------------------ | ----------- | ------------------- | ------------------------------ |
+| 2006-01-01T00:00:00.000Z | 6 jaar | over 6 jaar | 52608 uur |
+| 2005-01-01T00:00:00.000Z | 5 jaar | over 5 jaar | 43848 uur |
+| 2004-01-01T00:00:00.000Z | 4 jaar | over 4 jaar | 35064 uur |
+| 2003-01-01T00:00:00.000Z | 3 jaar | over 3 jaar | 26304 uur |
+| 2002-01-01T00:00:00.000Z | 2 jaar | over 2 jaar | 17544 uur |
+| 2001-06-01T00:00:00.000Z | 1 jaar | over 1 jaar | 12408 uur |
+| 2001-02-01T00:00:00.000Z | 1 jaar | over 1 jaar | 9528 uur |
+| 2001-01-01T00:00:00.000Z | 1 jaar | over 1 jaar | 8784 uur |
+| 2000-06-01T00:00:00.000Z | 5 maanden | over 5 maanden | 3648 uur |
+| 2000-03-01T00:00:00.000Z | 2 maanden | over 2 maanden | 1440 uur |
+| 2000-02-01T00:00:00.000Z | 1 maand | over 1 maand | 744 uur |
+| 2000-01-15T00:00:00.000Z | 14 dagen | over 14 dagen | 336 uur |
+| 2000-01-02T00:00:00.000Z | 1 dag | over 1 dag | 24 uur |
+| 2000-01-01T06:00:00.000Z | 6 uur | over 6 uur | 6 uur |
+| 2000-01-01T01:00:00.000Z | 1 uur | over 1 uur | 1 uur |
+| 2000-01-01T00:45:00.000Z | 45 minuten | over 45 minuten | 1 uur |
+| 2000-01-01T00:30:00.000Z | 30 minuten | over 30 minuten | 1 uur |
+| 2000-01-01T00:15:00.000Z | 15 minuten | over 15 minuten | 0 uur |
+| 2000-01-01T00:01:00.000Z | een minuut | over een minuut | 0 uur |
+| 2000-01-01T00:00:25.000Z | 25 seconden | over 25 seconden | 0 uur |
+| 2000-01-01T00:00:15.000Z | 15 seconden | over 15 seconden | 0 uur |
+| 2000-01-01T00:00:05.000Z | 5 seconden | over 5 seconden | 0 uur |
+| 2000-01-01T00:00:00.000Z | 0 seconden | 0 seconden geleden | 0 uur |
+| 1999-12-31T23:59:55.000Z | 5 seconden | 5 seconden geleden | 0 uur |
+| 1999-12-31T23:59:45.000Z | 15 seconden | 15 seconden geleden | 0 uur |
+| 1999-12-31T23:59:35.000Z | 25 seconden | 25 seconden geleden | 0 uur |
+| 1999-12-31T23:59:00.000Z | een minuut | een minuut geleden | 0 uur |
+| 1999-12-31T23:45:00.000Z | 15 minuten | 15 minuten geleden | 0 uur |
+| 1999-12-31T23:30:00.000Z | 30 minuten | 30 minuten geleden | 1 uur |
+| 1999-12-31T23:15:00.000Z | 45 minuten | 45 minuten geleden | 1 uur |
+| 1999-12-31T23:00:00.000Z | 1 uur | 1 uur geleden | 1 uur |
+| 1999-12-31T18:00:00.000Z | 6 uur | 6 uur geleden | 6 uur |
+| 1999-12-30T00:00:00.000Z | 2 dagen | 2 dagen geleden | 48 uur |
+| 1999-12-15T00:00:00.000Z | 17 dagen | 17 dagen geleden | 408 uur |
+| 1999-12-01T00:00:00.000Z | 1 maand | 1 maand geleden | 744 uur |
+| 1999-11-01T00:00:00.000Z | 2 maanden | 2 maanden geleden | 1464 uur |
+| 1999-06-01T00:00:00.000Z | 7 maanden | 7 maanden geleden | 5136 uur |
+| 1999-01-01T00:00:00.000Z | 1 jaar | 1 jaar geleden | 8760 uur |
+| 1998-12-01T00:00:00.000Z | 1 jaar | 1 jaar geleden | 9504 uur |
+| 1998-06-01T00:00:00.000Z | 2 jaar | 2 jaar geleden | 13896 uur |
+| 1998-01-01T00:00:00.000Z | 2 jaar | 2 jaar geleden | 17520 uur |
+| 1997-01-01T00:00:00.000Z | 3 jaar | 3 jaar geleden | 26280 uur |
+| 1996-01-01T00:00:00.000Z | 4 jaar | 4 jaar geleden | 35064 uur |
+| 1995-01-01T00:00:00.000Z | 5 jaar | 5 jaar geleden | 43824 uur |
+| 1994-01-01T00:00:00.000Z | 6 jaar | 6 jaar geleden | 52584 uur |
+
+## `formatRelative`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result |
+| ------------------------ | -------------------------- |
+| 2000-01-10T00:00:00.000Z | 10-01-2000 |
+| 2000-01-05T00:00:00.000Z | woensdag om 00:00 |
+| 2000-01-02T00:00:00.000Z | morgen om 00:00 |
+| 2000-01-01T00:00:00.000Z | vandaag om 00:00 |
+| 1999-12-31T00:00:00.000Z | gisteren om 00:00 |
+| 1999-12-27T00:00:00.000Z | afgelopen maandag om 00:00 |
+| 1999-12-21T00:00:00.000Z | 21-12-1999 |
diff --git a/date-fns/src/locale/nn/_lib/formatDistance/index.js b/date-fns/src/locale/nn/_lib/formatDistance/index.js
new file mode 100644
index 0000000..cf716b6
--- /dev/null
+++ b/date-fns/src/locale/nn/_lib/formatDistance/index.js
@@ -0,0 +1,127 @@
+var formatDistanceLocale = {
+ lessThanXSeconds: {
+ singular: 'mindre enn eitt sekund',
+ plural: 'mindre enn {{count}} sekund'
+ },
+
+ xSeconds: {
+ singular: 'eitt sekund',
+ plural: '{{count}} sekund'
+ },
+
+ halfAMinute: 'eit halvt minutt',
+
+ lessThanXMinutes: {
+ singular: 'mindre enn eitt minutt',
+ plural: 'mindre enn {{count}} minutt'
+ },
+
+ xMinutes: {
+ singular: 'eitt minutt',
+ plural: '{{count}} minutt'
+ },
+
+ aboutXHours: {
+ singular: 'omtrent ein time',
+ plural: 'omtrent {{count}} timar'
+ },
+
+ xHours: {
+ singular: 'ein time',
+ plural: '{{count}} timar'
+ },
+
+ xDays: {
+ singular: 'ein dag',
+ plural: '{{count}} dagar'
+ },
+
+ aboutXWeeks: {
+ singular: 'omtrent ei veke',
+ plural: 'omtrent {{count}} veker'
+ },
+
+ xWeeks: {
+ singular: 'ei veke',
+ plural: '{{count}} veker'
+ },
+
+ aboutXMonths: {
+ singular: 'omtrent ein månad',
+ plural: 'omtrent {{count}} månader'
+ },
+
+ xMonths: {
+ singular: 'ein månad',
+ plural: '{{count}} månader'
+ },
+
+ aboutXYears: {
+ singular: 'omtrent eitt år',
+ plural: 'omtrent {{count}} år'
+ },
+
+ xYears: {
+ singular: 'eitt år',
+ plural: '{{count}} år'
+ },
+
+ overXYears: {
+ singular: 'over eitt år',
+ plural: 'over {{count}} år'
+ },
+
+ almostXYears: {
+ singular: 'nesten eitt år',
+ plural: 'nesten {{count}} år'
+ }
+}
+
+var wordMapping = [
+ 'null',
+ 'ein',
+ 'to',
+ 'tre',
+ 'fire',
+ 'fem',
+ 'seks',
+ 'sju',
+ 'åtte',
+ 'ni',
+ 'ti',
+ 'elleve',
+ 'tolv'
+]
+
+export default function formatDistance(token, count, options) {
+ options = options || {
+ onlyNumeric: false
+ }
+
+ var translation = formatDistanceLocale[token]
+ var result
+ if (typeof translation === 'string') {
+ result = translation
+ } else if (count === 0 || count > 1) {
+ if (options.onlyNumeric) {
+ result = translation.plural.replace('{{count}}', count)
+ } else {
+ result = translation.plural.replace(
+ '{{count}}',
+ count < 13 ? wordMapping[count] : count
+ )
+ }
+ } else {
+ result = translation.singular
+ }
+
+ if (options.addSuffix) {
+ if (options.comparison > 0) {
+ return 'om ' + result
+ } else {
+ return result + ' sidan'
+ }
+ }
+
+ return result
+}
diff --git a/date-fns/src/locale/nn/_lib/formatLong/index.js b/date-fns/src/locale/nn/_lib/formatLong/index.js
new file mode 100644
index 0000000..067f59e
--- /dev/null
+++ b/date-fns/src/locale/nn/_lib/formatLong/index.js
@@ -0,0 +1,41 @@
+import buildFormatLongFn from '../../../_lib/buildFormatLongFn/index'
+
+var dateFormats = {
+ full: 'EEEE d. MMMM y',
+ long: 'd. MMMM y',
+ medium: 'd. MMM y',
+ short: 'dd.MM.y'
+}
+
+var timeFormats = {
+ full: "'kl'. HH:mm:ss zzzz",
+ long: 'HH:mm:ss z',
+ medium: 'HH:mm:ss',
+ short: 'HH:mm'
+}
+
+var dateTimeFormats = {
+ full: "{{date}} 'kl.' {{time}}",
+ long: "{{date}} 'kl.' {{time}}",
+ medium: '{{date}} {{time}}',
+ short: '{{date}} {{time}}'
+}
+
+var formatLong = {
+ date: buildFormatLongFn({
+ formats: dateFormats,
+ defaultWidth: 'full'
+ }),
+
+ time: buildFormatLongFn({
+ formats: timeFormats,
+ defaultWidth: 'full'
+ }),
+
+ dateTime: buildFormatLongFn({
+ formats: dateTimeFormats,
+ defaultWidth: 'full'
+ })
+}
+
+export default formatLong
diff --git a/date-fns/src/locale/nn/_lib/formatRelative/index.js b/date-fns/src/locale/nn/_lib/formatRelative/index.js
new file mode 100644
index 0000000..895db62
--- /dev/null
+++ b/date-fns/src/locale/nn/_lib/formatRelative/index.js
@@ -0,0 +1,12 @@
+var formatRelativeLocale = {
+ lastWeek: "'førre' eeee 'kl.' p",
+ yesterday: "'i går kl.' p",
+ today: "'i dag kl.' p",
+ tomorrow: "'i morgon kl.' p",
+ nextWeek: "EEEE 'kl.' p",
+ other: 'P'
+}
+
+export default function formatRelative(token, _date, _baseDate, _options) {
+ return formatRelativeLocale[token]
+}
diff --git a/date-fns/src/locale/nn/_lib/localize/index.js b/date-fns/src/locale/nn/_lib/localize/index.js
new file mode 100644
index 0000000..4c3fbc8
--- /dev/null
+++ b/date-fns/src/locale/nn/_lib/localize/index.js
@@ -0,0 +1,124 @@
+import buildLocalizeFn from '../../../_lib/buildLocalizeFn/index'
+
+var eraValues = {
+ narrow: ['f.Kr.', 'e.Kr.'],
+ abbreviated: ['f.Kr.', 'e.Kr.'],
+ wide: ['før Kristus', 'etter Kristus']
+}
+
+var quarterValues = {
+ narrow: ['1', '2', '3', '4'],
+ abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],
+ wide: ['1. kvartal', '2. kvartal', '3. kvartal', '4. kvartal']
+}
+
+var monthValues = {
+ narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],
+ abbreviated: [
+ 'jan.',
+ 'feb.',
+ 'mars',
+ 'apr.',
+ 'mai',
+ 'juni',
+ 'juli',
+ 'aug.',
+ 'sep.',
+ 'okt.',
+ 'nov.',
+ 'des.'
+ ],
+ wide: [
+ 'januar',
+ 'februar',
+ 'mars',
+ 'april',
+ 'mai',
+ 'juni',
+ 'juli',
+ 'august',
+ 'september',
+ 'oktober',
+ 'november',
+ 'desember'
+ ]
+}
+
+var dayValues = {
+ narrow: ['S', 'M', 'T', 'O', 'T', 'F', 'L'],
+ short: ['su', 'må', 'ty', 'on', 'to', 'fr', 'lau'],
+ abbreviated: ['sun', 'mån', 'tys', 'ons', 'tor', 'fre', 'laur'],
+ wide: ['sundag', 'måndag', 'tysdag', 'onsdag', 'torsdag', 'fredag', 'laurdag']
+}
+
+var dayPeriodValues = {
+ narrow: {
+ am: 'a',
+ pm: 'p',
+ midnight: 'midnatt',
+ noon: 'middag',
+ morning: 'på morg.',
+ afternoon: 'på etterm.',
+ evening: 'på kvelden',
+ night: 'på natta'
+ },
+ abbreviated: {
+ am: 'a.m.',
+ pm: 'p.m.',
+ midnight: 'midnatt',
+ noon: 'middag',
+ morning: 'på morg.',
+ afternoon: 'på etterm.',
+ evening: 'på kvelden',
+ night: 'på natta'
+ },
+ wide: {
+ am: 'a.m.',
+ pm: 'p.m.',
+ midnight: 'midnatt',
+ noon: 'middag',
+ morning: 'på morgonen',
+ afternoon: 'på ettermiddagen',
+ evening: 'på kvelden',
+ night: 'på natta'
+ }
+}
+
+function ordinalNumber(dirtyNumber) {
+ var number = Number(dirtyNumber)
+ return number + '.'
+}
+
+var localize = {
+ ordinalNumber: ordinalNumber,
+
+ era: buildLocalizeFn({
+ values: eraValues,
+ defaultWidth: 'wide'
+ }),
+
+ quarter: buildLocalizeFn({
+ values: quarterValues,
+ defaultWidth: 'wide',
+ argumentCallback: function(quarter) {
+ return Number(quarter) - 1
+ }
+ }),
+
+ month: buildLocalizeFn({
+ values: monthValues,
+ defaultWidth: 'wide'
+ }),
+
+ day: buildLocalizeFn({
+ values: dayValues,
+ defaultWidth: 'wide'
+ }),
+
+ dayPeriod: buildLocalizeFn({
+ values: dayPeriodValues,
+ defaultWidth: 'wide'
+ })
+}
+
+export default localize
diff --git a/date-fns/src/locale/nn/_lib/match/index.js b/date-fns/src/locale/nn/_lib/match/index.js
new file mode 100644
index 0000000..ff0c5f3
--- /dev/null
+++ b/date-fns/src/locale/nn/_lib/match/index.js
@@ -0,0 +1,136 @@
+import buildMatchPatternFn from '../../../_lib/buildMatchPatternFn/index'
+import buildMatchFn from '../../../_lib/buildMatchFn/index'
+
+var matchOrdinalNumberPattern = /^(\d+)\.?/i
+var parseOrdinalNumberPattern = /\d+/i
+
+var matchEraPatterns = {
+ narrow: /^(f\.? ?Kr\.?|fvt\.?|e\.? ?Kr\.?|evt\.?)/i,
+ abbreviated: /^(f\.? ?Kr\.?|fvt\.?|e\.? ?Kr\.?|evt\.?)/i,
+ wide: /^(før Kristus|før vår tid|etter Kristus|vår tid)/i
+}
+var parseEraPatterns = {
+ any: [/^f/i, /^e/i]
+}
+
+var matchQuarterPatterns = {
+ narrow: /^[1234]/i,
+ abbreviated: /^q[1234]/i,
+ wide: /^[1234](\.)? kvartal/i
+}
+var parseQuarterPatterns = {
+ any: [/1/i, /2/i, /3/i, /4/i]
+}
+
+var matchMonthPatterns = {
+ narrow: /^[jfmasond]/i,
+ abbreviated: /^(jan|feb|mars?|apr|mai|juni?|juli?|aug|sep|okt|nov|des)\.?/i,
+ wide: /^(januar|februar|mars|april|mai|juni|juli|august|september|oktober|november|desember)/i
+}
+var parseMonthPatterns = {
+ narrow: [
+ /^j/i,
+ /^f/i,
+ /^m/i,
+ /^a/i,
+ /^m/i,
+ /^j/i,
+ /^j/i,
+ /^a/i,
+ /^s/i,
+ /^o/i,
+ /^n/i,
+ /^d/i
+ ],
+ any: [
+ /^ja/i,
+ /^f/i,
+ /^mar/i,
+ /^ap/i,
+ /^mai/i,
+ /^jun/i,
+ /^jul/i,
+ /^aug/i,
+ /^s/i,
+ /^o/i,
+ /^n/i,
+ /^d/i
+ ]
+}
+
+var matchDayPatterns = {
+ narrow: /^[smtofl]/i,
+ short: /^(su|må|ty|on|to|fr|la)/i,
+ abbreviated: /^(sun|mån|tys|ons|tor|fre|laur)/i,
+ wide: /^(sundag|måndag|tysdag|onsdag|torsdag|fredag|laurdag)/i
+}
+var parseDayPatterns = {
+ any: [/^s/i, /^m/i, /^ty/i, /^o/i, /^to/i, /^f/i, /^l/i]
+}
+
+var matchDayPeriodPatterns = {
+ narrow: /^(midnatt|middag|(på) (morgonen|ettermiddagen|kvelden|natta)|[ap])/i,
+ any: /^([ap]\.?\s?m\.?|midnatt|middag|(på) (morgonen|ettermiddagen|kvelden|natta))/i
+}
+var parseDayPeriodPatterns = {
+ any: {
+ am: /^a(\.?\s?m\.?)?$/i,
+ pm: /^p(\.?\s?m\.?)?$/i,
+ midnight: /^midn/i,
+ noon: /^midd/i,
+ morning: /morgon/i,
+ afternoon: /ettermiddag/i,
+ evening: /kveld/i,
+ night: /natt/i
+ }
+}
+
+var match = {
+ ordinalNumber: buildMatchPatternFn({
+ matchPattern: matchOrdinalNumberPattern,
+ parsePattern: parseOrdinalNumberPattern,
+ valueCallback: function(value) {
+ return parseInt(value, 10)
+ }
+ }),
+
+ era: buildMatchFn({
+ matchPatterns: matchEraPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseEraPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ quarter: buildMatchFn({
+ matchPatterns: matchQuarterPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseQuarterPatterns,
+ defaultParseWidth: 'any',
+ valueCallback: function(index) {
+ return index + 1
+ }
+ }),
+
+ month: buildMatchFn({
+ matchPatterns: matchMonthPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseMonthPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ day: buildMatchFn({
+ matchPatterns: matchDayPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseDayPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ dayPeriod: buildMatchFn({
+ matchPatterns: matchDayPeriodPatterns,
+ defaultMatchWidth: 'any',
+ parsePatterns: parseDayPeriodPatterns,
+ defaultParseWidth: 'any'
+ })
+}
+
+export default match
diff --git a/date-fns/src/locale/nn/index.d.ts b/date-fns/src/locale/nn/index.d.ts
new file mode 100644
index 0000000..08050ed
--- /dev/null
+++ b/date-fns/src/locale/nn/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { nn } from 'date-fns/locale'
+export default nn
diff --git a/date-fns/src/locale/nn/index.js b/date-fns/src/locale/nn/index.js
new file mode 100644
index 0000000..4a6998f
--- /dev/null
+++ b/date-fns/src/locale/nn/index.js
@@ -0,0 +1,28 @@
+import formatDistance from './_lib/formatDistance/index'
+import formatLong from './_lib/formatLong/index'
+import formatRelative from './_lib/formatRelative/index'
+import localize from './_lib/localize/index'
+import match from './_lib/match/index'
+
+/**
+ * @type {Locale}
+ * @category Locales
+ * @summary Norwegian Nynorsk locale.
+ * @language Norwegian Nynorsk
+ * @iso-639-2 nno
+ * @author Mats Byrkjeland [@draperunner]{@link https://github.com/draperunner}
+ */
+var locale = {
+ code: 'nn',
+ formatDistance: formatDistance,
+ formatLong: formatLong,
+ formatRelative: formatRelative,
+ localize: localize,
+ match: match,
+ options: {
+ weekStartsOn: 1 /* Monday */,
+ firstWeekContainsDate: 4
+ }
+}
+
+export default locale
diff --git a/date-fns/src/locale/nn/index.js.flow b/date-fns/src/locale/nn/index.js.flow
new file mode 100644
index 0000000..b9dfe66
--- /dev/null
+++ b/date-fns/src/locale/nn/index.js.flow
@@ -0,0 +1,35 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+declare module.exports: Locale
diff --git a/date-fns/src/locale/nn/snapshot.md b/date-fns/src/locale/nn/snapshot.md
new file mode 100644
index 0000000..05ce90b
--- /dev/null
+++ b/date-fns/src/locale/nn/snapshot.md
@@ -0,0 +1,304 @@
+# Norwegian Nynorsk (nn) locale
+
+## `format` and `parse`
+
+| Title | Token string | Date | `format` result | `parse` result |
+| ------------------------------- | ------------ | ------------------------ | -------------------------------------------------- | ------------------------ |
+| Calendar year | yo | 1987-02-11T12:13:14.015Z | 1987. | 1987-01-01T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 5. | 0005-01-01T00:00:00.000Z |
+| Local week-numbering year | Yo | 1987-02-11T12:13:14.015Z | 1987. | 1986-12-29T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 4. | 0003-12-29T00:00:00.000Z |
+| Quarter (formatting) | Qo | 2019-01-01T12:13:14.015Z | 1. | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2. | 2019-04-01T00:00:00.000Z |
+| | QQQ | 2019-01-01T12:13:14.015Z | Q1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | Q2 | 2019-04-01T00:00:00.000Z |
+| | QQQQ | 2019-01-01T12:13:14.015Z | 1. kvartal | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2. kvartal | 2019-04-01T00:00:00.000Z |
+| | QQQQQ | 2019-01-01T12:13:14.015Z | 1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2 | 2019-04-01T00:00:00.000Z |
+| Quarter (stand-alone) | qo | 2019-01-01T12:13:14.015Z | 1. | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2. | 2019-04-01T00:00:00.000Z |
+| | qqq | 2019-01-01T12:13:14.015Z | Q1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | Q2 | 2019-04-01T00:00:00.000Z |
+| | qqqq | 2019-01-01T12:13:14.015Z | 1. kvartal | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2. kvartal | 2019-04-01T00:00:00.000Z |
+| Month (formatting) | Mo | 2019-02-11T12:13:14.015Z | 2. | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7. | 2019-07-01T00:00:00.000Z |
+| | MMM | 2019-02-11T12:13:14.015Z | feb. | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | juli | 2019-07-01T00:00:00.000Z |
+| | MMMM | 2019-02-11T12:13:14.015Z | februar | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | juli | 2019-07-01T00:00:00.000Z |
+| | MMMMM | 2019-02-11T12:13:14.015Z | F | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | J | 2019-01-01T00:00:00.000Z |
+| Month (stand-alone) | Lo | 2019-02-11T12:13:14.015Z | 2. | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7. | 2019-07-01T00:00:00.000Z |
+| | LLL | 2019-02-11T12:13:14.015Z | feb. | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | juli | 2019-07-01T00:00:00.000Z |
+| | LLLL | 2019-02-11T12:13:14.015Z | februar | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | juli | 2019-07-01T00:00:00.000Z |
+| | LLLLL | 2019-02-11T12:13:14.015Z | F | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | J | 2019-01-01T00:00:00.000Z |
+| Local week of year | wo | 2019-01-01T12:13:14.015Z | 1. | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48. | 2019-11-25T00:00:00.000Z |
+| ISO week of year | Io | 2019-01-01T12:13:14.015Z | 1. | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48. | 2019-11-25T00:00:00.000Z |
+| Day of month | do | 2019-02-11T12:13:14.015Z | 11. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-28T12:13:14.015Z | 28. | 2019-02-28T00:00:00.000Z |
+| Day of year | Do | 2019-02-11T12:13:14.015Z | 42. | 2019-02-11T00:00:00.000Z |
+| | | 2019-12-31T12:13:14.015Z | 365. | 2019-12-31T00:00:00.000Z |
+| Day of week (formatting) | E | 2019-02-11T12:13:14.015Z | mån | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | fre | 2019-02-15T00:00:00.000Z |
+| | EE | 2019-02-11T12:13:14.015Z | mån | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | fre | 2019-02-15T00:00:00.000Z |
+| | EEE | 2019-02-11T12:13:14.015Z | mån | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | fre | 2019-02-15T00:00:00.000Z |
+| | EEEE | 2019-02-11T12:13:14.015Z | måndag | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | fredag | 2019-02-15T00:00:00.000Z |
+| | EEEEE | 2019-02-11T12:13:14.015Z | M | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | F | 2019-02-15T00:00:00.000Z |
+| | EEEEEE | 2019-02-11T12:13:14.015Z | må | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | fr | 2019-02-15T00:00:00.000Z |
+| ISO day of week (formatting) | io | 2019-02-11T12:13:14.015Z | 1. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5. | 2019-02-15T00:00:00.000Z |
+| | iii | 2019-02-11T12:13:14.015Z | mån | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | fre | 2019-02-15T00:00:00.000Z |
+| | iiii | 2019-02-11T12:13:14.015Z | måndag | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | fredag | 2019-02-15T00:00:00.000Z |
+| | iiiii | 2019-02-11T12:13:14.015Z | M | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | F | 2019-02-15T00:00:00.000Z |
+| | iiiiii | 2019-02-11T12:13:14.015Z | må | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | fr | 2019-02-15T00:00:00.000Z |
+| Local day of week (formatting) | eo | 2019-02-11T12:13:14.015Z | 1. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5. | 2019-02-15T00:00:00.000Z |
+| | eee | 2019-02-11T12:13:14.015Z | mån | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | fre | 2019-02-15T00:00:00.000Z |
+| | eeee | 2019-02-11T12:13:14.015Z | måndag | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | fredag | 2019-02-15T00:00:00.000Z |
+| | eeeee | 2019-02-11T12:13:14.015Z | M | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | F | 2019-02-15T00:00:00.000Z |
+| | eeeeee | 2019-02-11T12:13:14.015Z | må | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | fr | 2019-02-15T00:00:00.000Z |
+| Local day of week (stand-alone) | co | 2019-02-11T12:13:14.015Z | 1. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5. | 2019-02-15T00:00:00.000Z |
+| | ccc | 2019-02-11T12:13:14.015Z | mån | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | fre | 2019-02-15T00:00:00.000Z |
+| | cccc | 2019-02-11T12:13:14.015Z | måndag | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | fredag | 2019-02-15T00:00:00.000Z |
+| | ccccc | 2019-02-11T12:13:14.015Z | M | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | F | 2019-02-15T00:00:00.000Z |
+| | cccccc | 2019-02-11T12:13:14.015Z | må | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | fr | 2019-02-15T00:00:00.000Z |
+| AM, PM | a | 2019-02-11T11:13:14.015Z | a.m. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | p.m. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | p.m. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | a.m. | 2019-02-11T00:00:00.000Z |
+| | aa | 2019-02-11T11:13:14.015Z | a.m. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | p.m. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | p.m. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | a.m. | 2019-02-11T00:00:00.000Z |
+| | aaa | 2019-02-11T11:13:14.015Z | a.m. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | p.m. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | p.m. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | a.m. | 2019-02-11T00:00:00.000Z |
+| | aaaa | 2019-02-11T11:13:14.015Z | a.m. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | p.m. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | p.m. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | a.m. | 2019-02-11T00:00:00.000Z |
+| | aaaaa | 2019-02-11T11:13:14.015Z | a | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | p | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | p | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | a | 2019-02-11T00:00:00.000Z |
+| AM, PM, noon, midnight | b | 2019-02-11T11:13:14.015Z | a.m. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | p.m. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | p.m. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | a.m. | 2019-02-11T00:00:00.000Z |
+| | bb | 2019-02-11T11:13:14.015Z | a.m. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | p.m. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | p.m. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | a.m. | 2019-02-11T00:00:00.000Z |
+| | bbb | 2019-02-11T11:13:14.015Z | a.m. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | p.m. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | p.m. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | a.m. | 2019-02-11T00:00:00.000Z |
+| | bbbb | 2019-02-11T11:13:14.015Z | a.m. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | p.m. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | p.m. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | a.m. | 2019-02-11T00:00:00.000Z |
+| | bbbbb | 2019-02-11T11:13:14.015Z | a | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | p | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | p | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | a | 2019-02-11T00:00:00.000Z |
+| Flexible day period | B | 2019-02-11T11:13:14.015Z | på morg. | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | på etterm. | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | på kvelden | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | på natta | 2019-02-11T00:00:00.000Z |
+| | BB | 2019-02-11T11:13:14.015Z | på morg. | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | på etterm. | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | på kvelden | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | på natta | 2019-02-11T00:00:00.000Z |
+| | BBB | 2019-02-11T11:13:14.015Z | på morg. | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | på etterm. | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | på kvelden | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | på natta | 2019-02-11T00:00:00.000Z |
+| | BBBB | 2019-02-11T11:13:14.015Z | på morgonen | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | på ettermiddagen | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | på kvelden | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | på natta | 2019-02-11T00:00:00.000Z |
+| | BBBBB | 2019-02-11T11:13:14.015Z | på morg. | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | på etterm. | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | på kvelden | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | på natta | 2019-02-11T00:00:00.000Z |
+| Hour [1-12] | ho | 2019-02-11T11:13:14.015Z | 11. | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11. | 2019-02-11T23:00:00.000Z |
+| Hour [0-23] | Ho | 2019-02-11T11:13:14.015Z | 11. | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23. | 2019-02-11T23:00:00.000Z |
+| Hour [0-11] | Ko | 2019-02-11T11:13:14.015Z | 11. | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11. | 2019-02-11T23:00:00.000Z |
+| Hour [1-24] | ko | 2019-02-11T11:13:14.015Z | 11. | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23. | 2019-02-11T23:00:00.000Z |
+| Minute | mo | 2019-01-01T12:01:14.015Z | 1. | 2019-01-01T12:01:00.000Z |
+| | | 2019-04-01T12:55:14.015Z | 55. | 2019-04-01T12:55:00.000Z |
+| Second | so | 2019-01-01T12:13:01.015Z | 1. | 2019-01-01T12:13:01.000Z |
+| | | 2019-04-01T12:13:55.015Z | 55. | 2019-04-01T12:13:55.000Z |
+| Long localized date | P | 1987-02-11T12:13:14.015Z | 11.02.1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29.05.1453 | 1453-05-29T00:00:00.000Z |
+| | PP | 1987-02-11T12:13:14.015Z | 11. feb. 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29. mai 1453 | 1453-05-29T00:00:00.000Z |
+| | PPP | 1987-02-11T12:13:14.015Z | 11. februar 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29. mai 1453 | 1453-05-29T00:00:00.000Z |
+| | PPPP | 1987-02-11T12:13:14.015Z | onsdag 11. februar 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | sundag 29. mai 1453 | 1453-05-29T00:00:00.000Z |
+| Long localized time | p | 1987-02-11T12:13:14.015Z | 12:13 | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 23:59 | 1453-05-29T23:59:00.000Z |
+| | pp | 1987-02-11T12:13:14.015Z | 12:13:14 | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 | 1453-05-29T23:59:59.000Z |
+| | ppp | 1987-02-11T12:13:14.015Z | 12:13:14 GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 GMT+0 | Errored |
+| | pppp | 1987-02-11T12:13:14.015Z | kl. 12:13:14 GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | kl. 23:59:59 GMT+00:00 | Errored |
+| Combination of date and time | Pp | 1987-02-11T12:13:14.015Z | 11.02.1987 12:13 | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29.05.1453 23:59 | 1453-05-29T23:59:00.000Z |
+| | PPpp | 1987-02-11T12:13:14.015Z | 11. feb. 1987 12:13:14 | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29. mai 1453 23:59:59 | 1453-05-29T23:59:59.000Z |
+| | PPPppp | 1987-02-11T12:13:14.015Z | 11. februar 1987 kl. 12:13:14 GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 29. mai 1453 kl. 23:59:59 GMT+0 | Errored |
+| | PPPPpppp | 1987-02-11T12:13:14.015Z | onsdag 11. februar 1987 kl. kl. 12:13:14 GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | sundag 29. mai 1453 kl. kl. 23:59:59 GMT+00:00 | Errored |
+
+## `formatDistance`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `includeSeconds: true` | `addSuffix: true` |
+| ------------------------ | ---------------------- | ---------------------- | ---------------------------- |
+| 2006-01-01T00:00:00.000Z | omtrent seks år | omtrent seks år | om omtrent seks år |
+| 2005-01-01T00:00:00.000Z | omtrent fem år | omtrent fem år | om omtrent fem år |
+| 2004-01-01T00:00:00.000Z | omtrent fire år | omtrent fire år | om omtrent fire år |
+| 2003-01-01T00:00:00.000Z | omtrent tre år | omtrent tre år | om omtrent tre år |
+| 2002-01-01T00:00:00.000Z | omtrent to år | omtrent to år | om omtrent to år |
+| 2001-06-01T00:00:00.000Z | over eitt år | over eitt år | om over eitt år |
+| 2001-02-01T00:00:00.000Z | omtrent eitt år | omtrent eitt år | om omtrent eitt år |
+| 2001-01-01T00:00:00.000Z | omtrent eitt år | omtrent eitt år | om omtrent eitt år |
+| 2000-06-01T00:00:00.000Z | fem månader | fem månader | om fem månader |
+| 2000-03-01T00:00:00.000Z | to månader | to månader | om to månader |
+| 2000-02-01T00:00:00.000Z | omtrent ein månad | omtrent ein månad | om omtrent ein månad |
+| 2000-01-15T00:00:00.000Z | 14 dagar | 14 dagar | om 14 dagar |
+| 2000-01-02T00:00:00.000Z | ein dag | ein dag | om ein dag |
+| 2000-01-01T06:00:00.000Z | omtrent seks timar | omtrent seks timar | om omtrent seks timar |
+| 2000-01-01T01:00:00.000Z | omtrent ein time | omtrent ein time | om omtrent ein time |
+| 2000-01-01T00:45:00.000Z | omtrent ein time | omtrent ein time | om omtrent ein time |
+| 2000-01-01T00:30:00.000Z | 30 minutt | 30 minutt | om 30 minutt |
+| 2000-01-01T00:15:00.000Z | 15 minutt | 15 minutt | om 15 minutt |
+| 2000-01-01T00:01:00.000Z | eitt minutt | eitt minutt | om eitt minutt |
+| 2000-01-01T00:00:25.000Z | mindre enn eitt minutt | eit halvt minutt | om mindre enn eitt minutt |
+| 2000-01-01T00:00:15.000Z | mindre enn eitt minutt | mindre enn 20 sekund | om mindre enn eitt minutt |
+| 2000-01-01T00:00:05.000Z | mindre enn eitt minutt | mindre enn ti sekund | om mindre enn eitt minutt |
+| 2000-01-01T00:00:00.000Z | mindre enn eitt minutt | mindre enn fem sekund | mindre enn eitt minutt sidan |
+| 1999-12-31T23:59:55.000Z | mindre enn eitt minutt | mindre enn ti sekund | mindre enn eitt minutt sidan |
+| 1999-12-31T23:59:45.000Z | mindre enn eitt minutt | mindre enn 20 sekund | mindre enn eitt minutt sidan |
+| 1999-12-31T23:59:35.000Z | mindre enn eitt minutt | eit halvt minutt | mindre enn eitt minutt sidan |
+| 1999-12-31T23:59:00.000Z | eitt minutt | eitt minutt | eitt minutt sidan |
+| 1999-12-31T23:45:00.000Z | 15 minutt | 15 minutt | 15 minutt sidan |
+| 1999-12-31T23:30:00.000Z | 30 minutt | 30 minutt | 30 minutt sidan |
+| 1999-12-31T23:15:00.000Z | omtrent ein time | omtrent ein time | omtrent ein time sidan |
+| 1999-12-31T23:00:00.000Z | omtrent ein time | omtrent ein time | omtrent ein time sidan |
+| 1999-12-31T18:00:00.000Z | omtrent seks timar | omtrent seks timar | omtrent seks timar sidan |
+| 1999-12-30T00:00:00.000Z | to dagar | to dagar | to dagar sidan |
+| 1999-12-15T00:00:00.000Z | 17 dagar | 17 dagar | 17 dagar sidan |
+| 1999-12-01T00:00:00.000Z | omtrent ein månad | omtrent ein månad | omtrent ein månad sidan |
+| 1999-11-01T00:00:00.000Z | to månader | to månader | to månader sidan |
+| 1999-06-01T00:00:00.000Z | sju månader | sju månader | sju månader sidan |
+| 1999-01-01T00:00:00.000Z | omtrent eitt år | omtrent eitt år | omtrent eitt år sidan |
+| 1998-12-01T00:00:00.000Z | omtrent eitt år | omtrent eitt år | omtrent eitt år sidan |
+| 1998-06-01T00:00:00.000Z | over eitt år | over eitt år | over eitt år sidan |
+| 1998-01-01T00:00:00.000Z | omtrent to år | omtrent to år | omtrent to år sidan |
+| 1997-01-01T00:00:00.000Z | omtrent tre år | omtrent tre år | omtrent tre år sidan |
+| 1996-01-01T00:00:00.000Z | omtrent fire år | omtrent fire år | omtrent fire år sidan |
+| 1995-01-01T00:00:00.000Z | omtrent fem år | omtrent fem år | omtrent fem år sidan |
+| 1994-01-01T00:00:00.000Z | omtrent seks år | omtrent seks år | omtrent seks år sidan |
+
+## `formatDistanceStrict`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `addSuffix: true` | With forced unit (i.e. `hour`) |
+| ------------------------ | ----------- | ----------------- | ------------------------------ |
+| 2006-01-01T00:00:00.000Z | seks år | om seks år | 52608 timar |
+| 2005-01-01T00:00:00.000Z | fem år | om fem år | 43848 timar |
+| 2004-01-01T00:00:00.000Z | fire år | om fire år | 35064 timar |
+| 2003-01-01T00:00:00.000Z | tre år | om tre år | 26304 timar |
+| 2002-01-01T00:00:00.000Z | to år | om to år | 17544 timar |
+| 2001-06-01T00:00:00.000Z | eitt år | om eitt år | 12408 timar |
+| 2001-02-01T00:00:00.000Z | eitt år | om eitt år | 9528 timar |
+| 2001-01-01T00:00:00.000Z | eitt år | om eitt år | 8784 timar |
+| 2000-06-01T00:00:00.000Z | fem månader | om fem månader | 3648 timar |
+| 2000-03-01T00:00:00.000Z | to månader | om to månader | 1440 timar |
+| 2000-02-01T00:00:00.000Z | ein månad | om ein månad | 744 timar |
+| 2000-01-15T00:00:00.000Z | 14 dagar | om 14 dagar | 336 timar |
+| 2000-01-02T00:00:00.000Z | ein dag | om ein dag | 24 timar |
+| 2000-01-01T06:00:00.000Z | seks timar | om seks timar | seks timar |
+| 2000-01-01T01:00:00.000Z | ein time | om ein time | ein time |
+| 2000-01-01T00:45:00.000Z | 45 minutt | om 45 minutt | ein time |
+| 2000-01-01T00:30:00.000Z | 30 minutt | om 30 minutt | ein time |
+| 2000-01-01T00:15:00.000Z | 15 minutt | om 15 minutt | null timar |
+| 2000-01-01T00:01:00.000Z | eitt minutt | om eitt minutt | null timar |
+| 2000-01-01T00:00:25.000Z | 25 sekund | om 25 sekund | null timar |
+| 2000-01-01T00:00:15.000Z | 15 sekund | om 15 sekund | null timar |
+| 2000-01-01T00:00:05.000Z | fem sekund | om fem sekund | null timar |
+| 2000-01-01T00:00:00.000Z | null sekund | null sekund sidan | null timar |
+| 1999-12-31T23:59:55.000Z | fem sekund | fem sekund sidan | null timar |
+| 1999-12-31T23:59:45.000Z | 15 sekund | 15 sekund sidan | null timar |
+| 1999-12-31T23:59:35.000Z | 25 sekund | 25 sekund sidan | null timar |
+| 1999-12-31T23:59:00.000Z | eitt minutt | eitt minutt sidan | null timar |
+| 1999-12-31T23:45:00.000Z | 15 minutt | 15 minutt sidan | null timar |
+| 1999-12-31T23:30:00.000Z | 30 minutt | 30 minutt sidan | ein time |
+| 1999-12-31T23:15:00.000Z | 45 minutt | 45 minutt sidan | ein time |
+| 1999-12-31T23:00:00.000Z | ein time | ein time sidan | ein time |
+| 1999-12-31T18:00:00.000Z | seks timar | seks timar sidan | seks timar |
+| 1999-12-30T00:00:00.000Z | to dagar | to dagar sidan | 48 timar |
+| 1999-12-15T00:00:00.000Z | 17 dagar | 17 dagar sidan | 408 timar |
+| 1999-12-01T00:00:00.000Z | ein månad | ein månad sidan | 744 timar |
+| 1999-11-01T00:00:00.000Z | to månader | to månader sidan | 1464 timar |
+| 1999-06-01T00:00:00.000Z | sju månader | sju månader sidan | 5136 timar |
+| 1999-01-01T00:00:00.000Z | eitt år | eitt år sidan | 8760 timar |
+| 1998-12-01T00:00:00.000Z | eitt år | eitt år sidan | 9504 timar |
+| 1998-06-01T00:00:00.000Z | to år | to år sidan | 13896 timar |
+| 1998-01-01T00:00:00.000Z | to år | to år sidan | 17520 timar |
+| 1997-01-01T00:00:00.000Z | tre år | tre år sidan | 26280 timar |
+| 1996-01-01T00:00:00.000Z | fire år | fire år sidan | 35064 timar |
+| 1995-01-01T00:00:00.000Z | fem år | fem år sidan | 43824 timar |
+| 1994-01-01T00:00:00.000Z | seks år | seks år sidan | 52584 timar |
+
+## `formatRelative`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result |
+| ------------------------ | ---------------------- |
+| 2000-01-10T00:00:00.000Z | 10.01.2000 |
+| 2000-01-05T00:00:00.000Z | onsdag kl. 00:00 |
+| 2000-01-02T00:00:00.000Z | i morgon kl. 00:00 |
+| 2000-01-01T00:00:00.000Z | i dag kl. 00:00 |
+| 1999-12-31T00:00:00.000Z | i går kl. 00:00 |
+| 1999-12-27T00:00:00.000Z | førre måndag kl. 00:00 |
+| 1999-12-21T00:00:00.000Z | 21.12.1999 |
diff --git a/date-fns/src/locale/pl/_lib/formatDistance/index.js b/date-fns/src/locale/pl/_lib/formatDistance/index.js
new file mode 100644
index 0000000..d3069db
--- /dev/null
+++ b/date-fns/src/locale/pl/_lib/formatDistance/index.js
@@ -0,0 +1,169 @@
+function declensionGroup(scheme, count) {
+ if (count === 1) {
+ return scheme.one
+ }
+
+ var rem100 = count % 100
+
+ // ends with 11-20
+ if (rem100 <= 20 && rem100 > 10) {
+ return scheme.other
+ }
+
+ var rem10 = rem100 % 10
+
+ // ends with 2, 3, 4
+ if (rem10 >= 2 && rem10 <= 4) {
+ return scheme.twoFour
+ }
+
+ return scheme.other
+}
+
+function declension(scheme, count, time) {
+ time = time || 'regular'
+ var group = declensionGroup(scheme, count)
+ var finalText = group[time] || group
+ return finalText.replace('{{count}}', count)
+}
+
+var formatDistanceLocale = {
+ lessThanXSeconds: {
+ one: {
+ regular: 'mniej niż sekunda',
+ past: 'mniej niż sekundę',
+ future: 'mniej niż sekundę'
+ },
+ twoFour: 'mniej niż {{count}} sekundy',
+ other: 'mniej niż {{count}} sekund'
+ },
+
+ xSeconds: {
+ one: {
+ regular: 'sekunda',
+ past: 'sekundę',
+ future: 'sekundę'
+ },
+ twoFour: '{{count}} sekundy',
+ other: '{{count}} sekund'
+ },
+
+ halfAMinute: {
+ one: 'pół minuty',
+ twoFour: 'pół minuty',
+ other: 'pół minuty'
+ },
+
+ lessThanXMinutes: {
+ one: {
+ regular: 'mniej niż minuta',
+ past: 'mniej niż minutę',
+ future: 'mniej niż minutę'
+ },
+ twoFour: 'mniej niż {{count}} minuty',
+ other: 'mniej niż {{count}} minut'
+ },
+
+ xMinutes: {
+ one: {
+ regular: 'minuta',
+ past: 'minutę',
+ future: 'minutę'
+ },
+ twoFour: '{{count}} minuty',
+ other: '{{count}} minut'
+ },
+
+ aboutXHours: {
+ one: {
+ regular: 'około godziny',
+ past: 'około godziny',
+ future: 'około godzinę'
+ },
+ twoFour: 'około {{count}} godziny',
+ other: 'około {{count}} godzin'
+ },
+
+ xHours: {
+ one: {
+ regular: 'godzina',
+ past: 'godzinę',
+ future: 'godzinę'
+ },
+ twoFour: '{{count}} godziny',
+ other: '{{count}} godzin'
+ },
+
+ xDays: {
+ one: {
+ regular: 'dzień',
+ past: 'dzień',
+ future: '1 dzień'
+ },
+ twoFour: '{{count}} dni',
+ other: '{{count}} dni'
+ },
+
+ aboutXWeeks: {
+ one: 'około tygodnia',
+ twoFour: 'około {{count}} tygodni',
+ other: 'około {{count}} tygodni'
+ },
+
+ xWeeks: {
+ one: 'tydzień',
+ twoFour: '{{count}} tygodnie',
+ other: '{{count}} tygodni'
+ },
+
+ aboutXMonths: {
+ one: 'około miesiąc',
+ twoFour: 'około {{count}} miesiące',
+ other: 'około {{count}} miesięcy'
+ },
+
+ xMonths: {
+ one: 'miesiąc',
+ twoFour: '{{count}} miesiące',
+ other: '{{count}} miesięcy'
+ },
+
+ aboutXYears: {
+ one: 'około rok',
+ twoFour: 'około {{count}} lata',
+ other: 'około {{count}} lat'
+ },
+
+ xYears: {
+ one: 'rok',
+ twoFour: '{{count}} lata',
+ other: '{{count}} lat'
+ },
+
+ overXYears: {
+ one: 'ponad rok',
+ twoFour: 'ponad {{count}} lata',
+ other: 'ponad {{count}} lat'
+ },
+
+ almostXYears: {
+ one: 'prawie rok',
+ twoFour: 'prawie {{count}} lata',
+ other: 'prawie {{count}} lat'
+ }
+}
+
+export default function formatDistance(token, count, options) {
+ options = options || {}
+
+ var scheme = formatDistanceLocale[token]
+ if (!options.addSuffix) {
+ return declension(scheme, count)
+ }
+
+ if (options.comparison > 0) {
+ return 'za ' + declension(scheme, count, 'future')
+ } else {
+ return declension(scheme, count, 'past') + ' temu'
+ }
+}
diff --git a/date-fns/src/locale/pl/_lib/formatLong/index.js b/date-fns/src/locale/pl/_lib/formatLong/index.js
new file mode 100644
index 0000000..4cb65a1
--- /dev/null
+++ b/date-fns/src/locale/pl/_lib/formatLong/index.js
@@ -0,0 +1,41 @@
+import buildFormatLongFn from '../../../_lib/buildFormatLongFn/index'
+
+var dateFormats = {
+ full: 'EEEE, do MMMM y',
+ long: 'do MMMM y',
+ medium: 'do MMM y',
+ short: 'dd.MM.y'
+}
+
+var timeFormats = {
+ full: 'HH:mm:ss zzzz',
+ long: 'HH:mm:ss z',
+ medium: 'HH:mm:ss',
+ short: 'HH:mm'
+}
+
+var dateTimeFormats = {
+ full: '{{date}} {{time}}',
+ long: '{{date}} {{time}}',
+ medium: '{{date}}, {{time}}',
+ short: '{{date}}, {{time}}'
+}
+
+var formatLong = {
+ date: buildFormatLongFn({
+ formats: dateFormats,
+ defaultWidth: 'full'
+ }),
+
+ time: buildFormatLongFn({
+ formats: timeFormats,
+ defaultWidth: 'full'
+ }),
+
+ dateTime: buildFormatLongFn({
+ formats: dateTimeFormats,
+ defaultWidth: 'full'
+ })
+}
+
+export default formatLong
diff --git a/date-fns/src/locale/pl/_lib/formatRelative/index.js b/date-fns/src/locale/pl/_lib/formatRelative/index.js
new file mode 100644
index 0000000..22eb1e2
--- /dev/null
+++ b/date-fns/src/locale/pl/_lib/formatRelative/index.js
@@ -0,0 +1,69 @@
+import isSameUTCWeek from '../../../../_lib/isSameUTCWeek/index'
+
+var adjectivesLastWeek = {
+ masculine: 'ostatni',
+ feminine: 'ostatnia'
+}
+
+var adjectivesThisWeek = {
+ masculine: 'ten',
+ feminine: 'ta'
+}
+
+var adjectivesNextWeek = {
+ masculine: 'następny',
+ feminine: 'następna'
+}
+
+var dayGrammaticalGender = {
+ 0: 'feminine',
+ 1: 'masculine',
+ 2: 'masculine',
+ 3: 'feminine',
+ 4: 'masculine',
+ 5: 'masculine',
+ 6: 'feminine'
+}
+
+function getAdjectives(token, date, baseDate, options) {
+ if (isSameUTCWeek(date, baseDate, options)) {
+ return adjectivesThisWeek
+ } else if (token === 'lastWeek') {
+ return adjectivesLastWeek
+ } else if (token === 'nextWeek') {
+ return adjectivesNextWeek
+ } else {
+ throw new Error(`Cannot determine adjectives for token ${token}`)
+ }
+}
+
+function getAdjective(token, date, baseDate, options) {
+ var day = date.getUTCDay()
+ var adjectives = getAdjectives(token, date, baseDate, options)
+ var grammaticalGender = dayGrammaticalGender[day]
+
+ return adjectives[grammaticalGender]
+}
+
+function dayAndTimeWithAdjective(token, date, baseDate, options) {
+ var adjective = getAdjective(token, date, baseDate, options)
+ return `'${adjective}' eeee 'o' p`
+}
+
+var formatRelativeLocale = {
+ lastWeek: dayAndTimeWithAdjective,
+ yesterday: "'wczoraj o' p",
+ today: "'dzisiaj o' p",
+ tomorrow: "'jutro o' p",
+ nextWeek: dayAndTimeWithAdjective,
+ other: 'P'
+}
+
+export default function formatRelative(token, date, baseDate, options) {
+ var format = formatRelativeLocale[token]
+ if (typeof format === 'function') {
+ return format(token, date, baseDate, options)
+ }
+
+ return format
+}
diff --git a/date-fns/src/locale/pl/_lib/localize/index.js b/date-fns/src/locale/pl/_lib/localize/index.js
new file mode 100644
index 0000000..e348565
--- /dev/null
+++ b/date-fns/src/locale/pl/_lib/localize/index.js
@@ -0,0 +1,215 @@
+import buildLocalizeFn from '../../../_lib/buildLocalizeFn/index'
+
+function ordinalNumber(dirtyNumber) {
+ var number = Number(dirtyNumber)
+ return String(number)
+}
+
+var eraValues = {
+ narrow: ['p.n.e.', 'n.e.'],
+ abbreviated: ['p.n.e.', 'n.e.'],
+ wide: ['przed naszą erą', 'naszej ery']
+}
+
+var quarterValues = {
+ narrow: ['1', '2', '3', '4'],
+ abbreviated: ['I kw.', 'II kw.', 'III kw.', 'IV kw.'],
+ wide: ['I kwartał', 'II kwartał', 'III kwartał', 'IV kwartał']
+}
+
+var monthValues = {
+ narrow: ['S', 'L', 'M', 'K', 'M', 'C', 'L', 'S', 'W', 'P', 'L', 'G'],
+ abbreviated: [
+ 'sty',
+ 'lut',
+ 'mar',
+ 'kwi',
+ 'maj',
+ 'cze',
+ 'lip',
+ 'sie',
+ 'wrz',
+ 'paź',
+ 'lis',
+ 'gru'
+ ],
+ wide: [
+ 'styczeń',
+ 'luty',
+ 'marzec',
+ 'kwiecień',
+ 'maj',
+ 'czerwiec',
+ 'lipiec',
+ 'sierpień',
+ 'wrzesień',
+ 'październik',
+ 'listopad',
+ 'grudzień'
+ ]
+}
+var monthFormattingValues = {
+ narrow: ['s', 'l', 'm', 'k', 'm', 'c', 'l', 's', 'w', 'p', 'l', 'g'],
+ abbreviated: [
+ 'sty',
+ 'lut',
+ 'mar',
+ 'kwi',
+ 'maj',
+ 'cze',
+ 'lip',
+ 'sie',
+ 'wrz',
+ 'paź',
+ 'lis',
+ 'gru'
+ ],
+ wide: [
+ 'stycznia',
+ 'lutego',
+ 'marca',
+ 'kwietnia',
+ 'maja',
+ 'czerwca',
+ 'lipca',
+ 'sierpnia',
+ 'września',
+ 'października',
+ 'listopada',
+ 'grudnia'
+ ]
+}
+
+var dayValues = {
+ narrow: ['N', 'P', 'W', 'Ś', 'C', 'P', 'S'],
+ short: ['nie', 'pon', 'wto', 'śro', 'czw', 'pią', 'sob'],
+ abbreviated: ['niedz.', 'pon.', 'wt.', 'śr.', 'czw.', 'pt.', 'sob.'],
+ wide: [
+ 'niedziela',
+ 'poniedziałek',
+ 'wtorek',
+ 'środa',
+ 'czwartek',
+ 'piątek',
+ 'sobota'
+ ]
+}
+var dayFormattingValues = {
+ narrow: ['n', 'p', 'w', 'ś', 'c', 'p', 's'],
+ short: ['nie', 'pon', 'wto', 'śro', 'czw', 'pią', 'sob'],
+ abbreviated: ['niedz.', 'pon.', 'wt.', 'śr.', 'czw.', 'pt.', 'sob.'],
+ wide: [
+ 'niedziela',
+ 'poniedziałek',
+ 'wtorek',
+ 'środa',
+ 'czwartek',
+ 'piątek',
+ 'sobota'
+ ]
+}
+
+var dayPeriodValues = {
+ narrow: {
+ am: 'a',
+ pm: 'p',
+ midnight: 'półn.',
+ noon: 'poł',
+ morning: 'rano',
+ afternoon: 'popoł.',
+ evening: 'wiecz.',
+ night: 'noc'
+ },
+ abbreviated: {
+ am: 'AM',
+ pm: 'PM',
+ midnight: 'północ',
+ noon: 'południe',
+ morning: 'rano',
+ afternoon: 'popołudnie',
+ evening: 'wieczór',
+ night: 'noc'
+ },
+ wide: {
+ am: 'AM',
+ pm: 'PM',
+ midnight: 'północ',
+ noon: 'południe',
+ morning: 'rano',
+ afternoon: 'popołudnie',
+ evening: 'wieczór',
+ night: 'noc'
+ }
+}
+var dayPeriodFormattingValues = {
+ narrow: {
+ am: 'a',
+ pm: 'p',
+ midnight: 'o półn.',
+ noon: 'w poł.',
+ morning: 'rano',
+ afternoon: 'po poł.',
+ evening: 'wiecz.',
+ night: 'w nocy'
+ },
+ abbreviated: {
+ am: 'AM',
+ pm: 'PM',
+ midnight: 'o północy',
+ noon: 'w południe',
+ morning: 'rano',
+ afternoon: 'po południu',
+ evening: 'wieczorem',
+ night: 'w nocy'
+ },
+ wide: {
+ am: 'AM',
+ pm: 'PM',
+ midnight: 'o północy',
+ noon: 'w południe',
+ morning: 'rano',
+ afternoon: 'po południu',
+ evening: 'wieczorem',
+ night: 'w nocy'
+ }
+}
+
+var localize = {
+ ordinalNumber: ordinalNumber,
+
+ era: buildLocalizeFn({
+ values: eraValues,
+ defaultWidth: 'wide'
+ }),
+
+ quarter: buildLocalizeFn({
+ values: quarterValues,
+ defaultWidth: 'wide',
+ argumentCallback: function(quarter) {
+ return Number(quarter) - 1
+ }
+ }),
+
+ month: buildLocalizeFn({
+ values: monthValues,
+ defaultWidth: 'wide',
+ formattingValues: monthFormattingValues,
+ defaultFormattingWidth: 'wide'
+ }),
+
+ day: buildLocalizeFn({
+ values: dayValues,
+ defaultWidth: 'wide',
+ formattingValues: dayFormattingValues,
+ defaultFormattingWidth: 'wide'
+ }),
+
+ dayPeriod: buildLocalizeFn({
+ values: dayPeriodValues,
+ defaultWidth: 'wide',
+ formattingValues: dayPeriodFormattingValues,
+ defaultFormattingWidth: 'wide'
+ })
+}
+
+export default localize
diff --git a/date-fns/src/locale/pl/_lib/match/index.js b/date-fns/src/locale/pl/_lib/match/index.js
new file mode 100644
index 0000000..8d62792
--- /dev/null
+++ b/date-fns/src/locale/pl/_lib/match/index.js
@@ -0,0 +1,149 @@
+import buildMatchPatternFn from '../../../_lib/buildMatchPatternFn/index'
+import buildMatchFn from '../../../_lib/buildMatchFn/index'
+
+var matchOrdinalNumberPattern = /^(\d+)?/i
+var parseOrdinalNumberPattern = /\d+/i
+
+var matchEraPatterns = {
+ narrow: /^(p\.?\s*n\.?\s*e\.?\s*|n\.?\s*e\.?\s*)/i,
+ abbreviated: /^(p\.?\s*n\.?\s*e\.?\s*|n\.?\s*e\.?\s*)/i,
+ wide: /^(przed\s*nasz(ą|a)\s*er(ą|a)|naszej\s*ery)/i
+}
+var parseEraPatterns = {
+ any: [/^p/i, /^n/i]
+}
+
+var matchQuarterPatterns = {
+ narrow: /^[1234]/i,
+ abbreviated: /^(I|II|III|IV)\s*kw\.?/i,
+ wide: /^(I|II|III|IV)\s*kwarta(ł|l)/i
+}
+var parseQuarterPatterns = {
+ narrow: [/1/i, /2/i, /3/i, /4/i],
+ any: [/^I kw/i, /^II kw/i, /^III kw/i, /^IV kw/i]
+}
+
+var matchMonthPatterns = {
+ narrow: /^[slmkcwpg]/i,
+ abbreviated: /^(sty|lut|mar|kwi|maj|cze|lip|sie|wrz|pa(ź|z)|lis|gru)/i,
+ wide: /^(stycznia|stycze(ń|n)|lutego|luty|marca|marzec|kwietnia|kwiecie(ń|n)|maja|maj|czerwca|czerwiec|lipca|lipiec|sierpnia|sierpie(ń|n)|wrze(ś|s)nia|wrzesie(ń|n)|pa(ź|z)dziernika|pa(ź|z)dziernik|listopada|listopad|grudnia|grudzie(ń|n))/i
+}
+var parseMonthPatterns = {
+ narrow: [
+ /^s/i,
+ /^l/i,
+ /^m/i,
+ /^k/i,
+ /^m/i,
+ /^c/i,
+ /^l/i,
+ /^s/i,
+ /^w/i,
+ /^p/i,
+ /^l/i,
+ /^g/i
+ ],
+ any: [
+ /^st/i,
+ /^lu/i,
+ /^mar/i,
+ /^k/i,
+ /^maj/i,
+ /^c/i,
+ /^lip/i,
+ /^si/i,
+ /^w/i,
+ /^p/i,
+ /^lis/i,
+ /^g/i
+ ]
+}
+
+var matchDayPatterns = {
+ narrow: /^[npwścs]/i,
+ short: /^(nie|pon|wto|(ś|s)ro|czw|pi(ą|a)|sob)/i,
+ abbreviated: /^(niedz|pon|wt|(ś|s)r|czw|pt|sob)\.?/i,
+ wide: /^(niedziela|poniedzia(ł|l)ek|wtorek|(ś|s)roda|czwartek|pi(ą|a)tek|sobota)/i
+}
+var parseDayPatterns = {
+ narrow: [/^n/i, /^p/i, /^w/i, /^ś/i, /^c/i, /^p/i, /^s/i],
+ abbreviated: [/^n/i, /^po/i, /^w/i, /^(ś|s)r/i, /^c/i, /^pt/i, /^so/i],
+ any: [/^n/i, /^po/i, /^w/i, /^(ś|s)r/i, /^c/i, /^pi/i, /^so/i]
+}
+
+var matchDayPeriodPatterns = {
+ narrow: /^(^a$|^p$|pó(ł|l)n\.?|o\s*pó(ł|l)n\.?|po(ł|l)\.?|w\s*po(ł|l)\.?|po\s*po(ł|l)\.?|rano|wiecz\.?|noc|w\s*nocy)/i,
+ any: /^(am|pm|pó(ł|l)noc|o\s*pó(ł|l)nocy|po(ł|l)udnie|w\s*po(ł|l)udnie|popo(ł|l)udnie|po\s*po(ł|l)udniu|rano|wieczór|wieczorem|noc|w\s*nocy)/i
+}
+var parseDayPeriodPatterns = {
+ narrow: {
+ am: /^a$/i,
+ pm: /^p$/i,
+ midnight: /pó(ł|l)n/i,
+ noon: /po(ł|l)/i,
+ morning: /rano/i,
+ afternoon: /po\s*po(ł|l)/i,
+ evening: /wiecz/i,
+ night: /noc/i
+ },
+ any: {
+ am: /^am/i,
+ pm: /^pm/i,
+ midnight: /pó(ł|l)n/i,
+ noon: /po(ł|l)/i,
+ morning: /rano/i,
+ afternoon: /po\s*po(ł|l)/i,
+ evening: /wiecz/i,
+ night: /noc/i
+ }
+}
+
+var match = {
+ ordinalNumber: buildMatchPatternFn({
+ matchPattern: matchOrdinalNumberPattern,
+ parsePattern: parseOrdinalNumberPattern,
+ valueCallback: function(value) {
+ return parseInt(value, 10)
+ }
+ }),
+
+ era: buildMatchFn({
+ matchPatterns: matchEraPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseEraPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ quarter: buildMatchFn({
+ matchPatterns: matchQuarterPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseQuarterPatterns,
+ defaultParseWidth: 'any',
+ valueCallback: function(index) {
+ return index + 1
+ }
+ }),
+
+ month: buildMatchFn({
+ matchPatterns: matchMonthPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseMonthPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ day: buildMatchFn({
+ matchPatterns: matchDayPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseDayPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ dayPeriod: buildMatchFn({
+ matchPatterns: matchDayPeriodPatterns,
+ defaultMatchWidth: 'any',
+ parsePatterns: parseDayPeriodPatterns,
+ defaultParseWidth: 'any'
+ })
+}
+
+export default match
diff --git a/date-fns/src/locale/pl/index.d.ts b/date-fns/src/locale/pl/index.d.ts
new file mode 100644
index 0000000..1ff8b7d
--- /dev/null
+++ b/date-fns/src/locale/pl/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { pl } from 'date-fns/locale'
+export default pl
diff --git a/date-fns/src/locale/pl/index.js b/date-fns/src/locale/pl/index.js
new file mode 100644
index 0000000..2b74eae
--- /dev/null
+++ b/date-fns/src/locale/pl/index.js
@@ -0,0 +1,31 @@
+import formatDistance from './_lib/formatDistance/index'
+import formatLong from './_lib/formatLong/index'
+import formatRelative from './_lib/formatRelative/index'
+import localize from './_lib/localize/index'
+import match from './_lib/match/index'
+
+/**
+ * @type {Locale}
+ * @category Locales
+ * @summary Polish locale.
+ * @language Polish
+ * @iso-639-2 pol
+ * @author Mateusz Derks [@ertrzyiks]{@link https://github.com/ertrzyiks}
+ * @author Just RAG [@justrag]{@link https://github.com/justrag}
+ * @author Mikolaj Grzyb [@mikolajgrzyb]{@link https://github.com/mikolajgrzyb}
+ * @author Mateusz Tokarski [@mutisz]{@link https://github.com/mutisz}
+ */
+var locale = {
+ code: 'pl',
+ formatDistance: formatDistance,
+ formatLong: formatLong,
+ formatRelative: formatRelative,
+ localize: localize,
+ match: match,
+ options: {
+ weekStartsOn: 1 /* Monday */,
+ firstWeekContainsDate: 4
+ }
+}
+
+export default locale
diff --git a/date-fns/src/locale/pl/index.js.flow b/date-fns/src/locale/pl/index.js.flow
new file mode 100644
index 0000000..b9dfe66
--- /dev/null
+++ b/date-fns/src/locale/pl/index.js.flow
@@ -0,0 +1,35 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+declare module.exports: Locale
diff --git a/date-fns/src/locale/pl/snapshot.md b/date-fns/src/locale/pl/snapshot.md
new file mode 100644
index 0000000..f1fabe9
--- /dev/null
+++ b/date-fns/src/locale/pl/snapshot.md
@@ -0,0 +1,304 @@
+# Polish (pl) locale
+
+## `format` and `parse`
+
+| Title | Token string | Date | `format` result | `parse` result |
+| ------------------------------- | ------------ | ------------------------ | ------------------------------------------ | ------------------------ |
+| Calendar year | yo | 1987-02-11T12:13:14.015Z | 1987 | 1987-01-01T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 5 | 0005-01-01T00:00:00.000Z |
+| Local week-numbering year | Yo | 1987-02-11T12:13:14.015Z | 1987 | 1986-12-29T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 4 | 0003-12-29T00:00:00.000Z |
+| Quarter (formatting) | Qo | 2019-01-01T12:13:14.015Z | 1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2 | 2019-04-01T00:00:00.000Z |
+| | QQQ | 2019-01-01T12:13:14.015Z | I kw. | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | II kw. | 2019-04-01T00:00:00.000Z |
+| | QQQQ | 2019-01-01T12:13:14.015Z | I kwartał | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | II kwartał | 2019-04-01T00:00:00.000Z |
+| | QQQQQ | 2019-01-01T12:13:14.015Z | 1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2 | 2019-04-01T00:00:00.000Z |
+| Quarter (stand-alone) | qo | 2019-01-01T12:13:14.015Z | 1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2 | 2019-04-01T00:00:00.000Z |
+| | qqq | 2019-01-01T12:13:14.015Z | I kw. | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | II kw. | 2019-04-01T00:00:00.000Z |
+| | qqqq | 2019-01-01T12:13:14.015Z | I kwartał | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | II kwartał | 2019-04-01T00:00:00.000Z |
+| Month (formatting) | Mo | 2019-02-11T12:13:14.015Z | 2 | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7 | 2019-07-01T00:00:00.000Z |
+| | MMM | 2019-02-11T12:13:14.015Z | lut | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | lip | 2019-07-01T00:00:00.000Z |
+| | MMMM | 2019-02-11T12:13:14.015Z | lutego | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | lipca | 2019-07-01T00:00:00.000Z |
+| | MMMMM | 2019-02-11T12:13:14.015Z | l | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | l | 2019-02-01T00:00:00.000Z |
+| Month (stand-alone) | Lo | 2019-02-11T12:13:14.015Z | 2 | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7 | 2019-07-01T00:00:00.000Z |
+| | LLL | 2019-02-11T12:13:14.015Z | lut | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | lip | 2019-07-01T00:00:00.000Z |
+| | LLLL | 2019-02-11T12:13:14.015Z | luty | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | lipiec | 2019-07-01T00:00:00.000Z |
+| | LLLLL | 2019-02-11T12:13:14.015Z | L | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | L | 2019-02-01T00:00:00.000Z |
+| Local week of year | wo | 2019-01-01T12:13:14.015Z | 1 | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48 | 2019-11-25T00:00:00.000Z |
+| ISO week of year | Io | 2019-01-01T12:13:14.015Z | 1 | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48 | 2019-11-25T00:00:00.000Z |
+| Day of month | do | 2019-02-11T12:13:14.015Z | 11 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-28T12:13:14.015Z | 28 | 2019-02-28T00:00:00.000Z |
+| Day of year | Do | 2019-02-11T12:13:14.015Z | 42 | 2019-02-11T00:00:00.000Z |
+| | | 2019-12-31T12:13:14.015Z | 365 | 2019-12-31T00:00:00.000Z |
+| Day of week (formatting) | E | 2019-02-11T12:13:14.015Z | pon. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | pt. | 2019-02-15T00:00:00.000Z |
+| | EE | 2019-02-11T12:13:14.015Z | pon. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | pt. | 2019-02-15T00:00:00.000Z |
+| | EEE | 2019-02-11T12:13:14.015Z | pon. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | pt. | 2019-02-15T00:00:00.000Z |
+| | EEEE | 2019-02-11T12:13:14.015Z | poniedziałek | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | piątek | 2019-02-15T00:00:00.000Z |
+| | EEEEE | 2019-02-11T12:13:14.015Z | p | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | p | 2019-02-11T00:00:00.000Z |
+| | EEEEEE | 2019-02-11T12:13:14.015Z | pon | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | pią | 2019-02-15T00:00:00.000Z |
+| ISO day of week (formatting) | io | 2019-02-11T12:13:14.015Z | 1 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5 | 2019-02-15T00:00:00.000Z |
+| | iii | 2019-02-11T12:13:14.015Z | pon. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | pt. | 2019-02-15T00:00:00.000Z |
+| | iiii | 2019-02-11T12:13:14.015Z | poniedziałek | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | piątek | 2019-02-15T00:00:00.000Z |
+| | iiiii | 2019-02-11T12:13:14.015Z | p | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | p | 2019-02-11T00:00:00.000Z |
+| | iiiiii | 2019-02-11T12:13:14.015Z | pon | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | pią | 2019-02-15T00:00:00.000Z |
+| Local day of week (formatting) | eo | 2019-02-11T12:13:14.015Z | 1 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5 | 2019-02-15T00:00:00.000Z |
+| | eee | 2019-02-11T12:13:14.015Z | pon. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | pt. | 2019-02-15T00:00:00.000Z |
+| | eeee | 2019-02-11T12:13:14.015Z | poniedziałek | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | piątek | 2019-02-15T00:00:00.000Z |
+| | eeeee | 2019-02-11T12:13:14.015Z | p | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | p | 2019-02-11T00:00:00.000Z |
+| | eeeeee | 2019-02-11T12:13:14.015Z | pon | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | pią | 2019-02-15T00:00:00.000Z |
+| Local day of week (stand-alone) | co | 2019-02-11T12:13:14.015Z | 1 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5 | 2019-02-15T00:00:00.000Z |
+| | ccc | 2019-02-11T12:13:14.015Z | pon. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | pt. | 2019-02-15T00:00:00.000Z |
+| | cccc | 2019-02-11T12:13:14.015Z | poniedziałek | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | piątek | 2019-02-15T00:00:00.000Z |
+| | ccccc | 2019-02-11T12:13:14.015Z | P | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | P | 2019-02-11T00:00:00.000Z |
+| | cccccc | 2019-02-11T12:13:14.015Z | pon | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | pią | 2019-02-15T00:00:00.000Z |
+| AM, PM | a | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | aa | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | aaa | 2019-02-11T11:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | aaaa | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | aaaaa | 2019-02-11T11:13:14.015Z | a | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | p | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | p | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | a | 2019-02-11T00:00:00.000Z |
+| AM, PM, noon, midnight | b | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | bb | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | bbb | 2019-02-11T11:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | bbbb | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | bbbbb | 2019-02-11T11:13:14.015Z | a | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | p | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | p | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | a | 2019-02-11T00:00:00.000Z |
+| Flexible day period | B | 2019-02-11T11:13:14.015Z | rano | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | po południu | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | wieczorem | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | w nocy | 2019-02-11T00:00:00.000Z |
+| | BB | 2019-02-11T11:13:14.015Z | rano | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | po południu | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | wieczorem | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | w nocy | 2019-02-11T00:00:00.000Z |
+| | BBB | 2019-02-11T11:13:14.015Z | rano | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | po południu | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | wieczorem | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | w nocy | 2019-02-11T00:00:00.000Z |
+| | BBBB | 2019-02-11T11:13:14.015Z | rano | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | po południu | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | wieczorem | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | w nocy | 2019-02-11T00:00:00.000Z |
+| | BBBBB | 2019-02-11T11:13:14.015Z | rano | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | po poł. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | wiecz. | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | w nocy | 2019-02-11T00:00:00.000Z |
+| Hour [1-12] | ho | 2019-02-11T11:13:14.015Z | 11 | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11 | 2019-02-11T23:00:00.000Z |
+| Hour [0-23] | Ho | 2019-02-11T11:13:14.015Z | 11 | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23 | 2019-02-11T23:00:00.000Z |
+| Hour [0-11] | Ko | 2019-02-11T11:13:14.015Z | 11 | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11 | 2019-02-11T23:00:00.000Z |
+| Hour [1-24] | ko | 2019-02-11T11:13:14.015Z | 11 | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23 | 2019-02-11T23:00:00.000Z |
+| Minute | mo | 2019-01-01T12:01:14.015Z | 1 | 2019-01-01T12:01:00.000Z |
+| | | 2019-04-01T12:55:14.015Z | 55 | 2019-04-01T12:55:00.000Z |
+| Second | so | 2019-01-01T12:13:01.015Z | 1 | 2019-01-01T12:13:01.000Z |
+| | | 2019-04-01T12:13:55.015Z | 55 | 2019-04-01T12:13:55.000Z |
+| Long localized date | P | 1987-02-11T12:13:14.015Z | 11.02.1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29.05.1453 | 1453-05-29T00:00:00.000Z |
+| | PP | 1987-02-11T12:13:14.015Z | 11 lut 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 maj 1453 | 1453-05-29T00:00:00.000Z |
+| | PPP | 1987-02-11T12:13:14.015Z | 11 lutego 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 maja 1453 | 1453-05-29T00:00:00.000Z |
+| | PPPP | 1987-02-11T12:13:14.015Z | środa, 11 lutego 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | niedziela, 29 maja 1453 | 1453-05-29T00:00:00.000Z |
+| Long localized time | p | 1987-02-11T12:13:14.015Z | 12:13 | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 23:59 | 1453-05-29T23:59:00.000Z |
+| | pp | 1987-02-11T12:13:14.015Z | 12:13:14 | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 | 1453-05-29T23:59:59.000Z |
+| | ppp | 1987-02-11T12:13:14.015Z | 12:13:14 GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 GMT+0 | Errored |
+| | pppp | 1987-02-11T12:13:14.015Z | 12:13:14 GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 GMT+00:00 | Errored |
+| Combination of date and time | Pp | 1987-02-11T12:13:14.015Z | 11.02.1987, 12:13 | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29.05.1453, 23:59 | 1453-05-29T23:59:00.000Z |
+| | PPpp | 1987-02-11T12:13:14.015Z | 11 lut 1987, 12:13:14 | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 maj 1453, 23:59:59 | 1453-05-29T23:59:59.000Z |
+| | PPPppp | 1987-02-11T12:13:14.015Z | 11 lutego 1987 12:13:14 GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 29 maja 1453 23:59:59 GMT+0 | Errored |
+| | PPPPpppp | 1987-02-11T12:13:14.015Z | środa, 11 lutego 1987 12:13:14 GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | niedziela, 29 maja 1453 23:59:59 GMT+00:00 | Errored |
+
+## `formatDistance`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `includeSeconds: true` | `addSuffix: true` |
+| ------------------------ | ---------------- | ---------------------- | --------------------- |
+| 2006-01-01T00:00:00.000Z | około 6 lat | około 6 lat | za około 6 lat |
+| 2005-01-01T00:00:00.000Z | około 5 lat | około 5 lat | za około 5 lat |
+| 2004-01-01T00:00:00.000Z | około 4 lata | około 4 lata | za około 4 lata |
+| 2003-01-01T00:00:00.000Z | około 3 lata | około 3 lata | za około 3 lata |
+| 2002-01-01T00:00:00.000Z | około 2 lata | około 2 lata | za około 2 lata |
+| 2001-06-01T00:00:00.000Z | ponad rok | ponad rok | za ponad rok |
+| 2001-02-01T00:00:00.000Z | około rok | około rok | za około rok |
+| 2001-01-01T00:00:00.000Z | około rok | około rok | za około rok |
+| 2000-06-01T00:00:00.000Z | 5 miesięcy | 5 miesięcy | za 5 miesięcy |
+| 2000-03-01T00:00:00.000Z | 2 miesiące | 2 miesiące | za 2 miesiące |
+| 2000-02-01T00:00:00.000Z | około miesiąc | około miesiąc | za około miesiąc |
+| 2000-01-15T00:00:00.000Z | 14 dni | 14 dni | za 14 dni |
+| 2000-01-02T00:00:00.000Z | dzień | dzień | za 1 dzień |
+| 2000-01-01T06:00:00.000Z | około 6 godzin | około 6 godzin | za około 6 godzin |
+| 2000-01-01T01:00:00.000Z | około godziny | około godziny | za około godzinę |
+| 2000-01-01T00:45:00.000Z | około godziny | około godziny | za około godzinę |
+| 2000-01-01T00:30:00.000Z | 30 minut | 30 minut | za 30 minut |
+| 2000-01-01T00:15:00.000Z | 15 minut | 15 minut | za 15 minut |
+| 2000-01-01T00:01:00.000Z | minuta | minuta | za minutę |
+| 2000-01-01T00:00:25.000Z | mniej niż minuta | pół minuty | za mniej niż minutę |
+| 2000-01-01T00:00:15.000Z | mniej niż minuta | mniej niż 20 sekund | za mniej niż minutę |
+| 2000-01-01T00:00:05.000Z | mniej niż minuta | mniej niż 10 sekund | za mniej niż minutę |
+| 2000-01-01T00:00:00.000Z | mniej niż minuta | mniej niż 5 sekund | mniej niż minutę temu |
+| 1999-12-31T23:59:55.000Z | mniej niż minuta | mniej niż 10 sekund | mniej niż minutę temu |
+| 1999-12-31T23:59:45.000Z | mniej niż minuta | mniej niż 20 sekund | mniej niż minutę temu |
+| 1999-12-31T23:59:35.000Z | mniej niż minuta | pół minuty | mniej niż minutę temu |
+| 1999-12-31T23:59:00.000Z | minuta | minuta | minutę temu |
+| 1999-12-31T23:45:00.000Z | 15 minut | 15 minut | 15 minut temu |
+| 1999-12-31T23:30:00.000Z | 30 minut | 30 minut | 30 minut temu |
+| 1999-12-31T23:15:00.000Z | około godziny | około godziny | około godziny temu |
+| 1999-12-31T23:00:00.000Z | około godziny | około godziny | około godziny temu |
+| 1999-12-31T18:00:00.000Z | około 6 godzin | około 6 godzin | około 6 godzin temu |
+| 1999-12-30T00:00:00.000Z | 2 dni | 2 dni | 2 dni temu |
+| 1999-12-15T00:00:00.000Z | 17 dni | 17 dni | 17 dni temu |
+| 1999-12-01T00:00:00.000Z | około miesiąc | około miesiąc | około miesiąc temu |
+| 1999-11-01T00:00:00.000Z | 2 miesiące | 2 miesiące | 2 miesiące temu |
+| 1999-06-01T00:00:00.000Z | 7 miesięcy | 7 miesięcy | 7 miesięcy temu |
+| 1999-01-01T00:00:00.000Z | około rok | około rok | około rok temu |
+| 1998-12-01T00:00:00.000Z | około rok | około rok | około rok temu |
+| 1998-06-01T00:00:00.000Z | ponad rok | ponad rok | ponad rok temu |
+| 1998-01-01T00:00:00.000Z | około 2 lata | około 2 lata | około 2 lata temu |
+| 1997-01-01T00:00:00.000Z | około 3 lata | około 3 lata | około 3 lata temu |
+| 1996-01-01T00:00:00.000Z | około 4 lata | około 4 lata | około 4 lata temu |
+| 1995-01-01T00:00:00.000Z | około 5 lat | około 5 lat | około 5 lat temu |
+| 1994-01-01T00:00:00.000Z | około 6 lat | około 6 lat | około 6 lat temu |
+
+## `formatDistanceStrict`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `addSuffix: true` | With forced unit (i.e. `hour`) |
+| ------------------------ | ---------- | ----------------- | ------------------------------ |
+| 2006-01-01T00:00:00.000Z | 6 lat | za 6 lat | 52608 godzin |
+| 2005-01-01T00:00:00.000Z | 5 lat | za 5 lat | 43848 godzin |
+| 2004-01-01T00:00:00.000Z | 4 lata | za 4 lata | 35064 godziny |
+| 2003-01-01T00:00:00.000Z | 3 lata | za 3 lata | 26304 godziny |
+| 2002-01-01T00:00:00.000Z | 2 lata | za 2 lata | 17544 godziny |
+| 2001-06-01T00:00:00.000Z | rok | za rok | 12408 godzin |
+| 2001-02-01T00:00:00.000Z | rok | za rok | 9528 godzin |
+| 2001-01-01T00:00:00.000Z | rok | za rok | 8784 godziny |
+| 2000-06-01T00:00:00.000Z | 5 miesięcy | za 5 miesięcy | 3648 godzin |
+| 2000-03-01T00:00:00.000Z | 2 miesiące | za 2 miesiące | 1440 godzin |
+| 2000-02-01T00:00:00.000Z | miesiąc | za miesiąc | 744 godziny |
+| 2000-01-15T00:00:00.000Z | 14 dni | za 14 dni | 336 godzin |
+| 2000-01-02T00:00:00.000Z | dzień | za 1 dzień | 24 godziny |
+| 2000-01-01T06:00:00.000Z | 6 godzin | za 6 godzin | 6 godzin |
+| 2000-01-01T01:00:00.000Z | godzina | za godzinę | godzina |
+| 2000-01-01T00:45:00.000Z | 45 minut | za 45 minut | godzina |
+| 2000-01-01T00:30:00.000Z | 30 minut | za 30 minut | godzina |
+| 2000-01-01T00:15:00.000Z | 15 minut | za 15 minut | 0 godzin |
+| 2000-01-01T00:01:00.000Z | minuta | za minutę | 0 godzin |
+| 2000-01-01T00:00:25.000Z | 25 sekund | za 25 sekund | 0 godzin |
+| 2000-01-01T00:00:15.000Z | 15 sekund | za 15 sekund | 0 godzin |
+| 2000-01-01T00:00:05.000Z | 5 sekund | za 5 sekund | 0 godzin |
+| 2000-01-01T00:00:00.000Z | 0 sekund | 0 sekund temu | 0 godzin |
+| 1999-12-31T23:59:55.000Z | 5 sekund | 5 sekund temu | 0 godzin |
+| 1999-12-31T23:59:45.000Z | 15 sekund | 15 sekund temu | 0 godzin |
+| 1999-12-31T23:59:35.000Z | 25 sekund | 25 sekund temu | 0 godzin |
+| 1999-12-31T23:59:00.000Z | minuta | minutę temu | 0 godzin |
+| 1999-12-31T23:45:00.000Z | 15 minut | 15 minut temu | 0 godzin |
+| 1999-12-31T23:30:00.000Z | 30 minut | 30 minut temu | godzina |
+| 1999-12-31T23:15:00.000Z | 45 minut | 45 minut temu | godzina |
+| 1999-12-31T23:00:00.000Z | godzina | godzinę temu | godzina |
+| 1999-12-31T18:00:00.000Z | 6 godzin | 6 godzin temu | 6 godzin |
+| 1999-12-30T00:00:00.000Z | 2 dni | 2 dni temu | 48 godzin |
+| 1999-12-15T00:00:00.000Z | 17 dni | 17 dni temu | 408 godzin |
+| 1999-12-01T00:00:00.000Z | miesiąc | miesiąc temu | 744 godziny |
+| 1999-11-01T00:00:00.000Z | 2 miesiące | 2 miesiące temu | 1464 godziny |
+| 1999-06-01T00:00:00.000Z | 7 miesięcy | 7 miesięcy temu | 5136 godzin |
+| 1999-01-01T00:00:00.000Z | rok | rok temu | 8760 godzin |
+| 1998-12-01T00:00:00.000Z | rok | rok temu | 9504 godziny |
+| 1998-06-01T00:00:00.000Z | 2 lata | 2 lata temu | 13896 godzin |
+| 1998-01-01T00:00:00.000Z | 2 lata | 2 lata temu | 17520 godzin |
+| 1997-01-01T00:00:00.000Z | 3 lata | 3 lata temu | 26280 godzin |
+| 1996-01-01T00:00:00.000Z | 4 lata | 4 lata temu | 35064 godziny |
+| 1995-01-01T00:00:00.000Z | 5 lat | 5 lat temu | 43824 godziny |
+| 1994-01-01T00:00:00.000Z | 6 lat | 6 lat temu | 52584 godziny |
+
+## `formatRelative`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result |
+| ------------------------ | ------------------------ |
+| 2000-01-10T00:00:00.000Z | 10.01.2000 |
+| 2000-01-05T00:00:00.000Z | następna środa o 00:00 |
+| 2000-01-02T00:00:00.000Z | jutro o 00:00 |
+| 2000-01-01T00:00:00.000Z | dzisiaj o 00:00 |
+| 1999-12-31T00:00:00.000Z | wczoraj o 00:00 |
+| 1999-12-27T00:00:00.000Z | ten poniedziałek o 00:00 |
+| 1999-12-21T00:00:00.000Z | 21.12.1999 |
diff --git a/date-fns/src/locale/pt-BR/_lib/formatDistance/index.js b/date-fns/src/locale/pt-BR/_lib/formatDistance/index.js
new file mode 100644
index 0000000..fb8c5e5
--- /dev/null
+++ b/date-fns/src/locale/pt-BR/_lib/formatDistance/index.js
@@ -0,0 +1,101 @@
+var formatDistanceLocale = {
+ lessThanXSeconds: {
+ one: 'menos de um segundo',
+ other: 'menos de {{count}} segundos'
+ },
+
+ xSeconds: {
+ one: '1 segundo',
+ other: '{{count}} segundos'
+ },
+
+ halfAMinute: 'meio minuto',
+
+ lessThanXMinutes: {
+ one: 'menos de um minuto',
+ other: 'menos de {{count}} minutos'
+ },
+
+ xMinutes: {
+ one: '1 minuto',
+ other: '{{count}} minutos'
+ },
+
+ aboutXHours: {
+ one: 'cerca de 1 hora',
+ other: 'cerca de {{count}} horas'
+ },
+
+ xHours: {
+ one: '1 hora',
+ other: '{{count}} horas'
+ },
+
+ xDays: {
+ one: '1 dia',
+ other: '{{count}} dias'
+ },
+
+ aboutXWeeks: {
+ one: 'cerca de 1 semana',
+ other: 'cerca de {{count}} semanas'
+ },
+
+ xWeeks: {
+ one: '1 semana',
+ other: '{{count}} semanas'
+ },
+
+ aboutXMonths: {
+ one: 'cerca de 1 mês',
+ other: 'cerca de {{count}} meses'
+ },
+
+ xMonths: {
+ one: '1 mês',
+ other: '{{count}} meses'
+ },
+
+ aboutXYears: {
+ one: 'cerca de 1 ano',
+ other: 'cerca de {{count}} anos'
+ },
+
+ xYears: {
+ one: '1 ano',
+ other: '{{count}} anos'
+ },
+
+ overXYears: {
+ one: 'mais de 1 ano',
+ other: 'mais de {{count}} anos'
+ },
+
+ almostXYears: {
+ one: 'quase 1 ano',
+ other: 'quase {{count}} anos'
+ }
+}
+
+export default function formatDistance(token, count, options) {
+ options = options || {}
+
+ var result
+ if (typeof formatDistanceLocale[token] === 'string') {
+ result = formatDistanceLocale[token]
+ } else if (count === 1) {
+ result = formatDistanceLocale[token].one
+ } else {
+ result = formatDistanceLocale[token].other.replace('{{count}}', count)
+ }
+
+ if (options.addSuffix) {
+ if (options.comparison > 0) {
+ return 'em ' + result
+ } else {
+ return 'há ' + result
+ }
+ }
+
+ return result
+}
diff --git a/date-fns/src/locale/pt-BR/_lib/formatLong/index.js b/date-fns/src/locale/pt-BR/_lib/formatLong/index.js
new file mode 100644
index 0000000..96250f1
--- /dev/null
+++ b/date-fns/src/locale/pt-BR/_lib/formatLong/index.js
@@ -0,0 +1,41 @@
+import buildFormatLongFn from '../../../_lib/buildFormatLongFn/index'
+
+var dateFormats = {
+ full: "EEEE, d 'de' MMMM 'de' y",
+ long: "d 'de' MMMM 'de' y",
+ medium: 'd MMM y',
+ short: 'dd/MM/yyyy'
+}
+
+var timeFormats = {
+ full: 'HH:mm:ss zzzz',
+ long: 'HH:mm:ss z',
+ medium: 'HH:mm:ss',
+ short: 'HH:mm'
+}
+
+var dateTimeFormats = {
+ full: "{{date}} 'às' {{time}}",
+ long: "{{date}} 'às' {{time}}",
+ medium: '{{date}}, {{time}}',
+ short: '{{date}}, {{time}}'
+}
+
+var formatLong = {
+ date: buildFormatLongFn({
+ formats: dateFormats,
+ defaultWidth: 'full'
+ }),
+
+ time: buildFormatLongFn({
+ formats: timeFormats,
+ defaultWidth: 'full'
+ }),
+
+ dateTime: buildFormatLongFn({
+ formats: dateTimeFormats,
+ defaultWidth: 'full'
+ })
+}
+
+export default formatLong
diff --git a/date-fns/src/locale/pt-BR/_lib/formatRelative/index.js b/date-fns/src/locale/pt-BR/_lib/formatRelative/index.js
new file mode 100644
index 0000000..4ce6c4d
--- /dev/null
+++ b/date-fns/src/locale/pt-BR/_lib/formatRelative/index.js
@@ -0,0 +1,22 @@
+var formatRelativeLocale = {
+ lastWeek: function(date, _baseDate, _options) {
+ var weekday = date.getUTCDay()
+ var last = weekday === 0 || weekday === 6 ? 'último' : 'última'
+ return "'" + last + "' eeee 'às' p"
+ },
+ yesterday: "'ontem às' p",
+ today: "'hoje às' p",
+ tomorrow: "'amanhã às' p",
+ nextWeek: "eeee 'às' p",
+ other: 'P'
+}
+
+export default function formatRelative(token, date, baseDate, options) {
+ var format = formatRelativeLocale[token]
+
+ if (typeof format === 'function') {
+ return format(date, baseDate, options)
+ }
+
+ return format
+}
diff --git a/date-fns/src/locale/pt-BR/_lib/localize/index.js b/date-fns/src/locale/pt-BR/_lib/localize/index.js
new file mode 100644
index 0000000..36c856e
--- /dev/null
+++ b/date-fns/src/locale/pt-BR/_lib/localize/index.js
@@ -0,0 +1,164 @@
+import buildLocalizeFn from '../../../_lib/buildLocalizeFn/index'
+
+var eraValues = {
+ narrow: ['AC', 'DC'],
+ abbreviated: ['AC', 'DC'],
+ wide: ['antes de cristo', 'depois de cristo']
+}
+
+var quarterValues = {
+ narrow: ['1', '2', '3', '4'],
+ abbreviated: ['T1', 'T2', 'T3', 'T4'],
+ wide: ['1º trimestre', '2º trimestre', '3º trimestre', '4º trimestre']
+}
+
+var monthValues = {
+ narrow: ['j', 'f', 'm', 'a', 'm', 'j', 'j', 'a', 's', 'o', 'n', 'd'],
+ abbreviated: [
+ 'jan',
+ 'fev',
+ 'mar',
+ 'abr',
+ 'mai',
+ 'jun',
+ 'jul',
+ 'ago',
+ 'set',
+ 'out',
+ 'nov',
+ 'dez'
+ ],
+ wide: [
+ 'janeiro',
+ 'fevereiro',
+ 'março',
+ 'abril',
+ 'maio',
+ 'junho',
+ 'julho',
+ 'agosto',
+ 'setembro',
+ 'outubro',
+ 'novembro',
+ 'dezembro'
+ ]
+}
+
+var dayValues = {
+ narrow: ['D', 'S', 'T', 'Q', 'Q', 'S', 'S'],
+ short: ['dom', 'seg', 'ter', 'qua', 'qui', 'sex', 'sab'],
+ abbreviated: ['domingo', 'segunda', 'terça', 'quarta', 'quinta', 'sexta', 'sábado'],
+ wide: ['domingo', 'segunda-feira', 'terça-feira', 'quarta-feira', 'quinta-feira', 'sexta-feira', 'sábado']
+}
+
+var dayPeriodValues = {
+ narrow: {
+ am: 'a',
+ pm: 'p',
+ midnight: 'mn',
+ noon: 'md',
+ morning: 'manhã',
+ afternoon: 'tarde',
+ evening: 'tarde',
+ night: 'noite'
+ },
+ abbreviated: {
+ am: 'AM',
+ pm: 'PM',
+ midnight: 'meia-noite',
+ noon: 'meio-dia',
+ morning: 'manhã',
+ afternoon: 'tarde',
+ evening: 'tarde',
+ night: 'noite'
+ },
+ wide: {
+ am: 'a.m.',
+ pm: 'p.m.',
+ midnight: 'meia-noite',
+ noon: 'meio-dia',
+ morning: 'manhã',
+ afternoon: 'tarde',
+ evening: 'tarde',
+ night: 'noite'
+ }
+}
+var formattingDayPeriodValues = {
+ narrow: {
+ am: 'a',
+ pm: 'p',
+ midnight: 'mn',
+ noon: 'md',
+ morning: 'da manhã',
+ afternoon: 'da tarde',
+ evening: 'da tarde',
+ night: 'da noite'
+ },
+ abbreviated: {
+ am: 'AM',
+ pm: 'PM',
+ midnight: 'meia-noite',
+ noon: 'meio-dia',
+ morning: 'da manhã',
+ afternoon: 'da tarde',
+ evening: 'da tarde',
+ night: 'da noite'
+ },
+ wide: {
+ am: 'a.m.',
+ pm: 'p.m.',
+ midnight: 'meia-noite',
+ noon: 'meio-dia',
+ morning: 'da manhã',
+ afternoon: 'da tarde',
+ evening: 'da tarde',
+ night: 'da noite'
+ }
+}
+
+function ordinalNumber(dirtyNumber, dirtyOptions) {
+ var number = Number(dirtyNumber)
+ var options = dirtyOptions || {}
+ var unit = String(options.unit)
+
+ if (unit === 'week' || unit === 'isoWeek') {
+ return number + 'ª'
+ }
+ return number + 'º'
+}
+
+var localize = {
+ ordinalNumber: ordinalNumber,
+
+ era: buildLocalizeFn({
+ values: eraValues,
+ defaultWidth: 'wide'
+ }),
+
+ quarter: buildLocalizeFn({
+ values: quarterValues,
+ defaultWidth: 'wide',
+ argumentCallback: function(quarter) {
+ return Number(quarter) - 1
+ }
+ }),
+
+ month: buildLocalizeFn({
+ values: monthValues,
+ defaultWidth: 'wide'
+ }),
+
+ day: buildLocalizeFn({
+ values: dayValues,
+ defaultWidth: 'wide'
+ }),
+
+ dayPeriod: buildLocalizeFn({
+ values: dayPeriodValues,
+ defaultWidth: 'wide',
+ formattingValues: formattingDayPeriodValues,
+ defaultFormattingWidth: 'wide'
+ })
+}
+
+export default localize
diff --git a/date-fns/src/locale/pt-BR/_lib/match/index.js b/date-fns/src/locale/pt-BR/_lib/match/index.js
new file mode 100644
index 0000000..7da07dc
--- /dev/null
+++ b/date-fns/src/locale/pt-BR/_lib/match/index.js
@@ -0,0 +1,139 @@
+import buildMatchFn from '../../../_lib/buildMatchFn/index'
+import buildMatchPatternFn from '../../../_lib/buildMatchPatternFn/index'
+
+var matchOrdinalNumberPattern = /^(\d+)[ºªo]?/i
+var parseOrdinalNumberPattern = /\d+/i
+
+var matchEraPatterns = {
+ narrow: /^(ac|dc|a|d)/i,
+ abbreviated: /^(a\.?\s?c\.?|d\.?\s?c\.?)/i,
+ wide: /^(antes de cristo|depois de cristo)/i
+}
+var parseEraPatterns = {
+ any: [/^ac/i, /^dc/i],
+ wide: [/^antes de cristo/i, /^depois de cristo/i]
+}
+
+var matchQuarterPatterns = {
+ narrow: /^[1234]/i,
+ abbreviated: /^T[1234]/i,
+ wide: /^[1234](º)? trimestre/i
+}
+var parseQuarterPatterns = {
+ any: [/1/i, /2/i, /3/i, /4/i]
+}
+
+var matchMonthPatterns = {
+ narrow: /^[jfmajsond]/i,
+ abbreviated: /^(jan|fev|mar|abr|mai|jun|jul|ago|set|out|nov|dez)/i,
+ wide: /^(janeiro|fevereiro|março|abril|maio|junho|julho|agosto|setembro|outubro|novembro|dezembro)/i
+}
+var parseMonthPatterns = {
+ narrow: [
+ /^j/i,
+ /^f/i,
+ /^m/i,
+ /^a/i,
+ /^m/i,
+ /^j/i,
+ /^j/i,
+ /^a/i,
+ /^s/i,
+ /^o/i,
+ /^n/i,
+ /^d/i
+ ],
+ any: [
+ /^ja/i,
+ /^fev/i,
+ /^mar/i,
+ /^abr/i,
+ /^mai/i,
+ /^jun/i,
+ /^jul/i,
+ /^ago/i,
+ /^set/i,
+ /^out/i,
+ /^nov/i,
+ /^dez/i
+ ]
+}
+
+var matchDayPatterns = {
+ narrow: /^(dom|[23456]ª?|s[aá]b)/i,
+ short: /^(dom|[23456]ª?|s[aá]b)/i,
+ abbreviated: /^(dom|seg|ter|qua|qui|sex|s[aá]b)/i,
+ wide: /^(domingo|(segunda|ter[cç]a|quarta|quinta|sexta)([- ]feira)?|s[aá]bado)/i
+}
+var parseDayPatterns = {
+ short: [/^d/i, /^2/i, /^3/i, /^4/i, /^5/i, /^6/i, /^s[aá]/i],
+ narrow: [/^d/i, /^2/i, /^3/i, /^4/i, /^5/i, /^6/i, /^s[aá]/i],
+ any: [/^d/i, /^seg/i, /^t/i, /^qua/i, /^qui/i, /^sex/i, /^s[aá]b/i]
+}
+
+var matchDayPeriodPatterns = {
+ narrow: /^(a|p|mn|md|(da) (manhã|tarde|noite))/i,
+ any: /^([ap]\.?\s?m\.?|meia[-\s]noite|meio[-\s]dia|(da) (manhã|tarde|noite))/i
+}
+var parseDayPeriodPatterns = {
+ any: {
+ am: /^a/i,
+ pm: /^p/i,
+ midnight: /^mn|^meia[-\s]noite/i,
+ noon: /^md|^meio[-\s]dia/i,
+ morning: /manhã/i,
+ afternoon: /tarde/i,
+ evening: /tarde/i,
+ night: /noite/i
+ }
+}
+
+var match = {
+ ordinalNumber: buildMatchPatternFn({
+ matchPattern: matchOrdinalNumberPattern,
+ parsePattern: parseOrdinalNumberPattern,
+ valueCallback: function(value) {
+ return parseInt(value, 10)
+ }
+ }),
+
+ era: buildMatchFn({
+ matchPatterns: matchEraPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseEraPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ quarter: buildMatchFn({
+ matchPatterns: matchQuarterPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseQuarterPatterns,
+ defaultParseWidth: 'any',
+ valueCallback: function(index) {
+ return index + 1
+ }
+ }),
+
+ month: buildMatchFn({
+ matchPatterns: matchMonthPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseMonthPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ day: buildMatchFn({
+ matchPatterns: matchDayPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseDayPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ dayPeriod: buildMatchFn({
+ matchPatterns: matchDayPeriodPatterns,
+ defaultMatchWidth: 'any',
+ parsePatterns: parseDayPeriodPatterns,
+ defaultParseWidth: 'any'
+ })
+}
+
+export default match
diff --git a/date-fns/src/locale/pt-BR/index.d.ts b/date-fns/src/locale/pt-BR/index.d.ts
new file mode 100644
index 0000000..e50a0b1
--- /dev/null
+++ b/date-fns/src/locale/pt-BR/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { ptBR } from 'date-fns/locale'
+export default ptBR
diff --git a/date-fns/src/locale/pt-BR/index.js b/date-fns/src/locale/pt-BR/index.js
new file mode 100644
index 0000000..a4dd002
--- /dev/null
+++ b/date-fns/src/locale/pt-BR/index.js
@@ -0,0 +1,29 @@
+import formatDistance from './_lib/formatDistance/index'
+import formatLong from './_lib/formatLong/index'
+import formatRelative from './_lib/formatRelative/index'
+import localize from './_lib/localize/index'
+import match from './_lib/match/index'
+
+/**
+ * @type {Locale}
+ * @category Locales
+ * @summary Portuguese locale (Brazil).
+ * @language Portuguese
+ * @iso-639-2 por
+ * @author Lucas Duailibe [@duailibe]{@link https://github.com/duailibe}
+ * @author Yago Carballo [@yagocarballo]{@link https://github.com/YagoCarballo}
+ */
+var locale = {
+ code: 'pt-BR',
+ formatDistance: formatDistance,
+ formatLong: formatLong,
+ formatRelative: formatRelative,
+ localize: localize,
+ match: match,
+ options: {
+ weekStartsOn: 0 /* Sunday */,
+ firstWeekContainsDate: 1
+ }
+}
+
+export default locale
diff --git a/date-fns/src/locale/pt-BR/index.js.flow b/date-fns/src/locale/pt-BR/index.js.flow
new file mode 100644
index 0000000..b9dfe66
--- /dev/null
+++ b/date-fns/src/locale/pt-BR/index.js.flow
@@ -0,0 +1,35 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+declare module.exports: Locale
diff --git a/date-fns/src/locale/pt-BR/snapshot.md b/date-fns/src/locale/pt-BR/snapshot.md
new file mode 100644
index 0000000..dcbffae
--- /dev/null
+++ b/date-fns/src/locale/pt-BR/snapshot.md
@@ -0,0 +1,304 @@
+# Portuguese (pt-BR) locale
+
+## `format` and `parse`
+
+| Title | Token string | Date | `format` result | `parse` result |
+| ------------------------------- | ------------ | ------------------------ | ----------------------------------------------------------- | ------------------------ |
+| Calendar year | yo | 1987-02-11T12:13:14.015Z | 1987º | 1987-01-01T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 5º | 0005-01-01T00:00:00.000Z |
+| Local week-numbering year | Yo | 1987-02-11T12:13:14.015Z | 1987º | 1986-12-28T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 5º | 0004-12-26T00:00:00.000Z |
+| Quarter (formatting) | Qo | 2019-01-01T12:13:14.015Z | 1º | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2º | 2019-04-01T00:00:00.000Z |
+| | QQQ | 2019-01-01T12:13:14.015Z | T1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | T2 | 2019-04-01T00:00:00.000Z |
+| | QQQQ | 2019-01-01T12:13:14.015Z | 1º trimestre | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2º trimestre | 2019-04-01T00:00:00.000Z |
+| | QQQQQ | 2019-01-01T12:13:14.015Z | 1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2 | 2019-04-01T00:00:00.000Z |
+| Quarter (stand-alone) | qo | 2019-01-01T12:13:14.015Z | 1º | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2º | 2019-04-01T00:00:00.000Z |
+| | qqq | 2019-01-01T12:13:14.015Z | T1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | T2 | 2019-04-01T00:00:00.000Z |
+| | qqqq | 2019-01-01T12:13:14.015Z | 1º trimestre | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2º trimestre | 2019-04-01T00:00:00.000Z |
+| Month (formatting) | Mo | 2019-02-11T12:13:14.015Z | 2º | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7º | 2019-07-01T00:00:00.000Z |
+| | MMM | 2019-02-11T12:13:14.015Z | fev | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | jul | 2019-07-01T00:00:00.000Z |
+| | MMMM | 2019-02-11T12:13:14.015Z | fevereiro | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | julho | 2019-07-01T00:00:00.000Z |
+| | MMMMM | 2019-02-11T12:13:14.015Z | f | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | j | 2019-01-01T00:00:00.000Z |
+| Month (stand-alone) | Lo | 2019-02-11T12:13:14.015Z | 2º | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7º | 2019-07-01T00:00:00.000Z |
+| | LLL | 2019-02-11T12:13:14.015Z | fev | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | jul | 2019-07-01T00:00:00.000Z |
+| | LLLL | 2019-02-11T12:13:14.015Z | fevereiro | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | julho | 2019-07-01T00:00:00.000Z |
+| | LLLLL | 2019-02-11T12:13:14.015Z | f | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | j | 2019-01-01T00:00:00.000Z |
+| Local week of year | wo | 2019-01-01T12:13:14.015Z | 1ª | 2018-12-30T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 49ª | 2019-12-01T00:00:00.000Z |
+| ISO week of year | Io | 2019-01-01T12:13:14.015Z | 1ª | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48ª | 2019-11-25T00:00:00.000Z |
+| Day of month | do | 2019-02-11T12:13:14.015Z | 11º | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-28T12:13:14.015Z | 28º | 2019-02-28T00:00:00.000Z |
+| Day of year | Do | 2019-02-11T12:13:14.015Z | 42º | 2019-02-11T00:00:00.000Z |
+| | | 2019-12-31T12:13:14.015Z | 365º | 2019-12-31T00:00:00.000Z |
+| Day of week (formatting) | E | 2019-02-11T12:13:14.015Z | segunda | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | sexta | Invalid Date |
+| | EE | 2019-02-11T12:13:14.015Z | segunda | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | sexta | Invalid Date |
+| | EEE | 2019-02-11T12:13:14.015Z | segunda | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | sexta | Invalid Date |
+| | EEEE | 2019-02-11T12:13:14.015Z | segunda-feira | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | sexta-feira | 2019-02-15T00:00:00.000Z |
+| | EEEEE | 2019-02-11T12:13:14.015Z | S | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | S | Invalid Date |
+| | EEEEEE | 2019-02-11T12:13:14.015Z | seg | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | sex | Invalid Date |
+| ISO day of week (formatting) | io | 2019-02-11T12:13:14.015Z | 1º | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5º | 2019-02-15T00:00:00.000Z |
+| | iii | 2019-02-11T12:13:14.015Z | segunda | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | sexta | Invalid Date |
+| | iiii | 2019-02-11T12:13:14.015Z | segunda-feira | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | sexta-feira | 2019-02-15T00:00:00.000Z |
+| | iiiii | 2019-02-11T12:13:14.015Z | S | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | S | Invalid Date |
+| | iiiiii | 2019-02-11T12:13:14.015Z | seg | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | sex | Invalid Date |
+| Local day of week (formatting) | eo | 2019-02-11T12:13:14.015Z | 2º | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 6º | 2019-02-15T00:00:00.000Z |
+| | eee | 2019-02-11T12:13:14.015Z | segunda | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | sexta | Invalid Date |
+| | eeee | 2019-02-11T12:13:14.015Z | segunda-feira | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | sexta-feira | 2019-02-15T00:00:00.000Z |
+| | eeeee | 2019-02-11T12:13:14.015Z | S | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | S | Invalid Date |
+| | eeeeee | 2019-02-11T12:13:14.015Z | seg | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | sex | Invalid Date |
+| Local day of week (stand-alone) | co | 2019-02-11T12:13:14.015Z | 2º | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 6º | 2019-02-15T00:00:00.000Z |
+| | ccc | 2019-02-11T12:13:14.015Z | segunda | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | sexta | Invalid Date |
+| | cccc | 2019-02-11T12:13:14.015Z | segunda-feira | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | sexta-feira | 2019-02-15T00:00:00.000Z |
+| | ccccc | 2019-02-11T12:13:14.015Z | S | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | S | Invalid Date |
+| | cccccc | 2019-02-11T12:13:14.015Z | seg | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | sex | Invalid Date |
+| AM, PM | a | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | aa | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | aaa | 2019-02-11T11:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | aaaa | 2019-02-11T11:13:14.015Z | a.m. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | p.m. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | p.m. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | a.m. | 2019-02-11T00:00:00.000Z |
+| | aaaaa | 2019-02-11T11:13:14.015Z | a | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | p | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | p | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | a | 2019-02-11T00:00:00.000Z |
+| AM, PM, noon, midnight | b | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | bb | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | bbb | 2019-02-11T11:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | bbbb | 2019-02-11T11:13:14.015Z | a.m. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | p.m. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | p.m. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | a.m. | 2019-02-11T00:00:00.000Z |
+| | bbbbb | 2019-02-11T11:13:14.015Z | a | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | p | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | p | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | a | 2019-02-11T00:00:00.000Z |
+| Flexible day period | B | 2019-02-11T11:13:14.015Z | da manhã | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | da tarde | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | da tarde | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | da noite | 2019-02-11T00:00:00.000Z |
+| | BB | 2019-02-11T11:13:14.015Z | da manhã | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | da tarde | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | da tarde | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | da noite | 2019-02-11T00:00:00.000Z |
+| | BBB | 2019-02-11T11:13:14.015Z | da manhã | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | da tarde | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | da tarde | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | da noite | 2019-02-11T00:00:00.000Z |
+| | BBBB | 2019-02-11T11:13:14.015Z | da manhã | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | da tarde | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | da tarde | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | da noite | 2019-02-11T00:00:00.000Z |
+| | BBBBB | 2019-02-11T11:13:14.015Z | da manhã | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | da tarde | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | da tarde | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | da noite | 2019-02-11T00:00:00.000Z |
+| Hour [1-12] | ho | 2019-02-11T11:13:14.015Z | 11º | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11º | 2019-02-11T23:00:00.000Z |
+| Hour [0-23] | Ho | 2019-02-11T11:13:14.015Z | 11º | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23º | 2019-02-11T23:00:00.000Z |
+| Hour [0-11] | Ko | 2019-02-11T11:13:14.015Z | 11º | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11º | 2019-02-11T23:00:00.000Z |
+| Hour [1-24] | ko | 2019-02-11T11:13:14.015Z | 11º | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23º | 2019-02-11T23:00:00.000Z |
+| Minute | mo | 2019-01-01T12:01:14.015Z | 1º | 2019-01-01T12:01:00.000Z |
+| | | 2019-04-01T12:55:14.015Z | 55º | 2019-04-01T12:55:00.000Z |
+| Second | so | 2019-01-01T12:13:01.015Z | 1º | 2019-01-01T12:13:01.000Z |
+| | | 2019-04-01T12:13:55.015Z | 55º | 2019-04-01T12:13:55.000Z |
+| Long localized date | P | 1987-02-11T12:13:14.015Z | 11/02/1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29/05/1453 | 1453-05-29T00:00:00.000Z |
+| | PP | 1987-02-11T12:13:14.015Z | 11 fev 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 mai 1453 | 1453-05-29T00:00:00.000Z |
+| | PPP | 1987-02-11T12:13:14.015Z | 11 de fevereiro de 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 de maio de 1453 | 1453-05-29T00:00:00.000Z |
+| | PPPP | 1987-02-11T12:13:14.015Z | quarta-feira, 11 de fevereiro de 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | domingo, 29 de maio de 1453 | 1453-05-29T00:00:00.000Z |
+| Long localized time | p | 1987-02-11T12:13:14.015Z | 12:13 | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 23:59 | 1453-05-29T23:59:00.000Z |
+| | pp | 1987-02-11T12:13:14.015Z | 12:13:14 | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 | 1453-05-29T23:59:59.000Z |
+| | ppp | 1987-02-11T12:13:14.015Z | 12:13:14 GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 GMT+0 | Errored |
+| | pppp | 1987-02-11T12:13:14.015Z | 12:13:14 GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 GMT+00:00 | Errored |
+| Combination of date and time | Pp | 1987-02-11T12:13:14.015Z | 11/02/1987, 12:13 | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29/05/1453, 23:59 | 1453-05-29T23:59:00.000Z |
+| | PPpp | 1987-02-11T12:13:14.015Z | 11 fev 1987, 12:13:14 | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 mai 1453, 23:59:59 | 1453-05-29T23:59:59.000Z |
+| | PPPppp | 1987-02-11T12:13:14.015Z | 11 de fevereiro de 1987 às 12:13:14 GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 29 de maio de 1453 às 23:59:59 GMT+0 | Errored |
+| | PPPPpppp | 1987-02-11T12:13:14.015Z | quarta-feira, 11 de fevereiro de 1987 às 12:13:14 GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | domingo, 29 de maio de 1453 às 23:59:59 GMT+00:00 | Errored |
+
+## `formatDistance`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `includeSeconds: true` | `addSuffix: true` |
+| ------------------------ | ------------------ | ---------------------- | --------------------- |
+| 2006-01-01T00:00:00.000Z | cerca de 6 anos | cerca de 6 anos | em cerca de 6 anos |
+| 2005-01-01T00:00:00.000Z | cerca de 5 anos | cerca de 5 anos | em cerca de 5 anos |
+| 2004-01-01T00:00:00.000Z | cerca de 4 anos | cerca de 4 anos | em cerca de 4 anos |
+| 2003-01-01T00:00:00.000Z | cerca de 3 anos | cerca de 3 anos | em cerca de 3 anos |
+| 2002-01-01T00:00:00.000Z | cerca de 2 anos | cerca de 2 anos | em cerca de 2 anos |
+| 2001-06-01T00:00:00.000Z | mais de 1 ano | mais de 1 ano | em mais de 1 ano |
+| 2001-02-01T00:00:00.000Z | cerca de 1 ano | cerca de 1 ano | em cerca de 1 ano |
+| 2001-01-01T00:00:00.000Z | cerca de 1 ano | cerca de 1 ano | em cerca de 1 ano |
+| 2000-06-01T00:00:00.000Z | 5 meses | 5 meses | em 5 meses |
+| 2000-03-01T00:00:00.000Z | 2 meses | 2 meses | em 2 meses |
+| 2000-02-01T00:00:00.000Z | cerca de 1 mês | cerca de 1 mês | em cerca de 1 mês |
+| 2000-01-15T00:00:00.000Z | 14 dias | 14 dias | em 14 dias |
+| 2000-01-02T00:00:00.000Z | 1 dia | 1 dia | em 1 dia |
+| 2000-01-01T06:00:00.000Z | cerca de 6 horas | cerca de 6 horas | em cerca de 6 horas |
+| 2000-01-01T01:00:00.000Z | cerca de 1 hora | cerca de 1 hora | em cerca de 1 hora |
+| 2000-01-01T00:45:00.000Z | cerca de 1 hora | cerca de 1 hora | em cerca de 1 hora |
+| 2000-01-01T00:30:00.000Z | 30 minutos | 30 minutos | em 30 minutos |
+| 2000-01-01T00:15:00.000Z | 15 minutos | 15 minutos | em 15 minutos |
+| 2000-01-01T00:01:00.000Z | 1 minuto | 1 minuto | em 1 minuto |
+| 2000-01-01T00:00:25.000Z | menos de um minuto | meio minuto | em menos de um minuto |
+| 2000-01-01T00:00:15.000Z | menos de um minuto | menos de 20 segundos | em menos de um minuto |
+| 2000-01-01T00:00:05.000Z | menos de um minuto | menos de 10 segundos | em menos de um minuto |
+| 2000-01-01T00:00:00.000Z | menos de um minuto | menos de 5 segundos | há menos de um minuto |
+| 1999-12-31T23:59:55.000Z | menos de um minuto | menos de 10 segundos | há menos de um minuto |
+| 1999-12-31T23:59:45.000Z | menos de um minuto | menos de 20 segundos | há menos de um minuto |
+| 1999-12-31T23:59:35.000Z | menos de um minuto | meio minuto | há menos de um minuto |
+| 1999-12-31T23:59:00.000Z | 1 minuto | 1 minuto | há 1 minuto |
+| 1999-12-31T23:45:00.000Z | 15 minutos | 15 minutos | há 15 minutos |
+| 1999-12-31T23:30:00.000Z | 30 minutos | 30 minutos | há 30 minutos |
+| 1999-12-31T23:15:00.000Z | cerca de 1 hora | cerca de 1 hora | há cerca de 1 hora |
+| 1999-12-31T23:00:00.000Z | cerca de 1 hora | cerca de 1 hora | há cerca de 1 hora |
+| 1999-12-31T18:00:00.000Z | cerca de 6 horas | cerca de 6 horas | há cerca de 6 horas |
+| 1999-12-30T00:00:00.000Z | 2 dias | 2 dias | há 2 dias |
+| 1999-12-15T00:00:00.000Z | 17 dias | 17 dias | há 17 dias |
+| 1999-12-01T00:00:00.000Z | cerca de 1 mês | cerca de 1 mês | há cerca de 1 mês |
+| 1999-11-01T00:00:00.000Z | 2 meses | 2 meses | há 2 meses |
+| 1999-06-01T00:00:00.000Z | 7 meses | 7 meses | há 7 meses |
+| 1999-01-01T00:00:00.000Z | cerca de 1 ano | cerca de 1 ano | há cerca de 1 ano |
+| 1998-12-01T00:00:00.000Z | cerca de 1 ano | cerca de 1 ano | há cerca de 1 ano |
+| 1998-06-01T00:00:00.000Z | mais de 1 ano | mais de 1 ano | há mais de 1 ano |
+| 1998-01-01T00:00:00.000Z | cerca de 2 anos | cerca de 2 anos | há cerca de 2 anos |
+| 1997-01-01T00:00:00.000Z | cerca de 3 anos | cerca de 3 anos | há cerca de 3 anos |
+| 1996-01-01T00:00:00.000Z | cerca de 4 anos | cerca de 4 anos | há cerca de 4 anos |
+| 1995-01-01T00:00:00.000Z | cerca de 5 anos | cerca de 5 anos | há cerca de 5 anos |
+| 1994-01-01T00:00:00.000Z | cerca de 6 anos | cerca de 6 anos | há cerca de 6 anos |
+
+## `formatDistanceStrict`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `addSuffix: true` | With forced unit (i.e. `hour`) |
+| ------------------------ | ----------- | ----------------- | ------------------------------ |
+| 2006-01-01T00:00:00.000Z | 6 anos | em 6 anos | 52608 horas |
+| 2005-01-01T00:00:00.000Z | 5 anos | em 5 anos | 43848 horas |
+| 2004-01-01T00:00:00.000Z | 4 anos | em 4 anos | 35064 horas |
+| 2003-01-01T00:00:00.000Z | 3 anos | em 3 anos | 26304 horas |
+| 2002-01-01T00:00:00.000Z | 2 anos | em 2 anos | 17544 horas |
+| 2001-06-01T00:00:00.000Z | 1 ano | em 1 ano | 12408 horas |
+| 2001-02-01T00:00:00.000Z | 1 ano | em 1 ano | 9528 horas |
+| 2001-01-01T00:00:00.000Z | 1 ano | em 1 ano | 8784 horas |
+| 2000-06-01T00:00:00.000Z | 5 meses | em 5 meses | 3648 horas |
+| 2000-03-01T00:00:00.000Z | 2 meses | em 2 meses | 1440 horas |
+| 2000-02-01T00:00:00.000Z | 1 mês | em 1 mês | 744 horas |
+| 2000-01-15T00:00:00.000Z | 14 dias | em 14 dias | 336 horas |
+| 2000-01-02T00:00:00.000Z | 1 dia | em 1 dia | 24 horas |
+| 2000-01-01T06:00:00.000Z | 6 horas | em 6 horas | 6 horas |
+| 2000-01-01T01:00:00.000Z | 1 hora | em 1 hora | 1 hora |
+| 2000-01-01T00:45:00.000Z | 45 minutos | em 45 minutos | 1 hora |
+| 2000-01-01T00:30:00.000Z | 30 minutos | em 30 minutos | 1 hora |
+| 2000-01-01T00:15:00.000Z | 15 minutos | em 15 minutos | 0 horas |
+| 2000-01-01T00:01:00.000Z | 1 minuto | em 1 minuto | 0 horas |
+| 2000-01-01T00:00:25.000Z | 25 segundos | em 25 segundos | 0 horas |
+| 2000-01-01T00:00:15.000Z | 15 segundos | em 15 segundos | 0 horas |
+| 2000-01-01T00:00:05.000Z | 5 segundos | em 5 segundos | 0 horas |
+| 2000-01-01T00:00:00.000Z | 0 segundos | há 0 segundos | 0 horas |
+| 1999-12-31T23:59:55.000Z | 5 segundos | há 5 segundos | 0 horas |
+| 1999-12-31T23:59:45.000Z | 15 segundos | há 15 segundos | 0 horas |
+| 1999-12-31T23:59:35.000Z | 25 segundos | há 25 segundos | 0 horas |
+| 1999-12-31T23:59:00.000Z | 1 minuto | há 1 minuto | 0 horas |
+| 1999-12-31T23:45:00.000Z | 15 minutos | há 15 minutos | 0 horas |
+| 1999-12-31T23:30:00.000Z | 30 minutos | há 30 minutos | 1 hora |
+| 1999-12-31T23:15:00.000Z | 45 minutos | há 45 minutos | 1 hora |
+| 1999-12-31T23:00:00.000Z | 1 hora | há 1 hora | 1 hora |
+| 1999-12-31T18:00:00.000Z | 6 horas | há 6 horas | 6 horas |
+| 1999-12-30T00:00:00.000Z | 2 dias | há 2 dias | 48 horas |
+| 1999-12-15T00:00:00.000Z | 17 dias | há 17 dias | 408 horas |
+| 1999-12-01T00:00:00.000Z | 1 mês | há 1 mês | 744 horas |
+| 1999-11-01T00:00:00.000Z | 2 meses | há 2 meses | 1464 horas |
+| 1999-06-01T00:00:00.000Z | 7 meses | há 7 meses | 5136 horas |
+| 1999-01-01T00:00:00.000Z | 1 ano | há 1 ano | 8760 horas |
+| 1998-12-01T00:00:00.000Z | 1 ano | há 1 ano | 9504 horas |
+| 1998-06-01T00:00:00.000Z | 2 anos | há 2 anos | 13896 horas |
+| 1998-01-01T00:00:00.000Z | 2 anos | há 2 anos | 17520 horas |
+| 1997-01-01T00:00:00.000Z | 3 anos | há 3 anos | 26280 horas |
+| 1996-01-01T00:00:00.000Z | 4 anos | há 4 anos | 35064 horas |
+| 1995-01-01T00:00:00.000Z | 5 anos | há 5 anos | 43824 horas |
+| 1994-01-01T00:00:00.000Z | 6 anos | há 6 anos | 52584 horas |
+
+## `formatRelative`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result |
+| ------------------------ | ----------------------------- |
+| 2000-01-10T00:00:00.000Z | 10/01/2000 |
+| 2000-01-05T00:00:00.000Z | quarta-feira às 00:00 |
+| 2000-01-02T00:00:00.000Z | amanhã às 00:00 |
+| 2000-01-01T00:00:00.000Z | hoje às 00:00 |
+| 1999-12-31T00:00:00.000Z | ontem às 00:00 |
+| 1999-12-27T00:00:00.000Z | última segunda-feira às 00:00 |
+| 1999-12-21T00:00:00.000Z | 21/12/1999 |
diff --git a/date-fns/src/locale/pt/_lib/formatDistance/index.js b/date-fns/src/locale/pt/_lib/formatDistance/index.js
new file mode 100644
index 0000000..de03087
--- /dev/null
+++ b/date-fns/src/locale/pt/_lib/formatDistance/index.js
@@ -0,0 +1,101 @@
+var formatDistanceLocale = {
+ lessThanXSeconds: {
+ one: 'menos de um segundo',
+ other: 'menos de {{count}} segundos'
+ },
+
+ xSeconds: {
+ one: '1 segundo',
+ other: '{{count}} segundos'
+ },
+
+ halfAMinute: 'meio minuto',
+
+ lessThanXMinutes: {
+ one: 'menos de um minuto',
+ other: 'menos de {{count}} minutos'
+ },
+
+ xMinutes: {
+ one: '1 minuto',
+ other: '{{count}} minutos'
+ },
+
+ aboutXHours: {
+ one: 'aproximadamente 1 hora',
+ other: 'aproximadamente {{count}} horas'
+ },
+
+ xHours: {
+ one: '1 hora',
+ other: '{{count}} horas'
+ },
+
+ xDays: {
+ one: '1 dia',
+ other: '{{count}} dias'
+ },
+
+ aboutXWeeks: {
+ one: 'aproximadamente 1 semana',
+ other: 'aproximadamente {{count}} semanas'
+ },
+
+ xWeeks: {
+ one: '1 semana',
+ other: '{{count}} semanas'
+ },
+
+ aboutXMonths: {
+ one: 'aproximadamente 1 mês',
+ other: 'aproximadamente {{count}} meses'
+ },
+
+ xMonths: {
+ one: '1 mês',
+ other: '{{count}} meses'
+ },
+
+ aboutXYears: {
+ one: 'aproximadamente 1 ano',
+ other: 'aproximadamente {{count}} anos'
+ },
+
+ xYears: {
+ one: '1 ano',
+ other: '{{count}} anos'
+ },
+
+ overXYears: {
+ one: 'mais de 1 ano',
+ other: 'mais de {{count}} anos'
+ },
+
+ almostXYears: {
+ one: 'quase 1 ano',
+ other: 'quase {{count}} anos'
+ }
+}
+
+export default function formatDistance(token, count, options) {
+ options = options || {}
+
+ var result
+ if (typeof formatDistanceLocale[token] === 'string') {
+ result = formatDistanceLocale[token]
+ } else if (count === 1) {
+ result = formatDistanceLocale[token].one
+ } else {
+ result = formatDistanceLocale[token].other.replace('{{count}}', count)
+ }
+
+ if (options.addSuffix) {
+ if (options.comparison > 0) {
+ return 'daqui a ' + result
+ } else {
+ return 'há ' + result
+ }
+ }
+
+ return result
+}
diff --git a/date-fns/src/locale/pt/_lib/formatLong/index.js b/date-fns/src/locale/pt/_lib/formatLong/index.js
new file mode 100644
index 0000000..08af8e3
--- /dev/null
+++ b/date-fns/src/locale/pt/_lib/formatLong/index.js
@@ -0,0 +1,41 @@
+import buildFormatLongFn from '../../../_lib/buildFormatLongFn/index'
+
+var dateFormats = {
+ full: "EEEE, d 'de' MMMM 'de' y",
+ long: "d 'de' MMMM 'de' y",
+ medium: "d 'de' MMM 'de' y",
+ short: 'dd/MM/y'
+}
+
+var timeFormats = {
+ full: 'HH:mm:ss zzzz',
+ long: 'HH:mm:ss z',
+ medium: 'HH:mm:ss',
+ short: 'HH:mm'
+}
+
+var dateTimeFormats = {
+ full: "{{date}} 'às' {{time}}",
+ long: "{{date}} 'às' {{time}}",
+ medium: '{{date}}, {{time}}',
+ short: '{{date}}, {{time}}'
+}
+
+var formatLong = {
+ date: buildFormatLongFn({
+ formats: dateFormats,
+ defaultWidth: 'full'
+ }),
+
+ time: buildFormatLongFn({
+ formats: timeFormats,
+ defaultWidth: 'full'
+ }),
+
+ dateTime: buildFormatLongFn({
+ formats: dateTimeFormats,
+ defaultWidth: 'full'
+ })
+}
+
+export default formatLong
diff --git a/date-fns/src/locale/pt/_lib/formatRelative/index.js b/date-fns/src/locale/pt/_lib/formatRelative/index.js
new file mode 100644
index 0000000..63d5c7f
--- /dev/null
+++ b/date-fns/src/locale/pt/_lib/formatRelative/index.js
@@ -0,0 +1,12 @@
+var formatRelativeLocale = {
+ lastWeek: "'na última' eeee 'às' p",
+ yesterday: "'ontem às' p",
+ today: "'hoje às' p",
+ tomorrow: "'amanhã às' p",
+ nextWeek: "eeee 'às' p",
+ other: 'P'
+}
+
+export default function formatRelative(token, _date, _baseDate, _options) {
+ return formatRelativeLocale[token]
+}
diff --git a/date-fns/src/locale/pt/_lib/localize/index.js b/date-fns/src/locale/pt/_lib/localize/index.js
new file mode 100644
index 0000000..0ef458c
--- /dev/null
+++ b/date-fns/src/locale/pt/_lib/localize/index.js
@@ -0,0 +1,166 @@
+import buildLocalizeFn from '../../../_lib/buildLocalizeFn/index'
+
+function ordinalNumber(dirtyNumber) {
+ var number = Number(dirtyNumber)
+ return number + 'º'
+}
+
+var eraValues = {
+ narrow: ['aC', 'dC'],
+ abbreviated: ['a.C.', 'd.C.'],
+ wide: ['antes de Cristo', 'depois de Cristo']
+}
+
+var quarterValues = {
+ narrow: ['1', '2', '3', '4'],
+ abbreviated: ['T1', 'T2', 'T3', 'T4'],
+ wide: ['1º trimestre', '2º trimestre', '3º trimestre', '4º trimestre']
+}
+
+var monthValues = {
+ narrow: ['j', 'f', 'm', 'a', 'm', 'j', 'j', 'a', 's', 'o', 'n', 'd'],
+ abbreviated: [
+ 'jan',
+ 'fev',
+ 'mar',
+ 'abr',
+ 'mai',
+ 'jun',
+ 'jul',
+ 'ago',
+ 'set',
+ 'out',
+ 'nov',
+ 'dez'
+ ],
+ wide: [
+ 'janeiro',
+ 'fevereiro',
+ 'março',
+ 'abril',
+ 'maio',
+ 'junho',
+ 'julho',
+ 'agosto',
+ 'setembro',
+ 'outubro',
+ 'novembro',
+ 'dezembro'
+ ]
+}
+
+var dayValues = {
+ narrow: ['d', 's', 't', 'q', 'q', 's', 's'],
+ short: ['dom', 'seg', 'ter', 'qua', 'qui', 'sex', 'sáb'],
+ abbreviated: ['dom', 'seg', 'ter', 'qua', 'qui', 'sex', 'sáb'],
+ wide: [
+ 'domingo',
+ 'segunda-feira',
+ 'terça-feira',
+ 'quarta-feira',
+ 'quinta-feira',
+ 'sexta-feira',
+ 'sábado'
+ ]
+}
+
+var dayPeriodValues = {
+ narrow: {
+ am: 'AM',
+ pm: 'PM',
+ midnight: 'meia-noite',
+ noon: 'meio-dia',
+ morning: 'manhã',
+ afternoon: 'tarde',
+ evening: 'noite',
+ night: 'madrugada'
+ },
+ abbreviated: {
+ am: 'AM',
+ pm: 'PM',
+ midnight: 'meia-noite',
+ noon: 'meio-dia',
+ morning: 'manhã',
+ afternoon: 'tarde',
+ evening: 'noite',
+ night: 'madrugada'
+ },
+ wide: {
+ am: 'AM',
+ pm: 'PM',
+ midnight: 'meia-noite',
+ noon: 'meio-dia',
+ morning: 'manhã',
+ afternoon: 'tarde',
+ evening: 'noite',
+ night: 'madrugada'
+ }
+}
+
+var formattingDayPeriodValues = {
+ narrow: {
+ am: 'AM',
+ pm: 'PM',
+ midnight: 'meia-noite',
+ noon: 'meio-dia',
+ morning: 'da manhã',
+ afternoon: 'da tarde',
+ evening: 'da noite',
+ night: 'da madrugada'
+ },
+ abbreviated: {
+ am: 'AM',
+ pm: 'PM',
+ midnight: 'meia-noite',
+ noon: 'meio-dia',
+ morning: 'da manhã',
+ afternoon: 'da tarde',
+ evening: 'da noite',
+ night: 'da madrugada'
+ },
+ wide: {
+ am: 'AM',
+ pm: 'PM',
+ midnight: 'meia-noite',
+ noon: 'meio-dia',
+ morning: 'da manhã',
+ afternoon: 'da tarde',
+ evening: 'da noite',
+ night: 'da madrugada'
+ }
+}
+
+var localize = {
+ ordinalNumber: ordinalNumber,
+
+ era: buildLocalizeFn({
+ values: eraValues,
+ defaultWidth: 'wide'
+ }),
+
+ quarter: buildLocalizeFn({
+ values: quarterValues,
+ defaultWidth: 'wide',
+ argumentCallback: function(quarter) {
+ return Number(quarter) - 1
+ }
+ }),
+
+ month: buildLocalizeFn({
+ values: monthValues,
+ defaultWidth: 'wide'
+ }),
+
+ day: buildLocalizeFn({
+ values: dayValues,
+ defaultWidth: 'wide'
+ }),
+
+ dayPeriod: buildLocalizeFn({
+ values: dayPeriodValues,
+ defaultWidth: 'wide',
+ formattingValues: formattingDayPeriodValues,
+ defaultFormattingWidth: 'wide'
+ })
+}
+export default localize
diff --git a/date-fns/src/locale/pt/_lib/match/index.js b/date-fns/src/locale/pt/_lib/match/index.js
new file mode 100644
index 0000000..3aea9de
--- /dev/null
+++ b/date-fns/src/locale/pt/_lib/match/index.js
@@ -0,0 +1,141 @@
+import buildMatchPatternFn from '../../../_lib/buildMatchPatternFn/index'
+import buildMatchFn from '../../../_lib/buildMatchFn/index'
+
+var matchOrdinalNumberPattern = /^(\d+)(º|ª)?/i
+var parseOrdinalNumberPattern = /\d+/i
+
+var matchEraPatterns = {
+ narrow: /^(ac|dc|a|d)/i,
+ abbreviated: /^(a\.?\s?c\.?|a\.?\s?e\.?\s?c\.?|d\.?\s?c\.?|e\.?\s?c\.?)/i,
+ wide: /^(antes de cristo|antes da era comum|depois de cristo|era comum)/i
+}
+var parseEraPatterns = {
+ any: [/^ac/i, /^dc/i],
+ wide: [
+ /^(antes de cristo|antes da era comum)/i,
+ /^(depois de cristo|era comum)/i
+ ]
+}
+
+var matchQuarterPatterns = {
+ narrow: /^[1234]/i,
+ abbreviated: /^T[1234]/i,
+ wide: /^[1234](º|ª)? trimestre/i
+}
+var parseQuarterPatterns = {
+ any: [/1/i, /2/i, /3/i, /4/i]
+}
+
+var matchMonthPatterns = {
+ narrow: /^[jfmasond]/i,
+ abbreviated: /^(jan|fev|mar|abr|mai|jun|jul|ago|set|out|nov|dez)/i,
+ wide: /^(janeiro|fevereiro|março|abril|maio|junho|julho|agosto|setembro|outubro|novembro|dezembro)/i
+}
+var parseMonthPatterns = {
+ narrow: [
+ /^j/i,
+ /^f/i,
+ /^m/i,
+ /^a/i,
+ /^m/i,
+ /^j/i,
+ /^j/i,
+ /^a/i,
+ /^s/i,
+ /^o/i,
+ /^n/i,
+ /^d/i
+ ],
+ any: [
+ /^ja/i,
+ /^f/i,
+ /^mar/i,
+ /^ab/i,
+ /^mai/i,
+ /^jun/i,
+ /^jul/i,
+ /^ag/i,
+ /^s/i,
+ /^o/i,
+ /^n/i,
+ /^d/i
+ ]
+}
+
+var matchDayPatterns = {
+ narrow: /^[dstq]/i,
+ short: /^(dom|seg|ter|qua|qui|sex|s[áa]b)/i,
+ abbreviated: /^(dom|seg|ter|qua|qui|sex|s[áa]b)/i,
+ wide: /^(domingo|segunda-?\s?feira|terça-?\s?feira|quarta-?\s?feira|quinta-?\s?feira|sexta-?\s?feira|s[áa]bado)/i
+}
+var parseDayPatterns = {
+ narrow: [/^d/i, /^s/i, /^t/i, /^q/i, /^q/i, /^s/i, /^s/i],
+ any: [/^d/i, /^seg/i, /^t/i, /^qua/i, /^qui/i, /^sex/i, /^s[áa]/i]
+}
+
+var matchDayPeriodPatterns = {
+ narrow: /^(a|p|meia-?\s?noite|meio-?\s?dia|(da) (manh[ãa]|tarde|noite|madrugada))/i,
+ any: /^([ap]\.?\s?m\.?|meia-?\s?noite|meio-?\s?dia|(da) (manh[ãa]|tarde|noite|madrugada))/i
+}
+var parseDayPeriodPatterns = {
+ any: {
+ am: /^a/i,
+ pm: /^p/i,
+ midnight: /^meia/i,
+ noon: /^meio/i,
+ morning: /manh[ãa]/i,
+ afternoon: /tarde/i,
+ evening: /noite/i,
+ night: /madrugada/i
+ }
+}
+
+var match = {
+ ordinalNumber: buildMatchPatternFn({
+ matchPattern: matchOrdinalNumberPattern,
+ parsePattern: parseOrdinalNumberPattern,
+ valueCallback: function(value) {
+ return parseInt(value, 10)
+ }
+ }),
+
+ era: buildMatchFn({
+ matchPatterns: matchEraPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseEraPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ quarter: buildMatchFn({
+ matchPatterns: matchQuarterPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseQuarterPatterns,
+ defaultParseWidth: 'any',
+ valueCallback: function(index) {
+ return index + 1
+ }
+ }),
+
+ month: buildMatchFn({
+ matchPatterns: matchMonthPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseMonthPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ day: buildMatchFn({
+ matchPatterns: matchDayPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseDayPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ dayPeriod: buildMatchFn({
+ matchPatterns: matchDayPeriodPatterns,
+ defaultMatchWidth: 'any',
+ parsePatterns: parseDayPeriodPatterns,
+ defaultParseWidth: 'any'
+ })
+}
+
+export default match
diff --git a/date-fns/src/locale/pt/index.d.ts b/date-fns/src/locale/pt/index.d.ts
new file mode 100644
index 0000000..b848c91
--- /dev/null
+++ b/date-fns/src/locale/pt/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { pt } from 'date-fns/locale'
+export default pt
diff --git a/date-fns/src/locale/pt/index.js b/date-fns/src/locale/pt/index.js
new file mode 100644
index 0000000..0505d72
--- /dev/null
+++ b/date-fns/src/locale/pt/index.js
@@ -0,0 +1,29 @@
+import formatDistance from './_lib/formatDistance/index'
+import formatLong from './_lib/formatLong/index'
+import formatRelative from './_lib/formatRelative/index'
+import localize from './_lib/localize/index'
+import match from './_lib/match/index'
+
+/**
+ * @type {Locale}
+ * @category Locales
+ * @summary Portuguese locale.
+ * @language Portuguese
+ * @iso-639-2 por
+ * @author Dário Freire [@dfreire]{@link https://github.com/dfreire}
+ * @author Adrián de la Rosa [@adrm]{@link https://github.com/adrm}
+ */
+var locale = {
+ code: 'pt',
+ formatDistance: formatDistance,
+ formatLong: formatLong,
+ formatRelative: formatRelative,
+ localize: localize,
+ match: match,
+ options: {
+ weekStartsOn: 1 /* Monday */,
+ firstWeekContainsDate: 4
+ }
+}
+
+export default locale
diff --git a/date-fns/src/locale/pt/index.js.flow b/date-fns/src/locale/pt/index.js.flow
new file mode 100644
index 0000000..b9dfe66
--- /dev/null
+++ b/date-fns/src/locale/pt/index.js.flow
@@ -0,0 +1,35 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+declare module.exports: Locale
diff --git a/date-fns/src/locale/pt/snapshot.md b/date-fns/src/locale/pt/snapshot.md
new file mode 100644
index 0000000..75dfb30
--- /dev/null
+++ b/date-fns/src/locale/pt/snapshot.md
@@ -0,0 +1,304 @@
+# Portuguese (pt) locale
+
+## `format` and `parse`
+
+| Title | Token string | Date | `format` result | `parse` result |
+| ------------------------------- | ------------ | ------------------------ | ----------------------------------------------------------- | ------------------------ |
+| Calendar year | yo | 1987-02-11T12:13:14.015Z | 1987º | 1987-01-01T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 5º | 0005-01-01T00:00:00.000Z |
+| Local week-numbering year | Yo | 1987-02-11T12:13:14.015Z | 1987º | 1986-12-29T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 4º | 0003-12-29T00:00:00.000Z |
+| Quarter (formatting) | Qo | 2019-01-01T12:13:14.015Z | 1º | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2º | 2019-04-01T00:00:00.000Z |
+| | QQQ | 2019-01-01T12:13:14.015Z | T1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | T2 | 2019-04-01T00:00:00.000Z |
+| | QQQQ | 2019-01-01T12:13:14.015Z | 1º trimestre | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2º trimestre | 2019-04-01T00:00:00.000Z |
+| | QQQQQ | 2019-01-01T12:13:14.015Z | 1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2 | 2019-04-01T00:00:00.000Z |
+| Quarter (stand-alone) | qo | 2019-01-01T12:13:14.015Z | 1º | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2º | 2019-04-01T00:00:00.000Z |
+| | qqq | 2019-01-01T12:13:14.015Z | T1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | T2 | 2019-04-01T00:00:00.000Z |
+| | qqqq | 2019-01-01T12:13:14.015Z | 1º trimestre | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2º trimestre | 2019-04-01T00:00:00.000Z |
+| Month (formatting) | Mo | 2019-02-11T12:13:14.015Z | 2º | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7º | 2019-07-01T00:00:00.000Z |
+| | MMM | 2019-02-11T12:13:14.015Z | fev | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | jul | 2019-07-01T00:00:00.000Z |
+| | MMMM | 2019-02-11T12:13:14.015Z | fevereiro | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | julho | 2019-07-01T00:00:00.000Z |
+| | MMMMM | 2019-02-11T12:13:14.015Z | f | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | j | 2019-01-01T00:00:00.000Z |
+| Month (stand-alone) | Lo | 2019-02-11T12:13:14.015Z | 2º | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7º | 2019-07-01T00:00:00.000Z |
+| | LLL | 2019-02-11T12:13:14.015Z | fev | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | jul | 2019-07-01T00:00:00.000Z |
+| | LLLL | 2019-02-11T12:13:14.015Z | fevereiro | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | julho | 2019-07-01T00:00:00.000Z |
+| | LLLLL | 2019-02-11T12:13:14.015Z | f | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | j | 2019-01-01T00:00:00.000Z |
+| Local week of year | wo | 2019-01-01T12:13:14.015Z | 1º | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48º | 2019-11-25T00:00:00.000Z |
+| ISO week of year | Io | 2019-01-01T12:13:14.015Z | 1º | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48º | 2019-11-25T00:00:00.000Z |
+| Day of month | do | 2019-02-11T12:13:14.015Z | 11º | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-28T12:13:14.015Z | 28º | 2019-02-28T00:00:00.000Z |
+| Day of year | Do | 2019-02-11T12:13:14.015Z | 42º | 2019-02-11T00:00:00.000Z |
+| | | 2019-12-31T12:13:14.015Z | 365º | 2019-12-31T00:00:00.000Z |
+| Day of week (formatting) | E | 2019-02-11T12:13:14.015Z | seg | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | sex | 2019-02-15T00:00:00.000Z |
+| | EE | 2019-02-11T12:13:14.015Z | seg | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | sex | 2019-02-15T00:00:00.000Z |
+| | EEE | 2019-02-11T12:13:14.015Z | seg | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | sex | 2019-02-15T00:00:00.000Z |
+| | EEEE | 2019-02-11T12:13:14.015Z | segunda-feira | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | sexta-feira | 2019-02-15T00:00:00.000Z |
+| | EEEEE | 2019-02-11T12:13:14.015Z | s | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | s | 2019-02-11T00:00:00.000Z |
+| | EEEEEE | 2019-02-11T12:13:14.015Z | seg | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | sex | 2019-02-15T00:00:00.000Z |
+| ISO day of week (formatting) | io | 2019-02-11T12:13:14.015Z | 1º | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5º | 2019-02-15T00:00:00.000Z |
+| | iii | 2019-02-11T12:13:14.015Z | seg | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | sex | 2019-02-15T00:00:00.000Z |
+| | iiii | 2019-02-11T12:13:14.015Z | segunda-feira | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | sexta-feira | 2019-02-15T00:00:00.000Z |
+| | iiiii | 2019-02-11T12:13:14.015Z | s | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | s | 2019-02-11T00:00:00.000Z |
+| | iiiiii | 2019-02-11T12:13:14.015Z | seg | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | sex | 2019-02-15T00:00:00.000Z |
+| Local day of week (formatting) | eo | 2019-02-11T12:13:14.015Z | 1º | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5º | 2019-02-15T00:00:00.000Z |
+| | eee | 2019-02-11T12:13:14.015Z | seg | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | sex | 2019-02-15T00:00:00.000Z |
+| | eeee | 2019-02-11T12:13:14.015Z | segunda-feira | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | sexta-feira | 2019-02-15T00:00:00.000Z |
+| | eeeee | 2019-02-11T12:13:14.015Z | s | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | s | 2019-02-11T00:00:00.000Z |
+| | eeeeee | 2019-02-11T12:13:14.015Z | seg | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | sex | 2019-02-15T00:00:00.000Z |
+| Local day of week (stand-alone) | co | 2019-02-11T12:13:14.015Z | 1º | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5º | 2019-02-15T00:00:00.000Z |
+| | ccc | 2019-02-11T12:13:14.015Z | seg | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | sex | 2019-02-15T00:00:00.000Z |
+| | cccc | 2019-02-11T12:13:14.015Z | segunda-feira | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | sexta-feira | 2019-02-15T00:00:00.000Z |
+| | ccccc | 2019-02-11T12:13:14.015Z | s | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | s | 2019-02-11T00:00:00.000Z |
+| | cccccc | 2019-02-11T12:13:14.015Z | seg | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | sex | 2019-02-15T00:00:00.000Z |
+| AM, PM | a | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | aa | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | aaa | 2019-02-11T11:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | aaaa | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | aaaaa | 2019-02-11T11:13:14.015Z | AM | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | PM | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | PM | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | AM | Invalid Date |
+| AM, PM, noon, midnight | b | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | bb | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | bbb | 2019-02-11T11:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | bbbb | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | bbbbb | 2019-02-11T11:13:14.015Z | AM | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | PM | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | PM | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | AM | Invalid Date |
+| Flexible day period | B | 2019-02-11T11:13:14.015Z | da manhã | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | da tarde | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | da noite | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | da madrugada | 2019-02-11T00:00:00.000Z |
+| | BB | 2019-02-11T11:13:14.015Z | da manhã | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | da tarde | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | da noite | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | da madrugada | 2019-02-11T00:00:00.000Z |
+| | BBB | 2019-02-11T11:13:14.015Z | da manhã | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | da tarde | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | da noite | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | da madrugada | 2019-02-11T00:00:00.000Z |
+| | BBBB | 2019-02-11T11:13:14.015Z | da manhã | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | da tarde | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | da noite | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | da madrugada | 2019-02-11T00:00:00.000Z |
+| | BBBBB | 2019-02-11T11:13:14.015Z | da manhã | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | da tarde | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | da noite | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | da madrugada | 2019-02-11T00:00:00.000Z |
+| Hour [1-12] | ho | 2019-02-11T11:13:14.015Z | 11º | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11º | 2019-02-11T23:00:00.000Z |
+| Hour [0-23] | Ho | 2019-02-11T11:13:14.015Z | 11º | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23º | 2019-02-11T23:00:00.000Z |
+| Hour [0-11] | Ko | 2019-02-11T11:13:14.015Z | 11º | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11º | 2019-02-11T23:00:00.000Z |
+| Hour [1-24] | ko | 2019-02-11T11:13:14.015Z | 11º | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23º | 2019-02-11T23:00:00.000Z |
+| Minute | mo | 2019-01-01T12:01:14.015Z | 1º | 2019-01-01T12:01:00.000Z |
+| | | 2019-04-01T12:55:14.015Z | 55º | 2019-04-01T12:55:00.000Z |
+| Second | so | 2019-01-01T12:13:01.015Z | 1º | 2019-01-01T12:13:01.000Z |
+| | | 2019-04-01T12:13:55.015Z | 55º | 2019-04-01T12:13:55.000Z |
+| Long localized date | P | 1987-02-11T12:13:14.015Z | 11/02/1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29/05/1453 | 1453-05-29T00:00:00.000Z |
+| | PP | 1987-02-11T12:13:14.015Z | 11 de fev de 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 de mai de 1453 | 1453-05-29T00:00:00.000Z |
+| | PPP | 1987-02-11T12:13:14.015Z | 11 de fevereiro de 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 de maio de 1453 | 1453-05-29T00:00:00.000Z |
+| | PPPP | 1987-02-11T12:13:14.015Z | quarta-feira, 11 de fevereiro de 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | domingo, 29 de maio de 1453 | 1453-05-29T00:00:00.000Z |
+| Long localized time | p | 1987-02-11T12:13:14.015Z | 12:13 | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 23:59 | 1453-05-29T23:59:00.000Z |
+| | pp | 1987-02-11T12:13:14.015Z | 12:13:14 | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 | 1453-05-29T23:59:59.000Z |
+| | ppp | 1987-02-11T12:13:14.015Z | 12:13:14 GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 GMT+0 | Errored |
+| | pppp | 1987-02-11T12:13:14.015Z | 12:13:14 GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 GMT+00:00 | Errored |
+| Combination of date and time | Pp | 1987-02-11T12:13:14.015Z | 11/02/1987, 12:13 | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29/05/1453, 23:59 | 1453-05-29T23:59:00.000Z |
+| | PPpp | 1987-02-11T12:13:14.015Z | 11 de fev de 1987, 12:13:14 | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 de mai de 1453, 23:59:59 | 1453-05-29T23:59:59.000Z |
+| | PPPppp | 1987-02-11T12:13:14.015Z | 11 de fevereiro de 1987 às 12:13:14 GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 29 de maio de 1453 às 23:59:59 GMT+0 | Errored |
+| | PPPPpppp | 1987-02-11T12:13:14.015Z | quarta-feira, 11 de fevereiro de 1987 às 12:13:14 GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | domingo, 29 de maio de 1453 às 23:59:59 GMT+00:00 | Errored |
+
+## `formatDistance`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `includeSeconds: true` | `addSuffix: true` |
+| ------------------------ | ----------------------- | ----------------------- | ------------------------------- |
+| 2006-01-01T00:00:00.000Z | aproximadamente 6 anos | aproximadamente 6 anos | daqui a aproximadamente 6 anos |
+| 2005-01-01T00:00:00.000Z | aproximadamente 5 anos | aproximadamente 5 anos | daqui a aproximadamente 5 anos |
+| 2004-01-01T00:00:00.000Z | aproximadamente 4 anos | aproximadamente 4 anos | daqui a aproximadamente 4 anos |
+| 2003-01-01T00:00:00.000Z | aproximadamente 3 anos | aproximadamente 3 anos | daqui a aproximadamente 3 anos |
+| 2002-01-01T00:00:00.000Z | aproximadamente 2 anos | aproximadamente 2 anos | daqui a aproximadamente 2 anos |
+| 2001-06-01T00:00:00.000Z | mais de 1 ano | mais de 1 ano | daqui a mais de 1 ano |
+| 2001-02-01T00:00:00.000Z | aproximadamente 1 ano | aproximadamente 1 ano | daqui a aproximadamente 1 ano |
+| 2001-01-01T00:00:00.000Z | aproximadamente 1 ano | aproximadamente 1 ano | daqui a aproximadamente 1 ano |
+| 2000-06-01T00:00:00.000Z | 5 meses | 5 meses | daqui a 5 meses |
+| 2000-03-01T00:00:00.000Z | 2 meses | 2 meses | daqui a 2 meses |
+| 2000-02-01T00:00:00.000Z | aproximadamente 1 mês | aproximadamente 1 mês | daqui a aproximadamente 1 mês |
+| 2000-01-15T00:00:00.000Z | 14 dias | 14 dias | daqui a 14 dias |
+| 2000-01-02T00:00:00.000Z | 1 dia | 1 dia | daqui a 1 dia |
+| 2000-01-01T06:00:00.000Z | aproximadamente 6 horas | aproximadamente 6 horas | daqui a aproximadamente 6 horas |
+| 2000-01-01T01:00:00.000Z | aproximadamente 1 hora | aproximadamente 1 hora | daqui a aproximadamente 1 hora |
+| 2000-01-01T00:45:00.000Z | aproximadamente 1 hora | aproximadamente 1 hora | daqui a aproximadamente 1 hora |
+| 2000-01-01T00:30:00.000Z | 30 minutos | 30 minutos | daqui a 30 minutos |
+| 2000-01-01T00:15:00.000Z | 15 minutos | 15 minutos | daqui a 15 minutos |
+| 2000-01-01T00:01:00.000Z | 1 minuto | 1 minuto | daqui a 1 minuto |
+| 2000-01-01T00:00:25.000Z | menos de um minuto | meio minuto | daqui a menos de um minuto |
+| 2000-01-01T00:00:15.000Z | menos de um minuto | menos de 20 segundos | daqui a menos de um minuto |
+| 2000-01-01T00:00:05.000Z | menos de um minuto | menos de 10 segundos | daqui a menos de um minuto |
+| 2000-01-01T00:00:00.000Z | menos de um minuto | menos de 5 segundos | há menos de um minuto |
+| 1999-12-31T23:59:55.000Z | menos de um minuto | menos de 10 segundos | há menos de um minuto |
+| 1999-12-31T23:59:45.000Z | menos de um minuto | menos de 20 segundos | há menos de um minuto |
+| 1999-12-31T23:59:35.000Z | menos de um minuto | meio minuto | há menos de um minuto |
+| 1999-12-31T23:59:00.000Z | 1 minuto | 1 minuto | há 1 minuto |
+| 1999-12-31T23:45:00.000Z | 15 minutos | 15 minutos | há 15 minutos |
+| 1999-12-31T23:30:00.000Z | 30 minutos | 30 minutos | há 30 minutos |
+| 1999-12-31T23:15:00.000Z | aproximadamente 1 hora | aproximadamente 1 hora | há aproximadamente 1 hora |
+| 1999-12-31T23:00:00.000Z | aproximadamente 1 hora | aproximadamente 1 hora | há aproximadamente 1 hora |
+| 1999-12-31T18:00:00.000Z | aproximadamente 6 horas | aproximadamente 6 horas | há aproximadamente 6 horas |
+| 1999-12-30T00:00:00.000Z | 2 dias | 2 dias | há 2 dias |
+| 1999-12-15T00:00:00.000Z | 17 dias | 17 dias | há 17 dias |
+| 1999-12-01T00:00:00.000Z | aproximadamente 1 mês | aproximadamente 1 mês | há aproximadamente 1 mês |
+| 1999-11-01T00:00:00.000Z | 2 meses | 2 meses | há 2 meses |
+| 1999-06-01T00:00:00.000Z | 7 meses | 7 meses | há 7 meses |
+| 1999-01-01T00:00:00.000Z | aproximadamente 1 ano | aproximadamente 1 ano | há aproximadamente 1 ano |
+| 1998-12-01T00:00:00.000Z | aproximadamente 1 ano | aproximadamente 1 ano | há aproximadamente 1 ano |
+| 1998-06-01T00:00:00.000Z | mais de 1 ano | mais de 1 ano | há mais de 1 ano |
+| 1998-01-01T00:00:00.000Z | aproximadamente 2 anos | aproximadamente 2 anos | há aproximadamente 2 anos |
+| 1997-01-01T00:00:00.000Z | aproximadamente 3 anos | aproximadamente 3 anos | há aproximadamente 3 anos |
+| 1996-01-01T00:00:00.000Z | aproximadamente 4 anos | aproximadamente 4 anos | há aproximadamente 4 anos |
+| 1995-01-01T00:00:00.000Z | aproximadamente 5 anos | aproximadamente 5 anos | há aproximadamente 5 anos |
+| 1994-01-01T00:00:00.000Z | aproximadamente 6 anos | aproximadamente 6 anos | há aproximadamente 6 anos |
+
+## `formatDistanceStrict`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `addSuffix: true` | With forced unit (i.e. `hour`) |
+| ------------------------ | ----------- | ------------------- | ------------------------------ |
+| 2006-01-01T00:00:00.000Z | 6 anos | daqui a 6 anos | 52608 horas |
+| 2005-01-01T00:00:00.000Z | 5 anos | daqui a 5 anos | 43848 horas |
+| 2004-01-01T00:00:00.000Z | 4 anos | daqui a 4 anos | 35064 horas |
+| 2003-01-01T00:00:00.000Z | 3 anos | daqui a 3 anos | 26304 horas |
+| 2002-01-01T00:00:00.000Z | 2 anos | daqui a 2 anos | 17544 horas |
+| 2001-06-01T00:00:00.000Z | 1 ano | daqui a 1 ano | 12408 horas |
+| 2001-02-01T00:00:00.000Z | 1 ano | daqui a 1 ano | 9528 horas |
+| 2001-01-01T00:00:00.000Z | 1 ano | daqui a 1 ano | 8784 horas |
+| 2000-06-01T00:00:00.000Z | 5 meses | daqui a 5 meses | 3648 horas |
+| 2000-03-01T00:00:00.000Z | 2 meses | daqui a 2 meses | 1440 horas |
+| 2000-02-01T00:00:00.000Z | 1 mês | daqui a 1 mês | 744 horas |
+| 2000-01-15T00:00:00.000Z | 14 dias | daqui a 14 dias | 336 horas |
+| 2000-01-02T00:00:00.000Z | 1 dia | daqui a 1 dia | 24 horas |
+| 2000-01-01T06:00:00.000Z | 6 horas | daqui a 6 horas | 6 horas |
+| 2000-01-01T01:00:00.000Z | 1 hora | daqui a 1 hora | 1 hora |
+| 2000-01-01T00:45:00.000Z | 45 minutos | daqui a 45 minutos | 1 hora |
+| 2000-01-01T00:30:00.000Z | 30 minutos | daqui a 30 minutos | 1 hora |
+| 2000-01-01T00:15:00.000Z | 15 minutos | daqui a 15 minutos | 0 horas |
+| 2000-01-01T00:01:00.000Z | 1 minuto | daqui a 1 minuto | 0 horas |
+| 2000-01-01T00:00:25.000Z | 25 segundos | daqui a 25 segundos | 0 horas |
+| 2000-01-01T00:00:15.000Z | 15 segundos | daqui a 15 segundos | 0 horas |
+| 2000-01-01T00:00:05.000Z | 5 segundos | daqui a 5 segundos | 0 horas |
+| 2000-01-01T00:00:00.000Z | 0 segundos | há 0 segundos | 0 horas |
+| 1999-12-31T23:59:55.000Z | 5 segundos | há 5 segundos | 0 horas |
+| 1999-12-31T23:59:45.000Z | 15 segundos | há 15 segundos | 0 horas |
+| 1999-12-31T23:59:35.000Z | 25 segundos | há 25 segundos | 0 horas |
+| 1999-12-31T23:59:00.000Z | 1 minuto | há 1 minuto | 0 horas |
+| 1999-12-31T23:45:00.000Z | 15 minutos | há 15 minutos | 0 horas |
+| 1999-12-31T23:30:00.000Z | 30 minutos | há 30 minutos | 1 hora |
+| 1999-12-31T23:15:00.000Z | 45 minutos | há 45 minutos | 1 hora |
+| 1999-12-31T23:00:00.000Z | 1 hora | há 1 hora | 1 hora |
+| 1999-12-31T18:00:00.000Z | 6 horas | há 6 horas | 6 horas |
+| 1999-12-30T00:00:00.000Z | 2 dias | há 2 dias | 48 horas |
+| 1999-12-15T00:00:00.000Z | 17 dias | há 17 dias | 408 horas |
+| 1999-12-01T00:00:00.000Z | 1 mês | há 1 mês | 744 horas |
+| 1999-11-01T00:00:00.000Z | 2 meses | há 2 meses | 1464 horas |
+| 1999-06-01T00:00:00.000Z | 7 meses | há 7 meses | 5136 horas |
+| 1999-01-01T00:00:00.000Z | 1 ano | há 1 ano | 8760 horas |
+| 1998-12-01T00:00:00.000Z | 1 ano | há 1 ano | 9504 horas |
+| 1998-06-01T00:00:00.000Z | 2 anos | há 2 anos | 13896 horas |
+| 1998-01-01T00:00:00.000Z | 2 anos | há 2 anos | 17520 horas |
+| 1997-01-01T00:00:00.000Z | 3 anos | há 3 anos | 26280 horas |
+| 1996-01-01T00:00:00.000Z | 4 anos | há 4 anos | 35064 horas |
+| 1995-01-01T00:00:00.000Z | 5 anos | há 5 anos | 43824 horas |
+| 1994-01-01T00:00:00.000Z | 6 anos | há 6 anos | 52584 horas |
+
+## `formatRelative`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result |
+| ------------------------ | -------------------------------- |
+| 2000-01-10T00:00:00.000Z | 10/01/2000 |
+| 2000-01-05T00:00:00.000Z | quarta-feira às 00:00 |
+| 2000-01-02T00:00:00.000Z | amanhã às 00:00 |
+| 2000-01-01T00:00:00.000Z | hoje às 00:00 |
+| 1999-12-31T00:00:00.000Z | ontem às 00:00 |
+| 1999-12-27T00:00:00.000Z | na última segunda-feira às 00:00 |
+| 1999-12-21T00:00:00.000Z | 21/12/1999 |
diff --git a/date-fns/src/locale/ro/_lib/formatDistance/index.js b/date-fns/src/locale/ro/_lib/formatDistance/index.js
new file mode 100644
index 0000000..6fb15f5
--- /dev/null
+++ b/date-fns/src/locale/ro/_lib/formatDistance/index.js
@@ -0,0 +1,101 @@
+var formatDistanceLocale = {
+ lessThanXSeconds: {
+ one: 'mai puțin de o secundă',
+ other: 'mai puțin de {{count}} secunde'
+ },
+
+ xSeconds: {
+ one: '1 secundă',
+ other: '{{count}} secunde'
+ },
+
+ halfAMinute: 'jumătate de minut',
+
+ lessThanXMinutes: {
+ one: 'mai puțin de un minut',
+ other: 'mai puțin de {{count}} minute'
+ },
+
+ xMinutes: {
+ one: '1 minut',
+ other: '{{count}} minute'
+ },
+
+ aboutXHours: {
+ one: 'circa 1 oră',
+ other: 'circa {{count}} ore'
+ },
+
+ xHours: {
+ one: '1 oră',
+ other: '{{count}} ore'
+ },
+
+ xDays: {
+ one: '1 zi',
+ other: '{{count}} zile'
+ },
+
+ aboutXWeeks: {
+ one: 'circa o săptămână',
+ other: 'circa {{count}} săptămâni'
+ },
+
+ xWeeks: {
+ one: '1 săptămână',
+ other: '{{count}} săptămâni'
+ },
+
+ aboutXMonths: {
+ one: 'circa 1 lună',
+ other: 'circa {{count}} luni'
+ },
+
+ xMonths: {
+ one: '1 lună',
+ other: '{{count}} luni'
+ },
+
+ aboutXYears: {
+ one: 'circa 1 an',
+ other: 'circa {{count}} ani'
+ },
+
+ xYears: {
+ one: '1 an',
+ other: '{{count}} ani'
+ },
+
+ overXYears: {
+ one: 'peste 1 an',
+ other: 'peste {{count}} ani'
+ },
+
+ almostXYears: {
+ one: 'aproape 1 an',
+ other: 'aproape {{count}} ani'
+ }
+}
+
+export default function formatDistance(token, count, options) {
+ options = options || {}
+
+ var result
+ if (typeof formatDistanceLocale[token] === 'string') {
+ result = formatDistanceLocale[token]
+ } else if (count === 1) {
+ result = formatDistanceLocale[token].one
+ } else {
+ result = formatDistanceLocale[token].other.replace('{{count}}', count)
+ }
+
+ if (options.addSuffix) {
+ if (options.comparison > 0) {
+ return 'în ' + result
+ } else {
+ return result + ' în urmă'
+ }
+ }
+
+ return result
+}
diff --git a/date-fns/src/locale/ro/_lib/formatLong/index.js b/date-fns/src/locale/ro/_lib/formatLong/index.js
new file mode 100644
index 0000000..e3bc404
--- /dev/null
+++ b/date-fns/src/locale/ro/_lib/formatLong/index.js
@@ -0,0 +1,41 @@
+import buildFormatLongFn from '../../../_lib/buildFormatLongFn/index'
+
+var dateFormats = {
+ full: 'EEEE, d MMMM yyyy',
+ long: 'd MMMM yyyy',
+ medium: 'd MMM yyyy',
+ short: 'dd/MM/yyyy'
+}
+
+var timeFormats = {
+ full: 'HH:mm:ss zzzz',
+ long: 'HH:mm:ss z',
+ medium: 'HH:mm:ss',
+ short: 'HH:mm'
+}
+
+var dateTimeFormats = {
+ full: "{{date}} 'la' {{time}}",
+ long: "{{date}} 'la' {{time}}",
+ medium: '{{date}}, {{time}}',
+ short: '{{date}}, {{time}}'
+}
+
+var formatLong = {
+ date: buildFormatLongFn({
+ formats: dateFormats,
+ defaultWidth: 'full'
+ }),
+
+ time: buildFormatLongFn({
+ formats: timeFormats,
+ defaultWidth: 'full'
+ }),
+
+ dateTime: buildFormatLongFn({
+ formats: dateTimeFormats,
+ defaultWidth: 'full'
+ })
+}
+
+export default formatLong
diff --git a/date-fns/src/locale/ro/_lib/formatRelative/index.js b/date-fns/src/locale/ro/_lib/formatRelative/index.js
new file mode 100644
index 0000000..435ef8b
--- /dev/null
+++ b/date-fns/src/locale/ro/_lib/formatRelative/index.js
@@ -0,0 +1,12 @@
+var formatRelativeLocale = {
+ lastWeek: "eeee 'trecută la' p",
+ yesterday: "'ieri la' p",
+ today: "'astăzi la' p",
+ tomorrow: "'mâine la' p",
+ nextWeek: "eeee 'viitoare la' p",
+ other: 'P'
+}
+
+export default function formatRelative(token, _date, _baseDate, _options) {
+ return formatRelativeLocale[token]
+}
diff --git a/date-fns/src/locale/ro/_lib/localize/index.js b/date-fns/src/locale/ro/_lib/localize/index.js
new file mode 100644
index 0000000..f345da6
--- /dev/null
+++ b/date-fns/src/locale/ro/_lib/localize/index.js
@@ -0,0 +1,164 @@
+import buildLocalizeFn from '../../../_lib/buildLocalizeFn/index'
+
+var eraValues = {
+ narrow: ['Î', 'D'],
+ abbreviated: ['Î.d.C.', 'D.C.'],
+ wide: ['Înainte de Cristos', 'După Cristos']
+}
+
+var quarterValues = {
+ narrow: ['1', '2', '3', '4'],
+ abbreviated: ['T1', 'T2', 'T3', 'T4'],
+ wide: [
+ 'primul trimestru',
+ 'al doilea trimestru',
+ 'al treilea trimestru',
+ 'al patrulea trimestru'
+ ]
+}
+
+var monthValues = {
+ narrow: ['I', 'F', 'M', 'A', 'M', 'I', 'I', 'A', 'S', 'O', 'N', 'D'],
+ abbreviated: [
+ 'ian',
+ 'feb',
+ 'mar',
+ 'apr',
+ 'mai',
+ 'iun',
+ 'iul',
+ 'aug',
+ 'sep',
+ 'oct',
+ 'noi',
+ 'dec'
+ ],
+ wide: [
+ 'ianuarie',
+ 'februarie',
+ 'martie',
+ 'aprilie',
+ 'mai',
+ 'iunie',
+ 'iulie',
+ 'august',
+ 'septembrie',
+ 'octombrie',
+ 'noiembrie',
+ 'decembrie'
+ ]
+}
+
+var dayValues = {
+ narrow: ['d', 'l', 'm', 'm', 'j', 'v', 's'],
+ short: ['du', 'lu', 'ma', 'mi', 'jo', 'vi', 'sâ'],
+ abbreviated: ['dum', 'lun', 'mar', 'mie', 'joi', 'vin', 'sâm'],
+ wide: ['duminică', 'luni', 'marți', 'miercuri', 'joi', 'vineri', 'sâmbătă']
+}
+
+var dayPeriodValues = {
+ narrow: {
+ am: 'a',
+ pm: 'p',
+ midnight: 'mn',
+ noon: 'ami',
+ morning: 'dim',
+ afternoon: 'da',
+ evening: 's',
+ night: 'n'
+ },
+ abbreviated: {
+ am: 'AM',
+ pm: 'PM',
+ midnight: 'miezul nopții',
+ noon: 'amiază',
+ morning: 'dimineață',
+ afternoon: 'după-amiază',
+ evening: 'seară',
+ night: 'noapte'
+ },
+ wide: {
+ am: 'a.m.',
+ pm: 'p.m.',
+ midnight: 'miezul nopții',
+ noon: 'amiază',
+ morning: 'dimineață',
+ afternoon: 'după-amiază',
+ evening: 'seară',
+ night: 'noapte'
+ }
+}
+
+var formattingDayPeriodValues = {
+ narrow: {
+ am: 'a',
+ pm: 'p',
+ midnight: 'mn',
+ noon: 'amiază',
+ morning: 'dimineață',
+ afternoon: 'după-amiază',
+ evening: 'seară',
+ night: 'noapte'
+ },
+ abbreviated: {
+ am: 'AM',
+ pm: 'PM',
+ midnight: 'miezul nopții',
+ noon: 'amiază',
+ morning: 'dimineață',
+ afternoon: 'după-amiază',
+ evening: 'seară',
+ night: 'noapte'
+ },
+ wide: {
+ am: 'a.m.',
+ pm: 'p.m.',
+ midnight: 'miezul nopții',
+ noon: 'amiază',
+ morning: 'dimineață',
+ afternoon: 'după-amiază',
+ evening: 'seară',
+ night: 'noapte'
+ }
+}
+
+function ordinalNumber(dirtyNumber) {
+ var number = Number(dirtyNumber)
+ return String(number)
+}
+
+var localize = {
+ ordinalNumber: ordinalNumber,
+
+ era: buildLocalizeFn({
+ values: eraValues,
+ defaultWidth: 'wide'
+ }),
+
+ quarter: buildLocalizeFn({
+ values: quarterValues,
+ defaultWidth: 'wide',
+ argumentCallback: function(quarter) {
+ return Number(quarter) - 1
+ }
+ }),
+
+ month: buildLocalizeFn({
+ values: monthValues,
+ defaultWidth: 'wide'
+ }),
+
+ day: buildLocalizeFn({
+ values: dayValues,
+ defaultWidth: 'wide'
+ }),
+
+ dayPeriod: buildLocalizeFn({
+ values: dayPeriodValues,
+ defaultWidth: 'wide',
+ formattingValues: formattingDayPeriodValues,
+ defaultFormattingWidth: 'wide'
+ })
+}
+
+export default localize
diff --git a/date-fns/src/locale/ro/_lib/match/index.js b/date-fns/src/locale/ro/_lib/match/index.js
new file mode 100644
index 0000000..87048eb
--- /dev/null
+++ b/date-fns/src/locale/ro/_lib/match/index.js
@@ -0,0 +1,146 @@
+import buildMatchPatternFn from '../../../_lib/buildMatchPatternFn/index'
+import buildMatchFn from '../../../_lib/buildMatchFn/index'
+
+var matchOrdinalNumberPattern = /^(\d+)?/i
+var parseOrdinalNumberPattern = /\d+/i
+
+var matchEraPatterns = {
+ narrow: /^(Î|D)/i,
+ abbreviated: /^(Î\.?\s?d\.?\s?C\.?|Î\.?\s?e\.?\s?n\.?|D\.?\s?C\.?|e\.?\s?n\.?)/i,
+ wide: /^(Înainte de Cristos|Înaintea erei noastre|După Cristos|Era noastră)/i
+}
+
+var parseEraPatterns = {
+ any: [/^ÎC/i, /^DC/i],
+ wide: [
+ /^(Înainte de Cristos|Înaintea erei noastre)/i,
+ /^(După Cristos|Era noastră)/i
+ ]
+}
+
+var matchQuarterPatterns = {
+ narrow: /^[1234]/i,
+ abbreviated: /^T[1234]/i,
+ wide: /^trimestrul [1234]/i
+}
+
+var parseQuarterPatterns = {
+ any: [/1/i, /2/i, /3/i, /4/i]
+}
+
+var matchMonthPatterns = {
+ narrow: /^[ifmaasond]/i,
+ abbreviated: /^(ian|feb|mar|apr|mai|iun|iul|aug|sep|oct|noi|dec)/i,
+ wide: /^(ianuarie|februarie|martie|aprilie|mai|iunie|iulie|august|septembrie|octombrie|noiembrie|decembrie)/i
+}
+
+var parseMonthPatterns = {
+ narrow: [
+ /^i/i,
+ /^f/i,
+ /^m/i,
+ /^a/i,
+ /^m/i,
+ /^i/i,
+ /^i/i,
+ /^a/i,
+ /^s/i,
+ /^o/i,
+ /^n/i,
+ /^d/i
+ ],
+ any: [
+ /^ia/i,
+ /^f/i,
+ /^mar/i,
+ /^ap/i,
+ /^mai/i,
+ /^iun/i,
+ /^iul/i,
+ /^au/i,
+ /^s/i,
+ /^o/i,
+ /^n/i,
+ /^d/i
+ ]
+}
+
+var matchDayPatterns = {
+ narrow: /^[dlmjvs]/i,
+ short: /^(d|l|ma|mi|j|v|s)/i,
+ abbreviated: /^(dum|lun|mar|mie|jo|vi|sâ)/i,
+ wide: /^(duminica|luni|marţi|miercuri|joi|vineri|sâmbătă)/i
+}
+
+var parseDayPatterns = {
+ narrow: [/^d/i, /^l/i, /^m/i, /^m/i, /^j/i, /^v/i, /^s/i],
+ any: [/^d/i, /^l/i, /^ma/i, /^mi/i, /^j/i, /^v/i, /^s/i]
+}
+
+var matchDayPeriodPatterns = {
+ narrow: /^(a|p|mn|a|(dimineaţa|după-amiaza|seara|noaptea))/i,
+ any: /^([ap]\.?\s?m\.?|miezul nopții|amiaza|(dimineaţa|după-amiaza|seara|noaptea))/i
+}
+
+var parseDayPeriodPatterns = {
+ any: {
+ am: /^a/i,
+ pm: /^p/i,
+ midnight: /^mn/i,
+ noon: /amiaza/i,
+ morning: /dimineaţa/i,
+ afternoon: /după-amiaza/i,
+ evening: /seara/i,
+ night: /noaptea/i
+ }
+}
+
+var match = {
+ ordinalNumber: buildMatchPatternFn({
+ matchPattern: matchOrdinalNumberPattern,
+ parsePattern: parseOrdinalNumberPattern,
+ valueCallback: function(value) {
+ return parseInt(value, 10)
+ }
+ }),
+
+ era: buildMatchFn({
+ matchPatterns: matchEraPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseEraPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ quarter: buildMatchFn({
+ matchPatterns: matchQuarterPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseQuarterPatterns,
+ defaultParseWidth: 'any',
+ valueCallback: function(index) {
+ return index + 1
+ }
+ }),
+
+ month: buildMatchFn({
+ matchPatterns: matchMonthPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseMonthPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ day: buildMatchFn({
+ matchPatterns: matchDayPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseDayPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ dayPeriod: buildMatchFn({
+ matchPatterns: matchDayPeriodPatterns,
+ defaultMatchWidth: 'any',
+ parsePatterns: parseDayPeriodPatterns,
+ defaultParseWidth: 'any'
+ })
+}
+
+export default match
diff --git a/date-fns/src/locale/ro/index.d.ts b/date-fns/src/locale/ro/index.d.ts
new file mode 100644
index 0000000..c19fdec
--- /dev/null
+++ b/date-fns/src/locale/ro/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { ro } from 'date-fns/locale'
+export default ro
diff --git a/date-fns/src/locale/ro/index.js b/date-fns/src/locale/ro/index.js
new file mode 100644
index 0000000..f22968c
--- /dev/null
+++ b/date-fns/src/locale/ro/index.js
@@ -0,0 +1,30 @@
+import formatDistance from './_lib/formatDistance/index'
+import formatLong from './_lib/formatLong/index'
+import formatRelative from './_lib/formatRelative/index'
+import localize from './_lib/localize/index'
+import match from './_lib/match/index'
+
+/**
+ * @type {Locale}
+ * @category Locales
+ * @summary Romanian locale.
+ * @language Romanian
+ * @iso-639-2 ron
+ * @author Sergiu Munteanu [@jsergiu]{@link https://github.com/jsergiu}
+ * @author Adrian Ocneanu [@aocneanu]{@link https://github.com/aocneanu}
+ * @author Mihai Ocneanu [@gandesc]{@link https://github.com/gandesc}
+ */
+var locale = {
+ code: 'ro',
+ formatDistance: formatDistance,
+ formatLong: formatLong,
+ formatRelative: formatRelative,
+ localize: localize,
+ match: match,
+ options: {
+ weekStartsOn: 1 /* Monday */,
+ firstWeekContainsDate: 1
+ }
+}
+
+export default locale
diff --git a/date-fns/src/locale/ro/index.js.flow b/date-fns/src/locale/ro/index.js.flow
new file mode 100644
index 0000000..b9dfe66
--- /dev/null
+++ b/date-fns/src/locale/ro/index.js.flow
@@ -0,0 +1,35 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+declare module.exports: Locale
diff --git a/date-fns/src/locale/ro/snapshot.md b/date-fns/src/locale/ro/snapshot.md
new file mode 100644
index 0000000..fc91c79
--- /dev/null
+++ b/date-fns/src/locale/ro/snapshot.md
@@ -0,0 +1,304 @@
+# Romanian (ro) locale
+
+## `format` and `parse`
+
+| Title | Token string | Date | `format` result | `parse` result |
+| ------------------------------- | ------------ | ------------------------ | ------------------------------------------------- | ------------------------ |
+| Calendar year | yo | 1987-02-11T12:13:14.015Z | 1987 | 1987-01-01T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 5 | 0005-01-01T00:00:00.000Z |
+| Local week-numbering year | Yo | 1987-02-11T12:13:14.015Z | 1987 | 1986-12-29T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 5 | 0004-12-27T00:00:00.000Z |
+| Quarter (formatting) | Qo | 2019-01-01T12:13:14.015Z | 1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2 | 2019-04-01T00:00:00.000Z |
+| | QQQ | 2019-01-01T12:13:14.015Z | T1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | T2 | 2019-04-01T00:00:00.000Z |
+| | QQQQ | 2019-01-01T12:13:14.015Z | primul trimestru | Invalid Date |
+| | | 2019-04-01T12:13:14.015Z | al doilea trimestru | Invalid Date |
+| | QQQQQ | 2019-01-01T12:13:14.015Z | 1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2 | 2019-04-01T00:00:00.000Z |
+| Quarter (stand-alone) | qo | 2019-01-01T12:13:14.015Z | 1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2 | 2019-04-01T00:00:00.000Z |
+| | qqq | 2019-01-01T12:13:14.015Z | T1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | T2 | 2019-04-01T00:00:00.000Z |
+| | qqqq | 2019-01-01T12:13:14.015Z | primul trimestru | Invalid Date |
+| | | 2019-04-01T12:13:14.015Z | al doilea trimestru | Invalid Date |
+| Month (formatting) | Mo | 2019-02-11T12:13:14.015Z | 2 | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7 | 2019-07-01T00:00:00.000Z |
+| | MMM | 2019-02-11T12:13:14.015Z | feb | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | iul | 2019-07-01T00:00:00.000Z |
+| | MMMM | 2019-02-11T12:13:14.015Z | februarie | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | iulie | 2019-07-01T00:00:00.000Z |
+| | MMMMM | 2019-02-11T12:13:14.015Z | F | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | I | 2019-01-01T00:00:00.000Z |
+| Month (stand-alone) | Lo | 2019-02-11T12:13:14.015Z | 2 | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7 | 2019-07-01T00:00:00.000Z |
+| | LLL | 2019-02-11T12:13:14.015Z | feb | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | iul | 2019-07-01T00:00:00.000Z |
+| | LLLL | 2019-02-11T12:13:14.015Z | februarie | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | iulie | 2019-07-01T00:00:00.000Z |
+| | LLLLL | 2019-02-11T12:13:14.015Z | F | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | I | 2019-01-01T00:00:00.000Z |
+| Local week of year | wo | 2019-01-01T12:13:14.015Z | 1 | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48 | 2019-11-25T00:00:00.000Z |
+| ISO week of year | Io | 2019-01-01T12:13:14.015Z | 1 | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48 | 2019-11-25T00:00:00.000Z |
+| Day of month | do | 2019-02-11T12:13:14.015Z | 11 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-28T12:13:14.015Z | 28 | 2019-02-28T00:00:00.000Z |
+| Day of year | Do | 2019-02-11T12:13:14.015Z | 42 | 2019-02-11T00:00:00.000Z |
+| | | 2019-12-31T12:13:14.015Z | 365 | 2019-12-31T00:00:00.000Z |
+| Day of week (formatting) | E | 2019-02-11T12:13:14.015Z | lun | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | vin | Invalid Date |
+| | EE | 2019-02-11T12:13:14.015Z | lun | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | vin | Invalid Date |
+| | EEE | 2019-02-11T12:13:14.015Z | lun | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | vin | Invalid Date |
+| | EEEE | 2019-02-11T12:13:14.015Z | luni | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | vineri | 2019-02-15T00:00:00.000Z |
+| | EEEEE | 2019-02-11T12:13:14.015Z | l | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | v | 2019-02-15T00:00:00.000Z |
+| | EEEEEE | 2019-02-11T12:13:14.015Z | lu | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | vi | Invalid Date |
+| ISO day of week (formatting) | io | 2019-02-11T12:13:14.015Z | 1 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5 | 2019-02-15T00:00:00.000Z |
+| | iii | 2019-02-11T12:13:14.015Z | lun | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | vin | Invalid Date |
+| | iiii | 2019-02-11T12:13:14.015Z | luni | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | vineri | 2019-02-15T00:00:00.000Z |
+| | iiiii | 2019-02-11T12:13:14.015Z | l | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | v | 2019-02-15T00:00:00.000Z |
+| | iiiiii | 2019-02-11T12:13:14.015Z | lu | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | vi | Invalid Date |
+| Local day of week (formatting) | eo | 2019-02-11T12:13:14.015Z | 1 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5 | 2019-02-15T00:00:00.000Z |
+| | eee | 2019-02-11T12:13:14.015Z | lun | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | vin | Invalid Date |
+| | eeee | 2019-02-11T12:13:14.015Z | luni | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | vineri | 2019-02-15T00:00:00.000Z |
+| | eeeee | 2019-02-11T12:13:14.015Z | l | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | v | 2019-02-15T00:00:00.000Z |
+| | eeeeee | 2019-02-11T12:13:14.015Z | lu | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | vi | Invalid Date |
+| Local day of week (stand-alone) | co | 2019-02-11T12:13:14.015Z | 1 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5 | 2019-02-15T00:00:00.000Z |
+| | ccc | 2019-02-11T12:13:14.015Z | lun | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | vin | Invalid Date |
+| | cccc | 2019-02-11T12:13:14.015Z | luni | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | vineri | 2019-02-15T00:00:00.000Z |
+| | ccccc | 2019-02-11T12:13:14.015Z | l | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | v | 2019-02-15T00:00:00.000Z |
+| | cccccc | 2019-02-11T12:13:14.015Z | lu | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | vi | Invalid Date |
+| AM, PM | a | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | aa | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | aaa | 2019-02-11T11:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | aaaa | 2019-02-11T11:13:14.015Z | a.m. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | p.m. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | p.m. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | a.m. | 2019-02-11T00:00:00.000Z |
+| | aaaaa | 2019-02-11T11:13:14.015Z | a | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | p | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | p | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | a | 2019-02-11T00:00:00.000Z |
+| AM, PM, noon, midnight | b | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | bb | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | bbb | 2019-02-11T11:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | bbbb | 2019-02-11T11:13:14.015Z | a.m. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | p.m. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | p.m. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | a.m. | 2019-02-11T00:00:00.000Z |
+| | bbbbb | 2019-02-11T11:13:14.015Z | a | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | p | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | p | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | a | 2019-02-11T00:00:00.000Z |
+| Flexible day period | B | 2019-02-11T11:13:14.015Z | dimineață | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | după-amiază | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | seară | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | noapte | Invalid Date |
+| | BB | 2019-02-11T11:13:14.015Z | dimineață | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | după-amiază | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | seară | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | noapte | Invalid Date |
+| | BBB | 2019-02-11T11:13:14.015Z | dimineață | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | după-amiază | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | seară | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | noapte | Invalid Date |
+| | BBBB | 2019-02-11T11:13:14.015Z | dimineață | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | după-amiază | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | seară | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | noapte | Invalid Date |
+| | BBBBB | 2019-02-11T11:13:14.015Z | dimineață | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | după-amiază | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | seară | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | noapte | Invalid Date |
+| Hour [1-12] | ho | 2019-02-11T11:13:14.015Z | 11 | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11 | 2019-02-11T23:00:00.000Z |
+| Hour [0-23] | Ho | 2019-02-11T11:13:14.015Z | 11 | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23 | 2019-02-11T23:00:00.000Z |
+| Hour [0-11] | Ko | 2019-02-11T11:13:14.015Z | 11 | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11 | 2019-02-11T23:00:00.000Z |
+| Hour [1-24] | ko | 2019-02-11T11:13:14.015Z | 11 | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23 | 2019-02-11T23:00:00.000Z |
+| Minute | mo | 2019-01-01T12:01:14.015Z | 1 | 2019-01-01T12:01:00.000Z |
+| | | 2019-04-01T12:55:14.015Z | 55 | 2019-04-01T12:55:00.000Z |
+| Second | so | 2019-01-01T12:13:01.015Z | 1 | 2019-01-01T12:13:01.000Z |
+| | | 2019-04-01T12:13:55.015Z | 55 | 2019-04-01T12:13:55.000Z |
+| Long localized date | P | 1987-02-11T12:13:14.015Z | 11/02/1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29/05/1453 | 1453-05-29T00:00:00.000Z |
+| | PP | 1987-02-11T12:13:14.015Z | 11 feb 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 mai 1453 | 1453-05-29T00:00:00.000Z |
+| | PPP | 1987-02-11T12:13:14.015Z | 11 februarie 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 mai 1453 | 1453-05-29T00:00:00.000Z |
+| | PPPP | 1987-02-11T12:13:14.015Z | miercuri, 11 februarie 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | duminică, 29 mai 1453 | Invalid Date |
+| Long localized time | p | 1987-02-11T12:13:14.015Z | 12:13 | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 23:59 | 1453-05-29T23:59:00.000Z |
+| | pp | 1987-02-11T12:13:14.015Z | 12:13:14 | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 | 1453-05-29T23:59:59.000Z |
+| | ppp | 1987-02-11T12:13:14.015Z | 12:13:14 GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 GMT+0 | Errored |
+| | pppp | 1987-02-11T12:13:14.015Z | 12:13:14 GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 GMT+00:00 | Errored |
+| Combination of date and time | Pp | 1987-02-11T12:13:14.015Z | 11/02/1987, 12:13 | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29/05/1453, 23:59 | 1453-05-29T23:59:00.000Z |
+| | PPpp | 1987-02-11T12:13:14.015Z | 11 feb 1987, 12:13:14 | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 mai 1453, 23:59:59 | 1453-05-29T23:59:59.000Z |
+| | PPPppp | 1987-02-11T12:13:14.015Z | 11 februarie 1987 la 12:13:14 GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 29 mai 1453 la 23:59:59 GMT+0 | Errored |
+| | PPPPpppp | 1987-02-11T12:13:14.015Z | miercuri, 11 februarie 1987 la 12:13:14 GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | duminică, 29 mai 1453 la 23:59:59 GMT+00:00 | Invalid Date |
+
+## `formatDistance`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `includeSeconds: true` | `addSuffix: true` |
+| ------------------------ | --------------------- | ----------------------- | ----------------------------- |
+| 2006-01-01T00:00:00.000Z | circa 6 ani | circa 6 ani | în circa 6 ani |
+| 2005-01-01T00:00:00.000Z | circa 5 ani | circa 5 ani | în circa 5 ani |
+| 2004-01-01T00:00:00.000Z | circa 4 ani | circa 4 ani | în circa 4 ani |
+| 2003-01-01T00:00:00.000Z | circa 3 ani | circa 3 ani | în circa 3 ani |
+| 2002-01-01T00:00:00.000Z | circa 2 ani | circa 2 ani | în circa 2 ani |
+| 2001-06-01T00:00:00.000Z | peste 1 an | peste 1 an | în peste 1 an |
+| 2001-02-01T00:00:00.000Z | circa 1 an | circa 1 an | în circa 1 an |
+| 2001-01-01T00:00:00.000Z | circa 1 an | circa 1 an | în circa 1 an |
+| 2000-06-01T00:00:00.000Z | 5 luni | 5 luni | în 5 luni |
+| 2000-03-01T00:00:00.000Z | 2 luni | 2 luni | în 2 luni |
+| 2000-02-01T00:00:00.000Z | circa 1 lună | circa 1 lună | în circa 1 lună |
+| 2000-01-15T00:00:00.000Z | 14 zile | 14 zile | în 14 zile |
+| 2000-01-02T00:00:00.000Z | 1 zi | 1 zi | în 1 zi |
+| 2000-01-01T06:00:00.000Z | circa 6 ore | circa 6 ore | în circa 6 ore |
+| 2000-01-01T01:00:00.000Z | circa 1 oră | circa 1 oră | în circa 1 oră |
+| 2000-01-01T00:45:00.000Z | circa 1 oră | circa 1 oră | în circa 1 oră |
+| 2000-01-01T00:30:00.000Z | 30 minute | 30 minute | în 30 minute |
+| 2000-01-01T00:15:00.000Z | 15 minute | 15 minute | în 15 minute |
+| 2000-01-01T00:01:00.000Z | 1 minut | 1 minut | în 1 minut |
+| 2000-01-01T00:00:25.000Z | mai puțin de un minut | jumătate de minut | în mai puțin de un minut |
+| 2000-01-01T00:00:15.000Z | mai puțin de un minut | mai puțin de 20 secunde | în mai puțin de un minut |
+| 2000-01-01T00:00:05.000Z | mai puțin de un minut | mai puțin de 10 secunde | în mai puțin de un minut |
+| 2000-01-01T00:00:00.000Z | mai puțin de un minut | mai puțin de 5 secunde | mai puțin de un minut în urmă |
+| 1999-12-31T23:59:55.000Z | mai puțin de un minut | mai puțin de 10 secunde | mai puțin de un minut în urmă |
+| 1999-12-31T23:59:45.000Z | mai puțin de un minut | mai puțin de 20 secunde | mai puțin de un minut în urmă |
+| 1999-12-31T23:59:35.000Z | mai puțin de un minut | jumătate de minut | mai puțin de un minut în urmă |
+| 1999-12-31T23:59:00.000Z | 1 minut | 1 minut | 1 minut în urmă |
+| 1999-12-31T23:45:00.000Z | 15 minute | 15 minute | 15 minute în urmă |
+| 1999-12-31T23:30:00.000Z | 30 minute | 30 minute | 30 minute în urmă |
+| 1999-12-31T23:15:00.000Z | circa 1 oră | circa 1 oră | circa 1 oră în urmă |
+| 1999-12-31T23:00:00.000Z | circa 1 oră | circa 1 oră | circa 1 oră în urmă |
+| 1999-12-31T18:00:00.000Z | circa 6 ore | circa 6 ore | circa 6 ore în urmă |
+| 1999-12-30T00:00:00.000Z | 2 zile | 2 zile | 2 zile în urmă |
+| 1999-12-15T00:00:00.000Z | 17 zile | 17 zile | 17 zile în urmă |
+| 1999-12-01T00:00:00.000Z | circa 1 lună | circa 1 lună | circa 1 lună în urmă |
+| 1999-11-01T00:00:00.000Z | 2 luni | 2 luni | 2 luni în urmă |
+| 1999-06-01T00:00:00.000Z | 7 luni | 7 luni | 7 luni în urmă |
+| 1999-01-01T00:00:00.000Z | circa 1 an | circa 1 an | circa 1 an în urmă |
+| 1998-12-01T00:00:00.000Z | circa 1 an | circa 1 an | circa 1 an în urmă |
+| 1998-06-01T00:00:00.000Z | peste 1 an | peste 1 an | peste 1 an în urmă |
+| 1998-01-01T00:00:00.000Z | circa 2 ani | circa 2 ani | circa 2 ani în urmă |
+| 1997-01-01T00:00:00.000Z | circa 3 ani | circa 3 ani | circa 3 ani în urmă |
+| 1996-01-01T00:00:00.000Z | circa 4 ani | circa 4 ani | circa 4 ani în urmă |
+| 1995-01-01T00:00:00.000Z | circa 5 ani | circa 5 ani | circa 5 ani în urmă |
+| 1994-01-01T00:00:00.000Z | circa 6 ani | circa 6 ani | circa 6 ani în urmă |
+
+## `formatDistanceStrict`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `addSuffix: true` | With forced unit (i.e. `hour`) |
+| ------------------------ | ---------- | ------------------ | ------------------------------ |
+| 2006-01-01T00:00:00.000Z | 6 ani | în 6 ani | 52608 ore |
+| 2005-01-01T00:00:00.000Z | 5 ani | în 5 ani | 43848 ore |
+| 2004-01-01T00:00:00.000Z | 4 ani | în 4 ani | 35064 ore |
+| 2003-01-01T00:00:00.000Z | 3 ani | în 3 ani | 26304 ore |
+| 2002-01-01T00:00:00.000Z | 2 ani | în 2 ani | 17544 ore |
+| 2001-06-01T00:00:00.000Z | 1 an | în 1 an | 12408 ore |
+| 2001-02-01T00:00:00.000Z | 1 an | în 1 an | 9528 ore |
+| 2001-01-01T00:00:00.000Z | 1 an | în 1 an | 8784 ore |
+| 2000-06-01T00:00:00.000Z | 5 luni | în 5 luni | 3648 ore |
+| 2000-03-01T00:00:00.000Z | 2 luni | în 2 luni | 1440 ore |
+| 2000-02-01T00:00:00.000Z | 1 lună | în 1 lună | 744 ore |
+| 2000-01-15T00:00:00.000Z | 14 zile | în 14 zile | 336 ore |
+| 2000-01-02T00:00:00.000Z | 1 zi | în 1 zi | 24 ore |
+| 2000-01-01T06:00:00.000Z | 6 ore | în 6 ore | 6 ore |
+| 2000-01-01T01:00:00.000Z | 1 oră | în 1 oră | 1 oră |
+| 2000-01-01T00:45:00.000Z | 45 minute | în 45 minute | 1 oră |
+| 2000-01-01T00:30:00.000Z | 30 minute | în 30 minute | 1 oră |
+| 2000-01-01T00:15:00.000Z | 15 minute | în 15 minute | 0 ore |
+| 2000-01-01T00:01:00.000Z | 1 minut | în 1 minut | 0 ore |
+| 2000-01-01T00:00:25.000Z | 25 secunde | în 25 secunde | 0 ore |
+| 2000-01-01T00:00:15.000Z | 15 secunde | în 15 secunde | 0 ore |
+| 2000-01-01T00:00:05.000Z | 5 secunde | în 5 secunde | 0 ore |
+| 2000-01-01T00:00:00.000Z | 0 secunde | 0 secunde în urmă | 0 ore |
+| 1999-12-31T23:59:55.000Z | 5 secunde | 5 secunde în urmă | 0 ore |
+| 1999-12-31T23:59:45.000Z | 15 secunde | 15 secunde în urmă | 0 ore |
+| 1999-12-31T23:59:35.000Z | 25 secunde | 25 secunde în urmă | 0 ore |
+| 1999-12-31T23:59:00.000Z | 1 minut | 1 minut în urmă | 0 ore |
+| 1999-12-31T23:45:00.000Z | 15 minute | 15 minute în urmă | 0 ore |
+| 1999-12-31T23:30:00.000Z | 30 minute | 30 minute în urmă | 1 oră |
+| 1999-12-31T23:15:00.000Z | 45 minute | 45 minute în urmă | 1 oră |
+| 1999-12-31T23:00:00.000Z | 1 oră | 1 oră în urmă | 1 oră |
+| 1999-12-31T18:00:00.000Z | 6 ore | 6 ore în urmă | 6 ore |
+| 1999-12-30T00:00:00.000Z | 2 zile | 2 zile în urmă | 48 ore |
+| 1999-12-15T00:00:00.000Z | 17 zile | 17 zile în urmă | 408 ore |
+| 1999-12-01T00:00:00.000Z | 1 lună | 1 lună în urmă | 744 ore |
+| 1999-11-01T00:00:00.000Z | 2 luni | 2 luni în urmă | 1464 ore |
+| 1999-06-01T00:00:00.000Z | 7 luni | 7 luni în urmă | 5136 ore |
+| 1999-01-01T00:00:00.000Z | 1 an | 1 an în urmă | 8760 ore |
+| 1998-12-01T00:00:00.000Z | 1 an | 1 an în urmă | 9504 ore |
+| 1998-06-01T00:00:00.000Z | 2 ani | 2 ani în urmă | 13896 ore |
+| 1998-01-01T00:00:00.000Z | 2 ani | 2 ani în urmă | 17520 ore |
+| 1997-01-01T00:00:00.000Z | 3 ani | 3 ani în urmă | 26280 ore |
+| 1996-01-01T00:00:00.000Z | 4 ani | 4 ani în urmă | 35064 ore |
+| 1995-01-01T00:00:00.000Z | 5 ani | 5 ani în urmă | 43824 ore |
+| 1994-01-01T00:00:00.000Z | 6 ani | 6 ani în urmă | 52584 ore |
+
+## `formatRelative`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result |
+| ------------------------ | -------------------------- |
+| 2000-01-10T00:00:00.000Z | 10/01/2000 |
+| 2000-01-05T00:00:00.000Z | miercuri viitoare la 00:00 |
+| 2000-01-02T00:00:00.000Z | mâine la 00:00 |
+| 2000-01-01T00:00:00.000Z | astăzi la 00:00 |
+| 1999-12-31T00:00:00.000Z | ieri la 00:00 |
+| 1999-12-27T00:00:00.000Z | luni trecută la 00:00 |
+| 1999-12-21T00:00:00.000Z | 21/12/1999 |
diff --git a/date-fns/src/locale/ru/_lib/formatDistance/index.js b/date-fns/src/locale/ru/_lib/formatDistance/index.js
new file mode 100644
index 0000000..686777d
--- /dev/null
+++ b/date-fns/src/locale/ru/_lib/formatDistance/index.js
@@ -0,0 +1,247 @@
+function declension(scheme, count) {
+ // scheme for count=1 exists
+ if (scheme.one !== undefined && count === 1) {
+ return scheme.one
+ }
+
+ var rem10 = count % 10
+ var rem100 = count % 100
+
+ // 1, 21, 31, ...
+ if (rem10 === 1 && rem100 !== 11) {
+ return scheme.singularNominative.replace('{{count}}', count)
+
+ // 2, 3, 4, 22, 23, 24, 32 ...
+ } else if (rem10 >= 2 && rem10 <= 4 && (rem100 < 10 || rem100 > 20)) {
+ return scheme.singularGenitive.replace('{{count}}', count)
+
+ // 5, 6, 7, 8, 9, 10, 11, ...
+ } else {
+ return scheme.pluralGenitive.replace('{{count}}', count)
+ }
+}
+
+function buildLocalizeTokenFn(scheme) {
+ return function(count, options) {
+ if (options.addSuffix) {
+ if (options.comparison > 0) {
+ if (scheme.future) {
+ return declension(scheme.future, count)
+ } else {
+ return 'через ' + declension(scheme.regular, count)
+ }
+ } else {
+ if (scheme.past) {
+ return declension(scheme.past, count)
+ } else {
+ return declension(scheme.regular, count) + ' назад'
+ }
+ }
+ } else {
+ return declension(scheme.regular, count)
+ }
+ }
+}
+
+var formatDistanceLocale = {
+ lessThanXSeconds: buildLocalizeTokenFn({
+ regular: {
+ one: 'меньше секунды',
+ singularNominative: 'меньше {{count}} секунды',
+ singularGenitive: 'меньше {{count}} секунд',
+ pluralGenitive: 'меньше {{count}} секунд'
+ },
+ future: {
+ one: 'меньше, чем через секунду',
+ singularNominative: 'меньше, чем через {{count}} секунду',
+ singularGenitive: 'меньше, чем через {{count}} секунды',
+ pluralGenitive: 'меньше, чем через {{count}} секунд'
+ }
+ }),
+
+ xSeconds: buildLocalizeTokenFn({
+ regular: {
+ singularNominative: '{{count}} секунда',
+ singularGenitive: '{{count}} секунды',
+ pluralGenitive: '{{count}} секунд'
+ },
+ past: {
+ singularNominative: '{{count}} секунду назад',
+ singularGenitive: '{{count}} секунды назад',
+ pluralGenitive: '{{count}} секунд назад'
+ },
+ future: {
+ singularNominative: 'через {{count}} секунду',
+ singularGenitive: 'через {{count}} секунды',
+ pluralGenitive: 'через {{count}} секунд'
+ }
+ }),
+
+ halfAMinute: function(_, options) {
+ if (options.addSuffix) {
+ if (options.comparison > 0) {
+ return 'через полминуты'
+ } else {
+ return 'полминуты назад'
+ }
+ }
+
+ return 'полминуты'
+ },
+
+ lessThanXMinutes: buildLocalizeTokenFn({
+ regular: {
+ one: 'меньше минуты',
+ singularNominative: 'меньше {{count}} минуты',
+ singularGenitive: 'меньше {{count}} минут',
+ pluralGenitive: 'меньше {{count}} минут'
+ },
+ future: {
+ one: 'меньше, чем через минуту',
+ singularNominative: 'меньше, чем через {{count}} минуту',
+ singularGenitive: 'меньше, чем через {{count}} минуты',
+ pluralGenitive: 'меньше, чем через {{count}} минут'
+ }
+ }),
+
+ xMinutes: buildLocalizeTokenFn({
+ regular: {
+ singularNominative: '{{count}} минута',
+ singularGenitive: '{{count}} минуты',
+ pluralGenitive: '{{count}} минут'
+ },
+ past: {
+ singularNominative: '{{count}} минуту назад',
+ singularGenitive: '{{count}} минуты назад',
+ pluralGenitive: '{{count}} минут назад'
+ },
+ future: {
+ singularNominative: 'через {{count}} минуту',
+ singularGenitive: 'через {{count}} минуты',
+ pluralGenitive: 'через {{count}} минут'
+ }
+ }),
+
+ aboutXHours: buildLocalizeTokenFn({
+ regular: {
+ singularNominative: 'около {{count}} часа',
+ singularGenitive: 'около {{count}} часов',
+ pluralGenitive: 'около {{count}} часов'
+ },
+ future: {
+ singularNominative: 'приблизительно через {{count}} час',
+ singularGenitive: 'приблизительно через {{count}} часа',
+ pluralGenitive: 'приблизительно через {{count}} часов'
+ }
+ }),
+
+ xHours: buildLocalizeTokenFn({
+ regular: {
+ singularNominative: '{{count}} час',
+ singularGenitive: '{{count}} часа',
+ pluralGenitive: '{{count}} часов'
+ }
+ }),
+
+ xDays: buildLocalizeTokenFn({
+ regular: {
+ singularNominative: '{{count}} день',
+ singularGenitive: '{{count}} дня',
+ pluralGenitive: '{{count}} дней'
+ }
+ }),
+
+ aboutXWeeks: buildLocalizeTokenFn({
+ regular: {
+ singularNominative: 'около {{count}} недели',
+ singularGenitive: 'около {{count}} недель',
+ pluralGenitive: 'около {{count}} недель'
+ },
+ future: {
+ singularNominative: 'приблизительно через {{count}} неделю',
+ singularGenitive: 'приблизительно через {{count}} недели',
+ pluralGenitive: 'приблизительно через {{count}} недель'
+ }
+ }),
+
+ xWeeks: buildLocalizeTokenFn({
+ regular: {
+ singularNominative: '{{count}} неделя',
+ singularGenitive: '{{count}} недели',
+ pluralGenitive: '{{count}} недель'
+ }
+ }),
+
+ aboutXMonths: buildLocalizeTokenFn({
+ regular: {
+ singularNominative: 'около {{count}} месяца',
+ singularGenitive: 'около {{count}} месяцев',
+ pluralGenitive: 'около {{count}} месяцев'
+ },
+ future: {
+ singularNominative: 'приблизительно через {{count}} месяц',
+ singularGenitive: 'приблизительно через {{count}} месяца',
+ pluralGenitive: 'приблизительно через {{count}} месяцев'
+ }
+ }),
+
+ xMonths: buildLocalizeTokenFn({
+ regular: {
+ singularNominative: '{{count}} месяц',
+ singularGenitive: '{{count}} месяца',
+ pluralGenitive: '{{count}} месяцев'
+ }
+ }),
+
+ aboutXYears: buildLocalizeTokenFn({
+ regular: {
+ singularNominative: 'около {{count}} года',
+ singularGenitive: 'около {{count}} лет',
+ pluralGenitive: 'около {{count}} лет'
+ },
+ future: {
+ singularNominative: 'приблизительно через {{count}} год',
+ singularGenitive: 'приблизительно через {{count}} года',
+ pluralGenitive: 'приблизительно через {{count}} лет'
+ }
+ }),
+
+ xYears: buildLocalizeTokenFn({
+ regular: {
+ singularNominative: '{{count}} год',
+ singularGenitive: '{{count}} года',
+ pluralGenitive: '{{count}} лет'
+ }
+ }),
+
+ overXYears: buildLocalizeTokenFn({
+ regular: {
+ singularNominative: 'больше {{count}} года',
+ singularGenitive: 'больше {{count}} лет',
+ pluralGenitive: 'больше {{count}} лет'
+ },
+ future: {
+ singularNominative: 'больше, чем через {{count}} год',
+ singularGenitive: 'больше, чем через {{count}} года',
+ pluralGenitive: 'больше, чем через {{count}} лет'
+ }
+ }),
+
+ almostXYears: buildLocalizeTokenFn({
+ regular: {
+ singularNominative: 'почти {{count}} год',
+ singularGenitive: 'почти {{count}} года',
+ pluralGenitive: 'почти {{count}} лет'
+ },
+ future: {
+ singularNominative: 'почти через {{count}} год',
+ singularGenitive: 'почти через {{count}} года',
+ pluralGenitive: 'почти через {{count}} лет'
+ }
+ })
+}
+
+export default function formatDistance(token, count, options) {
+ options = options || {}
+ return formatDistanceLocale[token](count, options)
+}
diff --git a/date-fns/src/locale/ru/_lib/formatLong/index.js b/date-fns/src/locale/ru/_lib/formatLong/index.js
new file mode 100644
index 0000000..e3ac8dd
--- /dev/null
+++ b/date-fns/src/locale/ru/_lib/formatLong/index.js
@@ -0,0 +1,38 @@
+import buildFormatLongFn from '../../../_lib/buildFormatLongFn/index'
+
+var dateFormats = {
+ full: "EEEE, d MMMM y 'г.'",
+ long: "d MMMM y 'г.'",
+ medium: "d MMM y 'г.'",
+ short: 'dd.MM.y'
+}
+
+var timeFormats = {
+ full: 'H:mm:ss zzzz',
+ long: 'H:mm:ss z',
+ medium: 'H:mm:ss',
+ short: 'H:mm'
+}
+
+var dateTimeFormats = {
+ any: '{{date}}, {{time}}'
+}
+
+var formatLong = {
+ date: buildFormatLongFn({
+ formats: dateFormats,
+ defaultWidth: 'full'
+ }),
+
+ time: buildFormatLongFn({
+ formats: timeFormats,
+ defaultWidth: 'full'
+ }),
+
+ dateTime: buildFormatLongFn({
+ formats: dateTimeFormats,
+ defaultWidth: 'any'
+ })
+}
+
+export default formatLong
diff --git a/date-fns/src/locale/ru/_lib/formatRelative/index.js b/date-fns/src/locale/ru/_lib/formatRelative/index.js
new file mode 100644
index 0000000..ad4dbcf
--- /dev/null
+++ b/date-fns/src/locale/ru/_lib/formatRelative/index.js
@@ -0,0 +1,88 @@
+import isSameUTCWeek from '../../../../_lib/isSameUTCWeek/index'
+
+var accusativeWeekdays = [
+ 'воскресенье',
+ 'понедельник',
+ 'вторник',
+ 'среду',
+ 'четверг',
+ 'пятницу',
+ 'субботу'
+]
+
+function lastWeek(day) {
+ var weekday = accusativeWeekdays[day]
+
+ switch (day) {
+ case 0:
+ return "'в прошлое " + weekday + " в' p"
+ case 1:
+ case 2:
+ case 4:
+ return "'в прошлый " + weekday + " в' p"
+ case 3:
+ case 5:
+ case 6:
+ return "'в прошлую " + weekday + " в' p"
+ }
+}
+
+function thisWeek(day) {
+ var weekday = accusativeWeekdays[day]
+
+ if (day === 2 /* Tue */) {
+ return "'во " + weekday + " в' p"
+ } else {
+ return "'в " + weekday + " в' p"
+ }
+}
+
+function nextWeek(day) {
+ var weekday = accusativeWeekdays[day]
+
+ switch (day) {
+ case 0:
+ return "'в следующее " + weekday + " в' p"
+ case 1:
+ case 2:
+ case 4:
+ return "'в следующий " + weekday + " в' p"
+ case 3:
+ case 5:
+ case 6:
+ return "'в следующую " + weekday + " в' p"
+ }
+}
+
+var formatRelativeLocale = {
+ lastWeek: function(date, baseDate, options) {
+ var day = date.getUTCDay()
+ if (isSameUTCWeek(date, baseDate, options)) {
+ return thisWeek(day)
+ } else {
+ return lastWeek(day)
+ }
+ },
+ yesterday: "'вчера в' p",
+ today: "'сегодня в' p",
+ tomorrow: "'завтра в' p",
+ nextWeek: function(date, baseDate, options) {
+ var day = date.getUTCDay()
+ if (isSameUTCWeek(date, baseDate, options)) {
+ return thisWeek(day)
+ } else {
+ return nextWeek(day)
+ }
+ },
+ other: 'P'
+}
+
+export default function formatRelative(token, date, baseDate, options) {
+ var format = formatRelativeLocale[token]
+
+ if (typeof format === 'function') {
+ return format(date, baseDate, options)
+ }
+
+ return format
+}
diff --git a/date-fns/src/locale/ru/_lib/localize/index.js b/date-fns/src/locale/ru/_lib/localize/index.js
new file mode 100644
index 0000000..86ef3b0
--- /dev/null
+++ b/date-fns/src/locale/ru/_lib/localize/index.js
@@ -0,0 +1,210 @@
+import buildLocalizeFn from '../../../_lib/buildLocalizeFn/index'
+
+var eraValues = {
+ narrow: ['до н.э.', 'н.э.'],
+ abbreviated: ['до н. э.', 'н. э.'],
+ wide: ['до нашей эры', 'нашей эры']
+}
+
+var quarterValues = {
+ narrow: ['1', '2', '3', '4'],
+ abbreviated: ['1-й кв.', '2-й кв.', '3-й кв.', '4-й кв.'],
+ wide: ['1-й квартал', '2-й квартал', '3-й квартал', '4-й квартал']
+}
+
+var monthValues = {
+ narrow: ['Я', 'Ф', 'М', 'А', 'М', 'И', 'И', 'А', 'С', 'О', 'Н', 'Д'],
+ abbreviated: [
+ 'янв.',
+ 'фев.',
+ 'март',
+ 'апр.',
+ 'май',
+ 'июнь',
+ 'июль',
+ 'авг.',
+ 'сент.',
+ 'окт.',
+ 'нояб.',
+ 'дек.'
+ ],
+ wide: [
+ 'январь',
+ 'февраль',
+ 'март',
+ 'апрель',
+ 'май',
+ 'июнь',
+ 'июль',
+ 'август',
+ 'сентябрь',
+ 'октябрь',
+ 'ноябрь',
+ 'декабрь'
+ ]
+}
+var formattingMonthValues = {
+ narrow: ['Я', 'Ф', 'М', 'А', 'М', 'И', 'И', 'А', 'С', 'О', 'Н', 'Д'],
+ abbreviated: [
+ 'янв.',
+ 'фев.',
+ 'мар.',
+ 'апр.',
+ 'мая',
+ 'июн.',
+ 'июл.',
+ 'авг.',
+ 'сент.',
+ 'окт.',
+ 'нояб.',
+ 'дек.'
+ ],
+ wide: [
+ 'января',
+ 'февраля',
+ 'марта',
+ 'апреля',
+ 'мая',
+ 'июня',
+ 'июля',
+ 'августа',
+ 'сентября',
+ 'октября',
+ 'ноября',
+ 'декабря'
+ ]
+}
+
+var dayValues = {
+ narrow: ['В', 'П', 'В', 'С', 'Ч', 'П', 'С'],
+ short: ['вс', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'],
+ abbreviated: ['вск', 'пнд', 'втр', 'срд', 'чтв', 'птн', 'суб'],
+ wide: [
+ 'воскресенье',
+ 'понедельник',
+ 'вторник',
+ 'среда',
+ 'четверг',
+ 'пятница',
+ 'суббота'
+ ]
+}
+
+var dayPeriodValues = {
+ narrow: {
+ am: 'ДП',
+ pm: 'ПП',
+ midnight: 'полн.',
+ noon: 'полд.',
+ morning: 'утро',
+ afternoon: 'день',
+ evening: 'веч.',
+ night: 'ночь'
+ },
+ abbreviated: {
+ am: 'ДП',
+ pm: 'ПП',
+ midnight: 'полн.',
+ noon: 'полд.',
+ morning: 'утро',
+ afternoon: 'день',
+ evening: 'веч.',
+ night: 'ночь'
+ },
+ wide: {
+ am: 'ДП',
+ pm: 'ПП',
+ midnight: 'полночь',
+ noon: 'полдень',
+ morning: 'утро',
+ afternoon: 'день',
+ evening: 'вечер',
+ night: 'ночь'
+ }
+}
+var formattingDayPeriodValues = {
+ narrow: {
+ am: 'ДП',
+ pm: 'ПП',
+ midnight: 'полн.',
+ noon: 'полд.',
+ morning: 'утра',
+ afternoon: 'дня',
+ evening: 'веч.',
+ night: 'ночи'
+ },
+ abbreviated: {
+ am: 'ДП',
+ pm: 'ПП',
+ midnight: 'полн.',
+ noon: 'полд.',
+ morning: 'утра',
+ afternoon: 'дня',
+ evening: 'веч.',
+ night: 'ночи'
+ },
+ wide: {
+ am: 'ДП',
+ pm: 'ПП',
+ midnight: 'полночь',
+ noon: 'полдень',
+ morning: 'утра',
+ afternoon: 'дня',
+ evening: 'вечера',
+ night: 'ночи'
+ }
+}
+
+function ordinalNumber(dirtyNumber, dirtyOptions) {
+ var options = dirtyOptions || {}
+ var unit = String(options.unit)
+ var suffix
+
+ if (unit === 'date') {
+ suffix = '-е'
+ } else if (unit === 'week' || unit === 'minute' || unit === 'second') {
+ suffix = '-я'
+ } else {
+ suffix = '-й'
+ }
+
+ return dirtyNumber + suffix
+}
+
+var localize = {
+ ordinalNumber: ordinalNumber,
+
+ era: buildLocalizeFn({
+ values: eraValues,
+ defaultWidth: 'wide'
+ }),
+
+ quarter: buildLocalizeFn({
+ values: quarterValues,
+ defaultWidth: 'wide',
+ argumentCallback: function(quarter) {
+ return Number(quarter) - 1
+ }
+ }),
+
+ month: buildLocalizeFn({
+ values: monthValues,
+ defaultWidth: 'wide',
+ formattingValues: formattingMonthValues,
+ defaultFormattingWidth: 'wide'
+ }),
+
+ day: buildLocalizeFn({
+ values: dayValues,
+ defaultWidth: 'wide'
+ }),
+
+ dayPeriod: buildLocalizeFn({
+ values: dayPeriodValues,
+ defaultWidth: 'any',
+ formattingValues: formattingDayPeriodValues,
+ defaultFormattingWidth: 'wide'
+ })
+}
+
+export default localize
diff --git a/date-fns/src/locale/ru/_lib/match/index.js b/date-fns/src/locale/ru/_lib/match/index.js
new file mode 100644
index 0000000..3b7425a
--- /dev/null
+++ b/date-fns/src/locale/ru/_lib/match/index.js
@@ -0,0 +1,138 @@
+import buildMatchPatternFn from '../../../_lib/buildMatchPatternFn/index'
+import buildMatchFn from '../../../_lib/buildMatchFn/index'
+
+var matchOrdinalNumberPattern = /^(\d+)(-?(е|я|й|ое|ье|ая|ья|ый|ой|ий|ый))?/i
+var parseOrdinalNumberPattern = /\d+/i
+
+var matchEraPatterns = {
+ narrow: /^((до )?н\.?\s?э\.?)/i,
+ abbreviated: /^((до )?н\.?\s?э\.?)/i,
+ wide: /^(до нашей эры|нашей эры|наша эра)/i
+}
+var parseEraPatterns = {
+ any: [/^д/i, /^н/i]
+}
+
+var matchQuarterPatterns = {
+ narrow: /^[1234]/i,
+ abbreviated: /^[1234](-?[ыои]?й?)? кв.?/i,
+ wide: /^[1234](-?[ыои]?й?)? квартал/i
+}
+var parseQuarterPatterns = {
+ any: [/1/i, /2/i, /3/i, /4/i]
+}
+
+var matchMonthPatterns = {
+ narrow: /^[яфмаисонд]/i,
+ abbreviated: /^(янв|фев|март?|апр|ма[йя]|июн[ья]?|июл[ья]?|авг|сент?|окт|нояб?|дек)\.?/i,
+ wide: /^(январ[ья]|феврал[ья]|марта?|апрел[ья]|ма[йя]|июн[ья]|июл[ья]|августа?|сентябр[ья]|октябр[ья]|октябр[ья]|ноябр[ья]|декабр[ья])/i
+}
+var parseMonthPatterns = {
+ narrow: [
+ /^я/i,
+ /^ф/i,
+ /^м/i,
+ /^а/i,
+ /^м/i,
+ /^и/i,
+ /^и/i,
+ /^а/i,
+ /^с/i,
+ /^о/i,
+ /^н/i,
+ /^я/i
+ ],
+ any: [
+ /^я/i,
+ /^ф/i,
+ /^мар/i,
+ /^ап/i,
+ /^ма[йя]/i,
+ /^июн/i,
+ /^июл/i,
+ /^ав/i,
+ /^с/i,
+ /^о/i,
+ /^н/i,
+ /^д/i
+ ]
+}
+
+var matchDayPatterns = {
+ narrow: /^[впсч]/i,
+ short: /^(вс|во|пн|по|вт|ср|чт|че|пт|пя|сб|су)\.?/i,
+ abbreviated: /^(вск|вос|пнд|пон|втр|вто|срд|сре|чтв|чет|птн|пят|суб).?/i,
+ wide: /^(воскресень[ея]|понедельника?|вторника?|сред[аы]|четверга?|пятниц[аы]|суббот[аы])/i
+}
+var parseDayPatterns = {
+ narrow: [/^в/i, /^п/i, /^в/i, /^с/i, /^ч/i, /^п/i, /^с/i],
+ any: [/^в[ос]/i, /^п[он]/i, /^в/i, /^ср/i, /^ч/i, /^п[ят]/i, /^с[уб]/i]
+}
+
+var matchDayPeriodPatterns = {
+ narrow: /^([дп]п|полн\.?|полд\.?|утр[оа]|день|дня|веч\.?|ноч[ьи])/i,
+ abbreviated: /^([дп]п|полн\.?|полд\.?|утр[оа]|день|дня|веч\.?|ноч[ьи])/i,
+ wide: /^([дп]п|полночь|полдень|утр[оа]|день|дня|вечера?|ноч[ьи])/i
+}
+var parseDayPeriodPatterns = {
+ any: {
+ am: /^дп/i,
+ pm: /^пп/i,
+ midnight: /^полн/i,
+ noon: /^полд/i,
+ morning: /^у/i,
+ afternoon: /^д[ен]/i,
+ evening: /^в/i,
+ night: /^н/i
+ }
+}
+
+var match = {
+ ordinalNumber: buildMatchPatternFn({
+ matchPattern: matchOrdinalNumberPattern,
+ parsePattern: parseOrdinalNumberPattern,
+ valueCallback: function(value) {
+ return parseInt(value, 10)
+ }
+ }),
+
+ era: buildMatchFn({
+ matchPatterns: matchEraPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseEraPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ quarter: buildMatchFn({
+ matchPatterns: matchQuarterPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseQuarterPatterns,
+ defaultParseWidth: 'any',
+ valueCallback: function(index) {
+ return index + 1
+ }
+ }),
+
+ month: buildMatchFn({
+ matchPatterns: matchMonthPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseMonthPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ day: buildMatchFn({
+ matchPatterns: matchDayPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseDayPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ dayPeriod: buildMatchFn({
+ matchPatterns: matchDayPeriodPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseDayPeriodPatterns,
+ defaultParseWidth: 'any'
+ })
+}
+
+export default match
diff --git a/date-fns/src/locale/ru/index.d.ts b/date-fns/src/locale/ru/index.d.ts
new file mode 100644
index 0000000..1a7f74f
--- /dev/null
+++ b/date-fns/src/locale/ru/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { ru } from 'date-fns/locale'
+export default ru
diff --git a/date-fns/src/locale/ru/index.js b/date-fns/src/locale/ru/index.js
new file mode 100644
index 0000000..7271c7b
--- /dev/null
+++ b/date-fns/src/locale/ru/index.js
@@ -0,0 +1,29 @@
+import formatDistance from './_lib/formatDistance/index'
+import formatLong from './_lib/formatLong/index'
+import formatRelative from './_lib/formatRelative/index'
+import localize from './_lib/localize/index'
+import match from './_lib/match/index'
+
+/**
+ * @type {Locale}
+ * @category Locales
+ * @summary Russian locale.
+ * @language Russian
+ * @iso-639-2 rus
+ * @author Sasha Koss [@kossnocorp]{@link https://github.com/kossnocorp}
+ * @author Lesha Koss [@leshakoss]{@link https://github.com/leshakoss}
+ */
+var locale = {
+ code: 'ru',
+ formatDistance: formatDistance,
+ formatLong: formatLong,
+ formatRelative: formatRelative,
+ localize: localize,
+ match: match,
+ options: {
+ weekStartsOn: 1 /* Monday */,
+ firstWeekContainsDate: 1
+ }
+}
+
+export default locale
diff --git a/date-fns/src/locale/ru/index.js.flow b/date-fns/src/locale/ru/index.js.flow
new file mode 100644
index 0000000..b9dfe66
--- /dev/null
+++ b/date-fns/src/locale/ru/index.js.flow
@@ -0,0 +1,35 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+declare module.exports: Locale
diff --git a/date-fns/src/locale/ru/snapshot.md b/date-fns/src/locale/ru/snapshot.md
new file mode 100644
index 0000000..496d151
--- /dev/null
+++ b/date-fns/src/locale/ru/snapshot.md
@@ -0,0 +1,304 @@
+# Russian (ru) locale
+
+## `format` and `parse`
+
+| Title | Token string | Date | `format` result | `parse` result |
+| ------------------------------- | ------------ | ------------------------ | ----------------------------------------------- | ------------------------ |
+| Calendar year | yo | 1987-02-11T12:13:14.015Z | 1987-й | 1987-01-01T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 5-й | 0005-01-01T00:00:00.000Z |
+| Local week-numbering year | Yo | 1987-02-11T12:13:14.015Z | 1987-й | 1986-12-29T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 5-й | 0004-12-27T00:00:00.000Z |
+| Quarter (formatting) | Qo | 2019-01-01T12:13:14.015Z | 1-й | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2-й | 2019-04-01T00:00:00.000Z |
+| | QQQ | 2019-01-01T12:13:14.015Z | 1-й кв. | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2-й кв. | 2019-04-01T00:00:00.000Z |
+| | QQQQ | 2019-01-01T12:13:14.015Z | 1-й квартал | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2-й квартал | 2019-04-01T00:00:00.000Z |
+| | QQQQQ | 2019-01-01T12:13:14.015Z | 1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2 | 2019-04-01T00:00:00.000Z |
+| Quarter (stand-alone) | qo | 2019-01-01T12:13:14.015Z | 1-й | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2-й | 2019-04-01T00:00:00.000Z |
+| | qqq | 2019-01-01T12:13:14.015Z | 1-й кв. | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2-й кв. | 2019-04-01T00:00:00.000Z |
+| | qqqq | 2019-01-01T12:13:14.015Z | 1-й квартал | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2-й квартал | 2019-04-01T00:00:00.000Z |
+| Month (formatting) | Mo | 2019-02-11T12:13:14.015Z | 2-й | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7-й | 2019-07-01T00:00:00.000Z |
+| | MMM | 2019-02-11T12:13:14.015Z | фев. | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | июл. | 2019-07-01T00:00:00.000Z |
+| | MMMM | 2019-02-11T12:13:14.015Z | февраля | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | июля | 2019-07-01T00:00:00.000Z |
+| | MMMMM | 2019-02-11T12:13:14.015Z | Ф | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | И | 2019-06-01T00:00:00.000Z |
+| Month (stand-alone) | Lo | 2019-02-11T12:13:14.015Z | 2-й | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7-й | 2019-07-01T00:00:00.000Z |
+| | LLL | 2019-02-11T12:13:14.015Z | фев. | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | июль | 2019-07-01T00:00:00.000Z |
+| | LLLL | 2019-02-11T12:13:14.015Z | февраль | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | июль | 2019-07-01T00:00:00.000Z |
+| | LLLLL | 2019-02-11T12:13:14.015Z | Ф | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | И | 2019-06-01T00:00:00.000Z |
+| Local week of year | wo | 2019-01-01T12:13:14.015Z | 1-я | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48-я | 2019-11-25T00:00:00.000Z |
+| ISO week of year | Io | 2019-01-01T12:13:14.015Z | 1-я | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48-я | 2019-11-25T00:00:00.000Z |
+| Day of month | do | 2019-02-11T12:13:14.015Z | 11-е | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-28T12:13:14.015Z | 28-е | 2019-02-28T00:00:00.000Z |
+| Day of year | Do | 2019-02-11T12:13:14.015Z | 42-й | 2019-02-11T00:00:00.000Z |
+| | | 2019-12-31T12:13:14.015Z | 365-й | 2019-12-31T00:00:00.000Z |
+| Day of week (formatting) | E | 2019-02-11T12:13:14.015Z | пнд | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | птн | 2019-02-15T00:00:00.000Z |
+| | EE | 2019-02-11T12:13:14.015Z | пнд | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | птн | 2019-02-15T00:00:00.000Z |
+| | EEE | 2019-02-11T12:13:14.015Z | пнд | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | птн | 2019-02-15T00:00:00.000Z |
+| | EEEE | 2019-02-11T12:13:14.015Z | понедельник | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | пятница | 2019-02-15T00:00:00.000Z |
+| | EEEEE | 2019-02-11T12:13:14.015Z | П | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | П | 2019-02-11T00:00:00.000Z |
+| | EEEEEE | 2019-02-11T12:13:14.015Z | пн | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | пт | 2019-02-15T00:00:00.000Z |
+| ISO day of week (formatting) | io | 2019-02-11T12:13:14.015Z | 1-й | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5-й | 2019-02-15T00:00:00.000Z |
+| | iii | 2019-02-11T12:13:14.015Z | пнд | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | птн | 2019-02-15T00:00:00.000Z |
+| | iiii | 2019-02-11T12:13:14.015Z | понедельник | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | пятница | 2019-02-15T00:00:00.000Z |
+| | iiiii | 2019-02-11T12:13:14.015Z | П | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | П | 2019-02-11T00:00:00.000Z |
+| | iiiiii | 2019-02-11T12:13:14.015Z | пн | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | пт | 2019-02-15T00:00:00.000Z |
+| Local day of week (formatting) | eo | 2019-02-11T12:13:14.015Z | 1-й | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5-й | 2019-02-15T00:00:00.000Z |
+| | eee | 2019-02-11T12:13:14.015Z | пнд | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | птн | 2019-02-15T00:00:00.000Z |
+| | eeee | 2019-02-11T12:13:14.015Z | понедельник | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | пятница | 2019-02-15T00:00:00.000Z |
+| | eeeee | 2019-02-11T12:13:14.015Z | П | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | П | 2019-02-11T00:00:00.000Z |
+| | eeeeee | 2019-02-11T12:13:14.015Z | пн | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | пт | 2019-02-15T00:00:00.000Z |
+| Local day of week (stand-alone) | co | 2019-02-11T12:13:14.015Z | 1-й | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5-й | 2019-02-15T00:00:00.000Z |
+| | ccc | 2019-02-11T12:13:14.015Z | пнд | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | птн | 2019-02-15T00:00:00.000Z |
+| | cccc | 2019-02-11T12:13:14.015Z | понедельник | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | пятница | 2019-02-15T00:00:00.000Z |
+| | ccccc | 2019-02-11T12:13:14.015Z | П | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | П | 2019-02-11T00:00:00.000Z |
+| | cccccc | 2019-02-11T12:13:14.015Z | пн | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | пт | 2019-02-15T00:00:00.000Z |
+| AM, PM | a | 2019-02-11T11:13:14.015Z | ДП | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | ПП | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | ПП | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ДП | 2019-02-11T00:00:00.000Z |
+| | aa | 2019-02-11T11:13:14.015Z | ДП | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | ПП | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | ПП | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ДП | 2019-02-11T00:00:00.000Z |
+| | aaa | 2019-02-11T11:13:14.015Z | дп | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | пп | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | пп | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | дп | 2019-02-11T00:00:00.000Z |
+| | aaaa | 2019-02-11T11:13:14.015Z | ДП | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | ПП | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | ПП | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ДП | 2019-02-11T00:00:00.000Z |
+| | aaaaa | 2019-02-11T11:13:14.015Z | ДП | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | ПП | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | ПП | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ДП | 2019-02-11T00:00:00.000Z |
+| AM, PM, noon, midnight | b | 2019-02-11T11:13:14.015Z | ДП | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | ПП | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | ПП | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ДП | 2019-02-11T00:00:00.000Z |
+| | bb | 2019-02-11T11:13:14.015Z | ДП | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | ПП | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | ПП | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ДП | 2019-02-11T00:00:00.000Z |
+| | bbb | 2019-02-11T11:13:14.015Z | дп | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | пп | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | пп | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | дп | 2019-02-11T00:00:00.000Z |
+| | bbbb | 2019-02-11T11:13:14.015Z | ДП | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | ПП | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | ПП | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ДП | 2019-02-11T00:00:00.000Z |
+| | bbbbb | 2019-02-11T11:13:14.015Z | ДП | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | ПП | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | ПП | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ДП | 2019-02-11T00:00:00.000Z |
+| Flexible day period | B | 2019-02-11T11:13:14.015Z | утра | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | дня | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | веч. | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ночи | 2019-02-11T00:00:00.000Z |
+| | BB | 2019-02-11T11:13:14.015Z | утра | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | дня | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | веч. | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ночи | 2019-02-11T00:00:00.000Z |
+| | BBB | 2019-02-11T11:13:14.015Z | утра | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | дня | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | веч. | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ночи | 2019-02-11T00:00:00.000Z |
+| | BBBB | 2019-02-11T11:13:14.015Z | утра | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | дня | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | вечера | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ночи | 2019-02-11T00:00:00.000Z |
+| | BBBBB | 2019-02-11T11:13:14.015Z | утра | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | дня | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | веч. | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ночи | 2019-02-11T00:00:00.000Z |
+| Hour [1-12] | ho | 2019-02-11T11:13:14.015Z | 11-й | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11-й | 2019-02-11T23:00:00.000Z |
+| Hour [0-23] | Ho | 2019-02-11T11:13:14.015Z | 11-й | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23-й | 2019-02-11T23:00:00.000Z |
+| Hour [0-11] | Ko | 2019-02-11T11:13:14.015Z | 11-й | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11-й | 2019-02-11T23:00:00.000Z |
+| Hour [1-24] | ko | 2019-02-11T11:13:14.015Z | 11-й | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23-й | 2019-02-11T23:00:00.000Z |
+| Minute | mo | 2019-01-01T12:01:14.015Z | 1-я | 2019-01-01T12:01:00.000Z |
+| | | 2019-04-01T12:55:14.015Z | 55-я | 2019-04-01T12:55:00.000Z |
+| Second | so | 2019-01-01T12:13:01.015Z | 1-я | 2019-01-01T12:13:01.000Z |
+| | | 2019-04-01T12:13:55.015Z | 55-я | 2019-04-01T12:13:55.000Z |
+| Long localized date | P | 1987-02-11T12:13:14.015Z | 11.02.1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29.05.1453 | 1453-05-29T00:00:00.000Z |
+| | PP | 1987-02-11T12:13:14.015Z | 11 фев. 1987 г. | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 мая 1453 г. | 1453-05-29T00:00:00.000Z |
+| | PPP | 1987-02-11T12:13:14.015Z | 11 февраля 1987 г. | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 мая 1453 г. | 1453-05-29T00:00:00.000Z |
+| | PPPP | 1987-02-11T12:13:14.015Z | среда, 11 февраля 1987 г. | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | воскресенье, 29 мая 1453 г. | 1453-05-29T00:00:00.000Z |
+| Long localized time | p | 1987-02-11T12:13:14.015Z | 12:13 | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 23:59 | 1453-05-29T23:59:00.000Z |
+| | pp | 1987-02-11T12:13:14.015Z | 12:13:14 | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 | 1453-05-29T23:59:59.000Z |
+| | ppp | 1987-02-11T12:13:14.015Z | 12:13:14 GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 GMT+0 | Errored |
+| | pppp | 1987-02-11T12:13:14.015Z | 12:13:14 GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 GMT+00:00 | Errored |
+| Combination of date and time | Pp | 1987-02-11T12:13:14.015Z | 11.02.1987, 12:13 | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29.05.1453, 23:59 | 1453-05-29T23:59:00.000Z |
+| | PPpp | 1987-02-11T12:13:14.015Z | 11 фев. 1987 г., 12:13:14 | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 мая 1453 г., 23:59:59 | 1453-05-29T23:59:59.000Z |
+| | PPPppp | 1987-02-11T12:13:14.015Z | 11 февраля 1987 г., 12:13:14 GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 29 мая 1453 г., 23:59:59 GMT+0 | Errored |
+| | PPPPpppp | 1987-02-11T12:13:14.015Z | среда, 11 февраля 1987 г., 12:13:14 GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | воскресенье, 29 мая 1453 г., 23:59:59 GMT+00:00 | Errored |
+
+## `formatDistance`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `includeSeconds: true` | `addSuffix: true` |
+| ------------------------ | -------------- | ---------------------- | ---------------------------- |
+| 2006-01-01T00:00:00.000Z | около 6 лет | около 6 лет | приблизительно через 6 лет |
+| 2005-01-01T00:00:00.000Z | около 5 лет | около 5 лет | приблизительно через 5 лет |
+| 2004-01-01T00:00:00.000Z | около 4 лет | около 4 лет | приблизительно через 4 года |
+| 2003-01-01T00:00:00.000Z | около 3 лет | около 3 лет | приблизительно через 3 года |
+| 2002-01-01T00:00:00.000Z | около 2 лет | около 2 лет | приблизительно через 2 года |
+| 2001-06-01T00:00:00.000Z | больше 1 года | больше 1 года | больше, чем через 1 год |
+| 2001-02-01T00:00:00.000Z | около 1 года | около 1 года | приблизительно через 1 год |
+| 2001-01-01T00:00:00.000Z | около 1 года | около 1 года | приблизительно через 1 год |
+| 2000-06-01T00:00:00.000Z | 5 месяцев | 5 месяцев | через 5 месяцев |
+| 2000-03-01T00:00:00.000Z | 2 месяца | 2 месяца | через 2 месяца |
+| 2000-02-01T00:00:00.000Z | около 1 месяца | около 1 месяца | приблизительно через 1 месяц |
+| 2000-01-15T00:00:00.000Z | 14 дней | 14 дней | через 14 дней |
+| 2000-01-02T00:00:00.000Z | 1 день | 1 день | через 1 день |
+| 2000-01-01T06:00:00.000Z | около 6 часов | около 6 часов | приблизительно через 6 часов |
+| 2000-01-01T01:00:00.000Z | около 1 часа | около 1 часа | приблизительно через 1 час |
+| 2000-01-01T00:45:00.000Z | около 1 часа | около 1 часа | приблизительно через 1 час |
+| 2000-01-01T00:30:00.000Z | 30 минут | 30 минут | через 30 минут |
+| 2000-01-01T00:15:00.000Z | 15 минут | 15 минут | через 15 минут |
+| 2000-01-01T00:01:00.000Z | 1 минута | 1 минута | через 1 минуту |
+| 2000-01-01T00:00:25.000Z | меньше минуты | полминуты | меньше, чем через минуту |
+| 2000-01-01T00:00:15.000Z | меньше минуты | меньше 20 секунд | меньше, чем через минуту |
+| 2000-01-01T00:00:05.000Z | меньше минуты | меньше 10 секунд | меньше, чем через минуту |
+| 2000-01-01T00:00:00.000Z | меньше минуты | меньше 5 секунд | меньше минуты назад |
+| 1999-12-31T23:59:55.000Z | меньше минуты | меньше 10 секунд | меньше минуты назад |
+| 1999-12-31T23:59:45.000Z | меньше минуты | меньше 20 секунд | меньше минуты назад |
+| 1999-12-31T23:59:35.000Z | меньше минуты | полминуты | меньше минуты назад |
+| 1999-12-31T23:59:00.000Z | 1 минута | 1 минута | 1 минуту назад |
+| 1999-12-31T23:45:00.000Z | 15 минут | 15 минут | 15 минут назад |
+| 1999-12-31T23:30:00.000Z | 30 минут | 30 минут | 30 минут назад |
+| 1999-12-31T23:15:00.000Z | около 1 часа | около 1 часа | около 1 часа назад |
+| 1999-12-31T23:00:00.000Z | около 1 часа | около 1 часа | около 1 часа назад |
+| 1999-12-31T18:00:00.000Z | около 6 часов | около 6 часов | около 6 часов назад |
+| 1999-12-30T00:00:00.000Z | 2 дня | 2 дня | 2 дня назад |
+| 1999-12-15T00:00:00.000Z | 17 дней | 17 дней | 17 дней назад |
+| 1999-12-01T00:00:00.000Z | около 1 месяца | около 1 месяца | около 1 месяца назад |
+| 1999-11-01T00:00:00.000Z | 2 месяца | 2 месяца | 2 месяца назад |
+| 1999-06-01T00:00:00.000Z | 7 месяцев | 7 месяцев | 7 месяцев назад |
+| 1999-01-01T00:00:00.000Z | около 1 года | около 1 года | около 1 года назад |
+| 1998-12-01T00:00:00.000Z | около 1 года | около 1 года | около 1 года назад |
+| 1998-06-01T00:00:00.000Z | больше 1 года | больше 1 года | больше 1 года назад |
+| 1998-01-01T00:00:00.000Z | около 2 лет | около 2 лет | около 2 лет назад |
+| 1997-01-01T00:00:00.000Z | около 3 лет | около 3 лет | около 3 лет назад |
+| 1996-01-01T00:00:00.000Z | около 4 лет | около 4 лет | около 4 лет назад |
+| 1995-01-01T00:00:00.000Z | около 5 лет | около 5 лет | около 5 лет назад |
+| 1994-01-01T00:00:00.000Z | около 6 лет | около 6 лет | около 6 лет назад |
+
+## `formatDistanceStrict`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `addSuffix: true` | With forced unit (i.e. `hour`) |
+| ------------------------ | --------- | ----------------- | ------------------------------ |
+| 2006-01-01T00:00:00.000Z | 6 лет | через 6 лет | 52608 часов |
+| 2005-01-01T00:00:00.000Z | 5 лет | через 5 лет | 43848 часов |
+| 2004-01-01T00:00:00.000Z | 4 года | через 4 года | 35064 часа |
+| 2003-01-01T00:00:00.000Z | 3 года | через 3 года | 26304 часа |
+| 2002-01-01T00:00:00.000Z | 2 года | через 2 года | 17544 часа |
+| 2001-06-01T00:00:00.000Z | 1 год | через 1 год | 12408 часов |
+| 2001-02-01T00:00:00.000Z | 1 год | через 1 год | 9528 часов |
+| 2001-01-01T00:00:00.000Z | 1 год | через 1 год | 8784 часа |
+| 2000-06-01T00:00:00.000Z | 5 месяцев | через 5 месяцев | 3648 часов |
+| 2000-03-01T00:00:00.000Z | 2 месяца | через 2 месяца | 1440 часов |
+| 2000-02-01T00:00:00.000Z | 1 месяц | через 1 месяц | 744 часа |
+| 2000-01-15T00:00:00.000Z | 14 дней | через 14 дней | 336 часов |
+| 2000-01-02T00:00:00.000Z | 1 день | через 1 день | 24 часа |
+| 2000-01-01T06:00:00.000Z | 6 часов | через 6 часов | 6 часов |
+| 2000-01-01T01:00:00.000Z | 1 час | через 1 час | 1 час |
+| 2000-01-01T00:45:00.000Z | 45 минут | через 45 минут | 1 час |
+| 2000-01-01T00:30:00.000Z | 30 минут | через 30 минут | 1 час |
+| 2000-01-01T00:15:00.000Z | 15 минут | через 15 минут | 0 часов |
+| 2000-01-01T00:01:00.000Z | 1 минута | через 1 минуту | 0 часов |
+| 2000-01-01T00:00:25.000Z | 25 секунд | через 25 секунд | 0 часов |
+| 2000-01-01T00:00:15.000Z | 15 секунд | через 15 секунд | 0 часов |
+| 2000-01-01T00:00:05.000Z | 5 секунд | через 5 секунд | 0 часов |
+| 2000-01-01T00:00:00.000Z | 0 секунд | 0 секунд назад | 0 часов |
+| 1999-12-31T23:59:55.000Z | 5 секунд | 5 секунд назад | 0 часов |
+| 1999-12-31T23:59:45.000Z | 15 секунд | 15 секунд назад | 0 часов |
+| 1999-12-31T23:59:35.000Z | 25 секунд | 25 секунд назад | 0 часов |
+| 1999-12-31T23:59:00.000Z | 1 минута | 1 минуту назад | 0 часов |
+| 1999-12-31T23:45:00.000Z | 15 минут | 15 минут назад | 0 часов |
+| 1999-12-31T23:30:00.000Z | 30 минут | 30 минут назад | 1 час |
+| 1999-12-31T23:15:00.000Z | 45 минут | 45 минут назад | 1 час |
+| 1999-12-31T23:00:00.000Z | 1 час | 1 час назад | 1 час |
+| 1999-12-31T18:00:00.000Z | 6 часов | 6 часов назад | 6 часов |
+| 1999-12-30T00:00:00.000Z | 2 дня | 2 дня назад | 48 часов |
+| 1999-12-15T00:00:00.000Z | 17 дней | 17 дней назад | 408 часов |
+| 1999-12-01T00:00:00.000Z | 1 месяц | 1 месяц назад | 744 часа |
+| 1999-11-01T00:00:00.000Z | 2 месяца | 2 месяца назад | 1464 часа |
+| 1999-06-01T00:00:00.000Z | 7 месяцев | 7 месяцев назад | 5136 часов |
+| 1999-01-01T00:00:00.000Z | 1 год | 1 год назад | 8760 часов |
+| 1998-12-01T00:00:00.000Z | 1 год | 1 год назад | 9504 часа |
+| 1998-06-01T00:00:00.000Z | 2 года | 2 года назад | 13896 часов |
+| 1998-01-01T00:00:00.000Z | 2 года | 2 года назад | 17520 часов |
+| 1997-01-01T00:00:00.000Z | 3 года | 3 года назад | 26280 часов |
+| 1996-01-01T00:00:00.000Z | 4 года | 4 года назад | 35064 часа |
+| 1995-01-01T00:00:00.000Z | 5 лет | 5 лет назад | 43824 часа |
+| 1994-01-01T00:00:00.000Z | 6 лет | 6 лет назад | 52584 часа |
+
+## `formatRelative`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result |
+| ------------------------ | ------------------------ |
+| 2000-01-10T00:00:00.000Z | 10.01.2000 |
+| 2000-01-05T00:00:00.000Z | в следующую среду в 0:00 |
+| 2000-01-02T00:00:00.000Z | завтра в 0:00 |
+| 2000-01-01T00:00:00.000Z | сегодня в 0:00 |
+| 1999-12-31T00:00:00.000Z | вчера в 0:00 |
+| 1999-12-27T00:00:00.000Z | в понедельник в 0:00 |
+| 1999-12-21T00:00:00.000Z | 21.12.1999 |
diff --git a/date-fns/src/locale/sk/_lib/formatDistance/index.js b/date-fns/src/locale/sk/_lib/formatDistance/index.js
new file mode 100644
index 0000000..cacb5b4
--- /dev/null
+++ b/date-fns/src/locale/sk/_lib/formatDistance/index.js
@@ -0,0 +1,231 @@
+// NOTE: should prolly be improved
+// https://www.unicode.org/cldr/charts/32/summary/sk.html?hide#1308
+
+function declensionGroup(scheme, count) {
+ if (count === 1) {
+ return scheme.one
+ }
+
+ if (count >= 2 && count <= 4) {
+ return scheme.twoFour
+ }
+
+ // if count === null || count === 0 || count >= 5
+ return scheme.other
+}
+
+function declension(scheme, count, time) {
+ var group = declensionGroup(scheme, count)
+ var finalText = group[time] || group
+ return finalText.replace('{{count}}', count)
+}
+
+function extractPreposition(token) {
+ var result = ['lessThan', 'about', 'over', 'almost'].filter(function(
+ preposition
+ ) {
+ return !!token.match(new RegExp('^' + preposition))
+ })
+
+ return result[0]
+}
+
+function prefixPreposition(preposition) {
+ var translation = ''
+
+ if (preposition === 'almost') {
+ translation = 'takmer'
+ }
+
+ if (preposition === 'about') {
+ translation = 'približne'
+ }
+
+ return translation.length > 0 ? translation + ' ' : ''
+}
+
+function suffixPreposition(preposition) {
+ var translation = ''
+
+ if (preposition === 'lessThan') {
+ translation = 'menej než'
+ }
+
+ if (preposition === 'over') {
+ translation = 'viac než'
+ }
+
+ return translation.length > 0 ? translation + ' ' : ''
+}
+
+function lowercaseFirstLetter(string) {
+ return string.charAt(0).toLowerCase() + string.slice(1)
+}
+
+var formatDistanceLocale = {
+ xSeconds: {
+ one: {
+ regular: 'sekunda',
+ past: 'sekundou',
+ future: 'sekundu'
+ },
+ twoFour: {
+ regular: '{{count}} sekundy',
+ past: '{{count}} sekundami',
+ future: '{{count}} sekundy'
+ },
+ other: {
+ regular: '{{count}} sekúnd',
+ past: '{{count}} sekundami',
+ future: '{{count}} sekúnd'
+ }
+ },
+
+ halfAMinute: {
+ other: {
+ regular: 'pol minúty',
+ past: 'pol minútou',
+ future: 'pol minúty'
+ }
+ },
+
+ xMinutes: {
+ one: {
+ regular: 'minúta',
+ past: 'minútou',
+ future: 'minútu'
+ },
+ twoFour: {
+ regular: '{{count}} minúty',
+ past: '{{count}} minútami',
+ future: '{{count}} minúty'
+ },
+ other: {
+ regular: '{{count}} minút',
+ past: '{{count}} minútami',
+ future: '{{count}} minút'
+ }
+ },
+
+ xHours: {
+ one: {
+ regular: 'hodina',
+ past: 'hodinou',
+ future: 'hodinu'
+ },
+ twoFour: {
+ regular: '{{count}} hodiny',
+ past: '{{count}} hodinami',
+ future: '{{count}} hodiny'
+ },
+ other: {
+ regular: '{{count}} hodín',
+ past: '{{count}} hodinami',
+ future: '{{count}} hodín'
+ }
+ },
+
+ xDays: {
+ one: {
+ regular: 'deň',
+ past: 'dňom',
+ future: 'deň'
+ },
+ twoFour: {
+ regular: '{{count}} dni',
+ past: '{{count}} dňami',
+ future: '{{count}} dni'
+ },
+ other: {
+ regular: '{{count}} dní',
+ past: '{{count}} dňami',
+ future: '{{count}} dní'
+ }
+ },
+
+ xWeeks: {
+ one: {
+ regular: 'mesiac', // TODO
+ past: 'mesiacom', // TODO
+ future: 'mesiac' // TODO
+ },
+ twoFour: {
+ regular: '{{count}} mesiace', // TODO
+ past: '{{count}} mesiacmi', // TODO
+ future: '{{count}} mesiace' // TODO
+ },
+ other: {
+ regular: '{{count}} mesiacov', // TODO
+ past: '{{count}} mesiacmi', // TODO
+ future: '{{count}} mesiacov' // TODO
+ }
+ },
+
+ xMonths: {
+ one: {
+ regular: 'mesiac',
+ past: 'mesiacom',
+ future: 'mesiac'
+ },
+ twoFour: {
+ regular: '{{count}} mesiace',
+ past: '{{count}} mesiacmi',
+ future: '{{count}} mesiace'
+ },
+ other: {
+ regular: '{{count}} mesiacov',
+ past: '{{count}} mesiacmi',
+ future: '{{count}} mesiacov'
+ }
+ },
+
+ xYears: {
+ one: {
+ regular: 'rok',
+ past: 'rokom',
+ future: 'rok'
+ },
+ twoFour: {
+ regular: '{{count}} roky',
+ past: '{{count}} rokmi',
+ future: '{{count}} roky'
+ },
+ other: {
+ regular: '{{count}} rokov',
+ past: '{{count}} rokmi',
+ future: '{{count}} rokov'
+ }
+ }
+}
+
+export default function formatDistance(token, count, options) {
+ options = options || {}
+
+ var preposition = extractPreposition(token) || ''
+ var key = lowercaseFirstLetter(token.substring(preposition.length))
+ var scheme = formatDistanceLocale[key]
+
+ if (!options.addSuffix) {
+ return (
+ prefixPreposition(preposition) +
+ suffixPreposition(preposition) +
+ declension(scheme, count, 'regular')
+ )
+ }
+
+ if (options.comparison > 0) {
+ return (
+ prefixPreposition(preposition) +
+ 'o ' +
+ suffixPreposition(preposition) +
+ declension(scheme, count, 'future')
+ )
+ } else {
+ return (
+ prefixPreposition(preposition) +
+ 'pred ' +
+ suffixPreposition(preposition) +
+ declension(scheme, count, 'past')
+ )
+ }
+}
diff --git a/date-fns/src/locale/sk/_lib/formatLong/index.js b/date-fns/src/locale/sk/_lib/formatLong/index.js
new file mode 100644
index 0000000..bca7361
--- /dev/null
+++ b/date-fns/src/locale/sk/_lib/formatLong/index.js
@@ -0,0 +1,44 @@
+import buildFormatLongFn from '../../../_lib/buildFormatLongFn/index'
+
+// https://www.unicode.org/cldr/charts/32/summary/sk.html?hide#1986
+var dateFormats = {
+ full: 'EEEE d. MMMM y',
+ long: 'd. MMMM y',
+ medium: 'd. M. y',
+ short: 'd. M. y'
+}
+
+// https://www.unicode.org/cldr/charts/32/summary/sk.html?hide#2149
+var timeFormats = {
+ full: 'H:mm:ss zzzz',
+ long: 'H:mm:ss z',
+ medium: 'H:mm:ss',
+ short: 'H:mm'
+}
+
+// https://www.unicode.org/cldr/charts/32/summary/sk.html?hide#1994
+var dateTimeFormats = {
+ full: '{{date}}, {{time}}',
+ long: '{{date}}, {{time}}',
+ medium: '{{date}}, {{time}}',
+ short: '{{date}} {{time}}'
+}
+
+var formatLong = {
+ date: buildFormatLongFn({
+ formats: dateFormats,
+ defaultWidth: 'full'
+ }),
+
+ time: buildFormatLongFn({
+ formats: timeFormats,
+ defaultWidth: 'full'
+ }),
+
+ dateTime: buildFormatLongFn({
+ formats: dateTimeFormats,
+ defaultWidth: 'full'
+ })
+}
+
+export default formatLong
diff --git a/date-fns/src/locale/sk/_lib/formatRelative/index.js b/date-fns/src/locale/sk/_lib/formatRelative/index.js
new file mode 100644
index 0000000..cbe159e
--- /dev/null
+++ b/date-fns/src/locale/sk/_lib/formatRelative/index.js
@@ -0,0 +1,81 @@
+import isSameUTCWeek from '../../../../_lib/isSameUTCWeek/index'
+
+// https://www.unicode.org/cldr/charts/32/summary/sk.html?hide#1308
+var accusativeWeekdays = [
+ 'nedeľu',
+ 'pondelok',
+ 'utorok',
+ 'stredu',
+ 'štvrtok',
+ 'piatok',
+ 'sobotu'
+]
+
+function lastWeek(day) {
+ var weekday = accusativeWeekdays[day]
+
+ switch (day) {
+ case 0: /* Sun */
+ case 3: /* Wed */
+ case 6 /* Sat */:
+ return "'minulú " + weekday + " o' p"
+ default:
+ return "'minulý' eeee 'o' p"
+ }
+}
+
+function thisWeek(day) {
+ var weekday = accusativeWeekdays[day]
+
+ if (day === 4 /* Thu */) {
+ return "'vo' eeee 'o' p"
+ } else {
+ return "'v " + weekday + " o' p"
+ }
+}
+
+function nextWeek(day) {
+ var weekday = accusativeWeekdays[day]
+
+ switch (day) {
+ case 0: /* Sun */
+ case 4: /* Wed */
+ case 6 /* Sat */:
+ return "'budúcu' " + weekday + " 'o' p"
+ default:
+ return "'budúci' eeee 'o' p"
+ }
+}
+
+var formatRelativeLocale = {
+ lastWeek: function(date, baseDate, options) {
+ var day = date.getUTCDay()
+ if (isSameUTCWeek(date, baseDate, options)) {
+ return thisWeek(day)
+ } else {
+ return lastWeek(day)
+ }
+ },
+ yesterday: "'včera o' p",
+ today: "'dnes o' p",
+ tomorrow: "'zajtra o' p",
+ nextWeek: function(date, baseDate, options) {
+ var day = date.getUTCDay()
+ if (isSameUTCWeek(date, baseDate, options)) {
+ return thisWeek(day)
+ } else {
+ return nextWeek(day)
+ }
+ },
+ other: 'P'
+}
+
+export default function formatRelative(token, date, baseDate, options) {
+ var format = formatRelativeLocale[token]
+
+ if (typeof format === 'function') {
+ return format(date, baseDate, options)
+ }
+
+ return format
+}
diff --git a/date-fns/src/locale/sk/_lib/localize/index.js b/date-fns/src/locale/sk/_lib/localize/index.js
new file mode 100644
index 0000000..3fbbe0b
--- /dev/null
+++ b/date-fns/src/locale/sk/_lib/localize/index.js
@@ -0,0 +1,204 @@
+import buildLocalizeFn from '../../../_lib/buildLocalizeFn/index'
+
+// https://www.unicode.org/cldr/charts/32/summary/sk.html#1772
+var eraValues = {
+ narrow: ['pred Kr.', 'po Kr.'],
+ abbreviated: ['pred Kr.', 'po Kr.'],
+ wide: ['pred Kristom', 'po Kristovi']
+}
+
+// https://www.unicode.org/cldr/charts/32/summary/sk.html#1780
+var quarterValues = {
+ narrow: ['1', '2', '3', '4'],
+ abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],
+ wide: ['1. štvrťrok', '2. štvrťrok', '3. štvrťrok', '4. štvrťrok']
+}
+
+// https://www.unicode.org/cldr/charts/32/summary/sk.html#1804
+var monthValues = {
+ narrow: ['j', 'f', 'm', 'a', 'm', 'j', 'j', 'a', 's', 'o', 'n', 'd'],
+ abbreviated: [
+ 'jan',
+ 'feb',
+ 'mar',
+ 'apr',
+ 'máj',
+ 'jún',
+ 'júl',
+ 'aug',
+ 'sep',
+ 'okt',
+ 'nov',
+ 'dec'
+ ],
+ wide: [
+ 'január',
+ 'február',
+ 'marec',
+ 'apríl',
+ 'máj',
+ 'jún',
+ 'júl',
+ 'august',
+ 'september',
+ 'október',
+ 'november',
+ 'december'
+ ]
+}
+var formattingMonthValues = {
+ narrow: ['j', 'f', 'm', 'a', 'm', 'j', 'j', 'a', 's', 'o', 'n', 'd'],
+ abbreviated: [
+ 'jan',
+ 'feb',
+ 'mar',
+ 'apr',
+ 'máj',
+ 'jún',
+ 'júl',
+ 'aug',
+ 'sep',
+ 'okt',
+ 'nov',
+ 'dec'
+ ],
+ wide: [
+ 'januára',
+ 'februára',
+ 'marca',
+ 'apríla',
+ 'mája',
+ 'júna',
+ 'júla',
+ 'augusta',
+ 'septembra',
+ 'októbra',
+ 'novembra',
+ 'decembra'
+ ]
+}
+
+// https://www.unicode.org/cldr/charts/32/summary/sk.html#1876
+var dayValues = {
+ narrow: ['n', 'p', 'u', 's', 'š', 'p', 's'],
+ short: ['ne', 'po', 'ut', 'st', 'št', 'pi', 'so'],
+ abbreviated: ['ne', 'po', 'ut', 'st', 'št', 'pi', 'so'],
+ wide: [
+ 'nedeľa',
+ 'pondelok',
+ 'utorok',
+ 'streda',
+ 'štvrtok',
+ 'piatok',
+ 'sobota'
+ ]
+}
+
+// https://www.unicode.org/cldr/charts/32/summary/sk.html#1932
+var dayPeriodValues = {
+ narrow: {
+ am: 'AM',
+ pm: 'PM',
+ midnight: 'poln.',
+ noon: 'pol.',
+ morning: 'ráno',
+ afternoon: 'pop.',
+ evening: 'več.',
+ night: 'noc'
+ },
+ abbreviated: {
+ am: 'AM',
+ pm: 'PM',
+ midnight: 'poln.',
+ noon: 'pol.',
+ morning: 'ráno',
+ afternoon: 'popol.',
+ evening: 'večer',
+ night: 'noc'
+ },
+ wide: {
+ am: 'AM',
+ pm: 'PM',
+ midnight: 'polnoc',
+ noon: 'poludnie',
+ morning: 'ráno',
+ afternoon: 'popoludnie',
+ evening: 'večer',
+ night: 'noc'
+ }
+}
+var formattingDayPeriodValues = {
+ narrow: {
+ am: 'AM',
+ pm: 'PM',
+ midnight: 'o poln.',
+ noon: 'nap.',
+ morning: 'ráno',
+ afternoon: 'pop.',
+ evening: 'več.',
+ night: 'v n.'
+ },
+ abbreviated: {
+ am: 'AM',
+ pm: 'PM',
+ midnight: 'o poln.',
+ noon: 'napol.',
+ morning: 'ráno',
+ afternoon: 'popol.',
+ evening: 'večer',
+ night: 'v noci'
+ },
+ wide: {
+ am: 'AM',
+ pm: 'PM',
+ midnight: 'o polnoci',
+ noon: 'napoludnie',
+ morning: 'ráno',
+ afternoon: 'popoludní',
+ evening: 'večer',
+ night: 'v noci'
+ }
+}
+
+function ordinalNumber(dirtyNumber, _dirtyOptions) {
+ var number = Number(dirtyNumber)
+ return number + '.'
+}
+
+var localize = {
+ ordinalNumber: ordinalNumber,
+
+ era: buildLocalizeFn({
+ values: eraValues
+ // defaultWidth: 'wide'
+ }),
+
+ quarter: buildLocalizeFn({
+ values: quarterValues,
+ defaultWidth: 'wide',
+ argumentCallback: function(quarter) {
+ return Number(quarter) - 1
+ }
+ }),
+
+ month: buildLocalizeFn({
+ values: monthValues,
+ defaultWidth: 'wide',
+ formattingValues: formattingMonthValues,
+ defaultFormattingWidth: 'wide'
+ }),
+
+ day: buildLocalizeFn({
+ values: dayValues,
+ defaultWidth: 'wide'
+ }),
+
+ dayPeriod: buildLocalizeFn({
+ values: dayPeriodValues,
+ defaultWidth: 'wide',
+ formattingValues: formattingDayPeriodValues,
+ defaultFormattingWidth: 'wide'
+ })
+}
+
+export default localize
diff --git a/date-fns/src/locale/sk/_lib/match/index.js b/date-fns/src/locale/sk/_lib/match/index.js
new file mode 100644
index 0000000..366c5a4
--- /dev/null
+++ b/date-fns/src/locale/sk/_lib/match/index.js
@@ -0,0 +1,138 @@
+import buildMatchPatternFn from '../../../_lib/buildMatchPatternFn/index'
+import buildMatchFn from '../../../_lib/buildMatchFn/index'
+
+var matchOrdinalNumberPattern = /^(\d+)\.?/i
+var parseOrdinalNumberPattern = /\d+/i
+
+var matchEraPatterns = {
+ narrow: /^(pred Kr\.|pred n\. l\.|po Kr\.|n\. l\.)/i,
+ abbreviated: /^(pred Kr\.|pred n\. l\.|po Kr\.|n\. l\.)/i,
+ wide: /^(pred Kristom|pred na[šs][íi]m letopo[čc]tom|po Kristovi|n[áa][šs]ho letopo[čc]tu)/i
+}
+var parseEraPatterns = {
+ any: [/^pr/i, /^(po|n)/i]
+}
+
+var matchQuarterPatterns = {
+ narrow: /^[1234]/i,
+ abbreviated: /^q[1234]/i,
+ wide: /^[1234]\. [šs]tvr[ťt]rok/i
+}
+var parseQuarterPatterns = {
+ any: [/1/i, /2/i, /3/i, /4/i]
+}
+
+var matchMonthPatterns = {
+ narrow: /^[jfmasond]/i,
+ abbreviated: /^(jan|feb|mar|apr|m[áa]j|j[úu]n|j[úu]l|aug|sep|okt|nov|dec)/i,
+ wide: /^(janu[áa]ra?|febru[áa]ra?|(marec|marca)|apr[íi]la?|m[áa]ja?|j[úu]na?|j[úu]la?|augusta?|(september|septembra)|(okt[óo]ber|okt[óo]bra)|(november|novembra)|(december|decembra))/i
+}
+var parseMonthPatterns = {
+ narrow: [
+ /^j/i,
+ /^f/i,
+ /^m/i,
+ /^a/i,
+ /^m/i,
+ /^j/i,
+ /^j/i,
+ /^a/i,
+ /^s/i,
+ /^o/i,
+ /^n/i,
+ /^d/i
+ ],
+ any: [
+ /^ja/i,
+ /^f/i,
+ /^mar/i,
+ /^ap/i,
+ /^m[áa]j/i,
+ /^j[úu]n/i,
+ /^j[úu]l/i,
+ /^au/i,
+ /^s/i,
+ /^o/i,
+ /^n/i,
+ /^d/i
+ ]
+}
+
+var matchDayPatterns = {
+ narrow: /^[npusšp]/i,
+ short: /^(ne|po|ut|st|št|pi|so)/i,
+ abbreviated: /^(ne|po|ut|st|št|pi|so)/i,
+ wide: /^(nede[ľl]a|pondelok|utorok|streda|[šs]tvrtok|piatok|sobota])/i
+}
+var parseDayPatterns = {
+ narrow: [/^n/i, /^p/i, /^u/i, /^s/i, /^š/i, /^p/i, /^s/i],
+ any: [/^n/i, /^po/i, /^u/i, /^st/i, /^(št|stv)/i, /^pi/i, /^so/i]
+}
+
+var matchDayPeriodPatterns = {
+ narrow: /^(am|pm|(o )?poln\.?|(nap\.?|pol\.?)|r[áa]no|pop\.?|ve[čc]\.?|(v n\.?|noc))/i,
+ abbreviated: /^(am|pm|(o )?poln\.?|(napol\.?|pol\.?)|r[áa]no|pop\.?|ve[čc]er|(v )?noci?)/i,
+ any: /^(am|pm|(o )?polnoci?|(na)?poludnie|r[áa]no|popoludn(ie|í|i)|ve[čc]er|(v )?noci?)/i
+}
+var parseDayPeriodPatterns = {
+ any: {
+ am: /^am/i,
+ pm: /^pm/i,
+ midnight: /poln/i,
+ noon: /^(nap|(na)?pol(\.|u))/i,
+ morning: /^r[áa]no/i,
+ afternoon: /^pop/i,
+ evening: /^ve[čc]/i,
+ night: /^(noc|v n\.)/i
+ }
+}
+
+var match = {
+ ordinalNumber: buildMatchPatternFn({
+ matchPattern: matchOrdinalNumberPattern,
+ parsePattern: parseOrdinalNumberPattern,
+ valueCallback: function(value) {
+ return parseInt(value, 10)
+ }
+ }),
+
+ era: buildMatchFn({
+ matchPatterns: matchEraPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseEraPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ quarter: buildMatchFn({
+ matchPatterns: matchQuarterPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseQuarterPatterns,
+ defaultParseWidth: 'any',
+ valueCallback: function(index) {
+ return index + 1
+ }
+ }),
+
+ month: buildMatchFn({
+ matchPatterns: matchMonthPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseMonthPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ day: buildMatchFn({
+ matchPatterns: matchDayPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseDayPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ dayPeriod: buildMatchFn({
+ matchPatterns: matchDayPeriodPatterns,
+ defaultMatchWidth: 'any',
+ parsePatterns: parseDayPeriodPatterns,
+ defaultParseWidth: 'any'
+ })
+}
+
+export default match
diff --git a/date-fns/src/locale/sk/index.d.ts b/date-fns/src/locale/sk/index.d.ts
new file mode 100644
index 0000000..362dd32
--- /dev/null
+++ b/date-fns/src/locale/sk/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { sk } from 'date-fns/locale'
+export default sk
diff --git a/date-fns/src/locale/sk/index.js b/date-fns/src/locale/sk/index.js
new file mode 100644
index 0000000..547902f
--- /dev/null
+++ b/date-fns/src/locale/sk/index.js
@@ -0,0 +1,28 @@
+import formatDistance from './_lib/formatDistance/index'
+import formatLong from './_lib/formatLong/index'
+import formatRelative from './_lib/formatRelative/index'
+import localize from './_lib/localize/index'
+import match from './_lib/match/index'
+
+/**
+ * @type {Locale}
+ * @category Locales
+ * @summary Slovak locale.
+ * @language Slovak
+ * @iso-639-2 slk
+ * @author Marek Suscak [@mareksuscak]{@link https://github.com/mareksuscak}
+ */
+var locale = {
+ code: 'sk',
+ formatDistance: formatDistance,
+ formatLong: formatLong,
+ formatRelative: formatRelative,
+ localize: localize,
+ match: match,
+ options: {
+ weekStartsOn: 1 /* Monday */,
+ firstWeekContainsDate: 4
+ }
+}
+
+export default locale
diff --git a/date-fns/src/locale/sk/index.js.flow b/date-fns/src/locale/sk/index.js.flow
new file mode 100644
index 0000000..b9dfe66
--- /dev/null
+++ b/date-fns/src/locale/sk/index.js.flow
@@ -0,0 +1,35 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+declare module.exports: Locale
diff --git a/date-fns/src/locale/sk/snapshot.md b/date-fns/src/locale/sk/snapshot.md
new file mode 100644
index 0000000..889aec0
--- /dev/null
+++ b/date-fns/src/locale/sk/snapshot.md
@@ -0,0 +1,304 @@
+# Slovak (sk) locale
+
+## `format` and `parse`
+
+| Title | Token string | Date | `format` result | `parse` result |
+| ------------------------------- | ------------ | ------------------------ | -------------------------------------------- | ------------------------ |
+| Calendar year | yo | 1987-02-11T12:13:14.015Z | 1987. | 1987-01-01T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 5. | 0005-01-01T00:00:00.000Z |
+| Local week-numbering year | Yo | 1987-02-11T12:13:14.015Z | 1987. | 1986-12-29T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 4. | 0003-12-29T00:00:00.000Z |
+| Quarter (formatting) | Qo | 2019-01-01T12:13:14.015Z | 1. | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2. | 2019-04-01T00:00:00.000Z |
+| | QQQ | 2019-01-01T12:13:14.015Z | Q1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | Q2 | 2019-04-01T00:00:00.000Z |
+| | QQQQ | 2019-01-01T12:13:14.015Z | 1. štvrťrok | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2. štvrťrok | 2019-04-01T00:00:00.000Z |
+| | QQQQQ | 2019-01-01T12:13:14.015Z | 1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2 | 2019-04-01T00:00:00.000Z |
+| Quarter (stand-alone) | qo | 2019-01-01T12:13:14.015Z | 1. | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2. | 2019-04-01T00:00:00.000Z |
+| | qqq | 2019-01-01T12:13:14.015Z | Q1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | Q2 | 2019-04-01T00:00:00.000Z |
+| | qqqq | 2019-01-01T12:13:14.015Z | 1. štvrťrok | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2. štvrťrok | 2019-04-01T00:00:00.000Z |
+| Month (formatting) | Mo | 2019-02-11T12:13:14.015Z | 2. | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7. | 2019-07-01T00:00:00.000Z |
+| | MMM | 2019-02-11T12:13:14.015Z | feb | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | júl | 2019-07-01T00:00:00.000Z |
+| | MMMM | 2019-02-11T12:13:14.015Z | februára | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | júla | 2019-07-01T00:00:00.000Z |
+| | MMMMM | 2019-02-11T12:13:14.015Z | f | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | j | 2019-01-01T00:00:00.000Z |
+| Month (stand-alone) | Lo | 2019-02-11T12:13:14.015Z | 2. | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7. | 2019-07-01T00:00:00.000Z |
+| | LLL | 2019-02-11T12:13:14.015Z | feb | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | júl | 2019-07-01T00:00:00.000Z |
+| | LLLL | 2019-02-11T12:13:14.015Z | február | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | júl | 2019-07-01T00:00:00.000Z |
+| | LLLLL | 2019-02-11T12:13:14.015Z | f | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | j | 2019-01-01T00:00:00.000Z |
+| Local week of year | wo | 2019-01-01T12:13:14.015Z | 1. | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48. | 2019-11-25T00:00:00.000Z |
+| ISO week of year | Io | 2019-01-01T12:13:14.015Z | 1. | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48. | 2019-11-25T00:00:00.000Z |
+| Day of month | do | 2019-02-11T12:13:14.015Z | 11. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-28T12:13:14.015Z | 28. | 2019-02-28T00:00:00.000Z |
+| Day of year | Do | 2019-02-11T12:13:14.015Z | 42. | 2019-02-11T00:00:00.000Z |
+| | | 2019-12-31T12:13:14.015Z | 365. | 2019-12-31T00:00:00.000Z |
+| Day of week (formatting) | E | 2019-02-11T12:13:14.015Z | po | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | pi | 2019-02-15T00:00:00.000Z |
+| | EE | 2019-02-11T12:13:14.015Z | po | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | pi | 2019-02-15T00:00:00.000Z |
+| | EEE | 2019-02-11T12:13:14.015Z | po | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | pi | 2019-02-15T00:00:00.000Z |
+| | EEEE | 2019-02-11T12:13:14.015Z | pondelok | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | piatok | 2019-02-15T00:00:00.000Z |
+| | EEEEE | 2019-02-11T12:13:14.015Z | p | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | p | 2019-02-11T00:00:00.000Z |
+| | EEEEEE | 2019-02-11T12:13:14.015Z | po | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | pi | 2019-02-15T00:00:00.000Z |
+| ISO day of week (formatting) | io | 2019-02-11T12:13:14.015Z | 1. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5. | 2019-02-15T00:00:00.000Z |
+| | iii | 2019-02-11T12:13:14.015Z | po | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | pi | 2019-02-15T00:00:00.000Z |
+| | iiii | 2019-02-11T12:13:14.015Z | pondelok | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | piatok | 2019-02-15T00:00:00.000Z |
+| | iiiii | 2019-02-11T12:13:14.015Z | p | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | p | 2019-02-11T00:00:00.000Z |
+| | iiiiii | 2019-02-11T12:13:14.015Z | po | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | pi | 2019-02-15T00:00:00.000Z |
+| Local day of week (formatting) | eo | 2019-02-11T12:13:14.015Z | 1. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5. | 2019-02-15T00:00:00.000Z |
+| | eee | 2019-02-11T12:13:14.015Z | po | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | pi | 2019-02-15T00:00:00.000Z |
+| | eeee | 2019-02-11T12:13:14.015Z | pondelok | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | piatok | 2019-02-15T00:00:00.000Z |
+| | eeeee | 2019-02-11T12:13:14.015Z | p | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | p | 2019-02-11T00:00:00.000Z |
+| | eeeeee | 2019-02-11T12:13:14.015Z | po | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | pi | 2019-02-15T00:00:00.000Z |
+| Local day of week (stand-alone) | co | 2019-02-11T12:13:14.015Z | 1. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5. | 2019-02-15T00:00:00.000Z |
+| | ccc | 2019-02-11T12:13:14.015Z | po | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | pi | 2019-02-15T00:00:00.000Z |
+| | cccc | 2019-02-11T12:13:14.015Z | pondelok | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | piatok | 2019-02-15T00:00:00.000Z |
+| | ccccc | 2019-02-11T12:13:14.015Z | p | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | p | 2019-02-11T00:00:00.000Z |
+| | cccccc | 2019-02-11T12:13:14.015Z | po | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | pi | 2019-02-15T00:00:00.000Z |
+| AM, PM | a | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | aa | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | aaa | 2019-02-11T11:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | aaaa | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | aaaaa | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| AM, PM, noon, midnight | b | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | bb | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | bbb | 2019-02-11T11:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | bbbb | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | bbbbb | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| Flexible day period | B | 2019-02-11T11:13:14.015Z | ráno | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | popol. | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | večer | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | v noci | 2019-02-11T00:00:00.000Z |
+| | BB | 2019-02-11T11:13:14.015Z | ráno | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | popol. | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | večer | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | v noci | 2019-02-11T00:00:00.000Z |
+| | BBB | 2019-02-11T11:13:14.015Z | ráno | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | popol. | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | večer | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | v noci | 2019-02-11T00:00:00.000Z |
+| | BBBB | 2019-02-11T11:13:14.015Z | ráno | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | popoludní | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | večer | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | v noci | 2019-02-11T00:00:00.000Z |
+| | BBBBB | 2019-02-11T11:13:14.015Z | ráno | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | pop. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | več. | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | v n. | 2019-02-11T00:00:00.000Z |
+| Hour [1-12] | ho | 2019-02-11T11:13:14.015Z | 11. | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11. | 2019-02-11T23:00:00.000Z |
+| Hour [0-23] | Ho | 2019-02-11T11:13:14.015Z | 11. | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23. | 2019-02-11T23:00:00.000Z |
+| Hour [0-11] | Ko | 2019-02-11T11:13:14.015Z | 11. | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11. | 2019-02-11T23:00:00.000Z |
+| Hour [1-24] | ko | 2019-02-11T11:13:14.015Z | 11. | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23. | 2019-02-11T23:00:00.000Z |
+| Minute | mo | 2019-01-01T12:01:14.015Z | 1. | 2019-01-01T12:01:00.000Z |
+| | | 2019-04-01T12:55:14.015Z | 55. | 2019-04-01T12:55:00.000Z |
+| Second | so | 2019-01-01T12:13:01.015Z | 1. | 2019-01-01T12:13:01.000Z |
+| | | 2019-04-01T12:13:55.015Z | 55. | 2019-04-01T12:13:55.000Z |
+| Long localized date | P | 1987-02-11T12:13:14.015Z | 11. 2. 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29. 5. 1453 | 1453-05-29T00:00:00.000Z |
+| | PP | 1987-02-11T12:13:14.015Z | 11. 2. 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29. 5. 1453 | 1453-05-29T00:00:00.000Z |
+| | PPP | 1987-02-11T12:13:14.015Z | 11. februára 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29. mája 1453 | 1453-05-29T00:00:00.000Z |
+| | PPPP | 1987-02-11T12:13:14.015Z | streda 11. februára 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | nedeľa 29. mája 1453 | 1453-05-29T00:00:00.000Z |
+| Long localized time | p | 1987-02-11T12:13:14.015Z | 12:13 | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 23:59 | 1453-05-29T23:59:00.000Z |
+| | pp | 1987-02-11T12:13:14.015Z | 12:13:14 | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 | 1453-05-29T23:59:59.000Z |
+| | ppp | 1987-02-11T12:13:14.015Z | 12:13:14 GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 GMT+0 | Errored |
+| | pppp | 1987-02-11T12:13:14.015Z | 12:13:14 GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 GMT+00:00 | Errored |
+| Combination of date and time | Pp | 1987-02-11T12:13:14.015Z | 11. 2. 1987 12:13 | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29. 5. 1453 23:59 | 1453-05-29T23:59:00.000Z |
+| | PPpp | 1987-02-11T12:13:14.015Z | 11. 2. 1987, 12:13:14 | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29. 5. 1453, 23:59:59 | 1453-05-29T23:59:59.000Z |
+| | PPPppp | 1987-02-11T12:13:14.015Z | 11. februára 1987, 12:13:14 GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 29. mája 1453, 23:59:59 GMT+0 | Errored |
+| | PPPPpppp | 1987-02-11T12:13:14.015Z | streda 11. februára 1987, 12:13:14 GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | nedeľa 29. mája 1453, 23:59:59 GMT+00:00 | Errored |
+
+## `formatDistance`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `includeSeconds: true` | `addSuffix: true` |
+| ------------------------ | ----------------- | ---------------------- | ------------------------- |
+| 2006-01-01T00:00:00.000Z | približne 6 rokov | približne 6 rokov | približne o 6 rokov |
+| 2005-01-01T00:00:00.000Z | približne 5 rokov | približne 5 rokov | približne o 5 rokov |
+| 2004-01-01T00:00:00.000Z | približne 4 roky | približne 4 roky | približne o 4 roky |
+| 2003-01-01T00:00:00.000Z | približne 3 roky | približne 3 roky | približne o 3 roky |
+| 2002-01-01T00:00:00.000Z | približne 2 roky | približne 2 roky | približne o 2 roky |
+| 2001-06-01T00:00:00.000Z | viac než rok | viac než rok | o viac než rok |
+| 2001-02-01T00:00:00.000Z | približne rok | približne rok | približne o rok |
+| 2001-01-01T00:00:00.000Z | približne rok | približne rok | približne o rok |
+| 2000-06-01T00:00:00.000Z | 5 mesiacov | 5 mesiacov | o 5 mesiacov |
+| 2000-03-01T00:00:00.000Z | 2 mesiace | 2 mesiace | o 2 mesiace |
+| 2000-02-01T00:00:00.000Z | približne mesiac | približne mesiac | približne o mesiac |
+| 2000-01-15T00:00:00.000Z | 14 dní | 14 dní | o 14 dní |
+| 2000-01-02T00:00:00.000Z | deň | deň | o deň |
+| 2000-01-01T06:00:00.000Z | približne 6 hodín | približne 6 hodín | približne o 6 hodín |
+| 2000-01-01T01:00:00.000Z | približne hodina | približne hodina | približne o hodinu |
+| 2000-01-01T00:45:00.000Z | približne hodina | približne hodina | približne o hodinu |
+| 2000-01-01T00:30:00.000Z | 30 minút | 30 minút | o 30 minút |
+| 2000-01-01T00:15:00.000Z | 15 minút | 15 minút | o 15 minút |
+| 2000-01-01T00:01:00.000Z | minúta | minúta | o minútu |
+| 2000-01-01T00:00:25.000Z | menej než minúta | pol minúty | o menej než minútu |
+| 2000-01-01T00:00:15.000Z | menej než minúta | menej než 20 sekúnd | o menej než minútu |
+| 2000-01-01T00:00:05.000Z | menej než minúta | menej než 10 sekúnd | o menej než minútu |
+| 2000-01-01T00:00:00.000Z | menej než minúta | menej než 5 sekúnd | pred menej než minútou |
+| 1999-12-31T23:59:55.000Z | menej než minúta | menej než 10 sekúnd | pred menej než minútou |
+| 1999-12-31T23:59:45.000Z | menej než minúta | menej než 20 sekúnd | pred menej než minútou |
+| 1999-12-31T23:59:35.000Z | menej než minúta | pol minúty | pred menej než minútou |
+| 1999-12-31T23:59:00.000Z | minúta | minúta | pred minútou |
+| 1999-12-31T23:45:00.000Z | 15 minút | 15 minút | pred 15 minútami |
+| 1999-12-31T23:30:00.000Z | 30 minút | 30 minút | pred 30 minútami |
+| 1999-12-31T23:15:00.000Z | približne hodina | približne hodina | približne pred hodinou |
+| 1999-12-31T23:00:00.000Z | približne hodina | približne hodina | približne pred hodinou |
+| 1999-12-31T18:00:00.000Z | približne 6 hodín | približne 6 hodín | približne pred 6 hodinami |
+| 1999-12-30T00:00:00.000Z | 2 dni | 2 dni | pred 2 dňami |
+| 1999-12-15T00:00:00.000Z | 17 dní | 17 dní | pred 17 dňami |
+| 1999-12-01T00:00:00.000Z | približne mesiac | približne mesiac | približne pred mesiacom |
+| 1999-11-01T00:00:00.000Z | 2 mesiace | 2 mesiace | pred 2 mesiacmi |
+| 1999-06-01T00:00:00.000Z | 7 mesiacov | 7 mesiacov | pred 7 mesiacmi |
+| 1999-01-01T00:00:00.000Z | približne rok | približne rok | približne pred rokom |
+| 1998-12-01T00:00:00.000Z | približne rok | približne rok | približne pred rokom |
+| 1998-06-01T00:00:00.000Z | viac než rok | viac než rok | pred viac než rokom |
+| 1998-01-01T00:00:00.000Z | približne 2 roky | približne 2 roky | približne pred 2 rokmi |
+| 1997-01-01T00:00:00.000Z | približne 3 roky | približne 3 roky | približne pred 3 rokmi |
+| 1996-01-01T00:00:00.000Z | približne 4 roky | približne 4 roky | približne pred 4 rokmi |
+| 1995-01-01T00:00:00.000Z | približne 5 rokov | približne 5 rokov | približne pred 5 rokmi |
+| 1994-01-01T00:00:00.000Z | približne 6 rokov | približne 6 rokov | približne pred 6 rokmi |
+
+## `formatDistanceStrict`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `addSuffix: true` | With forced unit (i.e. `hour`) |
+| ------------------------ | ---------- | ----------------- | ------------------------------ |
+| 2006-01-01T00:00:00.000Z | 6 rokov | o 6 rokov | 52608 hodín |
+| 2005-01-01T00:00:00.000Z | 5 rokov | o 5 rokov | 43848 hodín |
+| 2004-01-01T00:00:00.000Z | 4 roky | o 4 roky | 35064 hodín |
+| 2003-01-01T00:00:00.000Z | 3 roky | o 3 roky | 26304 hodín |
+| 2002-01-01T00:00:00.000Z | 2 roky | o 2 roky | 17544 hodín |
+| 2001-06-01T00:00:00.000Z | rok | o rok | 12408 hodín |
+| 2001-02-01T00:00:00.000Z | rok | o rok | 9528 hodín |
+| 2001-01-01T00:00:00.000Z | rok | o rok | 8784 hodín |
+| 2000-06-01T00:00:00.000Z | 5 mesiacov | o 5 mesiacov | 3648 hodín |
+| 2000-03-01T00:00:00.000Z | 2 mesiace | o 2 mesiace | 1440 hodín |
+| 2000-02-01T00:00:00.000Z | mesiac | o mesiac | 744 hodín |
+| 2000-01-15T00:00:00.000Z | 14 dní | o 14 dní | 336 hodín |
+| 2000-01-02T00:00:00.000Z | deň | o deň | 24 hodín |
+| 2000-01-01T06:00:00.000Z | 6 hodín | o 6 hodín | 6 hodín |
+| 2000-01-01T01:00:00.000Z | hodina | o hodinu | hodina |
+| 2000-01-01T00:45:00.000Z | 45 minút | o 45 minút | hodina |
+| 2000-01-01T00:30:00.000Z | 30 minút | o 30 minút | hodina |
+| 2000-01-01T00:15:00.000Z | 15 minút | o 15 minút | 0 hodín |
+| 2000-01-01T00:01:00.000Z | minúta | o minútu | 0 hodín |
+| 2000-01-01T00:00:25.000Z | 25 sekúnd | o 25 sekúnd | 0 hodín |
+| 2000-01-01T00:00:15.000Z | 15 sekúnd | o 15 sekúnd | 0 hodín |
+| 2000-01-01T00:00:05.000Z | 5 sekúnd | o 5 sekúnd | 0 hodín |
+| 2000-01-01T00:00:00.000Z | 0 sekúnd | pred 0 sekundami | 0 hodín |
+| 1999-12-31T23:59:55.000Z | 5 sekúnd | pred 5 sekundami | 0 hodín |
+| 1999-12-31T23:59:45.000Z | 15 sekúnd | pred 15 sekundami | 0 hodín |
+| 1999-12-31T23:59:35.000Z | 25 sekúnd | pred 25 sekundami | 0 hodín |
+| 1999-12-31T23:59:00.000Z | minúta | pred minútou | 0 hodín |
+| 1999-12-31T23:45:00.000Z | 15 minút | pred 15 minútami | 0 hodín |
+| 1999-12-31T23:30:00.000Z | 30 minút | pred 30 minútami | hodina |
+| 1999-12-31T23:15:00.000Z | 45 minút | pred 45 minútami | hodina |
+| 1999-12-31T23:00:00.000Z | hodina | pred hodinou | hodina |
+| 1999-12-31T18:00:00.000Z | 6 hodín | pred 6 hodinami | 6 hodín |
+| 1999-12-30T00:00:00.000Z | 2 dni | pred 2 dňami | 48 hodín |
+| 1999-12-15T00:00:00.000Z | 17 dní | pred 17 dňami | 408 hodín |
+| 1999-12-01T00:00:00.000Z | mesiac | pred mesiacom | 744 hodín |
+| 1999-11-01T00:00:00.000Z | 2 mesiace | pred 2 mesiacmi | 1464 hodín |
+| 1999-06-01T00:00:00.000Z | 7 mesiacov | pred 7 mesiacmi | 5136 hodín |
+| 1999-01-01T00:00:00.000Z | rok | pred rokom | 8760 hodín |
+| 1998-12-01T00:00:00.000Z | rok | pred rokom | 9504 hodín |
+| 1998-06-01T00:00:00.000Z | 2 roky | pred 2 rokmi | 13896 hodín |
+| 1998-01-01T00:00:00.000Z | 2 roky | pred 2 rokmi | 17520 hodín |
+| 1997-01-01T00:00:00.000Z | 3 roky | pred 3 rokmi | 26280 hodín |
+| 1996-01-01T00:00:00.000Z | 4 roky | pred 4 rokmi | 35064 hodín |
+| 1995-01-01T00:00:00.000Z | 5 rokov | pred 5 rokmi | 43824 hodín |
+| 1994-01-01T00:00:00.000Z | 6 rokov | pred 6 rokmi | 52584 hodín |
+
+## `formatRelative`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result |
+| ------------------------ | -------------------- |
+| 2000-01-10T00:00:00.000Z | 10. 1. 2000 |
+| 2000-01-05T00:00:00.000Z | budúci streda o 0:00 |
+| 2000-01-02T00:00:00.000Z | zajtra o 0:00 |
+| 2000-01-01T00:00:00.000Z | dnes o 0:00 |
+| 1999-12-31T00:00:00.000Z | včera o 0:00 |
+| 1999-12-27T00:00:00.000Z | v pondelok o 0:00 |
+| 1999-12-21T00:00:00.000Z | 21. 12. 1999 |
diff --git a/date-fns/src/locale/sl/_lib/formatDistance/index.js b/date-fns/src/locale/sl/_lib/formatDistance/index.js
new file mode 100644
index 0000000..d21c359
--- /dev/null
+++ b/date-fns/src/locale/sl/_lib/formatDistance/index.js
@@ -0,0 +1,338 @@
+var distanceInWordsLocale = {
+ lessThanXSeconds: {
+ one: 'manj kot {{count}} sekunda',
+ two: 'manj kot {{count}} sekundi',
+ few: 'manj kot {{count}} sekunde',
+ other: 'manj kot {{count}} sekund'
+ },
+
+ xSeconds: {
+ one: '{{count}} sekunda',
+ two: '{{count}} sekundi',
+ few: '{{count}} sekunde',
+ other: '{{count}} sekund'
+ },
+
+ halfAMinute: 'pol minute',
+
+ lessThanXMinutes: {
+ one: 'manj kot {{count}} minuta',
+ two: 'manj kot {{count}} minuti',
+ few: 'manj kot {{count}} minute',
+ other: 'manj kot {{count}} minut'
+ },
+
+ xMinutes: {
+ one: '{{count}} minuta',
+ two: '{{count}} minuti',
+ few: '{{count}} minute',
+ other: '{{count}} minut'
+ },
+
+ aboutXHours: {
+ one: 'približno {{count}} ura',
+ two: 'približno {{count}} uri',
+ few: 'približno {{count}} ure',
+ other: 'približno {{count}} ur'
+ },
+
+ xHours: {
+ one: '{{count}} ura',
+ two: '{{count}} uri',
+ few: '{{count}} ure',
+ other: '{{count}} ur'
+ },
+
+ xDays: {
+ one: '{{count}} dan',
+ two: '{{count}} dni',
+ few: '{{count}} dni',
+ other: '{{count}} dni'
+ },
+
+ aboutXWeeks: {
+ one: 'približno {{count}} teden',
+ two: 'približno {{count}} tedna',
+ few: 'približno {{count}} tedne',
+ other: 'približno {{count}} tednov'
+ },
+
+ xWeeks: {
+ one: '{{count}} teden',
+ two: '{{count}} tedna',
+ few: '{{count}} tedne',
+ other: '{{count}} tednov'
+ },
+
+ aboutXMonths: {
+ one: 'približno {{count}} mesec',
+ two: 'približno {{count}} meseca',
+ few: 'približno {{count}} mesece',
+ other: 'približno {{count}} mesecev'
+ },
+
+ xMonths: {
+ one: '{{count}} mesec',
+ two: '{{count}} meseca',
+ few: '{{count}} meseci',
+ other: '{{count}} mesecev'
+ },
+
+ aboutXYears: {
+ one: 'približno {{count}} leto',
+ two: 'približno {{count}} leti',
+ few: 'približno {{count}} leta',
+ other: 'približno {{count}} let'
+ },
+
+ xYears: {
+ one: '{{count}} leto',
+ two: '{{count}} leti',
+ few: '{{count}} leta',
+ other: '{{count}} let'
+ },
+
+ overXYears: {
+ one: 'več kot {{count}} leto',
+ two: 'več kot {{count}} leti',
+ few: 'več kot {{count}} leta',
+ other: 'več kot {{count}} let'
+ },
+
+ almostXYears: {
+ one: 'skoraj {{count}} leto',
+ two: 'skoraj {{count}} leti',
+ few: 'skoraj {{count}} leta',
+ other: 'skoraj {{count}} let'
+ }
+}
+
+var distanceInWordsLocalePast = {
+ lessThanXSeconds: {
+ one: 'manj kot {{count}} sekundo',
+ two: 'manj kot {{count}} sekundama',
+ few: 'manj kot {{count}} sekundami',
+ other: 'manj kot {{count}} sekundami'
+ },
+
+ xSeconds: {
+ one: '{{count}} sekundo',
+ two: '{{count}} sekundama',
+ few: '{{count}} sekundami',
+ other: '{{count}} sekundami'
+ },
+
+ halfAMinute: 'pol minute',
+
+ lessThanXMinutes: {
+ one: 'manj kot {{count}} minuto',
+ two: 'manj kot {{count}} minutama',
+ few: 'manj kot {{count}} minutami',
+ other: 'manj kot {{count}} minutami'
+ },
+
+ xMinutes: {
+ one: '{{count}} minuto',
+ two: '{{count}} minutama',
+ few: '{{count}} minutami',
+ other: '{{count}} minutami'
+ },
+
+ aboutXHours: {
+ one: 'približno {{count}} uro',
+ two: 'približno {{count}} urama',
+ few: 'približno {{count}} urami',
+ other: 'približno {{count}} urami'
+ },
+
+ xHours: {
+ one: '{{count}} uro',
+ two: '{{count}} urama',
+ few: '{{count}} urami',
+ other: '{{count}} urami'
+ },
+
+ xDays: {
+ one: '{{count}} dnem',
+ two: '{{count}} dnevoma',
+ few: '{{count}} dnevi',
+ other: '{{count}} dnevi'
+ },
+
+ aboutXMonths: {
+ one: 'približno {{count}} mesecem',
+ two: 'približno {{count}} mesecema',
+ few: 'približno {{count}} meseci',
+ other: 'približno {{count}} meseci'
+ },
+
+ xMonths: {
+ one: '{{count}} mesecem',
+ two: '{{count}} mesecema',
+ few: '{{count}} meseci',
+ other: '{{count}} meseci'
+ },
+
+ aboutXYears: {
+ one: 'približno {{count}} letom',
+ two: 'približno {{count}} letoma',
+ few: 'približno {{count}} leti',
+ other: 'približno {{count}} leti'
+ },
+
+ xYears: {
+ one: '{{count}} letom',
+ two: '{{count}} letoma',
+ few: '{{count}} leti',
+ other: '{{count}} leti'
+ },
+
+ overXYears: {
+ one: 'več kot {{count}} letom',
+ two: 'več kot {{count}} letoma',
+ few: 'več kot {{count}} leti',
+ other: 'več kot {{count}} leti'
+ },
+
+ almostXYears: {
+ one: 'skoraj {{count}} letom',
+ two: 'skoraj {{count}} letoma',
+ few: 'skoraj {{count}} leti',
+ other: 'skoraj {{count}} leti'
+ }
+}
+
+var distanceInWordsLocaleFuture = {
+ lessThanXSeconds: {
+ one: 'manj kot {{count}} sekundo',
+ two: 'manj kot {{count}} sekundi',
+ few: 'manj kot {{count}} sekunde',
+ other: 'manj kot {{count}} sekund'
+ },
+
+ xSeconds: {
+ one: '{{count}} sekundo',
+ two: '{{count}} sekundi',
+ few: '{{count}} sekunde',
+ other: '{{count}} sekund'
+ },
+
+ halfAMinute: 'pol minute',
+
+ lessThanXMinutes: {
+ one: 'manj kot {{count}} minuto',
+ two: 'manj kot {{count}} minuti',
+ few: 'manj kot {{count}} minute',
+ other: 'manj kot {{count}} minut'
+ },
+
+ xMinutes: {
+ one: '{{count}} minuto',
+ two: '{{count}} minuti',
+ few: '{{count}} minute',
+ other: '{{count}} minut'
+ },
+
+ aboutXHours: {
+ one: 'približno {{count}} uro',
+ two: 'približno {{count}} uri',
+ few: 'približno {{count}} ure',
+ other: 'približno {{count}} ur'
+ },
+
+ xHours: {
+ one: '{{count}} uro',
+ two: '{{count}} uri',
+ few: '{{count}} ure',
+ other: '{{count}} ur'
+ },
+
+ xDays: {
+ one: '{{count}} dan',
+ two: '{{count}} dni',
+ few: '{{count}} dni',
+ other: '{{count}} dni'
+ },
+
+ aboutXMonths: {
+ one: 'približno {{count}} mesec',
+ two: 'približno {{count}} meseca',
+ few: 'približno {{count}} mesece',
+ other: 'približno {{count}} mesecev'
+ },
+
+ xMonths: {
+ one: '{{count}} mesec',
+ two: '{{count}} meseca',
+ few: '{{count}} mesece',
+ other: '{{count}} mesecev'
+ },
+
+ aboutXYears: {
+ one: 'približno {{count}} leto',
+ two: 'približno {{count}} leti',
+ few: 'približno {{count}} leta',
+ other: 'približno {{count}} let'
+ },
+
+ xYears: {
+ one: '{{count}} leto',
+ two: '{{count}} leti',
+ few: '{{count}} leta',
+ other: '{{count}} let'
+ },
+
+ overXYears: {
+ one: 'več kot {{count}} leto',
+ two: 'več kot {{count}} leti',
+ few: 'več kot {{count}} leta',
+ other: 'več kot {{count}} let'
+ },
+
+ almostXYears: {
+ one: 'skoraj {{count}} leto',
+ two: 'skoraj {{count}} leti',
+ few: 'skoraj {{count}} leta',
+ other: 'skoraj {{count}} let'
+ }
+}
+
+function getFormFromCount(count) {
+ switch (count % 100) {
+ case 1:
+ return 'one'
+ case 2:
+ return 'two'
+ case 3:
+ case 4:
+ return 'few'
+ default:
+ return 'other'
+ }
+}
+
+export default function formatDistance(token, count, options) {
+ options = options || {}
+
+ var localeObject = distanceInWordsLocale
+ var result = ''
+
+ if (options.addSuffix) {
+ if (options.comparison > 0) {
+ localeObject = distanceInWordsLocaleFuture
+ result += 'čez '
+ } else {
+ localeObject = distanceInWordsLocalePast
+ result += 'pred '
+ }
+ }
+
+ if (typeof localeObject[token] === 'string') {
+ result += localeObject[token]
+ } else {
+ var form = getFormFromCount(count)
+ result += localeObject[token][form].replace('{{count}}', count)
+ }
+
+ return result
+}
diff --git a/date-fns/src/locale/sl/_lib/formatLong/index.js b/date-fns/src/locale/sl/_lib/formatLong/index.js
new file mode 100644
index 0000000..eff948a
--- /dev/null
+++ b/date-fns/src/locale/sl/_lib/formatLong/index.js
@@ -0,0 +1,39 @@
+import buildFormatLongFn from '../../../_lib/buildFormatLongFn/index'
+
+var dateFormats = {
+ full: 'EEEE, dd. MMMM y',
+ long: 'dd. MMMM y',
+ medium: 'd. MMM y',
+ short: 'd. MM. yy'
+}
+
+var timeFormats = {
+ full: 'HH:mm:ss zzzz',
+ long: 'HH:mm:ss z',
+ medium: 'HH:mm:ss',
+ short: 'HH:mm'
+}
+
+var dateTimeFormats = {
+ full: '{{date}} {{time}}',
+ long: '{{date}} {{time}}',
+ medium: '{{date}} {{time}}',
+ short: '{{date}} {{time}}'
+}
+
+var formatLong = {
+ date: buildFormatLongFn({
+ formats: dateFormats,
+ defaultWidth: 'full'
+ }),
+ time: buildFormatLongFn({
+ formats: timeFormats,
+ defaultWidth: 'full'
+ }),
+ dateTime: buildFormatLongFn({
+ formats: dateTimeFormats,
+ defaultWidth: 'full'
+ })
+}
+
+export default formatLong
diff --git a/date-fns/src/locale/sl/_lib/formatRelative/index.js b/date-fns/src/locale/sl/_lib/formatRelative/index.js
new file mode 100644
index 0000000..2d25a1b
--- /dev/null
+++ b/date-fns/src/locale/sl/_lib/formatRelative/index.js
@@ -0,0 +1,44 @@
+var formatRelativeLocale = {
+ lastWeek: function(date) {
+ var day = date.getUTCDay()
+
+ switch (day) {
+ case 0:
+ return "'prejšnjo nedeljo ob' p"
+ case 3:
+ return "'prejšnjo sredo ob' p"
+ case 6:
+ return "'prejšnjo soboto ob' p"
+ default:
+ return "'prejšnji' EEEE 'ob' p"
+ }
+ },
+ yesterday: "'včeraj ob' p",
+ today: "'danes ob' p",
+ tomorrow: "'jutri ob' p",
+ nextWeek: function(date) {
+ var day = date.getUTCDay()
+
+ switch (day) {
+ case 0:
+ return "'naslednjo nedeljo ob' p"
+ case 3:
+ return "'naslednjo sredo ob' p"
+ case 6:
+ return "'naslednjo soboto ob' p"
+ default:
+ return "'naslednji' EEEE 'ob' p"
+ }
+ },
+ other: 'P'
+}
+
+export default function formatRelative(token, date, _baseDate, _options) {
+ var format = formatRelativeLocale[token]
+
+ if (typeof format === 'function') {
+ return format(date)
+ }
+
+ return format
+}
diff --git a/date-fns/src/locale/sl/_lib/localize/index.js b/date-fns/src/locale/sl/_lib/localize/index.js
new file mode 100644
index 0000000..e4d42c8
--- /dev/null
+++ b/date-fns/src/locale/sl/_lib/localize/index.js
@@ -0,0 +1,162 @@
+import buildLocalizeFn from '../../../_lib/buildLocalizeFn/index'
+
+function ordinalNumber(dirtyNumber) {
+ var number = Number(dirtyNumber)
+ return String(number).concat('.')
+}
+
+var eraValues = {
+ narrow: ['pr. n. št.', 'po n. št.'],
+ abbreviated: ['pr. n. št.', 'po n. št.'],
+ wide: ['pred našim štetjem', 'po našem štetju']
+}
+
+var monthValues = {
+ narrow: ['j', 'f', 'm', 'a', 'm', 'j', 'j', 'a', 's', 'o', 'n', 'd'],
+ abbreviated: [
+ 'jan.',
+ 'feb.',
+ 'mar.',
+ 'apr.',
+ 'maj',
+ 'jun.',
+ 'jul.',
+ 'avg.',
+ 'sep.',
+ 'okt.',
+ 'nov.',
+ 'dec.'
+ ],
+ wide: [
+ 'januar',
+ 'februar',
+ 'marec',
+ 'april',
+ 'maj',
+ 'junij',
+ 'julij',
+ 'avgust',
+ 'september',
+ 'oktober',
+ 'november',
+ 'december'
+ ]
+}
+
+var quarterValues = {
+ narrow: ['1', '2', '3', '4'],
+ abbreviated: ['1. čet.', '2. čet.', '3. čet.', '4. čet.'],
+ wide: ['1. četrtletje', '2. četrtletje', '3. četrtletje', '4. četrtletje']
+}
+
+var dayValues = {
+ narrow: ['n', 'p', 't', 's', 'č', 'p', 's'],
+ short: ['ned.', 'pon.', 'tor.', 'sre.', 'čet.', 'pet.', 'sob.'],
+ abbreviated: ['ned.', 'pon.', 'tor.', 'sre.', 'čet.', 'pet.', 'sob.'],
+ wide: [
+ 'nedelja',
+ 'ponedeljek',
+ 'torek',
+ 'sreda',
+ 'četrtek',
+ 'petek',
+ 'sobota'
+ ]
+}
+
+var dayPeriodValuesStandalone = {
+ narrow: {
+ am: 'd',
+ pm: 'p',
+ midnight: '24.00',
+ noon: '12.00',
+ morning: 'j',
+ afternoon: 'p',
+ evening: 'v',
+ night: 'n'
+ },
+ abbreviated: {
+ am: 'dop.',
+ pm: 'pop.',
+ midnight: 'poln.',
+ noon: 'pold.',
+ morning: 'jut.',
+ afternoon: 'pop.',
+ evening: 'več.',
+ night: 'noč'
+ },
+ wide: {
+ am: 'dop.',
+ pm: 'pop.',
+ midnight: 'polnoč',
+ noon: 'poldne',
+ morning: 'jutro',
+ afternoon: 'popoldne',
+ evening: 'večer',
+ night: 'noč'
+ }
+}
+
+var dayPeriodValuesFormatting = {
+ narrow: {
+ am: 'd',
+ pm: 'p',
+ midnight: '24.00',
+ noon: '12.00',
+ morning: 'zj',
+ afternoon: 'p',
+ evening: 'zv',
+ night: 'po'
+ },
+ abbreviated: {
+ am: 'dop.',
+ pm: 'pop.',
+ midnight: 'opoln.',
+ noon: 'opold.',
+ morning: 'zjut.',
+ afternoon: 'pop.',
+ evening: 'zveč.',
+ night: 'ponoči'
+ },
+ wide: {
+ am: 'dop.',
+ pm: 'pop.',
+ midnight: 'opolnoči',
+ noon: 'opoldne',
+ morning: 'zjutraj',
+ afternoon: 'popoldan',
+ evening: 'zvečer',
+ night: 'ponoči'
+ }
+}
+
+var localize = {
+ ordinalNumber: ordinalNumber,
+ era: buildLocalizeFn({
+ values: eraValues,
+ defaultWidth: 'wide'
+ }),
+ quarter: buildLocalizeFn({
+ values: quarterValues,
+ defaultWidth: 'wide',
+ argumentCallback: function(quarter) {
+ return Number(quarter) - 1
+ }
+ }),
+ month: buildLocalizeFn({
+ values: monthValues,
+ defaultWidth: 'wide'
+ }),
+ day: buildLocalizeFn({
+ values: dayValues,
+ defaultWidth: 'wide'
+ }),
+ dayPeriod: buildLocalizeFn({
+ values: dayPeriodValuesStandalone,
+ defaultWidth: 'wide',
+ formattingValues: dayPeriodValuesFormatting,
+ defaultFormattingWidth: 'wide'
+ })
+}
+
+export default localize
diff --git a/date-fns/src/locale/sl/_lib/match/index.js b/date-fns/src/locale/sl/_lib/match/index.js
new file mode 100644
index 0000000..f83308a
--- /dev/null
+++ b/date-fns/src/locale/sl/_lib/match/index.js
@@ -0,0 +1,155 @@
+import buildMatchFn from '../../../_lib/buildMatchFn/index'
+import buildMatchPatternFn from '../../../_lib/buildMatchPatternFn/index'
+
+var matchOrdinalNumberPattern = /^(\d+)\./i
+var parseOrdinalNumberPattern = /\d+/i
+
+var matchEraPatterns = {
+ abbreviated: /^(pr\. n\. št\.|po n\. št\.)/i,
+ wide: /^(pred Kristusom|pred na[sš]im [sš]tetjem|po Kristusu|po na[sš]em [sš]tetju|na[sš]ega [sš]tetja)/i
+}
+var parseEraPatterns = {
+ any: [/^pr/i, /^(po|na[sš]em)/i]
+}
+
+var matchQuarterPatterns = {
+ narrow: /^[1234]/i,
+ abbreviated: /^[1234]\.\s?[čc]et\.?/i,
+ wide: /^[1234]\. [čc]etrtletje/i
+}
+var parseQuarterPatterns = {
+ any: [/1/i, /2/i, /3/i, /4/i]
+}
+
+var matchMonthPatterns = {
+ narrow: /^[jfmasond]/i,
+ abbreviated: /^(jan\.|feb\.|mar\.|apr\.|maj|jun\.|jul\.|avg\.|sep\.|okt\.|nov\.|dec\.)/i,
+ wide: /^(januar|februar|marec|april|maj|junij|julij|avgust|september|oktober|november|december)/i
+}
+var parseMonthPatterns = {
+ narrow: [
+ /^j/i,
+ /^f/i,
+ /^m/i,
+ /^a/i,
+ /^m/i,
+ /^j/i,
+ /^j/i,
+ /^a/i,
+ /^s/i,
+ /^o/i,
+ /^n/i,
+ /^d/i
+ ],
+ abbreviated: [
+ /^ja/i,
+ /^fe/i,
+ /^mar/i,
+ /^ap/i,
+ /^maj/i,
+ /^jun/i,
+ /^jul/i,
+ /^av/i,
+ /^s/i,
+ /^o/i,
+ /^n/i,
+ /^d/i
+ ],
+ wide: [
+ /^ja/i,
+ /^fe/i,
+ /^mar/i,
+ /^ap/i,
+ /^maj/i,
+ /^jun/i,
+ /^jul/i,
+ /^av/i,
+ /^s/i,
+ /^o/i,
+ /^n/i,
+ /^d/i
+ ]
+}
+
+var matchDayPatterns = {
+ narrow: /^[nptsčc]/i,
+ short: /^(ned\.|pon\.|tor\.|sre\.|[cč]et\.|pet\.|sob\.)/i,
+ abbreviated: /^(ned\.|pon\.|tor\.|sre\.|[cč]et\.|pet\.|sob\.)/i,
+ wide: /^(nedelja|ponedeljek|torek|sreda|[cč]etrtek|petek|sobota)/i
+}
+var parseDayPatterns = {
+ narrow: [/^n/i, /^p/i, /^t/i, /^s/i, /^[cč]/i, /^p/i, /^s/i],
+ any: [/^n/i, /^po/i, /^t/i, /^sr/i, /^[cč]/i, /^pe/i, /^so/i]
+}
+
+var matchDayPeriodPatterns = {
+ narrow: /^(d|po?|z?v|n|z?j|24\.00|12\.00)/i,
+ any: /^(dop\.|pop\.|o?poln(\.|o[cč]i?)|o?pold(\.|ne)|z?ve[cč](\.|er)|(po)?no[cč]i?|popold(ne|an)|jut(\.|ro)|zjut(\.|raj))/i
+}
+var parseDayPeriodPatterns = {
+ narrow: {
+ am: /^d/i,
+ pm: /^p/i,
+ midnight: /^24/i,
+ noon: /^12/i,
+ morning: /^(z?j)/i,
+ afternoon: /^p/i,
+ evening: /^(z?v)/i,
+ night: /^(n|po)/i
+ },
+ any: {
+ am: /^dop\./i,
+ pm: /^pop\./i,
+ midnight: /^o?poln/i,
+ noon: /^o?pold/i,
+ morning: /j/i,
+ afternoon: /^pop\./i,
+ evening: /^z?ve/i,
+ night: /(po)?no/i
+ }
+}
+
+var match = {
+ ordinalNumber: buildMatchPatternFn({
+ matchPattern: matchOrdinalNumberPattern,
+ parsePattern: parseOrdinalNumberPattern,
+ valueCallback: function(value) {
+ return parseInt(value, 10)
+ }
+ }),
+ era: buildMatchFn({
+ matchPatterns: matchEraPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseEraPatterns,
+ defaultParseWidth: 'any'
+ }),
+ quarter: buildMatchFn({
+ matchPatterns: matchQuarterPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseQuarterPatterns,
+ defaultParseWidth: 'any',
+ valueCallback: function(index) {
+ return index + 1
+ }
+ }),
+ month: buildMatchFn({
+ matchPatterns: matchMonthPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseMonthPatterns,
+ defaultParseWidth: 'wide'
+ }),
+ day: buildMatchFn({
+ matchPatterns: matchDayPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseDayPatterns,
+ defaultParseWidth: 'any'
+ }),
+ dayPeriod: buildMatchFn({
+ matchPatterns: matchDayPeriodPatterns,
+ defaultMatchWidth: 'any',
+ parsePatterns: parseDayPeriodPatterns,
+ defaultParseWidth: 'any'
+ })
+}
+
+export default match
diff --git a/date-fns/src/locale/sl/index.d.ts b/date-fns/src/locale/sl/index.d.ts
new file mode 100644
index 0000000..fbe964a
--- /dev/null
+++ b/date-fns/src/locale/sl/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { sl } from 'date-fns/locale'
+export default sl
diff --git a/date-fns/src/locale/sl/index.js b/date-fns/src/locale/sl/index.js
new file mode 100644
index 0000000..61ed2a7
--- /dev/null
+++ b/date-fns/src/locale/sl/index.js
@@ -0,0 +1,29 @@
+import formatDistance from './_lib/formatDistance/index'
+import formatLong from './_lib/formatLong/index'
+import formatRelative from './_lib/formatRelative/index'
+import localize from './_lib/localize/index'
+import match from './_lib/match/index'
+
+/**
+ * @type {Locale}
+ * @category Locales
+ * @summary Slovenian locale.
+ * @language Slovenian
+ * @iso-639-2 slv
+ * @author Adam Stradovnik [@Neoglyph]{@link https://github.com/Neoglyph}
+ * @author Mato Žgajner [@mzgajner]{@link https://github.com/mzgajner}
+ */
+var locale = {
+ code: 'sl',
+ formatDistance: formatDistance,
+ formatLong: formatLong,
+ formatRelative: formatRelative,
+ localize: localize,
+ match: match,
+ options: {
+ weekStartsOn: 1 /* Monday */,
+ firstWeekContainsDate: 1
+ }
+}
+
+export default locale
diff --git a/date-fns/src/locale/sl/index.js.flow b/date-fns/src/locale/sl/index.js.flow
new file mode 100644
index 0000000..b9dfe66
--- /dev/null
+++ b/date-fns/src/locale/sl/index.js.flow
@@ -0,0 +1,35 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+declare module.exports: Locale
diff --git a/date-fns/src/locale/sl/snapshot.md b/date-fns/src/locale/sl/snapshot.md
new file mode 100644
index 0000000..495f479
--- /dev/null
+++ b/date-fns/src/locale/sl/snapshot.md
@@ -0,0 +1,304 @@
+# Slovenian (sl) locale
+
+## `format` and `parse`
+
+| Title | Token string | Date | `format` result | `parse` result |
+| ------------------------------- | ------------ | ------------------------ | ------------------------------------------ | ------------------------ |
+| Calendar year | yo | 1987-02-11T12:13:14.015Z | 1987. | 1987-01-01T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 5. | 0005-01-01T00:00:00.000Z |
+| Local week-numbering year | Yo | 1987-02-11T12:13:14.015Z | 1987. | 1986-12-29T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 5. | 0004-12-27T00:00:00.000Z |
+| Quarter (formatting) | Qo | 2019-01-01T12:13:14.015Z | 1. | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2. | 2019-04-01T00:00:00.000Z |
+| | QQQ | 2019-01-01T12:13:14.015Z | 1. čet. | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2. čet. | 2019-04-01T00:00:00.000Z |
+| | QQQQ | 2019-01-01T12:13:14.015Z | 1. četrtletje | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2. četrtletje | 2019-04-01T00:00:00.000Z |
+| | QQQQQ | 2019-01-01T12:13:14.015Z | 1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2 | 2019-04-01T00:00:00.000Z |
+| Quarter (stand-alone) | qo | 2019-01-01T12:13:14.015Z | 1. | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2. | 2019-04-01T00:00:00.000Z |
+| | qqq | 2019-01-01T12:13:14.015Z | 1. čet. | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2. čet. | 2019-04-01T00:00:00.000Z |
+| | qqqq | 2019-01-01T12:13:14.015Z | 1. četrtletje | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2. četrtletje | 2019-04-01T00:00:00.000Z |
+| Month (formatting) | Mo | 2019-02-11T12:13:14.015Z | 2. | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7. | 2019-07-01T00:00:00.000Z |
+| | MMM | 2019-02-11T12:13:14.015Z | feb. | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | jul. | 2019-07-01T00:00:00.000Z |
+| | MMMM | 2019-02-11T12:13:14.015Z | februar | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | julij | 2019-07-01T00:00:00.000Z |
+| | MMMMM | 2019-02-11T12:13:14.015Z | f | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | j | 2019-01-01T00:00:00.000Z |
+| Month (stand-alone) | Lo | 2019-02-11T12:13:14.015Z | 2. | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7. | 2019-07-01T00:00:00.000Z |
+| | LLL | 2019-02-11T12:13:14.015Z | feb. | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | jul. | 2019-07-01T00:00:00.000Z |
+| | LLLL | 2019-02-11T12:13:14.015Z | februar | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | julij | 2019-07-01T00:00:00.000Z |
+| | LLLLL | 2019-02-11T12:13:14.015Z | f | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | j | 2019-01-01T00:00:00.000Z |
+| Local week of year | wo | 2019-01-01T12:13:14.015Z | 1. | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48. | 2019-11-25T00:00:00.000Z |
+| ISO week of year | Io | 2019-01-01T12:13:14.015Z | 1. | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48. | 2019-11-25T00:00:00.000Z |
+| Day of month | do | 2019-02-11T12:13:14.015Z | 11. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-28T12:13:14.015Z | 28. | 2019-02-28T00:00:00.000Z |
+| Day of year | Do | 2019-02-11T12:13:14.015Z | 42. | 2019-02-11T00:00:00.000Z |
+| | | 2019-12-31T12:13:14.015Z | 365. | 2019-12-31T00:00:00.000Z |
+| Day of week (formatting) | E | 2019-02-11T12:13:14.015Z | pon. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | pet. | 2019-02-15T00:00:00.000Z |
+| | EE | 2019-02-11T12:13:14.015Z | pon. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | pet. | 2019-02-15T00:00:00.000Z |
+| | EEE | 2019-02-11T12:13:14.015Z | pon. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | pet. | 2019-02-15T00:00:00.000Z |
+| | EEEE | 2019-02-11T12:13:14.015Z | ponedeljek | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | petek | 2019-02-15T00:00:00.000Z |
+| | EEEEE | 2019-02-11T12:13:14.015Z | p | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | p | 2019-02-11T00:00:00.000Z |
+| | EEEEEE | 2019-02-11T12:13:14.015Z | pon. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | pet. | 2019-02-15T00:00:00.000Z |
+| ISO day of week (formatting) | io | 2019-02-11T12:13:14.015Z | 1. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5. | 2019-02-15T00:00:00.000Z |
+| | iii | 2019-02-11T12:13:14.015Z | pon. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | pet. | 2019-02-15T00:00:00.000Z |
+| | iiii | 2019-02-11T12:13:14.015Z | ponedeljek | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | petek | 2019-02-15T00:00:00.000Z |
+| | iiiii | 2019-02-11T12:13:14.015Z | p | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | p | 2019-02-11T00:00:00.000Z |
+| | iiiiii | 2019-02-11T12:13:14.015Z | pon. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | pet. | 2019-02-15T00:00:00.000Z |
+| Local day of week (formatting) | eo | 2019-02-11T12:13:14.015Z | 1. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5. | 2019-02-15T00:00:00.000Z |
+| | eee | 2019-02-11T12:13:14.015Z | pon. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | pet. | 2019-02-15T00:00:00.000Z |
+| | eeee | 2019-02-11T12:13:14.015Z | ponedeljek | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | petek | 2019-02-15T00:00:00.000Z |
+| | eeeee | 2019-02-11T12:13:14.015Z | p | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | p | 2019-02-11T00:00:00.000Z |
+| | eeeeee | 2019-02-11T12:13:14.015Z | pon. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | pet. | 2019-02-15T00:00:00.000Z |
+| Local day of week (stand-alone) | co | 2019-02-11T12:13:14.015Z | 1. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5. | 2019-02-15T00:00:00.000Z |
+| | ccc | 2019-02-11T12:13:14.015Z | pon. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | pet. | 2019-02-15T00:00:00.000Z |
+| | cccc | 2019-02-11T12:13:14.015Z | ponedeljek | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | petek | 2019-02-15T00:00:00.000Z |
+| | ccccc | 2019-02-11T12:13:14.015Z | p | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | p | 2019-02-11T00:00:00.000Z |
+| | cccccc | 2019-02-11T12:13:14.015Z | pon. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | pet. | 2019-02-15T00:00:00.000Z |
+| AM, PM | a | 2019-02-11T11:13:14.015Z | dop. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | pop. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | pop. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | dop. | 2019-02-11T00:00:00.000Z |
+| | aa | 2019-02-11T11:13:14.015Z | dop. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | pop. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | pop. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | dop. | 2019-02-11T00:00:00.000Z |
+| | aaa | 2019-02-11T11:13:14.015Z | dop. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | pop. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | pop. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | dop. | 2019-02-11T00:00:00.000Z |
+| | aaaa | 2019-02-11T11:13:14.015Z | dop. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | pop. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | pop. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | dop. | 2019-02-11T00:00:00.000Z |
+| | aaaaa | 2019-02-11T11:13:14.015Z | d | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | p | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | p | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | d | 2019-02-11T00:00:00.000Z |
+| AM, PM, noon, midnight | b | 2019-02-11T11:13:14.015Z | dop. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | pop. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | pop. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | dop. | 2019-02-11T00:00:00.000Z |
+| | bb | 2019-02-11T11:13:14.015Z | dop. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | pop. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | pop. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | dop. | 2019-02-11T00:00:00.000Z |
+| | bbb | 2019-02-11T11:13:14.015Z | dop. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | pop. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | pop. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | dop. | 2019-02-11T00:00:00.000Z |
+| | bbbb | 2019-02-11T11:13:14.015Z | dop. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | pop. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | pop. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | dop. | 2019-02-11T00:00:00.000Z |
+| | bbbbb | 2019-02-11T11:13:14.015Z | d | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | p | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | p | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | d | 2019-02-11T00:00:00.000Z |
+| Flexible day period | B | 2019-02-11T11:13:14.015Z | zjut. | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | pop. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | zveč. | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ponoči | 2019-02-11T00:00:00.000Z |
+| | BB | 2019-02-11T11:13:14.015Z | zjut. | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | pop. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | zveč. | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ponoči | 2019-02-11T00:00:00.000Z |
+| | BBB | 2019-02-11T11:13:14.015Z | zjut. | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | pop. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | zveč. | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ponoči | 2019-02-11T00:00:00.000Z |
+| | BBBB | 2019-02-11T11:13:14.015Z | zjutraj | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | popoldan | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | zvečer | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ponoči | 2019-02-11T00:00:00.000Z |
+| | BBBBB | 2019-02-11T11:13:14.015Z | zj | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | p | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | zv | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | po | 2019-02-11T12:00:00.000Z |
+| Hour [1-12] | ho | 2019-02-11T11:13:14.015Z | 11. | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11. | 2019-02-11T23:00:00.000Z |
+| Hour [0-23] | Ho | 2019-02-11T11:13:14.015Z | 11. | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23. | 2019-02-11T23:00:00.000Z |
+| Hour [0-11] | Ko | 2019-02-11T11:13:14.015Z | 11. | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11. | 2019-02-11T23:00:00.000Z |
+| Hour [1-24] | ko | 2019-02-11T11:13:14.015Z | 11. | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23. | 2019-02-11T23:00:00.000Z |
+| Minute | mo | 2019-01-01T12:01:14.015Z | 1. | 2019-01-01T12:01:00.000Z |
+| | | 2019-04-01T12:55:14.015Z | 55. | 2019-04-01T12:55:00.000Z |
+| Second | so | 2019-01-01T12:13:01.015Z | 1. | 2019-01-01T12:13:01.000Z |
+| | | 2019-04-01T12:13:55.015Z | 55. | 2019-04-01T12:13:55.000Z |
+| Long localized date | P | 1987-02-11T12:13:14.015Z | 11. 02. 87 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29. 05. 53 | 1453-05-29T00:00:00.000Z |
+| | PP | 1987-02-11T12:13:14.015Z | 11. feb. 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29. maj 1453 | 1453-05-29T00:00:00.000Z |
+| | PPP | 1987-02-11T12:13:14.015Z | 11. februar 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29. maj 1453 | 1453-05-29T00:00:00.000Z |
+| | PPPP | 1987-02-11T12:13:14.015Z | sreda, 11. februar 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | nedelja, 29. maj 1453 | 1453-05-29T00:00:00.000Z |
+| Long localized time | p | 1987-02-11T12:13:14.015Z | 12:13 | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 23:59 | 1453-05-29T23:59:00.000Z |
+| | pp | 1987-02-11T12:13:14.015Z | 12:13:14 | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 | 1453-05-29T23:59:59.000Z |
+| | ppp | 1987-02-11T12:13:14.015Z | 12:13:14 GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 GMT+0 | Errored |
+| | pppp | 1987-02-11T12:13:14.015Z | 12:13:14 GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 GMT+00:00 | Errored |
+| Combination of date and time | Pp | 1987-02-11T12:13:14.015Z | 11. 02. 87 12:13 | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29. 05. 53 23:59 | 1453-05-29T23:59:00.000Z |
+| | PPpp | 1987-02-11T12:13:14.015Z | 11. feb. 1987 12:13:14 | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29. maj 1453 23:59:59 | 1453-05-29T23:59:59.000Z |
+| | PPPppp | 1987-02-11T12:13:14.015Z | 11. februar 1987 12:13:14 GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 29. maj 1453 23:59:59 GMT+0 | Errored |
+| | PPPPpppp | 1987-02-11T12:13:14.015Z | sreda, 11. februar 1987 12:13:14 GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | nedelja, 29. maj 1453 23:59:59 GMT+00:00 | Errored |
+
+## `formatDistance`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `includeSeconds: true` | `addSuffix: true` |
+| ------------------------ | ----------------- | ---------------------- | ------------------------ |
+| 2006-01-01T00:00:00.000Z | približno 6 let | približno 6 let | čez približno 6 let |
+| 2005-01-01T00:00:00.000Z | približno 5 let | približno 5 let | čez približno 5 let |
+| 2004-01-01T00:00:00.000Z | približno 4 leta | približno 4 leta | čez približno 4 leta |
+| 2003-01-01T00:00:00.000Z | približno 3 leta | približno 3 leta | čez približno 3 leta |
+| 2002-01-01T00:00:00.000Z | približno 2 leti | približno 2 leti | čez približno 2 leti |
+| 2001-06-01T00:00:00.000Z | več kot 1 leto | več kot 1 leto | čez več kot 1 leto |
+| 2001-02-01T00:00:00.000Z | približno 1 leto | približno 1 leto | čez približno 1 leto |
+| 2001-01-01T00:00:00.000Z | približno 1 leto | približno 1 leto | čez približno 1 leto |
+| 2000-06-01T00:00:00.000Z | 5 mesecev | 5 mesecev | čez 5 mesecev |
+| 2000-03-01T00:00:00.000Z | 2 meseca | 2 meseca | čez 2 meseca |
+| 2000-02-01T00:00:00.000Z | približno 1 mesec | približno 1 mesec | čez približno 1 mesec |
+| 2000-01-15T00:00:00.000Z | 14 dni | 14 dni | čez 14 dni |
+| 2000-01-02T00:00:00.000Z | 1 dan | 1 dan | čez 1 dan |
+| 2000-01-01T06:00:00.000Z | približno 6 ur | približno 6 ur | čez približno 6 ur |
+| 2000-01-01T01:00:00.000Z | približno 1 ura | približno 1 ura | čez približno 1 uro |
+| 2000-01-01T00:45:00.000Z | približno 1 ura | približno 1 ura | čez približno 1 uro |
+| 2000-01-01T00:30:00.000Z | 30 minut | 30 minut | čez 30 minut |
+| 2000-01-01T00:15:00.000Z | 15 minut | 15 minut | čez 15 minut |
+| 2000-01-01T00:01:00.000Z | 1 minuta | 1 minuta | čez 1 minuto |
+| 2000-01-01T00:00:25.000Z | manj kot 1 minuta | pol minute | čez manj kot 1 minuto |
+| 2000-01-01T00:00:15.000Z | manj kot 1 minuta | manj kot 20 sekund | čez manj kot 1 minuto |
+| 2000-01-01T00:00:05.000Z | manj kot 1 minuta | manj kot 10 sekund | čez manj kot 1 minuto |
+| 2000-01-01T00:00:00.000Z | manj kot 1 minuta | manj kot 5 sekund | pred manj kot 1 minuto |
+| 1999-12-31T23:59:55.000Z | manj kot 1 minuta | manj kot 10 sekund | pred manj kot 1 minuto |
+| 1999-12-31T23:59:45.000Z | manj kot 1 minuta | manj kot 20 sekund | pred manj kot 1 minuto |
+| 1999-12-31T23:59:35.000Z | manj kot 1 minuta | pol minute | pred manj kot 1 minuto |
+| 1999-12-31T23:59:00.000Z | 1 minuta | 1 minuta | pred 1 minuto |
+| 1999-12-31T23:45:00.000Z | 15 minut | 15 minut | pred 15 minutami |
+| 1999-12-31T23:30:00.000Z | 30 minut | 30 minut | pred 30 minutami |
+| 1999-12-31T23:15:00.000Z | približno 1 ura | približno 1 ura | pred približno 1 uro |
+| 1999-12-31T23:00:00.000Z | približno 1 ura | približno 1 ura | pred približno 1 uro |
+| 1999-12-31T18:00:00.000Z | približno 6 ur | približno 6 ur | pred približno 6 urami |
+| 1999-12-30T00:00:00.000Z | 2 dni | 2 dni | pred 2 dnevoma |
+| 1999-12-15T00:00:00.000Z | 17 dni | 17 dni | pred 17 dnevi |
+| 1999-12-01T00:00:00.000Z | približno 1 mesec | približno 1 mesec | pred približno 1 mesecem |
+| 1999-11-01T00:00:00.000Z | 2 meseca | 2 meseca | pred 2 mesecema |
+| 1999-06-01T00:00:00.000Z | 7 mesecev | 7 mesecev | pred 7 meseci |
+| 1999-01-01T00:00:00.000Z | približno 1 leto | približno 1 leto | pred približno 1 letom |
+| 1998-12-01T00:00:00.000Z | približno 1 leto | približno 1 leto | pred približno 1 letom |
+| 1998-06-01T00:00:00.000Z | več kot 1 leto | več kot 1 leto | pred več kot 1 letom |
+| 1998-01-01T00:00:00.000Z | približno 2 leti | približno 2 leti | pred približno 2 letoma |
+| 1997-01-01T00:00:00.000Z | približno 3 leta | približno 3 leta | pred približno 3 leti |
+| 1996-01-01T00:00:00.000Z | približno 4 leta | približno 4 leta | pred približno 4 leti |
+| 1995-01-01T00:00:00.000Z | približno 5 let | približno 5 let | pred približno 5 leti |
+| 1994-01-01T00:00:00.000Z | približno 6 let | približno 6 let | pred približno 6 leti |
+
+## `formatDistanceStrict`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `addSuffix: true` | With forced unit (i.e. `hour`) |
+| ------------------------ | --------- | ----------------- | ------------------------------ |
+| 2006-01-01T00:00:00.000Z | 6 let | čez 6 let | 52608 ur |
+| 2005-01-01T00:00:00.000Z | 5 let | čez 5 let | 43848 ur |
+| 2004-01-01T00:00:00.000Z | 4 leta | čez 4 leta | 35064 ur |
+| 2003-01-01T00:00:00.000Z | 3 leta | čez 3 leta | 26304 ure |
+| 2002-01-01T00:00:00.000Z | 2 leti | čez 2 leti | 17544 ur |
+| 2001-06-01T00:00:00.000Z | 1 leto | čez 1 leto | 12408 ur |
+| 2001-02-01T00:00:00.000Z | 1 leto | čez 1 leto | 9528 ur |
+| 2001-01-01T00:00:00.000Z | 1 leto | čez 1 leto | 8784 ur |
+| 2000-06-01T00:00:00.000Z | 5 mesecev | čez 5 mesecev | 3648 ur |
+| 2000-03-01T00:00:00.000Z | 2 meseca | čez 2 meseca | 1440 ur |
+| 2000-02-01T00:00:00.000Z | 1 mesec | čez 1 mesec | 744 ur |
+| 2000-01-15T00:00:00.000Z | 14 dni | čez 14 dni | 336 ur |
+| 2000-01-02T00:00:00.000Z | 1 dan | čez 1 dan | 24 ur |
+| 2000-01-01T06:00:00.000Z | 6 ur | čez 6 ur | 6 ur |
+| 2000-01-01T01:00:00.000Z | 1 ura | čez 1 uro | 1 ura |
+| 2000-01-01T00:45:00.000Z | 45 minut | čez 45 minut | 1 ura |
+| 2000-01-01T00:30:00.000Z | 30 minut | čez 30 minut | 1 ura |
+| 2000-01-01T00:15:00.000Z | 15 minut | čez 15 minut | 0 ur |
+| 2000-01-01T00:01:00.000Z | 1 minuta | čez 1 minuto | 0 ur |
+| 2000-01-01T00:00:25.000Z | 25 sekund | čez 25 sekund | 0 ur |
+| 2000-01-01T00:00:15.000Z | 15 sekund | čez 15 sekund | 0 ur |
+| 2000-01-01T00:00:05.000Z | 5 sekund | čez 5 sekund | 0 ur |
+| 2000-01-01T00:00:00.000Z | 0 sekund | pred 0 sekundami | 0 ur |
+| 1999-12-31T23:59:55.000Z | 5 sekund | pred 5 sekundami | 0 ur |
+| 1999-12-31T23:59:45.000Z | 15 sekund | pred 15 sekundami | 0 ur |
+| 1999-12-31T23:59:35.000Z | 25 sekund | pred 25 sekundami | 0 ur |
+| 1999-12-31T23:59:00.000Z | 1 minuta | pred 1 minuto | 0 ur |
+| 1999-12-31T23:45:00.000Z | 15 minut | pred 15 minutami | 0 ur |
+| 1999-12-31T23:30:00.000Z | 30 minut | pred 30 minutami | 1 ura |
+| 1999-12-31T23:15:00.000Z | 45 minut | pred 45 minutami | 1 ura |
+| 1999-12-31T23:00:00.000Z | 1 ura | pred 1 uro | 1 ura |
+| 1999-12-31T18:00:00.000Z | 6 ur | pred 6 urami | 6 ur |
+| 1999-12-30T00:00:00.000Z | 2 dni | pred 2 dnevoma | 48 ur |
+| 1999-12-15T00:00:00.000Z | 17 dni | pred 17 dnevi | 408 ur |
+| 1999-12-01T00:00:00.000Z | 1 mesec | pred 1 mesecem | 744 ur |
+| 1999-11-01T00:00:00.000Z | 2 meseca | pred 2 mesecema | 1464 ur |
+| 1999-06-01T00:00:00.000Z | 7 mesecev | pred 7 meseci | 5136 ur |
+| 1999-01-01T00:00:00.000Z | 1 leto | pred 1 letom | 8760 ur |
+| 1998-12-01T00:00:00.000Z | 1 leto | pred 1 letom | 9504 ure |
+| 1998-06-01T00:00:00.000Z | 2 leti | pred 2 letoma | 13896 ur |
+| 1998-01-01T00:00:00.000Z | 2 leti | pred 2 letoma | 17520 ur |
+| 1997-01-01T00:00:00.000Z | 3 leta | pred 3 leti | 26280 ur |
+| 1996-01-01T00:00:00.000Z | 4 leta | pred 4 leti | 35064 ur |
+| 1995-01-01T00:00:00.000Z | 5 let | pred 5 leti | 43824 ur |
+| 1994-01-01T00:00:00.000Z | 6 let | pred 6 leti | 52584 ur |
+
+## `formatRelative`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result |
+| ------------------------ | ---------------------------- |
+| 2000-01-10T00:00:00.000Z | 10. 01. 00 |
+| 2000-01-05T00:00:00.000Z | naslednjo sredo ob 00:00 |
+| 2000-01-02T00:00:00.000Z | jutri ob 00:00 |
+| 2000-01-01T00:00:00.000Z | danes ob 00:00 |
+| 1999-12-31T00:00:00.000Z | včeraj ob 00:00 |
+| 1999-12-27T00:00:00.000Z | prejšnji ponedeljek ob 00:00 |
+| 1999-12-21T00:00:00.000Z | 21. 12. 99 |
diff --git a/date-fns/src/locale/sq/_lib/formatDistance/index.js b/date-fns/src/locale/sq/_lib/formatDistance/index.js
new file mode 100644
index 0000000..ecd01ff
--- /dev/null
+++ b/date-fns/src/locale/sq/_lib/formatDistance/index.js
@@ -0,0 +1,86 @@
+var formatDistanceLocale = {
+ lessThanXSeconds: {
+ one: 'më pak se një sekondë',
+ other: 'më pak se {{count}} sekonda'
+ },
+ xSeconds: {
+ one: '1 sekondë',
+ other: '{{count}} sekonda'
+ },
+ halfAMinute: 'gjysëm minuti',
+ lessThanXMinutes: {
+ one: 'më pak se një minute',
+ other: 'më pak se {{count}} minuta'
+ },
+ xMinutes: {
+ one: '1 minutë',
+ other: '{{count}} minuta'
+ },
+ aboutXHours: {
+ one: 'rreth 1 orë',
+ other: 'rreth {{count}} orë'
+ },
+ xHours: {
+ one: '1 orë',
+ other: '{{count}} orë'
+ },
+ xDays: {
+ one: '1 ditë',
+ other: '{{count}} ditë'
+ },
+ aboutXWeeks: {
+ one: 'rreth 1 javë',
+ other: 'rreth {{count}} javë'
+ },
+ xWeeks: {
+ one: '1 javë',
+ other: '{{count}} javë'
+ },
+ aboutXMonths: {
+ one: 'rreth 1 muaj',
+ other: 'rreth {{count}} muaj'
+ },
+ xMonths: {
+ one: '1 muaj',
+ other: '{{count}} muaj'
+ },
+ aboutXYears: {
+ one: 'rreth 1 vit',
+ other: 'rreth {{count}} vite'
+ },
+ xYears: {
+ one: '1 vit',
+ other: '{{count}} vite'
+ },
+ overXYears: {
+ one: 'mbi 1 vit',
+ other: 'mbi {{count}} vite'
+ },
+ almostXYears: {
+ one: 'pothuajse 1 vit',
+ other: 'pothuajse {{count}} vite'
+ }
+}
+
+export default function formatDistance(token, count, options) {
+ options = options || {}
+
+ var result
+ if (typeof formatDistanceLocale[token] === 'string') {
+ result = formatDistanceLocale[token]
+ } else if (count === 1) {
+ result = formatDistanceLocale[token].one
+ } else {
+ result = formatDistanceLocale[token].other.replace('{{count}}', count)
+ }
+
+ if (options.addSuffix) {
+ if (options.comparison > 0) {
+ return 'në ' + result
+ } else {
+ return result + ' më parë'
+ }
+ }
+
+ return result
+}
diff --git a/date-fns/src/locale/sq/_lib/formatLong/index.js b/date-fns/src/locale/sq/_lib/formatLong/index.js
new file mode 100644
index 0000000..c83c5f6
--- /dev/null
+++ b/date-fns/src/locale/sq/_lib/formatLong/index.js
@@ -0,0 +1,41 @@
+import buildFormatLongFn from '../../../_lib/buildFormatLongFn/index'
+
+var dateFormats = {
+ full: 'EEEE, MMMM do, y',
+ long: 'MMMM do, y',
+ medium: 'MMM d, y',
+ short: 'MM/dd/yyyy'
+}
+
+var timeFormats = {
+ full: 'h:mm:ss a zzzz',
+ long: 'h:mm:ss a z',
+ medium: 'h:mm:ss a',
+ short: 'h:mm a'
+}
+
+var dateTimeFormats = {
+ full: "{{date}} 'në' {{time}}",
+ long: "{{date}} 'në' {{time}}",
+ medium: '{{date}}, {{time}}',
+ short: '{{date}}, {{time}}'
+}
+
+var formatLong = {
+ date: buildFormatLongFn({
+ formats: dateFormats,
+ defaultWidth: 'full'
+ }),
+
+ time: buildFormatLongFn({
+ formats: timeFormats,
+ defaultWidth: 'full'
+ }),
+
+ dateTime: buildFormatLongFn({
+ formats: dateTimeFormats,
+ defaultWidth: 'full'
+ })
+}
+
+export default formatLong
diff --git a/date-fns/src/locale/sq/_lib/formatRelative/index.js b/date-fns/src/locale/sq/_lib/formatRelative/index.js
new file mode 100644
index 0000000..1a5792b
--- /dev/null
+++ b/date-fns/src/locale/sq/_lib/formatRelative/index.js
@@ -0,0 +1,12 @@
+var formatRelativeLocale = {
+ lastWeek: "'të' eeee 'e shkuar në' p",
+ yesterday: "'dje në' p",
+ today: "'sot në' p",
+ tomorrow: "'nesër në' p",
+ nextWeek: "eeee 'at' p",
+ other: 'P'
+}
+
+export default function formatRelative(token, _date, _baseDate, _options) {
+ return formatRelativeLocale[token]
+}
diff --git a/date-fns/src/locale/sq/_lib/localize/index.js b/date-fns/src/locale/sq/_lib/localize/index.js
new file mode 100644
index 0000000..f182f29
--- /dev/null
+++ b/date-fns/src/locale/sq/_lib/localize/index.js
@@ -0,0 +1,181 @@
+import buildLocalizeFn from '../../../_lib/buildLocalizeFn/index'
+
+var eraValues = {
+ narrow: ['P', 'M'],
+ abbreviated: ['PK', 'MK'],
+ wide: ['Para Krishtit', 'Mbas Krishtit']
+}
+
+var quarterValues = {
+ narrow: ['1', '2', '3', '4'],
+ abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],
+ wide: ['4-mujori I', '4-mujori II', '4-mujori III', '4-mujori IV']
+}
+
+// Note: in English, the names of days of the week and months are capitalized.
+// If you are making a new locale based on this one, check if the same is true for the language you're working on.
+// Generally, formatted dates should look like they are in the middle of a sentence,
+// e.g. in Spanish language the weekdays and months should be in the lowercase.
+var monthValues = {
+ narrow: ['J', 'S', 'M', 'P', 'M', 'Q', 'K', 'G', 'S', 'T', 'N', 'D'],
+ abbreviated: [
+ 'Jan',
+ 'Shk',
+ 'Mar',
+ 'Pri',
+ 'Maj',
+ 'Qer',
+ 'Kor',
+ 'Gus',
+ 'Sht',
+ 'Tet',
+ 'Nën',
+ 'Dhj'
+ ],
+ wide: [
+ 'Janar',
+ 'Shkurt',
+ 'Mars',
+ 'Prill',
+ 'Maj',
+ 'Qershor',
+ 'Korrik',
+ 'Gusht',
+ 'Shtator',
+ 'Tetor',
+ 'Nëntor',
+ 'Dhjetor'
+ ]
+}
+
+var dayValues = {
+ narrow: ['D', 'H', 'M', 'M', 'E', 'P', 'S'],
+ short: ['Di', 'Hë', 'Ma', 'Më', 'En', 'Pr', 'Sh'],
+ abbreviated: ['Die', 'Hën', 'Mar', 'Mër', 'Enj', 'Pre', 'Sht'],
+ wide: ['Dielë', 'Hënë', 'Martë', 'Mërkurë', 'Enjte', 'Premte', 'Shtunë']
+}
+
+var dayPeriodValues = {
+ narrow: {
+ am: 'p',
+ pm: 'm',
+ midnight: 'm',
+ noon: 'd',
+ morning: 'mëngjes',
+ afternoon: 'dite',
+ evening: 'mbrëmje',
+ night: 'natë'
+ },
+ abbreviated: {
+ am: 'PD',
+ pm: 'MD',
+ midnight: 'mesnëtë',
+ noon: 'drek',
+ morning: 'mëngjes',
+ afternoon: 'mbasdite',
+ evening: 'mbrëmje',
+ night: 'natë'
+ },
+ wide: {
+ am: 'p.d.',
+ pm: 'm.d.',
+ midnight: 'mesnëtë',
+ noon: 'drek',
+ morning: 'mëngjes',
+ afternoon: 'mbasdite',
+ evening: 'mbrëmje',
+ night: 'natë'
+ }
+}
+var formattingDayPeriodValues = {
+ narrow: {
+ am: 'p',
+ pm: 'm',
+ midnight: 'm',
+ noon: 'd',
+ morning: 'në mëngjes',
+ afternoon: 'në mbasdite',
+ evening: 'në mbrëmje',
+ night: 'në mesnatë'
+ },
+ abbreviated: {
+ am: 'PD',
+ pm: 'MD',
+ midnight: 'mesnatë',
+ noon: 'drek',
+ morning: 'në mëngjes',
+ afternoon: 'në mbasdite',
+ evening: 'në mbrëmje',
+ night: 'në mesnatë'
+ },
+ wide: {
+ am: 'p.d.',
+ pm: 'm.d.',
+ midnight: 'mesnatë',
+ noon: 'drek',
+ morning: 'në mëngjes',
+ afternoon: 'në mbasdite',
+ evening: 'në mbrëmje',
+ night: 'në mesnatë'
+ }
+}
+
+function ordinalNumber(dirtyNumber, _dirtyOptions) {
+ var number = Number(dirtyNumber)
+
+ // If ordinal numbers depend on context, for example,
+ // if they are different for different grammatical genders,
+ // use `options.unit`:
+ //
+ // var options = dirtyOptions || {}
+ // var unit = String(options.unit)
+ //
+ // where `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',
+ // 'day', 'hour', 'minute', 'second'
+
+ var options = _dirtyOptions || {}
+ var unit = String(options.unit)
+
+ if (unit === 'hour') return number
+
+ if (number === 1) return number + '-rë'
+ if (number === 4) return number + 't'
+
+ return number + '-të'
+}
+
+var localize = {
+ ordinalNumber: ordinalNumber,
+
+ era: buildLocalizeFn({
+ values: eraValues,
+ defaultWidth: 'wide'
+ }),
+
+ quarter: buildLocalizeFn({
+ values: quarterValues,
+ defaultWidth: 'wide',
+ argumentCallback: function(quarter) {
+ return Number(quarter) - 1
+ }
+ }),
+
+ month: buildLocalizeFn({
+ values: monthValues,
+ defaultWidth: 'wide'
+ }),
+
+ day: buildLocalizeFn({
+ values: dayValues,
+ defaultWidth: 'wide'
+ }),
+
+ dayPeriod: buildLocalizeFn({
+ values: dayPeriodValues,
+ defaultWidth: 'wide',
+ formattingValues: formattingDayPeriodValues,
+ defaultFormattingWidth: 'wide'
+ })
+}
+
+export default localize
diff --git a/date-fns/src/locale/sq/_lib/match/index.js b/date-fns/src/locale/sq/_lib/match/index.js
new file mode 100644
index 0000000..85f28e8
--- /dev/null
+++ b/date-fns/src/locale/sq/_lib/match/index.js
@@ -0,0 +1,137 @@
+import buildMatchPatternFn from '../../../_lib/buildMatchPatternFn/index'
+import buildMatchFn from '../../../_lib/buildMatchFn/index'
+
+var matchOrdinalNumberPattern = /^(\d+)(-rë|-të|t|)?/i
+var parseOrdinalNumberPattern = /\d+/i
+
+var matchEraPatterns = {
+ narrow: /^(p|m)/i,
+ abbreviated: /^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,
+ wide: /^(para krishtit|mbas krishtit)/i
+}
+var parseEraPatterns = {
+ any: [/^b/i, /^(p|m)/i]
+}
+
+var matchQuarterPatterns = {
+ narrow: /^[1234]/i,
+ abbreviated: /^q[1234]/i,
+ wide: /^[1234]-mujori (i{1,3}|iv)/i
+}
+var parseQuarterPatterns = {
+ any: [/1/i, /2/i, /3/i, /4/i]
+}
+
+var matchMonthPatterns = {
+ narrow: /^[jsmpqkftnd]/i,
+ abbreviated: /^(jan|shk|mar|pri|maj|qer|kor|gus|sht|tet|nën|dhj)/i,
+ wide: /^(janar|shkurt|mars|prill|maj|qershor|korrik|gusht|shtator|tetor|nëntor|dhjetor)/i
+}
+var parseMonthPatterns = {
+ narrow: [
+ /^j/i,
+ /^s/i,
+ /^m/i,
+ /^p/i,
+ /^m/i,
+ /^q/i,
+ /^k/i,
+ /^g/i,
+ /^s/i,
+ /^t/i,
+ /^n/i,
+ /^d/i
+ ],
+ any: [
+ /^ja/i,
+ /^shk/i,
+ /^mar/i,
+ /^pri/i,
+ /^maj/i,
+ /^qer/i,
+ /^kor/i,
+ /^gu/i,
+ /^sht/i,
+ /^tet/i,
+ /^n/i,
+ /^d/i
+ ]
+}
+
+var matchDayPatterns = {
+ narrow: /^[dhmeps]/i,
+ short: /^(di|hë|ma|më|en|pr|sh)/i,
+ abbreviated: /^(die|hën|mar|mër|enj|pre|sht)/i,
+ wide: /^(dielë|hënë|martë|mërkurë|enjte|premte|shtunë)/i
+}
+var parseDayPatterns = {
+ narrow: [/^d/i, /^h/i, /^m/i, /^m/i, /^e/i, /^p/i, /^s/i],
+ any: [/^d/i, /^h/i, /^ma/i, /^më/i, /^e/i, /^p/i, /^s/i]
+}
+
+var matchDayPeriodPatterns = {
+ narrow: /^(p|m|me|në (mëngjes|mbasdite|mbrëmje|mesnatë))/i,
+ any: /^([pm]\.?\s?d\.?|drek|në (mëngjes|mbasdite|mbrëmje|mesnatë))/i
+}
+var parseDayPeriodPatterns = {
+ any: {
+ am: /^p/i,
+ pm: /^m/i,
+ midnight: /^me/i,
+ noon: /^dr/i,
+ morning: /mëngjes/i,
+ afternoon: /mbasdite/i,
+ evening: /mbrëmje/i,
+ night: /natë/i
+ }
+}
+
+var match = {
+ ordinalNumber: buildMatchPatternFn({
+ matchPattern: matchOrdinalNumberPattern,
+ parsePattern: parseOrdinalNumberPattern,
+ valueCallback: function(value) {
+ return parseInt(value, 10)
+ }
+ }),
+
+ era: buildMatchFn({
+ matchPatterns: matchEraPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseEraPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ quarter: buildMatchFn({
+ matchPatterns: matchQuarterPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseQuarterPatterns,
+ defaultParseWidth: 'any',
+ valueCallback: function(index) {
+ return index + 1
+ }
+ }),
+
+ month: buildMatchFn({
+ matchPatterns: matchMonthPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseMonthPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ day: buildMatchFn({
+ matchPatterns: matchDayPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseDayPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ dayPeriod: buildMatchFn({
+ matchPatterns: matchDayPeriodPatterns,
+ defaultMatchWidth: 'any',
+ parsePatterns: parseDayPeriodPatterns,
+ defaultParseWidth: 'any'
+ })
+}
+
+export default match
diff --git a/date-fns/src/locale/sq/index.d.ts b/date-fns/src/locale/sq/index.d.ts
new file mode 100644
index 0000000..d361e22
--- /dev/null
+++ b/date-fns/src/locale/sq/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { sq } from 'date-fns/locale'
+export default sq
diff --git a/date-fns/src/locale/sq/index.js b/date-fns/src/locale/sq/index.js
new file mode 100644
index 0000000..7e777ea
--- /dev/null
+++ b/date-fns/src/locale/sq/index.js
@@ -0,0 +1,28 @@
+import formatDistance from './_lib/formatDistance/index'
+import formatLong from './_lib/formatLong/index'
+import formatRelative from './_lib/formatRelative/index'
+import localize from './_lib/localize/index'
+import match from './_lib/match/index'
+
+/**
+ * @type {Locale}
+ * @category Locales
+ * @summary Albanian locale.
+ * @language Shqip
+ * @iso-639-2 sqi
+ * @author Ardit Dine [@arditdine]{@link https://github.com/arditdine}
+ */
+var locale = {
+ code: 'sq',
+ formatDistance: formatDistance,
+ formatLong: formatLong,
+ formatRelative: formatRelative,
+ localize: localize,
+ match: match,
+ options: {
+ weekStartsOn: 1 /* Monday */,
+ firstWeekContainsDate: 1,
+ },
+}
+
+export default locale
diff --git a/date-fns/src/locale/sq/index.js.flow b/date-fns/src/locale/sq/index.js.flow
new file mode 100644
index 0000000..b9dfe66
--- /dev/null
+++ b/date-fns/src/locale/sq/index.js.flow
@@ -0,0 +1,35 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+declare module.exports: Locale
diff --git a/date-fns/src/locale/sq/snapshot.md b/date-fns/src/locale/sq/snapshot.md
new file mode 100644
index 0000000..722d0c6
--- /dev/null
+++ b/date-fns/src/locale/sq/snapshot.md
@@ -0,0 +1,304 @@
+# Shqip (sq) locale
+
+## `format` and `parse`
+
+| Title | Token string | Date | `format` result | `parse` result |
+| ------------------------------- | ------------ | ------------------------ | ---------------------------------------------------- | ------------------------ |
+| Calendar year | yo | 1987-02-11T12:13:14.015Z | 1987-të | 1987-01-01T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 5-të | 0005-01-01T00:00:00.000Z |
+| Local week-numbering year | Yo | 1987-02-11T12:13:14.015Z | 1987-të | 1986-12-29T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 5-të | 0004-12-27T00:00:00.000Z |
+| Quarter (formatting) | Qo | 2019-01-01T12:13:14.015Z | 1-rë | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2-të | 2019-04-01T00:00:00.000Z |
+| | QQQ | 2019-01-01T12:13:14.015Z | Q1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | Q2 | 2019-04-01T00:00:00.000Z |
+| | QQQQ | 2019-01-01T12:13:14.015Z | 4-mujori I | 2019-10-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 4-mujori II | 2019-10-01T00:00:00.000Z |
+| | QQQQQ | 2019-01-01T12:13:14.015Z | 1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2 | 2019-04-01T00:00:00.000Z |
+| Quarter (stand-alone) | qo | 2019-01-01T12:13:14.015Z | 1-rë | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2-të | 2019-04-01T00:00:00.000Z |
+| | qqq | 2019-01-01T12:13:14.015Z | Q1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | Q2 | 2019-04-01T00:00:00.000Z |
+| | qqqq | 2019-01-01T12:13:14.015Z | 4-mujori I | 2019-10-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 4-mujori II | 2019-10-01T00:00:00.000Z |
+| Month (formatting) | Mo | 2019-02-11T12:13:14.015Z | 2-të | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7-të | 2019-07-01T00:00:00.000Z |
+| | MMM | 2019-02-11T12:13:14.015Z | Shk | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | Kor | 2019-07-01T00:00:00.000Z |
+| | MMMM | 2019-02-11T12:13:14.015Z | Shkurt | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | Korrik | 2019-07-01T00:00:00.000Z |
+| | MMMMM | 2019-02-11T12:13:14.015Z | S | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | K | 2019-07-01T00:00:00.000Z |
+| Month (stand-alone) | Lo | 2019-02-11T12:13:14.015Z | 2-të | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7-të | 2019-07-01T00:00:00.000Z |
+| | LLL | 2019-02-11T12:13:14.015Z | Shk | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | Kor | 2019-07-01T00:00:00.000Z |
+| | LLLL | 2019-02-11T12:13:14.015Z | Shkurt | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | Korrik | 2019-07-01T00:00:00.000Z |
+| | LLLLL | 2019-02-11T12:13:14.015Z | S | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | K | 2019-07-01T00:00:00.000Z |
+| Local week of year | wo | 2019-01-01T12:13:14.015Z | 1-rë | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48-të | 2019-11-25T00:00:00.000Z |
+| ISO week of year | Io | 2019-01-01T12:13:14.015Z | 1-rë | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48-të | 2019-11-25T00:00:00.000Z |
+| Day of month | do | 2019-02-11T12:13:14.015Z | 11-të | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-28T12:13:14.015Z | 28-të | 2019-02-28T00:00:00.000Z |
+| Day of year | Do | 2019-02-11T12:13:14.015Z | 42-të | 2019-02-11T00:00:00.000Z |
+| | | 2019-12-31T12:13:14.015Z | 365-të | 2019-12-31T00:00:00.000Z |
+| Day of week (formatting) | E | 2019-02-11T12:13:14.015Z | Hën | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Pre | 2019-02-15T00:00:00.000Z |
+| | EE | 2019-02-11T12:13:14.015Z | Hën | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Pre | 2019-02-15T00:00:00.000Z |
+| | EEE | 2019-02-11T12:13:14.015Z | Hën | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Pre | 2019-02-15T00:00:00.000Z |
+| | EEEE | 2019-02-11T12:13:14.015Z | Hënë | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Premte | 2019-02-15T00:00:00.000Z |
+| | EEEEE | 2019-02-11T12:13:14.015Z | H | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | P | 2019-02-15T00:00:00.000Z |
+| | EEEEEE | 2019-02-11T12:13:14.015Z | Hë | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Pr | 2019-02-15T00:00:00.000Z |
+| ISO day of week (formatting) | io | 2019-02-11T12:13:14.015Z | 1-rë | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5-të | 2019-02-15T00:00:00.000Z |
+| | iii | 2019-02-11T12:13:14.015Z | Hën | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Pre | 2019-02-15T00:00:00.000Z |
+| | iiii | 2019-02-11T12:13:14.015Z | Hënë | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Premte | 2019-02-15T00:00:00.000Z |
+| | iiiii | 2019-02-11T12:13:14.015Z | H | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | P | 2019-02-15T00:00:00.000Z |
+| | iiiiii | 2019-02-11T12:13:14.015Z | Hë | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Pr | 2019-02-15T00:00:00.000Z |
+| Local day of week (formatting) | eo | 2019-02-11T12:13:14.015Z | 1-rë | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5-të | 2019-02-15T00:00:00.000Z |
+| | eee | 2019-02-11T12:13:14.015Z | Hën | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Pre | 2019-02-15T00:00:00.000Z |
+| | eeee | 2019-02-11T12:13:14.015Z | Hënë | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Premte | 2019-02-15T00:00:00.000Z |
+| | eeeee | 2019-02-11T12:13:14.015Z | H | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | P | 2019-02-15T00:00:00.000Z |
+| | eeeeee | 2019-02-11T12:13:14.015Z | Hë | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Pr | 2019-02-15T00:00:00.000Z |
+| Local day of week (stand-alone) | co | 2019-02-11T12:13:14.015Z | 1-rë | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5-të | 2019-02-15T00:00:00.000Z |
+| | ccc | 2019-02-11T12:13:14.015Z | Hën | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Pre | 2019-02-15T00:00:00.000Z |
+| | cccc | 2019-02-11T12:13:14.015Z | Hënë | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Premte | 2019-02-15T00:00:00.000Z |
+| | ccccc | 2019-02-11T12:13:14.015Z | H | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | P | 2019-02-15T00:00:00.000Z |
+| | cccccc | 2019-02-11T12:13:14.015Z | Hë | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Pr | 2019-02-15T00:00:00.000Z |
+| AM, PM | a | 2019-02-11T11:13:14.015Z | PD | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | MD | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | MD | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | PD | 2019-02-11T00:00:00.000Z |
+| | aa | 2019-02-11T11:13:14.015Z | PD | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | MD | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | MD | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | PD | 2019-02-11T00:00:00.000Z |
+| | aaa | 2019-02-11T11:13:14.015Z | pd | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | md | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | md | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | pd | 2019-02-11T00:00:00.000Z |
+| | aaaa | 2019-02-11T11:13:14.015Z | p.d. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | m.d. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | m.d. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | p.d. | 2019-02-11T00:00:00.000Z |
+| | aaaaa | 2019-02-11T11:13:14.015Z | p | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | m | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | m | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | p | 2019-02-11T00:00:00.000Z |
+| AM, PM, noon, midnight | b | 2019-02-11T11:13:14.015Z | PD | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | MD | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | MD | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | PD | 2019-02-11T00:00:00.000Z |
+| | bb | 2019-02-11T11:13:14.015Z | PD | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | MD | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | MD | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | PD | 2019-02-11T00:00:00.000Z |
+| | bbb | 2019-02-11T11:13:14.015Z | pd | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | md | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | md | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | pd | 2019-02-11T00:00:00.000Z |
+| | bbbb | 2019-02-11T11:13:14.015Z | p.d. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | m.d. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | m.d. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | p.d. | 2019-02-11T00:00:00.000Z |
+| | bbbbb | 2019-02-11T11:13:14.015Z | p | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | m | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | m | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | p | 2019-02-11T00:00:00.000Z |
+| Flexible day period | B | 2019-02-11T11:13:14.015Z | në mëngjes | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | në mbasdite | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | në mbrëmje | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | në mesnatë | 2019-02-11T00:00:00.000Z |
+| | BB | 2019-02-11T11:13:14.015Z | në mëngjes | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | në mbasdite | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | në mbrëmje | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | në mesnatë | 2019-02-11T00:00:00.000Z |
+| | BBB | 2019-02-11T11:13:14.015Z | në mëngjes | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | në mbasdite | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | në mbrëmje | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | në mesnatë | 2019-02-11T00:00:00.000Z |
+| | BBBB | 2019-02-11T11:13:14.015Z | në mëngjes | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | në mbasdite | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | në mbrëmje | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | në mesnatë | 2019-02-11T00:00:00.000Z |
+| | BBBBB | 2019-02-11T11:13:14.015Z | në mëngjes | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | në mbasdite | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | në mbrëmje | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | në mesnatë | 2019-02-11T00:00:00.000Z |
+| Hour [1-12] | ho | 2019-02-11T11:13:14.015Z | 11 | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11 | 2019-02-11T23:00:00.000Z |
+| Hour [0-23] | Ho | 2019-02-11T11:13:14.015Z | 11 | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23 | 2019-02-11T23:00:00.000Z |
+| Hour [0-11] | Ko | 2019-02-11T11:13:14.015Z | 11 | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11 | 2019-02-11T23:00:00.000Z |
+| Hour [1-24] | ko | 2019-02-11T11:13:14.015Z | 11 | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23 | 2019-02-11T23:00:00.000Z |
+| Minute | mo | 2019-01-01T12:01:14.015Z | 1-rë | 2019-01-01T12:01:00.000Z |
+| | | 2019-04-01T12:55:14.015Z | 55-të | 2019-04-01T12:55:00.000Z |
+| Second | so | 2019-01-01T12:13:01.015Z | 1-rë | 2019-01-01T12:13:01.000Z |
+| | | 2019-04-01T12:13:55.015Z | 55-të | 2019-04-01T12:13:55.000Z |
+| Long localized date | P | 1987-02-11T12:13:14.015Z | 02/11/1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 05/29/1453 | 1453-05-29T00:00:00.000Z |
+| | PP | 1987-02-11T12:13:14.015Z | Shk 11, 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | Maj 29, 1453 | 1453-05-29T00:00:00.000Z |
+| | PPP | 1987-02-11T12:13:14.015Z | Shkurt 11-të, 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | Maj 29-të, 1453 | 1453-05-29T00:00:00.000Z |
+| | PPPP | 1987-02-11T12:13:14.015Z | Mërkurë, Shkurt 11-të, 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | Dielë, Maj 29-të, 1453 | 1453-05-29T00:00:00.000Z |
+| Long localized time | p | 1987-02-11T12:13:14.015Z | 12:13 MD | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 11:59 MD | 1453-05-29T23:59:00.000Z |
+| | pp | 1987-02-11T12:13:14.015Z | 12:13:14 MD | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 11:59:59 MD | 1453-05-29T23:59:59.000Z |
+| | ppp | 1987-02-11T12:13:14.015Z | 12:13:14 MD GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 11:59:59 MD GMT+0 | Errored |
+| | pppp | 1987-02-11T12:13:14.015Z | 12:13:14 MD GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 11:59:59 MD GMT+00:00 | Errored |
+| Combination of date and time | Pp | 1987-02-11T12:13:14.015Z | 02/11/1987, 12:13 MD | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 05/29/1453, 11:59 MD | 1453-05-29T23:59:00.000Z |
+| | PPpp | 1987-02-11T12:13:14.015Z | Shk 11, 1987, 12:13:14 MD | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | Maj 29, 1453, 11:59:59 MD | 1453-05-29T23:59:59.000Z |
+| | PPPppp | 1987-02-11T12:13:14.015Z | Shkurt 11-të, 1987 në 12:13:14 MD GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | Maj 29-të, 1453 në 11:59:59 MD GMT+0 | Errored |
+| | PPPPpppp | 1987-02-11T12:13:14.015Z | Mërkurë, Shkurt 11-të, 1987 në 12:13:14 MD GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | Dielë, Maj 29-të, 1453 në 11:59:59 MD GMT+00:00 | Errored |
+
+## `formatDistance`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `includeSeconds: true` | `addSuffix: true` |
+| ------------------------ | -------------------- | ---------------------- | ---------------------------- |
+| 2006-01-01T00:00:00.000Z | rreth 6 vite | rreth 6 vite | në rreth 6 vite |
+| 2005-01-01T00:00:00.000Z | rreth 5 vite | rreth 5 vite | në rreth 5 vite |
+| 2004-01-01T00:00:00.000Z | rreth 4 vite | rreth 4 vite | në rreth 4 vite |
+| 2003-01-01T00:00:00.000Z | rreth 3 vite | rreth 3 vite | në rreth 3 vite |
+| 2002-01-01T00:00:00.000Z | rreth 2 vite | rreth 2 vite | në rreth 2 vite |
+| 2001-06-01T00:00:00.000Z | mbi 1 vit | mbi 1 vit | në mbi 1 vit |
+| 2001-02-01T00:00:00.000Z | rreth 1 vit | rreth 1 vit | në rreth 1 vit |
+| 2001-01-01T00:00:00.000Z | rreth 1 vit | rreth 1 vit | në rreth 1 vit |
+| 2000-06-01T00:00:00.000Z | 5 muaj | 5 muaj | në 5 muaj |
+| 2000-03-01T00:00:00.000Z | 2 muaj | 2 muaj | në 2 muaj |
+| 2000-02-01T00:00:00.000Z | rreth 1 muaj | rreth 1 muaj | në rreth 1 muaj |
+| 2000-01-15T00:00:00.000Z | 14 ditë | 14 ditë | në 14 ditë |
+| 2000-01-02T00:00:00.000Z | 1 ditë | 1 ditë | në 1 ditë |
+| 2000-01-01T06:00:00.000Z | rreth 6 orë | rreth 6 orë | në rreth 6 orë |
+| 2000-01-01T01:00:00.000Z | rreth 1 orë | rreth 1 orë | në rreth 1 orë |
+| 2000-01-01T00:45:00.000Z | rreth 1 orë | rreth 1 orë | në rreth 1 orë |
+| 2000-01-01T00:30:00.000Z | 30 minuta | 30 minuta | në 30 minuta |
+| 2000-01-01T00:15:00.000Z | 15 minuta | 15 minuta | në 15 minuta |
+| 2000-01-01T00:01:00.000Z | 1 minutë | 1 minutë | në 1 minutë |
+| 2000-01-01T00:00:25.000Z | më pak se një minute | gjysëm minuti | në më pak se një minute |
+| 2000-01-01T00:00:15.000Z | më pak se një minute | më pak se 20 sekonda | në më pak se një minute |
+| 2000-01-01T00:00:05.000Z | më pak se një minute | më pak se 10 sekonda | në më pak se një minute |
+| 2000-01-01T00:00:00.000Z | më pak se një minute | më pak se 5 sekonda | më pak se një minute më parë |
+| 1999-12-31T23:59:55.000Z | më pak se një minute | më pak se 10 sekonda | më pak se një minute më parë |
+| 1999-12-31T23:59:45.000Z | më pak se një minute | më pak se 20 sekonda | më pak se një minute më parë |
+| 1999-12-31T23:59:35.000Z | më pak se një minute | gjysëm minuti | më pak se një minute më parë |
+| 1999-12-31T23:59:00.000Z | 1 minutë | 1 minutë | 1 minutë më parë |
+| 1999-12-31T23:45:00.000Z | 15 minuta | 15 minuta | 15 minuta më parë |
+| 1999-12-31T23:30:00.000Z | 30 minuta | 30 minuta | 30 minuta më parë |
+| 1999-12-31T23:15:00.000Z | rreth 1 orë | rreth 1 orë | rreth 1 orë më parë |
+| 1999-12-31T23:00:00.000Z | rreth 1 orë | rreth 1 orë | rreth 1 orë më parë |
+| 1999-12-31T18:00:00.000Z | rreth 6 orë | rreth 6 orë | rreth 6 orë më parë |
+| 1999-12-30T00:00:00.000Z | 2 ditë | 2 ditë | 2 ditë më parë |
+| 1999-12-15T00:00:00.000Z | 17 ditë | 17 ditë | 17 ditë më parë |
+| 1999-12-01T00:00:00.000Z | rreth 1 muaj | rreth 1 muaj | rreth 1 muaj më parë |
+| 1999-11-01T00:00:00.000Z | 2 muaj | 2 muaj | 2 muaj më parë |
+| 1999-06-01T00:00:00.000Z | 7 muaj | 7 muaj | 7 muaj më parë |
+| 1999-01-01T00:00:00.000Z | rreth 1 vit | rreth 1 vit | rreth 1 vit më parë |
+| 1998-12-01T00:00:00.000Z | rreth 1 vit | rreth 1 vit | rreth 1 vit më parë |
+| 1998-06-01T00:00:00.000Z | mbi 1 vit | mbi 1 vit | mbi 1 vit më parë |
+| 1998-01-01T00:00:00.000Z | rreth 2 vite | rreth 2 vite | rreth 2 vite më parë |
+| 1997-01-01T00:00:00.000Z | rreth 3 vite | rreth 3 vite | rreth 3 vite më parë |
+| 1996-01-01T00:00:00.000Z | rreth 4 vite | rreth 4 vite | rreth 4 vite më parë |
+| 1995-01-01T00:00:00.000Z | rreth 5 vite | rreth 5 vite | rreth 5 vite më parë |
+| 1994-01-01T00:00:00.000Z | rreth 6 vite | rreth 6 vite | rreth 6 vite më parë |
+
+## `formatDistanceStrict`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `addSuffix: true` | With forced unit (i.e. `hour`) |
+| ------------------------ | ---------- | ------------------ | ------------------------------ |
+| 2006-01-01T00:00:00.000Z | 6 vite | në 6 vite | 52608 orë |
+| 2005-01-01T00:00:00.000Z | 5 vite | në 5 vite | 43848 orë |
+| 2004-01-01T00:00:00.000Z | 4 vite | në 4 vite | 35064 orë |
+| 2003-01-01T00:00:00.000Z | 3 vite | në 3 vite | 26304 orë |
+| 2002-01-01T00:00:00.000Z | 2 vite | në 2 vite | 17544 orë |
+| 2001-06-01T00:00:00.000Z | 1 vit | në 1 vit | 12408 orë |
+| 2001-02-01T00:00:00.000Z | 1 vit | në 1 vit | 9528 orë |
+| 2001-01-01T00:00:00.000Z | 1 vit | në 1 vit | 8784 orë |
+| 2000-06-01T00:00:00.000Z | 5 muaj | në 5 muaj | 3648 orë |
+| 2000-03-01T00:00:00.000Z | 2 muaj | në 2 muaj | 1440 orë |
+| 2000-02-01T00:00:00.000Z | 1 muaj | në 1 muaj | 744 orë |
+| 2000-01-15T00:00:00.000Z | 14 ditë | në 14 ditë | 336 orë |
+| 2000-01-02T00:00:00.000Z | 1 ditë | në 1 ditë | 24 orë |
+| 2000-01-01T06:00:00.000Z | 6 orë | në 6 orë | 6 orë |
+| 2000-01-01T01:00:00.000Z | 1 orë | në 1 orë | 1 orë |
+| 2000-01-01T00:45:00.000Z | 45 minuta | në 45 minuta | 1 orë |
+| 2000-01-01T00:30:00.000Z | 30 minuta | në 30 minuta | 1 orë |
+| 2000-01-01T00:15:00.000Z | 15 minuta | në 15 minuta | 0 orë |
+| 2000-01-01T00:01:00.000Z | 1 minutë | në 1 minutë | 0 orë |
+| 2000-01-01T00:00:25.000Z | 25 sekonda | në 25 sekonda | 0 orë |
+| 2000-01-01T00:00:15.000Z | 15 sekonda | në 15 sekonda | 0 orë |
+| 2000-01-01T00:00:05.000Z | 5 sekonda | në 5 sekonda | 0 orë |
+| 2000-01-01T00:00:00.000Z | 0 sekonda | 0 sekonda më parë | 0 orë |
+| 1999-12-31T23:59:55.000Z | 5 sekonda | 5 sekonda më parë | 0 orë |
+| 1999-12-31T23:59:45.000Z | 15 sekonda | 15 sekonda më parë | 0 orë |
+| 1999-12-31T23:59:35.000Z | 25 sekonda | 25 sekonda më parë | 0 orë |
+| 1999-12-31T23:59:00.000Z | 1 minutë | 1 minutë më parë | 0 orë |
+| 1999-12-31T23:45:00.000Z | 15 minuta | 15 minuta më parë | 0 orë |
+| 1999-12-31T23:30:00.000Z | 30 minuta | 30 minuta më parë | 1 orë |
+| 1999-12-31T23:15:00.000Z | 45 minuta | 45 minuta më parë | 1 orë |
+| 1999-12-31T23:00:00.000Z | 1 orë | 1 orë më parë | 1 orë |
+| 1999-12-31T18:00:00.000Z | 6 orë | 6 orë më parë | 6 orë |
+| 1999-12-30T00:00:00.000Z | 2 ditë | 2 ditë më parë | 48 orë |
+| 1999-12-15T00:00:00.000Z | 17 ditë | 17 ditë më parë | 408 orë |
+| 1999-12-01T00:00:00.000Z | 1 muaj | 1 muaj më parë | 744 orë |
+| 1999-11-01T00:00:00.000Z | 2 muaj | 2 muaj më parë | 1464 orë |
+| 1999-06-01T00:00:00.000Z | 7 muaj | 7 muaj më parë | 5136 orë |
+| 1999-01-01T00:00:00.000Z | 1 vit | 1 vit më parë | 8760 orë |
+| 1998-12-01T00:00:00.000Z | 1 vit | 1 vit më parë | 9504 orë |
+| 1998-06-01T00:00:00.000Z | 2 vite | 2 vite më parë | 13896 orë |
+| 1998-01-01T00:00:00.000Z | 2 vite | 2 vite më parë | 17520 orë |
+| 1997-01-01T00:00:00.000Z | 3 vite | 3 vite më parë | 26280 orë |
+| 1996-01-01T00:00:00.000Z | 4 vite | 4 vite më parë | 35064 orë |
+| 1995-01-01T00:00:00.000Z | 5 vite | 5 vite më parë | 43824 orë |
+| 1994-01-01T00:00:00.000Z | 6 vite | 6 vite më parë | 52584 orë |
+
+## `formatRelative`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result |
+| ------------------------ | ---------------------------- |
+| 2000-01-10T00:00:00.000Z | 01/10/2000 |
+| 2000-01-05T00:00:00.000Z | Mërkurë at 12:00 PD |
+| 2000-01-02T00:00:00.000Z | nesër në 12:00 PD |
+| 2000-01-01T00:00:00.000Z | sot në 12:00 PD |
+| 1999-12-31T00:00:00.000Z | dje në 12:00 PD |
+| 1999-12-27T00:00:00.000Z | të Hënë e shkuar në 12:00 PD |
+| 1999-12-21T00:00:00.000Z | 12/21/1999 |
diff --git a/date-fns/src/locale/sr-Latn/_lib/formatDistance/index.js b/date-fns/src/locale/sr-Latn/_lib/formatDistance/index.js
new file mode 100644
index 0000000..e27c19d
--- /dev/null
+++ b/date-fns/src/locale/sr-Latn/_lib/formatDistance/index.js
@@ -0,0 +1,191 @@
+var formatDistanceLocale = {
+ lessThanXSeconds: {
+ one: {
+ standalone: 'manje od 1 sekunde',
+ withPrepositionAgo: 'manje od 1 sekunde',
+ withPrepositionIn: 'manje od 1 sekundu'
+ },
+ dual: 'manje od {{count}} sekunde',
+ other: 'manje od {{count}} sekundi'
+ },
+
+ xSeconds: {
+ one: {
+ standalone: '1 sekunda',
+ withPrepositionAgo: '1 sekunde',
+ withPrepositionIn: '1 sekundu'
+ },
+ dual: '{{count}} sekunde',
+ other: '{{count}} sekundi'
+ },
+
+ halfAMinute: 'pola minute',
+
+ lessThanXMinutes: {
+ one: {
+ standalone: 'manje od 1 minute',
+ withPrepositionAgo: 'manje od 1 minute',
+ withPrepositionIn: 'manje od 1 minutu'
+ },
+ dual: 'manje od {{count}} minute',
+ other: 'manje od {{count}} minuta'
+ },
+
+ xMinutes: {
+ one: {
+ standalone: '1 minuta',
+ withPrepositionAgo: '1 minute',
+ withPrepositionIn: '1 minutu'
+ },
+ dual: '{{count}} minute',
+ other: '{{count}} minuta'
+ },
+
+ aboutXHours: {
+ one: {
+ standalone: 'oko 1 sat',
+ withPrepositionAgo: 'oko 1 sat',
+ withPrepositionIn: 'oko 1 sat'
+ },
+ dual: 'oko {{count}} sata',
+ other: 'oko {{count}} sati'
+ },
+
+ xHours: {
+ one: {
+ standalone: '1 sat',
+ withPrepositionAgo: '1 sat',
+ withPrepositionIn: '1 sat'
+ },
+ dual: '{{count}} sata',
+ other: '{{count}} sati'
+ },
+
+ xDays: {
+ one: {
+ standalone: '1 dan',
+ withPrepositionAgo: '1 dan',
+ withPrepositionIn: '1 dan'
+ },
+ dual: '{{count}} dana',
+ other: '{{count}} dana'
+ },
+
+ aboutXWeeks: {
+ one: {
+ standalone: 'oko 1 nedelju',
+ withPrepositionAgo: 'oko 1 nedelju',
+ withPrepositionIn: 'oko 1 nedelju'
+ },
+ dual: 'oko {{count}} nedelje',
+ other: 'oko {{count}} nedelje'
+ },
+
+ xWeeks: {
+ one: {
+ standalone: '1 nedelju',
+ withPrepositionAgo: '1 nedelju',
+ withPrepositionIn: '1 nedelju'
+ },
+ dual: '{{count}} nedelje',
+ other: '{{count}} nedelje'
+ },
+
+ aboutXMonths: {
+ one: {
+ standalone: 'oko 1 mesec',
+ withPrepositionAgo: 'oko 1 mesec',
+ withPrepositionIn: 'oko 1 mesec'
+ },
+ dual: 'oko {{count}} meseca',
+ other: 'oko {{count}} meseci'
+ },
+
+ xMonths: {
+ one: {
+ standalone: '1 mesec',
+ withPrepositionAgo: '1 mesec',
+ withPrepositionIn: '1 mesec'
+ },
+ dual: '{{count}} meseca',
+ other: '{{count}} meseci'
+ },
+
+ aboutXYears: {
+ one: {
+ standalone: 'oko 1 godinu',
+ withPrepositionAgo: 'oko 1 godinu',
+ withPrepositionIn: 'oko 1 godinu'
+ },
+ dual: 'oko {{count}} godine',
+ other: 'oko {{count}} godina'
+ },
+
+ xYears: {
+ one: {
+ standalone: '1 godina',
+ withPrepositionAgo: '1 godine',
+ withPrepositionIn: '1 godinu'
+ },
+ dual: '{{count}} godine',
+ other: '{{count}} godina'
+ },
+
+ overXYears: {
+ one: {
+ standalone: 'preko 1 godinu',
+ withPrepositionAgo: 'preko 1 godinu',
+ withPrepositionIn: 'preko 1 godinu'
+ },
+ dual: 'preko {{count}} godine',
+ other: 'preko {{count}} godina'
+ },
+
+ almostXYears: {
+ one: {
+ standalone: 'gotovo 1 godinu',
+ withPrepositionAgo: 'gotovo 1 godinu',
+ withPrepositionIn: 'gotovo 1 godinu'
+ },
+ dual: 'gotovo {{count}} godine',
+ other: 'gotovo {{count}} godina'
+ }
+}
+
+export default function formatDistance(token, count, options) {
+ options = options || {}
+
+ var result
+
+ if (typeof formatDistanceLocale[token] === 'string') {
+ result = formatDistanceLocale[token]
+ } else if (count === 1) {
+ if (options.addSuffix) {
+ if (options.comparison > 0) {
+ result = formatDistanceLocale[token].one.withPrepositionIn
+ } else {
+ result = formatDistanceLocale[token].one.withPrepositionAgo
+ }
+ } else {
+ result = formatDistanceLocale[token].one.standalone
+ }
+ } else if (
+ count % 10 > 1 &&
+ count % 10 < 5 && // if last digit is between 2 and 4
+ String(count).substr(-2, 1) !== '1' // unless the 2nd to last digit is "1"
+ ) {
+ result = formatDistanceLocale[token].dual.replace('{{count}}', count)
+ } else {
+ result = formatDistanceLocale[token].other.replace('{{count}}', count)
+ }
+
+ if (options.addSuffix) {
+ if (options.comparison > 0) {
+ return 'za ' + result
+ } else {
+ return 'pre ' + result
+ }
+ }
+
+ return result
+}
diff --git a/date-fns/src/locale/sr-Latn/_lib/formatLong/index.js b/date-fns/src/locale/sr-Latn/_lib/formatLong/index.js
new file mode 100644
index 0000000..52631f4
--- /dev/null
+++ b/date-fns/src/locale/sr-Latn/_lib/formatLong/index.js
@@ -0,0 +1,39 @@
+import buildFormatLongFn from '../../../_lib/buildFormatLongFn/index'
+
+var dateFormats = {
+ full: 'EEEE, d. MMMM yyyy.',
+ long: 'd. MMMM yyyy.',
+ medium: 'd. MMM yy.',
+ short: 'dd. MM. yy.'
+}
+
+var timeFormats = {
+ full: 'HH:mm:ss (zzzz)',
+ long: 'HH:mm:ss z',
+ medium: 'HH:mm:ss',
+ short: 'HH:mm'
+}
+
+var dateTimeFormats = {
+ full: "{{date}} 'u' {{time}}",
+ long: "{{date}} 'u' {{time}}",
+ medium: '{{date}} {{time}}',
+ short: '{{date}} {{time}}'
+}
+
+var formatLong = {
+ date: buildFormatLongFn({
+ formats: dateFormats,
+ defaultWidth: 'full'
+ }),
+ time: buildFormatLongFn({
+ formats: timeFormats,
+ defaultWidth: 'full'
+ }),
+ dateTime: buildFormatLongFn({
+ formats: dateTimeFormats,
+ defaultWidth: 'full'
+ })
+}
+
+export default formatLong
diff --git a/date-fns/src/locale/sr-Latn/_lib/formatRelative/index.js b/date-fns/src/locale/sr-Latn/_lib/formatRelative/index.js
new file mode 100644
index 0000000..2d717cd
--- /dev/null
+++ b/date-fns/src/locale/sr-Latn/_lib/formatRelative/index.js
@@ -0,0 +1,44 @@
+var formatRelativeLocale = {
+ lastWeek: function(date) {
+ var day = date.getUTCDay()
+
+ switch (day) {
+ case 0:
+ return "'prošle nedelje u' p"
+ case 3:
+ return "'prošle srede u' p"
+ case 6:
+ return "'prošle subote u' p"
+ default:
+ return "'prošli' EEEE 'u' p"
+ }
+ },
+ yesterday: "'juče u' p",
+ today: "'danas u' p",
+ tomorrow: "'sutra u' p",
+ nextWeek: function(date) {
+ var day = date.getUTCDay()
+
+ switch (day) {
+ case 0:
+ return "'sledeće nedelje u' p"
+ case 3:
+ return "'sledeću sredu u' p"
+ case 6:
+ return "'sledeću subotu u' p"
+ default:
+ return "'sledeći' EEEE 'u' p"
+ }
+ },
+ other: 'P'
+}
+
+export default function formatRelative(token, date, _baseDate, _options) {
+ var format = formatRelativeLocale[token]
+
+ if (typeof format === 'function') {
+ return format(date)
+ }
+
+ return format
+}
diff --git a/date-fns/src/locale/sr-Latn/_lib/localize/index.js b/date-fns/src/locale/sr-Latn/_lib/localize/index.js
new file mode 100644
index 0000000..ea01814
--- /dev/null
+++ b/date-fns/src/locale/sr-Latn/_lib/localize/index.js
@@ -0,0 +1,222 @@
+import buildLocalizeFn from '../../../_lib/buildLocalizeFn/index'
+
+function ordinalNumber(dirtyNumber) {
+ var number = Number(dirtyNumber)
+ return String(number).concat('.')
+}
+
+var eraValues = {
+ narrow: ['pr.n.e.', 'AD'],
+ abbreviated: ['pr. Hr.', 'po. Hr.'],
+ wide: ['Pre Hrista', 'Posle Hrista']
+}
+
+var monthValues = {
+ narrow: [
+ '1.',
+ '2.',
+ '3.',
+ '4.',
+ '5.',
+ '6.',
+ '7.',
+ '8.',
+ '9.',
+ '10.',
+ '11.',
+ '12.'
+ ],
+ abbreviated: [
+ 'jan',
+ 'feb',
+ 'mar',
+ 'apr',
+ 'maj',
+ 'jun',
+ 'jul',
+ 'avg',
+ 'sep',
+ 'okt',
+ 'nov',
+ 'dec'
+ ],
+ wide: [
+ 'januar',
+ 'februar',
+ 'mart',
+ 'april',
+ 'maj',
+ 'jun',
+ 'jul',
+ 'avgust',
+ 'septembar',
+ 'oktobar',
+ 'novembar',
+ 'decembar'
+ ]
+}
+
+var formattingMonthValues = {
+ narrow: [
+ '1.',
+ '2.',
+ '3.',
+ '4.',
+ '5.',
+ '6.',
+ '7.',
+ '8.',
+ '9.',
+ '10.',
+ '11.',
+ '12.'
+ ],
+ abbreviated: [
+ 'jan',
+ 'feb',
+ 'mar',
+ 'apr',
+ 'maj',
+ 'jun',
+ 'jul',
+ 'avg',
+ 'sep',
+ 'okt',
+ 'nov',
+ 'dec'
+ ],
+ wide: [
+ 'januar',
+ 'februar',
+ 'mart',
+ 'april',
+ 'maj',
+ 'jun',
+ 'jul',
+ 'avgust',
+ 'septembar',
+ 'oktobar',
+ 'novembar',
+ 'decembar'
+ ]
+}
+
+var quarterValues = {
+ narrow: ['1.', '2.', '3.', '4.'],
+ abbreviated: ['1. kv.', '2. kv.', '3. kv.', '4. kv.'],
+ wide: ['1. kvartal', '2. kvartal', '3. kvartal', '4. kvartal']
+}
+
+var dayValues = {
+ narrow: ['N', 'P', 'U', 'S', 'Č', 'P', 'S'],
+ short: ['ned', 'pon', 'uto', 'sre', 'čet', 'pet', 'sub'],
+ abbreviated: ['ned', 'pon', 'uto', 'sre', 'čet', 'pet', 'sub'],
+ wide: [
+ 'nedelja',
+ 'ponedeljak',
+ 'utorak',
+ 'sreda',
+ 'četvrtak',
+ 'petak',
+ 'subota'
+ ]
+}
+
+var formattingDayPeriodValues = {
+ narrow: {
+ am: 'AM',
+ pm: 'PM',
+ midnight: 'ponoć',
+ noon: 'podne',
+ morning: 'ujutru',
+ afternoon: 'popodne',
+ evening: 'uveče',
+ night: 'noću'
+ },
+ abbreviated: {
+ am: 'AM',
+ pm: 'PM',
+ midnight: 'ponoć',
+ noon: 'podne',
+ morning: 'ujutru',
+ afternoon: 'popodne',
+ evening: 'uveče',
+ night: 'noću'
+ },
+ wide: {
+ am: 'AM',
+ pm: 'PM',
+ midnight: 'ponoć',
+ noon: 'podne',
+ morning: 'ujutru',
+ afternoon: 'posle podne',
+ evening: 'uveče',
+ night: 'noću'
+ }
+}
+
+var dayPeriodValues = {
+ narrow: {
+ am: 'AM',
+ pm: 'PM',
+ midnight: 'ponoć',
+ noon: 'podne',
+ morning: 'ujutru',
+ afternoon: 'popodne',
+ evening: 'uveče',
+ night: 'noću'
+ },
+ abbreviated: {
+ am: 'AM',
+ pm: 'PM',
+ midnight: 'ponoć',
+ noon: 'podne',
+ morning: 'ujutru',
+ afternoon: 'popodne',
+ evening: 'uveče',
+ night: 'noću'
+ },
+ wide: {
+ am: 'AM',
+ pm: 'PM',
+ midnight: 'ponoć',
+ noon: 'podne',
+ morning: 'ujutru',
+ afternoon: 'posle podne',
+ evening: 'uveče',
+ night: 'noću'
+ }
+}
+
+var localize = {
+ ordinalNumber: ordinalNumber,
+ era: buildLocalizeFn({
+ values: eraValues,
+ defaultWidth: 'wide'
+ }),
+ quarter: buildLocalizeFn({
+ values: quarterValues,
+ defaultWidth: 'wide',
+ argumentCallback: function(quarter) {
+ return Number(quarter) - 1
+ }
+ }),
+ month: buildLocalizeFn({
+ values: monthValues,
+ defaultWidth: 'wide',
+ formattingValues: formattingMonthValues,
+ defaultFormattingWidth: 'wide'
+ }),
+ day: buildLocalizeFn({
+ values: dayValues,
+ defaultWidth: 'wide'
+ }),
+ dayPeriod: buildLocalizeFn({
+ values: dayPeriodValues,
+ defaultWidth: 'wide',
+ formattingValues: formattingDayPeriodValues,
+ defaultFormattingWidth: 'wide'
+ })
+}
+
+export default localize
diff --git a/date-fns/src/locale/sr-Latn/_lib/match/index.js b/date-fns/src/locale/sr-Latn/_lib/match/index.js
new file mode 100644
index 0000000..86ffce0
--- /dev/null
+++ b/date-fns/src/locale/sr-Latn/_lib/match/index.js
@@ -0,0 +1,118 @@
+import buildMatchFn from '../../../_lib/buildMatchFn/index'
+import buildMatchPatternFn from '../../../_lib/buildMatchPatternFn/index'
+
+var matchOrdinalNumberPattern = /^(\d+)\./i
+var parseOrdinalNumberPattern = /\d+/i
+
+var matchEraPatterns = {
+ narrow: /^(pr\.n\.e\.|AD)/i,
+ abbreviated: /^(pr\.\s?Hr\.|po\.\s?Hr\.)/i,
+ wide: /^(Pre Hrista|pre nove ere|Posle Hrista|nova era)/i
+}
+var parseEraPatterns = {
+ any: [/^pr/i, /^(po|nova)/i]
+}
+
+var matchQuarterPatterns = {
+ narrow: /^[1234]/i,
+ abbreviated: /^[1234]\.\s?kv\.?/i,
+ wide: /^[1234]\. kvartal/i
+}
+var parseQuarterPatterns = {
+ any: [/1/i, /2/i, /3/i, /4/i]
+}
+
+var matchMonthPatterns = {
+ narrow: /^(10|11|12|[123456789])\./i,
+ abbreviated: /^(jan|feb|mar|apr|maj|jun|jul|avg|sep|okt|nov|dec)/i,
+ wide: /^((januar|januara)|(februar|februara)|(mart|marta)|(april|aprila)|(maj|maja)|(jun|juna)|(jul|jula)|(avgust|avgusta)|(septembar|septembra)|(oktobar|oktobra)|(novembar|novembra)|(decembar|decembra))/i
+}
+var parseMonthPatterns = {
+ narrow: [/(10|11|12|[123456789])/i],
+ any: [
+ /^ja/i,
+ /^f/i,
+ /^mar/i,
+ /^ap/i,
+ /^maj/i,
+ /^jun/i,
+ /^jul/i,
+ /^avg/i,
+ /^s/i,
+ /^o/i,
+ /^n/i,
+ /^d/i
+ ]
+}
+
+var matchDayPatterns = {
+ narrow: /^[npusčc]/i,
+ short: /^(ned|pon|uto|sre|(čet|cet)|pet|sub)/i,
+ abbreviated: /^(ned|pon|uto|sre|(čet|cet)|pet|sub)/i,
+ wide: /^(nedelja|ponedeljak|utorak|sreda|(četvrtak|cetvrtak)|petak|subota)/i
+}
+var parseDayPatterns = {
+ narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],
+ any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i]
+}
+
+var matchDayPeriodPatterns = {
+ any: /^(am|pm|ponoc|ponoć|(po)?podne|uvece|uveče|noću|posle podne|ujutru)/i
+}
+var parseDayPeriodPatterns = {
+ any: {
+ am: /^a/i,
+ pm: /^p/i,
+ midnight: /^pono/i,
+ noon: /^pod/i,
+ morning: /jutro/i,
+ afternoon: /(posle\s|po)+podne/i,
+ evening: /(uvece|uveče)/i,
+ night: /(nocu|noću)/i
+ }
+}
+
+var match = {
+ ordinalNumber: buildMatchPatternFn({
+ matchPattern: matchOrdinalNumberPattern,
+ parsePattern: parseOrdinalNumberPattern,
+ valueCallback: function(value) {
+ return parseInt(value, 10)
+ }
+ }),
+ era: buildMatchFn({
+ matchPatterns: matchEraPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseEraPatterns,
+ defaultParseWidth: 'any'
+ }),
+ quarter: buildMatchFn({
+ matchPatterns: matchQuarterPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseQuarterPatterns,
+ defaultParseWidth: 'any',
+ valueCallback: function(index) {
+ return index + 1
+ }
+ }),
+ month: buildMatchFn({
+ matchPatterns: matchMonthPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseMonthPatterns,
+ defaultParseWidth: 'any'
+ }),
+ day: buildMatchFn({
+ matchPatterns: matchDayPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseDayPatterns,
+ defaultParseWidth: 'any'
+ }),
+ dayPeriod: buildMatchFn({
+ matchPatterns: matchDayPeriodPatterns,
+ defaultMatchWidth: 'any',
+ parsePatterns: parseDayPeriodPatterns,
+ defaultParseWidth: 'any'
+ })
+}
+
+export default match
diff --git a/date-fns/src/locale/sr-Latn/index.d.ts b/date-fns/src/locale/sr-Latn/index.d.ts
new file mode 100644
index 0000000..f6313cc
--- /dev/null
+++ b/date-fns/src/locale/sr-Latn/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { srLatn } from 'date-fns/locale'
+export default srLatn
diff --git a/date-fns/src/locale/sr-Latn/index.js b/date-fns/src/locale/sr-Latn/index.js
new file mode 100644
index 0000000..63231eb
--- /dev/null
+++ b/date-fns/src/locale/sr-Latn/index.js
@@ -0,0 +1,28 @@
+import formatDistance from './_lib/formatDistance/index'
+import formatLong from './_lib/formatLong/index'
+import formatRelative from './_lib/formatRelative/index'
+import localize from './_lib/localize/index'
+import match from './_lib/match/index'
+
+/**
+ * @type {Locale}
+ * @category Locales
+ * @summary Serbian latin locale.
+ * @language Serbian
+ * @iso-639-2 srp
+ * @author Igor Radivojević [@rogyvoje]{@link https://github.com/rogyvoje}
+ */
+var locale = {
+ code: 'sr-Latn',
+ formatDistance: formatDistance,
+ formatLong: formatLong,
+ formatRelative: formatRelative,
+ localize: localize,
+ match: match,
+ options: {
+ weekStartsOn: 1 /* Monday */,
+ firstWeekContainsDate: 1
+ }
+}
+
+export default locale
diff --git a/date-fns/src/locale/sr-Latn/index.js.flow b/date-fns/src/locale/sr-Latn/index.js.flow
new file mode 100644
index 0000000..b9dfe66
--- /dev/null
+++ b/date-fns/src/locale/sr-Latn/index.js.flow
@@ -0,0 +1,35 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+declare module.exports: Locale
diff --git a/date-fns/src/locale/sr-Latn/snapshot.md b/date-fns/src/locale/sr-Latn/snapshot.md
new file mode 100644
index 0000000..4b87903
--- /dev/null
+++ b/date-fns/src/locale/sr-Latn/snapshot.md
@@ -0,0 +1,304 @@
+# Serbian (sr-Latn) locale
+
+## `format` and `parse`
+
+| Title | Token string | Date | `format` result | `parse` result |
+| ------------------------------- | ------------ | ------------------------ | ----------------------------------------------- | ------------------------ |
+| Calendar year | yo | 1987-02-11T12:13:14.015Z | 1987. | 1987-01-01T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 5. | 0005-01-01T00:00:00.000Z |
+| Local week-numbering year | Yo | 1987-02-11T12:13:14.015Z | 1987. | 1986-12-29T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 5. | 0004-12-27T00:00:00.000Z |
+| Quarter (formatting) | Qo | 2019-01-01T12:13:14.015Z | 1. | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2. | 2019-04-01T00:00:00.000Z |
+| | QQQ | 2019-01-01T12:13:14.015Z | 1. kv. | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2. kv. | 2019-04-01T00:00:00.000Z |
+| | QQQQ | 2019-01-01T12:13:14.015Z | 1. kvartal | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2. kvartal | 2019-04-01T00:00:00.000Z |
+| | QQQQQ | 2019-01-01T12:13:14.015Z | 1. | Invalid Date |
+| | | 2019-04-01T12:13:14.015Z | 2. | Invalid Date |
+| Quarter (stand-alone) | qo | 2019-01-01T12:13:14.015Z | 1. | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2. | 2019-04-01T00:00:00.000Z |
+| | qqq | 2019-01-01T12:13:14.015Z | 1. kv. | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2. kv. | 2019-04-01T00:00:00.000Z |
+| | qqqq | 2019-01-01T12:13:14.015Z | 1. kvartal | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2. kvartal | 2019-04-01T00:00:00.000Z |
+| Month (formatting) | Mo | 2019-02-11T12:13:14.015Z | 2. | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7. | 2019-07-01T00:00:00.000Z |
+| | MMM | 2019-02-11T12:13:14.015Z | feb | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | jul | 2019-07-01T00:00:00.000Z |
+| | MMMM | 2019-02-11T12:13:14.015Z | februar | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | jul | 2019-07-01T00:00:00.000Z |
+| | MMMMM | 2019-02-11T12:13:14.015Z | 2. | 2019-01-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7. | 2019-01-01T00:00:00.000Z |
+| Month (stand-alone) | Lo | 2019-02-11T12:13:14.015Z | 2. | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7. | 2019-07-01T00:00:00.000Z |
+| | LLL | 2019-02-11T12:13:14.015Z | feb | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | jul | 2019-07-01T00:00:00.000Z |
+| | LLLL | 2019-02-11T12:13:14.015Z | februar | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | jul | 2019-07-01T00:00:00.000Z |
+| | LLLLL | 2019-02-11T12:13:14.015Z | 2. | 2019-01-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7. | 2019-01-01T00:00:00.000Z |
+| Local week of year | wo | 2019-01-01T12:13:14.015Z | 1. | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48. | 2019-11-25T00:00:00.000Z |
+| ISO week of year | Io | 2019-01-01T12:13:14.015Z | 1. | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48. | 2019-11-25T00:00:00.000Z |
+| Day of month | do | 2019-02-11T12:13:14.015Z | 11. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-28T12:13:14.015Z | 28. | 2019-02-28T00:00:00.000Z |
+| Day of year | Do | 2019-02-11T12:13:14.015Z | 42. | 2019-02-11T00:00:00.000Z |
+| | | 2019-12-31T12:13:14.015Z | 365. | 2019-12-31T00:00:00.000Z |
+| Day of week (formatting) | E | 2019-02-11T12:13:14.015Z | pon | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | pet | Invalid Date |
+| | EE | 2019-02-11T12:13:14.015Z | pon | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | pet | Invalid Date |
+| | EEE | 2019-02-11T12:13:14.015Z | pon | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | pet | Invalid Date |
+| | EEEE | 2019-02-11T12:13:14.015Z | ponedeljak | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | petak | Invalid Date |
+| | EEEEE | 2019-02-11T12:13:14.015Z | P | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | P | Invalid Date |
+| | EEEEEE | 2019-02-11T12:13:14.015Z | pon | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | pet | Invalid Date |
+| ISO day of week (formatting) | io | 2019-02-11T12:13:14.015Z | 1. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5. | 2019-02-15T00:00:00.000Z |
+| | iii | 2019-02-11T12:13:14.015Z | pon | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | pet | Invalid Date |
+| | iiii | 2019-02-11T12:13:14.015Z | ponedeljak | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | petak | Invalid Date |
+| | iiiii | 2019-02-11T12:13:14.015Z | P | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | P | Invalid Date |
+| | iiiiii | 2019-02-11T12:13:14.015Z | pon | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | pet | Invalid Date |
+| Local day of week (formatting) | eo | 2019-02-11T12:13:14.015Z | 1. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5. | 2019-02-15T00:00:00.000Z |
+| | eee | 2019-02-11T12:13:14.015Z | pon | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | pet | Invalid Date |
+| | eeee | 2019-02-11T12:13:14.015Z | ponedeljak | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | petak | Invalid Date |
+| | eeeee | 2019-02-11T12:13:14.015Z | P | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | P | Invalid Date |
+| | eeeeee | 2019-02-11T12:13:14.015Z | pon | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | pet | Invalid Date |
+| Local day of week (stand-alone) | co | 2019-02-11T12:13:14.015Z | 1. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5. | 2019-02-15T00:00:00.000Z |
+| | ccc | 2019-02-11T12:13:14.015Z | pon | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | pet | Invalid Date |
+| | cccc | 2019-02-11T12:13:14.015Z | ponedeljak | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | petak | Invalid Date |
+| | ccccc | 2019-02-11T12:13:14.015Z | P | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | P | Invalid Date |
+| | cccccc | 2019-02-11T12:13:14.015Z | pon | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | pet | Invalid Date |
+| AM, PM | a | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | aa | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | aaa | 2019-02-11T11:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | aaaa | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | aaaaa | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| AM, PM, noon, midnight | b | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | bb | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | bbb | 2019-02-11T11:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | bbbb | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | bbbbb | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| Flexible day period | B | 2019-02-11T11:13:14.015Z | ujutru | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | popodne | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | uveče | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | noću | 2019-02-11T00:00:00.000Z |
+| | BB | 2019-02-11T11:13:14.015Z | ujutru | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | popodne | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | uveče | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | noću | 2019-02-11T00:00:00.000Z |
+| | BBB | 2019-02-11T11:13:14.015Z | ujutru | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | popodne | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | uveče | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | noću | 2019-02-11T00:00:00.000Z |
+| | BBBB | 2019-02-11T11:13:14.015Z | ujutru | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | posle podne | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | uveče | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | noću | 2019-02-11T00:00:00.000Z |
+| | BBBBB | 2019-02-11T11:13:14.015Z | ujutru | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | popodne | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | uveče | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | noću | 2019-02-11T00:00:00.000Z |
+| Hour [1-12] | ho | 2019-02-11T11:13:14.015Z | 11. | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11. | 2019-02-11T23:00:00.000Z |
+| Hour [0-23] | Ho | 2019-02-11T11:13:14.015Z | 11. | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23. | 2019-02-11T23:00:00.000Z |
+| Hour [0-11] | Ko | 2019-02-11T11:13:14.015Z | 11. | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11. | 2019-02-11T23:00:00.000Z |
+| Hour [1-24] | ko | 2019-02-11T11:13:14.015Z | 11. | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23. | 2019-02-11T23:00:00.000Z |
+| Minute | mo | 2019-01-01T12:01:14.015Z | 1. | 2019-01-01T12:01:00.000Z |
+| | | 2019-04-01T12:55:14.015Z | 55. | 2019-04-01T12:55:00.000Z |
+| Second | so | 2019-01-01T12:13:01.015Z | 1. | 2019-01-01T12:13:01.000Z |
+| | | 2019-04-01T12:13:55.015Z | 55. | 2019-04-01T12:13:55.000Z |
+| Long localized date | P | 1987-02-11T12:13:14.015Z | 11. 02. 87. | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29. 05. 53. | 1453-05-29T00:00:00.000Z |
+| | PP | 1987-02-11T12:13:14.015Z | 11. feb 87. | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29. maj 53. | 1453-05-29T00:00:00.000Z |
+| | PPP | 1987-02-11T12:13:14.015Z | 11. februar 1987. | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29. maj 1453. | 1453-05-29T00:00:00.000Z |
+| | PPPP | 1987-02-11T12:13:14.015Z | sreda, 11. februar 1987. | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | nedelja, 29. maj 1453. | 1453-05-29T00:00:00.000Z |
+| Long localized time | p | 1987-02-11T12:13:14.015Z | 12:13 | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 23:59 | 1453-05-29T23:59:00.000Z |
+| | pp | 1987-02-11T12:13:14.015Z | 12:13:14 | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 | 1453-05-29T23:59:59.000Z |
+| | ppp | 1987-02-11T12:13:14.015Z | 12:13:14 GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 GMT+0 | Errored |
+| | pppp | 1987-02-11T12:13:14.015Z | 12:13:14 (GMT+00:00) | Errored |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 (GMT+00:00) | Errored |
+| Combination of date and time | Pp | 1987-02-11T12:13:14.015Z | 11. 02. 87. 12:13 | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29. 05. 53. 23:59 | 1453-05-29T23:59:00.000Z |
+| | PPpp | 1987-02-11T12:13:14.015Z | 11. feb 87. 12:13:14 | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29. maj 53. 23:59:59 | 1453-05-29T23:59:59.000Z |
+| | PPPppp | 1987-02-11T12:13:14.015Z | 11. februar 1987. u 12:13:14 GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 29. maj 1453. u 23:59:59 GMT+0 | Errored |
+| | PPPPpppp | 1987-02-11T12:13:14.015Z | sreda, 11. februar 1987. u 12:13:14 (GMT+00:00) | Errored |
+| | | 1453-05-29T23:59:59.999Z | nedelja, 29. maj 1453. u 23:59:59 (GMT+00:00) | Errored |
+
+## `formatDistance`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `includeSeconds: true` | `addSuffix: true` |
+| ------------------------ | ----------------- | ---------------------- | --------------------- |
+| 2006-01-01T00:00:00.000Z | oko 6 godina | oko 6 godina | za oko 6 godina |
+| 2005-01-01T00:00:00.000Z | oko 5 godina | oko 5 godina | za oko 5 godina |
+| 2004-01-01T00:00:00.000Z | oko 4 godine | oko 4 godine | za oko 4 godine |
+| 2003-01-01T00:00:00.000Z | oko 3 godine | oko 3 godine | za oko 3 godine |
+| 2002-01-01T00:00:00.000Z | oko 2 godine | oko 2 godine | za oko 2 godine |
+| 2001-06-01T00:00:00.000Z | preko 1 godinu | preko 1 godinu | za preko 1 godinu |
+| 2001-02-01T00:00:00.000Z | oko 1 godinu | oko 1 godinu | za oko 1 godinu |
+| 2001-01-01T00:00:00.000Z | oko 1 godinu | oko 1 godinu | za oko 1 godinu |
+| 2000-06-01T00:00:00.000Z | 5 meseci | 5 meseci | za 5 meseci |
+| 2000-03-01T00:00:00.000Z | 2 meseca | 2 meseca | za 2 meseca |
+| 2000-02-01T00:00:00.000Z | oko 1 mesec | oko 1 mesec | za oko 1 mesec |
+| 2000-01-15T00:00:00.000Z | 14 dana | 14 dana | za 14 dana |
+| 2000-01-02T00:00:00.000Z | 1 dan | 1 dan | za 1 dan |
+| 2000-01-01T06:00:00.000Z | oko 6 sati | oko 6 sati | za oko 6 sati |
+| 2000-01-01T01:00:00.000Z | oko 1 sat | oko 1 sat | za oko 1 sat |
+| 2000-01-01T00:45:00.000Z | oko 1 sat | oko 1 sat | za oko 1 sat |
+| 2000-01-01T00:30:00.000Z | 30 minuta | 30 minuta | za 30 minuta |
+| 2000-01-01T00:15:00.000Z | 15 minuta | 15 minuta | za 15 minuta |
+| 2000-01-01T00:01:00.000Z | 1 minuta | 1 minuta | za 1 minutu |
+| 2000-01-01T00:00:25.000Z | manje od 1 minute | pola minute | za manje od 1 minutu |
+| 2000-01-01T00:00:15.000Z | manje od 1 minute | manje od 20 sekundi | za manje od 1 minutu |
+| 2000-01-01T00:00:05.000Z | manje od 1 minute | manje od 10 sekundi | za manje od 1 minutu |
+| 2000-01-01T00:00:00.000Z | manje od 1 minute | manje od 5 sekundi | pre manje od 1 minute |
+| 1999-12-31T23:59:55.000Z | manje od 1 minute | manje od 10 sekundi | pre manje od 1 minute |
+| 1999-12-31T23:59:45.000Z | manje od 1 minute | manje od 20 sekundi | pre manje od 1 minute |
+| 1999-12-31T23:59:35.000Z | manje od 1 minute | pola minute | pre manje od 1 minute |
+| 1999-12-31T23:59:00.000Z | 1 minuta | 1 minuta | pre 1 minute |
+| 1999-12-31T23:45:00.000Z | 15 minuta | 15 minuta | pre 15 minuta |
+| 1999-12-31T23:30:00.000Z | 30 minuta | 30 minuta | pre 30 minuta |
+| 1999-12-31T23:15:00.000Z | oko 1 sat | oko 1 sat | pre oko 1 sat |
+| 1999-12-31T23:00:00.000Z | oko 1 sat | oko 1 sat | pre oko 1 sat |
+| 1999-12-31T18:00:00.000Z | oko 6 sati | oko 6 sati | pre oko 6 sati |
+| 1999-12-30T00:00:00.000Z | 2 dana | 2 dana | pre 2 dana |
+| 1999-12-15T00:00:00.000Z | 17 dana | 17 dana | pre 17 dana |
+| 1999-12-01T00:00:00.000Z | oko 1 mesec | oko 1 mesec | pre oko 1 mesec |
+| 1999-11-01T00:00:00.000Z | 2 meseca | 2 meseca | pre 2 meseca |
+| 1999-06-01T00:00:00.000Z | 7 meseci | 7 meseci | pre 7 meseci |
+| 1999-01-01T00:00:00.000Z | oko 1 godinu | oko 1 godinu | pre oko 1 godinu |
+| 1998-12-01T00:00:00.000Z | oko 1 godinu | oko 1 godinu | pre oko 1 godinu |
+| 1998-06-01T00:00:00.000Z | preko 1 godinu | preko 1 godinu | pre preko 1 godinu |
+| 1998-01-01T00:00:00.000Z | oko 2 godine | oko 2 godine | pre oko 2 godine |
+| 1997-01-01T00:00:00.000Z | oko 3 godine | oko 3 godine | pre oko 3 godine |
+| 1996-01-01T00:00:00.000Z | oko 4 godine | oko 4 godine | pre oko 4 godine |
+| 1995-01-01T00:00:00.000Z | oko 5 godina | oko 5 godina | pre oko 5 godina |
+| 1994-01-01T00:00:00.000Z | oko 6 godina | oko 6 godina | pre oko 6 godina |
+
+## `formatDistanceStrict`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `addSuffix: true` | With forced unit (i.e. `hour`) |
+| ------------------------ | ---------- | ----------------- | ------------------------------ |
+| 2006-01-01T00:00:00.000Z | 6 godina | za 6 godina | 52608 sati |
+| 2005-01-01T00:00:00.000Z | 5 godina | za 5 godina | 43848 sati |
+| 2004-01-01T00:00:00.000Z | 4 godine | za 4 godine | 35064 sata |
+| 2003-01-01T00:00:00.000Z | 3 godine | za 3 godine | 26304 sata |
+| 2002-01-01T00:00:00.000Z | 2 godine | za 2 godine | 17544 sata |
+| 2001-06-01T00:00:00.000Z | 1 godina | za 1 godinu | 12408 sati |
+| 2001-02-01T00:00:00.000Z | 1 godina | za 1 godinu | 9528 sati |
+| 2001-01-01T00:00:00.000Z | 1 godina | za 1 godinu | 8784 sata |
+| 2000-06-01T00:00:00.000Z | 5 meseci | za 5 meseci | 3648 sati |
+| 2000-03-01T00:00:00.000Z | 2 meseca | za 2 meseca | 1440 sati |
+| 2000-02-01T00:00:00.000Z | 1 mesec | za 1 mesec | 744 sata |
+| 2000-01-15T00:00:00.000Z | 14 dana | za 14 dana | 336 sati |
+| 2000-01-02T00:00:00.000Z | 1 dan | za 1 dan | 24 sata |
+| 2000-01-01T06:00:00.000Z | 6 sati | za 6 sati | 6 sati |
+| 2000-01-01T01:00:00.000Z | 1 sat | za 1 sat | 1 sat |
+| 2000-01-01T00:45:00.000Z | 45 minuta | za 45 minuta | 1 sat |
+| 2000-01-01T00:30:00.000Z | 30 minuta | za 30 minuta | 1 sat |
+| 2000-01-01T00:15:00.000Z | 15 minuta | za 15 minuta | 0 sati |
+| 2000-01-01T00:01:00.000Z | 1 minuta | za 1 minutu | 0 sati |
+| 2000-01-01T00:00:25.000Z | 25 sekundi | za 25 sekundi | 0 sati |
+| 2000-01-01T00:00:15.000Z | 15 sekundi | za 15 sekundi | 0 sati |
+| 2000-01-01T00:00:05.000Z | 5 sekundi | za 5 sekundi | 0 sati |
+| 2000-01-01T00:00:00.000Z | 0 sekundi | pre 0 sekundi | 0 sati |
+| 1999-12-31T23:59:55.000Z | 5 sekundi | pre 5 sekundi | 0 sati |
+| 1999-12-31T23:59:45.000Z | 15 sekundi | pre 15 sekundi | 0 sati |
+| 1999-12-31T23:59:35.000Z | 25 sekundi | pre 25 sekundi | 0 sati |
+| 1999-12-31T23:59:00.000Z | 1 minuta | pre 1 minute | 0 sati |
+| 1999-12-31T23:45:00.000Z | 15 minuta | pre 15 minuta | 0 sati |
+| 1999-12-31T23:30:00.000Z | 30 minuta | pre 30 minuta | 1 sat |
+| 1999-12-31T23:15:00.000Z | 45 minuta | pre 45 minuta | 1 sat |
+| 1999-12-31T23:00:00.000Z | 1 sat | pre 1 sat | 1 sat |
+| 1999-12-31T18:00:00.000Z | 6 sati | pre 6 sati | 6 sati |
+| 1999-12-30T00:00:00.000Z | 2 dana | pre 2 dana | 48 sati |
+| 1999-12-15T00:00:00.000Z | 17 dana | pre 17 dana | 408 sati |
+| 1999-12-01T00:00:00.000Z | 1 mesec | pre 1 mesec | 744 sata |
+| 1999-11-01T00:00:00.000Z | 2 meseca | pre 2 meseca | 1464 sata |
+| 1999-06-01T00:00:00.000Z | 7 meseci | pre 7 meseci | 5136 sati |
+| 1999-01-01T00:00:00.000Z | 1 godina | pre 1 godine | 8760 sati |
+| 1998-12-01T00:00:00.000Z | 1 godina | pre 1 godine | 9504 sata |
+| 1998-06-01T00:00:00.000Z | 2 godine | pre 2 godine | 13896 sati |
+| 1998-01-01T00:00:00.000Z | 2 godine | pre 2 godine | 17520 sati |
+| 1997-01-01T00:00:00.000Z | 3 godine | pre 3 godine | 26280 sati |
+| 1996-01-01T00:00:00.000Z | 4 godine | pre 4 godine | 35064 sata |
+| 1995-01-01T00:00:00.000Z | 5 godina | pre 5 godina | 43824 sata |
+| 1994-01-01T00:00:00.000Z | 6 godina | pre 6 godina | 52584 sata |
+
+## `formatRelative`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result |
+| ------------------------ | ------------------------- |
+| 2000-01-10T00:00:00.000Z | 10. 01. 00. |
+| 2000-01-05T00:00:00.000Z | sledeću sredu u 00:00 |
+| 2000-01-02T00:00:00.000Z | sutra u 00:00 |
+| 2000-01-01T00:00:00.000Z | danas u 00:00 |
+| 1999-12-31T00:00:00.000Z | juče u 00:00 |
+| 1999-12-27T00:00:00.000Z | prošli ponedeljak u 00:00 |
+| 1999-12-21T00:00:00.000Z | 21. 12. 99. |
diff --git a/date-fns/src/locale/sr/_lib/formatDistance/index.js b/date-fns/src/locale/sr/_lib/formatDistance/index.js
new file mode 100644
index 0000000..5cab16d
--- /dev/null
+++ b/date-fns/src/locale/sr/_lib/formatDistance/index.js
@@ -0,0 +1,191 @@
+var formatDistanceLocale = {
+ lessThanXSeconds: {
+ one: {
+ standalone: 'мање од 1 секунде',
+ withPrepositionAgo: 'мање од 1 секунде',
+ withPrepositionIn: 'мање од 1 секунду'
+ },
+ dual: 'мање од {{count}} секунде',
+ other: 'мање од {{count}} секунди'
+ },
+
+ xSeconds: {
+ one: {
+ standalone: '1 секунда',
+ withPrepositionAgo: '1 секунде',
+ withPrepositionIn: '1 секунду'
+ },
+ dual: '{{count}} секунде',
+ other: '{{count}} секунди'
+ },
+
+ halfAMinute: 'пола минуте',
+
+ lessThanXMinutes: {
+ one: {
+ standalone: 'мање од 1 минуте',
+ withPrepositionAgo: 'мање од 1 минуте',
+ withPrepositionIn: 'мање од 1 минуту'
+ },
+ dual: 'мање од {{count}} минуте',
+ other: 'мање од {{count}} минута'
+ },
+
+ xMinutes: {
+ one: {
+ standalone: '1 минута',
+ withPrepositionAgo: '1 минуте',
+ withPrepositionIn: '1 минуту'
+ },
+ dual: '{{count}} минуте',
+ other: '{{count}} минута'
+ },
+
+ aboutXHours: {
+ one: {
+ standalone: 'око 1 сат',
+ withPrepositionAgo: 'око 1 сат',
+ withPrepositionIn: 'око 1 сат'
+ },
+ dual: 'око {{count}} сата',
+ other: 'око {{count}} сати'
+ },
+
+ xHours: {
+ one: {
+ standalone: '1 сат',
+ withPrepositionAgo: '1 сат',
+ withPrepositionIn: '1 сат'
+ },
+ dual: '{{count}} сата',
+ other: '{{count}} сати'
+ },
+
+ xDays: {
+ one: {
+ standalone: '1 дан',
+ withPrepositionAgo: '1 дан',
+ withPrepositionIn: '1 дан'
+ },
+ dual: '{{count}} дана',
+ other: '{{count}} дана'
+ },
+
+ aboutXWeeks: {
+ one: {
+ standalone: 'око 1 недељу',
+ withPrepositionAgo: 'око 1 недељу',
+ withPrepositionIn: 'око 1 недељу'
+ },
+ dual: 'око {{count}} недеље',
+ other: 'око {{count}} недеље'
+ },
+
+ xWeeks: {
+ one: {
+ standalone: '1 недељу',
+ withPrepositionAgo: '1 недељу',
+ withPrepositionIn: '1 недељу'
+ },
+ dual: '{{count}} недеље',
+ other: '{{count}} недеље'
+ },
+
+ aboutXMonths: {
+ one: {
+ standalone: 'око 1 месец',
+ withPrepositionAgo: 'око 1 месец',
+ withPrepositionIn: 'око 1 месец'
+ },
+ dual: 'око {{count}} месеца',
+ other: 'око {{count}} месеци'
+ },
+
+ xMonths: {
+ one: {
+ standalone: '1 месец',
+ withPrepositionAgo: '1 месец',
+ withPrepositionIn: '1 месец'
+ },
+ dual: '{{count}} месеца',
+ other: '{{count}} месеци'
+ },
+
+ aboutXYears: {
+ one: {
+ standalone: 'око 1 годину',
+ withPrepositionAgo: 'око 1 годину',
+ withPrepositionIn: 'око 1 годину'
+ },
+ dual: 'око {{count}} године',
+ other: 'око {{count}} година'
+ },
+
+ xYears: {
+ one: {
+ standalone: '1 година',
+ withPrepositionAgo: '1 године',
+ withPrepositionIn: '1 годину'
+ },
+ dual: '{{count}} године',
+ other: '{{count}} година'
+ },
+
+ overXYears: {
+ one: {
+ standalone: 'преко 1 годину',
+ withPrepositionAgo: 'преко 1 годину',
+ withPrepositionIn: 'преко 1 годину'
+ },
+ dual: 'преко {{count}} године',
+ other: 'преко {{count}} година'
+ },
+
+ almostXYears: {
+ one: {
+ standalone: 'готово 1 годину',
+ withPrepositionAgo: 'готово 1 годину',
+ withPrepositionIn: 'готово 1 годину'
+ },
+ dual: 'готово {{count}} године',
+ other: 'готово {{count}} година'
+ }
+}
+
+export default function formatDistance(token, count, options) {
+ options = options || {}
+
+ var result
+
+ if (typeof formatDistanceLocale[token] === 'string') {
+ result = formatDistanceLocale[token]
+ } else if (count === 1) {
+ if (options.addSuffix) {
+ if (options.comparison > 0) {
+ result = formatDistanceLocale[token].one.withPrepositionIn
+ } else {
+ result = formatDistanceLocale[token].one.withPrepositionAgo
+ }
+ } else {
+ result = formatDistanceLocale[token].one.standalone
+ }
+ } else if (
+ count % 10 > 1 &&
+ count % 10 < 5 && // if last digit is between 2 and 4
+ String(count).substr(-2, 1) !== '1' // unless the 2nd to last digit is "1"
+ ) {
+ result = formatDistanceLocale[token].dual.replace('{{count}}', count)
+ } else {
+ result = formatDistanceLocale[token].other.replace('{{count}}', count)
+ }
+
+ if (options.addSuffix) {
+ if (options.comparison > 0) {
+ return 'за ' + result
+ } else {
+ return 'пре ' + result
+ }
+ }
+
+ return result
+}
diff --git a/date-fns/src/locale/sr/_lib/formatLong/index.js b/date-fns/src/locale/sr/_lib/formatLong/index.js
new file mode 100644
index 0000000..c833b99
--- /dev/null
+++ b/date-fns/src/locale/sr/_lib/formatLong/index.js
@@ -0,0 +1,39 @@
+import buildFormatLongFn from '../../../_lib/buildFormatLongFn/index'
+
+var dateFormats = {
+ full: 'EEEE, d. MMMM yyyy.',
+ long: 'd. MMMM yyyy.',
+ medium: 'd. MMM yy.',
+ short: 'dd. MM. yy.'
+}
+
+var timeFormats = {
+ full: 'HH:mm:ss (zzzz)',
+ long: 'HH:mm:ss z',
+ medium: 'HH:mm:ss',
+ short: 'HH:mm'
+}
+
+var dateTimeFormats = {
+ full: "{{date}} 'у' {{time}}",
+ long: "{{date}} 'у' {{time}}",
+ medium: '{{date}} {{time}}',
+ short: '{{date}} {{time}}'
+}
+
+var formatLong = {
+ date: buildFormatLongFn({
+ formats: dateFormats,
+ defaultWidth: 'full'
+ }),
+ time: buildFormatLongFn({
+ formats: timeFormats,
+ defaultWidth: 'full'
+ }),
+ dateTime: buildFormatLongFn({
+ formats: dateTimeFormats,
+ defaultWidth: 'full'
+ })
+}
+
+export default formatLong
diff --git a/date-fns/src/locale/sr/_lib/formatRelative/index.js b/date-fns/src/locale/sr/_lib/formatRelative/index.js
new file mode 100644
index 0000000..3f44d8f
--- /dev/null
+++ b/date-fns/src/locale/sr/_lib/formatRelative/index.js
@@ -0,0 +1,44 @@
+var formatRelativeLocale = {
+ lastWeek: function(date) {
+ var day = date.getUTCDay()
+
+ switch (day) {
+ case 0:
+ return "'прошле недеље у' p"
+ case 3:
+ return "'прошле среде у' p"
+ case 6:
+ return "'прошле суботе у' p"
+ default:
+ return "'прошли' EEEE 'у' p"
+ }
+ },
+ yesterday: "'јуче у' p",
+ today: "'данас у' p",
+ tomorrow: "'сутра у' p",
+ nextWeek: function(date) {
+ var day = date.getUTCDay()
+
+ switch (day) {
+ case 0:
+ return "'следеће недеље у' p"
+ case 3:
+ return "'следећу среду у' p"
+ case 6:
+ return "'следећу суботу у' p"
+ default:
+ return "'следећи' EEEE 'у' p"
+ }
+ },
+ other: 'P'
+}
+
+export default function formatRelative(token, date, _baseDate, _options) {
+ var format = formatRelativeLocale[token]
+
+ if (typeof format === 'function') {
+ return format(date)
+ }
+
+ return format
+}
diff --git a/date-fns/src/locale/sr/_lib/localize/index.js b/date-fns/src/locale/sr/_lib/localize/index.js
new file mode 100644
index 0000000..538ca16
--- /dev/null
+++ b/date-fns/src/locale/sr/_lib/localize/index.js
@@ -0,0 +1,222 @@
+import buildLocalizeFn from '../../../_lib/buildLocalizeFn/index'
+
+function ordinalNumber(dirtyNumber) {
+ var number = Number(dirtyNumber)
+ return String(number).concat('.')
+}
+
+var eraValues = {
+ narrow: ['пр.н.е.', 'АД'],
+ abbreviated: ['пр. Хр.', 'по. Хр.'],
+ wide: ['Пре Христа', 'После Христа']
+}
+
+var monthValues = {
+ narrow: [
+ '1.',
+ '2.',
+ '3.',
+ '4.',
+ '5.',
+ '6.',
+ '7.',
+ '8.',
+ '9.',
+ '10.',
+ '11.',
+ '12.'
+ ],
+ abbreviated: [
+ 'јан',
+ 'феб',
+ 'мар',
+ 'апр',
+ 'мај',
+ 'јун',
+ 'јул',
+ 'авг',
+ 'сеп',
+ 'окт',
+ 'нов',
+ 'дец'
+ ],
+ wide: [
+ 'јануар',
+ 'фебруар',
+ 'март',
+ 'април',
+ 'мај',
+ 'јун',
+ 'јул',
+ 'август',
+ 'септембар',
+ 'октобар',
+ 'новембар',
+ 'децембар'
+ ]
+}
+
+var formattingMonthValues = {
+ narrow: [
+ '1.',
+ '2.',
+ '3.',
+ '4.',
+ '5.',
+ '6.',
+ '7.',
+ '8.',
+ '9.',
+ '10.',
+ '11.',
+ '12.'
+ ],
+ abbreviated: [
+ 'јан',
+ 'феб',
+ 'мар',
+ 'апр',
+ 'мај',
+ 'јун',
+ 'јул',
+ 'авг',
+ 'сеп',
+ 'окт',
+ 'нов',
+ 'дец'
+ ],
+ wide: [
+ 'јануар',
+ 'фебруар',
+ 'март',
+ 'април',
+ 'мај',
+ 'јун',
+ 'јул',
+ 'август',
+ 'септембар',
+ 'октобар',
+ 'новембар',
+ 'децембар'
+ ]
+}
+
+var quarterValues = {
+ narrow: ['1.', '2.', '3.', '4.'],
+ abbreviated: ['1. кв.', '2. кв.', '3. кв.', '4. кв.'],
+ wide: ['1. квартал', '2. квартал', '3. квартал', '4. квартал']
+}
+
+var dayValues = {
+ narrow: ['Н', 'П', 'У', 'С', 'Ч', 'П', 'С'],
+ short: ['нед', 'пон', 'уто', 'сре', 'чет', 'пет', 'суб'],
+ abbreviated: ['нед', 'пон', 'уто', 'сре', 'чет', 'пет', 'суб'],
+ wide: [
+ 'недеља',
+ 'понедељак',
+ 'уторак',
+ 'среда',
+ 'четвртак',
+ 'петак',
+ 'субота'
+ ]
+}
+
+var formattingDayPeriodValues = {
+ narrow: {
+ am: 'АМ',
+ pm: 'ПМ',
+ midnight: 'поноћ',
+ noon: 'подне',
+ morning: 'ујутру',
+ afternoon: 'поподне',
+ evening: 'увече',
+ night: 'ноћу'
+ },
+ abbreviated: {
+ am: 'АМ',
+ pm: 'ПМ',
+ midnight: 'поноћ',
+ noon: 'подне',
+ morning: 'ујутру',
+ afternoon: 'поподне',
+ evening: 'увече',
+ night: 'ноћу'
+ },
+ wide: {
+ am: 'AM',
+ pm: 'PM',
+ midnight: 'поноћ',
+ noon: 'подне',
+ morning: 'ујутру',
+ afternoon: 'после подне',
+ evening: 'увече',
+ night: 'ноћу'
+ }
+}
+
+var dayPeriodValues = {
+ narrow: {
+ am: 'AM',
+ pm: 'PM',
+ midnight: 'поноћ',
+ noon: 'подне',
+ morning: 'ујутру',
+ afternoon: 'поподне',
+ evening: 'увече',
+ night: 'ноћу'
+ },
+ abbreviated: {
+ am: 'AM',
+ pm: 'PM',
+ midnight: 'поноћ',
+ noon: 'подне',
+ morning: 'ујутру',
+ afternoon: 'поподне',
+ evening: 'увече',
+ night: 'ноћу'
+ },
+ wide: {
+ am: 'AM',
+ pm: 'PM',
+ midnight: 'поноћ',
+ noon: 'подне',
+ morning: 'ујутру',
+ afternoon: 'после подне',
+ evening: 'увече',
+ night: 'ноћу'
+ }
+}
+
+var localize = {
+ ordinalNumber: ordinalNumber,
+ era: buildLocalizeFn({
+ values: eraValues,
+ defaultWidth: 'wide'
+ }),
+ quarter: buildLocalizeFn({
+ values: quarterValues,
+ defaultWidth: 'wide',
+ argumentCallback: function(quarter) {
+ return Number(quarter) - 1
+ }
+ }),
+ month: buildLocalizeFn({
+ values: monthValues,
+ defaultWidth: 'wide',
+ formattingValues: formattingMonthValues,
+ defaultFormattingWidth: 'wide'
+ }),
+ day: buildLocalizeFn({
+ values: dayValues,
+ defaultWidth: 'wide'
+ }),
+ dayPeriod: buildLocalizeFn({
+ values: dayPeriodValues,
+ defaultWidth: 'wide',
+ formattingValues: formattingDayPeriodValues,
+ defaultFormattingWidth: 'wide'
+ })
+}
+
+export default localize
diff --git a/date-fns/src/locale/sr/_lib/match/index.js b/date-fns/src/locale/sr/_lib/match/index.js
new file mode 100644
index 0000000..45da68e
--- /dev/null
+++ b/date-fns/src/locale/sr/_lib/match/index.js
@@ -0,0 +1,118 @@
+import buildMatchFn from '../../../_lib/buildMatchFn/index'
+import buildMatchPatternFn from '../../../_lib/buildMatchPatternFn/index'
+
+var matchOrdinalNumberPattern = /^(\d+)\./i
+var parseOrdinalNumberPattern = /\d+/i
+
+var matchEraPatterns = {
+ narrow: /^(пр\.н\.е\.|АД)/i,
+ abbreviated: /^(пр\.\s?Хр\.|по\.\s?Хр\.)/i,
+ wide: /^(Пре Христа|пре нове ере|После Христа|нова ера)/i
+}
+var parseEraPatterns = {
+ any: [/^пр/i, /^(по|нова)/i]
+}
+
+var matchQuarterPatterns = {
+ narrow: /^[1234]/i,
+ abbreviated: /^[1234]\.\s?кв\.?/i,
+ wide: /^[1234]\. квартал/i
+}
+var parseQuarterPatterns = {
+ any: [/1/i, /2/i, /3/i, /4/i]
+}
+
+var matchMonthPatterns = {
+ narrow: /^(10|11|12|[123456789])\./i,
+ abbreviated: /^(јан|феб|мар|апр|мај|јун|јул|авг|сеп|окт|нов|дец)/i,
+ wide: /^((јануар|јануара)|(фебруар|фебруара)|(март|марта)|(април|априла)|(мја|маја)|(јун|јуна)|(јул|јула)|(август|августа)|(септембар|септембра)|(октобар|октобра)|(новембар|новембра)|(децембар|децембра))/i
+}
+var parseMonthPatterns = {
+ narrow: [/(10|11|12|[123456789])/i],
+ any: [
+ /^ја/i,
+ /^ф/i,
+ /^мар/i,
+ /^ап/i,
+ /^мај/i,
+ /^јун/i,
+ /^јул/i,
+ /^авг/i,
+ /^с/i,
+ /^о/i,
+ /^н/i,
+ /^д/i
+ ]
+}
+
+var matchDayPatterns = {
+ narrow: /^[пусчн]/i,
+ short: /^(нед|пон|уто|сре|чет|пет|суб)/i,
+ abbreviated: /^(нед|пон|уто|сре|чет|пет|суб)/i,
+ wide: /^(недеља|понедељак|уторак|среда|четвртак|петак|субота)/i
+}
+var parseDayPatterns = {
+ narrow: [/^п/i, /^у/i, /^с/i, /^ч/i, /^н/i],
+ any: [/^нед/i, /^пон/i, /^уто/i, /^сре/i, /^чет/i, /^пет/i, /^суб/i]
+}
+
+var matchDayPeriodPatterns = {
+ any: /^(ам|пм|поноћ|(по)?подне|увече|ноћу|после подне|ујутру)/i
+}
+var parseDayPeriodPatterns = {
+ any: {
+ am: /^a/i,
+ pm: /^p/i,
+ midnight: /^поно/i,
+ noon: /^под/i,
+ morning: /ујутру/i,
+ afternoon: /(после\s|по)+подне/i,
+ evening: /(увече)/i,
+ night: /(ноћу)/i
+ }
+}
+
+var match = {
+ ordinalNumber: buildMatchPatternFn({
+ matchPattern: matchOrdinalNumberPattern,
+ parsePattern: parseOrdinalNumberPattern,
+ valueCallback: function(value) {
+ return parseInt(value, 10)
+ }
+ }),
+ era: buildMatchFn({
+ matchPatterns: matchEraPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseEraPatterns,
+ defaultParseWidth: 'any'
+ }),
+ quarter: buildMatchFn({
+ matchPatterns: matchQuarterPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseQuarterPatterns,
+ defaultParseWidth: 'any',
+ valueCallback: function(index) {
+ return index + 1
+ }
+ }),
+ month: buildMatchFn({
+ matchPatterns: matchMonthPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseMonthPatterns,
+ defaultParseWidth: 'any'
+ }),
+ day: buildMatchFn({
+ matchPatterns: matchDayPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseDayPatterns,
+ defaultParseWidth: 'any'
+ }),
+ dayPeriod: buildMatchFn({
+ matchPatterns: matchDayPeriodPatterns,
+ defaultMatchWidth: 'any',
+ parsePatterns: parseDayPeriodPatterns,
+ defaultParseWidth: 'any'
+ })
+}
+
+export default match
diff --git a/date-fns/src/locale/sr/index.d.ts b/date-fns/src/locale/sr/index.d.ts
new file mode 100644
index 0000000..aaede59
--- /dev/null
+++ b/date-fns/src/locale/sr/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { sr } from 'date-fns/locale'
+export default sr
diff --git a/date-fns/src/locale/sr/index.js b/date-fns/src/locale/sr/index.js
new file mode 100644
index 0000000..f8c1408
--- /dev/null
+++ b/date-fns/src/locale/sr/index.js
@@ -0,0 +1,28 @@
+import formatDistance from './_lib/formatDistance/index'
+import formatLong from './_lib/formatLong/index'
+import formatRelative from './_lib/formatRelative/index'
+import localize from './_lib/localize/index'
+import match from './_lib/match/index'
+
+/**
+ * @type {Locale}
+ * @category Locales
+ * @summary Serbian cyrillic locale.
+ * @language Serbian
+ * @iso-639-2 srp
+ * @author Igor Radivojević [@rogyvoje]{@link https://github.com/rogyvoje}
+ */
+var locale = {
+ code: 'sr',
+ formatDistance: formatDistance,
+ formatLong: formatLong,
+ formatRelative: formatRelative,
+ localize: localize,
+ match: match,
+ options: {
+ weekStartsOn: 1 /* Monday */,
+ firstWeekContainsDate: 1
+ }
+}
+
+export default locale
diff --git a/date-fns/src/locale/sr/index.js.flow b/date-fns/src/locale/sr/index.js.flow
new file mode 100644
index 0000000..b9dfe66
--- /dev/null
+++ b/date-fns/src/locale/sr/index.js.flow
@@ -0,0 +1,35 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+declare module.exports: Locale
diff --git a/date-fns/src/locale/sr/snapshot.md b/date-fns/src/locale/sr/snapshot.md
new file mode 100644
index 0000000..98da3c4
--- /dev/null
+++ b/date-fns/src/locale/sr/snapshot.md
@@ -0,0 +1,304 @@
+# Serbian (sr) locale
+
+## `format` and `parse`
+
+| Title | Token string | Date | `format` result | `parse` result |
+| ------------------------------- | ------------ | ------------------------ | ----------------------------------------------- | ------------------------ |
+| Calendar year | yo | 1987-02-11T12:13:14.015Z | 1987. | 1987-01-01T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 5. | 0005-01-01T00:00:00.000Z |
+| Local week-numbering year | Yo | 1987-02-11T12:13:14.015Z | 1987. | 1986-12-29T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 5. | 0004-12-27T00:00:00.000Z |
+| Quarter (formatting) | Qo | 2019-01-01T12:13:14.015Z | 1. | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2. | 2019-04-01T00:00:00.000Z |
+| | QQQ | 2019-01-01T12:13:14.015Z | 1. кв. | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2. кв. | 2019-04-01T00:00:00.000Z |
+| | QQQQ | 2019-01-01T12:13:14.015Z | 1. квартал | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2. квартал | 2019-04-01T00:00:00.000Z |
+| | QQQQQ | 2019-01-01T12:13:14.015Z | 1. | Invalid Date |
+| | | 2019-04-01T12:13:14.015Z | 2. | Invalid Date |
+| Quarter (stand-alone) | qo | 2019-01-01T12:13:14.015Z | 1. | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2. | 2019-04-01T00:00:00.000Z |
+| | qqq | 2019-01-01T12:13:14.015Z | 1. кв. | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2. кв. | 2019-04-01T00:00:00.000Z |
+| | qqqq | 2019-01-01T12:13:14.015Z | 1. квартал | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2. квартал | 2019-04-01T00:00:00.000Z |
+| Month (formatting) | Mo | 2019-02-11T12:13:14.015Z | 2. | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7. | 2019-07-01T00:00:00.000Z |
+| | MMM | 2019-02-11T12:13:14.015Z | феб | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | јул | 2019-07-01T00:00:00.000Z |
+| | MMMM | 2019-02-11T12:13:14.015Z | фебруар | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | јул | 2019-07-01T00:00:00.000Z |
+| | MMMMM | 2019-02-11T12:13:14.015Z | 2. | 2019-01-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7. | 2019-01-01T00:00:00.000Z |
+| Month (stand-alone) | Lo | 2019-02-11T12:13:14.015Z | 2. | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7. | 2019-07-01T00:00:00.000Z |
+| | LLL | 2019-02-11T12:13:14.015Z | феб | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | јул | 2019-07-01T00:00:00.000Z |
+| | LLLL | 2019-02-11T12:13:14.015Z | фебруар | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | јул | 2019-07-01T00:00:00.000Z |
+| | LLLLL | 2019-02-11T12:13:14.015Z | 2. | 2019-01-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7. | 2019-01-01T00:00:00.000Z |
+| Local week of year | wo | 2019-01-01T12:13:14.015Z | 1. | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48. | 2019-11-25T00:00:00.000Z |
+| ISO week of year | Io | 2019-01-01T12:13:14.015Z | 1. | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48. | 2019-11-25T00:00:00.000Z |
+| Day of month | do | 2019-02-11T12:13:14.015Z | 11. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-28T12:13:14.015Z | 28. | 2019-02-28T00:00:00.000Z |
+| Day of year | Do | 2019-02-11T12:13:14.015Z | 42. | 2019-02-11T00:00:00.000Z |
+| | | 2019-12-31T12:13:14.015Z | 365. | 2019-12-31T00:00:00.000Z |
+| Day of week (formatting) | E | 2019-02-11T12:13:14.015Z | пон | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | пет | 2019-02-15T00:00:00.000Z |
+| | EE | 2019-02-11T12:13:14.015Z | пон | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | пет | 2019-02-15T00:00:00.000Z |
+| | EEE | 2019-02-11T12:13:14.015Z | пон | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | пет | 2019-02-15T00:00:00.000Z |
+| | EEEE | 2019-02-11T12:13:14.015Z | понедељак | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | петак | 2019-02-15T00:00:00.000Z |
+| | EEEEE | 2019-02-11T12:13:14.015Z | П | 2019-02-17T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | П | 2019-02-17T00:00:00.000Z |
+| | EEEEEE | 2019-02-11T12:13:14.015Z | пон | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | пет | 2019-02-15T00:00:00.000Z |
+| ISO day of week (formatting) | io | 2019-02-11T12:13:14.015Z | 1. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5. | 2019-02-15T00:00:00.000Z |
+| | iii | 2019-02-11T12:13:14.015Z | пон | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | пет | 2019-02-15T00:00:00.000Z |
+| | iiii | 2019-02-11T12:13:14.015Z | понедељак | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | петак | 2019-02-15T00:00:00.000Z |
+| | iiiii | 2019-02-11T12:13:14.015Z | П | 2019-02-17T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | П | 2019-02-17T00:00:00.000Z |
+| | iiiiii | 2019-02-11T12:13:14.015Z | пон | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | пет | 2019-02-15T00:00:00.000Z |
+| Local day of week (formatting) | eo | 2019-02-11T12:13:14.015Z | 1. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5. | 2019-02-15T00:00:00.000Z |
+| | eee | 2019-02-11T12:13:14.015Z | пон | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | пет | 2019-02-15T00:00:00.000Z |
+| | eeee | 2019-02-11T12:13:14.015Z | понедељак | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | петак | 2019-02-15T00:00:00.000Z |
+| | eeeee | 2019-02-11T12:13:14.015Z | П | 2019-02-17T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | П | 2019-02-17T00:00:00.000Z |
+| | eeeeee | 2019-02-11T12:13:14.015Z | пон | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | пет | 2019-02-15T00:00:00.000Z |
+| Local day of week (stand-alone) | co | 2019-02-11T12:13:14.015Z | 1. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5. | 2019-02-15T00:00:00.000Z |
+| | ccc | 2019-02-11T12:13:14.015Z | пон | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | пет | 2019-02-15T00:00:00.000Z |
+| | cccc | 2019-02-11T12:13:14.015Z | понедељак | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | петак | 2019-02-15T00:00:00.000Z |
+| | ccccc | 2019-02-11T12:13:14.015Z | П | 2019-02-17T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | П | 2019-02-17T00:00:00.000Z |
+| | cccccc | 2019-02-11T12:13:14.015Z | пон | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | пет | 2019-02-15T00:00:00.000Z |
+| AM, PM | a | 2019-02-11T11:13:14.015Z | АМ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | ПМ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | ПМ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | АМ | 2019-02-11T00:00:00.000Z |
+| | aa | 2019-02-11T11:13:14.015Z | АМ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | ПМ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | ПМ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | АМ | 2019-02-11T00:00:00.000Z |
+| | aaa | 2019-02-11T11:13:14.015Z | ам | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | пм | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | пм | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ам | 2019-02-11T00:00:00.000Z |
+| | aaaa | 2019-02-11T11:13:14.015Z | AM | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | PM | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | PM | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | AM | Invalid Date |
+| | aaaaa | 2019-02-11T11:13:14.015Z | АМ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | ПМ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | ПМ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | АМ | 2019-02-11T00:00:00.000Z |
+| AM, PM, noon, midnight | b | 2019-02-11T11:13:14.015Z | АМ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | ПМ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | ПМ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | АМ | 2019-02-11T00:00:00.000Z |
+| | bb | 2019-02-11T11:13:14.015Z | АМ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | ПМ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | ПМ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | АМ | 2019-02-11T00:00:00.000Z |
+| | bbb | 2019-02-11T11:13:14.015Z | ам | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | пм | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | пм | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ам | 2019-02-11T00:00:00.000Z |
+| | bbbb | 2019-02-11T11:13:14.015Z | AM | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | PM | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | PM | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | AM | Invalid Date |
+| | bbbbb | 2019-02-11T11:13:14.015Z | АМ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | ПМ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | ПМ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | АМ | 2019-02-11T00:00:00.000Z |
+| Flexible day period | B | 2019-02-11T11:13:14.015Z | ујутру | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | поподне | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | увече | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ноћу | 2019-02-11T00:00:00.000Z |
+| | BB | 2019-02-11T11:13:14.015Z | ујутру | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | поподне | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | увече | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ноћу | 2019-02-11T00:00:00.000Z |
+| | BBB | 2019-02-11T11:13:14.015Z | ујутру | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | поподне | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | увече | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ноћу | 2019-02-11T00:00:00.000Z |
+| | BBBB | 2019-02-11T11:13:14.015Z | ујутру | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | после подне | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | увече | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ноћу | 2019-02-11T00:00:00.000Z |
+| | BBBBB | 2019-02-11T11:13:14.015Z | ујутру | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | поподне | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | увече | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ноћу | 2019-02-11T00:00:00.000Z |
+| Hour [1-12] | ho | 2019-02-11T11:13:14.015Z | 11. | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11. | 2019-02-11T23:00:00.000Z |
+| Hour [0-23] | Ho | 2019-02-11T11:13:14.015Z | 11. | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23. | 2019-02-11T23:00:00.000Z |
+| Hour [0-11] | Ko | 2019-02-11T11:13:14.015Z | 11. | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11. | 2019-02-11T23:00:00.000Z |
+| Hour [1-24] | ko | 2019-02-11T11:13:14.015Z | 11. | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23. | 2019-02-11T23:00:00.000Z |
+| Minute | mo | 2019-01-01T12:01:14.015Z | 1. | 2019-01-01T12:01:00.000Z |
+| | | 2019-04-01T12:55:14.015Z | 55. | 2019-04-01T12:55:00.000Z |
+| Second | so | 2019-01-01T12:13:01.015Z | 1. | 2019-01-01T12:13:01.000Z |
+| | | 2019-04-01T12:13:55.015Z | 55. | 2019-04-01T12:13:55.000Z |
+| Long localized date | P | 1987-02-11T12:13:14.015Z | 11. 02. 87. | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29. 05. 53. | 1453-05-29T00:00:00.000Z |
+| | PP | 1987-02-11T12:13:14.015Z | 11. феб 87. | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29. мај 53. | 1453-05-29T00:00:00.000Z |
+| | PPP | 1987-02-11T12:13:14.015Z | 11. фебруар 1987. | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29. мај 1453. | 1453-05-29T00:00:00.000Z |
+| | PPPP | 1987-02-11T12:13:14.015Z | среда, 11. фебруар 1987. | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | недеља, 29. мај 1453. | 1453-05-29T00:00:00.000Z |
+| Long localized time | p | 1987-02-11T12:13:14.015Z | 12:13 | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 23:59 | 1453-05-29T23:59:00.000Z |
+| | pp | 1987-02-11T12:13:14.015Z | 12:13:14 | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 | 1453-05-29T23:59:59.000Z |
+| | ppp | 1987-02-11T12:13:14.015Z | 12:13:14 GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 GMT+0 | Errored |
+| | pppp | 1987-02-11T12:13:14.015Z | 12:13:14 (GMT+00:00) | Errored |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 (GMT+00:00) | Errored |
+| Combination of date and time | Pp | 1987-02-11T12:13:14.015Z | 11. 02. 87. 12:13 | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29. 05. 53. 23:59 | 1453-05-29T23:59:00.000Z |
+| | PPpp | 1987-02-11T12:13:14.015Z | 11. феб 87. 12:13:14 | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29. мај 53. 23:59:59 | 1453-05-29T23:59:59.000Z |
+| | PPPppp | 1987-02-11T12:13:14.015Z | 11. фебруар 1987. у 12:13:14 GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 29. мај 1453. у 23:59:59 GMT+0 | Errored |
+| | PPPPpppp | 1987-02-11T12:13:14.015Z | среда, 11. фебруар 1987. у 12:13:14 (GMT+00:00) | Errored |
+| | | 1453-05-29T23:59:59.999Z | недеља, 29. мај 1453. у 23:59:59 (GMT+00:00) | Errored |
+
+## `formatDistance`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `includeSeconds: true` | `addSuffix: true` |
+| ------------------------ | ---------------- | ---------------------- | -------------------- |
+| 2006-01-01T00:00:00.000Z | око 6 година | око 6 година | за око 6 година |
+| 2005-01-01T00:00:00.000Z | око 5 година | око 5 година | за око 5 година |
+| 2004-01-01T00:00:00.000Z | око 4 године | око 4 године | за око 4 године |
+| 2003-01-01T00:00:00.000Z | око 3 године | око 3 године | за око 3 године |
+| 2002-01-01T00:00:00.000Z | око 2 године | око 2 године | за око 2 године |
+| 2001-06-01T00:00:00.000Z | преко 1 годину | преко 1 годину | за преко 1 годину |
+| 2001-02-01T00:00:00.000Z | око 1 годину | око 1 годину | за око 1 годину |
+| 2001-01-01T00:00:00.000Z | око 1 годину | око 1 годину | за око 1 годину |
+| 2000-06-01T00:00:00.000Z | 5 месеци | 5 месеци | за 5 месеци |
+| 2000-03-01T00:00:00.000Z | 2 месеца | 2 месеца | за 2 месеца |
+| 2000-02-01T00:00:00.000Z | око 1 месец | око 1 месец | за око 1 месец |
+| 2000-01-15T00:00:00.000Z | 14 дана | 14 дана | за 14 дана |
+| 2000-01-02T00:00:00.000Z | 1 дан | 1 дан | за 1 дан |
+| 2000-01-01T06:00:00.000Z | око 6 сати | око 6 сати | за око 6 сати |
+| 2000-01-01T01:00:00.000Z | око 1 сат | око 1 сат | за око 1 сат |
+| 2000-01-01T00:45:00.000Z | око 1 сат | око 1 сат | за око 1 сат |
+| 2000-01-01T00:30:00.000Z | 30 минута | 30 минута | за 30 минута |
+| 2000-01-01T00:15:00.000Z | 15 минута | 15 минута | за 15 минута |
+| 2000-01-01T00:01:00.000Z | 1 минута | 1 минута | за 1 минуту |
+| 2000-01-01T00:00:25.000Z | мање од 1 минуте | пола минуте | за мање од 1 минуту |
+| 2000-01-01T00:00:15.000Z | мање од 1 минуте | мање од 20 секунди | за мање од 1 минуту |
+| 2000-01-01T00:00:05.000Z | мање од 1 минуте | мање од 10 секунди | за мање од 1 минуту |
+| 2000-01-01T00:00:00.000Z | мање од 1 минуте | мање од 5 секунди | пре мање од 1 минуте |
+| 1999-12-31T23:59:55.000Z | мање од 1 минуте | мање од 10 секунди | пре мање од 1 минуте |
+| 1999-12-31T23:59:45.000Z | мање од 1 минуте | мање од 20 секунди | пре мање од 1 минуте |
+| 1999-12-31T23:59:35.000Z | мање од 1 минуте | пола минуте | пре мање од 1 минуте |
+| 1999-12-31T23:59:00.000Z | 1 минута | 1 минута | пре 1 минуте |
+| 1999-12-31T23:45:00.000Z | 15 минута | 15 минута | пре 15 минута |
+| 1999-12-31T23:30:00.000Z | 30 минута | 30 минута | пре 30 минута |
+| 1999-12-31T23:15:00.000Z | око 1 сат | око 1 сат | пре око 1 сат |
+| 1999-12-31T23:00:00.000Z | око 1 сат | око 1 сат | пре око 1 сат |
+| 1999-12-31T18:00:00.000Z | око 6 сати | око 6 сати | пре око 6 сати |
+| 1999-12-30T00:00:00.000Z | 2 дана | 2 дана | пре 2 дана |
+| 1999-12-15T00:00:00.000Z | 17 дана | 17 дана | пре 17 дана |
+| 1999-12-01T00:00:00.000Z | око 1 месец | око 1 месец | пре око 1 месец |
+| 1999-11-01T00:00:00.000Z | 2 месеца | 2 месеца | пре 2 месеца |
+| 1999-06-01T00:00:00.000Z | 7 месеци | 7 месеци | пре 7 месеци |
+| 1999-01-01T00:00:00.000Z | око 1 годину | око 1 годину | пре око 1 годину |
+| 1998-12-01T00:00:00.000Z | око 1 годину | око 1 годину | пре око 1 годину |
+| 1998-06-01T00:00:00.000Z | преко 1 годину | преко 1 годину | пре преко 1 годину |
+| 1998-01-01T00:00:00.000Z | око 2 године | око 2 године | пре око 2 године |
+| 1997-01-01T00:00:00.000Z | око 3 године | око 3 године | пре око 3 године |
+| 1996-01-01T00:00:00.000Z | око 4 године | око 4 године | пре око 4 године |
+| 1995-01-01T00:00:00.000Z | око 5 година | око 5 година | пре око 5 година |
+| 1994-01-01T00:00:00.000Z | око 6 година | око 6 година | пре око 6 година |
+
+## `formatDistanceStrict`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `addSuffix: true` | With forced unit (i.e. `hour`) |
+| ------------------------ | ---------- | ----------------- | ------------------------------ |
+| 2006-01-01T00:00:00.000Z | 6 година | за 6 година | 52608 сати |
+| 2005-01-01T00:00:00.000Z | 5 година | за 5 година | 43848 сати |
+| 2004-01-01T00:00:00.000Z | 4 године | за 4 године | 35064 сата |
+| 2003-01-01T00:00:00.000Z | 3 године | за 3 године | 26304 сата |
+| 2002-01-01T00:00:00.000Z | 2 године | за 2 године | 17544 сата |
+| 2001-06-01T00:00:00.000Z | 1 година | за 1 годину | 12408 сати |
+| 2001-02-01T00:00:00.000Z | 1 година | за 1 годину | 9528 сати |
+| 2001-01-01T00:00:00.000Z | 1 година | за 1 годину | 8784 сата |
+| 2000-06-01T00:00:00.000Z | 5 месеци | за 5 месеци | 3648 сати |
+| 2000-03-01T00:00:00.000Z | 2 месеца | за 2 месеца | 1440 сати |
+| 2000-02-01T00:00:00.000Z | 1 месец | за 1 месец | 744 сата |
+| 2000-01-15T00:00:00.000Z | 14 дана | за 14 дана | 336 сати |
+| 2000-01-02T00:00:00.000Z | 1 дан | за 1 дан | 24 сата |
+| 2000-01-01T06:00:00.000Z | 6 сати | за 6 сати | 6 сати |
+| 2000-01-01T01:00:00.000Z | 1 сат | за 1 сат | 1 сат |
+| 2000-01-01T00:45:00.000Z | 45 минута | за 45 минута | 1 сат |
+| 2000-01-01T00:30:00.000Z | 30 минута | за 30 минута | 1 сат |
+| 2000-01-01T00:15:00.000Z | 15 минута | за 15 минута | 0 сати |
+| 2000-01-01T00:01:00.000Z | 1 минута | за 1 минуту | 0 сати |
+| 2000-01-01T00:00:25.000Z | 25 секунди | за 25 секунди | 0 сати |
+| 2000-01-01T00:00:15.000Z | 15 секунди | за 15 секунди | 0 сати |
+| 2000-01-01T00:00:05.000Z | 5 секунди | за 5 секунди | 0 сати |
+| 2000-01-01T00:00:00.000Z | 0 секунди | пре 0 секунди | 0 сати |
+| 1999-12-31T23:59:55.000Z | 5 секунди | пре 5 секунди | 0 сати |
+| 1999-12-31T23:59:45.000Z | 15 секунди | пре 15 секунди | 0 сати |
+| 1999-12-31T23:59:35.000Z | 25 секунди | пре 25 секунди | 0 сати |
+| 1999-12-31T23:59:00.000Z | 1 минута | пре 1 минуте | 0 сати |
+| 1999-12-31T23:45:00.000Z | 15 минута | пре 15 минута | 0 сати |
+| 1999-12-31T23:30:00.000Z | 30 минута | пре 30 минута | 1 сат |
+| 1999-12-31T23:15:00.000Z | 45 минута | пре 45 минута | 1 сат |
+| 1999-12-31T23:00:00.000Z | 1 сат | пре 1 сат | 1 сат |
+| 1999-12-31T18:00:00.000Z | 6 сати | пре 6 сати | 6 сати |
+| 1999-12-30T00:00:00.000Z | 2 дана | пре 2 дана | 48 сати |
+| 1999-12-15T00:00:00.000Z | 17 дана | пре 17 дана | 408 сати |
+| 1999-12-01T00:00:00.000Z | 1 месец | пре 1 месец | 744 сата |
+| 1999-11-01T00:00:00.000Z | 2 месеца | пре 2 месеца | 1464 сата |
+| 1999-06-01T00:00:00.000Z | 7 месеци | пре 7 месеци | 5136 сати |
+| 1999-01-01T00:00:00.000Z | 1 година | пре 1 године | 8760 сати |
+| 1998-12-01T00:00:00.000Z | 1 година | пре 1 године | 9504 сата |
+| 1998-06-01T00:00:00.000Z | 2 године | пре 2 године | 13896 сати |
+| 1998-01-01T00:00:00.000Z | 2 године | пре 2 године | 17520 сати |
+| 1997-01-01T00:00:00.000Z | 3 године | пре 3 године | 26280 сати |
+| 1996-01-01T00:00:00.000Z | 4 године | пре 4 године | 35064 сата |
+| 1995-01-01T00:00:00.000Z | 5 година | пре 5 година | 43824 сата |
+| 1994-01-01T00:00:00.000Z | 6 година | пре 6 година | 52584 сата |
+
+## `formatRelative`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result |
+| ------------------------ | ------------------------ |
+| 2000-01-10T00:00:00.000Z | 10. 01. 00. |
+| 2000-01-05T00:00:00.000Z | следећу среду у 00:00 |
+| 2000-01-02T00:00:00.000Z | сутра у 00:00 |
+| 2000-01-01T00:00:00.000Z | данас у 00:00 |
+| 1999-12-31T00:00:00.000Z | јуче у 00:00 |
+| 1999-12-27T00:00:00.000Z | прошли понедељак у 00:00 |
+| 1999-12-21T00:00:00.000Z | 21. 12. 99. |
diff --git a/date-fns/src/locale/sv/_lib/formatDistance/index.js b/date-fns/src/locale/sv/_lib/formatDistance/index.js
new file mode 100644
index 0000000..3c8f8d0
--- /dev/null
+++ b/date-fns/src/locale/sv/_lib/formatDistance/index.js
@@ -0,0 +1,127 @@
+var formatDistanceLocale = {
+ lessThanXSeconds: {
+ singular: 'mindre än en sekund',
+ plural: 'mindre än {{count}} sekunder'
+ },
+
+ xSeconds: {
+ singular: 'en sekund',
+ plural: '{{count}} sekunder'
+ },
+
+ halfAMinute: 'en halv minut',
+
+ lessThanXMinutes: {
+ singular: 'mindre än en minut',
+ plural: 'mindre än {{count}} minuter'
+ },
+
+ xMinutes: {
+ singular: 'en minut',
+ plural: '{{count}} minuter'
+ },
+
+ aboutXHours: {
+ singular: 'ungefär en timme',
+ plural: 'ungefär {{count}} timmar'
+ },
+
+ xHours: {
+ singular: 'en timme',
+ plural: '{{count}} timmar'
+ },
+
+ xDays: {
+ singular: 'en dag',
+ plural: '{{count}} dagar'
+ },
+
+ aboutXWeeks: {
+ singular: 'ungefär en vecka',
+ plural: 'ungefär {{count}} vecka'
+ },
+
+ xWeeks: {
+ singular: 'en vecka',
+ plural: '{{count}} vecka'
+ },
+
+ aboutXMonths: {
+ singular: 'ungefär en månad',
+ plural: 'ungefär {{count}} månader'
+ },
+
+ xMonths: {
+ singular: 'en månad',
+ plural: '{{count}} månader'
+ },
+
+ aboutXYears: {
+ singular: 'ungefär ett år',
+ plural: 'ungefär {{count}} år'
+ },
+
+ xYears: {
+ singular: 'ett år',
+ plural: '{{count}} år'
+ },
+
+ overXYears: {
+ singular: 'över ett år',
+ plural: 'över {{count}} år'
+ },
+
+ almostXYears: {
+ singular: 'nästan ett år',
+ plural: 'nästan {{count}} år'
+ }
+}
+
+var wordMapping = [
+ 'noll',
+ 'en',
+ 'två',
+ 'tre',
+ 'fyra',
+ 'fem',
+ 'sex',
+ 'sju',
+ 'åtta',
+ 'nio',
+ 'tio',
+ 'elva',
+ 'tolv'
+]
+
+export default function formatDistance(token, count, options) {
+ options = options || {
+ onlyNumeric: false
+ }
+
+ var translation = formatDistanceLocale[token]
+ var result
+ if (typeof translation === 'string') {
+ result = translation
+ } else if (count === 0 || count > 1) {
+ if (options.onlyNumeric) {
+ result = translation.plural.replace('{{count}}', count)
+ } else {
+ result = translation.plural.replace(
+ '{{count}}',
+ count < 13 ? wordMapping[count] : count
+ )
+ }
+ } else {
+ result = translation.singular
+ }
+
+ if (options.addSuffix) {
+ if (options.comparison > 0) {
+ return 'om ' + result
+ } else {
+ return result + ' sedan'
+ }
+ }
+
+ return result
+}
diff --git a/date-fns/src/locale/sv/_lib/formatLong/index.js b/date-fns/src/locale/sv/_lib/formatLong/index.js
new file mode 100644
index 0000000..ccb4ea9
--- /dev/null
+++ b/date-fns/src/locale/sv/_lib/formatLong/index.js
@@ -0,0 +1,41 @@
+import buildFormatLongFn from '../../../_lib/buildFormatLongFn/index'
+
+var dateFormats = {
+ full: 'EEEE d MMMM y',
+ long: 'd MMMM y',
+ medium: 'd MMM y',
+ short: 'y-MM-dd'
+}
+
+var timeFormats = {
+ full: "'kl'. HH:mm:ss zzzz",
+ long: 'HH:mm:ss z',
+ medium: 'HH:mm:ss',
+ short: 'HH:mm'
+}
+
+var dateTimeFormats = {
+ full: "{{date}} 'kl.' {{time}}",
+ long: "{{date}} 'kl.' {{time}}",
+ medium: '{{date}} {{time}}',
+ short: '{{date}} {{time}}'
+}
+
+var formatLong = {
+ date: buildFormatLongFn({
+ formats: dateFormats,
+ defaultWidth: 'full'
+ }),
+
+ time: buildFormatLongFn({
+ formats: timeFormats,
+ defaultWidth: 'full'
+ }),
+
+ dateTime: buildFormatLongFn({
+ formats: dateTimeFormats,
+ defaultWidth: 'full'
+ })
+}
+
+export default formatLong
diff --git a/date-fns/src/locale/sv/_lib/formatRelative/index.js b/date-fns/src/locale/sv/_lib/formatRelative/index.js
new file mode 100644
index 0000000..b967215
--- /dev/null
+++ b/date-fns/src/locale/sv/_lib/formatRelative/index.js
@@ -0,0 +1,12 @@
+var formatRelativeLocale = {
+ lastWeek: "'i' EEEE's kl.' p",
+ yesterday: "'igår kl.' p",
+ today: "'idag kl.' p",
+ tomorrow: "'imorgon kl.' p",
+ nextWeek: "EEEE 'kl.' p",
+ other: 'P'
+}
+
+export default function formatRelative(token, _date, _baseDate, _options) {
+ return formatRelativeLocale[token]
+}
diff --git a/date-fns/src/locale/sv/_lib/localize/index.js b/date-fns/src/locale/sv/_lib/localize/index.js
new file mode 100644
index 0000000..1717757
--- /dev/null
+++ b/date-fns/src/locale/sv/_lib/localize/index.js
@@ -0,0 +1,168 @@
+import buildLocalizeFn from '../../../_lib/buildLocalizeFn/index'
+
+var eraValues = {
+ narrow: ['f.Kr.', 'e.Kr.'],
+ abbreviated: ['f.Kr.', 'e.Kr.'],
+ wide: ['före Kristus', 'efter Kristus'],
+}
+
+var quarterValues = {
+ narrow: ['1', '2', '3', '4'],
+ abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],
+ wide: ['1:a kvartalet', '2:a kvartalet', '3:e kvartalet', '4:e kvartalet'],
+}
+
+var monthValues = {
+ narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],
+ abbreviated: [
+ 'jan.',
+ 'feb.',
+ 'mars',
+ 'apr.',
+ 'maj',
+ 'juni',
+ 'juli',
+ 'aug.',
+ 'sep.',
+ 'okt.',
+ 'nov.',
+ 'dec.',
+ ],
+ wide: [
+ 'januari',
+ 'februari',
+ 'mars',
+ 'april',
+ 'maj',
+ 'juni',
+ 'juli',
+ 'augusti',
+ 'september',
+ 'oktober',
+ 'november',
+ 'december',
+ ],
+}
+
+var dayValues = {
+ narrow: ['S', 'M', 'T', 'O', 'T', 'F', 'L'],
+ short: ['sö', 'må', 'ti', 'on', 'to', 'fr', 'lö'],
+ abbreviated: ['sön', 'mån', 'tis', 'ons', 'tors', 'fre', 'lör'],
+ wide: ['söndag', 'måndag', 'tisdag', 'onsdag', 'torsdag', 'fredag', 'lördag'],
+}
+
+// https://www.unicode.org/cldr/charts/32/summary/sv.html#1888
+var dayPeriodValues = {
+ narrow: {
+ am: 'fm',
+ pm: 'em',
+ midnight: 'midnatt',
+ noon: 'middag',
+ morning: 'morg.',
+ afternoon: 'efterm.',
+ evening: 'kväll',
+ night: 'natt',
+ },
+ abbreviated: {
+ am: 'f.m.',
+ pm: 'e.m.',
+ midnight: 'midnatt',
+ noon: 'middag',
+ morning: 'morgon',
+ afternoon: 'efterm.',
+ evening: 'kväll',
+ night: 'natt',
+ },
+ wide: {
+ am: 'förmiddag',
+ pm: 'eftermiddag',
+ midnight: 'midnatt',
+ noon: 'middag',
+ morning: 'morgon',
+ afternoon: 'eftermiddag',
+ evening: 'kväll',
+ night: 'natt',
+ },
+}
+var formattingDayPeriodValues = {
+ narrow: {
+ am: 'fm',
+ pm: 'em',
+ midnight: 'midnatt',
+ noon: 'middag',
+ morning: 'på morg.',
+ afternoon: 'på efterm.',
+ evening: 'på kvällen',
+ night: 'på natten',
+ },
+ abbreviated: {
+ am: 'fm',
+ pm: 'em',
+ midnight: 'midnatt',
+ noon: 'middag',
+ morning: 'på morg.',
+ afternoon: 'på efterm.',
+ evening: 'på kvällen',
+ night: 'på natten',
+ },
+ wide: {
+ am: 'fm',
+ pm: 'em',
+ midnight: 'midnatt',
+ noon: 'middag',
+ morning: 'på morgonen',
+ afternoon: 'på eftermiddagen',
+ evening: 'på kvällen',
+ night: 'på natten',
+ },
+}
+
+function ordinalNumber(dirtyNumber) {
+ var number = Number(dirtyNumber)
+
+ var rem100 = number % 100
+ if (rem100 > 20 || rem100 < 10) {
+ switch (rem100 % 10) {
+ case 1:
+ case 2:
+ return number + ':a'
+ }
+ }
+ return number + ':e'
+}
+
+var localize = {
+ ordinalNumber: ordinalNumber,
+
+ era: buildLocalizeFn({
+ values: eraValues,
+ defaultWidth: 'wide',
+ }),
+
+ quarter: buildLocalizeFn({
+ values: quarterValues,
+ defaultWidth: 'wide',
+ argumentCallback: function (quarter) {
+ return Number(quarter) - 1
+ },
+ }),
+
+ month: buildLocalizeFn({
+ values: monthValues,
+ defaultWidth: 'wide',
+ }),
+
+ day: buildLocalizeFn({
+ values: dayValues,
+ defaultWidth: 'wide',
+ }),
+
+ dayPeriod: buildLocalizeFn({
+ values: dayPeriodValues,
+ defaultWidth: 'wide',
+ formattingValues: formattingDayPeriodValues,
+ defaultFormattingWidth: 'wide',
+ }),
+}
+
+export default localize
diff --git a/date-fns/src/locale/sv/_lib/match/index.js b/date-fns/src/locale/sv/_lib/match/index.js
new file mode 100644
index 0000000..c54150f
--- /dev/null
+++ b/date-fns/src/locale/sv/_lib/match/index.js
@@ -0,0 +1,135 @@
+import buildMatchPatternFn from '../../../_lib/buildMatchPatternFn/index'
+import buildMatchFn from '../../../_lib/buildMatchFn/index'
+
+var matchOrdinalNumberPattern = /^(\d+)(:a|:e)?/i
+var parseOrdinalNumberPattern = /\d+/i
+
+var matchEraPatterns = {
+ narrow: /^(f\.? ?Kr\.?|f\.? ?v\.? ?t\.?|e\.? ?Kr\.?|v\.? ?t\.?)/i,
+ abbreviated: /^(f\.? ?Kr\.?|f\.? ?v\.? ?t\.?|e\.? ?Kr\.?|v\.? ?t\.?)/i,
+ wide: /^(före Kristus|före vår tid|efter Kristus|vår tid)/i,
+}
+var parseEraPatterns = {
+ any: [/^f/i, /^[ev]/i],
+}
+
+var matchQuarterPatterns = {
+ narrow: /^[1234]/i,
+ abbreviated: /^q[1234]/i,
+ wide: /^[1234](:a|:e)? kvartalet/i,
+}
+var parseQuarterPatterns = {
+ any: [/1/i, /2/i, /3/i, /4/i],
+}
+
+var matchMonthPatterns = {
+ narrow: /^[jfmasond]/i,
+ abbreviated: /^(jan|feb|mar|apr|maj|jun|jul|aug|sep|okt|nov|dec)\.?/i,
+ wide: /^(januari|februari|mars|april|maj|juni|juli|augusti|september|oktober|november|december)/i,
+}
+var parseMonthPatterns = {
+ narrow: [
+ /^j/i,
+ /^f/i,
+ /^m/i,
+ /^a/i,
+ /^m/i,
+ /^j/i,
+ /^j/i,
+ /^a/i,
+ /^s/i,
+ /^o/i,
+ /^n/i,
+ /^d/i,
+ ],
+ any: [
+ /^ja/i,
+ /^f/i,
+ /^mar/i,
+ /^ap/i,
+ /^maj/i,
+ /^jun/i,
+ /^jul/i,
+ /^au/i,
+ /^s/i,
+ /^o/i,
+ /^n/i,
+ /^d/i,
+ ],
+}
+
+var matchDayPatterns = {
+ narrow: /^[smtofl]/i,
+ short: /^(sö|må|ti|on|to|fr|lö)/i,
+ abbreviated: /^(sön|mån|tis|ons|tors|fre|lör)/i,
+ wide: /^(söndag|måndag|tisdag|onsdag|torsdag|fredag|lördag)/i,
+}
+var parseDayPatterns = {
+ any: [/^s/i, /^m/i, /^ti/i, /^o/i, /^to/i, /^f/i, /^l/i],
+}
+
+var matchDayPeriodPatterns = {
+ any: /^([fe]\.?\s?m\.?|midn(att)?|midd(ag)?|(på) (morgonen|eftermiddagen|kvällen|natten))/i,
+}
+var parseDayPeriodPatterns = {
+ any: {
+ am: /^f/i,
+ pm: /^e/i,
+ midnight: /^midn/i,
+ noon: /^midd/i,
+ morning: /morgon/i,
+ afternoon: /eftermiddag/i,
+ evening: /kväll/i,
+ night: /natt/i,
+ },
+}
+
+var match = {
+ ordinalNumber: buildMatchPatternFn({
+ matchPattern: matchOrdinalNumberPattern,
+ parsePattern: parseOrdinalNumberPattern,
+ valueCallback: function (value) {
+ return parseInt(value, 10)
+ },
+ }),
+
+ era: buildMatchFn({
+ matchPatterns: matchEraPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseEraPatterns,
+ defaultParseWidth: 'any',
+ }),
+
+ quarter: buildMatchFn({
+ matchPatterns: matchQuarterPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseQuarterPatterns,
+ defaultParseWidth: 'any',
+ valueCallback: function (index) {
+ return index + 1
+ },
+ }),
+
+ month: buildMatchFn({
+ matchPatterns: matchMonthPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseMonthPatterns,
+ defaultParseWidth: 'any',
+ }),
+
+ day: buildMatchFn({
+ matchPatterns: matchDayPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseDayPatterns,
+ defaultParseWidth: 'any',
+ }),
+
+ dayPeriod: buildMatchFn({
+ matchPatterns: matchDayPeriodPatterns,
+ defaultMatchWidth: 'any',
+ parsePatterns: parseDayPeriodPatterns,
+ defaultParseWidth: 'any',
+ }),
+}
+
+export default match
diff --git a/date-fns/src/locale/sv/index.d.ts b/date-fns/src/locale/sv/index.d.ts
new file mode 100644
index 0000000..2a7405b
--- /dev/null
+++ b/date-fns/src/locale/sv/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { sv } from 'date-fns/locale'
+export default sv
diff --git a/date-fns/src/locale/sv/index.js b/date-fns/src/locale/sv/index.js
new file mode 100644
index 0000000..f1fb736
--- /dev/null
+++ b/date-fns/src/locale/sv/index.js
@@ -0,0 +1,30 @@
+import formatDistance from './_lib/formatDistance/index'
+import formatLong from './_lib/formatLong/index'
+import formatRelative from './_lib/formatRelative/index'
+import localize from './_lib/localize/index'
+import match from './_lib/match/index'
+
+/**
+ * @type {Locale}
+ * @category Locales
+ * @summary Swedish locale.
+ * @language Swedish
+ * @iso-639-2 swe
+ * @author Johannes Ulén [@ejulen]{@link https://github.com/ejulen}
+ * @author Alexander Nanberg [@alexandernanberg]{@link https://github.com/alexandernanberg}
+ * @author Henrik Andersson [@limelights]{@link https://github.com/limelights}
+ */
+var locale = {
+ code: 'sv',
+ formatDistance: formatDistance,
+ formatLong: formatLong,
+ formatRelative: formatRelative,
+ localize: localize,
+ match: match,
+ options: {
+ weekStartsOn: 1 /* Monday */,
+ firstWeekContainsDate: 4
+ }
+}
+
+export default locale
diff --git a/date-fns/src/locale/sv/index.js.flow b/date-fns/src/locale/sv/index.js.flow
new file mode 100644
index 0000000..b9dfe66
--- /dev/null
+++ b/date-fns/src/locale/sv/index.js.flow
@@ -0,0 +1,35 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+declare module.exports: Locale
diff --git a/date-fns/src/locale/sv/snapshot.md b/date-fns/src/locale/sv/snapshot.md
new file mode 100644
index 0000000..c73a7ea
--- /dev/null
+++ b/date-fns/src/locale/sv/snapshot.md
@@ -0,0 +1,304 @@
+# Swedish (sv) locale
+
+## `format` and `parse`
+
+| Title | Token string | Date | `format` result | `parse` result |
+| ------------------------------- | ------------ | ------------------------ | -------------------------------------------------- | ------------------------ |
+| Calendar year | yo | 1987-02-11T12:13:14.015Z | 1987:e | 1987-01-01T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 5:e | 0005-01-01T00:00:00.000Z |
+| Local week-numbering year | Yo | 1987-02-11T12:13:14.015Z | 1987:e | 1986-12-29T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 4:e | 0003-12-29T00:00:00.000Z |
+| Quarter (formatting) | Qo | 2019-01-01T12:13:14.015Z | 1:a | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2:a | 2019-04-01T00:00:00.000Z |
+| | QQQ | 2019-01-01T12:13:14.015Z | Q1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | Q2 | 2019-04-01T00:00:00.000Z |
+| | QQQQ | 2019-01-01T12:13:14.015Z | 1:a kvartalet | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2:a kvartalet | 2019-04-01T00:00:00.000Z |
+| | QQQQQ | 2019-01-01T12:13:14.015Z | 1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2 | 2019-04-01T00:00:00.000Z |
+| Quarter (stand-alone) | qo | 2019-01-01T12:13:14.015Z | 1:a | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2:a | 2019-04-01T00:00:00.000Z |
+| | qqq | 2019-01-01T12:13:14.015Z | Q1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | Q2 | 2019-04-01T00:00:00.000Z |
+| | qqqq | 2019-01-01T12:13:14.015Z | 1:a kvartalet | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2:a kvartalet | 2019-04-01T00:00:00.000Z |
+| Month (formatting) | Mo | 2019-02-11T12:13:14.015Z | 2:a | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7:e | 2019-07-01T00:00:00.000Z |
+| | MMM | 2019-02-11T12:13:14.015Z | feb. | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | juli | Invalid Date |
+| | MMMM | 2019-02-11T12:13:14.015Z | februari | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | juli | 2019-07-01T00:00:00.000Z |
+| | MMMMM | 2019-02-11T12:13:14.015Z | F | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | J | 2019-01-01T00:00:00.000Z |
+| Month (stand-alone) | Lo | 2019-02-11T12:13:14.015Z | 2:a | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7:e | 2019-07-01T00:00:00.000Z |
+| | LLL | 2019-02-11T12:13:14.015Z | feb. | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | juli | Invalid Date |
+| | LLLL | 2019-02-11T12:13:14.015Z | februari | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | juli | 2019-07-01T00:00:00.000Z |
+| | LLLLL | 2019-02-11T12:13:14.015Z | F | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | J | 2019-01-01T00:00:00.000Z |
+| Local week of year | wo | 2019-01-01T12:13:14.015Z | 1:a | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48:e | 2019-11-25T00:00:00.000Z |
+| ISO week of year | Io | 2019-01-01T12:13:14.015Z | 1:a | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48:e | 2019-11-25T00:00:00.000Z |
+| Day of month | do | 2019-02-11T12:13:14.015Z | 11:e | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-28T12:13:14.015Z | 28:e | 2019-02-28T00:00:00.000Z |
+| Day of year | Do | 2019-02-11T12:13:14.015Z | 42:a | 2019-02-11T00:00:00.000Z |
+| | | 2019-12-31T12:13:14.015Z | 365:e | 2019-12-31T00:00:00.000Z |
+| Day of week (formatting) | E | 2019-02-11T12:13:14.015Z | mån | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | fre | 2019-02-15T00:00:00.000Z |
+| | EE | 2019-02-11T12:13:14.015Z | mån | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | fre | 2019-02-15T00:00:00.000Z |
+| | EEE | 2019-02-11T12:13:14.015Z | mån | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | fre | 2019-02-15T00:00:00.000Z |
+| | EEEE | 2019-02-11T12:13:14.015Z | måndag | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | fredag | 2019-02-15T00:00:00.000Z |
+| | EEEEE | 2019-02-11T12:13:14.015Z | M | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | F | 2019-02-15T00:00:00.000Z |
+| | EEEEEE | 2019-02-11T12:13:14.015Z | må | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | fr | 2019-02-15T00:00:00.000Z |
+| ISO day of week (formatting) | io | 2019-02-11T12:13:14.015Z | 1:a | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5:e | 2019-02-15T00:00:00.000Z |
+| | iii | 2019-02-11T12:13:14.015Z | mån | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | fre | 2019-02-15T00:00:00.000Z |
+| | iiii | 2019-02-11T12:13:14.015Z | måndag | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | fredag | 2019-02-15T00:00:00.000Z |
+| | iiiii | 2019-02-11T12:13:14.015Z | M | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | F | 2019-02-15T00:00:00.000Z |
+| | iiiiii | 2019-02-11T12:13:14.015Z | må | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | fr | 2019-02-15T00:00:00.000Z |
+| Local day of week (formatting) | eo | 2019-02-11T12:13:14.015Z | 1:a | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5:e | 2019-02-15T00:00:00.000Z |
+| | eee | 2019-02-11T12:13:14.015Z | mån | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | fre | 2019-02-15T00:00:00.000Z |
+| | eeee | 2019-02-11T12:13:14.015Z | måndag | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | fredag | 2019-02-15T00:00:00.000Z |
+| | eeeee | 2019-02-11T12:13:14.015Z | M | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | F | 2019-02-15T00:00:00.000Z |
+| | eeeeee | 2019-02-11T12:13:14.015Z | må | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | fr | 2019-02-15T00:00:00.000Z |
+| Local day of week (stand-alone) | co | 2019-02-11T12:13:14.015Z | 1:a | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5:e | 2019-02-15T00:00:00.000Z |
+| | ccc | 2019-02-11T12:13:14.015Z | mån | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | fre | 2019-02-15T00:00:00.000Z |
+| | cccc | 2019-02-11T12:13:14.015Z | måndag | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | fredag | 2019-02-15T00:00:00.000Z |
+| | ccccc | 2019-02-11T12:13:14.015Z | M | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | F | 2019-02-15T00:00:00.000Z |
+| | cccccc | 2019-02-11T12:13:14.015Z | må | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | fr | 2019-02-15T00:00:00.000Z |
+| AM, PM | a | 2019-02-11T11:13:14.015Z | fm | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | em | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | em | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | fm | 2019-02-11T00:00:00.000Z |
+| | aa | 2019-02-11T11:13:14.015Z | fm | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | em | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | em | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | fm | 2019-02-11T00:00:00.000Z |
+| | aaa | 2019-02-11T11:13:14.015Z | fm | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | em | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | em | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | fm | 2019-02-11T00:00:00.000Z |
+| | aaaa | 2019-02-11T11:13:14.015Z | fm | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | em | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | em | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | fm | 2019-02-11T00:00:00.000Z |
+| | aaaaa | 2019-02-11T11:13:14.015Z | fm | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | em | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | em | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | fm | 2019-02-11T00:00:00.000Z |
+| AM, PM, noon, midnight | b | 2019-02-11T11:13:14.015Z | fm | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | em | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | em | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | fm | 2019-02-11T00:00:00.000Z |
+| | bb | 2019-02-11T11:13:14.015Z | fm | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | em | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | em | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | fm | 2019-02-11T00:00:00.000Z |
+| | bbb | 2019-02-11T11:13:14.015Z | fm | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | em | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | em | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | fm | 2019-02-11T00:00:00.000Z |
+| | bbbb | 2019-02-11T11:13:14.015Z | fm | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | em | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | em | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | fm | 2019-02-11T00:00:00.000Z |
+| | bbbbb | 2019-02-11T11:13:14.015Z | fm | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | em | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | em | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | fm | 2019-02-11T00:00:00.000Z |
+| Flexible day period | B | 2019-02-11T11:13:14.015Z | på morg. | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | på efterm. | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | på kvällen | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | på natten | 2019-02-11T00:00:00.000Z |
+| | BB | 2019-02-11T11:13:14.015Z | på morg. | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | på efterm. | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | på kvällen | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | på natten | 2019-02-11T00:00:00.000Z |
+| | BBB | 2019-02-11T11:13:14.015Z | på morg. | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | på efterm. | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | på kvällen | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | på natten | 2019-02-11T00:00:00.000Z |
+| | BBBB | 2019-02-11T11:13:14.015Z | på morgonen | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | på eftermiddagen | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | på kvällen | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | på natten | 2019-02-11T00:00:00.000Z |
+| | BBBBB | 2019-02-11T11:13:14.015Z | på morg. | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | på efterm. | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | på kvällen | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | på natten | 2019-02-11T00:00:00.000Z |
+| Hour [1-12] | ho | 2019-02-11T11:13:14.015Z | 11:e | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11:e | 2019-02-11T23:00:00.000Z |
+| Hour [0-23] | Ho | 2019-02-11T11:13:14.015Z | 11:e | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23:e | 2019-02-11T23:00:00.000Z |
+| Hour [0-11] | Ko | 2019-02-11T11:13:14.015Z | 11:e | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11:e | 2019-02-11T23:00:00.000Z |
+| Hour [1-24] | ko | 2019-02-11T11:13:14.015Z | 11:e | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23:e | 2019-02-11T23:00:00.000Z |
+| Minute | mo | 2019-01-01T12:01:14.015Z | 1:a | 2019-01-01T12:01:00.000Z |
+| | | 2019-04-01T12:55:14.015Z | 55:e | 2019-04-01T12:55:00.000Z |
+| Second | so | 2019-01-01T12:13:01.015Z | 1:a | 2019-01-01T12:13:01.000Z |
+| | | 2019-04-01T12:13:55.015Z | 55:e | 2019-04-01T12:13:55.000Z |
+| Long localized date | P | 1987-02-11T12:13:14.015Z | 1987-02-11 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 1453-05-29 | 1453-05-29T00:00:00.000Z |
+| | PP | 1987-02-11T12:13:14.015Z | 11 feb. 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 maj 1453 | 1453-05-29T00:00:00.000Z |
+| | PPP | 1987-02-11T12:13:14.015Z | 11 februari 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 maj 1453 | 1453-05-29T00:00:00.000Z |
+| | PPPP | 1987-02-11T12:13:14.015Z | onsdag 11 februari 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | söndag 29 maj 1453 | 1453-05-29T00:00:00.000Z |
+| Long localized time | p | 1987-02-11T12:13:14.015Z | 12:13 | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 23:59 | 1453-05-29T23:59:00.000Z |
+| | pp | 1987-02-11T12:13:14.015Z | 12:13:14 | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 | 1453-05-29T23:59:59.000Z |
+| | ppp | 1987-02-11T12:13:14.015Z | 12:13:14 GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 GMT+0 | Errored |
+| | pppp | 1987-02-11T12:13:14.015Z | kl. 12:13:14 GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | kl. 23:59:59 GMT+00:00 | Errored |
+| Combination of date and time | Pp | 1987-02-11T12:13:14.015Z | 1987-02-11 12:13 | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 1453-05-29 23:59 | 1453-05-29T23:59:00.000Z |
+| | PPpp | 1987-02-11T12:13:14.015Z | 11 feb. 1987 12:13:14 | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 maj 1453 23:59:59 | 1453-05-29T23:59:59.000Z |
+| | PPPppp | 1987-02-11T12:13:14.015Z | 11 februari 1987 kl. 12:13:14 GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 29 maj 1453 kl. 23:59:59 GMT+0 | Errored |
+| | PPPPpppp | 1987-02-11T12:13:14.015Z | onsdag 11 februari 1987 kl. kl. 12:13:14 GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | söndag 29 maj 1453 kl. kl. 23:59:59 GMT+00:00 | Errored |
+
+## `formatDistance`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `includeSeconds: true` | `addSuffix: true` |
+| ------------------------ | ------------------ | ---------------------- | ------------------------ |
+| 2006-01-01T00:00:00.000Z | ungefär sex år | ungefär sex år | om ungefär sex år |
+| 2005-01-01T00:00:00.000Z | ungefär fem år | ungefär fem år | om ungefär fem år |
+| 2004-01-01T00:00:00.000Z | ungefär fyra år | ungefär fyra år | om ungefär fyra år |
+| 2003-01-01T00:00:00.000Z | ungefär tre år | ungefär tre år | om ungefär tre år |
+| 2002-01-01T00:00:00.000Z | ungefär två år | ungefär två år | om ungefär två år |
+| 2001-06-01T00:00:00.000Z | över ett år | över ett år | om över ett år |
+| 2001-02-01T00:00:00.000Z | ungefär ett år | ungefär ett år | om ungefär ett år |
+| 2001-01-01T00:00:00.000Z | ungefär ett år | ungefär ett år | om ungefär ett år |
+| 2000-06-01T00:00:00.000Z | fem månader | fem månader | om fem månader |
+| 2000-03-01T00:00:00.000Z | två månader | två månader | om två månader |
+| 2000-02-01T00:00:00.000Z | ungefär en månad | ungefär en månad | om ungefär en månad |
+| 2000-01-15T00:00:00.000Z | 14 dagar | 14 dagar | om 14 dagar |
+| 2000-01-02T00:00:00.000Z | en dag | en dag | om en dag |
+| 2000-01-01T06:00:00.000Z | ungefär sex timmar | ungefär sex timmar | om ungefär sex timmar |
+| 2000-01-01T01:00:00.000Z | ungefär en timme | ungefär en timme | om ungefär en timme |
+| 2000-01-01T00:45:00.000Z | ungefär en timme | ungefär en timme | om ungefär en timme |
+| 2000-01-01T00:30:00.000Z | 30 minuter | 30 minuter | om 30 minuter |
+| 2000-01-01T00:15:00.000Z | 15 minuter | 15 minuter | om 15 minuter |
+| 2000-01-01T00:01:00.000Z | en minut | en minut | om en minut |
+| 2000-01-01T00:00:25.000Z | mindre än en minut | en halv minut | om mindre än en minut |
+| 2000-01-01T00:00:15.000Z | mindre än en minut | mindre än 20 sekunder | om mindre än en minut |
+| 2000-01-01T00:00:05.000Z | mindre än en minut | mindre än tio sekunder | om mindre än en minut |
+| 2000-01-01T00:00:00.000Z | mindre än en minut | mindre än fem sekunder | mindre än en minut sedan |
+| 1999-12-31T23:59:55.000Z | mindre än en minut | mindre än tio sekunder | mindre än en minut sedan |
+| 1999-12-31T23:59:45.000Z | mindre än en minut | mindre än 20 sekunder | mindre än en minut sedan |
+| 1999-12-31T23:59:35.000Z | mindre än en minut | en halv minut | mindre än en minut sedan |
+| 1999-12-31T23:59:00.000Z | en minut | en minut | en minut sedan |
+| 1999-12-31T23:45:00.000Z | 15 minuter | 15 minuter | 15 minuter sedan |
+| 1999-12-31T23:30:00.000Z | 30 minuter | 30 minuter | 30 minuter sedan |
+| 1999-12-31T23:15:00.000Z | ungefär en timme | ungefär en timme | ungefär en timme sedan |
+| 1999-12-31T23:00:00.000Z | ungefär en timme | ungefär en timme | ungefär en timme sedan |
+| 1999-12-31T18:00:00.000Z | ungefär sex timmar | ungefär sex timmar | ungefär sex timmar sedan |
+| 1999-12-30T00:00:00.000Z | två dagar | två dagar | två dagar sedan |
+| 1999-12-15T00:00:00.000Z | 17 dagar | 17 dagar | 17 dagar sedan |
+| 1999-12-01T00:00:00.000Z | ungefär en månad | ungefär en månad | ungefär en månad sedan |
+| 1999-11-01T00:00:00.000Z | två månader | två månader | två månader sedan |
+| 1999-06-01T00:00:00.000Z | sju månader | sju månader | sju månader sedan |
+| 1999-01-01T00:00:00.000Z | ungefär ett år | ungefär ett år | ungefär ett år sedan |
+| 1998-12-01T00:00:00.000Z | ungefär ett år | ungefär ett år | ungefär ett år sedan |
+| 1998-06-01T00:00:00.000Z | över ett år | över ett år | över ett år sedan |
+| 1998-01-01T00:00:00.000Z | ungefär två år | ungefär två år | ungefär två år sedan |
+| 1997-01-01T00:00:00.000Z | ungefär tre år | ungefär tre år | ungefär tre år sedan |
+| 1996-01-01T00:00:00.000Z | ungefär fyra år | ungefär fyra år | ungefär fyra år sedan |
+| 1995-01-01T00:00:00.000Z | ungefär fem år | ungefär fem år | ungefär fem år sedan |
+| 1994-01-01T00:00:00.000Z | ungefär sex år | ungefär sex år | ungefär sex år sedan |
+
+## `formatDistanceStrict`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `addSuffix: true` | With forced unit (i.e. `hour`) |
+| ------------------------ | ------------- | ------------------- | ------------------------------ |
+| 2006-01-01T00:00:00.000Z | sex år | om sex år | 52608 timmar |
+| 2005-01-01T00:00:00.000Z | fem år | om fem år | 43848 timmar |
+| 2004-01-01T00:00:00.000Z | fyra år | om fyra år | 35064 timmar |
+| 2003-01-01T00:00:00.000Z | tre år | om tre år | 26304 timmar |
+| 2002-01-01T00:00:00.000Z | två år | om två år | 17544 timmar |
+| 2001-06-01T00:00:00.000Z | ett år | om ett år | 12408 timmar |
+| 2001-02-01T00:00:00.000Z | ett år | om ett år | 9528 timmar |
+| 2001-01-01T00:00:00.000Z | ett år | om ett år | 8784 timmar |
+| 2000-06-01T00:00:00.000Z | fem månader | om fem månader | 3648 timmar |
+| 2000-03-01T00:00:00.000Z | två månader | om två månader | 1440 timmar |
+| 2000-02-01T00:00:00.000Z | en månad | om en månad | 744 timmar |
+| 2000-01-15T00:00:00.000Z | 14 dagar | om 14 dagar | 336 timmar |
+| 2000-01-02T00:00:00.000Z | en dag | om en dag | 24 timmar |
+| 2000-01-01T06:00:00.000Z | sex timmar | om sex timmar | sex timmar |
+| 2000-01-01T01:00:00.000Z | en timme | om en timme | en timme |
+| 2000-01-01T00:45:00.000Z | 45 minuter | om 45 minuter | en timme |
+| 2000-01-01T00:30:00.000Z | 30 minuter | om 30 minuter | en timme |
+| 2000-01-01T00:15:00.000Z | 15 minuter | om 15 minuter | noll timmar |
+| 2000-01-01T00:01:00.000Z | en minut | om en minut | noll timmar |
+| 2000-01-01T00:00:25.000Z | 25 sekunder | om 25 sekunder | noll timmar |
+| 2000-01-01T00:00:15.000Z | 15 sekunder | om 15 sekunder | noll timmar |
+| 2000-01-01T00:00:05.000Z | fem sekunder | om fem sekunder | noll timmar |
+| 2000-01-01T00:00:00.000Z | noll sekunder | noll sekunder sedan | noll timmar |
+| 1999-12-31T23:59:55.000Z | fem sekunder | fem sekunder sedan | noll timmar |
+| 1999-12-31T23:59:45.000Z | 15 sekunder | 15 sekunder sedan | noll timmar |
+| 1999-12-31T23:59:35.000Z | 25 sekunder | 25 sekunder sedan | noll timmar |
+| 1999-12-31T23:59:00.000Z | en minut | en minut sedan | noll timmar |
+| 1999-12-31T23:45:00.000Z | 15 minuter | 15 minuter sedan | noll timmar |
+| 1999-12-31T23:30:00.000Z | 30 minuter | 30 minuter sedan | en timme |
+| 1999-12-31T23:15:00.000Z | 45 minuter | 45 minuter sedan | en timme |
+| 1999-12-31T23:00:00.000Z | en timme | en timme sedan | en timme |
+| 1999-12-31T18:00:00.000Z | sex timmar | sex timmar sedan | sex timmar |
+| 1999-12-30T00:00:00.000Z | två dagar | två dagar sedan | 48 timmar |
+| 1999-12-15T00:00:00.000Z | 17 dagar | 17 dagar sedan | 408 timmar |
+| 1999-12-01T00:00:00.000Z | en månad | en månad sedan | 744 timmar |
+| 1999-11-01T00:00:00.000Z | två månader | två månader sedan | 1464 timmar |
+| 1999-06-01T00:00:00.000Z | sju månader | sju månader sedan | 5136 timmar |
+| 1999-01-01T00:00:00.000Z | ett år | ett år sedan | 8760 timmar |
+| 1998-12-01T00:00:00.000Z | ett år | ett år sedan | 9504 timmar |
+| 1998-06-01T00:00:00.000Z | två år | två år sedan | 13896 timmar |
+| 1998-01-01T00:00:00.000Z | två år | två år sedan | 17520 timmar |
+| 1997-01-01T00:00:00.000Z | tre år | tre år sedan | 26280 timmar |
+| 1996-01-01T00:00:00.000Z | fyra år | fyra år sedan | 35064 timmar |
+| 1995-01-01T00:00:00.000Z | fem år | fem år sedan | 43824 timmar |
+| 1994-01-01T00:00:00.000Z | sex år | sex år sedan | 52584 timmar |
+
+## `formatRelative`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result |
+| ------------------------ | ------------------- |
+| 2000-01-10T00:00:00.000Z | 2000-01-10 |
+| 2000-01-05T00:00:00.000Z | onsdag kl. 00:00 |
+| 2000-01-02T00:00:00.000Z | imorgon kl. 00:00 |
+| 2000-01-01T00:00:00.000Z | idag kl. 00:00 |
+| 1999-12-31T00:00:00.000Z | igår kl. 00:00 |
+| 1999-12-27T00:00:00.000Z | i måndags kl. 00:00 |
+| 1999-12-21T00:00:00.000Z | 1999-12-21 |
diff --git a/date-fns/src/locale/ta/_lib/formatDistance/index.js b/date-fns/src/locale/ta/_lib/formatDistance/index.js
new file mode 100644
index 0000000..20c905b
--- /dev/null
+++ b/date-fns/src/locale/ta/_lib/formatDistance/index.js
@@ -0,0 +1,236 @@
+var formatDistanceLocale = {
+ lessThanXSeconds: {
+ one: {
+ default: 'ஒரு வினாடிக்கு குறைவாக',
+ in: 'ஒரு வினாடிக்குள்',
+ ago: 'ஒரு வினாடிக்கு முன்பு'
+ },
+ other: {
+ default: '{{count}} வினாடிகளுக்கு குறைவாக',
+ in: '{{count}} வினாடிகளுக்குள்',
+ ago: '{{count}} வினாடிகளுக்கு முன்பு'
+ }
+ },
+
+ xSeconds: {
+ one: {
+ default: '1 வினாடி',
+ in: '1 வினாடியில்',
+ ago: '1 வினாடி முன்பு'
+ },
+ other: {
+ default: '{{count}} விநாடிகள்',
+ in: '{{count}} வினாடிகளில்',
+ ago: '{{count}} விநாடிகளுக்கு முன்பு'
+ }
+ },
+
+ halfAMinute: {
+ default: 'அரை நிமிடம்',
+ in: 'அரை நிமிடத்தில்',
+ ago: 'அரை நிமிடம் முன்பு'
+ },
+
+ lessThanXMinutes: {
+ one: {
+ default: 'ஒரு நிமிடத்திற்கும் குறைவாக',
+ in: 'ஒரு நிமிடத்திற்குள்',
+ ago: 'ஒரு நிமிடத்திற்கு முன்பு'
+ },
+ other: {
+ default: '{{count}} நிமிடங்களுக்கும் குறைவாக',
+ in: '{{count}} நிமிடங்களுக்குள்',
+ ago: '{{count}} நிமிடங்களுக்கு முன்பு'
+ }
+ },
+
+ xMinutes: {
+ one: {
+ default: '1 நிமிடம்',
+ in: '1 நிமிடத்தில்',
+ ago: '1 நிமிடம் முன்பு'
+ },
+ other: {
+ default: '{{count}} நிமிடங்கள்',
+ in: '{{count}} நிமிடங்களில்',
+ ago: '{{count}} நிமிடங்களுக்கு முன்பு'
+ }
+ },
+
+ aboutXHours: {
+ one: {
+ default: 'சுமார் 1 மணி நேரம்',
+ in: 'சுமார் 1 மணி நேரத்தில்',
+ ago: 'சுமார் 1 மணி நேரத்திற்கு முன்பு'
+ },
+ other: {
+ default: 'சுமார் {{count}} மணி நேரம்',
+ in: 'சுமார் {{count}} மணி நேரத்திற்கு முன்பு',
+ ago: 'சுமார் {{count}} மணி நேரத்தில்'
+ }
+ },
+
+ xHours: {
+ one: {
+ default: '1 மணி நேரம்',
+ in: '1 மணி நேரத்தில்',
+ ago: '1 மணி நேரத்திற்கு முன்பு'
+ },
+ other: {
+ default: '{{count}} மணி நேரம்',
+ in: '{{count}} மணி நேரத்தில்',
+ ago: '{{count}} மணி நேரத்திற்கு முன்பு'
+ }
+ },
+
+ xDays: {
+ one: {
+ default: '1 நாள்',
+ in: '1 நாளில்',
+ ago: '1 நாள் முன்பு'
+ },
+ other: {
+ default: '{{count}} நாட்கள்',
+ in: '{{count}} நாட்களில்',
+ ago: '{{count}} நாட்களுக்கு முன்பு'
+ }
+ },
+
+ aboutXWeeks: {
+ one: {
+ default: 'சுமார் 1 வாரம்',
+ in: 'சுமார் 1 வாரத்தில்',
+ ago: 'சுமார் 1 வாரம் முன்பு'
+ },
+ other: {
+ default: 'சுமார் {{count}} வாரங்கள்',
+ in: 'சுமார் {{count}} வாரங்களில்',
+ ago: 'சுமார் {{count}} வாரங்களுக்கு முன்பு'
+ }
+ },
+
+ xWeeks: {
+ one: {
+ default: '1 வாரம்',
+ in: '1 வாரத்தில்',
+ ago: '1 வாரம் முன்பு'
+ },
+ other: {
+ default: '{{count}} வாரங்கள்',
+ in: '{{count}} வாரங்களில்',
+ ago: '{{count}} வாரங்களுக்கு முன்பு'
+ }
+ },
+
+ aboutXMonths: {
+ one: {
+ default: 'சுமார் 1 மாதம்',
+ in: 'சுமார் 1 மாதத்தில்',
+ ago: 'சுமார் 1 மாதத்திற்கு முன்பு'
+ },
+ other: {
+ default: 'சுமார் {{count}} மாதங்கள்',
+ in: 'சுமார் {{count}} மாதங்களில்',
+ ago: 'சுமார் {{count}} மாதங்களுக்கு முன்பு'
+ }
+ },
+
+ xMonths: {
+ one: {
+ default: '1 மாதம்',
+ in: '1 மாதத்தில்',
+ ago: '1 மாதம் முன்பு'
+ },
+ other: {
+ default: '{{count}} மாதங்கள்',
+ in: '{{count}} மாதங்களில்',
+ ago: '{{count}} மாதங்களுக்கு முன்பு'
+ }
+ },
+
+ aboutXYears: {
+ one: {
+ default: 'சுமார் 1 வருடம்',
+ in: 'சுமார் 1 ஆண்டில்',
+ ago: 'சுமார் 1 வருடம் முன்பு'
+ },
+ other: {
+ default: 'சுமார் {{count}} ஆண்டுகள்',
+ in: 'சுமார் {{count}} ஆண்டுகளில்',
+ ago: 'சுமார் {{count}} ஆண்டுகளுக்கு முன்பு'
+ }
+ },
+
+ xYears: {
+ one: {
+ default: '1 வருடம்',
+ in: '1 ஆண்டில்',
+ ago: '1 வருடம் முன்பு'
+ },
+ other: {
+ default: '{{count}} ஆண்டுகள்',
+ in: '{{count}} ஆண்டுகளில்',
+ ago: '{{count}} ஆண்டுகளுக்கு முன்பு'
+ }
+ },
+
+ overXYears: {
+ one: {
+ default: '1 வருடத்திற்கு மேல்',
+ in: '1 வருடத்திற்கும் மேலாக',
+ ago: '1 வருடம் முன்பு'
+ },
+ other: {
+ default: '{{count}} ஆண்டுகளுக்கும் மேலாக',
+ in: '{{count}} ஆண்டுகளில்',
+ ago: '{{count}} ஆண்டுகளுக்கு முன்பு'
+ }
+ },
+
+ almostXYears: {
+ one: {
+ default: 'கிட்டத்தட்ட 1 வருடம்',
+ in: 'கிட்டத்தட்ட 1 ஆண்டில்',
+ ago: 'கிட்டத்தட்ட 1 வருடம் முன்பு'
+ },
+ other: {
+ default: 'கிட்டத்தட்ட {{count}} ஆண்டுகள்',
+ in: 'கிட்டத்தட்ட {{count}} ஆண்டுகளில்',
+ ago: 'கிட்டத்தட்ட {{count}} ஆண்டுகளுக்கு முன்பு'
+ }
+ }
+}
+
+function getFormatDistanceLocaleWithSuffix(resultObj, options) {
+ if (options.addSuffix) {
+ if (options.comparison > 0) {
+ return resultObj.in
+ } else {
+ return resultObj.ago
+ }
+ }
+
+ return resultObj.default
+}
+
+export default function formatDistance(token, count, options = {}) {
+ var result
+ if (formatDistanceLocale[token].default) {
+ result = getFormatDistanceLocaleWithSuffix(
+ formatDistanceLocale[token],
+ options
+ )
+ } else if (count === 1) {
+ result = getFormatDistanceLocaleWithSuffix(
+ formatDistanceLocale[token].one,
+ options
+ )
+ } else {
+ result = getFormatDistanceLocaleWithSuffix(
+ formatDistanceLocale[token].other,
+ options
+ )
+ }
+
+ return result.replace('{{count}}', count)
+}
diff --git a/date-fns/src/locale/ta/_lib/formatLong/index.js b/date-fns/src/locale/ta/_lib/formatLong/index.js
new file mode 100644
index 0000000..3524908
--- /dev/null
+++ b/date-fns/src/locale/ta/_lib/formatLong/index.js
@@ -0,0 +1,45 @@
+// Ref: https://www.unicode.org/cldr/charts/32/summary/ta.html
+
+import buildFormatLongFn from '../../../_lib/buildFormatLongFn/index'
+
+// CLDR #1846 - #1849
+var dateFormats = {
+ full: 'EEEE, d MMMM, y',
+ long: 'd MMMM, y',
+ medium: 'd MMM, y',
+ short: 'd/M/yy'
+}
+
+// CLDR #1850 - #1853
+var timeFormats = {
+ full: 'a h:mm:ss zzzz',
+ long: 'a h:mm:ss z',
+ medium: 'a h:mm:ss',
+ short: 'a h:mm'
+}
+
+var dateTimeFormats = {
+ full: '{{date}} {{time}}',
+ long: '{{date}} {{time}}',
+ medium: '{{date}}, {{time}}',
+ short: '{{date}}, {{time}}'
+}
+
+var formatLong = {
+ date: buildFormatLongFn({
+ formats: dateFormats,
+ defaultWidth: 'full'
+ }),
+
+ time: buildFormatLongFn({
+ formats: timeFormats,
+ defaultWidth: 'full'
+ }),
+
+ dateTime: buildFormatLongFn({
+ formats: dateTimeFormats,
+ defaultWidth: 'full'
+ })
+}
+
+export default formatLong
diff --git a/date-fns/src/locale/ta/_lib/formatRelative/index.js b/date-fns/src/locale/ta/_lib/formatRelative/index.js
new file mode 100644
index 0000000..280b830
--- /dev/null
+++ b/date-fns/src/locale/ta/_lib/formatRelative/index.js
@@ -0,0 +1,12 @@
+var formatRelativeLocale = {
+ lastWeek: "'கடந்த' eeee p 'மணிக்கு'",
+ yesterday: "'நேற்று ' p 'மணிக்கு'",
+ today: "'இன்று ' p 'மணிக்கு'",
+ tomorrow: "'நாளை ' p 'மணிக்கு'",
+ nextWeek: "eeee p 'மணிக்கு'",
+ other: 'P'
+}
+
+export default function formatRelative(token, _date, _baseDate, _options) {
+ return formatRelativeLocale[token]
+}
diff --git a/date-fns/src/locale/ta/_lib/localize/index.js b/date-fns/src/locale/ta/_lib/localize/index.js
new file mode 100644
index 0000000..c5e88f8
--- /dev/null
+++ b/date-fns/src/locale/ta/_lib/localize/index.js
@@ -0,0 +1,209 @@
+// Ref: https://www.unicode.org/cldr/charts/32/summary/ta.html
+
+import buildLocalizeFn from '../../../_lib/buildLocalizeFn/index'
+
+var eraValues = {
+ narrow: ['கி.மு.', 'கி.பி.'],
+ abbreviated: ['கி.மு.', 'கி.பி.'], // CLDR #1624, #1626
+ wide: ['கிறிஸ்துவுக்கு முன்', 'அன்னோ டோமினி'] // CLDR #1620, #1622
+}
+
+var quarterValues = {
+ // CLDR #1644 - #1647
+ narrow: ['1', '2', '3', '4'],
+ // CLDR #1636 - #1639
+ abbreviated: ['காலா.1', 'காலா.2', 'காலா.3', 'காலா.4'],
+ // CLDR #1628 - #1631
+ wide: [
+ 'ஒன்றாம் காலாண்டு',
+ 'இரண்டாம் காலாண்டு',
+ 'மூன்றாம் காலாண்டு',
+ 'நான்காம் காலாண்டு'
+ ]
+}
+
+var monthValues = {
+ // CLDR #700 - #711
+ narrow: ['ஜ', 'பி', 'மா', 'ஏ', 'மே', 'ஜூ', 'ஜூ', 'ஆ', 'செ', 'அ', 'ந', 'டி'],
+ // CLDR #1676 - #1687
+ abbreviated: [
+ 'ஜன.',
+ 'பிப்.',
+ 'மார்.',
+ 'ஏப்.',
+ 'மே',
+ 'ஜூன்',
+ 'ஜூலை',
+ 'ஆக.',
+ 'செப்.',
+ 'அக்.',
+ 'நவ.',
+ 'டிச.'
+ ],
+ // CLDR #1652 - #1663
+ wide: [
+ 'ஜனவரி', // January
+ 'பிப்ரவரி', // February
+ 'மார்ச்', // March
+ 'ஏப்ரல்', // April
+ 'மே', // May
+ 'ஜூன்', // June
+ 'ஜூலை', // July
+ 'ஆகஸ்ட்', // August
+ 'செப்டம்பர்', // September
+ 'அக்டோபர்', // October
+ 'நவம்பர்', // November
+ 'டிசம்பர்' // December
+ ]
+}
+
+var dayValues = {
+ // CLDR #1766 - #1772
+ narrow: ['ஞா', 'தி', 'செ', 'பு', 'வி', 'வெ', 'ச'],
+ // CLDR #1752 - #1758
+ short: ['ஞா', 'தி', 'செ', 'பு', 'வி', 'வெ', 'ச'],
+ // CLDR #1738 - #1744
+ abbreviated: ['ஞாயி.', 'திங்.', 'செவ்.', 'புத.', 'வியா.', 'வெள்.', 'சனி'],
+ // CLDR #1724 - #1730
+ wide: [
+ 'ஞாயிறு', // Sunday
+ 'திங்கள்', // Monday
+ 'செவ்வாய்', // Tuesday
+ 'புதன்', // Wednesday
+ 'வியாழன்', // Thursday
+ 'வெள்ளி', // Friday
+ 'சனி' // Saturday
+ ]
+}
+
+// CLDR #1780 - #1845
+var dayPeriodValues = {
+ narrow: {
+ am: 'மு.ப',
+ pm: 'பி.ப',
+ midnight: 'நள்.',
+ noon: 'நண்.',
+ morning: 'கா.',
+ afternoon: 'மதி.',
+ evening: 'மா.',
+ night: 'இர.'
+ },
+ abbreviated: {
+ am: 'முற்பகல்',
+ pm: 'பிற்பகல்',
+ midnight: 'நள்ளிரவு',
+ noon: 'நண்பகல்',
+ morning: 'காலை',
+ afternoon: 'மதியம்',
+ evening: 'மாலை',
+ night: 'இரவு'
+ },
+ wide: {
+ am: 'முற்பகல்',
+ pm: 'பிற்பகல்',
+ midnight: 'நள்ளிரவு',
+ noon: 'நண்பகல்',
+ morning: 'காலை',
+ afternoon: 'மதியம்',
+ evening: 'மாலை',
+ night: 'இரவு'
+ }
+}
+
+// CLDR #1780 - #1845
+var formattingDayPeriodValues = {
+ narrow: {
+ am: 'மு.ப',
+ pm: 'பி.ப',
+ midnight: 'நள்.',
+ noon: 'நண்.',
+ morning: 'கா.',
+ afternoon: 'மதி.',
+ evening: 'மா.',
+ night: 'இர.'
+ },
+ abbreviated: {
+ am: 'முற்பகல்',
+ pm: 'பிற்பகல்',
+ midnight: 'நள்ளிரவு',
+ noon: 'நண்பகல்',
+ morning: 'காலை',
+ afternoon: 'மதியம்',
+ evening: 'மாலை',
+ night: 'இரவு'
+ },
+ wide: {
+ am: 'முற்பகல்',
+ pm: 'பிற்பகல்',
+ midnight: 'நள்ளிரவு',
+ noon: 'நண்பகல்',
+ morning: 'காலை',
+ afternoon: 'மதியம்',
+ evening: 'மாலை',
+ night: 'இரவு'
+ }
+}
+
+function ordinalNumber(dirtyNumber, _dirtyOptions) {
+ var number = Number(dirtyNumber)
+
+ // If ordinal numbers depend on context, for example,
+ // if they are different for different grammatical genders,
+ // use `options.unit`:
+ //
+ // var options = dirtyOptions || {}
+ // var unit = String(options.unit)
+ //
+ // where `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',
+ // 'day', 'hour', 'minute', 'second'
+
+ // var rem100 = number % 100
+ // if (rem100 > 20 || rem100 < 10) {
+ // switch (rem100 % 10) {
+ // case 1:
+ // return number + 'st'
+ // case 2:
+ // return number + 'nd'
+ // case 3:
+ // return number + 'rd'
+ // }
+ // }
+ // return number + 'th'
+ return number
+}
+
+var localize = {
+ ordinalNumber: ordinalNumber,
+
+ era: buildLocalizeFn({
+ values: eraValues,
+ defaultWidth: 'wide'
+ }),
+
+ quarter: buildLocalizeFn({
+ values: quarterValues,
+ defaultWidth: 'wide',
+ argumentCallback: function(quarter) {
+ return Number(quarter) - 1
+ }
+ }),
+
+ month: buildLocalizeFn({
+ values: monthValues,
+ defaultWidth: 'wide'
+ }),
+
+ day: buildLocalizeFn({
+ values: dayValues,
+ defaultWidth: 'wide'
+ }),
+
+ dayPeriod: buildLocalizeFn({
+ values: dayPeriodValues,
+ defaultWidth: 'wide',
+ formattingValues: formattingDayPeriodValues,
+ defaultFormattingWidth: 'wide'
+ })
+}
+
+export default localize
diff --git a/date-fns/src/locale/ta/_lib/match/index.js b/date-fns/src/locale/ta/_lib/match/index.js
new file mode 100644
index 0000000..f548f7f
--- /dev/null
+++ b/date-fns/src/locale/ta/_lib/match/index.js
@@ -0,0 +1,148 @@
+import buildMatchPatternFn from '../../../_lib/buildMatchPatternFn/index'
+import buildMatchFn from '../../../_lib/buildMatchFn/index'
+
+var matchOrdinalNumberPattern = /^(\d+)(வது)?/i
+var parseOrdinalNumberPattern = /\d+/i
+
+var matchEraPatterns = {
+ narrow: /^(கி.மு.|கி.பி.)/i,
+ abbreviated: /^(கி\.?\s?மு\.?|கி\.?\s?பி\.?)/,
+ wide: /^(கிறிஸ்துவுக்கு\sமுன்|அன்னோ\sடோமினி)/i
+}
+
+var parseEraPatterns = {
+ any: [/கி\.?\s?மு\.?/, /கி\.?\s?பி\.?/]
+}
+
+var matchQuarterPatterns = {
+ narrow: /^[1234]/i,
+ abbreviated: /^காலா.[1234]/i,
+ wide: /^(ஒன்றாம்|இரண்டாம்|மூன்றாம்|நான்காம்) காலாண்டு/i
+}
+
+var parseQuarterPatterns = {
+ narrow: [/1/i, /2/i, /3/i, /4/i],
+ any: [
+ /(1|காலா.1|ஒன்றாம்)/i,
+ /(2|காலா.2|இரண்டாம்)/i,
+ /(3|காலா.3|மூன்றாம்)/i,
+ /(4|காலா.4|நான்காம்)/i
+ ]
+}
+
+var matchMonthPatterns = {
+ narrow: /^(ஜ|பி|மா|ஏ|மே|ஜூ|ஆ|செ|அ|ந|டி)$/i,
+ abbreviated: /^(ஜன.|பிப்.|மார்.|ஏப்.|மே|ஜூன்|ஜூலை|ஆக.|செப்.|அக்.|நவ.|டிச.)/i,
+ wide: /^(ஜனவரி|பிப்ரவரி|மார்ச்|ஏப்ரல்|மே|ஜூன்|ஜூலை|ஆகஸ்ட்|செப்டம்பர்|அக்டோபர்|நவம்பர்|டிசம்பர்)/i
+}
+
+var parseMonthPatterns = {
+ narrow: [
+ /^ஜ$/i,
+ /^பி/i,
+ /^மா/i,
+ /^ஏ/i,
+ /^மே/i,
+ /^ஜூ/i,
+ /^ஜூ/i,
+ /^ஆ/i,
+ /^செ/i,
+ /^அ/i,
+ /^ந/i,
+ /^டி/i
+ ],
+ any: [
+ /^ஜன/i,
+ /^பி/i,
+ /^மா/i,
+ /^ஏ/i,
+ /^மே/i,
+ /^ஜூன்/i,
+ /^ஜூலை/i,
+ /^ஆ/i,
+ /^செ/i,
+ /^அ/i,
+ /^ந/i,
+ /^டி/i
+ ]
+}
+
+var matchDayPatterns = {
+ narrow: /^(ஞா|தி|செ|பு|வி|வெ|ச)/i,
+ short: /^(ஞா|தி|செ|பு|வி|வெ|ச)/i,
+ abbreviated: /^(ஞாயி.|திங்.|செவ்.|புத.|வியா.|வெள்.|சனி)/i,
+ wide: /^(ஞாயிறு|திங்கள்|செவ்வாய்|புதன்|வியாழன்|வெள்ளி|சனி)/i
+}
+
+var parseDayPatterns = {
+ narrow: [/^ஞா/i, /^தி/i, /^செ/i, /^பு/i, /^வி/i, /^வெ/i, /^ச/i],
+ any: [/^ஞா/i, /^தி/i, /^செ/i, /^பு/i, /^வி/i, /^வெ/i, /^ச/i]
+}
+
+var matchDayPeriodPatterns = {
+ narrow: /^(மு.ப|பி.ப|நள்|நண்|காலை|மதியம்|மாலை|இரவு)/i,
+ any: /^(மு.ப|பி.ப|முற்பகல்|பிற்பகல்|நள்ளிரவு|நண்பகல்|காலை|மதியம்|மாலை|இரவு)/i
+}
+
+var parseDayPeriodPatterns = {
+ any: {
+ am: /^மு/i,
+ pm: /^பி/i,
+ midnight: /^நள்/i,
+ noon: /^நண்/i,
+ morning: /காலை/i,
+ afternoon: /மதியம்/i,
+ evening: /மாலை/i,
+ night: /இரவு/i
+ }
+}
+
+var match = {
+ ordinalNumber: buildMatchPatternFn({
+ matchPattern: matchOrdinalNumberPattern,
+ parsePattern: parseOrdinalNumberPattern,
+ valueCallback: function(value) {
+ return parseInt(value, 10)
+ }
+ }),
+
+ era: buildMatchFn({
+ matchPatterns: matchEraPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseEraPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ quarter: buildMatchFn({
+ matchPatterns: matchQuarterPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseQuarterPatterns,
+ defaultParseWidth: 'any',
+ valueCallback: function(index) {
+ return index + 1
+ }
+ }),
+
+ month: buildMatchFn({
+ matchPatterns: matchMonthPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseMonthPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ day: buildMatchFn({
+ matchPatterns: matchDayPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseDayPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ dayPeriod: buildMatchFn({
+ matchPatterns: matchDayPeriodPatterns,
+ defaultMatchWidth: 'any',
+ parsePatterns: parseDayPeriodPatterns,
+ defaultParseWidth: 'any'
+ })
+}
+
+export default match
diff --git a/date-fns/src/locale/ta/index.d.ts b/date-fns/src/locale/ta/index.d.ts
new file mode 100644
index 0000000..fb9a06a
--- /dev/null
+++ b/date-fns/src/locale/ta/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { ta } from 'date-fns/locale'
+export default ta
diff --git a/date-fns/src/locale/ta/index.js b/date-fns/src/locale/ta/index.js
new file mode 100644
index 0000000..a2d289a
--- /dev/null
+++ b/date-fns/src/locale/ta/index.js
@@ -0,0 +1,28 @@
+import formatDistance from './_lib/formatDistance/index'
+import formatLong from './_lib/formatLong/index'
+import formatRelative from './_lib/formatRelative/index'
+import localize from './_lib/localize/index'
+import match from './_lib/match/index'
+
+/**
+ * @type {Locale}
+ * @category Locales
+ * @summary Tamil locale (India).
+ * @language Tamil
+ * @iso-639-2 tam
+ * @author Sibiraj [@sibiraj-s]{@link https://github.com/sibiraj-s}
+ */
+var locale = {
+ code: 'ta',
+ formatDistance: formatDistance,
+ formatLong: formatLong,
+ formatRelative: formatRelative,
+ localize: localize,
+ match: match,
+ options: {
+ weekStartsOn: 1 /* Monday */,
+ firstWeekContainsDate: 4
+ }
+}
+
+export default locale
diff --git a/date-fns/src/locale/ta/index.js.flow b/date-fns/src/locale/ta/index.js.flow
new file mode 100644
index 0000000..b9dfe66
--- /dev/null
+++ b/date-fns/src/locale/ta/index.js.flow
@@ -0,0 +1,35 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+declare module.exports: Locale
diff --git a/date-fns/src/locale/ta/snapshot.md b/date-fns/src/locale/ta/snapshot.md
new file mode 100644
index 0000000..5b005fb
--- /dev/null
+++ b/date-fns/src/locale/ta/snapshot.md
@@ -0,0 +1,304 @@
+# Tamil (ta) locale
+
+## `format` and `parse`
+
+| Title | Token string | Date | `format` result | `parse` result |
+| ------------------------------- | ------------ | ------------------------ | ---------------------------------------------------- | ------------------------ |
+| Calendar year | yo | 1987-02-11T12:13:14.015Z | 1987 | 1987-01-01T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 5 | 0005-01-01T00:00:00.000Z |
+| Local week-numbering year | Yo | 1987-02-11T12:13:14.015Z | 1987 | 1986-12-29T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 4 | 0003-12-29T00:00:00.000Z |
+| Quarter (formatting) | Qo | 2019-01-01T12:13:14.015Z | 1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2 | 2019-04-01T00:00:00.000Z |
+| | QQQ | 2019-01-01T12:13:14.015Z | காலா.1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | காலா.2 | 2019-04-01T00:00:00.000Z |
+| | QQQQ | 2019-01-01T12:13:14.015Z | ஒன்றாம் காலாண்டு | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | இரண்டாம் காலாண்டு | 2019-04-01T00:00:00.000Z |
+| | QQQQQ | 2019-01-01T12:13:14.015Z | 1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2 | 2019-04-01T00:00:00.000Z |
+| Quarter (stand-alone) | qo | 2019-01-01T12:13:14.015Z | 1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2 | 2019-04-01T00:00:00.000Z |
+| | qqq | 2019-01-01T12:13:14.015Z | காலா.1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | காலா.2 | 2019-04-01T00:00:00.000Z |
+| | qqqq | 2019-01-01T12:13:14.015Z | ஒன்றாம் காலாண்டு | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | இரண்டாம் காலாண்டு | 2019-04-01T00:00:00.000Z |
+| Month (formatting) | Mo | 2019-02-11T12:13:14.015Z | 2 | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7 | 2019-07-01T00:00:00.000Z |
+| | MMM | 2019-02-11T12:13:14.015Z | பிப். | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | ஜூலை | 2019-07-01T00:00:00.000Z |
+| | MMMM | 2019-02-11T12:13:14.015Z | பிப்ரவரி | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | ஜூலை | 2019-07-01T00:00:00.000Z |
+| | MMMMM | 2019-02-11T12:13:14.015Z | பி | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | ஜூ | 2019-06-01T00:00:00.000Z |
+| Month (stand-alone) | Lo | 2019-02-11T12:13:14.015Z | 2 | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7 | 2019-07-01T00:00:00.000Z |
+| | LLL | 2019-02-11T12:13:14.015Z | பிப். | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | ஜூலை | 2019-07-01T00:00:00.000Z |
+| | LLLL | 2019-02-11T12:13:14.015Z | பிப்ரவரி | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | ஜூலை | 2019-07-01T00:00:00.000Z |
+| | LLLLL | 2019-02-11T12:13:14.015Z | பி | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | ஜூ | 2019-06-01T00:00:00.000Z |
+| Local week of year | wo | 2019-01-01T12:13:14.015Z | 1 | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48 | 2019-11-25T00:00:00.000Z |
+| ISO week of year | Io | 2019-01-01T12:13:14.015Z | 1 | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48 | 2019-11-25T00:00:00.000Z |
+| Day of month | do | 2019-02-11T12:13:14.015Z | 11 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-28T12:13:14.015Z | 28 | 2019-02-28T00:00:00.000Z |
+| Day of year | Do | 2019-02-11T12:13:14.015Z | 42 | 2019-02-11T00:00:00.000Z |
+| | | 2019-12-31T12:13:14.015Z | 365 | 2019-12-31T00:00:00.000Z |
+| Day of week (formatting) | E | 2019-02-11T12:13:14.015Z | திங். | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | வெள். | 2019-02-15T00:00:00.000Z |
+| | EE | 2019-02-11T12:13:14.015Z | திங். | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | வெள். | 2019-02-15T00:00:00.000Z |
+| | EEE | 2019-02-11T12:13:14.015Z | திங். | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | வெள். | 2019-02-15T00:00:00.000Z |
+| | EEEE | 2019-02-11T12:13:14.015Z | திங்கள் | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | வெள்ளி | 2019-02-15T00:00:00.000Z |
+| | EEEEE | 2019-02-11T12:13:14.015Z | தி | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | வெ | 2019-02-15T00:00:00.000Z |
+| | EEEEEE | 2019-02-11T12:13:14.015Z | தி | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | வெ | 2019-02-15T00:00:00.000Z |
+| ISO day of week (formatting) | io | 2019-02-11T12:13:14.015Z | 1 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5 | 2019-02-15T00:00:00.000Z |
+| | iii | 2019-02-11T12:13:14.015Z | திங். | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | வெள். | 2019-02-15T00:00:00.000Z |
+| | iiii | 2019-02-11T12:13:14.015Z | திங்கள் | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | வெள்ளி | 2019-02-15T00:00:00.000Z |
+| | iiiii | 2019-02-11T12:13:14.015Z | தி | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | வெ | 2019-02-15T00:00:00.000Z |
+| | iiiiii | 2019-02-11T12:13:14.015Z | தி | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | வெ | 2019-02-15T00:00:00.000Z |
+| Local day of week (formatting) | eo | 2019-02-11T12:13:14.015Z | 1 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5 | 2019-02-15T00:00:00.000Z |
+| | eee | 2019-02-11T12:13:14.015Z | திங். | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | வெள். | 2019-02-15T00:00:00.000Z |
+| | eeee | 2019-02-11T12:13:14.015Z | திங்கள் | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | வெள்ளி | 2019-02-15T00:00:00.000Z |
+| | eeeee | 2019-02-11T12:13:14.015Z | தி | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | வெ | 2019-02-15T00:00:00.000Z |
+| | eeeeee | 2019-02-11T12:13:14.015Z | தி | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | வெ | 2019-02-15T00:00:00.000Z |
+| Local day of week (stand-alone) | co | 2019-02-11T12:13:14.015Z | 1 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5 | 2019-02-15T00:00:00.000Z |
+| | ccc | 2019-02-11T12:13:14.015Z | திங். | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | வெள். | 2019-02-15T00:00:00.000Z |
+| | cccc | 2019-02-11T12:13:14.015Z | திங்கள் | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | வெள்ளி | 2019-02-15T00:00:00.000Z |
+| | ccccc | 2019-02-11T12:13:14.015Z | தி | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | வெ | 2019-02-15T00:00:00.000Z |
+| | cccccc | 2019-02-11T12:13:14.015Z | தி | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | வெ | 2019-02-15T00:00:00.000Z |
+| AM, PM | a | 2019-02-11T11:13:14.015Z | முற்பகல் | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | பிற்பகல் | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | பிற்பகல் | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | முற்பகல் | 2019-02-11T00:00:00.000Z |
+| | aa | 2019-02-11T11:13:14.015Z | முற்பகல் | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | பிற்பகல் | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | பிற்பகல் | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | முற்பகல் | 2019-02-11T00:00:00.000Z |
+| | aaa | 2019-02-11T11:13:14.015Z | முற்பகல் | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | பிற்பகல் | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | பிற்பகல் | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | முற்பகல் | 2019-02-11T00:00:00.000Z |
+| | aaaa | 2019-02-11T11:13:14.015Z | முற்பகல் | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | பிற்பகல் | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | பிற்பகல் | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | முற்பகல் | 2019-02-11T00:00:00.000Z |
+| | aaaaa | 2019-02-11T11:13:14.015Z | மு.ப | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | பி.ப | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | பி.ப | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | மு.ப | 2019-02-11T00:00:00.000Z |
+| AM, PM, noon, midnight | b | 2019-02-11T11:13:14.015Z | முற்பகல் | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | பிற்பகல் | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | பிற்பகல் | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | முற்பகல் | 2019-02-11T00:00:00.000Z |
+| | bb | 2019-02-11T11:13:14.015Z | முற்பகல் | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | பிற்பகல் | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | பிற்பகல் | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | முற்பகல் | 2019-02-11T00:00:00.000Z |
+| | bbb | 2019-02-11T11:13:14.015Z | முற்பகல் | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | பிற்பகல் | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | பிற்பகல் | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | முற்பகல் | 2019-02-11T00:00:00.000Z |
+| | bbbb | 2019-02-11T11:13:14.015Z | முற்பகல் | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | பிற்பகல் | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | பிற்பகல் | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | முற்பகல் | 2019-02-11T00:00:00.000Z |
+| | bbbbb | 2019-02-11T11:13:14.015Z | மு.ப | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | பி.ப | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | பி.ப | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | மு.ப | 2019-02-11T00:00:00.000Z |
+| Flexible day period | B | 2019-02-11T11:13:14.015Z | காலை | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | மதியம் | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | மாலை | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | இரவு | 2019-02-11T00:00:00.000Z |
+| | BB | 2019-02-11T11:13:14.015Z | காலை | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | மதியம் | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | மாலை | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | இரவு | 2019-02-11T00:00:00.000Z |
+| | BBB | 2019-02-11T11:13:14.015Z | காலை | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | மதியம் | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | மாலை | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | இரவு | 2019-02-11T00:00:00.000Z |
+| | BBBB | 2019-02-11T11:13:14.015Z | காலை | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | மதியம் | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | மாலை | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | இரவு | 2019-02-11T00:00:00.000Z |
+| | BBBBB | 2019-02-11T11:13:14.015Z | கா. | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | மதி. | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | மா. | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | இர. | Invalid Date |
+| Hour [1-12] | ho | 2019-02-11T11:13:14.015Z | 11 | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11 | 2019-02-11T23:00:00.000Z |
+| Hour [0-23] | Ho | 2019-02-11T11:13:14.015Z | 11 | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23 | 2019-02-11T23:00:00.000Z |
+| Hour [0-11] | Ko | 2019-02-11T11:13:14.015Z | 11 | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11 | 2019-02-11T23:00:00.000Z |
+| Hour [1-24] | ko | 2019-02-11T11:13:14.015Z | 11 | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23 | 2019-02-11T23:00:00.000Z |
+| Minute | mo | 2019-01-01T12:01:14.015Z | 1 | 2019-01-01T12:01:00.000Z |
+| | | 2019-04-01T12:55:14.015Z | 55 | 2019-04-01T12:55:00.000Z |
+| Second | so | 2019-01-01T12:13:01.015Z | 1 | 2019-01-01T12:13:01.000Z |
+| | | 2019-04-01T12:13:55.015Z | 55 | 2019-04-01T12:13:55.000Z |
+| Long localized date | P | 1987-02-11T12:13:14.015Z | 11/2/87 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29/5/53 | 1453-05-29T00:00:00.000Z |
+| | PP | 1987-02-11T12:13:14.015Z | 11 பிப்., 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 மே, 1453 | 1453-05-29T00:00:00.000Z |
+| | PPP | 1987-02-11T12:13:14.015Z | 11 பிப்ரவரி, 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 மே, 1453 | 1453-05-29T00:00:00.000Z |
+| | PPPP | 1987-02-11T12:13:14.015Z | புதன், 11 பிப்ரவரி, 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | ஞாயிறு, 29 மே, 1453 | 1453-05-29T00:00:00.000Z |
+| Long localized time | p | 1987-02-11T12:13:14.015Z | பிற்பகல் 12:13 | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | பிற்பகல் 11:59 | 1453-05-29T23:59:00.000Z |
+| | pp | 1987-02-11T12:13:14.015Z | பிற்பகல் 12:13:14 | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | பிற்பகல் 11:59:59 | 1453-05-29T23:59:59.000Z |
+| | ppp | 1987-02-11T12:13:14.015Z | பிற்பகல் 12:13:14 GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | பிற்பகல் 11:59:59 GMT+0 | Errored |
+| | pppp | 1987-02-11T12:13:14.015Z | பிற்பகல் 12:13:14 GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | பிற்பகல் 11:59:59 GMT+00:00 | Errored |
+| Combination of date and time | Pp | 1987-02-11T12:13:14.015Z | 11/2/87, பிற்பகல் 12:13 | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29/5/53, பிற்பகல் 11:59 | 1453-05-29T23:59:00.000Z |
+| | PPpp | 1987-02-11T12:13:14.015Z | 11 பிப்., 1987, பிற்பகல் 12:13:14 | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 மே, 1453, பிற்பகல் 11:59:59 | 1453-05-29T23:59:59.000Z |
+| | PPPppp | 1987-02-11T12:13:14.015Z | 11 பிப்ரவரி, 1987 பிற்பகல் 12:13:14 GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 29 மே, 1453 பிற்பகல் 11:59:59 GMT+0 | Errored |
+| | PPPPpppp | 1987-02-11T12:13:14.015Z | புதன், 11 பிப்ரவரி, 1987 பிற்பகல் 12:13:14 GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | ஞாயிறு, 29 மே, 1453 பிற்பகல் 11:59:59 GMT+00:00 | Errored |
+
+## `formatDistance`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `includeSeconds: true` | `addSuffix: true` |
+| ------------------------ | --------------------------- | ------------------------ | ------------------------------- |
+| 2006-01-01T00:00:00.000Z | சுமார் 6 ஆண்டுகள் | சுமார் 6 ஆண்டுகள் | சுமார் 6 ஆண்டுகளில் |
+| 2005-01-01T00:00:00.000Z | சுமார் 5 ஆண்டுகள் | சுமார் 5 ஆண்டுகள் | சுமார் 5 ஆண்டுகளில் |
+| 2004-01-01T00:00:00.000Z | சுமார் 4 ஆண்டுகள் | சுமார் 4 ஆண்டுகள் | சுமார் 4 ஆண்டுகளில் |
+| 2003-01-01T00:00:00.000Z | சுமார் 3 ஆண்டுகள் | சுமார் 3 ஆண்டுகள் | சுமார் 3 ஆண்டுகளில் |
+| 2002-01-01T00:00:00.000Z | சுமார் 2 ஆண்டுகள் | சுமார் 2 ஆண்டுகள் | சுமார் 2 ஆண்டுகளில் |
+| 2001-06-01T00:00:00.000Z | 1 வருடத்திற்கு மேல் | 1 வருடத்திற்கு மேல் | 1 வருடத்திற்கும் மேலாக |
+| 2001-02-01T00:00:00.000Z | சுமார் 1 வருடம் | சுமார் 1 வருடம் | சுமார் 1 ஆண்டில் |
+| 2001-01-01T00:00:00.000Z | சுமார் 1 வருடம் | சுமார் 1 வருடம் | சுமார் 1 ஆண்டில் |
+| 2000-06-01T00:00:00.000Z | 5 மாதங்கள் | 5 மாதங்கள் | 5 மாதங்களில் |
+| 2000-03-01T00:00:00.000Z | 2 மாதங்கள் | 2 மாதங்கள் | 2 மாதங்களில் |
+| 2000-02-01T00:00:00.000Z | சுமார் 1 மாதம் | சுமார் 1 மாதம் | சுமார் 1 மாதத்தில் |
+| 2000-01-15T00:00:00.000Z | 14 நாட்கள் | 14 நாட்கள் | 14 நாட்களில் |
+| 2000-01-02T00:00:00.000Z | 1 நாள் | 1 நாள் | 1 நாளில் |
+| 2000-01-01T06:00:00.000Z | சுமார் 6 மணி நேரம் | சுமார் 6 மணி நேரம் | சுமார் 6 மணி நேரத்திற்கு முன்பு |
+| 2000-01-01T01:00:00.000Z | சுமார் 1 மணி நேரம் | சுமார் 1 மணி நேரம் | சுமார் 1 மணி நேரத்தில் |
+| 2000-01-01T00:45:00.000Z | சுமார் 1 மணி நேரம் | சுமார் 1 மணி நேரம் | சுமார் 1 மணி நேரத்தில் |
+| 2000-01-01T00:30:00.000Z | 30 நிமிடங்கள் | 30 நிமிடங்கள் | 30 நிமிடங்களில் |
+| 2000-01-01T00:15:00.000Z | 15 நிமிடங்கள் | 15 நிமிடங்கள் | 15 நிமிடங்களில் |
+| 2000-01-01T00:01:00.000Z | 1 நிமிடம் | 1 நிமிடம் | 1 நிமிடத்தில் |
+| 2000-01-01T00:00:25.000Z | ஒரு நிமிடத்திற்கும் குறைவாக | அரை நிமிடம் | ஒரு நிமிடத்திற்குள் |
+| 2000-01-01T00:00:15.000Z | ஒரு நிமிடத்திற்கும் குறைவாக | 20 வினாடிகளுக்கு குறைவாக | ஒரு நிமிடத்திற்குள் |
+| 2000-01-01T00:00:05.000Z | ஒரு நிமிடத்திற்கும் குறைவாக | 10 வினாடிகளுக்கு குறைவாக | ஒரு நிமிடத்திற்குள் |
+| 2000-01-01T00:00:00.000Z | ஒரு நிமிடத்திற்கும் குறைவாக | 5 வினாடிகளுக்கு குறைவாக | ஒரு நிமிடத்திற்கு முன்பு |
+| 1999-12-31T23:59:55.000Z | ஒரு நிமிடத்திற்கும் குறைவாக | 10 வினாடிகளுக்கு குறைவாக | ஒரு நிமிடத்திற்கு முன்பு |
+| 1999-12-31T23:59:45.000Z | ஒரு நிமிடத்திற்கும் குறைவாக | 20 வினாடிகளுக்கு குறைவாக | ஒரு நிமிடத்திற்கு முன்பு |
+| 1999-12-31T23:59:35.000Z | ஒரு நிமிடத்திற்கும் குறைவாக | அரை நிமிடம் | ஒரு நிமிடத்திற்கு முன்பு |
+| 1999-12-31T23:59:00.000Z | 1 நிமிடம் | 1 நிமிடம் | 1 நிமிடம் முன்பு |
+| 1999-12-31T23:45:00.000Z | 15 நிமிடங்கள் | 15 நிமிடங்கள் | 15 நிமிடங்களுக்கு முன்பு |
+| 1999-12-31T23:30:00.000Z | 30 நிமிடங்கள் | 30 நிமிடங்கள் | 30 நிமிடங்களுக்கு முன்பு |
+| 1999-12-31T23:15:00.000Z | சுமார் 1 மணி நேரம் | சுமார் 1 மணி நேரம் | சுமார் 1 மணி நேரத்திற்கு முன்பு |
+| 1999-12-31T23:00:00.000Z | சுமார் 1 மணி நேரம் | சுமார் 1 மணி நேரம் | சுமார் 1 மணி நேரத்திற்கு முன்பு |
+| 1999-12-31T18:00:00.000Z | சுமார் 6 மணி நேரம் | சுமார் 6 மணி நேரம் | சுமார் 6 மணி நேரத்தில் |
+| 1999-12-30T00:00:00.000Z | 2 நாட்கள் | 2 நாட்கள் | 2 நாட்களுக்கு முன்பு |
+| 1999-12-15T00:00:00.000Z | 17 நாட்கள் | 17 நாட்கள் | 17 நாட்களுக்கு முன்பு |
+| 1999-12-01T00:00:00.000Z | சுமார் 1 மாதம் | சுமார் 1 மாதம் | சுமார் 1 மாதத்திற்கு முன்பு |
+| 1999-11-01T00:00:00.000Z | 2 மாதங்கள் | 2 மாதங்கள் | 2 மாதங்களுக்கு முன்பு |
+| 1999-06-01T00:00:00.000Z | 7 மாதங்கள் | 7 மாதங்கள் | 7 மாதங்களுக்கு முன்பு |
+| 1999-01-01T00:00:00.000Z | சுமார் 1 வருடம் | சுமார் 1 வருடம் | சுமார் 1 வருடம் முன்பு |
+| 1998-12-01T00:00:00.000Z | சுமார் 1 வருடம் | சுமார் 1 வருடம் | சுமார் 1 வருடம் முன்பு |
+| 1998-06-01T00:00:00.000Z | 1 வருடத்திற்கு மேல் | 1 வருடத்திற்கு மேல் | 1 வருடம் முன்பு |
+| 1998-01-01T00:00:00.000Z | சுமார் 2 ஆண்டுகள் | சுமார் 2 ஆண்டுகள் | சுமார் 2 ஆண்டுகளுக்கு முன்பு |
+| 1997-01-01T00:00:00.000Z | சுமார் 3 ஆண்டுகள் | சுமார் 3 ஆண்டுகள் | சுமார் 3 ஆண்டுகளுக்கு முன்பு |
+| 1996-01-01T00:00:00.000Z | சுமார் 4 ஆண்டுகள் | சுமார் 4 ஆண்டுகள் | சுமார் 4 ஆண்டுகளுக்கு முன்பு |
+| 1995-01-01T00:00:00.000Z | சுமார் 5 ஆண்டுகள் | சுமார் 5 ஆண்டுகள் | சுமார் 5 ஆண்டுகளுக்கு முன்பு |
+| 1994-01-01T00:00:00.000Z | சுமார் 6 ஆண்டுகள் | சுமார் 6 ஆண்டுகள் | சுமார் 6 ஆண்டுகளுக்கு முன்பு |
+
+## `formatDistanceStrict`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `addSuffix: true` | With forced unit (i.e. `hour`) |
+| ------------------------ | ------------- | ------------------------ | ------------------------------ |
+| 2006-01-01T00:00:00.000Z | 6 ஆண்டுகள் | 6 ஆண்டுகளில் | 52608 மணி நேரம் |
+| 2005-01-01T00:00:00.000Z | 5 ஆண்டுகள் | 5 ஆண்டுகளில் | 43848 மணி நேரம் |
+| 2004-01-01T00:00:00.000Z | 4 ஆண்டுகள் | 4 ஆண்டுகளில் | 35064 மணி நேரம் |
+| 2003-01-01T00:00:00.000Z | 3 ஆண்டுகள் | 3 ஆண்டுகளில் | 26304 மணி நேரம் |
+| 2002-01-01T00:00:00.000Z | 2 ஆண்டுகள் | 2 ஆண்டுகளில் | 17544 மணி நேரம் |
+| 2001-06-01T00:00:00.000Z | 1 வருடம் | 1 ஆண்டில் | 12408 மணி நேரம் |
+| 2001-02-01T00:00:00.000Z | 1 வருடம் | 1 ஆண்டில் | 9528 மணி நேரம் |
+| 2001-01-01T00:00:00.000Z | 1 வருடம் | 1 ஆண்டில் | 8784 மணி நேரம் |
+| 2000-06-01T00:00:00.000Z | 5 மாதங்கள் | 5 மாதங்களில் | 3648 மணி நேரம் |
+| 2000-03-01T00:00:00.000Z | 2 மாதங்கள் | 2 மாதங்களில் | 1440 மணி நேரம் |
+| 2000-02-01T00:00:00.000Z | 1 மாதம் | 1 மாதத்தில் | 744 மணி நேரம் |
+| 2000-01-15T00:00:00.000Z | 14 நாட்கள் | 14 நாட்களில் | 336 மணி நேரம் |
+| 2000-01-02T00:00:00.000Z | 1 நாள் | 1 நாளில் | 24 மணி நேரம் |
+| 2000-01-01T06:00:00.000Z | 6 மணி நேரம் | 6 மணி நேரத்தில் | 6 மணி நேரம் |
+| 2000-01-01T01:00:00.000Z | 1 மணி நேரம் | 1 மணி நேரத்தில் | 1 மணி நேரம் |
+| 2000-01-01T00:45:00.000Z | 45 நிமிடங்கள் | 45 நிமிடங்களில் | 1 மணி நேரம் |
+| 2000-01-01T00:30:00.000Z | 30 நிமிடங்கள் | 30 நிமிடங்களில் | 1 மணி நேரம் |
+| 2000-01-01T00:15:00.000Z | 15 நிமிடங்கள் | 15 நிமிடங்களில் | 0 மணி நேரம் |
+| 2000-01-01T00:01:00.000Z | 1 நிமிடம் | 1 நிமிடத்தில் | 0 மணி நேரம் |
+| 2000-01-01T00:00:25.000Z | 25 விநாடிகள் | 25 வினாடிகளில் | 0 மணி நேரம் |
+| 2000-01-01T00:00:15.000Z | 15 விநாடிகள் | 15 வினாடிகளில் | 0 மணி நேரம் |
+| 2000-01-01T00:00:05.000Z | 5 விநாடிகள் | 5 வினாடிகளில் | 0 மணி நேரம் |
+| 2000-01-01T00:00:00.000Z | 0 விநாடிகள் | 0 விநாடிகளுக்கு முன்பு | 0 மணி நேரம் |
+| 1999-12-31T23:59:55.000Z | 5 விநாடிகள் | 5 விநாடிகளுக்கு முன்பு | 0 மணி நேரம் |
+| 1999-12-31T23:59:45.000Z | 15 விநாடிகள் | 15 விநாடிகளுக்கு முன்பு | 0 மணி நேரம் |
+| 1999-12-31T23:59:35.000Z | 25 விநாடிகள் | 25 விநாடிகளுக்கு முன்பு | 0 மணி நேரம் |
+| 1999-12-31T23:59:00.000Z | 1 நிமிடம் | 1 நிமிடம் முன்பு | 0 மணி நேரம் |
+| 1999-12-31T23:45:00.000Z | 15 நிமிடங்கள் | 15 நிமிடங்களுக்கு முன்பு | 0 மணி நேரம் |
+| 1999-12-31T23:30:00.000Z | 30 நிமிடங்கள் | 30 நிமிடங்களுக்கு முன்பு | 1 மணி நேரம் |
+| 1999-12-31T23:15:00.000Z | 45 நிமிடங்கள் | 45 நிமிடங்களுக்கு முன்பு | 1 மணி நேரம் |
+| 1999-12-31T23:00:00.000Z | 1 மணி நேரம் | 1 மணி நேரத்திற்கு முன்பு | 1 மணி நேரம் |
+| 1999-12-31T18:00:00.000Z | 6 மணி நேரம் | 6 மணி நேரத்திற்கு முன்பு | 6 மணி நேரம் |
+| 1999-12-30T00:00:00.000Z | 2 நாட்கள் | 2 நாட்களுக்கு முன்பு | 48 மணி நேரம் |
+| 1999-12-15T00:00:00.000Z | 17 நாட்கள் | 17 நாட்களுக்கு முன்பு | 408 மணி நேரம் |
+| 1999-12-01T00:00:00.000Z | 1 மாதம் | 1 மாதம் முன்பு | 744 மணி நேரம் |
+| 1999-11-01T00:00:00.000Z | 2 மாதங்கள் | 2 மாதங்களுக்கு முன்பு | 1464 மணி நேரம் |
+| 1999-06-01T00:00:00.000Z | 7 மாதங்கள் | 7 மாதங்களுக்கு முன்பு | 5136 மணி நேரம் |
+| 1999-01-01T00:00:00.000Z | 1 வருடம் | 1 வருடம் முன்பு | 8760 மணி நேரம் |
+| 1998-12-01T00:00:00.000Z | 1 வருடம் | 1 வருடம் முன்பு | 9504 மணி நேரம் |
+| 1998-06-01T00:00:00.000Z | 2 ஆண்டுகள் | 2 ஆண்டுகளுக்கு முன்பு | 13896 மணி நேரம் |
+| 1998-01-01T00:00:00.000Z | 2 ஆண்டுகள் | 2 ஆண்டுகளுக்கு முன்பு | 17520 மணி நேரம் |
+| 1997-01-01T00:00:00.000Z | 3 ஆண்டுகள் | 3 ஆண்டுகளுக்கு முன்பு | 26280 மணி நேரம் |
+| 1996-01-01T00:00:00.000Z | 4 ஆண்டுகள் | 4 ஆண்டுகளுக்கு முன்பு | 35064 மணி நேரம் |
+| 1995-01-01T00:00:00.000Z | 5 ஆண்டுகள் | 5 ஆண்டுகளுக்கு முன்பு | 43824 மணி நேரம் |
+| 1994-01-01T00:00:00.000Z | 6 ஆண்டுகள் | 6 ஆண்டுகளுக்கு முன்பு | 52584 மணி நேரம் |
+
+## `formatRelative`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result |
+| ------------------------ | ------------------------------------ |
+| 2000-01-10T00:00:00.000Z | 10/1/00 |
+| 2000-01-05T00:00:00.000Z | புதன் முற்பகல் 12:00 மணிக்கு |
+| 2000-01-02T00:00:00.000Z | நாளை முற்பகல் 12:00 மணிக்கு |
+| 2000-01-01T00:00:00.000Z | இன்று முற்பகல் 12:00 மணிக்கு |
+| 1999-12-31T00:00:00.000Z | நேற்று முற்பகல் 12:00 மணிக்கு |
+| 1999-12-27T00:00:00.000Z | கடந்த திங்கள் முற்பகல் 12:00 மணிக்கு |
+| 1999-12-21T00:00:00.000Z | 21/12/99 |
diff --git a/date-fns/src/locale/te/_lib/formatDistance/index.js b/date-fns/src/locale/te/_lib/formatDistance/index.js
new file mode 100644
index 0000000..f022f99
--- /dev/null
+++ b/date-fns/src/locale/te/_lib/formatDistance/index.js
@@ -0,0 +1,199 @@
+// Source: https://www.unicode.org/cldr/charts/32/summary/te.html
+var formatDistanceLocale = {
+ lessThanXSeconds: {
+ standalone: {
+ one: 'సెకను కన్నా తక్కువ',
+ other: '{{count}} సెకన్ల కన్నా తక్కువ'
+ },
+ withPreposition: {
+ one: 'సెకను',
+ other: '{{count}} సెకన్ల'
+ }
+ },
+
+ xSeconds: {
+ standalone: {
+ one: 'ఒక సెకను', // CLDR #1314
+ other: '{{count}} సెకన్ల'
+ },
+ withPreposition: {
+ one: 'ఒక సెకను',
+ other: '{{count}} సెకన్ల'
+ }
+ },
+
+ halfAMinute: {
+ standalone: 'అర నిమిషం',
+ withPreposition: 'అర నిమిషం'
+ },
+
+ lessThanXMinutes: {
+ standalone: {
+ one: 'ఒక నిమిషం కన్నా తక్కువ',
+ other: '{{count}} నిమిషాల కన్నా తక్కువ'
+ },
+ withPreposition: {
+ one: 'ఒక నిమిషం',
+ other: '{{count}} నిమిషాల'
+ }
+ },
+
+ xMinutes: {
+ standalone: {
+ one: 'ఒక నిమిషం', // CLDR #1311
+ other: '{{count}} నిమిషాలు'
+ },
+ withPreposition: {
+ one: 'ఒక నిమిషం', // CLDR #1311
+ other: '{{count}} నిమిషాల'
+ }
+ },
+
+ aboutXHours: {
+ standalone: {
+ one: 'సుమారు ఒక గంట',
+ other: 'సుమారు {{count}} గంటలు'
+ },
+ withPreposition: {
+ one: 'సుమారు ఒక గంట',
+ other: 'సుమారు {{count}} గంటల'
+ }
+ },
+
+ xHours: {
+ standalone: {
+ one: 'ఒక గంట', // CLDR #1308
+ other: '{{count}} గంటలు'
+ },
+ withPreposition: {
+ one: 'ఒక గంట',
+ other: '{{count}} గంటల'
+ }
+ },
+
+ xDays: {
+ standalone: {
+ one: 'ఒక రోజు', // CLDR #1292
+ other: '{{count}} రోజులు'
+ },
+ withPreposition: {
+ one: 'ఒక రోజు',
+ other: '{{count}} రోజుల'
+ }
+ },
+
+ aboutXWeeks: {
+ standalone: {
+ one: 'సుమారు ఒక వారం',
+ other: 'సుమారు {{count}} వారాలు'
+ },
+ withPreposition: {
+ one: 'సుమారు ఒక వారం',
+ other: 'సుమారు {{count}} వారాలల'
+ }
+ },
+
+ xWeeks: {
+ standalone: {
+ one: 'ఒక వారం',
+ other: '{{count}} వారాలు'
+ },
+ withPreposition: {
+ one: 'ఒక వారం',
+ other: '{{count}} వారాలల'
+ }
+ },
+
+ aboutXMonths: {
+ standalone: {
+ one: 'సుమారు ఒక నెల',
+ other: 'సుమారు {{count}} నెలలు'
+ },
+ withPreposition: {
+ one: 'సుమారు ఒక నెల',
+ other: 'సుమారు {{count}} నెలల'
+ }
+ },
+
+ xMonths: {
+ standalone: {
+ one: 'ఒక నెల', // CLDR #1281
+ other: '{{count}} నెలలు'
+ },
+ withPreposition: {
+ one: 'ఒక నెల',
+ other: '{{count}} నెలల'
+ }
+ },
+
+ aboutXYears: {
+ standalone: {
+ one: 'సుమారు ఒక సంవత్సరం',
+ other: 'సుమారు {{count}} సంవత్సరాలు'
+ },
+ withPreposition: {
+ one: 'సుమారు ఒక సంవత్సరం',
+ other: 'సుమారు {{count}} సంవత్సరాల'
+ }
+ },
+
+ xYears: {
+ standalone: {
+ one: 'ఒక సంవత్సరం', // CLDR #1275
+ other: '{{count}} సంవత్సరాలు'
+ },
+ withPreposition: {
+ one: 'ఒక సంవత్సరం',
+ other: '{{count}} సంవత్సరాల'
+ }
+ },
+
+ overXYears: {
+ standalone: {
+ one: 'ఒక సంవత్సరం పైగా',
+ other: '{{count}} సంవత్సరాలకు పైగా'
+ },
+ withPreposition: {
+ one: 'ఒక సంవత్సరం',
+ other: '{{count}} సంవత్సరాల'
+ }
+ },
+
+ almostXYears: {
+ standalone: {
+ one: 'దాదాపు ఒక సంవత్సరం',
+ other: 'దాదాపు {{count}} సంవత్సరాలు'
+ },
+ withPreposition: {
+ one: 'దాదాపు ఒక సంవత్సరం',
+ other: 'దాదాపు {{count}} సంవత్సరాల'
+ }
+ }
+}
+
+export default function formatDistance(token, count, options) {
+ options = options || {}
+
+ var usageGroup = options.addSuffix
+ ? formatDistanceLocale[token].withPreposition
+ : formatDistanceLocale[token].standalone
+
+ var result
+ if (typeof usageGroup === 'string') {
+ result = usageGroup
+ } else if (count === 1) {
+ result = usageGroup.one
+ } else {
+ result = usageGroup.other.replace('{{count}}', count)
+ }
+
+ if (options.addSuffix) {
+ if (options.comparison > 0) {
+ return result + 'లో'
+ } else {
+ return result + ' క్రితం'
+ }
+ }
+
+ return result
+}
diff --git a/date-fns/src/locale/te/_lib/formatLong/index.js b/date-fns/src/locale/te/_lib/formatLong/index.js
new file mode 100644
index 0000000..c1391f7
--- /dev/null
+++ b/date-fns/src/locale/te/_lib/formatLong/index.js
@@ -0,0 +1,45 @@
+import buildFormatLongFn from '../../../_lib/buildFormatLongFn/index'
+// Source: https://www.unicode.org/cldr/charts/32/summary/te.html
+
+// CLDR #1807 - #1811
+var dateFormats = {
+ full: 'd, MMMM y, EEEE',
+ long: 'd MMMM, y',
+ medium: 'd MMM, y',
+ short: 'dd-MM-yy'
+}
+
+// CLDR #1807 - #1811
+var timeFormats = {
+ full: 'h:mm:ss a zzzz',
+ long: 'h:mm:ss a z',
+ medium: 'h:mm:ss a',
+ short: 'h:mm a'
+}
+
+// CLDR #1815 - #1818
+var dateTimeFormats = {
+ full: "{{date}} {{time}}'కి'",
+ long: "{{date}} {{time}}'కి'",
+ medium: '{{date}} {{time}}',
+ short: '{{date}} {{time}}'
+}
+
+var formatLong = {
+ date: buildFormatLongFn({
+ formats: dateFormats,
+ defaultWidth: 'full'
+ }),
+
+ time: buildFormatLongFn({
+ formats: timeFormats,
+ defaultWidth: 'full'
+ }),
+
+ dateTime: buildFormatLongFn({
+ formats: dateTimeFormats,
+ defaultWidth: 'full'
+ })
+}
+
+export default formatLong
diff --git a/date-fns/src/locale/te/_lib/formatRelative/index.js b/date-fns/src/locale/te/_lib/formatRelative/index.js
new file mode 100644
index 0000000..3bcee42
--- /dev/null
+++ b/date-fns/src/locale/te/_lib/formatRelative/index.js
@@ -0,0 +1,14 @@
+// Source: https://www.unicode.org/cldr/charts/32/summary/te.html
+
+var formatRelativeLocale = {
+ lastWeek: "'గత' eeee p", // CLDR #1384
+ yesterday: "'నిన్న' p", // CLDR #1393
+ today: "'ఈ రోజు' p", // CLDR #1394
+ tomorrow: "'రేపు' p", // CLDR #1395
+ nextWeek: "'తదుపరి' eeee p", // CLDR #1386
+ other: 'P'
+}
+
+export default function formatRelative(token, _date, _baseDate, _options) {
+ return formatRelativeLocale[token]
+}
diff --git a/date-fns/src/locale/te/_lib/localize/index.js b/date-fns/src/locale/te/_lib/localize/index.js
new file mode 100644
index 0000000..5eed352
--- /dev/null
+++ b/date-fns/src/locale/te/_lib/localize/index.js
@@ -0,0 +1,173 @@
+import buildLocalizeFn from '../../../_lib/buildLocalizeFn/index'
+// Source: https://www.unicode.org/cldr/charts/32/summary/te.html
+// Source: https://dsal.uchicago.edu/dictionaries/brown/
+
+// CLDR #1605 - #1608
+var eraValues = {
+ narrow: ['క్రీ.పూ.', 'క్రీ.శ.'],
+ abbreviated: ['క్రీ.పూ.', 'క్రీ.శ.'],
+ wide: ['క్రీస్తు పూర్వం', 'క్రీస్తుశకం']
+}
+
+// CLDR #1613 - #1628
+var quarterValues = {
+ narrow: ['1', '2', '3', '4'],
+ abbreviated: ['త్రై1', 'త్రై2', 'త్రై3', 'త్రై4'],
+ wide: ['1వ త్రైమాసికం', '2వ త్రైమాసికం', '3వ త్రైమాసికం', '4వ త్రైమాసికం']
+}
+
+// CLDR #1637 - #1708
+var monthValues = {
+ narrow: ['జ', 'ఫి', 'మా', 'ఏ', 'మే', 'జూ', 'జు', 'ఆ', 'సె', 'అ', 'న', 'డి'],
+ abbreviated: [
+ 'జన',
+ 'ఫిబ్ర',
+ 'మార్చి',
+ 'ఏప్రి',
+ 'మే',
+ 'జూన్',
+ 'జులై',
+ 'ఆగ',
+ 'సెప్టెం',
+ 'అక్టో',
+ 'నవం',
+ 'డిసెం'
+ ],
+ wide: [
+ 'జనవరి',
+ 'ఫిబ్రవరి',
+ 'మార్చి',
+ 'ఏప్రిల్',
+ 'మే',
+ 'జూన్',
+ 'జులై',
+ 'ఆగస్టు',
+ 'సెప్టెంబర్',
+ 'అక్టోబర్',
+ 'నవంబర్',
+ 'డిసెంబర్'
+ ]
+}
+
+// CLDR #1709 - #1764
+var dayValues = {
+ narrow: ['ఆ', 'సో', 'మ', 'బు', 'గు', 'శు', 'శ'],
+ short: ['ఆది', 'సోమ', 'మంగళ', 'బుధ', 'గురు', 'శుక్ర', 'శని'],
+ abbreviated: ['ఆది', 'సోమ', 'మంగళ', 'బుధ', 'గురు', 'శుక్ర', 'శని'],
+ wide: [
+ 'ఆదివారం',
+ 'సోమవారం',
+ 'మంగళవారం',
+ 'బుధవారం',
+ 'గురువారం',
+ 'శుక్రవారం',
+ 'శనివారం'
+ ]
+}
+
+// CLDR #1767 - #1806
+var dayPeriodValues = {
+ narrow: {
+ am: 'పూర్వాహ్నం',
+ pm: 'అపరాహ్నం',
+ midnight: 'అర్ధరాత్రి',
+ noon: 'మిట్టమధ్యాహ్నం',
+ morning: 'ఉదయం',
+ afternoon: 'మధ్యాహ్నం',
+ evening: 'సాయంత్రం',
+ night: 'రాత్రి'
+ },
+ abbreviated: {
+ am: 'పూర్వాహ్నం',
+ pm: 'అపరాహ్నం',
+ midnight: 'అర్ధరాత్రి',
+ noon: 'మిట్టమధ్యాహ్నం',
+ morning: 'ఉదయం',
+ afternoon: 'మధ్యాహ్నం',
+ evening: 'సాయంత్రం',
+ night: 'రాత్రి'
+ },
+ wide: {
+ am: 'పూర్వాహ్నం',
+ pm: 'అపరాహ్నం',
+ midnight: 'అర్ధరాత్రి',
+ noon: 'మిట్టమధ్యాహ్నం',
+ morning: 'ఉదయం',
+ afternoon: 'మధ్యాహ్నం',
+ evening: 'సాయంత్రం',
+ night: 'రాత్రి'
+ }
+}
+var formattingDayPeriodValues = {
+ narrow: {
+ am: 'పూర్వాహ్నం',
+ pm: 'అపరాహ్నం',
+ midnight: 'అర్ధరాత్రి',
+ noon: 'మిట్టమధ్యాహ్నం',
+ morning: 'ఉదయం',
+ afternoon: 'మధ్యాహ్నం',
+ evening: 'సాయంత్రం',
+ night: 'రాత్రి'
+ },
+ abbreviated: {
+ am: 'పూర్వాహ్నం',
+ pm: 'అపరాహ్నం',
+ midnight: 'అర్ధరాత్రి',
+ noon: 'మిట్టమధ్యాహ్నం',
+ morning: 'ఉదయం',
+ afternoon: 'మధ్యాహ్నం',
+ evening: 'సాయంత్రం',
+ night: 'రాత్రి'
+ },
+ wide: {
+ am: 'పూర్వాహ్నం',
+ pm: 'అపరాహ్నం',
+ midnight: 'అర్ధరాత్రి',
+ noon: 'మిట్టమధ్యాహ్నం',
+ morning: 'ఉదయం',
+ afternoon: 'మధ్యాహ్నం',
+ evening: 'సాయంత్రం',
+ night: 'రాత్రి'
+ }
+}
+
+function ordinalNumber(dirtyNumber, _dirtyOptions) {
+ var number = Number(dirtyNumber)
+ return number + 'వ'
+}
+
+var localize = {
+ ordinalNumber: ordinalNumber,
+
+ era: buildLocalizeFn({
+ values: eraValues,
+ defaultWidth: 'wide'
+ }),
+
+ quarter: buildLocalizeFn({
+ values: quarterValues,
+ defaultWidth: 'wide',
+ argumentCallback: function(quarter) {
+ return Number(quarter) - 1
+ }
+ }),
+
+ month: buildLocalizeFn({
+ values: monthValues,
+ defaultWidth: 'wide'
+ }),
+
+ day: buildLocalizeFn({
+ values: dayValues,
+ defaultWidth: 'wide'
+ }),
+
+ dayPeriod: buildLocalizeFn({
+ values: dayPeriodValues,
+ defaultWidth: 'wide',
+ formattingValues: formattingDayPeriodValues,
+ defaultFormattingWidth: 'wide'
+ })
+}
+
+export default localize
diff --git a/date-fns/src/locale/te/_lib/match/index.js b/date-fns/src/locale/te/_lib/match/index.js
new file mode 100644
index 0000000..f5813f6
--- /dev/null
+++ b/date-fns/src/locale/te/_lib/match/index.js
@@ -0,0 +1,140 @@
+import buildMatchPatternFn from '../../../_lib/buildMatchPatternFn/index'
+import buildMatchFn from '../../../_lib/buildMatchFn/index'
+
+var matchOrdinalNumberPattern = /^(\d+)(వ)?/i
+var parseOrdinalNumberPattern = /\d+/i
+
+var matchEraPatterns = {
+ narrow: /^(క్రీ\.పూ\.|క్రీ\.శ\.)/i,
+ abbreviated: /^(క్రీ\.?\s?పూ\.?|ప్ర\.?\s?శ\.?\s?పూ\.?|క్రీ\.?\s?శ\.?|సా\.?\s?శ\.?)/i,
+ wide: /^(క్రీస్తు పూర్వం|ప్రస్తుత శకానికి పూర్వం|క్రీస్తు శకం|ప్రస్తుత శకం)/i
+}
+var parseEraPatterns = {
+ any: [/^(పూ|శ)/i, /^సా/i]
+}
+
+var matchQuarterPatterns = {
+ narrow: /^[1234]/i,
+ abbreviated: /^త్రై[1234]/i,
+ wide: /^[1234](వ)? త్రైమాసికం/i
+}
+var parseQuarterPatterns = {
+ any: [/1/i, /2/i, /3/i, /4/i]
+}
+
+var matchMonthPatterns = {
+ narrow: /^(జూ|జు|జ|ఫి|మా|ఏ|మే|ఆ|సె|అ|న|డి)/i,
+ abbreviated: /^(జన|ఫిబ్ర|మార్చి|ఏప్రి|మే|జూన్|జులై|ఆగ|సెప్|అక్టో|నవ|డిసె)/i,
+ wide: /^(జనవరి|ఫిబ్రవరి|మార్చి|ఏప్రిల్|మే|జూన్|జులై|ఆగస్టు|సెప్టెంబర్|అక్టోబర్|నవంబర్|డిసెంబర్)/i
+}
+
+var parseMonthPatterns = {
+ narrow: [
+ /^జ/i,
+ /^ఫి/i,
+ /^మా/i,
+ /^ఏ/i,
+ /^మే/i,
+ /^జూ/i,
+ /^జు/i,
+ /^ఆ/i,
+ /^సె/i,
+ /^అ/i,
+ /^న/i,
+ /^డి/i
+ ],
+ any: [
+ /^జన/i,
+ /^ఫి/i,
+ /^మా/i,
+ /^ఏ/i,
+ /^మే/i,
+ /^జూన్/i,
+ /^జులై/i,
+ /^ఆగ/i,
+ /^సె/i,
+ /^అ/i,
+ /^న/i,
+ /^డి/i
+ ]
+}
+
+var matchDayPatterns = {
+ narrow: /^(ఆ|సో|మ|బు|గు|శు|శ)/i,
+ short: /^(ఆది|సోమ|మం|బుధ|గురు|శుక్ర|శని)/i,
+ abbreviated: /^(ఆది|సోమ|మం|బుధ|గురు|శుక్ర|శని)/i,
+ wide: /^(ఆదివారం|సోమవారం|మంగళవారం|బుధవారం|గురువారం|శుక్రవారం|శనివారం)/i
+}
+
+var parseDayPatterns = {
+ narrow: [/^ఆ/i, /^సో/i, /^మ/i, /^బు/i, /^గు/i, /^శు/i, /^శ/i],
+ any: [/^ఆది/i, /^సోమ/i, /^మం/i, /^బుధ/i, /^గురు/i, /^శుక్ర/i, /^శని/i]
+}
+
+var matchDayPeriodPatterns = {
+ narrow: /^(పూర్వాహ్నం|అపరాహ్నం|అర్ధరాత్రి|మిట్టమధ్యాహ్నం|ఉదయం|మధ్యాహ్నం|సాయంత్రం|రాత్రి)/i,
+ any: /^(పూర్వాహ్నం|అపరాహ్నం|అర్ధరాత్రి|మిట్టమధ్యాహ్నం|ఉదయం|మధ్యాహ్నం|సాయంత్రం|రాత్రి)/i
+}
+
+var parseDayPeriodPatterns = {
+ any: {
+ am: /^పూర్వాహ్నం/i,
+ pm: /^అపరాహ్నం/i,
+ midnight: /^అర్ధ/i,
+ noon: /^మిట్ట/i,
+ morning: /ఉదయం/i,
+ afternoon: /మధ్యాహ్నం/i,
+ evening: /సాయంత్రం/i,
+ night: /రాత్రి/i
+ }
+}
+
+var match = {
+ ordinalNumber: buildMatchPatternFn({
+ matchPattern: matchOrdinalNumberPattern,
+ parsePattern: parseOrdinalNumberPattern,
+ valueCallback: function(value) {
+ return parseInt(value, 10)
+ }
+ }),
+
+ era: buildMatchFn({
+ matchPatterns: matchEraPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseEraPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ quarter: buildMatchFn({
+ matchPatterns: matchQuarterPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseQuarterPatterns,
+ defaultParseWidth: 'any',
+ valueCallback: function(index) {
+ return index + 1
+ }
+ }),
+
+ month: buildMatchFn({
+ matchPatterns: matchMonthPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseMonthPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ day: buildMatchFn({
+ matchPatterns: matchDayPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseDayPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ dayPeriod: buildMatchFn({
+ matchPatterns: matchDayPeriodPatterns,
+ defaultMatchWidth: 'any',
+ parsePatterns: parseDayPeriodPatterns,
+ defaultParseWidth: 'any'
+ })
+}
+
+export default match
diff --git a/date-fns/src/locale/te/index.d.ts b/date-fns/src/locale/te/index.d.ts
new file mode 100644
index 0000000..2dab4a8
--- /dev/null
+++ b/date-fns/src/locale/te/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { te } from 'date-fns/locale'
+export default te
diff --git a/date-fns/src/locale/te/index.js b/date-fns/src/locale/te/index.js
new file mode 100644
index 0000000..d51e651
--- /dev/null
+++ b/date-fns/src/locale/te/index.js
@@ -0,0 +1,28 @@
+import formatDistance from './_lib/formatDistance/index'
+import formatLong from './_lib/formatLong/index'
+import formatRelative from './_lib/formatRelative/index'
+import localize from './_lib/localize/index'
+import match from './_lib/match/index'
+
+/**
+ * @type {Locale}
+ * @category Locales
+ * @summary Telugu locale
+ * @language Telugu
+ * @iso-639-2 tel
+ * @author Kranthi Lakum [@kranthilakum]{@link https://github.com/kranthilakum}
+ */
+var locale = {
+ code: 'te',
+ formatDistance: formatDistance,
+ formatLong: formatLong,
+ formatRelative: formatRelative,
+ localize: localize,
+ match: match,
+ options: {
+ weekStartsOn: 0 /* Sunday */,
+ firstWeekContainsDate: 1
+ }
+}
+
+export default locale
diff --git a/date-fns/src/locale/te/index.js.flow b/date-fns/src/locale/te/index.js.flow
new file mode 100644
index 0000000..b9dfe66
--- /dev/null
+++ b/date-fns/src/locale/te/index.js.flow
@@ -0,0 +1,35 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+declare module.exports: Locale
diff --git a/date-fns/src/locale/te/snapshot.md b/date-fns/src/locale/te/snapshot.md
new file mode 100644
index 0000000..38452df
--- /dev/null
+++ b/date-fns/src/locale/te/snapshot.md
@@ -0,0 +1,304 @@
+# Telugu (te) locale
+
+## `format` and `parse`
+
+| Title | Token string | Date | `format` result | `parse` result |
+| ------------------------------- | ------------ | ------------------------ | -------------------------------------------------------- | ------------------------ |
+| Calendar year | yo | 1987-02-11T12:13:14.015Z | 1987వ | 1987-01-01T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 5వ | 0005-01-01T00:00:00.000Z |
+| Local week-numbering year | Yo | 1987-02-11T12:13:14.015Z | 1987వ | 1986-12-28T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 5వ | 0004-12-26T00:00:00.000Z |
+| Quarter (formatting) | Qo | 2019-01-01T12:13:14.015Z | 1వ | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2వ | 2019-04-01T00:00:00.000Z |
+| | QQQ | 2019-01-01T12:13:14.015Z | త్రై1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | త్రై2 | 2019-04-01T00:00:00.000Z |
+| | QQQQ | 2019-01-01T12:13:14.015Z | 1వ త్రైమాసికం | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2వ త్రైమాసికం | 2019-04-01T00:00:00.000Z |
+| | QQQQQ | 2019-01-01T12:13:14.015Z | 1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2 | 2019-04-01T00:00:00.000Z |
+| Quarter (stand-alone) | qo | 2019-01-01T12:13:14.015Z | 1వ | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2వ | 2019-04-01T00:00:00.000Z |
+| | qqq | 2019-01-01T12:13:14.015Z | త్రై1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | త్రై2 | 2019-04-01T00:00:00.000Z |
+| | qqqq | 2019-01-01T12:13:14.015Z | 1వ త్రైమాసికం | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2వ త్రైమాసికం | 2019-04-01T00:00:00.000Z |
+| Month (formatting) | Mo | 2019-02-11T12:13:14.015Z | 2వ | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7వ | 2019-07-01T00:00:00.000Z |
+| | MMM | 2019-02-11T12:13:14.015Z | ఫిబ్ర | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | జులై | 2019-07-01T00:00:00.000Z |
+| | MMMM | 2019-02-11T12:13:14.015Z | ఫిబ్రవరి | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | జులై | 2019-07-01T00:00:00.000Z |
+| | MMMMM | 2019-02-11T12:13:14.015Z | ఫి | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | జు | 2019-01-01T00:00:00.000Z |
+| Month (stand-alone) | Lo | 2019-02-11T12:13:14.015Z | 2వ | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7వ | 2019-07-01T00:00:00.000Z |
+| | LLL | 2019-02-11T12:13:14.015Z | ఫిబ్ర | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | జులై | 2019-07-01T00:00:00.000Z |
+| | LLLL | 2019-02-11T12:13:14.015Z | ఫిబ్రవరి | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | జులై | 2019-07-01T00:00:00.000Z |
+| | LLLLL | 2019-02-11T12:13:14.015Z | ఫి | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | జు | 2019-01-01T00:00:00.000Z |
+| Local week of year | wo | 2019-01-01T12:13:14.015Z | 1వ | 2018-12-30T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 49వ | 2019-12-01T00:00:00.000Z |
+| ISO week of year | Io | 2019-01-01T12:13:14.015Z | 1వ | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48వ | 2019-11-25T00:00:00.000Z |
+| Day of month | do | 2019-02-11T12:13:14.015Z | 11వ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-28T12:13:14.015Z | 28వ | 2019-02-28T00:00:00.000Z |
+| Day of year | Do | 2019-02-11T12:13:14.015Z | 42వ | 2019-02-11T00:00:00.000Z |
+| | | 2019-12-31T12:13:14.015Z | 365వ | 2019-12-31T00:00:00.000Z |
+| Day of week (formatting) | E | 2019-02-11T12:13:14.015Z | సోమ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | శుక్ర | 2019-02-15T00:00:00.000Z |
+| | EE | 2019-02-11T12:13:14.015Z | సోమ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | శుక్ర | 2019-02-15T00:00:00.000Z |
+| | EEE | 2019-02-11T12:13:14.015Z | సోమ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | శుక్ర | 2019-02-15T00:00:00.000Z |
+| | EEEE | 2019-02-11T12:13:14.015Z | సోమవారం | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | శుక్రవారం | 2019-02-15T00:00:00.000Z |
+| | EEEEE | 2019-02-11T12:13:14.015Z | సో | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | శు | 2019-02-15T00:00:00.000Z |
+| | EEEEEE | 2019-02-11T12:13:14.015Z | సోమ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | శుక్ర | 2019-02-15T00:00:00.000Z |
+| ISO day of week (formatting) | io | 2019-02-11T12:13:14.015Z | 1వ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5వ | 2019-02-15T00:00:00.000Z |
+| | iii | 2019-02-11T12:13:14.015Z | సోమ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | శుక్ర | 2019-02-15T00:00:00.000Z |
+| | iiii | 2019-02-11T12:13:14.015Z | సోమవారం | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | శుక్రవారం | 2019-02-15T00:00:00.000Z |
+| | iiiii | 2019-02-11T12:13:14.015Z | సో | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | శు | 2019-02-15T00:00:00.000Z |
+| | iiiiii | 2019-02-11T12:13:14.015Z | సోమ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | శుక్ర | 2019-02-15T00:00:00.000Z |
+| Local day of week (formatting) | eo | 2019-02-11T12:13:14.015Z | 2వ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 6వ | 2019-02-15T00:00:00.000Z |
+| | eee | 2019-02-11T12:13:14.015Z | సోమ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | శుక్ర | 2019-02-15T00:00:00.000Z |
+| | eeee | 2019-02-11T12:13:14.015Z | సోమవారం | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | శుక్రవారం | 2019-02-15T00:00:00.000Z |
+| | eeeee | 2019-02-11T12:13:14.015Z | సో | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | శు | 2019-02-15T00:00:00.000Z |
+| | eeeeee | 2019-02-11T12:13:14.015Z | సోమ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | శుక్ర | 2019-02-15T00:00:00.000Z |
+| Local day of week (stand-alone) | co | 2019-02-11T12:13:14.015Z | 2వ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 6వ | 2019-02-15T00:00:00.000Z |
+| | ccc | 2019-02-11T12:13:14.015Z | సోమ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | శుక్ర | 2019-02-15T00:00:00.000Z |
+| | cccc | 2019-02-11T12:13:14.015Z | సోమవారం | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | శుక్రవారం | 2019-02-15T00:00:00.000Z |
+| | ccccc | 2019-02-11T12:13:14.015Z | సో | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | శు | 2019-02-15T00:00:00.000Z |
+| | cccccc | 2019-02-11T12:13:14.015Z | సోమ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | శుక్ర | 2019-02-15T00:00:00.000Z |
+| AM, PM | a | 2019-02-11T11:13:14.015Z | పూర్వాహ్నం | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | అపరాహ్నం | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | అపరాహ్నం | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | పూర్వాహ్నం | 2019-02-11T00:00:00.000Z |
+| | aa | 2019-02-11T11:13:14.015Z | పూర్వాహ్నం | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | అపరాహ్నం | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | అపరాహ్నం | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | పూర్వాహ్నం | 2019-02-11T00:00:00.000Z |
+| | aaa | 2019-02-11T11:13:14.015Z | పూర్వాహ్నం | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | అపరాహ్నం | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | అపరాహ్నం | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | పూర్వాహ్నం | 2019-02-11T00:00:00.000Z |
+| | aaaa | 2019-02-11T11:13:14.015Z | పూర్వాహ్నం | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | అపరాహ్నం | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | అపరాహ్నం | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | పూర్వాహ్నం | 2019-02-11T00:00:00.000Z |
+| | aaaaa | 2019-02-11T11:13:14.015Z | పూర్వాహ్నం | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | అపరాహ్నం | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | అపరాహ్నం | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | పూర్వాహ్నం | 2019-02-11T00:00:00.000Z |
+| AM, PM, noon, midnight | b | 2019-02-11T11:13:14.015Z | పూర్వాహ్నం | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | అపరాహ్నం | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | అపరాహ్నం | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | పూర్వాహ్నం | 2019-02-11T00:00:00.000Z |
+| | bb | 2019-02-11T11:13:14.015Z | పూర్వాహ్నం | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | అపరాహ్నం | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | అపరాహ్నం | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | పూర్వాహ్నం | 2019-02-11T00:00:00.000Z |
+| | bbb | 2019-02-11T11:13:14.015Z | పూర్వాహ్నం | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | అపరాహ్నం | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | అపరాహ్నం | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | పూర్వాహ్నం | 2019-02-11T00:00:00.000Z |
+| | bbbb | 2019-02-11T11:13:14.015Z | పూర్వాహ్నం | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | అపరాహ్నం | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | అపరాహ్నం | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | పూర్వాహ్నం | 2019-02-11T00:00:00.000Z |
+| | bbbbb | 2019-02-11T11:13:14.015Z | పూర్వాహ్నం | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | అపరాహ్నం | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | అపరాహ్నం | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | పూర్వాహ్నం | 2019-02-11T00:00:00.000Z |
+| Flexible day period | B | 2019-02-11T11:13:14.015Z | ఉదయం | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | మధ్యాహ్నం | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | సాయంత్రం | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | రాత్రి | 2019-02-11T00:00:00.000Z |
+| | BB | 2019-02-11T11:13:14.015Z | ఉదయం | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | మధ్యాహ్నం | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | సాయంత్రం | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | రాత్రి | 2019-02-11T00:00:00.000Z |
+| | BBB | 2019-02-11T11:13:14.015Z | ఉదయం | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | మధ్యాహ్నం | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | సాయంత్రం | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | రాత్రి | 2019-02-11T00:00:00.000Z |
+| | BBBB | 2019-02-11T11:13:14.015Z | ఉదయం | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | మధ్యాహ్నం | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | సాయంత్రం | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | రాత్రి | 2019-02-11T00:00:00.000Z |
+| | BBBBB | 2019-02-11T11:13:14.015Z | ఉదయం | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | మధ్యాహ్నం | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | సాయంత్రం | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | రాత్రి | 2019-02-11T00:00:00.000Z |
+| Hour [1-12] | ho | 2019-02-11T11:13:14.015Z | 11వ | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11వ | 2019-02-11T23:00:00.000Z |
+| Hour [0-23] | Ho | 2019-02-11T11:13:14.015Z | 11వ | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23వ | 2019-02-11T23:00:00.000Z |
+| Hour [0-11] | Ko | 2019-02-11T11:13:14.015Z | 11వ | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11వ | 2019-02-11T23:00:00.000Z |
+| Hour [1-24] | ko | 2019-02-11T11:13:14.015Z | 11వ | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23వ | 2019-02-11T23:00:00.000Z |
+| Minute | mo | 2019-01-01T12:01:14.015Z | 1వ | 2019-01-01T12:01:00.000Z |
+| | | 2019-04-01T12:55:14.015Z | 55వ | 2019-04-01T12:55:00.000Z |
+| Second | so | 2019-01-01T12:13:01.015Z | 1వ | 2019-01-01T12:13:01.000Z |
+| | | 2019-04-01T12:13:55.015Z | 55వ | 2019-04-01T12:13:55.000Z |
+| Long localized date | P | 1987-02-11T12:13:14.015Z | 11-02-87 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29-05-53 | 1453-05-29T00:00:00.000Z |
+| | PP | 1987-02-11T12:13:14.015Z | 11 ఫిబ్ర, 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 మే, 1453 | 1453-05-29T00:00:00.000Z |
+| | PPP | 1987-02-11T12:13:14.015Z | 11 ఫిబ్రవరి, 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 మే, 1453 | 1453-05-29T00:00:00.000Z |
+| | PPPP | 1987-02-11T12:13:14.015Z | 11, ఫిబ్రవరి 1987, బుధవారం | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29, మే 1453, ఆదివారం | 1453-05-29T00:00:00.000Z |
+| Long localized time | p | 1987-02-11T12:13:14.015Z | 12:13 అపరాహ్నం | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 11:59 అపరాహ్నం | 1453-05-29T23:59:00.000Z |
+| | pp | 1987-02-11T12:13:14.015Z | 12:13:14 అపరాహ్నం | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 11:59:59 అపరాహ్నం | 1453-05-29T23:59:59.000Z |
+| | ppp | 1987-02-11T12:13:14.015Z | 12:13:14 అపరాహ్నం GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 11:59:59 అపరాహ్నం GMT+0 | Errored |
+| | pppp | 1987-02-11T12:13:14.015Z | 12:13:14 అపరాహ్నం GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 11:59:59 అపరాహ్నం GMT+00:00 | Errored |
+| Combination of date and time | Pp | 1987-02-11T12:13:14.015Z | 11-02-87 12:13 అపరాహ్నం | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29-05-53 11:59 అపరాహ్నం | 1453-05-29T23:59:00.000Z |
+| | PPpp | 1987-02-11T12:13:14.015Z | 11 ఫిబ్ర, 1987 12:13:14 అపరాహ్నం | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 మే, 1453 11:59:59 అపరాహ్నం | 1453-05-29T23:59:59.000Z |
+| | PPPppp | 1987-02-11T12:13:14.015Z | 11 ఫిబ్రవరి, 1987 12:13:14 అపరాహ్నం GMT+0కి | Errored |
+| | | 1453-05-29T23:59:59.999Z | 29 మే, 1453 11:59:59 అపరాహ్నం GMT+0కి | Errored |
+| | PPPPpppp | 1987-02-11T12:13:14.015Z | 11, ఫిబ్రవరి 1987, బుధవారం 12:13:14 అపరాహ్నం GMT+00:00కి | Errored |
+| | | 1453-05-29T23:59:59.999Z | 29, మే 1453, ఆదివారం 11:59:59 అపరాహ్నం GMT+00:00కి | Errored |
+
+## `formatDistance`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `includeSeconds: true` | `addSuffix: true` |
+| ------------------------ | ---------------------- | ---------------------- | ------------------------- |
+| 2006-01-01T00:00:00.000Z | సుమారు 6 సంవత్సరాలు | సుమారు 6 సంవత్సరాలు | సుమారు 6 సంవత్సరాలలో |
+| 2005-01-01T00:00:00.000Z | సుమారు 5 సంవత్సరాలు | సుమారు 5 సంవత్సరాలు | సుమారు 5 సంవత్సరాలలో |
+| 2004-01-01T00:00:00.000Z | సుమారు 4 సంవత్సరాలు | సుమారు 4 సంవత్సరాలు | సుమారు 4 సంవత్సరాలలో |
+| 2003-01-01T00:00:00.000Z | సుమారు 3 సంవత్సరాలు | సుమారు 3 సంవత్సరాలు | సుమారు 3 సంవత్సరాలలో |
+| 2002-01-01T00:00:00.000Z | సుమారు 2 సంవత్సరాలు | సుమారు 2 సంవత్సరాలు | సుమారు 2 సంవత్సరాలలో |
+| 2001-06-01T00:00:00.000Z | ఒక సంవత్సరం పైగా | ఒక సంవత్సరం పైగా | ఒక సంవత్సరంలో |
+| 2001-02-01T00:00:00.000Z | సుమారు ఒక సంవత్సరం | సుమారు ఒక సంవత్సరం | సుమారు ఒక సంవత్సరంలో |
+| 2001-01-01T00:00:00.000Z | సుమారు ఒక సంవత్సరం | సుమారు ఒక సంవత్సరం | సుమారు ఒక సంవత్సరంలో |
+| 2000-06-01T00:00:00.000Z | 5 నెలలు | 5 నెలలు | 5 నెలలలో |
+| 2000-03-01T00:00:00.000Z | 2 నెలలు | 2 నెలలు | 2 నెలలలో |
+| 2000-02-01T00:00:00.000Z | సుమారు ఒక నెల | సుమారు ఒక నెల | సుమారు ఒక నెలలో |
+| 2000-01-15T00:00:00.000Z | 14 రోజులు | 14 రోజులు | 14 రోజులలో |
+| 2000-01-02T00:00:00.000Z | ఒక రోజు | ఒక రోజు | ఒక రోజులో |
+| 2000-01-01T06:00:00.000Z | సుమారు 6 గంటలు | సుమారు 6 గంటలు | సుమారు 6 గంటలలో |
+| 2000-01-01T01:00:00.000Z | సుమారు ఒక గంట | సుమారు ఒక గంట | సుమారు ఒక గంటలో |
+| 2000-01-01T00:45:00.000Z | సుమారు ఒక గంట | సుమారు ఒక గంట | సుమారు ఒక గంటలో |
+| 2000-01-01T00:30:00.000Z | 30 నిమిషాలు | 30 నిమిషాలు | 30 నిమిషాలలో |
+| 2000-01-01T00:15:00.000Z | 15 నిమిషాలు | 15 నిమిషాలు | 15 నిమిషాలలో |
+| 2000-01-01T00:01:00.000Z | ఒక నిమిషం | ఒక నిమిషం | ఒక నిమిషంలో |
+| 2000-01-01T00:00:25.000Z | ఒక నిమిషం కన్నా తక్కువ | అర నిమిషం | ఒక నిమిషంలో |
+| 2000-01-01T00:00:15.000Z | ఒక నిమిషం కన్నా తక్కువ | 20 సెకన్ల కన్నా తక్కువ | ఒక నిమిషంలో |
+| 2000-01-01T00:00:05.000Z | ఒక నిమిషం కన్నా తక్కువ | 10 సెకన్ల కన్నా తక్కువ | ఒక నిమిషంలో |
+| 2000-01-01T00:00:00.000Z | ఒక నిమిషం కన్నా తక్కువ | 5 సెకన్ల కన్నా తక్కువ | ఒక నిమిషం క్రితం |
+| 1999-12-31T23:59:55.000Z | ఒక నిమిషం కన్నా తక్కువ | 10 సెకన్ల కన్నా తక్కువ | ఒక నిమిషం క్రితం |
+| 1999-12-31T23:59:45.000Z | ఒక నిమిషం కన్నా తక్కువ | 20 సెకన్ల కన్నా తక్కువ | ఒక నిమిషం క్రితం |
+| 1999-12-31T23:59:35.000Z | ఒక నిమిషం కన్నా తక్కువ | అర నిమిషం | ఒక నిమిషం క్రితం |
+| 1999-12-31T23:59:00.000Z | ఒక నిమిషం | ఒక నిమిషం | ఒక నిమిషం క్రితం |
+| 1999-12-31T23:45:00.000Z | 15 నిమిషాలు | 15 నిమిషాలు | 15 నిమిషాల క్రితం |
+| 1999-12-31T23:30:00.000Z | 30 నిమిషాలు | 30 నిమిషాలు | 30 నిమిషాల క్రితం |
+| 1999-12-31T23:15:00.000Z | సుమారు ఒక గంట | సుమారు ఒక గంట | సుమారు ఒక గంట క్రితం |
+| 1999-12-31T23:00:00.000Z | సుమారు ఒక గంట | సుమారు ఒక గంట | సుమారు ఒక గంట క్రితం |
+| 1999-12-31T18:00:00.000Z | సుమారు 6 గంటలు | సుమారు 6 గంటలు | సుమారు 6 గంటల క్రితం |
+| 1999-12-30T00:00:00.000Z | 2 రోజులు | 2 రోజులు | 2 రోజుల క్రితం |
+| 1999-12-15T00:00:00.000Z | 17 రోజులు | 17 రోజులు | 17 రోజుల క్రితం |
+| 1999-12-01T00:00:00.000Z | సుమారు ఒక నెల | సుమారు ఒక నెల | సుమారు ఒక నెల క్రితం |
+| 1999-11-01T00:00:00.000Z | 2 నెలలు | 2 నెలలు | 2 నెలల క్రితం |
+| 1999-06-01T00:00:00.000Z | 7 నెలలు | 7 నెలలు | 7 నెలల క్రితం |
+| 1999-01-01T00:00:00.000Z | సుమారు ఒక సంవత్సరం | సుమారు ఒక సంవత్సరం | సుమారు ఒక సంవత్సరం క్రితం |
+| 1998-12-01T00:00:00.000Z | సుమారు ఒక సంవత్సరం | సుమారు ఒక సంవత్సరం | సుమారు ఒక సంవత్సరం క్రితం |
+| 1998-06-01T00:00:00.000Z | ఒక సంవత్సరం పైగా | ఒక సంవత్సరం పైగా | ఒక సంవత్సరం క్రితం |
+| 1998-01-01T00:00:00.000Z | సుమారు 2 సంవత్సరాలు | సుమారు 2 సంవత్సరాలు | సుమారు 2 సంవత్సరాల క్రితం |
+| 1997-01-01T00:00:00.000Z | సుమారు 3 సంవత్సరాలు | సుమారు 3 సంవత్సరాలు | సుమారు 3 సంవత్సరాల క్రితం |
+| 1996-01-01T00:00:00.000Z | సుమారు 4 సంవత్సరాలు | సుమారు 4 సంవత్సరాలు | సుమారు 4 సంవత్సరాల క్రితం |
+| 1995-01-01T00:00:00.000Z | సుమారు 5 సంవత్సరాలు | సుమారు 5 సంవత్సరాలు | సుమారు 5 సంవత్సరాల క్రితం |
+| 1994-01-01T00:00:00.000Z | సుమారు 6 సంవత్సరాలు | సుమారు 6 సంవత్సరాలు | సుమారు 6 సంవత్సరాల క్రితం |
+
+## `formatDistanceStrict`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `addSuffix: true` | With forced unit (i.e. `hour`) |
+| ------------------------ | ------------ | ------------------ | ------------------------------ |
+| 2006-01-01T00:00:00.000Z | 6 సంవత్సరాలు | 6 సంవత్సరాలలో | 52608 గంటలు |
+| 2005-01-01T00:00:00.000Z | 5 సంవత్సరాలు | 5 సంవత్సరాలలో | 43848 గంటలు |
+| 2004-01-01T00:00:00.000Z | 4 సంవత్సరాలు | 4 సంవత్సరాలలో | 35064 గంటలు |
+| 2003-01-01T00:00:00.000Z | 3 సంవత్సరాలు | 3 సంవత్సరాలలో | 26304 గంటలు |
+| 2002-01-01T00:00:00.000Z | 2 సంవత్సరాలు | 2 సంవత్సరాలలో | 17544 గంటలు |
+| 2001-06-01T00:00:00.000Z | ఒక సంవత్సరం | ఒక సంవత్సరంలో | 12408 గంటలు |
+| 2001-02-01T00:00:00.000Z | ఒక సంవత్సరం | ఒక సంవత్సరంలో | 9528 గంటలు |
+| 2001-01-01T00:00:00.000Z | ఒక సంవత్సరం | ఒక సంవత్సరంలో | 8784 గంటలు |
+| 2000-06-01T00:00:00.000Z | 5 నెలలు | 5 నెలలలో | 3648 గంటలు |
+| 2000-03-01T00:00:00.000Z | 2 నెలలు | 2 నెలలలో | 1440 గంటలు |
+| 2000-02-01T00:00:00.000Z | ఒక నెల | ఒక నెలలో | 744 గంటలు |
+| 2000-01-15T00:00:00.000Z | 14 రోజులు | 14 రోజులలో | 336 గంటలు |
+| 2000-01-02T00:00:00.000Z | ఒక రోజు | ఒక రోజులో | 24 గంటలు |
+| 2000-01-01T06:00:00.000Z | 6 గంటలు | 6 గంటలలో | 6 గంటలు |
+| 2000-01-01T01:00:00.000Z | ఒక గంట | ఒక గంటలో | ఒక గంట |
+| 2000-01-01T00:45:00.000Z | 45 నిమిషాలు | 45 నిమిషాలలో | ఒక గంట |
+| 2000-01-01T00:30:00.000Z | 30 నిమిషాలు | 30 నిమిషాలలో | ఒక గంట |
+| 2000-01-01T00:15:00.000Z | 15 నిమిషాలు | 15 నిమిషాలలో | 0 గంటలు |
+| 2000-01-01T00:01:00.000Z | ఒక నిమిషం | ఒక నిమిషంలో | 0 గంటలు |
+| 2000-01-01T00:00:25.000Z | 25 సెకన్ల | 25 సెకన్లలో | 0 గంటలు |
+| 2000-01-01T00:00:15.000Z | 15 సెకన్ల | 15 సెకన్లలో | 0 గంటలు |
+| 2000-01-01T00:00:05.000Z | 5 సెకన్ల | 5 సెకన్లలో | 0 గంటలు |
+| 2000-01-01T00:00:00.000Z | 0 సెకన్ల | 0 సెకన్ల క్రితం | 0 గంటలు |
+| 1999-12-31T23:59:55.000Z | 5 సెకన్ల | 5 సెకన్ల క్రితం | 0 గంటలు |
+| 1999-12-31T23:59:45.000Z | 15 సెకన్ల | 15 సెకన్ల క్రితం | 0 గంటలు |
+| 1999-12-31T23:59:35.000Z | 25 సెకన్ల | 25 సెకన్ల క్రితం | 0 గంటలు |
+| 1999-12-31T23:59:00.000Z | ఒక నిమిషం | ఒక నిమిషం క్రితం | 0 గంటలు |
+| 1999-12-31T23:45:00.000Z | 15 నిమిషాలు | 15 నిమిషాల క్రితం | 0 గంటలు |
+| 1999-12-31T23:30:00.000Z | 30 నిమిషాలు | 30 నిమిషాల క్రితం | ఒక గంట |
+| 1999-12-31T23:15:00.000Z | 45 నిమిషాలు | 45 నిమిషాల క్రితం | ఒక గంట |
+| 1999-12-31T23:00:00.000Z | ఒక గంట | ఒక గంట క్రితం | ఒక గంట |
+| 1999-12-31T18:00:00.000Z | 6 గంటలు | 6 గంటల క్రితం | 6 గంటలు |
+| 1999-12-30T00:00:00.000Z | 2 రోజులు | 2 రోజుల క్రితం | 48 గంటలు |
+| 1999-12-15T00:00:00.000Z | 17 రోజులు | 17 రోజుల క్రితం | 408 గంటలు |
+| 1999-12-01T00:00:00.000Z | ఒక నెల | ఒక నెల క్రితం | 744 గంటలు |
+| 1999-11-01T00:00:00.000Z | 2 నెలలు | 2 నెలల క్రితం | 1464 గంటలు |
+| 1999-06-01T00:00:00.000Z | 7 నెలలు | 7 నెలల క్రితం | 5136 గంటలు |
+| 1999-01-01T00:00:00.000Z | ఒక సంవత్సరం | ఒక సంవత్సరం క్రితం | 8760 గంటలు |
+| 1998-12-01T00:00:00.000Z | ఒక సంవత్సరం | ఒక సంవత్సరం క్రితం | 9504 గంటలు |
+| 1998-06-01T00:00:00.000Z | 2 సంవత్సరాలు | 2 సంవత్సరాల క్రితం | 13896 గంటలు |
+| 1998-01-01T00:00:00.000Z | 2 సంవత్సరాలు | 2 సంవత్సరాల క్రితం | 17520 గంటలు |
+| 1997-01-01T00:00:00.000Z | 3 సంవత్సరాలు | 3 సంవత్సరాల క్రితం | 26280 గంటలు |
+| 1996-01-01T00:00:00.000Z | 4 సంవత్సరాలు | 4 సంవత్సరాల క్రితం | 35064 గంటలు |
+| 1995-01-01T00:00:00.000Z | 5 సంవత్సరాలు | 5 సంవత్సరాల క్రితం | 43824 గంటలు |
+| 1994-01-01T00:00:00.000Z | 6 సంవత్సరాలు | 6 సంవత్సరాల క్రితం | 52584 గంటలు |
+
+## `formatRelative`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result |
+| ------------------------ | ------------------------------- |
+| 2000-01-10T00:00:00.000Z | 10-01-00 |
+| 2000-01-05T00:00:00.000Z | తదుపరి బుధవారం 12:00 పూర్వాహ్నం |
+| 2000-01-02T00:00:00.000Z | రేపు 12:00 పూర్వాహ్నం |
+| 2000-01-01T00:00:00.000Z | ఈ రోజు 12:00 పూర్వాహ్నం |
+| 1999-12-31T00:00:00.000Z | నిన్న 12:00 పూర్వాహ్నం |
+| 1999-12-27T00:00:00.000Z | గత సోమవారం 12:00 పూర్వాహ్నం |
+| 1999-12-21T00:00:00.000Z | 21-12-99 |
diff --git a/date-fns/src/locale/th/_lib/formatDistance/index.js b/date-fns/src/locale/th/_lib/formatDistance/index.js
new file mode 100644
index 0000000..916461d
--- /dev/null
+++ b/date-fns/src/locale/th/_lib/formatDistance/index.js
@@ -0,0 +1,105 @@
+var formatDistanceLocale = {
+ lessThanXSeconds: {
+ one: 'น้อยกว่า 1 วินาที',
+ other: 'น้อยกว่า {{count}} วินาที'
+ },
+
+ xSeconds: {
+ one: '1 วินาที',
+ other: '{{count}} วินาที'
+ },
+
+ halfAMinute: 'ครึ่งนาที',
+
+ lessThanXMinutes: {
+ one: 'น้อยกว่า 1 นาที',
+ other: 'น้อยกว่า {{count}} นาที'
+ },
+
+ xMinutes: {
+ one: '1 นาที',
+ other: '{{count}} นาที'
+ },
+
+ aboutXHours: {
+ one: 'ประมาณ 1 ชั่วโมง',
+ other: 'ประมาณ {{count}} ชั่วโมง'
+ },
+
+ xHours: {
+ one: '1 ชั่วโมง',
+ other: '{{count}} ชั่วโมง'
+ },
+
+ xDays: {
+ one: '1 วัน',
+ other: '{{count}} วัน'
+ },
+
+ aboutXWeeks: {
+ one: 'ประมาณ 1 สัปดาห์',
+ other: 'ประมาณ {{count}} สัปดาห์'
+ },
+
+ xWeeks: {
+ one: '1 สัปดาห์',
+ other: '{{count}} สัปดาห์'
+ },
+
+ aboutXMonths: {
+ one: 'ประมาณ 1 เดือน',
+ other: 'ประมาณ {{count}} เดือน'
+ },
+
+ xMonths: {
+ one: '1 เดือน',
+ other: '{{count}} เดือน'
+ },
+
+ aboutXYears: {
+ one: 'ประมาณ 1 ปี',
+ other: 'ประมาณ {{count}} ปี'
+ },
+
+ xYears: {
+ one: '1 ปี',
+ other: '{{count}} ปี'
+ },
+
+ overXYears: {
+ one: 'มากกว่า 1 ปี',
+ other: 'มากกว่า {{count}} ปี'
+ },
+
+ almostXYears: {
+ one: 'เกือบ 1 ปี',
+ other: 'เกือบ {{count}} ปี'
+ }
+}
+
+export default function formatDistance(token, count, options) {
+ options = options || {}
+
+ var result
+ if (typeof formatDistanceLocale[token] === 'string') {
+ result = formatDistanceLocale[token]
+ } else if (count === 1) {
+ result = formatDistanceLocale[token].one
+ } else {
+ result = formatDistanceLocale[token].other.replace('{{count}}', count)
+ }
+
+ if (options.addSuffix) {
+ if (options.comparison > 0) {
+ if (token === 'halfAMinute') {
+ return 'ใน' + result
+ } else {
+ return 'ใน ' + result
+ }
+ } else {
+ return result + 'ที่ผ่านมา'
+ }
+ }
+
+ return result
+}
diff --git a/date-fns/src/locale/th/_lib/formatLong/index.js b/date-fns/src/locale/th/_lib/formatLong/index.js
new file mode 100644
index 0000000..b91cf91
--- /dev/null
+++ b/date-fns/src/locale/th/_lib/formatLong/index.js
@@ -0,0 +1,41 @@
+import buildFormatLongFn from '../../../_lib/buildFormatLongFn/index'
+
+var dateFormats = {
+ full: 'วันEEEEที่ do MMMM y',
+ long: 'do MMMM y',
+ medium: 'd MMM y',
+ short: 'dd/MM/yyyy'
+}
+
+var timeFormats = {
+ full: 'H:mm:ss น. zzzz',
+ long: 'H:mm:ss น. z',
+ medium: 'H:mm:ss น.',
+ short: 'H:mm น.'
+}
+
+var dateTimeFormats = {
+ full: "{{date}} 'เวลา' {{time}}",
+ long: "{{date}} 'เวลา' {{time}}",
+ medium: '{{date}}, {{time}}',
+ short: '{{date}}, {{time}}'
+}
+
+var formatLong = {
+ date: buildFormatLongFn({
+ formats: dateFormats,
+ defaultWidth: 'full'
+ }),
+
+ time: buildFormatLongFn({
+ formats: timeFormats,
+ defaultWidth: 'medium'
+ }),
+
+ dateTime: buildFormatLongFn({
+ formats: dateTimeFormats,
+ defaultWidth: 'full'
+ })
+}
+
+export default formatLong
diff --git a/date-fns/src/locale/th/_lib/formatRelative/index.js b/date-fns/src/locale/th/_lib/formatRelative/index.js
new file mode 100644
index 0000000..622e106
--- /dev/null
+++ b/date-fns/src/locale/th/_lib/formatRelative/index.js
@@ -0,0 +1,12 @@
+var formatRelativeLocale = {
+ lastWeek: "eeee'ที่แล้วเวลา' p",
+ yesterday: "'เมื่อวานนี้เวลา' p",
+ today: "'วันนี้เวลา' p",
+ tomorrow: "'พรุ่งนี้เวลา' p",
+ nextWeek: "eeee 'เวลา' p",
+ other: 'P'
+}
+
+export default function formatRelative(token, _date, _baseDate, _options) {
+ return formatRelativeLocale[token]
+}
diff --git a/date-fns/src/locale/th/_lib/localize/index.js b/date-fns/src/locale/th/_lib/localize/index.js
new file mode 100644
index 0000000..24390f3
--- /dev/null
+++ b/date-fns/src/locale/th/_lib/localize/index.js
@@ -0,0 +1,172 @@
+import buildLocalizeFn from '../../../_lib/buildLocalizeFn/index'
+
+var eraValues = {
+ narrow: ['B', 'คศ'],
+ abbreviated: ['BC', 'ค.ศ.'],
+ wide: ['ปีก่อนคริสตกาล', 'คริสต์ศักราช']
+}
+
+var quarterValues = {
+ narrow: ['1', '2', '3', '4'],
+ abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],
+ wide: ['ไตรมาสแรก', 'ไตรมาสที่สอง', 'ไตรมาสที่สาม', 'ไตรมาสที่สี่']
+}
+
+var dayValues = {
+ narrow: ['อา.', 'จ.', 'อ.', 'พ.', 'พฤ.', 'ศ.', 'ส.'],
+ short: ['อา.', 'จ.', 'อ.', 'พ.', 'พฤ.', 'ศ.', 'ส.'],
+ abbreviated: ['อา.', 'จ.', 'อ.', 'พ.', 'พฤ.', 'ศ.', 'ส.'],
+ wide: ['อาทิตย์', 'จันทร์', 'อังคาร', 'พุธ', 'พฤหัสบดี', 'ศุกร์', 'เสาร์']
+}
+
+var monthValues = {
+ narrow: [
+ 'ม.ค.',
+ 'ก.พ.',
+ 'มี.ค.',
+ 'เม.ย.',
+ 'พ.ค.',
+ 'มิ.ย.',
+ 'ก.ค.',
+ 'ส.ค.',
+ 'ก.ย.',
+ 'ต.ค.',
+ 'พ.ย.',
+ 'ธ.ค.'
+ ],
+ abbreviated: [
+ 'ม.ค.',
+ 'ก.พ.',
+ 'มี.ค.',
+ 'เม.ย.',
+ 'พ.ค.',
+ 'มิ.ย.',
+ 'ก.ค.',
+ 'ส.ค.',
+ 'ก.ย.',
+ 'ต.ค.',
+ 'พ.ย.',
+ 'ธ.ค.'
+ ],
+ wide: [
+ 'มกราคม',
+ 'กุมภาพันธ์',
+ 'มีนาคม',
+ 'เมษายน',
+ 'พฤษภาคม',
+ 'มิถุนายน',
+ 'กรกฎาคม',
+ 'สิงหาคม',
+ 'กันยายน',
+ 'ตุลาคม',
+ 'พฤศจิกายน',
+ 'ธันวาคม'
+ ]
+}
+
+var dayPeriodValues = {
+ narrow: {
+ am: 'ก่อนเที่ยง',
+ pm: 'หลังเที่ยง',
+ midnight: 'เที่ยงคืน',
+ noon: 'เที่ยง',
+ morning: 'เช้า',
+ afternoon: 'บ่าย',
+ evening: 'เย็น',
+ night: 'กลางคืน'
+ },
+ abbreviated: {
+ am: 'ก่อนเที่ยง',
+ pm: 'หลังเที่ยง',
+ midnight: 'เที่ยงคืน',
+ noon: 'เที่ยง',
+ morning: 'เช้า',
+ afternoon: 'บ่าย',
+ evening: 'เย็น',
+ night: 'กลางคืน'
+ },
+ wide: {
+ am: 'ก่อนเที่ยง',
+ pm: 'หลังเที่ยง',
+ midnight: 'เที่ยงคืน',
+ noon: 'เที่ยง',
+ morning: 'เช้า',
+ afternoon: 'บ่าย',
+ evening: 'เย็น',
+ night: 'กลางคืน'
+ }
+}
+
+var formattingDayPeriodValues = {
+ narrow: {
+ am: 'ก่อนเที่ยง',
+ pm: 'หลังเที่ยง',
+ midnight: 'เที่ยงคืน',
+ noon: 'เที่ยง',
+ morning: 'ตอนเช้า',
+ afternoon: 'ตอนกลางวัน',
+ evening: 'ตอนเย็น',
+ night: 'ตอนกลางคืน'
+ },
+ abbreviated: {
+ am: 'ก่อนเที่ยง',
+ pm: 'หลังเที่ยง',
+ midnight: 'เที่ยงคืน',
+ noon: 'เที่ยง',
+ morning: 'ตอนเช้า',
+ afternoon: 'ตอนกลางวัน',
+ evening: 'ตอนเย็น',
+ night: 'ตอนกลางคืน'
+ },
+ wide: {
+ am: 'ก่อนเที่ยง',
+ pm: 'หลังเที่ยง',
+ midnight: 'เที่ยงคืน',
+ noon: 'เที่ยง',
+ morning: 'ตอนเช้า',
+ afternoon: 'ตอนกลางวัน',
+ evening: 'ตอนเย็น',
+ night: 'ตอนกลางคืน'
+ }
+}
+
+function ordinalNumber(dirtyNumber) {
+ var number = Number(dirtyNumber)
+ return number
+}
+
+var localize = {
+ ordinalNumber: ordinalNumber,
+
+ era: buildLocalizeFn({
+ values: eraValues,
+ defaultWidth: 'wide'
+ }),
+
+ quarter: buildLocalizeFn({
+ values: quarterValues,
+ defaultWidth: 'wide',
+ argumentCallback: function(quarter) {
+ return Number(quarter) - 1
+ }
+ }),
+
+ month: buildLocalizeFn({
+ values: monthValues,
+ defaultWidth: 'wide'
+ }),
+
+ day: buildLocalizeFn({
+ values: dayValues,
+ defaultWidth: 'wide'
+ }),
+
+ dayPeriod: buildLocalizeFn({
+ values: dayPeriodValues,
+ defaultWidth: 'wide',
+ formattingValues: formattingDayPeriodValues,
+ defaultFormattingWidth: 'wide'
+ })
+}
+
+export default localize
diff --git a/date-fns/src/locale/th/_lib/match/index.js b/date-fns/src/locale/th/_lib/match/index.js
new file mode 100644
index 0000000..c009ce2
--- /dev/null
+++ b/date-fns/src/locale/th/_lib/match/index.js
@@ -0,0 +1,136 @@
+import buildMatchPatternFn from '../../../_lib/buildMatchPatternFn/index'
+import buildMatchFn from '../../../_lib/buildMatchFn/index'
+
+var matchOrdinalNumberPattern = /^\d+/i
+var parseOrdinalNumberPattern = /\d+/i
+
+var matchEraPatterns = {
+ narrow: /^([bB]|[aA]|คศ)/i,
+ abbreviated: /^([bB]\.?\s?[cC]\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?|ค\.?ศ\.?)/i,
+ wide: /^(ก่อนคริสตกาล|คริสต์ศักราช|คริสตกาล)/i
+}
+var parseEraPatterns = {
+ any: [/^[bB]/i, /^(^[aA]|ค\.?ศ\.?|คริสตกาล|คริสต์ศักราช|)/i]
+}
+
+var matchQuarterPatterns = {
+ narrow: /^[1234]/i,
+ abbreviated: /^q[1234]/i,
+ wide: /^ไตรมาส(ที่)? ?[1234]/i
+}
+var parseQuarterPatterns = {
+ any: [/(1|แรก|หนึ่ง)/i, /(2|สอง)/i, /(3|สาม)/i, /(4|สี่)/i]
+}
+
+var matchMonthPatterns = {
+ narrow: /^(ม\.?ค\.?|ก\.?พ\.?|มี\.?ค\.?|เม\.?ย\.?|พ\.?ค\.?|มิ\.?ย\.?|ก\.?ค\.?|ส\.?ค\.?|ก\.?ย\.?|ต\.?ค\.?|พ\.?ย\.?|ธ\.?ค\.?)/i,
+ abbreviated: /^(ม\.?ค\.?|ก\.?พ\.?|มี\.?ค\.?|เม\.?ย\.?|พ\.?ค\.?|มิ\.?ย\.?|ก\.?ค\.?|ส\.?ค\.?|ก\.?ย\.?|ต\.?ค\.?|พ\.?ย\.?|ธ\.?ค\.?')/i,
+ wide: /^(มกราคม|กุมภาพันธ์|มีนาคม|เมษายน|พฤษภาคม|มิถุนายน|กรกฎาคม|สิงหาคม|กันยายน|ตุลาคม|พฤศจิกายน|ธันวาคม)/i
+}
+var parseMonthPatterns = {
+ wide: [
+ /^มก/i,
+ /^กุม/i,
+ /^มี/i,
+ /^เม/i,
+ /^พฤษ/i,
+ /^มิ/i,
+ /^กรก/i,
+ /^ส/i,
+ /^กัน/i,
+ /^ต/i,
+ /^พฤศ/i,
+ /^ธ/i
+ ],
+ any: [
+ /^ม\.?ค\.?/i,
+ /^ก\.?พ\.?/i,
+ /^มี\.?ค\.?/i,
+ /^เม\.?ย\.?/i,
+ /^พ\.?ค\.?/i,
+ /^มิ\.?ย\.?/i,
+ /^ก\.?ค\.?/i,
+ /^ส\.?ค\.?/i,
+ /^ก\.?ย\.?/i,
+ /^ต\.?ค\.?/i,
+ /^พ\.?ย\.?/i,
+ /^ธ\.?ค\.?/i
+ ]
+}
+
+var matchDayPatterns = {
+ narrow: /^(อา\.?|จ\.?|อ\.?|พฤ\.?|พ\.?|ศ\.?|ส\.?)/i,
+ short: /^(อา\.?|จ\.?|อ\.?|พฤ\.?|พ\.?|ศ\.?|ส\.?)/i,
+ abbreviated: /^(อา\.?|จ\.?|อ\.?|พฤ\.?|พ\.?|ศ\.?|ส\.?)/i,
+ wide: /^(อาทิตย์|จันทร์|อังคาร|พุธ|พฤหัสบดี|ศุกร์|เสาร์)/i
+}
+var parseDayPatterns = {
+ wide: [/^อา/i, /^จั/i, /^อั/i, /^พุธ/i, /^พฤ/i, /^ศ/i, /^เส/i],
+ any: [/^อา/i, /^จ/i, /^อ/i, /^พ(?!ฤ)/i, /^พฤ/i, /^ศ/i, /^ส/i]
+}
+
+var matchDayPeriodPatterns = {
+ any: /^(ก่อนเที่ยง|หลังเที่ยง|เที่ยงคืน|เที่ยง|(ตอน.*?)?.*(เที่ยง|เช้า|บ่าย|เย็น|กลางคืน))/i
+}
+var parseDayPeriodPatterns = {
+ any: {
+ am: /^ก่อนเที่ยง/i,
+ pm: /^หลังเที่ยง/i,
+ midnight: /^เที่ยงคืน/i,
+ noon: /^เที่ยง/i,
+ morning: /เช้า/i,
+ afternoon: /บ่าย/i,
+ evening: /เย็น/i,
+ night: /กลางคืน/i
+ }
+}
+
+var match = {
+ ordinalNumber: buildMatchPatternFn({
+ matchPattern: matchOrdinalNumberPattern,
+ parsePattern: parseOrdinalNumberPattern,
+ valueCallback: function(value) {
+ return parseInt(value, 10)
+ }
+ }),
+
+ era: buildMatchFn({
+ matchPatterns: matchEraPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseEraPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ quarter: buildMatchFn({
+ matchPatterns: matchQuarterPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseQuarterPatterns,
+ defaultParseWidth: 'any',
+ valueCallback: function(index) {
+ return index + 1
+ }
+ }),
+
+ month: buildMatchFn({
+ matchPatterns: matchMonthPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseMonthPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ day: buildMatchFn({
+ matchPatterns: matchDayPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseDayPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ dayPeriod: buildMatchFn({
+ matchPatterns: matchDayPeriodPatterns,
+ defaultMatchWidth: 'any',
+ parsePatterns: parseDayPeriodPatterns,
+ defaultParseWidth: 'any'
+ })
+}
+
+export default match
diff --git a/date-fns/src/locale/th/index.d.ts b/date-fns/src/locale/th/index.d.ts
new file mode 100644
index 0000000..944dd87
--- /dev/null
+++ b/date-fns/src/locale/th/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { th } from 'date-fns/locale'
+export default th
diff --git a/date-fns/src/locale/th/index.js b/date-fns/src/locale/th/index.js
new file mode 100644
index 0000000..bd63ad7
--- /dev/null
+++ b/date-fns/src/locale/th/index.js
@@ -0,0 +1,30 @@
+import formatDistance from './_lib/formatDistance/index'
+import formatLong from './_lib/formatLong/index'
+import formatRelative from './_lib/formatRelative/index'
+import localize from './_lib/localize/index'
+import match from './_lib/match/index'
+
+/**
+ * @type {Locale}
+ * @category Locales
+ * @summary Thai locale.
+ * @language Thai
+ * @iso-639-2 tha
+ * @author Athiwat Hirunworawongkun [@athivvat]{@link https://github.com/athivvat}
+ * @author [@hawkup]{@link https://github.com/hawkup}
+ * @author Jirawat I. [@nodtem66]{@link https://github.com/nodtem66}
+ */
+var locale = {
+ code: 'th',
+ formatDistance: formatDistance,
+ formatLong: formatLong,
+ formatRelative: formatRelative,
+ localize: localize,
+ match: match,
+ options: {
+ weekStartsOn: 0 /* Sunday */,
+ firstWeekContainsDate: 1
+ }
+}
+
+export default locale
diff --git a/date-fns/src/locale/th/index.js.flow b/date-fns/src/locale/th/index.js.flow
new file mode 100644
index 0000000..b9dfe66
--- /dev/null
+++ b/date-fns/src/locale/th/index.js.flow
@@ -0,0 +1,35 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+declare module.exports: Locale
diff --git a/date-fns/src/locale/th/snapshot.md b/date-fns/src/locale/th/snapshot.md
new file mode 100644
index 0000000..67d1f6a
--- /dev/null
+++ b/date-fns/src/locale/th/snapshot.md
@@ -0,0 +1,304 @@
+# Thai (th) locale
+
+## `format` and `parse`
+
+| Title | Token string | Date | `format` result | `parse` result |
+| ------------------------------- | ------------ | ------------------------ | -------------------------------------------------------- | ------------------------ |
+| Calendar year | yo | 1987-02-11T12:13:14.015Z | 1987 | 1987-01-01T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 5 | 0005-01-01T00:00:00.000Z |
+| Local week-numbering year | Yo | 1987-02-11T12:13:14.015Z | 1987 | 1986-12-28T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 5 | 0004-12-26T00:00:00.000Z |
+| Quarter (formatting) | Qo | 2019-01-01T12:13:14.015Z | 1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2 | 2019-04-01T00:00:00.000Z |
+| | QQQ | 2019-01-01T12:13:14.015Z | Q1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | Q2 | 2019-04-01T00:00:00.000Z |
+| | QQQQ | 2019-01-01T12:13:14.015Z | ไตรมาสแรก | Invalid Date |
+| | | 2019-04-01T12:13:14.015Z | ไตรมาสที่สอง | Invalid Date |
+| | QQQQQ | 2019-01-01T12:13:14.015Z | 1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2 | 2019-04-01T00:00:00.000Z |
+| Quarter (stand-alone) | qo | 2019-01-01T12:13:14.015Z | 1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2 | 2019-04-01T00:00:00.000Z |
+| | qqq | 2019-01-01T12:13:14.015Z | Q1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | Q2 | 2019-04-01T00:00:00.000Z |
+| | qqqq | 2019-01-01T12:13:14.015Z | ไตรมาสแรก | Invalid Date |
+| | | 2019-04-01T12:13:14.015Z | ไตรมาสที่สอง | Invalid Date |
+| Month (formatting) | Mo | 2019-02-11T12:13:14.015Z | 2 | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7 | 2019-07-01T00:00:00.000Z |
+| | MMM | 2019-02-11T12:13:14.015Z | ก.พ. | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | ก.ค. | 2019-07-01T00:00:00.000Z |
+| | MMMM | 2019-02-11T12:13:14.015Z | กุมภาพันธ์ | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | กรกฎาคม | 2019-07-01T00:00:00.000Z |
+| | MMMMM | 2019-02-11T12:13:14.015Z | ก.พ. | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | ก.ค. | 2019-07-01T00:00:00.000Z |
+| Month (stand-alone) | Lo | 2019-02-11T12:13:14.015Z | 2 | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7 | 2019-07-01T00:00:00.000Z |
+| | LLL | 2019-02-11T12:13:14.015Z | ก.พ. | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | ก.ค. | 2019-07-01T00:00:00.000Z |
+| | LLLL | 2019-02-11T12:13:14.015Z | กุมภาพันธ์ | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | กรกฎาคม | 2019-07-01T00:00:00.000Z |
+| | LLLLL | 2019-02-11T12:13:14.015Z | ก.พ. | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | ก.ค. | 2019-07-01T00:00:00.000Z |
+| Local week of year | wo | 2019-01-01T12:13:14.015Z | 1 | 2018-12-30T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 49 | 2019-12-01T00:00:00.000Z |
+| ISO week of year | Io | 2019-01-01T12:13:14.015Z | 1 | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48 | 2019-11-25T00:00:00.000Z |
+| Day of month | do | 2019-02-11T12:13:14.015Z | 11 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-28T12:13:14.015Z | 28 | 2019-02-28T00:00:00.000Z |
+| Day of year | Do | 2019-02-11T12:13:14.015Z | 42 | 2019-02-11T00:00:00.000Z |
+| | | 2019-12-31T12:13:14.015Z | 365 | 2019-12-31T00:00:00.000Z |
+| Day of week (formatting) | E | 2019-02-11T12:13:14.015Z | จ. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ศ. | 2019-02-15T00:00:00.000Z |
+| | EE | 2019-02-11T12:13:14.015Z | จ. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ศ. | 2019-02-15T00:00:00.000Z |
+| | EEE | 2019-02-11T12:13:14.015Z | จ. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ศ. | 2019-02-15T00:00:00.000Z |
+| | EEEE | 2019-02-11T12:13:14.015Z | จันทร์ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ศุกร์ | 2019-02-15T00:00:00.000Z |
+| | EEEEE | 2019-02-11T12:13:14.015Z | จ. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ศ. | 2019-02-15T00:00:00.000Z |
+| | EEEEEE | 2019-02-11T12:13:14.015Z | จ. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ศ. | 2019-02-15T00:00:00.000Z |
+| ISO day of week (formatting) | io | 2019-02-11T12:13:14.015Z | 1 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5 | 2019-02-15T00:00:00.000Z |
+| | iii | 2019-02-11T12:13:14.015Z | จ. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ศ. | 2019-02-15T00:00:00.000Z |
+| | iiii | 2019-02-11T12:13:14.015Z | จันทร์ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ศุกร์ | 2019-02-15T00:00:00.000Z |
+| | iiiii | 2019-02-11T12:13:14.015Z | จ. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ศ. | 2019-02-15T00:00:00.000Z |
+| | iiiiii | 2019-02-11T12:13:14.015Z | จ. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ศ. | 2019-02-15T00:00:00.000Z |
+| Local day of week (formatting) | eo | 2019-02-11T12:13:14.015Z | 2 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 6 | 2019-02-15T00:00:00.000Z |
+| | eee | 2019-02-11T12:13:14.015Z | จ. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ศ. | 2019-02-15T00:00:00.000Z |
+| | eeee | 2019-02-11T12:13:14.015Z | จันทร์ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ศุกร์ | 2019-02-15T00:00:00.000Z |
+| | eeeee | 2019-02-11T12:13:14.015Z | จ. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ศ. | 2019-02-15T00:00:00.000Z |
+| | eeeeee | 2019-02-11T12:13:14.015Z | จ. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ศ. | 2019-02-15T00:00:00.000Z |
+| Local day of week (stand-alone) | co | 2019-02-11T12:13:14.015Z | 2 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 6 | 2019-02-15T00:00:00.000Z |
+| | ccc | 2019-02-11T12:13:14.015Z | จ. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ศ. | 2019-02-15T00:00:00.000Z |
+| | cccc | 2019-02-11T12:13:14.015Z | จันทร์ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ศุกร์ | 2019-02-15T00:00:00.000Z |
+| | ccccc | 2019-02-11T12:13:14.015Z | จ. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ศ. | 2019-02-15T00:00:00.000Z |
+| | cccccc | 2019-02-11T12:13:14.015Z | จ. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ศ. | 2019-02-15T00:00:00.000Z |
+| AM, PM | a | 2019-02-11T11:13:14.015Z | ก่อนเที่ยง | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | หลังเที่ยง | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | หลังเที่ยง | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ก่อนเที่ยง | 2019-02-11T00:00:00.000Z |
+| | aa | 2019-02-11T11:13:14.015Z | ก่อนเที่ยง | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | หลังเที่ยง | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | หลังเที่ยง | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ก่อนเที่ยง | 2019-02-11T00:00:00.000Z |
+| | aaa | 2019-02-11T11:13:14.015Z | ก่อนเที่ยง | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | หลังเที่ยง | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | หลังเที่ยง | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ก่อนเที่ยง | 2019-02-11T00:00:00.000Z |
+| | aaaa | 2019-02-11T11:13:14.015Z | ก่อนเที่ยง | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | หลังเที่ยง | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | หลังเที่ยง | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ก่อนเที่ยง | 2019-02-11T00:00:00.000Z |
+| | aaaaa | 2019-02-11T11:13:14.015Z | ก่อนเที่ยง | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | หลังเที่ยง | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | หลังเที่ยง | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ก่อนเที่ยง | 2019-02-11T00:00:00.000Z |
+| AM, PM, noon, midnight | b | 2019-02-11T11:13:14.015Z | ก่อนเที่ยง | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | หลังเที่ยง | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | หลังเที่ยง | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ก่อนเที่ยง | 2019-02-11T00:00:00.000Z |
+| | bb | 2019-02-11T11:13:14.015Z | ก่อนเที่ยง | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | หลังเที่ยง | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | หลังเที่ยง | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ก่อนเที่ยง | 2019-02-11T00:00:00.000Z |
+| | bbb | 2019-02-11T11:13:14.015Z | ก่อนเที่ยง | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | หลังเที่ยง | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | หลังเที่ยง | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ก่อนเที่ยง | 2019-02-11T00:00:00.000Z |
+| | bbbb | 2019-02-11T11:13:14.015Z | ก่อนเที่ยง | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | หลังเที่ยง | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | หลังเที่ยง | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ก่อนเที่ยง | 2019-02-11T00:00:00.000Z |
+| | bbbbb | 2019-02-11T11:13:14.015Z | ก่อนเที่ยง | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | หลังเที่ยง | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | หลังเที่ยง | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ก่อนเที่ยง | 2019-02-11T00:00:00.000Z |
+| Flexible day period | B | 2019-02-11T11:13:14.015Z | ตอนเช้า | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | ตอนกลางวัน | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | ตอนเย็น | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ตอนกลางคืน | 2019-02-11T00:00:00.000Z |
+| | BB | 2019-02-11T11:13:14.015Z | ตอนเช้า | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | ตอนกลางวัน | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | ตอนเย็น | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ตอนกลางคืน | 2019-02-11T00:00:00.000Z |
+| | BBB | 2019-02-11T11:13:14.015Z | ตอนเช้า | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | ตอนกลางวัน | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | ตอนเย็น | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ตอนกลางคืน | 2019-02-11T00:00:00.000Z |
+| | BBBB | 2019-02-11T11:13:14.015Z | ตอนเช้า | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | ตอนกลางวัน | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | ตอนเย็น | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ตอนกลางคืน | 2019-02-11T00:00:00.000Z |
+| | BBBBB | 2019-02-11T11:13:14.015Z | ตอนเช้า | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | ตอนกลางวัน | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | ตอนเย็น | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ตอนกลางคืน | 2019-02-11T00:00:00.000Z |
+| Hour [1-12] | ho | 2019-02-11T11:13:14.015Z | 11 | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11 | 2019-02-11T23:00:00.000Z |
+| Hour [0-23] | Ho | 2019-02-11T11:13:14.015Z | 11 | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23 | 2019-02-11T23:00:00.000Z |
+| Hour [0-11] | Ko | 2019-02-11T11:13:14.015Z | 11 | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11 | 2019-02-11T23:00:00.000Z |
+| Hour [1-24] | ko | 2019-02-11T11:13:14.015Z | 11 | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23 | 2019-02-11T23:00:00.000Z |
+| Minute | mo | 2019-01-01T12:01:14.015Z | 1 | 2019-01-01T12:01:00.000Z |
+| | | 2019-04-01T12:55:14.015Z | 55 | 2019-04-01T12:55:00.000Z |
+| Second | so | 2019-01-01T12:13:01.015Z | 1 | 2019-01-01T12:13:01.000Z |
+| | | 2019-04-01T12:13:55.015Z | 55 | 2019-04-01T12:13:55.000Z |
+| Long localized date | P | 1987-02-11T12:13:14.015Z | 11/02/1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29/05/1453 | 1453-05-29T00:00:00.000Z |
+| | PP | 1987-02-11T12:13:14.015Z | 11 ก.พ. 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 พ.ค. 1453 | 1453-05-29T00:00:00.000Z |
+| | PPP | 1987-02-11T12:13:14.015Z | 11 กุมภาพันธ์ 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 พฤษภาคม 1453 | 1453-05-29T00:00:00.000Z |
+| | PPPP | 1987-02-11T12:13:14.015Z | วันพุธที่ 11 กุมภาพันธ์ 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | วันอาทิตย์ที่ 29 พฤษภาคม 1453 | 1453-05-29T00:00:00.000Z |
+| Long localized time | p | 1987-02-11T12:13:14.015Z | 12:13 น. | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 23:59 น. | 1453-05-29T23:59:00.000Z |
+| | pp | 1987-02-11T12:13:14.015Z | 12:13:14 น. | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 น. | 1453-05-29T23:59:59.000Z |
+| | ppp | 1987-02-11T12:13:14.015Z | 12:13:14 น. GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 น. GMT+0 | Errored |
+| | pppp | 1987-02-11T12:13:14.015Z | 12:13:14 น. GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 น. GMT+00:00 | Errored |
+| Combination of date and time | Pp | 1987-02-11T12:13:14.015Z | 11/02/1987, 12:13 น. | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29/05/1453, 23:59 น. | 1453-05-29T23:59:00.000Z |
+| | PPpp | 1987-02-11T12:13:14.015Z | 11 ก.พ. 1987, 12:13:14 น. | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 พ.ค. 1453, 23:59:59 น. | 1453-05-29T23:59:59.000Z |
+| | PPPppp | 1987-02-11T12:13:14.015Z | 11 กุมภาพันธ์ 1987 เวลา 12:13:14 น. GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 29 พฤษภาคม 1453 เวลา 23:59:59 น. GMT+0 | Errored |
+| | PPPPpppp | 1987-02-11T12:13:14.015Z | วันพุธที่ 11 กุมภาพันธ์ 1987 เวลา 12:13:14 น. GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | วันอาทิตย์ที่ 29 พฤษภาคม 1453 เวลา 23:59:59 น. GMT+00:00 | Errored |
+
+## `formatDistance`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `includeSeconds: true` | `addSuffix: true` |
+| ------------------------ | ---------------- | ---------------------- | ------------------------- |
+| 2006-01-01T00:00:00.000Z | ประมาณ 6 ปี | ประมาณ 6 ปี | ใน ประมาณ 6 ปี |
+| 2005-01-01T00:00:00.000Z | ประมาณ 5 ปี | ประมาณ 5 ปี | ใน ประมาณ 5 ปี |
+| 2004-01-01T00:00:00.000Z | ประมาณ 4 ปี | ประมาณ 4 ปี | ใน ประมาณ 4 ปี |
+| 2003-01-01T00:00:00.000Z | ประมาณ 3 ปี | ประมาณ 3 ปี | ใน ประมาณ 3 ปี |
+| 2002-01-01T00:00:00.000Z | ประมาณ 2 ปี | ประมาณ 2 ปี | ใน ประมาณ 2 ปี |
+| 2001-06-01T00:00:00.000Z | มากกว่า 1 ปี | มากกว่า 1 ปี | ใน มากกว่า 1 ปี |
+| 2001-02-01T00:00:00.000Z | ประมาณ 1 ปี | ประมาณ 1 ปี | ใน ประมาณ 1 ปี |
+| 2001-01-01T00:00:00.000Z | ประมาณ 1 ปี | ประมาณ 1 ปี | ใน ประมาณ 1 ปี |
+| 2000-06-01T00:00:00.000Z | 5 เดือน | 5 เดือน | ใน 5 เดือน |
+| 2000-03-01T00:00:00.000Z | 2 เดือน | 2 เดือน | ใน 2 เดือน |
+| 2000-02-01T00:00:00.000Z | ประมาณ 1 เดือน | ประมาณ 1 เดือน | ใน ประมาณ 1 เดือน |
+| 2000-01-15T00:00:00.000Z | 14 วัน | 14 วัน | ใน 14 วัน |
+| 2000-01-02T00:00:00.000Z | 1 วัน | 1 วัน | ใน 1 วัน |
+| 2000-01-01T06:00:00.000Z | ประมาณ 6 ชั่วโมง | ประมาณ 6 ชั่วโมง | ใน ประมาณ 6 ชั่วโมง |
+| 2000-01-01T01:00:00.000Z | ประมาณ 1 ชั่วโมง | ประมาณ 1 ชั่วโมง | ใน ประมาณ 1 ชั่วโมง |
+| 2000-01-01T00:45:00.000Z | ประมาณ 1 ชั่วโมง | ประมาณ 1 ชั่วโมง | ใน ประมาณ 1 ชั่วโมง |
+| 2000-01-01T00:30:00.000Z | 30 นาที | 30 นาที | ใน 30 นาที |
+| 2000-01-01T00:15:00.000Z | 15 นาที | 15 นาที | ใน 15 นาที |
+| 2000-01-01T00:01:00.000Z | 1 นาที | 1 นาที | ใน 1 นาที |
+| 2000-01-01T00:00:25.000Z | น้อยกว่า 1 นาที | ครึ่งนาที | ใน น้อยกว่า 1 นาที |
+| 2000-01-01T00:00:15.000Z | น้อยกว่า 1 นาที | น้อยกว่า 20 วินาที | ใน น้อยกว่า 1 นาที |
+| 2000-01-01T00:00:05.000Z | น้อยกว่า 1 นาที | น้อยกว่า 10 วินาที | ใน น้อยกว่า 1 นาที |
+| 2000-01-01T00:00:00.000Z | น้อยกว่า 1 นาที | น้อยกว่า 5 วินาที | น้อยกว่า 1 นาทีที่ผ่านมา |
+| 1999-12-31T23:59:55.000Z | น้อยกว่า 1 นาที | น้อยกว่า 10 วินาที | น้อยกว่า 1 นาทีที่ผ่านมา |
+| 1999-12-31T23:59:45.000Z | น้อยกว่า 1 นาที | น้อยกว่า 20 วินาที | น้อยกว่า 1 นาทีที่ผ่านมา |
+| 1999-12-31T23:59:35.000Z | น้อยกว่า 1 นาที | ครึ่งนาที | น้อยกว่า 1 นาทีที่ผ่านมา |
+| 1999-12-31T23:59:00.000Z | 1 นาที | 1 นาที | 1 นาทีที่ผ่านมา |
+| 1999-12-31T23:45:00.000Z | 15 นาที | 15 นาที | 15 นาทีที่ผ่านมา |
+| 1999-12-31T23:30:00.000Z | 30 นาที | 30 นาที | 30 นาทีที่ผ่านมา |
+| 1999-12-31T23:15:00.000Z | ประมาณ 1 ชั่วโมง | ประมาณ 1 ชั่วโมง | ประมาณ 1 ชั่วโมงที่ผ่านมา |
+| 1999-12-31T23:00:00.000Z | ประมาณ 1 ชั่วโมง | ประมาณ 1 ชั่วโมง | ประมาณ 1 ชั่วโมงที่ผ่านมา |
+| 1999-12-31T18:00:00.000Z | ประมาณ 6 ชั่วโมง | ประมาณ 6 ชั่วโมง | ประมาณ 6 ชั่วโมงที่ผ่านมา |
+| 1999-12-30T00:00:00.000Z | 2 วัน | 2 วัน | 2 วันที่ผ่านมา |
+| 1999-12-15T00:00:00.000Z | 17 วัน | 17 วัน | 17 วันที่ผ่านมา |
+| 1999-12-01T00:00:00.000Z | ประมาณ 1 เดือน | ประมาณ 1 เดือน | ประมาณ 1 เดือนที่ผ่านมา |
+| 1999-11-01T00:00:00.000Z | 2 เดือน | 2 เดือน | 2 เดือนที่ผ่านมา |
+| 1999-06-01T00:00:00.000Z | 7 เดือน | 7 เดือน | 7 เดือนที่ผ่านมา |
+| 1999-01-01T00:00:00.000Z | ประมาณ 1 ปี | ประมาณ 1 ปี | ประมาณ 1 ปีที่ผ่านมา |
+| 1998-12-01T00:00:00.000Z | ประมาณ 1 ปี | ประมาณ 1 ปี | ประมาณ 1 ปีที่ผ่านมา |
+| 1998-06-01T00:00:00.000Z | มากกว่า 1 ปี | มากกว่า 1 ปี | มากกว่า 1 ปีที่ผ่านมา |
+| 1998-01-01T00:00:00.000Z | ประมาณ 2 ปี | ประมาณ 2 ปี | ประมาณ 2 ปีที่ผ่านมา |
+| 1997-01-01T00:00:00.000Z | ประมาณ 3 ปี | ประมาณ 3 ปี | ประมาณ 3 ปีที่ผ่านมา |
+| 1996-01-01T00:00:00.000Z | ประมาณ 4 ปี | ประมาณ 4 ปี | ประมาณ 4 ปีที่ผ่านมา |
+| 1995-01-01T00:00:00.000Z | ประมาณ 5 ปี | ประมาณ 5 ปี | ประมาณ 5 ปีที่ผ่านมา |
+| 1994-01-01T00:00:00.000Z | ประมาณ 6 ปี | ประมาณ 6 ปี | ประมาณ 6 ปีที่ผ่านมา |
+
+## `formatDistanceStrict`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `addSuffix: true` | With forced unit (i.e. `hour`) |
+| ------------------------ | --------- | ------------------ | ------------------------------ |
+| 2006-01-01T00:00:00.000Z | 6 ปี | ใน 6 ปี | 52608 ชั่วโมง |
+| 2005-01-01T00:00:00.000Z | 5 ปี | ใน 5 ปี | 43848 ชั่วโมง |
+| 2004-01-01T00:00:00.000Z | 4 ปี | ใน 4 ปี | 35064 ชั่วโมง |
+| 2003-01-01T00:00:00.000Z | 3 ปี | ใน 3 ปี | 26304 ชั่วโมง |
+| 2002-01-01T00:00:00.000Z | 2 ปี | ใน 2 ปี | 17544 ชั่วโมง |
+| 2001-06-01T00:00:00.000Z | 1 ปี | ใน 1 ปี | 12408 ชั่วโมง |
+| 2001-02-01T00:00:00.000Z | 1 ปี | ใน 1 ปี | 9528 ชั่วโมง |
+| 2001-01-01T00:00:00.000Z | 1 ปี | ใน 1 ปี | 8784 ชั่วโมง |
+| 2000-06-01T00:00:00.000Z | 5 เดือน | ใน 5 เดือน | 3648 ชั่วโมง |
+| 2000-03-01T00:00:00.000Z | 2 เดือน | ใน 2 เดือน | 1440 ชั่วโมง |
+| 2000-02-01T00:00:00.000Z | 1 เดือน | ใน 1 เดือน | 744 ชั่วโมง |
+| 2000-01-15T00:00:00.000Z | 14 วัน | ใน 14 วัน | 336 ชั่วโมง |
+| 2000-01-02T00:00:00.000Z | 1 วัน | ใน 1 วัน | 24 ชั่วโมง |
+| 2000-01-01T06:00:00.000Z | 6 ชั่วโมง | ใน 6 ชั่วโมง | 6 ชั่วโมง |
+| 2000-01-01T01:00:00.000Z | 1 ชั่วโมง | ใน 1 ชั่วโมง | 1 ชั่วโมง |
+| 2000-01-01T00:45:00.000Z | 45 นาที | ใน 45 นาที | 1 ชั่วโมง |
+| 2000-01-01T00:30:00.000Z | 30 นาที | ใน 30 นาที | 1 ชั่วโมง |
+| 2000-01-01T00:15:00.000Z | 15 นาที | ใน 15 นาที | 0 ชั่วโมง |
+| 2000-01-01T00:01:00.000Z | 1 นาที | ใน 1 นาที | 0 ชั่วโมง |
+| 2000-01-01T00:00:25.000Z | 25 วินาที | ใน 25 วินาที | 0 ชั่วโมง |
+| 2000-01-01T00:00:15.000Z | 15 วินาที | ใน 15 วินาที | 0 ชั่วโมง |
+| 2000-01-01T00:00:05.000Z | 5 วินาที | ใน 5 วินาที | 0 ชั่วโมง |
+| 2000-01-01T00:00:00.000Z | 0 วินาที | 0 วินาทีที่ผ่านมา | 0 ชั่วโมง |
+| 1999-12-31T23:59:55.000Z | 5 วินาที | 5 วินาทีที่ผ่านมา | 0 ชั่วโมง |
+| 1999-12-31T23:59:45.000Z | 15 วินาที | 15 วินาทีที่ผ่านมา | 0 ชั่วโมง |
+| 1999-12-31T23:59:35.000Z | 25 วินาที | 25 วินาทีที่ผ่านมา | 0 ชั่วโมง |
+| 1999-12-31T23:59:00.000Z | 1 นาที | 1 นาทีที่ผ่านมา | 0 ชั่วโมง |
+| 1999-12-31T23:45:00.000Z | 15 นาที | 15 นาทีที่ผ่านมา | 0 ชั่วโมง |
+| 1999-12-31T23:30:00.000Z | 30 นาที | 30 นาทีที่ผ่านมา | 1 ชั่วโมง |
+| 1999-12-31T23:15:00.000Z | 45 นาที | 45 นาทีที่ผ่านมา | 1 ชั่วโมง |
+| 1999-12-31T23:00:00.000Z | 1 ชั่วโมง | 1 ชั่วโมงที่ผ่านมา | 1 ชั่วโมง |
+| 1999-12-31T18:00:00.000Z | 6 ชั่วโมง | 6 ชั่วโมงที่ผ่านมา | 6 ชั่วโมง |
+| 1999-12-30T00:00:00.000Z | 2 วัน | 2 วันที่ผ่านมา | 48 ชั่วโมง |
+| 1999-12-15T00:00:00.000Z | 17 วัน | 17 วันที่ผ่านมา | 408 ชั่วโมง |
+| 1999-12-01T00:00:00.000Z | 1 เดือน | 1 เดือนที่ผ่านมา | 744 ชั่วโมง |
+| 1999-11-01T00:00:00.000Z | 2 เดือน | 2 เดือนที่ผ่านมา | 1464 ชั่วโมง |
+| 1999-06-01T00:00:00.000Z | 7 เดือน | 7 เดือนที่ผ่านมา | 5136 ชั่วโมง |
+| 1999-01-01T00:00:00.000Z | 1 ปี | 1 ปีที่ผ่านมา | 8760 ชั่วโมง |
+| 1998-12-01T00:00:00.000Z | 1 ปี | 1 ปีที่ผ่านมา | 9504 ชั่วโมง |
+| 1998-06-01T00:00:00.000Z | 2 ปี | 2 ปีที่ผ่านมา | 13896 ชั่วโมง |
+| 1998-01-01T00:00:00.000Z | 2 ปี | 2 ปีที่ผ่านมา | 17520 ชั่วโมง |
+| 1997-01-01T00:00:00.000Z | 3 ปี | 3 ปีที่ผ่านมา | 26280 ชั่วโมง |
+| 1996-01-01T00:00:00.000Z | 4 ปี | 4 ปีที่ผ่านมา | 35064 ชั่วโมง |
+| 1995-01-01T00:00:00.000Z | 5 ปี | 5 ปีที่ผ่านมา | 43824 ชั่วโมง |
+| 1994-01-01T00:00:00.000Z | 6 ปี | 6 ปีที่ผ่านมา | 52584 ชั่วโมง |
+
+## `formatRelative`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result |
+| ------------------------ | ------------------------- |
+| 2000-01-10T00:00:00.000Z | 10/01/2000 |
+| 2000-01-05T00:00:00.000Z | พุธ เวลา 0:00 น. |
+| 2000-01-02T00:00:00.000Z | พรุ่งนี้เวลา 0:00 น. |
+| 2000-01-01T00:00:00.000Z | วันนี้เวลา 0:00 น. |
+| 1999-12-31T00:00:00.000Z | เมื่อวานนี้เวลา 0:00 น. |
+| 1999-12-27T00:00:00.000Z | จันทร์ที่แล้วเวลา 0:00 น. |
+| 1999-12-21T00:00:00.000Z | 21/12/1999 |
diff --git a/date-fns/src/locale/tr/_lib/formatDistance/index.js b/date-fns/src/locale/tr/_lib/formatDistance/index.js
new file mode 100644
index 0000000..7175bb7
--- /dev/null
+++ b/date-fns/src/locale/tr/_lib/formatDistance/index.js
@@ -0,0 +1,101 @@
+var formatDistanceLocale = {
+ lessThanXSeconds: {
+ one: 'bir saniyeden az',
+ other: '{{count}} saniyeden az'
+ },
+
+ xSeconds: {
+ one: '1 saniye',
+ other: '{{count}} saniye'
+ },
+
+ halfAMinute: 'yarım dakika',
+
+ lessThanXMinutes: {
+ one: 'bir dakikadan az',
+ other: '{{count}} dakikadan az'
+ },
+
+ xMinutes: {
+ one: '1 dakika',
+ other: '{{count}} dakika'
+ },
+
+ aboutXHours: {
+ one: 'yaklaşık 1 saat',
+ other: 'yaklaşık {{count}} saat'
+ },
+
+ xHours: {
+ one: '1 saat',
+ other: '{{count}} saat'
+ },
+
+ xDays: {
+ one: '1 gün',
+ other: '{{count}} gün'
+ },
+
+ aboutXWeeks: {
+ one: 'yaklaşık 1 hafta',
+ other: 'yaklaşık {{count}} hafta'
+ },
+
+ xWeeks: {
+ one: '1 hafta',
+ other: '{{count}} hafta'
+ },
+
+ aboutXMonths: {
+ one: 'yaklaşık 1 ay',
+ other: 'yaklaşık {{count}} ay'
+ },
+
+ xMonths: {
+ one: '1 ay',
+ other: '{{count}} ay'
+ },
+
+ aboutXYears: {
+ one: 'yaklaşık 1 yıl',
+ other: 'yaklaşık {{count}} yıl'
+ },
+
+ xYears: {
+ one: '1 yıl',
+ other: '{{count}} yıl'
+ },
+
+ overXYears: {
+ one: '1 yıldan fazla',
+ other: '{{count}} yıldan fazla'
+ },
+
+ almostXYears: {
+ one: 'neredeyse 1 yıl',
+ other: 'neredeyse {{count}} yıl'
+ }
+}
+
+export default function formatDistance(token, count, options) {
+ options = options || {}
+
+ var result
+ if (typeof formatDistanceLocale[token] === 'string') {
+ result = formatDistanceLocale[token]
+ } else if (count === 1) {
+ result = formatDistanceLocale[token].one
+ } else {
+ result = formatDistanceLocale[token].other.replace('{{count}}', count)
+ }
+
+ if (options.addSuffix) {
+ if (options.comparison > 0) {
+ return result + ' sonra'
+ } else {
+ return result + ' önce'
+ }
+ }
+
+ return result
+}
diff --git a/date-fns/src/locale/tr/_lib/formatLong/index.js b/date-fns/src/locale/tr/_lib/formatLong/index.js
new file mode 100644
index 0000000..2d2fa1d
--- /dev/null
+++ b/date-fns/src/locale/tr/_lib/formatLong/index.js
@@ -0,0 +1,41 @@
+import buildFormatLongFn from '../../../_lib/buildFormatLongFn/index'
+
+var dateFormats = {
+ full: 'd MMMM y EEEE',
+ long: 'd MMMM y',
+ medium: 'd MMM y',
+ short: 'dd.MM.yyyy'
+}
+
+var timeFormats = {
+ full: 'HH:mm:ss zzzz',
+ long: 'HH:mm:ss z',
+ medium: 'HH:mm:ss',
+ short: 'HH:mm'
+}
+
+var dateTimeFormats = {
+ full: "{{date}} 'saat' {{time}}",
+ long: "{{date}} 'saat' {{time}}",
+ medium: '{{date}}, {{time}}',
+ short: '{{date}}, {{time}}'
+}
+
+var formatLong = {
+ date: buildFormatLongFn({
+ formats: dateFormats,
+ defaultWidth: 'full'
+ }),
+
+ time: buildFormatLongFn({
+ formats: timeFormats,
+ defaultWidth: 'full'
+ }),
+
+ dateTime: buildFormatLongFn({
+ formats: dateTimeFormats,
+ defaultWidth: 'full'
+ })
+}
+
+export default formatLong
diff --git a/date-fns/src/locale/tr/_lib/formatRelative/index.js b/date-fns/src/locale/tr/_lib/formatRelative/index.js
new file mode 100644
index 0000000..24a3535
--- /dev/null
+++ b/date-fns/src/locale/tr/_lib/formatRelative/index.js
@@ -0,0 +1,12 @@
+var formatRelativeLocale = {
+ lastWeek: "'geçen hafta' eeee 'saat' p",
+ yesterday: "'dün saat' p",
+ today: "'bugün saat' p",
+ tomorrow: "'yarın saat' p",
+ nextWeek: "eeee 'saat' p",
+ other: 'P'
+}
+
+export default function formatRelative(token, _date, _baseDate, _options) {
+ return formatRelativeLocale[token]
+}
diff --git a/date-fns/src/locale/tr/_lib/localize/index.js b/date-fns/src/locale/tr/_lib/localize/index.js
new file mode 100644
index 0000000..1f58296
--- /dev/null
+++ b/date-fns/src/locale/tr/_lib/localize/index.js
@@ -0,0 +1,167 @@
+import buildLocalizeFn from '../../../_lib/buildLocalizeFn/index'
+
+var eraValues = {
+ abbreviated: ['MÖ', 'MS'],
+ narrow: ['MÖ', 'MS'],
+ wide: ['Milattan Önce', 'Milattan Sonra']
+}
+
+var quarterValues = {
+ narrow: ['1', '2', '3', '4'],
+ abbreviated: ['1Ç', '2Ç', '3Ç', '4Ç'],
+ wide: ['İlk çeyrek', 'İkinci Çeyrek', 'Üçüncü çeyrek', 'Son çeyrek']
+}
+
+var monthValues = {
+ narrow: ['O', 'Ş', 'M', 'N', 'M', 'H', 'T', 'A', 'E', 'E', 'K', 'A'],
+ abbreviated: [
+ 'Oca',
+ 'Şub',
+ 'Mar',
+ 'Nis',
+ 'May',
+ 'Haz',
+ 'Tem',
+ 'Ağu',
+ 'Eyl',
+ 'Eki',
+ 'Kas',
+ 'Ara'
+ ],
+ wide: [
+ 'Ocak',
+ 'Şubat',
+ 'Mart',
+ 'Nisan',
+ 'Mayıs',
+ 'Haziran',
+ 'Temmuz',
+ 'Ağustos',
+ 'Eylül',
+ 'Ekim',
+ 'Kasım',
+ 'Aralık'
+ ]
+}
+
+var dayValues = {
+ narrow: ['P', 'P', 'S', 'Ç', 'P', 'C', 'C'],
+ short: ['Pz', 'Pt', 'Sa', 'Ça', 'Pe', 'Cu', 'Ct'],
+ abbreviated: ['Paz', 'Pts', 'Sal', 'Çar', 'Per', 'Cum', 'Cts'],
+ wide: [
+ 'Pazar',
+ 'Pazartesi',
+ 'Salı',
+ 'Çarşamba',
+ 'Perşembe',
+ 'Cuma',
+ 'Cumartesi'
+ ]
+}
+
+var dayPeriodValues = {
+ narrow: {
+ am: 'öö',
+ pm: 'ös',
+ midnight: 'gy',
+ noon: 'ö',
+ morning: 'sa',
+ afternoon: 'ös',
+ evening: 'ak',
+ night: 'ge'
+ },
+ abbreviated: {
+ am: 'ÖÖ',
+ pm: 'ÖS',
+ midnight: 'gece yarısı',
+ noon: 'öğle',
+ morning: 'sabah',
+ afternoon: 'öğleden sonra',
+ evening: 'akşam',
+ night: 'gece'
+ },
+ wide: {
+ am: 'Ö.Ö.',
+ pm: 'Ö.S.',
+ midnight: 'gece yarısı',
+ noon: 'öğle',
+ morning: 'sabah',
+ afternoon: 'öğleden sonra',
+ evening: 'akşam',
+ night: 'gece'
+ }
+}
+
+var formattingDayPeriodValues = {
+ narrow: {
+ am: 'öö',
+ pm: 'ös',
+ midnight: 'gy',
+ noon: 'ö',
+ morning: 'sa',
+ afternoon: 'ös',
+ evening: 'ak',
+ night: 'ge'
+ },
+ abbreviated: {
+ am: 'ÖÖ',
+ pm: 'ÖS',
+ midnight: 'gece yarısı',
+ noon: 'öğlen',
+ morning: 'sabahleyin',
+ afternoon: 'öğleden sonra',
+ evening: 'akşamleyin',
+ night: 'geceleyin'
+ },
+ wide: {
+ am: 'ö.ö.',
+ pm: 'ö.s.',
+ midnight: 'gece yarısı',
+ noon: 'öğlen',
+ morning: 'sabahleyin',
+ afternoon: 'öğleden sonra',
+ evening: 'akşamleyin',
+ night: 'geceleyin'
+ }
+}
+
+function ordinalNumber(dirtyNumber, _dirtyOptions) {
+ var number = Number(dirtyNumber)
+ return number + '.'
+}
+
+var localize = {
+ ordinalNumber: ordinalNumber,
+
+ era: buildLocalizeFn({
+ values: eraValues,
+ defaultWidth: 'wide'
+ }),
+
+ quarter: buildLocalizeFn({
+ values: quarterValues,
+ defaultWidth: 'wide',
+ argumentCallback: function(quarter) {
+ return Number(quarter) - 1
+ }
+ }),
+
+ month: buildLocalizeFn({
+ values: monthValues,
+ defaultWidth: 'wide'
+ }),
+
+ day: buildLocalizeFn({
+ values: dayValues,
+ defaultWidth: 'wide'
+ }),
+
+ dayPeriod: buildLocalizeFn({
+ values: dayPeriodValues,
+ defaultWidth: 'wide',
+ formattingValues: formattingDayPeriodValues,
+ defaulFormattingWidth: 'wide'
+ })
+}
+
+export default localize
diff --git a/date-fns/src/locale/tr/_lib/match/index.js b/date-fns/src/locale/tr/_lib/match/index.js
new file mode 100644
index 0000000..9eacf0e
--- /dev/null
+++ b/date-fns/src/locale/tr/_lib/match/index.js
@@ -0,0 +1,153 @@
+import buildMatchPatternFn from '../../../_lib/buildMatchPatternFn/index'
+import buildMatchFn from '../../../_lib/buildMatchFn/index'
+
+var matchOrdinalNumberPattern = /^(\d+)(\.)?/i
+var parseOrdinalNumberPattern = /\d+/i
+
+var matchEraPatterns = {
+ narrow: /^(mö|ms)/i,
+ abbreviated: /^(mö|ms)/i,
+ wide: /^(milattan önce|milattan sonra)/i
+}
+var parseEraPatterns = {
+ any: [/(^mö|^milattan önce)/i, /(^ms|^milattan sonra)/i]
+}
+
+var matchQuarterPatterns = {
+ narrow: /^[1234]/i,
+ abbreviated: /^[1234]ç/i,
+ wide: /^((i|İ)lk|(i|İ)kinci|üçüncü|son) çeyrek/i
+}
+var parseQuarterPatterns = {
+ any: [/1/i, /2/i, /3/i, /4/i],
+ abbreviated: [/1ç/i, /2ç/i, /3ç/i, /4ç/i],
+ wide: [
+ /^(i|İ)lk çeyrek/i,
+ /(i|İ)kinci çeyrek/i,
+ /üçüncü çeyrek/i,
+ /son çeyrek/i
+ ]
+}
+
+var matchMonthPatterns = {
+ narrow: /^[oşmnhtaek]/i,
+ abbreviated: /^(oca|şub|mar|nis|may|haz|tem|ağu|eyl|eki|kas|ara)/i,
+ wide: /^(ocak|şubat|mart|nisan|mayıs|haziran|temmuz|ağustos|eylül|ekim|kasım|aralık)/i
+}
+var parseMonthPatterns = {
+ narrow: [
+ /^o/i,
+ /^ş/i,
+ /^m/i,
+ /^n/i,
+ /^m/i,
+ /^h/i,
+ /^t/i,
+ /^a/i,
+ /^e/i,
+ /^e/i,
+ /^k/i,
+ /^a/i
+ ],
+ any: [
+ /^o/i,
+ /^ş/i,
+ /^mar/i,
+ /^n/i,
+ /^may/i,
+ /^h/i,
+ /^t/i,
+ /^ağ/i,
+ /^ey/i,
+ /^ek/i,
+ /^k/i,
+ /^ar/i
+ ]
+}
+
+var matchDayPatterns = {
+ narrow: /^[psçc]/i,
+ short: /^(pz|pt|sa|ça|pe|cu|ct)/i,
+ abbreviated: /^(paz|pts|sal|çar|per|cum|cts)/i,
+ wide: /^(pazar|pazartesi|salı|çarşamba|perşembe|cuma|cumartesi)/i
+}
+var parseDayPatterns = {
+ narrow: [/^p/i, /^p/i, /^s/i, /^ç/i, /^p/i, /^c/i, /^c/i],
+ any: [/^pz/i, /^pt/i, /^sa/i, /^ça/i, /^pe/i, /^cu/i, /^ct/i],
+ wide: [
+ /^pazar/i,
+ /^pazartesi/i,
+ /^salı/i,
+ /^çarşamba/i,
+ /^perşembe/i,
+ /^cuma/i,
+ /cumartesi/i
+ ]
+}
+
+var matchDayPeriodPatterns = {
+ narrow: /^(öö|ös|gy|ö|sa|ös|ak|ge)/i,
+ any: /^(ö\.?\s?[ös]\.?|öğleden sonra|gece yarısı|öğle|(sabah|öğ|akşam|gece)(leyin))/i
+}
+var parseDayPeriodPatterns = {
+ any: {
+ am: /^ö\.?ö\.?/i,
+ pm: /^ö\.?s\.?/i,
+ midnight: /^(gy|gece yarısı)/i,
+ noon: /^öğ/i,
+ morning: /^sa/i,
+ afternoon: /^öğleden sonra/i,
+ evening: /^ak/i,
+ night: /^ge/i
+ }
+}
+
+var match = {
+ ordinalNumber: buildMatchPatternFn({
+ matchPattern: matchOrdinalNumberPattern,
+ parsePattern: parseOrdinalNumberPattern,
+ valueCallback: function(value) {
+ return parseInt(value, 10)
+ }
+ }),
+
+ era: buildMatchFn({
+ matchPatterns: matchEraPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseEraPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ quarter: buildMatchFn({
+ matchPatterns: matchQuarterPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseQuarterPatterns,
+ defaultParseWidth: 'any',
+ valueCallback: function(index) {
+ return index + 1
+ }
+ }),
+
+ month: buildMatchFn({
+ matchPatterns: matchMonthPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseMonthPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ day: buildMatchFn({
+ matchPatterns: matchDayPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseDayPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ dayPeriod: buildMatchFn({
+ matchPatterns: matchDayPeriodPatterns,
+ defaultMatchWidth: 'any',
+ parsePatterns: parseDayPeriodPatterns,
+ defaultParseWidth: 'any'
+ })
+}
+
+export default match
diff --git a/date-fns/src/locale/tr/index.d.ts b/date-fns/src/locale/tr/index.d.ts
new file mode 100644
index 0000000..d4c2e0a
--- /dev/null
+++ b/date-fns/src/locale/tr/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { tr } from 'date-fns/locale'
+export default tr
diff --git a/date-fns/src/locale/tr/index.js b/date-fns/src/locale/tr/index.js
new file mode 100644
index 0000000..aacae82
--- /dev/null
+++ b/date-fns/src/locale/tr/index.js
@@ -0,0 +1,33 @@
+import formatDistance from './_lib/formatDistance/index'
+import formatLong from './_lib/formatLong/index'
+import formatRelative from './_lib/formatRelative/index'
+import localize from './_lib/localize/index'
+import match from './_lib/match/index'
+
+/**
+ * @type {Locale}
+ * @category Locales
+ * @summary Turkish locale.
+ * @language Turkish
+ * @iso-639-2 tur
+ * @author Alpcan Aydın [@alpcanaydin]{@link https://github.com/alpcanaydin}
+ * @author Berkay Sargın [@berkaey]{@link https://github.com/berkaey}
+ * @author Ismail Demirbilek [@dbtek]{@link https://github.com/dbtek}
+ * @author İsmail Kayar [@ikayar]{@link https://github.com/ikayar}
+ *
+ *
+ */
+var locale = {
+ code: 'tr',
+ formatDistance: formatDistance,
+ formatLong: formatLong,
+ formatRelative: formatRelative,
+ localize: localize,
+ match: match,
+ options: {
+ weekStartsOn: 1 /* Monday */,
+ firstWeekContainsDate: 1
+ }
+}
+
+export default locale
diff --git a/date-fns/src/locale/tr/index.js.flow b/date-fns/src/locale/tr/index.js.flow
new file mode 100644
index 0000000..b9dfe66
--- /dev/null
+++ b/date-fns/src/locale/tr/index.js.flow
@@ -0,0 +1,35 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+declare module.exports: Locale
diff --git a/date-fns/src/locale/tr/snapshot.md b/date-fns/src/locale/tr/snapshot.md
new file mode 100644
index 0000000..6475e6a
--- /dev/null
+++ b/date-fns/src/locale/tr/snapshot.md
@@ -0,0 +1,304 @@
+# Turkish (tr) locale
+
+## `format` and `parse`
+
+| Title | Token string | Date | `format` result | `parse` result |
+| ------------------------------- | ------------ | ------------------------ | ---------------------------------------------- | ------------------------ |
+| Calendar year | yo | 1987-02-11T12:13:14.015Z | 1987. | 1987-01-01T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 5. | 0005-01-01T00:00:00.000Z |
+| Local week-numbering year | Yo | 1987-02-11T12:13:14.015Z | 1987. | 1986-12-29T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 5. | 0004-12-27T00:00:00.000Z |
+| Quarter (formatting) | Qo | 2019-01-01T12:13:14.015Z | 1. | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2. | 2019-04-01T00:00:00.000Z |
+| | QQQ | 2019-01-01T12:13:14.015Z | 1Ç | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2Ç | 2019-04-01T00:00:00.000Z |
+| | QQQQ | 2019-01-01T12:13:14.015Z | İlk çeyrek | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | İkinci Çeyrek | 2019-04-01T00:00:00.000Z |
+| | QQQQQ | 2019-01-01T12:13:14.015Z | 1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2 | 2019-04-01T00:00:00.000Z |
+| Quarter (stand-alone) | qo | 2019-01-01T12:13:14.015Z | 1. | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2. | 2019-04-01T00:00:00.000Z |
+| | qqq | 2019-01-01T12:13:14.015Z | 1Ç | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2Ç | 2019-04-01T00:00:00.000Z |
+| | qqqq | 2019-01-01T12:13:14.015Z | İlk çeyrek | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | İkinci Çeyrek | 2019-04-01T00:00:00.000Z |
+| Month (formatting) | Mo | 2019-02-11T12:13:14.015Z | 2. | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7. | 2019-07-01T00:00:00.000Z |
+| | MMM | 2019-02-11T12:13:14.015Z | Şub | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | Tem | 2019-07-01T00:00:00.000Z |
+| | MMMM | 2019-02-11T12:13:14.015Z | Şubat | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | Temmuz | 2019-07-01T00:00:00.000Z |
+| | MMMMM | 2019-02-11T12:13:14.015Z | Ş | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | T | 2019-07-01T00:00:00.000Z |
+| Month (stand-alone) | Lo | 2019-02-11T12:13:14.015Z | 2. | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7. | 2019-07-01T00:00:00.000Z |
+| | LLL | 2019-02-11T12:13:14.015Z | Şub | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | Tem | 2019-07-01T00:00:00.000Z |
+| | LLLL | 2019-02-11T12:13:14.015Z | Şubat | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | Temmuz | 2019-07-01T00:00:00.000Z |
+| | LLLLL | 2019-02-11T12:13:14.015Z | Ş | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | T | 2019-07-01T00:00:00.000Z |
+| Local week of year | wo | 2019-01-01T12:13:14.015Z | 1. | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48. | 2019-11-25T00:00:00.000Z |
+| ISO week of year | Io | 2019-01-01T12:13:14.015Z | 1. | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48. | 2019-11-25T00:00:00.000Z |
+| Day of month | do | 2019-02-11T12:13:14.015Z | 11. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-28T12:13:14.015Z | 28. | 2019-02-28T00:00:00.000Z |
+| Day of year | Do | 2019-02-11T12:13:14.015Z | 42. | 2019-02-11T00:00:00.000Z |
+| | | 2019-12-31T12:13:14.015Z | 365. | 2019-12-31T00:00:00.000Z |
+| Day of week (formatting) | E | 2019-02-11T12:13:14.015Z | Pts | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Cum | 2019-02-15T00:00:00.000Z |
+| | EE | 2019-02-11T12:13:14.015Z | Pts | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Cum | 2019-02-15T00:00:00.000Z |
+| | EEE | 2019-02-11T12:13:14.015Z | Pts | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Cum | 2019-02-15T00:00:00.000Z |
+| | EEEE | 2019-02-11T12:13:14.015Z | Pazartesi | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | Cuma | 2019-02-15T00:00:00.000Z |
+| | EEEEE | 2019-02-11T12:13:14.015Z | P | 2019-02-17T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | C | 2019-02-15T00:00:00.000Z |
+| | EEEEEE | 2019-02-11T12:13:14.015Z | Pt | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Cu | 2019-02-15T00:00:00.000Z |
+| ISO day of week (formatting) | io | 2019-02-11T12:13:14.015Z | 1. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5. | 2019-02-15T00:00:00.000Z |
+| | iii | 2019-02-11T12:13:14.015Z | Pts | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Cum | 2019-02-15T00:00:00.000Z |
+| | iiii | 2019-02-11T12:13:14.015Z | Pazartesi | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | Cuma | 2019-02-15T00:00:00.000Z |
+| | iiiii | 2019-02-11T12:13:14.015Z | P | 2019-02-17T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | C | 2019-02-15T00:00:00.000Z |
+| | iiiiii | 2019-02-11T12:13:14.015Z | Pt | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Cu | 2019-02-15T00:00:00.000Z |
+| Local day of week (formatting) | eo | 2019-02-11T12:13:14.015Z | 1. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5. | 2019-02-15T00:00:00.000Z |
+| | eee | 2019-02-11T12:13:14.015Z | Pts | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Cum | 2019-02-15T00:00:00.000Z |
+| | eeee | 2019-02-11T12:13:14.015Z | Pazartesi | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | Cuma | 2019-02-15T00:00:00.000Z |
+| | eeeee | 2019-02-11T12:13:14.015Z | P | 2019-02-17T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | C | 2019-02-15T00:00:00.000Z |
+| | eeeeee | 2019-02-11T12:13:14.015Z | Pt | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Cu | 2019-02-15T00:00:00.000Z |
+| Local day of week (stand-alone) | co | 2019-02-11T12:13:14.015Z | 1. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5. | 2019-02-15T00:00:00.000Z |
+| | ccc | 2019-02-11T12:13:14.015Z | Pts | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Cum | 2019-02-15T00:00:00.000Z |
+| | cccc | 2019-02-11T12:13:14.015Z | Pazartesi | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | Cuma | 2019-02-15T00:00:00.000Z |
+| | ccccc | 2019-02-11T12:13:14.015Z | P | 2019-02-17T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | C | 2019-02-15T00:00:00.000Z |
+| | cccccc | 2019-02-11T12:13:14.015Z | Pt | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Cu | 2019-02-15T00:00:00.000Z |
+| AM, PM | a | 2019-02-11T11:13:14.015Z | ÖÖ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | ÖS | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | ÖS | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ÖÖ | 2019-02-11T00:00:00.000Z |
+| | aa | 2019-02-11T11:13:14.015Z | ÖÖ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | ÖS | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | ÖS | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ÖÖ | 2019-02-11T00:00:00.000Z |
+| | aaa | 2019-02-11T11:13:14.015Z | öö | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | ös | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | ös | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | öö | 2019-02-11T00:00:00.000Z |
+| | aaaa | 2019-02-11T11:13:14.015Z | ö.ö. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | ö.s. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | ö.s. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ö.ö. | 2019-02-11T00:00:00.000Z |
+| | aaaaa | 2019-02-11T11:13:14.015Z | öö | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | ös | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | ös | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | öö | 2019-02-11T00:00:00.000Z |
+| AM, PM, noon, midnight | b | 2019-02-11T11:13:14.015Z | ÖÖ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | ÖS | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | ÖS | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ÖÖ | 2019-02-11T00:00:00.000Z |
+| | bb | 2019-02-11T11:13:14.015Z | ÖÖ | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | ÖS | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | ÖS | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ÖÖ | 2019-02-11T00:00:00.000Z |
+| | bbb | 2019-02-11T11:13:14.015Z | öö | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | ös | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | ös | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | öö | 2019-02-11T00:00:00.000Z |
+| | bbbb | 2019-02-11T11:13:14.015Z | ö.ö. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | ö.s. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | ö.s. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ö.ö. | 2019-02-11T00:00:00.000Z |
+| | bbbbb | 2019-02-11T11:13:14.015Z | öö | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | ös | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | ös | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | öö | 2019-02-11T00:00:00.000Z |
+| Flexible day period | B | 2019-02-11T11:13:14.015Z | sabahleyin | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | öğleden sonra | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | akşamleyin | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | geceleyin | 2019-02-11T00:00:00.000Z |
+| | BB | 2019-02-11T11:13:14.015Z | sabahleyin | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | öğleden sonra | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | akşamleyin | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | geceleyin | 2019-02-11T00:00:00.000Z |
+| | BBB | 2019-02-11T11:13:14.015Z | sabahleyin | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | öğleden sonra | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | akşamleyin | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | geceleyin | 2019-02-11T00:00:00.000Z |
+| | BBBB | 2019-02-11T11:13:14.015Z | sabahleyin | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | öğleden sonra | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | akşamleyin | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | geceleyin | 2019-02-11T00:00:00.000Z |
+| | BBBBB | 2019-02-11T11:13:14.015Z | sa | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | ös | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | ak | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ge | 2019-02-11T00:00:00.000Z |
+| Hour [1-12] | ho | 2019-02-11T11:13:14.015Z | 11. | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11. | 2019-02-11T23:00:00.000Z |
+| Hour [0-23] | Ho | 2019-02-11T11:13:14.015Z | 11. | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23. | 2019-02-11T23:00:00.000Z |
+| Hour [0-11] | Ko | 2019-02-11T11:13:14.015Z | 11. | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11. | 2019-02-11T23:00:00.000Z |
+| Hour [1-24] | ko | 2019-02-11T11:13:14.015Z | 11. | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23. | 2019-02-11T23:00:00.000Z |
+| Minute | mo | 2019-01-01T12:01:14.015Z | 1. | 2019-01-01T12:01:00.000Z |
+| | | 2019-04-01T12:55:14.015Z | 55. | 2019-04-01T12:55:00.000Z |
+| Second | so | 2019-01-01T12:13:01.015Z | 1. | 2019-01-01T12:13:01.000Z |
+| | | 2019-04-01T12:13:55.015Z | 55. | 2019-04-01T12:13:55.000Z |
+| Long localized date | P | 1987-02-11T12:13:14.015Z | 11.02.1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29.05.1453 | 1453-05-29T00:00:00.000Z |
+| | PP | 1987-02-11T12:13:14.015Z | 11 Şub 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 May 1453 | 1453-05-29T00:00:00.000Z |
+| | PPP | 1987-02-11T12:13:14.015Z | 11 Şubat 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 Mayıs 1453 | 1453-05-29T00:00:00.000Z |
+| | PPPP | 1987-02-11T12:13:14.015Z | 11 Şubat 1987 Çarşamba | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 Mayıs 1453 Pazar | 1453-05-29T00:00:00.000Z |
+| Long localized time | p | 1987-02-11T12:13:14.015Z | 12:13 | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 23:59 | 1453-05-29T23:59:00.000Z |
+| | pp | 1987-02-11T12:13:14.015Z | 12:13:14 | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 | 1453-05-29T23:59:59.000Z |
+| | ppp | 1987-02-11T12:13:14.015Z | 12:13:14 GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 GMT+0 | Errored |
+| | pppp | 1987-02-11T12:13:14.015Z | 12:13:14 GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 GMT+00:00 | Errored |
+| Combination of date and time | Pp | 1987-02-11T12:13:14.015Z | 11.02.1987, 12:13 | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29.05.1453, 23:59 | 1453-05-29T23:59:00.000Z |
+| | PPpp | 1987-02-11T12:13:14.015Z | 11 Şub 1987, 12:13:14 | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 May 1453, 23:59:59 | 1453-05-29T23:59:59.000Z |
+| | PPPppp | 1987-02-11T12:13:14.015Z | 11 Şubat 1987 saat 12:13:14 GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 29 Mayıs 1453 saat 23:59:59 GMT+0 | Errored |
+| | PPPPpppp | 1987-02-11T12:13:14.015Z | 11 Şubat 1987 Çarşamba saat 12:13:14 GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 29 Mayıs 1453 Pazar saat 23:59:59 GMT+00:00 | Errored |
+
+## `formatDistance`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `includeSeconds: true` | `addSuffix: true` |
+| ------------------------ | ---------------- | ---------------------- | ---------------------- |
+| 2006-01-01T00:00:00.000Z | yaklaşık 6 yıl | yaklaşık 6 yıl | yaklaşık 6 yıl sonra |
+| 2005-01-01T00:00:00.000Z | yaklaşık 5 yıl | yaklaşık 5 yıl | yaklaşık 5 yıl sonra |
+| 2004-01-01T00:00:00.000Z | yaklaşık 4 yıl | yaklaşık 4 yıl | yaklaşık 4 yıl sonra |
+| 2003-01-01T00:00:00.000Z | yaklaşık 3 yıl | yaklaşık 3 yıl | yaklaşık 3 yıl sonra |
+| 2002-01-01T00:00:00.000Z | yaklaşık 2 yıl | yaklaşık 2 yıl | yaklaşık 2 yıl sonra |
+| 2001-06-01T00:00:00.000Z | 1 yıldan fazla | 1 yıldan fazla | 1 yıldan fazla sonra |
+| 2001-02-01T00:00:00.000Z | yaklaşık 1 yıl | yaklaşık 1 yıl | yaklaşık 1 yıl sonra |
+| 2001-01-01T00:00:00.000Z | yaklaşık 1 yıl | yaklaşık 1 yıl | yaklaşık 1 yıl sonra |
+| 2000-06-01T00:00:00.000Z | 5 ay | 5 ay | 5 ay sonra |
+| 2000-03-01T00:00:00.000Z | 2 ay | 2 ay | 2 ay sonra |
+| 2000-02-01T00:00:00.000Z | yaklaşık 1 ay | yaklaşık 1 ay | yaklaşık 1 ay sonra |
+| 2000-01-15T00:00:00.000Z | 14 gün | 14 gün | 14 gün sonra |
+| 2000-01-02T00:00:00.000Z | 1 gün | 1 gün | 1 gün sonra |
+| 2000-01-01T06:00:00.000Z | yaklaşık 6 saat | yaklaşık 6 saat | yaklaşık 6 saat sonra |
+| 2000-01-01T01:00:00.000Z | yaklaşık 1 saat | yaklaşık 1 saat | yaklaşık 1 saat sonra |
+| 2000-01-01T00:45:00.000Z | yaklaşık 1 saat | yaklaşık 1 saat | yaklaşık 1 saat sonra |
+| 2000-01-01T00:30:00.000Z | 30 dakika | 30 dakika | 30 dakika sonra |
+| 2000-01-01T00:15:00.000Z | 15 dakika | 15 dakika | 15 dakika sonra |
+| 2000-01-01T00:01:00.000Z | 1 dakika | 1 dakika | 1 dakika sonra |
+| 2000-01-01T00:00:25.000Z | bir dakikadan az | yarım dakika | bir dakikadan az sonra |
+| 2000-01-01T00:00:15.000Z | bir dakikadan az | 20 saniyeden az | bir dakikadan az sonra |
+| 2000-01-01T00:00:05.000Z | bir dakikadan az | 10 saniyeden az | bir dakikadan az sonra |
+| 2000-01-01T00:00:00.000Z | bir dakikadan az | 5 saniyeden az | bir dakikadan az önce |
+| 1999-12-31T23:59:55.000Z | bir dakikadan az | 10 saniyeden az | bir dakikadan az önce |
+| 1999-12-31T23:59:45.000Z | bir dakikadan az | 20 saniyeden az | bir dakikadan az önce |
+| 1999-12-31T23:59:35.000Z | bir dakikadan az | yarım dakika | bir dakikadan az önce |
+| 1999-12-31T23:59:00.000Z | 1 dakika | 1 dakika | 1 dakika önce |
+| 1999-12-31T23:45:00.000Z | 15 dakika | 15 dakika | 15 dakika önce |
+| 1999-12-31T23:30:00.000Z | 30 dakika | 30 dakika | 30 dakika önce |
+| 1999-12-31T23:15:00.000Z | yaklaşık 1 saat | yaklaşık 1 saat | yaklaşık 1 saat önce |
+| 1999-12-31T23:00:00.000Z | yaklaşık 1 saat | yaklaşık 1 saat | yaklaşık 1 saat önce |
+| 1999-12-31T18:00:00.000Z | yaklaşık 6 saat | yaklaşık 6 saat | yaklaşık 6 saat önce |
+| 1999-12-30T00:00:00.000Z | 2 gün | 2 gün | 2 gün önce |
+| 1999-12-15T00:00:00.000Z | 17 gün | 17 gün | 17 gün önce |
+| 1999-12-01T00:00:00.000Z | yaklaşık 1 ay | yaklaşık 1 ay | yaklaşık 1 ay önce |
+| 1999-11-01T00:00:00.000Z | 2 ay | 2 ay | 2 ay önce |
+| 1999-06-01T00:00:00.000Z | 7 ay | 7 ay | 7 ay önce |
+| 1999-01-01T00:00:00.000Z | yaklaşık 1 yıl | yaklaşık 1 yıl | yaklaşık 1 yıl önce |
+| 1998-12-01T00:00:00.000Z | yaklaşık 1 yıl | yaklaşık 1 yıl | yaklaşık 1 yıl önce |
+| 1998-06-01T00:00:00.000Z | 1 yıldan fazla | 1 yıldan fazla | 1 yıldan fazla önce |
+| 1998-01-01T00:00:00.000Z | yaklaşık 2 yıl | yaklaşık 2 yıl | yaklaşık 2 yıl önce |
+| 1997-01-01T00:00:00.000Z | yaklaşık 3 yıl | yaklaşık 3 yıl | yaklaşık 3 yıl önce |
+| 1996-01-01T00:00:00.000Z | yaklaşık 4 yıl | yaklaşık 4 yıl | yaklaşık 4 yıl önce |
+| 1995-01-01T00:00:00.000Z | yaklaşık 5 yıl | yaklaşık 5 yıl | yaklaşık 5 yıl önce |
+| 1994-01-01T00:00:00.000Z | yaklaşık 6 yıl | yaklaşık 6 yıl | yaklaşık 6 yıl önce |
+
+## `formatDistanceStrict`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `addSuffix: true` | With forced unit (i.e. `hour`) |
+| ------------------------ | --------- | ----------------- | ------------------------------ |
+| 2006-01-01T00:00:00.000Z | 6 yıl | 6 yıl sonra | 52608 saat |
+| 2005-01-01T00:00:00.000Z | 5 yıl | 5 yıl sonra | 43848 saat |
+| 2004-01-01T00:00:00.000Z | 4 yıl | 4 yıl sonra | 35064 saat |
+| 2003-01-01T00:00:00.000Z | 3 yıl | 3 yıl sonra | 26304 saat |
+| 2002-01-01T00:00:00.000Z | 2 yıl | 2 yıl sonra | 17544 saat |
+| 2001-06-01T00:00:00.000Z | 1 yıl | 1 yıl sonra | 12408 saat |
+| 2001-02-01T00:00:00.000Z | 1 yıl | 1 yıl sonra | 9528 saat |
+| 2001-01-01T00:00:00.000Z | 1 yıl | 1 yıl sonra | 8784 saat |
+| 2000-06-01T00:00:00.000Z | 5 ay | 5 ay sonra | 3648 saat |
+| 2000-03-01T00:00:00.000Z | 2 ay | 2 ay sonra | 1440 saat |
+| 2000-02-01T00:00:00.000Z | 1 ay | 1 ay sonra | 744 saat |
+| 2000-01-15T00:00:00.000Z | 14 gün | 14 gün sonra | 336 saat |
+| 2000-01-02T00:00:00.000Z | 1 gün | 1 gün sonra | 24 saat |
+| 2000-01-01T06:00:00.000Z | 6 saat | 6 saat sonra | 6 saat |
+| 2000-01-01T01:00:00.000Z | 1 saat | 1 saat sonra | 1 saat |
+| 2000-01-01T00:45:00.000Z | 45 dakika | 45 dakika sonra | 1 saat |
+| 2000-01-01T00:30:00.000Z | 30 dakika | 30 dakika sonra | 1 saat |
+| 2000-01-01T00:15:00.000Z | 15 dakika | 15 dakika sonra | 0 saat |
+| 2000-01-01T00:01:00.000Z | 1 dakika | 1 dakika sonra | 0 saat |
+| 2000-01-01T00:00:25.000Z | 25 saniye | 25 saniye sonra | 0 saat |
+| 2000-01-01T00:00:15.000Z | 15 saniye | 15 saniye sonra | 0 saat |
+| 2000-01-01T00:00:05.000Z | 5 saniye | 5 saniye sonra | 0 saat |
+| 2000-01-01T00:00:00.000Z | 0 saniye | 0 saniye önce | 0 saat |
+| 1999-12-31T23:59:55.000Z | 5 saniye | 5 saniye önce | 0 saat |
+| 1999-12-31T23:59:45.000Z | 15 saniye | 15 saniye önce | 0 saat |
+| 1999-12-31T23:59:35.000Z | 25 saniye | 25 saniye önce | 0 saat |
+| 1999-12-31T23:59:00.000Z | 1 dakika | 1 dakika önce | 0 saat |
+| 1999-12-31T23:45:00.000Z | 15 dakika | 15 dakika önce | 0 saat |
+| 1999-12-31T23:30:00.000Z | 30 dakika | 30 dakika önce | 1 saat |
+| 1999-12-31T23:15:00.000Z | 45 dakika | 45 dakika önce | 1 saat |
+| 1999-12-31T23:00:00.000Z | 1 saat | 1 saat önce | 1 saat |
+| 1999-12-31T18:00:00.000Z | 6 saat | 6 saat önce | 6 saat |
+| 1999-12-30T00:00:00.000Z | 2 gün | 2 gün önce | 48 saat |
+| 1999-12-15T00:00:00.000Z | 17 gün | 17 gün önce | 408 saat |
+| 1999-12-01T00:00:00.000Z | 1 ay | 1 ay önce | 744 saat |
+| 1999-11-01T00:00:00.000Z | 2 ay | 2 ay önce | 1464 saat |
+| 1999-06-01T00:00:00.000Z | 7 ay | 7 ay önce | 5136 saat |
+| 1999-01-01T00:00:00.000Z | 1 yıl | 1 yıl önce | 8760 saat |
+| 1998-12-01T00:00:00.000Z | 1 yıl | 1 yıl önce | 9504 saat |
+| 1998-06-01T00:00:00.000Z | 2 yıl | 2 yıl önce | 13896 saat |
+| 1998-01-01T00:00:00.000Z | 2 yıl | 2 yıl önce | 17520 saat |
+| 1997-01-01T00:00:00.000Z | 3 yıl | 3 yıl önce | 26280 saat |
+| 1996-01-01T00:00:00.000Z | 4 yıl | 4 yıl önce | 35064 saat |
+| 1995-01-01T00:00:00.000Z | 5 yıl | 5 yıl önce | 43824 saat |
+| 1994-01-01T00:00:00.000Z | 6 yıl | 6 yıl önce | 52584 saat |
+
+## `formatRelative`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result |
+| ------------------------ | -------------------------------- |
+| 2000-01-10T00:00:00.000Z | 10.01.2000 |
+| 2000-01-05T00:00:00.000Z | Çarşamba saat 00:00 |
+| 2000-01-02T00:00:00.000Z | yarın saat 00:00 |
+| 2000-01-01T00:00:00.000Z | bugün saat 00:00 |
+| 1999-12-31T00:00:00.000Z | dün saat 00:00 |
+| 1999-12-27T00:00:00.000Z | geçen hafta Pazartesi saat 00:00 |
+| 1999-12-21T00:00:00.000Z | 21.12.1999 |
diff --git a/date-fns/src/locale/types.ts b/date-fns/src/locale/types.ts
new file mode 100644
index 0000000..b82c227
--- /dev/null
+++ b/date-fns/src/locale/types.ts
@@ -0,0 +1,105 @@
+export interface Locale {
+ code: string
+ formatDistance: FormatDistanceFn
+ formatRelative: FormatRelativeFn
+ localize: Localize
+ formatLong: FormatLong
+ match: Match
+ options?: LocaleOptions
+}
+
+export interface LocaleOptions {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7
+}
+
+export type FormatDistanceFn = (
+ token:
+ | 'lessThanXSeconds'
+ | 'xSeconds'
+ | 'halfAMinute'
+ | 'lessThanXMinutes'
+ | 'xMinutes'
+ | 'aboutXHours'
+ | 'xHours'
+ | 'xDays'
+ | 'aboutXMonths'
+ | 'xMonths'
+ | 'aboutXYears'
+ | 'xYears'
+ | 'overXYears'
+ | 'almostXYears',
+ count: number,
+ options?: {
+ addSuffix?: boolean
+ comparison?: -1 | 0 | 1
+ }
+) => string
+
+export type FormatRelativeFn = (
+ token: 'lastWeek' | 'yesterday' | 'today' | 'tomorrow' | 'nextWeek' | 'other',
+ date: Date | number,
+ baseDate: Date | number,
+ options?: { weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 }
+) => string
+
+export type LocalizeFn<TValue> = (
+ value: TValue,
+ options?: {
+ width?: 'narrow' | 'short' | 'abbreviated' | 'wide'
+ context?: 'formatting' | 'standalone'
+ }
+) => string
+
+export interface Localize {
+ ordinalNumber: LocalizeFn<number>
+ era: LocalizeFn<0 | 1>
+ quarter: LocalizeFn<1 | 2 | 3 | 4>
+ month: LocalizeFn<0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11>
+ day: LocalizeFn<0 | 1 | 2 | 3 | 4 | 5 | 6>
+ dayPeriod: LocalizeFn<
+ | 'am'
+ | 'pm'
+ | 'midnight'
+ | 'noon'
+ | 'morning'
+ | 'afternoon'
+ | 'evening'
+ | 'night'
+ >
+}
+
+export type FormatLongFn = (options?: {
+ width?: 'full' | 'long' | 'medium' | 'short'
+}) => string
+
+export interface FormatLong {
+ date: FormatLongFn
+ time: FormatLongFn
+ dateTime: FormatLongFn
+}
+
+export type MatchFn<TResult> = (
+ str: string,
+ options?: {
+ width?: 'narrow' | 'short' | 'abbreviated' | 'wide'
+ }
+) => TResult
+
+export interface Match {
+ ordinalNumber: MatchFn<number>
+ era: MatchFn<0 | 1>
+ quarter: MatchFn<1 | 2 | 3 | 4>
+ month: MatchFn<0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11>
+ day: MatchFn<0 | 1 | 2 | 3 | 4 | 5 | 6>
+ dayPeriod: MatchFn<
+ | 'am'
+ | 'pm'
+ | 'midnight'
+ | 'noon'
+ | 'morning'
+ | 'afternoon'
+ | 'evening'
+ | 'night'
+ >
+}
diff --git a/date-fns/src/locale/ug/_lib/formatDistance/index.js b/date-fns/src/locale/ug/_lib/formatDistance/index.js
new file mode 100644
index 0000000..4e5906a
--- /dev/null
+++ b/date-fns/src/locale/ug/_lib/formatDistance/index.js
@@ -0,0 +1,101 @@
+var formatDistanceLocale = {
+ lessThanXSeconds: {
+ one: 'بىر سىكۇنت ئىچىدە',
+ other: 'سىكۇنت ئىچىدە {{count}}'
+ },
+
+ xSeconds: {
+ one: 'بىر سىكۇنت',
+ other: 'سىكۇنت {{count}}'
+ },
+
+ halfAMinute: 'يىرىم مىنۇت',
+
+ lessThanXMinutes: {
+ one: 'بىر مىنۇت ئىچىدە',
+ other: 'مىنۇت ئىچىدە {{count}}'
+ },
+
+ xMinutes: {
+ one: 'بىر مىنۇت',
+ other: 'مىنۇت {{count}}'
+ },
+
+ aboutXHours: {
+ one: 'تەخمىنەن بىر سائەت',
+ other: 'سائەت {{count}} تەخمىنەن'
+ },
+
+ xHours: {
+ one: 'بىر سائەت',
+ other: 'سائەت {{count}}'
+ },
+
+ xDays: {
+ one: 'بىر كۈن',
+ other: 'كۈن {{count}}'
+ },
+
+ aboutXWeeks: {
+ one: 'تەخمىنەن بىرھەپتە',
+ other: 'ھەپتە {{count}} تەخمىنەن'
+ },
+
+ xWeeks: {
+ one: 'بىرھەپتە',
+ other: 'ھەپتە {{count}}'
+ },
+
+ aboutXMonths: {
+ one: 'تەخمىنەن بىر ئاي',
+ other: 'ئاي {{count}} تەخمىنەن'
+ },
+
+ xMonths: {
+ one: 'بىر ئاي',
+ other: 'ئاي {{count}}'
+ },
+
+ aboutXYears: {
+ one: 'تەخمىنەن بىر يىل',
+ other: 'يىل {{count}} تەخمىنەن'
+ },
+
+ xYears: {
+ one: 'بىر يىل',
+ other: 'يىل {{count}}'
+ },
+
+ overXYears: {
+ one: 'بىر يىلدىن ئارتۇق',
+ other: 'يىلدىن ئارتۇق {{count}}'
+ },
+
+ almostXYears: {
+ one: 'ئاساسەن بىر يىل',
+ other: 'يىل {{count}} ئاساسەن'
+ }
+}
+
+export default function formatDistance(token, count, options) {
+ options = options || {}
+
+ var result
+ if (typeof formatDistanceLocale[token] === 'string') {
+ result = formatDistanceLocale[token]
+ } else if (count === 1) {
+ result = formatDistanceLocale[token].one
+ } else {
+ result = formatDistanceLocale[token].other.replace('{{count}}', count)
+ }
+
+ if (options.addSuffix) {
+ if (options.comparison > 0) {
+ return result
+ } else {
+ return result + ' بولدى'
+ }
+ }
+
+ return result
+}
diff --git a/date-fns/src/locale/ug/_lib/formatLong/index.js b/date-fns/src/locale/ug/_lib/formatLong/index.js
new file mode 100644
index 0000000..4d9f0fc
--- /dev/null
+++ b/date-fns/src/locale/ug/_lib/formatLong/index.js
@@ -0,0 +1,41 @@
+import buildFormatLongFn from '../../../_lib/buildFormatLongFn/index'
+
+var dateFormats = {
+ full: 'EEEE, MMMM do, y',
+ long: 'MMMM do, y',
+ medium: 'MMM d, y',
+ short: 'MM/dd/yyyy'
+}
+
+var timeFormats = {
+ full: 'h:mm:ss a zzzz',
+ long: 'h:mm:ss a z',
+ medium: 'h:mm:ss a',
+ short: 'h:mm a'
+}
+
+var dateTimeFormats = {
+ full: "{{date}} 'دە' {{time}}",
+ long: "{{date}} 'دە' {{time}}",
+ medium: '{{date}}, {{time}}',
+ short: '{{date}}, {{time}}'
+}
+
+var formatLong = {
+ date: buildFormatLongFn({
+ formats: dateFormats,
+ defaultWidth: 'full'
+ }),
+
+ time: buildFormatLongFn({
+ formats: timeFormats,
+ defaultWidth: 'full'
+ }),
+
+ dateTime: buildFormatLongFn({
+ formats: dateTimeFormats,
+ defaultWidth: 'full'
+ })
+}
+
+export default formatLong
diff --git a/date-fns/src/locale/ug/_lib/formatRelative/index.js b/date-fns/src/locale/ug/_lib/formatRelative/index.js
new file mode 100644
index 0000000..849585f
--- /dev/null
+++ b/date-fns/src/locale/ug/_lib/formatRelative/index.js
@@ -0,0 +1,12 @@
+var formatRelativeLocale = {
+ lastWeek: "'ئ‍ۆتكەن' eeee 'دە' p",
+ yesterday: "'تۈنۈگۈن دە' p",
+ today: "'بۈگۈن دە' p",
+ tomorrow: "'ئەتە دە' p",
+ nextWeek: "eeee 'دە' p",
+ other: 'P'
+}
+
+export default function formatRelative(token, _date, _baseDate, _options) {
+ return formatRelativeLocale[token]
+}
diff --git a/date-fns/src/locale/ug/_lib/localize/index.js b/date-fns/src/locale/ug/_lib/localize/index.js
new file mode 100644
index 0000000..73da2b9
--- /dev/null
+++ b/date-fns/src/locale/ug/_lib/localize/index.js
@@ -0,0 +1,177 @@
+import buildLocalizeFn from '../../../_lib/buildLocalizeFn/index'
+
+var eraValues = {
+ narrow: ['ب', 'ك'],
+ abbreviated: ['ب', 'ك'],
+ wide: ['مىيلادىدىن بۇرۇن', 'مىيلادىدىن كىيىن']
+}
+
+var quarterValues = {
+ narrow: ['1', '2', '3', '4'],
+ abbreviated: ['1', '2', '3', '4'],
+ wide: ['بىرىنجى چارەك', 'ئىككىنجى چارەك', 'ئۈچىنجى چارەك', 'تۆتىنجى چارەك']
+}
+
+// Note: in English, the names of days of the week and months are capitalized.
+// If you are making a new locale based on this one, check if the same is true for the language you're working on.
+// Generally, formatted dates should look like they are in the middle of a sentence,
+// e.g. in Spanish language the weekdays and months should be in the lowercase.
+var monthValues = {
+ narrow: ['ي', 'ف', 'م', 'ا', 'م', 'ى', 'ى', 'ا', 'س', 'ۆ', 'ن', 'د'],
+ abbreviated: [
+ 'يانۋار',
+ 'فېۋىرال',
+ 'مارت',
+ 'ئاپرىل',
+ 'ماي',
+ 'ئىيۇن',
+ 'ئىيول',
+ 'ئاۋغۇست',
+ 'سىنتەبىر',
+ 'ئۆكتەبىر',
+ 'نويابىر',
+ 'دىكابىر'
+ ],
+ wide: [
+ 'يانۋار',
+ 'فېۋىرال',
+ 'مارت',
+ 'ئاپرىل',
+ 'ماي',
+ 'ئىيۇن',
+ 'ئىيول',
+ 'ئاۋغۇست',
+ 'سىنتەبىر',
+ 'ئۆكتەبىر',
+ 'نويابىر',
+ 'دىكابىر'
+ ]
+}
+
+var dayValues = {
+ narrow: ['ي', 'د', 'س', 'چ', 'پ', 'ج', 'ش'],
+ short: ['ي', 'د', 'س', 'چ', 'پ', 'ج', 'ش'],
+ abbreviated: [
+ 'يەكشەنبە',
+ 'دۈشەنبە',
+ 'سەيشەنبە',
+ 'چارشەنبە',
+ 'پەيشەنبە',
+ 'جۈمە',
+ 'شەنبە'
+ ],
+ wide: [
+ 'يەكشەنبە',
+ 'دۈشەنبە',
+ 'سەيشەنبە',
+ 'چارشەنبە',
+ 'پەيشەنبە',
+ 'جۈمە',
+ 'شەنبە'
+ ]
+}
+
+var dayPeriodValues = {
+ narrow: {
+ am: 'ئە',
+ pm: 'چ',
+ midnight: 'ك',
+ noon: 'چ',
+ morning: 'ئەتىگەن',
+ afternoon: 'چۈشتىن كىيىن',
+ evening: 'ئاخشىم',
+ night: 'كىچە'
+ },
+ abbreviated: {
+ am: 'ئە',
+ pm: 'چ',
+ midnight: 'ك',
+ noon: 'چ',
+ morning: 'ئەتىگەن',
+ afternoon: 'چۈشتىن كىيىن',
+ evening: 'ئاخشىم',
+ night: 'كىچە'
+ },
+ wide: {
+ am: 'ئە',
+ pm: 'چ',
+ midnight: 'ك',
+ noon: 'چ',
+ morning: 'ئەتىگەن',
+ afternoon: 'چۈشتىن كىيىن',
+ evening: 'ئاخشىم',
+ night: 'كىچە'
+ }
+}
+var formattingDayPeriodValues = {
+ narrow: {
+ am: 'ئە',
+ pm: 'چ',
+ midnight: 'ك',
+ noon: 'چ',
+ morning: 'ئەتىگەندە',
+ afternoon: 'چۈشتىن كىيىن',
+ evening: 'ئاخشامدا',
+ night: 'كىچىدە'
+ },
+ abbreviated: {
+ am: 'ئە',
+ pm: 'چ',
+ midnight: 'ك',
+ noon: 'چ',
+ morning: 'ئەتىگەندە',
+ afternoon: 'چۈشتىن كىيىن',
+ evening: 'ئاخشامدا',
+ night: 'كىچىدە'
+ },
+ wide: {
+ am: 'ئە',
+ pm: 'چ',
+ midnight: 'ك',
+ noon: 'چ',
+ morning: 'ئەتىگەندە',
+ afternoon: 'چۈشتىن كىيىن',
+ evening: 'ئاخشامدا',
+ night: 'كىچىدە'
+ }
+}
+
+function ordinalNumber(dirtyNumber, _dirtyOptions) {
+ return String(dirtyNumber)
+}
+
+var localize = {
+ ordinalNumber: ordinalNumber,
+
+ era: buildLocalizeFn({
+ values: eraValues,
+ defaultWidth: 'wide'
+ }),
+
+ quarter: buildLocalizeFn({
+ values: quarterValues,
+ defaultWidth: 'wide',
+ argumentCallback: function(quarter) {
+ return Number(quarter) - 1
+ }
+ }),
+
+ month: buildLocalizeFn({
+ values: monthValues,
+ defaultWidth: 'wide'
+ }),
+
+ day: buildLocalizeFn({
+ values: dayValues,
+ defaultWidth: 'wide'
+ }),
+
+ dayPeriod: buildLocalizeFn({
+ values: dayPeriodValues,
+ defaultWidth: 'wide',
+ formattingValues: formattingDayPeriodValues,
+ defaultFormattingWidth: 'wide'
+ })
+}
+
+export default localize
diff --git a/date-fns/src/locale/ug/_lib/match/index.js b/date-fns/src/locale/ug/_lib/match/index.js
new file mode 100644
index 0000000..76b722d
--- /dev/null
+++ b/date-fns/src/locale/ug/_lib/match/index.js
@@ -0,0 +1,136 @@
+import buildMatchPatternFn from '../../../_lib/buildMatchPatternFn/index'
+import buildMatchFn from '../../../_lib/buildMatchFn/index'
+
+var matchOrdinalNumberPattern = /^(\d+)(th|st|nd|rd)?/i
+var parseOrdinalNumberPattern = /\d+/i
+
+var matchEraPatterns = {
+ narrow: /^(ب|ك)/i,
+ wide: /^(مىيلادىدىن بۇرۇن|مىيلادىدىن كىيىن)/i
+}
+var parseEraPatterns = {
+ any: [/^بۇرۇن/i, /^كىيىن/i]
+}
+
+var matchQuarterPatterns = {
+ narrow: /^[1234]/i,
+ abbreviated: /^چ[1234]/i,
+ wide: /^چارەك [1234]/i
+}
+var parseQuarterPatterns = {
+ any: [/1/i, /2/i, /3/i, /4/i]
+}
+
+var matchMonthPatterns = {
+ narrow: /^[يفمئامئ‍ئاسۆند]/i,
+ abbreviated: /^(يانۋار|فېۋىرال|مارت|ئاپرىل|ماي|ئىيۇن|ئىيول|ئاۋغۇست|سىنتەبىر|ئۆكتەبىر|نويابىر|دىكابىر)/i,
+ wide: /^(يانۋار|فېۋىرال|مارت|ئاپرىل|ماي|ئىيۇن|ئىيول|ئاۋغۇست|سىنتەبىر|ئۆكتەبىر|نويابىر|دىكابىر)/i
+}
+var parseMonthPatterns = {
+ narrow: [
+ /^ي/i,
+ /^ف/i,
+ /^م/i,
+ /^ا/i,
+ /^م/i,
+ /^ى‍/i,
+ /^ى‍/i,
+ /^ا‍/i,
+ /^س/i,
+ /^ۆ/i,
+ /^ن/i,
+ /^د/i
+ ],
+ any: [
+ /^يان/i,
+ /^فېۋ/i,
+ /^مار/i,
+ /^ئاپ/i,
+ /^ماي/i,
+ /^ئىيۇن/i,
+ /^ئىيول/i,
+ /^ئاۋ/i,
+ /^سىن/i,
+ /^ئۆك/i,
+ /^نوي/i,
+ /^دىك/i
+ ]
+}
+
+var matchDayPatterns = {
+ narrow: /^[دسچپجشي]/i,
+ short: /^(يە|دۈ|سە|چا|پە|جۈ|شە)/i,
+ abbreviated: /^(يە|دۈ|سە|چا|پە|جۈ|شە)/i,
+ wide: /^(يەكشەنبە|دۈشەنبە|سەيشەنبە|چارشەنبە|پەيشەنبە|جۈمە|شەنبە)/i
+}
+var parseDayPatterns = {
+ narrow: [/^ي/i, /^د/i, /^س/i, /^چ/i, /^پ/i, /^ج/i, /^ش/i],
+ any: [/^ي/i, /^د/i, /^س/i, /^چ/i, /^پ/i, /^ج/i, /^ش/i]
+}
+
+var matchDayPeriodPatterns = {
+ narrow: /^(ئە|چ|ك|چ|(دە|ئەتىگەن) ( ئە‍|چۈشتىن كىيىن|ئاخشىم|كىچە))/i,
+ any: /^(ئە|چ|ك|چ|(دە|ئەتىگەن) ( ئە‍|چۈشتىن كىيىن|ئاخشىم|كىچە))/i
+}
+var parseDayPeriodPatterns = {
+ any: {
+ am: /^ئە/i,
+ pm: /^چ/i,
+ midnight: /^ك/i,
+ noon: /^چ/i,
+ morning: /ئەتىگەن/i,
+ afternoon: /چۈشتىن كىيىن/i,
+ evening: /ئاخشىم/i,
+ night: /كىچە/i
+ }
+}
+
+var match = {
+ ordinalNumber: buildMatchPatternFn({
+ matchPattern: matchOrdinalNumberPattern,
+ parsePattern: parseOrdinalNumberPattern,
+ valueCallback: function(value) {
+ return parseInt(value, 10)
+ }
+ }),
+
+ era: buildMatchFn({
+ matchPatterns: matchEraPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseEraPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ quarter: buildMatchFn({
+ matchPatterns: matchQuarterPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseQuarterPatterns,
+ defaultParseWidth: 'any',
+ valueCallback: function(index) {
+ return index + 1
+ }
+ }),
+
+ month: buildMatchFn({
+ matchPatterns: matchMonthPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseMonthPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ day: buildMatchFn({
+ matchPatterns: matchDayPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseDayPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ dayPeriod: buildMatchFn({
+ matchPatterns: matchDayPeriodPatterns,
+ defaultMatchWidth: 'any',
+ parsePatterns: parseDayPeriodPatterns,
+ defaultParseWidth: 'any'
+ })
+}
+
+export default match
diff --git a/date-fns/src/locale/ug/index.d.ts b/date-fns/src/locale/ug/index.d.ts
new file mode 100644
index 0000000..a67a679
--- /dev/null
+++ b/date-fns/src/locale/ug/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { ug } from 'date-fns/locale'
+export default ug
diff --git a/date-fns/src/locale/ug/index.js b/date-fns/src/locale/ug/index.js
new file mode 100644
index 0000000..63b4cf1
--- /dev/null
+++ b/date-fns/src/locale/ug/index.js
@@ -0,0 +1,28 @@
+import formatDistance from './_lib/formatDistance/index'
+import formatLong from './_lib/formatLong/index'
+import formatRelative from './_lib/formatRelative/index'
+import localize from './_lib/localize/index'
+import match from './_lib/match/index'
+
+/**
+ * @type {Locale}
+ * @category Locales
+ * @summary Uighur locale
+ * @language Uighur
+ * @iso-639-2 uig
+ * @author Abduwaly M. [@abduwaly]{@link https://github.com/abduwaly}
+ */
+var locale = {
+ code: 'ug',
+ formatDistance: formatDistance,
+ formatLong: formatLong,
+ formatRelative: formatRelative,
+ localize: localize,
+ match: match,
+ options: {
+ weekStartsOn: 0 /* Sunday */,
+ firstWeekContainsDate: 1
+ }
+}
+
+export default locale
diff --git a/date-fns/src/locale/ug/index.js.flow b/date-fns/src/locale/ug/index.js.flow
new file mode 100644
index 0000000..b9dfe66
--- /dev/null
+++ b/date-fns/src/locale/ug/index.js.flow
@@ -0,0 +1,35 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+declare module.exports: Locale
diff --git a/date-fns/src/locale/ug/snapshot.md b/date-fns/src/locale/ug/snapshot.md
new file mode 100644
index 0000000..1eb8440
--- /dev/null
+++ b/date-fns/src/locale/ug/snapshot.md
@@ -0,0 +1,304 @@
+# Uighur (ug) locale
+
+## `format` and `parse`
+
+| Title | Token string | Date | `format` result | `parse` result |
+| ------------------------------- | ------------ | ------------------------ | -------------------------------------------------- | ------------------------ |
+| Calendar year | yo | 1987-02-11T12:13:14.015Z | 1987 | 1987-01-01T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 5 | 0005-01-01T00:00:00.000Z |
+| Local week-numbering year | Yo | 1987-02-11T12:13:14.015Z | 1987 | 1986-12-28T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 5 | 0004-12-26T00:00:00.000Z |
+| Quarter (formatting) | Qo | 2019-01-01T12:13:14.015Z | 1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2 | 2019-04-01T00:00:00.000Z |
+| | QQQ | 2019-01-01T12:13:14.015Z | 1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2 | 2019-04-01T00:00:00.000Z |
+| | QQQQ | 2019-01-01T12:13:14.015Z | بىرىنجى چارەك | Invalid Date |
+| | | 2019-04-01T12:13:14.015Z | ئىككىنجى چارەك | Invalid Date |
+| | QQQQQ | 2019-01-01T12:13:14.015Z | 1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2 | 2019-04-01T00:00:00.000Z |
+| Quarter (stand-alone) | qo | 2019-01-01T12:13:14.015Z | 1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2 | 2019-04-01T00:00:00.000Z |
+| | qqq | 2019-01-01T12:13:14.015Z | 1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2 | 2019-04-01T00:00:00.000Z |
+| | qqqq | 2019-01-01T12:13:14.015Z | بىرىنجى چارەك | Invalid Date |
+| | | 2019-04-01T12:13:14.015Z | ئىككىنجى چارەك | Invalid Date |
+| Month (formatting) | Mo | 2019-02-11T12:13:14.015Z | 2 | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7 | 2019-07-01T00:00:00.000Z |
+| | MMM | 2019-02-11T12:13:14.015Z | فېۋىرال | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | ئىيول | 2019-07-01T00:00:00.000Z |
+| | MMMM | 2019-02-11T12:13:14.015Z | فېۋىرال | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | ئىيول | 2019-07-01T00:00:00.000Z |
+| | MMMMM | 2019-02-11T12:13:14.015Z | ف | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | ى | Invalid Date |
+| Month (stand-alone) | Lo | 2019-02-11T12:13:14.015Z | 2 | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7 | 2019-07-01T00:00:00.000Z |
+| | LLL | 2019-02-11T12:13:14.015Z | فېۋىرال | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | ئىيول | 2019-07-01T00:00:00.000Z |
+| | LLLL | 2019-02-11T12:13:14.015Z | فېۋىرال | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | ئىيول | 2019-07-01T00:00:00.000Z |
+| | LLLLL | 2019-02-11T12:13:14.015Z | ف | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | ى | Invalid Date |
+| Local week of year | wo | 2019-01-01T12:13:14.015Z | 1 | 2018-12-30T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 49 | 2019-12-01T00:00:00.000Z |
+| ISO week of year | Io | 2019-01-01T12:13:14.015Z | 1 | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48 | 2019-11-25T00:00:00.000Z |
+| Day of month | do | 2019-02-11T12:13:14.015Z | 11 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-28T12:13:14.015Z | 28 | 2019-02-28T00:00:00.000Z |
+| Day of year | Do | 2019-02-11T12:13:14.015Z | 42 | 2019-02-11T00:00:00.000Z |
+| | | 2019-12-31T12:13:14.015Z | 365 | 2019-12-31T00:00:00.000Z |
+| Day of week (formatting) | E | 2019-02-11T12:13:14.015Z | دۈشەنبە | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | جۈمە | Invalid Date |
+| | EE | 2019-02-11T12:13:14.015Z | دۈشەنبە | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | جۈمە | Invalid Date |
+| | EEE | 2019-02-11T12:13:14.015Z | دۈشەنبە | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | جۈمە | Invalid Date |
+| | EEEE | 2019-02-11T12:13:14.015Z | دۈشەنبە | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | جۈمە | 2019-02-15T00:00:00.000Z |
+| | EEEEE | 2019-02-11T12:13:14.015Z | د | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ج | 2019-02-15T00:00:00.000Z |
+| | EEEEEE | 2019-02-11T12:13:14.015Z | د | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ج | 2019-02-15T00:00:00.000Z |
+| ISO day of week (formatting) | io | 2019-02-11T12:13:14.015Z | 1 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5 | 2019-02-15T00:00:00.000Z |
+| | iii | 2019-02-11T12:13:14.015Z | دۈشەنبە | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | جۈمە | Invalid Date |
+| | iiii | 2019-02-11T12:13:14.015Z | دۈشەنبە | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | جۈمە | 2019-02-15T00:00:00.000Z |
+| | iiiii | 2019-02-11T12:13:14.015Z | د | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ج | 2019-02-15T00:00:00.000Z |
+| | iiiiii | 2019-02-11T12:13:14.015Z | د | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ج | 2019-02-15T00:00:00.000Z |
+| Local day of week (formatting) | eo | 2019-02-11T12:13:14.015Z | 2 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 6 | 2019-02-15T00:00:00.000Z |
+| | eee | 2019-02-11T12:13:14.015Z | دۈشەنبە | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | جۈمە | Invalid Date |
+| | eeee | 2019-02-11T12:13:14.015Z | دۈشەنبە | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | جۈمە | 2019-02-15T00:00:00.000Z |
+| | eeeee | 2019-02-11T12:13:14.015Z | د | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ج | 2019-02-15T00:00:00.000Z |
+| | eeeeee | 2019-02-11T12:13:14.015Z | د | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ج | 2019-02-15T00:00:00.000Z |
+| Local day of week (stand-alone) | co | 2019-02-11T12:13:14.015Z | 2 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 6 | 2019-02-15T00:00:00.000Z |
+| | ccc | 2019-02-11T12:13:14.015Z | دۈشەنبە | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | جۈمە | Invalid Date |
+| | cccc | 2019-02-11T12:13:14.015Z | دۈشەنبە | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | جۈمە | 2019-02-15T00:00:00.000Z |
+| | ccccc | 2019-02-11T12:13:14.015Z | د | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ج | 2019-02-15T00:00:00.000Z |
+| | cccccc | 2019-02-11T12:13:14.015Z | د | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | ج | 2019-02-15T00:00:00.000Z |
+| AM, PM | a | 2019-02-11T11:13:14.015Z | ئە | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | چ | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | چ | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ئە | 2019-02-11T00:00:00.000Z |
+| | aa | 2019-02-11T11:13:14.015Z | ئە | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | چ | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | چ | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ئە | 2019-02-11T00:00:00.000Z |
+| | aaa | 2019-02-11T11:13:14.015Z | ئە | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | چ | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | چ | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ئە | 2019-02-11T00:00:00.000Z |
+| | aaaa | 2019-02-11T11:13:14.015Z | ئە | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | چ | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | چ | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ئە | 2019-02-11T00:00:00.000Z |
+| | aaaaa | 2019-02-11T11:13:14.015Z | ئە | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | چ | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | چ | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ئە | 2019-02-11T00:00:00.000Z |
+| AM, PM, noon, midnight | b | 2019-02-11T11:13:14.015Z | ئە | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | چ | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | چ | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ئە | 2019-02-11T00:00:00.000Z |
+| | bb | 2019-02-11T11:13:14.015Z | ئە | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | چ | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | چ | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ئە | 2019-02-11T00:00:00.000Z |
+| | bbb | 2019-02-11T11:13:14.015Z | ئە | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | چ | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | چ | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ئە | 2019-02-11T00:00:00.000Z |
+| | bbbb | 2019-02-11T11:13:14.015Z | ئە | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | چ | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | چ | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ئە | 2019-02-11T00:00:00.000Z |
+| | bbbbb | 2019-02-11T11:13:14.015Z | ئە | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | چ | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | چ | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ئە | 2019-02-11T00:00:00.000Z |
+| Flexible day period | B | 2019-02-11T11:13:14.015Z | ئەتىگەندە | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | چۈشتىن كىيىن | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | ئاخشامدا | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | كىچىدە | Invalid Date |
+| | BB | 2019-02-11T11:13:14.015Z | ئەتىگەندە | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | چۈشتىن كىيىن | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | ئاخشامدا | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | كىچىدە | Invalid Date |
+| | BBB | 2019-02-11T11:13:14.015Z | ئەتىگەندە | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | چۈشتىن كىيىن | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | ئاخشامدا | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | كىچىدە | Invalid Date |
+| | BBBB | 2019-02-11T11:13:14.015Z | ئەتىگەندە | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | چۈشتىن كىيىن | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | ئاخشامدا | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | كىچىدە | Invalid Date |
+| | BBBBB | 2019-02-11T11:13:14.015Z | ئەتىگەندە | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | چۈشتىن كىيىن | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | ئاخشامدا | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | كىچىدە | Invalid Date |
+| Hour [1-12] | ho | 2019-02-11T11:13:14.015Z | 11 | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11 | 2019-02-11T23:00:00.000Z |
+| Hour [0-23] | Ho | 2019-02-11T11:13:14.015Z | 11 | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23 | 2019-02-11T23:00:00.000Z |
+| Hour [0-11] | Ko | 2019-02-11T11:13:14.015Z | 11 | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11 | 2019-02-11T23:00:00.000Z |
+| Hour [1-24] | ko | 2019-02-11T11:13:14.015Z | 11 | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23 | 2019-02-11T23:00:00.000Z |
+| Minute | mo | 2019-01-01T12:01:14.015Z | 1 | 2019-01-01T12:01:00.000Z |
+| | | 2019-04-01T12:55:14.015Z | 55 | 2019-04-01T12:55:00.000Z |
+| Second | so | 2019-01-01T12:13:01.015Z | 1 | 2019-01-01T12:13:01.000Z |
+| | | 2019-04-01T12:13:55.015Z | 55 | 2019-04-01T12:13:55.000Z |
+| Long localized date | P | 1987-02-11T12:13:14.015Z | 02/11/1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 05/29/1453 | 1453-05-29T00:00:00.000Z |
+| | PP | 1987-02-11T12:13:14.015Z | فېۋىرال 11, 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | ماي 29, 1453 | 1453-05-29T00:00:00.000Z |
+| | PPP | 1987-02-11T12:13:14.015Z | فېۋىرال 11, 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | ماي 29, 1453 | 1453-05-29T00:00:00.000Z |
+| | PPPP | 1987-02-11T12:13:14.015Z | چارشەنبە, فېۋىرال 11, 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | يەكشەنبە, ماي 29, 1453 | 1453-05-29T00:00:00.000Z |
+| Long localized time | p | 1987-02-11T12:13:14.015Z | 12:13 چ | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 11:59 چ | 1453-05-29T23:59:00.000Z |
+| | pp | 1987-02-11T12:13:14.015Z | 12:13:14 چ | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 11:59:59 چ | 1453-05-29T23:59:59.000Z |
+| | ppp | 1987-02-11T12:13:14.015Z | 12:13:14 چ GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 11:59:59 چ GMT+0 | Errored |
+| | pppp | 1987-02-11T12:13:14.015Z | 12:13:14 چ GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 11:59:59 چ GMT+00:00 | Errored |
+| Combination of date and time | Pp | 1987-02-11T12:13:14.015Z | 02/11/1987, 12:13 چ | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 05/29/1453, 11:59 چ | 1453-05-29T23:59:00.000Z |
+| | PPpp | 1987-02-11T12:13:14.015Z | فېۋىرال 11, 1987, 12:13:14 چ | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | ماي 29, 1453, 11:59:59 چ | 1453-05-29T23:59:59.000Z |
+| | PPPppp | 1987-02-11T12:13:14.015Z | فېۋىرال 11, 1987 دە 12:13:14 چ GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | ماي 29, 1453 دە 11:59:59 چ GMT+0 | Errored |
+| | PPPPpppp | 1987-02-11T12:13:14.015Z | چارشەنبە, فېۋىرال 11, 1987 دە 12:13:14 چ GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | يەكشەنبە, ماي 29, 1453 دە 11:59:59 چ GMT+00:00 | Errored |
+
+## `formatDistance`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `includeSeconds: true` | `addSuffix: true` |
+| ------------------------ | ------------------ | ---------------------- | ------------------------ |
+| 2006-01-01T00:00:00.000Z | يىل 6 تەخمىنەن | يىل 6 تەخمىنەن | يىل 6 تەخمىنەن |
+| 2005-01-01T00:00:00.000Z | يىل 5 تەخمىنەن | يىل 5 تەخمىنەن | يىل 5 تەخمىنەن |
+| 2004-01-01T00:00:00.000Z | يىل 4 تەخمىنەن | يىل 4 تەخمىنەن | يىل 4 تەخمىنەن |
+| 2003-01-01T00:00:00.000Z | يىل 3 تەخمىنەن | يىل 3 تەخمىنەن | يىل 3 تەخمىنەن |
+| 2002-01-01T00:00:00.000Z | يىل 2 تەخمىنەن | يىل 2 تەخمىنەن | يىل 2 تەخمىنەن |
+| 2001-06-01T00:00:00.000Z | بىر يىلدىن ئارتۇق | بىر يىلدىن ئارتۇق | بىر يىلدىن ئارتۇق |
+| 2001-02-01T00:00:00.000Z | تەخمىنەن بىر يىل | تەخمىنەن بىر يىل | تەخمىنەن بىر يىل |
+| 2001-01-01T00:00:00.000Z | تەخمىنەن بىر يىل | تەخمىنەن بىر يىل | تەخمىنەن بىر يىل |
+| 2000-06-01T00:00:00.000Z | ئاي 5 | ئاي 5 | ئاي 5 |
+| 2000-03-01T00:00:00.000Z | ئاي 2 | ئاي 2 | ئاي 2 |
+| 2000-02-01T00:00:00.000Z | تەخمىنەن بىر ئاي | تەخمىنەن بىر ئاي | تەخمىنەن بىر ئاي |
+| 2000-01-15T00:00:00.000Z | كۈن 14 | كۈن 14 | كۈن 14 |
+| 2000-01-02T00:00:00.000Z | بىر كۈن | بىر كۈن | بىر كۈن |
+| 2000-01-01T06:00:00.000Z | سائەت 6 تەخمىنەن | سائەت 6 تەخمىنەن | سائەت 6 تەخمىنەن |
+| 2000-01-01T01:00:00.000Z | تەخمىنەن بىر سائەت | تەخمىنەن بىر سائەت | تەخمىنەن بىر سائەت |
+| 2000-01-01T00:45:00.000Z | تەخمىنەن بىر سائەت | تەخمىنەن بىر سائەت | تەخمىنەن بىر سائەت |
+| 2000-01-01T00:30:00.000Z | مىنۇت 30 | مىنۇت 30 | مىنۇت 30 |
+| 2000-01-01T00:15:00.000Z | مىنۇت 15 | مىنۇت 15 | مىنۇت 15 |
+| 2000-01-01T00:01:00.000Z | بىر مىنۇت | بىر مىنۇت | بىر مىنۇت |
+| 2000-01-01T00:00:25.000Z | بىر مىنۇت ئىچىدە | يىرىم مىنۇت | بىر مىنۇت ئىچىدە |
+| 2000-01-01T00:00:15.000Z | بىر مىنۇت ئىچىدە | سىكۇنت ئىچىدە 20 | بىر مىنۇت ئىچىدە |
+| 2000-01-01T00:00:05.000Z | بىر مىنۇت ئىچىدە | سىكۇنت ئىچىدە 10 | بىر مىنۇت ئىچىدە |
+| 2000-01-01T00:00:00.000Z | بىر مىنۇت ئىچىدە | سىكۇنت ئىچىدە 5 | بىر مىنۇت ئىچىدە بولدى |
+| 1999-12-31T23:59:55.000Z | بىر مىنۇت ئىچىدە | سىكۇنت ئىچىدە 10 | بىر مىنۇت ئىچىدە بولدى |
+| 1999-12-31T23:59:45.000Z | بىر مىنۇت ئىچىدە | سىكۇنت ئىچىدە 20 | بىر مىنۇت ئىچىدە بولدى |
+| 1999-12-31T23:59:35.000Z | بىر مىنۇت ئىچىدە | يىرىم مىنۇت | بىر مىنۇت ئىچىدە بولدى |
+| 1999-12-31T23:59:00.000Z | بىر مىنۇت | بىر مىنۇت | بىر مىنۇت بولدى |
+| 1999-12-31T23:45:00.000Z | مىنۇت 15 | مىنۇت 15 | مىنۇت 15 بولدى |
+| 1999-12-31T23:30:00.000Z | مىنۇت 30 | مىنۇت 30 | مىنۇت 30 بولدى |
+| 1999-12-31T23:15:00.000Z | تەخمىنەن بىر سائەت | تەخمىنەن بىر سائەت | تەخمىنەن بىر سائەت بولدى |
+| 1999-12-31T23:00:00.000Z | تەخمىنەن بىر سائەت | تەخمىنەن بىر سائەت | تەخمىنەن بىر سائەت بولدى |
+| 1999-12-31T18:00:00.000Z | سائەت 6 تەخمىنەن | سائەت 6 تەخمىنەن | سائەت 6 تەخمىنەن بولدى |
+| 1999-12-30T00:00:00.000Z | كۈن 2 | كۈن 2 | كۈن 2 بولدى |
+| 1999-12-15T00:00:00.000Z | كۈن 17 | كۈن 17 | كۈن 17 بولدى |
+| 1999-12-01T00:00:00.000Z | تەخمىنەن بىر ئاي | تەخمىنەن بىر ئاي | تەخمىنەن بىر ئاي بولدى |
+| 1999-11-01T00:00:00.000Z | ئاي 2 | ئاي 2 | ئاي 2 بولدى |
+| 1999-06-01T00:00:00.000Z | ئاي 7 | ئاي 7 | ئاي 7 بولدى |
+| 1999-01-01T00:00:00.000Z | تەخمىنەن بىر يىل | تەخمىنەن بىر يىل | تەخمىنەن بىر يىل بولدى |
+| 1998-12-01T00:00:00.000Z | تەخمىنەن بىر يىل | تەخمىنەن بىر يىل | تەخمىنەن بىر يىل بولدى |
+| 1998-06-01T00:00:00.000Z | بىر يىلدىن ئارتۇق | بىر يىلدىن ئارتۇق | بىر يىلدىن ئارتۇق بولدى |
+| 1998-01-01T00:00:00.000Z | يىل 2 تەخمىنەن | يىل 2 تەخمىنەن | يىل 2 تەخمىنەن بولدى |
+| 1997-01-01T00:00:00.000Z | يىل 3 تەخمىنەن | يىل 3 تەخمىنەن | يىل 3 تەخمىنەن بولدى |
+| 1996-01-01T00:00:00.000Z | يىل 4 تەخمىنەن | يىل 4 تەخمىنەن | يىل 4 تەخمىنەن بولدى |
+| 1995-01-01T00:00:00.000Z | يىل 5 تەخمىنەن | يىل 5 تەخمىنەن | يىل 5 تەخمىنەن بولدى |
+| 1994-01-01T00:00:00.000Z | يىل 6 تەخمىنەن | يىل 6 تەخمىنەن | يىل 6 تەخمىنەن بولدى |
+
+## `formatDistanceStrict`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `addSuffix: true` | With forced unit (i.e. `hour`) |
+| ------------------------ | --------- | ----------------- | ------------------------------ |
+| 2006-01-01T00:00:00.000Z | يىل 6 | يىل 6 | سائەت 52608 |
+| 2005-01-01T00:00:00.000Z | يىل 5 | يىل 5 | سائەت 43848 |
+| 2004-01-01T00:00:00.000Z | يىل 4 | يىل 4 | سائەت 35064 |
+| 2003-01-01T00:00:00.000Z | يىل 3 | يىل 3 | سائەت 26304 |
+| 2002-01-01T00:00:00.000Z | يىل 2 | يىل 2 | سائەت 17544 |
+| 2001-06-01T00:00:00.000Z | بىر يىل | بىر يىل | سائەت 12408 |
+| 2001-02-01T00:00:00.000Z | بىر يىل | بىر يىل | سائەت 9528 |
+| 2001-01-01T00:00:00.000Z | بىر يىل | بىر يىل | سائەت 8784 |
+| 2000-06-01T00:00:00.000Z | ئاي 5 | ئاي 5 | سائەت 3648 |
+| 2000-03-01T00:00:00.000Z | ئاي 2 | ئاي 2 | سائەت 1440 |
+| 2000-02-01T00:00:00.000Z | بىر ئاي | بىر ئاي | سائەت 744 |
+| 2000-01-15T00:00:00.000Z | كۈن 14 | كۈن 14 | سائەت 336 |
+| 2000-01-02T00:00:00.000Z | بىر كۈن | بىر كۈن | سائەت 24 |
+| 2000-01-01T06:00:00.000Z | سائەت 6 | سائەت 6 | سائەت 6 |
+| 2000-01-01T01:00:00.000Z | بىر سائەت | بىر سائەت | بىر سائەت |
+| 2000-01-01T00:45:00.000Z | مىنۇت 45 | مىنۇت 45 | بىر سائەت |
+| 2000-01-01T00:30:00.000Z | مىنۇت 30 | مىنۇت 30 | بىر سائەت |
+| 2000-01-01T00:15:00.000Z | مىنۇت 15 | مىنۇت 15 | سائەت 0 |
+| 2000-01-01T00:01:00.000Z | بىر مىنۇت | بىر مىنۇت | سائەت 0 |
+| 2000-01-01T00:00:25.000Z | سىكۇنت 25 | سىكۇنت 25 | سائەت 0 |
+| 2000-01-01T00:00:15.000Z | سىكۇنت 15 | سىكۇنت 15 | سائەت 0 |
+| 2000-01-01T00:00:05.000Z | سىكۇنت 5 | سىكۇنت 5 | سائەت 0 |
+| 2000-01-01T00:00:00.000Z | سىكۇنت 0 | سىكۇنت 0 بولدى | سائەت 0 |
+| 1999-12-31T23:59:55.000Z | سىكۇنت 5 | سىكۇنت 5 بولدى | سائەت 0 |
+| 1999-12-31T23:59:45.000Z | سىكۇنت 15 | سىكۇنت 15 بولدى | سائەت 0 |
+| 1999-12-31T23:59:35.000Z | سىكۇنت 25 | سىكۇنت 25 بولدى | سائەت 0 |
+| 1999-12-31T23:59:00.000Z | بىر مىنۇت | بىر مىنۇت بولدى | سائەت 0 |
+| 1999-12-31T23:45:00.000Z | مىنۇت 15 | مىنۇت 15 بولدى | سائەت 0 |
+| 1999-12-31T23:30:00.000Z | مىنۇت 30 | مىنۇت 30 بولدى | بىر سائەت |
+| 1999-12-31T23:15:00.000Z | مىنۇت 45 | مىنۇت 45 بولدى | بىر سائەت |
+| 1999-12-31T23:00:00.000Z | بىر سائەت | بىر سائەت بولدى | بىر سائەت |
+| 1999-12-31T18:00:00.000Z | سائەت 6 | سائەت 6 بولدى | سائەت 6 |
+| 1999-12-30T00:00:00.000Z | كۈن 2 | كۈن 2 بولدى | سائەت 48 |
+| 1999-12-15T00:00:00.000Z | كۈن 17 | كۈن 17 بولدى | سائەت 408 |
+| 1999-12-01T00:00:00.000Z | بىر ئاي | بىر ئاي بولدى | سائەت 744 |
+| 1999-11-01T00:00:00.000Z | ئاي 2 | ئاي 2 بولدى | سائەت 1464 |
+| 1999-06-01T00:00:00.000Z | ئاي 7 | ئاي 7 بولدى | سائەت 5136 |
+| 1999-01-01T00:00:00.000Z | بىر يىل | بىر يىل بولدى | سائەت 8760 |
+| 1998-12-01T00:00:00.000Z | بىر يىل | بىر يىل بولدى | سائەت 9504 |
+| 1998-06-01T00:00:00.000Z | يىل 2 | يىل 2 بولدى | سائەت 13896 |
+| 1998-01-01T00:00:00.000Z | يىل 2 | يىل 2 بولدى | سائەت 17520 |
+| 1997-01-01T00:00:00.000Z | يىل 3 | يىل 3 بولدى | سائەت 26280 |
+| 1996-01-01T00:00:00.000Z | يىل 4 | يىل 4 بولدى | سائەت 35064 |
+| 1995-01-01T00:00:00.000Z | يىل 5 | يىل 5 بولدى | سائەت 43824 |
+| 1994-01-01T00:00:00.000Z | يىل 6 | يىل 6 بولدى | سائەت 52584 |
+
+## `formatRelative`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result |
+| ------------------------ | --------------------------- |
+| 2000-01-10T00:00:00.000Z | 01/10/2000 |
+| 2000-01-05T00:00:00.000Z | چارشەنبە دە 12:00 ئە |
+| 2000-01-02T00:00:00.000Z | ئەتە دە 12:00 ئە |
+| 2000-01-01T00:00:00.000Z | بۈگۈن دە 12:00 ئە |
+| 1999-12-31T00:00:00.000Z | تۈنۈگۈن دە 12:00 ئە |
+| 1999-12-27T00:00:00.000Z | ئ‍ۆتكەن دۈشەنبە دە 12:00 ئە |
+| 1999-12-21T00:00:00.000Z | 12/21/1999 |
diff --git a/date-fns/src/locale/uk/_lib/formatDistance/index.js b/date-fns/src/locale/uk/_lib/formatDistance/index.js
new file mode 100644
index 0000000..dcf337b
--- /dev/null
+++ b/date-fns/src/locale/uk/_lib/formatDistance/index.js
@@ -0,0 +1,247 @@
+function declension(scheme, count) {
+ // scheme for count=1 exists
+ if (scheme.one !== undefined && count === 1) {
+ return scheme.one
+ }
+
+ var rem10 = count % 10
+ var rem100 = count % 100
+
+ // 1, 21, 31, ...
+ if (rem10 === 1 && rem100 !== 11) {
+ return scheme.singularNominative.replace('{{count}}', count)
+
+ // 2, 3, 4, 22, 23, 24, 32 ...
+ } else if (rem10 >= 2 && rem10 <= 4 && (rem100 < 10 || rem100 > 20)) {
+ return scheme.singularGenitive.replace('{{count}}', count)
+
+ // 5, 6, 7, 8, 9, 10, 11, ...
+ } else {
+ return scheme.pluralGenitive.replace('{{count}}', count)
+ }
+}
+
+function buildLocalizeTokenFn(scheme) {
+ return function(count, options) {
+ if (options.addSuffix) {
+ if (options.comparison > 0) {
+ if (scheme.future) {
+ return declension(scheme.future, count)
+ } else {
+ return 'за ' + declension(scheme.regular, count)
+ }
+ } else {
+ if (scheme.past) {
+ return declension(scheme.past, count)
+ } else {
+ return declension(scheme.regular, count) + ' тому'
+ }
+ }
+ } else {
+ return declension(scheme.regular, count)
+ }
+ }
+}
+
+var formatDistanceLocale = {
+ lessThanXSeconds: buildLocalizeTokenFn({
+ regular: {
+ one: 'менше секунди',
+ singularNominative: 'менше {{count}} секунди',
+ singularGenitive: 'менше {{count}} секунд',
+ pluralGenitive: 'менше {{count}} секунд'
+ },
+ future: {
+ one: 'менше, ніж за секунду',
+ singularNominative: 'менше, ніж за {{count}} секунду',
+ singularGenitive: 'менше, ніж за {{count}} секунди',
+ pluralGenitive: 'менше, ніж за {{count}} секунд'
+ }
+ }),
+
+ xSeconds: buildLocalizeTokenFn({
+ regular: {
+ singularNominative: '{{count}} секунда',
+ singularGenitive: '{{count}} секунди',
+ pluralGenitive: '{{count}} секунд'
+ },
+ past: {
+ singularNominative: '{{count}} секунду тому',
+ singularGenitive: '{{count}} секунди тому',
+ pluralGenitive: '{{count}} секунд тому'
+ },
+ future: {
+ singularNominative: 'за {{count}} секунду',
+ singularGenitive: 'за {{count}} секунди',
+ pluralGenitive: 'за {{count}} секунд'
+ }
+ }),
+
+ halfAMinute: function(_, options) {
+ if (options.addSuffix) {
+ if (options.comparison > 0) {
+ return 'за півхвилини'
+ } else {
+ return 'півхвилини тому'
+ }
+ }
+
+ return 'півхвилини'
+ },
+
+ lessThanXMinutes: buildLocalizeTokenFn({
+ regular: {
+ one: 'менше хвилини',
+ singularNominative: 'менше {{count}} хвилини',
+ singularGenitive: 'менше {{count}} хвилин',
+ pluralGenitive: 'менше {{count}} хвилин'
+ },
+ future: {
+ one: 'менше, ніж за хвилину',
+ singularNominative: 'менше, ніж за {{count}} хвилину',
+ singularGenitive: 'менше, ніж за {{count}} хвилини',
+ pluralGenitive: 'менше, ніж за {{count}} хвилин'
+ }
+ }),
+
+ xMinutes: buildLocalizeTokenFn({
+ regular: {
+ singularNominative: '{{count}} хвилина',
+ singularGenitive: '{{count}} хвилини',
+ pluralGenitive: '{{count}} хвилин'
+ },
+ past: {
+ singularNominative: '{{count}} хвилину тому',
+ singularGenitive: '{{count}} хвилини тому',
+ pluralGenitive: '{{count}} хвилин тому'
+ },
+ future: {
+ singularNominative: 'за {{count}} хвилину',
+ singularGenitive: 'за {{count}} хвилини',
+ pluralGenitive: 'за {{count}} хвилин'
+ }
+ }),
+
+ aboutXHours: buildLocalizeTokenFn({
+ regular: {
+ singularNominative: 'близько {{count}} години',
+ singularGenitive: 'близько {{count}} годин',
+ pluralGenitive: 'близько {{count}} годин'
+ },
+ future: {
+ singularNominative: 'приблизно за {{count}} годину',
+ singularGenitive: 'приблизно за {{count}} години',
+ pluralGenitive: 'приблизно за {{count}} годин'
+ }
+ }),
+
+ xHours: buildLocalizeTokenFn({
+ regular: {
+ singularNominative: '{{count}} годину',
+ singularGenitive: '{{count}} години',
+ pluralGenitive: '{{count}} годин'
+ }
+ }),
+
+ xDays: buildLocalizeTokenFn({
+ regular: {
+ singularNominative: '{{count}} день',
+ singularGenitive: '{{count}} дня',
+ pluralGenitive: '{{count}} днів'
+ }
+ }),
+
+ aboutXWeeks: buildLocalizeTokenFn({
+ regular: {
+ singularNominative: 'близько {{count}} тижня',
+ singularGenitive: 'близько {{count}} тижнів',
+ pluralGenitive: 'близько {{count}} тижнів'
+ },
+ future: {
+ singularNominative: 'приблизно за {{count}} тиждень',
+ singularGenitive: 'приблизно за {{count}} тижні',
+ pluralGenitive: 'приблизно за {{count}} тижні'
+ }
+ }),
+
+ xWeeks: buildLocalizeTokenFn({
+ regular: {
+ singularNominative: '{{count}} тиждень',
+ singularGenitive: '{{count}} тижня',
+ pluralGenitive: '{{count}} тижні'
+ }
+ }),
+
+ aboutXMonths: buildLocalizeTokenFn({
+ regular: {
+ singularNominative: 'близько {{count}} місяця',
+ singularGenitive: 'близько {{count}} місяців',
+ pluralGenitive: 'близько {{count}} місяців'
+ },
+ future: {
+ singularNominative: 'приблизно за {{count}} місяць',
+ singularGenitive: 'приблизно за {{count}} місяця',
+ pluralGenitive: 'приблизно за {{count}} місяців'
+ }
+ }),
+
+ xMonths: buildLocalizeTokenFn({
+ regular: {
+ singularNominative: '{{count}} місяць',
+ singularGenitive: '{{count}} місяця',
+ pluralGenitive: '{{count}} місяців'
+ }
+ }),
+
+ aboutXYears: buildLocalizeTokenFn({
+ regular: {
+ singularNominative: 'близько {{count}} року',
+ singularGenitive: 'близько {{count}} років',
+ pluralGenitive: 'близько {{count}} років'
+ },
+ future: {
+ singularNominative: 'приблизно за {{count}} рік',
+ singularGenitive: 'приблизно за {{count}} роки',
+ pluralGenitive: 'приблизно за {{count}} років'
+ }
+ }),
+
+ xYears: buildLocalizeTokenFn({
+ regular: {
+ singularNominative: '{{count}} рік',
+ singularGenitive: '{{count}} роки',
+ pluralGenitive: '{{count}} років'
+ }
+ }),
+
+ overXYears: buildLocalizeTokenFn({
+ regular: {
+ singularNominative: 'більше {{count}} року',
+ singularGenitive: 'більше {{count}} років',
+ pluralGenitive: 'більше {{count}} років'
+ },
+ future: {
+ singularNominative: 'більше, ніж за {{count}} рік',
+ singularGenitive: 'більше, ніж за {{count}} роки',
+ pluralGenitive: 'більше, ніж за {{count}} років'
+ }
+ }),
+
+ almostXYears: buildLocalizeTokenFn({
+ regular: {
+ singularNominative: 'майже {{count}} рік',
+ singularGenitive: 'майже {{count}} роки',
+ pluralGenitive: 'майже {{count}} років'
+ },
+ future: {
+ singularNominative: 'майже за {{count}} рік',
+ singularGenitive: 'майже за {{count}} роки',
+ pluralGenitive: 'майже за {{count}} років'
+ }
+ })
+}
+
+export default function formatDistance(token, count, options) {
+ options = options || {}
+ return formatDistanceLocale[token](count, options)
+}
diff --git a/date-fns/src/locale/uk/_lib/formatLong/index.js b/date-fns/src/locale/uk/_lib/formatLong/index.js
new file mode 100644
index 0000000..5edcf4c
--- /dev/null
+++ b/date-fns/src/locale/uk/_lib/formatLong/index.js
@@ -0,0 +1,41 @@
+import buildFormatLongFn from '../../../_lib/buildFormatLongFn/index'
+
+var dateFormats = {
+ full: "EEEE, do MMMM y 'р.'",
+ long: "do MMMM y 'р.'",
+ medium: "d MMM y 'р.'",
+ short: 'dd.MM.y'
+}
+
+var timeFormats = {
+ full: 'H:mm:ss zzzz',
+ long: 'H:mm:ss z',
+ medium: 'H:mm:ss',
+ short: 'H:mm'
+}
+
+var dateTimeFormats = {
+ full: "{{date}} 'о' {{time}}",
+ long: "{{date}} 'о' {{time}}",
+ medium: '{{date}}, {{time}}',
+ short: '{{date}}, {{time}}'
+}
+
+var formatLong = {
+ date: buildFormatLongFn({
+ formats: dateFormats,
+ defaultWidth: 'full'
+ }),
+
+ time: buildFormatLongFn({
+ formats: timeFormats,
+ defaultWidth: 'full'
+ }),
+
+ dateTime: buildFormatLongFn({
+ formats: dateTimeFormats,
+ defaultWidth: 'full'
+ })
+}
+
+export default formatLong
diff --git a/date-fns/src/locale/uk/_lib/formatRelative/index.js b/date-fns/src/locale/uk/_lib/formatRelative/index.js
new file mode 100644
index 0000000..1f3c405
--- /dev/null
+++ b/date-fns/src/locale/uk/_lib/formatRelative/index.js
@@ -0,0 +1,82 @@
+import isSameUTCWeek from '../../../../_lib/isSameUTCWeek/index'
+
+var accusativeWeekdays = [
+ 'неділю',
+ 'понеділок',
+ 'вівторок',
+ 'середу',
+ 'четвер',
+ 'п’ятницю',
+ 'суботу'
+]
+
+function lastWeek(day) {
+ var weekday = accusativeWeekdays[day]
+
+ switch (day) {
+ case 0:
+ case 3:
+ case 5:
+ case 6:
+ return "'у минулу " + weekday + " о' p"
+ case 1:
+ case 2:
+ case 4:
+ return "'у минулий " + weekday + " о' p"
+ }
+}
+
+function thisWeek(day) {
+ var weekday = accusativeWeekdays[day]
+
+ return "'у " + weekday + " о' p"
+}
+
+function nextWeek(day) {
+ var weekday = accusativeWeekdays[day]
+
+ switch (day) {
+ case 0:
+ case 3:
+ case 5:
+ case 6:
+ return "'у наступну " + weekday + " о' p"
+ case 1:
+ case 2:
+ case 4:
+ return "'у наступний " + weekday + " о' p"
+ }
+}
+
+var formatRelativeLocale = {
+ lastWeek: function(date, baseDate, options) {
+ var day = date.getUTCDay()
+ if (isSameUTCWeek(date, baseDate, options)) {
+ return thisWeek(day)
+ } else {
+ return lastWeek(day)
+ }
+ },
+ yesterday: "'вчора о' p",
+ today: "'сьогодні о' p",
+ tomorrow: "'завтра о' p",
+ nextWeek: function(date, baseDate, options) {
+ var day = date.getUTCDay()
+ if (isSameUTCWeek(date, baseDate, options)) {
+ return thisWeek(day)
+ } else {
+ return nextWeek(day)
+ }
+ },
+ other: 'P'
+}
+
+export default function formatRelative(token, date, baseDate, options) {
+ var format = formatRelativeLocale[token]
+
+ if (typeof format === 'function') {
+ return format(date, baseDate, options)
+ }
+
+ return format
+}
diff --git a/date-fns/src/locale/uk/_lib/localize/index.js b/date-fns/src/locale/uk/_lib/localize/index.js
new file mode 100644
index 0000000..ab9c7ff
--- /dev/null
+++ b/date-fns/src/locale/uk/_lib/localize/index.js
@@ -0,0 +1,217 @@
+import buildLocalizeFn from '../../../_lib/buildLocalizeFn/index'
+
+var eraValues = {
+ narrow: ['до н.е.', 'н.е.'],
+ abbreviated: ['до н. е.', 'н. е.'],
+ wide: ['до нашої ери', 'нашої ери']
+}
+
+var quarterValues = {
+ narrow: ['1', '2', '3', '4'],
+ abbreviated: ['1-й кв.', '2-й кв.', '3-й кв.', '4-й кв.'],
+ wide: ['1-й квартал', '2-й квартал', '3-й квартал', '4-й квартал']
+}
+
+var monthValues = {
+ // ДСТУ 3582:2013
+ narrow: ['С', 'Л', 'Б', 'К', 'Т', 'Ч', 'Л', 'С', 'В', 'Ж', 'Л', 'Г'],
+ abbreviated: [
+ 'січ.',
+ 'лют.',
+ 'берез.',
+ 'квіт.',
+ 'трав.',
+ 'черв.',
+ 'лип.',
+ 'серп.',
+ 'верес.',
+ 'жовт.',
+ 'листоп.',
+ 'груд.'
+ ],
+ wide: [
+ 'січень',
+ 'лютий',
+ 'березень',
+ 'квітень',
+ 'травень',
+ 'червень',
+ 'липень',
+ 'серпень',
+ 'вересень',
+ 'жовтень',
+ 'листопад',
+ 'грудень'
+ ]
+}
+
+var formattingMonthValues = {
+ narrow: ['С', 'Л', 'Б', 'К', 'Т', 'Ч', 'Л', 'С', 'В', 'Ж', 'Л', 'Г'],
+ abbreviated: [
+ 'січ.',
+ 'лют.',
+ 'берез.',
+ 'квіт.',
+ 'трав.',
+ 'черв.',
+ 'лип.',
+ 'серп.',
+ 'верес.',
+ 'жовт.',
+ 'листоп.',
+ 'груд.'
+ ],
+ wide: [
+ 'січня',
+ 'лютого',
+ 'березня',
+ 'квітня',
+ 'травня',
+ 'червня',
+ 'липня',
+ 'серпня',
+ 'вересня',
+ 'жовтня',
+ 'листопада',
+ 'грудня'
+ ]
+}
+
+var dayValues = {
+ narrow: ['Н', 'П', 'В', 'С', 'Ч', 'П', 'С'],
+ short: ['нд', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'],
+ abbreviated: ['нед', 'пон', 'вів', 'сер', 'чтв', 'птн', 'суб'],
+ wide: [
+ 'неділя',
+ 'понеділок',
+ 'вівторок',
+ 'середа',
+ 'четвер',
+ 'п’ятниця',
+ 'субота'
+ ]
+}
+
+var dayPeriodValues = {
+ narrow: {
+ am: 'ДП',
+ pm: 'ПП',
+ midnight: 'півн.',
+ noon: 'пол.',
+ morning: 'ранок',
+ afternoon: 'день',
+ evening: 'веч.',
+ night: 'ніч'
+ },
+ abbreviated: {
+ am: 'ДП',
+ pm: 'ПП',
+ midnight: 'півн.',
+ noon: 'пол.',
+ morning: 'ранок',
+ afternoon: 'день',
+ evening: 'веч.',
+ night: 'ніч'
+ },
+ wide: {
+ am: 'ДП',
+ pm: 'ПП',
+ midnight: 'північ',
+ noon: 'полудень',
+ morning: 'ранок',
+ afternoon: 'день',
+ evening: 'вечір',
+ night: 'ніч'
+ }
+}
+
+var formattingDayPeriodValues = {
+ narrow: {
+ am: 'ДП',
+ pm: 'ПП',
+ midnight: 'півн.',
+ noon: 'пол.',
+ morning: 'ранку',
+ afternoon: 'дня',
+ evening: 'веч.',
+ night: 'ночі'
+ },
+ abbreviated: {
+ am: 'ДП',
+ pm: 'ПП',
+ midnight: 'півн.',
+ noon: 'пол.',
+ morning: 'ранку',
+ afternoon: 'дня',
+ evening: 'веч.',
+ night: 'ночі'
+ },
+ wide: {
+ am: 'ДП',
+ pm: 'ПП',
+ midnight: 'північ',
+ noon: 'полудень',
+ morning: 'ранку',
+ afternoon: 'дня',
+ evening: 'веч.',
+ night: 'ночі'
+ }
+}
+
+function ordinalNumber(dirtyNumber, dirtyOptions) {
+ var options = dirtyOptions || {}
+ var unit = String(options.unit)
+ var suffix
+
+ if (unit === 'date') {
+ if (dirtyNumber === 3 || dirtyNumber === 23) {
+ suffix = '-є'
+ } else {
+ suffix = '-е'
+ }
+ } else if (unit === 'minute' || unit === 'second' || unit === 'hour') {
+ suffix = '-а'
+ } else {
+ suffix = '-й'
+ }
+
+ return dirtyNumber + suffix
+}
+
+var localize = {
+ ordinalNumber: ordinalNumber,
+
+ era: buildLocalizeFn({
+ values: eraValues,
+ defaultWidth: 'wide'
+ }),
+
+ quarter: buildLocalizeFn({
+ values: quarterValues,
+ defaultWidth: 'wide',
+ argumentCallback: function(quarter) {
+ return Number(quarter) - 1
+ }
+ }),
+
+ month: buildLocalizeFn({
+ values: monthValues,
+ defaultWidth: 'wide',
+ formattingValues: formattingMonthValues,
+ defaultFormattingWidth: 'wide'
+ }),
+
+ day: buildLocalizeFn({
+ values: dayValues,
+ defaultWidth: 'wide'
+ }),
+
+ dayPeriod: buildLocalizeFn({
+ values: dayPeriodValues,
+ defaultWidth: 'any',
+ formattingValues: formattingDayPeriodValues,
+ defaultFormattingWidth: 'wide'
+ })
+}
+
+export default localize
diff --git a/date-fns/src/locale/uk/_lib/match/index.js b/date-fns/src/locale/uk/_lib/match/index.js
new file mode 100644
index 0000000..863aa59
--- /dev/null
+++ b/date-fns/src/locale/uk/_lib/match/index.js
@@ -0,0 +1,142 @@
+import buildMatchPatternFn from '../../../_lib/buildMatchPatternFn/index'
+import buildMatchFn from '../../../_lib/buildMatchFn/index'
+
+var matchOrdinalNumberPattern = /^(\d+)(-?(е|й|є|а|я))?/i
+var parseOrdinalNumberPattern = /\d+/i
+
+var matchEraPatterns = {
+ narrow: /^((до )?н\.?\s?е\.?)/i,
+ abbreviated: /^((до )?н\.?\s?е\.?)/i,
+ wide: /^(до нашої ери|нашої ери|наша ера)/i
+}
+
+var parseEraPatterns = {
+ any: [/^д/i, /^н/i]
+}
+
+var matchQuarterPatterns = {
+ narrow: /^[1234]/i,
+ abbreviated: /^[1234](-?[иі]?й?)? кв.?/i,
+ wide: /^[1234](-?[иі]?й?)? квартал/i
+}
+
+var parseQuarterPatterns = {
+ any: [/1/i, /2/i, /3/i, /4/i]
+}
+
+var matchMonthPatterns = {
+ narrow: /^[слбктчвжг]/i,
+ abbreviated: /^(січ|лют|бер|берез|кві|трав?|чер|лип|сер|вер|жов|лис(топ)?|груд)\.?/i,
+ wide: /^(січень|січня|лютий|лютого|березень|березня|квітень|квітня|травень|травня|липень|липня|серпень|серпня|вересень|вересня|жовтень|жовтня|листопада?|грудень|грудня)/i
+}
+var parseMonthPatterns = {
+ narrow: [
+ /^с/i,
+ /^л/i,
+ /^б/i,
+ /^к/i,
+ /^т/i,
+ /^ч/i,
+ /^л/i,
+ /^с/i,
+ /^в/i,
+ /^ж/i,
+ /^л/i,
+ /^г/i
+ ],
+ any: [
+ /^сі/i,
+ /^лю/i,
+ /^б/i,
+ /^к/i,
+ /^т/i,
+ /^ч/i,
+ /^лип/i,
+ /^се/i,
+ /^в/i,
+ /^ж/i,
+ /^лис/i,
+ /^г/i
+ ]
+}
+
+var matchDayPatterns = {
+ narrow: /^[нпвсч]/i,
+ short: /^(нд|пн|вт|ср|чт|пт|сб)\.?/i,
+ abbreviated: /^(нед|пон|вів|сер|че?тв|птн?|суб)\.?/i,
+ wide: /^(неділ[яі]|понеділ[ок][ка]|вівтор[ок][ка]|серед[аи]|четвер(га)?|п\W*?ятниц[яі]|субот[аи])/i
+}
+
+var parseDayPatterns = {
+ narrow: [/^н/i, /^п/i, /^в/i, /^с/i, /^ч/i, /^п/i, /^с/i],
+ any: [/^н/i, /^п[он]/i, /^в/i, /^с[ер]/i, /^ч/i, /^п\W*?[ят]/i, /^с[уб]/i]
+}
+
+var matchDayPeriodPatterns = {
+ narrow: /^([дп]п|півн\.?|пол\.?|ранок|ранку|день|дня|веч\.?|ніч|ночі)/i,
+ abbreviated: /^([дп]п|півн\.?|пол\.?|ранок|ранку|день|дня|веч\.?|ніч|ночі)/i,
+ wide: /^([дп]п|північ|полудень|ранок|ранку|день|дня|вечір|вечора|ніч|ночі)/i
+}
+
+var parseDayPeriodPatterns = {
+ any: {
+ am: /^дп/i,
+ pm: /^пп/i,
+ midnight: /^півн/i,
+ noon: /^пол/i,
+ morning: /^р/i,
+ afternoon: /^д[ен]/i,
+ evening: /^в/i,
+ night: /^н/i
+ }
+}
+
+var match = {
+ ordinalNumber: buildMatchPatternFn({
+ matchPattern: matchOrdinalNumberPattern,
+ parsePattern: parseOrdinalNumberPattern,
+ valueCallback: function(value) {
+ return parseInt(value, 10)
+ }
+ }),
+
+ era: buildMatchFn({
+ matchPatterns: matchEraPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseEraPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ quarter: buildMatchFn({
+ matchPatterns: matchQuarterPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseQuarterPatterns,
+ defaultParseWidth: 'any',
+ valueCallback: function(index) {
+ return index + 1
+ }
+ }),
+
+ month: buildMatchFn({
+ matchPatterns: matchMonthPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseMonthPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ day: buildMatchFn({
+ matchPatterns: matchDayPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseDayPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ dayPeriod: buildMatchFn({
+ matchPatterns: matchDayPeriodPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseDayPeriodPatterns,
+ defaultParseWidth: 'any'
+ })
+}
+
+export default match
diff --git a/date-fns/src/locale/uk/index.d.ts b/date-fns/src/locale/uk/index.d.ts
new file mode 100644
index 0000000..972da88
--- /dev/null
+++ b/date-fns/src/locale/uk/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { uk } from 'date-fns/locale'
+export default uk
diff --git a/date-fns/src/locale/uk/index.js b/date-fns/src/locale/uk/index.js
new file mode 100644
index 0000000..b6274fa
--- /dev/null
+++ b/date-fns/src/locale/uk/index.js
@@ -0,0 +1,29 @@
+import formatDistance from './_lib/formatDistance/index'
+import formatLong from './_lib/formatLong/index'
+import formatRelative from './_lib/formatRelative/index'
+import localize from './_lib/localize/index'
+import match from './_lib/match/index'
+
+/**
+ * @type {Locale}
+ * @category Locales
+ * @summary Ukrainian locale.
+ * @language Ukrainian
+ * @iso-639-2 ukr
+ * @author Andrii Korzh [@korzhyk]{@link https://github.com/korzhyk}
+ * @author Andriy Shcherbyak [@shcherbyakdev]{@link https://github.com/shcherbyakdev}
+ */
+var locale = {
+ code: 'uk',
+ formatDistance: formatDistance,
+ formatLong: formatLong,
+ formatRelative: formatRelative,
+ localize: localize,
+ match: match,
+ options: {
+ weekStartsOn: 1 /* Monday */,
+ firstWeekContainsDate: 1
+ }
+}
+
+export default locale
diff --git a/date-fns/src/locale/uk/index.js.flow b/date-fns/src/locale/uk/index.js.flow
new file mode 100644
index 0000000..b9dfe66
--- /dev/null
+++ b/date-fns/src/locale/uk/index.js.flow
@@ -0,0 +1,35 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+declare module.exports: Locale
diff --git a/date-fns/src/locale/uk/snapshot.md b/date-fns/src/locale/uk/snapshot.md
new file mode 100644
index 0000000..d88d4f9
--- /dev/null
+++ b/date-fns/src/locale/uk/snapshot.md
@@ -0,0 +1,304 @@
+# Ukrainian (uk) locale
+
+## `format` and `parse`
+
+| Title | Token string | Date | `format` result | `parse` result |
+| ------------------------------- | ------------ | ------------------------ | ------------------------------------------------ | ------------------------ |
+| Calendar year | yo | 1987-02-11T12:13:14.015Z | 1987-й | 1987-01-01T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 5-й | 0005-01-01T00:00:00.000Z |
+| Local week-numbering year | Yo | 1987-02-11T12:13:14.015Z | 1987-й | 1986-12-29T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 5-й | 0004-12-27T00:00:00.000Z |
+| Quarter (formatting) | Qo | 2019-01-01T12:13:14.015Z | 1-й | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2-й | 2019-04-01T00:00:00.000Z |
+| | QQQ | 2019-01-01T12:13:14.015Z | 1-й кв. | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2-й кв. | 2019-04-01T00:00:00.000Z |
+| | QQQQ | 2019-01-01T12:13:14.015Z | 1-й квартал | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2-й квартал | 2019-04-01T00:00:00.000Z |
+| | QQQQQ | 2019-01-01T12:13:14.015Z | 1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2 | 2019-04-01T00:00:00.000Z |
+| Quarter (stand-alone) | qo | 2019-01-01T12:13:14.015Z | 1-й | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2-й | 2019-04-01T00:00:00.000Z |
+| | qqq | 2019-01-01T12:13:14.015Z | 1-й кв. | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2-й кв. | 2019-04-01T00:00:00.000Z |
+| | qqqq | 2019-01-01T12:13:14.015Z | 1-й квартал | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2-й квартал | 2019-04-01T00:00:00.000Z |
+| Month (formatting) | Mo | 2019-02-11T12:13:14.015Z | 2-й | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7-й | 2019-07-01T00:00:00.000Z |
+| | MMM | 2019-02-11T12:13:14.015Z | лют. | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | лип. | 2019-07-01T00:00:00.000Z |
+| | MMMM | 2019-02-11T12:13:14.015Z | лютого | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | липня | 2019-07-01T00:00:00.000Z |
+| | MMMMM | 2019-02-11T12:13:14.015Z | Л | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | Л | 2019-02-01T00:00:00.000Z |
+| Month (stand-alone) | Lo | 2019-02-11T12:13:14.015Z | 2-й | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7-й | 2019-07-01T00:00:00.000Z |
+| | LLL | 2019-02-11T12:13:14.015Z | лют. | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | лип. | 2019-07-01T00:00:00.000Z |
+| | LLLL | 2019-02-11T12:13:14.015Z | лютий | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | липень | 2019-07-01T00:00:00.000Z |
+| | LLLLL | 2019-02-11T12:13:14.015Z | Л | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | Л | 2019-02-01T00:00:00.000Z |
+| Local week of year | wo | 2019-01-01T12:13:14.015Z | 1-й | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48-й | 2019-11-25T00:00:00.000Z |
+| ISO week of year | Io | 2019-01-01T12:13:14.015Z | 1-й | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48-й | 2019-11-25T00:00:00.000Z |
+| Day of month | do | 2019-02-11T12:13:14.015Z | 11-е | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-28T12:13:14.015Z | 28-е | 2019-02-28T00:00:00.000Z |
+| Day of year | Do | 2019-02-11T12:13:14.015Z | 42-й | 2019-02-11T00:00:00.000Z |
+| | | 2019-12-31T12:13:14.015Z | 365-й | 2019-12-31T00:00:00.000Z |
+| Day of week (formatting) | E | 2019-02-11T12:13:14.015Z | пон | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | птн | 2019-02-15T00:00:00.000Z |
+| | EE | 2019-02-11T12:13:14.015Z | пон | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | птн | 2019-02-15T00:00:00.000Z |
+| | EEE | 2019-02-11T12:13:14.015Z | пон | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | птн | 2019-02-15T00:00:00.000Z |
+| | EEEE | 2019-02-11T12:13:14.015Z | понеділок | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | п’ятниця | 2019-02-15T00:00:00.000Z |
+| | EEEEE | 2019-02-11T12:13:14.015Z | П | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | П | 2019-02-11T00:00:00.000Z |
+| | EEEEEE | 2019-02-11T12:13:14.015Z | пн | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | пт | 2019-02-15T00:00:00.000Z |
+| ISO day of week (formatting) | io | 2019-02-11T12:13:14.015Z | 1-й | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5-й | 2019-02-15T00:00:00.000Z |
+| | iii | 2019-02-11T12:13:14.015Z | пон | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | птн | 2019-02-15T00:00:00.000Z |
+| | iiii | 2019-02-11T12:13:14.015Z | понеділок | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | п’ятниця | 2019-02-15T00:00:00.000Z |
+| | iiiii | 2019-02-11T12:13:14.015Z | П | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | П | 2019-02-11T00:00:00.000Z |
+| | iiiiii | 2019-02-11T12:13:14.015Z | пн | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | пт | 2019-02-15T00:00:00.000Z |
+| Local day of week (formatting) | eo | 2019-02-11T12:13:14.015Z | 1-й | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5-й | 2019-02-15T00:00:00.000Z |
+| | eee | 2019-02-11T12:13:14.015Z | пон | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | птн | 2019-02-15T00:00:00.000Z |
+| | eeee | 2019-02-11T12:13:14.015Z | понеділок | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | п’ятниця | 2019-02-15T00:00:00.000Z |
+| | eeeee | 2019-02-11T12:13:14.015Z | П | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | П | 2019-02-11T00:00:00.000Z |
+| | eeeeee | 2019-02-11T12:13:14.015Z | пн | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | пт | 2019-02-15T00:00:00.000Z |
+| Local day of week (stand-alone) | co | 2019-02-11T12:13:14.015Z | 1-й | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5-й | 2019-02-15T00:00:00.000Z |
+| | ccc | 2019-02-11T12:13:14.015Z | пон | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | птн | 2019-02-15T00:00:00.000Z |
+| | cccc | 2019-02-11T12:13:14.015Z | понеділок | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | п’ятниця | 2019-02-15T00:00:00.000Z |
+| | ccccc | 2019-02-11T12:13:14.015Z | П | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | П | 2019-02-11T00:00:00.000Z |
+| | cccccc | 2019-02-11T12:13:14.015Z | пн | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | пт | 2019-02-15T00:00:00.000Z |
+| AM, PM | a | 2019-02-11T11:13:14.015Z | ДП | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | ПП | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | ПП | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ДП | 2019-02-11T00:00:00.000Z |
+| | aa | 2019-02-11T11:13:14.015Z | ДП | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | ПП | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | ПП | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ДП | 2019-02-11T00:00:00.000Z |
+| | aaa | 2019-02-11T11:13:14.015Z | дп | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | пп | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | пп | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | дп | 2019-02-11T00:00:00.000Z |
+| | aaaa | 2019-02-11T11:13:14.015Z | ДП | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | ПП | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | ПП | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ДП | 2019-02-11T00:00:00.000Z |
+| | aaaaa | 2019-02-11T11:13:14.015Z | ДП | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | ПП | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | ПП | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ДП | 2019-02-11T00:00:00.000Z |
+| AM, PM, noon, midnight | b | 2019-02-11T11:13:14.015Z | ДП | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | ПП | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | ПП | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ДП | 2019-02-11T00:00:00.000Z |
+| | bb | 2019-02-11T11:13:14.015Z | ДП | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | ПП | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | ПП | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ДП | 2019-02-11T00:00:00.000Z |
+| | bbb | 2019-02-11T11:13:14.015Z | дп | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | пп | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | пп | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | дп | 2019-02-11T00:00:00.000Z |
+| | bbbb | 2019-02-11T11:13:14.015Z | ДП | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | ПП | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | ПП | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ДП | 2019-02-11T00:00:00.000Z |
+| | bbbbb | 2019-02-11T11:13:14.015Z | ДП | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | ПП | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | ПП | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ДП | 2019-02-11T00:00:00.000Z |
+| Flexible day period | B | 2019-02-11T11:13:14.015Z | ранку | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | дня | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | веч. | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ночі | 2019-02-11T00:00:00.000Z |
+| | BB | 2019-02-11T11:13:14.015Z | ранку | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | дня | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | веч. | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ночі | 2019-02-11T00:00:00.000Z |
+| | BBB | 2019-02-11T11:13:14.015Z | ранку | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | дня | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | веч. | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ночі | 2019-02-11T00:00:00.000Z |
+| | BBBB | 2019-02-11T11:13:14.015Z | ранку | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | дня | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | веч. | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ночі | 2019-02-11T00:00:00.000Z |
+| | BBBBB | 2019-02-11T11:13:14.015Z | ранку | 2019-02-11T04:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | дня | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | веч. | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | ночі | 2019-02-11T00:00:00.000Z |
+| Hour [1-12] | ho | 2019-02-11T11:13:14.015Z | 11-а | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11-а | 2019-02-11T23:00:00.000Z |
+| Hour [0-23] | Ho | 2019-02-11T11:13:14.015Z | 11-а | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23-а | 2019-02-11T23:00:00.000Z |
+| Hour [0-11] | Ko | 2019-02-11T11:13:14.015Z | 11-а | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11-а | 2019-02-11T23:00:00.000Z |
+| Hour [1-24] | ko | 2019-02-11T11:13:14.015Z | 11-а | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23-а | 2019-02-11T23:00:00.000Z |
+| Minute | mo | 2019-01-01T12:01:14.015Z | 1-а | 2019-01-01T12:01:00.000Z |
+| | | 2019-04-01T12:55:14.015Z | 55-а | 2019-04-01T12:55:00.000Z |
+| Second | so | 2019-01-01T12:13:01.015Z | 1-а | 2019-01-01T12:13:01.000Z |
+| | | 2019-04-01T12:13:55.015Z | 55-а | 2019-04-01T12:13:55.000Z |
+| Long localized date | P | 1987-02-11T12:13:14.015Z | 11.02.1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29.05.1453 | 1453-05-29T00:00:00.000Z |
+| | PP | 1987-02-11T12:13:14.015Z | 11 лют. 1987 р. | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 трав. 1453 р. | 1453-05-29T00:00:00.000Z |
+| | PPP | 1987-02-11T12:13:14.015Z | 11-е лютого 1987 р. | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29-е травня 1453 р. | 1453-05-29T00:00:00.000Z |
+| | PPPP | 1987-02-11T12:13:14.015Z | середа, 11-е лютого 1987 р. | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | неділя, 29-е травня 1453 р. | 1453-05-29T00:00:00.000Z |
+| Long localized time | p | 1987-02-11T12:13:14.015Z | 12:13 | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 23:59 | 1453-05-29T23:59:00.000Z |
+| | pp | 1987-02-11T12:13:14.015Z | 12:13:14 | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 | 1453-05-29T23:59:59.000Z |
+| | ppp | 1987-02-11T12:13:14.015Z | 12:13:14 GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 GMT+0 | Errored |
+| | pppp | 1987-02-11T12:13:14.015Z | 12:13:14 GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 GMT+00:00 | Errored |
+| Combination of date and time | Pp | 1987-02-11T12:13:14.015Z | 11.02.1987, 12:13 | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29.05.1453, 23:59 | 1453-05-29T23:59:00.000Z |
+| | PPpp | 1987-02-11T12:13:14.015Z | 11 лют. 1987 р., 12:13:14 | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 трав. 1453 р., 23:59:59 | 1453-05-29T23:59:59.000Z |
+| | PPPppp | 1987-02-11T12:13:14.015Z | 11-е лютого 1987 р. о 12:13:14 GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 29-е травня 1453 р. о 23:59:59 GMT+0 | Errored |
+| | PPPPpppp | 1987-02-11T12:13:14.015Z | середа, 11-е лютого 1987 р. о 12:13:14 GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | неділя, 29-е травня 1453 р. о 23:59:59 GMT+00:00 | Errored |
+
+## `formatDistance`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `includeSeconds: true` | `addSuffix: true` |
+| ------------------------ | ---------------- | ---------------------- | --------------------- |
+| 2006-01-01T00:00:00.000Z | близько 6 років | близько 6 років | приблизно за 6 років |
+| 2005-01-01T00:00:00.000Z | близько 5 років | близько 5 років | приблизно за 5 років |
+| 2004-01-01T00:00:00.000Z | близько 4 років | близько 4 років | приблизно за 4 роки |
+| 2003-01-01T00:00:00.000Z | близько 3 років | близько 3 років | приблизно за 3 роки |
+| 2002-01-01T00:00:00.000Z | близько 2 років | близько 2 років | приблизно за 2 роки |
+| 2001-06-01T00:00:00.000Z | більше 1 року | більше 1 року | більше, ніж за 1 рік |
+| 2001-02-01T00:00:00.000Z | близько 1 року | близько 1 року | приблизно за 1 рік |
+| 2001-01-01T00:00:00.000Z | близько 1 року | близько 1 року | приблизно за 1 рік |
+| 2000-06-01T00:00:00.000Z | 5 місяців | 5 місяців | за 5 місяців |
+| 2000-03-01T00:00:00.000Z | 2 місяця | 2 місяця | за 2 місяця |
+| 2000-02-01T00:00:00.000Z | близько 1 місяця | близько 1 місяця | приблизно за 1 місяць |
+| 2000-01-15T00:00:00.000Z | 14 днів | 14 днів | за 14 днів |
+| 2000-01-02T00:00:00.000Z | 1 день | 1 день | за 1 день |
+| 2000-01-01T06:00:00.000Z | близько 6 годин | близько 6 годин | приблизно за 6 годин |
+| 2000-01-01T01:00:00.000Z | близько 1 години | близько 1 години | приблизно за 1 годину |
+| 2000-01-01T00:45:00.000Z | близько 1 години | близько 1 години | приблизно за 1 годину |
+| 2000-01-01T00:30:00.000Z | 30 хвилин | 30 хвилин | за 30 хвилин |
+| 2000-01-01T00:15:00.000Z | 15 хвилин | 15 хвилин | за 15 хвилин |
+| 2000-01-01T00:01:00.000Z | 1 хвилина | 1 хвилина | за 1 хвилину |
+| 2000-01-01T00:00:25.000Z | менше хвилини | півхвилини | менше, ніж за хвилину |
+| 2000-01-01T00:00:15.000Z | менше хвилини | менше 20 секунд | менше, ніж за хвилину |
+| 2000-01-01T00:00:05.000Z | менше хвилини | менше 10 секунд | менше, ніж за хвилину |
+| 2000-01-01T00:00:00.000Z | менше хвилини | менше 5 секунд | менше хвилини тому |
+| 1999-12-31T23:59:55.000Z | менше хвилини | менше 10 секунд | менше хвилини тому |
+| 1999-12-31T23:59:45.000Z | менше хвилини | менше 20 секунд | менше хвилини тому |
+| 1999-12-31T23:59:35.000Z | менше хвилини | півхвилини | менше хвилини тому |
+| 1999-12-31T23:59:00.000Z | 1 хвилина | 1 хвилина | 1 хвилину тому |
+| 1999-12-31T23:45:00.000Z | 15 хвилин | 15 хвилин | 15 хвилин тому |
+| 1999-12-31T23:30:00.000Z | 30 хвилин | 30 хвилин | 30 хвилин тому |
+| 1999-12-31T23:15:00.000Z | близько 1 години | близько 1 години | близько 1 години тому |
+| 1999-12-31T23:00:00.000Z | близько 1 години | близько 1 години | близько 1 години тому |
+| 1999-12-31T18:00:00.000Z | близько 6 годин | близько 6 годин | близько 6 годин тому |
+| 1999-12-30T00:00:00.000Z | 2 дня | 2 дня | 2 дня тому |
+| 1999-12-15T00:00:00.000Z | 17 днів | 17 днів | 17 днів тому |
+| 1999-12-01T00:00:00.000Z | близько 1 місяця | близько 1 місяця | близько 1 місяця тому |
+| 1999-11-01T00:00:00.000Z | 2 місяця | 2 місяця | 2 місяця тому |
+| 1999-06-01T00:00:00.000Z | 7 місяців | 7 місяців | 7 місяців тому |
+| 1999-01-01T00:00:00.000Z | близько 1 року | близько 1 року | близько 1 року тому |
+| 1998-12-01T00:00:00.000Z | близько 1 року | близько 1 року | близько 1 року тому |
+| 1998-06-01T00:00:00.000Z | більше 1 року | більше 1 року | більше 1 року тому |
+| 1998-01-01T00:00:00.000Z | близько 2 років | близько 2 років | близько 2 років тому |
+| 1997-01-01T00:00:00.000Z | близько 3 років | близько 3 років | близько 3 років тому |
+| 1996-01-01T00:00:00.000Z | близько 4 років | близько 4 років | близько 4 років тому |
+| 1995-01-01T00:00:00.000Z | близько 5 років | близько 5 років | близько 5 років тому |
+| 1994-01-01T00:00:00.000Z | близько 6 років | близько 6 років | близько 6 років тому |
+
+## `formatDistanceStrict`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `addSuffix: true` | With forced unit (i.e. `hour`) |
+| ------------------------ | --------- | ----------------- | ------------------------------ |
+| 2006-01-01T00:00:00.000Z | 6 років | за 6 років | 52608 годин |
+| 2005-01-01T00:00:00.000Z | 5 років | за 5 років | 43848 годин |
+| 2004-01-01T00:00:00.000Z | 4 роки | за 4 роки | 35064 години |
+| 2003-01-01T00:00:00.000Z | 3 роки | за 3 роки | 26304 години |
+| 2002-01-01T00:00:00.000Z | 2 роки | за 2 роки | 17544 години |
+| 2001-06-01T00:00:00.000Z | 1 рік | за 1 рік | 12408 годин |
+| 2001-02-01T00:00:00.000Z | 1 рік | за 1 рік | 9528 годин |
+| 2001-01-01T00:00:00.000Z | 1 рік | за 1 рік | 8784 години |
+| 2000-06-01T00:00:00.000Z | 5 місяців | за 5 місяців | 3648 годин |
+| 2000-03-01T00:00:00.000Z | 2 місяця | за 2 місяця | 1440 годин |
+| 2000-02-01T00:00:00.000Z | 1 місяць | за 1 місяць | 744 години |
+| 2000-01-15T00:00:00.000Z | 14 днів | за 14 днів | 336 годин |
+| 2000-01-02T00:00:00.000Z | 1 день | за 1 день | 24 години |
+| 2000-01-01T06:00:00.000Z | 6 годин | за 6 годин | 6 годин |
+| 2000-01-01T01:00:00.000Z | 1 годину | за 1 годину | 1 годину |
+| 2000-01-01T00:45:00.000Z | 45 хвилин | за 45 хвилин | 1 годину |
+| 2000-01-01T00:30:00.000Z | 30 хвилин | за 30 хвилин | 1 годину |
+| 2000-01-01T00:15:00.000Z | 15 хвилин | за 15 хвилин | 0 годин |
+| 2000-01-01T00:01:00.000Z | 1 хвилина | за 1 хвилину | 0 годин |
+| 2000-01-01T00:00:25.000Z | 25 секунд | за 25 секунд | 0 годин |
+| 2000-01-01T00:00:15.000Z | 15 секунд | за 15 секунд | 0 годин |
+| 2000-01-01T00:00:05.000Z | 5 секунд | за 5 секунд | 0 годин |
+| 2000-01-01T00:00:00.000Z | 0 секунд | 0 секунд тому | 0 годин |
+| 1999-12-31T23:59:55.000Z | 5 секунд | 5 секунд тому | 0 годин |
+| 1999-12-31T23:59:45.000Z | 15 секунд | 15 секунд тому | 0 годин |
+| 1999-12-31T23:59:35.000Z | 25 секунд | 25 секунд тому | 0 годин |
+| 1999-12-31T23:59:00.000Z | 1 хвилина | 1 хвилину тому | 0 годин |
+| 1999-12-31T23:45:00.000Z | 15 хвилин | 15 хвилин тому | 0 годин |
+| 1999-12-31T23:30:00.000Z | 30 хвилин | 30 хвилин тому | 1 годину |
+| 1999-12-31T23:15:00.000Z | 45 хвилин | 45 хвилин тому | 1 годину |
+| 1999-12-31T23:00:00.000Z | 1 годину | 1 годину тому | 1 годину |
+| 1999-12-31T18:00:00.000Z | 6 годин | 6 годин тому | 6 годин |
+| 1999-12-30T00:00:00.000Z | 2 дня | 2 дня тому | 48 годин |
+| 1999-12-15T00:00:00.000Z | 17 днів | 17 днів тому | 408 годин |
+| 1999-12-01T00:00:00.000Z | 1 місяць | 1 місяць тому | 744 години |
+| 1999-11-01T00:00:00.000Z | 2 місяця | 2 місяця тому | 1464 години |
+| 1999-06-01T00:00:00.000Z | 7 місяців | 7 місяців тому | 5136 годин |
+| 1999-01-01T00:00:00.000Z | 1 рік | 1 рік тому | 8760 годин |
+| 1998-12-01T00:00:00.000Z | 1 рік | 1 рік тому | 9504 години |
+| 1998-06-01T00:00:00.000Z | 2 роки | 2 роки тому | 13896 годин |
+| 1998-01-01T00:00:00.000Z | 2 роки | 2 роки тому | 17520 годин |
+| 1997-01-01T00:00:00.000Z | 3 роки | 3 роки тому | 26280 годин |
+| 1996-01-01T00:00:00.000Z | 4 роки | 4 роки тому | 35064 години |
+| 1995-01-01T00:00:00.000Z | 5 років | 5 років тому | 43824 години |
+| 1994-01-01T00:00:00.000Z | 6 років | 6 років тому | 52584 години |
+
+## `formatRelative`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result |
+| ------------------------ | ------------------------ |
+| 2000-01-10T00:00:00.000Z | 10.01.2000 |
+| 2000-01-05T00:00:00.000Z | у наступну середу о 0:00 |
+| 2000-01-02T00:00:00.000Z | завтра о 0:00 |
+| 2000-01-01T00:00:00.000Z | сьогодні о 0:00 |
+| 1999-12-31T00:00:00.000Z | вчора о 0:00 |
+| 1999-12-27T00:00:00.000Z | у понеділок о 0:00 |
+| 1999-12-21T00:00:00.000Z | 21.12.1999 |
diff --git a/date-fns/src/locale/uz/_lib/formatDistance/index.js b/date-fns/src/locale/uz/_lib/formatDistance/index.js
new file mode 100644
index 0000000..9e1a259
--- /dev/null
+++ b/date-fns/src/locale/uz/_lib/formatDistance/index.js
@@ -0,0 +1,101 @@
+var formatDistanceLocale = {
+ lessThanXSeconds: {
+ one: 'sekunddan kam',
+ other: '{{count}} sekunddan kam'
+ },
+
+ xSeconds: {
+ one: '1 sekund',
+ other: '{{count}} sekund'
+ },
+
+ halfAMinute: 'yarim minut',
+
+ lessThanXMinutes: {
+ one: 'bir minutdan kam',
+ other: '{{count}} minutdan kam'
+ },
+
+ xMinutes: {
+ one: '1 minut',
+ other: '{{count}} minut'
+ },
+
+ aboutXHours: {
+ one: 'tahminan 1 soat',
+ other: 'tahminan {{count}} soat'
+ },
+
+ xHours: {
+ one: '1 soat',
+ other: '{{count}} soat'
+ },
+
+ xDays: {
+ one: '1 kun',
+ other: '{{count}} kun'
+ },
+
+ aboutXWeeks: {
+ one: 'tahminan 1 hafta',
+ other: 'tahminan {{count}} hafta'
+ },
+
+ xWeeks: {
+ one: '1 hafta',
+ other: '{{count}} hafta'
+ },
+
+ aboutXMonths: {
+ one: 'tahminan 1 oy',
+ other: 'tahminan {{count}} oy'
+ },
+
+ xMonths: {
+ one: '1 oy',
+ other: '{{count}} oy'
+ },
+
+ aboutXYears: {
+ one: 'tahminan 1 yil',
+ other: 'tahminan {{count}} yil'
+ },
+
+ xYears: {
+ one: '1 yil',
+ other: '{{count}} yil'
+ },
+
+ overXYears: {
+ one: "1 yildan ko'p",
+ other: "{{count}} yildan ko'p"
+ },
+
+ almostXYears: {
+ one: 'deyarli 1 yil',
+ other: 'deyarli {{count}} yil'
+ }
+}
+
+export default function formatDistance(token, count, options) {
+ options = options || {}
+
+ var result
+ if (typeof formatDistanceLocale[token] === 'string') {
+ result = formatDistanceLocale[token]
+ } else if (count === 1) {
+ result = formatDistanceLocale[token].one
+ } else {
+ result = formatDistanceLocale[token].other.replace('{{count}}', count)
+ }
+
+ if (options.addSuffix) {
+ if (options.comparison > 0) {
+ return result + ' dan keyin'
+ } else {
+ return result + ' oldin'
+ }
+ }
+
+ return result
+}
diff --git a/date-fns/src/locale/uz/_lib/formatLong/index.js b/date-fns/src/locale/uz/_lib/formatLong/index.js
new file mode 100644
index 0000000..e2e59a5
--- /dev/null
+++ b/date-fns/src/locale/uz/_lib/formatLong/index.js
@@ -0,0 +1,38 @@
+import buildFormatLongFn from '../../../_lib/buildFormatLongFn/index'
+
+var dateFormats = {
+ full: 'EEEE, do MMMM, y',
+ long: 'do MMMM, y',
+ medium: 'd MMM, y',
+ short: 'dd/MM/yyyy'
+}
+
+var timeFormats = {
+ full: 'h:mm:ss zzzz',
+ long: 'h:mm:ss z',
+ medium: 'h:mm:ss',
+ short: 'h:mm'
+}
+
+var dateTimeFormats = {
+ any: '{{date}}, {{time}}'
+}
+
+var formatLong = {
+ date: buildFormatLongFn({
+ formats: dateFormats,
+ defaultWidth: 'full'
+ }),
+
+ time: buildFormatLongFn({
+ formats: timeFormats,
+ defaultWidth: 'full'
+ }),
+
+ dateTime: buildFormatLongFn({
+ formats: dateTimeFormats,
+ defaultWidth: 'any'
+ })
+}
+
+export default formatLong
diff --git a/date-fns/src/locale/uz/_lib/formatRelative/index.js b/date-fns/src/locale/uz/_lib/formatRelative/index.js
new file mode 100644
index 0000000..92838cd
--- /dev/null
+++ b/date-fns/src/locale/uz/_lib/formatRelative/index.js
@@ -0,0 +1,12 @@
+var formatRelativeLocale = {
+ lastWeek: "'oldingi' eeee p 'da'",
+ yesterday: "'kecha' p 'da'",
+ today: "'bugun' p 'da'",
+ tomorrow: "'ertaga' p 'da'",
+ nextWeek: "eeee p 'da'",
+ other: 'P'
+}
+
+export default function formatRelative(token, _date, _baseDate, _options) {
+ return formatRelativeLocale[token]
+}
diff --git a/date-fns/src/locale/uz/_lib/localize/index.js b/date-fns/src/locale/uz/_lib/localize/index.js
new file mode 100644
index 0000000..6530e3d
--- /dev/null
+++ b/date-fns/src/locale/uz/_lib/localize/index.js
@@ -0,0 +1,181 @@
+import buildLocalizeFn from '../../../_lib/buildLocalizeFn/index'
+
+var eraValues = {
+ narrow: ['M.A', 'M.'],
+ abbreviated: ['M.A', 'M.'],
+ wide: ['Miloddan Avvalgi', 'Milodiy']
+}
+
+var quarterValues = {
+ narrow: ['1', '2', '3', '4'],
+ abbreviated: ['CH.1', 'CH.2', 'CH.3', 'CH.4'],
+ wide: ['1-chi chorak', '2-chi chorak', '3-chi chorak', '4-chi chorak']
+}
+
+// Note: in English, the names of days of the week and months are capitalized.
+// If you are making a new locale based on this one, check if the same is true for the language you're working on.
+// Generally, formatted dates should look like they are in the middle of a sentence,
+// e.g. in Spanish language the weekdays and months should be in the lowercase.
+var monthValues = {
+ narrow: ['Y', 'F', 'M', 'A', 'M', 'I', 'I', 'A', 'S', 'O', 'N', 'D'],
+ abbreviated: [
+ 'Yan',
+ 'Fev',
+ 'Mar',
+ 'Apr',
+ 'May',
+ 'Iyun',
+ 'Iyul',
+ 'Avg',
+ 'Sen',
+ 'Okt',
+ 'Noy',
+ 'Dek'
+ ],
+ wide: [
+ 'Yanvar',
+ 'Fevral',
+ 'Mart',
+ 'Aprel',
+ 'May',
+ 'Iyun',
+ 'Iyul',
+ 'Avgust',
+ 'Sentabr',
+ 'Oktabr',
+ 'Noyabr',
+ 'Dekabr'
+ ]
+}
+
+var dayValues = {
+ narrow: ['Y', 'D', 'S', 'CH', 'P', 'J', 'SH'],
+ short: ['Ya', 'Du', 'Se', 'Cho', 'Pa', 'Ju', 'Sha'],
+ abbreviated: ['Yak', 'Dush', 'Sesh', 'Chor', 'Pay', 'Jum', 'Shan'],
+ wide: [
+ 'Yakshanba',
+ 'Dushanba',
+ 'Seshanba',
+ 'Chorshanba',
+ 'Payshanba',
+ 'Juma',
+ 'Shanba'
+ ]
+}
+
+var dayPeriodValues = {
+ narrow: {
+ am: 'a',
+ pm: 'p',
+ midnight: 'y.t',
+ noon: 'p.',
+ morning: 'ertalab',
+ afternoon: 'tushdan keyin',
+ evening: 'kechqurun',
+ night: 'tun'
+ },
+ abbreviated: {
+ am: 'AM',
+ pm: 'PM',
+ midnight: 'yarim tun',
+ noon: 'peshin',
+ morning: 'ertalab',
+ afternoon: 'tushdan keyin',
+ evening: 'kechqurun',
+ night: 'tun'
+ },
+ wide: {
+ am: 'a.m.',
+ pm: 'p.m.',
+ midnight: 'yarim tun',
+ noon: 'peshin',
+ morning: 'ertalab',
+ afternoon: 'tushdan keyin',
+ evening: 'kechqurun',
+ night: 'tun'
+ }
+}
+var formattingDayPeriodValues = {
+ narrow: {
+ am: 'a',
+ pm: 'p',
+ midnight: 'y.t',
+ noon: 'p.',
+ morning: 'ertalab',
+ afternoon: 'tushdan keyin',
+ evening: 'kechqurun',
+ night: 'tun'
+ },
+ abbreviated: {
+ am: 'AM',
+ pm: 'PM',
+ midnight: 'yarim tun',
+ noon: 'peshin',
+ morning: 'ertalab',
+ afternoon: 'tushdan keyin',
+ evening: 'kechqurun',
+ night: 'tun'
+ },
+ wide: {
+ am: 'a.m.',
+ pm: 'p.m.',
+ midnight: 'yarim tun',
+ noon: 'peshin',
+ morning: 'ertalab',
+ afternoon: 'tushdan keyin',
+ evening: 'kechqurun',
+ night: 'tun'
+ }
+}
+
+function ordinalNumber(dirtyNumber, _dirtyOptions) {
+ var number = Number(dirtyNumber)
+
+ // If ordinal numbers depend on context, for example,
+ // if they are different for different grammatical genders,
+ // use `options.unit`:
+ //
+ // var options = dirtyOptions || {}
+ // var unit = String(options.unit)
+ //
+ // where `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',
+ // 'day', 'hour', 'minute', 'second'
+
+ return number
+}
+
+var localize = {
+ ordinalNumber: ordinalNumber,
+
+ era: buildLocalizeFn({
+ values: eraValues,
+ defaultWidth: 'wide'
+ }),
+
+ quarter: buildLocalizeFn({
+ values: quarterValues,
+ defaultWidth: 'wide',
+ argumentCallback: function(quarter) {
+ return Number(quarter) - 1
+ }
+ }),
+
+ month: buildLocalizeFn({
+ values: monthValues,
+ defaultWidth: 'wide'
+ }),
+
+ day: buildLocalizeFn({
+ values: dayValues,
+ defaultWidth: 'wide'
+ }),
+
+ dayPeriod: buildLocalizeFn({
+ values: dayPeriodValues,
+ defaultWidth: 'wide',
+ formattingValues: formattingDayPeriodValues,
+ defaultFormattingWidth: 'wide'
+ })
+}
+
+export default localize
diff --git a/date-fns/src/locale/uz/_lib/match/index.js b/date-fns/src/locale/uz/_lib/match/index.js
new file mode 100644
index 0000000..8190bba
--- /dev/null
+++ b/date-fns/src/locale/uz/_lib/match/index.js
@@ -0,0 +1,137 @@
+import buildMatchPatternFn from '../../../_lib/buildMatchPatternFn/index'
+import buildMatchFn from '../../../_lib/buildMatchFn/index'
+
+var matchOrdinalNumberPattern = /^(\d+)(chi)?/i
+var parseOrdinalNumberPattern = /\d+/i
+
+var matchEraPatterns = {
+ narrow: /^(m\.a|m\.)/i,
+ abbreviated: /^(m\.a\.?\s?m\.?)/i,
+ wide: /^(miloddan avval|miloddan keyin)/i
+}
+var parseEraPatterns = {
+ any: [/^b/i, /^(a|c)/i]
+}
+
+var matchQuarterPatterns = {
+ narrow: /^[1234]/i,
+ abbreviated: /^q[1234]/i,
+ wide: /^[1234](chi)? chorak/i
+}
+var parseQuarterPatterns = {
+ any: [/1/i, /2/i, /3/i, /4/i]
+}
+
+var matchMonthPatterns = {
+ narrow: /^[yfmasond]/i,
+ abbreviated: /^(yan|fev|mar|apr|may|iyun|iyul|avg|sen|okt|noy|dek)/i,
+ wide: /^(yanvar|fevral|mart|aprel|may|iyun|iyul|avgust|sentabr|oktabr|noyabr|dekabr)/i
+}
+var parseMonthPatterns = {
+ narrow: [
+ /^y/i,
+ /^f/i,
+ /^m/i,
+ /^a/i,
+ /^m/i,
+ /^i/i,
+ /^i/i,
+ /^a/i,
+ /^s/i,
+ /^o/i,
+ /^n/i,
+ /^d/i
+ ],
+ any: [
+ /^ya/i,
+ /^f/i,
+ /^mar/i,
+ /^ap/i,
+ /^may/i,
+ /^iyun/i,
+ /^iyul/i,
+ /^av/i,
+ /^s/i,
+ /^o/i,
+ /^n/i,
+ /^d/i
+ ]
+}
+
+var matchDayPatterns = {
+ narrow: /^[ydschj]/i,
+ short: /^(ya|du|se|cho|pa|ju|sha)/i,
+ abbreviated: /^(yak|dush|sesh|chor|pay|jum|shan)/i,
+ wide: /^(yakshanba|dushanba|seshanba|chorshanba|payshanba|juma|shanba)/i
+}
+var parseDayPatterns = {
+ narrow: [/^y/i, /^d/i, /^s/i, /^ch/i, /^p/i, /^j/i, /^sh/i],
+ any: [/^ya/i, /^d/i, /^se/i, /^ch/i, /^p/i, /^j/i, /^sh/i]
+}
+
+var matchDayPeriodPatterns = {
+ narrow: /^(a|p|y\.t|p| (ertalab|tushdan keyin|kechqurun|tun))/i,
+ any: /^([ap]\.?\s?m\.?|yarim tun|peshin| (ertalab|tushdan keyin|kechqurun|tun))/i
+}
+var parseDayPeriodPatterns = {
+ any: {
+ am: /^a/i,
+ pm: /^p/i,
+ midnight: /^y\.t/i,
+ noon: /^pe/i,
+ morning: /ertalab/i,
+ afternoon: /tushdan keyin/i,
+ evening: /kechqurun/i,
+ night: /tun/i
+ }
+}
+
+var match = {
+ ordinalNumber: buildMatchPatternFn({
+ matchPattern: matchOrdinalNumberPattern,
+ parsePattern: parseOrdinalNumberPattern,
+ valueCallback: function(value) {
+ return parseInt(value, 10)
+ }
+ }),
+
+ era: buildMatchFn({
+ matchPatterns: matchEraPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseEraPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ quarter: buildMatchFn({
+ matchPatterns: matchQuarterPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseQuarterPatterns,
+ defaultParseWidth: 'any',
+ valueCallback: function(index) {
+ return index + 1
+ }
+ }),
+
+ month: buildMatchFn({
+ matchPatterns: matchMonthPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseMonthPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ day: buildMatchFn({
+ matchPatterns: matchDayPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseDayPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ dayPeriod: buildMatchFn({
+ matchPatterns: matchDayPeriodPatterns,
+ defaultMatchWidth: 'any',
+ parsePatterns: parseDayPeriodPatterns,
+ defaultParseWidth: 'any'
+ })
+}
+
+export default match
diff --git a/date-fns/src/locale/uz/index.d.ts b/date-fns/src/locale/uz/index.d.ts
new file mode 100644
index 0000000..e10b1f6
--- /dev/null
+++ b/date-fns/src/locale/uz/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { uz } from 'date-fns/locale'
+export default uz
diff --git a/date-fns/src/locale/uz/index.js b/date-fns/src/locale/uz/index.js
new file mode 100644
index 0000000..42c0fef
--- /dev/null
+++ b/date-fns/src/locale/uz/index.js
@@ -0,0 +1,28 @@
+import formatDistance from './_lib/formatDistance/index'
+import formatLong from './_lib/formatLong/index'
+import formatRelative from './_lib/formatRelative/index'
+import localize from './_lib/localize/index'
+import match from './_lib/match/index'
+
+/**
+ * @type {Locale}
+ * @category Locales
+ * @summary Uzbek locale.
+ * @language Uzbek
+ * @iso-639-2 uzb
+ * @author Mukhammadali [@mukhammadali]{@link https://github.com/Mukhammadali}
+ */
+var locale = {
+ code: 'uz',
+ formatDistance: formatDistance,
+ formatLong: formatLong,
+ formatRelative: formatRelative,
+ localize: localize,
+ match: match,
+ options: {
+ weekStartsOn: 1 /* Monday */,
+ firstWeekContainsDate: 1
+ }
+}
+
+export default locale
diff --git a/date-fns/src/locale/uz/index.js.flow b/date-fns/src/locale/uz/index.js.flow
new file mode 100644
index 0000000..b9dfe66
--- /dev/null
+++ b/date-fns/src/locale/uz/index.js.flow
@@ -0,0 +1,35 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+declare module.exports: Locale
diff --git a/date-fns/src/locale/uz/snapshot.md b/date-fns/src/locale/uz/snapshot.md
new file mode 100644
index 0000000..384dc12
--- /dev/null
+++ b/date-fns/src/locale/uz/snapshot.md
@@ -0,0 +1,304 @@
+# Uzbek (uz) locale
+
+## `format` and `parse`
+
+| Title | Token string | Date | `format` result | `parse` result |
+| ------------------------------- | ------------ | ------------------------ | ----------------------------------------------- | ------------------------ |
+| Calendar year | yo | 1987-02-11T12:13:14.015Z | 1987 | 1987-01-01T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 5 | 0005-01-01T00:00:00.000Z |
+| Local week-numbering year | Yo | 1987-02-11T12:13:14.015Z | 1987 | 1986-12-29T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 5 | 0004-12-27T00:00:00.000Z |
+| Quarter (formatting) | Qo | 2019-01-01T12:13:14.015Z | 1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2 | 2019-04-01T00:00:00.000Z |
+| | QQQ | 2019-01-01T12:13:14.015Z | CH.1 | Invalid Date |
+| | | 2019-04-01T12:13:14.015Z | CH.2 | Invalid Date |
+| | QQQQ | 2019-01-01T12:13:14.015Z | 1-chi chorak | Invalid Date |
+| | | 2019-04-01T12:13:14.015Z | 2-chi chorak | Invalid Date |
+| | QQQQQ | 2019-01-01T12:13:14.015Z | 1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2 | 2019-04-01T00:00:00.000Z |
+| Quarter (stand-alone) | qo | 2019-01-01T12:13:14.015Z | 1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2 | 2019-04-01T00:00:00.000Z |
+| | qqq | 2019-01-01T12:13:14.015Z | CH.1 | Invalid Date |
+| | | 2019-04-01T12:13:14.015Z | CH.2 | Invalid Date |
+| | qqqq | 2019-01-01T12:13:14.015Z | 1-chi chorak | Invalid Date |
+| | | 2019-04-01T12:13:14.015Z | 2-chi chorak | Invalid Date |
+| Month (formatting) | Mo | 2019-02-11T12:13:14.015Z | 2 | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7 | 2019-07-01T00:00:00.000Z |
+| | MMM | 2019-02-11T12:13:14.015Z | Fev | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | Iyul | 2019-07-01T00:00:00.000Z |
+| | MMMM | 2019-02-11T12:13:14.015Z | Fevral | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | Iyul | 2019-07-01T00:00:00.000Z |
+| | MMMMM | 2019-02-11T12:13:14.015Z | F | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | I | Invalid Date |
+| Month (stand-alone) | Lo | 2019-02-11T12:13:14.015Z | 2 | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7 | 2019-07-01T00:00:00.000Z |
+| | LLL | 2019-02-11T12:13:14.015Z | Fev | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | Iyul | 2019-07-01T00:00:00.000Z |
+| | LLLL | 2019-02-11T12:13:14.015Z | Fevral | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | Iyul | 2019-07-01T00:00:00.000Z |
+| | LLLLL | 2019-02-11T12:13:14.015Z | F | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | I | Invalid Date |
+| Local week of year | wo | 2019-01-01T12:13:14.015Z | 1 | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48 | 2019-11-25T00:00:00.000Z |
+| ISO week of year | Io | 2019-01-01T12:13:14.015Z | 1 | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 48 | 2019-11-25T00:00:00.000Z |
+| Day of month | do | 2019-02-11T12:13:14.015Z | 11 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-28T12:13:14.015Z | 28 | 2019-02-28T00:00:00.000Z |
+| Day of year | Do | 2019-02-11T12:13:14.015Z | 42 | 2019-02-11T00:00:00.000Z |
+| | | 2019-12-31T12:13:14.015Z | 365 | 2019-12-31T00:00:00.000Z |
+| Day of week (formatting) | E | 2019-02-11T12:13:14.015Z | Dush | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Jum | 2019-02-15T00:00:00.000Z |
+| | EE | 2019-02-11T12:13:14.015Z | Dush | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Jum | 2019-02-15T00:00:00.000Z |
+| | EEE | 2019-02-11T12:13:14.015Z | Dush | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Jum | 2019-02-15T00:00:00.000Z |
+| | EEEE | 2019-02-11T12:13:14.015Z | Dushanba | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Juma | 2019-02-15T00:00:00.000Z |
+| | EEEEE | 2019-02-11T12:13:14.015Z | D | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | J | 2019-02-15T00:00:00.000Z |
+| | EEEEEE | 2019-02-11T12:13:14.015Z | Du | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Ju | 2019-02-15T00:00:00.000Z |
+| ISO day of week (formatting) | io | 2019-02-11T12:13:14.015Z | 1 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5 | 2019-02-15T00:00:00.000Z |
+| | iii | 2019-02-11T12:13:14.015Z | Dush | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Jum | 2019-02-15T00:00:00.000Z |
+| | iiii | 2019-02-11T12:13:14.015Z | Dushanba | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Juma | 2019-02-15T00:00:00.000Z |
+| | iiiii | 2019-02-11T12:13:14.015Z | D | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | J | 2019-02-15T00:00:00.000Z |
+| | iiiiii | 2019-02-11T12:13:14.015Z | Du | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Ju | 2019-02-15T00:00:00.000Z |
+| Local day of week (formatting) | eo | 2019-02-11T12:13:14.015Z | 1 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5 | 2019-02-15T00:00:00.000Z |
+| | eee | 2019-02-11T12:13:14.015Z | Dush | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Jum | 2019-02-15T00:00:00.000Z |
+| | eeee | 2019-02-11T12:13:14.015Z | Dushanba | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Juma | 2019-02-15T00:00:00.000Z |
+| | eeeee | 2019-02-11T12:13:14.015Z | D | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | J | 2019-02-15T00:00:00.000Z |
+| | eeeeee | 2019-02-11T12:13:14.015Z | Du | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Ju | 2019-02-15T00:00:00.000Z |
+| Local day of week (stand-alone) | co | 2019-02-11T12:13:14.015Z | 1 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 5 | 2019-02-15T00:00:00.000Z |
+| | ccc | 2019-02-11T12:13:14.015Z | Dush | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Jum | 2019-02-15T00:00:00.000Z |
+| | cccc | 2019-02-11T12:13:14.015Z | Dushanba | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Juma | 2019-02-15T00:00:00.000Z |
+| | ccccc | 2019-02-11T12:13:14.015Z | D | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | J | 2019-02-15T00:00:00.000Z |
+| | cccccc | 2019-02-11T12:13:14.015Z | Du | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Ju | 2019-02-15T00:00:00.000Z |
+| AM, PM | a | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | aa | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | aaa | 2019-02-11T11:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | aaaa | 2019-02-11T11:13:14.015Z | a.m. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | p.m. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | p.m. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | a.m. | 2019-02-11T00:00:00.000Z |
+| | aaaaa | 2019-02-11T11:13:14.015Z | a | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | p | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | p | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | a | 2019-02-11T00:00:00.000Z |
+| AM, PM, noon, midnight | b | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | bb | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | bbb | 2019-02-11T11:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | bbbb | 2019-02-11T11:13:14.015Z | a.m. | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | p.m. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | p.m. | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | a.m. | 2019-02-11T00:00:00.000Z |
+| | bbbbb | 2019-02-11T11:13:14.015Z | a | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | p | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | p | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | a | 2019-02-11T00:00:00.000Z |
+| Flexible day period | B | 2019-02-11T11:13:14.015Z | ertalab | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | tushdan keyin | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | kechqurun | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | tun | Invalid Date |
+| | BB | 2019-02-11T11:13:14.015Z | ertalab | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | tushdan keyin | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | kechqurun | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | tun | Invalid Date |
+| | BBB | 2019-02-11T11:13:14.015Z | ertalab | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | tushdan keyin | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | kechqurun | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | tun | Invalid Date |
+| | BBBB | 2019-02-11T11:13:14.015Z | ertalab | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | tushdan keyin | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | kechqurun | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | tun | Invalid Date |
+| | BBBBB | 2019-02-11T11:13:14.015Z | ertalab | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | tushdan keyin | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | kechqurun | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | tun | Invalid Date |
+| Hour [1-12] | ho | 2019-02-11T11:13:14.015Z | 11 | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11 | 2019-02-11T23:00:00.000Z |
+| Hour [0-23] | Ho | 2019-02-11T11:13:14.015Z | 11 | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23 | 2019-02-11T23:00:00.000Z |
+| Hour [0-11] | Ko | 2019-02-11T11:13:14.015Z | 11 | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11 | 2019-02-11T23:00:00.000Z |
+| Hour [1-24] | ko | 2019-02-11T11:13:14.015Z | 11 | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23 | 2019-02-11T23:00:00.000Z |
+| Minute | mo | 2019-01-01T12:01:14.015Z | 1 | 2019-01-01T12:01:00.000Z |
+| | | 2019-04-01T12:55:14.015Z | 55 | 2019-04-01T12:55:00.000Z |
+| Second | so | 2019-01-01T12:13:01.015Z | 1 | 2019-01-01T12:13:01.000Z |
+| | | 2019-04-01T12:13:55.015Z | 55 | 2019-04-01T12:13:55.000Z |
+| Long localized date | P | 1987-02-11T12:13:14.015Z | 11/02/1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29/05/1453 | 1453-05-29T00:00:00.000Z |
+| | PP | 1987-02-11T12:13:14.015Z | 11 Fev, 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 May, 1453 | 1453-05-29T00:00:00.000Z |
+| | PPP | 1987-02-11T12:13:14.015Z | 11 Fevral, 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 May, 1453 | 1453-05-29T00:00:00.000Z |
+| | PPPP | 1987-02-11T12:13:14.015Z | Chorshanba, 11 Fevral, 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | Yakshanba, 29 May, 1453 | 1453-05-29T00:00:00.000Z |
+| Long localized time | p | 1987-02-11T12:13:14.015Z | 12:13 | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 11:59 | 1453-05-29T23:59:00.000Z |
+| | pp | 1987-02-11T12:13:14.015Z | 12:13:14 | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 11:59:59 | 1453-05-29T23:59:59.000Z |
+| | ppp | 1987-02-11T12:13:14.015Z | 12:13:14 GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 11:59:59 GMT+0 | Errored |
+| | pppp | 1987-02-11T12:13:14.015Z | 12:13:14 GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 11:59:59 GMT+00:00 | Errored |
+| Combination of date and time | Pp | 1987-02-11T12:13:14.015Z | 11/02/1987, 12:13 | 1987-02-11T00:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29/05/1453, 11:59 | 1453-05-29T11:59:00.000Z |
+| | PPpp | 1987-02-11T12:13:14.015Z | 11 Fev, 1987, 12:13:14 | 1987-02-11T00:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 May, 1453, 11:59:59 | 1453-05-29T11:59:59.000Z |
+| | PPPppp | 1987-02-11T12:13:14.015Z | 11 Fevral, 1987, 12:13:14 GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 29 May, 1453, 11:59:59 GMT+0 | Errored |
+| | PPPPpppp | 1987-02-11T12:13:14.015Z | Chorshanba, 11 Fevral, 1987, 12:13:14 GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | Yakshanba, 29 May, 1453, 11:59:59 GMT+00:00 | Errored |
+
+## `formatDistance`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `includeSeconds: true` | `addSuffix: true` |
+| ------------------------ | ---------------- | ---------------------- | -------------------------- |
+| 2006-01-01T00:00:00.000Z | tahminan 6 yil | tahminan 6 yil | tahminan 6 yil dan keyin |
+| 2005-01-01T00:00:00.000Z | tahminan 5 yil | tahminan 5 yil | tahminan 5 yil dan keyin |
+| 2004-01-01T00:00:00.000Z | tahminan 4 yil | tahminan 4 yil | tahminan 4 yil dan keyin |
+| 2003-01-01T00:00:00.000Z | tahminan 3 yil | tahminan 3 yil | tahminan 3 yil dan keyin |
+| 2002-01-01T00:00:00.000Z | tahminan 2 yil | tahminan 2 yil | tahminan 2 yil dan keyin |
+| 2001-06-01T00:00:00.000Z | 1 yildan ko'p | 1 yildan ko'p | 1 yildan ko'p dan keyin |
+| 2001-02-01T00:00:00.000Z | tahminan 1 yil | tahminan 1 yil | tahminan 1 yil dan keyin |
+| 2001-01-01T00:00:00.000Z | tahminan 1 yil | tahminan 1 yil | tahminan 1 yil dan keyin |
+| 2000-06-01T00:00:00.000Z | 5 oy | 5 oy | 5 oy dan keyin |
+| 2000-03-01T00:00:00.000Z | 2 oy | 2 oy | 2 oy dan keyin |
+| 2000-02-01T00:00:00.000Z | tahminan 1 oy | tahminan 1 oy | tahminan 1 oy dan keyin |
+| 2000-01-15T00:00:00.000Z | 14 kun | 14 kun | 14 kun dan keyin |
+| 2000-01-02T00:00:00.000Z | 1 kun | 1 kun | 1 kun dan keyin |
+| 2000-01-01T06:00:00.000Z | tahminan 6 soat | tahminan 6 soat | tahminan 6 soat dan keyin |
+| 2000-01-01T01:00:00.000Z | tahminan 1 soat | tahminan 1 soat | tahminan 1 soat dan keyin |
+| 2000-01-01T00:45:00.000Z | tahminan 1 soat | tahminan 1 soat | tahminan 1 soat dan keyin |
+| 2000-01-01T00:30:00.000Z | 30 minut | 30 minut | 30 minut dan keyin |
+| 2000-01-01T00:15:00.000Z | 15 minut | 15 minut | 15 minut dan keyin |
+| 2000-01-01T00:01:00.000Z | 1 minut | 1 minut | 1 minut dan keyin |
+| 2000-01-01T00:00:25.000Z | bir minutdan kam | yarim minut | bir minutdan kam dan keyin |
+| 2000-01-01T00:00:15.000Z | bir minutdan kam | 20 sekunddan kam | bir minutdan kam dan keyin |
+| 2000-01-01T00:00:05.000Z | bir minutdan kam | 10 sekunddan kam | bir minutdan kam dan keyin |
+| 2000-01-01T00:00:00.000Z | bir minutdan kam | 5 sekunddan kam | bir minutdan kam oldin |
+| 1999-12-31T23:59:55.000Z | bir minutdan kam | 10 sekunddan kam | bir minutdan kam oldin |
+| 1999-12-31T23:59:45.000Z | bir minutdan kam | 20 sekunddan kam | bir minutdan kam oldin |
+| 1999-12-31T23:59:35.000Z | bir minutdan kam | yarim minut | bir minutdan kam oldin |
+| 1999-12-31T23:59:00.000Z | 1 minut | 1 minut | 1 minut oldin |
+| 1999-12-31T23:45:00.000Z | 15 minut | 15 minut | 15 minut oldin |
+| 1999-12-31T23:30:00.000Z | 30 minut | 30 minut | 30 minut oldin |
+| 1999-12-31T23:15:00.000Z | tahminan 1 soat | tahminan 1 soat | tahminan 1 soat oldin |
+| 1999-12-31T23:00:00.000Z | tahminan 1 soat | tahminan 1 soat | tahminan 1 soat oldin |
+| 1999-12-31T18:00:00.000Z | tahminan 6 soat | tahminan 6 soat | tahminan 6 soat oldin |
+| 1999-12-30T00:00:00.000Z | 2 kun | 2 kun | 2 kun oldin |
+| 1999-12-15T00:00:00.000Z | 17 kun | 17 kun | 17 kun oldin |
+| 1999-12-01T00:00:00.000Z | tahminan 1 oy | tahminan 1 oy | tahminan 1 oy oldin |
+| 1999-11-01T00:00:00.000Z | 2 oy | 2 oy | 2 oy oldin |
+| 1999-06-01T00:00:00.000Z | 7 oy | 7 oy | 7 oy oldin |
+| 1999-01-01T00:00:00.000Z | tahminan 1 yil | tahminan 1 yil | tahminan 1 yil oldin |
+| 1998-12-01T00:00:00.000Z | tahminan 1 yil | tahminan 1 yil | tahminan 1 yil oldin |
+| 1998-06-01T00:00:00.000Z | 1 yildan ko'p | 1 yildan ko'p | 1 yildan ko'p oldin |
+| 1998-01-01T00:00:00.000Z | tahminan 2 yil | tahminan 2 yil | tahminan 2 yil oldin |
+| 1997-01-01T00:00:00.000Z | tahminan 3 yil | tahminan 3 yil | tahminan 3 yil oldin |
+| 1996-01-01T00:00:00.000Z | tahminan 4 yil | tahminan 4 yil | tahminan 4 yil oldin |
+| 1995-01-01T00:00:00.000Z | tahminan 5 yil | tahminan 5 yil | tahminan 5 yil oldin |
+| 1994-01-01T00:00:00.000Z | tahminan 6 yil | tahminan 6 yil | tahminan 6 yil oldin |
+
+## `formatDistanceStrict`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `addSuffix: true` | With forced unit (i.e. `hour`) |
+| ------------------------ | --------- | ------------------- | ------------------------------ |
+| 2006-01-01T00:00:00.000Z | 6 yil | 6 yil dan keyin | 52608 soat |
+| 2005-01-01T00:00:00.000Z | 5 yil | 5 yil dan keyin | 43848 soat |
+| 2004-01-01T00:00:00.000Z | 4 yil | 4 yil dan keyin | 35064 soat |
+| 2003-01-01T00:00:00.000Z | 3 yil | 3 yil dan keyin | 26304 soat |
+| 2002-01-01T00:00:00.000Z | 2 yil | 2 yil dan keyin | 17544 soat |
+| 2001-06-01T00:00:00.000Z | 1 yil | 1 yil dan keyin | 12408 soat |
+| 2001-02-01T00:00:00.000Z | 1 yil | 1 yil dan keyin | 9528 soat |
+| 2001-01-01T00:00:00.000Z | 1 yil | 1 yil dan keyin | 8784 soat |
+| 2000-06-01T00:00:00.000Z | 5 oy | 5 oy dan keyin | 3648 soat |
+| 2000-03-01T00:00:00.000Z | 2 oy | 2 oy dan keyin | 1440 soat |
+| 2000-02-01T00:00:00.000Z | 1 oy | 1 oy dan keyin | 744 soat |
+| 2000-01-15T00:00:00.000Z | 14 kun | 14 kun dan keyin | 336 soat |
+| 2000-01-02T00:00:00.000Z | 1 kun | 1 kun dan keyin | 24 soat |
+| 2000-01-01T06:00:00.000Z | 6 soat | 6 soat dan keyin | 6 soat |
+| 2000-01-01T01:00:00.000Z | 1 soat | 1 soat dan keyin | 1 soat |
+| 2000-01-01T00:45:00.000Z | 45 minut | 45 minut dan keyin | 1 soat |
+| 2000-01-01T00:30:00.000Z | 30 minut | 30 minut dan keyin | 1 soat |
+| 2000-01-01T00:15:00.000Z | 15 minut | 15 minut dan keyin | 0 soat |
+| 2000-01-01T00:01:00.000Z | 1 minut | 1 minut dan keyin | 0 soat |
+| 2000-01-01T00:00:25.000Z | 25 sekund | 25 sekund dan keyin | 0 soat |
+| 2000-01-01T00:00:15.000Z | 15 sekund | 15 sekund dan keyin | 0 soat |
+| 2000-01-01T00:00:05.000Z | 5 sekund | 5 sekund dan keyin | 0 soat |
+| 2000-01-01T00:00:00.000Z | 0 sekund | 0 sekund oldin | 0 soat |
+| 1999-12-31T23:59:55.000Z | 5 sekund | 5 sekund oldin | 0 soat |
+| 1999-12-31T23:59:45.000Z | 15 sekund | 15 sekund oldin | 0 soat |
+| 1999-12-31T23:59:35.000Z | 25 sekund | 25 sekund oldin | 0 soat |
+| 1999-12-31T23:59:00.000Z | 1 minut | 1 minut oldin | 0 soat |
+| 1999-12-31T23:45:00.000Z | 15 minut | 15 minut oldin | 0 soat |
+| 1999-12-31T23:30:00.000Z | 30 minut | 30 minut oldin | 1 soat |
+| 1999-12-31T23:15:00.000Z | 45 minut | 45 minut oldin | 1 soat |
+| 1999-12-31T23:00:00.000Z | 1 soat | 1 soat oldin | 1 soat |
+| 1999-12-31T18:00:00.000Z | 6 soat | 6 soat oldin | 6 soat |
+| 1999-12-30T00:00:00.000Z | 2 kun | 2 kun oldin | 48 soat |
+| 1999-12-15T00:00:00.000Z | 17 kun | 17 kun oldin | 408 soat |
+| 1999-12-01T00:00:00.000Z | 1 oy | 1 oy oldin | 744 soat |
+| 1999-11-01T00:00:00.000Z | 2 oy | 2 oy oldin | 1464 soat |
+| 1999-06-01T00:00:00.000Z | 7 oy | 7 oy oldin | 5136 soat |
+| 1999-01-01T00:00:00.000Z | 1 yil | 1 yil oldin | 8760 soat |
+| 1998-12-01T00:00:00.000Z | 1 yil | 1 yil oldin | 9504 soat |
+| 1998-06-01T00:00:00.000Z | 2 yil | 2 yil oldin | 13896 soat |
+| 1998-01-01T00:00:00.000Z | 2 yil | 2 yil oldin | 17520 soat |
+| 1997-01-01T00:00:00.000Z | 3 yil | 3 yil oldin | 26280 soat |
+| 1996-01-01T00:00:00.000Z | 4 yil | 4 yil oldin | 35064 soat |
+| 1995-01-01T00:00:00.000Z | 5 yil | 5 yil oldin | 43824 soat |
+| 1994-01-01T00:00:00.000Z | 6 yil | 6 yil oldin | 52584 soat |
+
+## `formatRelative`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result |
+| ------------------------ | ------------------------- |
+| 2000-01-10T00:00:00.000Z | 10/01/2000 |
+| 2000-01-05T00:00:00.000Z | Chorshanba 12:00 da |
+| 2000-01-02T00:00:00.000Z | ertaga 12:00 da |
+| 2000-01-01T00:00:00.000Z | bugun 12:00 da |
+| 1999-12-31T00:00:00.000Z | kecha 12:00 da |
+| 1999-12-27T00:00:00.000Z | oldingi Dushanba 12:00 da |
+| 1999-12-21T00:00:00.000Z | 21/12/1999 |
diff --git a/date-fns/src/locale/vi/_lib/formatDistance/index.js b/date-fns/src/locale/vi/_lib/formatDistance/index.js
new file mode 100644
index 0000000..35677f0
--- /dev/null
+++ b/date-fns/src/locale/vi/_lib/formatDistance/index.js
@@ -0,0 +1,101 @@
+var formatDistanceLocale = {
+ lessThanXSeconds: {
+ one: 'dưới 1 giây',
+ other: 'dưới {{count}} giây'
+ },
+
+ xSeconds: {
+ one: '1 giây',
+ other: '{{count}} giây'
+ },
+
+ halfAMinute: 'nửa phút',
+
+ lessThanXMinutes: {
+ one: 'dưới 1 phút',
+ other: 'dưới {{count}} phút'
+ },
+
+ xMinutes: {
+ one: '1 phút',
+ other: '{{count}} phút'
+ },
+
+ aboutXHours: {
+ one: 'khoảng 1 giờ',
+ other: 'khoảng {{count}} giờ'
+ },
+
+ xHours: {
+ one: '1 giờ',
+ other: '{{count}} giờ'
+ },
+
+ xDays: {
+ one: '1 ngày',
+ other: '{{count}} ngày'
+ },
+
+ aboutXWeeks: {
+ one: 'khoảng 1 tuần',
+ other: 'khoảng {{count}} tuần'
+ },
+
+ xWeeks: {
+ one: '1 tuần',
+ other: '{{count}} tuần'
+ },
+
+ aboutXMonths: {
+ one: 'khoảng 1 tháng',
+ other: 'khoảng {{count}} tháng'
+ },
+
+ xMonths: {
+ one: '1 tháng',
+ other: '{{count}} tháng'
+ },
+
+ aboutXYears: {
+ one: 'khoảng 1 năm',
+ other: 'khoảng {{count}} năm'
+ },
+
+ xYears: {
+ one: '1 năm',
+ other: '{{count}} năm'
+ },
+
+ overXYears: {
+ one: 'hơn 1 năm',
+ other: 'hơn {{count}} năm'
+ },
+
+ almostXYears: {
+ one: 'gần 1 năm',
+ other: 'gần {{count}} năm'
+ }
+}
+
+export default function formatDistance(token, count, options) {
+ options = options || {}
+
+ var result
+ if (typeof formatDistanceLocale[token] === 'string') {
+ result = formatDistanceLocale[token]
+ } else if (count === 1) {
+ result = formatDistanceLocale[token].one
+ } else {
+ result = formatDistanceLocale[token].other.replace('{{count}}', count)
+ }
+
+ if (options.addSuffix) {
+ if (options.comparison > 0) {
+ return result + ' nữa'
+ } else {
+ return result + ' trước'
+ }
+ }
+
+ return result
+}
diff --git a/date-fns/src/locale/vi/_lib/formatLong/index.js b/date-fns/src/locale/vi/_lib/formatLong/index.js
new file mode 100644
index 0000000..4762cc6
--- /dev/null
+++ b/date-fns/src/locale/vi/_lib/formatLong/index.js
@@ -0,0 +1,47 @@
+import buildFormatLongFn from '../../../_lib/buildFormatLongFn/index'
+
+var dateFormats = {
+ // thứ Sáu, ngày 25 tháng 08 năm 2017
+ full: "EEEE, 'ngày' d MMMM 'năm' y",
+ // ngày 25 tháng 08 năm 2017
+ long: "'ngày' d MMMM 'năm' y",
+ // 25 thg 08 năm 2017
+ medium: "d MMM 'năm' y",
+ // 25/08/2017
+ short: 'dd/MM/y'
+}
+
+var timeFormats = {
+ full: 'HH:mm:ss zzzz',
+ long: 'HH:mm:ss z',
+ medium: 'HH:mm:ss',
+ short: 'HH:mm'
+}
+
+var dateTimeFormats = {
+ // thứ Sáu, ngày 25 tháng 08 năm 2017 23:25:59
+ full: '{{date}} {{time}}',
+ // ngày 25 tháng 08 năm 2017 23:25
+ long: '{{date}} {{time}}',
+ medium: '{{date}} {{time}}',
+ short: '{{date}} {{time}}'
+}
+
+var formatLong = {
+ date: buildFormatLongFn({
+ formats: dateFormats,
+ defaultWidth: 'full'
+ }),
+
+ time: buildFormatLongFn({
+ formats: timeFormats,
+ defaultWidth: 'full'
+ }),
+
+ dateTime: buildFormatLongFn({
+ formats: dateTimeFormats,
+ defaultWidth: 'full'
+ })
+}
+
+export default formatLong
diff --git a/date-fns/src/locale/vi/_lib/formatRelative/index.js b/date-fns/src/locale/vi/_lib/formatRelative/index.js
new file mode 100644
index 0000000..4270321
--- /dev/null
+++ b/date-fns/src/locale/vi/_lib/formatRelative/index.js
@@ -0,0 +1,12 @@
+var formatRelativeLocale = {
+ lastWeek: "eeee 'tuần trước vào lúc' p",
+ yesterday: "'hôm qua vào lúc' p",
+ today: "'hôm nay vào lúc' p",
+ tomorrow: "'ngày mai vào lúc' p",
+ nextWeek: "eeee 'tới vào lúc' p",
+ other: 'P'
+}
+
+export default function formatRelative(token, _date, _baseDate, _options) {
+ return formatRelativeLocale[token]
+}
diff --git a/date-fns/src/locale/vi/_lib/localize/index.js b/date-fns/src/locale/vi/_lib/localize/index.js
new file mode 100644
index 0000000..07dbe80
--- /dev/null
+++ b/date-fns/src/locale/vi/_lib/localize/index.js
@@ -0,0 +1,295 @@
+import buildLocalizeFn from '../../../_lib/buildLocalizeFn/index'
+
+// Vietnamese locale reference: http://www.localeplanet.com/icu/vi-VN/index.html
+// Capitalization reference: http://hcmup.edu.vn/index.php?option=com_content&view=article&id=4106%3Avit-hoa-trong-vn-bn-hanh-chinh&catid=2345%3Atham-kho&Itemid=4103&lang=vi&site=134
+
+var eraValues = {
+ narrow: ['TCN', 'SCN'],
+ abbreviated: ['trước CN', 'sau CN'],
+ wide: ['trước Công Nguyên', 'sau Công Nguyên']
+}
+
+var quarterValues = {
+ narrow: ['1', '2', '3', '4'],
+ abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],
+ wide: ['Quý 1', 'Quý 2', 'Quý 3', 'Quý 4']
+}
+
+var formattingQuarterValues = {
+ narrow: ['1', '2', '3', '4'],
+ abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],
+ // I notice many news outlet use this "quý II/2018"
+ wide: ['quý I', 'quý II', 'quý III', 'quý IV']
+}
+
+// Note: in English, the names of days of the week and months are capitalized.
+// If you are making a new locale based on this one, check if the same is true for the language you're working on.
+// Generally, formatted dates should look like they are in the middle of a sentence,
+// e.g. in Spanish language the weekdays and months should be in the lowercase.
+var monthValues = {
+ narrow: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'],
+ abbreviated: [
+ 'Thg 1',
+ 'Thg 2',
+ 'Thg 3',
+ 'Thg 4',
+ 'Thg 5',
+ 'Thg 6',
+ 'Thg 7',
+ 'Thg 8',
+ 'Thg 9',
+ 'Thg 10',
+ 'Thg 11',
+ 'Thg 12'
+ ],
+ wide: [
+ 'Tháng Một',
+ 'Tháng Hai',
+ 'Tháng Ba',
+ 'Tháng Tư',
+ 'Tháng Năm',
+ 'Tháng Sáu',
+ 'Tháng Bảy',
+ 'Tháng Tám',
+ 'Tháng Chín',
+ 'Tháng Mười',
+ 'Tháng Mười Một',
+ 'Tháng Mười Hai'
+ ]
+}
+// In Vietnamese date formatting, month number less than 10 expected to have leading zero
+var formattingMonthValues = {
+ narrow: [
+ '01',
+ '02',
+ '03',
+ '04',
+ '05',
+ '06',
+ '07',
+ '08',
+ '09',
+ '10',
+ '11',
+ '12'
+ ],
+ abbreviated: [
+ 'thg 1',
+ 'thg 2',
+ 'thg 3',
+ 'thg 4',
+ 'thg 5',
+ 'thg 6',
+ 'thg 7',
+ 'thg 8',
+ 'thg 9',
+ 'thg 10',
+ 'thg 11',
+ 'thg 12'
+ ],
+ wide: [
+ 'tháng 01',
+ 'tháng 02',
+ 'tháng 03',
+ 'tháng 04',
+ 'tháng 05',
+ 'tháng 06',
+ 'tháng 07',
+ 'tháng 08',
+ 'tháng 09',
+ 'tháng 10',
+ 'tháng 11',
+ 'tháng 12'
+ ]
+}
+
+var dayValues = {
+ narrow: ['CN', 'T2', 'T3', 'T4', 'T5', 'T6', 'T7'],
+ short: ['CN', 'Th 2', 'Th 3', 'Th 4', 'Th 5', 'Th 6', 'Th 7'],
+ abbreviated: ['CN', 'Thứ 2', 'Thứ 3', 'Thứ 4', 'Thứ 5', 'Thứ 6', 'Thứ 7'],
+ wide: [
+ 'Chủ Nhật',
+ 'Thứ Hai',
+ 'Thứ Ba',
+ 'Thứ Tư',
+ 'Thứ Năm',
+ 'Thứ Sáu',
+ 'Thứ Bảy'
+ ]
+}
+
+// Vietnamese are used to AM/PM borrowing from English, hence `narrow` and
+// `abbreviated` are just like English but I'm leaving the `wide`
+// format being localized with abbreviations found in some systems (SÁng / CHiều);
+// however, personally, I don't think `Chiều` sounds appropriate for `PM`
+var dayPeriodValues = {
+ // narrow date period is extremely rare in Vietnamese
+ // I used abbreviated form for noon, morning and afternoon
+ // which are regconizable by Vietnamese, others cannot be any shorter
+ narrow: {
+ am: 'am',
+ pm: 'pm',
+ midnight: 'nửa đêm',
+ noon: 'tr',
+ morning: 'sg',
+ afternoon: 'ch',
+ evening: 'tối',
+ night: 'đêm'
+ },
+ abbreviated: {
+ am: 'AM',
+ pm: 'PM',
+ midnight: 'nửa đêm',
+ noon: 'trưa',
+ morning: 'sáng',
+ afternoon: 'chiều',
+ evening: 'tối',
+ night: 'đêm'
+ },
+ wide: {
+ am: 'SA',
+ pm: 'CH',
+ midnight: 'nửa đêm',
+ noon: 'trưa',
+ morning: 'sáng',
+ afternoon: 'chiều',
+ evening: 'tối',
+ night: 'đêm'
+ }
+}
+
+var formattingDayPeriodValues = {
+ narrow: {
+ am: 'am',
+ pm: 'pm',
+ midnight: 'nửa đêm',
+ noon: 'tr',
+ morning: 'sg',
+ afternoon: 'ch',
+ evening: 'tối',
+ night: 'đêm'
+ },
+ abbreviated: {
+ am: 'AM',
+ pm: 'PM',
+ midnight: 'nửa đêm',
+ noon: 'trưa',
+ morning: 'sáng',
+ afternoon: 'chiều',
+ evening: 'tối',
+ night: 'đêm'
+ },
+ wide: {
+ am: 'SA',
+ pm: 'CH',
+ midnight: 'nửa đêm',
+ noon: 'giữa trưa',
+ morning: 'vào buổi sáng',
+ afternoon: 'vào buổi chiều',
+ evening: 'vào buổi tối',
+ night: 'vào ban đêm'
+ }
+}
+
+// If ordinal numbers depend on context, for example,
+// if they are different for different grammatical genders,
+// use `options.unit`:
+//
+// var options = dirtyOptions || {}
+// var unit = String(options.unit)
+//
+// where `unit` can be 'month', 'quarter', 'week', 'isoWeek', 'dayOfYear',
+// 'dayOfMonth' or 'dayOfWeek'
+function ordinalNumber(dirtyNumber, dirtyOptions) {
+ var options = dirtyOptions || {}
+ var unit = String(options.unit)
+ var number = parseInt(dirtyNumber, 10)
+
+ if (unit === 'quarter') {
+ // many news outlets use "quý I"...
+ switch (number) {
+ case 1:
+ return 'I'
+ case 2:
+ return 'II'
+ case 3:
+ return 'III'
+ case 4:
+ return 'IV'
+ }
+ } else if (unit === 'day') {
+ // day of week in Vietnamese has ordinal number meaning,
+ // so we should use them, else it'll sound weird
+ switch (number) {
+ case 1:
+ return 'thứ 2' // meaning 2nd day but it's the first day of the week :D
+ case 2:
+ return 'thứ 3' // meaning 3rd day
+ case 3:
+ return 'thứ 4' // meaning 4th day and so on
+ case 4:
+ return 'thứ 5'
+ case 5:
+ return 'thứ 6'
+ case 6:
+ return 'thứ 7'
+ case 7:
+ return 'chủ nhật' // meaning Sunday, there's no 8th day :D
+ }
+ } else if (unit === 'week') {
+ if (number === 1) {
+ return 'thứ nhất'
+ } else {
+ return 'thứ ' + number
+ }
+ } else if (unit === 'dayOfYear') {
+ if (number === 1) {
+ return 'đầu tiên'
+ } else {
+ return 'thứ ' + number
+ }
+ }
+
+ // there are no different forms of ordinal numbers in Vietnamese
+ return number
+}
+
+var localize = {
+ ordinalNumber: ordinalNumber,
+
+ era: buildLocalizeFn({
+ values: eraValues,
+ defaultWidth: 'wide'
+ }),
+
+ quarter: buildLocalizeFn({
+ values: quarterValues,
+ defaultWidth: 'wide',
+ formattingValues: formattingQuarterValues,
+ defaultFormattingWidth: 'wide',
+ argumentCallback: function(quarter) {
+ return Number(quarter) - 1
+ }
+ }),
+
+ month: buildLocalizeFn({
+ values: monthValues,
+ defaultWidth: 'wide',
+ formattingValues: formattingMonthValues,
+ defaultFormattingWidth: 'wide'
+ }),
+
+ day: buildLocalizeFn({
+ values: dayValues,
+ defaultWidth: 'wide'
+ }),
+
+ dayPeriod: buildLocalizeFn({
+ values: dayPeriodValues,
+ defaultWidth: 'wide',
+ formattingValues: formattingDayPeriodValues,
+ defaultFormattingWidth: 'wide'
+ })
+}
+
+export default localize
diff --git a/date-fns/src/locale/vi/_lib/match/index.js b/date-fns/src/locale/vi/_lib/match/index.js
new file mode 100644
index 0000000..177c278
--- /dev/null
+++ b/date-fns/src/locale/vi/_lib/match/index.js
@@ -0,0 +1,158 @@
+import buildMatchPatternFn from '../../../_lib/buildMatchPatternFn/index'
+import buildMatchFn from '../../../_lib/buildMatchFn/index'
+
+var matchOrdinalNumberPattern = /^(\d+)/i
+var parseOrdinalNumberPattern = /\d+/i
+
+var matchEraPatterns = {
+ narrow: /^(tcn|scn)/i,
+ abbreviated: /^(trước CN|sau CN)/i,
+ wide: /^(trước Công Nguyên|sau Công Nguyên)/i
+}
+var parseEraPatterns = {
+ any: [/^t/i, /^s/i]
+}
+
+var matchQuarterPatterns = {
+ narrow: /^([1234]|i{1,3}v?)/i,
+ abbreviated: /^q([1234]|i{1,3}v?)/i,
+ wide: /^quý ([1234]|i{1,3}v?)/i
+}
+var parseQuarterPatterns = {
+ any: [/(1|i)$/i, /(2|ii)$/i, /(3|iii)$/i, /(4|iv)$/i]
+}
+
+var matchMonthPatterns = {
+ // month number may contain leading 0, 'thg' prefix may have space, underscore or empty before number
+ // note the order of '1' since it is a sub-string of '10', so must be lower priority
+ narrow: /^(0?[2-9]|10|11|12|0?1)/i,
+ // note the order of 'thg 1' since it is sub-string of 'thg 10', so must be lower priority
+ abbreviated: /^thg[ _]?(0?[1-9](?!\d)|10|11|12)/i,
+ // note the order of 'Mười' since it is sub-string of Mười Một, so must be lower priority
+ wide: /^tháng ?(Một|Hai|Ba|Tư|Năm|Sáu|Bảy|Tám|Chín|Mười|Mười ?Một|Mười ?Hai|0?[1-9](?!\d)|10|11|12)/i
+}
+var parseMonthPatterns = {
+ narrow: [
+ /0?1$/i,
+ /0?2/i,
+ /3/,
+ /4/,
+ /5/,
+ /6/,
+ /7/,
+ /8/,
+ /9/,
+ /10/,
+ /11/,
+ /12/
+ ],
+ abbreviated: [
+ /^thg[ _]?0?1(?!\d)/i,
+ /^thg[ _]?0?2/i,
+ /^thg[ _]?0?3/i,
+ /^thg[ _]?0?4/i,
+ /^thg[ _]?0?5/i,
+ /^thg[ _]?0?6/i,
+ /^thg[ _]?0?7/i,
+ /^thg[ _]?0?8/i,
+ /^thg[ _]?0?9/i,
+ /^thg[ _]?10/i,
+ /^thg[ _]?11/i,
+ /^thg[ _]?12/i
+ ],
+ wide: [
+ /^tháng ?(Một|0?1(?!\d))/i,
+ /^tháng ?(Hai|0?2)/i,
+ /^tháng ?(Ba|0?3)/i,
+ /^tháng ?(Tư|0?4)/i,
+ /^tháng ?(Năm|0?5)/i,
+ /^tháng ?(Sáu|0?6)/i,
+ /^tháng ?(Bảy|0?7)/i,
+ /^tháng ?(Tám|0?8)/i,
+ /^tháng ?(Chín|0?9)/i,
+ /^tháng ?(Mười|10)/i,
+ /^tháng ?(Mười ?Một|11)/i,
+ /^tháng ?(Mười ?Hai|12)/i
+ ]
+}
+
+var matchDayPatterns = {
+ narrow: /^(CN|T2|T3|T4|T5|T6|T7)/i,
+ short: /^(CN|Th ?2|Th ?3|Th ?4|Th ?5|Th ?6|Th ?7)/i,
+ abbreviated: /^(CN|Th ?2|Th ?3|Th ?4|Th ?5|Th ?6|Th ?7)/i,
+ wide: /^(Chủ ?Nhật|Chúa ?Nhật|thứ ?Hai|thứ ?Ba|thứ ?Tư|thứ ?Năm|thứ ?Sáu|thứ ?Bảy)/i
+}
+var parseDayPatterns = {
+ narrow: [/CN/i, /2/i, /3/i, /4/i, /5/i, /6/i, /7/i],
+ short: [/CN/i, /2/i, /3/i, /4/i, /5/i, /6/i, /7/i],
+ abbreviated: [/CN/i, /2/i, /3/i, /4/i, /5/i, /6/i, /7/i],
+ wide: [/(Chủ|Chúa) ?Nhật/i, /Hai/i, /Ba/i, /Tư/i, /Năm/i, /Sáu/i, /Bảy/i]
+}
+
+var matchDayPeriodPatterns = {
+ narrow: /^(a|p|nửa đêm|trưa|(giờ) (sáng|chiều|tối|đêm))/i,
+ abbreviated: /^(am|pm|nửa đêm|trưa|(giờ) (sáng|chiều|tối|đêm))/i,
+ wide: /^(ch[^i]*|sa|nửa đêm|trưa|(giờ) (sáng|chiều|tối|đêm))/i
+}
+var parseDayPeriodPatterns = {
+ any: {
+ am: /^(a|sa)/i,
+ pm: /^(p|ch[^i]*)/i,
+ midnight: /nửa đêm/i,
+ noon: /trưa/i,
+ morning: /sáng/i,
+ afternoon: /chiều/i,
+ evening: /tối/i,
+ night: /^đêm/i
+ }
+}
+
+var match = {
+ ordinalNumber: buildMatchPatternFn({
+ matchPattern: matchOrdinalNumberPattern,
+ parsePattern: parseOrdinalNumberPattern,
+ valueCallback: function(value) {
+ return parseInt(value, 10)
+ }
+ }),
+
+ era: buildMatchFn({
+ matchPatterns: matchEraPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseEraPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ quarter: buildMatchFn({
+ matchPatterns: matchQuarterPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseQuarterPatterns,
+ defaultParseWidth: 'any',
+ valueCallback: function(index) {
+ return index + 1
+ }
+ }),
+
+ month: buildMatchFn({
+ matchPatterns: matchMonthPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseMonthPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ day: buildMatchFn({
+ matchPatterns: matchDayPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseDayPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ dayPeriod: buildMatchFn({
+ matchPatterns: matchDayPeriodPatterns,
+ defaultMatchWidth: 'any',
+ parsePatterns: parseDayPeriodPatterns,
+ defaultParseWidth: 'any'
+ })
+}
+
+export default match
diff --git a/date-fns/src/locale/vi/index.d.ts b/date-fns/src/locale/vi/index.d.ts
new file mode 100644
index 0000000..17be5ca
--- /dev/null
+++ b/date-fns/src/locale/vi/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { vi } from 'date-fns/locale'
+export default vi
diff --git a/date-fns/src/locale/vi/index.js b/date-fns/src/locale/vi/index.js
new file mode 100644
index 0000000..a3487e7
--- /dev/null
+++ b/date-fns/src/locale/vi/index.js
@@ -0,0 +1,29 @@
+import formatDistance from './_lib/formatDistance/index'
+import formatLong from './_lib/formatLong/index'
+import formatRelative from './_lib/formatRelative/index'
+import localize from './_lib/localize/index'
+import match from './_lib/match/index'
+
+/**
+ * @type {Locale}
+ * @category Locales
+ * @summary Vietnamese locale (Vietnam).
+ * @language Vietnamese
+ * @iso-639-2 vie
+ * @author Thanh Tran [@trongthanh]{@link https://github.com/trongthanh}
+ * @author Leroy Hopson [@lihop]{@link https://github.com/lihop}
+ */
+var locale = {
+ code: 'vi',
+ formatDistance: formatDistance,
+ formatLong: formatLong,
+ formatRelative: formatRelative,
+ localize: localize,
+ match: match,
+ options: {
+ weekStartsOn: 1 /* Monday */,
+ firstWeekContainsDate: 1 /* First week of new year contains Jan 1st */
+ }
+}
+
+export default locale
diff --git a/date-fns/src/locale/vi/index.js.flow b/date-fns/src/locale/vi/index.js.flow
new file mode 100644
index 0000000..b9dfe66
--- /dev/null
+++ b/date-fns/src/locale/vi/index.js.flow
@@ -0,0 +1,35 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+declare module.exports: Locale
diff --git a/date-fns/src/locale/vi/snapshot.md b/date-fns/src/locale/vi/snapshot.md
new file mode 100644
index 0000000..3609a7a
--- /dev/null
+++ b/date-fns/src/locale/vi/snapshot.md
@@ -0,0 +1,304 @@
+# Vietnamese (vi) locale
+
+## `format` and `parse`
+
+| Title | Token string | Date | `format` result | `parse` result |
+| ------------------------------- | ------------ | ------------------------ | ------------------------------------------------------ | ------------------------ |
+| Calendar year | yo | 1987-02-11T12:13:14.015Z | 1987 | 1987-01-01T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 5 | 0005-01-01T00:00:00.000Z |
+| Local week-numbering year | Yo | 1987-02-11T12:13:14.015Z | 1987 | 1986-12-29T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 5 | 0004-12-27T00:00:00.000Z |
+| Quarter (formatting) | Qo | 2019-01-01T12:13:14.015Z | I | Invalid Date |
+| | | 2019-04-01T12:13:14.015Z | II | Invalid Date |
+| | QQQ | 2019-01-01T12:13:14.015Z | Q1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | Q2 | 2019-04-01T00:00:00.000Z |
+| | QQQQ | 2019-01-01T12:13:14.015Z | quý I | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | quý II | 2019-01-01T00:00:00.000Z |
+| | QQQQQ | 2019-01-01T12:13:14.015Z | 1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2 | 2019-04-01T00:00:00.000Z |
+| Quarter (stand-alone) | qo | 2019-01-01T12:13:14.015Z | I | Invalid Date |
+| | | 2019-04-01T12:13:14.015Z | II | Invalid Date |
+| | qqq | 2019-01-01T12:13:14.015Z | Q1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | Q2 | 2019-04-01T00:00:00.000Z |
+| | qqqq | 2019-01-01T12:13:14.015Z | Quý 1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | Quý 2 | 2019-04-01T00:00:00.000Z |
+| Month (formatting) | Mo | 2019-02-11T12:13:14.015Z | 2 | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7 | 2019-07-01T00:00:00.000Z |
+| | MMM | 2019-02-11T12:13:14.015Z | thg 2 | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | thg 7 | 2019-07-01T00:00:00.000Z |
+| | MMMM | 2019-02-11T12:13:14.015Z | tháng 02 | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | tháng 07 | 2019-07-01T00:00:00.000Z |
+| | MMMMM | 2019-02-11T12:13:14.015Z | 02 | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 07 | 2019-07-01T00:00:00.000Z |
+| Month (stand-alone) | Lo | 2019-02-11T12:13:14.015Z | 2 | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7 | 2019-07-01T00:00:00.000Z |
+| | LLL | 2019-02-11T12:13:14.015Z | Thg 2 | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | Thg 7 | 2019-07-01T00:00:00.000Z |
+| | LLLL | 2019-02-11T12:13:14.015Z | Tháng Hai | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | Tháng Bảy | 2019-07-01T00:00:00.000Z |
+| | LLLLL | 2019-02-11T12:13:14.015Z | 2 | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7 | 2019-07-01T00:00:00.000Z |
+| Local week of year | wo | 2019-01-01T12:13:14.015Z | thứ nhất | Invalid Date |
+| | | 2019-12-01T12:13:14.015Z | thứ 48 | Invalid Date |
+| ISO week of year | Io | 2019-01-01T12:13:14.015Z | thứ nhất | Invalid Date |
+| | | 2019-12-01T12:13:14.015Z | thứ 48 | Invalid Date |
+| Day of month | do | 2019-02-11T12:13:14.015Z | 11 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-28T12:13:14.015Z | 28 | 2019-02-28T00:00:00.000Z |
+| Day of year | Do | 2019-02-11T12:13:14.015Z | thứ 42 | Invalid Date |
+| | | 2019-12-31T12:13:14.015Z | thứ 365 | Invalid Date |
+| Day of week (formatting) | E | 2019-02-11T12:13:14.015Z | Thứ 2 | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | Thứ 6 | Invalid Date |
+| | EE | 2019-02-11T12:13:14.015Z | Thứ 2 | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | Thứ 6 | Invalid Date |
+| | EEE | 2019-02-11T12:13:14.015Z | Thứ 2 | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | Thứ 6 | Invalid Date |
+| | EEEE | 2019-02-11T12:13:14.015Z | Thứ Hai | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Thứ Sáu | 2019-02-15T00:00:00.000Z |
+| | EEEEE | 2019-02-11T12:13:14.015Z | T2 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | T6 | 2019-02-15T00:00:00.000Z |
+| | EEEEEE | 2019-02-11T12:13:14.015Z | Th 2 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Th 6 | 2019-02-15T00:00:00.000Z |
+| ISO day of week (formatting) | io | 2019-02-11T12:13:14.015Z | thứ 2 | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | thứ 6 | Invalid Date |
+| | iii | 2019-02-11T12:13:14.015Z | Thứ 2 | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | Thứ 6 | Invalid Date |
+| | iiii | 2019-02-11T12:13:14.015Z | Thứ Hai | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Thứ Sáu | 2019-02-15T00:00:00.000Z |
+| | iiiii | 2019-02-11T12:13:14.015Z | T2 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | T6 | 2019-02-15T00:00:00.000Z |
+| | iiiiii | 2019-02-11T12:13:14.015Z | Th 2 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Th 6 | 2019-02-15T00:00:00.000Z |
+| Local day of week (formatting) | eo | 2019-02-11T12:13:14.015Z | thứ 2 | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | thứ 6 | Invalid Date |
+| | eee | 2019-02-11T12:13:14.015Z | Thứ 2 | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | Thứ 6 | Invalid Date |
+| | eeee | 2019-02-11T12:13:14.015Z | Thứ Hai | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Thứ Sáu | 2019-02-15T00:00:00.000Z |
+| | eeeee | 2019-02-11T12:13:14.015Z | T2 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | T6 | 2019-02-15T00:00:00.000Z |
+| | eeeeee | 2019-02-11T12:13:14.015Z | Th 2 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Th 6 | 2019-02-15T00:00:00.000Z |
+| Local day of week (stand-alone) | co | 2019-02-11T12:13:14.015Z | thứ 2 | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | thứ 6 | Invalid Date |
+| | ccc | 2019-02-11T12:13:14.015Z | Thứ 2 | Invalid Date |
+| | | 2019-02-15T12:13:14.015Z | Thứ 6 | Invalid Date |
+| | cccc | 2019-02-11T12:13:14.015Z | Thứ Hai | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Thứ Sáu | 2019-02-15T00:00:00.000Z |
+| | ccccc | 2019-02-11T12:13:14.015Z | T2 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | T6 | 2019-02-15T00:00:00.000Z |
+| | cccccc | 2019-02-11T12:13:14.015Z | Th 2 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | Th 6 | 2019-02-15T00:00:00.000Z |
+| AM, PM | a | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | aa | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | aaa | 2019-02-11T11:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | aaaa | 2019-02-11T11:13:14.015Z | SA | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | CH | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | CH | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | SA | 2019-02-11T00:00:00.000Z |
+| | aaaaa | 2019-02-11T11:13:14.015Z | am | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | pm | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | pm | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | am | Invalid Date |
+| AM, PM, noon, midnight | b | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | bb | 2019-02-11T11:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | PM | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | AM | 2019-02-11T00:00:00.000Z |
+| | bbb | 2019-02-11T11:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | pm | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | am | 2019-02-11T00:00:00.000Z |
+| | bbbb | 2019-02-11T11:13:14.015Z | SA | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | CH | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | CH | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | SA | 2019-02-11T00:00:00.000Z |
+| | bbbbb | 2019-02-11T11:13:14.015Z | am | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | pm | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | pm | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | am | Invalid Date |
+| Flexible day period | B | 2019-02-11T11:13:14.015Z | sáng | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | chiều | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | tối | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | đêm | Invalid Date |
+| | BB | 2019-02-11T11:13:14.015Z | sáng | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | chiều | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | tối | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | đêm | Invalid Date |
+| | BBB | 2019-02-11T11:13:14.015Z | sáng | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | chiều | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | tối | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | đêm | Invalid Date |
+| | BBBB | 2019-02-11T11:13:14.015Z | vào buổi sáng | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | vào buổi chiều | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | vào buổi tối | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | vào ban đêm | Invalid Date |
+| | BBBBB | 2019-02-11T11:13:14.015Z | sg | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | ch | Invalid Date |
+| | | 2019-02-11T19:13:14.015Z | tối | Invalid Date |
+| | | 2019-02-11T02:13:14.015Z | đêm | Invalid Date |
+| Hour [1-12] | ho | 2019-02-11T11:13:14.015Z | 11 | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11 | 2019-02-11T23:00:00.000Z |
+| Hour [0-23] | Ho | 2019-02-11T11:13:14.015Z | 11 | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23 | 2019-02-11T23:00:00.000Z |
+| Hour [0-11] | Ko | 2019-02-11T11:13:14.015Z | 11 | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11 | 2019-02-11T23:00:00.000Z |
+| Hour [1-24] | ko | 2019-02-11T11:13:14.015Z | 11 | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23 | 2019-02-11T23:00:00.000Z |
+| Minute | mo | 2019-01-01T12:01:14.015Z | 1 | 2019-01-01T12:01:00.000Z |
+| | | 2019-04-01T12:55:14.015Z | 55 | 2019-04-01T12:55:00.000Z |
+| Second | so | 2019-01-01T12:13:01.015Z | 1 | 2019-01-01T12:13:01.000Z |
+| | | 2019-04-01T12:13:55.015Z | 55 | 2019-04-01T12:13:55.000Z |
+| Long localized date | P | 1987-02-11T12:13:14.015Z | 11/02/1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29/05/1453 | 1453-05-29T00:00:00.000Z |
+| | PP | 1987-02-11T12:13:14.015Z | 11 thg 2 năm 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 thg 5 năm 1453 | 1453-05-29T00:00:00.000Z |
+| | PPP | 1987-02-11T12:13:14.015Z | ngày 11 tháng 02 năm 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | ngày 29 tháng 05 năm 1453 | 1453-05-29T00:00:00.000Z |
+| | PPPP | 1987-02-11T12:13:14.015Z | Thứ Tư, ngày 11 tháng 02 năm 1987 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | Chủ Nhật, ngày 29 tháng 05 năm 1453 | 1453-05-29T00:00:00.000Z |
+| Long localized time | p | 1987-02-11T12:13:14.015Z | 12:13 | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 23:59 | 1453-05-29T23:59:00.000Z |
+| | pp | 1987-02-11T12:13:14.015Z | 12:13:14 | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 | 1453-05-29T23:59:59.000Z |
+| | ppp | 1987-02-11T12:13:14.015Z | 12:13:14 GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 GMT+0 | Errored |
+| | pppp | 1987-02-11T12:13:14.015Z | 12:13:14 GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 23:59:59 GMT+00:00 | Errored |
+| Combination of date and time | Pp | 1987-02-11T12:13:14.015Z | 11/02/1987 12:13 | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29/05/1453 23:59 | 1453-05-29T23:59:00.000Z |
+| | PPpp | 1987-02-11T12:13:14.015Z | 11 thg 2 năm 1987 12:13:14 | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 29 thg 5 năm 1453 23:59:59 | 1453-05-29T23:59:59.000Z |
+| | PPPppp | 1987-02-11T12:13:14.015Z | ngày 11 tháng 02 năm 1987 12:13:14 GMT+0 | Errored |
+| | | 1453-05-29T23:59:59.999Z | ngày 29 tháng 05 năm 1453 23:59:59 GMT+0 | Errored |
+| | PPPPpppp | 1987-02-11T12:13:14.015Z | Thứ Tư, ngày 11 tháng 02 năm 1987 12:13:14 GMT+00:00 | Errored |
+| | | 1453-05-29T23:59:59.999Z | Chủ Nhật, ngày 29 tháng 05 năm 1453 23:59:59 GMT+00:00 | Errored |
+
+## `formatDistance`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `includeSeconds: true` | `addSuffix: true` |
+| ------------------------ | -------------- | ---------------------- | -------------------- |
+| 2006-01-01T00:00:00.000Z | khoảng 6 năm | khoảng 6 năm | khoảng 6 năm nữa |
+| 2005-01-01T00:00:00.000Z | khoảng 5 năm | khoảng 5 năm | khoảng 5 năm nữa |
+| 2004-01-01T00:00:00.000Z | khoảng 4 năm | khoảng 4 năm | khoảng 4 năm nữa |
+| 2003-01-01T00:00:00.000Z | khoảng 3 năm | khoảng 3 năm | khoảng 3 năm nữa |
+| 2002-01-01T00:00:00.000Z | khoảng 2 năm | khoảng 2 năm | khoảng 2 năm nữa |
+| 2001-06-01T00:00:00.000Z | hơn 1 năm | hơn 1 năm | hơn 1 năm nữa |
+| 2001-02-01T00:00:00.000Z | khoảng 1 năm | khoảng 1 năm | khoảng 1 năm nữa |
+| 2001-01-01T00:00:00.000Z | khoảng 1 năm | khoảng 1 năm | khoảng 1 năm nữa |
+| 2000-06-01T00:00:00.000Z | 5 tháng | 5 tháng | 5 tháng nữa |
+| 2000-03-01T00:00:00.000Z | 2 tháng | 2 tháng | 2 tháng nữa |
+| 2000-02-01T00:00:00.000Z | khoảng 1 tháng | khoảng 1 tháng | khoảng 1 tháng nữa |
+| 2000-01-15T00:00:00.000Z | 14 ngày | 14 ngày | 14 ngày nữa |
+| 2000-01-02T00:00:00.000Z | 1 ngày | 1 ngày | 1 ngày nữa |
+| 2000-01-01T06:00:00.000Z | khoảng 6 giờ | khoảng 6 giờ | khoảng 6 giờ nữa |
+| 2000-01-01T01:00:00.000Z | khoảng 1 giờ | khoảng 1 giờ | khoảng 1 giờ nữa |
+| 2000-01-01T00:45:00.000Z | khoảng 1 giờ | khoảng 1 giờ | khoảng 1 giờ nữa |
+| 2000-01-01T00:30:00.000Z | 30 phút | 30 phút | 30 phút nữa |
+| 2000-01-01T00:15:00.000Z | 15 phút | 15 phút | 15 phút nữa |
+| 2000-01-01T00:01:00.000Z | 1 phút | 1 phút | 1 phút nữa |
+| 2000-01-01T00:00:25.000Z | dưới 1 phút | nửa phút | dưới 1 phút nữa |
+| 2000-01-01T00:00:15.000Z | dưới 1 phút | dưới 20 giây | dưới 1 phút nữa |
+| 2000-01-01T00:00:05.000Z | dưới 1 phút | dưới 10 giây | dưới 1 phút nữa |
+| 2000-01-01T00:00:00.000Z | dưới 1 phút | dưới 5 giây | dưới 1 phút trước |
+| 1999-12-31T23:59:55.000Z | dưới 1 phút | dưới 10 giây | dưới 1 phút trước |
+| 1999-12-31T23:59:45.000Z | dưới 1 phút | dưới 20 giây | dưới 1 phút trước |
+| 1999-12-31T23:59:35.000Z | dưới 1 phút | nửa phút | dưới 1 phút trước |
+| 1999-12-31T23:59:00.000Z | 1 phút | 1 phút | 1 phút trước |
+| 1999-12-31T23:45:00.000Z | 15 phút | 15 phút | 15 phút trước |
+| 1999-12-31T23:30:00.000Z | 30 phút | 30 phút | 30 phút trước |
+| 1999-12-31T23:15:00.000Z | khoảng 1 giờ | khoảng 1 giờ | khoảng 1 giờ trước |
+| 1999-12-31T23:00:00.000Z | khoảng 1 giờ | khoảng 1 giờ | khoảng 1 giờ trước |
+| 1999-12-31T18:00:00.000Z | khoảng 6 giờ | khoảng 6 giờ | khoảng 6 giờ trước |
+| 1999-12-30T00:00:00.000Z | 2 ngày | 2 ngày | 2 ngày trước |
+| 1999-12-15T00:00:00.000Z | 17 ngày | 17 ngày | 17 ngày trước |
+| 1999-12-01T00:00:00.000Z | khoảng 1 tháng | khoảng 1 tháng | khoảng 1 tháng trước |
+| 1999-11-01T00:00:00.000Z | 2 tháng | 2 tháng | 2 tháng trước |
+| 1999-06-01T00:00:00.000Z | 7 tháng | 7 tháng | 7 tháng trước |
+| 1999-01-01T00:00:00.000Z | khoảng 1 năm | khoảng 1 năm | khoảng 1 năm trước |
+| 1998-12-01T00:00:00.000Z | khoảng 1 năm | khoảng 1 năm | khoảng 1 năm trước |
+| 1998-06-01T00:00:00.000Z | hơn 1 năm | hơn 1 năm | hơn 1 năm trước |
+| 1998-01-01T00:00:00.000Z | khoảng 2 năm | khoảng 2 năm | khoảng 2 năm trước |
+| 1997-01-01T00:00:00.000Z | khoảng 3 năm | khoảng 3 năm | khoảng 3 năm trước |
+| 1996-01-01T00:00:00.000Z | khoảng 4 năm | khoảng 4 năm | khoảng 4 năm trước |
+| 1995-01-01T00:00:00.000Z | khoảng 5 năm | khoảng 5 năm | khoảng 5 năm trước |
+| 1994-01-01T00:00:00.000Z | khoảng 6 năm | khoảng 6 năm | khoảng 6 năm trước |
+
+## `formatDistanceStrict`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `addSuffix: true` | With forced unit (i.e. `hour`) |
+| ------------------------ | ------- | ----------------- | ------------------------------ |
+| 2006-01-01T00:00:00.000Z | 6 năm | 6 năm nữa | 52608 giờ |
+| 2005-01-01T00:00:00.000Z | 5 năm | 5 năm nữa | 43848 giờ |
+| 2004-01-01T00:00:00.000Z | 4 năm | 4 năm nữa | 35064 giờ |
+| 2003-01-01T00:00:00.000Z | 3 năm | 3 năm nữa | 26304 giờ |
+| 2002-01-01T00:00:00.000Z | 2 năm | 2 năm nữa | 17544 giờ |
+| 2001-06-01T00:00:00.000Z | 1 năm | 1 năm nữa | 12408 giờ |
+| 2001-02-01T00:00:00.000Z | 1 năm | 1 năm nữa | 9528 giờ |
+| 2001-01-01T00:00:00.000Z | 1 năm | 1 năm nữa | 8784 giờ |
+| 2000-06-01T00:00:00.000Z | 5 tháng | 5 tháng nữa | 3648 giờ |
+| 2000-03-01T00:00:00.000Z | 2 tháng | 2 tháng nữa | 1440 giờ |
+| 2000-02-01T00:00:00.000Z | 1 tháng | 1 tháng nữa | 744 giờ |
+| 2000-01-15T00:00:00.000Z | 14 ngày | 14 ngày nữa | 336 giờ |
+| 2000-01-02T00:00:00.000Z | 1 ngày | 1 ngày nữa | 24 giờ |
+| 2000-01-01T06:00:00.000Z | 6 giờ | 6 giờ nữa | 6 giờ |
+| 2000-01-01T01:00:00.000Z | 1 giờ | 1 giờ nữa | 1 giờ |
+| 2000-01-01T00:45:00.000Z | 45 phút | 45 phút nữa | 1 giờ |
+| 2000-01-01T00:30:00.000Z | 30 phút | 30 phút nữa | 1 giờ |
+| 2000-01-01T00:15:00.000Z | 15 phút | 15 phút nữa | 0 giờ |
+| 2000-01-01T00:01:00.000Z | 1 phút | 1 phút nữa | 0 giờ |
+| 2000-01-01T00:00:25.000Z | 25 giây | 25 giây nữa | 0 giờ |
+| 2000-01-01T00:00:15.000Z | 15 giây | 15 giây nữa | 0 giờ |
+| 2000-01-01T00:00:05.000Z | 5 giây | 5 giây nữa | 0 giờ |
+| 2000-01-01T00:00:00.000Z | 0 giây | 0 giây trước | 0 giờ |
+| 1999-12-31T23:59:55.000Z | 5 giây | 5 giây trước | 0 giờ |
+| 1999-12-31T23:59:45.000Z | 15 giây | 15 giây trước | 0 giờ |
+| 1999-12-31T23:59:35.000Z | 25 giây | 25 giây trước | 0 giờ |
+| 1999-12-31T23:59:00.000Z | 1 phút | 1 phút trước | 0 giờ |
+| 1999-12-31T23:45:00.000Z | 15 phút | 15 phút trước | 0 giờ |
+| 1999-12-31T23:30:00.000Z | 30 phút | 30 phút trước | 1 giờ |
+| 1999-12-31T23:15:00.000Z | 45 phút | 45 phút trước | 1 giờ |
+| 1999-12-31T23:00:00.000Z | 1 giờ | 1 giờ trước | 1 giờ |
+| 1999-12-31T18:00:00.000Z | 6 giờ | 6 giờ trước | 6 giờ |
+| 1999-12-30T00:00:00.000Z | 2 ngày | 2 ngày trước | 48 giờ |
+| 1999-12-15T00:00:00.000Z | 17 ngày | 17 ngày trước | 408 giờ |
+| 1999-12-01T00:00:00.000Z | 1 tháng | 1 tháng trước | 744 giờ |
+| 1999-11-01T00:00:00.000Z | 2 tháng | 2 tháng trước | 1464 giờ |
+| 1999-06-01T00:00:00.000Z | 7 tháng | 7 tháng trước | 5136 giờ |
+| 1999-01-01T00:00:00.000Z | 1 năm | 1 năm trước | 8760 giờ |
+| 1998-12-01T00:00:00.000Z | 1 năm | 1 năm trước | 9504 giờ |
+| 1998-06-01T00:00:00.000Z | 2 năm | 2 năm trước | 13896 giờ |
+| 1998-01-01T00:00:00.000Z | 2 năm | 2 năm trước | 17520 giờ |
+| 1997-01-01T00:00:00.000Z | 3 năm | 3 năm trước | 26280 giờ |
+| 1996-01-01T00:00:00.000Z | 4 năm | 4 năm trước | 35064 giờ |
+| 1995-01-01T00:00:00.000Z | 5 năm | 5 năm trước | 43824 giờ |
+| 1994-01-01T00:00:00.000Z | 6 năm | 6 năm trước | 52584 giờ |
+
+## `formatRelative`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result |
+| ------------------------ | -------------------------------- |
+| 2000-01-10T00:00:00.000Z | 10/01/2000 |
+| 2000-01-05T00:00:00.000Z | Thứ Tư tới vào lúc 00:00 |
+| 2000-01-02T00:00:00.000Z | ngày mai vào lúc 00:00 |
+| 2000-01-01T00:00:00.000Z | hôm nay vào lúc 00:00 |
+| 1999-12-31T00:00:00.000Z | hôm qua vào lúc 00:00 |
+| 1999-12-27T00:00:00.000Z | Thứ Hai tuần trước vào lúc 00:00 |
+| 1999-12-21T00:00:00.000Z | 21/12/1999 |
diff --git a/date-fns/src/locale/zh-CN/_lib/formatDistance/index.js b/date-fns/src/locale/zh-CN/_lib/formatDistance/index.js
new file mode 100644
index 0000000..df916e8
--- /dev/null
+++ b/date-fns/src/locale/zh-CN/_lib/formatDistance/index.js
@@ -0,0 +1,101 @@
+var formatDistanceLocale = {
+ lessThanXSeconds: {
+ one: '不到 1 秒',
+ other: '不到 {{count}} 秒'
+ },
+
+ xSeconds: {
+ one: '1 秒',
+ other: '{{count}} 秒'
+ },
+
+ halfAMinute: '半分钟',
+
+ lessThanXMinutes: {
+ one: '不到 1 分钟',
+ other: '不到 {{count}} 分钟'
+ },
+
+ xMinutes: {
+ one: '1 分钟',
+ other: '{{count}} 分钟'
+ },
+
+ xHours: {
+ one: '1 小时',
+ other: '{{count}} 小时'
+ },
+
+ aboutXHours: {
+ one: '大约 1 小时',
+ other: '大约 {{count}} 小时'
+ },
+
+ xDays: {
+ one: '1 天',
+ other: '{{count}} 天'
+ },
+
+ aboutXWeeks: {
+ one: '大约 1 个星期',
+ other: '大约 {{count}} 个星期'
+ },
+
+ xWeeks: {
+ one: '1 个星期',
+ other: '{{count}} 个星期'
+ },
+
+ aboutXMonths: {
+ one: '大约 1 个月',
+ other: '大约 {{count}} 个月'
+ },
+
+ xMonths: {
+ one: '1 个月',
+ other: '{{count}} 个月'
+ },
+
+ aboutXYears: {
+ one: '大约 1 年',
+ other: '大约 {{count}} 年'
+ },
+
+ xYears: {
+ one: '1 年',
+ other: '{{count}} 年'
+ },
+
+ overXYears: {
+ one: '超过 1 年',
+ other: '超过 {{count}} 年'
+ },
+
+ almostXYears: {
+ one: '将近 1 年',
+ other: '将近 {{count}} 年'
+ }
+}
+
+export default function formatDistance(token, count, options) {
+ options = options || {}
+
+ var result
+ if (typeof formatDistanceLocale[token] === 'string') {
+ result = formatDistanceLocale[token]
+ } else if (count === 1) {
+ result = formatDistanceLocale[token].one
+ } else {
+ result = formatDistanceLocale[token].other.replace('{{count}}', count)
+ }
+
+ if (options.addSuffix) {
+ if (options.comparison > 0) {
+ return result + '内'
+ } else {
+ return result + '前'
+ }
+ }
+
+ return result
+}
diff --git a/date-fns/src/locale/zh-CN/_lib/formatLong/index.js b/date-fns/src/locale/zh-CN/_lib/formatLong/index.js
new file mode 100644
index 0000000..2d3ba38
--- /dev/null
+++ b/date-fns/src/locale/zh-CN/_lib/formatLong/index.js
@@ -0,0 +1,41 @@
+import buildFormatLongFn from '../../../_lib/buildFormatLongFn/index'
+
+var dateFormats = {
+ full: "y'年'M'月'd'日' EEEE",
+ long: "y'年'M'月'd'日'",
+ medium: 'yyyy-MM-dd',
+ short: 'yy-MM-dd'
+}
+
+var timeFormats = {
+ full: 'zzzz a h:mm:ss',
+ long: 'z a h:mm:ss',
+ medium: 'a h:mm:ss',
+ short: 'a h:mm'
+}
+
+var dateTimeFormats = {
+ full: '{{date}} {{time}}',
+ long: '{{date}} {{time}}',
+ medium: '{{date}} {{time}}',
+ short: '{{date}} {{time}}'
+}
+
+var formatLong = {
+ date: buildFormatLongFn({
+ formats: dateFormats,
+ defaultWidth: 'full'
+ }),
+
+ time: buildFormatLongFn({
+ formats: timeFormats,
+ defaultWidth: 'full'
+ }),
+
+ dateTime: buildFormatLongFn({
+ formats: dateTimeFormats,
+ defaultWidth: 'full'
+ })
+}
+
+export default formatLong
diff --git a/date-fns/src/locale/zh-CN/_lib/formatRelative/index.js b/date-fns/src/locale/zh-CN/_lib/formatRelative/index.js
new file mode 100644
index 0000000..bc50f4d
--- /dev/null
+++ b/date-fns/src/locale/zh-CN/_lib/formatRelative/index.js
@@ -0,0 +1,29 @@
+import isSameUTCWeek from '../../../../_lib/isSameUTCWeek/index'
+
+function checkWeek(_date, _baseDate, _options, baseFormat) {
+ if (isSameUTCWeek(_date, _baseDate, _options)) {
+ return baseFormat // in same week
+ } else if (_date.getTime() > _baseDate.getTime()) {
+ return "'下个'" + baseFormat // in next week
+ }
+ return "'上个'" + baseFormat // in last week
+}
+
+var formatRelativeLocale = {
+ lastWeek: checkWeek, // days before yesterday, maybe in this week or last week
+ yesterday: "'昨天' p",
+ today: "'今天' p",
+ tomorrow: "'明天' p",
+ nextWeek: checkWeek, // days after tomorrow, maybe in this week or next week
+ other: 'PP p'
+}
+
+export default function formatRelative(token, _date, _baseDate, _options) {
+ var format = formatRelativeLocale[token]
+
+ if (typeof format === 'function') {
+ return format(_date, _baseDate, _options, 'eeee p')
+ }
+
+ return format
+}
diff --git a/date-fns/src/locale/zh-CN/_lib/localize/index.js b/date-fns/src/locale/zh-CN/_lib/localize/index.js
new file mode 100644
index 0000000..c3027be
--- /dev/null
+++ b/date-fns/src/locale/zh-CN/_lib/localize/index.js
@@ -0,0 +1,194 @@
+import buildLocalizeFn from '../../../_lib/buildLocalizeFn/index'
+
+var eraValues = {
+ narrow: ['前', '公元'],
+ abbreviated: ['前', '公元'],
+ wide: ['公元前', '公元']
+}
+
+var quarterValues = {
+ narrow: ['1', '2', '3', '4'],
+ abbreviated: ['第一刻', '第二刻', '第三刻', '第四刻'],
+ wide: ['第一刻钟', '第二刻钟', '第三刻钟', '第四刻钟']
+}
+
+var monthValues = {
+ narrow: [
+ '一',
+ '二',
+ '三',
+ '四',
+ '五',
+ '六',
+ '七',
+ '八',
+ '九',
+ '十',
+ '十一',
+ '十二'
+ ],
+ abbreviated: [
+ '1月',
+ '2月',
+ '3月',
+ '4月',
+ '5月',
+ '6月',
+ '7月',
+ '8月',
+ '9月',
+ '10月',
+ '11月',
+ '12月'
+ ],
+ wide: [
+ '一月',
+ '二月',
+ '三月',
+ '四月',
+ '五月',
+ '六月',
+ '七月',
+ '八月',
+ '九月',
+ '十月',
+ '十一月',
+ '十二月'
+ ]
+}
+
+var dayValues = {
+ narrow: ['日', '一', '二', '三', '四', '五', '六'],
+ short: ['日', '一', '二', '三', '四', '五', '六'],
+ abbreviated: ['周日', '周一', '周二', '周三', '周四', '周五', '周六'],
+ wide: ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六']
+}
+
+var dayPeriodValues = {
+ narrow: {
+ am: '上',
+ pm: '下',
+ midnight: '凌晨',
+ noon: '午',
+ morning: '早',
+ afternoon: '下午',
+ evening: '晚',
+ night: '夜'
+ },
+ abbreviated: {
+ am: '上午',
+ pm: '下午',
+ midnight: '凌晨',
+ noon: '中午',
+ morning: '早晨',
+ afternoon: '中午',
+ evening: '晚上',
+ night: '夜间'
+ },
+ wide: {
+ am: '上午',
+ pm: '下午',
+ midnight: '凌晨',
+ noon: '中午',
+ morning: '早晨',
+ afternoon: '中午',
+ evening: '晚上',
+ night: '夜间'
+ }
+}
+var formattingDayPeriodValues = {
+ narrow: {
+ am: '上',
+ pm: '下',
+ midnight: '凌晨',
+ noon: '午',
+ morning: '早',
+ afternoon: '下午',
+ evening: '晚',
+ night: '夜'
+ },
+ abbreviated: {
+ am: '上午',
+ pm: '下午',
+ midnight: '凌晨',
+ noon: '中午',
+ morning: '早晨',
+ afternoon: '中午',
+ evening: '晚上',
+ night: '夜间'
+ },
+ wide: {
+ am: '上午',
+ pm: '下午',
+ midnight: '凌晨',
+ noon: '中午',
+ morning: '早晨',
+ afternoon: '中午',
+ evening: '晚上',
+ night: '夜间'
+ }
+}
+
+function ordinalNumber(dirtyNumber, dirtyOptions) {
+ // If ordinal numbers depend on context, for example,
+ // if they are different for different grammatical genders,
+ // use `options.unit`:
+ //
+ // var options = dirtyOptions || {}
+ // var unit = String(options.unit)
+ //
+ // where `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',
+ // 'day', 'hour', 'minute', 'second'
+ var number = Number(dirtyNumber)
+ var options = dirtyOptions || {}
+ var unit = String(options.unit)
+
+ switch (unit) {
+ case 'date':
+ return number.toString() + '日'
+ case 'hour':
+ return number.toString() + '时'
+ case 'minute':
+ return number.toString() + '分'
+ case 'second':
+ return number.toString() + '秒'
+ default:
+ return '第 ' + number.toString()
+ }
+}
+
+var localize = {
+ ordinalNumber: ordinalNumber,
+
+ era: buildLocalizeFn({
+ values: eraValues,
+ defaultWidth: 'wide'
+ }),
+
+ quarter: buildLocalizeFn({
+ values: quarterValues,
+ defaultWidth: 'wide',
+ argumentCallback: function(quarter) {
+ return Number(quarter) - 1
+ }
+ }),
+
+ month: buildLocalizeFn({
+ values: monthValues,
+ defaultWidth: 'wide'
+ }),
+
+ day: buildLocalizeFn({
+ values: dayValues,
+ defaultWidth: 'wide'
+ }),
+
+ dayPeriod: buildLocalizeFn({
+ values: dayPeriodValues,
+ defaultWidth: 'wide',
+ formattingValues: formattingDayPeriodValues,
+ defaultFormattingWidth: 'wide'
+ })
+}
+
+export default localize
diff --git a/date-fns/src/locale/zh-CN/_lib/match/index.js b/date-fns/src/locale/zh-CN/_lib/match/index.js
new file mode 100644
index 0000000..7b4cb2f
--- /dev/null
+++ b/date-fns/src/locale/zh-CN/_lib/match/index.js
@@ -0,0 +1,135 @@
+import buildMatchPatternFn from '../../../_lib/buildMatchPatternFn/index'
+import buildMatchFn from '../../../_lib/buildMatchFn/index'
+
+var matchOrdinalNumberPattern = /^(第\s*)?\d+(日|时|分|秒)?/i
+var parseOrdinalNumberPattern = /\d+/i
+
+var matchEraPatterns = {
+ narrow: /^(前)/i,
+ abbreviated: /^(前)/i,
+ wide: /^(公元前|公元)/i
+}
+var parseEraPatterns = {
+ any: [/^(前)/i, /^(公元)/i]
+}
+
+var matchQuarterPatterns = {
+ narrow: /^[1234]/i,
+ abbreviated: /^第[一二三四]刻/i,
+ wide: /^第[一二三四]刻钟/i
+}
+var parseQuarterPatterns = {
+ any: [/(1|一)/i, /(2|二)/i, /(3|三)/i, /(4|四)/i]
+}
+
+var matchMonthPatterns = {
+ narrow: /^(一|二|三|四|五|六|七|八|九|十[二一])/i,
+ abbreviated: /^(一|二|三|四|五|六|七|八|九|十[二一]|\d|1[12])月/i,
+ wide: /^(一|二|三|四|五|六|七|八|九|十[二一])月/i
+}
+var parseMonthPatterns = {
+ narrow: [
+ /^一/i,
+ /^二/i,
+ /^三/i,
+ /^四/i,
+ /^五/i,
+ /^六/i,
+ /^七/i,
+ /^八/i,
+ /^九/i,
+ /^十(?!(一|二))/i,
+ /^十一/i,
+ /^十二/i
+ ],
+ any: [
+ /^一|1/i,
+ /^二|2/i,
+ /^三|3/i,
+ /^四|4/i,
+ /^五|5/i,
+ /^六|6/i,
+ /^七|7/i,
+ /^八|8/i,
+ /^九|9/i,
+ /^十(?!(一|二))|10/i,
+ /^十一|11/i,
+ /^十二|12/i
+ ]
+}
+
+var matchDayPatterns = {
+ narrow: /^[一二三四五六日]/i,
+ short: /^[一二三四五六日]/i,
+ abbreviated: /^周[一二三四五六日]/i,
+ wide: /^星期[一二三四五六日]/i
+}
+var parseDayPatterns = {
+ any: [/日/i, /一/i, /二/i, /三/i, /四/i, /五/i, /六/i]
+}
+
+var matchDayPeriodPatterns = {
+ any: /^(上午?|下午?|午夜|[中正]午|早上?|下午|晚上?|凌晨|)/i
+}
+var parseDayPeriodPatterns = {
+ any: {
+ am: /^上午?/i,
+ pm: /^下午?/i,
+ midnight: /^午夜/i,
+ noon: /^[中正]午/i,
+ morning: /^早上/i,
+ afternoon: /^下午/i,
+ evening: /^晚上?/i,
+ night: /^凌晨/i
+ }
+}
+
+var match = {
+ ordinalNumber: buildMatchPatternFn({
+ matchPattern: matchOrdinalNumberPattern,
+ parsePattern: parseOrdinalNumberPattern,
+ valueCallback: function(value) {
+ return parseInt(value, 10)
+ }
+ }),
+
+ era: buildMatchFn({
+ matchPatterns: matchEraPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseEraPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ quarter: buildMatchFn({
+ matchPatterns: matchQuarterPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseQuarterPatterns,
+ defaultParseWidth: 'any',
+ valueCallback: function(index) {
+ return index + 1
+ }
+ }),
+
+ month: buildMatchFn({
+ matchPatterns: matchMonthPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseMonthPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ day: buildMatchFn({
+ matchPatterns: matchDayPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseDayPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ dayPeriod: buildMatchFn({
+ matchPatterns: matchDayPeriodPatterns,
+ defaultMatchWidth: 'any',
+ parsePatterns: parseDayPeriodPatterns,
+ defaultParseWidth: 'any'
+ })
+}
+
+export default match
diff --git a/date-fns/src/locale/zh-CN/index.d.ts b/date-fns/src/locale/zh-CN/index.d.ts
new file mode 100644
index 0000000..ffe2f2e
--- /dev/null
+++ b/date-fns/src/locale/zh-CN/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { zhCN } from 'date-fns/locale'
+export default zhCN
diff --git a/date-fns/src/locale/zh-CN/index.js b/date-fns/src/locale/zh-CN/index.js
new file mode 100644
index 0000000..0540e58
--- /dev/null
+++ b/date-fns/src/locale/zh-CN/index.js
@@ -0,0 +1,32 @@
+import formatDistance from './_lib/formatDistance/index'
+import formatLong from './_lib/formatLong/index'
+import formatRelative from './_lib/formatRelative/index'
+import localize from './_lib/localize/index'
+import match from './_lib/match/index'
+
+/**
+ * @type {Locale}
+ * @category Locales
+ * @summary Chinese Simplified locale.
+ * @language Chinese Simplified
+ * @iso-639-2 zho
+ * @author Changyu Geng [@KingMario]{@link https://github.com/KingMario}
+ * @author Song Shuoyun [@fnlctrl]{@link https://github.com/fnlctrl}
+ * @author sabrinaM [@sabrinamiao]{@link https://github.com/sabrinamiao}
+ * @author Carney Wu [@cubicwork]{@link https://github.com/cubicwork}
+ * @author Terrence Lam [@skyuplam]{@link https://github.com/skyuplam}
+ */
+var locale = {
+ code: 'zh-CN',
+ formatDistance: formatDistance,
+ formatLong: formatLong,
+ formatRelative: formatRelative,
+ localize: localize,
+ match: match,
+ options: {
+ weekStartsOn: 1 /* Monday */,
+ firstWeekContainsDate: 4
+ }
+}
+
+export default locale
diff --git a/date-fns/src/locale/zh-CN/index.js.flow b/date-fns/src/locale/zh-CN/index.js.flow
new file mode 100644
index 0000000..b9dfe66
--- /dev/null
+++ b/date-fns/src/locale/zh-CN/index.js.flow
@@ -0,0 +1,35 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+declare module.exports: Locale
diff --git a/date-fns/src/locale/zh-CN/snapshot.md b/date-fns/src/locale/zh-CN/snapshot.md
new file mode 100644
index 0000000..b11b41d
--- /dev/null
+++ b/date-fns/src/locale/zh-CN/snapshot.md
@@ -0,0 +1,304 @@
+# Chinese Simplified (zh-CN) locale
+
+## `format` and `parse`
+
+| Title | Token string | Date | `format` result | `parse` result |
+| ------------------------------- | ------------ | ------------------------ | ------------------------------------------------- | ------------------------ |
+| Calendar year | yo | 1987-02-11T12:13:14.015Z | 第 1987 | 1987-01-01T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 第 5 | 0005-01-01T00:00:00.000Z |
+| Local week-numbering year | Yo | 1987-02-11T12:13:14.015Z | 第 1987 | 1986-12-29T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 第 4 | 0003-12-29T00:00:00.000Z |
+| Quarter (formatting) | Qo | 2019-01-01T12:13:14.015Z | 第 1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 第 2 | 2019-04-01T00:00:00.000Z |
+| | QQQ | 2019-01-01T12:13:14.015Z | 第一刻 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 第二刻 | 2019-04-01T00:00:00.000Z |
+| | QQQQ | 2019-01-01T12:13:14.015Z | 第一刻钟 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 第二刻钟 | 2019-04-01T00:00:00.000Z |
+| | QQQQQ | 2019-01-01T12:13:14.015Z | 1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2 | 2019-04-01T00:00:00.000Z |
+| Quarter (stand-alone) | qo | 2019-01-01T12:13:14.015Z | 第 1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 第 2 | 2019-04-01T00:00:00.000Z |
+| | qqq | 2019-01-01T12:13:14.015Z | 第一刻 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 第二刻 | 2019-04-01T00:00:00.000Z |
+| | qqqq | 2019-01-01T12:13:14.015Z | 第一刻钟 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 第二刻钟 | 2019-04-01T00:00:00.000Z |
+| Month (formatting) | Mo | 2019-02-11T12:13:14.015Z | 第 2 | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 第 7 | 2019-07-01T00:00:00.000Z |
+| | MMM | 2019-02-11T12:13:14.015Z | 2 月 | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7 月 | 2019-07-01T00:00:00.000Z |
+| | MMMM | 2019-02-11T12:13:14.015Z | 二月 | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 七月 | 2019-07-01T00:00:00.000Z |
+| | MMMMM | 2019-02-11T12:13:14.015Z | 二 | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 七 | 2019-07-01T00:00:00.000Z |
+| Month (stand-alone) | Lo | 2019-02-11T12:13:14.015Z | 第 2 | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 第 7 | 2019-07-01T00:00:00.000Z |
+| | LLL | 2019-02-11T12:13:14.015Z | 2 月 | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7 月 | 2019-07-01T00:00:00.000Z |
+| | LLLL | 2019-02-11T12:13:14.015Z | 二月 | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 七月 | 2019-07-01T00:00:00.000Z |
+| | LLLLL | 2019-02-11T12:13:14.015Z | 二 | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 七 | 2019-07-01T00:00:00.000Z |
+| Local week of year | wo | 2019-01-01T12:13:14.015Z | 第 1 | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 第 48 | 2019-11-25T00:00:00.000Z |
+| ISO week of year | Io | 2019-01-01T12:13:14.015Z | 第 1 | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 第 48 | 2019-11-25T00:00:00.000Z |
+| Day of month | do | 2019-02-11T12:13:14.015Z | 11 日 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-28T12:13:14.015Z | 28 日 | 2019-02-28T00:00:00.000Z |
+| Day of year | Do | 2019-02-11T12:13:14.015Z | 第 42 | 2019-02-11T00:00:00.000Z |
+| | | 2019-12-31T12:13:14.015Z | 第 365 | 2019-12-31T00:00:00.000Z |
+| Day of week (formatting) | E | 2019-02-11T12:13:14.015Z | 周一 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 周五 | 2019-02-15T00:00:00.000Z |
+| | EE | 2019-02-11T12:13:14.015Z | 周一 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 周五 | 2019-02-15T00:00:00.000Z |
+| | EEE | 2019-02-11T12:13:14.015Z | 周一 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 周五 | 2019-02-15T00:00:00.000Z |
+| | EEEE | 2019-02-11T12:13:14.015Z | 星期一 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 星期五 | 2019-02-15T00:00:00.000Z |
+| | EEEEE | 2019-02-11T12:13:14.015Z | 一 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 五 | 2019-02-15T00:00:00.000Z |
+| | EEEEEE | 2019-02-11T12:13:14.015Z | 一 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 五 | 2019-02-15T00:00:00.000Z |
+| ISO day of week (formatting) | io | 2019-02-11T12:13:14.015Z | 第 1 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 第 5 | 2019-02-15T00:00:00.000Z |
+| | iii | 2019-02-11T12:13:14.015Z | 周一 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 周五 | 2019-02-15T00:00:00.000Z |
+| | iiii | 2019-02-11T12:13:14.015Z | 星期一 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 星期五 | 2019-02-15T00:00:00.000Z |
+| | iiiii | 2019-02-11T12:13:14.015Z | 一 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 五 | 2019-02-15T00:00:00.000Z |
+| | iiiiii | 2019-02-11T12:13:14.015Z | 一 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 五 | 2019-02-15T00:00:00.000Z |
+| Local day of week (formatting) | eo | 2019-02-11T12:13:14.015Z | 第 1 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 第 5 | 2019-02-15T00:00:00.000Z |
+| | eee | 2019-02-11T12:13:14.015Z | 周一 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 周五 | 2019-02-15T00:00:00.000Z |
+| | eeee | 2019-02-11T12:13:14.015Z | 星期一 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 星期五 | 2019-02-15T00:00:00.000Z |
+| | eeeee | 2019-02-11T12:13:14.015Z | 一 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 五 | 2019-02-15T00:00:00.000Z |
+| | eeeeee | 2019-02-11T12:13:14.015Z | 一 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 五 | 2019-02-15T00:00:00.000Z |
+| Local day of week (stand-alone) | co | 2019-02-11T12:13:14.015Z | 第 1 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 第 5 | 2019-02-15T00:00:00.000Z |
+| | ccc | 2019-02-11T12:13:14.015Z | 周一 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 周五 | 2019-02-15T00:00:00.000Z |
+| | cccc | 2019-02-11T12:13:14.015Z | 星期一 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 星期五 | 2019-02-15T00:00:00.000Z |
+| | ccccc | 2019-02-11T12:13:14.015Z | 一 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 五 | 2019-02-15T00:00:00.000Z |
+| | cccccc | 2019-02-11T12:13:14.015Z | 一 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 五 | 2019-02-15T00:00:00.000Z |
+| AM, PM | a | 2019-02-11T11:13:14.015Z | 上午 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | 下午 | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | 下午 | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | 上午 | 2019-02-11T00:00:00.000Z |
+| | aa | 2019-02-11T11:13:14.015Z | 上午 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | 下午 | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | 下午 | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | 上午 | 2019-02-11T00:00:00.000Z |
+| | aaa | 2019-02-11T11:13:14.015Z | 上午 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | 下午 | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | 下午 | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | 上午 | 2019-02-11T00:00:00.000Z |
+| | aaaa | 2019-02-11T11:13:14.015Z | 上午 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | 下午 | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | 下午 | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | 上午 | 2019-02-11T00:00:00.000Z |
+| | aaaaa | 2019-02-11T11:13:14.015Z | 上 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | 下 | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | 下 | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | 上 | 2019-02-11T00:00:00.000Z |
+| AM, PM, noon, midnight | b | 2019-02-11T11:13:14.015Z | 上午 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | 下午 | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | 下午 | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | 上午 | 2019-02-11T00:00:00.000Z |
+| | bb | 2019-02-11T11:13:14.015Z | 上午 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | 下午 | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | 下午 | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | 上午 | 2019-02-11T00:00:00.000Z |
+| | bbb | 2019-02-11T11:13:14.015Z | 上午 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | 下午 | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | 下午 | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | 上午 | 2019-02-11T00:00:00.000Z |
+| | bbbb | 2019-02-11T11:13:14.015Z | 上午 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | 下午 | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | 下午 | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | 上午 | 2019-02-11T00:00:00.000Z |
+| | bbbbb | 2019-02-11T11:13:14.015Z | 上 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | 下 | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | 下 | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | 上 | 2019-02-11T00:00:00.000Z |
+| Flexible day period | B | 2019-02-11T11:13:14.015Z | 早晨 | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | 中午 | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | 晚上 | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | 夜间 | Invalid Date |
+| | BB | 2019-02-11T11:13:14.015Z | 早晨 | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | 中午 | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | 晚上 | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | 夜间 | Invalid Date |
+| | BBB | 2019-02-11T11:13:14.015Z | 早晨 | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | 中午 | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | 晚上 | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | 夜间 | Invalid Date |
+| | BBBB | 2019-02-11T11:13:14.015Z | 早晨 | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | 中午 | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | 晚上 | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | 夜间 | Invalid Date |
+| | BBBBB | 2019-02-11T11:13:14.015Z | 早 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | 下午 | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | 晚 | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | 夜 | Invalid Date |
+| Hour [1-12] | ho | 2019-02-11T11:13:14.015Z | 11 时 | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11 时 | 2019-02-11T23:00:00.000Z |
+| Hour [0-23] | Ho | 2019-02-11T11:13:14.015Z | 11 时 | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23 时 | 2019-02-11T23:00:00.000Z |
+| Hour [0-11] | Ko | 2019-02-11T11:13:14.015Z | 11 时 | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11 时 | 2019-02-11T23:00:00.000Z |
+| Hour [1-24] | ko | 2019-02-11T11:13:14.015Z | 11 时 | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23 时 | 2019-02-11T23:00:00.000Z |
+| Minute | mo | 2019-01-01T12:01:14.015Z | 1 分 | 2019-01-01T12:01:00.000Z |
+| | | 2019-04-01T12:55:14.015Z | 55 分 | 2019-04-01T12:55:00.000Z |
+| Second | so | 2019-01-01T12:13:01.015Z | 1 秒 | 2019-01-01T12:13:01.000Z |
+| | | 2019-04-01T12:13:55.015Z | 55 秒 | 2019-04-01T12:13:55.000Z |
+| Long localized date | P | 1987-02-11T12:13:14.015Z | 87-02-11 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 53-05-29 | 1453-05-29T00:00:00.000Z |
+| | PP | 1987-02-11T12:13:14.015Z | 1987-02-11 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 1453-05-29 | 1453-05-29T00:00:00.000Z |
+| | PPP | 1987-02-11T12:13:14.015Z | 1987 年 2 月 11 日 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 1453 年 5 月 29 日 | 1453-05-29T00:00:00.000Z |
+| | PPPP | 1987-02-11T12:13:14.015Z | 1987 年 2 月 11 日 星期三 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 1453 年 5 月 29 日 星期日 | 1453-05-29T00:00:00.000Z |
+| Long localized time | p | 1987-02-11T12:13:14.015Z | 下午 12:13 | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 下午 11:59 | 1453-05-29T23:59:00.000Z |
+| | pp | 1987-02-11T12:13:14.015Z | 下午 12:13:14 | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 下午 11:59:59 | 1453-05-29T23:59:59.000Z |
+| | ppp | 1987-02-11T12:13:14.015Z | GMT+0 下午 12:13:14 | Errored |
+| | | 1453-05-29T23:59:59.999Z | GMT+0 下午 11:59:59 | Errored |
+| | pppp | 1987-02-11T12:13:14.015Z | GMT+00:00 下午 12:13:14 | Errored |
+| | | 1453-05-29T23:59:59.999Z | GMT+00:00 下午 11:59:59 | Errored |
+| Combination of date and time | Pp | 1987-02-11T12:13:14.015Z | 87-02-11 下午 12:13 | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 53-05-29 下午 11:59 | 1453-05-29T23:59:00.000Z |
+| | PPpp | 1987-02-11T12:13:14.015Z | 1987-02-11 下午 12:13:14 | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 1453-05-29 下午 11:59:59 | 1453-05-29T23:59:59.000Z |
+| | PPPppp | 1987-02-11T12:13:14.015Z | 1987 年 2 月 11 日 GMT+0 下午 12:13:14 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 1453 年 5 月 29 日 GMT+0 下午 11:59:59 | Errored |
+| | PPPPpppp | 1987-02-11T12:13:14.015Z | 1987 年 2 月 11 日 星期三 GMT+00:00 下午 12:13:14 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 1453 年 5 月 29 日 星期日 GMT+00:00 下午 11:59:59 | Errored |
+
+## `formatDistance`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `includeSeconds: true` | `addSuffix: true` |
+| ------------------------ | ----------- | ---------------------- | ----------------- |
+| 2006-01-01T00:00:00.000Z | 大约 6 年 | 大约 6 年 | 大约 6 年内 |
+| 2005-01-01T00:00:00.000Z | 大约 5 年 | 大约 5 年 | 大约 5 年内 |
+| 2004-01-01T00:00:00.000Z | 大约 4 年 | 大约 4 年 | 大约 4 年内 |
+| 2003-01-01T00:00:00.000Z | 大约 3 年 | 大约 3 年 | 大约 3 年内 |
+| 2002-01-01T00:00:00.000Z | 大约 2 年 | 大约 2 年 | 大约 2 年内 |
+| 2001-06-01T00:00:00.000Z | 超过 1 年 | 超过 1 年 | 超过 1 年内 |
+| 2001-02-01T00:00:00.000Z | 大约 1 年 | 大约 1 年 | 大约 1 年内 |
+| 2001-01-01T00:00:00.000Z | 大约 1 年 | 大约 1 年 | 大约 1 年内 |
+| 2000-06-01T00:00:00.000Z | 5 个月 | 5 个月 | 5 个月内 |
+| 2000-03-01T00:00:00.000Z | 2 个月 | 2 个月 | 2 个月内 |
+| 2000-02-01T00:00:00.000Z | 大约 1 个月 | 大约 1 个月 | 大约 1 个月内 |
+| 2000-01-15T00:00:00.000Z | 14 天 | 14 天 | 14 天内 |
+| 2000-01-02T00:00:00.000Z | 1 天 | 1 天 | 1 天内 |
+| 2000-01-01T06:00:00.000Z | 大约 6 小时 | 大约 6 小时 | 大约 6 小时内 |
+| 2000-01-01T01:00:00.000Z | 大约 1 小时 | 大约 1 小时 | 大约 1 小时内 |
+| 2000-01-01T00:45:00.000Z | 大约 1 小时 | 大约 1 小时 | 大约 1 小时内 |
+| 2000-01-01T00:30:00.000Z | 30 分钟 | 30 分钟 | 30 分钟内 |
+| 2000-01-01T00:15:00.000Z | 15 分钟 | 15 分钟 | 15 分钟内 |
+| 2000-01-01T00:01:00.000Z | 1 分钟 | 1 分钟 | 1 分钟内 |
+| 2000-01-01T00:00:25.000Z | 不到 1 分钟 | 半分钟 | 不到 1 分钟内 |
+| 2000-01-01T00:00:15.000Z | 不到 1 分钟 | 不到 20 秒 | 不到 1 分钟内 |
+| 2000-01-01T00:00:05.000Z | 不到 1 分钟 | 不到 10 秒 | 不到 1 分钟内 |
+| 2000-01-01T00:00:00.000Z | 不到 1 分钟 | 不到 5 秒 | 不到 1 分钟前 |
+| 1999-12-31T23:59:55.000Z | 不到 1 分钟 | 不到 10 秒 | 不到 1 分钟前 |
+| 1999-12-31T23:59:45.000Z | 不到 1 分钟 | 不到 20 秒 | 不到 1 分钟前 |
+| 1999-12-31T23:59:35.000Z | 不到 1 分钟 | 半分钟 | 不到 1 分钟前 |
+| 1999-12-31T23:59:00.000Z | 1 分钟 | 1 分钟 | 1 分钟前 |
+| 1999-12-31T23:45:00.000Z | 15 分钟 | 15 分钟 | 15 分钟前 |
+| 1999-12-31T23:30:00.000Z | 30 分钟 | 30 分钟 | 30 分钟前 |
+| 1999-12-31T23:15:00.000Z | 大约 1 小时 | 大约 1 小时 | 大约 1 小时前 |
+| 1999-12-31T23:00:00.000Z | 大约 1 小时 | 大约 1 小时 | 大约 1 小时前 |
+| 1999-12-31T18:00:00.000Z | 大约 6 小时 | 大约 6 小时 | 大约 6 小时前 |
+| 1999-12-30T00:00:00.000Z | 2 天 | 2 天 | 2 天前 |
+| 1999-12-15T00:00:00.000Z | 17 天 | 17 天 | 17 天前 |
+| 1999-12-01T00:00:00.000Z | 大约 1 个月 | 大约 1 个月 | 大约 1 个月前 |
+| 1999-11-01T00:00:00.000Z | 2 个月 | 2 个月 | 2 个月前 |
+| 1999-06-01T00:00:00.000Z | 7 个月 | 7 个月 | 7 个月前 |
+| 1999-01-01T00:00:00.000Z | 大约 1 年 | 大约 1 年 | 大约 1 年前 |
+| 1998-12-01T00:00:00.000Z | 大约 1 年 | 大约 1 年 | 大约 1 年前 |
+| 1998-06-01T00:00:00.000Z | 超过 1 年 | 超过 1 年 | 超过 1 年前 |
+| 1998-01-01T00:00:00.000Z | 大约 2 年 | 大约 2 年 | 大约 2 年前 |
+| 1997-01-01T00:00:00.000Z | 大约 3 年 | 大约 3 年 | 大约 3 年前 |
+| 1996-01-01T00:00:00.000Z | 大约 4 年 | 大约 4 年 | 大约 4 年前 |
+| 1995-01-01T00:00:00.000Z | 大约 5 年 | 大约 5 年 | 大约 5 年前 |
+| 1994-01-01T00:00:00.000Z | 大约 6 年 | 大约 6 年 | 大约 6 年前 |
+
+## `formatDistanceStrict`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `addSuffix: true` | With forced unit (i.e. `hour`) |
+| ------------------------ | ------- | ----------------- | ------------------------------ |
+| 2006-01-01T00:00:00.000Z | 6 年 | 6 年内 | 52608 小时 |
+| 2005-01-01T00:00:00.000Z | 5 年 | 5 年内 | 43848 小时 |
+| 2004-01-01T00:00:00.000Z | 4 年 | 4 年内 | 35064 小时 |
+| 2003-01-01T00:00:00.000Z | 3 年 | 3 年内 | 26304 小时 |
+| 2002-01-01T00:00:00.000Z | 2 年 | 2 年内 | 17544 小时 |
+| 2001-06-01T00:00:00.000Z | 1 年 | 1 年内 | 12408 小时 |
+| 2001-02-01T00:00:00.000Z | 1 年 | 1 年内 | 9528 小时 |
+| 2001-01-01T00:00:00.000Z | 1 年 | 1 年内 | 8784 小时 |
+| 2000-06-01T00:00:00.000Z | 5 个月 | 5 个月内 | 3648 小时 |
+| 2000-03-01T00:00:00.000Z | 2 个月 | 2 个月内 | 1440 小时 |
+| 2000-02-01T00:00:00.000Z | 1 个月 | 1 个月内 | 744 小时 |
+| 2000-01-15T00:00:00.000Z | 14 天 | 14 天内 | 336 小时 |
+| 2000-01-02T00:00:00.000Z | 1 天 | 1 天内 | 24 小时 |
+| 2000-01-01T06:00:00.000Z | 6 小时 | 6 小时内 | 6 小时 |
+| 2000-01-01T01:00:00.000Z | 1 小时 | 1 小时内 | 1 小时 |
+| 2000-01-01T00:45:00.000Z | 45 分钟 | 45 分钟内 | 1 小时 |
+| 2000-01-01T00:30:00.000Z | 30 分钟 | 30 分钟内 | 1 小时 |
+| 2000-01-01T00:15:00.000Z | 15 分钟 | 15 分钟内 | 0 小时 |
+| 2000-01-01T00:01:00.000Z | 1 分钟 | 1 分钟内 | 0 小时 |
+| 2000-01-01T00:00:25.000Z | 25 秒 | 25 秒内 | 0 小时 |
+| 2000-01-01T00:00:15.000Z | 15 秒 | 15 秒内 | 0 小时 |
+| 2000-01-01T00:00:05.000Z | 5 秒 | 5 秒内 | 0 小时 |
+| 2000-01-01T00:00:00.000Z | 0 秒 | 0 秒前 | 0 小时 |
+| 1999-12-31T23:59:55.000Z | 5 秒 | 5 秒前 | 0 小时 |
+| 1999-12-31T23:59:45.000Z | 15 秒 | 15 秒前 | 0 小时 |
+| 1999-12-31T23:59:35.000Z | 25 秒 | 25 秒前 | 0 小时 |
+| 1999-12-31T23:59:00.000Z | 1 分钟 | 1 分钟前 | 0 小时 |
+| 1999-12-31T23:45:00.000Z | 15 分钟 | 15 分钟前 | 0 小时 |
+| 1999-12-31T23:30:00.000Z | 30 分钟 | 30 分钟前 | 1 小时 |
+| 1999-12-31T23:15:00.000Z | 45 分钟 | 45 分钟前 | 1 小时 |
+| 1999-12-31T23:00:00.000Z | 1 小时 | 1 小时前 | 1 小时 |
+| 1999-12-31T18:00:00.000Z | 6 小时 | 6 小时前 | 6 小时 |
+| 1999-12-30T00:00:00.000Z | 2 天 | 2 天前 | 48 小时 |
+| 1999-12-15T00:00:00.000Z | 17 天 | 17 天前 | 408 小时 |
+| 1999-12-01T00:00:00.000Z | 1 个月 | 1 个月前 | 744 小时 |
+| 1999-11-01T00:00:00.000Z | 2 个月 | 2 个月前 | 1464 小时 |
+| 1999-06-01T00:00:00.000Z | 7 个月 | 7 个月前 | 5136 小时 |
+| 1999-01-01T00:00:00.000Z | 1 年 | 1 年前 | 8760 小时 |
+| 1998-12-01T00:00:00.000Z | 1 年 | 1 年前 | 9504 小时 |
+| 1998-06-01T00:00:00.000Z | 2 年 | 2 年前 | 13896 小时 |
+| 1998-01-01T00:00:00.000Z | 2 年 | 2 年前 | 17520 小时 |
+| 1997-01-01T00:00:00.000Z | 3 年 | 3 年前 | 26280 小时 |
+| 1996-01-01T00:00:00.000Z | 4 年 | 4 年前 | 35064 小时 |
+| 1995-01-01T00:00:00.000Z | 5 年 | 5 年前 | 43824 小时 |
+| 1994-01-01T00:00:00.000Z | 6 年 | 6 年前 | 52584 小时 |
+
+## `formatRelative`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result |
+| ------------------------ | --------------------- |
+| 2000-01-10T00:00:00.000Z | 2000-01-10 上午 12:00 |
+| 2000-01-05T00:00:00.000Z | 下个星期三 上午 12:00 |
+| 2000-01-02T00:00:00.000Z | 明天 上午 12:00 |
+| 2000-01-01T00:00:00.000Z | 今天 上午 12:00 |
+| 1999-12-31T00:00:00.000Z | 昨天 上午 12:00 |
+| 1999-12-27T00:00:00.000Z | 星期一 上午 12:00 |
+| 1999-12-21T00:00:00.000Z | 1999-12-21 上午 12:00 |
diff --git a/date-fns/src/locale/zh-TW/_lib/formatDistance/index.js b/date-fns/src/locale/zh-TW/_lib/formatDistance/index.js
new file mode 100644
index 0000000..affa550
--- /dev/null
+++ b/date-fns/src/locale/zh-TW/_lib/formatDistance/index.js
@@ -0,0 +1,101 @@
+var formatDistanceLocale = {
+ lessThanXSeconds: {
+ one: '少於 1 秒',
+ other: '少於 {{count}} 秒',
+ },
+
+ xSeconds: {
+ one: '1 秒',
+ other: '{{count}} 秒',
+ },
+
+ halfAMinute: '半分鐘',
+
+ lessThanXMinutes: {
+ one: '少於 1 分鐘',
+ other: '少於 {{count}} 分鐘',
+ },
+
+ xMinutes: {
+ one: '1 分鐘',
+ other: '{{count}} 分鐘',
+ },
+
+ xHours: {
+ one: '1 小時',
+ other: '{{count}} 小時',
+ },
+
+ aboutXHours: {
+ one: '大約 1 小時',
+ other: '大約 {{count}} 小時',
+ },
+
+ xDays: {
+ one: '1 天',
+ other: '{{count}} 天',
+ },
+
+ aboutXWeeks: {
+ one: '大約 1 個星期',
+ other: '大約 {{count}} 個星期',
+ },
+
+ xWeeks: {
+ one: '1 個星期',
+ other: '{{count}} 個星期',
+ },
+
+ aboutXMonths: {
+ one: '大約 1 個月',
+ other: '大約 {{count}} 個月',
+ },
+
+ xMonths: {
+ one: '1 個月',
+ other: '{{count}} 個月',
+ },
+
+ aboutXYears: {
+ one: '大約 1 年',
+ other: '大約 {{count}} 年',
+ },
+
+ xYears: {
+ one: '1 年',
+ other: '{{count}} 年',
+ },
+
+ overXYears: {
+ one: '超過 1 年',
+ other: '超過 {{count}} 年',
+ },
+
+ almostXYears: {
+ one: '將近 1 年',
+ other: '將近 {{count}} 年',
+ },
+}
+
+export default function formatDistance(token, count, options) {
+ options = options || {}
+
+ var result
+ if (typeof formatDistanceLocale[token] === 'string') {
+ result = formatDistanceLocale[token]
+ } else if (count === 1) {
+ result = formatDistanceLocale[token].one
+ } else {
+ result = formatDistanceLocale[token].other.replace('{{count}}', count)
+ }
+
+ if (options.addSuffix) {
+ if (options.comparison > 0) {
+ return result + '內'
+ } else {
+ return result + '前'
+ }
+ }
+
+ return result
+}
diff --git a/date-fns/src/locale/zh-TW/_lib/formatLong/index.js b/date-fns/src/locale/zh-TW/_lib/formatLong/index.js
new file mode 100644
index 0000000..2d3ba38
--- /dev/null
+++ b/date-fns/src/locale/zh-TW/_lib/formatLong/index.js
@@ -0,0 +1,41 @@
+import buildFormatLongFn from '../../../_lib/buildFormatLongFn/index'
+
+var dateFormats = {
+ full: "y'年'M'月'd'日' EEEE",
+ long: "y'年'M'月'd'日'",
+ medium: 'yyyy-MM-dd',
+ short: 'yy-MM-dd'
+}
+
+var timeFormats = {
+ full: 'zzzz a h:mm:ss',
+ long: 'z a h:mm:ss',
+ medium: 'a h:mm:ss',
+ short: 'a h:mm'
+}
+
+var dateTimeFormats = {
+ full: '{{date}} {{time}}',
+ long: '{{date}} {{time}}',
+ medium: '{{date}} {{time}}',
+ short: '{{date}} {{time}}'
+}
+
+var formatLong = {
+ date: buildFormatLongFn({
+ formats: dateFormats,
+ defaultWidth: 'full'
+ }),
+
+ time: buildFormatLongFn({
+ formats: timeFormats,
+ defaultWidth: 'full'
+ }),
+
+ dateTime: buildFormatLongFn({
+ formats: dateTimeFormats,
+ defaultWidth: 'full'
+ })
+}
+
+export default formatLong
diff --git a/date-fns/src/locale/zh-TW/_lib/formatRelative/index.js b/date-fns/src/locale/zh-TW/_lib/formatRelative/index.js
new file mode 100644
index 0000000..fed9857
--- /dev/null
+++ b/date-fns/src/locale/zh-TW/_lib/formatRelative/index.js
@@ -0,0 +1,12 @@
+var formatRelativeLocale = {
+ lastWeek: "'上個'eeee p",
+ yesterday: "'昨天' p",
+ today: "'今天' p",
+ tomorrow: "'明天' p",
+ nextWeek: "'下個'eeee p",
+ other: 'P',
+}
+
+export default function formatRelative(token, _date, _baseDate, _options) {
+ return formatRelativeLocale[token]
+}
diff --git a/date-fns/src/locale/zh-TW/_lib/localize/index.js b/date-fns/src/locale/zh-TW/_lib/localize/index.js
new file mode 100644
index 0000000..360caf1
--- /dev/null
+++ b/date-fns/src/locale/zh-TW/_lib/localize/index.js
@@ -0,0 +1,196 @@
+import buildLocalizeFn from '../../../_lib/buildLocalizeFn/index'
+
+var eraValues = {
+ narrow: ['前', '公元'],
+ abbreviated: ['前', '公元'],
+ wide: ['公元前', '公元']
+}
+
+var quarterValues = {
+ narrow: ['1', '2', '3', '4'],
+ abbreviated: ['第一刻', '第二刻', '第三刻', '第四刻'],
+ wide: ['第一刻鐘', '第二刻鐘', '第三刻鐘', '第四刻鐘']
+}
+
+var monthValues = {
+ narrow: [
+ '一',
+ '二',
+ '三',
+ '四',
+ '五',
+ '六',
+ '七',
+ '八',
+ '九',
+ '十',
+ '十一',
+ '十二'
+ ],
+ abbreviated: [
+ '1月',
+ '2月',
+ '3月',
+ '4月',
+ '5月',
+ '6月',
+ '7月',
+ '8月',
+ '9月',
+ '10月',
+ '11月',
+ '12月'
+ ],
+ wide: [
+ '一月',
+ '二月',
+ '三月',
+ '四月',
+ '五月',
+ '六月',
+ '七月',
+ '八月',
+ '九月',
+ '十月',
+ '十一月',
+ '十二月'
+ ]
+}
+
+var dayValues = {
+ narrow: ['日', '一', '二', '三', '四', '五', '六'],
+ short: ['日', '一', '二', '三', '四', '五', '六'],
+ abbreviated: ['週日', '週一', '週二', '週三', '週四', '週五', '週六'],
+ wide: ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六']
+}
+
+var dayPeriodValues = {
+ narrow: {
+ am: '上',
+ pm: '下',
+ midnight: '凌晨',
+ noon: '午',
+ morning: '早',
+ afternoon: '下午',
+ evening: '晚',
+ night: '夜'
+ },
+ abbreviated: {
+ am: '上午',
+ pm: '下午',
+ midnight: '凌晨',
+ noon: '中午',
+ morning: '早晨',
+ afternoon: '中午',
+ evening: '晚上',
+ night: '夜間'
+ },
+ wide: {
+ am: '上午',
+ pm: '下午',
+ midnight: '凌晨',
+ noon: '中午',
+ morning: '早晨',
+ afternoon: '中午',
+ evening: '晚上',
+ night: '夜間'
+ }
+}
+var formattingDayPeriodValues = {
+ narrow: {
+ am: '上',
+ pm: '下',
+ midnight: '凌晨',
+ noon: '午',
+ morning: '早',
+ afternoon: '下午',
+ evening: '晚',
+ night: '夜'
+ },
+ abbreviated: {
+ am: '上午',
+ pm: '下午',
+ midnight: '凌晨',
+ noon: '中午',
+ morning: '早晨',
+ afternoon: '中午',
+ evening: '晚上',
+ night: '夜間'
+ },
+ wide: {
+ am: '上午',
+ pm: '下午',
+ midnight: '凌晨',
+ noon: '中午',
+ morning: '早晨',
+ afternoon: '中午',
+ evening: '晚上',
+ night: '夜間'
+ }
+}
+
+function ordinalNumber(dirtyNumber, dirtyOptions) {
+ var number = Number(dirtyNumber)
+
+ // If ordinal numbers depend on context, for example,
+ // if they are different for different grammatical genders,
+ // use `options.unit`:
+ //
+ // var options = dirtyOptions || {}
+ // var unit = String(options.unit)
+ //
+ // where `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',
+ // 'day', 'hour', 'minute', 'second'
+
+ var options = dirtyOptions || {}
+ var unit = String(options.unit)
+
+ switch (unit) {
+ case 'date':
+ return number.toString() + '日'
+ case 'hour':
+ return number.toString() + '時'
+ case 'minute':
+ return number.toString() + '分'
+ case 'second':
+ return number.toString() + '秒'
+ default:
+ return '第 ' + number.toString()
+ }
+}
+
+var localize = {
+ ordinalNumber: ordinalNumber,
+
+ era: buildLocalizeFn({
+ values: eraValues,
+ defaultWidth: 'wide'
+ }),
+
+ quarter: buildLocalizeFn({
+ values: quarterValues,
+ defaultWidth: 'wide',
+ argumentCallback: function(quarter) {
+ return Number(quarter) - 1
+ }
+ }),
+
+ month: buildLocalizeFn({
+ values: monthValues,
+ defaultWidth: 'wide'
+ }),
+
+ day: buildLocalizeFn({
+ values: dayValues,
+ defaultWidth: 'wide'
+ }),
+
+ dayPeriod: buildLocalizeFn({
+ values: dayPeriodValues,
+ defaultWidth: 'wide',
+ formattingValues: formattingDayPeriodValues,
+ defaultFormattingWidth: 'wide'
+ })
+}
+
+export default localize
diff --git a/date-fns/src/locale/zh-TW/_lib/match/index.js b/date-fns/src/locale/zh-TW/_lib/match/index.js
new file mode 100644
index 0000000..460a9cd
--- /dev/null
+++ b/date-fns/src/locale/zh-TW/_lib/match/index.js
@@ -0,0 +1,135 @@
+import buildMatchPatternFn from '../../../_lib/buildMatchPatternFn/index'
+import buildMatchFn from '../../../_lib/buildMatchFn/index'
+
+var matchOrdinalNumberPattern = /^(第\s*)?\d+(日|時|分|秒)?/i
+var parseOrdinalNumberPattern = /\d+/i
+
+var matchEraPatterns = {
+ narrow: /^(前)/i,
+ abbreviated: /^(前)/i,
+ wide: /^(公元前|公元)/i
+}
+var parseEraPatterns = {
+ any: [/^(前)/i, /^(公元)/i]
+}
+
+var matchQuarterPatterns = {
+ narrow: /^[1234]/i,
+ abbreviated: /^第[一二三四]刻/i,
+ wide: /^第[一二三四]刻鐘/i
+}
+var parseQuarterPatterns = {
+ any: [/(1|一)/i, /(2|二)/i, /(3|三)/i, /(4|四)/i]
+}
+
+var matchMonthPatterns = {
+ narrow: /^(一|二|三|四|五|六|七|八|九|十[二一])/i,
+ abbreviated: /^(一|二|三|四|五|六|七|八|九|十[二一]|\d|1[12])月/i,
+ wide: /^(一|二|三|四|五|六|七|八|九|十[二一])月/i
+}
+var parseMonthPatterns = {
+ narrow: [
+ /^一/i,
+ /^二/i,
+ /^三/i,
+ /^四/i,
+ /^五/i,
+ /^六/i,
+ /^七/i,
+ /^八/i,
+ /^九/i,
+ /^十(?!(一|二))/i,
+ /^十一/i,
+ /^十二/i
+ ],
+ any: [
+ /^一|1/i,
+ /^二|2/i,
+ /^三|3/i,
+ /^四|4/i,
+ /^五|5/i,
+ /^六|6/i,
+ /^七|7/i,
+ /^八|8/i,
+ /^九|9/i,
+ /^十(?!(一|二))|10/i,
+ /^十一|11/i,
+ /^十二|12/i
+ ]
+}
+
+var matchDayPatterns = {
+ narrow: /^[一二三四五六日]/i,
+ short: /^[一二三四五六日]/i,
+ abbreviated: /^週[一二三四五六日]/i,
+ wide: /^星期[一二三四五六日]/i
+}
+var parseDayPatterns = {
+ any: [/日/i, /一/i, /二/i, /三/i, /四/i, /五/i, /六/i]
+}
+
+var matchDayPeriodPatterns = {
+ any: /^(上午?|下午?|午夜|[中正]午|早上?|下午|晚上?|凌晨)/i
+}
+var parseDayPeriodPatterns = {
+ any: {
+ am: /^上午?/i,
+ pm: /^下午?/i,
+ midnight: /^午夜/i,
+ noon: /^[中正]午/i,
+ morning: /^早上/i,
+ afternoon: /^下午/i,
+ evening: /^晚上?/i,
+ night: /^凌晨/i
+ }
+}
+
+var match = {
+ ordinalNumber: buildMatchPatternFn({
+ matchPattern: matchOrdinalNumberPattern,
+ parsePattern: parseOrdinalNumberPattern,
+ valueCallback: function(value) {
+ return parseInt(value, 10)
+ }
+ }),
+
+ era: buildMatchFn({
+ matchPatterns: matchEraPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseEraPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ quarter: buildMatchFn({
+ matchPatterns: matchQuarterPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseQuarterPatterns,
+ defaultParseWidth: 'any',
+ valueCallback: function(index) {
+ return index + 1
+ }
+ }),
+
+ month: buildMatchFn({
+ matchPatterns: matchMonthPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseMonthPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ day: buildMatchFn({
+ matchPatterns: matchDayPatterns,
+ defaultMatchWidth: 'wide',
+ parsePatterns: parseDayPatterns,
+ defaultParseWidth: 'any'
+ }),
+
+ dayPeriod: buildMatchFn({
+ matchPatterns: matchDayPeriodPatterns,
+ defaultMatchWidth: 'any',
+ parsePatterns: parseDayPeriodPatterns,
+ defaultParseWidth: 'any'
+ })
+}
+
+export default match
diff --git a/date-fns/src/locale/zh-TW/index.d.ts b/date-fns/src/locale/zh-TW/index.d.ts
new file mode 100644
index 0000000..745a08f
--- /dev/null
+++ b/date-fns/src/locale/zh-TW/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { zhTW } from 'date-fns/locale'
+export default zhTW
diff --git a/date-fns/src/locale/zh-TW/index.js b/date-fns/src/locale/zh-TW/index.js
new file mode 100644
index 0000000..bf43c2f
--- /dev/null
+++ b/date-fns/src/locale/zh-TW/index.js
@@ -0,0 +1,30 @@
+import formatDistance from './_lib/formatDistance/index'
+import formatLong from './_lib/formatLong/index'
+import formatRelative from './_lib/formatRelative/index'
+import localize from './_lib/localize/index'
+import match from './_lib/match/index'
+
+/**
+ * @type {Locale}
+ * @category Locales
+ * @summary Chinese Traditional locale.
+ * @language Chinese Traditional
+ * @iso-639-2 zho
+ * @author tonypai [@tpai]{@link https://github.com/tpai}
+ * @author Jack Hsu [@jackhsu978]{@link https://github.com/jackhsu978}
+ * @author Terrence Lam [@skyuplam]{@link https://github.com/skyuplam}
+ */
+var locale = {
+ code: 'zh-TW',
+ formatDistance: formatDistance,
+ formatLong: formatLong,
+ formatRelative: formatRelative,
+ localize: localize,
+ match: match,
+ options: {
+ weekStartsOn: 1 /* Monday */,
+ firstWeekContainsDate: 4
+ }
+}
+
+export default locale
diff --git a/date-fns/src/locale/zh-TW/index.js.flow b/date-fns/src/locale/zh-TW/index.js.flow
new file mode 100644
index 0000000..b9dfe66
--- /dev/null
+++ b/date-fns/src/locale/zh-TW/index.js.flow
@@ -0,0 +1,35 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+declare module.exports: Locale
diff --git a/date-fns/src/locale/zh-TW/snapshot.md b/date-fns/src/locale/zh-TW/snapshot.md
new file mode 100644
index 0000000..787f7e0
--- /dev/null
+++ b/date-fns/src/locale/zh-TW/snapshot.md
@@ -0,0 +1,304 @@
+# Chinese Traditional (zh-TW) locale
+
+## `format` and `parse`
+
+| Title | Token string | Date | `format` result | `parse` result |
+| ------------------------------- | ------------ | ------------------------ | ------------------------------------------------- | ------------------------ |
+| Calendar year | yo | 1987-02-11T12:13:14.015Z | 第 1987 | 1987-01-01T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 第 5 | 0005-01-01T00:00:00.000Z |
+| Local week-numbering year | Yo | 1987-02-11T12:13:14.015Z | 第 1987 | 1986-12-29T00:00:00.000Z |
+| | | 0005-01-01T12:13:14.015Z | 第 4 | 0003-12-29T00:00:00.000Z |
+| Quarter (formatting) | Qo | 2019-01-01T12:13:14.015Z | 第 1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 第 2 | 2019-04-01T00:00:00.000Z |
+| | QQQ | 2019-01-01T12:13:14.015Z | 第一刻 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 第二刻 | 2019-04-01T00:00:00.000Z |
+| | QQQQ | 2019-01-01T12:13:14.015Z | 第一刻鐘 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 第二刻鐘 | 2019-04-01T00:00:00.000Z |
+| | QQQQQ | 2019-01-01T12:13:14.015Z | 1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 2 | 2019-04-01T00:00:00.000Z |
+| Quarter (stand-alone) | qo | 2019-01-01T12:13:14.015Z | 第 1 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 第 2 | 2019-04-01T00:00:00.000Z |
+| | qqq | 2019-01-01T12:13:14.015Z | 第一刻 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 第二刻 | 2019-04-01T00:00:00.000Z |
+| | qqqq | 2019-01-01T12:13:14.015Z | 第一刻鐘 | 2019-01-01T00:00:00.000Z |
+| | | 2019-04-01T12:13:14.015Z | 第二刻鐘 | 2019-04-01T00:00:00.000Z |
+| Month (formatting) | Mo | 2019-02-11T12:13:14.015Z | 第 2 | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 第 7 | 2019-07-01T00:00:00.000Z |
+| | MMM | 2019-02-11T12:13:14.015Z | 2 月 | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7 月 | 2019-07-01T00:00:00.000Z |
+| | MMMM | 2019-02-11T12:13:14.015Z | 二月 | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 七月 | 2019-07-01T00:00:00.000Z |
+| | MMMMM | 2019-02-11T12:13:14.015Z | 二 | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 七 | 2019-07-01T00:00:00.000Z |
+| Month (stand-alone) | Lo | 2019-02-11T12:13:14.015Z | 第 2 | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 第 7 | 2019-07-01T00:00:00.000Z |
+| | LLL | 2019-02-11T12:13:14.015Z | 2 月 | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 7 月 | 2019-07-01T00:00:00.000Z |
+| | LLLL | 2019-02-11T12:13:14.015Z | 二月 | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 七月 | 2019-07-01T00:00:00.000Z |
+| | LLLLL | 2019-02-11T12:13:14.015Z | 二 | 2019-02-01T00:00:00.000Z |
+| | | 2019-07-10T12:13:14.015Z | 七 | 2019-07-01T00:00:00.000Z |
+| Local week of year | wo | 2019-01-01T12:13:14.015Z | 第 1 | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 第 48 | 2019-11-25T00:00:00.000Z |
+| ISO week of year | Io | 2019-01-01T12:13:14.015Z | 第 1 | 2018-12-31T00:00:00.000Z |
+| | | 2019-12-01T12:13:14.015Z | 第 48 | 2019-11-25T00:00:00.000Z |
+| Day of month | do | 2019-02-11T12:13:14.015Z | 11 日 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-28T12:13:14.015Z | 28 日 | 2019-02-28T00:00:00.000Z |
+| Day of year | Do | 2019-02-11T12:13:14.015Z | 第 42 | 2019-02-11T00:00:00.000Z |
+| | | 2019-12-31T12:13:14.015Z | 第 365 | 2019-12-31T00:00:00.000Z |
+| Day of week (formatting) | E | 2019-02-11T12:13:14.015Z | 週一 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 週五 | 2019-02-15T00:00:00.000Z |
+| | EE | 2019-02-11T12:13:14.015Z | 週一 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 週五 | 2019-02-15T00:00:00.000Z |
+| | EEE | 2019-02-11T12:13:14.015Z | 週一 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 週五 | 2019-02-15T00:00:00.000Z |
+| | EEEE | 2019-02-11T12:13:14.015Z | 星期一 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 星期五 | 2019-02-15T00:00:00.000Z |
+| | EEEEE | 2019-02-11T12:13:14.015Z | 一 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 五 | 2019-02-15T00:00:00.000Z |
+| | EEEEEE | 2019-02-11T12:13:14.015Z | 一 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 五 | 2019-02-15T00:00:00.000Z |
+| ISO day of week (formatting) | io | 2019-02-11T12:13:14.015Z | 第 1 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 第 5 | 2019-02-15T00:00:00.000Z |
+| | iii | 2019-02-11T12:13:14.015Z | 週一 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 週五 | 2019-02-15T00:00:00.000Z |
+| | iiii | 2019-02-11T12:13:14.015Z | 星期一 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 星期五 | 2019-02-15T00:00:00.000Z |
+| | iiiii | 2019-02-11T12:13:14.015Z | 一 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 五 | 2019-02-15T00:00:00.000Z |
+| | iiiiii | 2019-02-11T12:13:14.015Z | 一 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 五 | 2019-02-15T00:00:00.000Z |
+| Local day of week (formatting) | eo | 2019-02-11T12:13:14.015Z | 第 1 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 第 5 | 2019-02-15T00:00:00.000Z |
+| | eee | 2019-02-11T12:13:14.015Z | 週一 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 週五 | 2019-02-15T00:00:00.000Z |
+| | eeee | 2019-02-11T12:13:14.015Z | 星期一 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 星期五 | 2019-02-15T00:00:00.000Z |
+| | eeeee | 2019-02-11T12:13:14.015Z | 一 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 五 | 2019-02-15T00:00:00.000Z |
+| | eeeeee | 2019-02-11T12:13:14.015Z | 一 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 五 | 2019-02-15T00:00:00.000Z |
+| Local day of week (stand-alone) | co | 2019-02-11T12:13:14.015Z | 第 1 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 第 5 | 2019-02-15T00:00:00.000Z |
+| | ccc | 2019-02-11T12:13:14.015Z | 週一 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 週五 | 2019-02-15T00:00:00.000Z |
+| | cccc | 2019-02-11T12:13:14.015Z | 星期一 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 星期五 | 2019-02-15T00:00:00.000Z |
+| | ccccc | 2019-02-11T12:13:14.015Z | 一 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 五 | 2019-02-15T00:00:00.000Z |
+| | cccccc | 2019-02-11T12:13:14.015Z | 一 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-15T12:13:14.015Z | 五 | 2019-02-15T00:00:00.000Z |
+| AM, PM | a | 2019-02-11T11:13:14.015Z | 上午 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | 下午 | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | 下午 | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | 上午 | 2019-02-11T00:00:00.000Z |
+| | aa | 2019-02-11T11:13:14.015Z | 上午 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | 下午 | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | 下午 | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | 上午 | 2019-02-11T00:00:00.000Z |
+| | aaa | 2019-02-11T11:13:14.015Z | 上午 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | 下午 | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | 下午 | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | 上午 | 2019-02-11T00:00:00.000Z |
+| | aaaa | 2019-02-11T11:13:14.015Z | 上午 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | 下午 | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | 下午 | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | 上午 | 2019-02-11T00:00:00.000Z |
+| | aaaaa | 2019-02-11T11:13:14.015Z | 上 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | 下 | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | 下 | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | 上 | 2019-02-11T00:00:00.000Z |
+| AM, PM, noon, midnight | b | 2019-02-11T11:13:14.015Z | 上午 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | 下午 | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | 下午 | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | 上午 | 2019-02-11T00:00:00.000Z |
+| | bb | 2019-02-11T11:13:14.015Z | 上午 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | 下午 | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | 下午 | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | 上午 | 2019-02-11T00:00:00.000Z |
+| | bbb | 2019-02-11T11:13:14.015Z | 上午 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | 下午 | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | 下午 | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | 上午 | 2019-02-11T00:00:00.000Z |
+| | bbbb | 2019-02-11T11:13:14.015Z | 上午 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | 下午 | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | 下午 | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | 上午 | 2019-02-11T00:00:00.000Z |
+| | bbbbb | 2019-02-11T11:13:14.015Z | 上 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | 下 | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | 下 | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | 上 | 2019-02-11T00:00:00.000Z |
+| Flexible day period | B | 2019-02-11T11:13:14.015Z | 早晨 | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | 中午 | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | 晚上 | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | 夜間 | Invalid Date |
+| | BB | 2019-02-11T11:13:14.015Z | 早晨 | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | 中午 | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | 晚上 | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | 夜間 | Invalid Date |
+| | BBB | 2019-02-11T11:13:14.015Z | 早晨 | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | 中午 | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | 晚上 | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | 夜間 | Invalid Date |
+| | BBBB | 2019-02-11T11:13:14.015Z | 早晨 | Invalid Date |
+| | | 2019-02-11T14:13:14.015Z | 中午 | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | 晚上 | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | 夜間 | Invalid Date |
+| | BBBBB | 2019-02-11T11:13:14.015Z | 早 | 2019-02-11T00:00:00.000Z |
+| | | 2019-02-11T14:13:14.015Z | 下午 | 2019-02-11T12:00:00.000Z |
+| | | 2019-02-11T19:13:14.015Z | 晚 | 2019-02-11T17:00:00.000Z |
+| | | 2019-02-11T02:13:14.015Z | 夜 | Invalid Date |
+| Hour [1-12] | ho | 2019-02-11T11:13:14.015Z | 11 時 | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11 時 | 2019-02-11T23:00:00.000Z |
+| Hour [0-23] | Ho | 2019-02-11T11:13:14.015Z | 11 時 | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23 時 | 2019-02-11T23:00:00.000Z |
+| Hour [0-11] | Ko | 2019-02-11T11:13:14.015Z | 11 時 | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 11 時 | 2019-02-11T23:00:00.000Z |
+| Hour [1-24] | ko | 2019-02-11T11:13:14.015Z | 11 時 | 2019-02-11T11:00:00.000Z |
+| | | 2019-02-11T23:13:14.015Z | 23 時 | 2019-02-11T23:00:00.000Z |
+| Minute | mo | 2019-01-01T12:01:14.015Z | 1 分 | 2019-01-01T12:01:00.000Z |
+| | | 2019-04-01T12:55:14.015Z | 55 分 | 2019-04-01T12:55:00.000Z |
+| Second | so | 2019-01-01T12:13:01.015Z | 1 秒 | 2019-01-01T12:13:01.000Z |
+| | | 2019-04-01T12:13:55.015Z | 55 秒 | 2019-04-01T12:13:55.000Z |
+| Long localized date | P | 1987-02-11T12:13:14.015Z | 87-02-11 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 53-05-29 | 1453-05-29T00:00:00.000Z |
+| | PP | 1987-02-11T12:13:14.015Z | 1987-02-11 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 1453-05-29 | 1453-05-29T00:00:00.000Z |
+| | PPP | 1987-02-11T12:13:14.015Z | 1987 年 2 月 11 日 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 1453 年 5 月 29 日 | 1453-05-29T00:00:00.000Z |
+| | PPPP | 1987-02-11T12:13:14.015Z | 1987 年 2 月 11 日 星期三 | 1987-02-11T00:00:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 1453 年 5 月 29 日 星期日 | 1453-05-29T00:00:00.000Z |
+| Long localized time | p | 1987-02-11T12:13:14.015Z | 下午 12:13 | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 下午 11:59 | 1453-05-29T23:59:00.000Z |
+| | pp | 1987-02-11T12:13:14.015Z | 下午 12:13:14 | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 下午 11:59:59 | 1453-05-29T23:59:59.000Z |
+| | ppp | 1987-02-11T12:13:14.015Z | GMT+0 下午 12:13:14 | Errored |
+| | | 1453-05-29T23:59:59.999Z | GMT+0 下午 11:59:59 | Errored |
+| | pppp | 1987-02-11T12:13:14.015Z | GMT+00:00 下午 12:13:14 | Errored |
+| | | 1453-05-29T23:59:59.999Z | GMT+00:00 下午 11:59:59 | Errored |
+| Combination of date and time | Pp | 1987-02-11T12:13:14.015Z | 87-02-11 下午 12:13 | 1987-02-11T12:13:00.000Z |
+| | | 1453-05-29T23:59:59.999Z | 53-05-29 下午 11:59 | 1453-05-29T23:59:00.000Z |
+| | PPpp | 1987-02-11T12:13:14.015Z | 1987-02-11 下午 12:13:14 | 1987-02-11T12:13:14.000Z |
+| | | 1453-05-29T23:59:59.999Z | 1453-05-29 下午 11:59:59 | 1453-05-29T23:59:59.000Z |
+| | PPPppp | 1987-02-11T12:13:14.015Z | 1987 年 2 月 11 日 GMT+0 下午 12:13:14 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 1453 年 5 月 29 日 GMT+0 下午 11:59:59 | Errored |
+| | PPPPpppp | 1987-02-11T12:13:14.015Z | 1987 年 2 月 11 日 星期三 GMT+00:00 下午 12:13:14 | Errored |
+| | | 1453-05-29T23:59:59.999Z | 1453 年 5 月 29 日 星期日 GMT+00:00 下午 11:59:59 | Errored |
+
+## `formatDistance`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `includeSeconds: true` | `addSuffix: true` |
+| ------------------------ | ----------- | ---------------------- | ----------------- |
+| 2006-01-01T00:00:00.000Z | 大約 6 年 | 大約 6 年 | 大約 6 年內 |
+| 2005-01-01T00:00:00.000Z | 大約 5 年 | 大約 5 年 | 大約 5 年內 |
+| 2004-01-01T00:00:00.000Z | 大約 4 年 | 大約 4 年 | 大約 4 年內 |
+| 2003-01-01T00:00:00.000Z | 大約 3 年 | 大約 3 年 | 大約 3 年內 |
+| 2002-01-01T00:00:00.000Z | 大約 2 年 | 大約 2 年 | 大約 2 年內 |
+| 2001-06-01T00:00:00.000Z | 超過 1 年 | 超過 1 年 | 超過 1 年內 |
+| 2001-02-01T00:00:00.000Z | 大約 1 年 | 大約 1 年 | 大約 1 年內 |
+| 2001-01-01T00:00:00.000Z | 大約 1 年 | 大約 1 年 | 大約 1 年內 |
+| 2000-06-01T00:00:00.000Z | 5 個月 | 5 個月 | 5 個月內 |
+| 2000-03-01T00:00:00.000Z | 2 個月 | 2 個月 | 2 個月內 |
+| 2000-02-01T00:00:00.000Z | 大約 1 個月 | 大約 1 個月 | 大約 1 個月內 |
+| 2000-01-15T00:00:00.000Z | 14 天 | 14 天 | 14 天內 |
+| 2000-01-02T00:00:00.000Z | 1 天 | 1 天 | 1 天內 |
+| 2000-01-01T06:00:00.000Z | 大約 6 小時 | 大約 6 小時 | 大約 6 小時內 |
+| 2000-01-01T01:00:00.000Z | 大約 1 小時 | 大約 1 小時 | 大約 1 小時內 |
+| 2000-01-01T00:45:00.000Z | 大約 1 小時 | 大約 1 小時 | 大約 1 小時內 |
+| 2000-01-01T00:30:00.000Z | 30 分鐘 | 30 分鐘 | 30 分鐘內 |
+| 2000-01-01T00:15:00.000Z | 15 分鐘 | 15 分鐘 | 15 分鐘內 |
+| 2000-01-01T00:01:00.000Z | 1 分鐘 | 1 分鐘 | 1 分鐘內 |
+| 2000-01-01T00:00:25.000Z | 少於 1 分鐘 | 半分鐘 | 少於 1 分鐘內 |
+| 2000-01-01T00:00:15.000Z | 少於 1 分鐘 | 少於 20 秒 | 少於 1 分鐘內 |
+| 2000-01-01T00:00:05.000Z | 少於 1 分鐘 | 少於 10 秒 | 少於 1 分鐘內 |
+| 2000-01-01T00:00:00.000Z | 少於 1 分鐘 | 少於 5 秒 | 少於 1 分鐘前 |
+| 1999-12-31T23:59:55.000Z | 少於 1 分鐘 | 少於 10 秒 | 少於 1 分鐘前 |
+| 1999-12-31T23:59:45.000Z | 少於 1 分鐘 | 少於 20 秒 | 少於 1 分鐘前 |
+| 1999-12-31T23:59:35.000Z | 少於 1 分鐘 | 半分鐘 | 少於 1 分鐘前 |
+| 1999-12-31T23:59:00.000Z | 1 分鐘 | 1 分鐘 | 1 分鐘前 |
+| 1999-12-31T23:45:00.000Z | 15 分鐘 | 15 分鐘 | 15 分鐘前 |
+| 1999-12-31T23:30:00.000Z | 30 分鐘 | 30 分鐘 | 30 分鐘前 |
+| 1999-12-31T23:15:00.000Z | 大約 1 小時 | 大約 1 小時 | 大約 1 小時前 |
+| 1999-12-31T23:00:00.000Z | 大約 1 小時 | 大約 1 小時 | 大約 1 小時前 |
+| 1999-12-31T18:00:00.000Z | 大約 6 小時 | 大約 6 小時 | 大約 6 小時前 |
+| 1999-12-30T00:00:00.000Z | 2 天 | 2 天 | 2 天前 |
+| 1999-12-15T00:00:00.000Z | 17 天 | 17 天 | 17 天前 |
+| 1999-12-01T00:00:00.000Z | 大約 1 個月 | 大約 1 個月 | 大約 1 個月前 |
+| 1999-11-01T00:00:00.000Z | 2 個月 | 2 個月 | 2 個月前 |
+| 1999-06-01T00:00:00.000Z | 7 個月 | 7 個月 | 7 個月前 |
+| 1999-01-01T00:00:00.000Z | 大約 1 年 | 大約 1 年 | 大約 1 年前 |
+| 1998-12-01T00:00:00.000Z | 大約 1 年 | 大約 1 年 | 大約 1 年前 |
+| 1998-06-01T00:00:00.000Z | 超過 1 年 | 超過 1 年 | 超過 1 年前 |
+| 1998-01-01T00:00:00.000Z | 大約 2 年 | 大約 2 年 | 大約 2 年前 |
+| 1997-01-01T00:00:00.000Z | 大約 3 年 | 大約 3 年 | 大約 3 年前 |
+| 1996-01-01T00:00:00.000Z | 大約 4 年 | 大約 4 年 | 大約 4 年前 |
+| 1995-01-01T00:00:00.000Z | 大約 5 年 | 大約 5 年 | 大約 5 年前 |
+| 1994-01-01T00:00:00.000Z | 大約 6 年 | 大約 6 年 | 大約 6 年前 |
+
+## `formatDistanceStrict`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result | `addSuffix: true` | With forced unit (i.e. `hour`) |
+| ------------------------ | ------- | ----------------- | ------------------------------ |
+| 2006-01-01T00:00:00.000Z | 6 年 | 6 年內 | 52608 小時 |
+| 2005-01-01T00:00:00.000Z | 5 年 | 5 年內 | 43848 小時 |
+| 2004-01-01T00:00:00.000Z | 4 年 | 4 年內 | 35064 小時 |
+| 2003-01-01T00:00:00.000Z | 3 年 | 3 年內 | 26304 小時 |
+| 2002-01-01T00:00:00.000Z | 2 年 | 2 年內 | 17544 小時 |
+| 2001-06-01T00:00:00.000Z | 1 年 | 1 年內 | 12408 小時 |
+| 2001-02-01T00:00:00.000Z | 1 年 | 1 年內 | 9528 小時 |
+| 2001-01-01T00:00:00.000Z | 1 年 | 1 年內 | 8784 小時 |
+| 2000-06-01T00:00:00.000Z | 5 個月 | 5 個月內 | 3648 小時 |
+| 2000-03-01T00:00:00.000Z | 2 個月 | 2 個月內 | 1440 小時 |
+| 2000-02-01T00:00:00.000Z | 1 個月 | 1 個月內 | 744 小時 |
+| 2000-01-15T00:00:00.000Z | 14 天 | 14 天內 | 336 小時 |
+| 2000-01-02T00:00:00.000Z | 1 天 | 1 天內 | 24 小時 |
+| 2000-01-01T06:00:00.000Z | 6 小時 | 6 小時內 | 6 小時 |
+| 2000-01-01T01:00:00.000Z | 1 小時 | 1 小時內 | 1 小時 |
+| 2000-01-01T00:45:00.000Z | 45 分鐘 | 45 分鐘內 | 1 小時 |
+| 2000-01-01T00:30:00.000Z | 30 分鐘 | 30 分鐘內 | 1 小時 |
+| 2000-01-01T00:15:00.000Z | 15 分鐘 | 15 分鐘內 | 0 小時 |
+| 2000-01-01T00:01:00.000Z | 1 分鐘 | 1 分鐘內 | 0 小時 |
+| 2000-01-01T00:00:25.000Z | 25 秒 | 25 秒內 | 0 小時 |
+| 2000-01-01T00:00:15.000Z | 15 秒 | 15 秒內 | 0 小時 |
+| 2000-01-01T00:00:05.000Z | 5 秒 | 5 秒內 | 0 小時 |
+| 2000-01-01T00:00:00.000Z | 0 秒 | 0 秒前 | 0 小時 |
+| 1999-12-31T23:59:55.000Z | 5 秒 | 5 秒前 | 0 小時 |
+| 1999-12-31T23:59:45.000Z | 15 秒 | 15 秒前 | 0 小時 |
+| 1999-12-31T23:59:35.000Z | 25 秒 | 25 秒前 | 0 小時 |
+| 1999-12-31T23:59:00.000Z | 1 分鐘 | 1 分鐘前 | 0 小時 |
+| 1999-12-31T23:45:00.000Z | 15 分鐘 | 15 分鐘前 | 0 小時 |
+| 1999-12-31T23:30:00.000Z | 30 分鐘 | 30 分鐘前 | 1 小時 |
+| 1999-12-31T23:15:00.000Z | 45 分鐘 | 45 分鐘前 | 1 小時 |
+| 1999-12-31T23:00:00.000Z | 1 小時 | 1 小時前 | 1 小時 |
+| 1999-12-31T18:00:00.000Z | 6 小時 | 6 小時前 | 6 小時 |
+| 1999-12-30T00:00:00.000Z | 2 天 | 2 天前 | 48 小時 |
+| 1999-12-15T00:00:00.000Z | 17 天 | 17 天前 | 408 小時 |
+| 1999-12-01T00:00:00.000Z | 1 個月 | 1 個月前 | 744 小時 |
+| 1999-11-01T00:00:00.000Z | 2 個月 | 2 個月前 | 1464 小時 |
+| 1999-06-01T00:00:00.000Z | 7 個月 | 7 個月前 | 5136 小時 |
+| 1999-01-01T00:00:00.000Z | 1 年 | 1 年前 | 8760 小時 |
+| 1998-12-01T00:00:00.000Z | 1 年 | 1 年前 | 9504 小時 |
+| 1998-06-01T00:00:00.000Z | 2 年 | 2 年前 | 13896 小時 |
+| 1998-01-01T00:00:00.000Z | 2 年 | 2 年前 | 17520 小時 |
+| 1997-01-01T00:00:00.000Z | 3 年 | 3 年前 | 26280 小時 |
+| 1996-01-01T00:00:00.000Z | 4 年 | 4 年前 | 35064 小時 |
+| 1995-01-01T00:00:00.000Z | 5 年 | 5 年前 | 43824 小時 |
+| 1994-01-01T00:00:00.000Z | 6 年 | 6 年前 | 52584 小時 |
+
+## `formatRelative`
+
+If now is January 1st, 2000, 00:00.
+
+| Date | Result |
+| ------------------------ | --------------------- |
+| 2000-01-10T00:00:00.000Z | 00-01-10 |
+| 2000-01-05T00:00:00.000Z | 下個星期三 上午 12:00 |
+| 2000-01-02T00:00:00.000Z | 明天 上午 12:00 |
+| 2000-01-01T00:00:00.000Z | 今天 上午 12:00 |
+| 1999-12-31T00:00:00.000Z | 昨天 上午 12:00 |
+| 1999-12-27T00:00:00.000Z | 上個星期一 上午 12:00 |
+| 1999-12-21T00:00:00.000Z | 99-12-21 |
diff --git a/date-fns/src/max/benchmark.js b/date-fns/src/max/benchmark.js
new file mode 100644
index 0000000..6726268
--- /dev/null
+++ b/date-fns/src/max/benchmark.js
@@ -0,0 +1,27 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import max from '.'
+import moment from 'moment'
+
+suite(
+ 'max',
+ function() {
+ benchmark('date-fns', function() {
+ return max([this.dateA, this.dateB])
+ })
+
+ benchmark('Moment.js', function() {
+ return moment.max(this.momentA, this.momentB)
+ })
+ },
+ {
+ setup: function() {
+ this.dateA = new Date()
+ this.momentA = moment()
+ this.dateB = new Date(this.dateA.getTime() + 604800000)
+ this.momentB = this.momentA.clone().add(7, 'days')
+ }
+ }
+)
diff --git a/date-fns/src/max/index.d.ts b/date-fns/src/max/index.d.ts
new file mode 100644
index 0000000..733a96e
--- /dev/null
+++ b/date-fns/src/max/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { max } from 'date-fns'
+export default max
diff --git a/date-fns/src/max/index.js.flow b/date-fns/src/max/index.js.flow
new file mode 100644
index 0000000..8543909
--- /dev/null
+++ b/date-fns/src/max/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (datesArray: (Date | number)[]) => Date
diff --git a/date-fns/src/max/index.ts b/date-fns/src/max/index.ts
new file mode 100644
index 0000000..1c74453
--- /dev/null
+++ b/date-fns/src/max/index.ts
@@ -0,0 +1,69 @@
+import toDate from '../toDate/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name max
+ * @category Common Helpers
+ * @summary Return the latest of the given dates.
+ *
+ * @description
+ * Return the latest of the given dates.
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * - `max` function now accepts an array of dates rather than spread arguments.
+ *
+ * ```javascript
+ * // Before v2.0.0
+ * var date1 = new Date(1989, 6, 10)
+ * var date2 = new Date(1987, 1, 11)
+ * var maxDate = max(date1, date2)
+ *
+ * // v2.0.0 onward:
+ * var dates = [new Date(1989, 6, 10), new Date(1987, 1, 11)]
+ * var maxDate = max(dates)
+ * ```
+ *
+ * @param {Date[]|Number[]} datesArray - the dates to compare
+ * @returns {Date} the latest of the dates
+ * @throws {TypeError} 1 argument required
+ *
+ * @example
+ * // Which of these dates is the latest?
+ * var result = max([
+ * new Date(1989, 6, 10),
+ * new Date(1987, 1, 11),
+ * new Date(1995, 6, 2),
+ * new Date(1990, 0, 1)
+ * ])
+ * //=> Sun Jul 02 1995 00:00:00
+ */
+export default function max(dirtyDatesArray: Date[] | string[] | number[]): Date {
+ requiredArgs(1, arguments)
+
+ let datesArray
+ // `dirtyDatesArray` is Array, Set or Map, or object with custom `forEach` method
+ if (dirtyDatesArray && typeof dirtyDatesArray.forEach === 'function') {
+ datesArray = dirtyDatesArray
+
+ // If `dirtyDatesArray` is Array-like Object, convert to Array.
+ } else if (typeof dirtyDatesArray === 'object' && dirtyDatesArray !== null) {
+ datesArray = Array.prototype.slice.call(dirtyDatesArray)
+ } else {
+ // `dirtyDatesArray` is non-iterable, return Invalid Date
+ return new Date(NaN)
+ }
+
+ let result: Date | undefined
+ datesArray.forEach(function(dirtyDate) {
+ const currentDate = toDate(dirtyDate)
+
+ if (result === undefined || result < currentDate || isNaN(Number(currentDate))) {
+ result = currentDate
+ }
+ })
+
+ return result || new Date(NaN)
+}
diff --git a/date-fns/src/max/test.ts b/date-fns/src/max/test.ts
new file mode 100644
index 0000000..a394457
--- /dev/null
+++ b/date-fns/src/max/test.ts
@@ -0,0 +1,92 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import max from '.'
+
+describe('max', function() {
+ function isInvalidDate(dirtyDate: Date | number): boolean {
+ return dirtyDate instanceof Date && isNaN(Number(dirtyDate))
+ }
+
+ it('returns the latest date', function() {
+ const result = max([
+ new Date(1989, 6 /* Jul */, 10),
+ new Date(1987, 1 /* Feb */, 11)
+ ])
+ assert.deepEqual(result, new Date(1989, 6 /* Jul */, 10))
+ })
+
+ it('accepts array with more than 2 entries', function() {
+ const result = max([
+ new Date(1987, 1 /* Feb */, 11),
+ new Date(1989, 6 /* Jul */, 10),
+ new Date(1995, 6 /* Jul */, 2),
+ new Date(1990, 0 /* Jan */, 1)
+ ])
+ assert.deepEqual(result, new Date(1995, 6 /* Jul */, 2))
+ })
+
+ it('accepts timestamps', function() {
+ const result = max([
+ new Date(1989, 6 /* Jul */, 10).getTime(),
+ new Date(1987, 1 /* Feb */, 11).getTime()
+ ])
+ assert.deepEqual(result, new Date(1989, 6 /* Jul */, 10))
+ })
+
+ it('returns `Invalid Date` if any given date is invalid', function() {
+ const result = max([
+ new Date(1989, 6 /* Jul */, 10),
+ new Date(NaN),
+ new Date(1987, 1 /* Feb */, 11)
+ ])
+ assert(isInvalidDate(result))
+ })
+
+ it('returns `Invalid Date` if any given value is undefined', function() {
+ const result = max([
+ new Date(1989, 6 /* Jul */, 10),
+ // @ts-expect-error
+ undefined,
+ new Date(1987, 1 /* Feb */, 11)
+ ])
+ assert(isInvalidDate(result))
+ })
+
+ it('returns `Invalid Date` for empty array', function() {
+ const result = max([])
+ assert(isInvalidDate(result))
+ })
+
+ it('converts Array-like objects into Array', function() {
+ // @ts-expect-error
+ const result = max({
+ '0': new Date(1989, 6 /* Jul */, 10),
+ '1': new Date(1987, 1 /* Feb */, 11),
+ length: 2
+ })
+ assert.deepEqual(result, new Date(1989, 6 /* Jul */, 10))
+ })
+
+ it('converts iterable objects into Array', function() {
+ const result = max(
+ // @ts-expect-error
+ new Set([
+ new Date(1989, 6 /* Jul */, 10),
+ new Date(1987, 1 /* Feb */, 11)
+ ])
+ )
+ assert.deepEqual(result, new Date(1989, 6 /* Jul */, 10))
+ })
+
+ it('returns `Invalid Date` if given a non-iterable value', function() {
+ // @ts-expect-error
+ const result = max(undefined)
+ assert(isInvalidDate(result))
+ })
+
+ it('throws TypeError exception if passed less than 1 argument', function() {
+ assert.throws(max.bind(null), TypeError)
+ })
+})
diff --git a/date-fns/src/milliseconds/index.d.ts b/date-fns/src/milliseconds/index.d.ts
new file mode 100644
index 0000000..6927b52
--- /dev/null
+++ b/date-fns/src/milliseconds/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { milliseconds } from 'date-fns'
+export default milliseconds
diff --git a/date-fns/src/milliseconds/index.js.flow b/date-fns/src/milliseconds/index.js.flow
new file mode 100644
index 0000000..5ca1b36
--- /dev/null
+++ b/date-fns/src/milliseconds/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (duration: Duration) => number
diff --git a/date-fns/src/milliseconds/index.ts b/date-fns/src/milliseconds/index.ts
new file mode 100644
index 0000000..6519229
--- /dev/null
+++ b/date-fns/src/milliseconds/index.ts
@@ -0,0 +1,62 @@
+import requiredArgs from '../_lib/requiredArgs/index'
+import { Duration } from '../types'
+
+// Leap year occures every 4 years, except for years that are divisable by 100 and not divisable by 400.
+// 1 mean year = (365+1/4-1/100+1/400) days = 365.2425 days
+const daysInYear = 365.2425
+
+/**
+ * @name milliseconds
+ * @category Millisecond Helpers
+ * @summary
+ * Returns the number of milliseconds in the specified, years, months, weeks, days, hours, minutes and seconds.
+ *
+ * @description
+ * Returns the number of milliseconds in the specified, years, months, weeks, days, hours, minutes and seconds.
+ *
+ * One years equals 365.2425 days according to the formula:
+ *
+ * > Leap year occures every 4 years, except for years that are divisable by 100 and not divisable by 400.
+ * > 1 mean year = (365+1/4-1/100+1/400) days = 365.2425 days
+ *
+ * One month is a year divided by 12.
+ *
+ * @param {Duration} duration - the object with years, months, weeks, days, hours, minutes and seconds to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.
+ * @returns {number} the milliseconds
+ * @throws {TypeError} 1 argument required
+ *
+ * @example
+ * // 1 year in milliseconds
+ * milliseconds({ years: 1 })
+ * //=> 31556952000
+ *
+ * // 3 months in milliseconds
+ * milliseconds({ months: 3 })
+ * //=> 7889238000
+ */
+export default function milliseconds({
+ years,
+ months,
+ weeks,
+ days,
+ hours,
+ minutes,
+ seconds,
+}: Duration): number {
+ requiredArgs(1, arguments)
+
+ let totalDays = 0
+
+ if (years) totalDays += years * daysInYear
+ if (months) totalDays += months * (daysInYear / 12)
+ if (weeks) totalDays += weeks * 7
+ if (days) totalDays += days
+
+ let totalSeconds = totalDays * 24 * 60 * 60
+
+ if (hours) totalSeconds += hours * 60 * 60
+ if (minutes) totalSeconds += minutes * 60
+ if (seconds) totalSeconds += seconds
+
+ return Math.round(totalSeconds * 1000)
+}
diff --git a/date-fns/src/milliseconds/test.ts b/date-fns/src/milliseconds/test.ts
new file mode 100644
index 0000000..e576c23
--- /dev/null
+++ b/date-fns/src/milliseconds/test.ts
@@ -0,0 +1,65 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'assert'
+import milliseconds from '.'
+
+describe('milliseconds', () => {
+ it('converts years to milliseconds', () => {
+ const result = milliseconds({ years: 2 })
+ assert(result === 63113904000)
+ })
+
+ it('converts months to milliseconds', () => {
+ const result = milliseconds({ months: 3 })
+ assert(result === 7889238000)
+ })
+
+ it('converts weeks to milliseconds', () => {
+ const result = milliseconds({ weeks: 2 })
+ assert(result === 1209600000)
+ })
+
+ it('converts days to milliseconds', () => {
+ const result = milliseconds({ days: 5 })
+ assert(result === 432000000)
+ })
+
+ it('converts hours to milliseconds', () => {
+ const result = milliseconds({ hours: 2 })
+ assert(result === 7200000)
+ })
+
+ it('converts minutes to milliseconds', () => {
+ const result = milliseconds({ minutes: 5 })
+ assert(result === 300000)
+ })
+
+ it('converts seconds to milliseconds', () => {
+ const result = milliseconds({ seconds: 10 })
+ assert(result === 10000)
+ })
+
+ it('sums all the duration values', () => {
+ const result = milliseconds({
+ years: 2,
+ months: 3,
+ weeks: 2,
+ days: 5,
+ hours: 2,
+ minutes: 5,
+ seconds: 10
+ })
+ assert(result === 72652252000)
+ })
+
+ it('returns 0 for an empty duration', () => {
+ const result = milliseconds({})
+ assert(result === 0)
+ })
+
+ it('throws TypeError exception if passed less than 1 argument', function() {
+ // @ts-expect-error
+ assert.throws(milliseconds.bind(null), TypeError)
+ })
+})
diff --git a/date-fns/src/millisecondsToHours/index.d.ts b/date-fns/src/millisecondsToHours/index.d.ts
new file mode 100644
index 0000000..af90bf8
--- /dev/null
+++ b/date-fns/src/millisecondsToHours/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { millisecondsToHours } from 'date-fns'
+export default millisecondsToHours
diff --git a/date-fns/src/millisecondsToHours/index.js.flow b/date-fns/src/millisecondsToHours/index.js.flow
new file mode 100644
index 0000000..c998756
--- /dev/null
+++ b/date-fns/src/millisecondsToHours/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (milliseconds: number) => number
diff --git a/date-fns/src/millisecondsToHours/index.ts b/date-fns/src/millisecondsToHours/index.ts
new file mode 100644
index 0000000..a843a4d
--- /dev/null
+++ b/date-fns/src/millisecondsToHours/index.ts
@@ -0,0 +1,31 @@
+import requiredArgs from '../_lib/requiredArgs/index'
+import { millisecondsInHour } from '../constants/index'
+
+/**
+ * @name millisecondsToHours
+ * @category Conversion Helpers
+ * @summary Convert milliseconds to hours.
+ *
+ * @description
+ * Convert a number of milliseconds to a full number of hours.
+ *
+ * @param {number} milliseconds - number of milliseconds to be converted
+ *
+ * @returns {number} the number of milliseconds converted in hours
+ * @throws {TypeError} 1 argument required
+ *
+ * @example
+ * // Convert 7200000 milliseconds to hours:
+ * const result = millisecondsToHours(7200000)
+ * //=> 2
+ *
+ * @example
+ * // It uses floor rounding:
+ * const result = millisecondsToHours(7199999)
+ * //=> 1
+ */
+export default function millisecondsToHours(milliseconds: number): number {
+ requiredArgs(1, arguments)
+ const hours = milliseconds / millisecondsInHour
+ return Math.floor(hours)
+}
diff --git a/date-fns/src/millisecondsToHours/test.ts b/date-fns/src/millisecondsToHours/test.ts
new file mode 100644
index 0000000..5fed366
--- /dev/null
+++ b/date-fns/src/millisecondsToHours/test.ts
@@ -0,0 +1,22 @@
+/* eslint-env mocha */
+
+import assert from 'assert'
+import millisecondsToHours from '.'
+
+describe('millisecondsToHours', function () {
+
+ it('converts milliseconds to hours', function () {
+ assert(millisecondsToHours(3600000) === 1)
+ assert(millisecondsToHours(7200000) === 2)
+ })
+
+ it('uses floor rounding', () => {
+ assert(millisecondsToHours(3600001) === 1)
+ assert(millisecondsToHours(3599999) === 0)
+ })
+
+ it('handles border values', () => {
+ assert(millisecondsToHours(3600000.5) === 1)
+ assert(millisecondsToHours(0) === 0)
+ })
+})
diff --git a/date-fns/src/millisecondsToMinutes/index.d.ts b/date-fns/src/millisecondsToMinutes/index.d.ts
new file mode 100644
index 0000000..ea00809
--- /dev/null
+++ b/date-fns/src/millisecondsToMinutes/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { millisecondsToMinutes } from 'date-fns'
+export default millisecondsToMinutes
diff --git a/date-fns/src/millisecondsToMinutes/index.js.flow b/date-fns/src/millisecondsToMinutes/index.js.flow
new file mode 100644
index 0000000..c998756
--- /dev/null
+++ b/date-fns/src/millisecondsToMinutes/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (milliseconds: number) => number
diff --git a/date-fns/src/millisecondsToMinutes/index.ts b/date-fns/src/millisecondsToMinutes/index.ts
new file mode 100644
index 0000000..b4529f2
--- /dev/null
+++ b/date-fns/src/millisecondsToMinutes/index.ts
@@ -0,0 +1,31 @@
+import requiredArgs from '../_lib/requiredArgs/index'
+import { millisecondsInMinute } from '../constants/index'
+
+/**
+ * @name millisecondsToMinutes
+ * @category Conversion Helpers
+ * @summary Convert milliseconds to minutes.
+ *
+ * @description
+ * Convert a number of milliseconds to a full number of minutes.
+ *
+ * @param {number} milliseconds - number of milliseconds to be converted.
+ *
+ * @returns {number} the number of milliseconds converted in minutes
+ * @throws {TypeError} 1 argument required
+ *
+ * @example
+ * // Convert 60000 milliseconds to minutes:
+ * const result = millisecondsToMinutes(60000)
+ * //=> 1
+ *
+ * @example
+ * // It uses floor rounding:
+ * const result = millisecondsToMinutes(119999)
+ * //=> 1
+ */
+export default function millisecondsToMinutes(milliseconds: number): number {
+ requiredArgs(1, arguments)
+ const minutes = milliseconds / millisecondsInMinute
+ return Math.floor(minutes)
+}
diff --git a/date-fns/src/millisecondsToMinutes/test.ts b/date-fns/src/millisecondsToMinutes/test.ts
new file mode 100644
index 0000000..3d14345
--- /dev/null
+++ b/date-fns/src/millisecondsToMinutes/test.ts
@@ -0,0 +1,21 @@
+/* eslint-env mocha */
+
+import assert from 'assert'
+import millisecondsToMinutes from '.'
+
+describe('millisecondsToMinutes', () => {
+ it('converts milliseconds to minutes', function () {
+ assert(millisecondsToMinutes(60000) === 1)
+ assert(millisecondsToMinutes(120000) === 2)
+ })
+
+ it('uses floor rounding', () => {
+ assert(millisecondsToMinutes(60001) === 1)
+ assert(millisecondsToMinutes(59999) === 0)
+ })
+
+ it('handles border values', () => {
+ assert(millisecondsToMinutes(60000.5) === 1)
+ assert(millisecondsToMinutes(0) === 0)
+ })
+})
diff --git a/date-fns/src/millisecondsToSeconds/index.d.ts b/date-fns/src/millisecondsToSeconds/index.d.ts
new file mode 100644
index 0000000..d761abd
--- /dev/null
+++ b/date-fns/src/millisecondsToSeconds/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { millisecondsToSeconds } from 'date-fns'
+export default millisecondsToSeconds
diff --git a/date-fns/src/millisecondsToSeconds/index.js.flow b/date-fns/src/millisecondsToSeconds/index.js.flow
new file mode 100644
index 0000000..c998756
--- /dev/null
+++ b/date-fns/src/millisecondsToSeconds/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (milliseconds: number) => number
diff --git a/date-fns/src/millisecondsToSeconds/index.ts b/date-fns/src/millisecondsToSeconds/index.ts
new file mode 100644
index 0000000..ea35328
--- /dev/null
+++ b/date-fns/src/millisecondsToSeconds/index.ts
@@ -0,0 +1,31 @@
+import requiredArgs from '../_lib/requiredArgs/index'
+import { millisecondsInSecond } from '../constants/index'
+
+/**
+ * @name millisecondsToSeconds
+ * @category Conversion Helpers
+ * @summary Convert milliseconds to seconds.
+ *
+ * @description
+ * Convert a number of milliseconds to a full number of seconds.
+ *
+ * @param {number} milliseconds - number of milliseconds to be converted
+ *
+ * @returns {number} the number of milliseconds converted in seconds
+ * @throws {TypeError} 1 argument required
+ *
+ * @example
+ * // Convert 1000 miliseconds to seconds:
+ * const result = millisecondsToSeconds(1000)
+ * //=> 1
+ *
+ * @example
+ * // It uses floor rounding:
+ * const result = millisecondsToSeconds(1999)
+ * //=> 1
+ */
+export default function millisecondsToSeconds(milliseconds: number): number {
+ requiredArgs(1, arguments)
+ const seconds = milliseconds / millisecondsInSecond
+ return Math.floor(seconds)
+}
diff --git a/date-fns/src/millisecondsToSeconds/test.ts b/date-fns/src/millisecondsToSeconds/test.ts
new file mode 100644
index 0000000..6e3c15b
--- /dev/null
+++ b/date-fns/src/millisecondsToSeconds/test.ts
@@ -0,0 +1,22 @@
+/* eslint-env mocha */
+
+import assert from 'assert'
+import millisecondsToSeconds from '.'
+
+describe('millisecondsToSeconds', function () {
+
+ it('converts milliseconds to seconds', function () {
+ assert(millisecondsToSeconds(1000) === 1)
+ assert(millisecondsToSeconds(2000) === 2)
+ })
+
+ it('uses floor rounding', () => {
+ assert(millisecondsToSeconds(1001) === 1)
+ assert(millisecondsToSeconds(999) === 0)
+ })
+
+ it('handles border values', () => {
+ assert(millisecondsToSeconds(1000.5) === 1)
+ assert(millisecondsToSeconds(0) === 0)
+ })
+})
diff --git a/date-fns/src/min/benchmark.js b/date-fns/src/min/benchmark.js
new file mode 100644
index 0000000..e2a997b
--- /dev/null
+++ b/date-fns/src/min/benchmark.js
@@ -0,0 +1,27 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import min from '.'
+import moment from 'moment'
+
+suite(
+ 'min',
+ function() {
+ benchmark('date-fns', function() {
+ return min([this.dateA, this.dateB])
+ })
+
+ benchmark('Moment.js', function() {
+ return moment.min(this.momentA, this.momentB)
+ })
+ },
+ {
+ setup: function() {
+ this.dateA = new Date()
+ this.momentA = moment()
+ this.dateB = new Date(this.dateA.getTime() + 604800000)
+ this.momentB = this.momentA.clone().add(7, 'days')
+ }
+ }
+)
diff --git a/date-fns/src/min/index.d.ts b/date-fns/src/min/index.d.ts
new file mode 100644
index 0000000..f7227e7
--- /dev/null
+++ b/date-fns/src/min/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { min } from 'date-fns'
+export default min
diff --git a/date-fns/src/min/index.js.flow b/date-fns/src/min/index.js.flow
new file mode 100644
index 0000000..8543909
--- /dev/null
+++ b/date-fns/src/min/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (datesArray: (Date | number)[]) => Date
diff --git a/date-fns/src/min/index.ts b/date-fns/src/min/index.ts
new file mode 100644
index 0000000..b29763d
--- /dev/null
+++ b/date-fns/src/min/index.ts
@@ -0,0 +1,73 @@
+import toDate from '../toDate/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name min
+ * @category Common Helpers
+ * @summary Returns the earliest of the given dates.
+ *
+ * @description
+ * Returns the earliest of the given dates.
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * - `min` function now accepts an array of dates rather than spread arguments.
+ *
+ * ```javascript
+ * // Before v2.0.0
+ * const date1 = new Date(1989, 6, 10)
+ * const date2 = new Date(1987, 1, 11)
+ * const minDate = min(date1, date2)
+ *
+ * // v2.0.0 onward:
+ * const dates = [new Date(1989, 6, 10), new Date(1987, 1, 11)]
+ * const minDate = min(dates)
+ * ```
+ *
+ * @param {Date[]|Number[]} datesArray - the dates to compare
+ * @returns {Date} - the earliest of the dates
+ * @throws {TypeError} 1 argument required
+ *
+ * @example
+ * // Which of these dates is the earliest?
+ * const result = min([
+ * new Date(1989, 6, 10),
+ * new Date(1987, 1, 11),
+ * new Date(1995, 6, 2),
+ * new Date(1990, 0, 1)
+ * ])
+ * //=> Wed Feb 11 1987 00:00:00
+ */
+export default function min(dirtyDatesArray: Date[] | number[]): Date {
+ requiredArgs(1, arguments)
+
+ let datesArray: Date[] | number[]
+ // `dirtyDatesArray` is Array, Set or Map, or object with custom `forEach` method
+ if (dirtyDatesArray && typeof dirtyDatesArray.forEach === 'function') {
+ datesArray = dirtyDatesArray
+ // If `dirtyDatesArray` is Array-like Object, convert to Array.
+ } else if (typeof dirtyDatesArray === 'object' && dirtyDatesArray !== null) {
+ datesArray = Array.prototype.slice.call(dirtyDatesArray)
+ } else {
+ // `dirtyDatesArray` is non-iterable, return Invalid Date
+ return new Date(NaN)
+ }
+
+ let result: Date | undefined
+
+ datesArray.forEach(function (dirtyDate: Date | number) {
+ let currentDate = toDate(dirtyDate)
+
+ if (
+ result === undefined ||
+ result > currentDate ||
+ isNaN(currentDate.getDate())
+ ) {
+ result = currentDate
+ }
+ })
+
+ return result || new Date(NaN)
+}
diff --git a/date-fns/src/min/test.ts b/date-fns/src/min/test.ts
new file mode 100644
index 0000000..9bf83ad
--- /dev/null
+++ b/date-fns/src/min/test.ts
@@ -0,0 +1,93 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'assert'
+import min from '.'
+
+describe('min', () => {
+ const isInvalidDate = (dirtyDate: Date): boolean => {
+ return dirtyDate instanceof Date && isNaN(dirtyDate.getDate())
+ }
+
+ it('returns the earliest date', () => {
+ const result = min([
+ new Date(1989, 6 /* Jul */, 10),
+ new Date(1987, 1 /* Feb */, 11),
+ ])
+ assert.deepStrictEqual(result, new Date(1987, 1 /* Feb */, 11))
+ })
+
+ it('accepts array with more than 2 entries', () => {
+ const result = min([
+ new Date(1987, 1 /* Feb */, 11),
+ new Date(1989, 6 /* Jul */, 10),
+ new Date(1985, 6 /* Jul */, 2),
+ new Date(1990, 0 /* Jan */, 1),
+ ])
+ assert.deepStrictEqual(result, new Date(1985, 6 /* Jul */, 2))
+ })
+
+ it('accepts timestamps', () => {
+ const result = min([
+ new Date(1989, 6 /* Jul */, 10).getTime(),
+ new Date(1987, 1 /* Feb */, 11).getTime(),
+ ])
+ assert.deepStrictEqual(result, new Date(1987, 1 /* Feb */, 11))
+ })
+
+ it('returns `Invalid Date` if any given date is invalid', () => {
+ const result = min([
+ new Date(1989, 6 /* Jul */, 10),
+ new Date(NaN),
+ new Date(1987, 1 /* Feb */, 11),
+ ])
+ assert(isInvalidDate(result))
+ })
+
+ it('returns `Invalid Date` if any given value is undefined', () => {
+ const result = min([
+ new Date(1989, 6 /* Jul */, 10),
+ // @ts-expect-error
+ undefined,
+ new Date(1987, 1 /* Feb */, 11),
+ ])
+ assert(isInvalidDate(result))
+ })
+
+ it('returns `Invalid Date` for empty array', () => {
+ const result = min([])
+ assert(isInvalidDate(result))
+ })
+
+ it('converts Array-like objects into Array', () => {
+ // @ts-expect-error
+ const result = min({
+ '0': new Date(1989, 6 /* Jul */, 10),
+ '1': new Date(1987, 1 /* Feb */, 11),
+ length: 2,
+ })
+ assert.deepStrictEqual(result, new Date(1987, 1 /* Feb */, 11))
+ })
+
+ it('converts iterable objects into Array', () => {
+ const result = min(
+ // @ts-expect-error
+ new Set([
+ new Date(1989, 6 /* Jul */, 10),
+ new Date(1987, 1 /* Feb */, 11),
+ ])
+ )
+ assert.deepStrictEqual(result, new Date(1987, 1 /* Feb */, 11))
+ })
+
+ it('returns `Invalid Date` if given a non-iterable value', () => {
+ // @ts-expect-error
+ const result = min(undefined)
+ assert(isInvalidDate(result))
+ })
+
+ it('throws TypeError exception if passed less than 1 argument', () => {
+ // @ts-expect-error
+ assert.throws(min.bind(null), TypeError)
+ })
+})
diff --git a/date-fns/src/minutesToHours/index.d.ts b/date-fns/src/minutesToHours/index.d.ts
new file mode 100644
index 0000000..d29fb02
--- /dev/null
+++ b/date-fns/src/minutesToHours/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { minutesToHours } from 'date-fns'
+export default minutesToHours
diff --git a/date-fns/src/minutesToHours/index.js.flow b/date-fns/src/minutesToHours/index.js.flow
new file mode 100644
index 0000000..efb76c7
--- /dev/null
+++ b/date-fns/src/minutesToHours/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (minutes: number) => number
diff --git a/date-fns/src/minutesToHours/index.ts b/date-fns/src/minutesToHours/index.ts
new file mode 100644
index 0000000..9fd8cbb
--- /dev/null
+++ b/date-fns/src/minutesToHours/index.ts
@@ -0,0 +1,31 @@
+import requiredArgs from '../_lib/requiredArgs/index'
+import { minutesInHour } from '../constants/index'
+
+/**
+ * @name minutesToHours
+ * @category Conversion Helpers
+ * @summary Convert minutes to hours.
+ *
+ * @description
+ * Convert a number of minutes to a full number of hours.
+ *
+ * @param {number} minutes - number of minutes to be converted
+ *
+ * @returns {number} the number of minutes converted in hours
+ * @throws {TypeError} 1 argument required
+ *
+ * @example
+ * // Convert 140 minutes to hours:
+ * const result = minutesToHours(120)
+ * //=> 2
+ *
+ * @example
+ * // It uses floor rounding:
+ * const result = minutesToHours(179)
+ * //=> 2
+ */
+export default function minutesToHours(minutes: number): number {
+ requiredArgs(1, arguments)
+ const hours = minutes / minutesInHour
+ return Math.floor(hours)
+}
diff --git a/date-fns/src/minutesToHours/test.ts b/date-fns/src/minutesToHours/test.ts
new file mode 100644
index 0000000..be34522
--- /dev/null
+++ b/date-fns/src/minutesToHours/test.ts
@@ -0,0 +1,21 @@
+/* eslint-env mocha */
+
+import assert from 'assert'
+import minuteToHours from '.'
+
+describe('minuteToHours', function () {
+ it('converts minutes to hours', function () {
+ assert(minuteToHours(60) === 1)
+ assert(minuteToHours(120) === 2)
+ })
+
+ it('uses floor rounding', () => {
+ assert(minuteToHours(61) === 1)
+ assert(minuteToHours(59) === 0)
+ })
+
+ it('handles border values', () => {
+ assert(minuteToHours(60.5) === 1)
+ assert(minuteToHours(0) === 0)
+ })
+})
diff --git a/date-fns/src/minutesToMilliseconds/index.d.ts b/date-fns/src/minutesToMilliseconds/index.d.ts
new file mode 100644
index 0000000..14b5513
--- /dev/null
+++ b/date-fns/src/minutesToMilliseconds/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { minutesToMilliseconds } from 'date-fns'
+export default minutesToMilliseconds
diff --git a/date-fns/src/minutesToMilliseconds/index.js.flow b/date-fns/src/minutesToMilliseconds/index.js.flow
new file mode 100644
index 0000000..efb76c7
--- /dev/null
+++ b/date-fns/src/minutesToMilliseconds/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (minutes: number) => number
diff --git a/date-fns/src/minutesToMilliseconds/index.ts b/date-fns/src/minutesToMilliseconds/index.ts
new file mode 100644
index 0000000..dd95314
--- /dev/null
+++ b/date-fns/src/minutesToMilliseconds/index.ts
@@ -0,0 +1,25 @@
+import requiredArgs from '../_lib/requiredArgs/index'
+import { millisecondsInMinute } from '../constants/index'
+
+/**
+ * @name minutesToMilliseconds
+ * @category Conversion Helpers
+ * @summary Convert minutes to milliseconds.
+ *
+ * @description
+ * Convert a number of minutes to a full number of milliseconds.
+ *
+ * @param {number} minutes - number of minutes to be converted
+ *
+ * @returns {number} the number of minutes converted in milliseconds
+ * @throws {TypeError} 1 argument required
+ *
+ * @example
+ * // Convert 2 minutes to milliseconds
+ * const result = minutesToMilliseconds(2)
+ * //=> 120000
+ */
+export default function minutesToMilliseconds(minutes: number): number {
+ requiredArgs(1, arguments)
+ return Math.floor(minutes * millisecondsInMinute)
+}
diff --git a/date-fns/src/minutesToMilliseconds/test.ts b/date-fns/src/minutesToMilliseconds/test.ts
new file mode 100644
index 0000000..4864a2b
--- /dev/null
+++ b/date-fns/src/minutesToMilliseconds/test.ts
@@ -0,0 +1,20 @@
+/* eslint-env mocha */
+
+import assert from 'assert'
+import minutesToMilliseconds from '.'
+
+describe('minutesToMilliseconds', function () {
+ it('converts minutes to milliseconds', function () {
+ assert(minutesToMilliseconds(1) === 60000)
+ assert(minutesToMilliseconds(2) === 120000)
+ })
+
+ it('uses floor rounding', () => {
+ assert(minutesToMilliseconds(0.123456) === 7407)
+ })
+
+ it('handles border values', () => {
+ assert(minutesToMilliseconds(1.5) === 90000)
+ assert(minutesToMilliseconds(0) === 0)
+ })
+})
diff --git a/date-fns/src/minutesToSeconds/index.d.ts b/date-fns/src/minutesToSeconds/index.d.ts
new file mode 100644
index 0000000..7998c9b
--- /dev/null
+++ b/date-fns/src/minutesToSeconds/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { minutesToSeconds } from 'date-fns'
+export default minutesToSeconds
diff --git a/date-fns/src/minutesToSeconds/index.js.flow b/date-fns/src/minutesToSeconds/index.js.flow
new file mode 100644
index 0000000..efb76c7
--- /dev/null
+++ b/date-fns/src/minutesToSeconds/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (minutes: number) => number
diff --git a/date-fns/src/minutesToSeconds/index.ts b/date-fns/src/minutesToSeconds/index.ts
new file mode 100644
index 0000000..d4b5c4c
--- /dev/null
+++ b/date-fns/src/minutesToSeconds/index.ts
@@ -0,0 +1,25 @@
+import requiredArgs from '../_lib/requiredArgs/index'
+import { secondsInMinute } from '../constants/index'
+
+/**
+ * @name minutesToSeconds
+ * @category Conversion Helpers
+ * @summary Convert minutes to seconds.
+ *
+ * @description
+ * Convert a number of minutes to a full number of seconds.
+ *
+ * @param { number } minutes - number of minutes to be converted
+ *
+ * @returns {number} the number of minutes converted in seconds
+ * @throws {TypeError} 1 argument required
+ *
+ * @example
+ * // Convert 2 minutes to seconds
+ * const result = minutesToSeconds(2)
+ * //=> 120
+ */
+export default function minutesToSeconds(minutes: number): number {
+ requiredArgs(1, arguments)
+ return Math.floor(minutes * secondsInMinute)
+}
diff --git a/date-fns/src/minutesToSeconds/test.ts b/date-fns/src/minutesToSeconds/test.ts
new file mode 100644
index 0000000..9cdd4c2
--- /dev/null
+++ b/date-fns/src/minutesToSeconds/test.ts
@@ -0,0 +1,20 @@
+/* eslint-env mocha */
+
+import assert from 'assert'
+import minutesToSeconds from '.'
+
+describe('minutesToSeconds', function () {
+ it('converts minutes to seconds', function () {
+ assert(minutesToSeconds(1) === 60)
+ assert(minutesToSeconds(2) === 120)
+ })
+
+ it('uses floor rounding', () => {
+ assert(minutesToSeconds(0.123456) === 7)
+ })
+
+ it('handles border values', () => {
+ assert(minutesToSeconds(1.5) === 90)
+ assert(minutesToSeconds(0) === 0)
+ })
+})
diff --git a/date-fns/src/monthsToQuarters/index.d.ts b/date-fns/src/monthsToQuarters/index.d.ts
new file mode 100644
index 0000000..895b1a9
--- /dev/null
+++ b/date-fns/src/monthsToQuarters/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { monthsToQuarters } from 'date-fns'
+export default monthsToQuarters
diff --git a/date-fns/src/monthsToQuarters/index.js.flow b/date-fns/src/monthsToQuarters/index.js.flow
new file mode 100644
index 0000000..de9ea9b
--- /dev/null
+++ b/date-fns/src/monthsToQuarters/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (months: number) => number
diff --git a/date-fns/src/monthsToQuarters/index.ts b/date-fns/src/monthsToQuarters/index.ts
new file mode 100644
index 0000000..0e5bb5d
--- /dev/null
+++ b/date-fns/src/monthsToQuarters/index.ts
@@ -0,0 +1,31 @@
+import requiredArgs from '../_lib/requiredArgs/index'
+import { monthsInQuarter } from '../constants/index'
+
+/**
+ * @name monthsToQuarters
+ * @category Conversion Helpers
+ * @summary Convert number of months to quarters.
+ *
+ * @description
+ * Convert a number of months to a full number of quarters.
+ *
+ * @param {number} months - number of months to be converted.
+ *
+ * @returns {number} the number of months converted in quarters
+ * @throws {TypeError} 1 argument required
+ *
+ * @example
+ * // Convert 6 months to quarters:
+ * const result = monthsToQuarters(6)
+ * //=> 2
+ *
+ * @example
+ * // It uses floor rounding:
+ * const result = monthsToQuarters(7)
+ * //=> 2
+ */
+export default function monthsToQuarters(months: number): number {
+ requiredArgs(1, arguments)
+ const quarters = months / monthsInQuarter
+ return Math.floor(quarters)
+}
diff --git a/date-fns/src/monthsToQuarters/test.ts b/date-fns/src/monthsToQuarters/test.ts
new file mode 100644
index 0000000..a1907d3
--- /dev/null
+++ b/date-fns/src/monthsToQuarters/test.ts
@@ -0,0 +1,21 @@
+/* eslint-env mocha */
+
+import assert from 'assert'
+import monthsToQuarters from '.'
+
+describe('monthsToQuarters', function () {
+ it('converts months to quarters', function () {
+ assert(monthsToQuarters(3) === 1)
+ assert(monthsToQuarters(6) === 2)
+ })
+
+ it('uses floor rounding', () => {
+ assert(monthsToQuarters(4) === 1)
+ assert(monthsToQuarters(2) === 0)
+ })
+
+ it('handles border values', () => {
+ assert(monthsToQuarters(3.5) === 1)
+ assert(monthsToQuarters(0) === 0)
+ })
+})
diff --git a/date-fns/src/monthsToYears/index.d.ts b/date-fns/src/monthsToYears/index.d.ts
new file mode 100644
index 0000000..16c41fb
--- /dev/null
+++ b/date-fns/src/monthsToYears/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { monthsToYears } from 'date-fns'
+export default monthsToYears
diff --git a/date-fns/src/monthsToYears/index.js.flow b/date-fns/src/monthsToYears/index.js.flow
new file mode 100644
index 0000000..de9ea9b
--- /dev/null
+++ b/date-fns/src/monthsToYears/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (months: number) => number
diff --git a/date-fns/src/monthsToYears/index.ts b/date-fns/src/monthsToYears/index.ts
new file mode 100644
index 0000000..f1615a7
--- /dev/null
+++ b/date-fns/src/monthsToYears/index.ts
@@ -0,0 +1,30 @@
+import requiredArgs from '../_lib/requiredArgs/index'
+import { monthsInYear } from '../constants/index'
+
+/**
+ * @name monthsToYears
+ * @category Conversion Helpers
+ * @summary Convert number of months to years.
+ *
+ * @description
+ * Convert a number of months to a full number of years.
+ *
+ * @param {number} months - number of months to be converted
+ *
+ * @returns {number} the number of months converted in years
+ * @throws {TypeError} 1 argument required
+ *
+ * @example
+ * // Convert 36 months to years:
+ * const result = monthsToYears(36)
+ * //=> 3
+ *
+ * // It uses floor rounding:
+ * const result = monthsToYears(40)
+ * //=> 3
+ */
+export default function monthsToYears(months: number): number {
+ requiredArgs(1, arguments)
+ const years = months / monthsInYear
+ return Math.floor(years)
+}
diff --git a/date-fns/src/monthsToYears/test.ts b/date-fns/src/monthsToYears/test.ts
new file mode 100644
index 0000000..5aa86c9
--- /dev/null
+++ b/date-fns/src/monthsToYears/test.ts
@@ -0,0 +1,21 @@
+/* eslint-env mocha */
+
+import assert from 'assert'
+import monthsToYears from '.'
+
+describe('monthsToYears', function () {
+ it('converts months to years', function () {
+ assert(monthsToYears(12) === 1)
+ assert(monthsToYears(24) === 2)
+ })
+
+ it('uses floor rounding', () => {
+ assert(monthsToYears(13) === 1)
+ assert(monthsToYears(11) === 0)
+ })
+
+ it('handles border values', () => {
+ assert(monthsToYears(12.5) === 1)
+ assert(monthsToYears(0) === 0)
+ })
+})
diff --git a/date-fns/src/nextDay/index.d.ts b/date-fns/src/nextDay/index.d.ts
new file mode 100644
index 0000000..ed09673
--- /dev/null
+++ b/date-fns/src/nextDay/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { nextDay } from 'date-fns'
+export default nextDay
diff --git a/date-fns/src/nextDay/index.js.flow b/date-fns/src/nextDay/index.js.flow
new file mode 100644
index 0000000..4b45d7f
--- /dev/null
+++ b/date-fns/src/nextDay/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (date: Date | number, day: Day) => Date
diff --git a/date-fns/src/nextDay/index.ts b/date-fns/src/nextDay/index.ts
new file mode 100644
index 0000000..25c879a
--- /dev/null
+++ b/date-fns/src/nextDay/index.ts
@@ -0,0 +1,46 @@
+import requiredArgs from '../_lib/requiredArgs/index'
+import getDay from '../getDay'
+import addDays from '../addDays'
+import toDate from '../toDate'
+import { Day } from '../types'
+
+const baseMap = [7, 6, 5, 4, 3, 2, 1]
+
+/**
+ * @name nextDay
+ * @category Weekday Helpers
+ * @summary When is the next day of the week?
+ *
+ * @description
+ * When is the next day of the week? 0-6 the day of the week, 0 represents Sunday.
+ *
+ * @param {Date | number} date - the date to check
+ * @param {Day} day - day of the week
+ * @returns {Date} - the date is the next day of week
+ * @throws {TypeError} - 2 arguments required
+ *
+ * @example
+ * // When is the next Monday after Mar, 20, 2020?
+ * const result = nextDay(new Date(2020, 2, 20), 1)
+ * //=> Mon Mar 23 2020 00:00:00
+ *
+ * @example
+ * // When is the next Tuesday after Mar, 21, 2020?
+ * const result = nextDay(new Date(2020, 2, 21), 2)
+ * //=> Tue Mar 24 2020 00:00:00
+ */
+export default function nextDay(date: Date | number, day: Day): Date {
+ requiredArgs(2, arguments)
+ const map = genMap(day)
+ return addDays(toDate(date), map[getDay(toDate(date))])
+}
+
+function genMap(daysToMove: number): number[] {
+ if (daysToMove === 0) {
+ return baseMap
+ } else {
+ const mapStart = baseMap.slice(-daysToMove)
+ const mapEnd = baseMap.slice(0, baseMap.length - daysToMove)
+ return mapStart.concat(mapEnd)
+ }
+}
diff --git a/date-fns/src/nextDay/test.ts b/date-fns/src/nextDay/test.ts
new file mode 100644
index 0000000..495bd2e
--- /dev/null
+++ b/date-fns/src/nextDay/test.ts
@@ -0,0 +1,86 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import nextDay from '.'
+
+describe('nextDay', function () {
+ it('returns the following Monday given various dates before the same', function () {
+ assert.deepStrictEqual(
+ nextDay(new Date(2020, 2 /* Mar */, 20), 1),
+ new Date(2020, 2 /* Mar */, 23)
+ )
+
+ assert.deepStrictEqual(
+ nextDay(new Date(2020, 2 /* Mar */, 19), 1),
+ new Date(2020, 2 /* Mar */, 23)
+ )
+
+ assert.deepStrictEqual(
+ nextDay(new Date(2020, 2 /* Mar */, 18), 1),
+ new Date(2020, 2 /* Mar */, 23)
+ )
+
+ assert.deepStrictEqual(
+ nextDay(new Date(2020, 2 /* Mar */, 17), 1),
+ new Date(2020, 2 /* Mar */, 23)
+ )
+
+ assert.deepStrictEqual(
+ nextDay(new Date(2020, 2 /* Mar */, 16), 1),
+ new Date(2020, 2 /* Mar */, 23)
+ )
+
+ assert.deepStrictEqual(
+ nextDay(new Date(2020, 2 /* Mar */, 22), 1),
+ new Date(2020, 2 /* Mar */, 23)
+ )
+
+ assert.deepStrictEqual(
+ nextDay(new Date(2020, 4 /* May */, 2), 1),
+ new Date(2020, 4 /* May */, 4)
+ )
+ })
+
+ it('returns the following Tuesday given the Saturday before it', function () {
+ assert.deepStrictEqual(
+ nextDay(new Date(2020, 4 /* May */, 2), 2),
+ new Date(2020, 4 /* May */, 5)
+ )
+ })
+
+ it('returns the following Wednesday given the Saturday before it', function () {
+ assert.deepStrictEqual(
+ nextDay(new Date(2020, 4 /* May */, 2), 3),
+ new Date(2020, 4 /* May */, 6)
+ )
+ })
+
+ it('returns the following Thursday given the Saturday before it', function () {
+ assert.deepStrictEqual(
+ nextDay(new Date(2020, 4 /* May */, 2), 4),
+ new Date(2020, 4 /* May */, 7)
+ )
+ })
+
+ it('returns the following Friday given the Saturday before it', function () {
+ assert.deepStrictEqual(
+ nextDay(new Date(2020, 4 /* May */, 2), 5),
+ new Date(2020, 4 /* May */, 8)
+ )
+ })
+
+ it('returns the following Saturday given the Saturday before it', function () {
+ assert.deepStrictEqual(
+ nextDay(new Date(2020, 4 /* May */, 2), 6),
+ new Date(2020, 4 /* May */, 9)
+ )
+ })
+
+ it('returns next Sunday given the day is Sunday', function () {
+ assert.deepStrictEqual(
+ nextDay(new Date(2020, 2 /* Mar */, 22), 0),
+ new Date(2020, 2 /* Mar */, 29)
+ )
+ })
+})
diff --git a/date-fns/src/nextFriday/index.d.ts b/date-fns/src/nextFriday/index.d.ts
new file mode 100644
index 0000000..1ea773c
--- /dev/null
+++ b/date-fns/src/nextFriday/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { nextFriday } from 'date-fns'
+export default nextFriday
diff --git a/date-fns/src/nextFriday/index.js.flow b/date-fns/src/nextFriday/index.js.flow
new file mode 100644
index 0000000..4b7c616
--- /dev/null
+++ b/date-fns/src/nextFriday/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (date: Date | number) => Date
diff --git a/date-fns/src/nextFriday/index.ts b/date-fns/src/nextFriday/index.ts
new file mode 100644
index 0000000..28d02bc
--- /dev/null
+++ b/date-fns/src/nextFriday/index.ts
@@ -0,0 +1,25 @@
+import requiredArgs from '../_lib/requiredArgs/index'
+import nextDay from '../nextDay/index'
+import toDate from '../toDate/index'
+
+/**
+ * @name nextFriday
+ * @category Weekday Helpers
+ * @summary When is the next Friday?
+ *
+ * @description
+ * When is the next Friday?
+ *
+ * @param {Date | number} date - the date to start counting from
+ * @returns {Date} the next Friday
+ * @throws {TypeError} 1 argument required
+ *
+ * @example
+ * // When is the next Friday after Mar, 22, 2020?
+ * const result = nextFriday(new Date(2020, 2, 22))
+ * //=> Fri Mar 27 2020 00:00:00
+ */
+export default function nextFriday(date: Date | number): Date {
+ requiredArgs(1, arguments)
+ return nextDay(toDate(date), 5)
+}
diff --git a/date-fns/src/nextFriday/test.ts b/date-fns/src/nextFriday/test.ts
new file mode 100644
index 0000000..ee9ece0
--- /dev/null
+++ b/date-fns/src/nextFriday/test.ts
@@ -0,0 +1,48 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import nextFriday from '.'
+
+describe('nextFriday', () => {
+ it('returns the following Friday given various dates before the same', () => {
+ assert.deepStrictEqual(
+ nextFriday(new Date(2020, 2 /* Mar */, 23)),
+ new Date(2020, 2 /* Mar */, 27)
+ )
+
+ assert.deepStrictEqual(
+ nextFriday(new Date(2020, 2 /* Mar */, 22)),
+ new Date(2020, 2 /* Mar */, 27)
+ )
+
+ assert.deepStrictEqual(
+ nextFriday(new Date(2020, 2 /* Mar */, 21)),
+ new Date(2020, 2 /* Mar */, 27)
+ )
+
+ assert.deepStrictEqual(
+ nextFriday(new Date(2020, 2 /* Mar */, 20)),
+ new Date(2020, 2 /* Mar */, 27)
+ )
+
+ assert.deepStrictEqual(
+ nextFriday(new Date(2020, 2 /* Mar */, 19)),
+ new Date(2020, 2 /* Mar */, 20)
+ )
+
+ assert.deepStrictEqual(
+ nextFriday(new Date(2020, 2 /* Mar */, 18)),
+ new Date(2020, 2 /* Mar */, 20)
+ )
+
+ assert.deepStrictEqual(
+ nextFriday(new Date(2020, 2 /* Mar */, 17)),
+ new Date(2020, 2 /* Mar */, 20)
+ )
+ })
+
+ it('returns `Invalid Date` if the given date is invalid', () => {
+ assert(nextFriday(new Date(NaN)) instanceof Date)
+ })
+})
diff --git a/date-fns/src/nextMonday/index.d.ts b/date-fns/src/nextMonday/index.d.ts
new file mode 100644
index 0000000..d266886
--- /dev/null
+++ b/date-fns/src/nextMonday/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { nextMonday } from 'date-fns'
+export default nextMonday
diff --git a/date-fns/src/nextMonday/index.js.flow b/date-fns/src/nextMonday/index.js.flow
new file mode 100644
index 0000000..4b7c616
--- /dev/null
+++ b/date-fns/src/nextMonday/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (date: Date | number) => Date
diff --git a/date-fns/src/nextMonday/index.ts b/date-fns/src/nextMonday/index.ts
new file mode 100644
index 0000000..201b8c6
--- /dev/null
+++ b/date-fns/src/nextMonday/index.ts
@@ -0,0 +1,25 @@
+import requiredArgs from '../_lib/requiredArgs/index'
+import nextDay from '../nextDay/index'
+import toDate from '../toDate/index'
+
+/**
+ * @name nextMonday
+ * @category Weekday Helpers
+ * @summary When is the next Monday?
+ *
+ * @description
+ * When is the next Monday?
+ *
+ * @param {Date | number} date - the date to start counting from
+ * @returns {Date} the next Monday
+ * @throws {TypeError} 1 argument required
+ *
+ * @example
+ * // When is the next Monday after Mar, 22, 2020?
+ * const result = nextMonday(new Date(2020, 2, 22))
+ * //=> Mon Mar 23 2020 00:00:00
+ */
+export default function nextMonday(date: Date | number): Date {
+ requiredArgs(1, arguments)
+ return nextDay(toDate(date), 1)
+}
diff --git a/date-fns/src/nextMonday/test.ts b/date-fns/src/nextMonday/test.ts
new file mode 100644
index 0000000..281a31c
--- /dev/null
+++ b/date-fns/src/nextMonday/test.ts
@@ -0,0 +1,48 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import nextMonday from '.'
+
+describe('nextMonday', function () {
+ it('returns the following Monday given various dates before the same', function () {
+ assert.deepStrictEqual(
+ nextMonday(new Date(2020, 2 /* Mar */, 23)),
+ new Date(2020, 2 /* Mar */, 30)
+ )
+
+ assert.deepStrictEqual(
+ nextMonday(new Date(2020, 2 /* Mar */, 22)),
+ new Date(2020, 2 /* Mar */, 23)
+ )
+
+ assert.deepStrictEqual(
+ nextMonday(new Date(2020, 3 /* Apr */, 11)),
+ new Date(2020, 3 /* Apr */, 13)
+ )
+
+ assert.deepStrictEqual(
+ nextMonday(new Date(2020, 2 /* Mar */, 20)),
+ new Date(2020, 2 /* Mar */, 23)
+ )
+
+ assert.deepStrictEqual(
+ nextMonday(new Date(2020, 2 /* Mar */, 19)),
+ new Date(2020, 2 /* Mar */, 23)
+ )
+
+ assert.deepStrictEqual(
+ nextMonday(new Date(2020, 2 /* Mar */, 18)),
+ new Date(2020, 2 /* Mar */, 23)
+ )
+
+ assert.deepStrictEqual(
+ nextMonday(new Date(2020, 2 /* Mar */, 17)),
+ new Date(2020, 2 /* Mar */, 23)
+ )
+ })
+
+ it('returns `Invalid Date` if the given date is invalid', function () {
+ assert(nextMonday(new Date(NaN)) instanceof Date)
+ })
+})
diff --git a/date-fns/src/nextSaturday/index.d.ts b/date-fns/src/nextSaturday/index.d.ts
new file mode 100644
index 0000000..20532f7
--- /dev/null
+++ b/date-fns/src/nextSaturday/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { nextSaturday } from 'date-fns'
+export default nextSaturday
diff --git a/date-fns/src/nextSaturday/index.js.flow b/date-fns/src/nextSaturday/index.js.flow
new file mode 100644
index 0000000..4b7c616
--- /dev/null
+++ b/date-fns/src/nextSaturday/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (date: Date | number) => Date
diff --git a/date-fns/src/nextSaturday/index.ts b/date-fns/src/nextSaturday/index.ts
new file mode 100644
index 0000000..ac3d5a6
--- /dev/null
+++ b/date-fns/src/nextSaturday/index.ts
@@ -0,0 +1,25 @@
+import requiredArgs from '../_lib/requiredArgs/index'
+import nextDay from '../nextDay/index'
+import toDate from '../toDate/index'
+
+/**
+ * @name nextSaturday
+ * @category Weekday Helpers
+ * @summary When is the next Saturday?
+ *
+ * @description
+ * When is the next Saturday?
+ *
+ * @param {Date | number} date - the date to start counting from
+ * @returns {Date} the next Saturday
+ * @throws {TypeError} 1 argument required
+ *
+ * @example
+ * // When is the next Saturday after Mar, 22, 2020?
+ * const result = nextSaturday(new Date(2020, 2, 22))
+ * //=> Sat Mar 28 2020 00:00:00
+ */
+export default function nextSaturday(date: Date | number): Date {
+ requiredArgs(1, arguments)
+ return nextDay(toDate(date), 6)
+}
diff --git a/date-fns/src/nextSaturday/test.ts b/date-fns/src/nextSaturday/test.ts
new file mode 100644
index 0000000..6799b46
--- /dev/null
+++ b/date-fns/src/nextSaturday/test.ts
@@ -0,0 +1,48 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import nextSaturday from '.'
+
+describe('nextSaturday', () => {
+ it('returns the following Saturday given various dates before the same', () => {
+ assert.deepStrictEqual(
+ nextSaturday(new Date(2020, 2 /* Mar */, 23)),
+ new Date(2020, 2 /* Mar */, 28)
+ )
+
+ assert.deepStrictEqual(
+ nextSaturday(new Date(2020, 2 /* Mar */, 22)),
+ new Date(2020, 2 /* Mar */, 28)
+ )
+
+ assert.deepStrictEqual(
+ nextSaturday(new Date(2020, 2 /* Mar */, 21)),
+ new Date(2020, 2 /* Mar */, 28)
+ )
+
+ assert.deepStrictEqual(
+ nextSaturday(new Date(2020, 2 /* Mar */, 20)),
+ new Date(2020, 2 /* Mar */, 21)
+ )
+
+ assert.deepStrictEqual(
+ nextSaturday(new Date(2020, 2 /* Mar */, 19)),
+ new Date(2020, 2 /* Mar */, 21)
+ )
+
+ assert.deepStrictEqual(
+ nextSaturday(new Date(2020, 2 /* Mar */, 18)),
+ new Date(2020, 2 /* Mar */, 21)
+ )
+
+ assert.deepStrictEqual(
+ nextSaturday(new Date(2020, 2 /* Mar */, 17)),
+ new Date(2020, 2 /* Mar */, 21)
+ )
+ })
+
+ it('returns `Invalid Date` if the given date is invalid', () => {
+ assert(nextSaturday(new Date(NaN)) instanceof Date)
+ })
+})
diff --git a/date-fns/src/nextSunday/index.d.ts b/date-fns/src/nextSunday/index.d.ts
new file mode 100644
index 0000000..e0a7965
--- /dev/null
+++ b/date-fns/src/nextSunday/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { nextSunday } from 'date-fns'
+export default nextSunday
diff --git a/date-fns/src/nextSunday/index.js.flow b/date-fns/src/nextSunday/index.js.flow
new file mode 100644
index 0000000..4b7c616
--- /dev/null
+++ b/date-fns/src/nextSunday/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (date: Date | number) => Date
diff --git a/date-fns/src/nextSunday/index.ts b/date-fns/src/nextSunday/index.ts
new file mode 100644
index 0000000..5320ac3
--- /dev/null
+++ b/date-fns/src/nextSunday/index.ts
@@ -0,0 +1,25 @@
+import requiredArgs from '../_lib/requiredArgs/index'
+import nextDay from '../nextDay/index'
+import toDate from '../toDate/index'
+
+/**
+ * @name nextSunday
+ * @category Weekday Helpers
+ * @summary When is the next Sunday?
+ *
+ * @description
+ * When is the next Sunday?
+ *
+ * @param {Date | number} date - the date to start counting from
+ * @returns {Date} the next Sunday
+ * @throws {TypeError} 1 argument required
+ *
+ * @example
+ * // When is the next Sunday after Mar, 22, 2020?
+ * const result = nextSunday(new Date(2020, 2, 22))
+ * //=> Sun Mar 29 2020 00:00:00
+ */
+export default function nextSunday(date: Date | number): Date {
+ requiredArgs(1, arguments)
+ return nextDay(toDate(date), 0)
+}
diff --git a/date-fns/src/nextSunday/test.ts b/date-fns/src/nextSunday/test.ts
new file mode 100644
index 0000000..468c53b
--- /dev/null
+++ b/date-fns/src/nextSunday/test.ts
@@ -0,0 +1,48 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import nextSunday from '.'
+
+describe('nextSunday', () => {
+ it('returns the following Sunday given various dates before the same', () => {
+ assert.deepStrictEqual(
+ nextSunday(new Date(2020, 2 /* Mar */, 23)),
+ new Date(2020, 2 /* Mar */, 29)
+ )
+
+ assert.deepStrictEqual(
+ nextSunday(new Date(2020, 2 /* Mar */, 22)),
+ new Date(2020, 2 /* Mar */, 29)
+ )
+
+ assert.deepStrictEqual(
+ nextSunday(new Date(2020, 2 /* Mar */, 21)),
+ new Date(2020, 2 /* Mar */, 22)
+ )
+
+ assert.deepStrictEqual(
+ nextSunday(new Date(2020, 2 /* Mar */, 20)),
+ new Date(2020, 2 /* Mar */, 22)
+ )
+
+ assert.deepStrictEqual(
+ nextSunday(new Date(2020, 2 /* Mar */, 19)),
+ new Date(2020, 2 /* Mar */, 22)
+ )
+
+ assert.deepStrictEqual(
+ nextSunday(new Date(2020, 2 /* Mar */, 18)),
+ new Date(2020, 2 /* Mar */, 22)
+ )
+
+ assert.deepStrictEqual(
+ nextSunday(new Date(2020, 2 /* Mar */, 17)),
+ new Date(2020, 2 /* Mar */, 22)
+ )
+ })
+
+ it('returns `Invalid Date` if the given date is invalid', () => {
+ assert(nextSunday(new Date(NaN)) instanceof Date)
+ })
+})
diff --git a/date-fns/src/nextThursday/index.d.ts b/date-fns/src/nextThursday/index.d.ts
new file mode 100644
index 0000000..092c3ba
--- /dev/null
+++ b/date-fns/src/nextThursday/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { nextThursday } from 'date-fns'
+export default nextThursday
diff --git a/date-fns/src/nextThursday/index.js.flow b/date-fns/src/nextThursday/index.js.flow
new file mode 100644
index 0000000..4b7c616
--- /dev/null
+++ b/date-fns/src/nextThursday/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (date: Date | number) => Date
diff --git a/date-fns/src/nextThursday/index.ts b/date-fns/src/nextThursday/index.ts
new file mode 100644
index 0000000..8b096ef
--- /dev/null
+++ b/date-fns/src/nextThursday/index.ts
@@ -0,0 +1,25 @@
+import requiredArgs from '../_lib/requiredArgs/index'
+import nextDay from '../nextDay/index'
+import toDate from '../toDate/index'
+
+/**
+ * @name nextThursday
+ * @category Weekday Helpers
+ * @summary When is the next Thursday?
+ *
+ * @description
+ * When is the next Thursday?
+ *
+ * @param {Date | number} date - the date to start counting from
+ * @returns {Date} the next Thursday
+ * @throws {TypeError} 1 argument required
+ *
+ * @example
+ * // When is the next Thursday after Mar, 22, 2020?
+ * const result = nextThursday(new Date(2020, 2, 22))
+ * //=> Thur Mar 26 2020 00:00:00
+ */
+export default function nextThursday(date: Date | number): Date {
+ requiredArgs(1, arguments)
+ return nextDay(toDate(date), 4)
+}
diff --git a/date-fns/src/nextThursday/test.ts b/date-fns/src/nextThursday/test.ts
new file mode 100644
index 0000000..a0ab2d0
--- /dev/null
+++ b/date-fns/src/nextThursday/test.ts
@@ -0,0 +1,48 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import nextThursday from '.'
+
+describe('nextThursday', () => {
+ it('returns the following Thursday given various dates before the same', () => {
+ assert.deepStrictEqual(
+ nextThursday(new Date(2020, 2 /* Mar */, 23)),
+ new Date(2020, 2 /* Mar */, 26)
+ )
+
+ assert.deepStrictEqual(
+ nextThursday(new Date(2020, 2 /* Mar */, 22)),
+ new Date(2020, 2 /* Mar */, 26)
+ )
+
+ assert.deepStrictEqual(
+ nextThursday(new Date(2020, 2 /* Mar */, 21)),
+ new Date(2020, 2 /* Mar */, 26)
+ )
+
+ assert.deepStrictEqual(
+ nextThursday(new Date(2020, 2 /* Mar */, 20)),
+ new Date(2020, 2 /* Mar */, 26)
+ )
+
+ assert.deepStrictEqual(
+ nextThursday(new Date(2020, 2 /* Mar */, 19)),
+ new Date(2020, 2 /* Mar */, 26)
+ )
+
+ assert.deepStrictEqual(
+ nextThursday(new Date(2020, 2 /* Mar */, 18)),
+ new Date(2020, 2 /* Mar */, 19)
+ )
+
+ assert.deepStrictEqual(
+ nextThursday(new Date(2020, 2 /* Mar */, 17)),
+ new Date(2020, 2 /* Mar */, 19)
+ )
+ })
+
+ it('returns `Invalid Date` if the given date is invalid', () => {
+ assert(nextThursday(new Date(NaN)) instanceof Date)
+ })
+})
diff --git a/date-fns/src/nextTuesday/index.d.ts b/date-fns/src/nextTuesday/index.d.ts
new file mode 100644
index 0000000..0e332ac
--- /dev/null
+++ b/date-fns/src/nextTuesday/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { nextTuesday } from 'date-fns'
+export default nextTuesday
diff --git a/date-fns/src/nextTuesday/index.js.flow b/date-fns/src/nextTuesday/index.js.flow
new file mode 100644
index 0000000..4b7c616
--- /dev/null
+++ b/date-fns/src/nextTuesday/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (date: Date | number) => Date
diff --git a/date-fns/src/nextTuesday/index.ts b/date-fns/src/nextTuesday/index.ts
new file mode 100644
index 0000000..eb1304d
--- /dev/null
+++ b/date-fns/src/nextTuesday/index.ts
@@ -0,0 +1,25 @@
+import requiredArgs from '../_lib/requiredArgs/index'
+import nextDay from '../nextDay/index'
+import toDate from '../toDate/index'
+
+/**
+ * @name nextTuesday
+ * @category Weekday Helpers
+ * @summary When is the next Tuesday?
+ *
+ * @description
+ * When is the next Tuesday?
+ *
+ * @param {Date | number} date - the date to start counting from
+ * @returns {Date} the next Tuesday
+ * @throws {TypeError} 1 argument required
+ *
+ * @example
+ * // When is the next Tuesday after Mar, 22, 2020?
+ * const result = nextTuesday(new Date(2020, 2, 22))
+ * //=> Tue Mar 24 2020 00:00:00
+ */
+export default function nextTuesday(date: Date | number): Date {
+ requiredArgs(1, arguments)
+ return nextDay(toDate(date), 2)
+}
diff --git a/date-fns/src/nextTuesday/test.ts b/date-fns/src/nextTuesday/test.ts
new file mode 100644
index 0000000..ddc9c9c
--- /dev/null
+++ b/date-fns/src/nextTuesday/test.ts
@@ -0,0 +1,47 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import nextTuesday from '.'
+
+describe('nextTuesday', function () {
+ it('returns the following Tuesday given various dates before the same', function () {
+ assert.deepStrictEqual(
+ nextTuesday(new Date(2020, 2 /* Mar */, 23)),
+ new Date(2020, 2 /* Mar */, 24)
+ )
+
+ assert.deepStrictEqual(
+ nextTuesday(new Date(2020, 2 /* Mar */, 22)),
+ new Date(2020, 2 /* Mar */, 24)
+ )
+
+ assert.deepStrictEqual(
+ nextTuesday(new Date(2020, 3 /* Apr */, 11)),
+ new Date(2020, 3 /* Apr */, 14)
+ )
+
+ assert.deepStrictEqual(
+ nextTuesday(new Date(2020, 2 /* Mar */, 20)),
+ new Date(2020, 2 /* Mar */, 24)
+ )
+
+ assert.deepStrictEqual(
+ nextTuesday(new Date(2020, 2 /* Mar */, 19)),
+ new Date(2020, 2 /* Mar */, 24)
+ )
+
+ assert.deepStrictEqual(
+ nextTuesday(new Date(2020, 2 /* Mar */, 18)),
+ new Date(2020, 2 /* Mar */, 24)
+ )
+
+ assert.deepStrictEqual(
+ nextTuesday(new Date(2020, 2 /* Mar */, 17)),
+ new Date(2020, 2 /* Mar */, 24)
+ )
+ })
+ it('returns `Invalid Date` if the given date is invalid', function () {
+ assert(nextTuesday(new Date(NaN)) instanceof Date)
+ })
+})
diff --git a/date-fns/src/nextWednesday/index.d.ts b/date-fns/src/nextWednesday/index.d.ts
new file mode 100644
index 0000000..42f7eb3
--- /dev/null
+++ b/date-fns/src/nextWednesday/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { nextWednesday } from 'date-fns'
+export default nextWednesday
diff --git a/date-fns/src/nextWednesday/index.js.flow b/date-fns/src/nextWednesday/index.js.flow
new file mode 100644
index 0000000..4b7c616
--- /dev/null
+++ b/date-fns/src/nextWednesday/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (date: Date | number) => Date
diff --git a/date-fns/src/nextWednesday/index.ts b/date-fns/src/nextWednesday/index.ts
new file mode 100644
index 0000000..e652c3c
--- /dev/null
+++ b/date-fns/src/nextWednesday/index.ts
@@ -0,0 +1,25 @@
+import requiredArgs from '../_lib/requiredArgs/index'
+import nextDay from '../nextDay/index'
+import toDate from '../toDate/index'
+
+/**
+ * @name nextWednesday
+ * @category Weekday Helpers
+ * @summary When is the next Wednesday?
+ *
+ * @description
+ * When is the next Wednesday?
+ *
+ * @param {Date | number} date - the date to start counting from
+ * @returns {Date} the next Wednesday
+ * @throws {TypeError} 1 argument required
+ *
+ * @example
+ * // When is the next Wednesday after Mar, 22, 2020?
+ * const result = nextWednesday(new Date(2020, 2, 22))
+ * //=> Wed Mar 25 2020 00:00:00
+ */
+export default function nextWednesday(date: Date | number): Date {
+ requiredArgs(1, arguments)
+ return nextDay(toDate(date), 3)
+}
diff --git a/date-fns/src/nextWednesday/test.ts b/date-fns/src/nextWednesday/test.ts
new file mode 100644
index 0000000..68a8fc2
--- /dev/null
+++ b/date-fns/src/nextWednesday/test.ts
@@ -0,0 +1,48 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import nextWednesday from '.'
+
+describe('nextWednesday', () => {
+ it('returns the following Wednesday given various dates before the same', () => {
+ assert.deepStrictEqual(
+ nextWednesday(new Date(2020, 2 /* Mar */, 23)),
+ new Date(2020, 2 /* Mar */, 25)
+ )
+
+ assert.deepStrictEqual(
+ nextWednesday(new Date(2020, 2 /* Mar */, 22)),
+ new Date(2020, 2 /* Mar */, 25)
+ )
+
+ assert.deepStrictEqual(
+ nextWednesday(new Date(2020, 2 /* Mar */, 21)),
+ new Date(2020, 2 /* Mar */, 25)
+ )
+
+ assert.deepStrictEqual(
+ nextWednesday(new Date(2020, 2 /* Mar */, 20)),
+ new Date(2020, 2 /* Mar */, 25)
+ )
+
+ assert.deepStrictEqual(
+ nextWednesday(new Date(2020, 2 /* Mar */, 19)),
+ new Date(2020, 2 /* Mar */, 25)
+ )
+
+ assert.deepStrictEqual(
+ nextWednesday(new Date(2020, 2 /* Mar */, 18)),
+ new Date(2020, 2 /* Mar */, 25)
+ )
+
+ assert.deepStrictEqual(
+ nextWednesday(new Date(2020, 2 /* Mar */, 17)),
+ new Date(2020, 2 /* Mar */, 18)
+ )
+ })
+
+ it('returns `Invalid Date` if the given date is invalid', () => {
+ assert(nextWednesday(new Date(NaN)) instanceof Date)
+ })
+})
diff --git a/date-fns/src/parse/_lib/parsers/index.js b/date-fns/src/parse/_lib/parsers/index.js
new file mode 100644
index 0000000..3a37108
--- /dev/null
+++ b/date-fns/src/parse/_lib/parsers/index.js
@@ -0,0 +1,1735 @@
+import getUTCWeekYear from '../../../_lib/getUTCWeekYear/index'
+import setUTCDay from '../../../_lib/setUTCDay/index'
+import setUTCISODay from '../../../_lib/setUTCISODay/index'
+import setUTCISOWeek from '../../../_lib/setUTCISOWeek/index'
+import setUTCWeek from '../../../_lib/setUTCWeek/index'
+import startOfUTCISOWeek from '../../../_lib/startOfUTCISOWeek/index'
+import startOfUTCWeek from '../../../_lib/startOfUTCWeek/index'
+
+var MILLISECONDS_IN_HOUR = 3600000
+var MILLISECONDS_IN_MINUTE = 60000
+var MILLISECONDS_IN_SECOND = 1000
+
+var numericPatterns = {
+ month: /^(1[0-2]|0?\d)/, // 0 to 12
+ date: /^(3[0-1]|[0-2]?\d)/, // 0 to 31
+ dayOfYear: /^(36[0-6]|3[0-5]\d|[0-2]?\d?\d)/, // 0 to 366
+ week: /^(5[0-3]|[0-4]?\d)/, // 0 to 53
+ hour23h: /^(2[0-3]|[0-1]?\d)/, // 0 to 23
+ hour24h: /^(2[0-4]|[0-1]?\d)/, // 0 to 24
+ hour11h: /^(1[0-1]|0?\d)/, // 0 to 11
+ hour12h: /^(1[0-2]|0?\d)/, // 0 to 12
+ minute: /^[0-5]?\d/, // 0 to 59
+ second: /^[0-5]?\d/, // 0 to 59
+
+ singleDigit: /^\d/, // 0 to 9
+ twoDigits: /^\d{1,2}/, // 0 to 99
+ threeDigits: /^\d{1,3}/, // 0 to 999
+ fourDigits: /^\d{1,4}/, // 0 to 9999
+
+ anyDigitsSigned: /^-?\d+/,
+ singleDigitSigned: /^-?\d/, // 0 to 9, -0 to -9
+ twoDigitsSigned: /^-?\d{1,2}/, // 0 to 99, -0 to -99
+ threeDigitsSigned: /^-?\d{1,3}/, // 0 to 999, -0 to -999
+ fourDigitsSigned: /^-?\d{1,4}/ // 0 to 9999, -0 to -9999
+}
+
+var timezonePatterns = {
+ basicOptionalMinutes: /^([+-])(\d{2})(\d{2})?|Z/,
+ basic: /^([+-])(\d{2})(\d{2})|Z/,
+ basicOptionalSeconds: /^([+-])(\d{2})(\d{2})((\d{2}))?|Z/,
+ extended: /^([+-])(\d{2}):(\d{2})|Z/,
+ extendedOptionalSeconds: /^([+-])(\d{2}):(\d{2})(:(\d{2}))?|Z/
+}
+
+function parseNumericPattern(pattern, string, valueCallback) {
+ var matchResult = string.match(pattern)
+
+ if (!matchResult) {
+ return null
+ }
+
+ var value = parseInt(matchResult[0], 10)
+
+ return {
+ value: valueCallback ? valueCallback(value) : value,
+ rest: string.slice(matchResult[0].length)
+ }
+}
+
+function parseTimezonePattern(pattern, string) {
+ var matchResult = string.match(pattern)
+
+ if (!matchResult) {
+ return null
+ }
+
+ // Input is 'Z'
+ if (matchResult[0] === 'Z') {
+ return {
+ value: 0,
+ rest: string.slice(1)
+ }
+ }
+
+ var sign = matchResult[1] === '+' ? 1 : -1
+ var hours = matchResult[2] ? parseInt(matchResult[2], 10) : 0
+ var minutes = matchResult[3] ? parseInt(matchResult[3], 10) : 0
+ var seconds = matchResult[5] ? parseInt(matchResult[5], 10) : 0
+
+ return {
+ value:
+ sign *
+ (hours * MILLISECONDS_IN_HOUR +
+ minutes * MILLISECONDS_IN_MINUTE +
+ seconds * MILLISECONDS_IN_SECOND),
+ rest: string.slice(matchResult[0].length)
+ }
+}
+
+function parseAnyDigitsSigned(string, valueCallback) {
+ return parseNumericPattern(
+ numericPatterns.anyDigitsSigned,
+ string,
+ valueCallback
+ )
+}
+
+function parseNDigits(n, string, valueCallback) {
+ switch (n) {
+ case 1:
+ return parseNumericPattern(
+ numericPatterns.singleDigit,
+ string,
+ valueCallback
+ )
+ case 2:
+ return parseNumericPattern(
+ numericPatterns.twoDigits,
+ string,
+ valueCallback
+ )
+ case 3:
+ return parseNumericPattern(
+ numericPatterns.threeDigits,
+ string,
+ valueCallback
+ )
+ case 4:
+ return parseNumericPattern(
+ numericPatterns.fourDigits,
+ string,
+ valueCallback
+ )
+ default:
+ return parseNumericPattern(
+ new RegExp('^\\d{1,' + n + '}'),
+ string,
+ valueCallback
+ )
+ }
+}
+
+function parseNDigitsSigned(n, string, valueCallback) {
+ switch (n) {
+ case 1:
+ return parseNumericPattern(
+ numericPatterns.singleDigitSigned,
+ string,
+ valueCallback
+ )
+ case 2:
+ return parseNumericPattern(
+ numericPatterns.twoDigitsSigned,
+ string,
+ valueCallback
+ )
+ case 3:
+ return parseNumericPattern(
+ numericPatterns.threeDigitsSigned,
+ string,
+ valueCallback
+ )
+ case 4:
+ return parseNumericPattern(
+ numericPatterns.fourDigitsSigned,
+ string,
+ valueCallback
+ )
+ default:
+ return parseNumericPattern(
+ new RegExp('^-?\\d{1,' + n + '}'),
+ string,
+ valueCallback
+ )
+ }
+}
+
+function dayPeriodEnumToHours(enumValue) {
+ switch (enumValue) {
+ case 'morning':
+ return 4
+ case 'evening':
+ return 17
+ case 'pm':
+ case 'noon':
+ case 'afternoon':
+ return 12
+ case 'am':
+ case 'midnight':
+ case 'night':
+ default:
+ return 0
+ }
+}
+
+function normalizeTwoDigitYear(twoDigitYear, currentYear) {
+ var isCommonEra = currentYear > 0
+ // Absolute number of the current year:
+ // 1 -> 1 AC
+ // 0 -> 1 BC
+ // -1 -> 2 BC
+ var absCurrentYear = isCommonEra ? currentYear : 1 - currentYear
+
+ var result
+ if (absCurrentYear <= 50) {
+ result = twoDigitYear || 100
+ } else {
+ var rangeEnd = absCurrentYear + 50
+ var rangeEndCentury = Math.floor(rangeEnd / 100) * 100
+ var isPreviousCentury = twoDigitYear >= rangeEnd % 100
+ result = twoDigitYear + rangeEndCentury - (isPreviousCentury ? 100 : 0)
+ }
+
+ return isCommonEra ? result : 1 - result
+}
+
+var DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
+var DAYS_IN_MONTH_LEAP_YEAR = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
+
+// User for validation
+function isLeapYearIndex(year) {
+ return year % 400 === 0 || (year % 4 === 0 && year % 100 !== 0)
+}
+
+/*
+ * | | Unit | | Unit |
+ * |-----|--------------------------------|-----|--------------------------------|
+ * | a | AM, PM | A* | Milliseconds in day |
+ * | b | AM, PM, noon, midnight | B | Flexible day period |
+ * | c | Stand-alone local day of week | C* | Localized hour w/ day period |
+ * | d | Day of month | D | Day of year |
+ * | e | Local day of week | E | Day of week |
+ * | f | | F* | Day of week in month |
+ * | g* | Modified Julian day | G | Era |
+ * | h | Hour [1-12] | H | Hour [0-23] |
+ * | i! | ISO day of week | I! | ISO week of year |
+ * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |
+ * | k | Hour [1-24] | K | Hour [0-11] |
+ * | l* | (deprecated) | L | Stand-alone month |
+ * | m | Minute | M | Month |
+ * | n | | N | |
+ * | o! | Ordinal number modifier | O* | Timezone (GMT) |
+ * | p | | P | |
+ * | q | Stand-alone quarter | Q | Quarter |
+ * | r* | Related Gregorian year | R! | ISO week-numbering year |
+ * | s | Second | S | Fraction of second |
+ * | t! | Seconds timestamp | T! | Milliseconds timestamp |
+ * | u | Extended year | U* | Cyclic year |
+ * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |
+ * | w | Local week of year | W* | Week of month |
+ * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |
+ * | y | Year (abs) | Y | Local week-numbering year |
+ * | z* | Timezone (specific non-locat.) | Z* | Timezone (aliases) |
+ *
+ * Letters marked by * are not implemented but reserved by Unicode standard.
+ *
+ * Letters marked by ! are non-standard, but implemented by date-fns:
+ * - `o` modifies the previous token to turn it into an ordinal (see `parse` docs)
+ * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,
+ * i.e. 7 for Sunday, 1 for Monday, etc.
+ * - `I` is ISO week of year, as opposed to `w` which is local week of year.
+ * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.
+ * `R` is supposed to be used in conjunction with `I` and `i`
+ * for universal ISO week-numbering date, whereas
+ * `Y` is supposed to be used in conjunction with `w` and `e`
+ * for week-numbering date specific to the locale.
+ */
+var parsers = {
+ // Era
+ G: {
+ priority: 140,
+
+ parse: function(string, token, match, _options) {
+ switch (token) {
+ // AD, BC
+ case 'G':
+ case 'GG':
+ case 'GGG':
+ return (
+ match.era(string, { width: 'abbreviated' }) ||
+ match.era(string, { width: 'narrow' })
+ )
+ // A, B
+ case 'GGGGG':
+ return match.era(string, { width: 'narrow' })
+ // Anno Domini, Before Christ
+ case 'GGGG':
+ default:
+ return (
+ match.era(string, { width: 'wide' }) ||
+ match.era(string, { width: 'abbreviated' }) ||
+ match.era(string, { width: 'narrow' })
+ )
+ }
+ },
+
+ set: function(date, flags, value, _options) {
+ flags.era = value
+ date.setUTCFullYear(value, 0, 1)
+ date.setUTCHours(0, 0, 0, 0)
+ return date
+ },
+
+ incompatibleTokens: ['R', 'u', 't', 'T']
+ },
+
+ // Year
+ y: {
+ // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_Patterns
+ // | Year | y | yy | yyy | yyyy | yyyyy |
+ // |----------|-------|----|-------|-------|-------|
+ // | AD 1 | 1 | 01 | 001 | 0001 | 00001 |
+ // | AD 12 | 12 | 12 | 012 | 0012 | 00012 |
+ // | AD 123 | 123 | 23 | 123 | 0123 | 00123 |
+ // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |
+ // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |
+
+ priority: 130,
+
+ parse: function(string, token, match, _options) {
+ var valueCallback = function(year) {
+ return {
+ year: year,
+ isTwoDigitYear: token === 'yy'
+ }
+ }
+
+ switch (token) {
+ case 'y':
+ return parseNDigits(4, string, valueCallback)
+ case 'yo':
+ return match.ordinalNumber(string, {
+ unit: 'year',
+ valueCallback: valueCallback
+ })
+ default:
+ return parseNDigits(token.length, string, valueCallback)
+ }
+ },
+
+ validate: function(_date, value, _options) {
+ return value.isTwoDigitYear || value.year > 0
+ },
+
+ set: function(date, flags, value, _options) {
+ var currentYear = date.getUTCFullYear()
+
+ if (value.isTwoDigitYear) {
+ var normalizedTwoDigitYear = normalizeTwoDigitYear(
+ value.year,
+ currentYear
+ )
+ date.setUTCFullYear(normalizedTwoDigitYear, 0, 1)
+ date.setUTCHours(0, 0, 0, 0)
+ return date
+ }
+
+ var year =
+ !('era' in flags) || flags.era === 1 ? value.year : 1 - value.year
+ date.setUTCFullYear(year, 0, 1)
+ date.setUTCHours(0, 0, 0, 0)
+ return date
+ },
+
+ incompatibleTokens: ['Y', 'R', 'u', 'w', 'I', 'i', 'e', 'c', 't', 'T']
+ },
+
+ // Local week-numbering year
+ Y: {
+ priority: 130,
+
+ parse: function(string, token, match, _options) {
+ var valueCallback = function(year) {
+ return {
+ year: year,
+ isTwoDigitYear: token === 'YY'
+ }
+ }
+
+ switch (token) {
+ case 'Y':
+ return parseNDigits(4, string, valueCallback)
+ case 'Yo':
+ return match.ordinalNumber(string, {
+ unit: 'year',
+ valueCallback: valueCallback
+ })
+ default:
+ return parseNDigits(token.length, string, valueCallback)
+ }
+ },
+
+ validate: function(_date, value, _options) {
+ return value.isTwoDigitYear || value.year > 0
+ },
+
+ set: function(date, flags, value, options) {
+ var currentYear = getUTCWeekYear(date, options)
+
+ if (value.isTwoDigitYear) {
+ var normalizedTwoDigitYear = normalizeTwoDigitYear(
+ value.year,
+ currentYear
+ )
+ date.setUTCFullYear(
+ normalizedTwoDigitYear,
+ 0,
+ options.firstWeekContainsDate
+ )
+ date.setUTCHours(0, 0, 0, 0)
+ return startOfUTCWeek(date, options)
+ }
+
+ var year =
+ !('era' in flags) || flags.era === 1 ? value.year : 1 - value.year
+ date.setUTCFullYear(year, 0, options.firstWeekContainsDate)
+ date.setUTCHours(0, 0, 0, 0)
+ return startOfUTCWeek(date, options)
+ },
+
+ incompatibleTokens: [
+ 'y',
+ 'R',
+ 'u',
+ 'Q',
+ 'q',
+ 'M',
+ 'L',
+ 'I',
+ 'd',
+ 'D',
+ 'i',
+ 't',
+ 'T'
+ ]
+ },
+
+ // ISO week-numbering year
+ R: {
+ priority: 130,
+
+ parse: function(string, token, _match, _options) {
+ if (token === 'R') {
+ return parseNDigitsSigned(4, string)
+ }
+
+ return parseNDigitsSigned(token.length, string)
+ },
+
+ set: function(_date, _flags, value, _options) {
+ var firstWeekOfYear = new Date(0)
+ firstWeekOfYear.setUTCFullYear(value, 0, 4)
+ firstWeekOfYear.setUTCHours(0, 0, 0, 0)
+ return startOfUTCISOWeek(firstWeekOfYear)
+ },
+
+ incompatibleTokens: [
+ 'G',
+ 'y',
+ 'Y',
+ 'u',
+ 'Q',
+ 'q',
+ 'M',
+ 'L',
+ 'w',
+ 'd',
+ 'D',
+ 'e',
+ 'c',
+ 't',
+ 'T'
+ ]
+ },
+
+ // Extended year
+ u: {
+ priority: 130,
+
+ parse: function(string, token, _match, _options) {
+ if (token === 'u') {
+ return parseNDigitsSigned(4, string)
+ }
+
+ return parseNDigitsSigned(token.length, string)
+ },
+
+ set: function(date, _flags, value, _options) {
+ date.setUTCFullYear(value, 0, 1)
+ date.setUTCHours(0, 0, 0, 0)
+ return date
+ },
+
+ incompatibleTokens: ['G', 'y', 'Y', 'R', 'w', 'I', 'i', 'e', 'c', 't', 'T']
+ },
+
+ // Quarter
+ Q: {
+ priority: 120,
+
+ parse: function(string, token, match, _options) {
+ switch (token) {
+ // 1, 2, 3, 4
+ case 'Q':
+ case 'QQ': // 01, 02, 03, 04
+ return parseNDigits(token.length, string)
+ // 1st, 2nd, 3rd, 4th
+ case 'Qo':
+ return match.ordinalNumber(string, { unit: 'quarter' })
+ // Q1, Q2, Q3, Q4
+ case 'QQQ':
+ return (
+ match.quarter(string, {
+ width: 'abbreviated',
+ context: 'formatting'
+ }) ||
+ match.quarter(string, { width: 'narrow', context: 'formatting' })
+ )
+ // 1, 2, 3, 4 (narrow quarter; could be not numerical)
+ case 'QQQQQ':
+ return match.quarter(string, {
+ width: 'narrow',
+ context: 'formatting'
+ })
+ // 1st quarter, 2nd quarter, ...
+ case 'QQQQ':
+ default:
+ return (
+ match.quarter(string, { width: 'wide', context: 'formatting' }) ||
+ match.quarter(string, {
+ width: 'abbreviated',
+ context: 'formatting'
+ }) ||
+ match.quarter(string, { width: 'narrow', context: 'formatting' })
+ )
+ }
+ },
+
+ validate: function(_date, value, _options) {
+ return value >= 1 && value <= 4
+ },
+
+ set: function(date, _flags, value, _options) {
+ date.setUTCMonth((value - 1) * 3, 1)
+ date.setUTCHours(0, 0, 0, 0)
+ return date
+ },
+
+ incompatibleTokens: [
+ 'Y',
+ 'R',
+ 'q',
+ 'M',
+ 'L',
+ 'w',
+ 'I',
+ 'd',
+ 'D',
+ 'i',
+ 'e',
+ 'c',
+ 't',
+ 'T'
+ ]
+ },
+
+ // Stand-alone quarter
+ q: {
+ priority: 120,
+
+ parse: function(string, token, match, _options) {
+ switch (token) {
+ // 1, 2, 3, 4
+ case 'q':
+ case 'qq': // 01, 02, 03, 04
+ return parseNDigits(token.length, string)
+ // 1st, 2nd, 3rd, 4th
+ case 'qo':
+ return match.ordinalNumber(string, { unit: 'quarter' })
+ // Q1, Q2, Q3, Q4
+ case 'qqq':
+ return (
+ match.quarter(string, {
+ width: 'abbreviated',
+ context: 'standalone'
+ }) ||
+ match.quarter(string, { width: 'narrow', context: 'standalone' })
+ )
+ // 1, 2, 3, 4 (narrow quarter; could be not numerical)
+ case 'qqqqq':
+ return match.quarter(string, {
+ width: 'narrow',
+ context: 'standalone'
+ })
+ // 1st quarter, 2nd quarter, ...
+ case 'qqqq':
+ default:
+ return (
+ match.quarter(string, { width: 'wide', context: 'standalone' }) ||
+ match.quarter(string, {
+ width: 'abbreviated',
+ context: 'standalone'
+ }) ||
+ match.quarter(string, { width: 'narrow', context: 'standalone' })
+ )
+ }
+ },
+
+ validate: function(_date, value, _options) {
+ return value >= 1 && value <= 4
+ },
+
+ set: function(date, _flags, value, _options) {
+ date.setUTCMonth((value - 1) * 3, 1)
+ date.setUTCHours(0, 0, 0, 0)
+ return date
+ },
+
+ incompatibleTokens: [
+ 'Y',
+ 'R',
+ 'Q',
+ 'M',
+ 'L',
+ 'w',
+ 'I',
+ 'd',
+ 'D',
+ 'i',
+ 'e',
+ 'c',
+ 't',
+ 'T'
+ ]
+ },
+
+ // Month
+ M: {
+ priority: 110,
+
+ parse: function(string, token, match, _options) {
+ var valueCallback = function(value) {
+ return value - 1
+ }
+
+ switch (token) {
+ // 1, 2, ..., 12
+ case 'M':
+ return parseNumericPattern(
+ numericPatterns.month,
+ string,
+ valueCallback
+ )
+ // 01, 02, ..., 12
+ case 'MM':
+ return parseNDigits(2, string, valueCallback)
+ // 1st, 2nd, ..., 12th
+ case 'Mo':
+ return match.ordinalNumber(string, {
+ unit: 'month',
+ valueCallback: valueCallback
+ })
+ // Jan, Feb, ..., Dec
+ case 'MMM':
+ return (
+ match.month(string, {
+ width: 'abbreviated',
+ context: 'formatting'
+ }) ||
+ match.month(string, { width: 'narrow', context: 'formatting' })
+ )
+ // J, F, ..., D
+ case 'MMMMM':
+ return match.month(string, { width: 'narrow', context: 'formatting' })
+ // January, February, ..., December
+ case 'MMMM':
+ default:
+ return (
+ match.month(string, { width: 'wide', context: 'formatting' }) ||
+ match.month(string, {
+ width: 'abbreviated',
+ context: 'formatting'
+ }) ||
+ match.month(string, { width: 'narrow', context: 'formatting' })
+ )
+ }
+ },
+
+ validate: function(_date, value, _options) {
+ return value >= 0 && value <= 11
+ },
+
+ set: function(date, _flags, value, _options) {
+ date.setUTCMonth(value, 1)
+ date.setUTCHours(0, 0, 0, 0)
+ return date
+ },
+
+ incompatibleTokens: [
+ 'Y',
+ 'R',
+ 'q',
+ 'Q',
+ 'L',
+ 'w',
+ 'I',
+ 'D',
+ 'i',
+ 'e',
+ 'c',
+ 't',
+ 'T'
+ ]
+ },
+
+ // Stand-alone month
+ L: {
+ priority: 110,
+
+ parse: function(string, token, match, _options) {
+ var valueCallback = function(value) {
+ return value - 1
+ }
+
+ switch (token) {
+ // 1, 2, ..., 12
+ case 'L':
+ return parseNumericPattern(
+ numericPatterns.month,
+ string,
+ valueCallback
+ )
+ // 01, 02, ..., 12
+ case 'LL':
+ return parseNDigits(2, string, valueCallback)
+ // 1st, 2nd, ..., 12th
+ case 'Lo':
+ return match.ordinalNumber(string, {
+ unit: 'month',
+ valueCallback: valueCallback
+ })
+ // Jan, Feb, ..., Dec
+ case 'LLL':
+ return (
+ match.month(string, {
+ width: 'abbreviated',
+ context: 'standalone'
+ }) ||
+ match.month(string, { width: 'narrow', context: 'standalone' })
+ )
+ // J, F, ..., D
+ case 'LLLLL':
+ return match.month(string, { width: 'narrow', context: 'standalone' })
+ // January, February, ..., December
+ case 'LLLL':
+ default:
+ return (
+ match.month(string, { width: 'wide', context: 'standalone' }) ||
+ match.month(string, {
+ width: 'abbreviated',
+ context: 'standalone'
+ }) ||
+ match.month(string, { width: 'narrow', context: 'standalone' })
+ )
+ }
+ },
+
+ validate: function(_date, value, _options) {
+ return value >= 0 && value <= 11
+ },
+
+ set: function(date, _flags, value, _options) {
+ date.setUTCMonth(value, 1)
+ date.setUTCHours(0, 0, 0, 0)
+ return date
+ },
+
+ incompatibleTokens: [
+ 'Y',
+ 'R',
+ 'q',
+ 'Q',
+ 'M',
+ 'w',
+ 'I',
+ 'D',
+ 'i',
+ 'e',
+ 'c',
+ 't',
+ 'T'
+ ]
+ },
+
+ // Local week of year
+ w: {
+ priority: 100,
+
+ parse: function(string, token, match, _options) {
+ switch (token) {
+ case 'w':
+ return parseNumericPattern(numericPatterns.week, string)
+ case 'wo':
+ return match.ordinalNumber(string, { unit: 'week' })
+ default:
+ return parseNDigits(token.length, string)
+ }
+ },
+
+ validate: function(_date, value, _options) {
+ return value >= 1 && value <= 53
+ },
+
+ set: function(date, _flags, value, options) {
+ return startOfUTCWeek(setUTCWeek(date, value, options), options)
+ },
+
+ incompatibleTokens: [
+ 'y',
+ 'R',
+ 'u',
+ 'q',
+ 'Q',
+ 'M',
+ 'L',
+ 'I',
+ 'd',
+ 'D',
+ 'i',
+ 't',
+ 'T'
+ ]
+ },
+
+ // ISO week of year
+ I: {
+ priority: 100,
+
+ parse: function(string, token, match, _options) {
+ switch (token) {
+ case 'I':
+ return parseNumericPattern(numericPatterns.week, string)
+ case 'Io':
+ return match.ordinalNumber(string, { unit: 'week' })
+ default:
+ return parseNDigits(token.length, string)
+ }
+ },
+
+ validate: function(_date, value, _options) {
+ return value >= 1 && value <= 53
+ },
+
+ set: function(date, _flags, value, options) {
+ return startOfUTCISOWeek(setUTCISOWeek(date, value, options), options)
+ },
+
+ incompatibleTokens: [
+ 'y',
+ 'Y',
+ 'u',
+ 'q',
+ 'Q',
+ 'M',
+ 'L',
+ 'w',
+ 'd',
+ 'D',
+ 'e',
+ 'c',
+ 't',
+ 'T'
+ ]
+ },
+
+ // Day of the month
+ d: {
+ priority: 90,
+
+ subPriority: 1,
+
+ parse: function(string, token, match, _options) {
+ switch (token) {
+ case 'd':
+ return parseNumericPattern(numericPatterns.date, string)
+ case 'do':
+ return match.ordinalNumber(string, { unit: 'date' })
+ default:
+ return parseNDigits(token.length, string)
+ }
+ },
+
+ validate: function(date, value, _options) {
+ var year = date.getUTCFullYear()
+ var isLeapYear = isLeapYearIndex(year)
+ var month = date.getUTCMonth()
+ if (isLeapYear) {
+ return value >= 1 && value <= DAYS_IN_MONTH_LEAP_YEAR[month]
+ } else {
+ return value >= 1 && value <= DAYS_IN_MONTH[month]
+ }
+ },
+
+ set: function(date, _flags, value, _options) {
+ date.setUTCDate(value)
+ date.setUTCHours(0, 0, 0, 0)
+ return date
+ },
+
+ incompatibleTokens: [
+ 'Y',
+ 'R',
+ 'q',
+ 'Q',
+ 'w',
+ 'I',
+ 'D',
+ 'i',
+ 'e',
+ 'c',
+ 't',
+ 'T'
+ ]
+ },
+
+ // Day of year
+ D: {
+ priority: 90,
+
+ subPriority: 1,
+
+ parse: function(string, token, match, _options) {
+ switch (token) {
+ case 'D':
+ case 'DD':
+ return parseNumericPattern(numericPatterns.dayOfYear, string)
+ case 'Do':
+ return match.ordinalNumber(string, { unit: 'date' })
+ default:
+ return parseNDigits(token.length, string)
+ }
+ },
+
+ validate: function(date, value, _options) {
+ var year = date.getUTCFullYear()
+ var isLeapYear = isLeapYearIndex(year)
+ if (isLeapYear) {
+ return value >= 1 && value <= 366
+ } else {
+ return value >= 1 && value <= 365
+ }
+ },
+
+ set: function(date, _flags, value, _options) {
+ date.setUTCMonth(0, value)
+ date.setUTCHours(0, 0, 0, 0)
+ return date
+ },
+
+ incompatibleTokens: [
+ 'Y',
+ 'R',
+ 'q',
+ 'Q',
+ 'M',
+ 'L',
+ 'w',
+ 'I',
+ 'd',
+ 'E',
+ 'i',
+ 'e',
+ 'c',
+ 't',
+ 'T'
+ ]
+ },
+
+ // Day of week
+ E: {
+ priority: 90,
+
+ parse: function(string, token, match, _options) {
+ switch (token) {
+ // Tue
+ case 'E':
+ case 'EE':
+ case 'EEE':
+ return (
+ match.day(string, {
+ width: 'abbreviated',
+ context: 'formatting'
+ }) ||
+ match.day(string, { width: 'short', context: 'formatting' }) ||
+ match.day(string, { width: 'narrow', context: 'formatting' })
+ )
+ // T
+ case 'EEEEE':
+ return match.day(string, { width: 'narrow', context: 'formatting' })
+ // Tu
+ case 'EEEEEE':
+ return (
+ match.day(string, { width: 'short', context: 'formatting' }) ||
+ match.day(string, { width: 'narrow', context: 'formatting' })
+ )
+ // Tuesday
+ case 'EEEE':
+ default:
+ return (
+ match.day(string, { width: 'wide', context: 'formatting' }) ||
+ match.day(string, {
+ width: 'abbreviated',
+ context: 'formatting'
+ }) ||
+ match.day(string, { width: 'short', context: 'formatting' }) ||
+ match.day(string, { width: 'narrow', context: 'formatting' })
+ )
+ }
+ },
+
+ validate: function(_date, value, _options) {
+ return value >= 0 && value <= 6
+ },
+
+ set: function(date, _flags, value, options) {
+ date = setUTCDay(date, value, options)
+ date.setUTCHours(0, 0, 0, 0)
+ return date
+ },
+
+ incompatibleTokens: ['D', 'i', 'e', 'c', 't', 'T']
+ },
+
+ // Local day of week
+ e: {
+ priority: 90,
+ parse: function(string, token, match, options) {
+ var valueCallback = function(value) {
+ var wholeWeekDays = Math.floor((value - 1) / 7) * 7
+ return ((value + options.weekStartsOn + 6) % 7) + wholeWeekDays
+ }
+
+ switch (token) {
+ // 3
+ case 'e':
+ case 'ee': // 03
+ return parseNDigits(token.length, string, valueCallback)
+ // 3rd
+ case 'eo':
+ return match.ordinalNumber(string, {
+ unit: 'day',
+ valueCallback: valueCallback
+ })
+ // Tue
+ case 'eee':
+ return (
+ match.day(string, {
+ width: 'abbreviated',
+ context: 'formatting'
+ }) ||
+ match.day(string, { width: 'short', context: 'formatting' }) ||
+ match.day(string, { width: 'narrow', context: 'formatting' })
+ )
+ // T
+ case 'eeeee':
+ return match.day(string, { width: 'narrow', context: 'formatting' })
+ // Tu
+ case 'eeeeee':
+ return (
+ match.day(string, { width: 'short', context: 'formatting' }) ||
+ match.day(string, { width: 'narrow', context: 'formatting' })
+ )
+ // Tuesday
+ case 'eeee':
+ default:
+ return (
+ match.day(string, { width: 'wide', context: 'formatting' }) ||
+ match.day(string, {
+ width: 'abbreviated',
+ context: 'formatting'
+ }) ||
+ match.day(string, { width: 'short', context: 'formatting' }) ||
+ match.day(string, { width: 'narrow', context: 'formatting' })
+ )
+ }
+ },
+ validate: function(_date, value, _options) {
+ return value >= 0 && value <= 6
+ },
+ set: function(date, _flags, value, options) {
+ date = setUTCDay(date, value, options)
+ date.setUTCHours(0, 0, 0, 0)
+ return date
+ },
+
+ incompatibleTokens: [
+ 'y',
+ 'R',
+ 'u',
+ 'q',
+ 'Q',
+ 'M',
+ 'L',
+ 'I',
+ 'd',
+ 'D',
+ 'E',
+ 'i',
+ 'c',
+ 't',
+ 'T'
+ ]
+ },
+
+ // Stand-alone local day of week
+ c: {
+ priority: 90,
+
+ parse: function(string, token, match, options) {
+ var valueCallback = function(value) {
+ var wholeWeekDays = Math.floor((value - 1) / 7) * 7
+ return ((value + options.weekStartsOn + 6) % 7) + wholeWeekDays
+ }
+
+ switch (token) {
+ // 3
+ case 'c':
+ case 'cc': // 03
+ return parseNDigits(token.length, string, valueCallback)
+ // 3rd
+ case 'co':
+ return match.ordinalNumber(string, {
+ unit: 'day',
+ valueCallback: valueCallback
+ })
+ // Tue
+ case 'ccc':
+ return (
+ match.day(string, {
+ width: 'abbreviated',
+ context: 'standalone'
+ }) ||
+ match.day(string, { width: 'short', context: 'standalone' }) ||
+ match.day(string, { width: 'narrow', context: 'standalone' })
+ )
+ // T
+ case 'ccccc':
+ return match.day(string, { width: 'narrow', context: 'standalone' })
+ // Tu
+ case 'cccccc':
+ return (
+ match.day(string, { width: 'short', context: 'standalone' }) ||
+ match.day(string, { width: 'narrow', context: 'standalone' })
+ )
+ // Tuesday
+ case 'cccc':
+ default:
+ return (
+ match.day(string, { width: 'wide', context: 'standalone' }) ||
+ match.day(string, {
+ width: 'abbreviated',
+ context: 'standalone'
+ }) ||
+ match.day(string, { width: 'short', context: 'standalone' }) ||
+ match.day(string, { width: 'narrow', context: 'standalone' })
+ )
+ }
+ },
+
+ validate: function(_date, value, _options) {
+ return value >= 0 && value <= 6
+ },
+
+ set: function(date, _flags, value, options) {
+ date = setUTCDay(date, value, options)
+ date.setUTCHours(0, 0, 0, 0)
+ return date
+ },
+
+ incompatibleTokens: [
+ 'y',
+ 'R',
+ 'u',
+ 'q',
+ 'Q',
+ 'M',
+ 'L',
+ 'I',
+ 'd',
+ 'D',
+ 'E',
+ 'i',
+ 'e',
+ 't',
+ 'T'
+ ]
+ },
+
+ // ISO day of week
+ i: {
+ priority: 90,
+
+ parse: function(string, token, match, _options) {
+ var valueCallback = function(value) {
+ if (value === 0) {
+ return 7
+ }
+ return value
+ }
+
+ switch (token) {
+ // 2
+ case 'i':
+ case 'ii': // 02
+ return parseNDigits(token.length, string)
+ // 2nd
+ case 'io':
+ return match.ordinalNumber(string, { unit: 'day' })
+ // Tue
+ case 'iii':
+ return (
+ match.day(string, {
+ width: 'abbreviated',
+ context: 'formatting',
+ valueCallback: valueCallback
+ }) ||
+ match.day(string, {
+ width: 'short',
+ context: 'formatting',
+ valueCallback: valueCallback
+ }) ||
+ match.day(string, {
+ width: 'narrow',
+ context: 'formatting',
+ valueCallback: valueCallback
+ })
+ )
+ // T
+ case 'iiiii':
+ return match.day(string, {
+ width: 'narrow',
+ context: 'formatting',
+ valueCallback: valueCallback
+ })
+ // Tu
+ case 'iiiiii':
+ return (
+ match.day(string, {
+ width: 'short',
+ context: 'formatting',
+ valueCallback: valueCallback
+ }) ||
+ match.day(string, {
+ width: 'narrow',
+ context: 'formatting',
+ valueCallback: valueCallback
+ })
+ )
+ // Tuesday
+ case 'iiii':
+ default:
+ return (
+ match.day(string, {
+ width: 'wide',
+ context: 'formatting',
+ valueCallback: valueCallback
+ }) ||
+ match.day(string, {
+ width: 'abbreviated',
+ context: 'formatting',
+ valueCallback: valueCallback
+ }) ||
+ match.day(string, {
+ width: 'short',
+ context: 'formatting',
+ valueCallback: valueCallback
+ }) ||
+ match.day(string, {
+ width: 'narrow',
+ context: 'formatting',
+ valueCallback: valueCallback
+ })
+ )
+ }
+ },
+
+ validate: function(_date, value, _options) {
+ return value >= 1 && value <= 7
+ },
+
+ set: function(date, _flags, value, options) {
+ date = setUTCISODay(date, value, options)
+ date.setUTCHours(0, 0, 0, 0)
+ return date
+ },
+
+ incompatibleTokens: [
+ 'y',
+ 'Y',
+ 'u',
+ 'q',
+ 'Q',
+ 'M',
+ 'L',
+ 'w',
+ 'd',
+ 'D',
+ 'E',
+ 'e',
+ 'c',
+ 't',
+ 'T'
+ ]
+ },
+
+ // AM or PM
+ a: {
+ priority: 80,
+
+ parse: function(string, token, match, _options) {
+ switch (token) {
+ case 'a':
+ case 'aa':
+ case 'aaa':
+ return (
+ match.dayPeriod(string, {
+ width: 'abbreviated',
+ context: 'formatting'
+ }) ||
+ match.dayPeriod(string, { width: 'narrow', context: 'formatting' })
+ )
+ case 'aaaaa':
+ return match.dayPeriod(string, {
+ width: 'narrow',
+ context: 'formatting'
+ })
+ case 'aaaa':
+ default:
+ return (
+ match.dayPeriod(string, { width: 'wide', context: 'formatting' }) ||
+ match.dayPeriod(string, {
+ width: 'abbreviated',
+ context: 'formatting'
+ }) ||
+ match.dayPeriod(string, { width: 'narrow', context: 'formatting' })
+ )
+ }
+ },
+
+ set: function(date, _flags, value, _options) {
+ date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0)
+ return date
+ },
+
+ incompatibleTokens: ['b', 'B', 'H', 'K', 'k', 't', 'T']
+ },
+
+ // AM, PM, midnight
+ b: {
+ priority: 80,
+
+ parse: function(string, token, match, _options) {
+ switch (token) {
+ case 'b':
+ case 'bb':
+ case 'bbb':
+ return (
+ match.dayPeriod(string, {
+ width: 'abbreviated',
+ context: 'formatting'
+ }) ||
+ match.dayPeriod(string, { width: 'narrow', context: 'formatting' })
+ )
+ case 'bbbbb':
+ return match.dayPeriod(string, {
+ width: 'narrow',
+ context: 'formatting'
+ })
+ case 'bbbb':
+ default:
+ return (
+ match.dayPeriod(string, { width: 'wide', context: 'formatting' }) ||
+ match.dayPeriod(string, {
+ width: 'abbreviated',
+ context: 'formatting'
+ }) ||
+ match.dayPeriod(string, { width: 'narrow', context: 'formatting' })
+ )
+ }
+ },
+
+ set: function(date, _flags, value, _options) {
+ date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0)
+ return date
+ },
+
+ incompatibleTokens: ['a', 'B', 'H', 'K', 'k', 't', 'T']
+ },
+
+ // in the morning, in the afternoon, in the evening, at night
+ B: {
+ priority: 80,
+
+ parse: function(string, token, match, _options) {
+ switch (token) {
+ case 'B':
+ case 'BB':
+ case 'BBB':
+ return (
+ match.dayPeriod(string, {
+ width: 'abbreviated',
+ context: 'formatting'
+ }) ||
+ match.dayPeriod(string, { width: 'narrow', context: 'formatting' })
+ )
+ case 'BBBBB':
+ return match.dayPeriod(string, {
+ width: 'narrow',
+ context: 'formatting'
+ })
+ case 'BBBB':
+ default:
+ return (
+ match.dayPeriod(string, { width: 'wide', context: 'formatting' }) ||
+ match.dayPeriod(string, {
+ width: 'abbreviated',
+ context: 'formatting'
+ }) ||
+ match.dayPeriod(string, { width: 'narrow', context: 'formatting' })
+ )
+ }
+ },
+
+ set: function(date, _flags, value, _options) {
+ date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0)
+ return date
+ },
+
+ incompatibleTokens: ['a', 'b', 't', 'T']
+ },
+
+ // Hour [1-12]
+ h: {
+ priority: 70,
+
+ parse: function(string, token, match, _options) {
+ switch (token) {
+ case 'h':
+ return parseNumericPattern(numericPatterns.hour12h, string)
+ case 'ho':
+ return match.ordinalNumber(string, { unit: 'hour' })
+ default:
+ return parseNDigits(token.length, string)
+ }
+ },
+
+ validate: function(_date, value, _options) {
+ return value >= 1 && value <= 12
+ },
+
+ set: function(date, _flags, value, _options) {
+ var isPM = date.getUTCHours() >= 12
+ if (isPM && value < 12) {
+ date.setUTCHours(value + 12, 0, 0, 0)
+ } else if (!isPM && value === 12) {
+ date.setUTCHours(0, 0, 0, 0)
+ } else {
+ date.setUTCHours(value, 0, 0, 0)
+ }
+ return date
+ },
+
+ incompatibleTokens: ['H', 'K', 'k', 't', 'T']
+ },
+
+ // Hour [0-23]
+ H: {
+ priority: 70,
+
+ parse: function(string, token, match, _options) {
+ switch (token) {
+ case 'H':
+ return parseNumericPattern(numericPatterns.hour23h, string)
+ case 'Ho':
+ return match.ordinalNumber(string, { unit: 'hour' })
+ default:
+ return parseNDigits(token.length, string)
+ }
+ },
+
+ validate: function(_date, value, _options) {
+ return value >= 0 && value <= 23
+ },
+
+ set: function(date, _flags, value, _options) {
+ date.setUTCHours(value, 0, 0, 0)
+ return date
+ },
+
+ incompatibleTokens: ['a', 'b', 'h', 'K', 'k', 't', 'T']
+ },
+
+ // Hour [0-11]
+ K: {
+ priority: 70,
+
+ parse: function(string, token, match, _options) {
+ switch (token) {
+ case 'K':
+ return parseNumericPattern(numericPatterns.hour11h, string)
+ case 'Ko':
+ return match.ordinalNumber(string, { unit: 'hour' })
+ default:
+ return parseNDigits(token.length, string)
+ }
+ },
+
+ validate: function(_date, value, _options) {
+ return value >= 0 && value <= 11
+ },
+
+ set: function(date, _flags, value, _options) {
+ var isPM = date.getUTCHours() >= 12
+ if (isPM && value < 12) {
+ date.setUTCHours(value + 12, 0, 0, 0)
+ } else {
+ date.setUTCHours(value, 0, 0, 0)
+ }
+ return date
+ },
+
+ incompatibleTokens: ['a', 'b', 'h', 'H', 'k', 't', 'T']
+ },
+
+ // Hour [1-24]
+ k: {
+ priority: 70,
+
+ parse: function(string, token, match, _options) {
+ switch (token) {
+ case 'k':
+ return parseNumericPattern(numericPatterns.hour24h, string)
+ case 'ko':
+ return match.ordinalNumber(string, { unit: 'hour' })
+ default:
+ return parseNDigits(token.length, string)
+ }
+ },
+
+ validate: function(_date, value, _options) {
+ return value >= 1 && value <= 24
+ },
+
+ set: function(date, _flags, value, _options) {
+ var hours = value <= 24 ? value % 24 : value
+ date.setUTCHours(hours, 0, 0, 0)
+ return date
+ },
+
+ incompatibleTokens: ['a', 'b', 'h', 'H', 'K', 't', 'T']
+ },
+
+ // Minute
+ m: {
+ priority: 60,
+
+ parse: function(string, token, match, _options) {
+ switch (token) {
+ case 'm':
+ return parseNumericPattern(numericPatterns.minute, string)
+ case 'mo':
+ return match.ordinalNumber(string, { unit: 'minute' })
+ default:
+ return parseNDigits(token.length, string)
+ }
+ },
+
+ validate: function(_date, value, _options) {
+ return value >= 0 && value <= 59
+ },
+
+ set: function(date, _flags, value, _options) {
+ date.setUTCMinutes(value, 0, 0)
+ return date
+ },
+
+ incompatibleTokens: ['t', 'T']
+ },
+
+ // Second
+ s: {
+ priority: 50,
+
+ parse: function(string, token, match, _options) {
+ switch (token) {
+ case 's':
+ return parseNumericPattern(numericPatterns.second, string)
+ case 'so':
+ return match.ordinalNumber(string, { unit: 'second' })
+ default:
+ return parseNDigits(token.length, string)
+ }
+ },
+
+ validate: function(_date, value, _options) {
+ return value >= 0 && value <= 59
+ },
+
+ set: function(date, _flags, value, _options) {
+ date.setUTCSeconds(value, 0)
+ return date
+ },
+
+ incompatibleTokens: ['t', 'T']
+ },
+
+ // Fraction of second
+ S: {
+ priority: 30,
+
+ parse: function(string, token, _match, _options) {
+ var valueCallback = function(value) {
+ return Math.floor(value * Math.pow(10, -token.length + 3))
+ }
+ return parseNDigits(token.length, string, valueCallback)
+ },
+
+ set: function(date, _flags, value, _options) {
+ date.setUTCMilliseconds(value)
+ return date
+ },
+
+ incompatibleTokens: ['t', 'T']
+ },
+
+ // Timezone (ISO-8601. +00:00 is `'Z'`)
+ X: {
+ priority: 10,
+
+ parse: function(string, token, _match, _options) {
+ switch (token) {
+ case 'X':
+ return parseTimezonePattern(
+ timezonePatterns.basicOptionalMinutes,
+ string
+ )
+ case 'XX':
+ return parseTimezonePattern(timezonePatterns.basic, string)
+ case 'XXXX':
+ return parseTimezonePattern(
+ timezonePatterns.basicOptionalSeconds,
+ string
+ )
+ case 'XXXXX':
+ return parseTimezonePattern(
+ timezonePatterns.extendedOptionalSeconds,
+ string
+ )
+ case 'XXX':
+ default:
+ return parseTimezonePattern(timezonePatterns.extended, string)
+ }
+ },
+
+ set: function(date, flags, value, _options) {
+ if (flags.timestampIsSet) {
+ return date
+ }
+ return new Date(date.getTime() - value)
+ },
+
+ incompatibleTokens: ['t', 'T', 'x']
+ },
+
+ // Timezone (ISO-8601)
+ x: {
+ priority: 10,
+
+ parse: function(string, token, _match, _options) {
+ switch (token) {
+ case 'x':
+ return parseTimezonePattern(
+ timezonePatterns.basicOptionalMinutes,
+ string
+ )
+ case 'xx':
+ return parseTimezonePattern(timezonePatterns.basic, string)
+ case 'xxxx':
+ return parseTimezonePattern(
+ timezonePatterns.basicOptionalSeconds,
+ string
+ )
+ case 'xxxxx':
+ return parseTimezonePattern(
+ timezonePatterns.extendedOptionalSeconds,
+ string
+ )
+ case 'xxx':
+ default:
+ return parseTimezonePattern(timezonePatterns.extended, string)
+ }
+ },
+
+ set: function(date, flags, value, _options) {
+ if (flags.timestampIsSet) {
+ return date
+ }
+ return new Date(date.getTime() - value)
+ },
+
+ incompatibleTokens: ['t', 'T', 'X']
+ },
+
+ // Seconds timestamp
+ t: {
+ priority: 40,
+
+ parse: function(string, _token, _match, _options) {
+ return parseAnyDigitsSigned(string)
+ },
+
+ set: function(_date, _flags, value, _options) {
+ return [new Date(value * 1000), { timestampIsSet: true }]
+ },
+
+ incompatibleTokens: '*'
+ },
+
+ // Milliseconds timestamp
+ T: {
+ priority: 20,
+
+ parse: function(string, _token, _match, _options) {
+ return parseAnyDigitsSigned(string)
+ },
+
+ set: function(_date, _flags, value, _options) {
+ return [new Date(value), { timestampIsSet: true }]
+ },
+
+ incompatibleTokens: '*'
+ }
+}
+
+export default parsers
diff --git a/date-fns/src/parse/benchmark.js b/date-fns/src/parse/benchmark.js
new file mode 100644
index 0000000..2b816d7
--- /dev/null
+++ b/date-fns/src/parse/benchmark.js
@@ -0,0 +1,20 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import parse from '.'
+import moment from 'moment'
+
+suite('parse', function () {
+ benchmark('date-fns', function () {
+ return parse('Tuesday, January 10th 2017, 11:07:40 am', 'dddd, MMMM Do YYYY, h:mm:ss a', this.date)
+ })
+
+ benchmark('Moment.js', function () {
+ return moment('Tuesday, January 10th 2017, 11:07:40 am', 'dddd, MMMM Do YYYY, h:mm:ss a')
+ })
+}, {
+ setup: function () {
+ this.date = new Date()
+ }
+})
diff --git a/date-fns/src/parse/index.d.ts b/date-fns/src/parse/index.d.ts
new file mode 100644
index 0000000..2c5eb60
--- /dev/null
+++ b/date-fns/src/parse/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { parse } from 'date-fns'
+export default parse
diff --git a/date-fns/src/parse/index.js b/date-fns/src/parse/index.js
new file mode 100644
index 0000000..ef8b2d3
--- /dev/null
+++ b/date-fns/src/parse/index.js
@@ -0,0 +1,626 @@
+import defaultLocale from '../locale/en-US/index'
+import subMilliseconds from '../subMilliseconds/index'
+import toDate from '../toDate/index'
+import assign from '../_lib/assign/index'
+import longFormatters from '../_lib/format/longFormatters/index'
+import getTimezoneOffsetInMilliseconds from '../_lib/getTimezoneOffsetInMilliseconds/index'
+import {
+ isProtectedDayOfYearToken,
+ isProtectedWeekYearToken,
+ throwProtectedError
+} from '../_lib/protectedTokens/index'
+import toInteger from '../_lib/toInteger/index'
+import parsers from './_lib/parsers/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+var TIMEZONE_UNIT_PRIORITY = 10
+
+// This RegExp consists of three parts separated by `|`:
+// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token
+// (one of the certain letters followed by `o`)
+// - (\w)\1* matches any sequences of the same letter
+// - '' matches two quote characters in a row
+// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),
+// except a single quote symbol, which ends the sequence.
+// Two quote characters do not end the sequence.
+// If there is no matching single quote
+// then the sequence will continue until the end of the string.
+// - . matches any single character unmatched by previous parts of the RegExps
+var formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g
+
+// This RegExp catches symbols escaped by quotes, and also
+// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`
+var longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g
+
+var escapedStringRegExp = /^'([^]*?)'?$/
+var doubleQuoteRegExp = /''/g
+
+var notWhitespaceRegExp = /\S/
+var unescapedLatinCharacterRegExp = /[a-zA-Z]/
+
+/**
+ * @name parse
+ * @category Common Helpers
+ * @summary Parse the date.
+ *
+ * @description
+ * Return the date parsed from string using the given format string.
+ *
+ * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.
+ * > See: https://git.io/fxCyr
+ *
+ * The characters in the format string wrapped between two single quotes characters (') are escaped.
+ * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.
+ *
+ * Format of the format string is based on Unicode Technical Standard #35:
+ * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table
+ * with a few additions (see note 5 below the table).
+ *
+ * Not all tokens are compatible. Combinations that don't make sense or could lead to bugs are prohibited
+ * and will throw `RangeError`. For example usage of 24-hour format token with AM/PM token will throw an exception:
+ *
+ * ```javascript
+ * parse('23 AM', 'HH a', new Date())
+ * //=> RangeError: The format string mustn't contain `HH` and `a` at the same time
+ * ```
+ *
+ * See the compatibility table: https://docs.google.com/spreadsheets/d/e/2PACX-1vQOPU3xUhplll6dyoMmVUXHKl_8CRDs6_ueLmex3SoqwhuolkuN3O05l4rqx5h1dKX8eb46Ul-CCSrq/pubhtml?gid=0&single=true
+ *
+ * Accepted format string patterns:
+ * | Unit |Prior| Pattern | Result examples | Notes |
+ * |---------------------------------|-----|---------|-----------------------------------|-------|
+ * | Era | 140 | G..GGG | AD, BC | |
+ * | | | GGGG | Anno Domini, Before Christ | 2 |
+ * | | | GGGGG | A, B | |
+ * | Calendar year | 130 | y | 44, 1, 1900, 2017, 9999 | 4 |
+ * | | | yo | 44th, 1st, 1900th, 9999999th | 4,5 |
+ * | | | yy | 44, 01, 00, 17 | 4 |
+ * | | | yyy | 044, 001, 123, 999 | 4 |
+ * | | | yyyy | 0044, 0001, 1900, 2017 | 4 |
+ * | | | yyyyy | ... | 2,4 |
+ * | Local week-numbering year | 130 | Y | 44, 1, 1900, 2017, 9000 | 4 |
+ * | | | Yo | 44th, 1st, 1900th, 9999999th | 4,5 |
+ * | | | YY | 44, 01, 00, 17 | 4,6 |
+ * | | | YYY | 044, 001, 123, 999 | 4 |
+ * | | | YYYY | 0044, 0001, 1900, 2017 | 4,6 |
+ * | | | YYYYY | ... | 2,4 |
+ * | ISO week-numbering year | 130 | R | -43, 1, 1900, 2017, 9999, -9999 | 4,5 |
+ * | | | RR | -43, 01, 00, 17 | 4,5 |
+ * | | | RRR | -043, 001, 123, 999, -999 | 4,5 |
+ * | | | RRRR | -0043, 0001, 2017, 9999, -9999 | 4,5 |
+ * | | | RRRRR | ... | 2,4,5 |
+ * | Extended year | 130 | u | -43, 1, 1900, 2017, 9999, -999 | 4 |
+ * | | | uu | -43, 01, 99, -99 | 4 |
+ * | | | uuu | -043, 001, 123, 999, -999 | 4 |
+ * | | | uuuu | -0043, 0001, 2017, 9999, -9999 | 4 |
+ * | | | uuuuu | ... | 2,4 |
+ * | Quarter (formatting) | 120 | Q | 1, 2, 3, 4 | |
+ * | | | Qo | 1st, 2nd, 3rd, 4th | 5 |
+ * | | | QQ | 01, 02, 03, 04 | |
+ * | | | QQQ | Q1, Q2, Q3, Q4 | |
+ * | | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |
+ * | | | QQQQQ | 1, 2, 3, 4 | 4 |
+ * | Quarter (stand-alone) | 120 | q | 1, 2, 3, 4 | |
+ * | | | qo | 1st, 2nd, 3rd, 4th | 5 |
+ * | | | qq | 01, 02, 03, 04 | |
+ * | | | qqq | Q1, Q2, Q3, Q4 | |
+ * | | | qqqq | 1st quarter, 2nd quarter, ... | 2 |
+ * | | | qqqqq | 1, 2, 3, 4 | 3 |
+ * | Month (formatting) | 110 | M | 1, 2, ..., 12 | |
+ * | | | Mo | 1st, 2nd, ..., 12th | 5 |
+ * | | | MM | 01, 02, ..., 12 | |
+ * | | | MMM | Jan, Feb, ..., Dec | |
+ * | | | MMMM | January, February, ..., December | 2 |
+ * | | | MMMMM | J, F, ..., D | |
+ * | Month (stand-alone) | 110 | L | 1, 2, ..., 12 | |
+ * | | | Lo | 1st, 2nd, ..., 12th | 5 |
+ * | | | LL | 01, 02, ..., 12 | |
+ * | | | LLL | Jan, Feb, ..., Dec | |
+ * | | | LLLL | January, February, ..., December | 2 |
+ * | | | LLLLL | J, F, ..., D | |
+ * | Local week of year | 100 | w | 1, 2, ..., 53 | |
+ * | | | wo | 1st, 2nd, ..., 53th | 5 |
+ * | | | ww | 01, 02, ..., 53 | |
+ * | ISO week of year | 100 | I | 1, 2, ..., 53 | 5 |
+ * | | | Io | 1st, 2nd, ..., 53th | 5 |
+ * | | | II | 01, 02, ..., 53 | 5 |
+ * | Day of month | 90 | d | 1, 2, ..., 31 | |
+ * | | | do | 1st, 2nd, ..., 31st | 5 |
+ * | | | dd | 01, 02, ..., 31 | |
+ * | Day of year | 90 | D | 1, 2, ..., 365, 366 | 7 |
+ * | | | Do | 1st, 2nd, ..., 365th, 366th | 5 |
+ * | | | DD | 01, 02, ..., 365, 366 | 7 |
+ * | | | DDD | 001, 002, ..., 365, 366 | |
+ * | | | DDDD | ... | 2 |
+ * | Day of week (formatting) | 90 | E..EEE | Mon, Tue, Wed, ..., Sun | |
+ * | | | EEEE | Monday, Tuesday, ..., Sunday | 2 |
+ * | | | EEEEE | M, T, W, T, F, S, S | |
+ * | | | EEEEEE | Mo, Tu, We, Th, Fr, Su, Sa | |
+ * | ISO day of week (formatting) | 90 | i | 1, 2, 3, ..., 7 | 5 |
+ * | | | io | 1st, 2nd, ..., 7th | 5 |
+ * | | | ii | 01, 02, ..., 07 | 5 |
+ * | | | iii | Mon, Tue, Wed, ..., Sun | 5 |
+ * | | | iiii | Monday, Tuesday, ..., Sunday | 2,5 |
+ * | | | iiiii | M, T, W, T, F, S, S | 5 |
+ * | | | iiiiii | Mo, Tu, We, Th, Fr, Su, Sa | 5 |
+ * | Local day of week (formatting) | 90 | e | 2, 3, 4, ..., 1 | |
+ * | | | eo | 2nd, 3rd, ..., 1st | 5 |
+ * | | | ee | 02, 03, ..., 01 | |
+ * | | | eee | Mon, Tue, Wed, ..., Sun | |
+ * | | | eeee | Monday, Tuesday, ..., Sunday | 2 |
+ * | | | eeeee | M, T, W, T, F, S, S | |
+ * | | | eeeeee | Mo, Tu, We, Th, Fr, Su, Sa | |
+ * | Local day of week (stand-alone) | 90 | c | 2, 3, 4, ..., 1 | |
+ * | | | co | 2nd, 3rd, ..., 1st | 5 |
+ * | | | cc | 02, 03, ..., 01 | |
+ * | | | ccc | Mon, Tue, Wed, ..., Sun | |
+ * | | | cccc | Monday, Tuesday, ..., Sunday | 2 |
+ * | | | ccccc | M, T, W, T, F, S, S | |
+ * | | | cccccc | Mo, Tu, We, Th, Fr, Su, Sa | |
+ * | AM, PM | 80 | a..aaa | AM, PM | |
+ * | | | aaaa | a.m., p.m. | 2 |
+ * | | | aaaaa | a, p | |
+ * | AM, PM, noon, midnight | 80 | b..bbb | AM, PM, noon, midnight | |
+ * | | | bbbb | a.m., p.m., noon, midnight | 2 |
+ * | | | bbbbb | a, p, n, mi | |
+ * | Flexible day period | 80 | B..BBB | at night, in the morning, ... | |
+ * | | | BBBB | at night, in the morning, ... | 2 |
+ * | | | BBBBB | at night, in the morning, ... | |
+ * | Hour [1-12] | 70 | h | 1, 2, ..., 11, 12 | |
+ * | | | ho | 1st, 2nd, ..., 11th, 12th | 5 |
+ * | | | hh | 01, 02, ..., 11, 12 | |
+ * | Hour [0-23] | 70 | H | 0, 1, 2, ..., 23 | |
+ * | | | Ho | 0th, 1st, 2nd, ..., 23rd | 5 |
+ * | | | HH | 00, 01, 02, ..., 23 | |
+ * | Hour [0-11] | 70 | K | 1, 2, ..., 11, 0 | |
+ * | | | Ko | 1st, 2nd, ..., 11th, 0th | 5 |
+ * | | | KK | 01, 02, ..., 11, 00 | |
+ * | Hour [1-24] | 70 | k | 24, 1, 2, ..., 23 | |
+ * | | | ko | 24th, 1st, 2nd, ..., 23rd | 5 |
+ * | | | kk | 24, 01, 02, ..., 23 | |
+ * | Minute | 60 | m | 0, 1, ..., 59 | |
+ * | | | mo | 0th, 1st, ..., 59th | 5 |
+ * | | | mm | 00, 01, ..., 59 | |
+ * | Second | 50 | s | 0, 1, ..., 59 | |
+ * | | | so | 0th, 1st, ..., 59th | 5 |
+ * | | | ss | 00, 01, ..., 59 | |
+ * | Seconds timestamp | 40 | t | 512969520 | |
+ * | | | tt | ... | 2 |
+ * | Fraction of second | 30 | S | 0, 1, ..., 9 | |
+ * | | | SS | 00, 01, ..., 99 | |
+ * | | | SSS | 000, 0001, ..., 999 | |
+ * | | | SSSS | ... | 2 |
+ * | Milliseconds timestamp | 20 | T | 512969520900 | |
+ * | | | TT | ... | 2 |
+ * | Timezone (ISO-8601 w/ Z) | 10 | X | -08, +0530, Z | |
+ * | | | XX | -0800, +0530, Z | |
+ * | | | XXX | -08:00, +05:30, Z | |
+ * | | | XXXX | -0800, +0530, Z, +123456 | 2 |
+ * | | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |
+ * | Timezone (ISO-8601 w/o Z) | 10 | x | -08, +0530, +00 | |
+ * | | | xx | -0800, +0530, +0000 | |
+ * | | | xxx | -08:00, +05:30, +00:00 | 2 |
+ * | | | xxxx | -0800, +0530, +0000, +123456 | |
+ * | | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |
+ * | Long localized date | NA | P | 05/29/1453 | 5,8 |
+ * | | | PP | May 29, 1453 | |
+ * | | | PPP | May 29th, 1453 | |
+ * | | | PPPP | Sunday, May 29th, 1453 | 2,5,8 |
+ * | Long localized time | NA | p | 12:00 AM | 5,8 |
+ * | | | pp | 12:00:00 AM | |
+ * | Combination of date and time | NA | Pp | 05/29/1453, 12:00 AM | |
+ * | | | PPpp | May 29, 1453, 12:00:00 AM | |
+ * | | | PPPpp | May 29th, 1453 at ... | |
+ * | | | PPPPpp | Sunday, May 29th, 1453 at ... | 2,5,8 |
+ * Notes:
+ * 1. "Formatting" units (e.g. formatting quarter) in the default en-US locale
+ * are the same as "stand-alone" units, but are different in some languages.
+ * "Formatting" units are declined according to the rules of the language
+ * in the context of a date. "Stand-alone" units are always nominative singular.
+ * In `format` function, they will produce different result:
+ *
+ * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`
+ *
+ * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`
+ *
+ * `parse` will try to match both formatting and stand-alone units interchangably.
+ *
+ * 2. Any sequence of the identical letters is a pattern, unless it is escaped by
+ * the single quote characters (see below).
+ * If the sequence is longer than listed in table:
+ * - for numerical units (`yyyyyyyy`) `parse` will try to match a number
+ * as wide as the sequence
+ * - for text units (`MMMMMMMM`) `parse` will try to match the widest variation of the unit.
+ * These variations are marked with "2" in the last column of the table.
+ *
+ * 3. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.
+ * These tokens represent the shortest form of the quarter.
+ *
+ * 4. The main difference between `y` and `u` patterns are B.C. years:
+ *
+ * | Year | `y` | `u` |
+ * |------|-----|-----|
+ * | AC 1 | 1 | 1 |
+ * | BC 1 | 1 | 0 |
+ * | BC 2 | 2 | -1 |
+ *
+ * Also `yy` will try to guess the century of two digit year by proximity with `referenceDate`:
+ *
+ * `parse('50', 'yy', new Date(2018, 0, 1)) //=> Sat Jan 01 2050 00:00:00`
+ *
+ * `parse('75', 'yy', new Date(2018, 0, 1)) //=> Wed Jan 01 1975 00:00:00`
+ *
+ * while `uu` will just assign the year as is:
+ *
+ * `parse('50', 'uu', new Date(2018, 0, 1)) //=> Sat Jan 01 0050 00:00:00`
+ *
+ * `parse('75', 'uu', new Date(2018, 0, 1)) //=> Tue Jan 01 0075 00:00:00`
+ *
+ * The same difference is true for local and ISO week-numbering years (`Y` and `R`),
+ * except local week-numbering years are dependent on `options.weekStartsOn`
+ * and `options.firstWeekContainsDate` (compare [setISOWeekYear]{@link https://date-fns.org/docs/setISOWeekYear}
+ * and [setWeekYear]{@link https://date-fns.org/docs/setWeekYear}).
+ *
+ * 5. These patterns are not in the Unicode Technical Standard #35:
+ * - `i`: ISO day of week
+ * - `I`: ISO week of year
+ * - `R`: ISO week-numbering year
+ * - `o`: ordinal number modifier
+ * - `P`: long localized date
+ * - `p`: long localized time
+ *
+ * 6. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.
+ * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://git.io/fxCyr
+ *
+ * 7. `D` and `DD` tokens represent days of the year but they are ofthen confused with days of the month.
+ * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://git.io/fxCyr
+ *
+ * 8. `P+` tokens do not have a defined priority since they are merely aliases to other tokens based
+ * on the given locale.
+ *
+ * using `en-US` locale: `P` => `MM/dd/yyyy`
+ * using `en-US` locale: `p` => `hh:mm a`
+ * using `pt-BR` locale: `P` => `dd/MM/yyyy`
+ * using `pt-BR` locale: `p` => `HH:mm`
+ *
+ * Values will be assigned to the date in the descending order of its unit's priority.
+ * Units of an equal priority overwrite each other in the order of appearance.
+ *
+ * If no values of higher priority are parsed (e.g. when parsing string 'January 1st' without a year),
+ * the values will be taken from 3rd argument `referenceDate` which works as a context of parsing.
+ *
+ * `referenceDate` must be passed for correct work of the function.
+ * If you're not sure which `referenceDate` to supply, create a new instance of Date:
+ * `parse('02/11/2014', 'MM/dd/yyyy', new Date())`
+ * In this case parsing will be done in the context of the current date.
+ * If `referenceDate` is `Invalid Date` or a value not convertible to valid `Date`,
+ * then `Invalid Date` will be returned.
+ *
+ * The result may vary by locale.
+ *
+ * If `formatString` matches with `dateString` but does not provides tokens, `referenceDate` will be returned.
+ *
+ * If parsing failed, `Invalid Date` will be returned.
+ * Invalid Date is a Date, whose time value is NaN.
+ * Time value of Date: http://es5.github.io/#x15.9.1.1
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * - Old `parse` was renamed to `toDate`.
+ * Now `parse` is a new function which parses a string using a provided format.
+ *
+ * ```javascript
+ * // Before v2.0.0
+ * parse('2016-01-01')
+ *
+ * // v2.0.0 onward (toDate no longer accepts a string)
+ * toDate(1392098430000) // Unix to timestamp
+ * toDate(new Date(2014, 1, 11, 11, 30, 30)) // Cloning the date
+ * parse('2016-01-01', 'yyyy-MM-dd', new Date())
+ * ```
+ *
+ * @param {String} dateString - the string to parse
+ * @param {String} formatString - the string of tokens
+ * @param {Date|Number} referenceDate - defines values missing from the parsed dateString
+ * @param {Object} [options] - an object with options.
+ * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}
+ * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)
+ * @param {1|2|3|4|5|6|7} [options.firstWeekContainsDate=1] - the day of January, which is always in the first week of the year
+ * @param {Boolean} [options.useAdditionalWeekYearTokens=false] - if true, allows usage of the week-numbering year tokens `YY` and `YYYY`;
+ * see: https://git.io/fxCyr
+ * @param {Boolean} [options.useAdditionalDayOfYearTokens=false] - if true, allows usage of the day of year tokens `D` and `DD`;
+ * see: https://git.io/fxCyr
+ * @returns {Date} the parsed date
+ * @throws {TypeError} 3 arguments required
+ * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6
+ * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7
+ * @throws {RangeError} `options.locale` must contain `match` property
+ * @throws {RangeError} use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://git.io/fxCyr
+ * @throws {RangeError} use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://git.io/fxCyr
+ * @throws {RangeError} use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://git.io/fxCyr
+ * @throws {RangeError} use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://git.io/fxCyr
+ * @throws {RangeError} format string contains an unescaped latin alphabet character
+ *
+ * @example
+ * // Parse 11 February 2014 from middle-endian format:
+ * var result = parse('02/11/2014', 'MM/dd/yyyy', new Date())
+ * //=> Tue Feb 11 2014 00:00:00
+ *
+ * @example
+ * // Parse 28th of February in Esperanto locale in the context of 2010 year:
+ * import eo from 'date-fns/locale/eo'
+ * var result = parse('28-a de februaro', "do 'de' MMMM", new Date(2010, 0, 1), {
+ * locale: eo
+ * })
+ * //=> Sun Feb 28 2010 00:00:00
+ */
+export default function parse(
+ dirtyDateString,
+ dirtyFormatString,
+ dirtyReferenceDate,
+ dirtyOptions
+) {
+ requiredArgs(3, arguments)
+
+ var dateString = String(dirtyDateString)
+ var formatString = String(dirtyFormatString)
+ var options = dirtyOptions || {}
+
+ var locale = options.locale || defaultLocale
+
+ if (!locale.match) {
+ throw new RangeError('locale must contain match property')
+ }
+
+ var localeFirstWeekContainsDate =
+ locale.options && locale.options.firstWeekContainsDate
+ var defaultFirstWeekContainsDate =
+ localeFirstWeekContainsDate == null
+ ? 1
+ : toInteger(localeFirstWeekContainsDate)
+ var firstWeekContainsDate =
+ options.firstWeekContainsDate == null
+ ? defaultFirstWeekContainsDate
+ : toInteger(options.firstWeekContainsDate)
+
+ // Test if weekStartsOn is between 1 and 7 _and_ is not NaN
+ if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {
+ throw new RangeError(
+ 'firstWeekContainsDate must be between 1 and 7 inclusively'
+ )
+ }
+
+ var localeWeekStartsOn = locale.options && locale.options.weekStartsOn
+ var defaultWeekStartsOn =
+ localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn)
+ var weekStartsOn =
+ options.weekStartsOn == null
+ ? defaultWeekStartsOn
+ : toInteger(options.weekStartsOn)
+
+ // Test if weekStartsOn is between 0 and 6 _and_ is not NaN
+ if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {
+ throw new RangeError('weekStartsOn must be between 0 and 6 inclusively')
+ }
+
+ if (formatString === '') {
+ if (dateString === '') {
+ return toDate(dirtyReferenceDate)
+ } else {
+ return new Date(NaN)
+ }
+ }
+
+ var subFnOptions = {
+ firstWeekContainsDate: firstWeekContainsDate,
+ weekStartsOn: weekStartsOn,
+ locale: locale
+ }
+
+ // If timezone isn't specified, it will be set to the system timezone
+ var setters = [
+ {
+ priority: TIMEZONE_UNIT_PRIORITY,
+ subPriority: -1,
+ set: dateToSystemTimezone,
+ index: 0
+ }
+ ]
+
+ var i
+
+ var tokens = formatString
+ .match(longFormattingTokensRegExp)
+ .map(function(substring) {
+ var firstCharacter = substring[0]
+ if (firstCharacter === 'p' || firstCharacter === 'P') {
+ var longFormatter = longFormatters[firstCharacter]
+ return longFormatter(substring, locale.formatLong, subFnOptions)
+ }
+ return substring
+ })
+ .join('')
+ .match(formattingTokensRegExp)
+
+ const usedTokens = []
+
+ for (i = 0; i < tokens.length; i++) {
+ var token = tokens[i]
+
+ if (
+ !options.useAdditionalWeekYearTokens &&
+ isProtectedWeekYearToken(token)
+ ) {
+ throwProtectedError(token, formatString, dirtyDateString)
+ }
+ if (
+ !options.useAdditionalDayOfYearTokens &&
+ isProtectedDayOfYearToken(token)
+ ) {
+ throwProtectedError(token, formatString, dirtyDateString)
+ }
+
+ var firstCharacter = token[0]
+ var parser = parsers[firstCharacter]
+ if (parser) {
+ const { incompatibleTokens } = parser
+ if (Array.isArray(incompatibleTokens)) {
+ let incompatibleToken
+ for (let i = 0; i < usedTokens.length; i++) {
+ const usedToken = usedTokens[i].token
+ if (
+ incompatibleTokens.indexOf(usedToken) !== -1 ||
+ usedToken === firstCharacter
+ ) {
+ incompatibleToken = usedTokens[i]
+ break
+ }
+ }
+ if (incompatibleToken) {
+ throw new RangeError(
+ `The format string mustn't contain \`${incompatibleToken.fullToken}\` and \`${token}\` at the same time`
+ )
+ }
+ } else if (parser.incompatibleTokens === '*' && usedTokens.length) {
+ throw new RangeError(
+ `The format string mustn't contain \`${token}\` and any other token at the same time`
+ )
+ }
+
+ usedTokens.push({ token: firstCharacter, fullToken: token })
+
+ var parseResult = parser.parse(
+ dateString,
+ token,
+ locale.match,
+ subFnOptions
+ )
+
+ if (!parseResult) {
+ return new Date(NaN)
+ }
+
+ setters.push({
+ priority: parser.priority,
+ subPriority: parser.subPriority || 0,
+ set: parser.set,
+ validate: parser.validate,
+ value: parseResult.value,
+ index: setters.length
+ })
+
+ dateString = parseResult.rest
+ } else {
+ if (firstCharacter.match(unescapedLatinCharacterRegExp)) {
+ throw new RangeError(
+ 'Format string contains an unescaped latin alphabet character `' +
+ firstCharacter +
+ '`'
+ )
+ }
+
+ // Replace two single quote characters with one single quote character
+ if (token === "''") {
+ token = "'"
+ } else if (firstCharacter === "'") {
+ token = cleanEscapedString(token)
+ }
+
+ // Cut token from string, or, if string doesn't match the token, return Invalid Date
+ if (dateString.indexOf(token) === 0) {
+ dateString = dateString.slice(token.length)
+ } else {
+ return new Date(NaN)
+ }
+ }
+ }
+
+ // Check if the remaining input contains something other than whitespace
+ if (dateString.length > 0 && notWhitespaceRegExp.test(dateString)) {
+ return new Date(NaN)
+ }
+
+ var uniquePrioritySetters = setters
+ .map(function(setter) {
+ return setter.priority
+ })
+ .sort(function(a, b) {
+ return b - a
+ })
+ .filter(function(priority, index, array) {
+ return array.indexOf(priority) === index
+ })
+ .map(function(priority) {
+ return setters
+ .filter(function(setter) {
+ return setter.priority === priority
+ })
+ .sort(function(a, b) {
+ return b.subPriority - a.subPriority
+ })
+ })
+ .map(function(setterArray) {
+ return setterArray[0]
+ })
+
+ var date = toDate(dirtyReferenceDate)
+
+ if (isNaN(date)) {
+ return new Date(NaN)
+ }
+
+ // Convert the date in system timezone to the same date in UTC+00:00 timezone.
+ // This ensures that when UTC functions will be implemented, locales will be compatible with them.
+ // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/37
+ var utcDate = subMilliseconds(date, getTimezoneOffsetInMilliseconds(date))
+
+ var flags = {}
+ for (i = 0; i < uniquePrioritySetters.length; i++) {
+ var setter = uniquePrioritySetters[i]
+
+ if (
+ setter.validate &&
+ !setter.validate(utcDate, setter.value, subFnOptions)
+ ) {
+ return new Date(NaN)
+ }
+
+ var result = setter.set(utcDate, flags, setter.value, subFnOptions)
+ // Result is tuple (date, flags)
+ if (result[0]) {
+ utcDate = result[0]
+ assign(flags, result[1])
+ // Result is date
+ } else {
+ utcDate = result
+ }
+ }
+
+ return utcDate
+}
+
+function dateToSystemTimezone(date, flags) {
+ if (flags.timestampIsSet) {
+ return date
+ }
+
+ var convertedDate = new Date(0)
+ convertedDate.setFullYear(
+ date.getUTCFullYear(),
+ date.getUTCMonth(),
+ date.getUTCDate()
+ )
+ convertedDate.setHours(
+ date.getUTCHours(),
+ date.getUTCMinutes(),
+ date.getUTCSeconds(),
+ date.getUTCMilliseconds()
+ )
+ return convertedDate
+}
+
+function cleanEscapedString(input) {
+ return input.match(escapedStringRegExp)[1].replace(doubleQuoteRegExp, "'")
+}
diff --git a/date-fns/src/parse/index.js.flow b/date-fns/src/parse/index.js.flow
new file mode 100644
index 0000000..f8e1cfe
--- /dev/null
+++ b/date-fns/src/parse/index.js.flow
@@ -0,0 +1,63 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (
+ dateString: string,
+ formatString: string,
+ referenceDate: Date | number,
+ options?: {
+ locale?: Locale,
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ useAdditionalWeekYearTokens?: boolean,
+ useAdditionalDayOfYearTokens?: boolean,
+ }
+) => Date
diff --git a/date-fns/src/parse/test.js b/date-fns/src/parse/test.js
new file mode 100644
index 0000000..cf0ad52
--- /dev/null
+++ b/date-fns/src/parse/test.js
@@ -0,0 +1,2665 @@
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import parse from '.'
+
+describe('parse', function () {
+ var referenceDate = new Date(1986, 3 /* Apr */, 4, 10, 32, 0, 900)
+
+ it('escapes characters between the single quote characters', function () {
+ var result = parse(
+ '2018 hello world July 2nd',
+ "yyyy 'hello world' MMMM do",
+ referenceDate
+ )
+ assert.deepEqual(result, new Date(2018, 6 /* Jul */, 2))
+ })
+
+ it('two single quote characters are transformed into a "real" single quote', function () {
+ var result = parse("'5 o'clock'", "''h 'o''clock'''", referenceDate)
+ assert.deepEqual(result, new Date(1986, 3 /* Apr */, 4, 5))
+ })
+
+ it('accepts new line charactor', function () {
+ var result = parse(
+ '2014-04-04\n05:00:00',
+ "yyyy-MM-dd'\n'HH:mm:ss",
+ referenceDate
+ )
+ assert.deepEqual(result, new Date(2014, 3 /* Apr */, 4, 5))
+ })
+
+ describe('era', function () {
+ it('abbreviated', function () {
+ var result = parse('10000 BC', 'yyyyy G', referenceDate)
+ assert.deepEqual(result, new Date(-9999, 0 /* Jan */, 1))
+ })
+
+ it('wide', function () {
+ var result = parse('2018 Anno Domini', 'yyyy GGGG', referenceDate)
+ assert.deepEqual(result, new Date(2018, 0 /* Jan */, 1))
+ })
+
+ it('narrow', function () {
+ var result = parse('44 B', 'y GGGGG', referenceDate)
+ assert.deepEqual(result, new Date(-43, 0 /* Jan */, 1))
+ })
+
+ it('with week-numbering year', function () {
+ var result = parse('44 B', 'Y GGGGG', referenceDate)
+ assert.deepEqual(result, new Date(-44, 11 /* Dec */, 30))
+ })
+
+ it('parses stand-alone BC', function () {
+ var result = parse('BC', 'G', referenceDate)
+ const expectedResult = new Date(0)
+ expectedResult.setFullYear(0, 0 /* Jan */, 1)
+ expectedResult.setHours(0, 0, 0, 0)
+ assert.deepEqual(result, expectedResult)
+ })
+
+ it('parses stand-alone AD', function () {
+ var result = parse('AD', 'G', referenceDate)
+ const expectedResult = new Date(0)
+ expectedResult.setFullYear(1, 0 /* Jan */, 1)
+ expectedResult.setHours(0, 0, 0, 0)
+ assert.deepEqual(result, expectedResult)
+ })
+
+ describe('validation', () => {
+ ;[
+ ['G', 'BC'],
+ ['R', '2019'],
+ ['u', '2019'],
+ ['t', '512969520'],
+ ['T', '512969520900'],
+ ].forEach(([token, example]) => {
+ it(`throws an error when G is used after ${token}`, () => {
+ const block = parse.bind(
+ null,
+ `${example} 420`,
+ `${token} G`,
+ referenceDate
+ )
+ assert.throws(block, RangeError)
+ assert.throws(
+ block,
+ new RegExp(
+ `The format string mustn't contain \`${token}\` and \`G\` at the same time`
+ )
+ )
+ })
+ })
+ })
+ })
+
+ describe('calendar year', function () {
+ it('numeric', function () {
+ var result = parse('2017', 'y', referenceDate)
+ assert.deepEqual(result, new Date(2017, 0 /* Jan */, 1))
+ })
+
+ it('ordinal', function () {
+ var result = parse('2017th', 'yo', referenceDate)
+ assert.deepEqual(result, new Date(2017, 0 /* Jan */, 1))
+ })
+
+ describe('two-digit numeric year', function () {
+ it('works as expected', function () {
+ var result = parse('02', 'yy', referenceDate)
+ assert.deepEqual(result, new Date(2002, 0 /* Jan */, 1))
+ })
+
+ it('gets the 100 year range from `referenceDate`', function () {
+ var result = parse('02', 'yy', new Date(1860, 6 /* Jul */, 2))
+ assert.deepEqual(result, new Date(1902, 0 /* Jan */, 1))
+ })
+ })
+
+ it('three-digit zero-padding', function () {
+ var result = parse('123', 'yyy', referenceDate)
+ assert.deepEqual(result, new Date(123, 0 /* Jan */, 1))
+ })
+
+ it('four-digit zero-padding', function () {
+ var result = parse('0044', 'yyyy', referenceDate)
+ var expectedResult = new Date(0)
+ expectedResult.setFullYear(44, 0 /* Jan */, 1)
+ expectedResult.setHours(0, 0, 0, 0)
+ assert.deepEqual(result, expectedResult)
+ })
+
+ it('specified amount of digits', function () {
+ var result = parse('000001', 'yyyyyy', referenceDate)
+ var expectedResult = new Date(0)
+ expectedResult.setFullYear(1, 0 /* Jan */, 1)
+ expectedResult.setHours(0, 0, 0, 0)
+ assert.deepEqual(result, expectedResult)
+ })
+
+ describe('validation', () => {
+ ;[
+ ['y', '2019'],
+ ['Y', '2019'],
+ ['R', '2019'],
+ ['u', '2019'],
+ ['w', '1'],
+ ['I', '1'],
+ ['i', '1'],
+ ['e', '1'],
+ ['c', '1'],
+ ['t', '512969520'],
+ ['T', '512969520900'],
+ ].forEach(([token, example]) => {
+ it(`throws an error when y is used after ${token}`, () => {
+ const block = parse.bind(
+ null,
+ `${example} 2019`,
+ `${token} y`,
+ referenceDate
+ )
+ assert.throws(block, RangeError)
+ assert.throws(
+ block,
+ new RegExp(
+ `The format string mustn't contain \`${token}\` and \`y\` at the same time`
+ )
+ )
+ })
+ })
+ })
+ })
+
+ describe('local week-numbering year', function () {
+ it('numeric', function () {
+ var result = parse('2002', 'Y', referenceDate)
+ assert.deepEqual(result, new Date(2001, 11 /* Dec */, 30))
+ })
+
+ it('ordinal', function () {
+ var result = parse('12345th', 'Yo', referenceDate)
+ assert.deepEqual(result, new Date(12344, 11 /* Dec */, 31))
+ })
+
+ describe('two-digit numeric year', function () {
+ it('works as expected', function () {
+ var result = parse('02', 'YY', referenceDate, {
+ useAdditionalWeekYearTokens: true,
+ })
+ assert.deepEqual(result, new Date(2001, 11 /* Dec */, 30))
+ })
+
+ it('gets the 100 year range from `referenceDate`', function () {
+ var result = parse('02', 'YY', new Date(1860, 6 /* Jul */, 2), {
+ useAdditionalWeekYearTokens: true,
+ })
+ assert.deepEqual(result, new Date(1901, 11 /* Dec */, 29))
+ })
+ })
+
+ it('three-digit zero-padding', function () {
+ var result = parse('123', 'YYY', referenceDate)
+ assert.deepEqual(result, new Date(122, 11 /* Dec */, 27))
+ })
+
+ it('four-digit zero-padding', function () {
+ var result = parse('2018', 'YYYY', referenceDate, {
+ useAdditionalWeekYearTokens: true,
+ })
+ assert.deepEqual(result, new Date(2017, 11 /* Dec */, 31))
+ })
+
+ it('specified amount of digits', function () {
+ var result = parse('000001', 'YYYYYY', referenceDate)
+ var expectedResult = new Date(0)
+ expectedResult.setFullYear(0, 11 /* Dec */, 31)
+ expectedResult.setHours(0, 0, 0, 0)
+ assert.deepEqual(result, expectedResult)
+ })
+
+ it('allows to specify `weekStartsOn` and `firstWeekContainsDate` in options', function () {
+ var result = parse('2018', 'Y', referenceDate, {
+ weekStartsOn: 1 /* Mon */,
+ firstWeekContainsDate: 4,
+ })
+ assert.deepEqual(result, new Date(2018, 0 /* Jan */, 1))
+ })
+
+ describe('validation', () => {
+ ;[
+ ['y', '2019'],
+ ['Y', '2019'],
+ ['R', '2019'],
+ ['u', '2019'],
+ ['Q', '1'],
+ ['q', '1'],
+ ['M', '1'],
+ ['L', '1'],
+ ['I', '1'],
+ ['d', '1'],
+ ['D', '1', { useAdditionalDayOfYearTokens: true }],
+ ['i', '1'],
+ ['t', '512969520'],
+ ['T', '512969520900'],
+ ].forEach(([token, example, options]) => {
+ it(`throws an error when Y is used after ${token}`, () => {
+ const block = parse.bind(
+ null,
+ `${example} 2019`,
+ `${token} Y`,
+ referenceDate,
+ options
+ )
+ assert.throws(block, RangeError)
+ assert.throws(
+ block,
+ new RegExp(
+ `The format string mustn't contain \`${token}\` and \`Y\` at the same time`
+ )
+ )
+ })
+ })
+ })
+ })
+
+ describe('ISO week-numbering year', function () {
+ it('numeric', function () {
+ var result = parse('-1234', 'R', referenceDate)
+ assert.deepEqual(result, new Date(-1234, 0 /* Jan */, 3))
+ })
+
+ it('two-digit zero-padding', function () {
+ var result = parse('-02', 'RR', referenceDate)
+ assert.deepEqual(result, new Date(-3, 11 /* Dec */, 29))
+ })
+
+ it('three-digit zero-padding', function () {
+ var result = parse('123', 'RRR', referenceDate)
+ assert.deepEqual(result, new Date(123, 0 /* Jan */, 4))
+ })
+
+ it('four-digit zero-padding', function () {
+ var result = parse('2018', 'RRRR', referenceDate)
+ assert.deepEqual(result, new Date(2018, 0 /* Jan */, 1))
+ })
+
+ it('specified amount of digits', function () {
+ var result = parse('000001', 'RRRRRR', referenceDate)
+ var expectedResult = new Date(0)
+ expectedResult.setFullYear(1, 0 /* Jan */, 1)
+ expectedResult.setHours(0, 0, 0, 0)
+ assert.deepEqual(result, expectedResult)
+ })
+
+ describe('validation', () => {
+ ;[
+ ['G', 'AD'],
+ ['y', '2019'],
+ ['Y', '2019'],
+ ['R', '2019'],
+ ['u', '2019'],
+ ['Q', '1'],
+ ['q', '1'],
+ ['M', '1'],
+ ['L', '1'],
+ ['w', '1'],
+ ['d', '1'],
+ ['D', '1', { useAdditionalDayOfYearTokens: true }],
+ ['e', '1'],
+ ['c', '1'],
+ ['t', '512969520'],
+ ['T', '512969520900'],
+ ].forEach(([token, example, options]) => {
+ it(`throws an error when R is used after ${token}`, () => {
+ const block = parse.bind(
+ null,
+ `${example} 2019`,
+ `${token} R`,
+ referenceDate,
+ options
+ )
+ assert.throws(block, RangeError)
+ assert.throws(
+ block,
+ new RegExp(
+ `The format string mustn't contain \`${token}\` and \`R\` at the same time`
+ )
+ )
+ })
+ })
+ })
+ })
+
+ describe('extended year', function () {
+ it('numeric', function () {
+ var result = parse('-1234', 'u', referenceDate)
+ assert.deepEqual(result, new Date(-1234, 0 /* Jan */, 1))
+ })
+
+ it('two-digit zero-padding', function () {
+ var result = parse('-02', 'uu', referenceDate)
+ assert.deepEqual(result, new Date(-2, 0 /* Jan */, 1))
+ })
+
+ it('three-digit zero-padding', function () {
+ var result = parse('123', 'uuu', referenceDate)
+ assert.deepEqual(result, new Date(123, 0 /* Jan */, 1))
+ })
+
+ it('four-digit zero-padding', function () {
+ var result = parse('2018', 'uuuu', referenceDate)
+ assert.deepEqual(result, new Date(2018, 0 /* Jan */, 1))
+ })
+
+ it('specified amount of digits', function () {
+ var result = parse('000001', 'uuuuuu', referenceDate)
+ var expectedResult = new Date(0)
+ expectedResult.setFullYear(1, 0 /* Jan */, 1)
+ expectedResult.setHours(0, 0, 0, 0)
+ assert.deepEqual(result, expectedResult)
+ })
+
+ describe('validation', () => {
+ ;[
+ ['G', 'AD'],
+ ['y', '2019'],
+ ['Y', '2019'],
+ ['R', '2019'],
+ ['u', '2019'],
+ ['w', '1'],
+ ['I', '1'],
+ ['i', '1'],
+ ['e', '1'],
+ ['c', '1'],
+ ['t', '512969520'],
+ ['T', '512969520900'],
+ ].forEach(([token, example]) => {
+ it(`throws an error when u is used after ${token}`, () => {
+ const block = parse.bind(
+ null,
+ `${example} 2019`,
+ `${token} u`,
+ referenceDate
+ )
+ assert.throws(block, RangeError)
+ assert.throws(
+ block,
+ new RegExp(
+ `The format string mustn't contain \`${token}\` and \`u\` at the same time`
+ )
+ )
+ })
+ })
+ })
+ })
+
+ describe('quarter with following year', function () {
+ it('first quarter', function () {
+ var result = parse('Q1/2020', 'QQQ/yyyy', referenceDate)
+ assert.deepEqual(result, new Date(2020, 0 /* Jan */, 1))
+ })
+
+ it('second quarter', function () {
+ var result = parse('Q2/2020', 'QQQ/yyyy', referenceDate)
+ assert.deepEqual(result, new Date(2020, 3 /* Apr */, 1))
+ })
+
+ it('third quarter', function () {
+ var result = parse('Q3/2020', 'QQQ/yyyy', referenceDate)
+ assert.deepEqual(result, new Date(2020, 6 /* Jul */, 1))
+ })
+
+ it('fourth quarter', function () {
+ var result = parse('Q4/2020', 'QQQ/yyyy', referenceDate)
+ assert.deepEqual(result, new Date(2020, 9 /* Oct */, 1))
+ })
+ })
+
+ describe('quarter (formatting)', function () {
+ it('numeric', function () {
+ var result = parse('1', 'Q', referenceDate)
+ assert.deepEqual(result, new Date(1986, 0 /* Jan */, 1))
+ })
+
+ it('ordinal', function () {
+ var result = parse('1st', 'Qo', referenceDate)
+ assert.deepEqual(result, new Date(1986, 0 /* Jan */, 1))
+ })
+
+ it('zero-padding', function () {
+ var result = parse('02', 'QQ', referenceDate)
+ assert.deepEqual(result, new Date(1986, 3 /* Apr */, 1))
+ })
+
+ it('abbreviated', function () {
+ var result = parse('Q3', 'QQQ', referenceDate)
+ assert.deepEqual(result, new Date(1986, 6 /* Jul */, 1))
+ })
+
+ it('wide', function () {
+ var result = parse('4st quarter', 'QQQQ', referenceDate)
+ assert.deepEqual(result, new Date(1986, 9 /* Oct */, 1))
+ })
+
+ it('narrow', function () {
+ var result = parse('1', 'QQQQQ', referenceDate)
+ assert.deepEqual(result, new Date(1986, 0 /* Jan */, 1))
+ })
+
+ describe('validation', () => {
+ ;[
+ ['Y', '2019'],
+ ['R', '2019'],
+ ['Q', '1'],
+ ['q', '1'],
+ ['M', '1'],
+ ['L', '1'],
+ ['w', '1'],
+ ['I', '1'],
+ ['d', '1'],
+ ['D', '1', { useAdditionalDayOfYearTokens: true }],
+ ['i', '1'],
+ ['e', '1'],
+ ['c', '1'],
+ ['t', '512969520'],
+ ['T', '512969520900'],
+ ].forEach(([token, example, options]) => {
+ it(`throws an error when Q is used after ${token}`, () => {
+ const block = parse.bind(
+ null,
+ `${example} 1`,
+ `${token} Q`,
+ referenceDate,
+ options
+ )
+ assert.throws(block, RangeError)
+ assert.throws(
+ block,
+ new RegExp(
+ `The format string mustn't contain \`${token}\` and \`Q\` at the same time`
+ )
+ )
+ })
+ })
+ })
+ })
+
+ describe('quarter (stand-alone)', function () {
+ it('numeric', function () {
+ var result = parse('1', 'q', referenceDate)
+ assert.deepEqual(result, new Date(1986, 0 /* Jan */, 1))
+ })
+
+ it('ordinal', function () {
+ var result = parse('1th', 'qo', referenceDate)
+ assert.deepEqual(result, new Date(1986, 0 /* Jan */, 1))
+ })
+
+ it('zero-padding', function () {
+ var result = parse('02', 'qq', referenceDate)
+ assert.deepEqual(result, new Date(1986, 3 /* Apr */, 1))
+ })
+
+ it('abbreviated', function () {
+ var result = parse('Q3', 'qqq', referenceDate)
+ assert.deepEqual(result, new Date(1986, 6 /* Jul */, 1))
+ })
+
+ it('wide', function () {
+ var result = parse('4th quarter', 'qqqq', referenceDate)
+ assert.deepEqual(result, new Date(1986, 9 /* Oct */, 1))
+ })
+
+ it('narrow', function () {
+ var result = parse('1', 'qqqqq', referenceDate)
+ assert.deepEqual(result, new Date(1986, 0 /* Jan */, 1))
+ })
+
+ describe('validation', () => {
+ ;[
+ ['Y', '2019'],
+ ['R', '2019'],
+ ['Q', '1'],
+ ['q', '1'],
+ ['M', '1'],
+ ['L', '1'],
+ ['w', '1'],
+ ['I', '1'],
+ ['d', '1'],
+ ['D', '1', { useAdditionalDayOfYearTokens: true }],
+ ['i', '1'],
+ ['e', '1'],
+ ['c', '1'],
+ ['t', '512969520'],
+ ['T', '512969520900'],
+ ].forEach(([token, example, options]) => {
+ it(`throws an error when q is used after ${token}`, () => {
+ const block = parse.bind(
+ null,
+ `${example} 1`,
+ `${token} q`,
+ referenceDate,
+ options
+ )
+ assert.throws(block, RangeError)
+ assert.throws(
+ block,
+ new RegExp(
+ `The format string mustn't contain \`${token}\` and \`q\` at the same time`
+ )
+ )
+ })
+ })
+ })
+ })
+
+ describe('month (formatting)', function () {
+ it('numeric', function () {
+ var result = parse('6', 'M', referenceDate)
+ assert.deepEqual(result, new Date(1986, 5 /* Jun */, 1))
+ })
+
+ it('ordinal', function () {
+ var result = parse('6th', 'Mo', referenceDate)
+ assert.deepEqual(result, new Date(1986, 5 /* Jun */, 1))
+ })
+
+ it('zero-padding', function () {
+ var result = parse('01', 'MM', referenceDate)
+ assert.deepEqual(result, new Date(1986, 0 /* Jan */, 1))
+ })
+
+ it('abbreviated', function () {
+ var result = parse('Nov', 'MMM', referenceDate)
+ assert.deepEqual(result, new Date(1986, 10 /* Nov */, 1))
+ })
+
+ it('wide', function () {
+ var result = parse('February', 'MMMM', referenceDate)
+ assert.deepEqual(result, new Date(1986, 1 /* Feb */, 1))
+ })
+
+ it('narrow', function () {
+ var result = parse('J', 'MMMMM', referenceDate)
+ assert.deepEqual(result, new Date(1986, 0 /* Jan */, 1))
+ })
+
+ describe('validation', () => {
+ ;[
+ ['Y', '2019'],
+ ['R', '2019'],
+ ['Q', '1'],
+ ['q', '1'],
+ ['M', '1'],
+ ['L', '1'],
+ ['w', '1'],
+ ['I', '1'],
+ ['D', '1', { useAdditionalDayOfYearTokens: true }],
+ ['i', '1'],
+ ['e', '1'],
+ ['c', '1'],
+ ['t', '512969520'],
+ ['T', '512969520900'],
+ ].forEach(([token, example, options]) => {
+ it(`throws an error when M is used after ${token}`, () => {
+ const block = parse.bind(
+ null,
+ `${example} 1`,
+ `${token} M`,
+ referenceDate,
+ options
+ )
+ assert.throws(block, RangeError)
+ assert.throws(
+ block,
+ new RegExp(
+ `The format string mustn't contain \`${token}\` and \`M\` at the same time`
+ )
+ )
+ })
+ })
+ })
+ })
+
+ describe('month (stand-alone)', function () {
+ it('numeric', function () {
+ var result = parse('6', 'L', referenceDate)
+ assert.deepEqual(result, new Date(1986, 5 /* Jun */, 1))
+ })
+
+ it('ordinal', function () {
+ var result = parse('6th', 'Lo', referenceDate)
+ assert.deepEqual(result, new Date(1986, 5 /* Jun */, 1))
+ })
+
+ it('zero-padding', function () {
+ var result = parse('01', 'LL', referenceDate)
+ assert.deepEqual(result, new Date(1986, 0 /* Jan */, 1))
+ })
+
+ it('abbreviated', function () {
+ var result = parse('Nov', 'LLL', referenceDate)
+ assert.deepEqual(result, new Date(1986, 10 /* Nov */, 1))
+ })
+
+ it('wide', function () {
+ var result = parse('February', 'LLLL', referenceDate)
+ assert.deepEqual(result, new Date(1986, 1 /* Feb */, 1))
+ })
+
+ it('narrow', function () {
+ var result = parse('J', 'LLLLL', referenceDate)
+ assert.deepEqual(result, new Date(1986, 0 /* Jan */, 1))
+ })
+
+ describe('validation', () => {
+ ;[
+ ['Y', '2019'],
+ ['R', '2019'],
+ ['Q', '1'],
+ ['q', '1'],
+ ['M', '1'],
+ ['L', '1'],
+ ['w', '1'],
+ ['I', '1'],
+ ['D', '1', { useAdditionalDayOfYearTokens: true }],
+ ['i', '1'],
+ ['e', '1'],
+ ['c', '1'],
+ ['t', '512969520'],
+ ['T', '512969520900'],
+ ].forEach(([token, example, options]) => {
+ it(`throws an error when L is used after ${token}`, () => {
+ const block = parse.bind(
+ null,
+ `${example} 1`,
+ `${token} L`,
+ referenceDate,
+ options
+ )
+ assert.throws(block, RangeError)
+ assert.throws(
+ block,
+ new RegExp(
+ `The format string mustn't contain \`${token}\` and \`L\` at the same time`
+ )
+ )
+ })
+ })
+ })
+ })
+
+ describe('local week of year', function () {
+ it('numeric', function () {
+ var result = parse('49', 'w', referenceDate)
+ assert.deepEqual(result, new Date(1986, 10 /* Nov */, 30))
+ })
+
+ it('ordinal', function () {
+ var result = parse('49th', 'wo', referenceDate)
+ assert.deepEqual(result, new Date(1986, 10 /* Nov */, 30))
+ })
+
+ it('zero-padding', function () {
+ var result = parse('01', 'ww', referenceDate)
+ assert.deepEqual(result, new Date(1985, 11 /* Dec */, 29))
+ })
+
+ it('allows to specify `weekStartsOn` and `firstWeekContainsDate` in options', function () {
+ var result = parse('49', 'w', referenceDate, {
+ weekStartsOn: 1 /* Mon */,
+ firstWeekContainsDate: 4,
+ })
+ assert.deepEqual(result, new Date(1986, 11 /* Dec */, 1))
+ })
+
+ describe('validation', () => {
+ ;[
+ ['y', '2019'],
+ ['R', '2019'],
+ ['u', '2019'],
+ ['Q', '1'],
+ ['q', '1'],
+ ['M', '1'],
+ ['L', '1'],
+ ['w', '1'],
+ ['I', '1'],
+ ['d', '1'],
+ ['D', '1', { useAdditionalDayOfYearTokens: true }],
+ ['i', '1'],
+ ['t', '512969520'],
+ ['T', '512969520900'],
+ ].forEach(([token, example, options]) => {
+ it(`throws an error when w is used after ${token}`, () => {
+ const block = parse.bind(
+ null,
+ `${example} 1`,
+ `${token} w`,
+ referenceDate,
+ options
+ )
+ assert.throws(block, RangeError)
+ assert.throws(
+ block,
+ new RegExp(
+ `The format string mustn't contain \`${token}\` and \`w\` at the same time`
+ )
+ )
+ })
+ })
+ })
+ })
+
+ describe('ISO week of year', function () {
+ it('numeric', function () {
+ var result = parse('49', 'I', referenceDate)
+ assert.deepEqual(result, new Date(1986, 11 /* Dec */, 1))
+ })
+
+ it('ordinal', function () {
+ var result = parse('49th', 'Io', referenceDate)
+ assert.deepEqual(result, new Date(1986, 11 /* Dec */, 1))
+ })
+
+ it('zero-padding', function () {
+ var result = parse('01', 'II', referenceDate)
+ assert.deepEqual(result, new Date(1985, 11 /* Dec */, 30))
+ })
+
+ describe('validation', () => {
+ ;[
+ ['y', '2019'],
+ ['Y', '2019'],
+ ['u', '2019'],
+ ['Q', '1'],
+ ['q', '1'],
+ ['M', '1'],
+ ['L', '1'],
+ ['w', '1'],
+ ['I', '1'],
+ ['d', '1'],
+ ['D', '1', { useAdditionalDayOfYearTokens: true }],
+ ['e', '1'],
+ ['c', '1'],
+ ['t', '512969520'],
+ ['T', '512969520900'],
+ ].forEach(([token, example, options]) => {
+ it(`throws an error when I is used after ${token}`, () => {
+ const block = parse.bind(
+ null,
+ `${example} 1`,
+ `${token} I`,
+ referenceDate,
+ options
+ )
+ assert.throws(block, RangeError)
+ assert.throws(
+ block,
+ new RegExp(
+ `The format string mustn't contain \`${token}\` and \`I\` at the same time`
+ )
+ )
+ })
+ })
+ })
+ })
+
+ describe('day of month', function () {
+ it('numeric', function () {
+ var result = parse('28', 'd', referenceDate)
+ assert.deepEqual(result, new Date(1986, 3 /* Apr */, 28))
+ })
+
+ it('ordinal', function () {
+ var result = parse('28th', 'do', referenceDate)
+ assert.deepEqual(result, new Date(1986, 3 /* Apr */, 28))
+ })
+
+ it('zero-padding', function () {
+ var result = parse('01', 'dd', referenceDate)
+ assert.deepEqual(result, new Date(1986, 3 /* Apr */, 1))
+ })
+
+ describe('validation', () => {
+ ;[
+ ['Y', '2019'],
+ ['R', '2019'],
+ ['Q', '1'],
+ ['q', '1'],
+ ['w', '1'],
+ ['I', '1'],
+ ['d', '1'],
+ ['D', '1', { useAdditionalDayOfYearTokens: true }],
+ ['i', '1'],
+ ['e', '1'],
+ ['c', '1'],
+ ['t', '512969520'],
+ ['T', '512969520900'],
+ ].forEach(([token, example, options]) => {
+ it(`throws an error when d is used after ${token}`, () => {
+ const block = parse.bind(
+ null,
+ `${example} 1`,
+ `${token} d`,
+ referenceDate,
+ options
+ )
+ assert.throws(block, RangeError)
+ assert.throws(
+ block,
+ new RegExp(
+ `The format string mustn't contain \`${token}\` and \`d\` at the same time`
+ )
+ )
+ })
+ })
+ })
+ })
+
+ describe('day of year', function () {
+ it('numeric', function () {
+ var result = parse('200', 'D', referenceDate, {
+ useAdditionalDayOfYearTokens: true,
+ })
+ assert.deepEqual(result, new Date(1986, 6 /* Jul */, 19))
+ })
+
+ it('ordinal', function () {
+ var result = parse('200th', 'Do', referenceDate)
+ assert.deepEqual(result, new Date(1986, 6 /* Jul */, 19))
+ })
+
+ it('two-digit zero-padding', function () {
+ var result = parse('01', 'DD', referenceDate, {
+ useAdditionalDayOfYearTokens: true,
+ })
+ assert.deepEqual(result, new Date(1986, 0 /* Jan */, 1))
+ })
+
+ it('three-digit zero-padding', function () {
+ var result = parse('001', 'DDD', referenceDate)
+ assert.deepEqual(result, new Date(1986, 0 /* Jan */, 1))
+ })
+
+ it('specified amount of digits', function () {
+ var result = parse('000200', 'DDDDDD', referenceDate)
+ assert.deepEqual(result, new Date(1986, 6 /* Jul */, 19))
+ })
+
+ describe('validation', () => {
+ ;[
+ ['Y', '2019'],
+ ['R', '2019'],
+ ['Q', '1'],
+ ['q', '1'],
+ ['M', '1'],
+ ['L', '1'],
+ ['w', '1'],
+ ['I', '1'],
+ ['d', '1'],
+ ['D', '1'],
+ ['E', 'Mon'],
+ ['i', '1'],
+ ['e', '1'],
+ ['c', '1'],
+ ['t', '512969520'],
+ ['T', '512969520900'],
+ ].forEach(([token, example, _options]) => {
+ it(`throws an error when D is used after ${token}`, () => {
+ const block = parse.bind(
+ null,
+ `${example} 1`,
+ `${token} D`,
+ referenceDate,
+ { useAdditionalDayOfYearTokens: true }
+ )
+ assert.throws(block, RangeError)
+ assert.throws(
+ block,
+ new RegExp(
+ `The format string mustn't contain \`${token}\` and \`D\` at the same time`
+ )
+ )
+ })
+ })
+ })
+ })
+
+ describe('day of week (formatting)', function () {
+ it('abbreviated', function () {
+ var result = parse('Mon', 'E', referenceDate)
+ assert.deepEqual(result, new Date(1986, 2 /* Mar */, 31))
+ })
+
+ it('wide', function () {
+ var result = parse('Tuesday', 'EEEE', referenceDate)
+ assert.deepEqual(result, new Date(1986, 3 /* Apr */, 1))
+ })
+
+ it('narrow', function () {
+ var result = parse('W', 'EEEEE', referenceDate)
+ assert.deepEqual(result, new Date(1986, 3 /* Apr */, 2))
+ })
+
+ it('short', function () {
+ var result = parse('Th', 'EEEEEE', referenceDate)
+ assert.deepEqual(result, new Date(1986, 3 /* Apr */, 3))
+ })
+
+ it('allows to specify which day is the first day of the week', function () {
+ var result = parse('Thursday', 'EEEE', referenceDate, {
+ weekStartsOn: /* Fri */ 5,
+ })
+ assert.deepEqual(result, new Date(1986, 3 /* Apr */, 10))
+ })
+
+ describe('validation', () => {
+ ;[
+ ['D', '1', { useAdditionalDayOfYearTokens: true }],
+ ['E', 'Mon'],
+ ['i', '1'],
+ ['e', '1'],
+ ['c', '1'],
+ ['t', '512969520'],
+ ['T', '512969520900'],
+ ].forEach(([token, example, options]) => {
+ it(`throws an error when E is used after ${token}`, () => {
+ const block = parse.bind(
+ null,
+ `${example} Mon`,
+ `${token} E`,
+ referenceDate,
+ options
+ )
+ assert.throws(block, RangeError)
+ assert.throws(
+ block,
+ new RegExp(
+ `The format string mustn't contain \`${token}\` and \`E\` at the same time`
+ )
+ )
+ })
+ })
+ })
+ })
+
+ describe('ISO day of week (formatting)', function () {
+ it('numeric', function () {
+ var result = parse('1', 'i', referenceDate)
+ assert.deepEqual(result, new Date(1986, 2 /* Mar */, 31))
+ })
+
+ it('ordinal', function () {
+ var result = parse('1st', 'io', referenceDate)
+ assert.deepEqual(result, new Date(1986, 2 /* Mar */, 31))
+ })
+
+ it('zero-padding', function () {
+ var result = parse('02', 'ii', referenceDate)
+ assert.deepEqual(result, new Date(1986, 3 /* Apr */, 1))
+ })
+
+ it('abbreviated', function () {
+ var result = parse('Wed', 'iii', referenceDate)
+ assert.deepEqual(result, new Date(1986, 3 /* Apr */, 2))
+ })
+
+ it('wide', function () {
+ var result = parse('Thursday', 'iiii', referenceDate)
+ assert.deepEqual(result, new Date(1986, 3 /* Apr */, 3))
+ })
+
+ it('narrow', function () {
+ var result = parse('S', 'iiiii', referenceDate)
+ assert.deepEqual(result, new Date(1986, 3 /* Apr */, 6))
+ })
+
+ it('short', function () {
+ var result = parse('Fr', 'iiiiii', referenceDate)
+ assert.deepEqual(result, new Date(1986, 3 /* Apr */, 4))
+ })
+
+ describe('validation', () => {
+ ;[
+ ['y', '2019'],
+ ['Y', '2019'],
+ ['u', '2019'],
+ ['Q', '1'],
+ ['q', '1'],
+ ['M', '1'],
+ ['L', '1'],
+ ['w', '1'],
+ ['d', '1'],
+ ['D', '1', { useAdditionalDayOfYearTokens: true }],
+ ['E', 'Mon'],
+ ['i', '1'],
+ ['e', '1'],
+ ['c', '1'],
+ ['t', '512969520'],
+ ['T', '512969520900'],
+ ].forEach(([token, example, options]) => {
+ it(`throws an error when i is used after ${token}`, () => {
+ const block = parse.bind(
+ null,
+ `${example} 1`,
+ `${token} i`,
+ referenceDate,
+ options
+ )
+ assert.throws(block, RangeError)
+ assert.throws(
+ block,
+ new RegExp(
+ `The format string mustn't contain \`${token}\` and \`i\` at the same time`
+ )
+ )
+ })
+ })
+ })
+ })
+
+ describe('local day of week (formatting)', function () {
+ it('numeric', function () {
+ var result = parse('2', 'e', referenceDate)
+ assert.deepEqual(result, new Date(1986, 2 /* Mar */, 31))
+ })
+
+ it('ordinal', function () {
+ var result = parse('2nd', 'eo', referenceDate)
+ assert.deepEqual(result, new Date(1986, 2 /* Mar */, 31))
+ })
+
+ it('zero-padding', function () {
+ var result = parse('03', 'ee', referenceDate)
+ assert.deepEqual(result, new Date(1986, 3 /* Apr */, 1))
+ })
+
+ it('abbreviated', function () {
+ var result = parse('Wed', 'eee', referenceDate)
+ assert.deepEqual(result, new Date(1986, 3 /* Apr */, 2))
+ })
+
+ it('wide', function () {
+ var result = parse('Thursday', 'eeee', referenceDate)
+ assert.deepEqual(result, new Date(1986, 3 /* Apr */, 3))
+ })
+
+ it('narrow', function () {
+ var result = parse('S', 'eeeee', referenceDate)
+ assert.deepEqual(result, new Date(1986, 2 /* Mar */, 30))
+ })
+
+ it('short', function () {
+ var result = parse('Fr', 'eeeeee', referenceDate)
+ assert.deepEqual(result, new Date(1986, 3 /* Apr */, 4))
+ })
+
+ it('allows to specify which day is the first day of the week', function () {
+ var result = parse('7th', 'eo', referenceDate, {
+ weekStartsOn: /* Fri */ 5,
+ })
+ assert.deepEqual(result, new Date(1986, 3 /* Apr */, 10))
+ })
+
+ describe('validation', () => {
+ ;[
+ ['y', '2019'],
+ ['R', '2019'],
+ ['u', '2019'],
+ ['Q', '1'],
+ ['q', '1'],
+ ['M', '1'],
+ ['L', '1'],
+ ['I', '1'],
+ ['d', '1'],
+ ['D', '1', { useAdditionalDayOfYearTokens: true }],
+ ['E', 'Mon'],
+ ['i', '1'],
+ ['e', '1'],
+ ['c', '1'],
+ ['t', '512969520'],
+ ['T', '512969520900'],
+ ].forEach(([token, example, options]) => {
+ it(`throws an error when e is used after ${token}`, () => {
+ const block = parse.bind(
+ null,
+ `${example} 1`,
+ `${token} e`,
+ referenceDate,
+ options
+ )
+ assert.throws(block, RangeError)
+ assert.throws(
+ block,
+ new RegExp(
+ `The format string mustn't contain \`${token}\` and \`e\` at the same time`
+ )
+ )
+ })
+ })
+ })
+ })
+
+ describe('local day of week (stand-alone)', function () {
+ it('numeric', function () {
+ var result = parse('2', 'c', referenceDate)
+ assert.deepEqual(result, new Date(1986, 2 /* Mar */, 31))
+ })
+
+ it('ordinal', function () {
+ var result = parse('2nd', 'co', referenceDate)
+ assert.deepEqual(result, new Date(1986, 2 /* Mar */, 31))
+ })
+
+ it('zero-padding', function () {
+ var result = parse('03', 'cc', referenceDate)
+ assert.deepEqual(result, new Date(1986, 3 /* Apr */, 1))
+ })
+
+ it('abbreviated', function () {
+ var result = parse('Wed', 'ccc', referenceDate)
+ assert.deepEqual(result, new Date(1986, 3 /* Apr */, 2))
+ })
+
+ it('wide', function () {
+ var result = parse('Thursday', 'cccc', referenceDate)
+ assert.deepEqual(result, new Date(1986, 3 /* Apr */, 3))
+ })
+
+ it('narrow', function () {
+ var result = parse('S', 'ccccc', referenceDate)
+ assert.deepEqual(result, new Date(1986, 2 /* Mar */, 30))
+ })
+
+ it('short', function () {
+ var result = parse('Fr', 'cccccc', referenceDate)
+ assert.deepEqual(result, new Date(1986, 3 /* Apr */, 4))
+ })
+
+ it('allows to specify which day is the first day of the week', function () {
+ var result = parse('7th', 'co', referenceDate, {
+ weekStartsOn: /* Fri */ 5,
+ })
+ assert.deepEqual(result, new Date(1986, 3 /* Apr */, 10))
+ })
+
+ describe('validation', () => {
+ ;[
+ ['y', '2019'],
+ ['R', '2019'],
+ ['u', '2019'],
+ ['Q', '1'],
+ ['q', '1'],
+ ['M', '1'],
+ ['L', '1'],
+ ['I', '1'],
+ ['d', '1'],
+ ['D', '1', { useAdditionalDayOfYearTokens: true }],
+ ['E', 'Mon'],
+ ['i', '1'],
+ ['e', '1'],
+ ['c', '1'],
+ ['t', '512969520'],
+ ['T', '512969520900'],
+ ].forEach(([token, example, options]) => {
+ it(`throws an error when c is used after ${token}`, () => {
+ const block = parse.bind(
+ null,
+ `${example} 1`,
+ `${token} c`,
+ referenceDate,
+ options
+ )
+ assert.throws(block, RangeError)
+ assert.throws(
+ block,
+ new RegExp(
+ `The format string mustn't contain \`${token}\` and \`c\` at the same time`
+ )
+ )
+ })
+ })
+ })
+ })
+
+ describe('AM, PM', function () {
+ it('abbreviated', function () {
+ var result = parse('5 AM', 'h a', referenceDate)
+ assert.deepEqual(result, new Date(1986, 3 /* Apr */, 4, 5))
+ })
+
+ it('12 AM', function () {
+ var result = parse('12 AM', 'h aa', referenceDate)
+ assert.deepEqual(result, new Date(1986, 3 /* Apr */, 4, 0))
+ })
+
+ it('12 PM', function () {
+ var result = parse('12 PM', 'h aaa', referenceDate)
+ assert.deepEqual(result, new Date(1986, 3 /* Apr */, 4, 12))
+ })
+
+ it('wide', function () {
+ var result = parse('5 p.m.', 'h aaaa', referenceDate)
+ assert.deepEqual(result, new Date(1986, 3 /* Apr */, 4, 17))
+ })
+
+ it('narrow', function () {
+ var result = parse('11 a', 'h aaaaa', referenceDate)
+ assert.deepEqual(result, new Date(1986, 3 /* Apr */, 4, 11))
+ })
+
+ describe('validation', () => {
+ ;[
+ ['a', 'AM'],
+ ['b', 'AM'],
+ ['B', 'in the morning'],
+ ['H', '1'],
+ ['K', '1'],
+ ['k', '1'],
+ ['t', '512969520'],
+ ['T', '512969520900'],
+ ].forEach(([token, example]) => {
+ it(`throws an error when a is used after ${token}`, () => {
+ const block = parse.bind(
+ null,
+ `${example} AM`,
+ `${token} a`,
+ referenceDate
+ )
+ assert.throws(block, RangeError)
+ assert.throws(
+ block,
+ new RegExp(
+ `The format string mustn't contain \`${token}\` and \`a\` at the same time`
+ )
+ )
+ })
+ })
+ })
+ })
+
+ describe('AM, PM, noon, midnight', function () {
+ it('abbreviated', function () {
+ var result = parse('noon', 'b', referenceDate)
+ assert.deepEqual(result, new Date(1986, 3 /* Apr */, 4, 12))
+ })
+
+ it('wide', function () {
+ var result = parse('midnight', 'bbbb', referenceDate)
+ assert.deepEqual(result, new Date(1986, 3 /* Apr */, 4, 0))
+ })
+
+ it('narrow', function () {
+ var result = parse('mi', 'bbbbb', referenceDate)
+ assert.deepEqual(result, new Date(1986, 3 /* Apr */, 4, 0))
+ })
+
+ describe('validation', () => {
+ ;[
+ ['a', 'AM'],
+ ['b', 'AM'],
+ ['B', 'in the morning'],
+ ['H', '1'],
+ ['K', '1'],
+ ['k', '1'],
+ ['t', '512969520'],
+ ['T', '512969520900'],
+ ].forEach(([token, example]) => {
+ it(`throws an error when b is used after ${token}`, () => {
+ const block = parse.bind(
+ null,
+ `${example} AM`,
+ `${token} b`,
+ referenceDate
+ )
+ assert.throws(block, RangeError)
+ assert.throws(
+ block,
+ new RegExp(
+ `The format string mustn't contain \`${token}\` and \`b\` at the same time`
+ )
+ )
+ })
+ })
+ })
+ })
+
+ describe('flexible day period', function () {
+ it('abbreviated', function () {
+ var result = parse('2 at night', 'h B', referenceDate)
+ assert.deepEqual(result, new Date(1986, 3 /* Apr */, 4, 2))
+ })
+
+ it('wide', function () {
+ var result = parse('12 in the afternoon', 'h BBBB', referenceDate)
+ assert.deepEqual(result, new Date(1986, 3 /* Apr */, 4, 12))
+ })
+
+ it('narrow', function () {
+ var result = parse('5 in the evening', 'h BBBBB', referenceDate)
+ assert.deepEqual(result, new Date(1986, 3 /* Apr */, 4, 17))
+ })
+
+ describe('validation', () => {
+ ;[
+ ['a', 'AM'],
+ ['b', 'AM'],
+ ['B', 'in the morning'],
+ ['t', '512969520'],
+ ['T', '512969520900'],
+ ].forEach(([token, example]) => {
+ it(`throws an error when B is used after ${token}`, () => {
+ const block = parse.bind(
+ null,
+ `${example} in the morning`,
+ `${token} B`,
+ referenceDate
+ )
+ assert.throws(block, RangeError)
+ assert.throws(
+ block,
+ new RegExp(
+ `The format string mustn't contain \`${token}\` and \`B\` at the same time`
+ )
+ )
+ })
+ })
+ })
+ })
+
+ describe('hour [1-12]', function () {
+ it('numeric', function () {
+ var result = parse('1', 'h', referenceDate)
+ assert.deepEqual(result, new Date(1986, 3 /* Apr */, 4, 1))
+ })
+
+ it('ordinal', function () {
+ var result = parse('1st', 'ho', referenceDate)
+ assert.deepEqual(result, new Date(1986, 3 /* Apr */, 4, 1))
+ })
+
+ it('zero-padding', function () {
+ var result = parse('01', 'hh', referenceDate)
+ assert.deepEqual(result, new Date(1986, 3 /* Apr */, 4, 1))
+ })
+
+ describe('validation', () => {
+ ;[
+ ['h', '1'],
+ ['H', '1'],
+ ['K', '1'],
+ ['k', '1'],
+ ['t', '512969520'],
+ ['T', '512969520900'],
+ ].forEach(([token, example]) => {
+ it(`throws an error when h is used after ${token}`, () => {
+ const block = parse.bind(
+ null,
+ `${example} 1`,
+ `${token} h`,
+ referenceDate
+ )
+ assert.throws(block, RangeError)
+ assert.throws(
+ block,
+ new RegExp(
+ `The format string mustn't contain \`${token}\` and \`h\` at the same time`
+ )
+ )
+ })
+ })
+ })
+ })
+
+ describe('hour [0-23]', function () {
+ it('numeric', function () {
+ var result = parse('12', 'H', referenceDate)
+ assert.deepEqual(result, new Date(1986, 3 /* Apr */, 4, 12))
+ })
+
+ it('ordinal', function () {
+ var result = parse('12th', 'Ho', referenceDate)
+ assert.deepEqual(result, new Date(1986, 3 /* Apr */, 4, 12))
+ })
+
+ it('zero-padding', function () {
+ var result = parse('00', 'HH', referenceDate)
+ assert.deepEqual(result, new Date(1986, 3 /* Apr */, 4, 0))
+ })
+
+ describe('validation', () => {
+ ;[
+ ['a', 'AM'],
+ ['b', 'AM'],
+ ['h', '1'],
+ ['H', '1'],
+ ['K', '1'],
+ ['k', '1'],
+ ['t', '512969520'],
+ ['T', '512969520900'],
+ ].forEach(([token, example]) => {
+ it(`throws an error when H is used after ${token}`, () => {
+ const block = parse.bind(
+ null,
+ `${example} 1`,
+ `${token} H`,
+ referenceDate
+ )
+ assert.throws(block, RangeError)
+ assert.throws(
+ block,
+ new RegExp(
+ `The format string mustn't contain \`${token}\` and \`H\` at the same time`
+ )
+ )
+ })
+ })
+ })
+ })
+
+ describe('hour [0-11]', function () {
+ it('numeric', function () {
+ var result = parse('1', 'K', referenceDate)
+ assert.deepEqual(result, new Date(1986, 3 /* Apr */, 4, 1))
+ })
+
+ it('ordinal', function () {
+ var result = parse('1st', 'Ko', referenceDate)
+ assert.deepEqual(result, new Date(1986, 3 /* Apr */, 4, 1))
+ })
+
+ it('zero-padding', function () {
+ var result = parse('1', 'KK', referenceDate)
+ assert.deepEqual(result, new Date(1986, 3 /* Apr */, 4, 1))
+ })
+
+ describe('validation', () => {
+ ;[
+ ['a', 'AM'],
+ ['b', 'AM'],
+ ['h', '1'],
+ ['H', '1'],
+ ['K', '1'],
+ ['k', '1'],
+ ['t', '512969520'],
+ ['T', '512969520900'],
+ ].forEach(([token, example]) => {
+ it(`throws an error when K is used after ${token}`, () => {
+ const block = parse.bind(
+ null,
+ `${example} 1`,
+ `${token} K`,
+ referenceDate
+ )
+ assert.throws(block, RangeError)
+ assert.throws(
+ block,
+ new RegExp(
+ `The format string mustn't contain \`${token}\` and \`K\` at the same time`
+ )
+ )
+ })
+ })
+ })
+ })
+
+ describe('hour [1-24]', function () {
+ it('numeric', function () {
+ var result = parse('12', 'k', referenceDate)
+ assert.deepEqual(result, new Date(1986, 3 /* Apr */, 4, 12))
+ })
+
+ it('ordinal', function () {
+ var result = parse('12th', 'ko', referenceDate)
+ assert.deepEqual(result, new Date(1986, 3 /* Apr */, 4, 12))
+ })
+
+ it('zero-padding', function () {
+ var result = parse('24', 'kk', referenceDate)
+ assert.deepEqual(result, new Date(1986, 3 /* Apr */, 4, 0))
+ })
+
+ describe('validation', () => {
+ ;[
+ ['a', 'AM'],
+ ['b', 'AM'],
+ ['h', '1'],
+ ['H', '1'],
+ ['K', '1'],
+ ['k', '1'],
+ ['t', '512969520'],
+ ['T', '512969520900'],
+ ].forEach(([token, example]) => {
+ it(`throws an error when k is used after ${token}`, () => {
+ const block = parse.bind(
+ null,
+ `${example} 1`,
+ `${token} k`,
+ referenceDate
+ )
+ assert.throws(block, RangeError)
+ assert.throws(
+ block,
+ new RegExp(
+ `The format string mustn't contain \`${token}\` and \`k\` at the same time`
+ )
+ )
+ })
+ })
+ })
+ })
+
+ describe('minute', function () {
+ it('numeric', function () {
+ var result = parse('25', 'm', referenceDate)
+ assert.deepEqual(result, new Date(1986, 3 /* Apr */, 4, 10, 25))
+ })
+
+ it('ordinal', function () {
+ var result = parse('25th', 'mo', referenceDate)
+ assert.deepEqual(result, new Date(1986, 3 /* Apr */, 4, 10, 25))
+ })
+
+ it('zero-padding', function () {
+ var result = parse('05', 'mm', referenceDate)
+ assert.deepEqual(result, new Date(1986, 3 /* Apr */, 4, 10, 5))
+ })
+
+ describe('validation', () => {
+ ;[
+ ['m', '1'],
+ ['t', '512969520'],
+ ['T', '512969520900'],
+ ].forEach(([token, example]) => {
+ it(`throws an error when m is used after ${token}`, () => {
+ const block = parse.bind(
+ null,
+ `${example} 1`,
+ `${token} m`,
+ referenceDate
+ )
+ assert.throws(block, RangeError)
+ assert.throws(
+ block,
+ new RegExp(
+ `The format string mustn't contain \`${token}\` and \`m\` at the same time`
+ )
+ )
+ })
+ })
+ })
+ })
+
+ describe('second', function () {
+ it('numeric', function () {
+ var result = parse('25', 's', referenceDate)
+ assert.deepEqual(result, new Date(1986, 3 /* Apr */, 4, 10, 32, 25))
+ })
+
+ it('ordinal', function () {
+ var result = parse('25th', 'so', referenceDate)
+ assert.deepEqual(result, new Date(1986, 3 /* Apr */, 4, 10, 32, 25))
+ })
+
+ it('zero-padding', function () {
+ var result = parse('05', 'ss', referenceDate)
+ assert.deepEqual(result, new Date(1986, 3 /* Apr */, 4, 10, 32, 5))
+ })
+
+ describe('validation', () => {
+ ;[
+ ['s', '1'],
+ ['t', '512969520'],
+ ['T', '512969520900'],
+ ].forEach(([token, example]) => {
+ it(`throws an error when s is used after ${token}`, () => {
+ const block = parse.bind(
+ null,
+ `${example} 1`,
+ `${token} s`,
+ referenceDate
+ )
+ assert.throws(block, RangeError)
+ assert.throws(
+ block,
+ new RegExp(
+ `The format string mustn't contain \`${token}\` and \`s\` at the same time`
+ )
+ )
+ })
+ })
+ })
+ })
+
+ describe('fraction of second', function () {
+ it('1/10 of second', function () {
+ var result = parse('1', 'S', referenceDate)
+ assert.deepEqual(result, new Date(1986, 3 /* Apr */, 4, 10, 32, 0, 100))
+ })
+
+ it('1/100 of second', function () {
+ var result = parse('12', 'SS', referenceDate)
+ assert.deepEqual(result, new Date(1986, 3 /* Apr */, 4, 10, 32, 0, 120))
+ })
+
+ it('millisecond', function () {
+ var result = parse('123', 'SSS', referenceDate)
+ assert.deepEqual(result, new Date(1986, 3 /* Apr */, 4, 10, 32, 0, 123))
+ })
+
+ it('specified amount of digits', function () {
+ var result = parse('567890', 'SSSSSS', referenceDate)
+ assert.deepEqual(result, new Date(1986, 3 /* Apr */, 4, 10, 32, 0, 567))
+ })
+
+ describe('validation', () => {
+ ;[
+ ['S', '1'],
+ ['t', '512969520'],
+ ['T', '512969520900'],
+ ].forEach(([token, example]) => {
+ it(`throws an error when S is used after ${token}`, () => {
+ const block = parse.bind(
+ null,
+ `${example} 1`,
+ `${token} S`,
+ referenceDate
+ )
+ assert.throws(block, RangeError)
+ assert.throws(
+ block,
+ new RegExp(
+ `The format string mustn't contain \`${token}\` and \`S\` at the same time`
+ )
+ )
+ })
+ })
+ })
+ })
+
+ describe('timezone (ISO-8601 w/ Z)', function () {
+ describe('X', function () {
+ it('hours and minutes', function () {
+ var result = parse(
+ '2016-11-25T16:38:38.123-0530',
+ "yyyy-MM-dd'T'HH:mm:ss.SSSX",
+ referenceDate
+ )
+ assert.deepEqual(result, new Date('2016-11-25T16:38:38.123-05:30'))
+ })
+
+ it('GMT', function () {
+ var result = parse(
+ '2016-11-25T16:38:38.123Z',
+ "yyyy-MM-dd'T'HH:mm:ss.SSSX",
+ referenceDate
+ )
+ assert.deepEqual(result, new Date('2016-11-25T16:38:38.123Z'))
+ })
+
+ it('hours', function () {
+ var result = parse(
+ '2016-11-25T16:38:38.123+05',
+ "yyyy-MM-dd'T'HH:mm:ss.SSSX",
+ referenceDate
+ )
+ assert.deepEqual(result, new Date('2016-11-25T16:38:38.123+05:00'))
+ })
+ })
+
+ describe('XX', function () {
+ it('hours and minutes', function () {
+ var result = parse(
+ '2016-11-25T16:38:38.123-0530',
+ "yyyy-MM-dd'T'HH:mm:ss.SSSXX",
+ referenceDate
+ )
+ assert.deepEqual(result, new Date('2016-11-25T16:38:38.123-05:30'))
+ })
+
+ it('GMT', function () {
+ var result = parse(
+ '2016-11-25T16:38:38.123Z',
+ "yyyy-MM-dd'T'HH:mm:ss.SSSXX",
+ referenceDate
+ )
+ assert.deepEqual(result, new Date('2016-11-25T16:38:38.123Z'))
+ })
+ })
+
+ describe('XXX', function () {
+ it('hours and minutes', function () {
+ var result = parse(
+ '2016-11-25T16:38:38.123-05:30',
+ "yyyy-MM-dd'T'HH:mm:ss.SSSXXX",
+ referenceDate
+ )
+ assert.deepEqual(result, new Date('2016-11-25T16:38:38.123-05:30'))
+ })
+
+ it('GMT', function () {
+ var result = parse(
+ '2016-11-25T16:38:38.123Z',
+ "yyyy-MM-dd'T'HH:mm:ss.SSSXXX",
+ referenceDate
+ )
+ assert.deepEqual(result, new Date('2016-11-25T16:38:38.123Z'))
+ })
+ })
+
+ describe('XXXX', function () {
+ it('hours and minutes', function () {
+ var result = parse(
+ '2016-11-25T16:38:38.123-0530',
+ "yyyy-MM-dd'T'HH:mm:ss.SSSXXXX",
+ referenceDate
+ )
+ assert.deepEqual(result, new Date('2016-11-25T16:38:38.123-05:30'))
+ })
+
+ it('GMT', function () {
+ var result = parse(
+ '2016-11-25T16:38:38.123Z',
+ "yyyy-MM-dd'T'HH:mm:ss.SSSXXXX",
+ referenceDate
+ )
+ assert.deepEqual(result, new Date('2016-11-25T16:38:38.123Z'))
+ })
+
+ it('hours, minutes and seconds', function () {
+ var result = parse(
+ '2016-11-25T16:38:38.123+053045',
+ "yyyy-MM-dd'T'HH:mm:ss.SSSXXXX",
+ referenceDate
+ )
+ assert.deepEqual(result, new Date('2016-11-25T16:37:53.123+05:30'))
+ })
+ })
+
+ describe('XXXXX', function () {
+ it('hours and minutes', function () {
+ var result = parse(
+ '2016-11-25T16:38:38.123-05:30',
+ "yyyy-MM-dd'T'HH:mm:ss.SSSXXXXX",
+ referenceDate
+ )
+ assert.deepEqual(result, new Date('2016-11-25T16:38:38.123-05:30'))
+ })
+
+ it('GMT', function () {
+ var result = parse(
+ '2016-11-25T16:38:38.123Z',
+ "yyyy-MM-dd'T'HH:mm:ss.SSSXXXXX",
+ referenceDate
+ )
+ assert.deepEqual(result, new Date('2016-11-25T16:38:38.123Z'))
+ })
+
+ it('hours, minutes and seconds', function () {
+ var result = parse(
+ '2016-11-25T16:38:38.123+05:30:45',
+ "yyyy-MM-dd'T'HH:mm:ss.SSSXXXXX",
+ referenceDate
+ )
+ assert.deepEqual(result, new Date('2016-11-25T16:37:53.123+05:30'))
+ })
+ })
+
+ describe('validation', () => {
+ ;[
+ ['X', '-0530'],
+ ['x', '-0530'],
+ ['t', '512969520'],
+ ['T', '512969520900'],
+ ].forEach(([token, example]) => {
+ it(`throws an error when X is used after ${token}`, () => {
+ const block = parse.bind(
+ null,
+ `${example} -0530`,
+ `${token} X`,
+ referenceDate
+ )
+ assert.throws(block, RangeError)
+ assert.throws(
+ block,
+ new RegExp(
+ `The format string mustn't contain \`${token}\` and \`X\` at the same time`
+ )
+ )
+ })
+ })
+ })
+ })
+
+ describe('timezone (ISO-8601 w/o Z)', function () {
+ describe('x', function () {
+ it('hours and minutes', function () {
+ var result = parse(
+ '2016-11-25T16:38:38.123-0530',
+ "yyyy-MM-dd'T'HH:mm:ss.SSSx",
+ referenceDate
+ )
+ assert.deepEqual(result, new Date('2016-11-25T16:38:38.123-05:30'))
+ })
+
+ it('GMT', function () {
+ var result = parse(
+ '2016-11-25T16:38:38.123+0000',
+ "yyyy-MM-dd'T'HH:mm:ss.SSSx",
+ referenceDate
+ )
+ assert.deepEqual(result, new Date('2016-11-25T16:38:38.123Z'))
+ })
+
+ it('hours', function () {
+ var result = parse(
+ '2016-11-25T16:38:38.123+05',
+ "yyyy-MM-dd'T'HH:mm:ss.SSSx",
+ referenceDate
+ )
+ assert.deepEqual(result, new Date('2016-11-25T16:38:38.123+05:00'))
+ })
+ })
+
+ describe('xx', function () {
+ it('hours and minutes', function () {
+ var result = parse(
+ '2016-11-25T16:38:38.123-0530',
+ "yyyy-MM-dd'T'HH:mm:ss.SSSxx",
+ referenceDate
+ )
+ assert.deepEqual(result, new Date('2016-11-25T16:38:38.123-05:30'))
+ })
+
+ it('GMT', function () {
+ var result = parse(
+ '2016-11-25T16:38:38.123+0000',
+ "yyyy-MM-dd'T'HH:mm:ss.SSSxx",
+ referenceDate
+ )
+ assert.deepEqual(result, new Date('2016-11-25T16:38:38.123Z'))
+ })
+ })
+
+ describe('xxx', function () {
+ it('hours and minutes', function () {
+ var result = parse(
+ '2016-11-25T16:38:38.123-05:30',
+ "yyyy-MM-dd'T'HH:mm:ss.SSSxxx",
+ referenceDate
+ )
+ assert.deepEqual(result, new Date('2016-11-25T16:38:38.123-05:30'))
+ })
+
+ it('GMT', function () {
+ var result = parse(
+ '2016-11-25T16:38:38.123+00:00',
+ "yyyy-MM-dd'T'HH:mm:ss.SSSxxx",
+ referenceDate
+ )
+ assert.deepEqual(result, new Date('2016-11-25T16:38:38.123Z'))
+ })
+ })
+
+ describe('xxxx', function () {
+ it('hours and minutes', function () {
+ var result = parse(
+ '2016-11-25T16:38:38.123-0530',
+ "yyyy-MM-dd'T'HH:mm:ss.SSSxxxx",
+ referenceDate
+ )
+ assert.deepEqual(result, new Date('2016-11-25T16:38:38.123-05:30'))
+ })
+
+ it('GMT', function () {
+ var result = parse(
+ '2016-11-25T16:38:38.123+0000',
+ "yyyy-MM-dd'T'HH:mm:ss.SSSxxxx",
+ referenceDate
+ )
+ assert.deepEqual(result, new Date('2016-11-25T16:38:38.123Z'))
+ })
+
+ it('hours, minutes and seconds', function () {
+ var result = parse(
+ '2016-11-25T16:38:38.123+053045',
+ "yyyy-MM-dd'T'HH:mm:ss.SSSxxxx",
+ referenceDate
+ )
+ assert.deepEqual(result, new Date('2016-11-25T16:37:53.123+05:30'))
+ })
+ })
+
+ describe('xxxxx', function () {
+ it('hours and minutes', function () {
+ var result = parse(
+ '2016-11-25T16:38:38.123-05:30',
+ "yyyy-MM-dd'T'HH:mm:ss.SSSxxxxx",
+ referenceDate
+ )
+ assert.deepEqual(result, new Date('2016-11-25T16:38:38.123-05:30'))
+ })
+
+ it('GMT', function () {
+ var result = parse(
+ '2016-11-25T16:38:38.123+00:00',
+ "yyyy-MM-dd'T'HH:mm:ss.SSSxxxxx",
+ referenceDate
+ )
+ assert.deepEqual(result, new Date('2016-11-25T16:38:38.123Z'))
+ })
+
+ it('hours, minutes and seconds', function () {
+ var result = parse(
+ '2016-11-25T16:38:38.123+05:30:45',
+ "yyyy-MM-dd'T'HH:mm:ss.SSSxxxxx",
+ referenceDate
+ )
+ assert.deepEqual(result, new Date('2016-11-25T16:37:53.123+05:30'))
+ })
+ })
+
+ describe('validation', () => {
+ ;[
+ ['X', '-0530'],
+ ['x', '-0530'],
+ ['t', '512969520'],
+ ['T', '512969520900'],
+ ].forEach(([token, example]) => {
+ it(`throws an error when x is used after ${token}`, () => {
+ const block = parse.bind(
+ null,
+ `${example} -0530`,
+ `${token} x`,
+ referenceDate
+ )
+ assert.throws(block, RangeError)
+ assert.throws(
+ block,
+ new RegExp(
+ `The format string mustn't contain \`${token}\` and \`x\` at the same time`
+ )
+ )
+ })
+ })
+ })
+ })
+
+ describe('seconds timestamp', function () {
+ it('numeric', function () {
+ var result = parse('512969520', 't', referenceDate)
+ assert.deepEqual(result, new Date(512969520000))
+ })
+
+ it('specified amount of digits', function () {
+ var result = parse(
+ '00000000000512969520',
+ 'tttttttttttttttttttt',
+ referenceDate
+ )
+ assert.deepEqual(result, new Date(512969520000))
+ })
+
+ it(`throws an error when it is used after any token`, () => {
+ const block = parse.bind(null, `1 512969520`, `h t`, referenceDate)
+ assert.throws(block, RangeError)
+ assert.throws(
+ block,
+ new RegExp(
+ `The format string mustn't contain \`t\` and any other token at the same time`
+ )
+ )
+ })
+ })
+
+ describe('milliseconds timestamp', function () {
+ it('numeric', function () {
+ var result = parse('512969520900', 'T', referenceDate)
+ assert.deepEqual(result, new Date(512969520900))
+ })
+
+ it('specified amount of digits', function () {
+ var result = parse(
+ '00000000512969520900',
+ 'TTTTTTTTTTTTTTTTTTTT',
+ referenceDate
+ )
+ assert.deepEqual(result, new Date(512969520900))
+ })
+
+ it(`throws an error when it is used after any token`, () => {
+ const block = parse.bind(null, `1 512969520900`, `h T`, referenceDate)
+ assert.throws(block, RangeError)
+ assert.throws(
+ block,
+ new RegExp(
+ `The format string mustn't contain \`T\` and any other token at the same time`
+ )
+ )
+ })
+ })
+
+ describe('common formats', function () {
+ it('ISO-8601', function () {
+ var result = parse('20161105T040404', "yyyyMMdd'T'HHmmss", referenceDate)
+ assert.deepEqual(result, new Date(2016, 10 /* Nov */, 5, 4, 4, 4, 0))
+ })
+
+ it('ISO week-numbering date', function () {
+ var result = parse(
+ '2016W474T153005',
+ "RRRR'W'IIi'T'HHmmss",
+ referenceDate
+ )
+ assert.deepEqual(result, new Date(2016, 10 /* Nov */, 24, 15, 30, 5, 0))
+ })
+
+ it('ISO day of year date', function () {
+ var result = parse('2010123T235959', "yyyyDDD'T'HHmmss", referenceDate)
+ assert.deepEqual(result, new Date(2010, 4 /* May */, 3, 23, 59, 59, 0))
+ })
+
+ it('Date.prototype.toString()', function () {
+ var dateString = 'Wed Jul 02 2014 05:30:15 GMT+0600'
+ var formatString = "EEE MMM dd yyyy HH:mm:ss 'GMT'xx"
+ var result = parse(dateString, formatString, referenceDate)
+ assert.deepEqual(result, new Date(dateString))
+ })
+
+ it('Date.prototype.toISOString()', function () {
+ var dateString = '2014-07-02T05:30:15.123+06:00'
+ var formatString = "yyyy-MM-dd'T'HH:mm:ss.SSSxxx"
+ var result = parse(dateString, formatString, referenceDate)
+ assert.deepEqual(result, new Date(dateString))
+ })
+
+ it('middle-endian', function () {
+ var result = parse(
+ '5 a.m. 07/02/2016',
+ 'h aaaa MM/dd/yyyy',
+ referenceDate
+ )
+ assert.deepEqual(result, new Date(2016, 6 /* Jul */, 2, 5, 0, 0, 0))
+ })
+
+ it('little-endian', function () {
+ var result = parse('02.07.1995', 'dd.MM.yyyy', referenceDate)
+ assert.deepEqual(result, new Date(1995, 6 /* Jul */, 2, 0, 0, 0, 0))
+ })
+ })
+
+ describe('priority', function () {
+ it("units of lower priority don't overwrite values of higher priority", function () {
+ var dateString = '+06:00 123 15 30 05 02 07 2014'
+ var formatString = 'xxx SSS ss mm HH dd MM yyyy'
+ var result = parse(dateString, formatString, referenceDate)
+ assert.deepEqual(result, new Date('2014-07-02T05:30:15.123+06:00'))
+ })
+ })
+
+ describe('implicit conversion of arguments', function () {
+ it('`dateString`', function () {
+ // eslint-disable-next-line no-new-wrappers
+ var dateString = new String('20161105T040404')
+ // $ExpectedMistake
+ var result = parse(dateString, "yyyyMMdd'T'HHmmss", referenceDate)
+ assert.deepEqual(result, new Date(2016, 10 /* Nov */, 5, 4, 4, 4, 0))
+ })
+
+ it('`formatString`', function () {
+ // eslint-disable-next-line no-new-wrappers
+ var formatString = new String("yyyyMMdd'T'HHmmss")
+ // $ExpectedMistake
+ var result = parse('20161105T040404', formatString, referenceDate)
+ assert.deepEqual(result, new Date(2016, 10 /* Nov */, 5, 4, 4, 4, 0))
+ })
+
+ it('`options.weekStartsOn`', function () {
+ // $ExpectedMistake
+ var result = parse('2018', 'Y', referenceDate, {
+ weekStartsOn: '1' /* Mon */,
+ firstWeekContainsDate: 4,
+ })
+ assert.deepEqual(result, new Date(2018, 0 /* Jan */, 1))
+ })
+
+ it('`options.firstWeekContainsDate`', function () {
+ // $ExpectedMistake
+ var result = parse('2018', 'Y', referenceDate, {
+ weekStartsOn: 1 /* Mon */,
+ firstWeekContainsDate: '4',
+ })
+ assert.deepEqual(result, new Date(2018, 0 /* Jan */, 1))
+ })
+ })
+
+ describe('with `options.strictValidation` = true', function () {
+ describe('calendar year', function () {
+ it('returns `Invalid Date` for year zero', function () {
+ var result = parse('0', 'y', referenceDate)
+ assert(result instanceof Date && isNaN(result))
+ })
+
+ it('works correctly for two-digit year zero', function () {
+ var result = parse('00', 'yy', referenceDate)
+ assert.deepEqual(result, new Date(2000, 0 /* Jan */, 1))
+ })
+ })
+
+ describe('local week-numbering year', function () {
+ it('returns `Invalid Date` for year zero', function () {
+ var result = parse('0', 'Y', referenceDate)
+ assert(result instanceof Date && isNaN(result))
+ })
+
+ it('works correctly for two-digit year zero', function () {
+ var result = parse('00', 'YY', referenceDate, {
+ useAdditionalWeekYearTokens: true,
+ })
+ assert.deepEqual(result, new Date(1999, 11 /* Dec */, 26))
+ })
+ })
+
+ describe('quarter (formatting)', function () {
+ it('returns `Invalid Date` for invalid quarter', function () {
+ var result = parse('0', 'Q', referenceDate)
+ assert(result instanceof Date && isNaN(result))
+ })
+ })
+
+ describe('quarter (stand-alone)', function () {
+ it('returns `Invalid Date` for invalid quarter', function () {
+ var result = parse('5', 'q', referenceDate)
+ assert(result instanceof Date && isNaN(result))
+ })
+ })
+
+ describe('month (formatting)', function () {
+ it('returns `Invalid Date` for invalid month', function () {
+ var result = parse('00', 'MM', referenceDate)
+ assert(result instanceof Date && isNaN(result))
+ })
+ })
+
+ describe('month (stand-alone)', function () {
+ it('returns `Invalid Date` for invalid month', function () {
+ var result = parse('13', 'LL', referenceDate)
+ assert(result instanceof Date && isNaN(result))
+ })
+ })
+
+ describe('local week of year', function () {
+ it('returns `Invalid Date` for invalid week', function () {
+ var result = parse('0', 'w', referenceDate)
+ assert(result instanceof Date && isNaN(result))
+ })
+ })
+
+ describe('ISO week of year', function () {
+ it('returns `Invalid Date` for invalid week', function () {
+ var result = parse('54', 'II', referenceDate)
+ assert(result instanceof Date && isNaN(result))
+ })
+ })
+
+ describe('day of month', function () {
+ it('returns `Invalid Date` for invalid day of the month', function () {
+ var result = parse('30', 'd', new Date(2012, 1 /* Feb */, 1))
+ assert(result instanceof Date && isNaN(result))
+ })
+
+ it('returns `Invalid Date` for 29th of February of non-leap year', function () {
+ var result = parse('29', 'd', new Date(2014, 1 /* Feb */, 1))
+ assert(result instanceof Date && isNaN(result))
+ })
+
+ it('parses 29th of February of leap year', function () {
+ var result = parse('29', 'd', new Date(2012, 1 /* Feb */, 1))
+ assert.deepEqual(result, new Date(2012, 1 /* Feb */, 29))
+ })
+ })
+
+ describe('day of year', function () {
+ it('returns `Invalid Date` for invalid day of the year', function () {
+ var result = parse('0', 'D', referenceDate, {
+ useAdditionalDayOfYearTokens: true,
+ })
+ assert(result instanceof Date && isNaN(result))
+ })
+
+ it('returns `Invalid Date` for 366th day of non-leap year', function () {
+ var result = parse('366', 'D', new Date(2014, 1 /* Feb */, 1), {
+ useAdditionalDayOfYearTokens: true,
+ })
+ assert(result instanceof Date && isNaN(result))
+ })
+
+ it('parses 366th day of leap year', function () {
+ var result = parse('366', 'D', new Date(2012, 1 /* Feb */, 1), {
+ useAdditionalDayOfYearTokens: true,
+ })
+ assert.deepEqual(result, new Date(2012, 11 /* Dec */, 31))
+ })
+ })
+
+ describe('ISO day of week (formatting)', function () {
+ it('returns `Invalid Date` for day zero', function () {
+ var result = parse('0', 'i', referenceDate)
+ assert(result instanceof Date && isNaN(result))
+ })
+
+ it('returns `Invalid Date` for eight day of week', function () {
+ var result = parse('8', 'i', referenceDate)
+ assert(result instanceof Date && isNaN(result))
+ })
+ })
+
+ describe('local day of week (formatting)', function () {
+ it('returns `Invalid Date` for day zero', function () {
+ var result = parse('0', 'e', referenceDate)
+ assert(result instanceof Date && isNaN(result))
+ })
+
+ it('returns `Invalid Date` for eight day of week', function () {
+ var result = parse('8', 'e', referenceDate)
+ assert(result instanceof Date && isNaN(result))
+ })
+ })
+
+ describe('local day of week (stand-alone)', function () {
+ it('returns `Invalid Date` for day zero', function () {
+ var result = parse('0', 'c', referenceDate)
+ assert(result instanceof Date && isNaN(result))
+ })
+
+ it('returns `Invalid Date` for eight day of week', function () {
+ var result = parse('8', 'c', referenceDate)
+ assert(result instanceof Date && isNaN(result))
+ })
+ })
+
+ describe('hour [1-12]', function () {
+ it('returns `Invalid Date` for hour zero', function () {
+ var result = parse('00', 'hh', referenceDate)
+ assert(result instanceof Date && isNaN(result))
+ })
+
+ it('returns `Invalid Date` for invalid hour', function () {
+ var result = parse('13', 'hh', referenceDate)
+ assert(result instanceof Date && isNaN(result))
+ })
+ })
+
+ describe('hour [0-23]', function () {
+ it('returns `Invalid Date` for invalid hour', function () {
+ var result = parse('24', 'HH', referenceDate)
+ assert(result instanceof Date && isNaN(result))
+ })
+ })
+
+ describe('hour [0-11]', function () {
+ it('returns `Invalid Date` for invalid hour', function () {
+ var result = parse('12', 'KK', referenceDate)
+ assert(result instanceof Date && isNaN(result))
+ })
+ })
+
+ describe('hour [1-24]', function () {
+ it('returns `Invalid Date` for hour zero', function () {
+ var result = parse('00', 'kk', referenceDate)
+ assert(result instanceof Date && isNaN(result))
+ })
+
+ it('returns `Invalid Date` for invalid hour', function () {
+ var result = parse('25', 'kk', referenceDate)
+ assert(result instanceof Date && isNaN(result))
+ })
+ })
+
+ describe('minute', function () {
+ it('returns `Invalid Date` for invalid minute', function () {
+ var result = parse('60', 'mm', referenceDate)
+ assert(result instanceof Date && isNaN(result))
+ })
+ })
+
+ describe('second', function () {
+ it('returns `Invalid Date` for invalid second', function () {
+ var result = parse('60', 'ss', referenceDate)
+ assert(result instanceof Date && isNaN(result))
+ })
+ })
+ })
+
+ describe('custom locale', function () {
+ it('allows to pass a custom locale', function () {
+ var customLocale = {
+ match: {
+ era: function () {
+ return {
+ value: 0,
+ rest: ' it works!',
+ }
+ },
+ },
+ }
+ // $ExpectedMistake
+ var result = parse('2018 foobar', "y G 'it works!'", referenceDate, {
+ locale: customLocale,
+ })
+ assert.deepEqual(result, new Date(-2017, 0 /* Jan */, 1))
+ })
+
+ it('throws `RangeError` if `options.locale` does not contain `match` property', function () {
+ var block = parse.bind(
+ null,
+ '2016-11-25 04 AM',
+ 'yyyy-MM-dd hh a',
+ referenceDate,
+ // $ExpectedMistake
+ { locale: {} }
+ )
+ assert.throws(block, RangeError)
+ })
+ })
+
+ it('accepts a timestamp as `referenceDate`', function () {
+ var dateString = '6 p.m.'
+ var formatString = 'h aaaa'
+ var result = parse(dateString, formatString, referenceDate.getTime())
+ assert.deepEqual(result, new Date(1986, 3 /* Apr */, 4, 18))
+ })
+
+ it('does not mutate `referenceDate`', function () {
+ var referenceDateClone1 = new Date(referenceDate.getTime())
+ var referenceDateClone2 = new Date(referenceDate.getTime())
+ var dateString = '6 p.m.'
+ var formatString = 'h aaaa'
+ parse(dateString, formatString, referenceDateClone1)
+ assert.deepEqual(referenceDateClone1, referenceDateClone2)
+ })
+
+ describe('failure', function () {
+ it('returns `referenceDate` if `dateString` and `formatString` are empty strings', function () {
+ var dateString = ''
+ var formatString = ''
+ var result = parse(dateString, formatString, referenceDate)
+ assert.deepEqual(result, referenceDate)
+ })
+
+ it('returns `referenceDate` if no tokens in `formatString` are provided', function () {
+ var dateString = 'not a token'
+ var formatString = "'not a token'"
+ var result = parse(dateString, formatString, referenceDate)
+ assert.deepEqual(result, referenceDate)
+ })
+
+ it("returns `Invalid Date` if `formatString` doesn't match `dateString`", function () {
+ var dateString = '2017-01-01'
+ var formatString = 'yyyy/MM/dd'
+ var result = parse(dateString, formatString, referenceDate)
+ assert(result instanceof Date && isNaN(result))
+ })
+
+ it('returns `Invalid Date` if `formatString` tokens failed to parse a value', function () {
+ var dateString = '2017-01-01'
+ var formatString = 'MMMM do yyyy'
+ var result = parse(dateString, formatString, referenceDate)
+ assert(result instanceof Date && isNaN(result))
+ })
+
+ it('returns `Invalid Date` if `formatString` is empty string but `dateString` is not', function () {
+ var dateString = '2017-01-01'
+ var formatString = ''
+ var result = parse(dateString, formatString, referenceDate)
+ assert(result instanceof Date && isNaN(result))
+ })
+
+ it('returns `Invalid Date` if `referenceDate` is `Invalid Date`', function () {
+ var dateString = '2014-07-02T05:30:15.123+06:00'
+ var formatString = "yyyy-MM-dd'T'HH:mm:ss.SSSxxx"
+ var result = parse(dateString, formatString, new Date(NaN))
+ assert(result instanceof Date && isNaN(result))
+ })
+
+ it('throws `RangeError` if `options.weekStartsOn` is not convertable to 0, 1, ..., 6 or undefined', function () {
+ var dateString = '2014-07-02T05:30:15.123+06:00'
+ var formatString = "yyyy-MM-dd'T'HH:mm:ss.SSSxxx"
+ // $ExpectedMistake
+ var block = parse.bind(null, dateString, formatString, referenceDate, {
+ weekStartsOn: NaN,
+ })
+ assert.throws(block, RangeError)
+ })
+
+ it('throws `RangeError` if `options.firstWeekContainsDate` is not convertable to 1, 2, ..., 7 or undefined', function () {
+ var dateString = '2014-07-02T05:30:15.123+06:00'
+ var formatString = "yyyy-MM-dd'T'HH:mm:ss.SSSxxx"
+ // $ExpectedMistake
+ var block = parse.bind(null, dateString, formatString, referenceDate, {
+ firstWeekContainsDate: NaN,
+ })
+ assert.throws(block, RangeError)
+ })
+ })
+
+ it('throws TypeError exception if passed less than 3 arguments', function () {
+ assert.throws(parse.bind(null), TypeError)
+ // $ExpectedMistake
+ assert.throws(parse.bind(null, 1), TypeError)
+ // $ExpectedMistake
+ assert.throws(parse.bind(null, 1, 2), TypeError)
+ })
+
+ describe('edge cases', function () {
+ it('returns Invalid Date if the string contains some remaining input after parsing', function () {
+ var result = parse('2016-11-05T040404', 'yyyy-MM-dd', referenceDate)
+ assert(result instanceof Date && isNaN(result))
+ })
+
+ it('parses normally if the remaining input is just whitespace', function () {
+ var result = parse('2016-11-05 \n', 'yyyy-MM-dd', referenceDate)
+ assert.deepEqual(result, new Date(2016, 10 /* Nov */, 5))
+ })
+
+ it('throws RangeError exception if the format string contains an unescaped latin alphabet character', function () {
+ assert.throws(
+ parse.bind(null, '2016-11-05-nnnn', 'yyyy-MM-dd-nnnn', referenceDate),
+ RangeError
+ )
+ })
+ })
+
+ describe('useAdditionalWeekYearTokens and useAdditionalDayOfYearTokens options', () => {
+ it('throws an error if D token is used', () => {
+ const block = parse.bind(null, '2016 5', 'yyyy D', referenceDate)
+ assert.throws(block, RangeError)
+ assert.throws(
+ block,
+ /Use `d` instead of `D` \(in `yyyy D`\) for formatting days of the month to the input `2016 5`; see: https:\/\/git.io\/fxCyr/
+ )
+ })
+
+ it('allows D token if useAdditionalDayOfYearTokens is set to true', () => {
+ const result = parse('2016 5', 'yyyy D', referenceDate, {
+ useAdditionalDayOfYearTokens: true,
+ })
+ assert.deepEqual(result, new Date(2016, 0, 5))
+ })
+
+ it('throws an error if DD token is used', () => {
+ const block = parse.bind(null, '2016 05', 'yyyy DD', referenceDate)
+ assert.throws(block, RangeError)
+ assert.throws(
+ block,
+ /Use `dd` instead of `DD` \(in `yyyy DD`\) for formatting days of the month to the input `2016 05`; see: https:\/\/git.io\/fxCyr/
+ )
+ })
+
+ it('allows DD token if useAdditionalDayOfYearTokens is set to true', () => {
+ const result = parse('2016 05', 'yyyy DD', referenceDate, {
+ useAdditionalDayOfYearTokens: true,
+ })
+ assert.deepEqual(result, new Date(2016, 0, 5))
+ })
+
+ it('throws an error if YY token is used', () => {
+ const block = parse.bind(null, '16 1', 'YY w', referenceDate)
+ assert.throws(block, RangeError)
+ assert.throws(
+ block,
+ /Use `yy` instead of `YY` \(in `YY w`\) for formatting years to the input `16 1`; see: https:\/\/git.io\/fxCyr/
+ )
+ })
+
+ it('allows YY token if useAdditionalWeekYearTokens is set to true', () => {
+ const result = parse('16 1', 'YY w', referenceDate, {
+ useAdditionalWeekYearTokens: true,
+ })
+ assert.deepEqual(result, new Date(2015, 11, 27))
+ })
+
+ it('throws an error if YYYY token is used', () => {
+ const block = parse.bind(null, '2016 1', 'YYYY w', referenceDate)
+ assert.throws(block, RangeError)
+ assert.throws(
+ block,
+ /Use `yyyy` instead of `YYYY` \(in `YYYY w`\) for formatting years to the input `2016 1`; see: https:\/\/git.io\/fxCyr/
+ )
+ })
+
+ it('allows YYYY token if useAdditionalWeekYearTokens is set to true', () => {
+ const result = parse('2016 1', 'YYYY w', referenceDate, {
+ useAdditionalWeekYearTokens: true,
+ })
+ assert.deepEqual(result, new Date(2015, 11, 27))
+ })
+ })
+
+ describe('long format', function () {
+ it('short date', function () {
+ var expected = new Date(1995, 4 /* May */, 26)
+ var dateString = '05/26/1995'
+ var formatString = 'P'
+ var result = parse(dateString, formatString, referenceDate)
+ assert.deepEqual(result, expected)
+ })
+
+ it('medium date', function () {
+ var expected = new Date(1995, 4 /* May */, 26)
+ var dateString = 'May 26, 1995'
+ var formatString = 'PP'
+ var result = parse(dateString, formatString, referenceDate)
+ assert.deepEqual(result, expected)
+ })
+
+ it('long date', function () {
+ var expected = new Date(1995, 4 /* May */, 26)
+ var dateString = 'May 26th, 1995'
+ var formatString = 'PPP'
+ var result = parse(dateString, formatString, referenceDate)
+ assert.deepEqual(result, expected)
+ })
+
+ it('full date', function () {
+ var expected = new Date(1995, 4 /* May */, 26)
+ var dateString = 'Friday, May 26th, 1995'
+ var formatString = 'PPPP'
+ var result = parse(dateString, formatString, referenceDate)
+ assert.deepEqual(result, expected)
+ })
+
+ it('short time', function () {
+ var expected = new Date(
+ referenceDate.getFullYear(),
+ referenceDate.getMonth(),
+ referenceDate.getDate(),
+ 10,
+ 32
+ )
+ var timeString = '10:32 AM'
+ var formatString = 'p'
+ var result = parse(timeString, formatString, referenceDate)
+ assert.deepEqual(result, expected)
+ })
+
+ it('medium time', function () {
+ var expected = new Date(
+ referenceDate.getFullYear(),
+ referenceDate.getMonth(),
+ referenceDate.getDate(),
+ 10,
+ 32,
+ 55
+ )
+ var timeString = '10:32:55 AM'
+ var formatString = 'pp'
+ var result = parse(timeString, formatString, referenceDate)
+ assert.deepEqual(result, expected)
+ })
+
+ it('short date + short time', function () {
+ var expected = new Date(1995, 4 /* May */, 26, 10, 32)
+ var dateTimeString = '05/26/1995, 10:32 AM'
+ var formatString = 'Pp'
+ var result = parse(dateTimeString, formatString, referenceDate)
+ assert.deepEqual(result, expected)
+ })
+
+ it('medium date + short time', function () {
+ var expected = new Date(1995, 4 /* May */, 26, 10, 32)
+ var dateTimeString = 'May 26, 1995, 10:32 AM'
+ var formatString = 'PPp'
+ var result = parse(dateTimeString, formatString, referenceDate)
+ assert.deepEqual(result, expected)
+ })
+
+ it('long date + short time', function () {
+ var expected = new Date(1995, 4 /* May */, 26, 10, 32)
+ var dateTimeString = 'May 26th, 1995 at 10:32 AM'
+ var formatString = 'PPPp'
+ var result = parse(dateTimeString, formatString, referenceDate)
+ assert.deepEqual(result, expected)
+ })
+
+ it('full date + short time', function () {
+ var expected = new Date(1995, 4 /* May */, 26, 10, 32)
+ var dateTimeString = 'Friday, May 26th, 1995 at 10:32 AM'
+ var formatString = 'PPPPp'
+ var result = parse(dateTimeString, formatString, referenceDate)
+ assert.deepEqual(result, expected)
+ })
+
+ it('short date + short time', function () {
+ var expected = new Date(1995, 4 /* May */, 26, 10, 32, 55)
+ var dateTimeString = '05/26/1995, 10:32:55 AM'
+ var formatString = 'Ppp'
+ var result = parse(dateTimeString, formatString, referenceDate)
+ assert.deepEqual(result, expected)
+ })
+
+ it('medium date + short time', function () {
+ var expected = new Date(1995, 4 /* May */, 26, 10, 32, 55)
+ var dateTimeString = 'May 26, 1995, 10:32:55 AM'
+ var formatString = 'PPpp'
+ var result = parse(dateTimeString, formatString, referenceDate)
+ assert.deepEqual(result, expected)
+ })
+
+ it('long date + short time', function () {
+ var expected = new Date(1995, 4 /* May */, 26, 10, 32, 55)
+ var dateTimeString = 'May 26th, 1995 at 10:32:55 AM'
+ var formatString = 'PPPpp'
+ var result = parse(dateTimeString, formatString, referenceDate)
+ assert.deepEqual(result, expected)
+ })
+
+ it('full date + short time', function () {
+ var expected = new Date(1995, 4 /* May */, 26, 10, 32, 55)
+ var dateTimeString = 'Friday, May 26th, 1995 at 10:32:55 AM'
+ var formatString = 'PPPPpp'
+ var result = parse(dateTimeString, formatString, referenceDate)
+ assert.deepEqual(result, expected)
+ })
+ })
+})
diff --git a/date-fns/src/parseISO/benchmark.js b/date-fns/src/parseISO/benchmark.js
new file mode 100644
index 0000000..19405ed
--- /dev/null
+++ b/date-fns/src/parseISO/benchmark.js
@@ -0,0 +1,16 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import parseISO from '.'
+import moment from 'moment'
+
+suite('toDate', function() {
+ benchmark('date-fns', function() {
+ return parseISO('2014-10-25T13:46:20+07:00')
+ })
+
+ benchmark('Moment.js', function() {
+ return moment('2014-10-25T13:46:20+07:00')
+ })
+})
diff --git a/date-fns/src/parseISO/index.d.ts b/date-fns/src/parseISO/index.d.ts
new file mode 100644
index 0000000..ee06fe6
--- /dev/null
+++ b/date-fns/src/parseISO/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { parseISO } from 'date-fns'
+export default parseISO
diff --git a/date-fns/src/parseISO/index.js b/date-fns/src/parseISO/index.js
new file mode 100644
index 0000000..4d4a0af
--- /dev/null
+++ b/date-fns/src/parseISO/index.js
@@ -0,0 +1,343 @@
+import toInteger from '../_lib/toInteger/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+var MILLISECONDS_IN_HOUR = 3600000
+var MILLISECONDS_IN_MINUTE = 60000
+var DEFAULT_ADDITIONAL_DIGITS = 2
+
+var patterns = {
+ dateTimeDelimiter: /[T ]/,
+ timeZoneDelimiter: /[Z ]/i,
+ timezone: /([Z+-].*)$/,
+}
+
+var dateRegex = /^-?(?:(\d{3})|(\d{2})(?:-?(\d{2}))?|W(\d{2})(?:-?(\d{1}))?|)$/
+var timeRegex = /^(\d{2}(?:[.,]\d*)?)(?::?(\d{2}(?:[.,]\d*)?))?(?::?(\d{2}(?:[.,]\d*)?))?$/
+var timezoneRegex = /^([+-])(\d{2})(?::?(\d{2}))?$/
+
+/**
+ * @name parseISO
+ * @category Common Helpers
+ * @summary Parse ISO string
+ *
+ * @description
+ * Parse the given string in ISO 8601 format and return an instance of Date.
+ *
+ * Function accepts complete ISO 8601 formats as well as partial implementations.
+ * ISO 8601: http://en.wikipedia.org/wiki/ISO_8601
+ *
+ * If the argument isn't a string, the function cannot parse the string or
+ * the values are invalid, it returns Invalid Date.
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * - The previous `parse` implementation was renamed to `parseISO`.
+ *
+ * ```javascript
+ * // Before v2.0.0
+ * parse('2016-01-01')
+ *
+ * // v2.0.0 onward
+ * parseISO('2016-01-01')
+ * ```
+ *
+ * - `parseISO` now validates separate date and time values in ISO-8601 strings
+ * and returns `Invalid Date` if the date is invalid.
+ *
+ * ```javascript
+ * parseISO('2018-13-32')
+ * //=> Invalid Date
+ * ```
+ *
+ * - `parseISO` now doesn't fall back to `new Date` constructor
+ * if it fails to parse a string argument. Instead, it returns `Invalid Date`.
+ *
+ * @param {String} argument - the value to convert
+ * @param {Object} [options] - an object with options.
+ * @param {0|1|2} [options.additionalDigits=2] - the additional number of digits in the extended year format
+ * @returns {Date} the parsed date in the local time zone
+ * @throws {TypeError} 1 argument required
+ * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2
+ *
+ * @example
+ * // Convert string '2014-02-11T11:30:30' to date:
+ * var result = parseISO('2014-02-11T11:30:30')
+ * //=> Tue Feb 11 2014 11:30:30
+ *
+ * @example
+ * // Convert string '+02014101' to date,
+ * // if the additional number of digits in the extended year format is 1:
+ * var result = parseISO('+02014101', { additionalDigits: 1 })
+ * //=> Fri Apr 11 2014 00:00:00
+ */
+export default function parseISO(argument, dirtyOptions) {
+ requiredArgs(1, arguments)
+
+ var options = dirtyOptions || {}
+
+ var additionalDigits =
+ options.additionalDigits == null
+ ? DEFAULT_ADDITIONAL_DIGITS
+ : toInteger(options.additionalDigits)
+ if (
+ additionalDigits !== 2 &&
+ additionalDigits !== 1 &&
+ additionalDigits !== 0
+ ) {
+ throw new RangeError('additionalDigits must be 0, 1 or 2')
+ }
+
+ if (
+ !(
+ typeof argument === 'string' ||
+ Object.prototype.toString.call(argument) === '[object String]'
+ )
+ ) {
+ return new Date(NaN)
+ }
+
+ var dateStrings = splitDateString(argument)
+
+ var date
+ if (dateStrings.date) {
+ var parseYearResult = parseYear(dateStrings.date, additionalDigits)
+ date = parseDate(parseYearResult.restDateString, parseYearResult.year)
+ }
+
+ if (isNaN(date) || !date) {
+ return new Date(NaN)
+ }
+
+ var timestamp = date.getTime()
+ var time = 0
+ var offset
+
+ if (dateStrings.time) {
+ time = parseTime(dateStrings.time)
+ if (isNaN(time) || time === null) {
+ return new Date(NaN)
+ }
+ }
+
+ if (dateStrings.timezone) {
+ offset = parseTimezone(dateStrings.timezone)
+ if (isNaN(offset)) {
+ return new Date(NaN)
+ }
+ } else {
+ var dirtyDate = new Date(timestamp + time)
+ // js parsed string assuming it's in UTC timezone
+ // but we need it to be parsed in our timezone
+ // so we use utc values to build date in our timezone.
+ // Year values from 0 to 99 map to the years 1900 to 1999
+ // so set year explicitly with setFullYear.
+ var result = new Date(0)
+ result.setFullYear(
+ dirtyDate.getUTCFullYear(),
+ dirtyDate.getUTCMonth(),
+ dirtyDate.getUTCDate()
+ )
+ result.setHours(
+ dirtyDate.getUTCHours(),
+ dirtyDate.getUTCMinutes(),
+ dirtyDate.getUTCSeconds(),
+ dirtyDate.getUTCMilliseconds()
+ )
+ return result
+ }
+
+ return new Date(timestamp + time + offset)
+}
+
+function splitDateString(dateString) {
+ var dateStrings = {}
+ var array = dateString.split(patterns.dateTimeDelimiter)
+ var timeString
+
+ // The regex match should only return at maximum two array elements.
+ // [date], [time], or [date, time].
+ if (array.length > 2) {
+ return dateStrings
+ }
+
+ if (/:/.test(array[0])) {
+ dateStrings.date = null
+ timeString = array[0]
+ } else {
+ dateStrings.date = array[0]
+ timeString = array[1]
+ if (patterns.timeZoneDelimiter.test(dateStrings.date)) {
+ dateStrings.date = dateString.split(patterns.timeZoneDelimiter)[0]
+ timeString = dateString.substr(dateStrings.date.length, dateString.length)
+ }
+ }
+
+ if (timeString) {
+ var token = patterns.timezone.exec(timeString)
+ if (token) {
+ dateStrings.time = timeString.replace(token[1], '')
+ dateStrings.timezone = token[1]
+ } else {
+ dateStrings.time = timeString
+ }
+ }
+
+ return dateStrings
+}
+
+function parseYear(dateString, additionalDigits) {
+ var regex = new RegExp(
+ '^(?:(\\d{4}|[+-]\\d{' +
+ (4 + additionalDigits) +
+ '})|(\\d{2}|[+-]\\d{' +
+ (2 + additionalDigits) +
+ '})$)'
+ )
+
+ var captures = dateString.match(regex)
+ // Invalid ISO-formatted year
+ if (!captures) return { year: null }
+
+ var year = captures[1] && parseInt(captures[1])
+ var century = captures[2] && parseInt(captures[2])
+
+ return {
+ year: century == null ? year : century * 100,
+ restDateString: dateString.slice((captures[1] || captures[2]).length),
+ }
+}
+
+function parseDate(dateString, year) {
+ // Invalid ISO-formatted year
+ if (year === null) return null
+
+ var captures = dateString.match(dateRegex)
+ // Invalid ISO-formatted string
+ if (!captures) return null
+
+ var isWeekDate = !!captures[4]
+ var dayOfYear = parseDateUnit(captures[1])
+ var month = parseDateUnit(captures[2]) - 1
+ var day = parseDateUnit(captures[3])
+ var week = parseDateUnit(captures[4])
+ var dayOfWeek = parseDateUnit(captures[5]) - 1
+
+ if (isWeekDate) {
+ if (!validateWeekDate(year, week, dayOfWeek)) {
+ return new Date(NaN)
+ }
+ return dayOfISOWeekYear(year, week, dayOfWeek)
+ } else {
+ var date = new Date(0)
+ if (
+ !validateDate(year, month, day) ||
+ !validateDayOfYearDate(year, dayOfYear)
+ ) {
+ return new Date(NaN)
+ }
+ date.setUTCFullYear(year, month, Math.max(dayOfYear, day))
+ return date
+ }
+}
+
+function parseDateUnit(value) {
+ return value ? parseInt(value) : 1
+}
+
+function parseTime(timeString) {
+ var captures = timeString.match(timeRegex)
+ if (!captures) return null // Invalid ISO-formatted time
+
+ var hours = parseTimeUnit(captures[1])
+ var minutes = parseTimeUnit(captures[2])
+ var seconds = parseTimeUnit(captures[3])
+
+ if (!validateTime(hours, minutes, seconds)) {
+ return NaN
+ }
+
+ return (
+ hours * MILLISECONDS_IN_HOUR +
+ minutes * MILLISECONDS_IN_MINUTE +
+ seconds * 1000
+ )
+}
+
+function parseTimeUnit(value) {
+ return (value && parseFloat(value.replace(',', '.'))) || 0
+}
+
+function parseTimezone(timezoneString) {
+ if (timezoneString === 'Z') return 0
+
+ var captures = timezoneString.match(timezoneRegex)
+ if (!captures) return 0
+
+ var sign = captures[1] === '+' ? -1 : 1
+ var hours = parseInt(captures[2])
+ var minutes = (captures[3] && parseInt(captures[3])) || 0
+
+ if (!validateTimezone(hours, minutes)) {
+ return NaN
+ }
+
+ return (
+ sign * (hours * MILLISECONDS_IN_HOUR + minutes * MILLISECONDS_IN_MINUTE)
+ )
+}
+
+function dayOfISOWeekYear(isoWeekYear, week, day) {
+ var date = new Date(0)
+ date.setUTCFullYear(isoWeekYear, 0, 4)
+ var fourthOfJanuaryDay = date.getUTCDay() || 7
+ var diff = (week - 1) * 7 + day + 1 - fourthOfJanuaryDay
+ date.setUTCDate(date.getUTCDate() + diff)
+ return date
+}
+
+// Validation functions
+
+// February is null to handle the leap year (using ||)
+var daysInMonths = [31, null, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
+
+function isLeapYearIndex(year) {
+ return year % 400 === 0 || (year % 4 === 0 && year % 100)
+}
+
+function validateDate(year, month, date) {
+ return (
+ month >= 0 &&
+ month <= 11 &&
+ date >= 1 &&
+ date <= (daysInMonths[month] || (isLeapYearIndex(year) ? 29 : 28))
+ )
+}
+
+function validateDayOfYearDate(year, dayOfYear) {
+ return dayOfYear >= 1 && dayOfYear <= (isLeapYearIndex(year) ? 366 : 365)
+}
+
+function validateWeekDate(_year, week, day) {
+ return week >= 1 && week <= 53 && day >= 0 && day <= 6
+}
+
+function validateTime(hours, minutes, seconds) {
+ if (hours === 24) {
+ return minutes === 0 && seconds === 0
+ }
+
+ return (
+ seconds >= 0 &&
+ seconds < 60 &&
+ minutes >= 0 &&
+ minutes < 60 &&
+ hours >= 0 &&
+ hours < 25
+ )
+}
+
+function validateTimezone(_hours, minutes) {
+ return minutes >= 0 && minutes <= 59
+}
diff --git a/date-fns/src/parseISO/index.js.flow b/date-fns/src/parseISO/index.js.flow
new file mode 100644
index 0000000..951a222
--- /dev/null
+++ b/date-fns/src/parseISO/index.js.flow
@@ -0,0 +1,57 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (
+ argument: string,
+ options?: {
+ additionalDigits?: 0 | 1 | 2,
+ }
+) => Date
diff --git a/date-fns/src/parseISO/test.js b/date-fns/src/parseISO/test.js
new file mode 100644
index 0000000..36a8a90
--- /dev/null
+++ b/date-fns/src/parseISO/test.js
@@ -0,0 +1,452 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import parseISO from '.'
+
+describe('parseISO', () => {
+ describe('string argument', () => {
+ describe('centuries', () => {
+ it('parses YY', () => {
+ const result = parseISO('20')
+ assert.deepEqual(result, new Date(2000, 0 /* Jan */, 1))
+ })
+ })
+
+ describe('years', () => {
+ it('parses YYYY', () => {
+ const result = parseISO('2014')
+ assert.deepEqual(result, new Date(2014, 0 /* Jan */, 1))
+ })
+ })
+
+ describe('months', () => {
+ it('parses YYYY-MM', () => {
+ const result = parseISO('2014-02')
+ assert.deepEqual(result, new Date(2014, 1 /* Feb */, 1))
+ })
+ })
+
+ describe('weeks', () => {
+ it('parses YYYY-Www', () => {
+ const result = parseISO('2014-W02')
+ assert.deepEqual(result, new Date(2014, 0 /* Jan */, 6))
+ })
+
+ it('parses YYYYWww', () => {
+ const result = parseISO('2014W02')
+ assert.deepEqual(result, new Date(2014, 0 /* Jan */, 6))
+ })
+ })
+
+ describe('calendar dates', () => {
+ it('parses YYYY-MM-DD', () => {
+ const result = parseISO('2014-02-11')
+ assert.deepEqual(result, new Date(2014, 1, /* Feb */ 11))
+ })
+
+ it('parses YYYYMMDD', () => {
+ const result = parseISO('20140211')
+ assert.deepEqual(result, new Date(2014, 1 /* Feb */, 11))
+ })
+ })
+
+ describe('week dates', () => {
+ it('parses YYYY-Www-D', () => {
+ const result = parseISO('2014-W02-7')
+ assert.deepEqual(result, new Date(2014, 0 /* Jan */, 12))
+ })
+
+ it('parses YYYYWwwD', () => {
+ const result = parseISO('2014W027')
+ assert.deepEqual(result, new Date(2014, 0 /* Jan */, 12))
+ })
+
+ it('correctly handles years in which 4 January is Sunday', () => {
+ const result = parseISO('2009-W01-1')
+ assert.deepEqual(result, new Date(2008, 11 /* Dec */, 29))
+ })
+ })
+
+ describe('ordinal dates', () => {
+ it('parses YYYY-DDD', () => {
+ const result = parseISO('2014-026')
+ assert.deepEqual(result, new Date(2014, 0 /* Jan */, 26))
+ })
+
+ it('parses YYYYDDD', () => {
+ const result = parseISO('2014026')
+ assert.deepEqual(result, new Date(2014, 0 /* Jan */, 26))
+ })
+ })
+
+ describe('date and time combined', () => {
+ it('parses YYYY-MM-DDThh:mm', () => {
+ const result = parseISO('2014-02-11T11:30')
+ assert.deepEqual(result, new Date(2014, 1 /* Feb */, 11, 11, 30))
+ })
+
+ it('parses YYYY-MM-DDThhmm', () => {
+ const result = parseISO('2014-02-11T1130')
+ assert.deepEqual(result, new Date(2014, 1 /* Feb */, 11, 11, 30))
+ })
+ })
+
+ describe('extended century representation', () => {
+ it('parses century 101 BC - 2 BC', () => {
+ const result = parseISO('-0001')
+ const date = new Date(0)
+ date.setFullYear(-100, 0 /* Jan */, 1)
+ date.setHours(0, 0, 0, 0)
+ assert.deepEqual(result, date)
+ })
+
+ it('parses century 1 BC - 99 AD', () => {
+ const result = parseISO('00')
+ const date = new Date(0)
+ date.setFullYear(0, 0 /* Jan */, 1)
+ date.setHours(0, 0, 0, 0)
+ assert.deepEqual(result, date)
+ })
+
+ it('parses centuries after 9999 AD', () => {
+ const result = parseISO('+0123')
+ assert.deepEqual(result, new Date(12300, 0 /* Jan */, 1))
+ })
+
+ it('allows to specify the number of additional digits', () => {
+ const result = parseISO('-20', { additionalDigits: 0 })
+ const date = new Date(0)
+ date.setFullYear(-2000, 0 /* Jan */, 1)
+ date.setHours(0, 0, 0, 0)
+ assert.deepEqual(result, date)
+ })
+ })
+
+ describe('extended year representation', () => {
+ it('correctly parses years from 1 AD to 99 AD', () => {
+ const result = parseISO('0095-07-02')
+ const date = new Date(0)
+ date.setFullYear(95, 6 /* Jul */, 2)
+ date.setHours(0, 0, 0, 0)
+ assert.deepEqual(result, date)
+ })
+
+ it('parses years after 9999 AD', () => {
+ const result = parseISO('+012345-07-02')
+ assert.deepEqual(result, new Date(12345, 6 /* Jul */, 2))
+ })
+
+ it('allows to specify the number of additional digits', () => {
+ const result = parseISO('+12340702', { additionalDigits: 0 })
+ assert.deepEqual(result, new Date(1234, 6 /* Jul */, 2))
+ })
+
+ it('parses year 1 BC', () => {
+ const result = parseISO('0000-07-02')
+ const date = new Date(0)
+ date.setFullYear(0, 6 /* Jul */, 2)
+ date.setHours(0, 0, 0, 0)
+ assert.deepEqual(result, date)
+ })
+
+ it('parses years less than 1 BC', () => {
+ const result = parseISO('-000001-07-02')
+ const date = new Date(0)
+ date.setFullYear(-1, 6 /* Jul */, 2)
+ date.setHours(0, 0, 0, 0)
+ assert.deepEqual(result, date)
+ })
+ })
+
+ describe('float time', () => {
+ it('parses float hours', () => {
+ const result = parseISO('2014-02-11T11.5')
+ assert.deepEqual(result, new Date(2014, 1 /* Feb */, 11, 11, 30))
+ })
+
+ it('parses float minutes', () => {
+ const result = parseISO('2014-02-11T11:30.5')
+ assert.deepEqual(result, new Date(2014, 1 /* Feb */, 11, 11, 30, 30))
+ })
+
+ it('parses float seconds', () => {
+ const result = parseISO('2014-02-11T11:30:30.768')
+ assert.deepEqual(
+ result,
+ new Date(2014, 1 /* Feb */, 11, 11, 30, 30, 768)
+ )
+ })
+
+ it('parses , as decimal mark', () => {
+ const result = parseISO('2014-02-11T11,5')
+ assert.deepEqual(result, new Date(2014, 1 /* Feb */, 11, 11, 30))
+ })
+ })
+
+ describe('timezones', () => {
+ describe('when the date and the time are specified', () => {
+ it('parses Z', () => {
+ const result = parseISO('2014-10-25T06:46:20Z')
+ assert.deepEqual(result, new Date('2014-10-25T13:46:20+07:00'))
+ })
+
+ it('parses ±hh:mm', () => {
+ const result = parseISO('2014-10-25T13:46:20+07:00')
+ assert.deepEqual(result, new Date('2014-10-25T13:46:20+07:00'))
+ })
+
+ it('parses ±hhmm', () => {
+ const result = parseISO('2014-10-25T03:46:20-0300')
+ assert.deepEqual(result, new Date('2014-10-25T13:46:20+07:00'))
+ })
+
+ it('parses ±hh', () => {
+ const result = parseISO('2014-10-25T13:46:20+07')
+ assert.deepEqual(result, new Date('2014-10-25T13:46:20+07:00'))
+ })
+ })
+ describe('when the year and the month are specified', () => {
+ it('sets timezone correctly on yyyy-MMZ format', () => {
+ const result = parseISO('2012-01Z')
+ assert.deepEqual(result, new Date('2012-01-01T00:00:00+00:00'))
+ })
+ })
+ })
+
+ describe('failure', () => {
+ it('returns `Invalid Date` if the string is not an ISO formatted date', () => {
+ const result = parseISO(new Date(2014, 8 /* Sep */, 1, 11).toString())
+ assert(result instanceof Date)
+ assert(isNaN(result))
+ })
+ })
+ })
+
+ describe('validation', () => {
+ describe('months', () => {
+ it('returns `Invalid Date` for invalid month', () => {
+ const result = parseISO('2014-00')
+ assert(result instanceof Date)
+ assert(isNaN(result))
+ })
+ })
+
+ describe('weeks', () => {
+ it('returns `Invalid Date` for invalid week', () => {
+ const result = parseISO('2014-W00')
+ assert(result instanceof Date)
+ assert(isNaN(result))
+ })
+
+ it('returns `Invalid Date` for 54th week', () => {
+ const result = parseISO('2014-W54')
+ assert(result instanceof Date)
+ assert(isNaN(result))
+ })
+ })
+
+ describe('calendar dates', () => {
+ it('returns `Invalid Date` for invalid day of the month', () => {
+ const result = parseISO('2012-02-30')
+ assert(result instanceof Date)
+ assert(isNaN(result))
+ })
+
+ it('returns `Invalid Date` for 29th of February of non-leap year', () => {
+ const result = parseISO('2014-02-29')
+ assert(result instanceof Date)
+ assert(isNaN(result))
+ })
+
+ it('parses 29th of February of leap year', () => {
+ const result = parseISO('2012-02-29')
+ assert.deepEqual(result, new Date(2012, 1, /* Feb */ 29))
+ })
+ })
+
+ describe('week dates', () => {
+ it('returns `Invalid Date` for invalid day of the week', () => {
+ const result = parseISO('2014-W02-0')
+ assert(result instanceof Date)
+ assert(isNaN(result))
+ })
+ })
+
+ describe('ordinal dates', () => {
+ it('returns `Invalid Date` for invalid day of the year', () => {
+ const result = parseISO('2012-000')
+ assert(result instanceof Date)
+ assert(isNaN(result))
+ })
+
+ it('returns `Invalid Date` for 366th day of non-leap year', () => {
+ const result = parseISO('2014-366')
+ assert(result instanceof Date)
+ assert(isNaN(result))
+ })
+
+ it('parses 366th day of leap year', () => {
+ const result = parseISO('2012-366')
+ assert.deepEqual(result, new Date(2012, 11, /* Dec */ 31))
+ })
+ })
+
+ describe('date', () => {
+ it('returns `Invalid Date` when it contains spaces after the date', () => {
+ const result = parseISO('2014-02-11 basketball')
+ assert(result instanceof Date)
+ assert(isNaN(result))
+ })
+ })
+
+ describe('time', () => {
+ it('parses 24:00 as midnight of the next day', () => {
+ const result = parseISO('2014-02-11T24:00')
+ assert.deepEqual(result, new Date(2014, 1 /* Feb */, 12, 0, 0))
+ })
+
+ it('returns `Invalid Date` for anything after 24:00', () => {
+ const result = parseISO('2014-02-11T24:01')
+ assert(result instanceof Date)
+ assert(isNaN(result))
+ })
+
+ it('returns `Invalid Date` for invalid hours', () => {
+ const result = parseISO('2014-02-11T25')
+ assert(result instanceof Date)
+ assert(isNaN(result))
+ })
+
+ it('returns `Invalid Date` for invalid minutes', () => {
+ const result = parseISO('2014-02-11T21:60')
+ assert(result instanceof Date)
+ assert(isNaN(result))
+ })
+
+ it('returns `Invalid Date` for invalid seconds', () => {
+ const result = parseISO('2014-02-11T21:59:60')
+ assert(result instanceof Date)
+ assert(isNaN(result))
+ })
+
+ it('returns `Invalid Date` for invalid time', () => {
+ const result = parseISO('2014-02-11T21:basketball')
+ assert(result instanceof Date)
+ assert(isNaN(result))
+ })
+
+ it('returns `Invalid Date` when it contains spaces after the time', () => {
+ const result = parseISO('2014-02-11T21:59:00 basketball')
+ assert(result instanceof Date)
+ assert(isNaN(result))
+ })
+ })
+
+ describe('timezones', () => {
+ it('returns `Invalid Date` for invalid timezone minutes', () => {
+ const result = parseISO('2014-02-11T21:35:45+04:60')
+ assert(result instanceof Date)
+ assert(isNaN(result))
+ })
+ })
+ })
+
+ describe('invalid argument', () => {
+ it('returns Invalid Date for date argument', () => {
+ // $ExpectedMistake
+ const date = new Date(2016, 0, 1)
+ const result = parseISO(date)
+ assert(result instanceof Date)
+ assert(isNaN(result))
+ })
+
+ it('returns Invalid Date for timestamp argument', () => {
+ const timestamp = new Date(2016, 0, 1, 23, 30, 45, 123).getTime()
+ // $ExpectedMistake
+ const result = parseISO(timestamp)
+ assert(result instanceof Date)
+ assert(isNaN(result))
+ })
+
+ it('returns Invalid Date if argument is non-date string', () => {
+ const result = parseISO('abc')
+ assert(result instanceof Date)
+ assert(isNaN(result))
+ })
+
+ it('returns Invalid Date if argument is non-date string containing a colon', () => {
+ const result = parseISO('00:00')
+ assert(result instanceof Date)
+ assert(isNaN(result))
+ })
+
+ it('returns Invalid Date if argument is NaN', () => {
+ // $ExpectedMistake
+ const result = parseISO(NaN)
+ assert(result instanceof Date)
+ assert(isNaN(result))
+ })
+
+ it('returns Invalid Date if argument is Invalid Date', () => {
+ // $ExpectedMistake
+ const result = parseISO(new Date(NaN))
+ assert(result instanceof Date)
+ assert(isNaN(result))
+ })
+
+ it('returns Invalid Date if argument is null', () => {
+ // $ExpectedMistake
+ const result = parseISO(null)
+ assert(result instanceof Date)
+ assert(isNaN(result))
+ })
+
+ it('returns Invalid Date if argument is undefined', () => {
+ // $ExpectedMistake
+ const result = parseISO(undefined)
+ assert(result instanceof Date)
+ assert(isNaN(result))
+ })
+
+ it('returns Invalid Date if argument is false', () => {
+ // $ExpectedMistake
+ const result = parseISO(false)
+ assert(result instanceof Date)
+ assert(isNaN(result))
+ })
+
+ it('returns Invalid Date if argument is true', () => {
+ // $ExpectedMistake
+ const result = parseISO(true)
+ assert(result instanceof Date)
+ assert(isNaN(result))
+ })
+ })
+
+ describe('argument conversion', () => {
+ it('implicitly converts instance of String into a string', () => {
+ // eslint-disable-next-line no-new-wrappers
+ const dateString = new String('2014-02-11')
+ // $ExpectedMistake
+ const result = parseISO(dateString)
+ assert.deepEqual(result, new Date(2014, 1, /* Feb */ 11))
+ })
+
+ it('implicitly converts options', () => {
+ // $ExpectedMistake
+ const result = parseISO('+12340702', { additionalDigits: '0' })
+ assert.deepEqual(result, new Date(1234, 6 /* Jul */, 2))
+ })
+
+ it('throws `RangeError` if `options.additionalDigits` is not convertable to 0, 1, 2 or undefined`', () => {
+ // $ExpectedMistake
+ const block = parseISO.bind(null, '+12340702', { additionalDigits: 3 })
+ assert.throws(block, RangeError)
+ })
+ })
+
+ it('throws TypeError exception if passed less than 1 argument', () => {
+ assert.throws(parseISO.bind(null), TypeError)
+ })
+})
diff --git a/date-fns/src/parseJSON/benchmark.js b/date-fns/src/parseJSON/benchmark.js
new file mode 100644
index 0000000..f6b1c0b
--- /dev/null
+++ b/date-fns/src/parseJSON/benchmark.js
@@ -0,0 +1,16 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import parseJSON from '.'
+import moment from 'moment'
+
+suite('toDate', function() {
+ benchmark('date-fns', function() {
+ return parseJSON('2014-10-25T13:46:20+00:00')
+ })
+
+ benchmark('Moment.js', function() {
+ return moment('2014-10-25T13:46:20+00:00')
+ })
+})
diff --git a/date-fns/src/parseJSON/index.d.ts b/date-fns/src/parseJSON/index.d.ts
new file mode 100644
index 0000000..b6b186d
--- /dev/null
+++ b/date-fns/src/parseJSON/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { parseJSON } from 'date-fns'
+export default parseJSON
diff --git a/date-fns/src/parseJSON/index.js.flow b/date-fns/src/parseJSON/index.js.flow
new file mode 100644
index 0000000..c4801bf
--- /dev/null
+++ b/date-fns/src/parseJSON/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (argument: string | number | Date) => Date
diff --git a/date-fns/src/parseJSON/index.ts b/date-fns/src/parseJSON/index.ts
new file mode 100644
index 0000000..6af1eda
--- /dev/null
+++ b/date-fns/src/parseJSON/index.ts
@@ -0,0 +1,62 @@
+import toDate from '../toDate/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name parseJSON
+ * @category Common Helpers
+ * @summary Parse a JSON date string
+ *
+ * @description
+ * Converts a complete ISO date string in UTC time, the typical format for transmitting
+ * a date in JSON, to a JavaScript `Date` instance.
+ *
+ * This is a minimal implementation for converting dates retrieved from a JSON API to
+ * a `Date` instance which can be used with other functions in the `date-fns` library.
+ * The following formats are supported:
+ *
+ * - `2000-03-15T05:20:10.123Z`: The output of `.toISOString()` and `JSON.stringify(new Date())`
+ * - `2000-03-15T05:20:10Z`: Without milliseconds
+ * - `2000-03-15T05:20:10+00:00`: With a zero offset, the default JSON encoded format in some other languages
+ * - `2000-03-15T05:20:10+05:45`: With a positive or negative offset, the default JSON encoded format in some other languages
+ * - `2000-03-15T05:20:10+0000`: With a zero offset without a colon
+ * - `2000-03-15T05:20:10`: Without a trailing 'Z' symbol
+ * - `2000-03-15T05:20:10.1234567`: Up to 7 digits in milliseconds field. Only first 3 are taken into account since JS does not allow fractional milliseconds
+ * - `2000-03-15 05:20:10`: With a space instead of a 'T' separator for APIs returning a SQL date without reformatting
+ *
+ * For convenience and ease of use these other input types are also supported
+ * via [toDate]{@link https://date-fns.org/docs/toDate}:
+ *
+ * - A `Date` instance will be cloned
+ * - A `number` will be treated as a timestamp
+ *
+ * Any other input type or invalid date strings will return an `Invalid Date`.
+ *
+ * @param {String|Number|Date} argument A fully formed ISO8601 date string to convert
+ * @returns {Date} the parsed date in the local time zone
+ * @throws {TypeError} 1 argument required
+ */
+export default function parseJSON(argument: string): Date {
+ requiredArgs(1, arguments)
+
+ if (typeof argument === 'string') {
+ const parts = argument.match(
+ /(\d{4})-(\d{2})-(\d{2})[T ](\d{2}):(\d{2}):(\d{2})(?:\.(\d{0,7}))?(?:Z|(.)(\d{2}):?(\d{2})?)?/
+ )
+ if (parts) {
+ // Group 8 matches the sign
+ return new Date(
+ Date.UTC(
+ +parts[1],
+ +parts[2] - 1,
+ +parts[3],
+ +parts[4] - (+parts[9] || 0) * (parts[8] == '-' ? -1 : 1),
+ +parts[5] - (+parts[10] || 0) * (parts[8] == '-' ? -1 : 1),
+ +parts[6],
+ +((parts[7] || '0') + '00').substring(0, 3)
+ )
+ )
+ }
+ return new Date(NaN)
+ }
+ return toDate(argument)
+}
diff --git a/date-fns/src/parseJSON/test.ts b/date-fns/src/parseJSON/test.ts
new file mode 100644
index 0000000..ffb348f
--- /dev/null
+++ b/date-fns/src/parseJSON/test.ts
@@ -0,0 +1,132 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'assert'
+import parseJSON from '.'
+import format from '../format/index'
+
+describe('parseJSON', function () {
+ it('parses a formatted new Date() back to UTC - issue 2149', () => {
+ const date = new Date()
+ const jsonFormat = format(date, "yyyy-MM-dd'T'HH:mm:ss.SSSxxx")
+ const parsedDate = parseJSON(jsonFormat)
+ assert.equal(parsedDate.toISOString(), date.toISOString())
+ })
+
+ it('parses a formatted date with an hour of offset back to UTC - issue 2149', () => {
+ const date = '2021-01-09T13:18:10.873+01:00'
+ const expectedDate = new Date('2021-01-09T12:18:10.873Z')
+ const parsedDate = parseJSON(date)
+ assert.equal(parsedDate.toISOString(), expectedDate.toISOString())
+ })
+
+ it('parses a formatted date with 2 hours of offset back to UTC - issue 2149', () => {
+ const date = '2021-01-09T13:18:10.873+02:00'
+ const expectedDate = new Date('2021-01-09T11:18:10.873Z')
+ const parsedDate = parseJSON(date)
+ assert.equal(parsedDate.toISOString(), expectedDate.toISOString())
+ })
+
+ it('parses a formatted date with -2 hours of offset back to UTC - issue 2149', () => {
+ const date = '2021-01-09T13:18:10.873-02:00'
+ const expectedDate = new Date('2021-01-09T15:18:10.873Z')
+ const parsedDate = parseJSON(date)
+ assert.equal(parsedDate.toISOString(), expectedDate.toISOString())
+ })
+
+ it('parses a formatted Indian Standart Time in Asia/Kolkata with +5:30 hours of offset back to UTC - issue 2149', () => {
+ const date = '2021-02-15T02:56:04.678+05:30'
+ const expectedDate = new Date('2021-02-14T21:26:04.678Z')
+ const parsedDate = parseJSON(date)
+ assert.equal(parsedDate.toISOString(), expectedDate.toISOString())
+ })
+
+ it('parses a formatted time in Asia/Kathmandu with +5:45 hours of offset back to UTC - issue 2149', () => {
+ const date = '2021-02-15T17:45:00.900+05:45'
+ const expectedDate = new Date('2021-02-15T12:00:00.900Z')
+ const parsedDate = parseJSON(date)
+ assert.equal(parsedDate.toISOString(), expectedDate.toISOString())
+ })
+
+ it('parses a fully formed ISO date with Z', () => {
+ const date = '2000-03-15T05:20:10.123Z'
+ const parsedDate = parseJSON(date)
+ assert.equal(parsedDate.toISOString(), date)
+ })
+
+ it('parses a fully formed ISO date with Z without ms', () => {
+ const date = '2000-03-15T05:20:10Z'
+ const expectedDate = '2000-03-15T05:20:10.000Z'
+ const parsedDate = parseJSON(date)
+ assert.equal(parsedDate.toISOString(), expectedDate)
+ })
+
+ it('parses a fully formed ISO date with zero offset', () => {
+ const zeroOffset = '2000-03-15T05:20:10+00:00'
+ const expectedDate = '2000-03-15T05:20:10.000Z'
+ const parsedDate = parseJSON(zeroOffset)
+ assert.equal(parsedDate.toISOString(), expectedDate)
+ })
+
+ it('parses a fully formed ISO date with zero offset without colon', () => {
+ const zeroOffset = '2000-03-15T05:20:10+0000'
+ const expectedDate = '2000-03-15T05:20:10.000Z'
+ const parsedDate = parseJSON(zeroOffset)
+ assert.equal(parsedDate.toISOString(), expectedDate)
+ })
+
+ it('parses a fully formed ISO date without Z', () => {
+ const date = '2000-03-15T05:20:10.123'
+ const expectedDate = '2000-03-15T05:20:10.123Z'
+ const parsedDate = parseJSON(date)
+ assert.equal(parsedDate.toISOString(), expectedDate)
+ })
+
+ it('parses a fully formed ISO date without Z and with 6-digit millisecond part', () => {
+ const date = '2000-03-15T05:20:10.123456'
+ const expectedDate = '2000-03-15T05:20:10.123Z'
+ const parsedDate = parseJSON(date)
+ assert.equal(parsedDate.toISOString(), expectedDate)
+ })
+
+ it('parses a fully formed ISO with 1-digit millisecond part', () => {
+ const date = '2000-03-15T05:20:10.1Z'
+ const expectedDate = '2000-03-15T05:20:10.100Z'
+ const parsedDate = parseJSON(date)
+ assert.equal(parsedDate.toISOString(), expectedDate)
+ })
+
+ it('parses a fully formed ISO with 2-digit millisecond part', () => {
+ const date = '2000-03-15T05:20:10.12Z'
+ const expectedDate = '2000-03-15T05:20:10.120Z'
+ const parsedDate = parseJSON(date)
+ assert.equal(parsedDate.toISOString(), expectedDate)
+ })
+
+ it('parses supported formats with a space time separator instead of a T', () => {
+ const date = '2000-03-15 05:20:10.123Z'
+ const expectedDate = '2000-03-15T05:20:10.123Z'
+ const parsedDate = parseJSON(date)
+ assert.equal(parsedDate.toISOString(), expectedDate)
+ })
+
+ it('parses the SQL datetime format without milliseconds', () => {
+ const date = '2000-03-15 05:20:10'
+ const expectedDate = '2000-03-15T05:20:10.000Z'
+ const parsedDate = parseJSON(date)
+ assert.equal(parsedDate.toISOString(), expectedDate)
+ })
+
+ it('parses the SQL datetime format with up to 7 millisecond digits', () => {
+ const date = '2000-03-15 05:20:10.1234567'
+ const expectedDate = '2000-03-15T05:20:10.123Z'
+ const parsedDate = parseJSON(date)
+ assert.equal(parsedDate.toISOString(), expectedDate)
+ })
+
+ it('returns an invalid date for anything else', () => {
+ assert.equal(parseJSON('').toString(), 'Invalid Date')
+ assert.equal(parseJSON('invalid').toString(), 'Invalid Date')
+ assert.equal(parseJSON('2020-10-10').toString(), 'Invalid Date')
+ })
+})
diff --git a/date-fns/src/quartersToMonths/index.d.ts b/date-fns/src/quartersToMonths/index.d.ts
new file mode 100644
index 0000000..d2df2e1
--- /dev/null
+++ b/date-fns/src/quartersToMonths/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { quartersToMonths } from 'date-fns'
+export default quartersToMonths
diff --git a/date-fns/src/quartersToMonths/index.js.flow b/date-fns/src/quartersToMonths/index.js.flow
new file mode 100644
index 0000000..8225923
--- /dev/null
+++ b/date-fns/src/quartersToMonths/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (quarters: number) => number
diff --git a/date-fns/src/quartersToMonths/index.ts b/date-fns/src/quartersToMonths/index.ts
new file mode 100644
index 0000000..1e52b8e
--- /dev/null
+++ b/date-fns/src/quartersToMonths/index.ts
@@ -0,0 +1,25 @@
+import requiredArgs from '../_lib/requiredArgs/index'
+import { monthsInQuarter } from '../constants/index'
+
+/**
+ * @name quartersToMonths
+ * @category Conversion Helpers
+ * @summary Convert number of quarters to months.
+ *
+ * @description
+ * Convert a number of quarters to a full number of months.
+ *
+ * @param {number} quarters - number of quarters to be converted
+ *
+ * @returns {number} the number of quarters converted in months
+ * @throws {TypeError} 1 argument required
+ *
+ * @example
+ * // Convert 2 quarters to months
+ * const result = quartersToMonths(2)
+ * //=> 6
+ */
+export default function quartersToMonths(quarters: number): number {
+ requiredArgs(1, arguments)
+ return Math.floor(quarters * monthsInQuarter)
+}
diff --git a/date-fns/src/quartersToMonths/test.ts b/date-fns/src/quartersToMonths/test.ts
new file mode 100644
index 0000000..8fb7f41
--- /dev/null
+++ b/date-fns/src/quartersToMonths/test.ts
@@ -0,0 +1,21 @@
+/* eslint-env mocha */
+
+import assert from 'assert'
+import quartersToMonths from '.'
+
+describe('quartersToMonths', function () {
+ it('converts quarters to months', function () {
+ assert(quartersToMonths(1) === 3)
+ assert(quartersToMonths(2) === 6)
+ })
+
+ it('uses floor rounding', () => {
+ assert(quartersToMonths(1.5) === 4)
+ assert(quartersToMonths(0.3) === 0)
+ })
+
+ it('handles border values', () => {
+ assert(quartersToMonths(0.4) === 1)
+ assert(quartersToMonths(0) === 0)
+ })
+})
diff --git a/date-fns/src/quartersToYears/index.d.ts b/date-fns/src/quartersToYears/index.d.ts
new file mode 100644
index 0000000..1249037
--- /dev/null
+++ b/date-fns/src/quartersToYears/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { quartersToYears } from 'date-fns'
+export default quartersToYears
diff --git a/date-fns/src/quartersToYears/index.js.flow b/date-fns/src/quartersToYears/index.js.flow
new file mode 100644
index 0000000..8225923
--- /dev/null
+++ b/date-fns/src/quartersToYears/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (quarters: number) => number
diff --git a/date-fns/src/quartersToYears/index.ts b/date-fns/src/quartersToYears/index.ts
new file mode 100644
index 0000000..8f3d0e9
--- /dev/null
+++ b/date-fns/src/quartersToYears/index.ts
@@ -0,0 +1,31 @@
+import requiredArgs from '../_lib/requiredArgs/index'
+import { quartersInYear } from '../constants/index'
+
+/**
+ * @name quartersToYears
+ * @category Conversion Helpers
+ * @summary Convert number of quarters to years.
+ *
+ * @description
+ * Convert a number of quarters to a full number of years.
+ *
+ * @param {number} quarters - number of quarters to be converted
+ *
+ * @returns {number} the number of quarters converted in years
+ * @throws {TypeError} 1 argument required
+ *
+ * @example
+ * // Convert 8 quarters to years
+ * const result = quartersToYears(8)
+ * //=> 2
+ *
+ * @example
+ * // It uses floor rounding:
+ * const result = quartersToYears(11)
+ * //=> 2
+ */
+export default function quartersToYears(quarters: number): number {
+ requiredArgs(1, arguments)
+ const years = quarters / quartersInYear
+ return Math.floor(years)
+}
diff --git a/date-fns/src/quartersToYears/test.ts b/date-fns/src/quartersToYears/test.ts
new file mode 100644
index 0000000..7fe9f6f
--- /dev/null
+++ b/date-fns/src/quartersToYears/test.ts
@@ -0,0 +1,21 @@
+/* eslint-env mocha */
+
+import assert from 'assert'
+import quartersToYears from '.'
+
+describe('quartersToYears', function () {
+ it('converts quarters to years', function () {
+ assert(quartersToYears(4) === 1)
+ assert(quartersToYears(8) === 2)
+ })
+
+ it('uses floor rounding', () => {
+ assert(quartersToYears(5) === 1)
+ assert(quartersToYears(3) === 0)
+ })
+
+ it('handles border values', () => {
+ assert(quartersToYears(4.5) === 1)
+ assert(quartersToYears(0) === 0)
+ })
+})
diff --git a/date-fns/src/roundToNearestMinutes/index.d.ts b/date-fns/src/roundToNearestMinutes/index.d.ts
new file mode 100644
index 0000000..8e56491
--- /dev/null
+++ b/date-fns/src/roundToNearestMinutes/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { roundToNearestMinutes } from 'date-fns'
+export default roundToNearestMinutes
diff --git a/date-fns/src/roundToNearestMinutes/index.js b/date-fns/src/roundToNearestMinutes/index.js
new file mode 100644
index 0000000..4a94c75
--- /dev/null
+++ b/date-fns/src/roundToNearestMinutes/index.js
@@ -0,0 +1,61 @@
+import toDate from '../toDate/index'
+import toInteger from '../_lib/toInteger/index'
+
+/**
+ * @name roundToNearestMinutes
+ * @category Minute Helpers
+ * @summary Rounds the given date to the nearest minute
+ *
+ * @description
+ * Rounds the given date to the nearest minute (or number of minutes).
+ * Rounds up when the given date is exactly between the nearest round minutes.
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} date - the date to round
+ * @param {Object} [options] - an object with options.
+ * @param {Number} [options.nearestTo=1] - nearest number of minutes to round to. E.g. `15` to round to quarter hours.
+ * @returns {Date} the new date rounded to the closest minute
+ * @throws {TypeError} 1 argument required
+ * @throws {RangeError} `options.nearestTo` must be between 1 and 30
+ *
+ * @example
+ * // Round 10 July 2014 12:12:34 to nearest minute:
+ * var result = roundToNearestMinutes(new Date(2014, 6, 10, 12, 12, 34))
+ * //=> Thu Jul 10 2014 12:13:00
+ *
+ * @example
+ * // Round 10 July 2014 12:07:30 to nearest quarter hour:
+ * var result = roundToNearestMinutes(new Date(2014, 6, 10, 12, 12, 34), { nearestTo: 15 })
+ * // rounds up because given date is exactly between 12:00:00 and 12:15:00
+ * //=> Thu Jul 10 2014 12:15:00
+ */
+export default function roundToNearestMinutes(dirtyDate, options) {
+ if (arguments.length < 1) {
+ throw new TypeError('1 argument required, but only none provided present')
+ }
+
+ var nearestTo =
+ options && 'nearestTo' in options ? toInteger(options.nearestTo) : 1
+
+ if (nearestTo < 1 || nearestTo > 30) {
+ throw new RangeError('`options.nearestTo` must be between 1 and 30')
+ }
+
+ var date = toDate(dirtyDate)
+ var seconds = date.getSeconds() // relevant if nearestTo is 1, which is the default case
+ var minutes = date.getMinutes() + seconds / 60
+ var roundedMinutes = Math.floor(minutes / nearestTo) * nearestTo
+ var remainderMinutes = minutes % nearestTo
+ var addedMinutes = Math.round(remainderMinutes / nearestTo) * nearestTo
+
+ return new Date(
+ date.getFullYear(),
+ date.getMonth(),
+ date.getDate(),
+ date.getHours(),
+ roundedMinutes + addedMinutes
+ )
+}
diff --git a/date-fns/src/roundToNearestMinutes/index.js.flow b/date-fns/src/roundToNearestMinutes/index.js.flow
new file mode 100644
index 0000000..8e6f0ec
--- /dev/null
+++ b/date-fns/src/roundToNearestMinutes/index.js.flow
@@ -0,0 +1,57 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (
+ date: Date | number,
+ options?: {
+ nearestTo?: number,
+ }
+) => Date
diff --git a/date-fns/src/roundToNearestMinutes/test.js b/date-fns/src/roundToNearestMinutes/test.js
new file mode 100644
index 0000000..e4f7c04
--- /dev/null
+++ b/date-fns/src/roundToNearestMinutes/test.js
@@ -0,0 +1,70 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import roundToNearestMinutes from '.'
+
+describe('roundToNearestMinutes', function() {
+ it('rounds given date to the nearest minute by default', function() {
+ var result = roundToNearestMinutes(
+ new Date(2014, 6 /* Jul */, 10, 12, 16, 16)
+ )
+ assert.deepEqual(result, new Date(2014, 6 /* Jul */, 10, 12, 16, 0))
+ })
+
+ it('accepts a timestamp', function() {
+ var result = roundToNearestMinutes(
+ new Date(2014, 6 /* Jul */, 10, 12, 13, 16).getTime()
+ )
+ assert.deepEqual(result, new Date(2014, 6 /* Jul */, 10, 12, 13, 0))
+ })
+
+ it('rounds to the closest x minutes if nearestTo is provided', function() {
+ var result = roundToNearestMinutes(
+ new Date(2014, 6 /* Jul */, 10, 12, 10, 30),
+ { nearestTo: 4 }
+ )
+ assert.deepEqual(result, new Date(2014, 6 /* Jul */, 10, 12, 12, 0))
+ })
+
+ it('rounds up >=30 seconds for nearestTo=1', function() {
+ var result = roundToNearestMinutes(
+ new Date(2014, 6 /* Jul */, 10, 12, 13, 30)
+ )
+ assert.deepEqual(result, new Date(2014, 6 /* Jul */, 10, 12, 14, 0))
+ })
+
+ it('rounds down <30 seconds for nearestTo=1', function() {
+ var result = roundToNearestMinutes(
+ new Date(2014, 6 /* Jul */, 10, 12, 13, 29, 999)
+ )
+ assert.deepEqual(result, new Date(2014, 6 /* Jul */, 10, 12, 13, 0))
+ })
+
+ it('does not mutate the original date', function() {
+ var date = new Date(2014, 6 /* Jul */, 10, 12, 10, 10, 99)
+ roundToNearestMinutes(date)
+ assert.deepEqual(date, new Date(2014, 6 /* Jul */, 10, 12, 10, 10, 99))
+ })
+
+ it('returns `Invalid Date` if the given date is invalid', function() {
+ var result = roundToNearestMinutes(new Date(NaN))
+ assert(result instanceof Date && isNaN(result))
+ })
+
+ it('throws `TypeError` exception if passed less than 1 argument', function() {
+ assert.throws(roundToNearestMinutes.bind(null), TypeError)
+ })
+
+ it('throws `RangeError` if nearestTo is not between 1 and 30', function() {
+ var date = new Date(2014, 6 /* Jul */, 10, 12, 10, 30)
+ assert.throws(
+ roundToNearestMinutes.bind(null, date, { nearestTo: 31 }),
+ RangeError
+ )
+ assert.throws(
+ roundToNearestMinutes.bind(null, date, { nearestTo: 0 }),
+ RangeError
+ )
+ })
+})
diff --git a/date-fns/src/secondsToHours/index.d.ts b/date-fns/src/secondsToHours/index.d.ts
new file mode 100644
index 0000000..89fcc9a
--- /dev/null
+++ b/date-fns/src/secondsToHours/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { secondsToHours } from 'date-fns'
+export default secondsToHours
diff --git a/date-fns/src/secondsToHours/index.js.flow b/date-fns/src/secondsToHours/index.js.flow
new file mode 100644
index 0000000..371c79a
--- /dev/null
+++ b/date-fns/src/secondsToHours/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (seconds: number) => number
diff --git a/date-fns/src/secondsToHours/index.ts b/date-fns/src/secondsToHours/index.ts
new file mode 100644
index 0000000..ba87b10
--- /dev/null
+++ b/date-fns/src/secondsToHours/index.ts
@@ -0,0 +1,31 @@
+import requiredArgs from '../_lib/requiredArgs/index'
+import { secondsInHour } from '../constants/index'
+
+/**
+ * @name secondsToHours
+ * @category Conversion Helpers
+ * @summary Convert seconds to hours.
+ *
+ * @description
+ * Convert a number of seconds to a full number of hours.
+ *
+ * @param {number} seconds - number of seconds to be converted
+ *
+ * @returns {number} the number of seconds converted in hours
+ * @throws {TypeError} 1 argument required
+ *
+ * @example
+ * // Convert 7200 seconds into hours
+ * const result = secondsToHours(7200)
+ * //=> 2
+ *
+ * @example
+ * // It uses floor rounding:
+ * const result = secondsToHours(7199)
+ * //=> 1
+ */
+export default function secondsToHours(seconds: number): number {
+ requiredArgs(1, arguments)
+ const hours = seconds / secondsInHour
+ return Math.floor(hours)
+}
diff --git a/date-fns/src/secondsToHours/test.ts b/date-fns/src/secondsToHours/test.ts
new file mode 100644
index 0000000..12b3ecf
--- /dev/null
+++ b/date-fns/src/secondsToHours/test.ts
@@ -0,0 +1,21 @@
+/* eslint-env mocha */
+
+import assert from 'assert'
+import secondsToHours from '.'
+
+describe('secondsToHours', function () {
+ it('converts seconds to hours', function () {
+ assert(secondsToHours(3600) === 1)
+ assert(secondsToHours(7200) === 2)
+ })
+
+ it('uses floor rounding', () => {
+ assert(secondsToHours(3601) === 1)
+ assert(secondsToHours(3599) === 0)
+ })
+
+ it('handles border values', () => {
+ assert(secondsToHours(3600.5) === 1)
+ assert(secondsToHours(0) === 0)
+ })
+})
diff --git a/date-fns/src/secondsToMilliseconds/index.d.ts b/date-fns/src/secondsToMilliseconds/index.d.ts
new file mode 100644
index 0000000..a208037
--- /dev/null
+++ b/date-fns/src/secondsToMilliseconds/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { secondsToMilliseconds } from 'date-fns'
+export default secondsToMilliseconds
diff --git a/date-fns/src/secondsToMilliseconds/index.js.flow b/date-fns/src/secondsToMilliseconds/index.js.flow
new file mode 100644
index 0000000..371c79a
--- /dev/null
+++ b/date-fns/src/secondsToMilliseconds/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (seconds: number) => number
diff --git a/date-fns/src/secondsToMilliseconds/index.ts b/date-fns/src/secondsToMilliseconds/index.ts
new file mode 100644
index 0000000..2e4a663
--- /dev/null
+++ b/date-fns/src/secondsToMilliseconds/index.ts
@@ -0,0 +1,25 @@
+import requiredArgs from '../_lib/requiredArgs/index'
+import { millisecondsInSecond } from '../constants/index'
+
+/**
+ * @name secondsToMilliseconds
+ * @category Conversion Helpers
+ * @summary Convert seconds to milliseconds.
+ *
+ * @description
+ * Convert a number of seconds to a full number of milliseconds.
+ *
+ * @param {number} seconds - number of seconds to be converted
+ *
+ * @returns {number} the number of seconds converted in milliseconds
+ * @throws {TypeError} 1 argument required
+ *
+ * @example
+ * // Convert 2 seconds into milliseconds
+ * const result = secondsToMilliseconds(2)
+ * //=> 2000
+ */
+export default function secondsToMilliseconds(seconds: number): number {
+ requiredArgs(1, arguments)
+ return seconds * millisecondsInSecond
+}
diff --git a/date-fns/src/secondsToMilliseconds/test.ts b/date-fns/src/secondsToMilliseconds/test.ts
new file mode 100644
index 0000000..26bc2eb
--- /dev/null
+++ b/date-fns/src/secondsToMilliseconds/test.ts
@@ -0,0 +1,16 @@
+/* eslint-env mocha */
+
+import assert from 'assert'
+import secondsToMilliseconds from '.'
+
+describe('secondsToMilliseconds', function () {
+ it('converts seconds to milliseconds', function () {
+ assert(secondsToMilliseconds(1) === 1000)
+ assert(secondsToMilliseconds(2) === 2000)
+ })
+
+ it('handles border values', () => {
+ assert(secondsToMilliseconds(1.5) === 1500)
+ assert(secondsToMilliseconds(0) === 0)
+ })
+})
diff --git a/date-fns/src/secondsToMinutes/index.d.ts b/date-fns/src/secondsToMinutes/index.d.ts
new file mode 100644
index 0000000..22846dd
--- /dev/null
+++ b/date-fns/src/secondsToMinutes/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { secondsToMinutes } from 'date-fns'
+export default secondsToMinutes
diff --git a/date-fns/src/secondsToMinutes/index.js.flow b/date-fns/src/secondsToMinutes/index.js.flow
new file mode 100644
index 0000000..371c79a
--- /dev/null
+++ b/date-fns/src/secondsToMinutes/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (seconds: number) => number
diff --git a/date-fns/src/secondsToMinutes/index.ts b/date-fns/src/secondsToMinutes/index.ts
new file mode 100644
index 0000000..530c21e
--- /dev/null
+++ b/date-fns/src/secondsToMinutes/index.ts
@@ -0,0 +1,31 @@
+import requiredArgs from '../_lib/requiredArgs/index'
+import { secondsInMinute } from '../constants/index'
+
+/**
+ * @name secondsToMinutes
+ * @category Conversion Helpers
+ * @summary Convert seconds to minutes.
+ *
+ * @description
+ * Convert a number of seconds to a full number of minutes.
+ *
+ * @param {number} seconds - number of seconds to be converted
+ *
+ * @returns {number} the number of seconds converted in minutes
+ * @throws {TypeError} 1 argument required
+ *
+ * @example
+ * // Convert 120 seconds into minutes
+ * const result = secondsToMinutes(120)
+ * //=> 2
+ *
+ * @example
+ * // It uses floor rounding:
+ * const result = secondsToMinutes(119)
+ * //=> 1
+ */
+export default function secondsToMinutes(seconds: number): number {
+ requiredArgs(1, arguments)
+ const minutes = seconds / secondsInMinute
+ return Math.floor(minutes)
+}
diff --git a/date-fns/src/secondsToMinutes/test.ts b/date-fns/src/secondsToMinutes/test.ts
new file mode 100644
index 0000000..3cf59e9
--- /dev/null
+++ b/date-fns/src/secondsToMinutes/test.ts
@@ -0,0 +1,21 @@
+/* eslint-env mocha */
+
+import assert from 'assert'
+import secondsToMinutes from '.'
+
+describe('secondsToMinutes', function () {
+ it('converts seconds to minutes', function () {
+ assert(secondsToMinutes(60) === 1)
+ assert(secondsToMinutes(120) === 2)
+ })
+
+ it('uses floor rounding', () => {
+ assert(secondsToMinutes(61) === 1)
+ assert(secondsToMinutes(59) === 0)
+ })
+
+ it('handles border values', () => {
+ assert(secondsToMinutes(60.5) === 1)
+ assert(secondsToMinutes(0) === 0)
+ })
+})
diff --git a/date-fns/src/set/benchmark.js b/date-fns/src/set/benchmark.js
new file mode 100644
index 0000000..55e2c16
--- /dev/null
+++ b/date-fns/src/set/benchmark.js
@@ -0,0 +1,25 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import set from '.'
+import moment from 'moment'
+
+suite(
+ 'set',
+ function() {
+ benchmark('date-fns', function() {
+ return set(this.date, { year: 2014, month: 8 })
+ })
+
+ benchmark('Moment.js', function() {
+ return this.moment.set({ year: 2014, month: 3 })
+ })
+ },
+ {
+ setup: function() {
+ this.date = new Date(2013, 7)
+ this.moment = moment()
+ }
+ }
+)
diff --git a/date-fns/src/set/index.d.ts b/date-fns/src/set/index.d.ts
new file mode 100644
index 0000000..d30347b
--- /dev/null
+++ b/date-fns/src/set/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { set } from 'date-fns'
+export default set
diff --git a/date-fns/src/set/index.js.flow b/date-fns/src/set/index.js.flow
new file mode 100644
index 0000000..384f137
--- /dev/null
+++ b/date-fns/src/set/index.js.flow
@@ -0,0 +1,63 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (
+ date: Date | number,
+ values: {
+ year?: number,
+ month?: number,
+ date?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+ milliseconds?: number,
+ }
+) => Date
diff --git a/date-fns/src/set/index.ts b/date-fns/src/set/index.ts
new file mode 100644
index 0000000..e7c692e
--- /dev/null
+++ b/date-fns/src/set/index.ts
@@ -0,0 +1,89 @@
+import toDate from '../toDate/index'
+import setMonth from '../setMonth/index'
+import toInteger from '../_lib/toInteger/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+import { DateValues } from '../types';
+
+/**
+ * @name set
+ * @category Common Helpers
+ * @summary Set date values to a given date.
+ *
+ * @description
+ * Set date values to a given date.
+ *
+ * Sets time values to date from object `values`.
+ * A value is not set if it is undefined or null or doesn't exist in `values`.
+ *
+ * Note about bundle size: `set` does not internally use `setX` functions from date-fns but instead opts
+ * to use native `Date#setX` methods. If you use this function, you may not want to include the
+ * other `setX` functions that date-fns provides if you are concerned about the bundle size.
+ *
+ * @param {Date|Number} date - the date to be changed
+ * @param {Object} values - an object with options
+ * @param {Number} [values.year] - the number of years to be set
+ * @param {Number} [values.month] - the number of months to be set
+ * @param {Number} [values.date] - the number of days to be set
+ * @param {Number} [values.hours] - the number of hours to be set
+ * @param {Number} [values.minutes] - the number of minutes to be set
+ * @param {Number} [values.seconds] - the number of seconds to be set
+ * @param {Number} [values.milliseconds] - the number of milliseconds to be set
+ * @returns {Date} the new date with options set
+ * @throws {TypeError} 2 arguments required
+ * @throws {RangeError} `values` must be an object
+ *
+ * @example
+ * // Transform 1 September 2014 into 20 October 2015 in a single line:
+ * var result = set(new Date(2014, 8, 20), { year: 2015, month: 9, date: 20 })
+ * //=> Tue Oct 20 2015 00:00:00
+ *
+ * @example
+ * // Set 12 PM to 1 September 2014 01:23:45 to 1 September 2014 12:00:00:
+ * var result = set(new Date(2014, 8, 1, 1, 23, 45), { hours: 12 })
+ * //=> Mon Sep 01 2014 12:23:45
+ */
+
+export default function set(dirtyDate: Date | number, values: DateValues): Date {
+ requiredArgs(2, arguments)
+
+ if (typeof values !== 'object' || values === null) {
+ throw new RangeError('values parameter must be an object')
+ }
+
+ let date = toDate(dirtyDate)
+
+ // Check if date is Invalid Date because Date.prototype.setFullYear ignores the value of Invalid Date
+ if (isNaN(date.getTime())) {
+ return new Date(NaN)
+ }
+
+ if (values.year != null) {
+ date.setFullYear(values.year)
+ }
+
+ if (values.month != null) {
+ date = setMonth(date, values.month)
+ }
+
+ if (values.date != null) {
+ date.setDate(toInteger(values.date))
+ }
+
+ if (values.hours != null) {
+ date.setHours(toInteger(values.hours))
+ }
+
+ if (values.minutes != null) {
+ date.setMinutes(toInteger(values.minutes))
+ }
+
+ if (values.seconds != null) {
+ date.setSeconds(toInteger(values.seconds))
+ }
+
+ if (values.milliseconds != null) {
+ date.setMilliseconds(toInteger(values.milliseconds))
+ }
+
+ return date
+}
diff --git a/date-fns/src/set/test.ts b/date-fns/src/set/test.ts
new file mode 100644
index 0000000..52e0f23
--- /dev/null
+++ b/date-fns/src/set/test.ts
@@ -0,0 +1,143 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import set from '.'
+
+describe('set', function() {
+ it('sets all values', function() {
+ const result = set(new Date(2013, 0 /* Jan */), {
+ year: 2014,
+ month: 8, // Sep
+ date: 20,
+ hours: 12,
+ minutes: 12,
+ seconds: 12,
+ milliseconds: 12
+ })
+ assert.deepEqual(
+ result.toString(),
+ new Date(2014, 8 /* Sep */, 20, 12, 12, 12, 12).toString()
+ )
+ })
+
+ it('sets year', function() {
+ const result = set(new Date(2013, 8 /* Sep */), { year: 2014 })
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */))
+ })
+
+ it('sets month', function() {
+ const result = set(new Date(2014, 8 /* Sep */), { month: 9 /* Oct */ })
+ assert.deepEqual(result, new Date(2014, 9 /* Oct */))
+ })
+
+ it('sets day of month', function() {
+ const result = set(new Date(2014, 8 /* Sep */), { date: 20 })
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */, 20))
+ })
+
+ it('sets hours', function() {
+ const result = set(new Date(2014, 8 /* Sep */, 1), { hours: 12 })
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */, 1, 12))
+ })
+
+ it('sets minutes', function() {
+ const result = set(new Date(2014, 8 /* Sep */, 1, 1), { minutes: 12 })
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */, 1, 1, 12))
+ })
+
+ it('sets seconds', function() {
+ const result = set(new Date(2014, 8 /* Sep */, 1, 1, 1), { seconds: 12 })
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */, 1, 1, 1, 12))
+ })
+
+ it('sets milliseconds', function() {
+ const result = set(new Date(2014, 8 /* Sep */, 1, 1, 1, 1), {
+ milliseconds: 500
+ })
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */, 1, 1, 1, 1, 500))
+ })
+
+ describe('value overflow', function() {
+ it('months overflow into years', function() {
+ const result = set(new Date(2014, 8 /* Sep */, 1), {
+ month: 12 /* 13th month */
+ })
+ assert.deepEqual(result, new Date(2015, 0 /* Jan */, 1))
+ })
+
+ it('days of months overflow into months', function() {
+ const result = set(new Date(2014, 8 /* Sep */, 1), { date: 31 })
+ assert.deepEqual(result, new Date(2014, 9 /* Oct */, 1))
+ })
+
+ it('hours overflow into days', function() {
+ const result = set(new Date(2014, 8 /* Sep */, 19), { hours: 24 })
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */, 20))
+ })
+
+ it('minutes overflow into hours', function() {
+ const result = set(new Date(2014, 8 /* Sep */, 20, 11), { minutes: 60 })
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */, 20, 12))
+ })
+
+ it('seconds overflow into minutes', function() {
+ const result = set(new Date(2014, 8 /* Sep */, 20, 12, 58), { seconds: 60 })
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */, 20, 12, 59))
+ })
+
+ it('milliseconds overflow into seconds', function() {
+ const result = set(new Date(2014, 8 /* Sep */, 20, 12, 58, 30), {
+ milliseconds: 1000
+ })
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */, 20, 12, 58, 31))
+ })
+ })
+
+ describe('edge cases', function() {
+ it('sets January', function() {
+ const result = set(new Date(2014, 8 /* Sep */), { month: 0 /* Jan */ })
+ assert.deepEqual(result, new Date(2014, 0 /* Jan */))
+ })
+
+ it('sets the last day of new month if the initial date was the last day of a longer month', function() {
+ const result = set(new Date(2014, 7 /* Aug */, 31), { month: 8 /* Sep */ })
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */, 30))
+ })
+
+ it('ignores undefined values', function() {
+ const result = set(new Date(2014, 8 /* Sep */), { year: undefined })
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */))
+ })
+
+ it('ignores null values', function() {
+ // @ts-expect-error
+ const result = set(new Date(2014, 8 /* Sep */), { year: null })
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */))
+ })
+
+ it('throws TypeError exception if passed less than 2 arguments', function() {
+ assert.throws(set.bind(null), TypeError)
+ })
+
+ it('returns Invalid Date if any value in values is NaN', function() {
+ const result = set(new Date(2014, 8 /* Sep */), { year: NaN })
+ assert.deepEqual(isNaN(result.getTime()), isNaN((new Date(NaN)).getTime()))
+ })
+
+ it('returns Invalid Date the initial date was Invalid Date as well', function() {
+ const result = set(new Date(NaN), { year: 2019 })
+ assert.deepEqual(isNaN(result.getTime()), isNaN((new Date(NaN)).getTime()))
+ })
+
+ it('throws RangeError exception if `values` is not an object', function() {
+ // @ts-expect-error
+ assert.throws(set.bind(null, new Date(), true), RangeError)
+ })
+
+ it('throws RangeError exception if `values` is null', function() {
+ // @ts-expect-error
+ assert.throws(set.bind(null, new Date(), null), RangeError)
+ })
+ })
+})
diff --git a/date-fns/src/setDate/benchmark.js b/date-fns/src/setDate/benchmark.js
new file mode 100644
index 0000000..3145d0d
--- /dev/null
+++ b/date-fns/src/setDate/benchmark.js
@@ -0,0 +1,21 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import setDate from '.'
+import moment from 'moment'
+
+suite('setDate', function () {
+ benchmark('date-fns', function () {
+ return setDate(this.date, 15)
+ })
+
+ benchmark('Moment.js', function () {
+ return this.moment.date(15)
+ })
+}, {
+ setup: function () {
+ this.date = new Date()
+ this.moment = moment()
+ }
+})
diff --git a/date-fns/src/setDate/index.d.ts b/date-fns/src/setDate/index.d.ts
new file mode 100644
index 0000000..677ea30
--- /dev/null
+++ b/date-fns/src/setDate/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { setDate } from 'date-fns'
+export default setDate
diff --git a/date-fns/src/setDate/index.js.flow b/date-fns/src/setDate/index.js.flow
new file mode 100644
index 0000000..8c9b807
--- /dev/null
+++ b/date-fns/src/setDate/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (date: Date | number, dayOfMonth: number) => Date
diff --git a/date-fns/src/setDate/index.ts b/date-fns/src/setDate/index.ts
new file mode 100644
index 0000000..ab757f3
--- /dev/null
+++ b/date-fns/src/setDate/index.ts
@@ -0,0 +1,34 @@
+import toInteger from '../_lib/toInteger/index'
+import toDate from '../toDate/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name setDate
+ * @category Day Helpers
+ * @summary Set the day of the month to the given date.
+ *
+ * @description
+ * Set the day of the month to the given date.
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} date - the date to be changed
+ * @param {Number} dayOfMonth - the day of the month of the new date
+ * @returns {Date} the new date with the day of the month set
+ * @throws {TypeError} 2 arguments required
+ *
+ * @example
+ * // Set the 30th day of the month to 1 September 2014:
+ * var result = setDate(new Date(2014, 8, 1), 30)
+ * //=> Tue Sep 30 2014 00:00:00
+ */
+export default function setDate(dirtyDate: Date | number, dirtyDayOfMonth: number): Date {
+ requiredArgs(2, arguments)
+
+ const date = toDate(dirtyDate)
+ const dayOfMonth = toInteger(dirtyDayOfMonth)
+ date.setDate(dayOfMonth)
+ return date
+}
diff --git a/date-fns/src/setDate/test.ts b/date-fns/src/setDate/test.ts
new file mode 100644
index 0000000..7c07ff5
--- /dev/null
+++ b/date-fns/src/setDate/test.ts
@@ -0,0 +1,49 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import setDate from '.'
+
+describe('setDate', function() {
+ it('sets the day of the month', function() {
+ const result = setDate(new Date(2014, 8 /* Sep */, 1), 30)
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */, 30))
+ })
+
+ it('accepts a timestamp', function() {
+ const result = setDate(new Date(2014, 8 /* Sep */, 1).getTime(), 25)
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */, 25))
+ })
+
+ it('converts a fractional number to an integer', function() {
+ const result = setDate(new Date(2014, 8 /* Sep */, 1), 30.3)
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */, 30))
+ })
+
+ it('implicitly converts number arguments', function() {
+ // @ts-expect-error
+ const result = setDate(new Date(2014, 8 /* Sep */, 1), '30')
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */, 30))
+ })
+
+ it('does not mutate the original date', function() {
+ const date = new Date(2014, 8 /* Sep */, 1)
+ setDate(date, 20)
+ assert.deepEqual(date, new Date(2014, 8 /* Sep */, 1))
+ })
+
+ it('returns `Invalid Date` if the given date is invalid', function() {
+ const result = setDate(new Date(NaN), 30)
+ assert(result instanceof Date && isNaN(result.getTime()))
+ })
+
+ it('returns `Invalid Date` if the given amount is NaN', function() {
+ const result = setDate(new Date(2014, 8 /* Sep */, 1), NaN)
+ assert(result instanceof Date && isNaN(result.getTime()))
+ })
+
+ it('throws TypeError exception if passed less than 2 arguments', function() {
+ assert.throws(setDate.bind(null), TypeError)
+ assert.throws(setDate.bind(null, 1), TypeError)
+ })
+})
diff --git a/date-fns/src/setDay/benchmark.js b/date-fns/src/setDay/benchmark.js
new file mode 100644
index 0000000..4c60c7f
--- /dev/null
+++ b/date-fns/src/setDay/benchmark.js
@@ -0,0 +1,21 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import setDay from '.'
+import moment from 'moment'
+
+suite('setDay', function () {
+ benchmark('date-fns', function () {
+ return setDay(this.date, 3)
+ })
+
+ benchmark('Moment.js', function () {
+ return this.moment.day(3)
+ })
+}, {
+ setup: function () {
+ this.date = new Date()
+ this.moment = moment()
+ }
+})
diff --git a/date-fns/src/setDay/index.d.ts b/date-fns/src/setDay/index.d.ts
new file mode 100644
index 0000000..5b3d9d1
--- /dev/null
+++ b/date-fns/src/setDay/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { setDay } from 'date-fns'
+export default setDay
diff --git a/date-fns/src/setDay/index.js b/date-fns/src/setDay/index.js
new file mode 100644
index 0000000..9d21367
--- /dev/null
+++ b/date-fns/src/setDay/index.js
@@ -0,0 +1,69 @@
+import addDays from '../addDays/index'
+import toDate from '../toDate/index'
+import toInteger from '../_lib/toInteger/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name setDay
+ * @category Weekday Helpers
+ * @summary Set the day of the week to the given date.
+ *
+ * @description
+ * Set the day of the week to the given date.
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} date - the date to be changed
+ * @param {Number} day - the day of the week of the new date
+ * @param {Object} [options] - an object with options.
+ * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}
+ * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)
+ * @returns {Date} the new date with the day of the week set
+ * @throws {TypeError} 2 arguments required
+ * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6
+ *
+ * @example
+ * // Set week day to Sunday, with the default weekStartsOn of Sunday:
+ * var result = setDay(new Date(2014, 8, 1), 0)
+ * //=> Sun Aug 31 2014 00:00:00
+ *
+ * @example
+ * // Set week day to Sunday, with a weekStartsOn of Monday:
+ * var result = setDay(new Date(2014, 8, 1), 0, { weekStartsOn: 1 })
+ * //=> Sun Sep 07 2014 00:00:00
+ */
+export default function setDay(dirtyDate, dirtyDay, dirtyOptions) {
+ requiredArgs(2, arguments)
+
+ var options = dirtyOptions || {}
+ var locale = options.locale
+ var localeWeekStartsOn =
+ locale && locale.options && locale.options.weekStartsOn
+ var defaultWeekStartsOn =
+ localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn)
+ var weekStartsOn =
+ options.weekStartsOn == null
+ ? defaultWeekStartsOn
+ : toInteger(options.weekStartsOn)
+
+ // Test if weekStartsOn is between 0 and 6 _and_ is not NaN
+ if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {
+ throw new RangeError('weekStartsOn must be between 0 and 6 inclusively')
+ }
+
+ var date = toDate(dirtyDate, options)
+ var day = toInteger(dirtyDay)
+ var currentDay = date.getDay()
+
+ var remainder = day % 7
+ var dayIndex = (remainder + 7) % 7
+
+ var delta = 7 - weekStartsOn
+ var diff =
+ day < 0 || day > 6
+ ? day - ((currentDay + delta) % 7)
+ : ((dayIndex + delta) % 7) - ((currentDay + delta) % 7)
+ return addDays(date, diff, options)
+}
diff --git a/date-fns/src/setDay/index.js.flow b/date-fns/src/setDay/index.js.flow
new file mode 100644
index 0000000..4a2d43d
--- /dev/null
+++ b/date-fns/src/setDay/index.js.flow
@@ -0,0 +1,59 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (
+ date: Date | number,
+ day: number,
+ options?: {
+ locale?: Locale,
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ }
+) => Date
diff --git a/date-fns/src/setDay/test.js b/date-fns/src/setDay/test.js
new file mode 100644
index 0000000..552b0a9
--- /dev/null
+++ b/date-fns/src/setDay/test.js
@@ -0,0 +1,147 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import setDay from '.'
+
+describe('setDay', function () {
+ it('sets the day of the week', function () {
+ var result = setDay(new Date(2014, 8 /* Sep */, 1), 0)
+ assert.deepEqual(result, new Date(2014, 7 /* Aug */, 31))
+ })
+
+ it('allows to specify which day is the first day of the week', function () {
+ var result = setDay(new Date(2014, 8 /* Sep */, 1), 0, { weekStartsOn: 1 })
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */, 7))
+ })
+
+ it('allows to specify which day is the first day of the week in locale', function () {
+ var result = setDay(new Date(2014, 8 /* Sep */, 1), 0, {
+ // $ExpectedMistake
+ locale: {
+ options: { weekStartsOn: 1 },
+ },
+ })
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */, 7))
+ })
+
+ it('`options.weekStartsOn` overwrites the first day of the week specified in locale', function () {
+ var result = setDay(new Date(2014, 8 /* Sep */, 1), 0, {
+ weekStartsOn: 1,
+ // $ExpectedMistake
+ locale: {
+ options: { weekStartsOn: 0 },
+ },
+ })
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */, 7))
+ })
+
+ it('converts a fractional number to an integer', function () {
+ var result = setDay(new Date(2014, 8 /* Sep */, 1), 0.5)
+ assert.deepEqual(result, new Date(2014, 7 /* Aug */, 31))
+ })
+
+ it('implicitly converts options', function () {
+ // $ExpectedMistake
+ var result = setDay(new Date(2014, 8 /* Sep */, 1), 0, {
+ weekStartsOn: '1',
+ })
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */, 7))
+ })
+
+ it('specifies Monday as the first day of the week', function () {
+ var result = setDay(new Date(2014, 8 /* Sep */, 6), 1, {
+ weekStartsOn: 1,
+ })
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */, 1))
+ })
+
+ it('specifies Tuesday as the first day of the week', function () {
+ var result = setDay(new Date(2014, 8 /* Sep */, 6), 1, {
+ weekStartsOn: 2,
+ })
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */, 8))
+ })
+
+ describe('the day index is more than 6', function () {
+ it('sets the day of the next week', function () {
+ var result = setDay(new Date(2014, 8 /* Sep */, 1), 8)
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */, 8))
+ })
+
+ it('allows to specify which day is the first day of the week', function () {
+ var result = setDay(new Date(2014, 8 /* Sep */, 1), 7, {
+ weekStartsOn: 1,
+ })
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */, 8))
+ })
+
+ it('sets the day of another week in the future', function () {
+ var result = setDay(new Date(2014, 8 /* Sep */, 1), 14, {
+ weekStartsOn: 1,
+ })
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */, 15))
+ })
+ })
+
+ describe('the day index is less than 0', function () {
+ it('sets the day of the last week', function () {
+ var result = setDay(new Date(2014, 8 /* Sep */, 1), -6)
+ assert.deepEqual(result, new Date(2014, 7 /* Aug */, 25))
+ })
+
+ it('allows to specify which day is the first day of the week', function () {
+ var result = setDay(new Date(2014, 8 /* Sep */, 1), -7, {
+ weekStartsOn: 1,
+ })
+ assert.deepEqual(result, new Date(2014, 7 /* Aug */, 25))
+ })
+
+ it('set the day of another week in the past', function () {
+ var result = setDay(new Date(2014, 8 /* Sep */, 1), -14, {
+ weekStartsOn: 1,
+ })
+ assert.deepEqual(result, new Date(2014, 7 /* Aug */, 18))
+ })
+ })
+
+ it('accepts a timestamp', function () {
+ var result = setDay(new Date(2014, 8 /* Sep */, 1).getTime(), 3)
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */, 3))
+ })
+
+ it('implicitly converts number arguments', function () {
+ // $ExpectedMistake
+ var result = setDay(new Date(2014, 8 /* Sep */, 1), '5')
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */, 5))
+ })
+
+ it('does not mutate the original date', function () {
+ var date = new Date(2014, 8 /* Sep */, 1)
+ setDay(date, 3)
+ assert.deepEqual(date, new Date(2014, 8 /* Sep */, 1))
+ })
+
+ it('returns `Invalid Date` if the given date is invalid', function () {
+ var result = setDay(new Date(NaN), 0)
+ assert(result instanceof Date && isNaN(result))
+ })
+
+ it('returns `Invalid Date` if the given amount is NaN', function () {
+ var result = setDay(new Date(2014, 8 /* Sep */, 1), NaN)
+ assert(result instanceof Date && isNaN(result))
+ })
+
+ it('throws `RangeError` if `options.weekStartsOn` is not convertable to 0, 1, ..., 6 or undefined', function () {
+ // $ExpectedMistake
+ var block = setDay.bind(null, new Date(2014, 8 /* Sep */, 1), 0, {
+ weekStartsOn: NaN,
+ })
+ assert.throws(block, RangeError)
+ })
+
+ it('throws TypeError exception if passed less than 2 arguments', function () {
+ assert.throws(setDay.bind(null), TypeError)
+ assert.throws(setDay.bind(null, 1), TypeError)
+ })
+})
diff --git a/date-fns/src/setDayOfYear/benchmark.js b/date-fns/src/setDayOfYear/benchmark.js
new file mode 100644
index 0000000..8127098
--- /dev/null
+++ b/date-fns/src/setDayOfYear/benchmark.js
@@ -0,0 +1,21 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import setDayOfYear from '.'
+import moment from 'moment'
+
+suite('setDayOfYear', function () {
+ benchmark('date-fns', function () {
+ return setDayOfYear(this.date, 150)
+ })
+
+ benchmark('Moment.js', function () {
+ return this.moment.dayOfYear(150)
+ })
+}, {
+ setup: function () {
+ this.date = new Date()
+ this.moment = moment()
+ }
+})
diff --git a/date-fns/src/setDayOfYear/index.d.ts b/date-fns/src/setDayOfYear/index.d.ts
new file mode 100644
index 0000000..5536c57
--- /dev/null
+++ b/date-fns/src/setDayOfYear/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { setDayOfYear } from 'date-fns'
+export default setDayOfYear
diff --git a/date-fns/src/setDayOfYear/index.js.flow b/date-fns/src/setDayOfYear/index.js.flow
new file mode 100644
index 0000000..fc974d4
--- /dev/null
+++ b/date-fns/src/setDayOfYear/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (date: Date | number, dayOfYear: number) => Date
diff --git a/date-fns/src/setDayOfYear/index.ts b/date-fns/src/setDayOfYear/index.ts
new file mode 100644
index 0000000..d7b5421
--- /dev/null
+++ b/date-fns/src/setDayOfYear/index.ts
@@ -0,0 +1,38 @@
+import toInteger from '../_lib/toInteger/index'
+import toDate from '../toDate/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name setDayOfYear
+ * @category Day Helpers
+ * @summary Set the day of the year to the given date.
+ *
+ * @description
+ * Set the day of the year to the given date.
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} date - the date to be changed
+ * @param {Number} dayOfYear - the day of the year of the new date
+ * @returns {Date} the new date with the day of the year set
+ * @throws {TypeError} 2 arguments required
+ *
+ * @example
+ * // Set the 2nd day of the year to 2 July 2014:
+ * var result = setDayOfYear(new Date(2014, 6, 2), 2)
+ * //=> Thu Jan 02 2014 00:00:00
+ */
+export default function setDayOfYear(
+ dirtyDate: Date | number,
+ dirtyDayOfYear: number
+): Date {
+ requiredArgs(2, arguments)
+
+ const date = toDate(dirtyDate)
+ const dayOfYear = toInteger(dirtyDayOfYear)
+ date.setMonth(0)
+ date.setDate(dayOfYear)
+ return date
+}
diff --git a/date-fns/src/setDayOfYear/test.ts b/date-fns/src/setDayOfYear/test.ts
new file mode 100644
index 0000000..a58990b
--- /dev/null
+++ b/date-fns/src/setDayOfYear/test.ts
@@ -0,0 +1,50 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import setDayOfYear from '.'
+
+describe('setDayOfYear', function() {
+ it('sets the day of the year', function() {
+ const result = setDayOfYear(new Date(2014, 6 /* Jul */, 2), 2)
+ assert.deepEqual(result, new Date(2014, 0 /* Jan */, 2))
+ })
+
+ it('accepts a timestamp', function() {
+ const result = setDayOfYear(new Date(2014, 6 /* Jul */, 2).getTime(), 60)
+ assert.deepEqual(result, new Date(2014, 2 /* Mar */, 1))
+ })
+
+ it('converts a fractional number to an integer', function() {
+ const result = setDayOfYear(new Date(2014, 6 /* Jul */, 2), 2.75)
+ assert.deepEqual(result, new Date(2014, 0 /* Jan */, 2))
+ })
+
+ it('implicitly converts number arguments', function() {
+ // $ExpectedMistake
+ // @ts-expect-error
+ const result = setDayOfYear(new Date(2014, 6 /* Jul */, 2), '2')
+ assert.deepEqual(result, new Date(2014, 0 /* Jan */, 2))
+ })
+
+ it('does not mutate the original date', function() {
+ const date = new Date(2014, 6 /* Jul */, 2)
+ setDayOfYear(date, 365)
+ assert.deepEqual(date, new Date(2014, 6 /* Jul */, 2))
+ })
+
+ it('returns `Invalid Date` if the given date is invalid', function() {
+ const result = setDayOfYear(new Date(NaN), 2)
+ assert(result instanceof Date && isNaN(result))
+ })
+
+ it('returns `Invalid Date` if the given amount is NaN', function() {
+ const result = setDayOfYear(new Date(2014, 6 /* Jul */, 2), NaN)
+ assert(result instanceof Date && isNaN(result))
+ })
+
+ it('throws TypeError exception if passed less than 2 arguments', function() {
+ assert.throws(setDayOfYear.bind(null), TypeError)
+ assert.throws(setDayOfYear.bind(null, 1), TypeError)
+ })
+})
diff --git a/date-fns/src/setHours/benchmark.js b/date-fns/src/setHours/benchmark.js
new file mode 100644
index 0000000..bb59134
--- /dev/null
+++ b/date-fns/src/setHours/benchmark.js
@@ -0,0 +1,21 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import setHours from '.'
+import moment from 'moment'
+
+suite('setHours', function () {
+ benchmark('date-fns', function () {
+ return setHours(this.date, 14)
+ })
+
+ benchmark('Moment.js', function () {
+ return this.moment.hours(14)
+ })
+}, {
+ setup: function () {
+ this.date = new Date()
+ this.moment = moment()
+ }
+})
diff --git a/date-fns/src/setHours/index.d.ts b/date-fns/src/setHours/index.d.ts
new file mode 100644
index 0000000..2709a32
--- /dev/null
+++ b/date-fns/src/setHours/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { setHours } from 'date-fns'
+export default setHours
diff --git a/date-fns/src/setHours/index.js b/date-fns/src/setHours/index.js
new file mode 100644
index 0000000..d699831
--- /dev/null
+++ b/date-fns/src/setHours/index.js
@@ -0,0 +1,34 @@
+import toInteger from '../_lib/toInteger/index'
+import toDate from '../toDate/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name setHours
+ * @category Hour Helpers
+ * @summary Set the hours to the given date.
+ *
+ * @description
+ * Set the hours to the given date.
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} date - the date to be changed
+ * @param {Number} hours - the hours of the new date
+ * @returns {Date} the new date with the hours set
+ * @throws {TypeError} 2 arguments required
+ *
+ * @example
+ * // Set 4 hours to 1 September 2014 11:30:00:
+ * var result = setHours(new Date(2014, 8, 1, 11, 30), 4)
+ * //=> Mon Sep 01 2014 04:30:00
+ */
+export default function setHours(dirtyDate, dirtyHours) {
+ requiredArgs(2, arguments)
+
+ var date = toDate(dirtyDate)
+ var hours = toInteger(dirtyHours)
+ date.setHours(hours)
+ return date
+}
diff --git a/date-fns/src/setHours/index.js.flow b/date-fns/src/setHours/index.js.flow
new file mode 100644
index 0000000..c9003bc
--- /dev/null
+++ b/date-fns/src/setHours/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (date: Date | number, hours: number) => Date
diff --git a/date-fns/src/setHours/test.js b/date-fns/src/setHours/test.js
new file mode 100644
index 0000000..a89f1a0
--- /dev/null
+++ b/date-fns/src/setHours/test.js
@@ -0,0 +1,49 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import setHours from '.'
+
+describe('setHours', function() {
+ it('sets the amount of hours', function() {
+ var result = setHours(new Date(2014, 8 /* Sep */, 1, 11, 30), 4)
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */, 1, 4, 30))
+ })
+
+ it('accepts a timestamp', function() {
+ var result = setHours(new Date(2014, 8 /* Sep */, 1, 11).getTime(), 5)
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */, 1, 5))
+ })
+
+ it('converts a fractional number to an integer', function() {
+ var result = setHours(new Date(2014, 8 /* Sep */, 1, 11, 30), 4.123)
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */, 1, 4, 30))
+ })
+
+ it('implicitly converts number arguments', function() {
+ // $ExpectedMistake
+ var result = setHours(new Date(2014, 8 /* Sep */, 1, 11, 30), '4')
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */, 1, 4, 30))
+ })
+
+ it('does not mutate the original date', function() {
+ var date = new Date(2014, 8 /* Sep */, 1, 11)
+ setHours(date, 12)
+ assert.deepEqual(date, new Date(2014, 8 /* Sep */, 1, 11))
+ })
+
+ it('returns `Invalid Date` if the given date is invalid', function() {
+ var result = setHours(new Date(NaN), 4)
+ assert(result instanceof Date && isNaN(result))
+ })
+
+ it('returns `Invalid Date` if the given amount is NaN', function() {
+ var result = setHours(new Date(2014, 8 /* Sep */, 1, 11, 30), NaN)
+ assert(result instanceof Date && isNaN(result))
+ })
+
+ it('throws TypeError exception if passed less than 2 arguments', function() {
+ assert.throws(setHours.bind(null), TypeError)
+ assert.throws(setHours.bind(null, 1), TypeError)
+ })
+})
diff --git a/date-fns/src/setISODay/benchmark.js b/date-fns/src/setISODay/benchmark.js
new file mode 100644
index 0000000..b7888ff
--- /dev/null
+++ b/date-fns/src/setISODay/benchmark.js
@@ -0,0 +1,21 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import setISODay from '.'
+import moment from 'moment'
+
+suite('setISODay', function () {
+ benchmark('date-fns', function () {
+ return setISODay(this.date, 5)
+ })
+
+ benchmark('Moment.js', function () {
+ return this.moment.isoWeekday(5)
+ })
+}, {
+ setup: function () {
+ this.date = new Date()
+ this.moment = moment()
+ }
+})
diff --git a/date-fns/src/setISODay/index.d.ts b/date-fns/src/setISODay/index.d.ts
new file mode 100644
index 0000000..63fb67a
--- /dev/null
+++ b/date-fns/src/setISODay/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { setISODay } from 'date-fns'
+export default setISODay
diff --git a/date-fns/src/setISODay/index.js.flow b/date-fns/src/setISODay/index.js.flow
new file mode 100644
index 0000000..07b0629
--- /dev/null
+++ b/date-fns/src/setISODay/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (date: Date | number, day: number) => Date
diff --git a/date-fns/src/setISODay/index.ts b/date-fns/src/setISODay/index.ts
new file mode 100644
index 0000000..ef76348
--- /dev/null
+++ b/date-fns/src/setISODay/index.ts
@@ -0,0 +1,39 @@
+import toInteger from '../_lib/toInteger/index'
+import toDate from '../toDate/index'
+import addDays from '../addDays/index'
+import getISODay from '../getISODay/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name setISODay
+ * @category Weekday Helpers
+ * @summary Set the day of the ISO week to the given date.
+ *
+ * @description
+ * Set the day of the ISO week to the given date.
+ * ISO week starts with Monday.
+ * 7 is the index of Sunday, 1 is the index of Monday etc.
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} date - the date to be changed
+ * @param {Number} day - the day of the ISO week of the new date
+ * @returns {Date} the new date with the day of the ISO week set
+ * @throws {TypeError} 2 arguments required
+ *
+ * @example
+ * // Set Sunday to 1 September 2014:
+ * const result = setISODay(new Date(2014, 8, 1), 7)
+ * //=> Sun Sep 07 2014 00:00:00
+ */
+export default function setISODay(dirtyDate: Date | number, dirtyDay: number): Date {
+ requiredArgs(2, arguments)
+
+ const date = toDate(dirtyDate)
+ const day = toInteger(dirtyDay)
+ const currentDay = getISODay(date)
+ const diff = day - currentDay
+ return addDays(date, diff)
+}
diff --git a/date-fns/src/setISODay/test.ts b/date-fns/src/setISODay/test.ts
new file mode 100644
index 0000000..0b8144a
--- /dev/null
+++ b/date-fns/src/setISODay/test.ts
@@ -0,0 +1,78 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import setISODay from '.'
+
+describe('setISODay', function () {
+ it('sets the day of the ISO week', function () {
+ const result = setISODay(new Date(2014, 8 /* Sep */, 1), 3)
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */, 3))
+ })
+
+ it('sets the day to Sunday of this ISO week if the index is 7', function () {
+ const result = setISODay(new Date(2014, 8 /* Sep */, 1), 7)
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */, 7))
+ })
+
+ describe('the day index is more than 7', function () {
+ it('sets the day of the next ISO week', function () {
+ const result = setISODay(new Date(2014, 8 /* Sep */, 1), 8)
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */, 8))
+ })
+
+ it('sets the day of another ISO week in the future', function () {
+ const result = setISODay(new Date(2014, 8 /* Sep */, 1), 21)
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */, 21))
+ })
+ })
+
+ describe('the day index is less than 1', function () {
+ it('sets the day of the last ISO week', function () {
+ const result = setISODay(new Date(2014, 8 /* Sep */, 1), 0)
+ assert.deepEqual(result, new Date(2014, 7 /* Aug */, 31))
+ })
+
+ it('set the day of another ISO week in the past', function () {
+ const result = setISODay(new Date(2014, 8 /* Sep */, 1), -13)
+ assert.deepEqual(result, new Date(2014, 7 /* Aug */, 18))
+ })
+ })
+
+ it('accepts a timestamp', function () {
+ const result = setISODay(new Date(2014, 8 /* Sep */, 1).getTime(), 3)
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */, 3))
+ })
+
+ it('converts a fractional number to an integer', function () {
+ const result = setISODay(new Date(2014, 8 /* Sep */, 1), 3.33)
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */, 3))
+ })
+
+ it('implicitly converts number arguments', function () {
+ // @ts-expect-error
+ const result = setISODay(new Date(2014, 8 /* Sep */, 1), '3')
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */, 3))
+ })
+
+ it('does not mutate the original date', function () {
+ const date = new Date(2014, 8 /* Sep */, 1)
+ setISODay(date, 3)
+ assert.deepEqual(date, new Date(2014, 8 /* Sep */, 1))
+ })
+
+ it('returns `Invalid Date` if the given date is invalid', function () {
+ const result = setISODay(new Date(NaN), 3)
+ assert(result instanceof Date && isNaN(result.getTime()))
+ })
+
+ it('returns `Invalid Date` if the given amount is NaN', function () {
+ const result = setISODay(new Date(2014, 8 /* Sep */, 1), NaN)
+ assert(result instanceof Date && isNaN(result.getTime()))
+ })
+
+ it('throws TypeError exception if passed less than 2 arguments', function () {
+ assert.throws(setISODay.bind(null), TypeError)
+ assert.throws(setISODay.bind(null, 1), TypeError)
+ })
+})
diff --git a/date-fns/src/setISOWeek/benchmark.js b/date-fns/src/setISOWeek/benchmark.js
new file mode 100644
index 0000000..27409fc
--- /dev/null
+++ b/date-fns/src/setISOWeek/benchmark.js
@@ -0,0 +1,21 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import setISOWeek from '.'
+import moment from 'moment'
+
+suite('setISOWeek', function () {
+ benchmark('date-fns', function () {
+ return setISOWeek(this.date, 10)
+ })
+
+ benchmark('Moment.js', function () {
+ return this.moment.isoWeek(10)
+ })
+}, {
+ setup: function () {
+ this.date = new Date()
+ this.moment = moment()
+ }
+})
diff --git a/date-fns/src/setISOWeek/index.d.ts b/date-fns/src/setISOWeek/index.d.ts
new file mode 100644
index 0000000..a2e7970
--- /dev/null
+++ b/date-fns/src/setISOWeek/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { setISOWeek } from 'date-fns'
+export default setISOWeek
diff --git a/date-fns/src/setISOWeek/index.js.flow b/date-fns/src/setISOWeek/index.js.flow
new file mode 100644
index 0000000..cf1ccb8
--- /dev/null
+++ b/date-fns/src/setISOWeek/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (date: Date | number, isoWeek: number) => Date
diff --git a/date-fns/src/setISOWeek/index.ts b/date-fns/src/setISOWeek/index.ts
new file mode 100644
index 0000000..82170f9
--- /dev/null
+++ b/date-fns/src/setISOWeek/index.ts
@@ -0,0 +1,38 @@
+import toInteger from '../_lib/toInteger/index'
+import toDate from '../toDate/index'
+import getISOWeek from '../getISOWeek/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name setISOWeek
+ * @category ISO Week Helpers
+ * @summary Set the ISO week to the given date.
+ *
+ * @description
+ * Set the ISO week to the given date, saving the weekday number.
+ *
+ * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} date - the date to be changed
+ * @param {Number} isoWeek - the ISO week of the new date
+ * @returns {Date} the new date with the ISO week set
+ * @throws {TypeError} 2 arguments required
+ *
+ * @example
+ * // Set the 53rd ISO week to 7 August 2004:
+ * const result = setISOWeek(new Date(2004, 7, 7), 53)
+ * //=> Sat Jan 01 2005 00:00:00
+ */
+export default function setISOWeek(dirtyDate: Date | number, dirtyISOWeek: number): Date {
+ requiredArgs(2, arguments)
+
+ const date = toDate(dirtyDate)
+ const isoWeek = toInteger(dirtyISOWeek)
+ const diff = getISOWeek(date) - isoWeek
+ date.setDate(date.getDate() - diff * 7)
+ return date
+}
diff --git a/date-fns/src/setISOWeek/test.ts b/date-fns/src/setISOWeek/test.ts
new file mode 100644
index 0000000..fe481e0
--- /dev/null
+++ b/date-fns/src/setISOWeek/test.ts
@@ -0,0 +1,60 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import setISOWeek from '.'
+
+describe('setISOWeek', function() {
+ it('sets the ISO week', function() {
+ const result = setISOWeek(new Date(2004, 7 /* Aug */, 7), 53)
+ assert.deepEqual(result, new Date(2005, 0 /* Jan */, 1))
+ })
+
+ it('accepts a timestamp', function() {
+ const result = setISOWeek(new Date(2009, 11 /* Dec */, 2).getTime(), 1)
+ assert.deepEqual(result, new Date(2008, 11 /* Dec */, 31))
+ })
+
+ it('converts a fractional number to an integer', function() {
+ const result = setISOWeek(new Date(2004, 7 /* Aug */, 7), 53.53)
+ assert.deepEqual(result, new Date(2005, 0 /* Jan */, 1))
+ })
+
+ it('implicitly converts number arguments', function() {
+ // @ts-expect-error
+ const result = setISOWeek(new Date(2004, 7 /* Aug */, 7), '53')
+ assert.deepEqual(result, new Date(2005, 0 /* Jan */, 1))
+ })
+
+ it('does not mutate the original date', function() {
+ var date = new Date(2014, 6 /* Jul */, 2)
+ setISOWeek(date, 52)
+ assert.deepEqual(date, new Date(2014, 6 /* Jul */, 2))
+ })
+
+ it('handles dates before 100 AD', function() {
+ const initialDate = new Date(0)
+ initialDate.setFullYear(4, 0 /* Jan */, 4)
+ initialDate.setHours(0, 0, 0, 0)
+ const expectedResult = new Date(0)
+ expectedResult.setFullYear(4, 11 /* Dec */, 26)
+ expectedResult.setHours(0, 0, 0, 0)
+ const result = setISOWeek(initialDate, 52)
+ assert.deepEqual(result, expectedResult)
+ })
+
+ it('returns `Invalid Date` if the given date is invalid', function() {
+ const result = setISOWeek(new Date(NaN), 53)
+ assert(result instanceof Date && isNaN(result.getTime()))
+ })
+
+ it('returns `Invalid Date` if the given amount is NaN', function() {
+ const result = setISOWeek(new Date(2004, 7 /* Aug */, 7), NaN)
+ assert(result instanceof Date && isNaN(result.getTime()))
+ })
+
+ it('throws TypeError exception if passed less than 2 arguments', function() {
+ assert.throws(setISOWeek.bind(null), TypeError)
+ assert.throws(setISOWeek.bind(null, 1), TypeError)
+ })
+})
diff --git a/date-fns/src/setISOWeekYear/benchmark.js b/date-fns/src/setISOWeekYear/benchmark.js
new file mode 100644
index 0000000..1f93381
--- /dev/null
+++ b/date-fns/src/setISOWeekYear/benchmark.js
@@ -0,0 +1,21 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import setISOWeekYear from '.'
+import moment from 'moment'
+
+suite('setISOWeekYear', function () {
+ benchmark('date-fns', function () {
+ return setISOWeekYear(this.date, 2008)
+ })
+
+ benchmark('Moment.js', function () {
+ return this.moment.isoWeekYear(2008)
+ })
+}, {
+ setup: function () {
+ this.date = new Date()
+ this.moment = moment()
+ }
+})
diff --git a/date-fns/src/setISOWeekYear/index.d.ts b/date-fns/src/setISOWeekYear/index.d.ts
new file mode 100644
index 0000000..ab8ea95
--- /dev/null
+++ b/date-fns/src/setISOWeekYear/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { setISOWeekYear } from 'date-fns'
+export default setISOWeekYear
diff --git a/date-fns/src/setISOWeekYear/index.js.flow b/date-fns/src/setISOWeekYear/index.js.flow
new file mode 100644
index 0000000..43beb65
--- /dev/null
+++ b/date-fns/src/setISOWeekYear/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (date: Date | number, isoWeekYear: number) => Date
diff --git a/date-fns/src/setISOWeekYear/index.ts b/date-fns/src/setISOWeekYear/index.ts
new file mode 100644
index 0000000..20d0051
--- /dev/null
+++ b/date-fns/src/setISOWeekYear/index.ts
@@ -0,0 +1,49 @@
+import toInteger from '../_lib/toInteger/index'
+import toDate from '../toDate/index'
+import startOfISOWeekYear from '../startOfISOWeekYear/index'
+import differenceInCalendarDays from '../differenceInCalendarDays/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name setISOWeekYear
+ * @category ISO Week-Numbering Year Helpers
+ * @summary Set the ISO week-numbering year to the given date.
+ *
+ * @description
+ * Set the ISO week-numbering year to the given date,
+ * saving the week number and the weekday number.
+ *
+ * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * - The function was renamed from `setISOYear` to `setISOWeekYear`.
+ * "ISO week year" is short for [ISO week-numbering year](https://en.wikipedia.org/wiki/ISO_week_date).
+ * This change makes the name consistent with
+ * locale-dependent week-numbering year helpers, e.g., `setWeekYear`.
+ *
+ * @param {Date|Number} date - the date to be changed
+ * @param {Number} isoWeekYear - the ISO week-numbering year of the new date
+ * @returns {Date} the new date with the ISO week-numbering year set
+ * @throws {TypeError} 2 arguments required
+ *
+ * @example
+ * // Set ISO week-numbering year 2007 to 29 December 2008:
+ * const result = setISOWeekYear(new Date(2008, 11, 29), 2007)
+ * //=> Mon Jan 01 2007 00:00:00
+ */
+export default function setISOWeekYear(dirtyDate: Date | number, dirtyISOWeekYear: number): Date {
+ requiredArgs(2, arguments)
+
+ let date = toDate(dirtyDate)
+ const isoWeekYear = toInteger(dirtyISOWeekYear)
+ const diff = differenceInCalendarDays(date, startOfISOWeekYear(date))
+ const fourthOfJanuary = new Date(0)
+ fourthOfJanuary.setFullYear(isoWeekYear, 0, 4)
+ fourthOfJanuary.setHours(0, 0, 0, 0)
+ date = startOfISOWeekYear(fourthOfJanuary)
+ date.setDate(date.getDate() + diff)
+ return date
+}
diff --git a/date-fns/src/setISOWeekYear/test.ts b/date-fns/src/setISOWeekYear/test.ts
new file mode 100644
index 0000000..c5ea154
--- /dev/null
+++ b/date-fns/src/setISOWeekYear/test.ts
@@ -0,0 +1,69 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import setISOWeekYear from '.'
+
+describe('setISOWeekYear', function() {
+ it('sets the ISO week-numbering year, saving the ISO week and the day of the week', function() {
+ const result = setISOWeekYear(new Date(2008, 11 /* Dec */, 29), 2007)
+ assert.deepEqual(result, new Date(2007, 0 /* Jan */, 1))
+ })
+
+ it('accepts a timestamp', function() {
+ const result = setISOWeekYear(new Date(2010, 0 /* Jan */, 2).getTime(), 2004)
+ assert.deepEqual(result, new Date(2005, 0 /* Jan */, 1))
+ })
+
+ it('converts a fractional number to an integer', function() {
+ const result = setISOWeekYear(new Date(2008, 11 /* Dec */, 29), 2007.7002)
+ assert.deepEqual(result, new Date(2007, 0 /* Jan */, 1))
+ })
+
+ it('implicitly converts number arguments', function() {
+ // @ts-expect-error
+ const result = setISOWeekYear(new Date(2008, 11 /* Dec */, 29), '2007')
+ assert.deepEqual(result, new Date(2007, 0 /* Jan */, 1))
+ })
+
+ it('does not mutate the original date', function() {
+ const date = new Date(2008, 11 /* Dec */, 29)
+ setISOWeekYear(date, 2000)
+ assert.deepEqual(date, new Date(2008, 11 /* Dec */, 29))
+ })
+
+ it('sets ISO week-numbering years less than 100', function() {
+ const initialDate = new Date(2008, 11 /* Dec */, 29)
+ const expectedResult = new Date(0)
+ expectedResult.setFullYear(7, 0 /* Jan */, 1)
+ expectedResult.setHours(0, 0, 0, 0)
+ const result = setISOWeekYear(initialDate, 7)
+ assert.deepEqual(result, expectedResult)
+ })
+
+ it('handles dates before 100 AD', function() {
+ const initialDate = new Date(0)
+ initialDate.setFullYear(8, 11 /* Dec */, 29)
+ initialDate.setHours(0, 0, 0, 0)
+ const expectedResult = new Date(0)
+ expectedResult.setFullYear(7, 0 /* Jan */, 1)
+ expectedResult.setHours(0, 0, 0, 0)
+ const result = setISOWeekYear(initialDate, 7)
+ assert.deepEqual(result, expectedResult)
+ })
+
+ it('returns `Invalid Date` if the given date is invalid', function() {
+ const result = setISOWeekYear(new Date(NaN), 2007)
+ assert(result instanceof Date && isNaN(result.getTime()))
+ })
+
+ it('returns `Invalid Date` if the given amount is NaN', function() {
+ const result = setISOWeekYear(new Date(2008, 11 /* Dec */, 29), NaN)
+ assert(result instanceof Date && isNaN(result.getTime()))
+ })
+
+ it('throws TypeError exception if passed less than 2 arguments', function() {
+ assert.throws(setISOWeekYear.bind(null), TypeError)
+ assert.throws(setISOWeekYear.bind(null, 1), TypeError)
+ })
+})
diff --git a/date-fns/src/setMilliseconds/benchmark.js b/date-fns/src/setMilliseconds/benchmark.js
new file mode 100644
index 0000000..e292c6c
--- /dev/null
+++ b/date-fns/src/setMilliseconds/benchmark.js
@@ -0,0 +1,21 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import setMilliseconds from '.'
+import moment from 'moment'
+
+suite('setMilliseconds', function () {
+ benchmark('date-fns', function () {
+ return setMilliseconds(this.date, 400)
+ })
+
+ benchmark('Moment.js', function () {
+ return this.moment.milliseconds(400)
+ })
+}, {
+ setup: function () {
+ this.date = new Date()
+ this.moment = moment()
+ }
+})
diff --git a/date-fns/src/setMilliseconds/index.d.ts b/date-fns/src/setMilliseconds/index.d.ts
new file mode 100644
index 0000000..04743a0
--- /dev/null
+++ b/date-fns/src/setMilliseconds/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { setMilliseconds } from 'date-fns'
+export default setMilliseconds
diff --git a/date-fns/src/setMilliseconds/index.js.flow b/date-fns/src/setMilliseconds/index.js.flow
new file mode 100644
index 0000000..d9bc57f
--- /dev/null
+++ b/date-fns/src/setMilliseconds/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (date: Date | number, milliseconds: number) => Date
diff --git a/date-fns/src/setMilliseconds/index.ts b/date-fns/src/setMilliseconds/index.ts
new file mode 100644
index 0000000..2c55c65
--- /dev/null
+++ b/date-fns/src/setMilliseconds/index.ts
@@ -0,0 +1,34 @@
+import toInteger from '../_lib/toInteger/index'
+import toDate from '../toDate/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name setMilliseconds
+ * @category Millisecond Helpers
+ * @summary Set the milliseconds to the given date.
+ *
+ * @description
+ * Set the milliseconds to the given date.
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} date - the date to be changed
+ * @param {Number} milliseconds - the milliseconds of the new date
+ * @returns {Date} the new date with the milliseconds set
+ * @throws {TypeError} 2 arguments required
+ *
+ * @example
+ * // Set 300 milliseconds to 1 September 2014 11:30:40.500:
+ * const result = setMilliseconds(new Date(2014, 8, 1, 11, 30, 40, 500), 300)
+ * //=> Mon Sep 01 2014 11:30:40.300
+ */
+export default function setMilliseconds(dirtyDate: Date | number, dirtyMilliseconds: number): Date {
+ requiredArgs(2, arguments)
+
+ const date = toDate(dirtyDate)
+ const milliseconds = toInteger(dirtyMilliseconds)
+ date.setMilliseconds(milliseconds)
+ return date
+}
diff --git a/date-fns/src/setMilliseconds/test.ts b/date-fns/src/setMilliseconds/test.ts
new file mode 100644
index 0000000..6becea2
--- /dev/null
+++ b/date-fns/src/setMilliseconds/test.ts
@@ -0,0 +1,64 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import setMilliseconds from '.'
+
+describe('setMilliseconds', function() {
+ it('sets the milliseconds', function() {
+ const result = setMilliseconds(
+ new Date(2014, 8 /* Sep */, 1, 11, 30, 40, 500),
+ 300
+ )
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */, 1, 11, 30, 40, 300))
+ })
+
+ it('accepts a timestamp', function() {
+ const result = setMilliseconds(
+ new Date(2014, 8 /* Sep */, 1, 11, 30, 15, 750).getTime(),
+ 755
+ )
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */, 1, 11, 30, 15, 755))
+ })
+
+ it('converts a fractional number to an integer', function() {
+ const result = setMilliseconds(
+ new Date(2014, 8 /* Sep */, 1, 11, 30, 40, 500),
+ 300.999
+ )
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */, 1, 11, 30, 40, 300))
+ })
+
+ it('implicitly converts number arguments', function() {
+ const result = setMilliseconds(
+ new Date(2014, 8 /* Sep */, 1, 11, 30, 40, 500),
+ // @ts-expect-error
+ '300'
+ )
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */, 1, 11, 30, 40, 300))
+ })
+
+ it('does not mutate the original date', function() {
+ var date = new Date(2014, 8 /* Sep */, 1, 11, 30, 40, 500)
+ setMilliseconds(date, 137)
+ assert.deepEqual(date, new Date(2014, 8 /* Sep */, 1, 11, 30, 40, 500))
+ })
+
+ it('returns `Invalid Date` if the given date is invalid', function() {
+ const result = setMilliseconds(new Date(NaN), 300)
+ assert(result instanceof Date && isNaN(result.getTime()))
+ })
+
+ it('returns `Invalid Date` if the given amount is NaN', function() {
+ const result = setMilliseconds(
+ new Date(2014, 8 /* Sep */, 1, 11, 30, 40, 500),
+ NaN
+ )
+ assert(result instanceof Date && isNaN(result.getTime()))
+ })
+
+ it('throws TypeError exception if passed less than 2 arguments', function() {
+ assert.throws(setMilliseconds.bind(null), TypeError)
+ assert.throws(setMilliseconds.bind(null, 1), TypeError)
+ })
+})
diff --git a/date-fns/src/setMinutes/benchmark.js b/date-fns/src/setMinutes/benchmark.js
new file mode 100644
index 0000000..679c428
--- /dev/null
+++ b/date-fns/src/setMinutes/benchmark.js
@@ -0,0 +1,21 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import setMinutes from '.'
+import moment from 'moment'
+
+suite('setMinutes', function () {
+ benchmark('date-fns', function () {
+ return setMinutes(this.date, 45)
+ })
+
+ benchmark('Moment.js', function () {
+ return this.moment.minutes(45)
+ })
+}, {
+ setup: function () {
+ this.date = new Date()
+ this.moment = moment()
+ }
+})
diff --git a/date-fns/src/setMinutes/index.d.ts b/date-fns/src/setMinutes/index.d.ts
new file mode 100644
index 0000000..2732d47
--- /dev/null
+++ b/date-fns/src/setMinutes/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { setMinutes } from 'date-fns'
+export default setMinutes
diff --git a/date-fns/src/setMinutes/index.js b/date-fns/src/setMinutes/index.js
new file mode 100644
index 0000000..2ee7f4b
--- /dev/null
+++ b/date-fns/src/setMinutes/index.js
@@ -0,0 +1,34 @@
+import toInteger from '../_lib/toInteger/index'
+import toDate from '../toDate/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name setMinutes
+ * @category Minute Helpers
+ * @summary Set the minutes to the given date.
+ *
+ * @description
+ * Set the minutes to the given date.
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} date - the date to be changed
+ * @param {Number} minutes - the minutes of the new date
+ * @returns {Date} the new date with the minutes set
+ * @throws {TypeError} 2 arguments required
+ *
+ * @example
+ * // Set 45 minutes to 1 September 2014 11:30:40:
+ * var result = setMinutes(new Date(2014, 8, 1, 11, 30, 40), 45)
+ * //=> Mon Sep 01 2014 11:45:40
+ */
+export default function setMinutes(dirtyDate, dirtyMinutes) {
+ requiredArgs(2, arguments)
+
+ var date = toDate(dirtyDate)
+ var minutes = toInteger(dirtyMinutes)
+ date.setMinutes(minutes)
+ return date
+}
diff --git a/date-fns/src/setMinutes/index.js.flow b/date-fns/src/setMinutes/index.js.flow
new file mode 100644
index 0000000..5231232
--- /dev/null
+++ b/date-fns/src/setMinutes/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (date: Date | number, minutes: number) => Date
diff --git a/date-fns/src/setMinutes/test.js b/date-fns/src/setMinutes/test.js
new file mode 100644
index 0000000..0a1819c
--- /dev/null
+++ b/date-fns/src/setMinutes/test.js
@@ -0,0 +1,49 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import setMinutes from '.'
+
+describe('setMinutes', function() {
+ it('sets the minutes', function() {
+ var result = setMinutes(new Date(2014, 8 /* Sep */, 1, 11, 30, 40), 45)
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */, 1, 11, 45, 40))
+ })
+
+ it('accepts a timestamp', function() {
+ var result = setMinutes(new Date(2014, 8 /* Sep */, 1, 11, 30).getTime(), 5)
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */, 1, 11, 5))
+ })
+
+ it('converts a fractional number to an integer', function() {
+ var result = setMinutes(new Date(2014, 8 /* Sep */, 1, 11, 30, 40), 45.54)
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */, 1, 11, 45, 40))
+ })
+
+ it('implicitly converts number arguments', function() {
+ // $ExpectedMistake
+ var result = setMinutes(new Date(2014, 8 /* Sep */, 1, 11, 30, 40), '45')
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */, 1, 11, 45, 40))
+ })
+
+ it('does not mutate the original date', function() {
+ var date = new Date(2014, 8 /* Sep */, 1, 11, 30)
+ setMinutes(date, 15)
+ assert.deepEqual(date, new Date(2014, 8 /* Sep */, 1, 11, 30))
+ })
+
+ it('returns `Invalid Date` if the given date is invalid', function() {
+ var result = setMinutes(new Date(NaN), 45)
+ assert(result instanceof Date && isNaN(result))
+ })
+
+ it('returns `Invalid Date` if the given amount is NaN', function() {
+ var result = setMinutes(new Date(2014, 8 /* Sep */, 1, 11, 30, 40), NaN)
+ assert(result instanceof Date && isNaN(result))
+ })
+
+ it('throws TypeError exception if passed less than 2 arguments', function() {
+ assert.throws(setMinutes.bind(null), TypeError)
+ assert.throws(setMinutes.bind(null, 1), TypeError)
+ })
+})
diff --git a/date-fns/src/setMonth/benchmark.js b/date-fns/src/setMonth/benchmark.js
new file mode 100644
index 0000000..0113f1f
--- /dev/null
+++ b/date-fns/src/setMonth/benchmark.js
@@ -0,0 +1,21 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import setMonth from '.'
+import moment from 'moment'
+
+suite('setMonth', function () {
+ benchmark('date-fns', function () {
+ return setMonth(this.date, 6)
+ })
+
+ benchmark('Moment.js', function () {
+ return this.moment.month(6)
+ })
+}, {
+ setup: function () {
+ this.date = new Date()
+ this.moment = moment()
+ }
+})
diff --git a/date-fns/src/setMonth/index.d.ts b/date-fns/src/setMonth/index.d.ts
new file mode 100644
index 0000000..720d61c
--- /dev/null
+++ b/date-fns/src/setMonth/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { setMonth } from 'date-fns'
+export default setMonth
diff --git a/date-fns/src/setMonth/index.js.flow b/date-fns/src/setMonth/index.js.flow
new file mode 100644
index 0000000..29bd4de
--- /dev/null
+++ b/date-fns/src/setMonth/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (date: Date | number, month: number) => Date
diff --git a/date-fns/src/setMonth/index.ts b/date-fns/src/setMonth/index.ts
new file mode 100644
index 0000000..c625378
--- /dev/null
+++ b/date-fns/src/setMonth/index.ts
@@ -0,0 +1,44 @@
+import toInteger from '../_lib/toInteger/index'
+import toDate from '../toDate/index'
+import getDaysInMonth from '../getDaysInMonth/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name setMonth
+ * @category Month Helpers
+ * @summary Set the month to the given date.
+ *
+ * @description
+ * Set the month to the given date.
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} date - the date to be changed
+ * @param {Number} month - the month of the new date
+ * @returns {Date} the new date with the month set
+ * @throws {TypeError} 2 arguments required
+ *
+ * @example
+ * // Set February to 1 September 2014:
+ * const result = setMonth(new Date(2014, 8, 1), 1)
+ * //=> Sat Feb 01 2014 00:00:00
+ */
+export default function setMonth(dirtyDate: Date | number, dirtyMonth: number): Date {
+ requiredArgs(2, arguments)
+
+ const date = toDate(dirtyDate)
+ const month = toInteger(dirtyMonth)
+ const year = date.getFullYear()
+ const day = date.getDate()
+
+ const dateWithDesiredMonth = new Date(0)
+ dateWithDesiredMonth.setFullYear(year, month, 15)
+ dateWithDesiredMonth.setHours(0, 0, 0, 0)
+ const daysInMonth = getDaysInMonth(dateWithDesiredMonth)
+ // Set the last day of the new month
+ // if the original date was the last day of the longer month
+ date.setMonth(month, Math.min(day, daysInMonth))
+ return date
+}
diff --git a/date-fns/src/setMonth/test.ts b/date-fns/src/setMonth/test.ts
new file mode 100644
index 0000000..75d61db
--- /dev/null
+++ b/date-fns/src/setMonth/test.ts
@@ -0,0 +1,65 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import setMonth from '.'
+
+describe('setMonth', function() {
+ it('sets the month', function() {
+ const result = setMonth(new Date(2014, 8 /* Sep */, 1), 1)
+ assert.deepEqual(result, new Date(2014, 1 /* Feb */, 1))
+ })
+
+ it('sets the last day of the month if the original date was the last day of a longer month', function() {
+ const result = setMonth(new Date(2014, 11 /* Dec */, 31), 1)
+ assert.deepEqual(result, new Date(2014, 1 /* Feb */, 28))
+ })
+
+ it('accepts a timestamp', function() {
+ const result = setMonth(new Date(2014, 8 /* Sep */, 1).getTime(), 11)
+ assert.deepEqual(result, new Date(2014, 11 /* Dec */, 1))
+ })
+
+ it('converts a fractional number to an integer', function() {
+ const result = setMonth(new Date(2014, 8 /* Sep */, 1), 1.5)
+ assert.deepEqual(result, new Date(2014, 1 /* Feb */, 1))
+ })
+
+ it('implicitly converts number arguments', function() {
+ // @ts-expect-error
+ const result = setMonth(new Date(2014, 8 /* Sep */, 1), '1')
+ assert.deepEqual(result, new Date(2014, 1 /* Feb */, 1))
+ })
+
+ it('does not mutate the original date', function() {
+ const date = new Date(2014, 8 /* Sep */, 1)
+ setMonth(date, 5)
+ assert.deepEqual(date, new Date(2014, 8 /* Sep */, 1))
+ })
+
+ it('handles dates before 100 AD', function() {
+ const initialDate = new Date(0)
+ initialDate.setFullYear(0, 11 /* Dec */, 31)
+ initialDate.setHours(0, 0, 0, 0)
+ const expectedResult = new Date(0)
+ expectedResult.setFullYear(0, 1 /* Feb */, 29)
+ expectedResult.setHours(0, 0, 0, 0)
+ const result = setMonth(initialDate, 1)
+ assert.deepEqual(result, expectedResult)
+ })
+
+ it('returns `Invalid Date` if the given date is invalid', function() {
+ const result = setMonth(new Date(NaN), 1)
+ assert(result instanceof Date && isNaN(result.getTime()))
+ })
+
+ it('returns `Invalid Date` if the given amount is NaN', function() {
+ const result = setMonth(new Date(2014, 8 /* Sep */, 1), NaN)
+ assert(result instanceof Date && isNaN(result.getTime()))
+ })
+
+ it('throws TypeError exception if passed less than 2 arguments', function() {
+ assert.throws(setMonth.bind(null), TypeError)
+ assert.throws(setMonth.bind(null, 1), TypeError)
+ })
+})
diff --git a/date-fns/src/setQuarter/benchmark.js b/date-fns/src/setQuarter/benchmark.js
new file mode 100644
index 0000000..695a480
--- /dev/null
+++ b/date-fns/src/setQuarter/benchmark.js
@@ -0,0 +1,21 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import setQuarter from '.'
+import moment from 'moment'
+
+suite('setQuarter', function () {
+ benchmark('date-fns', function () {
+ return setQuarter(this.date, 3)
+ })
+
+ benchmark('Moment.js', function () {
+ return this.moment.quarter(3)
+ })
+}, {
+ setup: function () {
+ this.date = new Date()
+ this.moment = moment()
+ }
+})
diff --git a/date-fns/src/setQuarter/index.d.ts b/date-fns/src/setQuarter/index.d.ts
new file mode 100644
index 0000000..7e98fc9
--- /dev/null
+++ b/date-fns/src/setQuarter/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { setQuarter } from 'date-fns'
+export default setQuarter
diff --git a/date-fns/src/setQuarter/index.js.flow b/date-fns/src/setQuarter/index.js.flow
new file mode 100644
index 0000000..d0e4d51
--- /dev/null
+++ b/date-fns/src/setQuarter/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (date: Date | number, quarter: number) => Date
diff --git a/date-fns/src/setQuarter/index.ts b/date-fns/src/setQuarter/index.ts
new file mode 100644
index 0000000..3fb765d
--- /dev/null
+++ b/date-fns/src/setQuarter/index.ts
@@ -0,0 +1,36 @@
+import toInteger from '../_lib/toInteger/index'
+import toDate from '../toDate/index'
+import setMonth from '../setMonth/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name setQuarter
+ * @category Quarter Helpers
+ * @summary Set the year quarter to the given date.
+ *
+ * @description
+ * Set the year quarter to the given date.
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} date - the date to be changed
+ * @param {Number} quarter - the quarter of the new date
+ * @returns {Date} the new date with the quarter set
+ * @throws {TypeError} 2 arguments required
+ *
+ * @example
+ * // Set the 2nd quarter to 2 July 2014:
+ * const result = setQuarter(new Date(2014, 6, 2), 2)
+ * //=> Wed Apr 02 2014 00:00:00
+ */
+export default function setQuarter(dirtyDate: Date | number, dirtyQuarter: number): Date {
+ requiredArgs(2, arguments)
+
+ const date = toDate(dirtyDate)
+ const quarter = toInteger(dirtyQuarter)
+ const oldQuarter = Math.floor(date.getMonth() / 3) + 1
+ const diff = quarter - oldQuarter
+ return setMonth(date, date.getMonth() + diff * 3)
+}
diff --git a/date-fns/src/setQuarter/test.ts b/date-fns/src/setQuarter/test.ts
new file mode 100644
index 0000000..dc47195
--- /dev/null
+++ b/date-fns/src/setQuarter/test.ts
@@ -0,0 +1,65 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import setQuarter from '.'
+
+describe('setQuarter', function() {
+ it('sets the quarter of the year', function() {
+ const result = setQuarter(new Date(2014, 6 /* Jul */, 2), 1)
+ assert.deepEqual(result, new Date(2014, 0 /* Jan */, 2))
+ })
+
+ it('sets the last day of the month if the original date was the last day of a longer month', function() {
+ const result = setQuarter(new Date(2014, 10 /* Nov */, 30), 1)
+ assert.deepEqual(result, new Date(2014, 1 /* Feb */, 28))
+ })
+
+ it('accepts a timestamp', function() {
+ const result = setQuarter(new Date(2014, 6 /* Jul */, 1).getTime(), 4)
+ assert.deepEqual(result, new Date(2014, 9 /* Oct */, 1))
+ })
+
+ it('converts a fractional number to an integer', function() {
+ const result = setQuarter(new Date(2014, 6 /* Jul */, 2), 1.951)
+ assert.deepEqual(result, new Date(2014, 0 /* Jan */, 2))
+ })
+
+ it('implicitly converts number arguments', function() {
+ // @ts-expect-error
+ const result = setQuarter(new Date(2014, 6 /* Jul */, 2), '1')
+ assert.deepEqual(result, new Date(2014, 0 /* Jan */, 2))
+ })
+
+ it('does not mutate the original date', function() {
+ const date = new Date(2014, 6 /* Jul */, 1)
+ setQuarter(date, 2)
+ assert.deepEqual(date, new Date(2014, 6 /* Jul */, 1))
+ })
+
+ it('handles dates before 100 AD', function() {
+ const initialDate = new Date(0)
+ initialDate.setFullYear(0, 10 /* Nov */, 30)
+ initialDate.setHours(0, 0, 0, 0)
+ const expectedResult = new Date(0)
+ expectedResult.setFullYear(0, 1 /* Feb */, 29)
+ expectedResult.setHours(0, 0, 0, 0)
+ const result = setQuarter(initialDate, 1)
+ assert.deepEqual(result, expectedResult)
+ })
+
+ it('returns `Invalid Date` if the given date is invalid', function() {
+ const result = setQuarter(new Date(NaN), 1)
+ assert(result instanceof Date && isNaN(result.getTime()))
+ })
+
+ it('returns `Invalid Date` if the given amount is NaN', function() {
+ const result = setQuarter(new Date(2014, 6 /* Jul */, 2), NaN)
+ assert(result instanceof Date && isNaN(result.getTime()))
+ })
+
+ it('throws TypeError exception if passed less than 2 arguments', function() {
+ assert.throws(setQuarter.bind(null), TypeError)
+ assert.throws(setQuarter.bind(null, 1), TypeError)
+ })
+})
diff --git a/date-fns/src/setSeconds/benchmark.js b/date-fns/src/setSeconds/benchmark.js
new file mode 100644
index 0000000..41733f2
--- /dev/null
+++ b/date-fns/src/setSeconds/benchmark.js
@@ -0,0 +1,21 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import setSeconds from '.'
+import moment from 'moment'
+
+suite('setSeconds', function () {
+ benchmark('date-fns', function () {
+ return setSeconds(this.date, 15)
+ })
+
+ benchmark('Moment.js', function () {
+ return this.moment.seconds(15)
+ })
+}, {
+ setup: function () {
+ this.date = new Date()
+ this.moment = moment()
+ }
+})
diff --git a/date-fns/src/setSeconds/index.d.ts b/date-fns/src/setSeconds/index.d.ts
new file mode 100644
index 0000000..a67a07f
--- /dev/null
+++ b/date-fns/src/setSeconds/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { setSeconds } from 'date-fns'
+export default setSeconds
diff --git a/date-fns/src/setSeconds/index.js.flow b/date-fns/src/setSeconds/index.js.flow
new file mode 100644
index 0000000..056c068
--- /dev/null
+++ b/date-fns/src/setSeconds/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (date: Date | number, seconds: number) => Date
diff --git a/date-fns/src/setSeconds/index.ts b/date-fns/src/setSeconds/index.ts
new file mode 100644
index 0000000..5ed16a0
--- /dev/null
+++ b/date-fns/src/setSeconds/index.ts
@@ -0,0 +1,34 @@
+import toInteger from '../_lib/toInteger/index'
+import toDate from '../toDate/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name setSeconds
+ * @category Second Helpers
+ * @summary Set the seconds to the given date.
+ *
+ * @description
+ * Set the seconds to the given date.
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} date - the date to be changed
+ * @param {Number} seconds - the seconds of the new date
+ * @returns {Date} the new date with the seconds set
+ * @throws {TypeError} 2 arguments required
+ *
+ * @example
+ * // Set 45 seconds to 1 September 2014 11:30:40:
+ * const result = setSeconds(new Date(2014, 8, 1, 11, 30, 40), 45)
+ * //=> Mon Sep 01 2014 11:30:45
+ */
+export default function setSeconds(dirtyDate: Date | number, dirtySeconds: number): Date {
+ requiredArgs(2, arguments)
+
+ const date = toDate(dirtyDate)
+ const seconds = toInteger(dirtySeconds)
+ date.setSeconds(seconds)
+ return date
+}
diff --git a/date-fns/src/setSeconds/test.ts b/date-fns/src/setSeconds/test.ts
new file mode 100644
index 0000000..855398d
--- /dev/null
+++ b/date-fns/src/setSeconds/test.ts
@@ -0,0 +1,61 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import setSeconds from '.'
+
+describe('setSeconds', function() {
+ it('sets the seconds', function() {
+ const result = setSeconds(new Date(2014, 8 /* Sep */, 1, 11, 30, 40, 500), 45)
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */, 1, 11, 30, 45, 500))
+ })
+
+ it('accepts a timestamp', function() {
+ const result = setSeconds(
+ new Date(2014, 8 /* Sep */, 1, 11, 30, 15).getTime(),
+ 45
+ )
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */, 1, 11, 30, 45))
+ })
+
+ it('converts a fractional number to an integer', function() {
+ const result = setSeconds(
+ new Date(2014, 8 /* Sep */, 1, 11, 30, 40, 500),
+ 45.54
+ )
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */, 1, 11, 30, 45, 500))
+ })
+
+ it('implicitly converts number arguments', function() {
+ const result = setSeconds(
+ new Date(2014, 8 /* Sep */, 1, 11, 30, 40, 500),
+ // @ts-expect-error
+ '45'
+ )
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */, 1, 11, 30, 45, 500))
+ })
+
+ it('does not mutate the original date', function() {
+ const date = new Date(2014, 8 /* Sep */, 1, 11, 30, 40)
+ setSeconds(date, 15)
+ assert.deepEqual(date, new Date(2014, 8 /* Sep */, 1, 11, 30, 40))
+ })
+
+ it('returns `Invalid Date` if the given date is invalid', function() {
+ const result = setSeconds(new Date(NaN), 45)
+ assert(result instanceof Date && isNaN(result.getTime()))
+ })
+
+ it('returns `Invalid Date` if the given amount is NaN', function() {
+ const result = setSeconds(
+ new Date(2014, 8 /* Sep */, 1, 11, 30, 40, 500),
+ NaN
+ )
+ assert(result instanceof Date && isNaN(result.getTime()))
+ })
+
+ it('throws TypeError exception if passed less than 2 arguments', function() {
+ assert.throws(setSeconds.bind(null), TypeError)
+ assert.throws(setSeconds.bind(null, 1), TypeError)
+ })
+})
diff --git a/date-fns/src/setWeek/index.d.ts b/date-fns/src/setWeek/index.d.ts
new file mode 100644
index 0000000..b6c90f3
--- /dev/null
+++ b/date-fns/src/setWeek/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { setWeek } from 'date-fns'
+export default setWeek
diff --git a/date-fns/src/setWeek/index.js b/date-fns/src/setWeek/index.js
new file mode 100644
index 0000000..568d088
--- /dev/null
+++ b/date-fns/src/setWeek/index.js
@@ -0,0 +1,58 @@
+import getWeek from '../getWeek/index'
+import toDate from '../toDate/index'
+import toInteger from '../_lib/toInteger/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name setWeek
+ * @category Week Helpers
+ * @summary Set the local week to the given date.
+ *
+ * @description
+ * Set the local week to the given date, saving the weekday number.
+ * The exact calculation depends on the values of
+ * `options.weekStartsOn` (which is the index of the first day of the week)
+ * and `options.firstWeekContainsDate` (which is the day of January, which is always in
+ * the first week of the week-numbering year)
+ *
+ * Week numbering: https://en.wikipedia.org/wiki/Week#Week_numbering
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} date - the date to be changed
+ * @param {Number} week - the week of the new date
+ * @param {Object} [options] - an object with options.
+ * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}
+ * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)
+ * @param {1|2|3|4|5|6|7} [options.firstWeekContainsDate=1] - the day of January, which is always in the first week of the year
+ * @returns {Date} the new date with the local week set
+ * @throws {TypeError} 2 arguments required
+ * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6
+ * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7
+ *
+ * @example
+ * // Set the 1st week to 2 January 2005 with default options:
+ * var result = setWeek(new Date(2005, 0, 2), 1)
+ * //=> Sun Dec 26 2004 00:00:00
+ *
+ * @example
+ * // Set the 1st week to 2 January 2005,
+ * // if Monday is the first day of the week,
+ * // and the first week of the year always contains 4 January:
+ * var result = setWeek(new Date(2005, 0, 2), 1, {
+ * weekStartsOn: 1,
+ * firstWeekContainsDate: 4
+ * })
+ * //=> Sun Jan 4 2004 00:00:00
+ */
+export default function setWeek(dirtyDate, dirtyWeek, dirtyOptions) {
+ requiredArgs(2, arguments)
+
+ var date = toDate(dirtyDate)
+ var week = toInteger(dirtyWeek)
+ var diff = getWeek(date, dirtyOptions) - week
+ date.setDate(date.getDate() - diff * 7)
+ return date
+}
diff --git a/date-fns/src/setWeek/index.js.flow b/date-fns/src/setWeek/index.js.flow
new file mode 100644
index 0000000..59b7eb3
--- /dev/null
+++ b/date-fns/src/setWeek/index.js.flow
@@ -0,0 +1,60 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (
+ date: Date | number,
+ week: number,
+ options?: {
+ locale?: Locale,
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ }
+) => Date
diff --git a/date-fns/src/setWeek/test.js b/date-fns/src/setWeek/test.js
new file mode 100644
index 0000000..dbf30d6
--- /dev/null
+++ b/date-fns/src/setWeek/test.js
@@ -0,0 +1,100 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import setWeek from '.'
+
+describe('setWeek', function() {
+ it('sets the local week', function() {
+ var result = setWeek(new Date(2005, 0 /* Jan */, 2), 1)
+ assert.deepEqual(result, new Date(2004, 11 /* Dec */, 26))
+ })
+
+ it('accepts a timestamp', function() {
+ var result = setWeek(new Date(2009, 11 /* Dec */, 2).getTime(), 1)
+ assert.deepEqual(result, new Date(2008, 11 /* Dec */, 31))
+ })
+
+ it('converts a fractional number to an integer', function() {
+ var result = setWeek(new Date(2005, 0 /* Jan */, 2), 1.9)
+ assert.deepEqual(result, new Date(2004, 11 /* Dec */, 26))
+ })
+
+ it('implicitly converts number arguments', function() {
+ // $ExpectedMistake
+ var result = setWeek(new Date(2004, 7 /* Aug */, 7), '53')
+ assert.deepEqual(result, new Date(2005, 0 /* Jan */, 1))
+ })
+
+ it('does not mutate the original date', function() {
+ var date = new Date(2014, 6 /* Jul */, 2)
+ setWeek(date, 52)
+ assert.deepEqual(date, new Date(2014, 6 /* Jul */, 2))
+ })
+
+ it('handles dates before 100 AD', function() {
+ var initialDate = new Date(0)
+ initialDate.setFullYear(4, 0 /* Jan */, 4)
+ initialDate.setHours(0, 0, 0, 0)
+ var expectedResult = new Date(0)
+ expectedResult.setFullYear(4, 11 /* Dec */, 19)
+ expectedResult.setHours(0, 0, 0, 0)
+ var result = setWeek(initialDate, 52)
+ assert.deepEqual(result, expectedResult)
+ })
+
+ it('returns `Invalid Date` if the given date is invalid', function() {
+ var result = setWeek(new Date(NaN), 53)
+ assert(result instanceof Date && isNaN(result))
+ })
+
+ it('returns `Invalid Date` if the given amount is NaN', function() {
+ var result = setWeek(new Date(2004, 7 /* Aug */, 7), NaN)
+ assert(result instanceof Date && isNaN(result))
+ })
+
+ it('allows to specify `weekStartsOn` and `firstWeekContainsDate` in locale', function() {
+ var date = new Date(2005, 0 /* Jan */, 2)
+ var result = setWeek(date, 1, {
+ // $ExpectedMistake
+ locale: {
+ options: { weekStartsOn: 1, firstWeekContainsDate: 4 }
+ }
+ })
+ assert.deepEqual(result, new Date(2004, 0 /* Jan */, 4))
+ })
+
+ it('`options.weekStartsOn` overwrites the first day of the week specified in locale', function() {
+ var date = new Date(2005, 0 /* Jan */, 2)
+ var result = setWeek(date, 1, {
+ weekStartsOn: 1,
+ firstWeekContainsDate: 4,
+ // $ExpectedMistake
+ locale: {
+ options: { weekStartsOn: 0, firstWeekContainsDate: 1 }
+ }
+ })
+ assert.deepEqual(result, new Date(2004, 0 /* Jan */, 4))
+ })
+
+ it('throws `RangeError` if `options.weekStartsOn` is not convertable to 0, 1, ..., 6 or undefined', function() {
+ // $ExpectedMistake
+ var block = setWeek.bind(null, new Date(2004, 7 /* Aug */, 7), 53, {
+ weekStartsOn: NaN
+ })
+ assert.throws(block, RangeError)
+ })
+
+ it('throws `RangeError` if `options.firstWeekContainsDate` is not convertable to 1, 2, ..., 7 or undefined', function() {
+ // $ExpectedMistake
+ var block = setWeek.bind(null, new Date(2004, 7 /* Aug */, 7), 53, {
+ firstWeekContainsDate: NaN
+ })
+ assert.throws(block, RangeError)
+ })
+
+ it('throws TypeError exception if passed less than 2 arguments', function() {
+ assert.throws(setWeek.bind(null), TypeError)
+ assert.throws(setWeek.bind(null, 1), TypeError)
+ })
+})
diff --git a/date-fns/src/setWeekYear/index.d.ts b/date-fns/src/setWeekYear/index.d.ts
new file mode 100644
index 0000000..af02252
--- /dev/null
+++ b/date-fns/src/setWeekYear/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { setWeekYear } from 'date-fns'
+export default setWeekYear
diff --git a/date-fns/src/setWeekYear/index.js b/date-fns/src/setWeekYear/index.js
new file mode 100644
index 0000000..2699706
--- /dev/null
+++ b/date-fns/src/setWeekYear/index.js
@@ -0,0 +1,77 @@
+import differenceInCalendarDays from '../differenceInCalendarDays/index'
+import startOfWeekYear from '../startOfWeekYear/index'
+import toDate from '../toDate/index'
+import toInteger from '../_lib/toInteger/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name setWeekYear
+ * @category Week-Numbering Year Helpers
+ * @summary Set the local week-numbering year to the given date.
+ *
+ * @description
+ * Set the local week-numbering year to the given date,
+ * saving the week number and the weekday number.
+ * The exact calculation depends on the values of
+ * `options.weekStartsOn` (which is the index of the first day of the week)
+ * and `options.firstWeekContainsDate` (which is the day of January, which is always in
+ * the first week of the week-numbering year)
+ *
+ * Week numbering: https://en.wikipedia.org/wiki/Week#Week_numbering
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} date - the date to be changed
+ * @param {Number} weekYear - the local week-numbering year of the new date
+ * @param {Object} [options] - an object with options.
+ * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}
+ * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)
+ * @param {1|2|3|4|5|6|7} [options.firstWeekContainsDate=1] - the day of January, which is always in the first week of the year
+ * @returns {Date} the new date with the local week-numbering year set
+ * @throws {TypeError} 2 arguments required
+ * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6
+ * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7
+ *
+ * @example
+ * // Set the local week-numbering year 2004 to 2 January 2010 with default options:
+ * var result = setWeekYear(new Date(2010, 0, 2), 2004)
+ * //=> Sat Jan 03 2004 00:00:00
+ *
+ * @example
+ * // Set the local week-numbering year 2004 to 2 January 2010,
+ * // if Monday is the first day of week
+ * // and 4 January is always in the first week of the year:
+ * var result = setWeekYear(new Date(2010, 0, 2), 2004, {
+ * weekStartsOn: 1,
+ * firstWeekContainsDate: 4
+ * })
+ * //=> Sat Jan 01 2005 00:00:00
+ */
+export default function setWeekYear(dirtyDate, dirtyWeekYear, dirtyOptions) {
+ requiredArgs(2, arguments)
+
+ var options = dirtyOptions || {}
+ var locale = options.locale
+ var localeFirstWeekContainsDate =
+ locale && locale.options && locale.options.firstWeekContainsDate
+ var defaultFirstWeekContainsDate =
+ localeFirstWeekContainsDate == null
+ ? 1
+ : toInteger(localeFirstWeekContainsDate)
+ var firstWeekContainsDate =
+ options.firstWeekContainsDate == null
+ ? defaultFirstWeekContainsDate
+ : toInteger(options.firstWeekContainsDate)
+
+ var date = toDate(dirtyDate)
+ var weekYear = toInteger(dirtyWeekYear)
+ var diff = differenceInCalendarDays(date, startOfWeekYear(date, dirtyOptions))
+ var firstWeek = new Date(0)
+ firstWeek.setFullYear(weekYear, 0, firstWeekContainsDate)
+ firstWeek.setHours(0, 0, 0, 0)
+ date = startOfWeekYear(firstWeek, dirtyOptions)
+ date.setDate(date.getDate() + diff)
+ return date
+}
diff --git a/date-fns/src/setWeekYear/index.js.flow b/date-fns/src/setWeekYear/index.js.flow
new file mode 100644
index 0000000..12a9d84
--- /dev/null
+++ b/date-fns/src/setWeekYear/index.js.flow
@@ -0,0 +1,60 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (
+ date: Date | number,
+ weekYear: number,
+ options?: {
+ locale?: Locale,
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ }
+) => Date
diff --git a/date-fns/src/setWeekYear/test.js b/date-fns/src/setWeekYear/test.js
new file mode 100644
index 0000000..a493412
--- /dev/null
+++ b/date-fns/src/setWeekYear/test.js
@@ -0,0 +1,109 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import setWeekYear from '.'
+
+describe('setWeekYear', function() {
+ it('sets the local week-numbering year, saving the week and the day of the week', function() {
+ var result = setWeekYear(new Date(2010, 0 /* Jan */, 2), 2004)
+ assert.deepEqual(result, new Date(2004, 0 /* Jan */, 3))
+ })
+
+ it('accepts a timestamp', function() {
+ var result = setWeekYear(new Date(2008, 11 /* Dec */, 29).getTime(), 2007)
+ assert.deepEqual(result, new Date(2007, 0 /* Jan */, 1))
+ })
+
+ it('converts a fractional number to an integer', function() {
+ var result = setWeekYear(new Date(2010, 0 /* Jan */, 2), 2004.2004)
+ assert.deepEqual(result, new Date(2004, 0 /* Jan */, 3))
+ })
+
+ it('implicitly converts number arguments', function() {
+ // $ExpectedMistake
+ var result = setWeekYear(new Date(2008, 11 /* Dec */, 29), '2007')
+ assert.deepEqual(result, new Date(2007, 0 /* Jan */, 1))
+ })
+
+ it('does not mutate the original date', function() {
+ var date = new Date(2008, 11 /* Dec */, 29)
+ setWeekYear(date, 2000)
+ assert.deepEqual(date, new Date(2008, 11 /* Dec */, 29))
+ })
+
+ it('sets local week-numbering years less than 100', function() {
+ var initialDate = new Date(2008, 11 /* Dec */, 29)
+ var expectedResult = new Date(0)
+ expectedResult.setFullYear(7, 0 /* Jan */, 1)
+ expectedResult.setHours(0, 0, 0, 0)
+ var result = setWeekYear(initialDate, 7)
+ assert.deepEqual(result, expectedResult)
+ })
+
+ it('handles dates before 100 AD', function() {
+ var initialDate = new Date(0)
+ initialDate.setFullYear(8, 11 /* Dec */, 29)
+ initialDate.setHours(0, 0, 0, 0)
+ var expectedResult = new Date(0)
+ expectedResult.setFullYear(7, 0 /* Jan */, 1)
+ expectedResult.setHours(0, 0, 0, 0)
+ var result = setWeekYear(initialDate, 7)
+ assert.deepEqual(result, expectedResult)
+ })
+
+ it('returns `Invalid Date` if the given date is invalid', function() {
+ var result = setWeekYear(new Date(NaN), 2007)
+ assert(result instanceof Date && isNaN(result))
+ })
+
+ it('returns `Invalid Date` if the given amount is NaN', function() {
+ var result = setWeekYear(new Date(2008, 11 /* Dec */, 29), NaN)
+ assert(result instanceof Date && isNaN(result))
+ })
+
+ it('allows to specify `weekStartsOn` and `firstWeekContainsDate` in locale', function() {
+ var date = new Date(2010, 0 /* Jan */, 2)
+ var result = setWeekYear(date, 2004, {
+ // $ExpectedMistake
+ locale: {
+ options: { weekStartsOn: 1, firstWeekContainsDate: 4 }
+ }
+ })
+ assert.deepEqual(result, new Date(2005, 0 /* Jan */, 1))
+ })
+
+ it('`options.weekStartsOn` overwrites the first day of the week specified in locale', function() {
+ var date = new Date(2010, 0 /* Jan */, 2)
+ var result = setWeekYear(date, 2004, {
+ weekStartsOn: 1,
+ firstWeekContainsDate: 4,
+ // $ExpectedMistake
+ locale: {
+ options: { weekStartsOn: 0, firstWeekContainsDate: 1 }
+ }
+ })
+ assert.deepEqual(result, new Date(2005, 0 /* Jan */, 1))
+ })
+
+ it('throws `RangeError` if `options.weekStartsOn` is not convertable to 0, 1, ..., 6 or undefined', function() {
+ // $ExpectedMistake
+ var block = setWeekYear.bind(null, new Date(2004, 7 /* Aug */, 7), 2018, {
+ weekStartsOn: NaN
+ })
+ assert.throws(block, RangeError)
+ })
+
+ it('throws `RangeError` if `options.firstWeekContainsDate` is not convertable to 1, 2, ..., 7 or undefined', function() {
+ // $ExpectedMistake
+ var block = setWeekYear.bind(null, new Date(2004, 7 /* Aug */, 7), 2018, {
+ firstWeekContainsDate: NaN
+ })
+ assert.throws(block, RangeError)
+ })
+
+ it('throws TypeError exception if passed less than 2 arguments', function() {
+ assert.throws(setWeekYear.bind(null), TypeError)
+ assert.throws(setWeekYear.bind(null, 1), TypeError)
+ })
+})
diff --git a/date-fns/src/setYear/benchmark.js b/date-fns/src/setYear/benchmark.js
new file mode 100644
index 0000000..8d20c7e
--- /dev/null
+++ b/date-fns/src/setYear/benchmark.js
@@ -0,0 +1,21 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import setYear from '.'
+import moment from 'moment'
+
+suite('setYear', function () {
+ benchmark('date-fns', function () {
+ return setYear(this.date, 2014)
+ })
+
+ benchmark('Moment.js', function () {
+ return this.moment.year(2014)
+ })
+}, {
+ setup: function () {
+ this.date = new Date()
+ this.moment = moment()
+ }
+})
diff --git a/date-fns/src/setYear/index.d.ts b/date-fns/src/setYear/index.d.ts
new file mode 100644
index 0000000..e0a76fb
--- /dev/null
+++ b/date-fns/src/setYear/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { setYear } from 'date-fns'
+export default setYear
diff --git a/date-fns/src/setYear/index.js.flow b/date-fns/src/setYear/index.js.flow
new file mode 100644
index 0000000..ebdcafe
--- /dev/null
+++ b/date-fns/src/setYear/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (date: Date | number, year: number) => Date
diff --git a/date-fns/src/setYear/index.ts b/date-fns/src/setYear/index.ts
new file mode 100644
index 0000000..729fcd0
--- /dev/null
+++ b/date-fns/src/setYear/index.ts
@@ -0,0 +1,40 @@
+import toInteger from '../_lib/toInteger/index'
+import toDate from '../toDate/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name setYear
+ * @category Year Helpers
+ * @summary Set the year to the given date.
+ *
+ * @description
+ * Set the year to the given date.
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} date - the date to be changed
+ * @param {Number} year - the year of the new date
+ * @returns {Date} the new date with the year set
+ * @throws {TypeError} 2 arguments required
+ *
+ * @example
+ * // Set year 2013 to 1 September 2014:
+ * const result = setYear(new Date(2014, 8, 1), 2013)
+ * //=> Sun Sep 01 2013 00:00:00
+ */
+export default function setYear(dirtyDate: Date | number, dirtyYear: number): Date {
+ requiredArgs(2, arguments)
+
+ const date = toDate(dirtyDate)
+ const year = toInteger(dirtyYear)
+
+ // Check if date is Invalid Date because Date.prototype.setFullYear ignores the value of Invalid Date
+ if (isNaN(date.getTime())) {
+ return new Date(NaN)
+ }
+
+ date.setFullYear(year)
+ return date
+}
diff --git a/date-fns/src/setYear/test.ts b/date-fns/src/setYear/test.ts
new file mode 100644
index 0000000..d30a712
--- /dev/null
+++ b/date-fns/src/setYear/test.ts
@@ -0,0 +1,49 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import setYear from '.'
+
+describe('setYear', function() {
+ it('sets the year', function() {
+ const result = setYear(new Date(2014, 8 /* Sep */, 1), 2013)
+ assert.deepEqual(result, new Date(2013, 8 /* Sep */, 1))
+ })
+
+ it('accepts a timestamp', function() {
+ const result = setYear(new Date(2014, 8 /* Sep */, 1).getTime(), 2016)
+ assert.deepEqual(result, new Date(2016, 8 /* Sep */, 1))
+ })
+
+ it('converts a fractional number to an integer', function() {
+ const result = setYear(new Date(2014, 8 /* Sep */, 1), 2013.987654321)
+ assert.deepEqual(result, new Date(2013, 8 /* Sep */, 1))
+ })
+
+ it('implicitly converts number arguments', function() {
+ // @ts-expect-error
+ const result = setYear(new Date(2014, 8 /* Sep */, 1), '2013')
+ assert.deepEqual(result, new Date(2013, 8 /* Sep */, 1))
+ })
+
+ it('does not mutate the original date', function() {
+ var date = new Date(2014, 8 /* Sep */, 1)
+ setYear(date, 2011)
+ assert.deepEqual(date, new Date(2014, 8 /* Sep */, 1))
+ })
+
+ it('returns `Invalid Date` if the given date is invalid', function() {
+ const result = setYear(new Date(NaN), 2013)
+ assert(result instanceof Date && isNaN(result.getTime()))
+ })
+
+ it('returns `Invalid Date` if the given amount is NaN', function() {
+ const result = setYear(new Date(2014, 8 /* Sep */, 1), NaN)
+ assert(result instanceof Date && isNaN(result.getTime()))
+ })
+
+ it('throws TypeError exception if passed less than 2 arguments', function() {
+ assert.throws(setYear.bind(null), TypeError)
+ assert.throws(setYear.bind(null, 1), TypeError)
+ })
+})
diff --git a/date-fns/src/startOfDay/benchmark.js b/date-fns/src/startOfDay/benchmark.js
new file mode 100644
index 0000000..580f043
--- /dev/null
+++ b/date-fns/src/startOfDay/benchmark.js
@@ -0,0 +1,21 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import startOfDay from '.'
+import moment from 'moment'
+
+suite('startOfDay', function () {
+ benchmark('date-fns', function () {
+ return startOfDay(this.date)
+ })
+
+ benchmark('Moment.js', function () {
+ return this.moment.startOf('day')
+ })
+}, {
+ setup: function () {
+ this.date = new Date()
+ this.moment = moment()
+ }
+})
diff --git a/date-fns/src/startOfDay/index.d.ts b/date-fns/src/startOfDay/index.d.ts
new file mode 100644
index 0000000..4463069
--- /dev/null
+++ b/date-fns/src/startOfDay/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { startOfDay } from 'date-fns'
+export default startOfDay
diff --git a/date-fns/src/startOfDay/index.js.flow b/date-fns/src/startOfDay/index.js.flow
new file mode 100644
index 0000000..4b7c616
--- /dev/null
+++ b/date-fns/src/startOfDay/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (date: Date | number) => Date
diff --git a/date-fns/src/startOfDay/index.ts b/date-fns/src/startOfDay/index.ts
new file mode 100644
index 0000000..0292c47
--- /dev/null
+++ b/date-fns/src/startOfDay/index.ts
@@ -0,0 +1,32 @@
+import toDate from '../toDate/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name startOfDay
+ * @category Day Helpers
+ * @summary Return the start of a day for the given date.
+ *
+ * @description
+ * Return the start of a day for the given date.
+ * The result will be in the local timezone.
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} date - the original date
+ * @returns {Date} the start of a day
+ * @throws {TypeError} 1 argument required
+ *
+ * @example
+ * // The start of a day for 2 September 2014 11:55:00:
+ * const result = startOfDay(new Date(2014, 8, 2, 11, 55, 0))
+ * //=> Tue Sep 02 2014 00:00:00
+ */
+export default function startOfDay(dirtyDate: Date | number): Date {
+ requiredArgs(1, arguments)
+
+ const date = toDate(dirtyDate)
+ date.setHours(0, 0, 0, 0)
+ return date
+}
diff --git a/date-fns/src/startOfDay/test.ts b/date-fns/src/startOfDay/test.ts
new file mode 100644
index 0000000..a699302
--- /dev/null
+++ b/date-fns/src/startOfDay/test.ts
@@ -0,0 +1,35 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import startOfDay from '.'
+
+describe('startOfDay', function() {
+ it('returns the date with the time set to 00:00:00', function() {
+ const date = new Date(2014, 8 /* Sep */, 2, 11, 55, 0)
+ const result = startOfDay(date)
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */, 2, 0, 0, 0, 0))
+ })
+
+ it('accepts a timestamp', function() {
+ const date = new Date(2014, 8 /* Sep */, 2, 11, 55, 0).getTime()
+ const result = startOfDay(date)
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */, 2, 0, 0, 0, 0))
+ })
+
+ it('does not mutate the original date', function() {
+ const date = new Date(2014, 8 /* Sep */, 2, 11, 55, 0)
+ startOfDay(date)
+ assert.deepEqual(date, new Date(2014, 8 /* Sep */, 2, 11, 55, 0))
+ })
+
+ it('returns `Invalid Date` if the given date is invalid', function() {
+ const result = startOfDay(new Date(NaN))
+ //@ts-expect-error
+ assert(result instanceof Date && isNaN(result))
+ })
+
+ it('throws TypeError exception if passed less than 1 argument', function() {
+ assert.throws(startOfDay.bind(null), TypeError)
+ })
+})
diff --git a/date-fns/src/startOfDecade/benchmark.js b/date-fns/src/startOfDecade/benchmark.js
new file mode 100644
index 0000000..2f3acb5
--- /dev/null
+++ b/date-fns/src/startOfDecade/benchmark.js
@@ -0,0 +1,15 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import startOfDecade from '.'
+
+suite('startOfDecade', function () {
+ benchmark('date-fns', function () {
+ return startOfDecade(this.date)
+ })
+}, {
+ setup: function () {
+ this.date = new Date()
+ }
+})
diff --git a/date-fns/src/startOfDecade/index.d.ts b/date-fns/src/startOfDecade/index.d.ts
new file mode 100644
index 0000000..c4309c3
--- /dev/null
+++ b/date-fns/src/startOfDecade/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { startOfDecade } from 'date-fns'
+export default startOfDecade
diff --git a/date-fns/src/startOfDecade/index.js.flow b/date-fns/src/startOfDecade/index.js.flow
new file mode 100644
index 0000000..4b7c616
--- /dev/null
+++ b/date-fns/src/startOfDecade/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (date: Date | number) => Date
diff --git a/date-fns/src/startOfDecade/index.ts b/date-fns/src/startOfDecade/index.ts
new file mode 100644
index 0000000..fc6c0ac
--- /dev/null
+++ b/date-fns/src/startOfDecade/index.ts
@@ -0,0 +1,34 @@
+import toDate from '../toDate/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name startOfDecade
+ * @category Decade Helpers
+ * @summary Return the start of a decade for the given date.
+ *
+ * @description
+ * Return the start of a decade for the given date.
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} date - the original date
+ * @returns {Date} the start of a decade
+ * @throws {TypeError} 1 argument required
+ *
+ * @example
+ * // The start of a decade for 21 October 2015 00:00:00:
+ * const result = startOfDecade(new Date(2015, 9, 21, 00, 00, 00))
+ * //=> Jan 01 2010 00:00:00
+ */
+export default function startOfDecade(dirtyDate: Date | number): Date {
+ requiredArgs(1, arguments)
+
+ const date = toDate(dirtyDate)
+ const year = date.getFullYear()
+ const decade = Math.floor(year / 10) * 10
+ date.setFullYear(decade, 0, 1)
+ date.setHours(0, 0, 0, 0)
+ return date
+}
diff --git a/date-fns/src/startOfDecade/test.ts b/date-fns/src/startOfDecade/test.ts
new file mode 100644
index 0000000..b9f7dee
--- /dev/null
+++ b/date-fns/src/startOfDecade/test.ts
@@ -0,0 +1,35 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import startOfDecade from '.'
+
+describe('startOfDecade', function() {
+ it('returns the date with the time set to 00:00:00 and the date set to the first day of a year', function() {
+ const date = new Date(1953, 3 /* Apr */, 13)
+ const result = startOfDecade(date)
+ assert.deepEqual(result, new Date(1950, 0 /* Jan */, 1))
+ })
+
+ it('accepts a timestamp', function() {
+ const date = new Date(1984, 9 /* Oct */, 14).getTime()
+ const result = startOfDecade(date)
+ assert.deepEqual(result, new Date(1980, 0 /* Jan */, 1))
+ })
+
+ it('does not mutate the original date', function() {
+ const date = new Date(1978, 10 /* Nov */, 14)
+ startOfDecade(date)
+ assert.deepEqual(date, new Date(1978, 10 /* Nov */, 14))
+ })
+
+ it('returns `Invalid Date` if the given date is invalid', function() {
+ const result = startOfDecade(new Date(NaN))
+ //@ts-expect-error
+ assert(result instanceof Date && isNaN(result))
+ })
+
+ it('throws TypeError exception if passed less than 1 argument', function() {
+ assert.throws(startOfDecade.bind(null), TypeError)
+ })
+})
diff --git a/date-fns/src/startOfHour/benchmark.js b/date-fns/src/startOfHour/benchmark.js
new file mode 100644
index 0000000..3832c48
--- /dev/null
+++ b/date-fns/src/startOfHour/benchmark.js
@@ -0,0 +1,21 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import startOfHour from '.'
+import moment from 'moment'
+
+suite('startOfHour', function () {
+ benchmark('date-fns', function () {
+ return startOfHour(this.date)
+ })
+
+ benchmark('Moment.js', function () {
+ return this.moment.startOf('hour')
+ })
+}, {
+ setup: function () {
+ this.date = new Date()
+ this.moment = moment()
+ }
+})
diff --git a/date-fns/src/startOfHour/index.d.ts b/date-fns/src/startOfHour/index.d.ts
new file mode 100644
index 0000000..d1cc503
--- /dev/null
+++ b/date-fns/src/startOfHour/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { startOfHour } from 'date-fns'
+export default startOfHour
diff --git a/date-fns/src/startOfHour/index.js.flow b/date-fns/src/startOfHour/index.js.flow
new file mode 100644
index 0000000..4b7c616
--- /dev/null
+++ b/date-fns/src/startOfHour/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (date: Date | number) => Date
diff --git a/date-fns/src/startOfHour/index.ts b/date-fns/src/startOfHour/index.ts
new file mode 100644
index 0000000..5221e61
--- /dev/null
+++ b/date-fns/src/startOfHour/index.ts
@@ -0,0 +1,32 @@
+import toDate from '../toDate/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name startOfHour
+ * @category Hour Helpers
+ * @summary Return the start of an hour for the given date.
+ *
+ * @description
+ * Return the start of an hour for the given date.
+ * The result will be in the local timezone.
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} date - the original date
+ * @returns {Date} the start of an hour
+ * @throws {TypeError} 1 argument required
+ *
+ * @example
+ * // The start of an hour for 2 September 2014 11:55:00:
+ * const result = startOfHour(new Date(2014, 8, 2, 11, 55))
+ * //=> Tue Sep 02 2014 11:00:00
+ */
+export default function startOfHour(dirtyDate: Date | number): Date {
+ requiredArgs(1, arguments)
+
+ const date = toDate(dirtyDate)
+ date.setMinutes(0, 0, 0)
+ return date
+}
diff --git a/date-fns/src/startOfHour/test.ts b/date-fns/src/startOfHour/test.ts
new file mode 100644
index 0000000..61dcff9
--- /dev/null
+++ b/date-fns/src/startOfHour/test.ts
@@ -0,0 +1,35 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import startOfHour from '.'
+
+describe('startOfHour', function() {
+ it('returns the date with the time set to the first millisecond of an hour', function() {
+ const date = new Date(2014, 8 /* Sep */, 2, 11, 55)
+ const result = startOfHour(date)
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */, 2, 11))
+ })
+
+ it('does not mutate the original date', function() {
+ const date = new Date(2014, 8 /* Sep */, 2, 11, 55)
+ startOfHour(date)
+ assert.deepEqual(date, new Date(2014, 8 /* Sep */, 2, 11, 55))
+ })
+
+ it('accepts a timestamp', function() {
+ const date = new Date(2014, 8 /* Sep */, 2, 11, 55).getTime()
+ const result = startOfHour(date)
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */, 2, 11))
+ })
+
+ it('returns `Invalid Date` if the given date is invalid', function() {
+ const result = startOfHour(new Date(NaN))
+ //@ts-expect-error
+ assert(result instanceof Date && isNaN(result))
+ })
+
+ it('throws TypeError exception if passed less than 1 argument', function() {
+ assert.throws(startOfHour.bind(null), TypeError)
+ })
+})
diff --git a/date-fns/src/startOfISOWeek/benchmark.js b/date-fns/src/startOfISOWeek/benchmark.js
new file mode 100644
index 0000000..2ddb09b
--- /dev/null
+++ b/date-fns/src/startOfISOWeek/benchmark.js
@@ -0,0 +1,21 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import startOfISOWeek from '.'
+import moment from 'moment'
+
+suite('startOfISOWeek', function () {
+ benchmark('date-fns', function () {
+ return startOfISOWeek(this.date)
+ })
+
+ benchmark('Moment.js', function () {
+ return this.moment.startOf('isoWeek')
+ })
+}, {
+ setup: function () {
+ this.date = new Date()
+ this.moment = moment()
+ }
+})
diff --git a/date-fns/src/startOfISOWeek/index.d.ts b/date-fns/src/startOfISOWeek/index.d.ts
new file mode 100644
index 0000000..93e573a
--- /dev/null
+++ b/date-fns/src/startOfISOWeek/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { startOfISOWeek } from 'date-fns'
+export default startOfISOWeek
diff --git a/date-fns/src/startOfISOWeek/index.js.flow b/date-fns/src/startOfISOWeek/index.js.flow
new file mode 100644
index 0000000..4b7c616
--- /dev/null
+++ b/date-fns/src/startOfISOWeek/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (date: Date | number) => Date
diff --git a/date-fns/src/startOfISOWeek/index.ts b/date-fns/src/startOfISOWeek/index.ts
new file mode 100644
index 0000000..e4d8718
--- /dev/null
+++ b/date-fns/src/startOfISOWeek/index.ts
@@ -0,0 +1,32 @@
+import startOfWeek from '../startOfWeek/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name startOfISOWeek
+ * @category ISO Week Helpers
+ * @summary Return the start of an ISO week for the given date.
+ *
+ * @description
+ * Return the start of an ISO week for the given date.
+ * The result will be in the local timezone.
+ *
+ * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} date - the original date
+ * @returns {Date} the start of an ISO week
+ * @throws {TypeError} 1 argument required
+ *
+ * @example
+ * // The start of an ISO week for 2 September 2014 11:55:00:
+ * var result = startOfISOWeek(new Date(2014, 8, 2, 11, 55, 0))
+ * //=> Mon Sep 01 2014 00:00:00
+ */
+export default function startOfISOWeek(dirtyDate: Date | number): Date {
+ requiredArgs(1, arguments)
+
+ return startOfWeek(dirtyDate, { weekStartsOn: 1 })
+}
diff --git a/date-fns/src/startOfISOWeek/test.ts b/date-fns/src/startOfISOWeek/test.ts
new file mode 100644
index 0000000..6e96187
--- /dev/null
+++ b/date-fns/src/startOfISOWeek/test.ts
@@ -0,0 +1,35 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import startOfISOWeek from '.'
+
+describe('startOfISOWeek', function() {
+ it('returns the date with the time set to 00:00:00 and the date set to the first day of an ISO week', function() {
+ const date = new Date(2014, 8 /* Sep */, 2, 11, 55, 0)
+ const result = startOfISOWeek(date)
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */, 1))
+ })
+
+ it('accepts a timestamp', function() {
+ const date = new Date(2014, 1 /* Feb */, 11, 11, 55, 0).getTime()
+ const result = startOfISOWeek(date)
+ assert.deepEqual(result, new Date(2014, 1 /* Feb */, 10))
+ })
+
+ it('does not mutate the original date', function() {
+ const date = new Date(2014, 8 /* Sep */, 2, 11, 55, 0)
+ startOfISOWeek(date)
+ assert.deepEqual(date, new Date(2014, 8 /* Sep */, 2, 11, 55, 0))
+ })
+
+ it('returns `Invalid Date` if the given date is invalid', function() {
+ const result = startOfISOWeek(new Date(NaN))
+ //@ts-expect-error
+ assert(result instanceof Date && isNaN(result))
+ })
+
+ it('throws TypeError exception if passed less than 1 argument', function() {
+ assert.throws(startOfISOWeek.bind(null), TypeError)
+ })
+})
diff --git a/date-fns/src/startOfISOWeekYear/benchmark.js b/date-fns/src/startOfISOWeekYear/benchmark.js
new file mode 100644
index 0000000..754d6c9
--- /dev/null
+++ b/date-fns/src/startOfISOWeekYear/benchmark.js
@@ -0,0 +1,15 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import startOfISOWeekYear from '.'
+
+suite('startOfISOWeekYear', function () {
+ benchmark('date-fns', function () {
+ return startOfISOWeekYear(this.date)
+ })
+}, {
+ setup: function () {
+ this.date = new Date()
+ }
+})
diff --git a/date-fns/src/startOfISOWeekYear/index.d.ts b/date-fns/src/startOfISOWeekYear/index.d.ts
new file mode 100644
index 0000000..c29d7d0
--- /dev/null
+++ b/date-fns/src/startOfISOWeekYear/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { startOfISOWeekYear } from 'date-fns'
+export default startOfISOWeekYear
diff --git a/date-fns/src/startOfISOWeekYear/index.js.flow b/date-fns/src/startOfISOWeekYear/index.js.flow
new file mode 100644
index 0000000..4b7c616
--- /dev/null
+++ b/date-fns/src/startOfISOWeekYear/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (date: Date | number) => Date
diff --git a/date-fns/src/startOfISOWeekYear/index.ts b/date-fns/src/startOfISOWeekYear/index.ts
new file mode 100644
index 0000000..9417ed4
--- /dev/null
+++ b/date-fns/src/startOfISOWeekYear/index.ts
@@ -0,0 +1,39 @@
+import getISOWeekYear from '../getISOWeekYear/index'
+import startOfISOWeek from '../startOfISOWeek/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name startOfISOWeekYear
+ * @category ISO Week-Numbering Year Helpers
+ * @summary Return the start of an ISO week-numbering year for the given date.
+ *
+ * @description
+ * Return the start of an ISO week-numbering year,
+ * which always starts 3 days before the year's first Thursday.
+ * The result will be in the local timezone.
+ *
+ * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} date - the original date
+ * @returns {Date} the start of an ISO week-numbering year
+ * @throws {TypeError} 1 argument required
+ *
+ * @example
+ * // The start of an ISO week-numbering year for 2 July 2005:
+ * const result = startOfISOWeekYear(new Date(2005, 6, 2))
+ * //=> Mon Jan 03 2005 00:00:00
+ */
+export default function startOfISOWeekYear(dirtyDate: Date | number): Date {
+ requiredArgs(1, arguments)
+
+ const year = getISOWeekYear(dirtyDate)
+ const fourthOfJanuary = new Date(0)
+ fourthOfJanuary.setFullYear(year, 0, 4)
+ fourthOfJanuary.setHours(0, 0, 0, 0)
+ const date = startOfISOWeek(fourthOfJanuary)
+ return date
+}
diff --git a/date-fns/src/startOfISOWeekYear/test.ts b/date-fns/src/startOfISOWeekYear/test.ts
new file mode 100644
index 0000000..104c632
--- /dev/null
+++ b/date-fns/src/startOfISOWeekYear/test.ts
@@ -0,0 +1,51 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import startOfISOWeekYear from '.'
+
+describe('startOfISOWeekYear', function() {
+ it('returns the date with the time set to 00:00:00 and the date set to the first day of an ISO year', function() {
+ const result = startOfISOWeekYear(new Date(2009, 0 /* Jan */, 1, 16, 0))
+ assert.deepEqual(result, new Date(2008, 11 /* Dec */, 29, 0, 0, 0, 0))
+ })
+
+ it('accepts a timestamp', function() {
+ const result = startOfISOWeekYear(
+ new Date(2005, 0 /* Jan */, 1, 6, 0).getTime()
+ )
+ assert.deepEqual(result, new Date(2003, 11 /* Dec */, 29, 0, 0, 0, 0))
+ })
+
+ it('does not mutate the original date', function() {
+ const date = new Date(2014, 6 /* Jul */, 2)
+ startOfISOWeekYear(date)
+ assert.deepEqual(date, new Date(2014, 6 /* Jul */, 2))
+ })
+
+ it('handles dates before 100 AD', function() {
+ const initialDate = new Date(0)
+ initialDate.setFullYear(9, 0 /* Jan */, 1)
+ initialDate.setHours(0, 0, 0, 0)
+ const expectedResult = new Date(0)
+ expectedResult.setFullYear(8, 11 /* Dec */, 29)
+ expectedResult.setHours(0, 0, 0, 0)
+ const result = startOfISOWeekYear(initialDate)
+ assert.deepEqual(result, expectedResult)
+ })
+
+ it('correctly handles years in which 4 January is Sunday', function() {
+ const result = startOfISOWeekYear(new Date(2009, 6 /* Jul */, 2))
+ assert.deepEqual(result, new Date(2008, 11 /* Dec */, 29))
+ })
+
+ it('returns `Invalid Date` if the given date is invalid', function() {
+ const result = startOfISOWeekYear(new Date(NaN))
+ //@ts-expect-error
+ assert(result instanceof Date && isNaN(result))
+ })
+
+ it('throws TypeError exception if passed less than 1 argument', function() {
+ assert.throws(startOfISOWeekYear.bind(null), TypeError)
+ })
+})
diff --git a/date-fns/src/startOfMinute/benchmark.js b/date-fns/src/startOfMinute/benchmark.js
new file mode 100644
index 0000000..af501d4
--- /dev/null
+++ b/date-fns/src/startOfMinute/benchmark.js
@@ -0,0 +1,21 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import startOfMinute from '.'
+import moment from 'moment'
+
+suite('startOfMinute', function () {
+ benchmark('date-fns', function () {
+ return startOfMinute(this.date)
+ })
+
+ benchmark('Moment.js', function () {
+ return this.moment.startOf('minute')
+ })
+}, {
+ setup: function () {
+ this.date = new Date()
+ this.moment = moment()
+ }
+})
diff --git a/date-fns/src/startOfMinute/index.d.ts b/date-fns/src/startOfMinute/index.d.ts
new file mode 100644
index 0000000..1b96683
--- /dev/null
+++ b/date-fns/src/startOfMinute/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { startOfMinute } from 'date-fns'
+export default startOfMinute
diff --git a/date-fns/src/startOfMinute/index.js.flow b/date-fns/src/startOfMinute/index.js.flow
new file mode 100644
index 0000000..4b7c616
--- /dev/null
+++ b/date-fns/src/startOfMinute/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (date: Date | number) => Date
diff --git a/date-fns/src/startOfMinute/index.ts b/date-fns/src/startOfMinute/index.ts
new file mode 100644
index 0000000..87d6a12
--- /dev/null
+++ b/date-fns/src/startOfMinute/index.ts
@@ -0,0 +1,32 @@
+import toDate from '../toDate/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name startOfMinute
+ * @category Minute Helpers
+ * @summary Return the start of a minute for the given date.
+ *
+ * @description
+ * Return the start of a minute for the given date.
+ * The result will be in the local timezone.
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} date - the original date
+ * @returns {Date} the start of a minute
+ * @throws {TypeError} 1 argument required
+ *
+ * @example
+ * // The start of a minute for 1 December 2014 22:15:45.400:
+ * const result = startOfMinute(new Date(2014, 11, 1, 22, 15, 45, 400))
+ * //=> Mon Dec 01 2014 22:15:00
+ */
+export default function startOfMinute(dirtyDate: Date | number): Date {
+ requiredArgs(1, arguments)
+
+ const date = toDate(dirtyDate)
+ date.setSeconds(0, 0)
+ return date
+}
diff --git a/date-fns/src/startOfMinute/test.ts b/date-fns/src/startOfMinute/test.ts
new file mode 100644
index 0000000..b362e36
--- /dev/null
+++ b/date-fns/src/startOfMinute/test.ts
@@ -0,0 +1,35 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import startOfMinute from '.'
+
+describe('startOfMinute', function() {
+ it('returns the date with the time set to the first millisecond of a minute', function() {
+ const date = new Date(2014, 11 /* Dec */, 1, 22, 15, 45, 400)
+ const result = startOfMinute(date)
+ assert.deepEqual(result, new Date(2014, 11 /* Dec */, 1, 22, 15))
+ })
+
+ it('accepts a timestamp', function() {
+ const date = new Date(2014, 11 /* Dec */, 1, 22, 15).getTime()
+ const result = startOfMinute(date)
+ assert.deepEqual(result, new Date(2014, 11 /* Dec */, 1, 22, 15))
+ })
+
+ it('does not mutate the original date', function() {
+ const date = new Date(2014, 11 /* Dec */, 1, 22, 15, 45, 400)
+ startOfMinute(date)
+ assert.deepEqual(date, new Date(2014, 11 /* Dec */, 1, 22, 15, 45, 400))
+ })
+
+ it('returns `Invalid Date` if the given date is invalid', function() {
+ const result = startOfMinute(new Date(NaN))
+ //@ts-expect-error
+ assert(result instanceof Date && isNaN(result))
+ })
+
+ it('throws TypeError exception if passed less than 1 argument', function() {
+ assert.throws(startOfMinute.bind(null), TypeError)
+ })
+})
diff --git a/date-fns/src/startOfMonth/benchmark.js b/date-fns/src/startOfMonth/benchmark.js
new file mode 100644
index 0000000..d8caa25
--- /dev/null
+++ b/date-fns/src/startOfMonth/benchmark.js
@@ -0,0 +1,21 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import startOfMonth from '.'
+import moment from 'moment'
+
+suite('startOfMonth', function () {
+ benchmark('date-fns', function () {
+ return startOfMonth(this.date)
+ })
+
+ benchmark('Moment.js', function () {
+ return this.moment.startOf('month')
+ })
+}, {
+ setup: function () {
+ this.date = new Date()
+ this.moment = moment()
+ }
+})
diff --git a/date-fns/src/startOfMonth/index.d.ts b/date-fns/src/startOfMonth/index.d.ts
new file mode 100644
index 0000000..08de436
--- /dev/null
+++ b/date-fns/src/startOfMonth/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { startOfMonth } from 'date-fns'
+export default startOfMonth
diff --git a/date-fns/src/startOfMonth/index.js.flow b/date-fns/src/startOfMonth/index.js.flow
new file mode 100644
index 0000000..4b7c616
--- /dev/null
+++ b/date-fns/src/startOfMonth/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (date: Date | number) => Date
diff --git a/date-fns/src/startOfMonth/index.ts b/date-fns/src/startOfMonth/index.ts
new file mode 100644
index 0000000..1a64f6c
--- /dev/null
+++ b/date-fns/src/startOfMonth/index.ts
@@ -0,0 +1,33 @@
+import toDate from '../toDate/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name startOfMonth
+ * @category Month Helpers
+ * @summary Return the start of a month for the given date.
+ *
+ * @description
+ * Return the start of a month for the given date.
+ * The result will be in the local timezone.
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} date - the original date
+ * @returns {Date} the start of a month
+ * @throws {TypeError} 1 argument required
+ *
+ * @example
+ * // The start of a month for 2 September 2014 11:55:00:
+ * const result = startOfMonth(new Date(2014, 8, 2, 11, 55, 0))
+ * //=> Mon Sep 01 2014 00:00:00
+ */
+export default function startOfMonth(dirtyDate: Date | number): Date {
+ requiredArgs(1, arguments)
+
+ const date = toDate(dirtyDate)
+ date.setDate(1)
+ date.setHours(0, 0, 0, 0)
+ return date
+}
diff --git a/date-fns/src/startOfMonth/test.ts b/date-fns/src/startOfMonth/test.ts
new file mode 100644
index 0000000..0251552
--- /dev/null
+++ b/date-fns/src/startOfMonth/test.ts
@@ -0,0 +1,35 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import startOfMonth from '.'
+
+describe('startOfMonth', function() {
+ it('returns the date with the time set to 00:00:00 and the date set to the first day of a month', function() {
+ const date = new Date(2014, 8 /* Sep */, 2, 11, 55, 0)
+ const result = startOfMonth(date)
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */, 1))
+ })
+
+ it('accepts a timestamp', function() {
+ const date = new Date(2014, 8 /* Sep */, 2, 11, 55, 0).getTime()
+ const result = startOfMonth(date)
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */, 1))
+ })
+
+ it('does not mutate the original date', function() {
+ const date = new Date(2014, 8 /* Sep */, 2, 11, 55, 0)
+ startOfMonth(date)
+ assert.deepEqual(date, new Date(2014, 8 /* Sep */, 2, 11, 55, 0))
+ })
+
+ it('returns `Invalid Date` if the given date is invalid', function() {
+ const result = startOfMonth(new Date(NaN))
+ //@ts-expect-error
+ assert(result instanceof Date && isNaN(result))
+ })
+
+ it('throws TypeError exception if passed less than 1 argument', function() {
+ assert.throws(startOfMonth.bind(null), TypeError)
+ })
+})
diff --git a/date-fns/src/startOfQuarter/benchmark.js b/date-fns/src/startOfQuarter/benchmark.js
new file mode 100644
index 0000000..fc99fa0
--- /dev/null
+++ b/date-fns/src/startOfQuarter/benchmark.js
@@ -0,0 +1,21 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import startOfQuarter from '.'
+import moment from 'moment'
+
+suite('startOfQuarter', function () {
+ benchmark('date-fns', function () {
+ return startOfQuarter(this.date)
+ })
+
+ benchmark('Moment.js', function () {
+ return this.moment.startOf('quarter')
+ })
+}, {
+ setup: function () {
+ this.date = new Date()
+ this.moment = moment()
+ }
+})
diff --git a/date-fns/src/startOfQuarter/index.d.ts b/date-fns/src/startOfQuarter/index.d.ts
new file mode 100644
index 0000000..7afa727
--- /dev/null
+++ b/date-fns/src/startOfQuarter/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { startOfQuarter } from 'date-fns'
+export default startOfQuarter
diff --git a/date-fns/src/startOfQuarter/index.js.flow b/date-fns/src/startOfQuarter/index.js.flow
new file mode 100644
index 0000000..4b7c616
--- /dev/null
+++ b/date-fns/src/startOfQuarter/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (date: Date | number) => Date
diff --git a/date-fns/src/startOfQuarter/index.ts b/date-fns/src/startOfQuarter/index.ts
new file mode 100644
index 0000000..c61c2a0
--- /dev/null
+++ b/date-fns/src/startOfQuarter/index.ts
@@ -0,0 +1,35 @@
+import toDate from '../toDate/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name startOfQuarter
+ * @category Quarter Helpers
+ * @summary Return the start of a year quarter for the given date.
+ *
+ * @description
+ * Return the start of a year quarter for the given date.
+ * The result will be in the local timezone.
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} date - the original date
+ * @returns {Date} the start of a quarter
+ * @throws {TypeError} 1 argument required
+ *
+ * @example
+ * // The start of a quarter for 2 September 2014 11:55:00:
+ * const result = startOfQuarter(new Date(2014, 8, 2, 11, 55, 0))
+ * //=> Tue Jul 01 2014 00:00:00
+ */
+export default function startOfQuarter(dirtyDate: Date | number): Date {
+ requiredArgs(1, arguments)
+
+ const date = toDate(dirtyDate)
+ const currentMonth = date.getMonth()
+ const month = currentMonth - (currentMonth % 3)
+ date.setMonth(month, 1)
+ date.setHours(0, 0, 0, 0)
+ return date
+}
diff --git a/date-fns/src/startOfQuarter/test.ts b/date-fns/src/startOfQuarter/test.ts
new file mode 100644
index 0000000..311e60d
--- /dev/null
+++ b/date-fns/src/startOfQuarter/test.ts
@@ -0,0 +1,35 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import startOfQuarter from '.'
+
+describe('startOfQuarter', function() {
+ it('returns the date with the time set to 00:00:00 and the date set to the first day of a quarter', function() {
+ const date = new Date(2014, 8 /* Sep */, 2, 11, 55, 0)
+ const result = startOfQuarter(date)
+ assert.deepEqual(result, new Date(2014, 6 /* Jul */, 1))
+ })
+
+ it('accepts a timestamp', function() {
+ const date = new Date(2014, 8 /* Sep */, 2, 11, 55, 0).getTime()
+ const result = startOfQuarter(date)
+ assert.deepEqual(result, new Date(2014, 6 /* Jul */, 1))
+ })
+
+ it('does not mutate the original date', function() {
+ const date = new Date(2014, 8 /* Sep */, 2, 11, 55, 0)
+ startOfQuarter(date)
+ assert.deepEqual(date, new Date(2014, 8 /* Sep */, 2, 11, 55, 0))
+ })
+
+ it('returns `Invalid Date` if the given date is invalid', function() {
+ const result = startOfQuarter(new Date(NaN))
+ //@ts-expect-error
+ assert(result instanceof Date && isNaN(result))
+ })
+
+ it('throws TypeError exception if passed less than 1 argument', function() {
+ assert.throws(startOfQuarter.bind(null), TypeError)
+ })
+})
diff --git a/date-fns/src/startOfSecond/benchmark.js b/date-fns/src/startOfSecond/benchmark.js
new file mode 100644
index 0000000..5d2aeee
--- /dev/null
+++ b/date-fns/src/startOfSecond/benchmark.js
@@ -0,0 +1,21 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import startOfSecond from '.'
+import moment from 'moment'
+
+suite('startOfSecond', function () {
+ benchmark('date-fns', function () {
+ return startOfSecond(this.date)
+ })
+
+ benchmark('Moment.js', function () {
+ return this.moment.startOf('second')
+ })
+}, {
+ setup: function () {
+ this.date = new Date()
+ this.moment = moment()
+ }
+})
diff --git a/date-fns/src/startOfSecond/index.d.ts b/date-fns/src/startOfSecond/index.d.ts
new file mode 100644
index 0000000..b3b4017
--- /dev/null
+++ b/date-fns/src/startOfSecond/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { startOfSecond } from 'date-fns'
+export default startOfSecond
diff --git a/date-fns/src/startOfSecond/index.js.flow b/date-fns/src/startOfSecond/index.js.flow
new file mode 100644
index 0000000..4b7c616
--- /dev/null
+++ b/date-fns/src/startOfSecond/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (date: Date | number) => Date
diff --git a/date-fns/src/startOfSecond/index.ts b/date-fns/src/startOfSecond/index.ts
new file mode 100644
index 0000000..bc3e4a3
--- /dev/null
+++ b/date-fns/src/startOfSecond/index.ts
@@ -0,0 +1,32 @@
+import toDate from '../toDate/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name startOfSecond
+ * @category Second Helpers
+ * @summary Return the start of a second for the given date.
+ *
+ * @description
+ * Return the start of a second for the given date.
+ * The result will be in the local timezone.
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} date - the original date
+ * @returns {Date} the start of a second
+ * @throws {TypeError} 1 argument required
+ *
+ * @example
+ * // The start of a second for 1 December 2014 22:15:45.400:
+ * const result = startOfSecond(new Date(2014, 11, 1, 22, 15, 45, 400))
+ * //=> Mon Dec 01 2014 22:15:45.000
+ */
+export default function startOfSecond(dirtyDate: Date | number): Date {
+ requiredArgs(1, arguments)
+
+ const date = toDate(dirtyDate)
+ date.setMilliseconds(0)
+ return date
+}
diff --git a/date-fns/src/startOfSecond/test.ts b/date-fns/src/startOfSecond/test.ts
new file mode 100644
index 0000000..a7444c1
--- /dev/null
+++ b/date-fns/src/startOfSecond/test.ts
@@ -0,0 +1,35 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import startOfSecond from '.'
+
+describe('startOfSecond', function() {
+ it('returns the date with the time set to the first millisecond of a second', function() {
+ const date = new Date(2014, 11 /* Dec */, 1, 22, 15, 45, 400)
+ const result = startOfSecond(date)
+ assert.deepEqual(result, new Date(2014, 11 /* Dec */, 1, 22, 15, 45))
+ })
+
+ it('accepts a timestamp', function() {
+ const date = new Date(2014, 11 /* Dec */, 1, 22, 15, 45, 400).getTime()
+ const result = startOfSecond(date)
+ assert.deepEqual(result, new Date(2014, 11 /* Dec */, 1, 22, 15, 45))
+ })
+
+ it('does not mutate the original date', function() {
+ const date = new Date(2014, 11 /* Dec */, 1, 22, 15, 45, 400)
+ startOfSecond(date)
+ assert.deepEqual(date, new Date(2014, 11 /* Dec */, 1, 22, 15, 45, 400))
+ })
+
+ it('returns `Invalid Date` if the given date is invalid', function() {
+ const result = startOfSecond(new Date(NaN))
+ //@ts-expect-error
+ assert(result instanceof Date && isNaN(result))
+ })
+
+ it('throws TypeError exception if passed less than 1 argument', function() {
+ assert.throws(startOfSecond.bind(null), TypeError)
+ })
+})
diff --git a/date-fns/src/startOfToday/benchmark.js b/date-fns/src/startOfToday/benchmark.js
new file mode 100644
index 0000000..c479df5
--- /dev/null
+++ b/date-fns/src/startOfToday/benchmark.js
@@ -0,0 +1,9 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import startOfToday from '.'
+
+suite('startOfToday', () => {
+ benchmark('date-fns', () => startOfToday())
+})
diff --git a/date-fns/src/startOfToday/index.d.ts b/date-fns/src/startOfToday/index.d.ts
new file mode 100644
index 0000000..8a0615e
--- /dev/null
+++ b/date-fns/src/startOfToday/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { startOfToday } from 'date-fns'
+export default startOfToday
diff --git a/date-fns/src/startOfToday/index.js.flow b/date-fns/src/startOfToday/index.js.flow
new file mode 100644
index 0000000..26bde32
--- /dev/null
+++ b/date-fns/src/startOfToday/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: () => Date
diff --git a/date-fns/src/startOfToday/index.ts b/date-fns/src/startOfToday/index.ts
new file mode 100644
index 0000000..60eca49
--- /dev/null
+++ b/date-fns/src/startOfToday/index.ts
@@ -0,0 +1,28 @@
+import startOfDay from '../startOfDay/index'
+
+/**
+ * @name startOfToday
+ * @category Day Helpers
+ * @summary Return the start of today.
+ * @pure false
+ *
+ * @description
+ * Return the start of today.
+ *
+ * > ⚠️ Please note that this function is not present in the FP submodule as
+ * > it uses `Date.now()` internally hence impure and can't be safely curried.
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @returns {Date} the start of today
+ *
+ * @example
+ * // If today is 6 October 2014:
+ * var result = startOfToday()
+ * //=> Mon Oct 6 2014 00:00:00
+ */
+export default function startOfToday(): Date {
+ return startOfDay(Date.now())
+}
diff --git a/date-fns/src/startOfToday/test.ts b/date-fns/src/startOfToday/test.ts
new file mode 100644
index 0000000..1b2f691
--- /dev/null
+++ b/date-fns/src/startOfToday/test.ts
@@ -0,0 +1,24 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import sinon from 'sinon'
+import startOfToday from '.'
+
+describe('startOfToday', function() {
+ let clock
+ beforeEach(function() {
+ clock = sinon.useFakeTimers(
+ new Date(2014, 8 /* Sep */, 25, 14, 30, 45, 500).getTime()
+ )
+ })
+
+ afterEach(function() {
+ clock.restore()
+ })
+
+ it('returns the current date with the time setted to 00:00:00', function() {
+ var result = startOfToday()
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */, 25))
+ })
+})
diff --git a/date-fns/src/startOfTomorrow/benchmark.js b/date-fns/src/startOfTomorrow/benchmark.js
new file mode 100644
index 0000000..a550b46
--- /dev/null
+++ b/date-fns/src/startOfTomorrow/benchmark.js
@@ -0,0 +1,9 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import startOfTomorrow from '.'
+
+suite('startOfTomorrow', () => {
+ benchmark('date-fns', () => startOfTomorrow())
+})
diff --git a/date-fns/src/startOfTomorrow/index.d.ts b/date-fns/src/startOfTomorrow/index.d.ts
new file mode 100644
index 0000000..464ad5b
--- /dev/null
+++ b/date-fns/src/startOfTomorrow/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { startOfTomorrow } from 'date-fns'
+export default startOfTomorrow
diff --git a/date-fns/src/startOfTomorrow/index.js.flow b/date-fns/src/startOfTomorrow/index.js.flow
new file mode 100644
index 0000000..26bde32
--- /dev/null
+++ b/date-fns/src/startOfTomorrow/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: () => Date
diff --git a/date-fns/src/startOfTomorrow/index.ts b/date-fns/src/startOfTomorrow/index.ts
new file mode 100644
index 0000000..1d18b5f
--- /dev/null
+++ b/date-fns/src/startOfTomorrow/index.ts
@@ -0,0 +1,34 @@
+/**
+ * @name startOfTomorrow
+ * @category Day Helpers
+ * @summary Return the start of tomorrow.
+ * @pure false
+ *
+ * @description
+ * Return the start of tomorrow.
+ *
+ * > ⚠️ Please note that this function is not present in the FP submodule as
+ * > it uses `new Date()` internally hence impure and can't be safely curried.
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @returns {Date} the start of tomorrow
+ *
+ * @example
+ * // If today is 6 October 2014:
+ * const result = startOfTomorrow()
+ * //=> Tue Oct 7 2014 00:00:00
+ */
+export default function startOfTomorrow() {
+ const now = new Date()
+ const year = now.getFullYear()
+ const month = now.getMonth()
+ const day = now.getDate()
+
+ const date = new Date(0)
+ date.setFullYear(year, month, day + 1)
+ date.setHours(0, 0, 0, 0)
+ return date
+}
diff --git a/date-fns/src/startOfTomorrow/test.ts b/date-fns/src/startOfTomorrow/test.ts
new file mode 100644
index 0000000..aab3aba
--- /dev/null
+++ b/date-fns/src/startOfTomorrow/test.ts
@@ -0,0 +1,34 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'assert'
+import sinon from 'sinon'
+import startOfTomorrow from '.'
+
+describe('startOfTomorrow', function() {
+ it('returns the start of tomorrow', function() {
+ const clock = sinon.useFakeTimers(
+ new Date(2014, 8 /* Sep */, 25, 14, 30, 45, 500).getTime()
+ )
+
+ const result = startOfTomorrow()
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */, 26))
+
+ clock.restore()
+ })
+
+ it('handles dates before 100 AD', function() {
+ const now = new Date(0)
+ now.setFullYear(14, 8 /* Sep */, 25)
+ now.setHours(0, 0, 0, 0)
+ const clock = sinon.useFakeTimers(now.getTime())
+
+ const expectedResult = new Date(0)
+ expectedResult.setFullYear(14, 8 /* Sep */, 26)
+ expectedResult.setHours(0, 0, 0, 0)
+ const result = startOfTomorrow()
+ assert.deepEqual(result, expectedResult)
+
+ clock.restore()
+ })
+})
diff --git a/date-fns/src/startOfWeek/benchmark.js b/date-fns/src/startOfWeek/benchmark.js
new file mode 100644
index 0000000..cebde9f
--- /dev/null
+++ b/date-fns/src/startOfWeek/benchmark.js
@@ -0,0 +1,21 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import startOfWeek from '.'
+import moment from 'moment'
+
+suite('startOfWeek', function () {
+ benchmark('date-fns', function () {
+ return startOfWeek(this.date)
+ })
+
+ benchmark('Moment.js', function () {
+ return this.moment.startOf('week')
+ })
+}, {
+ setup: function () {
+ this.date = new Date()
+ this.moment = moment()
+ }
+})
diff --git a/date-fns/src/startOfWeek/index.d.ts b/date-fns/src/startOfWeek/index.d.ts
new file mode 100644
index 0000000..4a45d11
--- /dev/null
+++ b/date-fns/src/startOfWeek/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { startOfWeek } from 'date-fns'
+export default startOfWeek
diff --git a/date-fns/src/startOfWeek/index.js.flow b/date-fns/src/startOfWeek/index.js.flow
new file mode 100644
index 0000000..9285b67
--- /dev/null
+++ b/date-fns/src/startOfWeek/index.js.flow
@@ -0,0 +1,58 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (
+ date: Date | number,
+ options?: {
+ locale?: Locale,
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ }
+) => Date
diff --git a/date-fns/src/startOfWeek/index.ts b/date-fns/src/startOfWeek/index.ts
new file mode 100644
index 0000000..ab33312
--- /dev/null
+++ b/date-fns/src/startOfWeek/index.ts
@@ -0,0 +1,66 @@
+import { LocaleOptions, WeekStartOptions } from '../types'
+import toDate from '../toDate/index'
+import toInteger from '../_lib/toInteger/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name startOfWeek
+ * @category Week Helpers
+ * @summary Return the start of a week for the given date.
+ *
+ * @description
+ * Return the start of a week for the given date.
+ * The result will be in the local timezone.
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} date - the original date
+ * @param {Object} [options] - an object with options.
+ * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}
+ * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)
+ * @returns {Date} the start of a week
+ * @throws {TypeError} 1 argument required
+ * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6
+ *
+ * @example
+ * // The start of a week for 2 September 2014 11:55:00:
+ * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0))
+ * //=> Sun Aug 31 2014 00:00:00
+ *
+ * @example
+ * // If the week starts on Monday, the start of the week for 2 September 2014 11:55:00:
+ * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })
+ * //=> Mon Sep 01 2014 00:00:00
+ */
+export default function startOfWeek(
+ dirtyDate: Date | number,
+ dirtyOptions?: LocaleOptions & WeekStartOptions
+): Date {
+ requiredArgs(1, arguments)
+
+ const options = dirtyOptions || {}
+ const locale = options.locale
+ const localeWeekStartsOn =
+ locale && locale.options && locale.options.weekStartsOn
+ const defaultWeekStartsOn =
+ localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn)
+ const weekStartsOn =
+ options.weekStartsOn == null
+ ? defaultWeekStartsOn
+ : toInteger(options.weekStartsOn)
+
+ // Test if weekStartsOn is between 0 and 6 _and_ is not NaN
+ if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {
+ throw new RangeError('weekStartsOn must be between 0 and 6 inclusively')
+ }
+
+ const date = toDate(dirtyDate)
+ const day = date.getDay()
+ const diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn
+
+ date.setDate(date.getDate() - diff)
+ date.setHours(0, 0, 0, 0)
+ return date
+}
diff --git a/date-fns/src/startOfWeek/test.ts b/date-fns/src/startOfWeek/test.ts
new file mode 100644
index 0000000..d5d2cb6
--- /dev/null
+++ b/date-fns/src/startOfWeek/test.ts
@@ -0,0 +1,113 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'assert'
+import startOfWeek from '.'
+
+describe('startOfWeek', function () {
+ it('returns the date with the time set to 00:00:00 and the date set to the first day of a week', function () {
+ const date = new Date(2014, 8 /* Sep */, 2, 11, 55, 0)
+ const result = startOfWeek(date)
+ assert.deepEqual(result, new Date(2014, 7 /* Aug */, 31))
+ })
+
+ it('allows to specify which day is the first day of the week', function () {
+ const date = new Date(2014, 8 /* Sep */, 2, 11, 55, 0)
+ const result = startOfWeek(date, { weekStartsOn: 1 })
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */, 1))
+ })
+
+ it('allows to specify which day is the first day of the week in locale', function () {
+ const date = new Date(2014, 8 /* Sep */, 2, 11, 55, 0)
+ const result = startOfWeek(date, {
+ // @ts-expect-error
+ locale: {
+ options: { weekStartsOn: 1 },
+ },
+ })
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */, 1))
+ })
+
+ it('`options.weekStartsOn` overwrites the first day of the week specified in locale', function () {
+ const date = new Date(2014, 8 /* Sep */, 2, 11, 55, 0)
+ const result = startOfWeek(date, {
+ weekStartsOn: 1,
+ // @ts-expect-error
+ locale: {
+ options: { weekStartsOn: 0 },
+ },
+ })
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */, 1))
+ })
+
+ it('implicitly converts options', function () {
+ const date = new Date(2014, 8 /* Sep */, 2, 11, 55, 0)
+ // @ts-expect-error
+ const result = startOfWeek(date, { weekStartsOn: '1' })
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */, 1))
+ })
+
+ it('accepts a timestamp', function () {
+ const date = new Date(2014, 8 /* Sep */, 2, 11, 55, 0).getTime()
+ const result = startOfWeek(date)
+ assert.deepEqual(result, new Date(2014, 7 /* Aug */, 31))
+ })
+
+ it('does not mutate the original date', function () {
+ const date = new Date(2014, 8 /* Sep */, 2, 11, 55, 0)
+ startOfWeek(date)
+ assert.deepEqual(date, new Date(2014, 8 /* Sep */, 2, 11, 55, 0))
+ })
+
+ describe('edge cases', function () {
+ describe('when the given day is before the start of a week', function () {
+ it('it returns the start of a week', function () {
+ const date = new Date(2014, 9 /* Oct */, 6)
+ const result = startOfWeek(date, { weekStartsOn: 3 })
+ assert.deepEqual(result, new Date(2014, 9 /* Oct */, 1))
+ })
+ })
+
+ describe('when the given day is the start of a week', function () {
+ it('it returns the start of a week', function () {
+ const date = new Date(2014, 9 /* Oct */, 8)
+ const result = startOfWeek(date, { weekStartsOn: 3 })
+ assert.deepEqual(result, new Date(2014, 9 /* Oct */, 8))
+ })
+ })
+
+ describe('when the given day is after the start of a week', function () {
+ it('it returns the start of a week', function () {
+ const date = new Date(2014, 9 /* Oct */, 10)
+ const result = startOfWeek(date, { weekStartsOn: 3 })
+ assert.deepEqual(result, new Date(2014, 9 /* Oct */, 8))
+ })
+ })
+
+ it('handles the week at the start of a year', function () {
+ const date = new Date(2014, 0 /* Jan */, 1)
+ const result = startOfWeek(date)
+ assert.deepEqual(result, new Date(2013, 11 /* Dec */, 29))
+ })
+ })
+
+ it('returns `Invalid Date` if the given date is invalid', function () {
+ const result = startOfWeek(new Date(NaN))
+ assert(result instanceof Date && isNaN(Number(result)))
+ })
+
+ it('throws `RangeError` if `options.weekStartsOn` is not convertable to 0, 1, ..., 6 or undefined', function () {
+ const block = () =>
+ startOfWeek(
+ new Date(2014, 8 /* Sep */, 2, 11, 55, 0),
+ // @ts-expect-error
+ { weekStartsOn: NaN }
+ )
+ assert.throws(block, RangeError)
+ })
+
+ it('throws TypeError exception if passed less than 1 argument', function () {
+ // @ts-expect-error
+ assert.throws(startOfWeek.bind(null), TypeError)
+ })
+})
diff --git a/date-fns/src/startOfWeekYear/index.d.ts b/date-fns/src/startOfWeekYear/index.d.ts
new file mode 100644
index 0000000..95b4851
--- /dev/null
+++ b/date-fns/src/startOfWeekYear/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { startOfWeekYear } from 'date-fns'
+export default startOfWeekYear
diff --git a/date-fns/src/startOfWeekYear/index.js b/date-fns/src/startOfWeekYear/index.js
new file mode 100644
index 0000000..a35fdde
--- /dev/null
+++ b/date-fns/src/startOfWeekYear/index.js
@@ -0,0 +1,71 @@
+import getWeekYear from '../getWeekYear/index'
+import startOfWeek from '../startOfWeek/index'
+import toInteger from '../_lib/toInteger/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name startOfWeekYear
+ * @category Week-Numbering Year Helpers
+ * @summary Return the start of a local week-numbering year for the given date.
+ *
+ * @description
+ * Return the start of a local week-numbering year.
+ * The exact calculation depends on the values of
+ * `options.weekStartsOn` (which is the index of the first day of the week)
+ * and `options.firstWeekContainsDate` (which is the day of January, which is always in
+ * the first week of the week-numbering year)
+ *
+ * Week numbering: https://en.wikipedia.org/wiki/Week#Week_numbering
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} date - the original date
+ * @param {Object} [options] - an object with options.
+ * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}
+ * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)
+ * @param {1|2|3|4|5|6|7} [options.firstWeekContainsDate=1] - the day of January, which is always in the first week of the year
+ * @returns {Date} the start of a week-numbering year
+ * @throws {TypeError} 1 argument required
+ * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6
+ * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7
+ *
+ * @example
+ * // The start of an a week-numbering year for 2 July 2005 with default settings:
+ * var result = startOfWeekYear(new Date(2005, 6, 2))
+ * //=> Sun Dec 26 2004 00:00:00
+ *
+ * @example
+ * // The start of a week-numbering year for 2 July 2005
+ * // if Monday is the first day of week
+ * // and 4 January is always in the first week of the year:
+ * var result = startOfWeekYear(new Date(2005, 6, 2), {
+ * weekStartsOn: 1,
+ * firstWeekContainsDate: 4
+ * })
+ * //=> Mon Jan 03 2005 00:00:00
+ */
+export default function startOfWeekYear(dirtyDate, dirtyOptions) {
+ requiredArgs(1, arguments)
+
+ var options = dirtyOptions || {}
+ var locale = options.locale
+ var localeFirstWeekContainsDate =
+ locale && locale.options && locale.options.firstWeekContainsDate
+ var defaultFirstWeekContainsDate =
+ localeFirstWeekContainsDate == null
+ ? 1
+ : toInteger(localeFirstWeekContainsDate)
+ var firstWeekContainsDate =
+ options.firstWeekContainsDate == null
+ ? defaultFirstWeekContainsDate
+ : toInteger(options.firstWeekContainsDate)
+
+ var year = getWeekYear(dirtyDate, dirtyOptions)
+ var firstWeek = new Date(0)
+ firstWeek.setFullYear(year, 0, firstWeekContainsDate)
+ firstWeek.setHours(0, 0, 0, 0)
+ var date = startOfWeek(firstWeek, dirtyOptions)
+ return date
+}
diff --git a/date-fns/src/startOfWeekYear/index.js.flow b/date-fns/src/startOfWeekYear/index.js.flow
new file mode 100644
index 0000000..49cecb6
--- /dev/null
+++ b/date-fns/src/startOfWeekYear/index.js.flow
@@ -0,0 +1,59 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (
+ date: Date | number,
+ options?: {
+ locale?: Locale,
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ }
+) => Date
diff --git a/date-fns/src/startOfWeekYear/test.js b/date-fns/src/startOfWeekYear/test.js
new file mode 100644
index 0000000..c01bfa7
--- /dev/null
+++ b/date-fns/src/startOfWeekYear/test.js
@@ -0,0 +1,83 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import startOfWeekYear from '.'
+
+describe('startOfWeekYear', function() {
+ it('returns the date with the time set to 00:00:00 and the date set to the first day of a week year', function() {
+ var result = startOfWeekYear(new Date(2005, 6 /* Jul */, 2))
+ assert.deepEqual(result, new Date(2004, 11 /* Dec */, 26, 0, 0, 0, 0))
+ })
+
+ it('accepts a timestamp', function() {
+ var result = startOfWeekYear(new Date(2005, 0 /* Jan */, 1, 6, 0).getTime())
+ assert.deepEqual(result, new Date(2004, 11 /* Dec */, 26, 0, 0, 0, 0))
+ })
+
+ it('does not mutate the original date', function() {
+ var date = new Date(2014, 6 /* Jul */, 2)
+ startOfWeekYear(date)
+ assert.deepEqual(date, new Date(2014, 6 /* Jul */, 2))
+ })
+
+ it('handles dates before 100 AD', function() {
+ var initialDate = new Date(0)
+ initialDate.setFullYear(9, 0 /* Jan */, 1)
+ initialDate.setHours(0, 0, 0, 0)
+ var expectedResult = new Date(0)
+ expectedResult.setFullYear(8, 11 /* Dec */, 28)
+ expectedResult.setHours(0, 0, 0, 0)
+ var result = startOfWeekYear(initialDate)
+ assert.deepEqual(result, expectedResult)
+ })
+
+ it('returns `Invalid Date` if the given date is invalid', function() {
+ var result = startOfWeekYear(new Date(NaN))
+ assert(result instanceof Date && isNaN(result))
+ })
+
+ it('allows to specify `weekStartsOn` and `firstWeekContainsDate` in locale', function() {
+ var date = new Date(2005, 6 /* Jul */, 2)
+ var result = startOfWeekYear(date, {
+ // $ExpectedMistake
+ locale: {
+ options: { weekStartsOn: 1, firstWeekContainsDate: 4 }
+ }
+ })
+ assert.deepEqual(result, new Date(2005, 0 /* Jan */, 3, 0, 0, 0, 0))
+ })
+
+ it('`options.weekStartsOn` overwrites the first day of the week specified in locale', function() {
+ var date = new Date(2005, 6 /* Jul */, 2)
+ var result = startOfWeekYear(date, {
+ weekStartsOn: 1,
+ firstWeekContainsDate: 4,
+ // $ExpectedMistake
+ locale: {
+ options: { weekStartsOn: 0, firstWeekContainsDate: 1 }
+ }
+ })
+ assert.deepEqual(result, new Date(2005, 0 /* Jan */, 3, 0, 0, 0, 0))
+ })
+
+ it('throws `RangeError` if `options.weekStartsOn` is not convertable to 0, 1, ..., 6 or undefined', function() {
+ // $ExpectedMistake
+ var block = startOfWeekYear.bind(null, new Date(2007, 11 /* Dec */, 31), {
+ weekStartsOn: NaN
+ })
+ assert.throws(block, RangeError)
+ })
+
+ it('throws `RangeError` if `options.firstWeekContainsDate` is not convertable to 1, 2, ..., 7 or undefined', function() {
+ // $ExpectedMistake
+ var block = startOfWeekYear.bind(null, new Date(2007, 11 /* Dec */, 31), {
+ firstWeekContainsDate: NaN
+ })
+ assert.throws(block, RangeError)
+ })
+
+ it('throws TypeError exception if passed less than 1 argument', function() {
+ assert.throws(startOfWeekYear.bind(null), TypeError)
+ })
+})
diff --git a/date-fns/src/startOfYear/benchmark.js b/date-fns/src/startOfYear/benchmark.js
new file mode 100644
index 0000000..4a2893e
--- /dev/null
+++ b/date-fns/src/startOfYear/benchmark.js
@@ -0,0 +1,21 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import startOfYear from '.'
+import moment from 'moment'
+
+suite('startOfYear', function () {
+ benchmark('date-fns', function () {
+ return startOfYear(this.date)
+ })
+
+ benchmark('Moment.js', function () {
+ return this.moment.startOf('year')
+ })
+}, {
+ setup: function () {
+ this.date = new Date()
+ this.moment = moment()
+ }
+})
diff --git a/date-fns/src/startOfYear/index.d.ts b/date-fns/src/startOfYear/index.d.ts
new file mode 100644
index 0000000..669ffc9
--- /dev/null
+++ b/date-fns/src/startOfYear/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { startOfYear } from 'date-fns'
+export default startOfYear
diff --git a/date-fns/src/startOfYear/index.js.flow b/date-fns/src/startOfYear/index.js.flow
new file mode 100644
index 0000000..4b7c616
--- /dev/null
+++ b/date-fns/src/startOfYear/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (date: Date | number) => Date
diff --git a/date-fns/src/startOfYear/index.ts b/date-fns/src/startOfYear/index.ts
new file mode 100644
index 0000000..b72be94
--- /dev/null
+++ b/date-fns/src/startOfYear/index.ts
@@ -0,0 +1,34 @@
+import toDate from '../toDate/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name startOfYear
+ * @category Year Helpers
+ * @summary Return the start of a year for the given date.
+ *
+ * @description
+ * Return the start of a year for the given date.
+ * The result will be in the local timezone.
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} date - the original date
+ * @returns {Date} the start of a year
+ * @throws {TypeError} 1 argument required
+ *
+ * @example
+ * // The start of a year for 2 September 2014 11:55:00:
+ * const result = startOfYear(new Date(2014, 8, 2, 11, 55, 00))
+ * //=> Wed Jan 01 2014 00:00:00
+ */
+export default function startOfYear(dirtyDate: Date | number): Date {
+ requiredArgs(1, arguments)
+
+ const cleanDate = toDate(dirtyDate)
+ const date = new Date(0)
+ date.setFullYear(cleanDate.getFullYear(), 0, 1)
+ date.setHours(0, 0, 0, 0)
+ return date
+}
diff --git a/date-fns/src/startOfYear/test.ts b/date-fns/src/startOfYear/test.ts
new file mode 100644
index 0000000..bff3352
--- /dev/null
+++ b/date-fns/src/startOfYear/test.ts
@@ -0,0 +1,46 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import startOfYear from '.'
+
+describe('startOfYear', function() {
+ it('returns the date with the time set to 00:00:00 and the date set to the first day of a year', function() {
+ const date = new Date(2014, 8 /* Sep */, 2, 11, 55, 0)
+ const result = startOfYear(date)
+ assert.deepEqual(result, new Date(2014, 0 /* Jan */, 1, 0, 0, 0, 0))
+ })
+
+ it('accepts a timestamp', function() {
+ const date = new Date(2014, 8 /* Sep */, 2, 11, 55, 0).getTime()
+ const result = startOfYear(date)
+ assert.deepEqual(result, new Date(2014, 0 /* Dec */, 1, 0, 0, 0, 0))
+ })
+
+ it('does not mutate the original date', function() {
+ const date = new Date(2014, 8 /* Sep */, 2, 11, 55, 0)
+ startOfYear(date)
+ assert.deepEqual(date, new Date(2014, 8 /* Sep */, 2, 11, 55, 0))
+ })
+
+ it('handles dates before 100 AD', function() {
+ const initialDate = new Date(0)
+ initialDate.setFullYear(9, 0 /* Jan */, 5)
+ initialDate.setHours(0, 0, 0, 0)
+ const expectedResult = new Date(0)
+ expectedResult.setFullYear(9, 0 /* Jan */, 1)
+ expectedResult.setHours(0, 0, 0, 0)
+ const result = startOfYear(initialDate)
+ assert.deepEqual(result, expectedResult)
+ })
+
+ it('returns `Invalid Date` if the given date is invalid', function() {
+ const result = startOfYear(new Date(NaN))
+ //@ts-expect-error
+ assert(result instanceof Date && isNaN(result))
+ })
+
+ it('throws TypeError exception if passed less than 1 argument', function() {
+ assert.throws(startOfYear.bind(null), TypeError)
+ })
+})
diff --git a/date-fns/src/startOfYesterday/benchmark.js b/date-fns/src/startOfYesterday/benchmark.js
new file mode 100644
index 0000000..4c37877
--- /dev/null
+++ b/date-fns/src/startOfYesterday/benchmark.js
@@ -0,0 +1,9 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import startOfToday from '.'
+
+suite('startOfYesterday', () => {
+ benchmark('date-fns', () => startOfToday())
+})
diff --git a/date-fns/src/startOfYesterday/index.d.ts b/date-fns/src/startOfYesterday/index.d.ts
new file mode 100644
index 0000000..0342a28
--- /dev/null
+++ b/date-fns/src/startOfYesterday/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { startOfYesterday } from 'date-fns'
+export default startOfYesterday
diff --git a/date-fns/src/startOfYesterday/index.js.flow b/date-fns/src/startOfYesterday/index.js.flow
new file mode 100644
index 0000000..26bde32
--- /dev/null
+++ b/date-fns/src/startOfYesterday/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: () => Date
diff --git a/date-fns/src/startOfYesterday/index.ts b/date-fns/src/startOfYesterday/index.ts
new file mode 100644
index 0000000..d0a793d
--- /dev/null
+++ b/date-fns/src/startOfYesterday/index.ts
@@ -0,0 +1,34 @@
+/**
+ * @name startOfYesterday
+ * @category Day Helpers
+ * @summary Return the start of yesterday.
+ * @pure false
+ *
+ * @description
+ * Return the start of yesterday.
+ *
+ * > ⚠️ Please note that this function is not present in the FP submodule as
+ * > it uses `new Date()` internally hence impure and can't be safely curried.
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @returns {Date} the start of yesterday
+ *
+ * @example
+ * // If today is 6 October 2014:
+ * const result = startOfYesterday()
+ * //=> Sun Oct 5 2014 00:00:00
+ */
+export default function startOfYesterday() {
+ const now = new Date()
+ const year = now.getFullYear()
+ const month = now.getMonth()
+ const day = now.getDate()
+
+ const date = new Date(0)
+ date.setFullYear(year, month, day - 1)
+ date.setHours(0, 0, 0, 0)
+ return date
+}
diff --git a/date-fns/src/startOfYesterday/test.ts b/date-fns/src/startOfYesterday/test.ts
new file mode 100644
index 0000000..5847393
--- /dev/null
+++ b/date-fns/src/startOfYesterday/test.ts
@@ -0,0 +1,34 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'assert'
+import sinon from 'sinon'
+import startOfYesterday from '.'
+
+describe('startOfYesterday', function() {
+ it('returns the start of yesterday', function() {
+ const clock = sinon.useFakeTimers(
+ new Date(2014, 8 /* Sep */, 25, 14, 30, 45, 500).getTime()
+ )
+
+ const result = startOfYesterday()
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */, 24))
+
+ clock.restore()
+ })
+
+ it('handles dates before 100 AD', function() {
+ const now = new Date(0)
+ now.setFullYear(14, 8 /* Sep */, 25)
+ now.setHours(0, 0, 0, 0)
+ const clock = sinon.useFakeTimers(now.getTime())
+
+ const expectedResult = new Date(0)
+ expectedResult.setFullYear(14, 8 /* Sep */, 24)
+ expectedResult.setHours(0, 0, 0, 0)
+ const result = startOfYesterday()
+ assert.deepEqual(result, expectedResult)
+
+ clock.restore()
+ })
+})
diff --git a/date-fns/src/sub/benchmark.js b/date-fns/src/sub/benchmark.js
new file mode 100644
index 0000000..8b96341
--- /dev/null
+++ b/date-fns/src/sub/benchmark.js
@@ -0,0 +1,25 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import sub from '.'
+import moment from 'moment'
+
+suite(
+ 'add',
+ function() {
+ benchmark('date-fns', function() {
+ return sub(this.date, { hours: 5, minutes: 10 })
+ })
+
+ benchmark('Moment.js', function() {
+ return this.moment.subtract({ hours: 5, minutes: 10 })
+ })
+ },
+ {
+ setup: function() {
+ this.date = new Date()
+ this.moment = moment()
+ }
+ }
+)
diff --git a/date-fns/src/sub/index.d.ts b/date-fns/src/sub/index.d.ts
new file mode 100644
index 0000000..7a4f3ec
--- /dev/null
+++ b/date-fns/src/sub/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { sub } from 'date-fns'
+export default sub
diff --git a/date-fns/src/sub/index.js b/date-fns/src/sub/index.js
new file mode 100644
index 0000000..fa5f30f
--- /dev/null
+++ b/date-fns/src/sub/index.js
@@ -0,0 +1,72 @@
+import subDays from '../subDays/index'
+import subMonths from '../subMonths/index'
+import toDate from '../toDate/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+import toInteger from '../_lib/toInteger/index'
+
+/**
+ * @name sub
+ * @category Common Helpers
+ * @summary Subtract the specified years, months, weeks, days, hours, minutes and seconds from the given date.
+ *
+ * @description
+ * Subtract the specified years, months, weeks, days, hours, minutes and seconds from the given date.
+ *
+ * @param {Date|Number} date - the date to be changed
+ * @param {Duration} duration - the object with years, months, weeks, days, hours, minutes and seconds to be subtracted
+ *
+ * | Key | Description |
+ * |---------|------------------------------------|
+ * | years | Amount of years to be subtracted |
+ * | months | Amount of months to be subtracted |
+ * | weeks | Amount of weeks to be subtracted |
+ * | days | Amount of days to be subtracted |
+ * | hours | Amount of hours to be subtracted |
+ * | minutes | Amount of minutes to be subtracted |
+ * | seconds | Amount of seconds to be subtracted |
+ *
+ * All values default to 0
+ *
+ * @returns {Date} the new date with the seconds subtracted
+ * @throws {TypeError} 2 arguments required
+ *
+ * @example
+ * // Subtract the following duration from 15 June 2017 15:29:20
+ * const result = sub(new Date(2017, 5, 15, 15, 29, 20), {
+ * years: 2,
+ * months: 9,
+ * weeks: 1,
+ * days: 7,
+ * hours: 5,
+ * minutes: 9,
+ * seconds: 30
+ * })
+ * //=> Mon Sep 1 2014 10:19:50
+ */
+export default function sub(dirtyDate, duration) {
+ requiredArgs(2, arguments)
+
+ if (!duration || typeof duration !== 'object') return new Date(NaN)
+
+ const years = 'years' in duration ? toInteger(duration.years) : 0
+ const months = 'months' in duration ? toInteger(duration.months) : 0
+ const weeks = 'weeks' in duration ? toInteger(duration.weeks) : 0
+ const days = 'days' in duration ? toInteger(duration.days) : 0
+ const hours = 'hours' in duration ? toInteger(duration.hours) : 0
+ const minutes = 'minutes' in duration ? toInteger(duration.minutes) : 0
+ const seconds = 'seconds' in duration ? toInteger(duration.seconds) : 0
+
+ // Subtract years and months
+ const dateWithoutMonths = subMonths(toDate(dirtyDate), months + years * 12)
+
+ // Subtract weeks and days
+ const dateWithoutDays = subDays(dateWithoutMonths, days + weeks * 7)
+
+ // Subtract hours, minutes and seconds
+ const minutestoSub = minutes + hours * 60
+ const secondstoSub = seconds + minutestoSub * 60
+ const mstoSub = secondstoSub * 1000
+ const finalDate = new Date(dateWithoutDays.getTime() - mstoSub)
+
+ return finalDate
+}
diff --git a/date-fns/src/sub/index.js.flow b/date-fns/src/sub/index.js.flow
new file mode 100644
index 0000000..e79df7c
--- /dev/null
+++ b/date-fns/src/sub/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (date: Date | number, duration: Duration) => Date
diff --git a/date-fns/src/sub/test.js b/date-fns/src/sub/test.js
new file mode 100644
index 0000000..016accc
--- /dev/null
+++ b/date-fns/src/sub/test.js
@@ -0,0 +1,82 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import sub from '.'
+
+describe('sub', () => {
+ it('subtracts the duration from the given date', () => {
+ const result = sub(new Date(2017, 5 /* June */, 15, 15, 29, 20), {
+ years: 2,
+ months: 9,
+ weeks: 1,
+ days: 7,
+ hours: 5,
+ minutes: 9,
+ seconds: 30
+ })
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */, 1, 10, 19, 50))
+ })
+
+ it('returns same date object when passed empty duration', () => {
+ const result = sub(new Date(2014, 8 /* Sep */, 1, 10).getTime(), {})
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */, 1, 10))
+ })
+
+ it('accepts a timestamp', () => {
+ const result = sub(new Date(2014, 8 /* Sep */, 1, 14).getTime(), {
+ hours: 4
+ })
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */, 1, 10))
+ })
+
+ it('converts a fractional number to an integer', () => {
+ const result = sub(new Date(2014, 8 /* Sep */, 1, 14), { hours: 4.2 })
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */, 1, 10))
+ })
+
+ it('implicitly converts number arguments', () => {
+ // $ExpectedMistake
+ const result = sub(new Date(2014, 8 /* Sep */, 1, 14), { hours: '4.2' })
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */, 1, 10))
+ })
+
+ it('does not mutate the original date', () => {
+ const date = new Date(2014, 8 /* Sep */, 1, 10)
+ sub(date, { hours: 4 })
+ assert.deepEqual(date, new Date(2014, 8 /* Sep */, 1, 10))
+ })
+
+ it('works well if the desired month has fewer days and the provided date is in the last day of a month', () => {
+ const date = new Date(2014, 11 /* Dec */, 31)
+ const result = sub(date, { months: 3 })
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */, 30))
+ })
+
+ it('handles dates before 100 AD', () => {
+ const initialDate = new Date(0)
+ initialDate.setFullYear(1, 2 /* Mar */, 31)
+ initialDate.setHours(0, 0, 0, 0)
+ const expectedResult = new Date(0)
+ expectedResult.setFullYear(1, 1 /* Feb */, 28)
+ expectedResult.setHours(0, 0, 0, 0)
+ const result = sub(initialDate, { months: 1 })
+ assert.deepEqual(result, expectedResult)
+ })
+
+ it('returns `Invalid Date` if the given date is invalid', () => {
+ const result = sub(new Date(NaN), { hours: 5 })
+ assert(result instanceof Date && isNaN(result))
+ })
+
+ it('throws RangeError exception if passed Number as duration', () => {
+ // $ExpectedMistake
+ const result = sub(new Date(2014, 8, 1), 'wut')
+ assert(result instanceof Date && isNaN(result))
+ })
+
+ it('throws TypeError exception if passed less than 2 arguments', () => {
+ assert.throws(sub.bind(null), TypeError)
+ assert.throws(sub.bind(null, 1), TypeError)
+ })
+})
diff --git a/date-fns/src/subBusinessDays/index.d.ts b/date-fns/src/subBusinessDays/index.d.ts
new file mode 100644
index 0000000..7a0549a
--- /dev/null
+++ b/date-fns/src/subBusinessDays/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { subBusinessDays } from 'date-fns'
+export default subBusinessDays
diff --git a/date-fns/src/subBusinessDays/index.js b/date-fns/src/subBusinessDays/index.js
new file mode 100644
index 0000000..dbfa505
--- /dev/null
+++ b/date-fns/src/subBusinessDays/index.js
@@ -0,0 +1,28 @@
+import toInteger from '../_lib/toInteger/index'
+import addBusinessDays from '../addBusinessDays/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name subBusinessDays
+ * @category Day Helpers
+ * @summary Substract the specified number of business days (mon - fri) to the given date.
+ *
+ * @description
+ * Substract the specified number of business days (mon - fri) to the given date, ignoring weekends.
+ *
+ * @param {Date|Number} date - the date to be changed
+ * @param {Number} amount - the amount of business days to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.
+ * @returns {Date} the new date with the business days subtracted
+ * @throws {TypeError} 2 arguments required
+ *
+ * @example
+ * // Substract 10 business days from 1 September 2014:
+ * var result = subBusinessDays(new Date(2014, 8, 1), 10)
+ * //=> Mon Aug 18 2014 00:00:00 (skipped weekend days)
+ */
+export default function subBusinessDays(dirtyDate, dirtyAmount) {
+ requiredArgs(2, arguments)
+
+ var amount = toInteger(dirtyAmount)
+ return addBusinessDays(dirtyDate, -amount)
+}
diff --git a/date-fns/src/subBusinessDays/index.js.flow b/date-fns/src/subBusinessDays/index.js.flow
new file mode 100644
index 0000000..f568f0d
--- /dev/null
+++ b/date-fns/src/subBusinessDays/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (date: Date | number, amount: number) => Date
diff --git a/date-fns/src/subBusinessDays/test.js b/date-fns/src/subBusinessDays/test.js
new file mode 100644
index 0000000..96564a1
--- /dev/null
+++ b/date-fns/src/subBusinessDays/test.js
@@ -0,0 +1,63 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import subBusinessDays from '.'
+
+describe('subBusinessDays', function() {
+ it('substract the given number of business days', function() {
+ const result = subBusinessDays(new Date(2014, 8 /* Sep */, 1), 10)
+ assert.deepEqual(result, new Date(2014, 7 /* Aug */, 18))
+ })
+
+ it('handles negative amount', function() {
+ var result = subBusinessDays(new Date(2014, 7 /* Sep */, 18), -10)
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */, 1))
+ })
+
+ it('can handle a large number of business days', function() {
+ if (typeof this.timeout === 'function') {
+ this.timeout(500 /* 500 ms test timeout */)
+ }
+
+ var result = subBusinessDays(new Date(15000, 0 /* Jan */, 1), 3387885)
+ assert.deepEqual(result, new Date(2014, 0 /* Jan */, 1))
+ })
+
+ it('accepts a timestamp', function() {
+ var result = subBusinessDays(new Date(2014, 8 /* Sep */, 1).getTime(), 10)
+ assert.deepEqual(result, new Date(2014, 7 /* Aug */, 18))
+ })
+
+ it('converts a fractional number to an integer', function() {
+ var result = subBusinessDays(new Date(2014, 8 /* Sep */, 1), 10.5)
+ assert.deepEqual(result, new Date(2014, 7 /* Aug */, 18))
+ })
+
+ it('implicitly converts number arguments', function() {
+ // $ExpectedMistake
+ var result = subBusinessDays(new Date(2014, 8 /* Sep */, 1), '10')
+ assert.deepEqual(result, new Date(2014, 7 /* Aug */, 18))
+ })
+
+ it('does not mutate the original date', function() {
+ var date = new Date(2014, 8 /* Sep */, 1)
+ subBusinessDays(date, 11)
+ assert.deepEqual(date, new Date(2014, 8 /* Sep */, 1))
+ })
+
+ it('returns `Invalid Date` if the given date is invalid', function() {
+ var result = subBusinessDays(new Date(NaN), 10)
+ assert(result instanceof Date && isNaN(result))
+ })
+
+ it('returns `Invalid Date` if the given amount is NaN', function() {
+ var result = subBusinessDays(new Date(2014, 8 /* Sep */, 1), NaN)
+ assert(result instanceof Date && isNaN(result))
+ })
+
+ it('throws TypeError exception if passed less than 2 arguments', function() {
+ assert.throws(subBusinessDays.bind(null), TypeError)
+ assert.throws(subBusinessDays.bind(null, 1), TypeError)
+ })
+})
diff --git a/date-fns/src/subDays/benchmark.js b/date-fns/src/subDays/benchmark.js
new file mode 100644
index 0000000..032cd9a
--- /dev/null
+++ b/date-fns/src/subDays/benchmark.js
@@ -0,0 +1,21 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import subDays from '.'
+import moment from 'moment'
+
+suite('subDays', function () {
+ benchmark('date-fns', function () {
+ return subDays(this.date, 14)
+ })
+
+ benchmark('Moment.js', function () {
+ return this.moment.subtract(14, 'days')
+ })
+}, {
+ setup: function () {
+ this.date = new Date()
+ this.moment = moment()
+ }
+})
diff --git a/date-fns/src/subDays/index.d.ts b/date-fns/src/subDays/index.d.ts
new file mode 100644
index 0000000..0b2fe65
--- /dev/null
+++ b/date-fns/src/subDays/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { subDays } from 'date-fns'
+export default subDays
diff --git a/date-fns/src/subDays/index.js.flow b/date-fns/src/subDays/index.js.flow
new file mode 100644
index 0000000..f568f0d
--- /dev/null
+++ b/date-fns/src/subDays/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (date: Date | number, amount: number) => Date
diff --git a/date-fns/src/subDays/index.ts b/date-fns/src/subDays/index.ts
new file mode 100644
index 0000000..7c706c3
--- /dev/null
+++ b/date-fns/src/subDays/index.ts
@@ -0,0 +1,32 @@
+import toInteger from '../_lib/toInteger/index'
+import addDays from '../addDays/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name subDays
+ * @category Day Helpers
+ * @summary Subtract the specified number of days from the given date.
+ *
+ * @description
+ * Subtract the specified number of days from the given date.
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} date - the date to be changed
+ * @param {Number} amount - the amount of days to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.
+ * @returns {Date} the new date with the days subtracted
+ * @throws {TypeError} 2 arguments required
+ *
+ * @example
+ * // Subtract 10 days from 1 September 2014:
+ * const result = subDays(new Date(2014, 8, 1), 10)
+ * //=> Fri Aug 22 2014 00:00:00
+ */
+export default function subDays(dirtyDate: Date | number, dirtyAmount: number) {
+ requiredArgs(2, arguments)
+
+ const amount = toInteger(dirtyAmount)
+ return addDays(dirtyDate, -amount)
+}
diff --git a/date-fns/src/subDays/test.ts b/date-fns/src/subDays/test.ts
new file mode 100644
index 0000000..fadc101
--- /dev/null
+++ b/date-fns/src/subDays/test.ts
@@ -0,0 +1,52 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import subDays from '.'
+
+describe('subDays', function() {
+ it('subtracts the given number of days', function() {
+ const result = subDays(new Date(2014, 8 /* Sep */, 1), 10)
+ assert.deepEqual(result, new Date(2014, 7 /* Aug */, 22))
+ })
+
+ it('accepts a timestamp', function() {
+ const result = subDays(new Date(2014, 8 /* Sep */, 1).getTime(), 10)
+ assert.deepEqual(result, new Date(2014, 7 /* Aug */, 22))
+ })
+
+ it('converts a fractional number to an integer', function() {
+ const result = subDays(new Date(2014, 8 /* Sep */, 1), 10.85)
+ assert.deepEqual(result, new Date(2014, 7 /* Aug */, 22))
+ })
+
+ it('implicitly converts number arguments', function() {
+ // $ExpectedMistake
+ // @ts-expect-error
+ const result = subDays(new Date(2014, 8 /* Sep */, 1), '10')
+ assert.deepEqual(result, new Date(2014, 7 /* Aug */, 22))
+ })
+
+ it('does not mutate the original date', function() {
+ const date = new Date(2014, 8 /* Sep */, 1)
+ subDays(date, 11)
+ assert.deepEqual(date, new Date(2014, 8 /* Sep */, 1))
+ })
+
+ it('returns `Invalid Date` if the given date is invalid', function() {
+ const result = subDays(new Date(NaN), 10)
+ // @ts-expect-error
+ assert(result instanceof Date && isNaN(result))
+ })
+
+ it('returns `Invalid Date` if the given amount is NaN', function() {
+ const result = subDays(new Date(2014, 8 /* Sep */, 1), NaN)
+ // @ts-expect-error
+ assert(result instanceof Date && isNaN(result))
+ })
+
+ it('throws TypeError exception if passed less than 2 arguments', function() {
+ assert.throws(subDays.bind(null), TypeError)
+ assert.throws(subDays.bind(null, 1), TypeError)
+ })
+})
diff --git a/date-fns/src/subHours/benchmark.js b/date-fns/src/subHours/benchmark.js
new file mode 100644
index 0000000..ae77136
--- /dev/null
+++ b/date-fns/src/subHours/benchmark.js
@@ -0,0 +1,21 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import subHours from '.'
+import moment from 'moment'
+
+suite('subHours', function () {
+ benchmark('date-fns', function () {
+ return subHours(this.date, 32)
+ })
+
+ benchmark('Moment.js', function () {
+ return this.moment.subtract(32, 'hours')
+ })
+}, {
+ setup: function () {
+ this.date = new Date()
+ this.moment = moment()
+ }
+})
diff --git a/date-fns/src/subHours/index.d.ts b/date-fns/src/subHours/index.d.ts
new file mode 100644
index 0000000..9b9a0d2
--- /dev/null
+++ b/date-fns/src/subHours/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { subHours } from 'date-fns'
+export default subHours
diff --git a/date-fns/src/subHours/index.js.flow b/date-fns/src/subHours/index.js.flow
new file mode 100644
index 0000000..f568f0d
--- /dev/null
+++ b/date-fns/src/subHours/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (date: Date | number, amount: number) => Date
diff --git a/date-fns/src/subHours/index.ts b/date-fns/src/subHours/index.ts
new file mode 100644
index 0000000..2db706a
--- /dev/null
+++ b/date-fns/src/subHours/index.ts
@@ -0,0 +1,32 @@
+import toInteger from '../_lib/toInteger/index'
+import addHours from '../addHours/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name subHours
+ * @category Hour Helpers
+ * @summary Subtract the specified number of hours from the given date.
+ *
+ * @description
+ * Subtract the specified number of hours from the given date.
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} date - the date to be changed
+ * @param {Number} amount - the amount of hours to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.
+ * @returns {Date} the new date with the hours subtracted
+ * @throws {TypeError} 2 arguments required
+ *
+ * @example
+ * // Subtract 2 hours from 11 July 2014 01:00:00:
+ * const result = subHours(new Date(2014, 6, 11, 1, 0), 2)
+ * //=> Thu Jul 10 2014 23:00:00
+ */
+export default function subHours(dirtyDate: Date | number, dirtyAmount: number) {
+ requiredArgs(2, arguments)
+
+ const amount = toInteger(dirtyAmount)
+ return addHours(dirtyDate, -amount)
+}
diff --git a/date-fns/src/subHours/test.ts b/date-fns/src/subHours/test.ts
new file mode 100644
index 0000000..7423288
--- /dev/null
+++ b/date-fns/src/subHours/test.ts
@@ -0,0 +1,52 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import subHours from '.'
+
+describe('subHours', function() {
+ it('subtracts the given numbers of hours', function() {
+ const result = subHours(new Date(2014, 6 /* Jul */, 11, 1, 0), 2)
+ assert.deepEqual(result, new Date(2014, 6 /* Jul */, 10, 23, 0))
+ })
+
+ it('accepts a timestamp', function() {
+ const result = subHours(new Date(2014, 6 /* Jul */, 12, 1, 0).getTime(), 26)
+ assert.deepEqual(result, new Date(2014, 6 /* Jul */, 10, 23, 0))
+ })
+
+ it('converts a fractional number to an integer', function() {
+ const result = subHours(new Date(2014, 6 /* Jul */, 11, 1, 0), 2.22)
+ assert.deepEqual(result, new Date(2014, 6 /* Jul */, 10, 23, 0))
+ })
+
+ it('implicitly converts number arguments', function() {
+ // $ExpectedMistake
+ // @ts-expect-error
+ const result = subHours(new Date(2014, 6 /* Jul */, 11, 1, 0), '2')
+ assert.deepEqual(result, new Date(2014, 6 /* Jul */, 10, 23, 0))
+ })
+
+ it('does not mutate the original date', function() {
+ const date = new Date(2014, 6 /* Jul */, 10, 23, 0)
+ subHours(date, 10)
+ assert.deepEqual(date, new Date(2014, 6 /* Jul */, 10, 23, 0))
+ })
+
+ it('returns `Invalid Date` if the given date is invalid', function() {
+ const result = subHours(new Date(NaN), 2)
+ // @ts-expect-error
+ assert(result instanceof Date && isNaN(result))
+ })
+
+ it('returns `Invalid Date` if the given amount is NaN', function() {
+ const result = subHours(new Date(2014, 6 /* Jul */, 11, 1, 0), NaN)
+ // @ts-expect-error
+ assert(result instanceof Date && isNaN(result))
+ })
+
+ it('throws TypeError exception if passed less than 2 arguments', function() {
+ assert.throws(subHours.bind(null), TypeError)
+ assert.throws(subHours.bind(null, 1), TypeError)
+ })
+})
diff --git a/date-fns/src/subISOWeekYears/benchmark.js b/date-fns/src/subISOWeekYears/benchmark.js
new file mode 100644
index 0000000..f8b615c
--- /dev/null
+++ b/date-fns/src/subISOWeekYears/benchmark.js
@@ -0,0 +1,15 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import subISOWeekYears from '.'
+
+suite('subISOWeekYears', function () {
+ benchmark('date-fns', function () {
+ return subISOWeekYears(this.date, 7)
+ })
+}, {
+ setup: function () {
+ this.date = new Date()
+ }
+})
diff --git a/date-fns/src/subISOWeekYears/index.d.ts b/date-fns/src/subISOWeekYears/index.d.ts
new file mode 100644
index 0000000..78018ea
--- /dev/null
+++ b/date-fns/src/subISOWeekYears/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { subISOWeekYears } from 'date-fns'
+export default subISOWeekYears
diff --git a/date-fns/src/subISOWeekYears/index.js.flow b/date-fns/src/subISOWeekYears/index.js.flow
new file mode 100644
index 0000000..f568f0d
--- /dev/null
+++ b/date-fns/src/subISOWeekYears/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (date: Date | number, amount: number) => Date
diff --git a/date-fns/src/subISOWeekYears/index.ts b/date-fns/src/subISOWeekYears/index.ts
new file mode 100644
index 0000000..bbd396c
--- /dev/null
+++ b/date-fns/src/subISOWeekYears/index.ts
@@ -0,0 +1,39 @@
+import toInteger from '../_lib/toInteger/index'
+import addISOWeekYears from '../addISOWeekYears/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name subISOWeekYears
+ * @category ISO Week-Numbering Year Helpers
+ * @summary Subtract the specified number of ISO week-numbering years from the given date.
+ *
+ * @description
+ * Subtract the specified number of ISO week-numbering years from the given date.
+ *
+ * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * - The function was renamed from `subISOYears` to `subISOWeekYears`.
+ * "ISO week year" is short for [ISO week-numbering year](https://en.wikipedia.org/wiki/ISO_week_date).
+ * This change makes the name consistent with
+ * locale-dependent week-numbering year helpers, e.g., `setWeekYear`.
+ *
+ * @param {Date|Number} date - the date to be changed
+ * @param {Number} amount - the amount of ISO week-numbering years to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.
+ * @returns {Date} the new date with the ISO week-numbering years subtracted
+ * @throws {TypeError} 2 arguments required
+ *
+ * @example
+ * // Subtract 5 ISO week-numbering years from 1 September 2014:
+ * const result = subISOWeekYears(new Date(2014, 8, 1), 5)
+ * //=> Mon Aug 31 2009 00:00:00
+ */
+export default function subISOWeekYears(dirtyDate: Date | number, dirtyAmount: number) {
+ requiredArgs(2, arguments)
+
+ const amount = toInteger(dirtyAmount)
+ return addISOWeekYears(dirtyDate, -amount)
+}
diff --git a/date-fns/src/subISOWeekYears/test.ts b/date-fns/src/subISOWeekYears/test.ts
new file mode 100644
index 0000000..dbb4213
--- /dev/null
+++ b/date-fns/src/subISOWeekYears/test.ts
@@ -0,0 +1,62 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import subISOWeekYears from '.'
+
+describe('subISOWeekYears', function() {
+ it('subtracts the given number of ISO week-numbering years', function() {
+ const result = subISOWeekYears(new Date(2014, 8 /* Sep */, 1), 5)
+ assert.deepEqual(result, new Date(2009, 7 /* Aug */, 31))
+ })
+
+ it('accepts a timestamp', function() {
+ const result = subISOWeekYears(new Date(2014, 8 /* Sep */, 1).getTime(), 12)
+ assert.deepEqual(result, new Date(2002, 8 /* Sep */, 2))
+ })
+
+ it('converts a fractional number to an integer', function() {
+ const result = subISOWeekYears(new Date(2014, 8 /* Sep */, 1), 5.555)
+ assert.deepEqual(result, new Date(2009, 7 /* Aug */, 31))
+ })
+
+ it('implicitly converts number arguments', function() {
+ // $ExpectedMistake
+ const result = subISOWeekYears(new Date(2014, 8 /* Sep */, 1), '5')
+ assert.deepEqual(result, new Date(2009, 7 /* Aug */, 31))
+ })
+
+ it('does not mutate the original date', function() {
+ const date = new Date(2014, 8 /* Sep */, 1)
+ subISOWeekYears(date, 12)
+ assert.deepEqual(date, new Date(2014, 8 /* Sep */, 1))
+ })
+
+ it('handles dates before 100 AD', function() {
+ const initialDate = new Date(0)
+ initialDate.setFullYear(15, 5 /* Jun */, 26)
+ initialDate.setHours(0, 0, 0, 0)
+ const expectedResult = new Date(0)
+ expectedResult.setFullYear(10, 6 /* Jul */, 2)
+ expectedResult.setHours(0, 0, 0, 0)
+ const result = subISOWeekYears(initialDate, 5)
+ assert.deepEqual(result, expectedResult)
+ })
+
+ it('returns `Invalid Date` if the given date is invalid', function() {
+ const result = subISOWeekYears(new Date(NaN), 5)
+ // @ts-expect-error
+ assert(result instanceof Date && isNaN(result))
+ })
+
+ it('returns `Invalid Date` if the given amount is NaN', function() {
+ const result = subISOWeekYears(new Date(2014, 8 /* Sep */, 1), NaN)
+ // @ts-expect-error
+ assert(result instanceof Date && isNaN(result))
+ })
+
+ it('throws TypeError exception if passed less than 2 arguments', function() {
+ assert.throws(subISOWeekYears.bind(null), TypeError)
+ assert.throws(subISOWeekYears.bind(null, 1), TypeError)
+ })
+})
diff --git a/date-fns/src/subMilliseconds/benchmark.js b/date-fns/src/subMilliseconds/benchmark.js
new file mode 100644
index 0000000..597dac4
--- /dev/null
+++ b/date-fns/src/subMilliseconds/benchmark.js
@@ -0,0 +1,21 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import subMilliseconds from '.'
+import moment from 'moment'
+
+suite('subMilliseconds', function () {
+ benchmark('date-fns', function () {
+ return subMilliseconds(this.date, 800)
+ })
+
+ benchmark('Moment.js', function () {
+ return this.moment.subtract(800, 'milliseconds')
+ })
+}, {
+ setup: function () {
+ this.date = new Date()
+ this.moment = moment()
+ }
+})
diff --git a/date-fns/src/subMilliseconds/index.d.ts b/date-fns/src/subMilliseconds/index.d.ts
new file mode 100644
index 0000000..ffc51f1
--- /dev/null
+++ b/date-fns/src/subMilliseconds/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { subMilliseconds } from 'date-fns'
+export default subMilliseconds
diff --git a/date-fns/src/subMilliseconds/index.js.flow b/date-fns/src/subMilliseconds/index.js.flow
new file mode 100644
index 0000000..f568f0d
--- /dev/null
+++ b/date-fns/src/subMilliseconds/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (date: Date | number, amount: number) => Date
diff --git a/date-fns/src/subMilliseconds/index.ts b/date-fns/src/subMilliseconds/index.ts
new file mode 100644
index 0000000..094209e
--- /dev/null
+++ b/date-fns/src/subMilliseconds/index.ts
@@ -0,0 +1,32 @@
+import toInteger from '../_lib/toInteger/index'
+import addMilliseconds from '../addMilliseconds/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name subMilliseconds
+ * @category Millisecond Helpers
+ * @summary Subtract the specified number of milliseconds from the given date.
+ *
+ * @description
+ * Subtract the specified number of milliseconds from the given date.
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} date - the date to be changed
+ * @param {Number} amount - the amount of milliseconds to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.
+ * @returns {Date} the new date with the milliseconds subtracted
+ * @throws {TypeError} 2 arguments required
+ *
+ * @example
+ * // Subtract 750 milliseconds from 10 July 2014 12:45:30.000:
+ * const result = subMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)
+ * //=> Thu Jul 10 2014 12:45:29.250
+ */
+export default function subMilliseconds(dirtyDate: Date | number, dirtyAmount: number) {
+ requiredArgs(2, arguments)
+
+ const amount = toInteger(dirtyAmount)
+ return addMilliseconds(dirtyDate, -amount)
+}
diff --git a/date-fns/src/subMilliseconds/test.ts b/date-fns/src/subMilliseconds/test.ts
new file mode 100644
index 0000000..bd93b39
--- /dev/null
+++ b/date-fns/src/subMilliseconds/test.ts
@@ -0,0 +1,67 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import subMilliseconds from '.'
+
+describe('subMilliseconds', function() {
+ it('subtracts the given number of milliseconds', function() {
+ const result = subMilliseconds(
+ new Date(2014, 6 /* Jul */, 10, 12, 45, 30, 0),
+ 750
+ )
+ assert.deepEqual(result, new Date(2014, 6 /* Jul */, 10, 12, 45, 29, 250))
+ })
+
+ it('accepts a timestamp', function() {
+ const result = subMilliseconds(
+ new Date(2014, 6 /* Jul */, 10, 12, 45, 30, 0).getTime(),
+ 500
+ )
+ assert.deepEqual(result, new Date(2014, 6 /* Jul */, 10, 12, 45, 29, 500))
+ })
+
+ it('converts a fractional number to an integer', function() {
+ const result = subMilliseconds(
+ new Date(2014, 6 /* Jul */, 10, 12, 45, 30, 0),
+ 750.75
+ )
+ assert.deepEqual(result, new Date(2014, 6 /* Jul */, 10, 12, 45, 29, 250))
+ })
+
+ it('implicitly converts number arguments', function() {
+ const result = subMilliseconds(
+ new Date(2014, 6 /* Jul */, 10, 12, 45, 30, 0),
+ // $ExpectedMistake
+ // @ts-expect-error
+ '750'
+ )
+ assert.deepEqual(result, new Date(2014, 6 /* Jul */, 10, 12, 45, 29, 250))
+ })
+
+ it('does not mutate the original date', function() {
+ const date = new Date(2014, 6 /* Jul */, 10, 12, 45, 30, 0)
+ subMilliseconds(date, 250)
+ assert.deepEqual(date, new Date(2014, 6 /* Jul */, 10, 12, 45, 30, 0))
+ })
+
+ it('returns `Invalid Date` if the given date is invalid', function() {
+ const result = subMilliseconds(new Date(NaN), 750)
+ // @ts-expect-error
+ assert(result instanceof Date && isNaN(result))
+ })
+
+ it('returns `Invalid Date` if the given amount is NaN', function() {
+ const result = subMilliseconds(
+ new Date(2014, 6 /* Jul */, 10, 12, 45, 30, 0),
+ NaN
+ )
+ // @ts-expect-error
+ assert(result instanceof Date && isNaN(result))
+ })
+
+ it('throws TypeError exception if passed less than 2 arguments', function() {
+ assert.throws(subMilliseconds.bind(null), TypeError)
+ assert.throws(subMilliseconds.bind(null, 1), TypeError)
+ })
+})
diff --git a/date-fns/src/subMinutes/benchmark.js b/date-fns/src/subMinutes/benchmark.js
new file mode 100644
index 0000000..2f9ac04
--- /dev/null
+++ b/date-fns/src/subMinutes/benchmark.js
@@ -0,0 +1,21 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import subMinutes from '.'
+import moment from 'moment'
+
+suite('subMinutes', function () {
+ benchmark('date-fns', function () {
+ return subMinutes(this.date, 25)
+ })
+
+ benchmark('Moment.js', function () {
+ return this.moment.subtract(25, 'minutes')
+ })
+}, {
+ setup: function () {
+ this.date = new Date()
+ this.moment = moment()
+ }
+})
diff --git a/date-fns/src/subMinutes/index.d.ts b/date-fns/src/subMinutes/index.d.ts
new file mode 100644
index 0000000..43c3222
--- /dev/null
+++ b/date-fns/src/subMinutes/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { subMinutes } from 'date-fns'
+export default subMinutes
diff --git a/date-fns/src/subMinutes/index.js.flow b/date-fns/src/subMinutes/index.js.flow
new file mode 100644
index 0000000..f568f0d
--- /dev/null
+++ b/date-fns/src/subMinutes/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (date: Date | number, amount: number) => Date
diff --git a/date-fns/src/subMinutes/index.ts b/date-fns/src/subMinutes/index.ts
new file mode 100644
index 0000000..365928b
--- /dev/null
+++ b/date-fns/src/subMinutes/index.ts
@@ -0,0 +1,32 @@
+import toInteger from '../_lib/toInteger/index'
+import addMinutes from '../addMinutes/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name subMinutes
+ * @category Minute Helpers
+ * @summary Subtract the specified number of minutes from the given date.
+ *
+ * @description
+ * Subtract the specified number of minutes from the given date.
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} date - the date to be changed
+ * @param {Number} amount - the amount of minutes to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.
+ * @returns {Date} the new date with the minutes subtracted
+ * @throws {TypeError} 2 arguments required
+ *
+ * @example
+ * // Subtract 30 minutes from 10 July 2014 12:00:00:
+ * const result = subMinutes(new Date(2014, 6, 10, 12, 0), 30)
+ * //=> Thu Jul 10 2014 11:30:00
+ */
+export default function subMinutes(dirtyDate: Date | number, dirtyAmount: number) {
+ requiredArgs(2, arguments)
+
+ const amount = toInteger(dirtyAmount)
+ return addMinutes(dirtyDate, -amount)
+}
diff --git a/date-fns/src/subMinutes/test.ts b/date-fns/src/subMinutes/test.ts
new file mode 100644
index 0000000..572dc07
--- /dev/null
+++ b/date-fns/src/subMinutes/test.ts
@@ -0,0 +1,54 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import subMinutes from '.'
+
+describe('subMinutes', function() {
+ it('subtracts the given number of minutes', function() {
+ const result = subMinutes(new Date(2014, 6 /* Jul */, 10, 12, 0), 30)
+ assert.deepEqual(result, new Date(2014, 6 /* Jul */, 10, 11, 30))
+ })
+
+ it('accepts a timestamp', function() {
+ const result = subMinutes(
+ new Date(2014, 6 /* Jul */, 10, 12, 0).getTime(),
+ 20
+ )
+ assert.deepEqual(result, new Date(2014, 6 /* Jul */, 10, 11, 40))
+ })
+
+ it('converts a fractional number to an integer', function() {
+ const result = subMinutes(new Date(2014, 6 /* Jul */, 10, 12, 0), 30.4)
+ assert.deepEqual(result, new Date(2014, 6 /* Jul */, 10, 11, 30))
+ })
+
+ it('implicitly converts number arguments', function() {
+ // $ExpectedMistake
+ const result = subMinutes(new Date(2014, 6 /* Jul */, 10, 12, 0), '30')
+ assert.deepEqual(result, new Date(2014, 6 /* Jul */, 10, 11, 30))
+ })
+
+ it('does not mutate the original date', function() {
+ const date = new Date(2014, 6 /* Jul */, 10, 12, 0)
+ subMinutes(date, 25)
+ assert.deepEqual(date, new Date(2014, 6 /* Jul */, 10, 12, 0))
+ })
+
+ it('returns `Invalid Date` if the given date is invalid', function() {
+ const result = subMinutes(new Date(NaN), 30)
+ // @ts-expect-error
+ assert(result instanceof Date && isNaN(result))
+ })
+
+ it('returns `Invalid Date` if the given amount is NaN', function() {
+ const result = subMinutes(new Date(2014, 6 /* Jul */, 10, 12, 0), NaN)
+ // @ts-expect-error
+ assert(result instanceof Date && isNaN(result))
+ })
+
+ it('throws TypeError exception if passed less than 2 arguments', function() {
+ assert.throws(subMinutes.bind(null), TypeError)
+ assert.throws(subMinutes.bind(null, 1), TypeError)
+ })
+})
diff --git a/date-fns/src/subMonths/benchmark.js b/date-fns/src/subMonths/benchmark.js
new file mode 100644
index 0000000..f2e1662
--- /dev/null
+++ b/date-fns/src/subMonths/benchmark.js
@@ -0,0 +1,21 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import subMonths from '.'
+import moment from 'moment'
+
+suite('subMonths', function () {
+ benchmark('date-fns', function () {
+ return subMonths(this.date, 7)
+ })
+
+ benchmark('Moment.js', function () {
+ return this.moment.subtract(7, 'months')
+ })
+}, {
+ setup: function () {
+ this.date = new Date()
+ this.moment = moment()
+ }
+})
diff --git a/date-fns/src/subMonths/index.d.ts b/date-fns/src/subMonths/index.d.ts
new file mode 100644
index 0000000..dd963a1
--- /dev/null
+++ b/date-fns/src/subMonths/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { subMonths } from 'date-fns'
+export default subMonths
diff --git a/date-fns/src/subMonths/index.js.flow b/date-fns/src/subMonths/index.js.flow
new file mode 100644
index 0000000..f568f0d
--- /dev/null
+++ b/date-fns/src/subMonths/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (date: Date | number, amount: number) => Date
diff --git a/date-fns/src/subMonths/index.ts b/date-fns/src/subMonths/index.ts
new file mode 100644
index 0000000..d827fad
--- /dev/null
+++ b/date-fns/src/subMonths/index.ts
@@ -0,0 +1,32 @@
+import toInteger from '../_lib/toInteger/index'
+import addMonths from '../addMonths/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name subMonths
+ * @category Month Helpers
+ * @summary Subtract the specified number of months from the given date.
+ *
+ * @description
+ * Subtract the specified number of months from the given date.
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} date - the date to be changed
+ * @param {Number} amount - the amount of months to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.
+ * @returns {Date} the new date with the months subtracted
+ * @throws {TypeError} 2 arguments required
+ *
+ * @example
+ * // Subtract 5 months from 1 February 2015:
+ * const result = subMonths(new Date(2015, 1, 1), 5)
+ * //=> Mon Sep 01 2014 00:00:00
+ */
+export default function subMonths(dirtyDate: Date | number, dirtyAmount: number): Date {
+ requiredArgs(2, arguments)
+
+ const amount = toInteger(dirtyAmount)
+ return addMonths(dirtyDate, -amount)
+}
diff --git a/date-fns/src/subMonths/test.ts b/date-fns/src/subMonths/test.ts
new file mode 100644
index 0000000..0b5c32d
--- /dev/null
+++ b/date-fns/src/subMonths/test.ts
@@ -0,0 +1,69 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import subMonths from '.'
+
+describe('subMonths', function() {
+ it('subtracts the given number of months', function() {
+ const result = subMonths(new Date(2015, 1 /* Feb */, 1), 5)
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */, 1))
+ })
+
+ it('accepts a timestamp', function() {
+ const result = subMonths(new Date(2015, 8 /* Sep */, 1).getTime(), 12)
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */, 1))
+ })
+
+ it('converts a fractional number to an integer', function() {
+ const result = subMonths(new Date(2015, 1 /* Feb */, 1), 5.999)
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */, 1))
+ })
+
+ it('implicitly converts number arguments', function() {
+ // $ExpectedMistake
+ // @ts-expect-error
+ const result = subMonths(new Date(2015, 1 /* Feb */, 1), '5')
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */, 1))
+ })
+
+ it('does not mutate the original date', function() {
+ const date = new Date(2014, 8 /* Sep */, 1)
+ subMonths(date, 12)
+ assert.deepEqual(date, new Date(2014, 8 /* Sep */, 1))
+ })
+
+ it('works well if the desired month has fewer days and the provided date is in the last day of a month', function() {
+ const date = new Date(2014, 11 /* Dec */, 31)
+ const result = subMonths(date, 3)
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */, 30))
+ })
+
+ it('handles dates before 100 AD', function() {
+ const initialDate = new Date(0)
+ initialDate.setFullYear(1, 2 /* Mar */, 31)
+ initialDate.setHours(0, 0, 0, 0)
+ const expectedResult = new Date(0)
+ expectedResult.setFullYear(1, 1 /* Feb */, 28)
+ expectedResult.setHours(0, 0, 0, 0)
+ const result = subMonths(initialDate, 1)
+ assert.deepEqual(result, expectedResult)
+ })
+
+ it('returns `Invalid Date` if the given date is invalid', function() {
+ const result = subMonths(new Date(NaN), 5)
+ // @ts-expect-error
+ assert(result instanceof Date && isNaN(result))
+ })
+
+ it('returns `Invalid Date` if the given amount is NaN', function() {
+ const result = subMonths(new Date(2015, 1 /* Feb */, 1), NaN)
+ // @ts-expect-error
+ assert(result instanceof Date && isNaN(result))
+ })
+
+ it('throws TypeError exception if passed less than 2 arguments', function() {
+ assert.throws(subMonths.bind(null), TypeError)
+ assert.throws(subMonths.bind(null, 1), TypeError)
+ })
+})
diff --git a/date-fns/src/subQuarters/benchmark.js b/date-fns/src/subQuarters/benchmark.js
new file mode 100644
index 0000000..2af1732
--- /dev/null
+++ b/date-fns/src/subQuarters/benchmark.js
@@ -0,0 +1,21 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import subQuarters from '.'
+import moment from 'moment'
+
+suite('subQuarters', function () {
+ benchmark('date-fns', function () {
+ return subQuarters(this.date, 1)
+ })
+
+ benchmark('Moment.js', function () {
+ return this.moment.subtract(1, 'quarters')
+ })
+}, {
+ setup: function () {
+ this.date = new Date()
+ this.moment = moment()
+ }
+})
diff --git a/date-fns/src/subQuarters/index.d.ts b/date-fns/src/subQuarters/index.d.ts
new file mode 100644
index 0000000..216a1f3
--- /dev/null
+++ b/date-fns/src/subQuarters/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { subQuarters } from 'date-fns'
+export default subQuarters
diff --git a/date-fns/src/subQuarters/index.js.flow b/date-fns/src/subQuarters/index.js.flow
new file mode 100644
index 0000000..f568f0d
--- /dev/null
+++ b/date-fns/src/subQuarters/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (date: Date | number, amount: number) => Date
diff --git a/date-fns/src/subQuarters/index.ts b/date-fns/src/subQuarters/index.ts
new file mode 100644
index 0000000..0833596
--- /dev/null
+++ b/date-fns/src/subQuarters/index.ts
@@ -0,0 +1,32 @@
+import toInteger from '../_lib/toInteger/index'
+import addQuarters from '../addQuarters/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name subQuarters
+ * @category Quarter Helpers
+ * @summary Subtract the specified number of year quarters from the given date.
+ *
+ * @description
+ * Subtract the specified number of year quarters from the given date.
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} date - the date to be changed
+ * @param {Number} amount - the amount of quarters to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.
+ * @returns {Date} the new date with the quarters subtracted
+ * @throws {TypeError} 2 arguments required
+ *
+ * @example
+ * // Subtract 3 quarters from 1 September 2014:
+ * const result = subQuarters(new Date(2014, 8, 1), 3)
+ * //=> Sun Dec 01 2013 00:00:00
+ */
+export default function subQuarters(dirtyDate: Date | number, dirtyAmount: number): Date {
+ requiredArgs(2, arguments)
+
+ const amount = toInteger(dirtyAmount)
+ return addQuarters(dirtyDate, -amount)
+}
diff --git a/date-fns/src/subQuarters/test.ts b/date-fns/src/subQuarters/test.ts
new file mode 100644
index 0000000..cfd1d9f
--- /dev/null
+++ b/date-fns/src/subQuarters/test.ts
@@ -0,0 +1,69 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import subQuarters from '.'
+
+describe('subQuarters', function() {
+ it('subtracts the given number of quarters', function() {
+ const result = subQuarters(new Date(2014, 8 /* Sep */, 1), 3)
+ assert.deepEqual(result, new Date(2013, 11 /* Dec */, 1))
+ })
+
+ it('accepts a timestamp', function() {
+ const result = subQuarters(new Date(2014, 8 /* Sep */, 1).getTime(), 4)
+ assert.deepEqual(result, new Date(2013, 8 /* Sep */, 1))
+ })
+
+ it('converts a fractional number to an integer', function() {
+ const result = subQuarters(new Date(2014, 8 /* Sep */, 1), 3.33)
+ assert.deepEqual(result, new Date(2013, 11 /* Dec */, 1))
+ })
+
+ it('implicitly converts number arguments', function() {
+ // $ExpectedMistake
+ // @ts-expect-error
+ const result = subQuarters(new Date(2014, 8 /* Sep */, 1), '3')
+ assert.deepEqual(result, new Date(2013, 11 /* Dec */, 1))
+ })
+
+ it('does not mutate the original date', function() {
+ const date = new Date(2014, 8 /* Sep */, 1)
+ subQuarters(date, 3)
+ assert.deepEqual(date, new Date(2014, 8 /* Sep */, 1))
+ })
+
+ it('works well if the desired month has fewer days and the provided date is in the last day of a month', function() {
+ const date = new Date(2014, 11 /* Dec */, 31)
+ const result = subQuarters(date, 1)
+ assert.deepEqual(result, new Date(2014, 8 /* Sep */, 30))
+ })
+
+ it('handles dates before 100 AD', function() {
+ const initialDate = new Date(0)
+ initialDate.setFullYear(0, 10 /* Nov */, 30)
+ initialDate.setHours(0, 0, 0, 0)
+ const expectedResult = new Date(0)
+ expectedResult.setFullYear(0, 1 /* Feb */, 29)
+ expectedResult.setHours(0, 0, 0, 0)
+ const result = subQuarters(initialDate, 3)
+ assert.deepEqual(result, expectedResult)
+ })
+
+ it('returns `Invalid Date` if the given date is invalid', function() {
+ const result = subQuarters(new Date(NaN), 3)
+ // @ts-expect-error
+ assert(result instanceof Date && isNaN(result))
+ })
+
+ it('returns `Invalid Date` if the given amount is NaN', function() {
+ const result = subQuarters(new Date(2014, 8 /* Sep */, 1), NaN)
+ // @ts-expect-error
+ assert(result instanceof Date && isNaN(result))
+ })
+
+ it('throws TypeError exception if passed less than 2 arguments', function() {
+ assert.throws(subQuarters.bind(null), TypeError)
+ assert.throws(subQuarters.bind(null, 1), TypeError)
+ })
+})
diff --git a/date-fns/src/subSeconds/benchmark.js b/date-fns/src/subSeconds/benchmark.js
new file mode 100644
index 0000000..7801686
--- /dev/null
+++ b/date-fns/src/subSeconds/benchmark.js
@@ -0,0 +1,21 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import subSeconds from '.'
+import moment from 'moment'
+
+suite('subSeconds', function () {
+ benchmark('date-fns', function () {
+ return subSeconds(this.date, 100)
+ })
+
+ benchmark('Moment.js', function () {
+ return this.moment.subtract(100, 'seconds')
+ })
+}, {
+ setup: function () {
+ this.date = new Date()
+ this.moment = moment()
+ }
+})
diff --git a/date-fns/src/subSeconds/index.d.ts b/date-fns/src/subSeconds/index.d.ts
new file mode 100644
index 0000000..f718279
--- /dev/null
+++ b/date-fns/src/subSeconds/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { subSeconds } from 'date-fns'
+export default subSeconds
diff --git a/date-fns/src/subSeconds/index.js.flow b/date-fns/src/subSeconds/index.js.flow
new file mode 100644
index 0000000..f568f0d
--- /dev/null
+++ b/date-fns/src/subSeconds/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (date: Date | number, amount: number) => Date
diff --git a/date-fns/src/subSeconds/index.ts b/date-fns/src/subSeconds/index.ts
new file mode 100644
index 0000000..72142a6
--- /dev/null
+++ b/date-fns/src/subSeconds/index.ts
@@ -0,0 +1,32 @@
+import toInteger from '../_lib/toInteger/index'
+import addSeconds from '../addSeconds/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name subSeconds
+ * @category Second Helpers
+ * @summary Subtract the specified number of seconds from the given date.
+ *
+ * @description
+ * Subtract the specified number of seconds from the given date.
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} date - the date to be changed
+ * @param {Number} amount - the amount of seconds to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.
+ * @returns {Date} the new date with the seconds subtracted
+ * @throws {TypeError} 2 arguments required
+ *
+ * @example
+ * // Subtract 30 seconds from 10 July 2014 12:45:00:
+ * const result = subSeconds(new Date(2014, 6, 10, 12, 45, 0), 30)
+ * //=> Thu Jul 10 2014 12:44:30
+ */
+export default function subSeconds(dirtyDate: Date | number, dirtyAmount: number): Date {
+ requiredArgs(2, arguments)
+
+ const amount = toInteger(dirtyAmount)
+ return addSeconds(dirtyDate, -amount)
+}
diff --git a/date-fns/src/subSeconds/test.ts b/date-fns/src/subSeconds/test.ts
new file mode 100644
index 0000000..1b0b97d
--- /dev/null
+++ b/date-fns/src/subSeconds/test.ts
@@ -0,0 +1,55 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import subSeconds from '.'
+
+describe('subSeconds', function() {
+ it('subtracts the given number of seconds', function() {
+ const result = subSeconds(new Date(2014, 6 /* Jul */, 10, 12, 45, 0), 30)
+ assert.deepEqual(result, new Date(2014, 6 /* Jul */, 10, 12, 44, 30))
+ })
+
+ it('accepts a timestamp', function() {
+ const result = subSeconds(
+ new Date(2014, 6 /* Jul */, 10, 12, 45, 0).getTime(),
+ 20
+ )
+ assert.deepEqual(result, new Date(2014, 6 /* Jul */, 10, 12, 44, 40))
+ })
+
+ it('converts a fractional number to an integer', function() {
+ const result = subSeconds(new Date(2014, 6 /* Jul */, 10, 12, 45, 0), 30.5)
+ assert.deepEqual(result, new Date(2014, 6 /* Jul */, 10, 12, 44, 30))
+ })
+
+ it('implicitly converts number arguments', function() {
+ // $ExpectedMistake
+ // @ts-expect-error
+ const result = subSeconds(new Date(2014, 6 /* Jul */, 10, 12, 45, 0), '30')
+ assert.deepEqual(result, new Date(2014, 6 /* Jul */, 10, 12, 44, 30))
+ })
+
+ it('does not mutate the original date', function() {
+ const date = new Date(2014, 6 /* Jul */, 10, 12, 45, 0)
+ subSeconds(date, 15)
+ assert.deepEqual(date, new Date(2014, 6 /* Jul */, 10, 12, 45, 0))
+ })
+
+ it('returns `Invalid Date` if the given date is invalid', function() {
+ const result = subSeconds(new Date(NaN), 30)
+ // @ts-expect-error
+ assert(result instanceof Date && isNaN(result))
+ })
+
+ it('returns `Invalid Date` if the given amount is NaN', function() {
+ const result = subSeconds(new Date(2014, 6 /* Jul */, 10, 12, 45, 0), NaN)
+ // @ts-expect-error
+ assert(result instanceof Date && isNaN(result))
+ })
+
+ it('throws TypeError exception if passed less than 2 arguments', function() {
+ assert.throws(subSeconds.bind(null), TypeError)
+ assert.throws(subSeconds.bind(null, 1), TypeError)
+ })
+})
diff --git a/date-fns/src/subWeeks/benchmark.js b/date-fns/src/subWeeks/benchmark.js
new file mode 100644
index 0000000..0fef6a6
--- /dev/null
+++ b/date-fns/src/subWeeks/benchmark.js
@@ -0,0 +1,21 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import subWeeks from '.'
+import moment from 'moment'
+
+suite('subWeeks', function () {
+ benchmark('date-fns', function () {
+ return subWeeks(this.date, 8)
+ })
+
+ benchmark('Moment.js', function () {
+ return this.moment.subtract(8, 'weeks')
+ })
+}, {
+ setup: function () {
+ this.date = new Date()
+ this.moment = moment()
+ }
+})
diff --git a/date-fns/src/subWeeks/index.d.ts b/date-fns/src/subWeeks/index.d.ts
new file mode 100644
index 0000000..b6e3c82
--- /dev/null
+++ b/date-fns/src/subWeeks/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { subWeeks } from 'date-fns'
+export default subWeeks
diff --git a/date-fns/src/subWeeks/index.js.flow b/date-fns/src/subWeeks/index.js.flow
new file mode 100644
index 0000000..f568f0d
--- /dev/null
+++ b/date-fns/src/subWeeks/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (date: Date | number, amount: number) => Date
diff --git a/date-fns/src/subWeeks/index.ts b/date-fns/src/subWeeks/index.ts
new file mode 100644
index 0000000..d12d2a0
--- /dev/null
+++ b/date-fns/src/subWeeks/index.ts
@@ -0,0 +1,32 @@
+import toInteger from '../_lib/toInteger/index'
+import addWeeks from '../addWeeks/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name subWeeks
+ * @category Week Helpers
+ * @summary Subtract the specified number of weeks from the given date.
+ *
+ * @description
+ * Subtract the specified number of weeks from the given date.
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} date - the date to be changed
+ * @param {Number} amount - the amount of weeks to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.
+ * @returns {Date} the new date with the weeks subtracted
+ * @throws {TypeError} 2 arguments required
+ *
+ * @example
+ * // Subtract 4 weeks from 1 September 2014:
+ * const result = subWeeks(new Date(2014, 8, 1), 4)
+ * //=> Mon Aug 04 2014 00:00:00
+ */
+export default function subWeeks(dirtyDate: Date | number, dirtyAmount: number): Date {
+ requiredArgs(2, arguments)
+
+ const amount = toInteger(dirtyAmount)
+ return addWeeks(dirtyDate, -amount)
+}
diff --git a/date-fns/src/subWeeks/test.ts b/date-fns/src/subWeeks/test.ts
new file mode 100644
index 0000000..efa311b
--- /dev/null
+++ b/date-fns/src/subWeeks/test.ts
@@ -0,0 +1,52 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import subWeeks from '.'
+
+describe('subWeeks', function() {
+ it('subtracts the given number of weeks', function() {
+ const result = subWeeks(new Date(2014, 8 /* Sep */, 1), 4)
+ assert.deepEqual(result, new Date(2014, 7 /* Aug */, 4))
+ })
+
+ it('accepts a timestamp', function() {
+ const result = subWeeks(new Date(2014, 8 /* Sep */, 1).getTime(), 1)
+ assert.deepEqual(result, new Date(2014, 7 /* Aug */, 25))
+ })
+
+ it('converts a fractional number to an integer', function() {
+ const result = subWeeks(new Date(2014, 8 /* Sep */, 1), 4.2)
+ assert.deepEqual(result, new Date(2014, 7 /* Aug */, 4))
+ })
+
+ it('implicitly converts number arguments', function() {
+ // $ExpectedMistake
+ // @ts-expect-error
+ const result = subWeeks(new Date(2014, 8 /* Sep */, 1), '4')
+ assert.deepEqual(result, new Date(2014, 7 /* Aug */, 4))
+ })
+
+ it('does not mutate the original date', function() {
+ const date = new Date(2014, 8 /* Sep */, 1)
+ subWeeks(date, 2)
+ assert.deepEqual(date, new Date(2014, 8 /* Sep */, 1))
+ })
+
+ it('returns `Invalid Date` if the given date is invalid', function() {
+ const result = subWeeks(new Date(NaN), 4)
+ // @ts-expect-error
+ assert(result instanceof Date && isNaN(result))
+ })
+
+ it('returns `Invalid Date` if the given amount is NaN', function() {
+ const result = subWeeks(new Date(2014, 8 /* Sep */, 1), NaN)
+ // @ts-expect-error
+ assert(result instanceof Date && isNaN(result))
+ })
+
+ it('throws TypeError exception if passed less than 2 arguments', function() {
+ assert.throws(subWeeks.bind(null), TypeError)
+ assert.throws(subWeeks.bind(null, 1), TypeError)
+ })
+})
diff --git a/date-fns/src/subYears/benchmark.js b/date-fns/src/subYears/benchmark.js
new file mode 100644
index 0000000..eada68d
--- /dev/null
+++ b/date-fns/src/subYears/benchmark.js
@@ -0,0 +1,21 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import subYears from '.'
+import moment from 'moment'
+
+suite('subYears', function () {
+ benchmark('date-fns', function () {
+ return subYears(this.date, 5)
+ })
+
+ benchmark('Moment.js', function () {
+ return this.moment.subtract(5, 'years')
+ })
+}, {
+ setup: function () {
+ this.date = new Date()
+ this.moment = moment()
+ }
+})
diff --git a/date-fns/src/subYears/index.d.ts b/date-fns/src/subYears/index.d.ts
new file mode 100644
index 0000000..5edf482
--- /dev/null
+++ b/date-fns/src/subYears/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { subYears } from 'date-fns'
+export default subYears
diff --git a/date-fns/src/subYears/index.js.flow b/date-fns/src/subYears/index.js.flow
new file mode 100644
index 0000000..f568f0d
--- /dev/null
+++ b/date-fns/src/subYears/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (date: Date | number, amount: number) => Date
diff --git a/date-fns/src/subYears/index.ts b/date-fns/src/subYears/index.ts
new file mode 100644
index 0000000..2619a6c
--- /dev/null
+++ b/date-fns/src/subYears/index.ts
@@ -0,0 +1,32 @@
+import toInteger from '../_lib/toInteger/index'
+import addYears from '../addYears/index'
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name subYears
+ * @category Year Helpers
+ * @summary Subtract the specified number of years from the given date.
+ *
+ * @description
+ * Subtract the specified number of years from the given date.
+ *
+ * ### v2.0.0 breaking changes:
+ *
+ * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).
+ *
+ * @param {Date|Number} date - the date to be changed
+ * @param {Number} amount - the amount of years to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.
+ * @returns {Date} the new date with the years subtracted
+ * @throws {TypeError} 2 arguments required
+ *
+ * @example
+ * // Subtract 5 years from 1 September 2014:
+ * const result = subYears(new Date(2014, 8, 1), 5)
+ * //=> Tue Sep 01 2009 00:00:00
+ */
+export default function subYears(dirtyDate: Date | number, dirtyAmount: number): Date {
+ requiredArgs(2, arguments)
+
+ const amount = toInteger(dirtyAmount)
+ return addYears(dirtyDate, -amount)
+}
diff --git a/date-fns/src/subYears/test.ts b/date-fns/src/subYears/test.ts
new file mode 100644
index 0000000..24b431e
--- /dev/null
+++ b/date-fns/src/subYears/test.ts
@@ -0,0 +1,68 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import subYears from '.'
+
+describe('subYears', function() {
+ it('subtracts the given number of years', function() {
+ const result = subYears(new Date(2014, 8 /* Sep */, 1), 5)
+ assert.deepEqual(result, new Date(2009, 8 /* Sep */, 1))
+ })
+
+ it('accepts a timestamp', function() {
+ const result = subYears(new Date(2014, 8 /* Sep */, 1).getTime(), 12)
+ assert.deepEqual(result, new Date(2002, 8 /* Sep */, 1))
+ })
+
+ it('converts a fractional number to an integer', function() {
+ const result = subYears(new Date(2014, 8 /* Sep */, 1), 5.1)
+ assert.deepEqual(result, new Date(2009, 8 /* Sep */, 1))
+ })
+
+ it('implicitly converts number arguments', function() {
+ // $ExpectedMistake
+ // @ts-expect-error
+ const result = subYears(new Date(2014, 8 /* Sep */, 1), '5')
+ assert.deepEqual(result, new Date(2009, 8 /* Sep */, 1))
+ })
+
+ it('does not mutate the original date', function() {
+ const date = new Date(2014, 8 /* Sep */, 1)
+ subYears(date, 12)
+ assert.deepEqual(date, new Date(2014, 8 /* Sep */, 1))
+ })
+
+ it('handles the leap years properly', function() {
+ const result = subYears(new Date(2016, 1 /* Feb */, 29), 1)
+ assert.deepEqual(result, new Date(2015, 1 /* Feb */, 28))
+ })
+
+ it('handles dates before 100 AD', function() {
+ const initialDate = new Date(0)
+ initialDate.setFullYear(0, 1 /* Feb */, 29)
+ initialDate.setHours(0, 0, 0, 0)
+ const expectedResult = new Date(0)
+ expectedResult.setFullYear(-1, 1 /* Feb */, 28)
+ expectedResult.setHours(0, 0, 0, 0)
+ const result = subYears(initialDate, 1)
+ assert.deepEqual(result, expectedResult)
+ })
+
+ it('returns `Invalid Date` if the given date is invalid', function() {
+ const result = subYears(new Date(NaN), 5)
+ // @ts-expect-error
+ assert(result instanceof Date && isNaN(result))
+ })
+
+ it('returns `Invalid Date` if the given amount is NaN', function() {
+ const result = subYears(new Date(2014, 8 /* Sep */, 1), NaN)
+ // @ts-expect-error
+ assert(result instanceof Date && isNaN(result))
+ })
+
+ it('throws TypeError exception if passed less than 2 arguments', function() {
+ assert.throws(subYears.bind(null), TypeError)
+ assert.throws(subYears.bind(null, 1), TypeError)
+ })
+})
diff --git a/date-fns/src/toDate/benchmark.js b/date-fns/src/toDate/benchmark.js
new file mode 100644
index 0000000..290d5d3
--- /dev/null
+++ b/date-fns/src/toDate/benchmark.js
@@ -0,0 +1,16 @@
+// @flow
+/* eslint-env mocha */
+/* global suite, benchmark */
+
+import toDate from '.'
+import moment from 'moment'
+
+suite('toDate', function() {
+ benchmark('date-fns', function() {
+ return toDate(539980200000)
+ })
+
+ benchmark('Moment.js', function() {
+ return moment(539980200000)
+ })
+})
diff --git a/date-fns/src/toDate/index.d.ts b/date-fns/src/toDate/index.d.ts
new file mode 100644
index 0000000..0231ae7
--- /dev/null
+++ b/date-fns/src/toDate/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { toDate } from 'date-fns'
+export default toDate
diff --git a/date-fns/src/toDate/index.js.flow b/date-fns/src/toDate/index.js.flow
new file mode 100644
index 0000000..19292c7
--- /dev/null
+++ b/date-fns/src/toDate/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (argument: Date | number) => Date
diff --git a/date-fns/src/toDate/index.ts b/date-fns/src/toDate/index.ts
new file mode 100644
index 0000000..a7282ed
--- /dev/null
+++ b/date-fns/src/toDate/index.ts
@@ -0,0 +1,61 @@
+import requiredArgs from '../_lib/requiredArgs/index'
+
+/**
+ * @name toDate
+ * @category Common Helpers
+ * @summary Convert the given argument to an instance of Date.
+ *
+ * @description
+ * Convert the given argument to an instance of Date.
+ *
+ * If the argument is an instance of Date, the function returns its clone.
+ *
+ * If the argument is a number, it is treated as a timestamp.
+ *
+ * If the argument is none of the above, the function returns Invalid Date.
+ *
+ * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.
+ *
+ * @param {Date|Number} argument - the value to convert
+ * @returns {Date} the parsed date in the local time zone
+ * @throws {TypeError} 1 argument required
+ *
+ * @example
+ * // Clone the date:
+ * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))
+ * //=> Tue Feb 11 2014 11:30:30
+ *
+ * @example
+ * // Convert the timestamp to date:
+ * const result = toDate(1392098430000)
+ * //=> Tue Feb 11 2014 11:30:30
+ */
+export default function toDate(argument: Date | number): Date {
+ requiredArgs(1, arguments)
+
+ const argStr = Object.prototype.toString.call(argument)
+
+ // Clone the date
+ if (
+ argument instanceof Date ||
+ (typeof argument === 'object' && argStr === '[object Date]')
+ ) {
+ // Prevent the date to lose the milliseconds when passed to new Date() in IE10
+ return new Date(argument.getTime())
+ } else if (typeof argument === 'number' || argStr === '[object Number]') {
+ return new Date(argument)
+ } else {
+ if (
+ (typeof argument === 'string' || argStr === '[object String]') &&
+ typeof console !== 'undefined'
+ ) {
+ // eslint-disable-next-line no-console
+ console.warn(
+ "Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use `parseISO` to parse strings. See: https://git.io/fjule"
+ )
+ // eslint-disable-next-line no-console
+ console.warn(new Error().stack)
+ }
+ return new Date(NaN)
+ }
+}
diff --git a/date-fns/src/toDate/test.ts b/date-fns/src/toDate/test.ts
new file mode 100644
index 0000000..c376727
--- /dev/null
+++ b/date-fns/src/toDate/test.ts
@@ -0,0 +1,136 @@
+// @flow
+/* eslint-env mocha */
+
+import assert from 'power-assert'
+import sinon from 'sinon'
+import toDate from '.'
+
+describe('toDate', () => {
+ describe('date argument', () => {
+ it('returns a clone of the given date', () => {
+ const date = new Date(2016, 0, 1)
+ const dateClone = toDate(date)
+ dateClone.setFullYear(2015)
+ assert.deepEqual(date, new Date(2016, 0, 1))
+ })
+ })
+
+ describe('timestamp argument', () => {
+ it('creates a date from the timestamp', () => {
+ const timestamp = new Date(2016, 0, 1, 23, 30, 45, 123).getTime()
+ const result = toDate(timestamp)
+ assert.deepEqual(result, new Date(2016, 0, 1, 23, 30, 45, 123))
+ })
+ })
+
+ describe('invalid argument', () => {
+ mockConsoleWarn()
+
+ it('returns Invalid Date if argument is a string', () => {
+ // $ExpectedMistake
+ // @ts-expect-error
+ const result = toDate('1987-02-11')
+ assert(result instanceof Date)
+ // @ts-expect-error
+ assert(isNaN(result))
+ })
+
+ it('prints deprecation warning if the argument is a string', () => {
+ // $ExpectedMistake
+ console.warn = sinon.spy() // eslint-disable-line no-console
+ // $ExpectedMistake
+ // @ts-expect-error
+ toDate('1987-02-11')
+ assert(
+ // eslint-disable-next-line no-console
+ // @ts-expect-error
+ console.warn.calledWith(
+ "Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use `parseISO` to parse strings. See: https://git.io/fjule"
+ )
+ )
+ })
+
+ it('returns Invalid Date if argument is NaN', () => {
+ const result = toDate(NaN)
+ assert(result instanceof Date)
+ // @ts-expect-error
+ assert(isNaN(result))
+ })
+
+ it('returns Invalid Date if argument is Invalid Date', () => {
+ const result = toDate(new Date(NaN))
+ assert(result instanceof Date)
+ // @ts-expect-error
+ assert(isNaN(result))
+ })
+
+ it('returns Invalid Date if argument is null', () => {
+ // $ExpectedMistake
+ // @ts-expect-error
+ const result = toDate(null)
+ assert(result instanceof Date)
+ // @ts-expect-error
+ assert(isNaN(result))
+ })
+
+ it('returns Invalid Date if argument is undefined', () => {
+ // $ExpectedMistake
+ // @ts-expect-error
+ const result = toDate(undefined)
+ assert(result instanceof Date)
+ // @ts-expect-error
+ assert(isNaN(result))
+ })
+
+ it('returns Invalid Date if argument is false', () => {
+ // $ExpectedMistake
+ // @ts-expect-error
+ const result = toDate(false)
+ assert(result instanceof Date)
+ // @ts-expect-error
+ assert(isNaN(result))
+ })
+
+ it('returns Invalid Date if argument is true', () => {
+ // $ExpectedMistake
+ // @ts-expect-error
+ const result = toDate(true)
+ assert(result instanceof Date)
+ // @ts-expect-error
+ assert(isNaN(result))
+ })
+ })
+
+ describe('argument conversion', () => {
+ it('implicitly converts instance of Number into a number', () => {
+ // eslint-disable-next-line no-new-wrappers
+ const timestamp = new Number(
+ new Date(2016, 0, 1, 23, 30, 45, 123).getTime()
+ )
+ // $ExpectedMistake
+ // @ts-expect-error
+ const result = toDate(timestamp)
+ assert.deepEqual(result, new Date(2016, 0, 1, 23, 30, 45, 123))
+ })
+ })
+
+ it('throws TypeError exception if passed less than 1 argument', () => {
+ assert.throws(toDate.bind(null), TypeError)
+ })
+})
+
+function mockConsoleWarn() {
+ let originalWarn
+
+ beforeEach(() => {
+ originalWarn = console.warn // eslint-disable-line no-console
+ // $ExpectedMistake
+ console.warn = () => {} // eslint-disable-line no-console
+ })
+
+ afterEach(() => {
+ // $ExpectedMistake
+ // @ts-expect-error
+ console.warn = originalWarn // eslint-disable-line no-console
+ })
+}
diff --git a/date-fns/src/types.ts b/date-fns/src/types.ts
new file mode 100644
index 0000000..9ce6059
--- /dev/null
+++ b/date-fns/src/types.ts
@@ -0,0 +1,53 @@
+import { Locale } from './locale/types'
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+export interface Duration {
+ years?: number
+ months?: number
+ weeks?: number
+ days?: number
+ hours?: number
+ minutes?: number
+ seconds?: number
+}
+
+export interface Interval {
+ start: Date | number
+ end: Date | number
+}
+
+export interface StepOptions {
+ step?: number
+}
+
+export interface WeekStartOptions {
+ weekStartsOn?: Day
+}
+
+export interface LocaleOptions {
+ locale?: Locale
+}
+
+export type FirstWeekContainsDate = 1 | 4
+
+export interface FirstWeekContainsDateOptions {
+ firstWeekContainsDate?: FirstWeekContainsDate
+}
+
+export interface DateValues {
+ year?: number
+ month?: number
+ date?: number
+ hours?: number
+ minutes?: number
+ seconds?: number
+ milliseconds?: number
+}
+
+export type Unit = 'second'
+ | 'minute'
+ | 'hour'
+ | 'day'
+ | 'month'
+ | 'year';
diff --git a/date-fns/src/weeksToDays/index.d.ts b/date-fns/src/weeksToDays/index.d.ts
new file mode 100644
index 0000000..dd8c1fe
--- /dev/null
+++ b/date-fns/src/weeksToDays/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { weeksToDays } from 'date-fns'
+export default weeksToDays
diff --git a/date-fns/src/weeksToDays/index.js.flow b/date-fns/src/weeksToDays/index.js.flow
new file mode 100644
index 0000000..257c1cc
--- /dev/null
+++ b/date-fns/src/weeksToDays/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (weeks: number) => number
diff --git a/date-fns/src/weeksToDays/index.ts b/date-fns/src/weeksToDays/index.ts
new file mode 100644
index 0000000..6675186
--- /dev/null
+++ b/date-fns/src/weeksToDays/index.ts
@@ -0,0 +1,25 @@
+import requiredArgs from '../_lib/requiredArgs/index'
+import { daysInWeek } from '../constants/index'
+
+/**
+ * @name weeksToDays
+ * @category Conversion Helpers
+ * @summary Convert weeks to days.
+ *
+ * @description
+ * Convert a number of weeks to a full number of days.
+ *
+ * @param {number} weeks - number of weeks to be converted
+ *
+ * @returns {number} the number of weeks converted in days
+ * @throws {TypeError} 1 argument required
+ *
+ * @example
+ * // Convert 2 weeks into days
+ * const result = weeksToDays(2)
+ * //=> 14
+ */
+export default function weeksToDays(weeks: number): number {
+ requiredArgs(1, arguments)
+ return Math.floor(weeks * daysInWeek)
+}
diff --git a/date-fns/src/weeksToDays/test.ts b/date-fns/src/weeksToDays/test.ts
new file mode 100644
index 0000000..46bbab1
--- /dev/null
+++ b/date-fns/src/weeksToDays/test.ts
@@ -0,0 +1,21 @@
+/* eslint-env mocha */
+
+import assert from 'assert'
+import weeksToDays from '.'
+
+describe('weeksToDays', function () {
+ it('converts weeks to days', function () {
+ assert(weeksToDays(1) === 7)
+ assert(weeksToDays(2) === 14)
+ })
+
+ it('uses floor rounding', () => {
+ assert(weeksToDays(1.5) === 10)
+ assert(weeksToDays(0.1) === 0)
+ })
+
+ it('handles border values', () => {
+ assert(weeksToDays(1.5) === 10)
+ assert(weeksToDays(0) === 0)
+ })
+})
diff --git a/date-fns/src/yearsToMonths/index.d.ts b/date-fns/src/yearsToMonths/index.d.ts
new file mode 100644
index 0000000..9e9126d
--- /dev/null
+++ b/date-fns/src/yearsToMonths/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { yearsToMonths } from 'date-fns'
+export default yearsToMonths
diff --git a/date-fns/src/yearsToMonths/index.js.flow b/date-fns/src/yearsToMonths/index.js.flow
new file mode 100644
index 0000000..d081919
--- /dev/null
+++ b/date-fns/src/yearsToMonths/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (years: number) => number
diff --git a/date-fns/src/yearsToMonths/index.ts b/date-fns/src/yearsToMonths/index.ts
new file mode 100644
index 0000000..2e547bd
--- /dev/null
+++ b/date-fns/src/yearsToMonths/index.ts
@@ -0,0 +1,25 @@
+import requiredArgs from '../_lib/requiredArgs/index'
+import { monthsInYear } from '../constants/index'
+
+/**
+ * @name yearsToMonths
+ * @category Conversion Helpers
+ * @summary Convert years to months.
+ *
+ * @description
+ * Convert a number of years to a full number of months.
+ *
+ * @param {number} years - number of years to be converted
+ *
+ * @returns {number} the number of years converted in months
+ * @throws {TypeError} 1 argument required
+ *
+ * @example
+ * // Convert 2 years into months
+ * const result = yearsToMonths(2)
+ * //=> 24
+ */
+export default function yearsToMonths(years: number): number {
+ requiredArgs(1, arguments)
+ return Math.floor(years * monthsInYear)
+}
diff --git a/date-fns/src/yearsToMonths/test.ts b/date-fns/src/yearsToMonths/test.ts
new file mode 100644
index 0000000..e91231c
--- /dev/null
+++ b/date-fns/src/yearsToMonths/test.ts
@@ -0,0 +1,21 @@
+/* eslint-env mocha */
+
+import assert from 'assert'
+import yearsToMonths from '.'
+
+describe('yearsToMonths', function () {
+ it('converts years to months', function () {
+ assert(yearsToMonths(1) === 12)
+ assert(yearsToMonths(2) === 24)
+ })
+
+ it('uses floor rounding', () => {
+ assert(yearsToMonths(1.7) === 20)
+ assert(yearsToMonths(0.1) === 1)
+ })
+
+ it('handles border values', () => {
+ assert(yearsToMonths(1.5) === 18)
+ assert(yearsToMonths(0) === 0)
+ })
+})
diff --git a/date-fns/src/yearsToQuarters/index.d.ts b/date-fns/src/yearsToQuarters/index.d.ts
new file mode 100644
index 0000000..e3ebc70
--- /dev/null
+++ b/date-fns/src/yearsToQuarters/index.d.ts
@@ -0,0 +1,4 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+import { yearsToQuarters } from 'date-fns'
+export default yearsToQuarters
diff --git a/date-fns/src/yearsToQuarters/index.js.flow b/date-fns/src/yearsToQuarters/index.js.flow
new file mode 100644
index 0000000..d081919
--- /dev/null
+++ b/date-fns/src/yearsToQuarters/index.js.flow
@@ -0,0 +1,52 @@
+// @flow
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+export type Interval = {
+ start: Date | number,
+ end: Date | number,
+}
+
+export type Locale = {
+ code?: string,
+ formatDistance?: (...args: Array<any>) => any,
+ formatRelative?: (...args: Array<any>) => any,
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ formatLong?: {
+ date: (...args: Array<any>) => any,
+ time: (...args: Array<any>) => any,
+ dateTime: (...args: Array<any>) => any,
+ },
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any,
+ era: (...args: Array<any>) => any,
+ quarter: (...args: Array<any>) => any,
+ month: (...args: Array<any>) => any,
+ day: (...args: Array<any>) => any,
+ dayPeriod: (...args: Array<any>) => any,
+ },
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6,
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7,
+ },
+}
+
+export type Duration = {
+ years?: number,
+ months?: number,
+ weeks?: number,
+ days?: number,
+ hours?: number,
+ minutes?: number,
+ seconds?: number,
+}
+
+export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+declare module.exports: (years: number) => number
diff --git a/date-fns/src/yearsToQuarters/index.ts b/date-fns/src/yearsToQuarters/index.ts
new file mode 100644
index 0000000..223e7d5
--- /dev/null
+++ b/date-fns/src/yearsToQuarters/index.ts
@@ -0,0 +1,25 @@
+import requiredArgs from '../_lib/requiredArgs/index'
+import { quartersInYear } from '../constants/index'
+
+/**
+ * @name yearsToQuarters
+ * @category Conversion Helpers
+ * @summary Convert years to quarters.
+ *
+ * @description
+ * Convert a number of years to a full number of quarters.
+ *
+ * @param {number} years - number of years to be converted
+ *
+ * @returns {number} the number of years converted in quarters
+ * @throws {TypeError} 1 argument required
+ *
+ * @example
+ * // Convert 2 years to quarters
+ * const result = yearsToQuarters(2)
+ * //=> 8
+ */
+export default function yearsToQuarters(years: number): number {
+ requiredArgs(1, arguments)
+ return Math.floor(years * quartersInYear)
+}
diff --git a/date-fns/src/yearsToQuarters/test.ts b/date-fns/src/yearsToQuarters/test.ts
new file mode 100644
index 0000000..a08ef68
--- /dev/null
+++ b/date-fns/src/yearsToQuarters/test.ts
@@ -0,0 +1,21 @@
+/* eslint-env mocha */
+
+import assert from 'assert'
+import yearsToQuarters from '.'
+
+describe('yearsToQuarters', function () {
+ it('converts years to quarters', function () {
+ assert(yearsToQuarters(1) === 4)
+ assert(yearsToQuarters(2) === 8)
+ })
+
+ it('uses floor rounding', () => {
+ assert(yearsToQuarters(1.3) === 5)
+ assert(yearsToQuarters(0.2) === 0)
+ })
+
+ it('handles border values', () => {
+ assert(yearsToQuarters(1.5) === 6)
+ assert(yearsToQuarters(0) === 0)
+ })
+})
diff --git a/date-fns/test.js b/date-fns/test.js
new file mode 100644
index 0000000..0406e07
--- /dev/null
+++ b/date-fns/test.js
@@ -0,0 +1,2 @@
+var testsContext = require.context('./src/', true, /\/test\.(t|j)s$/)
+testsContext.keys().forEach(testsContext)
diff --git a/date-fns/test/.eslintrc.js b/date-fns/test/.eslintrc.js
new file mode 100644
index 0000000..a40aaa8
--- /dev/null
+++ b/date-fns/test/.eslintrc.js
@@ -0,0 +1,5 @@
+module.exports = {
+ rules: {
+ 'no-console': 'off'
+ }
+}
diff --git a/date-fns/test/dst/addBusinessDays/basic.js b/date-fns/test/dst/addBusinessDays/basic.js
new file mode 100644
index 0000000..c55a686
--- /dev/null
+++ b/date-fns/test/dst/addBusinessDays/basic.js
@@ -0,0 +1,18 @@
+// This is basic DST test for addBusinessDays
+
+import assert from 'assert'
+import addBusinessDays from '../../../src/addBusinessDays'
+
+if (process.env.TZ !== 'America/Santiago')
+ throw new Error('The test must be run with TZ=America/Santiago')
+
+if (parseInt(process.version.match(/^v(\d+)\./)[1]) < 10)
+ throw new Error('The test must be run on Node.js version >= 10')
+
+console.log(addBusinessDays(new Date(2014, 8 /* Sep */, 1), 10).toString())
+
+assert.deepEqual(
+ // new Date(2014, 8, 7) is the DST day
+ addBusinessDays(new Date(2014, 8 /* Sep */, 1), 10).toString(),
+ 'Mon Sep 15 2014 00:00:00 GMT-0300 (Chile Summer Time)'
+)
diff --git a/date-fns/test/dst/eachDayOfInterval/basic.js b/date-fns/test/dst/eachDayOfInterval/basic.js
new file mode 100644
index 0000000..8525a2b
--- /dev/null
+++ b/date-fns/test/dst/eachDayOfInterval/basic.js
@@ -0,0 +1,22 @@
+// This is basic DST test for eachDayOfInterval
+
+import eachDayOfInterval from '../../../src/eachDayOfInterval'
+import assert from 'assert'
+
+if (process.env.TZ !== 'Asia/Damascus')
+ throw new Error('The test must be run with TZ=Asia/Damascus')
+
+if (parseInt(process.version.match(/^v(\d+)\./)[1]) < 10)
+ throw new Error('The test must be run on Node.js version >= 10')
+
+assert.deepEqual(
+ eachDayOfInterval({
+ start: new Date(2020, 2, 26),
+ end: new Date(2020, 2, 28)
+ }).map(d => d.toString()),
+ [
+ 'Thu Mar 26 2020 00:00:00 GMT+0200 (Eastern European Standard Time)',
+ 'Fri Mar 27 2020 01:00:00 GMT+0300 (Eastern European Summer Time)',
+ 'Sat Mar 28 2020 00:00:00 GMT+0300 (Eastern European Summer Time)'
+ ]
+)
diff --git a/date-fns/test/dst/formatDistanceStrict/cairo.ts b/date-fns/test/dst/formatDistanceStrict/cairo.ts
new file mode 100644
index 0000000..c9bd691
--- /dev/null
+++ b/date-fns/test/dst/formatDistanceStrict/cairo.ts
@@ -0,0 +1,15 @@
+// This is DST test for formatDistanceStrict in the Cairo timezone
+
+import formatDistanceStrict from '../../../src/formatDistanceStrict'
+import assert from 'assert'
+
+if (process.env.TZ !== 'Africa/Cairo')
+ throw new Error('The test must be run with TZ=Africa/Cairo')
+
+assert.equal(
+ formatDistanceStrict(
+ new Date(1986, 3, 4, 10, 32, 0),
+ new Date(1986, 4, 4, 10, 32, 0)
+ ),
+ '1 month'
+)
diff --git a/date-fns/test/dst/formatDistanceStrict/melbourne.ts b/date-fns/test/dst/formatDistanceStrict/melbourne.ts
new file mode 100644
index 0000000..aee04da
--- /dev/null
+++ b/date-fns/test/dst/formatDistanceStrict/melbourne.ts
@@ -0,0 +1,16 @@
+// This is DST test for formatDistanceStrict in the Melbourne timezone
+
+import formatDistanceStrict from '../../../src/formatDistanceStrict'
+import parseISO from '../../../src/parseISO'
+import assert from 'assert'
+
+if (process.env.TZ !== 'Australia/Melbourne')
+ throw new Error('The test must be run with TZ=Australia/Melbourne')
+
+assert.equal(
+ formatDistanceStrict(
+ parseISO('2020-04-05T01:00:00+11:00'),
+ parseISO('2020-04-05T03:00:00+10:00')
+ ),
+ '3 hours'
+)
diff --git a/date-fns/test/dst/parseISO/basic.js b/date-fns/test/dst/parseISO/basic.js
new file mode 100644
index 0000000..665af35
--- /dev/null
+++ b/date-fns/test/dst/parseISO/basic.js
@@ -0,0 +1,30 @@
+// This is basic DST test for parseISO
+
+import parseISO from '../../../src/parseISO'
+import assert from 'assert'
+
+if (process.env.TZ !== 'America/Sao_Paulo')
+ throw new Error('The test must be run with TZ=America/Sao_Paulo')
+
+if (parseInt(process.version.match(/^v(\d+)\./)[1]) < 10)
+ throw new Error('The test must be run on Node.js version >= 10')
+
+// Test DST start edge
+assert.equal(parseISO('2018-11-03').getDate(), 3)
+assert.equal(parseISO('2018-11-04').getDate(), 4) // DST start
+assert.equal(parseISO('2018-11-05').getDate(), 5)
+
+// Test DST end edge
+assert.equal(parseISO('2019-02-15').getDate(), 15)
+assert.equal(parseISO('2019-02-16').getDate(), 16) // DST end
+assert.equal(parseISO('2019-02-17').getDate(), 17)
+
+// Test creation of nonexistent time
+assert.equal(
+ parseISO('2018-11-04T00:00').toString(),
+ 'Sun Nov 04 2018 01:00:00 GMT-0200 (Brasilia Summer Time)'
+)
+assert.equal(
+ parseISO('2018-11-04T00:30').toString(),
+ 'Sun Nov 04 2018 01:30:00 GMT-0200 (Brasilia Summer Time)'
+)
diff --git a/date-fns/test/dst/parseISO/samoa.js b/date-fns/test/dst/parseISO/samoa.js
new file mode 100644
index 0000000..40d224f
--- /dev/null
+++ b/date-fns/test/dst/parseISO/samoa.js
@@ -0,0 +1,16 @@
+// This is an edge case DST test for parseISO
+
+import parseISO from '../../../src/parseISO'
+import assert from 'assert'
+
+if (process.env.TZ !== 'Pacific/Apia')
+ throw new Error('The test must be run with TZ=Pacific/Apia')
+
+if (parseInt(process.version.match(/^v(\d+)\./)[1]) < 10)
+ throw new Error('The test must be run on Node.js version >= 10')
+
+assert.equal(parseISO('2011-12-30').getDate(), 31)
+assert.equal(
+ parseISO('2011-12-30T03:30').toString(),
+ 'Sat Dec 31 2011 03:30:00 GMT+1400 (Apia Daylight Time)'
+)
diff --git a/date-fns/test/dst/parseISO/sydney.js b/date-fns/test/dst/parseISO/sydney.js
new file mode 100644
index 0000000..3b733c0
--- /dev/null
+++ b/date-fns/test/dst/parseISO/sydney.js
@@ -0,0 +1,58 @@
+// This is basic DST test for parseISO
+
+import parseISO from '../../../src/parseISO'
+import assert from 'assert'
+
+if (process.env.TZ !== 'Australia/Sydney')
+ throw new Error('The test must be run with TZ=Australia/Sydney')
+
+if (parseInt(process.version.match(/^v(\d+)\./)[1]) < 10)
+ throw new Error('The test must be run on Node.js version >= 10')
+
+// Test DST start edge
+assert.equal(parseISO('2019-10-06').getDate(), 6) // DST start
+assert.equal(parseISO('2019-10-07').getDate(), 7)
+assert.equal(
+ parseISO('2019-10-06T01:00:00').toString(),
+ 'Sun Oct 06 2019 01:00:00 GMT+1000 (Australian Eastern Standard Time)'
+)
+assert.equal(
+ parseISO('2019-10-06T02:00:00').toString(),
+ 'Sun Oct 06 2019 03:00:00 GMT+1100 (Australian Eastern Daylight Time)'
+)
+
+assert.equal(
+ parseISO('2019-10-06T05:00:00').toString(),
+ 'Sun Oct 06 2019 05:00:00 GMT+1100 (Australian Eastern Daylight Time)'
+)
+
+// Test DST end edge
+assert.equal(parseISO('2019-04-06').getDate(), 6)
+assert.equal(parseISO('2019-04-07').getDate(), 7) // DST end
+assert.equal(
+ parseISO('2019-04-06T11:00:00').toString(),
+ 'Sat Apr 06 2019 11:00:00 GMT+1100 (Australian Eastern Daylight Time)'
+)
+assert.equal(
+ parseISO('2019-04-07T11:00:00').toString(),
+ 'Sun Apr 07 2019 11:00:00 GMT+1000 (Australian Eastern Standard Time)'
+)
+
+assert.equal(
+ parseISO('2019-04-07T00:00:00').toString(),
+ 'Sun Apr 07 2019 00:00:00 GMT+1100 (Australian Eastern Daylight Time)'
+)
+
+// test edge cases for months, years
+assert.equal(
+ parseISO('2020-01-01T00:00:00').toString(),
+ 'Wed Jan 01 2020 00:00:00 GMT+1100 (Australian Eastern Daylight Time)'
+)
+assert.equal(
+ parseISO('2019-12-31T23:59:59').toString(),
+ 'Tue Dec 31 2019 23:59:59 GMT+1100 (Australian Eastern Daylight Time)'
+)
+assert.equal(
+ parseISO('2020-02-29T23:59:59').toString(),
+ 'Sat Feb 29 2020 23:59:59 GMT+1100 (Australian Eastern Daylight Time)'
+)
diff --git a/date-fns/test/dst/tzOffsetTransitions.ts b/date-fns/test/dst/tzOffsetTransitions.ts
new file mode 100644
index 0000000..3e5521b
--- /dev/null
+++ b/date-fns/test/dst/tzOffsetTransitions.ts
@@ -0,0 +1,143 @@
+type PartialInterval = {
+ start: Date | undefined
+ end: Date | undefined
+}
+
+/**
+ * Fetch the start and end of DST for the local time
+ * zone in a given year.
+ * We'll assume that DST start & end are the first
+ * forward and the last back transitions in the year,
+ * except transitions in Jan or Dec which are likely
+ * to be permanent TZ changes rather than DST changes.
+ * @param {number} year
+ * @returns object with two Date-valued properties:
+ * - `start` is the first instant of DST in the Spring,
+ * or undefined if there's no DST in this year.
+ * - `end` is the first instant of standard time
+ * in the Fall, or undefined if there's no DST in
+ * this year.
+ */
+export function getDstTransitions(year: number): PartialInterval {
+ const result: PartialInterval = {
+ start: undefined,
+ end: undefined
+ }
+ const transitions = getTzOffsetTransitions(year)
+ for (let i = 0; i < transitions.length; i++) {
+ const t = transitions[i]
+ const month = t.date.getMonth()
+ if (month > 0 && month < 11) {
+ if (t.type === 'forward') result.start = t.date
+ if (t.type === 'back' && !result.end) result.end = t.date
+ }
+ }
+ return result
+}
+
+function isValidDate(date: unknown): date is Date {
+ return date instanceof Date && !isNaN(date.getTime())
+}
+
+const MINUTE = 1000 * 60
+
+function firstTickInLocalDay(date: Date): Date {
+ const dateNumber = date.getDate()
+ let prev = date
+ let d = date
+ do {
+ prev = d
+ d = new Date(d.getTime() - MINUTE)
+ } while (dateNumber === d.getDate())
+ return prev
+}
+
+function fiveMinutesLater(date: Date): Date {
+ return new Date(date.getTime() + 5 * MINUTE)
+}
+
+function oneDayLater(date: Date): Date {
+ const d = new Date(date)
+ d.setDate(d.getDate() + 1)
+ return firstTickInLocalDay(d)
+}
+
+function previousTickTimezoneOffset(date: Date): number {
+ const d = new Date(date.getTime() - 1)
+ return d.getTimezoneOffset()
+}
+
+/**
+ * Fetch all timezone-offset transitions in a given
+ * year. These are almost always DST transitions,
+ * but sometimes there are non-DST changes, e.g.
+ * when a country changes its time zone
+ * @param {number} year
+ * @returns array of objects, each with the following
+ * propeerties:
+ * - `date` - a `Date` representing the first instant
+ * when the new timezone offset is effective.
+ * - `type` - either `forward` for skippnig time like
+ * the Spring transition to DST.
+ * - `before` - the timezone offset before the tranition.
+ * For example, the UTC-0400 offset will return -240.
+ * To match how times are displayed in ISO 8601 format,
+ * the sign of this value is reversed from the return
+ * value of `Date.getTimezoneOffset`.
+ * - `after` - the timezone offset after the tranition.
+ * Examples and caveats are the same as `before`.
+
+ */
+export function getTzOffsetTransitions(year: number) {
+ // start at the end of the previous day
+ let date = firstTickInLocalDay(new Date(year, 0, 1))
+ if (!isValidDate(date)) {
+ throw new Error('Invalid Date')
+ }
+ let baseTzOffset = previousTickTimezoneOffset(date)
+ const transitions = []
+ do {
+ let tzOffset = date.getTimezoneOffset()
+ if (baseTzOffset !== tzOffset) {
+ if (tzOffset !== previousTickTimezoneOffset(date)) {
+ // Transition is the first tick of a local day.
+ transitions.push({
+ date: date,
+ type: tzOffset < baseTzOffset ? 'forward' : 'back',
+ before: -baseTzOffset,
+ after: -tzOffset
+ })
+ baseTzOffset = tzOffset
+ } else {
+ // transition was not at the start of the day, so it must have happened
+ // yesterday. Back up one day and find the minute where it happened.
+ let transitionDate = new Date(date.getTime())
+ transitionDate.setDate(transitionDate.getDate() - 1)
+
+ // Iterate through each 5 mins of the day until we find a transition.
+ // TODO: this could be optimized to search hours then minutes or by or
+ // by using a binary search.
+ const dayNumber = transitionDate.getDate()
+ while (
+ isValidDate(transitionDate) &&
+ transitionDate.getDate() === dayNumber
+ ) {
+ tzOffset = transitionDate.getTimezoneOffset()
+ if (baseTzOffset !== tzOffset) {
+ transitions.push({
+ date: transitionDate,
+ type: tzOffset < baseTzOffset ? 'forward' : 'back',
+ before: -baseTzOffset,
+ after: -tzOffset
+ })
+ baseTzOffset = tzOffset
+ break // assuming only 1 transition per day
+ }
+ transitionDate = fiveMinutesLater(transitionDate)
+ }
+ }
+ }
+ date = oneDayLater(date)
+ } while (date.getFullYear() === year)
+ return transitions
+}
diff --git a/date-fns/test/formatISO/india.js b/date-fns/test/formatISO/india.js
new file mode 100644
index 0000000..6062069
--- /dev/null
+++ b/date-fns/test/formatISO/india.js
@@ -0,0 +1,13 @@
+import formatISO from '../../src/formatISO'
+import assert from 'assert'
+
+if (process.env.TZ !== 'Asia/Kolkata')
+ throw new Error('The test must be run with TZ=Asia/Kolkata')
+
+if (parseInt(process.version.match(/^v(\d+)\./)[1]) < 10)
+ throw new Error('The test must be run on Node.js version >= 10')
+
+assert.equal(
+ formatISO(new Date(1986, 3, 4, 10, 33, 1)),
+ '1986-04-04T10:33:01+05:30'
+)
diff --git a/date-fns/test/formatRFC3339/australia.js b/date-fns/test/formatRFC3339/australia.js
new file mode 100644
index 0000000..e657c21
--- /dev/null
+++ b/date-fns/test/formatRFC3339/australia.js
@@ -0,0 +1,30 @@
+import formatRFC3339 from '../../src/formatRFC3339'
+import assert from 'assert'
+
+/**
+ * Australia/Eucla (Australia) is interesting for its positive to UTC time, with 45 minutes offset.
+ * It's independent from Standard and Summer time.
+ */
+if (process.env.TZ !== 'Australia/Eucla')
+ throw new Error('The test must be run with TZ=Australia/Eucla (UTC+08:45)')
+
+if (parseInt(process.version.match(/^v(\d+)\./)[1]) < 10)
+ throw new Error('The test must be run on Node.js version >= 10')
+
+// Old date
+assert.equal(
+ formatRFC3339(new Date(1986, 3, 4, 10, 33, 1)),
+ '1986-04-04T10:33:01+08:45'
+)
+
+// Standard time (Eucla have +08:45)
+assert.equal(
+ formatRFC3339(new Date(2020, 0, 23, 5, 0, 54)),
+ '2020-01-23T05:00:54+08:45'
+)
+
+// Summer time (Eucla have +08:45)
+assert.equal(
+ formatRFC3339(new Date(2020, 6, 30, 20, 59, 1)),
+ '2020-07-30T20:59:01+08:45'
+)
diff --git a/date-fns/test/formatRFC3339/india.js b/date-fns/test/formatRFC3339/india.js
new file mode 100644
index 0000000..cc77bba
--- /dev/null
+++ b/date-fns/test/formatRFC3339/india.js
@@ -0,0 +1,30 @@
+import formatRFC3339 from '../../src/formatRFC3339'
+import assert from 'assert'
+
+/**
+ * Asia/Kolkata (India) is interesting for its positive to UTC time, with 30 minutes offset.
+ * It's independent from Standard and Summer time.
+ */
+if (process.env.TZ !== 'Asia/Kolkata')
+ throw new Error('The test must be run with TZ=Asia/Kolkata')
+
+if (parseInt(process.version.match(/^v(\d+)\./)[1]) < 10)
+ throw new Error('The test must be run on Node.js version >= 10')
+
+// Old date
+assert.equal(
+ formatRFC3339(new Date(1986, 3, 4, 10, 33, 1)),
+ '1986-04-04T10:33:01+05:30'
+)
+
+// Standard time (india always have +05:30)
+assert.equal(
+ formatRFC3339(new Date(2020, 0, 23, 5, 0, 54)),
+ '2020-01-23T05:00:54+05:30'
+)
+
+// Summer time (india always have +05:30)
+assert.equal(
+ formatRFC3339(new Date(2020, 6, 30, 20, 59, 1)),
+ '2020-07-30T20:59:01+05:30'
+)
diff --git a/date-fns/test/formatRFC3339/newfoundland.js b/date-fns/test/formatRFC3339/newfoundland.js
new file mode 100644
index 0000000..f605a0b
--- /dev/null
+++ b/date-fns/test/formatRFC3339/newfoundland.js
@@ -0,0 +1,32 @@
+import formatRFC3339 from '../../src/formatRFC3339'
+import assert from 'assert'
+
+/**
+ * America/St_Johns (Canada) is interesting for its negative to UTC time, with 30 minutes offset.
+ * Bonus: It depends on Standard and Summer time.
+ */
+if (process.env.TZ !== 'America/St_Johns')
+ throw new Error(
+ 'The test must be run with TZ=America/St_Johns (UTC-02:30 or UTC-03:30)'
+ )
+
+if (parseInt(process.version.match(/^v(\d+)\./)[1]) < 10)
+ throw new Error('The test must be run on Node.js version >= 10')
+
+// Old date
+assert.equal(
+ formatRFC3339(new Date(1986, 3, 4, 10, 33, 1)),
+ '1986-04-04T10:33:01-03:30'
+)
+
+// Standard time (Newfoundland and Labrador have -03:30)
+assert.equal(
+ formatRFC3339(new Date(2020, 0, 23, 5, 0, 54)),
+ '2020-01-23T05:00:54-03:30'
+)
+
+// Summer time (Newfoundland and Labrador have -02:30)
+assert.equal(
+ formatRFC3339(new Date(2020, 6, 30, 20, 59, 1)),
+ '2020-07-30T20:59:01-02:30'
+)
diff --git a/date-fns/test/formatRFC3339/newzealand.js b/date-fns/test/formatRFC3339/newzealand.js
new file mode 100644
index 0000000..4c21613
--- /dev/null
+++ b/date-fns/test/formatRFC3339/newzealand.js
@@ -0,0 +1,32 @@
+import formatRFC3339 from '../../src/formatRFC3339'
+import assert from 'assert'
+
+/**
+ * Pacific/Chatham (Chatham Islands, New Zealand) is interesting for being the farthest from UTC.
+ * It depends on Standard (+12:45) and Summer time (+13:45).
+ */
+if (process.env.TZ !== 'Pacific/Chatham')
+ throw new Error(
+ 'The test must be run with TZ=Pacific/Chatham (UTC+12:45 or UTC+13:45)'
+ )
+
+if (parseInt(process.version.match(/^v(\d+)\./)[1]) < 10)
+ throw new Error('The test must be run on Node.js version >= 10')
+
+// Old date
+assert.equal(
+ formatRFC3339(new Date(1986, 3, 4, 10, 33, 1)),
+ '1986-04-04T10:33:01+12:45'
+)
+
+// Standard time (Chatham have +13:45)
+assert.equal(
+ formatRFC3339(new Date(2020, 8, 27, 20, 59, 1)),
+ '2020-09-27T20:59:01+13:45'
+)
+
+// Summer time (Chatham have +12:45)
+assert.equal(
+ formatRFC3339(new Date(2020, 3, 5, 5, 0, 54)),
+ '2020-04-05T05:00:54+12:45'
+)
diff --git a/date-fns/test/formatRFC3339/poland.js b/date-fns/test/formatRFC3339/poland.js
new file mode 100644
index 0000000..85c9048
--- /dev/null
+++ b/date-fns/test/formatRFC3339/poland.js
@@ -0,0 +1,31 @@
+import formatRFC3339 from '../../src/formatRFC3339'
+import assert from 'assert'
+
+/**
+ * Europe/Warsaw (Poland) is regular full-hours timezone
+ */
+if (process.env.TZ !== 'Europe/Warsaw')
+ throw new Error(
+ 'The test must be run with TZ=Europe/Warsaw (UTC+02:00 or UTC+01:00)'
+ )
+
+if (parseInt(process.version.match(/^v(\d+)\./)[1]) < 10)
+ throw new Error('The test must be run on Node.js version >= 10')
+
+// Old date
+assert.equal(
+ formatRFC3339(new Date(1986, 3, 4, 10, 33, 1)),
+ '1986-04-04T10:33:01+02:00'
+)
+
+// Standard time (Warsaw have +01:00)
+assert.equal(
+ formatRFC3339(new Date(2020, 0, 23, 5, 0, 54)),
+ '2020-01-23T05:00:54+01:00'
+)
+
+// Summer time (Warsaw have +02:00)
+assert.equal(
+ formatRFC3339(new Date(2020, 6, 30, 20, 59, 1)),
+ '2020-07-30T20:59:01+02:00'
+)
diff --git a/date-fns/testWithoutLocales.js b/date-fns/testWithoutLocales.js
new file mode 100644
index 0000000..3552b7b
--- /dev/null
+++ b/date-fns/testWithoutLocales.js
@@ -0,0 +1,7 @@
+var testsContext = require.context('./src/', true, /\/test\.js$/)
+testsContext
+ .keys()
+ .filter(function (test) {
+ return !test.match(/\.\/locale\//)
+ })
+ .forEach(testsContext)
diff --git a/date-fns/tsconfig.json b/date-fns/tsconfig.json
new file mode 100644
index 0000000..0b07ae8
--- /dev/null
+++ b/date-fns/tsconfig.json
@@ -0,0 +1,21 @@
+{
+ "compilerOptions": {
+ "target": "es6",
+ "lib": ["dom", "es2017", "es2018.promise"],
+ "strict": true,
+ "moduleResolution": "node",
+ "noUnusedLocals": true,
+ "noUnusedParameters": true,
+ "noFallthroughCasesInSwitch": true,
+ "noImplicitReturns": true,
+ "noImplicitAny": true,
+ "noImplicitThis": true,
+ "strictNullChecks": true,
+ "importHelpers": true,
+ "baseUrl": ".",
+ "allowSyntheticDefaultImports": true,
+ "esModuleInterop": true,
+ "allowJs": true
+ },
+ "exclude": ["node_modules", "dist", "tmp"]
+}
diff --git a/date-fns/typings.d.ts b/date-fns/typings.d.ts
new file mode 100644
index 0000000..f80022c
--- /dev/null
+++ b/date-fns/typings.d.ts
@@ -0,0 +1,22036 @@
+// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it.
+
+// FP Interfaces
+
+interface CurriedFn1<A, R> {
+ (a: A): R
+}
+
+interface CurriedFn2<A, B, R> {
+ (a: A): CurriedFn1<B, R>
+ (a: A, b: B): R
+}
+
+interface CurriedFn3<A, B, C, R> {
+ (a: A): CurriedFn2<B, C, R>
+ (a: A, b: B): CurriedFn1<C, R>
+ (a: A, b: B, c: C): R
+}
+
+interface CurriedFn4<A, B, C, D, R> {
+ (a: A): CurriedFn3<B, C, D, R>
+ (a: A, b: B): CurriedFn2<C, D, R>
+ (a: A, b: B, c: C): CurriedFn1<D, R>
+ (a: A, b: B, c: C, d: D): R
+}
+
+// Type Aliases
+
+type Interval = {
+ start: Date | number
+ end: Date | number
+}
+type IntervalAliased = Interval
+
+type Locale = {
+ code?: string
+ formatDistance?: (...args: Array<any>) => any
+ formatRelative?: (...args: Array<any>) => any
+ localize?: {
+ ordinalNumber: (...args: Array<any>) => any
+ era: (...args: Array<any>) => any
+ quarter: (...args: Array<any>) => any
+ month: (...args: Array<any>) => any
+ day: (...args: Array<any>) => any
+ dayPeriod: (...args: Array<any>) => any
+ }
+ formatLong?: {
+ date: (...args: Array<any>) => any
+ time: (...args: Array<any>) => any
+ dateTime: (...args: Array<any>) => any
+ }
+ match?: {
+ ordinalNumber: (...args: Array<any>) => any
+ era: (...args: Array<any>) => any
+ quarter: (...args: Array<any>) => any
+ month: (...args: Array<any>) => any
+ day: (...args: Array<any>) => any
+ dayPeriod: (...args: Array<any>) => any
+ }
+ options?: {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7
+ }
+}
+type LocaleAliased = Locale
+
+type Duration = {
+ years?: number
+ months?: number
+ weeks?: number
+ days?: number
+ hours?: number
+ minutes?: number
+ seconds?: number
+}
+type DurationAliased = Duration
+
+type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6
+type DayAliased = Day
+
+// Exported Type Aliases
+
+declare module 'date-fns' {
+ export type Interval = IntervalAliased
+
+ export type Locale = LocaleAliased
+
+ export type Duration = DurationAliased
+
+ export type Day = DayAliased
+}
+
+// Regular Functions
+
+declare module 'date-fns' {
+ function add(date: Date | number, duration: Duration): Date
+ namespace add {}
+
+ function addBusinessDays(date: Date | number, amount: number): Date
+ namespace addBusinessDays {}
+
+ function addDays(date: Date | number, amount: number): Date
+ namespace addDays {}
+
+ function addHours(date: Date | number, amount: number): Date
+ namespace addHours {}
+
+ function addISOWeekYears(date: Date | number, amount: number): Date
+ namespace addISOWeekYears {}
+
+ function addMilliseconds(date: Date | number, amount: number): Date
+ namespace addMilliseconds {}
+
+ function addMinutes(date: Date | number, amount: number): Date
+ namespace addMinutes {}
+
+ function addMonths(date: Date | number, amount: number): Date
+ namespace addMonths {}
+
+ function addQuarters(date: Date | number, amount: number): Date
+ namespace addQuarters {}
+
+ function addSeconds(date: Date | number, amount: number): Date
+ namespace addSeconds {}
+
+ function addWeeks(date: Date | number, amount: number): Date
+ namespace addWeeks {}
+
+ function addYears(date: Date | number, amount: number): Date
+ namespace addYears {}
+
+ function areIntervalsOverlapping(
+ intervalLeft: Interval,
+ intervalRight: Interval,
+ options?: {
+ inclusive?: boolean
+ }
+ ): boolean
+ namespace areIntervalsOverlapping {}
+
+ function closestIndexTo(
+ dateToCompare: Date | number,
+ datesArray: (Date | number)[]
+ ): number
+ namespace closestIndexTo {}
+
+ function closestTo(
+ dateToCompare: Date | number,
+ datesArray: (Date | number)[]
+ ): Date
+ namespace closestTo {}
+
+ function compareAsc(dateLeft: Date | number, dateRight: Date | number): number
+ namespace compareAsc {}
+
+ function compareDesc(
+ dateLeft: Date | number,
+ dateRight: Date | number
+ ): number
+ namespace compareDesc {}
+
+ function daysToWeeks(days: number): number
+ namespace daysToWeeks {}
+
+ function differenceInBusinessDays(
+ dateLeft: Date | number,
+ dateRight: Date | number
+ ): number
+ namespace differenceInBusinessDays {}
+
+ function differenceInCalendarDays(
+ dateLeft: Date | number,
+ dateRight: Date | number
+ ): number
+ namespace differenceInCalendarDays {}
+
+ function differenceInCalendarISOWeeks(
+ dateLeft: Date | number,
+ dateRight: Date | number
+ ): number
+ namespace differenceInCalendarISOWeeks {}
+
+ function differenceInCalendarISOWeekYears(
+ dateLeft: Date | number,
+ dateRight: Date | number
+ ): number
+ namespace differenceInCalendarISOWeekYears {}
+
+ function differenceInCalendarMonths(
+ dateLeft: Date | number,
+ dateRight: Date | number
+ ): number
+ namespace differenceInCalendarMonths {}
+
+ function differenceInCalendarQuarters(
+ dateLeft: Date | number,
+ dateRight: Date | number
+ ): number
+ namespace differenceInCalendarQuarters {}
+
+ function differenceInCalendarWeeks(
+ dateLeft: Date | number,
+ dateRight: Date | number,
+ options?: {
+ locale?: Locale
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6
+ }
+ ): number
+ namespace differenceInCalendarWeeks {}
+
+ function differenceInCalendarYears(
+ dateLeft: Date | number,
+ dateRight: Date | number
+ ): number
+ namespace differenceInCalendarYears {}
+
+ function differenceInDays(
+ dateLeft: Date | number,
+ dateRight: Date | number
+ ): number
+ namespace differenceInDays {}
+
+ function differenceInHours(
+ dateLeft: Date | number,
+ dateRight: Date | number
+ ): number
+ namespace differenceInHours {}
+
+ function differenceInISOWeekYears(
+ dateLeft: Date | number,
+ dateRight: Date | number
+ ): number
+ namespace differenceInISOWeekYears {}
+
+ function differenceInMilliseconds(
+ dateLeft: Date | number,
+ dateRight: Date | number
+ ): number
+ namespace differenceInMilliseconds {}
+
+ function differenceInMinutes(
+ dateLeft: Date | number,
+ dateRight: Date | number
+ ): number
+ namespace differenceInMinutes {}
+
+ function differenceInMonths(
+ dateLeft: Date | number,
+ dateRight: Date | number
+ ): number
+ namespace differenceInMonths {}
+
+ function differenceInQuarters(
+ dateLeft: Date | number,
+ dateRight: Date | number
+ ): number
+ namespace differenceInQuarters {}
+
+ function differenceInSeconds(
+ dateLeft: Date | number,
+ dateRight: Date | number
+ ): number
+ namespace differenceInSeconds {}
+
+ function differenceInWeeks(
+ dateLeft: Date | number,
+ dateRight: Date | number
+ ): number
+ namespace differenceInWeeks {}
+
+ function differenceInYears(
+ dateLeft: Date | number,
+ dateRight: Date | number
+ ): number
+ namespace differenceInYears {}
+
+ function eachDayOfInterval(
+ interval: Interval,
+ options?: {
+ step?: number
+ }
+ ): Date[]
+ namespace eachDayOfInterval {}
+
+ function eachHourOfInterval(
+ interval: Interval,
+ options?: {
+ step?: number
+ }
+ ): Date[]
+ namespace eachHourOfInterval {}
+
+ function eachMinuteOfInterval(
+ interval: Interval,
+ options?: {
+ step?: number
+ }
+ ): Date[]
+ namespace eachMinuteOfInterval {}
+
+ function eachMonthOfInterval(interval: Interval): Date[]
+ namespace eachMonthOfInterval {}
+
+ function eachQuarterOfInterval(interval: Interval): Date[]
+ namespace eachQuarterOfInterval {}
+
+ function eachWeekendOfInterval(interval: Interval): Date[]
+ namespace eachWeekendOfInterval {}
+
+ function eachWeekendOfMonth(date: Date | number): Date[]
+ namespace eachWeekendOfMonth {}
+
+ function eachWeekendOfYear(date: Date | number): Date[]
+ namespace eachWeekendOfYear {}
+
+ function eachWeekOfInterval(
+ interval: Interval,
+ options?: {
+ locale?: Locale
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6
+ }
+ ): Date[]
+ namespace eachWeekOfInterval {}
+
+ function eachYearOfInterval(interval: Interval): Date[]
+ namespace eachYearOfInterval {}
+
+ function endOfDay(date: Date | number): Date
+ namespace endOfDay {}
+
+ function endOfDecade(
+ date: Date | number,
+ options?: {
+ additionalDigits?: 0 | 1 | 2
+ }
+ ): Date
+ namespace endOfDecade {}
+
+ function endOfHour(date: Date | number): Date
+ namespace endOfHour {}
+
+ function endOfISOWeek(date: Date | number): Date
+ namespace endOfISOWeek {}
+
+ function endOfISOWeekYear(date: Date | number): Date
+ namespace endOfISOWeekYear {}
+
+ function endOfMinute(date: Date | number): Date
+ namespace endOfMinute {}
+
+ function endOfMonth(date: Date | number): Date
+ namespace endOfMonth {}
+
+ function endOfQuarter(date: Date | number): Date
+ namespace endOfQuarter {}
+
+ function endOfSecond(date: Date | number): Date
+ namespace endOfSecond {}
+
+ function endOfToday(): Date
+ namespace endOfToday {}
+
+ function endOfTomorrow(): Date
+ namespace endOfTomorrow {}
+
+ function endOfWeek(
+ date: Date | number,
+ options?: {
+ locale?: Locale
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6
+ }
+ ): Date
+ namespace endOfWeek {}
+
+ function endOfYear(date: Date | number): Date
+ namespace endOfYear {}
+
+ function endOfYesterday(): Date
+ namespace endOfYesterday {}
+
+ function format(
+ date: Date | number,
+ format: string,
+ options?: {
+ locale?: Locale
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6
+ firstWeekContainsDate?: number
+ useAdditionalWeekYearTokens?: boolean
+ useAdditionalDayOfYearTokens?: boolean
+ }
+ ): string
+ namespace format {}
+
+ function formatDistance(
+ date: Date | number,
+ baseDate: Date | number,
+ options?: {
+ includeSeconds?: boolean
+ addSuffix?: boolean
+ locale?: Locale
+ }
+ ): string
+ namespace formatDistance {}
+
+ function formatDistanceStrict(
+ date: Date | number,
+ baseDate: Date | number,
+ options?: {
+ addSuffix?: boolean
+ unit?: 'second' | 'minute' | 'hour' | 'day' | 'month' | 'year'
+ roundingMethod?: 'floor' | 'ceil' | 'round'
+ locale?: Locale
+ }
+ ): string
+ namespace formatDistanceStrict {}
+
+ function formatDistanceToNow(
+ date: Date | number,
+ options?: {
+ includeSeconds?: boolean
+ addSuffix?: boolean
+ locale?: Locale
+ }
+ ): string
+ namespace formatDistanceToNow {}
+
+ function formatDistanceToNowStrict(
+ date: Date | number,
+ options?: {
+ addSuffix?: boolean
+ unit?: 'second' | 'minute' | 'hour' | 'day' | 'month' | 'year'
+ roundingMethod?: 'floor' | 'ceil' | 'round'
+ locale?: Locale
+ }
+ ): string
+ namespace formatDistanceToNowStrict {}
+
+ function formatDuration(
+ duration: Duration,
+ options?: {
+ format?: string[]
+ zero?: boolean
+ delimiter?: string
+ locale?: Locale
+ }
+ ): string
+ namespace formatDuration {}
+
+ function formatISO(
+ date: Date | number,
+ options?: {
+ format?: 'extended' | 'basic'
+ representation?: 'complete' | 'date' | 'time'
+ }
+ ): string
+ namespace formatISO {}
+
+ function formatISO9075(
+ date: Date | number,
+ options?: {
+ format?: 'extended' | 'basic'
+ representation?: 'complete' | 'date' | 'time'
+ }
+ ): string
+ namespace formatISO9075 {}
+
+ function formatISODuration(duration: Duration): string
+ namespace formatISODuration {}
+
+ function formatRelative(
+ date: Date | number,
+ baseDate: Date | number,
+ options?: {
+ locale?: Locale
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6
+ }
+ ): string
+ namespace formatRelative {}
+
+ function formatRFC3339(
+ date: Date | number,
+ options?: {
+ fractionDigits?: 0 | 1 | 2 | 3
+ }
+ ): string
+ namespace formatRFC3339 {}
+
+ function formatRFC7231(date: Date | number): string
+ namespace formatRFC7231 {}
+
+ function fromUnixTime(unixTime: number): Date
+ namespace fromUnixTime {}
+
+ function getDate(date: Date | number): number
+ namespace getDate {}
+
+ function getDay(date: Date | number): 0 | 1 | 2 | 3 | 4 | 5 | 6
+ namespace getDay {}
+
+ function getDayOfYear(date: Date | number): number
+ namespace getDayOfYear {}
+
+ function getDaysInMonth(date: Date | number): number
+ namespace getDaysInMonth {}
+
+ function getDaysInYear(date: Date | number): number
+ namespace getDaysInYear {}
+
+ function getDecade(date: Date | number): number
+ namespace getDecade {}
+
+ function getHours(date: Date | number): number
+ namespace getHours {}
+
+ function getISODay(date: Date | number): number
+ namespace getISODay {}
+
+ function getISOWeek(date: Date | number): number
+ namespace getISOWeek {}
+
+ function getISOWeeksInYear(date: Date | number): number
+ namespace getISOWeeksInYear {}
+
+ function getISOWeekYear(date: Date | number): number
+ namespace getISOWeekYear {}
+
+ function getMilliseconds(date: Date | number): number
+ namespace getMilliseconds {}
+
+ function getMinutes(date: Date | number): number
+ namespace getMinutes {}
+
+ function getMonth(date: Date | number): number
+ namespace getMonth {}
+
+ function getOverlappingDaysInIntervals(
+ intervalLeft: Interval,
+ intervalRight: Interval
+ ): number
+ namespace getOverlappingDaysInIntervals {}
+
+ function getQuarter(date: Date | number): number
+ namespace getQuarter {}
+
+ function getSeconds(date: Date | number): number
+ namespace getSeconds {}
+
+ function getTime(date: Date | number): number
+ namespace getTime {}
+
+ function getUnixTime(date: Date | number): number
+ namespace getUnixTime {}
+
+ function getWeek(
+ date: Date | number,
+ options?: {
+ locale?: Locale
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7
+ }
+ ): number
+ namespace getWeek {}
+
+ function getWeekOfMonth(
+ date: Date | number,
+ options?: {
+ locale?: Locale
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6
+ }
+ ): number
+ namespace getWeekOfMonth {}
+
+ function getWeeksInMonth(
+ date: Date | number,
+ options?: {
+ locale?: Locale
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6
+ }
+ ): number
+ namespace getWeeksInMonth {}
+
+ function getWeekYear(
+ date: Date | number,
+ options?: {
+ locale?: Locale
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7
+ }
+ ): number
+ namespace getWeekYear {}
+
+ function getYear(date: Date | number): number
+ namespace getYear {}
+
+ function hoursToMilliseconds(hours: number): number
+ namespace hoursToMilliseconds {}
+
+ function hoursToMinutes(hours: number): number
+ namespace hoursToMinutes {}
+
+ function hoursToSeconds(hours: number): number
+ namespace hoursToSeconds {}
+
+ function intervalToDuration(interval: Interval): Duration
+ namespace intervalToDuration {}
+
+ function intlFormat(
+ argument: Date | number,
+ formatOptions?: {
+ localeMatcher?: 'lookup' | 'best fit'
+ weekday?: 'narrow' | 'short' | 'long'
+ era?: 'narrow' | 'short' | 'long'
+ year?: 'numeric' | '2-digit'
+ month?: 'numeric' | '2-digit' | 'narrow' | 'short' | 'long'
+ day?: 'numeric' | '2-digit'
+ hour?: 'numeric' | '2-digit'
+ minute?: 'numeric' | '2-digit'
+ second?: 'numeric' | '2-digit'
+ timeZoneName?: 'short' | 'long'
+ formatMatcher?: 'basic' | 'best fit'
+ hour12?: boolean
+ timeZone?: string
+ },
+ localeOptions?: {
+ locale?: string | string[]
+ }
+ ): string
+ namespace intlFormat {}
+
+ function isAfter(date: Date | number, dateToCompare: Date | number): boolean
+ namespace isAfter {}
+
+ function isBefore(date: Date | number, dateToCompare: Date | number): boolean
+ namespace isBefore {}
+
+ function isDate(value: any): boolean
+ namespace isDate {}
+
+ function isEqual(dateLeft: Date | number, dateRight: Date | number): boolean
+ namespace isEqual {}
+
+ function isExists(year: number, month: number, day: number): boolean
+ namespace isExists {}
+
+ function isFirstDayOfMonth(date: Date | number): boolean
+ namespace isFirstDayOfMonth {}
+
+ function isFriday(date: Date | number): boolean
+ namespace isFriday {}
+
+ function isFuture(date: Date | number): boolean
+ namespace isFuture {}
+
+ function isLastDayOfMonth(date: Date | number): boolean
+ namespace isLastDayOfMonth {}
+
+ function isLeapYear(date: Date | number): boolean
+ namespace isLeapYear {}
+
+ function isMatch(
+ dateString: string,
+ formatString: string,
+ options?: {
+ locale?: Locale
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7
+ useAdditionalWeekYearTokens?: boolean
+ useAdditionalDayOfYearTokens?: boolean
+ }
+ ): boolean
+ namespace isMatch {}
+
+ function isMonday(date: Date | number): boolean
+ namespace isMonday {}
+
+ function isPast(date: Date | number): boolean
+ namespace isPast {}
+
+ function isSameDay(dateLeft: Date | number, dateRight: Date | number): boolean
+ namespace isSameDay {}
+
+ function isSameHour(
+ dateLeft: Date | number,
+ dateRight: Date | number
+ ): boolean
+ namespace isSameHour {}
+
+ function isSameISOWeek(
+ dateLeft: Date | number,
+ dateRight: Date | number
+ ): boolean
+ namespace isSameISOWeek {}
+
+ function isSameISOWeekYear(
+ dateLeft: Date | number,
+ dateRight: Date | number
+ ): boolean
+ namespace isSameISOWeekYear {}
+
+ function isSameMinute(
+ dateLeft: Date | number,
+ dateRight: Date | number
+ ): boolean
+ namespace isSameMinute {}
+
+ function isSameMonth(
+ dateLeft: Date | number,
+ dateRight: Date | number
+ ): boolean
+ namespace isSameMonth {}
+
+ function isSameQuarter(
+ dateLeft: Date | number,
+ dateRight: Date | number
+ ): boolean
+ namespace isSameQuarter {}
+
+ function isSameSecond(
+ dateLeft: Date | number,
+ dateRight: Date | number
+ ): boolean
+ namespace isSameSecond {}
+
+ function isSameWeek(
+ dateLeft: Date | number,
+ dateRight: Date | number,
+ options?: {
+ locale?: Locale
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6
+ }
+ ): boolean
+ namespace isSameWeek {}
+
+ function isSameYear(
+ dateLeft: Date | number,
+ dateRight: Date | number
+ ): boolean
+ namespace isSameYear {}
+
+ function isSaturday(date: Date | number): boolean
+ namespace isSaturday {}
+
+ function isSunday(date: Date | number): boolean
+ namespace isSunday {}
+
+ function isThisHour(date: Date | number): boolean
+ namespace isThisHour {}
+
+ function isThisISOWeek(date: Date | number): boolean
+ namespace isThisISOWeek {}
+
+ function isThisMinute(date: Date | number): boolean
+ namespace isThisMinute {}
+
+ function isThisMonth(date: Date | number): boolean
+ namespace isThisMonth {}
+
+ function isThisQuarter(date: Date | number): boolean
+ namespace isThisQuarter {}
+
+ function isThisSecond(date: Date | number): boolean
+ namespace isThisSecond {}
+
+ function isThisWeek(
+ date: Date | number,
+ options?: {
+ locale?: Locale
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6
+ }
+ ): boolean
+ namespace isThisWeek {}
+
+ function isThisYear(date: Date | number): boolean
+ namespace isThisYear {}
+
+ function isThursday(date: Date | number): boolean
+ namespace isThursday {}
+
+ function isToday(date: Date | number): boolean
+ namespace isToday {}
+
+ function isTomorrow(date: Date | number): boolean
+ namespace isTomorrow {}
+
+ function isTuesday(date: Date | number): boolean
+ namespace isTuesday {}
+
+ function isValid(date: any): boolean
+ namespace isValid {}
+
+ function isWednesday(date: Date | number): boolean
+ namespace isWednesday {}
+
+ function isWeekend(date: Date | number): boolean
+ namespace isWeekend {}
+
+ function isWithinInterval(date: Date | number, interval: Interval): boolean
+ namespace isWithinInterval {}
+
+ function isYesterday(date: Date | number): boolean
+ namespace isYesterday {}
+
+ function lastDayOfDecade(date: Date | number): Date
+ namespace lastDayOfDecade {}
+
+ function lastDayOfISOWeek(date: Date | number): Date
+ namespace lastDayOfISOWeek {}
+
+ function lastDayOfISOWeekYear(date: Date | number): Date
+ namespace lastDayOfISOWeekYear {}
+
+ function lastDayOfMonth(date: Date | number): Date
+ namespace lastDayOfMonth {}
+
+ function lastDayOfQuarter(
+ date: Date | number,
+ options?: {
+ additionalDigits?: 0 | 1 | 2
+ }
+ ): Date
+ namespace lastDayOfQuarter {}
+
+ function lastDayOfWeek(
+ date: Date | number,
+ options?: {
+ locale?: Locale
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6
+ }
+ ): Date
+ namespace lastDayOfWeek {}
+
+ function lastDayOfYear(date: Date | number): Date
+ namespace lastDayOfYear {}
+
+ function lightFormat(date: Date | number, format: string): string
+ namespace lightFormat {}
+
+ function max(datesArray: (Date | number)[]): Date
+ namespace max {}
+
+ function milliseconds(duration: Duration): number
+ namespace milliseconds {}
+
+ function millisecondsToHours(milliseconds: number): number
+ namespace millisecondsToHours {}
+
+ function millisecondsToMinutes(milliseconds: number): number
+ namespace millisecondsToMinutes {}
+
+ function millisecondsToSeconds(milliseconds: number): number
+ namespace millisecondsToSeconds {}
+
+ function min(datesArray: (Date | number)[]): Date
+ namespace min {}
+
+ function minutesToHours(minutes: number): number
+ namespace minutesToHours {}
+
+ function minutesToMilliseconds(minutes: number): number
+ namespace minutesToMilliseconds {}
+
+ function minutesToSeconds(minutes: number): number
+ namespace minutesToSeconds {}
+
+ function monthsToQuarters(months: number): number
+ namespace monthsToQuarters {}
+
+ function monthsToYears(months: number): number
+ namespace monthsToYears {}
+
+ function nextDay(date: Date | number, day: Day): Date
+ namespace nextDay {}
+
+ function nextFriday(date: Date | number): Date
+ namespace nextFriday {}
+
+ function nextMonday(date: Date | number): Date
+ namespace nextMonday {}
+
+ function nextSaturday(date: Date | number): Date
+ namespace nextSaturday {}
+
+ function nextSunday(date: Date | number): Date
+ namespace nextSunday {}
+
+ function nextThursday(date: Date | number): Date
+ namespace nextThursday {}
+
+ function nextTuesday(date: Date | number): Date
+ namespace nextTuesday {}
+
+ function nextWednesday(date: Date | number): Date
+ namespace nextWednesday {}
+
+ function parse(
+ dateString: string,
+ formatString: string,
+ referenceDate: Date | number,
+ options?: {
+ locale?: Locale
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7
+ useAdditionalWeekYearTokens?: boolean
+ useAdditionalDayOfYearTokens?: boolean
+ }
+ ): Date
+ namespace parse {}
+
+ function parseISO(
+ argument: string,
+ options?: {
+ additionalDigits?: 0 | 1 | 2
+ }
+ ): Date
+ namespace parseISO {}
+
+ function parseJSON(argument: string | number | Date): Date
+ namespace parseJSON {}
+
+ function quartersToMonths(quarters: number): number
+ namespace quartersToMonths {}
+
+ function quartersToYears(quarters: number): number
+ namespace quartersToYears {}
+
+ function roundToNearestMinutes(
+ date: Date | number,
+ options?: {
+ nearestTo?: number
+ }
+ ): Date
+ namespace roundToNearestMinutes {}
+
+ function secondsToHours(seconds: number): number
+ namespace secondsToHours {}
+
+ function secondsToMilliseconds(seconds: number): number
+ namespace secondsToMilliseconds {}
+
+ function secondsToMinutes(seconds: number): number
+ namespace secondsToMinutes {}
+
+ function set(
+ date: Date | number,
+ values: {
+ year?: number
+ month?: number
+ date?: number
+ hours?: number
+ minutes?: number
+ seconds?: number
+ milliseconds?: number
+ }
+ ): Date
+ namespace set {}
+
+ function setDate(date: Date | number, dayOfMonth: number): Date
+ namespace setDate {}
+
+ function setDay(
+ date: Date | number,
+ day: number,
+ options?: {
+ locale?: Locale
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6
+ }
+ ): Date
+ namespace setDay {}
+
+ function setDayOfYear(date: Date | number, dayOfYear: number): Date
+ namespace setDayOfYear {}
+
+ function setHours(date: Date | number, hours: number): Date
+ namespace setHours {}
+
+ function setISODay(date: Date | number, day: number): Date
+ namespace setISODay {}
+
+ function setISOWeek(date: Date | number, isoWeek: number): Date
+ namespace setISOWeek {}
+
+ function setISOWeekYear(date: Date | number, isoWeekYear: number): Date
+ namespace setISOWeekYear {}
+
+ function setMilliseconds(date: Date | number, milliseconds: number): Date
+ namespace setMilliseconds {}
+
+ function setMinutes(date: Date | number, minutes: number): Date
+ namespace setMinutes {}
+
+ function setMonth(date: Date | number, month: number): Date
+ namespace setMonth {}
+
+ function setQuarter(date: Date | number, quarter: number): Date
+ namespace setQuarter {}
+
+ function setSeconds(date: Date | number, seconds: number): Date
+ namespace setSeconds {}
+
+ function setWeek(
+ date: Date | number,
+ week: number,
+ options?: {
+ locale?: Locale
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7
+ }
+ ): Date
+ namespace setWeek {}
+
+ function setWeekYear(
+ date: Date | number,
+ weekYear: number,
+ options?: {
+ locale?: Locale
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7
+ }
+ ): Date
+ namespace setWeekYear {}
+
+ function setYear(date: Date | number, year: number): Date
+ namespace setYear {}
+
+ function startOfDay(date: Date | number): Date
+ namespace startOfDay {}
+
+ function startOfDecade(date: Date | number): Date
+ namespace startOfDecade {}
+
+ function startOfHour(date: Date | number): Date
+ namespace startOfHour {}
+
+ function startOfISOWeek(date: Date | number): Date
+ namespace startOfISOWeek {}
+
+ function startOfISOWeekYear(date: Date | number): Date
+ namespace startOfISOWeekYear {}
+
+ function startOfMinute(date: Date | number): Date
+ namespace startOfMinute {}
+
+ function startOfMonth(date: Date | number): Date
+ namespace startOfMonth {}
+
+ function startOfQuarter(date: Date | number): Date
+ namespace startOfQuarter {}
+
+ function startOfSecond(date: Date | number): Date
+ namespace startOfSecond {}
+
+ function startOfToday(): Date
+ namespace startOfToday {}
+
+ function startOfTomorrow(): Date
+ namespace startOfTomorrow {}
+
+ function startOfWeek(
+ date: Date | number,
+ options?: {
+ locale?: Locale
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6
+ }
+ ): Date
+ namespace startOfWeek {}
+
+ function startOfWeekYear(
+ date: Date | number,
+ options?: {
+ locale?: Locale
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7
+ }
+ ): Date
+ namespace startOfWeekYear {}
+
+ function startOfYear(date: Date | number): Date
+ namespace startOfYear {}
+
+ function startOfYesterday(): Date
+ namespace startOfYesterday {}
+
+ function sub(date: Date | number, duration: Duration): Date
+ namespace sub {}
+
+ function subBusinessDays(date: Date | number, amount: number): Date
+ namespace subBusinessDays {}
+
+ function subDays(date: Date | number, amount: number): Date
+ namespace subDays {}
+
+ function subHours(date: Date | number, amount: number): Date
+ namespace subHours {}
+
+ function subISOWeekYears(date: Date | number, amount: number): Date
+ namespace subISOWeekYears {}
+
+ function subMilliseconds(date: Date | number, amount: number): Date
+ namespace subMilliseconds {}
+
+ function subMinutes(date: Date | number, amount: number): Date
+ namespace subMinutes {}
+
+ function subMonths(date: Date | number, amount: number): Date
+ namespace subMonths {}
+
+ function subQuarters(date: Date | number, amount: number): Date
+ namespace subQuarters {}
+
+ function subSeconds(date: Date | number, amount: number): Date
+ namespace subSeconds {}
+
+ function subWeeks(date: Date | number, amount: number): Date
+ namespace subWeeks {}
+
+ function subYears(date: Date | number, amount: number): Date
+ namespace subYears {}
+
+ function toDate(argument: Date | number): Date
+ namespace toDate {}
+
+ function weeksToDays(weeks: number): number
+ namespace weeksToDays {}
+
+ function yearsToMonths(years: number): number
+ namespace yearsToMonths {}
+
+ function yearsToQuarters(years: number): number
+ namespace yearsToQuarters {}
+
+ const daysInWeek: number
+
+ const maxTime: number
+
+ const millisecondsInMinute: number
+
+ const millisecondsInHour: number
+
+ const millisecondsInSecond: number
+
+ const minTime: number
+
+ const minutesInHour: number
+
+ const monthsInQuarter: number
+
+ const monthsInYear: number
+
+ const quartersInYear: number
+
+ const secondsInHour: number
+
+ const secondsInMinute: number
+}
+
+declare module 'date-fns/add' {
+ import { add } from 'date-fns'
+ export default add
+}
+
+declare module 'date-fns/addBusinessDays' {
+ import { addBusinessDays } from 'date-fns'
+ export default addBusinessDays
+}
+
+declare module 'date-fns/addDays' {
+ import { addDays } from 'date-fns'
+ export default addDays
+}
+
+declare module 'date-fns/addHours' {
+ import { addHours } from 'date-fns'
+ export default addHours
+}
+
+declare module 'date-fns/addISOWeekYears' {
+ import { addISOWeekYears } from 'date-fns'
+ export default addISOWeekYears
+}
+
+declare module 'date-fns/addMilliseconds' {
+ import { addMilliseconds } from 'date-fns'
+ export default addMilliseconds
+}
+
+declare module 'date-fns/addMinutes' {
+ import { addMinutes } from 'date-fns'
+ export default addMinutes
+}
+
+declare module 'date-fns/addMonths' {
+ import { addMonths } from 'date-fns'
+ export default addMonths
+}
+
+declare module 'date-fns/addQuarters' {
+ import { addQuarters } from 'date-fns'
+ export default addQuarters
+}
+
+declare module 'date-fns/addSeconds' {
+ import { addSeconds } from 'date-fns'
+ export default addSeconds
+}
+
+declare module 'date-fns/addWeeks' {
+ import { addWeeks } from 'date-fns'
+ export default addWeeks
+}
+
+declare module 'date-fns/addYears' {
+ import { addYears } from 'date-fns'
+ export default addYears
+}
+
+declare module 'date-fns/areIntervalsOverlapping' {
+ import { areIntervalsOverlapping } from 'date-fns'
+ export default areIntervalsOverlapping
+}
+
+declare module 'date-fns/closestIndexTo' {
+ import { closestIndexTo } from 'date-fns'
+ export default closestIndexTo
+}
+
+declare module 'date-fns/closestTo' {
+ import { closestTo } from 'date-fns'
+ export default closestTo
+}
+
+declare module 'date-fns/compareAsc' {
+ import { compareAsc } from 'date-fns'
+ export default compareAsc
+}
+
+declare module 'date-fns/compareDesc' {
+ import { compareDesc } from 'date-fns'
+ export default compareDesc
+}
+
+declare module 'date-fns/daysToWeeks' {
+ import { daysToWeeks } from 'date-fns'
+ export default daysToWeeks
+}
+
+declare module 'date-fns/differenceInBusinessDays' {
+ import { differenceInBusinessDays } from 'date-fns'
+ export default differenceInBusinessDays
+}
+
+declare module 'date-fns/differenceInCalendarDays' {
+ import { differenceInCalendarDays } from 'date-fns'
+ export default differenceInCalendarDays
+}
+
+declare module 'date-fns/differenceInCalendarISOWeeks' {
+ import { differenceInCalendarISOWeeks } from 'date-fns'
+ export default differenceInCalendarISOWeeks
+}
+
+declare module 'date-fns/differenceInCalendarISOWeekYears' {
+ import { differenceInCalendarISOWeekYears } from 'date-fns'
+ export default differenceInCalendarISOWeekYears
+}
+
+declare module 'date-fns/differenceInCalendarMonths' {
+ import { differenceInCalendarMonths } from 'date-fns'
+ export default differenceInCalendarMonths
+}
+
+declare module 'date-fns/differenceInCalendarQuarters' {
+ import { differenceInCalendarQuarters } from 'date-fns'
+ export default differenceInCalendarQuarters
+}
+
+declare module 'date-fns/differenceInCalendarWeeks' {
+ import { differenceInCalendarWeeks } from 'date-fns'
+ export default differenceInCalendarWeeks
+}
+
+declare module 'date-fns/differenceInCalendarYears' {
+ import { differenceInCalendarYears } from 'date-fns'
+ export default differenceInCalendarYears
+}
+
+declare module 'date-fns/differenceInDays' {
+ import { differenceInDays } from 'date-fns'
+ export default differenceInDays
+}
+
+declare module 'date-fns/differenceInHours' {
+ import { differenceInHours } from 'date-fns'
+ export default differenceInHours
+}
+
+declare module 'date-fns/differenceInISOWeekYears' {
+ import { differenceInISOWeekYears } from 'date-fns'
+ export default differenceInISOWeekYears
+}
+
+declare module 'date-fns/differenceInMilliseconds' {
+ import { differenceInMilliseconds } from 'date-fns'
+ export default differenceInMilliseconds
+}
+
+declare module 'date-fns/differenceInMinutes' {
+ import { differenceInMinutes } from 'date-fns'
+ export default differenceInMinutes
+}
+
+declare module 'date-fns/differenceInMonths' {
+ import { differenceInMonths } from 'date-fns'
+ export default differenceInMonths
+}
+
+declare module 'date-fns/differenceInQuarters' {
+ import { differenceInQuarters } from 'date-fns'
+ export default differenceInQuarters
+}
+
+declare module 'date-fns/differenceInSeconds' {
+ import { differenceInSeconds } from 'date-fns'
+ export default differenceInSeconds
+}
+
+declare module 'date-fns/differenceInWeeks' {
+ import { differenceInWeeks } from 'date-fns'
+ export default differenceInWeeks
+}
+
+declare module 'date-fns/differenceInYears' {
+ import { differenceInYears } from 'date-fns'
+ export default differenceInYears
+}
+
+declare module 'date-fns/eachDayOfInterval' {
+ import { eachDayOfInterval } from 'date-fns'
+ export default eachDayOfInterval
+}
+
+declare module 'date-fns/eachHourOfInterval' {
+ import { eachHourOfInterval } from 'date-fns'
+ export default eachHourOfInterval
+}
+
+declare module 'date-fns/eachMinuteOfInterval' {
+ import { eachMinuteOfInterval } from 'date-fns'
+ export default eachMinuteOfInterval
+}
+
+declare module 'date-fns/eachMonthOfInterval' {
+ import { eachMonthOfInterval } from 'date-fns'
+ export default eachMonthOfInterval
+}
+
+declare module 'date-fns/eachQuarterOfInterval' {
+ import { eachQuarterOfInterval } from 'date-fns'
+ export default eachQuarterOfInterval
+}
+
+declare module 'date-fns/eachWeekendOfInterval' {
+ import { eachWeekendOfInterval } from 'date-fns'
+ export default eachWeekendOfInterval
+}
+
+declare module 'date-fns/eachWeekendOfMonth' {
+ import { eachWeekendOfMonth } from 'date-fns'
+ export default eachWeekendOfMonth
+}
+
+declare module 'date-fns/eachWeekendOfYear' {
+ import { eachWeekendOfYear } from 'date-fns'
+ export default eachWeekendOfYear
+}
+
+declare module 'date-fns/eachWeekOfInterval' {
+ import { eachWeekOfInterval } from 'date-fns'
+ export default eachWeekOfInterval
+}
+
+declare module 'date-fns/eachYearOfInterval' {
+ import { eachYearOfInterval } from 'date-fns'
+ export default eachYearOfInterval
+}
+
+declare module 'date-fns/endOfDay' {
+ import { endOfDay } from 'date-fns'
+ export default endOfDay
+}
+
+declare module 'date-fns/endOfDecade' {
+ import { endOfDecade } from 'date-fns'
+ export default endOfDecade
+}
+
+declare module 'date-fns/endOfHour' {
+ import { endOfHour } from 'date-fns'
+ export default endOfHour
+}
+
+declare module 'date-fns/endOfISOWeek' {
+ import { endOfISOWeek } from 'date-fns'
+ export default endOfISOWeek
+}
+
+declare module 'date-fns/endOfISOWeekYear' {
+ import { endOfISOWeekYear } from 'date-fns'
+ export default endOfISOWeekYear
+}
+
+declare module 'date-fns/endOfMinute' {
+ import { endOfMinute } from 'date-fns'
+ export default endOfMinute
+}
+
+declare module 'date-fns/endOfMonth' {
+ import { endOfMonth } from 'date-fns'
+ export default endOfMonth
+}
+
+declare module 'date-fns/endOfQuarter' {
+ import { endOfQuarter } from 'date-fns'
+ export default endOfQuarter
+}
+
+declare module 'date-fns/endOfSecond' {
+ import { endOfSecond } from 'date-fns'
+ export default endOfSecond
+}
+
+declare module 'date-fns/endOfToday' {
+ import { endOfToday } from 'date-fns'
+ export default endOfToday
+}
+
+declare module 'date-fns/endOfTomorrow' {
+ import { endOfTomorrow } from 'date-fns'
+ export default endOfTomorrow
+}
+
+declare module 'date-fns/endOfWeek' {
+ import { endOfWeek } from 'date-fns'
+ export default endOfWeek
+}
+
+declare module 'date-fns/endOfYear' {
+ import { endOfYear } from 'date-fns'
+ export default endOfYear
+}
+
+declare module 'date-fns/endOfYesterday' {
+ import { endOfYesterday } from 'date-fns'
+ export default endOfYesterday
+}
+
+declare module 'date-fns/format' {
+ import { format } from 'date-fns'
+ export default format
+}
+
+declare module 'date-fns/formatDistance' {
+ import { formatDistance } from 'date-fns'
+ export default formatDistance
+}
+
+declare module 'date-fns/formatDistanceStrict' {
+ import { formatDistanceStrict } from 'date-fns'
+ export default formatDistanceStrict
+}
+
+declare module 'date-fns/formatDistanceToNow' {
+ import { formatDistanceToNow } from 'date-fns'
+ export default formatDistanceToNow
+}
+
+declare module 'date-fns/formatDistanceToNowStrict' {
+ import { formatDistanceToNowStrict } from 'date-fns'
+ export default formatDistanceToNowStrict
+}
+
+declare module 'date-fns/formatDuration' {
+ import { formatDuration } from 'date-fns'
+ export default formatDuration
+}
+
+declare module 'date-fns/formatISO' {
+ import { formatISO } from 'date-fns'
+ export default formatISO
+}
+
+declare module 'date-fns/formatISO9075' {
+ import { formatISO9075 } from 'date-fns'
+ export default formatISO9075
+}
+
+declare module 'date-fns/formatISODuration' {
+ import { formatISODuration } from 'date-fns'
+ export default formatISODuration
+}
+
+declare module 'date-fns/formatRelative' {
+ import { formatRelative } from 'date-fns'
+ export default formatRelative
+}
+
+declare module 'date-fns/formatRFC3339' {
+ import { formatRFC3339 } from 'date-fns'
+ export default formatRFC3339
+}
+
+declare module 'date-fns/formatRFC7231' {
+ import { formatRFC7231 } from 'date-fns'
+ export default formatRFC7231
+}
+
+declare module 'date-fns/fromUnixTime' {
+ import { fromUnixTime } from 'date-fns'
+ export default fromUnixTime
+}
+
+declare module 'date-fns/getDate' {
+ import { getDate } from 'date-fns'
+ export default getDate
+}
+
+declare module 'date-fns/getDay' {
+ import { getDay } from 'date-fns'
+ export default getDay
+}
+
+declare module 'date-fns/getDayOfYear' {
+ import { getDayOfYear } from 'date-fns'
+ export default getDayOfYear
+}
+
+declare module 'date-fns/getDaysInMonth' {
+ import { getDaysInMonth } from 'date-fns'
+ export default getDaysInMonth
+}
+
+declare module 'date-fns/getDaysInYear' {
+ import { getDaysInYear } from 'date-fns'
+ export default getDaysInYear
+}
+
+declare module 'date-fns/getDecade' {
+ import { getDecade } from 'date-fns'
+ export default getDecade
+}
+
+declare module 'date-fns/getHours' {
+ import { getHours } from 'date-fns'
+ export default getHours
+}
+
+declare module 'date-fns/getISODay' {
+ import { getISODay } from 'date-fns'
+ export default getISODay
+}
+
+declare module 'date-fns/getISOWeek' {
+ import { getISOWeek } from 'date-fns'
+ export default getISOWeek
+}
+
+declare module 'date-fns/getISOWeeksInYear' {
+ import { getISOWeeksInYear } from 'date-fns'
+ export default getISOWeeksInYear
+}
+
+declare module 'date-fns/getISOWeekYear' {
+ import { getISOWeekYear } from 'date-fns'
+ export default getISOWeekYear
+}
+
+declare module 'date-fns/getMilliseconds' {
+ import { getMilliseconds } from 'date-fns'
+ export default getMilliseconds
+}
+
+declare module 'date-fns/getMinutes' {
+ import { getMinutes } from 'date-fns'
+ export default getMinutes
+}
+
+declare module 'date-fns/getMonth' {
+ import { getMonth } from 'date-fns'
+ export default getMonth
+}
+
+declare module 'date-fns/getOverlappingDaysInIntervals' {
+ import { getOverlappingDaysInIntervals } from 'date-fns'
+ export default getOverlappingDaysInIntervals
+}
+
+declare module 'date-fns/getQuarter' {
+ import { getQuarter } from 'date-fns'
+ export default getQuarter
+}
+
+declare module 'date-fns/getSeconds' {
+ import { getSeconds } from 'date-fns'
+ export default getSeconds
+}
+
+declare module 'date-fns/getTime' {
+ import { getTime } from 'date-fns'
+ export default getTime
+}
+
+declare module 'date-fns/getUnixTime' {
+ import { getUnixTime } from 'date-fns'
+ export default getUnixTime
+}
+
+declare module 'date-fns/getWeek' {
+ import { getWeek } from 'date-fns'
+ export default getWeek
+}
+
+declare module 'date-fns/getWeekOfMonth' {
+ import { getWeekOfMonth } from 'date-fns'
+ export default getWeekOfMonth
+}
+
+declare module 'date-fns/getWeeksInMonth' {
+ import { getWeeksInMonth } from 'date-fns'
+ export default getWeeksInMonth
+}
+
+declare module 'date-fns/getWeekYear' {
+ import { getWeekYear } from 'date-fns'
+ export default getWeekYear
+}
+
+declare module 'date-fns/getYear' {
+ import { getYear } from 'date-fns'
+ export default getYear
+}
+
+declare module 'date-fns/hoursToMilliseconds' {
+ import { hoursToMilliseconds } from 'date-fns'
+ export default hoursToMilliseconds
+}
+
+declare module 'date-fns/hoursToMinutes' {
+ import { hoursToMinutes } from 'date-fns'
+ export default hoursToMinutes
+}
+
+declare module 'date-fns/hoursToSeconds' {
+ import { hoursToSeconds } from 'date-fns'
+ export default hoursToSeconds
+}
+
+declare module 'date-fns/intervalToDuration' {
+ import { intervalToDuration } from 'date-fns'
+ export default intervalToDuration
+}
+
+declare module 'date-fns/intlFormat' {
+ import { intlFormat } from 'date-fns'
+ export default intlFormat
+}
+
+declare module 'date-fns/isAfter' {
+ import { isAfter } from 'date-fns'
+ export default isAfter
+}
+
+declare module 'date-fns/isBefore' {
+ import { isBefore } from 'date-fns'
+ export default isBefore
+}
+
+declare module 'date-fns/isDate' {
+ import { isDate } from 'date-fns'
+ export default isDate
+}
+
+declare module 'date-fns/isEqual' {
+ import { isEqual } from 'date-fns'
+ export default isEqual
+}
+
+declare module 'date-fns/isExists' {
+ import { isExists } from 'date-fns'
+ export default isExists
+}
+
+declare module 'date-fns/isFirstDayOfMonth' {
+ import { isFirstDayOfMonth } from 'date-fns'
+ export default isFirstDayOfMonth
+}
+
+declare module 'date-fns/isFriday' {
+ import { isFriday } from 'date-fns'
+ export default isFriday
+}
+
+declare module 'date-fns/isFuture' {
+ import { isFuture } from 'date-fns'
+ export default isFuture
+}
+
+declare module 'date-fns/isLastDayOfMonth' {
+ import { isLastDayOfMonth } from 'date-fns'
+ export default isLastDayOfMonth
+}
+
+declare module 'date-fns/isLeapYear' {
+ import { isLeapYear } from 'date-fns'
+ export default isLeapYear
+}
+
+declare module 'date-fns/isMatch' {
+ import { isMatch } from 'date-fns'
+ export default isMatch
+}
+
+declare module 'date-fns/isMonday' {
+ import { isMonday } from 'date-fns'
+ export default isMonday
+}
+
+declare module 'date-fns/isPast' {
+ import { isPast } from 'date-fns'
+ export default isPast
+}
+
+declare module 'date-fns/isSameDay' {
+ import { isSameDay } from 'date-fns'
+ export default isSameDay
+}
+
+declare module 'date-fns/isSameHour' {
+ import { isSameHour } from 'date-fns'
+ export default isSameHour
+}
+
+declare module 'date-fns/isSameISOWeek' {
+ import { isSameISOWeek } from 'date-fns'
+ export default isSameISOWeek
+}
+
+declare module 'date-fns/isSameISOWeekYear' {
+ import { isSameISOWeekYear } from 'date-fns'
+ export default isSameISOWeekYear
+}
+
+declare module 'date-fns/isSameMinute' {
+ import { isSameMinute } from 'date-fns'
+ export default isSameMinute
+}
+
+declare module 'date-fns/isSameMonth' {
+ import { isSameMonth } from 'date-fns'
+ export default isSameMonth
+}
+
+declare module 'date-fns/isSameQuarter' {
+ import { isSameQuarter } from 'date-fns'
+ export default isSameQuarter
+}
+
+declare module 'date-fns/isSameSecond' {
+ import { isSameSecond } from 'date-fns'
+ export default isSameSecond
+}
+
+declare module 'date-fns/isSameWeek' {
+ import { isSameWeek } from 'date-fns'
+ export default isSameWeek
+}
+
+declare module 'date-fns/isSameYear' {
+ import { isSameYear } from 'date-fns'
+ export default isSameYear
+}
+
+declare module 'date-fns/isSaturday' {
+ import { isSaturday } from 'date-fns'
+ export default isSaturday
+}
+
+declare module 'date-fns/isSunday' {
+ import { isSunday } from 'date-fns'
+ export default isSunday
+}
+
+declare module 'date-fns/isThisHour' {
+ import { isThisHour } from 'date-fns'
+ export default isThisHour
+}
+
+declare module 'date-fns/isThisISOWeek' {
+ import { isThisISOWeek } from 'date-fns'
+ export default isThisISOWeek
+}
+
+declare module 'date-fns/isThisMinute' {
+ import { isThisMinute } from 'date-fns'
+ export default isThisMinute
+}
+
+declare module 'date-fns/isThisMonth' {
+ import { isThisMonth } from 'date-fns'
+ export default isThisMonth
+}
+
+declare module 'date-fns/isThisQuarter' {
+ import { isThisQuarter } from 'date-fns'
+ export default isThisQuarter
+}
+
+declare module 'date-fns/isThisSecond' {
+ import { isThisSecond } from 'date-fns'
+ export default isThisSecond
+}
+
+declare module 'date-fns/isThisWeek' {
+ import { isThisWeek } from 'date-fns'
+ export default isThisWeek
+}
+
+declare module 'date-fns/isThisYear' {
+ import { isThisYear } from 'date-fns'
+ export default isThisYear
+}
+
+declare module 'date-fns/isThursday' {
+ import { isThursday } from 'date-fns'
+ export default isThursday
+}
+
+declare module 'date-fns/isToday' {
+ import { isToday } from 'date-fns'
+ export default isToday
+}
+
+declare module 'date-fns/isTomorrow' {
+ import { isTomorrow } from 'date-fns'
+ export default isTomorrow
+}
+
+declare module 'date-fns/isTuesday' {
+ import { isTuesday } from 'date-fns'
+ export default isTuesday
+}
+
+declare module 'date-fns/isValid' {
+ import { isValid } from 'date-fns'
+ export default isValid
+}
+
+declare module 'date-fns/isWednesday' {
+ import { isWednesday } from 'date-fns'
+ export default isWednesday
+}
+
+declare module 'date-fns/isWeekend' {
+ import { isWeekend } from 'date-fns'
+ export default isWeekend
+}
+
+declare module 'date-fns/isWithinInterval' {
+ import { isWithinInterval } from 'date-fns'
+ export default isWithinInterval
+}
+
+declare module 'date-fns/isYesterday' {
+ import { isYesterday } from 'date-fns'
+ export default isYesterday
+}
+
+declare module 'date-fns/lastDayOfDecade' {
+ import { lastDayOfDecade } from 'date-fns'
+ export default lastDayOfDecade
+}
+
+declare module 'date-fns/lastDayOfISOWeek' {
+ import { lastDayOfISOWeek } from 'date-fns'
+ export default lastDayOfISOWeek
+}
+
+declare module 'date-fns/lastDayOfISOWeekYear' {
+ import { lastDayOfISOWeekYear } from 'date-fns'
+ export default lastDayOfISOWeekYear
+}
+
+declare module 'date-fns/lastDayOfMonth' {
+ import { lastDayOfMonth } from 'date-fns'
+ export default lastDayOfMonth
+}
+
+declare module 'date-fns/lastDayOfQuarter' {
+ import { lastDayOfQuarter } from 'date-fns'
+ export default lastDayOfQuarter
+}
+
+declare module 'date-fns/lastDayOfWeek' {
+ import { lastDayOfWeek } from 'date-fns'
+ export default lastDayOfWeek
+}
+
+declare module 'date-fns/lastDayOfYear' {
+ import { lastDayOfYear } from 'date-fns'
+ export default lastDayOfYear
+}
+
+declare module 'date-fns/lightFormat' {
+ import { lightFormat } from 'date-fns'
+ export default lightFormat
+}
+
+declare module 'date-fns/max' {
+ import { max } from 'date-fns'
+ export default max
+}
+
+declare module 'date-fns/milliseconds' {
+ import { milliseconds } from 'date-fns'
+ export default milliseconds
+}
+
+declare module 'date-fns/millisecondsToHours' {
+ import { millisecondsToHours } from 'date-fns'
+ export default millisecondsToHours
+}
+
+declare module 'date-fns/millisecondsToMinutes' {
+ import { millisecondsToMinutes } from 'date-fns'
+ export default millisecondsToMinutes
+}
+
+declare module 'date-fns/millisecondsToSeconds' {
+ import { millisecondsToSeconds } from 'date-fns'
+ export default millisecondsToSeconds
+}
+
+declare module 'date-fns/min' {
+ import { min } from 'date-fns'
+ export default min
+}
+
+declare module 'date-fns/minutesToHours' {
+ import { minutesToHours } from 'date-fns'
+ export default minutesToHours
+}
+
+declare module 'date-fns/minutesToMilliseconds' {
+ import { minutesToMilliseconds } from 'date-fns'
+ export default minutesToMilliseconds
+}
+
+declare module 'date-fns/minutesToSeconds' {
+ import { minutesToSeconds } from 'date-fns'
+ export default minutesToSeconds
+}
+
+declare module 'date-fns/monthsToQuarters' {
+ import { monthsToQuarters } from 'date-fns'
+ export default monthsToQuarters
+}
+
+declare module 'date-fns/monthsToYears' {
+ import { monthsToYears } from 'date-fns'
+ export default monthsToYears
+}
+
+declare module 'date-fns/nextDay' {
+ import { nextDay } from 'date-fns'
+ export default nextDay
+}
+
+declare module 'date-fns/nextFriday' {
+ import { nextFriday } from 'date-fns'
+ export default nextFriday
+}
+
+declare module 'date-fns/nextMonday' {
+ import { nextMonday } from 'date-fns'
+ export default nextMonday
+}
+
+declare module 'date-fns/nextSaturday' {
+ import { nextSaturday } from 'date-fns'
+ export default nextSaturday
+}
+
+declare module 'date-fns/nextSunday' {
+ import { nextSunday } from 'date-fns'
+ export default nextSunday
+}
+
+declare module 'date-fns/nextThursday' {
+ import { nextThursday } from 'date-fns'
+ export default nextThursday
+}
+
+declare module 'date-fns/nextTuesday' {
+ import { nextTuesday } from 'date-fns'
+ export default nextTuesday
+}
+
+declare module 'date-fns/nextWednesday' {
+ import { nextWednesday } from 'date-fns'
+ export default nextWednesday
+}
+
+declare module 'date-fns/parse' {
+ import { parse } from 'date-fns'
+ export default parse
+}
+
+declare module 'date-fns/parseISO' {
+ import { parseISO } from 'date-fns'
+ export default parseISO
+}
+
+declare module 'date-fns/parseJSON' {
+ import { parseJSON } from 'date-fns'
+ export default parseJSON
+}
+
+declare module 'date-fns/quartersToMonths' {
+ import { quartersToMonths } from 'date-fns'
+ export default quartersToMonths
+}
+
+declare module 'date-fns/quartersToYears' {
+ import { quartersToYears } from 'date-fns'
+ export default quartersToYears
+}
+
+declare module 'date-fns/roundToNearestMinutes' {
+ import { roundToNearestMinutes } from 'date-fns'
+ export default roundToNearestMinutes
+}
+
+declare module 'date-fns/secondsToHours' {
+ import { secondsToHours } from 'date-fns'
+ export default secondsToHours
+}
+
+declare module 'date-fns/secondsToMilliseconds' {
+ import { secondsToMilliseconds } from 'date-fns'
+ export default secondsToMilliseconds
+}
+
+declare module 'date-fns/secondsToMinutes' {
+ import { secondsToMinutes } from 'date-fns'
+ export default secondsToMinutes
+}
+
+declare module 'date-fns/set' {
+ import { set } from 'date-fns'
+ export default set
+}
+
+declare module 'date-fns/setDate' {
+ import { setDate } from 'date-fns'
+ export default setDate
+}
+
+declare module 'date-fns/setDay' {
+ import { setDay } from 'date-fns'
+ export default setDay
+}
+
+declare module 'date-fns/setDayOfYear' {
+ import { setDayOfYear } from 'date-fns'
+ export default setDayOfYear
+}
+
+declare module 'date-fns/setHours' {
+ import { setHours } from 'date-fns'
+ export default setHours
+}
+
+declare module 'date-fns/setISODay' {
+ import { setISODay } from 'date-fns'
+ export default setISODay
+}
+
+declare module 'date-fns/setISOWeek' {
+ import { setISOWeek } from 'date-fns'
+ export default setISOWeek
+}
+
+declare module 'date-fns/setISOWeekYear' {
+ import { setISOWeekYear } from 'date-fns'
+ export default setISOWeekYear
+}
+
+declare module 'date-fns/setMilliseconds' {
+ import { setMilliseconds } from 'date-fns'
+ export default setMilliseconds
+}
+
+declare module 'date-fns/setMinutes' {
+ import { setMinutes } from 'date-fns'
+ export default setMinutes
+}
+
+declare module 'date-fns/setMonth' {
+ import { setMonth } from 'date-fns'
+ export default setMonth
+}
+
+declare module 'date-fns/setQuarter' {
+ import { setQuarter } from 'date-fns'
+ export default setQuarter
+}
+
+declare module 'date-fns/setSeconds' {
+ import { setSeconds } from 'date-fns'
+ export default setSeconds
+}
+
+declare module 'date-fns/setWeek' {
+ import { setWeek } from 'date-fns'
+ export default setWeek
+}
+
+declare module 'date-fns/setWeekYear' {
+ import { setWeekYear } from 'date-fns'
+ export default setWeekYear
+}
+
+declare module 'date-fns/setYear' {
+ import { setYear } from 'date-fns'
+ export default setYear
+}
+
+declare module 'date-fns/startOfDay' {
+ import { startOfDay } from 'date-fns'
+ export default startOfDay
+}
+
+declare module 'date-fns/startOfDecade' {
+ import { startOfDecade } from 'date-fns'
+ export default startOfDecade
+}
+
+declare module 'date-fns/startOfHour' {
+ import { startOfHour } from 'date-fns'
+ export default startOfHour
+}
+
+declare module 'date-fns/startOfISOWeek' {
+ import { startOfISOWeek } from 'date-fns'
+ export default startOfISOWeek
+}
+
+declare module 'date-fns/startOfISOWeekYear' {
+ import { startOfISOWeekYear } from 'date-fns'
+ export default startOfISOWeekYear
+}
+
+declare module 'date-fns/startOfMinute' {
+ import { startOfMinute } from 'date-fns'
+ export default startOfMinute
+}
+
+declare module 'date-fns/startOfMonth' {
+ import { startOfMonth } from 'date-fns'
+ export default startOfMonth
+}
+
+declare module 'date-fns/startOfQuarter' {
+ import { startOfQuarter } from 'date-fns'
+ export default startOfQuarter
+}
+
+declare module 'date-fns/startOfSecond' {
+ import { startOfSecond } from 'date-fns'
+ export default startOfSecond
+}
+
+declare module 'date-fns/startOfToday' {
+ import { startOfToday } from 'date-fns'
+ export default startOfToday
+}
+
+declare module 'date-fns/startOfTomorrow' {
+ import { startOfTomorrow } from 'date-fns'
+ export default startOfTomorrow
+}
+
+declare module 'date-fns/startOfWeek' {
+ import { startOfWeek } from 'date-fns'
+ export default startOfWeek
+}
+
+declare module 'date-fns/startOfWeekYear' {
+ import { startOfWeekYear } from 'date-fns'
+ export default startOfWeekYear
+}
+
+declare module 'date-fns/startOfYear' {
+ import { startOfYear } from 'date-fns'
+ export default startOfYear
+}
+
+declare module 'date-fns/startOfYesterday' {
+ import { startOfYesterday } from 'date-fns'
+ export default startOfYesterday
+}
+
+declare module 'date-fns/sub' {
+ import { sub } from 'date-fns'
+ export default sub
+}
+
+declare module 'date-fns/subBusinessDays' {
+ import { subBusinessDays } from 'date-fns'
+ export default subBusinessDays
+}
+
+declare module 'date-fns/subDays' {
+ import { subDays } from 'date-fns'
+ export default subDays
+}
+
+declare module 'date-fns/subHours' {
+ import { subHours } from 'date-fns'
+ export default subHours
+}
+
+declare module 'date-fns/subISOWeekYears' {
+ import { subISOWeekYears } from 'date-fns'
+ export default subISOWeekYears
+}
+
+declare module 'date-fns/subMilliseconds' {
+ import { subMilliseconds } from 'date-fns'
+ export default subMilliseconds
+}
+
+declare module 'date-fns/subMinutes' {
+ import { subMinutes } from 'date-fns'
+ export default subMinutes
+}
+
+declare module 'date-fns/subMonths' {
+ import { subMonths } from 'date-fns'
+ export default subMonths
+}
+
+declare module 'date-fns/subQuarters' {
+ import { subQuarters } from 'date-fns'
+ export default subQuarters
+}
+
+declare module 'date-fns/subSeconds' {
+ import { subSeconds } from 'date-fns'
+ export default subSeconds
+}
+
+declare module 'date-fns/subWeeks' {
+ import { subWeeks } from 'date-fns'
+ export default subWeeks
+}
+
+declare module 'date-fns/subYears' {
+ import { subYears } from 'date-fns'
+ export default subYears
+}
+
+declare module 'date-fns/toDate' {
+ import { toDate } from 'date-fns'
+ export default toDate
+}
+
+declare module 'date-fns/weeksToDays' {
+ import { weeksToDays } from 'date-fns'
+ export default weeksToDays
+}
+
+declare module 'date-fns/yearsToMonths' {
+ import { yearsToMonths } from 'date-fns'
+ export default yearsToMonths
+}
+
+declare module 'date-fns/yearsToQuarters' {
+ import { yearsToQuarters } from 'date-fns'
+ export default yearsToQuarters
+}
+
+declare module 'date-fns/add/index' {
+ import { add } from 'date-fns'
+ export default add
+}
+
+declare module 'date-fns/addBusinessDays/index' {
+ import { addBusinessDays } from 'date-fns'
+ export default addBusinessDays
+}
+
+declare module 'date-fns/addDays/index' {
+ import { addDays } from 'date-fns'
+ export default addDays
+}
+
+declare module 'date-fns/addHours/index' {
+ import { addHours } from 'date-fns'
+ export default addHours
+}
+
+declare module 'date-fns/addISOWeekYears/index' {
+ import { addISOWeekYears } from 'date-fns'
+ export default addISOWeekYears
+}
+
+declare module 'date-fns/addMilliseconds/index' {
+ import { addMilliseconds } from 'date-fns'
+ export default addMilliseconds
+}
+
+declare module 'date-fns/addMinutes/index' {
+ import { addMinutes } from 'date-fns'
+ export default addMinutes
+}
+
+declare module 'date-fns/addMonths/index' {
+ import { addMonths } from 'date-fns'
+ export default addMonths
+}
+
+declare module 'date-fns/addQuarters/index' {
+ import { addQuarters } from 'date-fns'
+ export default addQuarters
+}
+
+declare module 'date-fns/addSeconds/index' {
+ import { addSeconds } from 'date-fns'
+ export default addSeconds
+}
+
+declare module 'date-fns/addWeeks/index' {
+ import { addWeeks } from 'date-fns'
+ export default addWeeks
+}
+
+declare module 'date-fns/addYears/index' {
+ import { addYears } from 'date-fns'
+ export default addYears
+}
+
+declare module 'date-fns/areIntervalsOverlapping/index' {
+ import { areIntervalsOverlapping } from 'date-fns'
+ export default areIntervalsOverlapping
+}
+
+declare module 'date-fns/closestIndexTo/index' {
+ import { closestIndexTo } from 'date-fns'
+ export default closestIndexTo
+}
+
+declare module 'date-fns/closestTo/index' {
+ import { closestTo } from 'date-fns'
+ export default closestTo
+}
+
+declare module 'date-fns/compareAsc/index' {
+ import { compareAsc } from 'date-fns'
+ export default compareAsc
+}
+
+declare module 'date-fns/compareDesc/index' {
+ import { compareDesc } from 'date-fns'
+ export default compareDesc
+}
+
+declare module 'date-fns/daysToWeeks/index' {
+ import { daysToWeeks } from 'date-fns'
+ export default daysToWeeks
+}
+
+declare module 'date-fns/differenceInBusinessDays/index' {
+ import { differenceInBusinessDays } from 'date-fns'
+ export default differenceInBusinessDays
+}
+
+declare module 'date-fns/differenceInCalendarDays/index' {
+ import { differenceInCalendarDays } from 'date-fns'
+ export default differenceInCalendarDays
+}
+
+declare module 'date-fns/differenceInCalendarISOWeeks/index' {
+ import { differenceInCalendarISOWeeks } from 'date-fns'
+ export default differenceInCalendarISOWeeks
+}
+
+declare module 'date-fns/differenceInCalendarISOWeekYears/index' {
+ import { differenceInCalendarISOWeekYears } from 'date-fns'
+ export default differenceInCalendarISOWeekYears
+}
+
+declare module 'date-fns/differenceInCalendarMonths/index' {
+ import { differenceInCalendarMonths } from 'date-fns'
+ export default differenceInCalendarMonths
+}
+
+declare module 'date-fns/differenceInCalendarQuarters/index' {
+ import { differenceInCalendarQuarters } from 'date-fns'
+ export default differenceInCalendarQuarters
+}
+
+declare module 'date-fns/differenceInCalendarWeeks/index' {
+ import { differenceInCalendarWeeks } from 'date-fns'
+ export default differenceInCalendarWeeks
+}
+
+declare module 'date-fns/differenceInCalendarYears/index' {
+ import { differenceInCalendarYears } from 'date-fns'
+ export default differenceInCalendarYears
+}
+
+declare module 'date-fns/differenceInDays/index' {
+ import { differenceInDays } from 'date-fns'
+ export default differenceInDays
+}
+
+declare module 'date-fns/differenceInHours/index' {
+ import { differenceInHours } from 'date-fns'
+ export default differenceInHours
+}
+
+declare module 'date-fns/differenceInISOWeekYears/index' {
+ import { differenceInISOWeekYears } from 'date-fns'
+ export default differenceInISOWeekYears
+}
+
+declare module 'date-fns/differenceInMilliseconds/index' {
+ import { differenceInMilliseconds } from 'date-fns'
+ export default differenceInMilliseconds
+}
+
+declare module 'date-fns/differenceInMinutes/index' {
+ import { differenceInMinutes } from 'date-fns'
+ export default differenceInMinutes
+}
+
+declare module 'date-fns/differenceInMonths/index' {
+ import { differenceInMonths } from 'date-fns'
+ export default differenceInMonths
+}
+
+declare module 'date-fns/differenceInQuarters/index' {
+ import { differenceInQuarters } from 'date-fns'
+ export default differenceInQuarters
+}
+
+declare module 'date-fns/differenceInSeconds/index' {
+ import { differenceInSeconds } from 'date-fns'
+ export default differenceInSeconds
+}
+
+declare module 'date-fns/differenceInWeeks/index' {
+ import { differenceInWeeks } from 'date-fns'
+ export default differenceInWeeks
+}
+
+declare module 'date-fns/differenceInYears/index' {
+ import { differenceInYears } from 'date-fns'
+ export default differenceInYears
+}
+
+declare module 'date-fns/eachDayOfInterval/index' {
+ import { eachDayOfInterval } from 'date-fns'
+ export default eachDayOfInterval
+}
+
+declare module 'date-fns/eachHourOfInterval/index' {
+ import { eachHourOfInterval } from 'date-fns'
+ export default eachHourOfInterval
+}
+
+declare module 'date-fns/eachMinuteOfInterval/index' {
+ import { eachMinuteOfInterval } from 'date-fns'
+ export default eachMinuteOfInterval
+}
+
+declare module 'date-fns/eachMonthOfInterval/index' {
+ import { eachMonthOfInterval } from 'date-fns'
+ export default eachMonthOfInterval
+}
+
+declare module 'date-fns/eachQuarterOfInterval/index' {
+ import { eachQuarterOfInterval } from 'date-fns'
+ export default eachQuarterOfInterval
+}
+
+declare module 'date-fns/eachWeekendOfInterval/index' {
+ import { eachWeekendOfInterval } from 'date-fns'
+ export default eachWeekendOfInterval
+}
+
+declare module 'date-fns/eachWeekendOfMonth/index' {
+ import { eachWeekendOfMonth } from 'date-fns'
+ export default eachWeekendOfMonth
+}
+
+declare module 'date-fns/eachWeekendOfYear/index' {
+ import { eachWeekendOfYear } from 'date-fns'
+ export default eachWeekendOfYear
+}
+
+declare module 'date-fns/eachWeekOfInterval/index' {
+ import { eachWeekOfInterval } from 'date-fns'
+ export default eachWeekOfInterval
+}
+
+declare module 'date-fns/eachYearOfInterval/index' {
+ import { eachYearOfInterval } from 'date-fns'
+ export default eachYearOfInterval
+}
+
+declare module 'date-fns/endOfDay/index' {
+ import { endOfDay } from 'date-fns'
+ export default endOfDay
+}
+
+declare module 'date-fns/endOfDecade/index' {
+ import { endOfDecade } from 'date-fns'
+ export default endOfDecade
+}
+
+declare module 'date-fns/endOfHour/index' {
+ import { endOfHour } from 'date-fns'
+ export default endOfHour
+}
+
+declare module 'date-fns/endOfISOWeek/index' {
+ import { endOfISOWeek } from 'date-fns'
+ export default endOfISOWeek
+}
+
+declare module 'date-fns/endOfISOWeekYear/index' {
+ import { endOfISOWeekYear } from 'date-fns'
+ export default endOfISOWeekYear
+}
+
+declare module 'date-fns/endOfMinute/index' {
+ import { endOfMinute } from 'date-fns'
+ export default endOfMinute
+}
+
+declare module 'date-fns/endOfMonth/index' {
+ import { endOfMonth } from 'date-fns'
+ export default endOfMonth
+}
+
+declare module 'date-fns/endOfQuarter/index' {
+ import { endOfQuarter } from 'date-fns'
+ export default endOfQuarter
+}
+
+declare module 'date-fns/endOfSecond/index' {
+ import { endOfSecond } from 'date-fns'
+ export default endOfSecond
+}
+
+declare module 'date-fns/endOfToday/index' {
+ import { endOfToday } from 'date-fns'
+ export default endOfToday
+}
+
+declare module 'date-fns/endOfTomorrow/index' {
+ import { endOfTomorrow } from 'date-fns'
+ export default endOfTomorrow
+}
+
+declare module 'date-fns/endOfWeek/index' {
+ import { endOfWeek } from 'date-fns'
+ export default endOfWeek
+}
+
+declare module 'date-fns/endOfYear/index' {
+ import { endOfYear } from 'date-fns'
+ export default endOfYear
+}
+
+declare module 'date-fns/endOfYesterday/index' {
+ import { endOfYesterday } from 'date-fns'
+ export default endOfYesterday
+}
+
+declare module 'date-fns/format/index' {
+ import { format } from 'date-fns'
+ export default format
+}
+
+declare module 'date-fns/formatDistance/index' {
+ import { formatDistance } from 'date-fns'
+ export default formatDistance
+}
+
+declare module 'date-fns/formatDistanceStrict/index' {
+ import { formatDistanceStrict } from 'date-fns'
+ export default formatDistanceStrict
+}
+
+declare module 'date-fns/formatDistanceToNow/index' {
+ import { formatDistanceToNow } from 'date-fns'
+ export default formatDistanceToNow
+}
+
+declare module 'date-fns/formatDistanceToNowStrict/index' {
+ import { formatDistanceToNowStrict } from 'date-fns'
+ export default formatDistanceToNowStrict
+}
+
+declare module 'date-fns/formatDuration/index' {
+ import { formatDuration } from 'date-fns'
+ export default formatDuration
+}
+
+declare module 'date-fns/formatISO/index' {
+ import { formatISO } from 'date-fns'
+ export default formatISO
+}
+
+declare module 'date-fns/formatISO9075/index' {
+ import { formatISO9075 } from 'date-fns'
+ export default formatISO9075
+}
+
+declare module 'date-fns/formatISODuration/index' {
+ import { formatISODuration } from 'date-fns'
+ export default formatISODuration
+}
+
+declare module 'date-fns/formatRelative/index' {
+ import { formatRelative } from 'date-fns'
+ export default formatRelative
+}
+
+declare module 'date-fns/formatRFC3339/index' {
+ import { formatRFC3339 } from 'date-fns'
+ export default formatRFC3339
+}
+
+declare module 'date-fns/formatRFC7231/index' {
+ import { formatRFC7231 } from 'date-fns'
+ export default formatRFC7231
+}
+
+declare module 'date-fns/fromUnixTime/index' {
+ import { fromUnixTime } from 'date-fns'
+ export default fromUnixTime
+}
+
+declare module 'date-fns/getDate/index' {
+ import { getDate } from 'date-fns'
+ export default getDate
+}
+
+declare module 'date-fns/getDay/index' {
+ import { getDay } from 'date-fns'
+ export default getDay
+}
+
+declare module 'date-fns/getDayOfYear/index' {
+ import { getDayOfYear } from 'date-fns'
+ export default getDayOfYear
+}
+
+declare module 'date-fns/getDaysInMonth/index' {
+ import { getDaysInMonth } from 'date-fns'
+ export default getDaysInMonth
+}
+
+declare module 'date-fns/getDaysInYear/index' {
+ import { getDaysInYear } from 'date-fns'
+ export default getDaysInYear
+}
+
+declare module 'date-fns/getDecade/index' {
+ import { getDecade } from 'date-fns'
+ export default getDecade
+}
+
+declare module 'date-fns/getHours/index' {
+ import { getHours } from 'date-fns'
+ export default getHours
+}
+
+declare module 'date-fns/getISODay/index' {
+ import { getISODay } from 'date-fns'
+ export default getISODay
+}
+
+declare module 'date-fns/getISOWeek/index' {
+ import { getISOWeek } from 'date-fns'
+ export default getISOWeek
+}
+
+declare module 'date-fns/getISOWeeksInYear/index' {
+ import { getISOWeeksInYear } from 'date-fns'
+ export default getISOWeeksInYear
+}
+
+declare module 'date-fns/getISOWeekYear/index' {
+ import { getISOWeekYear } from 'date-fns'
+ export default getISOWeekYear
+}
+
+declare module 'date-fns/getMilliseconds/index' {
+ import { getMilliseconds } from 'date-fns'
+ export default getMilliseconds
+}
+
+declare module 'date-fns/getMinutes/index' {
+ import { getMinutes } from 'date-fns'
+ export default getMinutes
+}
+
+declare module 'date-fns/getMonth/index' {
+ import { getMonth } from 'date-fns'
+ export default getMonth
+}
+
+declare module 'date-fns/getOverlappingDaysInIntervals/index' {
+ import { getOverlappingDaysInIntervals } from 'date-fns'
+ export default getOverlappingDaysInIntervals
+}
+
+declare module 'date-fns/getQuarter/index' {
+ import { getQuarter } from 'date-fns'
+ export default getQuarter
+}
+
+declare module 'date-fns/getSeconds/index' {
+ import { getSeconds } from 'date-fns'
+ export default getSeconds
+}
+
+declare module 'date-fns/getTime/index' {
+ import { getTime } from 'date-fns'
+ export default getTime
+}
+
+declare module 'date-fns/getUnixTime/index' {
+ import { getUnixTime } from 'date-fns'
+ export default getUnixTime
+}
+
+declare module 'date-fns/getWeek/index' {
+ import { getWeek } from 'date-fns'
+ export default getWeek
+}
+
+declare module 'date-fns/getWeekOfMonth/index' {
+ import { getWeekOfMonth } from 'date-fns'
+ export default getWeekOfMonth
+}
+
+declare module 'date-fns/getWeeksInMonth/index' {
+ import { getWeeksInMonth } from 'date-fns'
+ export default getWeeksInMonth
+}
+
+declare module 'date-fns/getWeekYear/index' {
+ import { getWeekYear } from 'date-fns'
+ export default getWeekYear
+}
+
+declare module 'date-fns/getYear/index' {
+ import { getYear } from 'date-fns'
+ export default getYear
+}
+
+declare module 'date-fns/hoursToMilliseconds/index' {
+ import { hoursToMilliseconds } from 'date-fns'
+ export default hoursToMilliseconds
+}
+
+declare module 'date-fns/hoursToMinutes/index' {
+ import { hoursToMinutes } from 'date-fns'
+ export default hoursToMinutes
+}
+
+declare module 'date-fns/hoursToSeconds/index' {
+ import { hoursToSeconds } from 'date-fns'
+ export default hoursToSeconds
+}
+
+declare module 'date-fns/intervalToDuration/index' {
+ import { intervalToDuration } from 'date-fns'
+ export default intervalToDuration
+}
+
+declare module 'date-fns/intlFormat/index' {
+ import { intlFormat } from 'date-fns'
+ export default intlFormat
+}
+
+declare module 'date-fns/isAfter/index' {
+ import { isAfter } from 'date-fns'
+ export default isAfter
+}
+
+declare module 'date-fns/isBefore/index' {
+ import { isBefore } from 'date-fns'
+ export default isBefore
+}
+
+declare module 'date-fns/isDate/index' {
+ import { isDate } from 'date-fns'
+ export default isDate
+}
+
+declare module 'date-fns/isEqual/index' {
+ import { isEqual } from 'date-fns'
+ export default isEqual
+}
+
+declare module 'date-fns/isExists/index' {
+ import { isExists } from 'date-fns'
+ export default isExists
+}
+
+declare module 'date-fns/isFirstDayOfMonth/index' {
+ import { isFirstDayOfMonth } from 'date-fns'
+ export default isFirstDayOfMonth
+}
+
+declare module 'date-fns/isFriday/index' {
+ import { isFriday } from 'date-fns'
+ export default isFriday
+}
+
+declare module 'date-fns/isFuture/index' {
+ import { isFuture } from 'date-fns'
+ export default isFuture
+}
+
+declare module 'date-fns/isLastDayOfMonth/index' {
+ import { isLastDayOfMonth } from 'date-fns'
+ export default isLastDayOfMonth
+}
+
+declare module 'date-fns/isLeapYear/index' {
+ import { isLeapYear } from 'date-fns'
+ export default isLeapYear
+}
+
+declare module 'date-fns/isMatch/index' {
+ import { isMatch } from 'date-fns'
+ export default isMatch
+}
+
+declare module 'date-fns/isMonday/index' {
+ import { isMonday } from 'date-fns'
+ export default isMonday
+}
+
+declare module 'date-fns/isPast/index' {
+ import { isPast } from 'date-fns'
+ export default isPast
+}
+
+declare module 'date-fns/isSameDay/index' {
+ import { isSameDay } from 'date-fns'
+ export default isSameDay
+}
+
+declare module 'date-fns/isSameHour/index' {
+ import { isSameHour } from 'date-fns'
+ export default isSameHour
+}
+
+declare module 'date-fns/isSameISOWeek/index' {
+ import { isSameISOWeek } from 'date-fns'
+ export default isSameISOWeek
+}
+
+declare module 'date-fns/isSameISOWeekYear/index' {
+ import { isSameISOWeekYear } from 'date-fns'
+ export default isSameISOWeekYear
+}
+
+declare module 'date-fns/isSameMinute/index' {
+ import { isSameMinute } from 'date-fns'
+ export default isSameMinute
+}
+
+declare module 'date-fns/isSameMonth/index' {
+ import { isSameMonth } from 'date-fns'
+ export default isSameMonth
+}
+
+declare module 'date-fns/isSameQuarter/index' {
+ import { isSameQuarter } from 'date-fns'
+ export default isSameQuarter
+}
+
+declare module 'date-fns/isSameSecond/index' {
+ import { isSameSecond } from 'date-fns'
+ export default isSameSecond
+}
+
+declare module 'date-fns/isSameWeek/index' {
+ import { isSameWeek } from 'date-fns'
+ export default isSameWeek
+}
+
+declare module 'date-fns/isSameYear/index' {
+ import { isSameYear } from 'date-fns'
+ export default isSameYear
+}
+
+declare module 'date-fns/isSaturday/index' {
+ import { isSaturday } from 'date-fns'
+ export default isSaturday
+}
+
+declare module 'date-fns/isSunday/index' {
+ import { isSunday } from 'date-fns'
+ export default isSunday
+}
+
+declare module 'date-fns/isThisHour/index' {
+ import { isThisHour } from 'date-fns'
+ export default isThisHour
+}
+
+declare module 'date-fns/isThisISOWeek/index' {
+ import { isThisISOWeek } from 'date-fns'
+ export default isThisISOWeek
+}
+
+declare module 'date-fns/isThisMinute/index' {
+ import { isThisMinute } from 'date-fns'
+ export default isThisMinute
+}
+
+declare module 'date-fns/isThisMonth/index' {
+ import { isThisMonth } from 'date-fns'
+ export default isThisMonth
+}
+
+declare module 'date-fns/isThisQuarter/index' {
+ import { isThisQuarter } from 'date-fns'
+ export default isThisQuarter
+}
+
+declare module 'date-fns/isThisSecond/index' {
+ import { isThisSecond } from 'date-fns'
+ export default isThisSecond
+}
+
+declare module 'date-fns/isThisWeek/index' {
+ import { isThisWeek } from 'date-fns'
+ export default isThisWeek
+}
+
+declare module 'date-fns/isThisYear/index' {
+ import { isThisYear } from 'date-fns'
+ export default isThisYear
+}
+
+declare module 'date-fns/isThursday/index' {
+ import { isThursday } from 'date-fns'
+ export default isThursday
+}
+
+declare module 'date-fns/isToday/index' {
+ import { isToday } from 'date-fns'
+ export default isToday
+}
+
+declare module 'date-fns/isTomorrow/index' {
+ import { isTomorrow } from 'date-fns'
+ export default isTomorrow
+}
+
+declare module 'date-fns/isTuesday/index' {
+ import { isTuesday } from 'date-fns'
+ export default isTuesday
+}
+
+declare module 'date-fns/isValid/index' {
+ import { isValid } from 'date-fns'
+ export default isValid
+}
+
+declare module 'date-fns/isWednesday/index' {
+ import { isWednesday } from 'date-fns'
+ export default isWednesday
+}
+
+declare module 'date-fns/isWeekend/index' {
+ import { isWeekend } from 'date-fns'
+ export default isWeekend
+}
+
+declare module 'date-fns/isWithinInterval/index' {
+ import { isWithinInterval } from 'date-fns'
+ export default isWithinInterval
+}
+
+declare module 'date-fns/isYesterday/index' {
+ import { isYesterday } from 'date-fns'
+ export default isYesterday
+}
+
+declare module 'date-fns/lastDayOfDecade/index' {
+ import { lastDayOfDecade } from 'date-fns'
+ export default lastDayOfDecade
+}
+
+declare module 'date-fns/lastDayOfISOWeek/index' {
+ import { lastDayOfISOWeek } from 'date-fns'
+ export default lastDayOfISOWeek
+}
+
+declare module 'date-fns/lastDayOfISOWeekYear/index' {
+ import { lastDayOfISOWeekYear } from 'date-fns'
+ export default lastDayOfISOWeekYear
+}
+
+declare module 'date-fns/lastDayOfMonth/index' {
+ import { lastDayOfMonth } from 'date-fns'
+ export default lastDayOfMonth
+}
+
+declare module 'date-fns/lastDayOfQuarter/index' {
+ import { lastDayOfQuarter } from 'date-fns'
+ export default lastDayOfQuarter
+}
+
+declare module 'date-fns/lastDayOfWeek/index' {
+ import { lastDayOfWeek } from 'date-fns'
+ export default lastDayOfWeek
+}
+
+declare module 'date-fns/lastDayOfYear/index' {
+ import { lastDayOfYear } from 'date-fns'
+ export default lastDayOfYear
+}
+
+declare module 'date-fns/lightFormat/index' {
+ import { lightFormat } from 'date-fns'
+ export default lightFormat
+}
+
+declare module 'date-fns/max/index' {
+ import { max } from 'date-fns'
+ export default max
+}
+
+declare module 'date-fns/milliseconds/index' {
+ import { milliseconds } from 'date-fns'
+ export default milliseconds
+}
+
+declare module 'date-fns/millisecondsToHours/index' {
+ import { millisecondsToHours } from 'date-fns'
+ export default millisecondsToHours
+}
+
+declare module 'date-fns/millisecondsToMinutes/index' {
+ import { millisecondsToMinutes } from 'date-fns'
+ export default millisecondsToMinutes
+}
+
+declare module 'date-fns/millisecondsToSeconds/index' {
+ import { millisecondsToSeconds } from 'date-fns'
+ export default millisecondsToSeconds
+}
+
+declare module 'date-fns/min/index' {
+ import { min } from 'date-fns'
+ export default min
+}
+
+declare module 'date-fns/minutesToHours/index' {
+ import { minutesToHours } from 'date-fns'
+ export default minutesToHours
+}
+
+declare module 'date-fns/minutesToMilliseconds/index' {
+ import { minutesToMilliseconds } from 'date-fns'
+ export default minutesToMilliseconds
+}
+
+declare module 'date-fns/minutesToSeconds/index' {
+ import { minutesToSeconds } from 'date-fns'
+ export default minutesToSeconds
+}
+
+declare module 'date-fns/monthsToQuarters/index' {
+ import { monthsToQuarters } from 'date-fns'
+ export default monthsToQuarters
+}
+
+declare module 'date-fns/monthsToYears/index' {
+ import { monthsToYears } from 'date-fns'
+ export default monthsToYears
+}
+
+declare module 'date-fns/nextDay/index' {
+ import { nextDay } from 'date-fns'
+ export default nextDay
+}
+
+declare module 'date-fns/nextFriday/index' {
+ import { nextFriday } from 'date-fns'
+ export default nextFriday
+}
+
+declare module 'date-fns/nextMonday/index' {
+ import { nextMonday } from 'date-fns'
+ export default nextMonday
+}
+
+declare module 'date-fns/nextSaturday/index' {
+ import { nextSaturday } from 'date-fns'
+ export default nextSaturday
+}
+
+declare module 'date-fns/nextSunday/index' {
+ import { nextSunday } from 'date-fns'
+ export default nextSunday
+}
+
+declare module 'date-fns/nextThursday/index' {
+ import { nextThursday } from 'date-fns'
+ export default nextThursday
+}
+
+declare module 'date-fns/nextTuesday/index' {
+ import { nextTuesday } from 'date-fns'
+ export default nextTuesday
+}
+
+declare module 'date-fns/nextWednesday/index' {
+ import { nextWednesday } from 'date-fns'
+ export default nextWednesday
+}
+
+declare module 'date-fns/parse/index' {
+ import { parse } from 'date-fns'
+ export default parse
+}
+
+declare module 'date-fns/parseISO/index' {
+ import { parseISO } from 'date-fns'
+ export default parseISO
+}
+
+declare module 'date-fns/parseJSON/index' {
+ import { parseJSON } from 'date-fns'
+ export default parseJSON
+}
+
+declare module 'date-fns/quartersToMonths/index' {
+ import { quartersToMonths } from 'date-fns'
+ export default quartersToMonths
+}
+
+declare module 'date-fns/quartersToYears/index' {
+ import { quartersToYears } from 'date-fns'
+ export default quartersToYears
+}
+
+declare module 'date-fns/roundToNearestMinutes/index' {
+ import { roundToNearestMinutes } from 'date-fns'
+ export default roundToNearestMinutes
+}
+
+declare module 'date-fns/secondsToHours/index' {
+ import { secondsToHours } from 'date-fns'
+ export default secondsToHours
+}
+
+declare module 'date-fns/secondsToMilliseconds/index' {
+ import { secondsToMilliseconds } from 'date-fns'
+ export default secondsToMilliseconds
+}
+
+declare module 'date-fns/secondsToMinutes/index' {
+ import { secondsToMinutes } from 'date-fns'
+ export default secondsToMinutes
+}
+
+declare module 'date-fns/set/index' {
+ import { set } from 'date-fns'
+ export default set
+}
+
+declare module 'date-fns/setDate/index' {
+ import { setDate } from 'date-fns'
+ export default setDate
+}
+
+declare module 'date-fns/setDay/index' {
+ import { setDay } from 'date-fns'
+ export default setDay
+}
+
+declare module 'date-fns/setDayOfYear/index' {
+ import { setDayOfYear } from 'date-fns'
+ export default setDayOfYear
+}
+
+declare module 'date-fns/setHours/index' {
+ import { setHours } from 'date-fns'
+ export default setHours
+}
+
+declare module 'date-fns/setISODay/index' {
+ import { setISODay } from 'date-fns'
+ export default setISODay
+}
+
+declare module 'date-fns/setISOWeek/index' {
+ import { setISOWeek } from 'date-fns'
+ export default setISOWeek
+}
+
+declare module 'date-fns/setISOWeekYear/index' {
+ import { setISOWeekYear } from 'date-fns'
+ export default setISOWeekYear
+}
+
+declare module 'date-fns/setMilliseconds/index' {
+ import { setMilliseconds } from 'date-fns'
+ export default setMilliseconds
+}
+
+declare module 'date-fns/setMinutes/index' {
+ import { setMinutes } from 'date-fns'
+ export default setMinutes
+}
+
+declare module 'date-fns/setMonth/index' {
+ import { setMonth } from 'date-fns'
+ export default setMonth
+}
+
+declare module 'date-fns/setQuarter/index' {
+ import { setQuarter } from 'date-fns'
+ export default setQuarter
+}
+
+declare module 'date-fns/setSeconds/index' {
+ import { setSeconds } from 'date-fns'
+ export default setSeconds
+}
+
+declare module 'date-fns/setWeek/index' {
+ import { setWeek } from 'date-fns'
+ export default setWeek
+}
+
+declare module 'date-fns/setWeekYear/index' {
+ import { setWeekYear } from 'date-fns'
+ export default setWeekYear
+}
+
+declare module 'date-fns/setYear/index' {
+ import { setYear } from 'date-fns'
+ export default setYear
+}
+
+declare module 'date-fns/startOfDay/index' {
+ import { startOfDay } from 'date-fns'
+ export default startOfDay
+}
+
+declare module 'date-fns/startOfDecade/index' {
+ import { startOfDecade } from 'date-fns'
+ export default startOfDecade
+}
+
+declare module 'date-fns/startOfHour/index' {
+ import { startOfHour } from 'date-fns'
+ export default startOfHour
+}
+
+declare module 'date-fns/startOfISOWeek/index' {
+ import { startOfISOWeek } from 'date-fns'
+ export default startOfISOWeek
+}
+
+declare module 'date-fns/startOfISOWeekYear/index' {
+ import { startOfISOWeekYear } from 'date-fns'
+ export default startOfISOWeekYear
+}
+
+declare module 'date-fns/startOfMinute/index' {
+ import { startOfMinute } from 'date-fns'
+ export default startOfMinute
+}
+
+declare module 'date-fns/startOfMonth/index' {
+ import { startOfMonth } from 'date-fns'
+ export default startOfMonth
+}
+
+declare module 'date-fns/startOfQuarter/index' {
+ import { startOfQuarter } from 'date-fns'
+ export default startOfQuarter
+}
+
+declare module 'date-fns/startOfSecond/index' {
+ import { startOfSecond } from 'date-fns'
+ export default startOfSecond
+}
+
+declare module 'date-fns/startOfToday/index' {
+ import { startOfToday } from 'date-fns'
+ export default startOfToday
+}
+
+declare module 'date-fns/startOfTomorrow/index' {
+ import { startOfTomorrow } from 'date-fns'
+ export default startOfTomorrow
+}
+
+declare module 'date-fns/startOfWeek/index' {
+ import { startOfWeek } from 'date-fns'
+ export default startOfWeek
+}
+
+declare module 'date-fns/startOfWeekYear/index' {
+ import { startOfWeekYear } from 'date-fns'
+ export default startOfWeekYear
+}
+
+declare module 'date-fns/startOfYear/index' {
+ import { startOfYear } from 'date-fns'
+ export default startOfYear
+}
+
+declare module 'date-fns/startOfYesterday/index' {
+ import { startOfYesterday } from 'date-fns'
+ export default startOfYesterday
+}
+
+declare module 'date-fns/sub/index' {
+ import { sub } from 'date-fns'
+ export default sub
+}
+
+declare module 'date-fns/subBusinessDays/index' {
+ import { subBusinessDays } from 'date-fns'
+ export default subBusinessDays
+}
+
+declare module 'date-fns/subDays/index' {
+ import { subDays } from 'date-fns'
+ export default subDays
+}
+
+declare module 'date-fns/subHours/index' {
+ import { subHours } from 'date-fns'
+ export default subHours
+}
+
+declare module 'date-fns/subISOWeekYears/index' {
+ import { subISOWeekYears } from 'date-fns'
+ export default subISOWeekYears
+}
+
+declare module 'date-fns/subMilliseconds/index' {
+ import { subMilliseconds } from 'date-fns'
+ export default subMilliseconds
+}
+
+declare module 'date-fns/subMinutes/index' {
+ import { subMinutes } from 'date-fns'
+ export default subMinutes
+}
+
+declare module 'date-fns/subMonths/index' {
+ import { subMonths } from 'date-fns'
+ export default subMonths
+}
+
+declare module 'date-fns/subQuarters/index' {
+ import { subQuarters } from 'date-fns'
+ export default subQuarters
+}
+
+declare module 'date-fns/subSeconds/index' {
+ import { subSeconds } from 'date-fns'
+ export default subSeconds
+}
+
+declare module 'date-fns/subWeeks/index' {
+ import { subWeeks } from 'date-fns'
+ export default subWeeks
+}
+
+declare module 'date-fns/subYears/index' {
+ import { subYears } from 'date-fns'
+ export default subYears
+}
+
+declare module 'date-fns/toDate/index' {
+ import { toDate } from 'date-fns'
+ export default toDate
+}
+
+declare module 'date-fns/weeksToDays/index' {
+ import { weeksToDays } from 'date-fns'
+ export default weeksToDays
+}
+
+declare module 'date-fns/yearsToMonths/index' {
+ import { yearsToMonths } from 'date-fns'
+ export default yearsToMonths
+}
+
+declare module 'date-fns/yearsToQuarters/index' {
+ import { yearsToQuarters } from 'date-fns'
+ export default yearsToQuarters
+}
+
+declare module 'date-fns/add/index.js' {
+ import { add } from 'date-fns'
+ export default add
+}
+
+declare module 'date-fns/addBusinessDays/index.js' {
+ import { addBusinessDays } from 'date-fns'
+ export default addBusinessDays
+}
+
+declare module 'date-fns/addDays/index.js' {
+ import { addDays } from 'date-fns'
+ export default addDays
+}
+
+declare module 'date-fns/addHours/index.js' {
+ import { addHours } from 'date-fns'
+ export default addHours
+}
+
+declare module 'date-fns/addISOWeekYears/index.js' {
+ import { addISOWeekYears } from 'date-fns'
+ export default addISOWeekYears
+}
+
+declare module 'date-fns/addMilliseconds/index.js' {
+ import { addMilliseconds } from 'date-fns'
+ export default addMilliseconds
+}
+
+declare module 'date-fns/addMinutes/index.js' {
+ import { addMinutes } from 'date-fns'
+ export default addMinutes
+}
+
+declare module 'date-fns/addMonths/index.js' {
+ import { addMonths } from 'date-fns'
+ export default addMonths
+}
+
+declare module 'date-fns/addQuarters/index.js' {
+ import { addQuarters } from 'date-fns'
+ export default addQuarters
+}
+
+declare module 'date-fns/addSeconds/index.js' {
+ import { addSeconds } from 'date-fns'
+ export default addSeconds
+}
+
+declare module 'date-fns/addWeeks/index.js' {
+ import { addWeeks } from 'date-fns'
+ export default addWeeks
+}
+
+declare module 'date-fns/addYears/index.js' {
+ import { addYears } from 'date-fns'
+ export default addYears
+}
+
+declare module 'date-fns/areIntervalsOverlapping/index.js' {
+ import { areIntervalsOverlapping } from 'date-fns'
+ export default areIntervalsOverlapping
+}
+
+declare module 'date-fns/closestIndexTo/index.js' {
+ import { closestIndexTo } from 'date-fns'
+ export default closestIndexTo
+}
+
+declare module 'date-fns/closestTo/index.js' {
+ import { closestTo } from 'date-fns'
+ export default closestTo
+}
+
+declare module 'date-fns/compareAsc/index.js' {
+ import { compareAsc } from 'date-fns'
+ export default compareAsc
+}
+
+declare module 'date-fns/compareDesc/index.js' {
+ import { compareDesc } from 'date-fns'
+ export default compareDesc
+}
+
+declare module 'date-fns/daysToWeeks/index.js' {
+ import { daysToWeeks } from 'date-fns'
+ export default daysToWeeks
+}
+
+declare module 'date-fns/differenceInBusinessDays/index.js' {
+ import { differenceInBusinessDays } from 'date-fns'
+ export default differenceInBusinessDays
+}
+
+declare module 'date-fns/differenceInCalendarDays/index.js' {
+ import { differenceInCalendarDays } from 'date-fns'
+ export default differenceInCalendarDays
+}
+
+declare module 'date-fns/differenceInCalendarISOWeeks/index.js' {
+ import { differenceInCalendarISOWeeks } from 'date-fns'
+ export default differenceInCalendarISOWeeks
+}
+
+declare module 'date-fns/differenceInCalendarISOWeekYears/index.js' {
+ import { differenceInCalendarISOWeekYears } from 'date-fns'
+ export default differenceInCalendarISOWeekYears
+}
+
+declare module 'date-fns/differenceInCalendarMonths/index.js' {
+ import { differenceInCalendarMonths } from 'date-fns'
+ export default differenceInCalendarMonths
+}
+
+declare module 'date-fns/differenceInCalendarQuarters/index.js' {
+ import { differenceInCalendarQuarters } from 'date-fns'
+ export default differenceInCalendarQuarters
+}
+
+declare module 'date-fns/differenceInCalendarWeeks/index.js' {
+ import { differenceInCalendarWeeks } from 'date-fns'
+ export default differenceInCalendarWeeks
+}
+
+declare module 'date-fns/differenceInCalendarYears/index.js' {
+ import { differenceInCalendarYears } from 'date-fns'
+ export default differenceInCalendarYears
+}
+
+declare module 'date-fns/differenceInDays/index.js' {
+ import { differenceInDays } from 'date-fns'
+ export default differenceInDays
+}
+
+declare module 'date-fns/differenceInHours/index.js' {
+ import { differenceInHours } from 'date-fns'
+ export default differenceInHours
+}
+
+declare module 'date-fns/differenceInISOWeekYears/index.js' {
+ import { differenceInISOWeekYears } from 'date-fns'
+ export default differenceInISOWeekYears
+}
+
+declare module 'date-fns/differenceInMilliseconds/index.js' {
+ import { differenceInMilliseconds } from 'date-fns'
+ export default differenceInMilliseconds
+}
+
+declare module 'date-fns/differenceInMinutes/index.js' {
+ import { differenceInMinutes } from 'date-fns'
+ export default differenceInMinutes
+}
+
+declare module 'date-fns/differenceInMonths/index.js' {
+ import { differenceInMonths } from 'date-fns'
+ export default differenceInMonths
+}
+
+declare module 'date-fns/differenceInQuarters/index.js' {
+ import { differenceInQuarters } from 'date-fns'
+ export default differenceInQuarters
+}
+
+declare module 'date-fns/differenceInSeconds/index.js' {
+ import { differenceInSeconds } from 'date-fns'
+ export default differenceInSeconds
+}
+
+declare module 'date-fns/differenceInWeeks/index.js' {
+ import { differenceInWeeks } from 'date-fns'
+ export default differenceInWeeks
+}
+
+declare module 'date-fns/differenceInYears/index.js' {
+ import { differenceInYears } from 'date-fns'
+ export default differenceInYears
+}
+
+declare module 'date-fns/eachDayOfInterval/index.js' {
+ import { eachDayOfInterval } from 'date-fns'
+ export default eachDayOfInterval
+}
+
+declare module 'date-fns/eachHourOfInterval/index.js' {
+ import { eachHourOfInterval } from 'date-fns'
+ export default eachHourOfInterval
+}
+
+declare module 'date-fns/eachMinuteOfInterval/index.js' {
+ import { eachMinuteOfInterval } from 'date-fns'
+ export default eachMinuteOfInterval
+}
+
+declare module 'date-fns/eachMonthOfInterval/index.js' {
+ import { eachMonthOfInterval } from 'date-fns'
+ export default eachMonthOfInterval
+}
+
+declare module 'date-fns/eachQuarterOfInterval/index.js' {
+ import { eachQuarterOfInterval } from 'date-fns'
+ export default eachQuarterOfInterval
+}
+
+declare module 'date-fns/eachWeekendOfInterval/index.js' {
+ import { eachWeekendOfInterval } from 'date-fns'
+ export default eachWeekendOfInterval
+}
+
+declare module 'date-fns/eachWeekendOfMonth/index.js' {
+ import { eachWeekendOfMonth } from 'date-fns'
+ export default eachWeekendOfMonth
+}
+
+declare module 'date-fns/eachWeekendOfYear/index.js' {
+ import { eachWeekendOfYear } from 'date-fns'
+ export default eachWeekendOfYear
+}
+
+declare module 'date-fns/eachWeekOfInterval/index.js' {
+ import { eachWeekOfInterval } from 'date-fns'
+ export default eachWeekOfInterval
+}
+
+declare module 'date-fns/eachYearOfInterval/index.js' {
+ import { eachYearOfInterval } from 'date-fns'
+ export default eachYearOfInterval
+}
+
+declare module 'date-fns/endOfDay/index.js' {
+ import { endOfDay } from 'date-fns'
+ export default endOfDay
+}
+
+declare module 'date-fns/endOfDecade/index.js' {
+ import { endOfDecade } from 'date-fns'
+ export default endOfDecade
+}
+
+declare module 'date-fns/endOfHour/index.js' {
+ import { endOfHour } from 'date-fns'
+ export default endOfHour
+}
+
+declare module 'date-fns/endOfISOWeek/index.js' {
+ import { endOfISOWeek } from 'date-fns'
+ export default endOfISOWeek
+}
+
+declare module 'date-fns/endOfISOWeekYear/index.js' {
+ import { endOfISOWeekYear } from 'date-fns'
+ export default endOfISOWeekYear
+}
+
+declare module 'date-fns/endOfMinute/index.js' {
+ import { endOfMinute } from 'date-fns'
+ export default endOfMinute
+}
+
+declare module 'date-fns/endOfMonth/index.js' {
+ import { endOfMonth } from 'date-fns'
+ export default endOfMonth
+}
+
+declare module 'date-fns/endOfQuarter/index.js' {
+ import { endOfQuarter } from 'date-fns'
+ export default endOfQuarter
+}
+
+declare module 'date-fns/endOfSecond/index.js' {
+ import { endOfSecond } from 'date-fns'
+ export default endOfSecond
+}
+
+declare module 'date-fns/endOfToday/index.js' {
+ import { endOfToday } from 'date-fns'
+ export default endOfToday
+}
+
+declare module 'date-fns/endOfTomorrow/index.js' {
+ import { endOfTomorrow } from 'date-fns'
+ export default endOfTomorrow
+}
+
+declare module 'date-fns/endOfWeek/index.js' {
+ import { endOfWeek } from 'date-fns'
+ export default endOfWeek
+}
+
+declare module 'date-fns/endOfYear/index.js' {
+ import { endOfYear } from 'date-fns'
+ export default endOfYear
+}
+
+declare module 'date-fns/endOfYesterday/index.js' {
+ import { endOfYesterday } from 'date-fns'
+ export default endOfYesterday
+}
+
+declare module 'date-fns/format/index.js' {
+ import { format } from 'date-fns'
+ export default format
+}
+
+declare module 'date-fns/formatDistance/index.js' {
+ import { formatDistance } from 'date-fns'
+ export default formatDistance
+}
+
+declare module 'date-fns/formatDistanceStrict/index.js' {
+ import { formatDistanceStrict } from 'date-fns'
+ export default formatDistanceStrict
+}
+
+declare module 'date-fns/formatDistanceToNow/index.js' {
+ import { formatDistanceToNow } from 'date-fns'
+ export default formatDistanceToNow
+}
+
+declare module 'date-fns/formatDistanceToNowStrict/index.js' {
+ import { formatDistanceToNowStrict } from 'date-fns'
+ export default formatDistanceToNowStrict
+}
+
+declare module 'date-fns/formatDuration/index.js' {
+ import { formatDuration } from 'date-fns'
+ export default formatDuration
+}
+
+declare module 'date-fns/formatISO/index.js' {
+ import { formatISO } from 'date-fns'
+ export default formatISO
+}
+
+declare module 'date-fns/formatISO9075/index.js' {
+ import { formatISO9075 } from 'date-fns'
+ export default formatISO9075
+}
+
+declare module 'date-fns/formatISODuration/index.js' {
+ import { formatISODuration } from 'date-fns'
+ export default formatISODuration
+}
+
+declare module 'date-fns/formatRelative/index.js' {
+ import { formatRelative } from 'date-fns'
+ export default formatRelative
+}
+
+declare module 'date-fns/formatRFC3339/index.js' {
+ import { formatRFC3339 } from 'date-fns'
+ export default formatRFC3339
+}
+
+declare module 'date-fns/formatRFC7231/index.js' {
+ import { formatRFC7231 } from 'date-fns'
+ export default formatRFC7231
+}
+
+declare module 'date-fns/fromUnixTime/index.js' {
+ import { fromUnixTime } from 'date-fns'
+ export default fromUnixTime
+}
+
+declare module 'date-fns/getDate/index.js' {
+ import { getDate } from 'date-fns'
+ export default getDate
+}
+
+declare module 'date-fns/getDay/index.js' {
+ import { getDay } from 'date-fns'
+ export default getDay
+}
+
+declare module 'date-fns/getDayOfYear/index.js' {
+ import { getDayOfYear } from 'date-fns'
+ export default getDayOfYear
+}
+
+declare module 'date-fns/getDaysInMonth/index.js' {
+ import { getDaysInMonth } from 'date-fns'
+ export default getDaysInMonth
+}
+
+declare module 'date-fns/getDaysInYear/index.js' {
+ import { getDaysInYear } from 'date-fns'
+ export default getDaysInYear
+}
+
+declare module 'date-fns/getDecade/index.js' {
+ import { getDecade } from 'date-fns'
+ export default getDecade
+}
+
+declare module 'date-fns/getHours/index.js' {
+ import { getHours } from 'date-fns'
+ export default getHours
+}
+
+declare module 'date-fns/getISODay/index.js' {
+ import { getISODay } from 'date-fns'
+ export default getISODay
+}
+
+declare module 'date-fns/getISOWeek/index.js' {
+ import { getISOWeek } from 'date-fns'
+ export default getISOWeek
+}
+
+declare module 'date-fns/getISOWeeksInYear/index.js' {
+ import { getISOWeeksInYear } from 'date-fns'
+ export default getISOWeeksInYear
+}
+
+declare module 'date-fns/getISOWeekYear/index.js' {
+ import { getISOWeekYear } from 'date-fns'
+ export default getISOWeekYear
+}
+
+declare module 'date-fns/getMilliseconds/index.js' {
+ import { getMilliseconds } from 'date-fns'
+ export default getMilliseconds
+}
+
+declare module 'date-fns/getMinutes/index.js' {
+ import { getMinutes } from 'date-fns'
+ export default getMinutes
+}
+
+declare module 'date-fns/getMonth/index.js' {
+ import { getMonth } from 'date-fns'
+ export default getMonth
+}
+
+declare module 'date-fns/getOverlappingDaysInIntervals/index.js' {
+ import { getOverlappingDaysInIntervals } from 'date-fns'
+ export default getOverlappingDaysInIntervals
+}
+
+declare module 'date-fns/getQuarter/index.js' {
+ import { getQuarter } from 'date-fns'
+ export default getQuarter
+}
+
+declare module 'date-fns/getSeconds/index.js' {
+ import { getSeconds } from 'date-fns'
+ export default getSeconds
+}
+
+declare module 'date-fns/getTime/index.js' {
+ import { getTime } from 'date-fns'
+ export default getTime
+}
+
+declare module 'date-fns/getUnixTime/index.js' {
+ import { getUnixTime } from 'date-fns'
+ export default getUnixTime
+}
+
+declare module 'date-fns/getWeek/index.js' {
+ import { getWeek } from 'date-fns'
+ export default getWeek
+}
+
+declare module 'date-fns/getWeekOfMonth/index.js' {
+ import { getWeekOfMonth } from 'date-fns'
+ export default getWeekOfMonth
+}
+
+declare module 'date-fns/getWeeksInMonth/index.js' {
+ import { getWeeksInMonth } from 'date-fns'
+ export default getWeeksInMonth
+}
+
+declare module 'date-fns/getWeekYear/index.js' {
+ import { getWeekYear } from 'date-fns'
+ export default getWeekYear
+}
+
+declare module 'date-fns/getYear/index.js' {
+ import { getYear } from 'date-fns'
+ export default getYear
+}
+
+declare module 'date-fns/hoursToMilliseconds/index.js' {
+ import { hoursToMilliseconds } from 'date-fns'
+ export default hoursToMilliseconds
+}
+
+declare module 'date-fns/hoursToMinutes/index.js' {
+ import { hoursToMinutes } from 'date-fns'
+ export default hoursToMinutes
+}
+
+declare module 'date-fns/hoursToSeconds/index.js' {
+ import { hoursToSeconds } from 'date-fns'
+ export default hoursToSeconds
+}
+
+declare module 'date-fns/intervalToDuration/index.js' {
+ import { intervalToDuration } from 'date-fns'
+ export default intervalToDuration
+}
+
+declare module 'date-fns/intlFormat/index.js' {
+ import { intlFormat } from 'date-fns'
+ export default intlFormat
+}
+
+declare module 'date-fns/isAfter/index.js' {
+ import { isAfter } from 'date-fns'
+ export default isAfter
+}
+
+declare module 'date-fns/isBefore/index.js' {
+ import { isBefore } from 'date-fns'
+ export default isBefore
+}
+
+declare module 'date-fns/isDate/index.js' {
+ import { isDate } from 'date-fns'
+ export default isDate
+}
+
+declare module 'date-fns/isEqual/index.js' {
+ import { isEqual } from 'date-fns'
+ export default isEqual
+}
+
+declare module 'date-fns/isExists/index.js' {
+ import { isExists } from 'date-fns'
+ export default isExists
+}
+
+declare module 'date-fns/isFirstDayOfMonth/index.js' {
+ import { isFirstDayOfMonth } from 'date-fns'
+ export default isFirstDayOfMonth
+}
+
+declare module 'date-fns/isFriday/index.js' {
+ import { isFriday } from 'date-fns'
+ export default isFriday
+}
+
+declare module 'date-fns/isFuture/index.js' {
+ import { isFuture } from 'date-fns'
+ export default isFuture
+}
+
+declare module 'date-fns/isLastDayOfMonth/index.js' {
+ import { isLastDayOfMonth } from 'date-fns'
+ export default isLastDayOfMonth
+}
+
+declare module 'date-fns/isLeapYear/index.js' {
+ import { isLeapYear } from 'date-fns'
+ export default isLeapYear
+}
+
+declare module 'date-fns/isMatch/index.js' {
+ import { isMatch } from 'date-fns'
+ export default isMatch
+}
+
+declare module 'date-fns/isMonday/index.js' {
+ import { isMonday } from 'date-fns'
+ export default isMonday
+}
+
+declare module 'date-fns/isPast/index.js' {
+ import { isPast } from 'date-fns'
+ export default isPast
+}
+
+declare module 'date-fns/isSameDay/index.js' {
+ import { isSameDay } from 'date-fns'
+ export default isSameDay
+}
+
+declare module 'date-fns/isSameHour/index.js' {
+ import { isSameHour } from 'date-fns'
+ export default isSameHour
+}
+
+declare module 'date-fns/isSameISOWeek/index.js' {
+ import { isSameISOWeek } from 'date-fns'
+ export default isSameISOWeek
+}
+
+declare module 'date-fns/isSameISOWeekYear/index.js' {
+ import { isSameISOWeekYear } from 'date-fns'
+ export default isSameISOWeekYear
+}
+
+declare module 'date-fns/isSameMinute/index.js' {
+ import { isSameMinute } from 'date-fns'
+ export default isSameMinute
+}
+
+declare module 'date-fns/isSameMonth/index.js' {
+ import { isSameMonth } from 'date-fns'
+ export default isSameMonth
+}
+
+declare module 'date-fns/isSameQuarter/index.js' {
+ import { isSameQuarter } from 'date-fns'
+ export default isSameQuarter
+}
+
+declare module 'date-fns/isSameSecond/index.js' {
+ import { isSameSecond } from 'date-fns'
+ export default isSameSecond
+}
+
+declare module 'date-fns/isSameWeek/index.js' {
+ import { isSameWeek } from 'date-fns'
+ export default isSameWeek
+}
+
+declare module 'date-fns/isSameYear/index.js' {
+ import { isSameYear } from 'date-fns'
+ export default isSameYear
+}
+
+declare module 'date-fns/isSaturday/index.js' {
+ import { isSaturday } from 'date-fns'
+ export default isSaturday
+}
+
+declare module 'date-fns/isSunday/index.js' {
+ import { isSunday } from 'date-fns'
+ export default isSunday
+}
+
+declare module 'date-fns/isThisHour/index.js' {
+ import { isThisHour } from 'date-fns'
+ export default isThisHour
+}
+
+declare module 'date-fns/isThisISOWeek/index.js' {
+ import { isThisISOWeek } from 'date-fns'
+ export default isThisISOWeek
+}
+
+declare module 'date-fns/isThisMinute/index.js' {
+ import { isThisMinute } from 'date-fns'
+ export default isThisMinute
+}
+
+declare module 'date-fns/isThisMonth/index.js' {
+ import { isThisMonth } from 'date-fns'
+ export default isThisMonth
+}
+
+declare module 'date-fns/isThisQuarter/index.js' {
+ import { isThisQuarter } from 'date-fns'
+ export default isThisQuarter
+}
+
+declare module 'date-fns/isThisSecond/index.js' {
+ import { isThisSecond } from 'date-fns'
+ export default isThisSecond
+}
+
+declare module 'date-fns/isThisWeek/index.js' {
+ import { isThisWeek } from 'date-fns'
+ export default isThisWeek
+}
+
+declare module 'date-fns/isThisYear/index.js' {
+ import { isThisYear } from 'date-fns'
+ export default isThisYear
+}
+
+declare module 'date-fns/isThursday/index.js' {
+ import { isThursday } from 'date-fns'
+ export default isThursday
+}
+
+declare module 'date-fns/isToday/index.js' {
+ import { isToday } from 'date-fns'
+ export default isToday
+}
+
+declare module 'date-fns/isTomorrow/index.js' {
+ import { isTomorrow } from 'date-fns'
+ export default isTomorrow
+}
+
+declare module 'date-fns/isTuesday/index.js' {
+ import { isTuesday } from 'date-fns'
+ export default isTuesday
+}
+
+declare module 'date-fns/isValid/index.js' {
+ import { isValid } from 'date-fns'
+ export default isValid
+}
+
+declare module 'date-fns/isWednesday/index.js' {
+ import { isWednesday } from 'date-fns'
+ export default isWednesday
+}
+
+declare module 'date-fns/isWeekend/index.js' {
+ import { isWeekend } from 'date-fns'
+ export default isWeekend
+}
+
+declare module 'date-fns/isWithinInterval/index.js' {
+ import { isWithinInterval } from 'date-fns'
+ export default isWithinInterval
+}
+
+declare module 'date-fns/isYesterday/index.js' {
+ import { isYesterday } from 'date-fns'
+ export default isYesterday
+}
+
+declare module 'date-fns/lastDayOfDecade/index.js' {
+ import { lastDayOfDecade } from 'date-fns'
+ export default lastDayOfDecade
+}
+
+declare module 'date-fns/lastDayOfISOWeek/index.js' {
+ import { lastDayOfISOWeek } from 'date-fns'
+ export default lastDayOfISOWeek
+}
+
+declare module 'date-fns/lastDayOfISOWeekYear/index.js' {
+ import { lastDayOfISOWeekYear } from 'date-fns'
+ export default lastDayOfISOWeekYear
+}
+
+declare module 'date-fns/lastDayOfMonth/index.js' {
+ import { lastDayOfMonth } from 'date-fns'
+ export default lastDayOfMonth
+}
+
+declare module 'date-fns/lastDayOfQuarter/index.js' {
+ import { lastDayOfQuarter } from 'date-fns'
+ export default lastDayOfQuarter
+}
+
+declare module 'date-fns/lastDayOfWeek/index.js' {
+ import { lastDayOfWeek } from 'date-fns'
+ export default lastDayOfWeek
+}
+
+declare module 'date-fns/lastDayOfYear/index.js' {
+ import { lastDayOfYear } from 'date-fns'
+ export default lastDayOfYear
+}
+
+declare module 'date-fns/lightFormat/index.js' {
+ import { lightFormat } from 'date-fns'
+ export default lightFormat
+}
+
+declare module 'date-fns/max/index.js' {
+ import { max } from 'date-fns'
+ export default max
+}
+
+declare module 'date-fns/milliseconds/index.js' {
+ import { milliseconds } from 'date-fns'
+ export default milliseconds
+}
+
+declare module 'date-fns/millisecondsToHours/index.js' {
+ import { millisecondsToHours } from 'date-fns'
+ export default millisecondsToHours
+}
+
+declare module 'date-fns/millisecondsToMinutes/index.js' {
+ import { millisecondsToMinutes } from 'date-fns'
+ export default millisecondsToMinutes
+}
+
+declare module 'date-fns/millisecondsToSeconds/index.js' {
+ import { millisecondsToSeconds } from 'date-fns'
+ export default millisecondsToSeconds
+}
+
+declare module 'date-fns/min/index.js' {
+ import { min } from 'date-fns'
+ export default min
+}
+
+declare module 'date-fns/minutesToHours/index.js' {
+ import { minutesToHours } from 'date-fns'
+ export default minutesToHours
+}
+
+declare module 'date-fns/minutesToMilliseconds/index.js' {
+ import { minutesToMilliseconds } from 'date-fns'
+ export default minutesToMilliseconds
+}
+
+declare module 'date-fns/minutesToSeconds/index.js' {
+ import { minutesToSeconds } from 'date-fns'
+ export default minutesToSeconds
+}
+
+declare module 'date-fns/monthsToQuarters/index.js' {
+ import { monthsToQuarters } from 'date-fns'
+ export default monthsToQuarters
+}
+
+declare module 'date-fns/monthsToYears/index.js' {
+ import { monthsToYears } from 'date-fns'
+ export default monthsToYears
+}
+
+declare module 'date-fns/nextDay/index.js' {
+ import { nextDay } from 'date-fns'
+ export default nextDay
+}
+
+declare module 'date-fns/nextFriday/index.js' {
+ import { nextFriday } from 'date-fns'
+ export default nextFriday
+}
+
+declare module 'date-fns/nextMonday/index.js' {
+ import { nextMonday } from 'date-fns'
+ export default nextMonday
+}
+
+declare module 'date-fns/nextSaturday/index.js' {
+ import { nextSaturday } from 'date-fns'
+ export default nextSaturday
+}
+
+declare module 'date-fns/nextSunday/index.js' {
+ import { nextSunday } from 'date-fns'
+ export default nextSunday
+}
+
+declare module 'date-fns/nextThursday/index.js' {
+ import { nextThursday } from 'date-fns'
+ export default nextThursday
+}
+
+declare module 'date-fns/nextTuesday/index.js' {
+ import { nextTuesday } from 'date-fns'
+ export default nextTuesday
+}
+
+declare module 'date-fns/nextWednesday/index.js' {
+ import { nextWednesday } from 'date-fns'
+ export default nextWednesday
+}
+
+declare module 'date-fns/parse/index.js' {
+ import { parse } from 'date-fns'
+ export default parse
+}
+
+declare module 'date-fns/parseISO/index.js' {
+ import { parseISO } from 'date-fns'
+ export default parseISO
+}
+
+declare module 'date-fns/parseJSON/index.js' {
+ import { parseJSON } from 'date-fns'
+ export default parseJSON
+}
+
+declare module 'date-fns/quartersToMonths/index.js' {
+ import { quartersToMonths } from 'date-fns'
+ export default quartersToMonths
+}
+
+declare module 'date-fns/quartersToYears/index.js' {
+ import { quartersToYears } from 'date-fns'
+ export default quartersToYears
+}
+
+declare module 'date-fns/roundToNearestMinutes/index.js' {
+ import { roundToNearestMinutes } from 'date-fns'
+ export default roundToNearestMinutes
+}
+
+declare module 'date-fns/secondsToHours/index.js' {
+ import { secondsToHours } from 'date-fns'
+ export default secondsToHours
+}
+
+declare module 'date-fns/secondsToMilliseconds/index.js' {
+ import { secondsToMilliseconds } from 'date-fns'
+ export default secondsToMilliseconds
+}
+
+declare module 'date-fns/secondsToMinutes/index.js' {
+ import { secondsToMinutes } from 'date-fns'
+ export default secondsToMinutes
+}
+
+declare module 'date-fns/set/index.js' {
+ import { set } from 'date-fns'
+ export default set
+}
+
+declare module 'date-fns/setDate/index.js' {
+ import { setDate } from 'date-fns'
+ export default setDate
+}
+
+declare module 'date-fns/setDay/index.js' {
+ import { setDay } from 'date-fns'
+ export default setDay
+}
+
+declare module 'date-fns/setDayOfYear/index.js' {
+ import { setDayOfYear } from 'date-fns'
+ export default setDayOfYear
+}
+
+declare module 'date-fns/setHours/index.js' {
+ import { setHours } from 'date-fns'
+ export default setHours
+}
+
+declare module 'date-fns/setISODay/index.js' {
+ import { setISODay } from 'date-fns'
+ export default setISODay
+}
+
+declare module 'date-fns/setISOWeek/index.js' {
+ import { setISOWeek } from 'date-fns'
+ export default setISOWeek
+}
+
+declare module 'date-fns/setISOWeekYear/index.js' {
+ import { setISOWeekYear } from 'date-fns'
+ export default setISOWeekYear
+}
+
+declare module 'date-fns/setMilliseconds/index.js' {
+ import { setMilliseconds } from 'date-fns'
+ export default setMilliseconds
+}
+
+declare module 'date-fns/setMinutes/index.js' {
+ import { setMinutes } from 'date-fns'
+ export default setMinutes
+}
+
+declare module 'date-fns/setMonth/index.js' {
+ import { setMonth } from 'date-fns'
+ export default setMonth
+}
+
+declare module 'date-fns/setQuarter/index.js' {
+ import { setQuarter } from 'date-fns'
+ export default setQuarter
+}
+
+declare module 'date-fns/setSeconds/index.js' {
+ import { setSeconds } from 'date-fns'
+ export default setSeconds
+}
+
+declare module 'date-fns/setWeek/index.js' {
+ import { setWeek } from 'date-fns'
+ export default setWeek
+}
+
+declare module 'date-fns/setWeekYear/index.js' {
+ import { setWeekYear } from 'date-fns'
+ export default setWeekYear
+}
+
+declare module 'date-fns/setYear/index.js' {
+ import { setYear } from 'date-fns'
+ export default setYear
+}
+
+declare module 'date-fns/startOfDay/index.js' {
+ import { startOfDay } from 'date-fns'
+ export default startOfDay
+}
+
+declare module 'date-fns/startOfDecade/index.js' {
+ import { startOfDecade } from 'date-fns'
+ export default startOfDecade
+}
+
+declare module 'date-fns/startOfHour/index.js' {
+ import { startOfHour } from 'date-fns'
+ export default startOfHour
+}
+
+declare module 'date-fns/startOfISOWeek/index.js' {
+ import { startOfISOWeek } from 'date-fns'
+ export default startOfISOWeek
+}
+
+declare module 'date-fns/startOfISOWeekYear/index.js' {
+ import { startOfISOWeekYear } from 'date-fns'
+ export default startOfISOWeekYear
+}
+
+declare module 'date-fns/startOfMinute/index.js' {
+ import { startOfMinute } from 'date-fns'
+ export default startOfMinute
+}
+
+declare module 'date-fns/startOfMonth/index.js' {
+ import { startOfMonth } from 'date-fns'
+ export default startOfMonth
+}
+
+declare module 'date-fns/startOfQuarter/index.js' {
+ import { startOfQuarter } from 'date-fns'
+ export default startOfQuarter
+}
+
+declare module 'date-fns/startOfSecond/index.js' {
+ import { startOfSecond } from 'date-fns'
+ export default startOfSecond
+}
+
+declare module 'date-fns/startOfToday/index.js' {
+ import { startOfToday } from 'date-fns'
+ export default startOfToday
+}
+
+declare module 'date-fns/startOfTomorrow/index.js' {
+ import { startOfTomorrow } from 'date-fns'
+ export default startOfTomorrow
+}
+
+declare module 'date-fns/startOfWeek/index.js' {
+ import { startOfWeek } from 'date-fns'
+ export default startOfWeek
+}
+
+declare module 'date-fns/startOfWeekYear/index.js' {
+ import { startOfWeekYear } from 'date-fns'
+ export default startOfWeekYear
+}
+
+declare module 'date-fns/startOfYear/index.js' {
+ import { startOfYear } from 'date-fns'
+ export default startOfYear
+}
+
+declare module 'date-fns/startOfYesterday/index.js' {
+ import { startOfYesterday } from 'date-fns'
+ export default startOfYesterday
+}
+
+declare module 'date-fns/sub/index.js' {
+ import { sub } from 'date-fns'
+ export default sub
+}
+
+declare module 'date-fns/subBusinessDays/index.js' {
+ import { subBusinessDays } from 'date-fns'
+ export default subBusinessDays
+}
+
+declare module 'date-fns/subDays/index.js' {
+ import { subDays } from 'date-fns'
+ export default subDays
+}
+
+declare module 'date-fns/subHours/index.js' {
+ import { subHours } from 'date-fns'
+ export default subHours
+}
+
+declare module 'date-fns/subISOWeekYears/index.js' {
+ import { subISOWeekYears } from 'date-fns'
+ export default subISOWeekYears
+}
+
+declare module 'date-fns/subMilliseconds/index.js' {
+ import { subMilliseconds } from 'date-fns'
+ export default subMilliseconds
+}
+
+declare module 'date-fns/subMinutes/index.js' {
+ import { subMinutes } from 'date-fns'
+ export default subMinutes
+}
+
+declare module 'date-fns/subMonths/index.js' {
+ import { subMonths } from 'date-fns'
+ export default subMonths
+}
+
+declare module 'date-fns/subQuarters/index.js' {
+ import { subQuarters } from 'date-fns'
+ export default subQuarters
+}
+
+declare module 'date-fns/subSeconds/index.js' {
+ import { subSeconds } from 'date-fns'
+ export default subSeconds
+}
+
+declare module 'date-fns/subWeeks/index.js' {
+ import { subWeeks } from 'date-fns'
+ export default subWeeks
+}
+
+declare module 'date-fns/subYears/index.js' {
+ import { subYears } from 'date-fns'
+ export default subYears
+}
+
+declare module 'date-fns/toDate/index.js' {
+ import { toDate } from 'date-fns'
+ export default toDate
+}
+
+declare module 'date-fns/weeksToDays/index.js' {
+ import { weeksToDays } from 'date-fns'
+ export default weeksToDays
+}
+
+declare module 'date-fns/yearsToMonths/index.js' {
+ import { yearsToMonths } from 'date-fns'
+ export default yearsToMonths
+}
+
+declare module 'date-fns/yearsToQuarters/index.js' {
+ import { yearsToQuarters } from 'date-fns'
+ export default yearsToQuarters
+}
+
+// FP Functions
+
+declare module 'date-fns/fp' {
+ const add: CurriedFn2<Duration, Date | number, Date>
+ namespace add {}
+
+ const addBusinessDays: CurriedFn2<number, Date | number, Date>
+ namespace addBusinessDays {}
+
+ const addDays: CurriedFn2<number, Date | number, Date>
+ namespace addDays {}
+
+ const addHours: CurriedFn2<number, Date | number, Date>
+ namespace addHours {}
+
+ const addISOWeekYears: CurriedFn2<number, Date | number, Date>
+ namespace addISOWeekYears {}
+
+ const addMilliseconds: CurriedFn2<number, Date | number, Date>
+ namespace addMilliseconds {}
+
+ const addMinutes: CurriedFn2<number, Date | number, Date>
+ namespace addMinutes {}
+
+ const addMonths: CurriedFn2<number, Date | number, Date>
+ namespace addMonths {}
+
+ const addQuarters: CurriedFn2<number, Date | number, Date>
+ namespace addQuarters {}
+
+ const addSeconds: CurriedFn2<number, Date | number, Date>
+ namespace addSeconds {}
+
+ const addWeeks: CurriedFn2<number, Date | number, Date>
+ namespace addWeeks {}
+
+ const addYears: CurriedFn2<number, Date | number, Date>
+ namespace addYears {}
+
+ const areIntervalsOverlapping: CurriedFn2<Interval, Interval, boolean>
+ namespace areIntervalsOverlapping {}
+
+ const areIntervalsOverlappingWithOptions: CurriedFn3<
+ {
+ inclusive?: boolean
+ },
+ Interval,
+ Interval,
+ boolean
+ >
+ namespace areIntervalsOverlappingWithOptions {}
+
+ const closestIndexTo: CurriedFn2<(Date | number)[], Date | number, number>
+ namespace closestIndexTo {}
+
+ const closestTo: CurriedFn2<(Date | number)[], Date | number, Date>
+ namespace closestTo {}
+
+ const compareAsc: CurriedFn2<Date | number, Date | number, number>
+ namespace compareAsc {}
+
+ const compareDesc: CurriedFn2<Date | number, Date | number, number>
+ namespace compareDesc {}
+
+ const daysToWeeks: CurriedFn1<number, number>
+ namespace daysToWeeks {}
+
+ const differenceInBusinessDays: CurriedFn2<
+ Date | number,
+ Date | number,
+ number
+ >
+ namespace differenceInBusinessDays {}
+
+ const differenceInCalendarDays: CurriedFn2<
+ Date | number,
+ Date | number,
+ number
+ >
+ namespace differenceInCalendarDays {}
+
+ const differenceInCalendarISOWeeks: CurriedFn2<
+ Date | number,
+ Date | number,
+ number
+ >
+ namespace differenceInCalendarISOWeeks {}
+
+ const differenceInCalendarISOWeekYears: CurriedFn2<
+ Date | number,
+ Date | number,
+ number
+ >
+ namespace differenceInCalendarISOWeekYears {}
+
+ const differenceInCalendarMonths: CurriedFn2<
+ Date | number,
+ Date | number,
+ number
+ >
+ namespace differenceInCalendarMonths {}
+
+ const differenceInCalendarQuarters: CurriedFn2<
+ Date | number,
+ Date | number,
+ number
+ >
+ namespace differenceInCalendarQuarters {}
+
+ const differenceInCalendarWeeks: CurriedFn2<
+ Date | number,
+ Date | number,
+ number
+ >
+ namespace differenceInCalendarWeeks {}
+
+ const differenceInCalendarWeeksWithOptions: CurriedFn3<
+ {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6
+ locale?: Locale
+ },
+ Date | number,
+ Date | number,
+ number
+ >
+ namespace differenceInCalendarWeeksWithOptions {}
+
+ const differenceInCalendarYears: CurriedFn2<
+ Date | number,
+ Date | number,
+ number
+ >
+ namespace differenceInCalendarYears {}
+
+ const differenceInDays: CurriedFn2<Date | number, Date | number, number>
+ namespace differenceInDays {}
+
+ const differenceInHours: CurriedFn2<Date | number, Date | number, number>
+ namespace differenceInHours {}
+
+ const differenceInISOWeekYears: CurriedFn2<
+ Date | number,
+ Date | number,
+ number
+ >
+ namespace differenceInISOWeekYears {}
+
+ const differenceInMilliseconds: CurriedFn2<
+ Date | number,
+ Date | number,
+ number
+ >
+ namespace differenceInMilliseconds {}
+
+ const differenceInMinutes: CurriedFn2<Date | number, Date | number, number>
+ namespace differenceInMinutes {}
+
+ const differenceInMonths: CurriedFn2<Date | number, Date | number, number>
+ namespace differenceInMonths {}
+
+ const differenceInQuarters: CurriedFn2<Date | number, Date | number, number>
+ namespace differenceInQuarters {}
+
+ const differenceInSeconds: CurriedFn2<Date | number, Date | number, number>
+ namespace differenceInSeconds {}
+
+ const differenceInWeeks: CurriedFn2<Date | number, Date | number, number>
+ namespace differenceInWeeks {}
+
+ const differenceInYears: CurriedFn2<Date | number, Date | number, number>
+ namespace differenceInYears {}
+
+ const eachDayOfInterval: CurriedFn1<Interval, Date[]>
+ namespace eachDayOfInterval {}
+
+ const eachDayOfIntervalWithOptions: CurriedFn2<
+ {
+ step?: number
+ },
+ Interval,
+ Date[]
+ >
+ namespace eachDayOfIntervalWithOptions {}
+
+ const eachHourOfInterval: CurriedFn1<Interval, Date[]>
+ namespace eachHourOfInterval {}
+
+ const eachHourOfIntervalWithOptions: CurriedFn2<
+ {
+ step?: number
+ },
+ Interval,
+ Date[]
+ >
+ namespace eachHourOfIntervalWithOptions {}
+
+ const eachMinuteOfInterval: CurriedFn1<Interval, Date[]>
+ namespace eachMinuteOfInterval {}
+
+ const eachMinuteOfIntervalWithOptions: CurriedFn2<
+ {
+ step?: number
+ },
+ Interval,
+ Date[]
+ >
+ namespace eachMinuteOfIntervalWithOptions {}
+
+ const eachMonthOfInterval: CurriedFn1<Interval, Date[]>
+ namespace eachMonthOfInterval {}
+
+ const eachQuarterOfInterval: CurriedFn1<Interval, Date[]>
+ namespace eachQuarterOfInterval {}
+
+ const eachWeekendOfInterval: CurriedFn1<Interval, Date[]>
+ namespace eachWeekendOfInterval {}
+
+ const eachWeekendOfMonth: CurriedFn1<Date | number, Date[]>
+ namespace eachWeekendOfMonth {}
+
+ const eachWeekendOfYear: CurriedFn1<Date | number, Date[]>
+ namespace eachWeekendOfYear {}
+
+ const eachWeekOfInterval: CurriedFn1<Interval, Date[]>
+ namespace eachWeekOfInterval {}
+
+ const eachWeekOfIntervalWithOptions: CurriedFn2<
+ {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6
+ locale?: Locale
+ },
+ Interval,
+ Date[]
+ >
+ namespace eachWeekOfIntervalWithOptions {}
+
+ const eachYearOfInterval: CurriedFn1<Interval, Date[]>
+ namespace eachYearOfInterval {}
+
+ const endOfDay: CurriedFn1<Date | number, Date>
+ namespace endOfDay {}
+
+ const endOfDecade: CurriedFn1<Date | number, Date>
+ namespace endOfDecade {}
+
+ const endOfDecadeWithOptions: CurriedFn2<
+ {
+ additionalDigits?: 0 | 1 | 2
+ },
+ Date | number,
+ Date
+ >
+ namespace endOfDecadeWithOptions {}
+
+ const endOfHour: CurriedFn1<Date | number, Date>
+ namespace endOfHour {}
+
+ const endOfISOWeek: CurriedFn1<Date | number, Date>
+ namespace endOfISOWeek {}
+
+ const endOfISOWeekYear: CurriedFn1<Date | number, Date>
+ namespace endOfISOWeekYear {}
+
+ const endOfMinute: CurriedFn1<Date | number, Date>
+ namespace endOfMinute {}
+
+ const endOfMonth: CurriedFn1<Date | number, Date>
+ namespace endOfMonth {}
+
+ const endOfQuarter: CurriedFn1<Date | number, Date>
+ namespace endOfQuarter {}
+
+ const endOfSecond: CurriedFn1<Date | number, Date>
+ namespace endOfSecond {}
+
+ const endOfWeek: CurriedFn1<Date | number, Date>
+ namespace endOfWeek {}
+
+ const endOfWeekWithOptions: CurriedFn2<
+ {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6
+ locale?: Locale
+ },
+ Date | number,
+ Date
+ >
+ namespace endOfWeekWithOptions {}
+
+ const endOfYear: CurriedFn1<Date | number, Date>
+ namespace endOfYear {}
+
+ const format: CurriedFn2<string, Date | number, string>
+ namespace format {}
+
+ const formatDistance: CurriedFn2<Date | number, Date | number, string>
+ namespace formatDistance {}
+
+ const formatDistanceStrict: CurriedFn2<Date | number, Date | number, string>
+ namespace formatDistanceStrict {}
+
+ const formatDistanceStrictWithOptions: CurriedFn3<
+ {
+ locale?: Locale
+ roundingMethod?: 'floor' | 'ceil' | 'round'
+ unit?: 'second' | 'minute' | 'hour' | 'day' | 'month' | 'year'
+ addSuffix?: boolean
+ },
+ Date | number,
+ Date | number,
+ string
+ >
+ namespace formatDistanceStrictWithOptions {}
+
+ const formatDistanceWithOptions: CurriedFn3<
+ {
+ locale?: Locale
+ addSuffix?: boolean
+ includeSeconds?: boolean
+ },
+ Date | number,
+ Date | number,
+ string
+ >
+ namespace formatDistanceWithOptions {}
+
+ const formatDuration: CurriedFn1<Duration, string>
+ namespace formatDuration {}
+
+ const formatDurationWithOptions: CurriedFn2<
+ {
+ locale?: Locale
+ delimiter?: string
+ zero?: boolean
+ format?: string[]
+ },
+ Duration,
+ string
+ >
+ namespace formatDurationWithOptions {}
+
+ const formatISO: CurriedFn1<Date | number, string>
+ namespace formatISO {}
+
+ const formatISO9075: CurriedFn1<Date | number, string>
+ namespace formatISO9075 {}
+
+ const formatISO9075WithOptions: CurriedFn2<
+ {
+ representation?: 'complete' | 'date' | 'time'
+ format?: 'extended' | 'basic'
+ },
+ Date | number,
+ string
+ >
+ namespace formatISO9075WithOptions {}
+
+ const formatISODuration: CurriedFn1<Duration, string>
+ namespace formatISODuration {}
+
+ const formatISOWithOptions: CurriedFn2<
+ {
+ representation?: 'complete' | 'date' | 'time'
+ format?: 'extended' | 'basic'
+ },
+ Date | number,
+ string
+ >
+ namespace formatISOWithOptions {}
+
+ const formatRelative: CurriedFn2<Date | number, Date | number, string>
+ namespace formatRelative {}
+
+ const formatRelativeWithOptions: CurriedFn3<
+ {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6
+ locale?: Locale
+ },
+ Date | number,
+ Date | number,
+ string
+ >
+ namespace formatRelativeWithOptions {}
+
+ const formatRFC3339: CurriedFn1<Date | number, string>
+ namespace formatRFC3339 {}
+
+ const formatRFC3339WithOptions: CurriedFn2<
+ {
+ fractionDigits?: 0 | 1 | 2 | 3
+ },
+ Date | number,
+ string
+ >
+ namespace formatRFC3339WithOptions {}
+
+ const formatRFC7231: CurriedFn1<Date | number, string>
+ namespace formatRFC7231 {}
+
+ const formatWithOptions: CurriedFn3<
+ {
+ useAdditionalDayOfYearTokens?: boolean
+ useAdditionalWeekYearTokens?: boolean
+ firstWeekContainsDate?: number
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6
+ locale?: Locale
+ },
+ string,
+ Date | number,
+ string
+ >
+ namespace formatWithOptions {}
+
+ const fromUnixTime: CurriedFn1<number, Date>
+ namespace fromUnixTime {}
+
+ const getDate: CurriedFn1<Date | number, number>
+ namespace getDate {}
+
+ const getDay: CurriedFn1<Date | number, 0 | 1 | 2 | 3 | 4 | 5 | 6>
+ namespace getDay {}
+
+ const getDayOfYear: CurriedFn1<Date | number, number>
+ namespace getDayOfYear {}
+
+ const getDaysInMonth: CurriedFn1<Date | number, number>
+ namespace getDaysInMonth {}
+
+ const getDaysInYear: CurriedFn1<Date | number, number>
+ namespace getDaysInYear {}
+
+ const getDecade: CurriedFn1<Date | number, number>
+ namespace getDecade {}
+
+ const getHours: CurriedFn1<Date | number, number>
+ namespace getHours {}
+
+ const getISODay: CurriedFn1<Date | number, number>
+ namespace getISODay {}
+
+ const getISOWeek: CurriedFn1<Date | number, number>
+ namespace getISOWeek {}
+
+ const getISOWeeksInYear: CurriedFn1<Date | number, number>
+ namespace getISOWeeksInYear {}
+
+ const getISOWeekYear: CurriedFn1<Date | number, number>
+ namespace getISOWeekYear {}
+
+ const getMilliseconds: CurriedFn1<Date | number, number>
+ namespace getMilliseconds {}
+
+ const getMinutes: CurriedFn1<Date | number, number>
+ namespace getMinutes {}
+
+ const getMonth: CurriedFn1<Date | number, number>
+ namespace getMonth {}
+
+ const getOverlappingDaysInIntervals: CurriedFn2<Interval, Interval, number>
+ namespace getOverlappingDaysInIntervals {}
+
+ const getQuarter: CurriedFn1<Date | number, number>
+ namespace getQuarter {}
+
+ const getSeconds: CurriedFn1<Date | number, number>
+ namespace getSeconds {}
+
+ const getTime: CurriedFn1<Date | number, number>
+ namespace getTime {}
+
+ const getUnixTime: CurriedFn1<Date | number, number>
+ namespace getUnixTime {}
+
+ const getWeek: CurriedFn1<Date | number, number>
+ namespace getWeek {}
+
+ const getWeekOfMonth: CurriedFn1<Date | number, number>
+ namespace getWeekOfMonth {}
+
+ const getWeekOfMonthWithOptions: CurriedFn2<
+ {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6
+ locale?: Locale
+ },
+ Date | number,
+ number
+ >
+ namespace getWeekOfMonthWithOptions {}
+
+ const getWeeksInMonth: CurriedFn1<Date | number, number>
+ namespace getWeeksInMonth {}
+
+ const getWeeksInMonthWithOptions: CurriedFn2<
+ {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6
+ locale?: Locale
+ },
+ Date | number,
+ number
+ >
+ namespace getWeeksInMonthWithOptions {}
+
+ const getWeekWithOptions: CurriedFn2<
+ {
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6
+ locale?: Locale
+ },
+ Date | number,
+ number
+ >
+ namespace getWeekWithOptions {}
+
+ const getWeekYear: CurriedFn1<Date | number, number>
+ namespace getWeekYear {}
+
+ const getWeekYearWithOptions: CurriedFn2<
+ {
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6
+ locale?: Locale
+ },
+ Date | number,
+ number
+ >
+ namespace getWeekYearWithOptions {}
+
+ const getYear: CurriedFn1<Date | number, number>
+ namespace getYear {}
+
+ const hoursToMilliseconds: CurriedFn1<number, number>
+ namespace hoursToMilliseconds {}
+
+ const hoursToMinutes: CurriedFn1<number, number>
+ namespace hoursToMinutes {}
+
+ const hoursToSeconds: CurriedFn1<number, number>
+ namespace hoursToSeconds {}
+
+ const intervalToDuration: CurriedFn1<Interval, Duration>
+ namespace intervalToDuration {}
+
+ const intlFormat: CurriedFn3<
+ {
+ locale?: string | string[]
+ },
+ {
+ timeZone?: string
+ hour12?: boolean
+ formatMatcher?: 'basic' | 'best fit'
+ timeZoneName?: 'short' | 'long'
+ second?: 'numeric' | '2-digit'
+ minute?: 'numeric' | '2-digit'
+ hour?: 'numeric' | '2-digit'
+ day?: 'numeric' | '2-digit'
+ month?: 'numeric' | '2-digit' | 'narrow' | 'short' | 'long'
+ year?: 'numeric' | '2-digit'
+ era?: 'narrow' | 'short' | 'long'
+ weekday?: 'narrow' | 'short' | 'long'
+ localeMatcher?: 'lookup' | 'best fit'
+ },
+ Date | number,
+ string
+ >
+ namespace intlFormat {}
+
+ const isAfter: CurriedFn2<Date | number, Date | number, boolean>
+ namespace isAfter {}
+
+ const isBefore: CurriedFn2<Date | number, Date | number, boolean>
+ namespace isBefore {}
+
+ const isDate: CurriedFn1<any, boolean>
+ namespace isDate {}
+
+ const isEqual: CurriedFn2<Date | number, Date | number, boolean>
+ namespace isEqual {}
+
+ const isExists: CurriedFn3<number, number, number, boolean>
+ namespace isExists {}
+
+ const isFirstDayOfMonth: CurriedFn1<Date | number, boolean>
+ namespace isFirstDayOfMonth {}
+
+ const isFriday: CurriedFn1<Date | number, boolean>
+ namespace isFriday {}
+
+ const isLastDayOfMonth: CurriedFn1<Date | number, boolean>
+ namespace isLastDayOfMonth {}
+
+ const isLeapYear: CurriedFn1<Date | number, boolean>
+ namespace isLeapYear {}
+
+ const isMatch: CurriedFn2<string, string, boolean>
+ namespace isMatch {}
+
+ const isMatchWithOptions: CurriedFn3<
+ {
+ useAdditionalDayOfYearTokens?: boolean
+ useAdditionalWeekYearTokens?: boolean
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6
+ locale?: Locale
+ },
+ string,
+ string,
+ boolean
+ >
+ namespace isMatchWithOptions {}
+
+ const isMonday: CurriedFn1<Date | number, boolean>
+ namespace isMonday {}
+
+ const isSameDay: CurriedFn2<Date | number, Date | number, boolean>
+ namespace isSameDay {}
+
+ const isSameHour: CurriedFn2<Date | number, Date | number, boolean>
+ namespace isSameHour {}
+
+ const isSameISOWeek: CurriedFn2<Date | number, Date | number, boolean>
+ namespace isSameISOWeek {}
+
+ const isSameISOWeekYear: CurriedFn2<Date | number, Date | number, boolean>
+ namespace isSameISOWeekYear {}
+
+ const isSameMinute: CurriedFn2<Date | number, Date | number, boolean>
+ namespace isSameMinute {}
+
+ const isSameMonth: CurriedFn2<Date | number, Date | number, boolean>
+ namespace isSameMonth {}
+
+ const isSameQuarter: CurriedFn2<Date | number, Date | number, boolean>
+ namespace isSameQuarter {}
+
+ const isSameSecond: CurriedFn2<Date | number, Date | number, boolean>
+ namespace isSameSecond {}
+
+ const isSameWeek: CurriedFn2<Date | number, Date | number, boolean>
+ namespace isSameWeek {}
+
+ const isSameWeekWithOptions: CurriedFn3<
+ {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6
+ locale?: Locale
+ },
+ Date | number,
+ Date | number,
+ boolean
+ >
+ namespace isSameWeekWithOptions {}
+
+ const isSameYear: CurriedFn2<Date | number, Date | number, boolean>
+ namespace isSameYear {}
+
+ const isSaturday: CurriedFn1<Date | number, boolean>
+ namespace isSaturday {}
+
+ const isSunday: CurriedFn1<Date | number, boolean>
+ namespace isSunday {}
+
+ const isThursday: CurriedFn1<Date | number, boolean>
+ namespace isThursday {}
+
+ const isTuesday: CurriedFn1<Date | number, boolean>
+ namespace isTuesday {}
+
+ const isValid: CurriedFn1<any, boolean>
+ namespace isValid {}
+
+ const isWednesday: CurriedFn1<Date | number, boolean>
+ namespace isWednesday {}
+
+ const isWeekend: CurriedFn1<Date | number, boolean>
+ namespace isWeekend {}
+
+ const isWithinInterval: CurriedFn2<Interval, Date | number, boolean>
+ namespace isWithinInterval {}
+
+ const lastDayOfDecade: CurriedFn1<Date | number, Date>
+ namespace lastDayOfDecade {}
+
+ const lastDayOfISOWeek: CurriedFn1<Date | number, Date>
+ namespace lastDayOfISOWeek {}
+
+ const lastDayOfISOWeekYear: CurriedFn1<Date | number, Date>
+ namespace lastDayOfISOWeekYear {}
+
+ const lastDayOfMonth: CurriedFn1<Date | number, Date>
+ namespace lastDayOfMonth {}
+
+ const lastDayOfQuarter: CurriedFn1<Date | number, Date>
+ namespace lastDayOfQuarter {}
+
+ const lastDayOfQuarterWithOptions: CurriedFn2<
+ {
+ additionalDigits?: 0 | 1 | 2
+ },
+ Date | number,
+ Date
+ >
+ namespace lastDayOfQuarterWithOptions {}
+
+ const lastDayOfWeek: CurriedFn1<Date | number, Date>
+ namespace lastDayOfWeek {}
+
+ const lastDayOfWeekWithOptions: CurriedFn2<
+ {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6
+ locale?: Locale
+ },
+ Date | number,
+ Date
+ >
+ namespace lastDayOfWeekWithOptions {}
+
+ const lastDayOfYear: CurriedFn1<Date | number, Date>
+ namespace lastDayOfYear {}
+
+ const lightFormat: CurriedFn2<string, Date | number, string>
+ namespace lightFormat {}
+
+ const max: CurriedFn1<(Date | number)[], Date>
+ namespace max {}
+
+ const milliseconds: CurriedFn1<Duration, number>
+ namespace milliseconds {}
+
+ const millisecondsToHours: CurriedFn1<number, number>
+ namespace millisecondsToHours {}
+
+ const millisecondsToMinutes: CurriedFn1<number, number>
+ namespace millisecondsToMinutes {}
+
+ const millisecondsToSeconds: CurriedFn1<number, number>
+ namespace millisecondsToSeconds {}
+
+ const min: CurriedFn1<(Date | number)[], Date>
+ namespace min {}
+
+ const minutesToHours: CurriedFn1<number, number>
+ namespace minutesToHours {}
+
+ const minutesToMilliseconds: CurriedFn1<number, number>
+ namespace minutesToMilliseconds {}
+
+ const minutesToSeconds: CurriedFn1<number, number>
+ namespace minutesToSeconds {}
+
+ const monthsToQuarters: CurriedFn1<number, number>
+ namespace monthsToQuarters {}
+
+ const monthsToYears: CurriedFn1<number, number>
+ namespace monthsToYears {}
+
+ const nextDay: CurriedFn2<Day, Date | number, Date>
+ namespace nextDay {}
+
+ const nextFriday: CurriedFn1<Date | number, Date>
+ namespace nextFriday {}
+
+ const nextMonday: CurriedFn1<Date | number, Date>
+ namespace nextMonday {}
+
+ const nextSaturday: CurriedFn1<Date | number, Date>
+ namespace nextSaturday {}
+
+ const nextSunday: CurriedFn1<Date | number, Date>
+ namespace nextSunday {}
+
+ const nextThursday: CurriedFn1<Date | number, Date>
+ namespace nextThursday {}
+
+ const nextTuesday: CurriedFn1<Date | number, Date>
+ namespace nextTuesday {}
+
+ const nextWednesday: CurriedFn1<Date | number, Date>
+ namespace nextWednesday {}
+
+ const parse: CurriedFn3<Date | number, string, string, Date>
+ namespace parse {}
+
+ const parseISO: CurriedFn1<string, Date>
+ namespace parseISO {}
+
+ const parseISOWithOptions: CurriedFn2<
+ {
+ additionalDigits?: 0 | 1 | 2
+ },
+ string,
+ Date
+ >
+ namespace parseISOWithOptions {}
+
+ const parseJSON: CurriedFn1<string | number | Date, Date>
+ namespace parseJSON {}
+
+ const parseWithOptions: CurriedFn4<
+ {
+ useAdditionalDayOfYearTokens?: boolean
+ useAdditionalWeekYearTokens?: boolean
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6
+ locale?: Locale
+ },
+ Date | number,
+ string,
+ string,
+ Date
+ >
+ namespace parseWithOptions {}
+
+ const quartersToMonths: CurriedFn1<number, number>
+ namespace quartersToMonths {}
+
+ const quartersToYears: CurriedFn1<number, number>
+ namespace quartersToYears {}
+
+ const roundToNearestMinutes: CurriedFn1<Date | number, Date>
+ namespace roundToNearestMinutes {}
+
+ const roundToNearestMinutesWithOptions: CurriedFn2<
+ {
+ nearestTo?: number
+ },
+ Date | number,
+ Date
+ >
+ namespace roundToNearestMinutesWithOptions {}
+
+ const secondsToHours: CurriedFn1<number, number>
+ namespace secondsToHours {}
+
+ const secondsToMilliseconds: CurriedFn1<number, number>
+ namespace secondsToMilliseconds {}
+
+ const secondsToMinutes: CurriedFn1<number, number>
+ namespace secondsToMinutes {}
+
+ const set: CurriedFn2<
+ {
+ milliseconds?: number
+ seconds?: number
+ minutes?: number
+ hours?: number
+ date?: number
+ month?: number
+ year?: number
+ },
+ Date | number,
+ Date
+ >
+ namespace set {}
+
+ const setDate: CurriedFn2<number, Date | number, Date>
+ namespace setDate {}
+
+ const setDay: CurriedFn2<number, Date | number, Date>
+ namespace setDay {}
+
+ const setDayOfYear: CurriedFn2<number, Date | number, Date>
+ namespace setDayOfYear {}
+
+ const setDayWithOptions: CurriedFn3<
+ {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6
+ locale?: Locale
+ },
+ number,
+ Date | number,
+ Date
+ >
+ namespace setDayWithOptions {}
+
+ const setHours: CurriedFn2<number, Date | number, Date>
+ namespace setHours {}
+
+ const setISODay: CurriedFn2<number, Date | number, Date>
+ namespace setISODay {}
+
+ const setISOWeek: CurriedFn2<number, Date | number, Date>
+ namespace setISOWeek {}
+
+ const setISOWeekYear: CurriedFn2<number, Date | number, Date>
+ namespace setISOWeekYear {}
+
+ const setMilliseconds: CurriedFn2<number, Date | number, Date>
+ namespace setMilliseconds {}
+
+ const setMinutes: CurriedFn2<number, Date | number, Date>
+ namespace setMinutes {}
+
+ const setMonth: CurriedFn2<number, Date | number, Date>
+ namespace setMonth {}
+
+ const setQuarter: CurriedFn2<number, Date | number, Date>
+ namespace setQuarter {}
+
+ const setSeconds: CurriedFn2<number, Date | number, Date>
+ namespace setSeconds {}
+
+ const setWeek: CurriedFn2<number, Date | number, Date>
+ namespace setWeek {}
+
+ const setWeekWithOptions: CurriedFn3<
+ {
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6
+ locale?: Locale
+ },
+ number,
+ Date | number,
+ Date
+ >
+ namespace setWeekWithOptions {}
+
+ const setWeekYear: CurriedFn2<number, Date | number, Date>
+ namespace setWeekYear {}
+
+ const setWeekYearWithOptions: CurriedFn3<
+ {
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6
+ locale?: Locale
+ },
+ number,
+ Date | number,
+ Date
+ >
+ namespace setWeekYearWithOptions {}
+
+ const setYear: CurriedFn2<number, Date | number, Date>
+ namespace setYear {}
+
+ const startOfDay: CurriedFn1<Date | number, Date>
+ namespace startOfDay {}
+
+ const startOfDecade: CurriedFn1<Date | number, Date>
+ namespace startOfDecade {}
+
+ const startOfHour: CurriedFn1<Date | number, Date>
+ namespace startOfHour {}
+
+ const startOfISOWeek: CurriedFn1<Date | number, Date>
+ namespace startOfISOWeek {}
+
+ const startOfISOWeekYear: CurriedFn1<Date | number, Date>
+ namespace startOfISOWeekYear {}
+
+ const startOfMinute: CurriedFn1<Date | number, Date>
+ namespace startOfMinute {}
+
+ const startOfMonth: CurriedFn1<Date | number, Date>
+ namespace startOfMonth {}
+
+ const startOfQuarter: CurriedFn1<Date | number, Date>
+ namespace startOfQuarter {}
+
+ const startOfSecond: CurriedFn1<Date | number, Date>
+ namespace startOfSecond {}
+
+ const startOfWeek: CurriedFn1<Date | number, Date>
+ namespace startOfWeek {}
+
+ const startOfWeekWithOptions: CurriedFn2<
+ {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6
+ locale?: Locale
+ },
+ Date | number,
+ Date
+ >
+ namespace startOfWeekWithOptions {}
+
+ const startOfWeekYear: CurriedFn1<Date | number, Date>
+ namespace startOfWeekYear {}
+
+ const startOfWeekYearWithOptions: CurriedFn2<
+ {
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6
+ locale?: Locale
+ },
+ Date | number,
+ Date
+ >
+ namespace startOfWeekYearWithOptions {}
+
+ const startOfYear: CurriedFn1<Date | number, Date>
+ namespace startOfYear {}
+
+ const sub: CurriedFn2<Duration, Date | number, Date>
+ namespace sub {}
+
+ const subBusinessDays: CurriedFn2<number, Date | number, Date>
+ namespace subBusinessDays {}
+
+ const subDays: CurriedFn2<number, Date | number, Date>
+ namespace subDays {}
+
+ const subHours: CurriedFn2<number, Date | number, Date>
+ namespace subHours {}
+
+ const subISOWeekYears: CurriedFn2<number, Date | number, Date>
+ namespace subISOWeekYears {}
+
+ const subMilliseconds: CurriedFn2<number, Date | number, Date>
+ namespace subMilliseconds {}
+
+ const subMinutes: CurriedFn2<number, Date | number, Date>
+ namespace subMinutes {}
+
+ const subMonths: CurriedFn2<number, Date | number, Date>
+ namespace subMonths {}
+
+ const subQuarters: CurriedFn2<number, Date | number, Date>
+ namespace subQuarters {}
+
+ const subSeconds: CurriedFn2<number, Date | number, Date>
+ namespace subSeconds {}
+
+ const subWeeks: CurriedFn2<number, Date | number, Date>
+ namespace subWeeks {}
+
+ const subYears: CurriedFn2<number, Date | number, Date>
+ namespace subYears {}
+
+ const toDate: CurriedFn1<Date | number, Date>
+ namespace toDate {}
+
+ const weeksToDays: CurriedFn1<number, number>
+ namespace weeksToDays {}
+
+ const yearsToMonths: CurriedFn1<number, number>
+ namespace yearsToMonths {}
+
+ const yearsToQuarters: CurriedFn1<number, number>
+ namespace yearsToQuarters {}
+
+ const daysInWeek: number
+
+ const maxTime: number
+
+ const millisecondsInMinute: number
+
+ const millisecondsInHour: number
+
+ const millisecondsInSecond: number
+
+ const minTime: number
+
+ const minutesInHour: number
+
+ const monthsInQuarter: number
+
+ const monthsInYear: number
+
+ const quartersInYear: number
+
+ const secondsInHour: number
+
+ const secondsInMinute: number
+}
+
+declare module 'date-fns/fp/add' {
+ import { add } from 'date-fns/fp'
+ export default add
+}
+
+declare module 'date-fns/fp/addBusinessDays' {
+ import { addBusinessDays } from 'date-fns/fp'
+ export default addBusinessDays
+}
+
+declare module 'date-fns/fp/addDays' {
+ import { addDays } from 'date-fns/fp'
+ export default addDays
+}
+
+declare module 'date-fns/fp/addHours' {
+ import { addHours } from 'date-fns/fp'
+ export default addHours
+}
+
+declare module 'date-fns/fp/addISOWeekYears' {
+ import { addISOWeekYears } from 'date-fns/fp'
+ export default addISOWeekYears
+}
+
+declare module 'date-fns/fp/addMilliseconds' {
+ import { addMilliseconds } from 'date-fns/fp'
+ export default addMilliseconds
+}
+
+declare module 'date-fns/fp/addMinutes' {
+ import { addMinutes } from 'date-fns/fp'
+ export default addMinutes
+}
+
+declare module 'date-fns/fp/addMonths' {
+ import { addMonths } from 'date-fns/fp'
+ export default addMonths
+}
+
+declare module 'date-fns/fp/addQuarters' {
+ import { addQuarters } from 'date-fns/fp'
+ export default addQuarters
+}
+
+declare module 'date-fns/fp/addSeconds' {
+ import { addSeconds } from 'date-fns/fp'
+ export default addSeconds
+}
+
+declare module 'date-fns/fp/addWeeks' {
+ import { addWeeks } from 'date-fns/fp'
+ export default addWeeks
+}
+
+declare module 'date-fns/fp/addYears' {
+ import { addYears } from 'date-fns/fp'
+ export default addYears
+}
+
+declare module 'date-fns/fp/areIntervalsOverlapping' {
+ import { areIntervalsOverlapping } from 'date-fns/fp'
+ export default areIntervalsOverlapping
+}
+
+declare module 'date-fns/fp/areIntervalsOverlappingWithOptions' {
+ import { areIntervalsOverlappingWithOptions } from 'date-fns/fp'
+ export default areIntervalsOverlappingWithOptions
+}
+
+declare module 'date-fns/fp/closestIndexTo' {
+ import { closestIndexTo } from 'date-fns/fp'
+ export default closestIndexTo
+}
+
+declare module 'date-fns/fp/closestTo' {
+ import { closestTo } from 'date-fns/fp'
+ export default closestTo
+}
+
+declare module 'date-fns/fp/compareAsc' {
+ import { compareAsc } from 'date-fns/fp'
+ export default compareAsc
+}
+
+declare module 'date-fns/fp/compareDesc' {
+ import { compareDesc } from 'date-fns/fp'
+ export default compareDesc
+}
+
+declare module 'date-fns/fp/daysToWeeks' {
+ import { daysToWeeks } from 'date-fns/fp'
+ export default daysToWeeks
+}
+
+declare module 'date-fns/fp/differenceInBusinessDays' {
+ import { differenceInBusinessDays } from 'date-fns/fp'
+ export default differenceInBusinessDays
+}
+
+declare module 'date-fns/fp/differenceInCalendarDays' {
+ import { differenceInCalendarDays } from 'date-fns/fp'
+ export default differenceInCalendarDays
+}
+
+declare module 'date-fns/fp/differenceInCalendarISOWeeks' {
+ import { differenceInCalendarISOWeeks } from 'date-fns/fp'
+ export default differenceInCalendarISOWeeks
+}
+
+declare module 'date-fns/fp/differenceInCalendarISOWeekYears' {
+ import { differenceInCalendarISOWeekYears } from 'date-fns/fp'
+ export default differenceInCalendarISOWeekYears
+}
+
+declare module 'date-fns/fp/differenceInCalendarMonths' {
+ import { differenceInCalendarMonths } from 'date-fns/fp'
+ export default differenceInCalendarMonths
+}
+
+declare module 'date-fns/fp/differenceInCalendarQuarters' {
+ import { differenceInCalendarQuarters } from 'date-fns/fp'
+ export default differenceInCalendarQuarters
+}
+
+declare module 'date-fns/fp/differenceInCalendarWeeks' {
+ import { differenceInCalendarWeeks } from 'date-fns/fp'
+ export default differenceInCalendarWeeks
+}
+
+declare module 'date-fns/fp/differenceInCalendarWeeksWithOptions' {
+ import { differenceInCalendarWeeksWithOptions } from 'date-fns/fp'
+ export default differenceInCalendarWeeksWithOptions
+}
+
+declare module 'date-fns/fp/differenceInCalendarYears' {
+ import { differenceInCalendarYears } from 'date-fns/fp'
+ export default differenceInCalendarYears
+}
+
+declare module 'date-fns/fp/differenceInDays' {
+ import { differenceInDays } from 'date-fns/fp'
+ export default differenceInDays
+}
+
+declare module 'date-fns/fp/differenceInHours' {
+ import { differenceInHours } from 'date-fns/fp'
+ export default differenceInHours
+}
+
+declare module 'date-fns/fp/differenceInISOWeekYears' {
+ import { differenceInISOWeekYears } from 'date-fns/fp'
+ export default differenceInISOWeekYears
+}
+
+declare module 'date-fns/fp/differenceInMilliseconds' {
+ import { differenceInMilliseconds } from 'date-fns/fp'
+ export default differenceInMilliseconds
+}
+
+declare module 'date-fns/fp/differenceInMinutes' {
+ import { differenceInMinutes } from 'date-fns/fp'
+ export default differenceInMinutes
+}
+
+declare module 'date-fns/fp/differenceInMonths' {
+ import { differenceInMonths } from 'date-fns/fp'
+ export default differenceInMonths
+}
+
+declare module 'date-fns/fp/differenceInQuarters' {
+ import { differenceInQuarters } from 'date-fns/fp'
+ export default differenceInQuarters
+}
+
+declare module 'date-fns/fp/differenceInSeconds' {
+ import { differenceInSeconds } from 'date-fns/fp'
+ export default differenceInSeconds
+}
+
+declare module 'date-fns/fp/differenceInWeeks' {
+ import { differenceInWeeks } from 'date-fns/fp'
+ export default differenceInWeeks
+}
+
+declare module 'date-fns/fp/differenceInYears' {
+ import { differenceInYears } from 'date-fns/fp'
+ export default differenceInYears
+}
+
+declare module 'date-fns/fp/eachDayOfInterval' {
+ import { eachDayOfInterval } from 'date-fns/fp'
+ export default eachDayOfInterval
+}
+
+declare module 'date-fns/fp/eachDayOfIntervalWithOptions' {
+ import { eachDayOfIntervalWithOptions } from 'date-fns/fp'
+ export default eachDayOfIntervalWithOptions
+}
+
+declare module 'date-fns/fp/eachHourOfInterval' {
+ import { eachHourOfInterval } from 'date-fns/fp'
+ export default eachHourOfInterval
+}
+
+declare module 'date-fns/fp/eachHourOfIntervalWithOptions' {
+ import { eachHourOfIntervalWithOptions } from 'date-fns/fp'
+ export default eachHourOfIntervalWithOptions
+}
+
+declare module 'date-fns/fp/eachMinuteOfInterval' {
+ import { eachMinuteOfInterval } from 'date-fns/fp'
+ export default eachMinuteOfInterval
+}
+
+declare module 'date-fns/fp/eachMinuteOfIntervalWithOptions' {
+ import { eachMinuteOfIntervalWithOptions } from 'date-fns/fp'
+ export default eachMinuteOfIntervalWithOptions
+}
+
+declare module 'date-fns/fp/eachMonthOfInterval' {
+ import { eachMonthOfInterval } from 'date-fns/fp'
+ export default eachMonthOfInterval
+}
+
+declare module 'date-fns/fp/eachQuarterOfInterval' {
+ import { eachQuarterOfInterval } from 'date-fns/fp'
+ export default eachQuarterOfInterval
+}
+
+declare module 'date-fns/fp/eachWeekendOfInterval' {
+ import { eachWeekendOfInterval } from 'date-fns/fp'
+ export default eachWeekendOfInterval
+}
+
+declare module 'date-fns/fp/eachWeekendOfMonth' {
+ import { eachWeekendOfMonth } from 'date-fns/fp'
+ export default eachWeekendOfMonth
+}
+
+declare module 'date-fns/fp/eachWeekendOfYear' {
+ import { eachWeekendOfYear } from 'date-fns/fp'
+ export default eachWeekendOfYear
+}
+
+declare module 'date-fns/fp/eachWeekOfInterval' {
+ import { eachWeekOfInterval } from 'date-fns/fp'
+ export default eachWeekOfInterval
+}
+
+declare module 'date-fns/fp/eachWeekOfIntervalWithOptions' {
+ import { eachWeekOfIntervalWithOptions } from 'date-fns/fp'
+ export default eachWeekOfIntervalWithOptions
+}
+
+declare module 'date-fns/fp/eachYearOfInterval' {
+ import { eachYearOfInterval } from 'date-fns/fp'
+ export default eachYearOfInterval
+}
+
+declare module 'date-fns/fp/endOfDay' {
+ import { endOfDay } from 'date-fns/fp'
+ export default endOfDay
+}
+
+declare module 'date-fns/fp/endOfDecade' {
+ import { endOfDecade } from 'date-fns/fp'
+ export default endOfDecade
+}
+
+declare module 'date-fns/fp/endOfDecadeWithOptions' {
+ import { endOfDecadeWithOptions } from 'date-fns/fp'
+ export default endOfDecadeWithOptions
+}
+
+declare module 'date-fns/fp/endOfHour' {
+ import { endOfHour } from 'date-fns/fp'
+ export default endOfHour
+}
+
+declare module 'date-fns/fp/endOfISOWeek' {
+ import { endOfISOWeek } from 'date-fns/fp'
+ export default endOfISOWeek
+}
+
+declare module 'date-fns/fp/endOfISOWeekYear' {
+ import { endOfISOWeekYear } from 'date-fns/fp'
+ export default endOfISOWeekYear
+}
+
+declare module 'date-fns/fp/endOfMinute' {
+ import { endOfMinute } from 'date-fns/fp'
+ export default endOfMinute
+}
+
+declare module 'date-fns/fp/endOfMonth' {
+ import { endOfMonth } from 'date-fns/fp'
+ export default endOfMonth
+}
+
+declare module 'date-fns/fp/endOfQuarter' {
+ import { endOfQuarter } from 'date-fns/fp'
+ export default endOfQuarter
+}
+
+declare module 'date-fns/fp/endOfSecond' {
+ import { endOfSecond } from 'date-fns/fp'
+ export default endOfSecond
+}
+
+declare module 'date-fns/fp/endOfWeek' {
+ import { endOfWeek } from 'date-fns/fp'
+ export default endOfWeek
+}
+
+declare module 'date-fns/fp/endOfWeekWithOptions' {
+ import { endOfWeekWithOptions } from 'date-fns/fp'
+ export default endOfWeekWithOptions
+}
+
+declare module 'date-fns/fp/endOfYear' {
+ import { endOfYear } from 'date-fns/fp'
+ export default endOfYear
+}
+
+declare module 'date-fns/fp/format' {
+ import { format } from 'date-fns/fp'
+ export default format
+}
+
+declare module 'date-fns/fp/formatDistance' {
+ import { formatDistance } from 'date-fns/fp'
+ export default formatDistance
+}
+
+declare module 'date-fns/fp/formatDistanceStrict' {
+ import { formatDistanceStrict } from 'date-fns/fp'
+ export default formatDistanceStrict
+}
+
+declare module 'date-fns/fp/formatDistanceStrictWithOptions' {
+ import { formatDistanceStrictWithOptions } from 'date-fns/fp'
+ export default formatDistanceStrictWithOptions
+}
+
+declare module 'date-fns/fp/formatDistanceWithOptions' {
+ import { formatDistanceWithOptions } from 'date-fns/fp'
+ export default formatDistanceWithOptions
+}
+
+declare module 'date-fns/fp/formatDuration' {
+ import { formatDuration } from 'date-fns/fp'
+ export default formatDuration
+}
+
+declare module 'date-fns/fp/formatDurationWithOptions' {
+ import { formatDurationWithOptions } from 'date-fns/fp'
+ export default formatDurationWithOptions
+}
+
+declare module 'date-fns/fp/formatISO' {
+ import { formatISO } from 'date-fns/fp'
+ export default formatISO
+}
+
+declare module 'date-fns/fp/formatISO9075' {
+ import { formatISO9075 } from 'date-fns/fp'
+ export default formatISO9075
+}
+
+declare module 'date-fns/fp/formatISO9075WithOptions' {
+ import { formatISO9075WithOptions } from 'date-fns/fp'
+ export default formatISO9075WithOptions
+}
+
+declare module 'date-fns/fp/formatISODuration' {
+ import { formatISODuration } from 'date-fns/fp'
+ export default formatISODuration
+}
+
+declare module 'date-fns/fp/formatISOWithOptions' {
+ import { formatISOWithOptions } from 'date-fns/fp'
+ export default formatISOWithOptions
+}
+
+declare module 'date-fns/fp/formatRelative' {
+ import { formatRelative } from 'date-fns/fp'
+ export default formatRelative
+}
+
+declare module 'date-fns/fp/formatRelativeWithOptions' {
+ import { formatRelativeWithOptions } from 'date-fns/fp'
+ export default formatRelativeWithOptions
+}
+
+declare module 'date-fns/fp/formatRFC3339' {
+ import { formatRFC3339 } from 'date-fns/fp'
+ export default formatRFC3339
+}
+
+declare module 'date-fns/fp/formatRFC3339WithOptions' {
+ import { formatRFC3339WithOptions } from 'date-fns/fp'
+ export default formatRFC3339WithOptions
+}
+
+declare module 'date-fns/fp/formatRFC7231' {
+ import { formatRFC7231 } from 'date-fns/fp'
+ export default formatRFC7231
+}
+
+declare module 'date-fns/fp/formatWithOptions' {
+ import { formatWithOptions } from 'date-fns/fp'
+ export default formatWithOptions
+}
+
+declare module 'date-fns/fp/fromUnixTime' {
+ import { fromUnixTime } from 'date-fns/fp'
+ export default fromUnixTime
+}
+
+declare module 'date-fns/fp/getDate' {
+ import { getDate } from 'date-fns/fp'
+ export default getDate
+}
+
+declare module 'date-fns/fp/getDay' {
+ import { getDay } from 'date-fns/fp'
+ export default getDay
+}
+
+declare module 'date-fns/fp/getDayOfYear' {
+ import { getDayOfYear } from 'date-fns/fp'
+ export default getDayOfYear
+}
+
+declare module 'date-fns/fp/getDaysInMonth' {
+ import { getDaysInMonth } from 'date-fns/fp'
+ export default getDaysInMonth
+}
+
+declare module 'date-fns/fp/getDaysInYear' {
+ import { getDaysInYear } from 'date-fns/fp'
+ export default getDaysInYear
+}
+
+declare module 'date-fns/fp/getDecade' {
+ import { getDecade } from 'date-fns/fp'
+ export default getDecade
+}
+
+declare module 'date-fns/fp/getHours' {
+ import { getHours } from 'date-fns/fp'
+ export default getHours
+}
+
+declare module 'date-fns/fp/getISODay' {
+ import { getISODay } from 'date-fns/fp'
+ export default getISODay
+}
+
+declare module 'date-fns/fp/getISOWeek' {
+ import { getISOWeek } from 'date-fns/fp'
+ export default getISOWeek
+}
+
+declare module 'date-fns/fp/getISOWeeksInYear' {
+ import { getISOWeeksInYear } from 'date-fns/fp'
+ export default getISOWeeksInYear
+}
+
+declare module 'date-fns/fp/getISOWeekYear' {
+ import { getISOWeekYear } from 'date-fns/fp'
+ export default getISOWeekYear
+}
+
+declare module 'date-fns/fp/getMilliseconds' {
+ import { getMilliseconds } from 'date-fns/fp'
+ export default getMilliseconds
+}
+
+declare module 'date-fns/fp/getMinutes' {
+ import { getMinutes } from 'date-fns/fp'
+ export default getMinutes
+}
+
+declare module 'date-fns/fp/getMonth' {
+ import { getMonth } from 'date-fns/fp'
+ export default getMonth
+}
+
+declare module 'date-fns/fp/getOverlappingDaysInIntervals' {
+ import { getOverlappingDaysInIntervals } from 'date-fns/fp'
+ export default getOverlappingDaysInIntervals
+}
+
+declare module 'date-fns/fp/getQuarter' {
+ import { getQuarter } from 'date-fns/fp'
+ export default getQuarter
+}
+
+declare module 'date-fns/fp/getSeconds' {
+ import { getSeconds } from 'date-fns/fp'
+ export default getSeconds
+}
+
+declare module 'date-fns/fp/getTime' {
+ import { getTime } from 'date-fns/fp'
+ export default getTime
+}
+
+declare module 'date-fns/fp/getUnixTime' {
+ import { getUnixTime } from 'date-fns/fp'
+ export default getUnixTime
+}
+
+declare module 'date-fns/fp/getWeek' {
+ import { getWeek } from 'date-fns/fp'
+ export default getWeek
+}
+
+declare module 'date-fns/fp/getWeekOfMonth' {
+ import { getWeekOfMonth } from 'date-fns/fp'
+ export default getWeekOfMonth
+}
+
+declare module 'date-fns/fp/getWeekOfMonthWithOptions' {
+ import { getWeekOfMonthWithOptions } from 'date-fns/fp'
+ export default getWeekOfMonthWithOptions
+}
+
+declare module 'date-fns/fp/getWeeksInMonth' {
+ import { getWeeksInMonth } from 'date-fns/fp'
+ export default getWeeksInMonth
+}
+
+declare module 'date-fns/fp/getWeeksInMonthWithOptions' {
+ import { getWeeksInMonthWithOptions } from 'date-fns/fp'
+ export default getWeeksInMonthWithOptions
+}
+
+declare module 'date-fns/fp/getWeekWithOptions' {
+ import { getWeekWithOptions } from 'date-fns/fp'
+ export default getWeekWithOptions
+}
+
+declare module 'date-fns/fp/getWeekYear' {
+ import { getWeekYear } from 'date-fns/fp'
+ export default getWeekYear
+}
+
+declare module 'date-fns/fp/getWeekYearWithOptions' {
+ import { getWeekYearWithOptions } from 'date-fns/fp'
+ export default getWeekYearWithOptions
+}
+
+declare module 'date-fns/fp/getYear' {
+ import { getYear } from 'date-fns/fp'
+ export default getYear
+}
+
+declare module 'date-fns/fp/hoursToMilliseconds' {
+ import { hoursToMilliseconds } from 'date-fns/fp'
+ export default hoursToMilliseconds
+}
+
+declare module 'date-fns/fp/hoursToMinutes' {
+ import { hoursToMinutes } from 'date-fns/fp'
+ export default hoursToMinutes
+}
+
+declare module 'date-fns/fp/hoursToSeconds' {
+ import { hoursToSeconds } from 'date-fns/fp'
+ export default hoursToSeconds
+}
+
+declare module 'date-fns/fp/intervalToDuration' {
+ import { intervalToDuration } from 'date-fns/fp'
+ export default intervalToDuration
+}
+
+declare module 'date-fns/fp/intlFormat' {
+ import { intlFormat } from 'date-fns/fp'
+ export default intlFormat
+}
+
+declare module 'date-fns/fp/isAfter' {
+ import { isAfter } from 'date-fns/fp'
+ export default isAfter
+}
+
+declare module 'date-fns/fp/isBefore' {
+ import { isBefore } from 'date-fns/fp'
+ export default isBefore
+}
+
+declare module 'date-fns/fp/isDate' {
+ import { isDate } from 'date-fns/fp'
+ export default isDate
+}
+
+declare module 'date-fns/fp/isEqual' {
+ import { isEqual } from 'date-fns/fp'
+ export default isEqual
+}
+
+declare module 'date-fns/fp/isExists' {
+ import { isExists } from 'date-fns/fp'
+ export default isExists
+}
+
+declare module 'date-fns/fp/isFirstDayOfMonth' {
+ import { isFirstDayOfMonth } from 'date-fns/fp'
+ export default isFirstDayOfMonth
+}
+
+declare module 'date-fns/fp/isFriday' {
+ import { isFriday } from 'date-fns/fp'
+ export default isFriday
+}
+
+declare module 'date-fns/fp/isLastDayOfMonth' {
+ import { isLastDayOfMonth } from 'date-fns/fp'
+ export default isLastDayOfMonth
+}
+
+declare module 'date-fns/fp/isLeapYear' {
+ import { isLeapYear } from 'date-fns/fp'
+ export default isLeapYear
+}
+
+declare module 'date-fns/fp/isMatch' {
+ import { isMatch } from 'date-fns/fp'
+ export default isMatch
+}
+
+declare module 'date-fns/fp/isMatchWithOptions' {
+ import { isMatchWithOptions } from 'date-fns/fp'
+ export default isMatchWithOptions
+}
+
+declare module 'date-fns/fp/isMonday' {
+ import { isMonday } from 'date-fns/fp'
+ export default isMonday
+}
+
+declare module 'date-fns/fp/isSameDay' {
+ import { isSameDay } from 'date-fns/fp'
+ export default isSameDay
+}
+
+declare module 'date-fns/fp/isSameHour' {
+ import { isSameHour } from 'date-fns/fp'
+ export default isSameHour
+}
+
+declare module 'date-fns/fp/isSameISOWeek' {
+ import { isSameISOWeek } from 'date-fns/fp'
+ export default isSameISOWeek
+}
+
+declare module 'date-fns/fp/isSameISOWeekYear' {
+ import { isSameISOWeekYear } from 'date-fns/fp'
+ export default isSameISOWeekYear
+}
+
+declare module 'date-fns/fp/isSameMinute' {
+ import { isSameMinute } from 'date-fns/fp'
+ export default isSameMinute
+}
+
+declare module 'date-fns/fp/isSameMonth' {
+ import { isSameMonth } from 'date-fns/fp'
+ export default isSameMonth
+}
+
+declare module 'date-fns/fp/isSameQuarter' {
+ import { isSameQuarter } from 'date-fns/fp'
+ export default isSameQuarter
+}
+
+declare module 'date-fns/fp/isSameSecond' {
+ import { isSameSecond } from 'date-fns/fp'
+ export default isSameSecond
+}
+
+declare module 'date-fns/fp/isSameWeek' {
+ import { isSameWeek } from 'date-fns/fp'
+ export default isSameWeek
+}
+
+declare module 'date-fns/fp/isSameWeekWithOptions' {
+ import { isSameWeekWithOptions } from 'date-fns/fp'
+ export default isSameWeekWithOptions
+}
+
+declare module 'date-fns/fp/isSameYear' {
+ import { isSameYear } from 'date-fns/fp'
+ export default isSameYear
+}
+
+declare module 'date-fns/fp/isSaturday' {
+ import { isSaturday } from 'date-fns/fp'
+ export default isSaturday
+}
+
+declare module 'date-fns/fp/isSunday' {
+ import { isSunday } from 'date-fns/fp'
+ export default isSunday
+}
+
+declare module 'date-fns/fp/isThursday' {
+ import { isThursday } from 'date-fns/fp'
+ export default isThursday
+}
+
+declare module 'date-fns/fp/isTuesday' {
+ import { isTuesday } from 'date-fns/fp'
+ export default isTuesday
+}
+
+declare module 'date-fns/fp/isValid' {
+ import { isValid } from 'date-fns/fp'
+ export default isValid
+}
+
+declare module 'date-fns/fp/isWednesday' {
+ import { isWednesday } from 'date-fns/fp'
+ export default isWednesday
+}
+
+declare module 'date-fns/fp/isWeekend' {
+ import { isWeekend } from 'date-fns/fp'
+ export default isWeekend
+}
+
+declare module 'date-fns/fp/isWithinInterval' {
+ import { isWithinInterval } from 'date-fns/fp'
+ export default isWithinInterval
+}
+
+declare module 'date-fns/fp/lastDayOfDecade' {
+ import { lastDayOfDecade } from 'date-fns/fp'
+ export default lastDayOfDecade
+}
+
+declare module 'date-fns/fp/lastDayOfISOWeek' {
+ import { lastDayOfISOWeek } from 'date-fns/fp'
+ export default lastDayOfISOWeek
+}
+
+declare module 'date-fns/fp/lastDayOfISOWeekYear' {
+ import { lastDayOfISOWeekYear } from 'date-fns/fp'
+ export default lastDayOfISOWeekYear
+}
+
+declare module 'date-fns/fp/lastDayOfMonth' {
+ import { lastDayOfMonth } from 'date-fns/fp'
+ export default lastDayOfMonth
+}
+
+declare module 'date-fns/fp/lastDayOfQuarter' {
+ import { lastDayOfQuarter } from 'date-fns/fp'
+ export default lastDayOfQuarter
+}
+
+declare module 'date-fns/fp/lastDayOfQuarterWithOptions' {
+ import { lastDayOfQuarterWithOptions } from 'date-fns/fp'
+ export default lastDayOfQuarterWithOptions
+}
+
+declare module 'date-fns/fp/lastDayOfWeek' {
+ import { lastDayOfWeek } from 'date-fns/fp'
+ export default lastDayOfWeek
+}
+
+declare module 'date-fns/fp/lastDayOfWeekWithOptions' {
+ import { lastDayOfWeekWithOptions } from 'date-fns/fp'
+ export default lastDayOfWeekWithOptions
+}
+
+declare module 'date-fns/fp/lastDayOfYear' {
+ import { lastDayOfYear } from 'date-fns/fp'
+ export default lastDayOfYear
+}
+
+declare module 'date-fns/fp/lightFormat' {
+ import { lightFormat } from 'date-fns/fp'
+ export default lightFormat
+}
+
+declare module 'date-fns/fp/max' {
+ import { max } from 'date-fns/fp'
+ export default max
+}
+
+declare module 'date-fns/fp/milliseconds' {
+ import { milliseconds } from 'date-fns/fp'
+ export default milliseconds
+}
+
+declare module 'date-fns/fp/millisecondsToHours' {
+ import { millisecondsToHours } from 'date-fns/fp'
+ export default millisecondsToHours
+}
+
+declare module 'date-fns/fp/millisecondsToMinutes' {
+ import { millisecondsToMinutes } from 'date-fns/fp'
+ export default millisecondsToMinutes
+}
+
+declare module 'date-fns/fp/millisecondsToSeconds' {
+ import { millisecondsToSeconds } from 'date-fns/fp'
+ export default millisecondsToSeconds
+}
+
+declare module 'date-fns/fp/min' {
+ import { min } from 'date-fns/fp'
+ export default min
+}
+
+declare module 'date-fns/fp/minutesToHours' {
+ import { minutesToHours } from 'date-fns/fp'
+ export default minutesToHours
+}
+
+declare module 'date-fns/fp/minutesToMilliseconds' {
+ import { minutesToMilliseconds } from 'date-fns/fp'
+ export default minutesToMilliseconds
+}
+
+declare module 'date-fns/fp/minutesToSeconds' {
+ import { minutesToSeconds } from 'date-fns/fp'
+ export default minutesToSeconds
+}
+
+declare module 'date-fns/fp/monthsToQuarters' {
+ import { monthsToQuarters } from 'date-fns/fp'
+ export default monthsToQuarters
+}
+
+declare module 'date-fns/fp/monthsToYears' {
+ import { monthsToYears } from 'date-fns/fp'
+ export default monthsToYears
+}
+
+declare module 'date-fns/fp/nextDay' {
+ import { nextDay } from 'date-fns/fp'
+ export default nextDay
+}
+
+declare module 'date-fns/fp/nextFriday' {
+ import { nextFriday } from 'date-fns/fp'
+ export default nextFriday
+}
+
+declare module 'date-fns/fp/nextMonday' {
+ import { nextMonday } from 'date-fns/fp'
+ export default nextMonday
+}
+
+declare module 'date-fns/fp/nextSaturday' {
+ import { nextSaturday } from 'date-fns/fp'
+ export default nextSaturday
+}
+
+declare module 'date-fns/fp/nextSunday' {
+ import { nextSunday } from 'date-fns/fp'
+ export default nextSunday
+}
+
+declare module 'date-fns/fp/nextThursday' {
+ import { nextThursday } from 'date-fns/fp'
+ export default nextThursday
+}
+
+declare module 'date-fns/fp/nextTuesday' {
+ import { nextTuesday } from 'date-fns/fp'
+ export default nextTuesday
+}
+
+declare module 'date-fns/fp/nextWednesday' {
+ import { nextWednesday } from 'date-fns/fp'
+ export default nextWednesday
+}
+
+declare module 'date-fns/fp/parse' {
+ import { parse } from 'date-fns/fp'
+ export default parse
+}
+
+declare module 'date-fns/fp/parseISO' {
+ import { parseISO } from 'date-fns/fp'
+ export default parseISO
+}
+
+declare module 'date-fns/fp/parseISOWithOptions' {
+ import { parseISOWithOptions } from 'date-fns/fp'
+ export default parseISOWithOptions
+}
+
+declare module 'date-fns/fp/parseJSON' {
+ import { parseJSON } from 'date-fns/fp'
+ export default parseJSON
+}
+
+declare module 'date-fns/fp/parseWithOptions' {
+ import { parseWithOptions } from 'date-fns/fp'
+ export default parseWithOptions
+}
+
+declare module 'date-fns/fp/quartersToMonths' {
+ import { quartersToMonths } from 'date-fns/fp'
+ export default quartersToMonths
+}
+
+declare module 'date-fns/fp/quartersToYears' {
+ import { quartersToYears } from 'date-fns/fp'
+ export default quartersToYears
+}
+
+declare module 'date-fns/fp/roundToNearestMinutes' {
+ import { roundToNearestMinutes } from 'date-fns/fp'
+ export default roundToNearestMinutes
+}
+
+declare module 'date-fns/fp/roundToNearestMinutesWithOptions' {
+ import { roundToNearestMinutesWithOptions } from 'date-fns/fp'
+ export default roundToNearestMinutesWithOptions
+}
+
+declare module 'date-fns/fp/secondsToHours' {
+ import { secondsToHours } from 'date-fns/fp'
+ export default secondsToHours
+}
+
+declare module 'date-fns/fp/secondsToMilliseconds' {
+ import { secondsToMilliseconds } from 'date-fns/fp'
+ export default secondsToMilliseconds
+}
+
+declare module 'date-fns/fp/secondsToMinutes' {
+ import { secondsToMinutes } from 'date-fns/fp'
+ export default secondsToMinutes
+}
+
+declare module 'date-fns/fp/set' {
+ import { set } from 'date-fns/fp'
+ export default set
+}
+
+declare module 'date-fns/fp/setDate' {
+ import { setDate } from 'date-fns/fp'
+ export default setDate
+}
+
+declare module 'date-fns/fp/setDay' {
+ import { setDay } from 'date-fns/fp'
+ export default setDay
+}
+
+declare module 'date-fns/fp/setDayOfYear' {
+ import { setDayOfYear } from 'date-fns/fp'
+ export default setDayOfYear
+}
+
+declare module 'date-fns/fp/setDayWithOptions' {
+ import { setDayWithOptions } from 'date-fns/fp'
+ export default setDayWithOptions
+}
+
+declare module 'date-fns/fp/setHours' {
+ import { setHours } from 'date-fns/fp'
+ export default setHours
+}
+
+declare module 'date-fns/fp/setISODay' {
+ import { setISODay } from 'date-fns/fp'
+ export default setISODay
+}
+
+declare module 'date-fns/fp/setISOWeek' {
+ import { setISOWeek } from 'date-fns/fp'
+ export default setISOWeek
+}
+
+declare module 'date-fns/fp/setISOWeekYear' {
+ import { setISOWeekYear } from 'date-fns/fp'
+ export default setISOWeekYear
+}
+
+declare module 'date-fns/fp/setMilliseconds' {
+ import { setMilliseconds } from 'date-fns/fp'
+ export default setMilliseconds
+}
+
+declare module 'date-fns/fp/setMinutes' {
+ import { setMinutes } from 'date-fns/fp'
+ export default setMinutes
+}
+
+declare module 'date-fns/fp/setMonth' {
+ import { setMonth } from 'date-fns/fp'
+ export default setMonth
+}
+
+declare module 'date-fns/fp/setQuarter' {
+ import { setQuarter } from 'date-fns/fp'
+ export default setQuarter
+}
+
+declare module 'date-fns/fp/setSeconds' {
+ import { setSeconds } from 'date-fns/fp'
+ export default setSeconds
+}
+
+declare module 'date-fns/fp/setWeek' {
+ import { setWeek } from 'date-fns/fp'
+ export default setWeek
+}
+
+declare module 'date-fns/fp/setWeekWithOptions' {
+ import { setWeekWithOptions } from 'date-fns/fp'
+ export default setWeekWithOptions
+}
+
+declare module 'date-fns/fp/setWeekYear' {
+ import { setWeekYear } from 'date-fns/fp'
+ export default setWeekYear
+}
+
+declare module 'date-fns/fp/setWeekYearWithOptions' {
+ import { setWeekYearWithOptions } from 'date-fns/fp'
+ export default setWeekYearWithOptions
+}
+
+declare module 'date-fns/fp/setYear' {
+ import { setYear } from 'date-fns/fp'
+ export default setYear
+}
+
+declare module 'date-fns/fp/startOfDay' {
+ import { startOfDay } from 'date-fns/fp'
+ export default startOfDay
+}
+
+declare module 'date-fns/fp/startOfDecade' {
+ import { startOfDecade } from 'date-fns/fp'
+ export default startOfDecade
+}
+
+declare module 'date-fns/fp/startOfHour' {
+ import { startOfHour } from 'date-fns/fp'
+ export default startOfHour
+}
+
+declare module 'date-fns/fp/startOfISOWeek' {
+ import { startOfISOWeek } from 'date-fns/fp'
+ export default startOfISOWeek
+}
+
+declare module 'date-fns/fp/startOfISOWeekYear' {
+ import { startOfISOWeekYear } from 'date-fns/fp'
+ export default startOfISOWeekYear
+}
+
+declare module 'date-fns/fp/startOfMinute' {
+ import { startOfMinute } from 'date-fns/fp'
+ export default startOfMinute
+}
+
+declare module 'date-fns/fp/startOfMonth' {
+ import { startOfMonth } from 'date-fns/fp'
+ export default startOfMonth
+}
+
+declare module 'date-fns/fp/startOfQuarter' {
+ import { startOfQuarter } from 'date-fns/fp'
+ export default startOfQuarter
+}
+
+declare module 'date-fns/fp/startOfSecond' {
+ import { startOfSecond } from 'date-fns/fp'
+ export default startOfSecond
+}
+
+declare module 'date-fns/fp/startOfWeek' {
+ import { startOfWeek } from 'date-fns/fp'
+ export default startOfWeek
+}
+
+declare module 'date-fns/fp/startOfWeekWithOptions' {
+ import { startOfWeekWithOptions } from 'date-fns/fp'
+ export default startOfWeekWithOptions
+}
+
+declare module 'date-fns/fp/startOfWeekYear' {
+ import { startOfWeekYear } from 'date-fns/fp'
+ export default startOfWeekYear
+}
+
+declare module 'date-fns/fp/startOfWeekYearWithOptions' {
+ import { startOfWeekYearWithOptions } from 'date-fns/fp'
+ export default startOfWeekYearWithOptions
+}
+
+declare module 'date-fns/fp/startOfYear' {
+ import { startOfYear } from 'date-fns/fp'
+ export default startOfYear
+}
+
+declare module 'date-fns/fp/sub' {
+ import { sub } from 'date-fns/fp'
+ export default sub
+}
+
+declare module 'date-fns/fp/subBusinessDays' {
+ import { subBusinessDays } from 'date-fns/fp'
+ export default subBusinessDays
+}
+
+declare module 'date-fns/fp/subDays' {
+ import { subDays } from 'date-fns/fp'
+ export default subDays
+}
+
+declare module 'date-fns/fp/subHours' {
+ import { subHours } from 'date-fns/fp'
+ export default subHours
+}
+
+declare module 'date-fns/fp/subISOWeekYears' {
+ import { subISOWeekYears } from 'date-fns/fp'
+ export default subISOWeekYears
+}
+
+declare module 'date-fns/fp/subMilliseconds' {
+ import { subMilliseconds } from 'date-fns/fp'
+ export default subMilliseconds
+}
+
+declare module 'date-fns/fp/subMinutes' {
+ import { subMinutes } from 'date-fns/fp'
+ export default subMinutes
+}
+
+declare module 'date-fns/fp/subMonths' {
+ import { subMonths } from 'date-fns/fp'
+ export default subMonths
+}
+
+declare module 'date-fns/fp/subQuarters' {
+ import { subQuarters } from 'date-fns/fp'
+ export default subQuarters
+}
+
+declare module 'date-fns/fp/subSeconds' {
+ import { subSeconds } from 'date-fns/fp'
+ export default subSeconds
+}
+
+declare module 'date-fns/fp/subWeeks' {
+ import { subWeeks } from 'date-fns/fp'
+ export default subWeeks
+}
+
+declare module 'date-fns/fp/subYears' {
+ import { subYears } from 'date-fns/fp'
+ export default subYears
+}
+
+declare module 'date-fns/fp/toDate' {
+ import { toDate } from 'date-fns/fp'
+ export default toDate
+}
+
+declare module 'date-fns/fp/weeksToDays' {
+ import { weeksToDays } from 'date-fns/fp'
+ export default weeksToDays
+}
+
+declare module 'date-fns/fp/yearsToMonths' {
+ import { yearsToMonths } from 'date-fns/fp'
+ export default yearsToMonths
+}
+
+declare module 'date-fns/fp/yearsToQuarters' {
+ import { yearsToQuarters } from 'date-fns/fp'
+ export default yearsToQuarters
+}
+
+declare module 'date-fns/fp/add/index' {
+ import { add } from 'date-fns/fp'
+ export default add
+}
+
+declare module 'date-fns/fp/addBusinessDays/index' {
+ import { addBusinessDays } from 'date-fns/fp'
+ export default addBusinessDays
+}
+
+declare module 'date-fns/fp/addDays/index' {
+ import { addDays } from 'date-fns/fp'
+ export default addDays
+}
+
+declare module 'date-fns/fp/addHours/index' {
+ import { addHours } from 'date-fns/fp'
+ export default addHours
+}
+
+declare module 'date-fns/fp/addISOWeekYears/index' {
+ import { addISOWeekYears } from 'date-fns/fp'
+ export default addISOWeekYears
+}
+
+declare module 'date-fns/fp/addMilliseconds/index' {
+ import { addMilliseconds } from 'date-fns/fp'
+ export default addMilliseconds
+}
+
+declare module 'date-fns/fp/addMinutes/index' {
+ import { addMinutes } from 'date-fns/fp'
+ export default addMinutes
+}
+
+declare module 'date-fns/fp/addMonths/index' {
+ import { addMonths } from 'date-fns/fp'
+ export default addMonths
+}
+
+declare module 'date-fns/fp/addQuarters/index' {
+ import { addQuarters } from 'date-fns/fp'
+ export default addQuarters
+}
+
+declare module 'date-fns/fp/addSeconds/index' {
+ import { addSeconds } from 'date-fns/fp'
+ export default addSeconds
+}
+
+declare module 'date-fns/fp/addWeeks/index' {
+ import { addWeeks } from 'date-fns/fp'
+ export default addWeeks
+}
+
+declare module 'date-fns/fp/addYears/index' {
+ import { addYears } from 'date-fns/fp'
+ export default addYears
+}
+
+declare module 'date-fns/fp/areIntervalsOverlapping/index' {
+ import { areIntervalsOverlapping } from 'date-fns/fp'
+ export default areIntervalsOverlapping
+}
+
+declare module 'date-fns/fp/areIntervalsOverlappingWithOptions/index' {
+ import { areIntervalsOverlappingWithOptions } from 'date-fns/fp'
+ export default areIntervalsOverlappingWithOptions
+}
+
+declare module 'date-fns/fp/closestIndexTo/index' {
+ import { closestIndexTo } from 'date-fns/fp'
+ export default closestIndexTo
+}
+
+declare module 'date-fns/fp/closestTo/index' {
+ import { closestTo } from 'date-fns/fp'
+ export default closestTo
+}
+
+declare module 'date-fns/fp/compareAsc/index' {
+ import { compareAsc } from 'date-fns/fp'
+ export default compareAsc
+}
+
+declare module 'date-fns/fp/compareDesc/index' {
+ import { compareDesc } from 'date-fns/fp'
+ export default compareDesc
+}
+
+declare module 'date-fns/fp/daysToWeeks/index' {
+ import { daysToWeeks } from 'date-fns/fp'
+ export default daysToWeeks
+}
+
+declare module 'date-fns/fp/differenceInBusinessDays/index' {
+ import { differenceInBusinessDays } from 'date-fns/fp'
+ export default differenceInBusinessDays
+}
+
+declare module 'date-fns/fp/differenceInCalendarDays/index' {
+ import { differenceInCalendarDays } from 'date-fns/fp'
+ export default differenceInCalendarDays
+}
+
+declare module 'date-fns/fp/differenceInCalendarISOWeeks/index' {
+ import { differenceInCalendarISOWeeks } from 'date-fns/fp'
+ export default differenceInCalendarISOWeeks
+}
+
+declare module 'date-fns/fp/differenceInCalendarISOWeekYears/index' {
+ import { differenceInCalendarISOWeekYears } from 'date-fns/fp'
+ export default differenceInCalendarISOWeekYears
+}
+
+declare module 'date-fns/fp/differenceInCalendarMonths/index' {
+ import { differenceInCalendarMonths } from 'date-fns/fp'
+ export default differenceInCalendarMonths
+}
+
+declare module 'date-fns/fp/differenceInCalendarQuarters/index' {
+ import { differenceInCalendarQuarters } from 'date-fns/fp'
+ export default differenceInCalendarQuarters
+}
+
+declare module 'date-fns/fp/differenceInCalendarWeeks/index' {
+ import { differenceInCalendarWeeks } from 'date-fns/fp'
+ export default differenceInCalendarWeeks
+}
+
+declare module 'date-fns/fp/differenceInCalendarWeeksWithOptions/index' {
+ import { differenceInCalendarWeeksWithOptions } from 'date-fns/fp'
+ export default differenceInCalendarWeeksWithOptions
+}
+
+declare module 'date-fns/fp/differenceInCalendarYears/index' {
+ import { differenceInCalendarYears } from 'date-fns/fp'
+ export default differenceInCalendarYears
+}
+
+declare module 'date-fns/fp/differenceInDays/index' {
+ import { differenceInDays } from 'date-fns/fp'
+ export default differenceInDays
+}
+
+declare module 'date-fns/fp/differenceInHours/index' {
+ import { differenceInHours } from 'date-fns/fp'
+ export default differenceInHours
+}
+
+declare module 'date-fns/fp/differenceInISOWeekYears/index' {
+ import { differenceInISOWeekYears } from 'date-fns/fp'
+ export default differenceInISOWeekYears
+}
+
+declare module 'date-fns/fp/differenceInMilliseconds/index' {
+ import { differenceInMilliseconds } from 'date-fns/fp'
+ export default differenceInMilliseconds
+}
+
+declare module 'date-fns/fp/differenceInMinutes/index' {
+ import { differenceInMinutes } from 'date-fns/fp'
+ export default differenceInMinutes
+}
+
+declare module 'date-fns/fp/differenceInMonths/index' {
+ import { differenceInMonths } from 'date-fns/fp'
+ export default differenceInMonths
+}
+
+declare module 'date-fns/fp/differenceInQuarters/index' {
+ import { differenceInQuarters } from 'date-fns/fp'
+ export default differenceInQuarters
+}
+
+declare module 'date-fns/fp/differenceInSeconds/index' {
+ import { differenceInSeconds } from 'date-fns/fp'
+ export default differenceInSeconds
+}
+
+declare module 'date-fns/fp/differenceInWeeks/index' {
+ import { differenceInWeeks } from 'date-fns/fp'
+ export default differenceInWeeks
+}
+
+declare module 'date-fns/fp/differenceInYears/index' {
+ import { differenceInYears } from 'date-fns/fp'
+ export default differenceInYears
+}
+
+declare module 'date-fns/fp/eachDayOfInterval/index' {
+ import { eachDayOfInterval } from 'date-fns/fp'
+ export default eachDayOfInterval
+}
+
+declare module 'date-fns/fp/eachDayOfIntervalWithOptions/index' {
+ import { eachDayOfIntervalWithOptions } from 'date-fns/fp'
+ export default eachDayOfIntervalWithOptions
+}
+
+declare module 'date-fns/fp/eachHourOfInterval/index' {
+ import { eachHourOfInterval } from 'date-fns/fp'
+ export default eachHourOfInterval
+}
+
+declare module 'date-fns/fp/eachHourOfIntervalWithOptions/index' {
+ import { eachHourOfIntervalWithOptions } from 'date-fns/fp'
+ export default eachHourOfIntervalWithOptions
+}
+
+declare module 'date-fns/fp/eachMinuteOfInterval/index' {
+ import { eachMinuteOfInterval } from 'date-fns/fp'
+ export default eachMinuteOfInterval
+}
+
+declare module 'date-fns/fp/eachMinuteOfIntervalWithOptions/index' {
+ import { eachMinuteOfIntervalWithOptions } from 'date-fns/fp'
+ export default eachMinuteOfIntervalWithOptions
+}
+
+declare module 'date-fns/fp/eachMonthOfInterval/index' {
+ import { eachMonthOfInterval } from 'date-fns/fp'
+ export default eachMonthOfInterval
+}
+
+declare module 'date-fns/fp/eachQuarterOfInterval/index' {
+ import { eachQuarterOfInterval } from 'date-fns/fp'
+ export default eachQuarterOfInterval
+}
+
+declare module 'date-fns/fp/eachWeekendOfInterval/index' {
+ import { eachWeekendOfInterval } from 'date-fns/fp'
+ export default eachWeekendOfInterval
+}
+
+declare module 'date-fns/fp/eachWeekendOfMonth/index' {
+ import { eachWeekendOfMonth } from 'date-fns/fp'
+ export default eachWeekendOfMonth
+}
+
+declare module 'date-fns/fp/eachWeekendOfYear/index' {
+ import { eachWeekendOfYear } from 'date-fns/fp'
+ export default eachWeekendOfYear
+}
+
+declare module 'date-fns/fp/eachWeekOfInterval/index' {
+ import { eachWeekOfInterval } from 'date-fns/fp'
+ export default eachWeekOfInterval
+}
+
+declare module 'date-fns/fp/eachWeekOfIntervalWithOptions/index' {
+ import { eachWeekOfIntervalWithOptions } from 'date-fns/fp'
+ export default eachWeekOfIntervalWithOptions
+}
+
+declare module 'date-fns/fp/eachYearOfInterval/index' {
+ import { eachYearOfInterval } from 'date-fns/fp'
+ export default eachYearOfInterval
+}
+
+declare module 'date-fns/fp/endOfDay/index' {
+ import { endOfDay } from 'date-fns/fp'
+ export default endOfDay
+}
+
+declare module 'date-fns/fp/endOfDecade/index' {
+ import { endOfDecade } from 'date-fns/fp'
+ export default endOfDecade
+}
+
+declare module 'date-fns/fp/endOfDecadeWithOptions/index' {
+ import { endOfDecadeWithOptions } from 'date-fns/fp'
+ export default endOfDecadeWithOptions
+}
+
+declare module 'date-fns/fp/endOfHour/index' {
+ import { endOfHour } from 'date-fns/fp'
+ export default endOfHour
+}
+
+declare module 'date-fns/fp/endOfISOWeek/index' {
+ import { endOfISOWeek } from 'date-fns/fp'
+ export default endOfISOWeek
+}
+
+declare module 'date-fns/fp/endOfISOWeekYear/index' {
+ import { endOfISOWeekYear } from 'date-fns/fp'
+ export default endOfISOWeekYear
+}
+
+declare module 'date-fns/fp/endOfMinute/index' {
+ import { endOfMinute } from 'date-fns/fp'
+ export default endOfMinute
+}
+
+declare module 'date-fns/fp/endOfMonth/index' {
+ import { endOfMonth } from 'date-fns/fp'
+ export default endOfMonth
+}
+
+declare module 'date-fns/fp/endOfQuarter/index' {
+ import { endOfQuarter } from 'date-fns/fp'
+ export default endOfQuarter
+}
+
+declare module 'date-fns/fp/endOfSecond/index' {
+ import { endOfSecond } from 'date-fns/fp'
+ export default endOfSecond
+}
+
+declare module 'date-fns/fp/endOfWeek/index' {
+ import { endOfWeek } from 'date-fns/fp'
+ export default endOfWeek
+}
+
+declare module 'date-fns/fp/endOfWeekWithOptions/index' {
+ import { endOfWeekWithOptions } from 'date-fns/fp'
+ export default endOfWeekWithOptions
+}
+
+declare module 'date-fns/fp/endOfYear/index' {
+ import { endOfYear } from 'date-fns/fp'
+ export default endOfYear
+}
+
+declare module 'date-fns/fp/format/index' {
+ import { format } from 'date-fns/fp'
+ export default format
+}
+
+declare module 'date-fns/fp/formatDistance/index' {
+ import { formatDistance } from 'date-fns/fp'
+ export default formatDistance
+}
+
+declare module 'date-fns/fp/formatDistanceStrict/index' {
+ import { formatDistanceStrict } from 'date-fns/fp'
+ export default formatDistanceStrict
+}
+
+declare module 'date-fns/fp/formatDistanceStrictWithOptions/index' {
+ import { formatDistanceStrictWithOptions } from 'date-fns/fp'
+ export default formatDistanceStrictWithOptions
+}
+
+declare module 'date-fns/fp/formatDistanceWithOptions/index' {
+ import { formatDistanceWithOptions } from 'date-fns/fp'
+ export default formatDistanceWithOptions
+}
+
+declare module 'date-fns/fp/formatDuration/index' {
+ import { formatDuration } from 'date-fns/fp'
+ export default formatDuration
+}
+
+declare module 'date-fns/fp/formatDurationWithOptions/index' {
+ import { formatDurationWithOptions } from 'date-fns/fp'
+ export default formatDurationWithOptions
+}
+
+declare module 'date-fns/fp/formatISO/index' {
+ import { formatISO } from 'date-fns/fp'
+ export default formatISO
+}
+
+declare module 'date-fns/fp/formatISO9075/index' {
+ import { formatISO9075 } from 'date-fns/fp'
+ export default formatISO9075
+}
+
+declare module 'date-fns/fp/formatISO9075WithOptions/index' {
+ import { formatISO9075WithOptions } from 'date-fns/fp'
+ export default formatISO9075WithOptions
+}
+
+declare module 'date-fns/fp/formatISODuration/index' {
+ import { formatISODuration } from 'date-fns/fp'
+ export default formatISODuration
+}
+
+declare module 'date-fns/fp/formatISOWithOptions/index' {
+ import { formatISOWithOptions } from 'date-fns/fp'
+ export default formatISOWithOptions
+}
+
+declare module 'date-fns/fp/formatRelative/index' {
+ import { formatRelative } from 'date-fns/fp'
+ export default formatRelative
+}
+
+declare module 'date-fns/fp/formatRelativeWithOptions/index' {
+ import { formatRelativeWithOptions } from 'date-fns/fp'
+ export default formatRelativeWithOptions
+}
+
+declare module 'date-fns/fp/formatRFC3339/index' {
+ import { formatRFC3339 } from 'date-fns/fp'
+ export default formatRFC3339
+}
+
+declare module 'date-fns/fp/formatRFC3339WithOptions/index' {
+ import { formatRFC3339WithOptions } from 'date-fns/fp'
+ export default formatRFC3339WithOptions
+}
+
+declare module 'date-fns/fp/formatRFC7231/index' {
+ import { formatRFC7231 } from 'date-fns/fp'
+ export default formatRFC7231
+}
+
+declare module 'date-fns/fp/formatWithOptions/index' {
+ import { formatWithOptions } from 'date-fns/fp'
+ export default formatWithOptions
+}
+
+declare module 'date-fns/fp/fromUnixTime/index' {
+ import { fromUnixTime } from 'date-fns/fp'
+ export default fromUnixTime
+}
+
+declare module 'date-fns/fp/getDate/index' {
+ import { getDate } from 'date-fns/fp'
+ export default getDate
+}
+
+declare module 'date-fns/fp/getDay/index' {
+ import { getDay } from 'date-fns/fp'
+ export default getDay
+}
+
+declare module 'date-fns/fp/getDayOfYear/index' {
+ import { getDayOfYear } from 'date-fns/fp'
+ export default getDayOfYear
+}
+
+declare module 'date-fns/fp/getDaysInMonth/index' {
+ import { getDaysInMonth } from 'date-fns/fp'
+ export default getDaysInMonth
+}
+
+declare module 'date-fns/fp/getDaysInYear/index' {
+ import { getDaysInYear } from 'date-fns/fp'
+ export default getDaysInYear
+}
+
+declare module 'date-fns/fp/getDecade/index' {
+ import { getDecade } from 'date-fns/fp'
+ export default getDecade
+}
+
+declare module 'date-fns/fp/getHours/index' {
+ import { getHours } from 'date-fns/fp'
+ export default getHours
+}
+
+declare module 'date-fns/fp/getISODay/index' {
+ import { getISODay } from 'date-fns/fp'
+ export default getISODay
+}
+
+declare module 'date-fns/fp/getISOWeek/index' {
+ import { getISOWeek } from 'date-fns/fp'
+ export default getISOWeek
+}
+
+declare module 'date-fns/fp/getISOWeeksInYear/index' {
+ import { getISOWeeksInYear } from 'date-fns/fp'
+ export default getISOWeeksInYear
+}
+
+declare module 'date-fns/fp/getISOWeekYear/index' {
+ import { getISOWeekYear } from 'date-fns/fp'
+ export default getISOWeekYear
+}
+
+declare module 'date-fns/fp/getMilliseconds/index' {
+ import { getMilliseconds } from 'date-fns/fp'
+ export default getMilliseconds
+}
+
+declare module 'date-fns/fp/getMinutes/index' {
+ import { getMinutes } from 'date-fns/fp'
+ export default getMinutes
+}
+
+declare module 'date-fns/fp/getMonth/index' {
+ import { getMonth } from 'date-fns/fp'
+ export default getMonth
+}
+
+declare module 'date-fns/fp/getOverlappingDaysInIntervals/index' {
+ import { getOverlappingDaysInIntervals } from 'date-fns/fp'
+ export default getOverlappingDaysInIntervals
+}
+
+declare module 'date-fns/fp/getQuarter/index' {
+ import { getQuarter } from 'date-fns/fp'
+ export default getQuarter
+}
+
+declare module 'date-fns/fp/getSeconds/index' {
+ import { getSeconds } from 'date-fns/fp'
+ export default getSeconds
+}
+
+declare module 'date-fns/fp/getTime/index' {
+ import { getTime } from 'date-fns/fp'
+ export default getTime
+}
+
+declare module 'date-fns/fp/getUnixTime/index' {
+ import { getUnixTime } from 'date-fns/fp'
+ export default getUnixTime
+}
+
+declare module 'date-fns/fp/getWeek/index' {
+ import { getWeek } from 'date-fns/fp'
+ export default getWeek
+}
+
+declare module 'date-fns/fp/getWeekOfMonth/index' {
+ import { getWeekOfMonth } from 'date-fns/fp'
+ export default getWeekOfMonth
+}
+
+declare module 'date-fns/fp/getWeekOfMonthWithOptions/index' {
+ import { getWeekOfMonthWithOptions } from 'date-fns/fp'
+ export default getWeekOfMonthWithOptions
+}
+
+declare module 'date-fns/fp/getWeeksInMonth/index' {
+ import { getWeeksInMonth } from 'date-fns/fp'
+ export default getWeeksInMonth
+}
+
+declare module 'date-fns/fp/getWeeksInMonthWithOptions/index' {
+ import { getWeeksInMonthWithOptions } from 'date-fns/fp'
+ export default getWeeksInMonthWithOptions
+}
+
+declare module 'date-fns/fp/getWeekWithOptions/index' {
+ import { getWeekWithOptions } from 'date-fns/fp'
+ export default getWeekWithOptions
+}
+
+declare module 'date-fns/fp/getWeekYear/index' {
+ import { getWeekYear } from 'date-fns/fp'
+ export default getWeekYear
+}
+
+declare module 'date-fns/fp/getWeekYearWithOptions/index' {
+ import { getWeekYearWithOptions } from 'date-fns/fp'
+ export default getWeekYearWithOptions
+}
+
+declare module 'date-fns/fp/getYear/index' {
+ import { getYear } from 'date-fns/fp'
+ export default getYear
+}
+
+declare module 'date-fns/fp/hoursToMilliseconds/index' {
+ import { hoursToMilliseconds } from 'date-fns/fp'
+ export default hoursToMilliseconds
+}
+
+declare module 'date-fns/fp/hoursToMinutes/index' {
+ import { hoursToMinutes } from 'date-fns/fp'
+ export default hoursToMinutes
+}
+
+declare module 'date-fns/fp/hoursToSeconds/index' {
+ import { hoursToSeconds } from 'date-fns/fp'
+ export default hoursToSeconds
+}
+
+declare module 'date-fns/fp/intervalToDuration/index' {
+ import { intervalToDuration } from 'date-fns/fp'
+ export default intervalToDuration
+}
+
+declare module 'date-fns/fp/intlFormat/index' {
+ import { intlFormat } from 'date-fns/fp'
+ export default intlFormat
+}
+
+declare module 'date-fns/fp/isAfter/index' {
+ import { isAfter } from 'date-fns/fp'
+ export default isAfter
+}
+
+declare module 'date-fns/fp/isBefore/index' {
+ import { isBefore } from 'date-fns/fp'
+ export default isBefore
+}
+
+declare module 'date-fns/fp/isDate/index' {
+ import { isDate } from 'date-fns/fp'
+ export default isDate
+}
+
+declare module 'date-fns/fp/isEqual/index' {
+ import { isEqual } from 'date-fns/fp'
+ export default isEqual
+}
+
+declare module 'date-fns/fp/isExists/index' {
+ import { isExists } from 'date-fns/fp'
+ export default isExists
+}
+
+declare module 'date-fns/fp/isFirstDayOfMonth/index' {
+ import { isFirstDayOfMonth } from 'date-fns/fp'
+ export default isFirstDayOfMonth
+}
+
+declare module 'date-fns/fp/isFriday/index' {
+ import { isFriday } from 'date-fns/fp'
+ export default isFriday
+}
+
+declare module 'date-fns/fp/isLastDayOfMonth/index' {
+ import { isLastDayOfMonth } from 'date-fns/fp'
+ export default isLastDayOfMonth
+}
+
+declare module 'date-fns/fp/isLeapYear/index' {
+ import { isLeapYear } from 'date-fns/fp'
+ export default isLeapYear
+}
+
+declare module 'date-fns/fp/isMatch/index' {
+ import { isMatch } from 'date-fns/fp'
+ export default isMatch
+}
+
+declare module 'date-fns/fp/isMatchWithOptions/index' {
+ import { isMatchWithOptions } from 'date-fns/fp'
+ export default isMatchWithOptions
+}
+
+declare module 'date-fns/fp/isMonday/index' {
+ import { isMonday } from 'date-fns/fp'
+ export default isMonday
+}
+
+declare module 'date-fns/fp/isSameDay/index' {
+ import { isSameDay } from 'date-fns/fp'
+ export default isSameDay
+}
+
+declare module 'date-fns/fp/isSameHour/index' {
+ import { isSameHour } from 'date-fns/fp'
+ export default isSameHour
+}
+
+declare module 'date-fns/fp/isSameISOWeek/index' {
+ import { isSameISOWeek } from 'date-fns/fp'
+ export default isSameISOWeek
+}
+
+declare module 'date-fns/fp/isSameISOWeekYear/index' {
+ import { isSameISOWeekYear } from 'date-fns/fp'
+ export default isSameISOWeekYear
+}
+
+declare module 'date-fns/fp/isSameMinute/index' {
+ import { isSameMinute } from 'date-fns/fp'
+ export default isSameMinute
+}
+
+declare module 'date-fns/fp/isSameMonth/index' {
+ import { isSameMonth } from 'date-fns/fp'
+ export default isSameMonth
+}
+
+declare module 'date-fns/fp/isSameQuarter/index' {
+ import { isSameQuarter } from 'date-fns/fp'
+ export default isSameQuarter
+}
+
+declare module 'date-fns/fp/isSameSecond/index' {
+ import { isSameSecond } from 'date-fns/fp'
+ export default isSameSecond
+}
+
+declare module 'date-fns/fp/isSameWeek/index' {
+ import { isSameWeek } from 'date-fns/fp'
+ export default isSameWeek
+}
+
+declare module 'date-fns/fp/isSameWeekWithOptions/index' {
+ import { isSameWeekWithOptions } from 'date-fns/fp'
+ export default isSameWeekWithOptions
+}
+
+declare module 'date-fns/fp/isSameYear/index' {
+ import { isSameYear } from 'date-fns/fp'
+ export default isSameYear
+}
+
+declare module 'date-fns/fp/isSaturday/index' {
+ import { isSaturday } from 'date-fns/fp'
+ export default isSaturday
+}
+
+declare module 'date-fns/fp/isSunday/index' {
+ import { isSunday } from 'date-fns/fp'
+ export default isSunday
+}
+
+declare module 'date-fns/fp/isThursday/index' {
+ import { isThursday } from 'date-fns/fp'
+ export default isThursday
+}
+
+declare module 'date-fns/fp/isTuesday/index' {
+ import { isTuesday } from 'date-fns/fp'
+ export default isTuesday
+}
+
+declare module 'date-fns/fp/isValid/index' {
+ import { isValid } from 'date-fns/fp'
+ export default isValid
+}
+
+declare module 'date-fns/fp/isWednesday/index' {
+ import { isWednesday } from 'date-fns/fp'
+ export default isWednesday
+}
+
+declare module 'date-fns/fp/isWeekend/index' {
+ import { isWeekend } from 'date-fns/fp'
+ export default isWeekend
+}
+
+declare module 'date-fns/fp/isWithinInterval/index' {
+ import { isWithinInterval } from 'date-fns/fp'
+ export default isWithinInterval
+}
+
+declare module 'date-fns/fp/lastDayOfDecade/index' {
+ import { lastDayOfDecade } from 'date-fns/fp'
+ export default lastDayOfDecade
+}
+
+declare module 'date-fns/fp/lastDayOfISOWeek/index' {
+ import { lastDayOfISOWeek } from 'date-fns/fp'
+ export default lastDayOfISOWeek
+}
+
+declare module 'date-fns/fp/lastDayOfISOWeekYear/index' {
+ import { lastDayOfISOWeekYear } from 'date-fns/fp'
+ export default lastDayOfISOWeekYear
+}
+
+declare module 'date-fns/fp/lastDayOfMonth/index' {
+ import { lastDayOfMonth } from 'date-fns/fp'
+ export default lastDayOfMonth
+}
+
+declare module 'date-fns/fp/lastDayOfQuarter/index' {
+ import { lastDayOfQuarter } from 'date-fns/fp'
+ export default lastDayOfQuarter
+}
+
+declare module 'date-fns/fp/lastDayOfQuarterWithOptions/index' {
+ import { lastDayOfQuarterWithOptions } from 'date-fns/fp'
+ export default lastDayOfQuarterWithOptions
+}
+
+declare module 'date-fns/fp/lastDayOfWeek/index' {
+ import { lastDayOfWeek } from 'date-fns/fp'
+ export default lastDayOfWeek
+}
+
+declare module 'date-fns/fp/lastDayOfWeekWithOptions/index' {
+ import { lastDayOfWeekWithOptions } from 'date-fns/fp'
+ export default lastDayOfWeekWithOptions
+}
+
+declare module 'date-fns/fp/lastDayOfYear/index' {
+ import { lastDayOfYear } from 'date-fns/fp'
+ export default lastDayOfYear
+}
+
+declare module 'date-fns/fp/lightFormat/index' {
+ import { lightFormat } from 'date-fns/fp'
+ export default lightFormat
+}
+
+declare module 'date-fns/fp/max/index' {
+ import { max } from 'date-fns/fp'
+ export default max
+}
+
+declare module 'date-fns/fp/milliseconds/index' {
+ import { milliseconds } from 'date-fns/fp'
+ export default milliseconds
+}
+
+declare module 'date-fns/fp/millisecondsToHours/index' {
+ import { millisecondsToHours } from 'date-fns/fp'
+ export default millisecondsToHours
+}
+
+declare module 'date-fns/fp/millisecondsToMinutes/index' {
+ import { millisecondsToMinutes } from 'date-fns/fp'
+ export default millisecondsToMinutes
+}
+
+declare module 'date-fns/fp/millisecondsToSeconds/index' {
+ import { millisecondsToSeconds } from 'date-fns/fp'
+ export default millisecondsToSeconds
+}
+
+declare module 'date-fns/fp/min/index' {
+ import { min } from 'date-fns/fp'
+ export default min
+}
+
+declare module 'date-fns/fp/minutesToHours/index' {
+ import { minutesToHours } from 'date-fns/fp'
+ export default minutesToHours
+}
+
+declare module 'date-fns/fp/minutesToMilliseconds/index' {
+ import { minutesToMilliseconds } from 'date-fns/fp'
+ export default minutesToMilliseconds
+}
+
+declare module 'date-fns/fp/minutesToSeconds/index' {
+ import { minutesToSeconds } from 'date-fns/fp'
+ export default minutesToSeconds
+}
+
+declare module 'date-fns/fp/monthsToQuarters/index' {
+ import { monthsToQuarters } from 'date-fns/fp'
+ export default monthsToQuarters
+}
+
+declare module 'date-fns/fp/monthsToYears/index' {
+ import { monthsToYears } from 'date-fns/fp'
+ export default monthsToYears
+}
+
+declare module 'date-fns/fp/nextDay/index' {
+ import { nextDay } from 'date-fns/fp'
+ export default nextDay
+}
+
+declare module 'date-fns/fp/nextFriday/index' {
+ import { nextFriday } from 'date-fns/fp'
+ export default nextFriday
+}
+
+declare module 'date-fns/fp/nextMonday/index' {
+ import { nextMonday } from 'date-fns/fp'
+ export default nextMonday
+}
+
+declare module 'date-fns/fp/nextSaturday/index' {
+ import { nextSaturday } from 'date-fns/fp'
+ export default nextSaturday
+}
+
+declare module 'date-fns/fp/nextSunday/index' {
+ import { nextSunday } from 'date-fns/fp'
+ export default nextSunday
+}
+
+declare module 'date-fns/fp/nextThursday/index' {
+ import { nextThursday } from 'date-fns/fp'
+ export default nextThursday
+}
+
+declare module 'date-fns/fp/nextTuesday/index' {
+ import { nextTuesday } from 'date-fns/fp'
+ export default nextTuesday
+}
+
+declare module 'date-fns/fp/nextWednesday/index' {
+ import { nextWednesday } from 'date-fns/fp'
+ export default nextWednesday
+}
+
+declare module 'date-fns/fp/parse/index' {
+ import { parse } from 'date-fns/fp'
+ export default parse
+}
+
+declare module 'date-fns/fp/parseISO/index' {
+ import { parseISO } from 'date-fns/fp'
+ export default parseISO
+}
+
+declare module 'date-fns/fp/parseISOWithOptions/index' {
+ import { parseISOWithOptions } from 'date-fns/fp'
+ export default parseISOWithOptions
+}
+
+declare module 'date-fns/fp/parseJSON/index' {
+ import { parseJSON } from 'date-fns/fp'
+ export default parseJSON
+}
+
+declare module 'date-fns/fp/parseWithOptions/index' {
+ import { parseWithOptions } from 'date-fns/fp'
+ export default parseWithOptions
+}
+
+declare module 'date-fns/fp/quartersToMonths/index' {
+ import { quartersToMonths } from 'date-fns/fp'
+ export default quartersToMonths
+}
+
+declare module 'date-fns/fp/quartersToYears/index' {
+ import { quartersToYears } from 'date-fns/fp'
+ export default quartersToYears
+}
+
+declare module 'date-fns/fp/roundToNearestMinutes/index' {
+ import { roundToNearestMinutes } from 'date-fns/fp'
+ export default roundToNearestMinutes
+}
+
+declare module 'date-fns/fp/roundToNearestMinutesWithOptions/index' {
+ import { roundToNearestMinutesWithOptions } from 'date-fns/fp'
+ export default roundToNearestMinutesWithOptions
+}
+
+declare module 'date-fns/fp/secondsToHours/index' {
+ import { secondsToHours } from 'date-fns/fp'
+ export default secondsToHours
+}
+
+declare module 'date-fns/fp/secondsToMilliseconds/index' {
+ import { secondsToMilliseconds } from 'date-fns/fp'
+ export default secondsToMilliseconds
+}
+
+declare module 'date-fns/fp/secondsToMinutes/index' {
+ import { secondsToMinutes } from 'date-fns/fp'
+ export default secondsToMinutes
+}
+
+declare module 'date-fns/fp/set/index' {
+ import { set } from 'date-fns/fp'
+ export default set
+}
+
+declare module 'date-fns/fp/setDate/index' {
+ import { setDate } from 'date-fns/fp'
+ export default setDate
+}
+
+declare module 'date-fns/fp/setDay/index' {
+ import { setDay } from 'date-fns/fp'
+ export default setDay
+}
+
+declare module 'date-fns/fp/setDayOfYear/index' {
+ import { setDayOfYear } from 'date-fns/fp'
+ export default setDayOfYear
+}
+
+declare module 'date-fns/fp/setDayWithOptions/index' {
+ import { setDayWithOptions } from 'date-fns/fp'
+ export default setDayWithOptions
+}
+
+declare module 'date-fns/fp/setHours/index' {
+ import { setHours } from 'date-fns/fp'
+ export default setHours
+}
+
+declare module 'date-fns/fp/setISODay/index' {
+ import { setISODay } from 'date-fns/fp'
+ export default setISODay
+}
+
+declare module 'date-fns/fp/setISOWeek/index' {
+ import { setISOWeek } from 'date-fns/fp'
+ export default setISOWeek
+}
+
+declare module 'date-fns/fp/setISOWeekYear/index' {
+ import { setISOWeekYear } from 'date-fns/fp'
+ export default setISOWeekYear
+}
+
+declare module 'date-fns/fp/setMilliseconds/index' {
+ import { setMilliseconds } from 'date-fns/fp'
+ export default setMilliseconds
+}
+
+declare module 'date-fns/fp/setMinutes/index' {
+ import { setMinutes } from 'date-fns/fp'
+ export default setMinutes
+}
+
+declare module 'date-fns/fp/setMonth/index' {
+ import { setMonth } from 'date-fns/fp'
+ export default setMonth
+}
+
+declare module 'date-fns/fp/setQuarter/index' {
+ import { setQuarter } from 'date-fns/fp'
+ export default setQuarter
+}
+
+declare module 'date-fns/fp/setSeconds/index' {
+ import { setSeconds } from 'date-fns/fp'
+ export default setSeconds
+}
+
+declare module 'date-fns/fp/setWeek/index' {
+ import { setWeek } from 'date-fns/fp'
+ export default setWeek
+}
+
+declare module 'date-fns/fp/setWeekWithOptions/index' {
+ import { setWeekWithOptions } from 'date-fns/fp'
+ export default setWeekWithOptions
+}
+
+declare module 'date-fns/fp/setWeekYear/index' {
+ import { setWeekYear } from 'date-fns/fp'
+ export default setWeekYear
+}
+
+declare module 'date-fns/fp/setWeekYearWithOptions/index' {
+ import { setWeekYearWithOptions } from 'date-fns/fp'
+ export default setWeekYearWithOptions
+}
+
+declare module 'date-fns/fp/setYear/index' {
+ import { setYear } from 'date-fns/fp'
+ export default setYear
+}
+
+declare module 'date-fns/fp/startOfDay/index' {
+ import { startOfDay } from 'date-fns/fp'
+ export default startOfDay
+}
+
+declare module 'date-fns/fp/startOfDecade/index' {
+ import { startOfDecade } from 'date-fns/fp'
+ export default startOfDecade
+}
+
+declare module 'date-fns/fp/startOfHour/index' {
+ import { startOfHour } from 'date-fns/fp'
+ export default startOfHour
+}
+
+declare module 'date-fns/fp/startOfISOWeek/index' {
+ import { startOfISOWeek } from 'date-fns/fp'
+ export default startOfISOWeek
+}
+
+declare module 'date-fns/fp/startOfISOWeekYear/index' {
+ import { startOfISOWeekYear } from 'date-fns/fp'
+ export default startOfISOWeekYear
+}
+
+declare module 'date-fns/fp/startOfMinute/index' {
+ import { startOfMinute } from 'date-fns/fp'
+ export default startOfMinute
+}
+
+declare module 'date-fns/fp/startOfMonth/index' {
+ import { startOfMonth } from 'date-fns/fp'
+ export default startOfMonth
+}
+
+declare module 'date-fns/fp/startOfQuarter/index' {
+ import { startOfQuarter } from 'date-fns/fp'
+ export default startOfQuarter
+}
+
+declare module 'date-fns/fp/startOfSecond/index' {
+ import { startOfSecond } from 'date-fns/fp'
+ export default startOfSecond
+}
+
+declare module 'date-fns/fp/startOfWeek/index' {
+ import { startOfWeek } from 'date-fns/fp'
+ export default startOfWeek
+}
+
+declare module 'date-fns/fp/startOfWeekWithOptions/index' {
+ import { startOfWeekWithOptions } from 'date-fns/fp'
+ export default startOfWeekWithOptions
+}
+
+declare module 'date-fns/fp/startOfWeekYear/index' {
+ import { startOfWeekYear } from 'date-fns/fp'
+ export default startOfWeekYear
+}
+
+declare module 'date-fns/fp/startOfWeekYearWithOptions/index' {
+ import { startOfWeekYearWithOptions } from 'date-fns/fp'
+ export default startOfWeekYearWithOptions
+}
+
+declare module 'date-fns/fp/startOfYear/index' {
+ import { startOfYear } from 'date-fns/fp'
+ export default startOfYear
+}
+
+declare module 'date-fns/fp/sub/index' {
+ import { sub } from 'date-fns/fp'
+ export default sub
+}
+
+declare module 'date-fns/fp/subBusinessDays/index' {
+ import { subBusinessDays } from 'date-fns/fp'
+ export default subBusinessDays
+}
+
+declare module 'date-fns/fp/subDays/index' {
+ import { subDays } from 'date-fns/fp'
+ export default subDays
+}
+
+declare module 'date-fns/fp/subHours/index' {
+ import { subHours } from 'date-fns/fp'
+ export default subHours
+}
+
+declare module 'date-fns/fp/subISOWeekYears/index' {
+ import { subISOWeekYears } from 'date-fns/fp'
+ export default subISOWeekYears
+}
+
+declare module 'date-fns/fp/subMilliseconds/index' {
+ import { subMilliseconds } from 'date-fns/fp'
+ export default subMilliseconds
+}
+
+declare module 'date-fns/fp/subMinutes/index' {
+ import { subMinutes } from 'date-fns/fp'
+ export default subMinutes
+}
+
+declare module 'date-fns/fp/subMonths/index' {
+ import { subMonths } from 'date-fns/fp'
+ export default subMonths
+}
+
+declare module 'date-fns/fp/subQuarters/index' {
+ import { subQuarters } from 'date-fns/fp'
+ export default subQuarters
+}
+
+declare module 'date-fns/fp/subSeconds/index' {
+ import { subSeconds } from 'date-fns/fp'
+ export default subSeconds
+}
+
+declare module 'date-fns/fp/subWeeks/index' {
+ import { subWeeks } from 'date-fns/fp'
+ export default subWeeks
+}
+
+declare module 'date-fns/fp/subYears/index' {
+ import { subYears } from 'date-fns/fp'
+ export default subYears
+}
+
+declare module 'date-fns/fp/toDate/index' {
+ import { toDate } from 'date-fns/fp'
+ export default toDate
+}
+
+declare module 'date-fns/fp/weeksToDays/index' {
+ import { weeksToDays } from 'date-fns/fp'
+ export default weeksToDays
+}
+
+declare module 'date-fns/fp/yearsToMonths/index' {
+ import { yearsToMonths } from 'date-fns/fp'
+ export default yearsToMonths
+}
+
+declare module 'date-fns/fp/yearsToQuarters/index' {
+ import { yearsToQuarters } from 'date-fns/fp'
+ export default yearsToQuarters
+}
+
+declare module 'date-fns/fp/add/index.js' {
+ import { add } from 'date-fns/fp'
+ export default add
+}
+
+declare module 'date-fns/fp/addBusinessDays/index.js' {
+ import { addBusinessDays } from 'date-fns/fp'
+ export default addBusinessDays
+}
+
+declare module 'date-fns/fp/addDays/index.js' {
+ import { addDays } from 'date-fns/fp'
+ export default addDays
+}
+
+declare module 'date-fns/fp/addHours/index.js' {
+ import { addHours } from 'date-fns/fp'
+ export default addHours
+}
+
+declare module 'date-fns/fp/addISOWeekYears/index.js' {
+ import { addISOWeekYears } from 'date-fns/fp'
+ export default addISOWeekYears
+}
+
+declare module 'date-fns/fp/addMilliseconds/index.js' {
+ import { addMilliseconds } from 'date-fns/fp'
+ export default addMilliseconds
+}
+
+declare module 'date-fns/fp/addMinutes/index.js' {
+ import { addMinutes } from 'date-fns/fp'
+ export default addMinutes
+}
+
+declare module 'date-fns/fp/addMonths/index.js' {
+ import { addMonths } from 'date-fns/fp'
+ export default addMonths
+}
+
+declare module 'date-fns/fp/addQuarters/index.js' {
+ import { addQuarters } from 'date-fns/fp'
+ export default addQuarters
+}
+
+declare module 'date-fns/fp/addSeconds/index.js' {
+ import { addSeconds } from 'date-fns/fp'
+ export default addSeconds
+}
+
+declare module 'date-fns/fp/addWeeks/index.js' {
+ import { addWeeks } from 'date-fns/fp'
+ export default addWeeks
+}
+
+declare module 'date-fns/fp/addYears/index.js' {
+ import { addYears } from 'date-fns/fp'
+ export default addYears
+}
+
+declare module 'date-fns/fp/areIntervalsOverlapping/index.js' {
+ import { areIntervalsOverlapping } from 'date-fns/fp'
+ export default areIntervalsOverlapping
+}
+
+declare module 'date-fns/fp/areIntervalsOverlappingWithOptions/index.js' {
+ import { areIntervalsOverlappingWithOptions } from 'date-fns/fp'
+ export default areIntervalsOverlappingWithOptions
+}
+
+declare module 'date-fns/fp/closestIndexTo/index.js' {
+ import { closestIndexTo } from 'date-fns/fp'
+ export default closestIndexTo
+}
+
+declare module 'date-fns/fp/closestTo/index.js' {
+ import { closestTo } from 'date-fns/fp'
+ export default closestTo
+}
+
+declare module 'date-fns/fp/compareAsc/index.js' {
+ import { compareAsc } from 'date-fns/fp'
+ export default compareAsc
+}
+
+declare module 'date-fns/fp/compareDesc/index.js' {
+ import { compareDesc } from 'date-fns/fp'
+ export default compareDesc
+}
+
+declare module 'date-fns/fp/daysToWeeks/index.js' {
+ import { daysToWeeks } from 'date-fns/fp'
+ export default daysToWeeks
+}
+
+declare module 'date-fns/fp/differenceInBusinessDays/index.js' {
+ import { differenceInBusinessDays } from 'date-fns/fp'
+ export default differenceInBusinessDays
+}
+
+declare module 'date-fns/fp/differenceInCalendarDays/index.js' {
+ import { differenceInCalendarDays } from 'date-fns/fp'
+ export default differenceInCalendarDays
+}
+
+declare module 'date-fns/fp/differenceInCalendarISOWeeks/index.js' {
+ import { differenceInCalendarISOWeeks } from 'date-fns/fp'
+ export default differenceInCalendarISOWeeks
+}
+
+declare module 'date-fns/fp/differenceInCalendarISOWeekYears/index.js' {
+ import { differenceInCalendarISOWeekYears } from 'date-fns/fp'
+ export default differenceInCalendarISOWeekYears
+}
+
+declare module 'date-fns/fp/differenceInCalendarMonths/index.js' {
+ import { differenceInCalendarMonths } from 'date-fns/fp'
+ export default differenceInCalendarMonths
+}
+
+declare module 'date-fns/fp/differenceInCalendarQuarters/index.js' {
+ import { differenceInCalendarQuarters } from 'date-fns/fp'
+ export default differenceInCalendarQuarters
+}
+
+declare module 'date-fns/fp/differenceInCalendarWeeks/index.js' {
+ import { differenceInCalendarWeeks } from 'date-fns/fp'
+ export default differenceInCalendarWeeks
+}
+
+declare module 'date-fns/fp/differenceInCalendarWeeksWithOptions/index.js' {
+ import { differenceInCalendarWeeksWithOptions } from 'date-fns/fp'
+ export default differenceInCalendarWeeksWithOptions
+}
+
+declare module 'date-fns/fp/differenceInCalendarYears/index.js' {
+ import { differenceInCalendarYears } from 'date-fns/fp'
+ export default differenceInCalendarYears
+}
+
+declare module 'date-fns/fp/differenceInDays/index.js' {
+ import { differenceInDays } from 'date-fns/fp'
+ export default differenceInDays
+}
+
+declare module 'date-fns/fp/differenceInHours/index.js' {
+ import { differenceInHours } from 'date-fns/fp'
+ export default differenceInHours
+}
+
+declare module 'date-fns/fp/differenceInISOWeekYears/index.js' {
+ import { differenceInISOWeekYears } from 'date-fns/fp'
+ export default differenceInISOWeekYears
+}
+
+declare module 'date-fns/fp/differenceInMilliseconds/index.js' {
+ import { differenceInMilliseconds } from 'date-fns/fp'
+ export default differenceInMilliseconds
+}
+
+declare module 'date-fns/fp/differenceInMinutes/index.js' {
+ import { differenceInMinutes } from 'date-fns/fp'
+ export default differenceInMinutes
+}
+
+declare module 'date-fns/fp/differenceInMonths/index.js' {
+ import { differenceInMonths } from 'date-fns/fp'
+ export default differenceInMonths
+}
+
+declare module 'date-fns/fp/differenceInQuarters/index.js' {
+ import { differenceInQuarters } from 'date-fns/fp'
+ export default differenceInQuarters
+}
+
+declare module 'date-fns/fp/differenceInSeconds/index.js' {
+ import { differenceInSeconds } from 'date-fns/fp'
+ export default differenceInSeconds
+}
+
+declare module 'date-fns/fp/differenceInWeeks/index.js' {
+ import { differenceInWeeks } from 'date-fns/fp'
+ export default differenceInWeeks
+}
+
+declare module 'date-fns/fp/differenceInYears/index.js' {
+ import { differenceInYears } from 'date-fns/fp'
+ export default differenceInYears
+}
+
+declare module 'date-fns/fp/eachDayOfInterval/index.js' {
+ import { eachDayOfInterval } from 'date-fns/fp'
+ export default eachDayOfInterval
+}
+
+declare module 'date-fns/fp/eachDayOfIntervalWithOptions/index.js' {
+ import { eachDayOfIntervalWithOptions } from 'date-fns/fp'
+ export default eachDayOfIntervalWithOptions
+}
+
+declare module 'date-fns/fp/eachHourOfInterval/index.js' {
+ import { eachHourOfInterval } from 'date-fns/fp'
+ export default eachHourOfInterval
+}
+
+declare module 'date-fns/fp/eachHourOfIntervalWithOptions/index.js' {
+ import { eachHourOfIntervalWithOptions } from 'date-fns/fp'
+ export default eachHourOfIntervalWithOptions
+}
+
+declare module 'date-fns/fp/eachMinuteOfInterval/index.js' {
+ import { eachMinuteOfInterval } from 'date-fns/fp'
+ export default eachMinuteOfInterval
+}
+
+declare module 'date-fns/fp/eachMinuteOfIntervalWithOptions/index.js' {
+ import { eachMinuteOfIntervalWithOptions } from 'date-fns/fp'
+ export default eachMinuteOfIntervalWithOptions
+}
+
+declare module 'date-fns/fp/eachMonthOfInterval/index.js' {
+ import { eachMonthOfInterval } from 'date-fns/fp'
+ export default eachMonthOfInterval
+}
+
+declare module 'date-fns/fp/eachQuarterOfInterval/index.js' {
+ import { eachQuarterOfInterval } from 'date-fns/fp'
+ export default eachQuarterOfInterval
+}
+
+declare module 'date-fns/fp/eachWeekendOfInterval/index.js' {
+ import { eachWeekendOfInterval } from 'date-fns/fp'
+ export default eachWeekendOfInterval
+}
+
+declare module 'date-fns/fp/eachWeekendOfMonth/index.js' {
+ import { eachWeekendOfMonth } from 'date-fns/fp'
+ export default eachWeekendOfMonth
+}
+
+declare module 'date-fns/fp/eachWeekendOfYear/index.js' {
+ import { eachWeekendOfYear } from 'date-fns/fp'
+ export default eachWeekendOfYear
+}
+
+declare module 'date-fns/fp/eachWeekOfInterval/index.js' {
+ import { eachWeekOfInterval } from 'date-fns/fp'
+ export default eachWeekOfInterval
+}
+
+declare module 'date-fns/fp/eachWeekOfIntervalWithOptions/index.js' {
+ import { eachWeekOfIntervalWithOptions } from 'date-fns/fp'
+ export default eachWeekOfIntervalWithOptions
+}
+
+declare module 'date-fns/fp/eachYearOfInterval/index.js' {
+ import { eachYearOfInterval } from 'date-fns/fp'
+ export default eachYearOfInterval
+}
+
+declare module 'date-fns/fp/endOfDay/index.js' {
+ import { endOfDay } from 'date-fns/fp'
+ export default endOfDay
+}
+
+declare module 'date-fns/fp/endOfDecade/index.js' {
+ import { endOfDecade } from 'date-fns/fp'
+ export default endOfDecade
+}
+
+declare module 'date-fns/fp/endOfDecadeWithOptions/index.js' {
+ import { endOfDecadeWithOptions } from 'date-fns/fp'
+ export default endOfDecadeWithOptions
+}
+
+declare module 'date-fns/fp/endOfHour/index.js' {
+ import { endOfHour } from 'date-fns/fp'
+ export default endOfHour
+}
+
+declare module 'date-fns/fp/endOfISOWeek/index.js' {
+ import { endOfISOWeek } from 'date-fns/fp'
+ export default endOfISOWeek
+}
+
+declare module 'date-fns/fp/endOfISOWeekYear/index.js' {
+ import { endOfISOWeekYear } from 'date-fns/fp'
+ export default endOfISOWeekYear
+}
+
+declare module 'date-fns/fp/endOfMinute/index.js' {
+ import { endOfMinute } from 'date-fns/fp'
+ export default endOfMinute
+}
+
+declare module 'date-fns/fp/endOfMonth/index.js' {
+ import { endOfMonth } from 'date-fns/fp'
+ export default endOfMonth
+}
+
+declare module 'date-fns/fp/endOfQuarter/index.js' {
+ import { endOfQuarter } from 'date-fns/fp'
+ export default endOfQuarter
+}
+
+declare module 'date-fns/fp/endOfSecond/index.js' {
+ import { endOfSecond } from 'date-fns/fp'
+ export default endOfSecond
+}
+
+declare module 'date-fns/fp/endOfWeek/index.js' {
+ import { endOfWeek } from 'date-fns/fp'
+ export default endOfWeek
+}
+
+declare module 'date-fns/fp/endOfWeekWithOptions/index.js' {
+ import { endOfWeekWithOptions } from 'date-fns/fp'
+ export default endOfWeekWithOptions
+}
+
+declare module 'date-fns/fp/endOfYear/index.js' {
+ import { endOfYear } from 'date-fns/fp'
+ export default endOfYear
+}
+
+declare module 'date-fns/fp/format/index.js' {
+ import { format } from 'date-fns/fp'
+ export default format
+}
+
+declare module 'date-fns/fp/formatDistance/index.js' {
+ import { formatDistance } from 'date-fns/fp'
+ export default formatDistance
+}
+
+declare module 'date-fns/fp/formatDistanceStrict/index.js' {
+ import { formatDistanceStrict } from 'date-fns/fp'
+ export default formatDistanceStrict
+}
+
+declare module 'date-fns/fp/formatDistanceStrictWithOptions/index.js' {
+ import { formatDistanceStrictWithOptions } from 'date-fns/fp'
+ export default formatDistanceStrictWithOptions
+}
+
+declare module 'date-fns/fp/formatDistanceWithOptions/index.js' {
+ import { formatDistanceWithOptions } from 'date-fns/fp'
+ export default formatDistanceWithOptions
+}
+
+declare module 'date-fns/fp/formatDuration/index.js' {
+ import { formatDuration } from 'date-fns/fp'
+ export default formatDuration
+}
+
+declare module 'date-fns/fp/formatDurationWithOptions/index.js' {
+ import { formatDurationWithOptions } from 'date-fns/fp'
+ export default formatDurationWithOptions
+}
+
+declare module 'date-fns/fp/formatISO/index.js' {
+ import { formatISO } from 'date-fns/fp'
+ export default formatISO
+}
+
+declare module 'date-fns/fp/formatISO9075/index.js' {
+ import { formatISO9075 } from 'date-fns/fp'
+ export default formatISO9075
+}
+
+declare module 'date-fns/fp/formatISO9075WithOptions/index.js' {
+ import { formatISO9075WithOptions } from 'date-fns/fp'
+ export default formatISO9075WithOptions
+}
+
+declare module 'date-fns/fp/formatISODuration/index.js' {
+ import { formatISODuration } from 'date-fns/fp'
+ export default formatISODuration
+}
+
+declare module 'date-fns/fp/formatISOWithOptions/index.js' {
+ import { formatISOWithOptions } from 'date-fns/fp'
+ export default formatISOWithOptions
+}
+
+declare module 'date-fns/fp/formatRelative/index.js' {
+ import { formatRelative } from 'date-fns/fp'
+ export default formatRelative
+}
+
+declare module 'date-fns/fp/formatRelativeWithOptions/index.js' {
+ import { formatRelativeWithOptions } from 'date-fns/fp'
+ export default formatRelativeWithOptions
+}
+
+declare module 'date-fns/fp/formatRFC3339/index.js' {
+ import { formatRFC3339 } from 'date-fns/fp'
+ export default formatRFC3339
+}
+
+declare module 'date-fns/fp/formatRFC3339WithOptions/index.js' {
+ import { formatRFC3339WithOptions } from 'date-fns/fp'
+ export default formatRFC3339WithOptions
+}
+
+declare module 'date-fns/fp/formatRFC7231/index.js' {
+ import { formatRFC7231 } from 'date-fns/fp'
+ export default formatRFC7231
+}
+
+declare module 'date-fns/fp/formatWithOptions/index.js' {
+ import { formatWithOptions } from 'date-fns/fp'
+ export default formatWithOptions
+}
+
+declare module 'date-fns/fp/fromUnixTime/index.js' {
+ import { fromUnixTime } from 'date-fns/fp'
+ export default fromUnixTime
+}
+
+declare module 'date-fns/fp/getDate/index.js' {
+ import { getDate } from 'date-fns/fp'
+ export default getDate
+}
+
+declare module 'date-fns/fp/getDay/index.js' {
+ import { getDay } from 'date-fns/fp'
+ export default getDay
+}
+
+declare module 'date-fns/fp/getDayOfYear/index.js' {
+ import { getDayOfYear } from 'date-fns/fp'
+ export default getDayOfYear
+}
+
+declare module 'date-fns/fp/getDaysInMonth/index.js' {
+ import { getDaysInMonth } from 'date-fns/fp'
+ export default getDaysInMonth
+}
+
+declare module 'date-fns/fp/getDaysInYear/index.js' {
+ import { getDaysInYear } from 'date-fns/fp'
+ export default getDaysInYear
+}
+
+declare module 'date-fns/fp/getDecade/index.js' {
+ import { getDecade } from 'date-fns/fp'
+ export default getDecade
+}
+
+declare module 'date-fns/fp/getHours/index.js' {
+ import { getHours } from 'date-fns/fp'
+ export default getHours
+}
+
+declare module 'date-fns/fp/getISODay/index.js' {
+ import { getISODay } from 'date-fns/fp'
+ export default getISODay
+}
+
+declare module 'date-fns/fp/getISOWeek/index.js' {
+ import { getISOWeek } from 'date-fns/fp'
+ export default getISOWeek
+}
+
+declare module 'date-fns/fp/getISOWeeksInYear/index.js' {
+ import { getISOWeeksInYear } from 'date-fns/fp'
+ export default getISOWeeksInYear
+}
+
+declare module 'date-fns/fp/getISOWeekYear/index.js' {
+ import { getISOWeekYear } from 'date-fns/fp'
+ export default getISOWeekYear
+}
+
+declare module 'date-fns/fp/getMilliseconds/index.js' {
+ import { getMilliseconds } from 'date-fns/fp'
+ export default getMilliseconds
+}
+
+declare module 'date-fns/fp/getMinutes/index.js' {
+ import { getMinutes } from 'date-fns/fp'
+ export default getMinutes
+}
+
+declare module 'date-fns/fp/getMonth/index.js' {
+ import { getMonth } from 'date-fns/fp'
+ export default getMonth
+}
+
+declare module 'date-fns/fp/getOverlappingDaysInIntervals/index.js' {
+ import { getOverlappingDaysInIntervals } from 'date-fns/fp'
+ export default getOverlappingDaysInIntervals
+}
+
+declare module 'date-fns/fp/getQuarter/index.js' {
+ import { getQuarter } from 'date-fns/fp'
+ export default getQuarter
+}
+
+declare module 'date-fns/fp/getSeconds/index.js' {
+ import { getSeconds } from 'date-fns/fp'
+ export default getSeconds
+}
+
+declare module 'date-fns/fp/getTime/index.js' {
+ import { getTime } from 'date-fns/fp'
+ export default getTime
+}
+
+declare module 'date-fns/fp/getUnixTime/index.js' {
+ import { getUnixTime } from 'date-fns/fp'
+ export default getUnixTime
+}
+
+declare module 'date-fns/fp/getWeek/index.js' {
+ import { getWeek } from 'date-fns/fp'
+ export default getWeek
+}
+
+declare module 'date-fns/fp/getWeekOfMonth/index.js' {
+ import { getWeekOfMonth } from 'date-fns/fp'
+ export default getWeekOfMonth
+}
+
+declare module 'date-fns/fp/getWeekOfMonthWithOptions/index.js' {
+ import { getWeekOfMonthWithOptions } from 'date-fns/fp'
+ export default getWeekOfMonthWithOptions
+}
+
+declare module 'date-fns/fp/getWeeksInMonth/index.js' {
+ import { getWeeksInMonth } from 'date-fns/fp'
+ export default getWeeksInMonth
+}
+
+declare module 'date-fns/fp/getWeeksInMonthWithOptions/index.js' {
+ import { getWeeksInMonthWithOptions } from 'date-fns/fp'
+ export default getWeeksInMonthWithOptions
+}
+
+declare module 'date-fns/fp/getWeekWithOptions/index.js' {
+ import { getWeekWithOptions } from 'date-fns/fp'
+ export default getWeekWithOptions
+}
+
+declare module 'date-fns/fp/getWeekYear/index.js' {
+ import { getWeekYear } from 'date-fns/fp'
+ export default getWeekYear
+}
+
+declare module 'date-fns/fp/getWeekYearWithOptions/index.js' {
+ import { getWeekYearWithOptions } from 'date-fns/fp'
+ export default getWeekYearWithOptions
+}
+
+declare module 'date-fns/fp/getYear/index.js' {
+ import { getYear } from 'date-fns/fp'
+ export default getYear
+}
+
+declare module 'date-fns/fp/hoursToMilliseconds/index.js' {
+ import { hoursToMilliseconds } from 'date-fns/fp'
+ export default hoursToMilliseconds
+}
+
+declare module 'date-fns/fp/hoursToMinutes/index.js' {
+ import { hoursToMinutes } from 'date-fns/fp'
+ export default hoursToMinutes
+}
+
+declare module 'date-fns/fp/hoursToSeconds/index.js' {
+ import { hoursToSeconds } from 'date-fns/fp'
+ export default hoursToSeconds
+}
+
+declare module 'date-fns/fp/intervalToDuration/index.js' {
+ import { intervalToDuration } from 'date-fns/fp'
+ export default intervalToDuration
+}
+
+declare module 'date-fns/fp/intlFormat/index.js' {
+ import { intlFormat } from 'date-fns/fp'
+ export default intlFormat
+}
+
+declare module 'date-fns/fp/isAfter/index.js' {
+ import { isAfter } from 'date-fns/fp'
+ export default isAfter
+}
+
+declare module 'date-fns/fp/isBefore/index.js' {
+ import { isBefore } from 'date-fns/fp'
+ export default isBefore
+}
+
+declare module 'date-fns/fp/isDate/index.js' {
+ import { isDate } from 'date-fns/fp'
+ export default isDate
+}
+
+declare module 'date-fns/fp/isEqual/index.js' {
+ import { isEqual } from 'date-fns/fp'
+ export default isEqual
+}
+
+declare module 'date-fns/fp/isExists/index.js' {
+ import { isExists } from 'date-fns/fp'
+ export default isExists
+}
+
+declare module 'date-fns/fp/isFirstDayOfMonth/index.js' {
+ import { isFirstDayOfMonth } from 'date-fns/fp'
+ export default isFirstDayOfMonth
+}
+
+declare module 'date-fns/fp/isFriday/index.js' {
+ import { isFriday } from 'date-fns/fp'
+ export default isFriday
+}
+
+declare module 'date-fns/fp/isLastDayOfMonth/index.js' {
+ import { isLastDayOfMonth } from 'date-fns/fp'
+ export default isLastDayOfMonth
+}
+
+declare module 'date-fns/fp/isLeapYear/index.js' {
+ import { isLeapYear } from 'date-fns/fp'
+ export default isLeapYear
+}
+
+declare module 'date-fns/fp/isMatch/index.js' {
+ import { isMatch } from 'date-fns/fp'
+ export default isMatch
+}
+
+declare module 'date-fns/fp/isMatchWithOptions/index.js' {
+ import { isMatchWithOptions } from 'date-fns/fp'
+ export default isMatchWithOptions
+}
+
+declare module 'date-fns/fp/isMonday/index.js' {
+ import { isMonday } from 'date-fns/fp'
+ export default isMonday
+}
+
+declare module 'date-fns/fp/isSameDay/index.js' {
+ import { isSameDay } from 'date-fns/fp'
+ export default isSameDay
+}
+
+declare module 'date-fns/fp/isSameHour/index.js' {
+ import { isSameHour } from 'date-fns/fp'
+ export default isSameHour
+}
+
+declare module 'date-fns/fp/isSameISOWeek/index.js' {
+ import { isSameISOWeek } from 'date-fns/fp'
+ export default isSameISOWeek
+}
+
+declare module 'date-fns/fp/isSameISOWeekYear/index.js' {
+ import { isSameISOWeekYear } from 'date-fns/fp'
+ export default isSameISOWeekYear
+}
+
+declare module 'date-fns/fp/isSameMinute/index.js' {
+ import { isSameMinute } from 'date-fns/fp'
+ export default isSameMinute
+}
+
+declare module 'date-fns/fp/isSameMonth/index.js' {
+ import { isSameMonth } from 'date-fns/fp'
+ export default isSameMonth
+}
+
+declare module 'date-fns/fp/isSameQuarter/index.js' {
+ import { isSameQuarter } from 'date-fns/fp'
+ export default isSameQuarter
+}
+
+declare module 'date-fns/fp/isSameSecond/index.js' {
+ import { isSameSecond } from 'date-fns/fp'
+ export default isSameSecond
+}
+
+declare module 'date-fns/fp/isSameWeek/index.js' {
+ import { isSameWeek } from 'date-fns/fp'
+ export default isSameWeek
+}
+
+declare module 'date-fns/fp/isSameWeekWithOptions/index.js' {
+ import { isSameWeekWithOptions } from 'date-fns/fp'
+ export default isSameWeekWithOptions
+}
+
+declare module 'date-fns/fp/isSameYear/index.js' {
+ import { isSameYear } from 'date-fns/fp'
+ export default isSameYear
+}
+
+declare module 'date-fns/fp/isSaturday/index.js' {
+ import { isSaturday } from 'date-fns/fp'
+ export default isSaturday
+}
+
+declare module 'date-fns/fp/isSunday/index.js' {
+ import { isSunday } from 'date-fns/fp'
+ export default isSunday
+}
+
+declare module 'date-fns/fp/isThursday/index.js' {
+ import { isThursday } from 'date-fns/fp'
+ export default isThursday
+}
+
+declare module 'date-fns/fp/isTuesday/index.js' {
+ import { isTuesday } from 'date-fns/fp'
+ export default isTuesday
+}
+
+declare module 'date-fns/fp/isValid/index.js' {
+ import { isValid } from 'date-fns/fp'
+ export default isValid
+}
+
+declare module 'date-fns/fp/isWednesday/index.js' {
+ import { isWednesday } from 'date-fns/fp'
+ export default isWednesday
+}
+
+declare module 'date-fns/fp/isWeekend/index.js' {
+ import { isWeekend } from 'date-fns/fp'
+ export default isWeekend
+}
+
+declare module 'date-fns/fp/isWithinInterval/index.js' {
+ import { isWithinInterval } from 'date-fns/fp'
+ export default isWithinInterval
+}
+
+declare module 'date-fns/fp/lastDayOfDecade/index.js' {
+ import { lastDayOfDecade } from 'date-fns/fp'
+ export default lastDayOfDecade
+}
+
+declare module 'date-fns/fp/lastDayOfISOWeek/index.js' {
+ import { lastDayOfISOWeek } from 'date-fns/fp'
+ export default lastDayOfISOWeek
+}
+
+declare module 'date-fns/fp/lastDayOfISOWeekYear/index.js' {
+ import { lastDayOfISOWeekYear } from 'date-fns/fp'
+ export default lastDayOfISOWeekYear
+}
+
+declare module 'date-fns/fp/lastDayOfMonth/index.js' {
+ import { lastDayOfMonth } from 'date-fns/fp'
+ export default lastDayOfMonth
+}
+
+declare module 'date-fns/fp/lastDayOfQuarter/index.js' {
+ import { lastDayOfQuarter } from 'date-fns/fp'
+ export default lastDayOfQuarter
+}
+
+declare module 'date-fns/fp/lastDayOfQuarterWithOptions/index.js' {
+ import { lastDayOfQuarterWithOptions } from 'date-fns/fp'
+ export default lastDayOfQuarterWithOptions
+}
+
+declare module 'date-fns/fp/lastDayOfWeek/index.js' {
+ import { lastDayOfWeek } from 'date-fns/fp'
+ export default lastDayOfWeek
+}
+
+declare module 'date-fns/fp/lastDayOfWeekWithOptions/index.js' {
+ import { lastDayOfWeekWithOptions } from 'date-fns/fp'
+ export default lastDayOfWeekWithOptions
+}
+
+declare module 'date-fns/fp/lastDayOfYear/index.js' {
+ import { lastDayOfYear } from 'date-fns/fp'
+ export default lastDayOfYear
+}
+
+declare module 'date-fns/fp/lightFormat/index.js' {
+ import { lightFormat } from 'date-fns/fp'
+ export default lightFormat
+}
+
+declare module 'date-fns/fp/max/index.js' {
+ import { max } from 'date-fns/fp'
+ export default max
+}
+
+declare module 'date-fns/fp/milliseconds/index.js' {
+ import { milliseconds } from 'date-fns/fp'
+ export default milliseconds
+}
+
+declare module 'date-fns/fp/millisecondsToHours/index.js' {
+ import { millisecondsToHours } from 'date-fns/fp'
+ export default millisecondsToHours
+}
+
+declare module 'date-fns/fp/millisecondsToMinutes/index.js' {
+ import { millisecondsToMinutes } from 'date-fns/fp'
+ export default millisecondsToMinutes
+}
+
+declare module 'date-fns/fp/millisecondsToSeconds/index.js' {
+ import { millisecondsToSeconds } from 'date-fns/fp'
+ export default millisecondsToSeconds
+}
+
+declare module 'date-fns/fp/min/index.js' {
+ import { min } from 'date-fns/fp'
+ export default min
+}
+
+declare module 'date-fns/fp/minutesToHours/index.js' {
+ import { minutesToHours } from 'date-fns/fp'
+ export default minutesToHours
+}
+
+declare module 'date-fns/fp/minutesToMilliseconds/index.js' {
+ import { minutesToMilliseconds } from 'date-fns/fp'
+ export default minutesToMilliseconds
+}
+
+declare module 'date-fns/fp/minutesToSeconds/index.js' {
+ import { minutesToSeconds } from 'date-fns/fp'
+ export default minutesToSeconds
+}
+
+declare module 'date-fns/fp/monthsToQuarters/index.js' {
+ import { monthsToQuarters } from 'date-fns/fp'
+ export default monthsToQuarters
+}
+
+declare module 'date-fns/fp/monthsToYears/index.js' {
+ import { monthsToYears } from 'date-fns/fp'
+ export default monthsToYears
+}
+
+declare module 'date-fns/fp/nextDay/index.js' {
+ import { nextDay } from 'date-fns/fp'
+ export default nextDay
+}
+
+declare module 'date-fns/fp/nextFriday/index.js' {
+ import { nextFriday } from 'date-fns/fp'
+ export default nextFriday
+}
+
+declare module 'date-fns/fp/nextMonday/index.js' {
+ import { nextMonday } from 'date-fns/fp'
+ export default nextMonday
+}
+
+declare module 'date-fns/fp/nextSaturday/index.js' {
+ import { nextSaturday } from 'date-fns/fp'
+ export default nextSaturday
+}
+
+declare module 'date-fns/fp/nextSunday/index.js' {
+ import { nextSunday } from 'date-fns/fp'
+ export default nextSunday
+}
+
+declare module 'date-fns/fp/nextThursday/index.js' {
+ import { nextThursday } from 'date-fns/fp'
+ export default nextThursday
+}
+
+declare module 'date-fns/fp/nextTuesday/index.js' {
+ import { nextTuesday } from 'date-fns/fp'
+ export default nextTuesday
+}
+
+declare module 'date-fns/fp/nextWednesday/index.js' {
+ import { nextWednesday } from 'date-fns/fp'
+ export default nextWednesday
+}
+
+declare module 'date-fns/fp/parse/index.js' {
+ import { parse } from 'date-fns/fp'
+ export default parse
+}
+
+declare module 'date-fns/fp/parseISO/index.js' {
+ import { parseISO } from 'date-fns/fp'
+ export default parseISO
+}
+
+declare module 'date-fns/fp/parseISOWithOptions/index.js' {
+ import { parseISOWithOptions } from 'date-fns/fp'
+ export default parseISOWithOptions
+}
+
+declare module 'date-fns/fp/parseJSON/index.js' {
+ import { parseJSON } from 'date-fns/fp'
+ export default parseJSON
+}
+
+declare module 'date-fns/fp/parseWithOptions/index.js' {
+ import { parseWithOptions } from 'date-fns/fp'
+ export default parseWithOptions
+}
+
+declare module 'date-fns/fp/quartersToMonths/index.js' {
+ import { quartersToMonths } from 'date-fns/fp'
+ export default quartersToMonths
+}
+
+declare module 'date-fns/fp/quartersToYears/index.js' {
+ import { quartersToYears } from 'date-fns/fp'
+ export default quartersToYears
+}
+
+declare module 'date-fns/fp/roundToNearestMinutes/index.js' {
+ import { roundToNearestMinutes } from 'date-fns/fp'
+ export default roundToNearestMinutes
+}
+
+declare module 'date-fns/fp/roundToNearestMinutesWithOptions/index.js' {
+ import { roundToNearestMinutesWithOptions } from 'date-fns/fp'
+ export default roundToNearestMinutesWithOptions
+}
+
+declare module 'date-fns/fp/secondsToHours/index.js' {
+ import { secondsToHours } from 'date-fns/fp'
+ export default secondsToHours
+}
+
+declare module 'date-fns/fp/secondsToMilliseconds/index.js' {
+ import { secondsToMilliseconds } from 'date-fns/fp'
+ export default secondsToMilliseconds
+}
+
+declare module 'date-fns/fp/secondsToMinutes/index.js' {
+ import { secondsToMinutes } from 'date-fns/fp'
+ export default secondsToMinutes
+}
+
+declare module 'date-fns/fp/set/index.js' {
+ import { set } from 'date-fns/fp'
+ export default set
+}
+
+declare module 'date-fns/fp/setDate/index.js' {
+ import { setDate } from 'date-fns/fp'
+ export default setDate
+}
+
+declare module 'date-fns/fp/setDay/index.js' {
+ import { setDay } from 'date-fns/fp'
+ export default setDay
+}
+
+declare module 'date-fns/fp/setDayOfYear/index.js' {
+ import { setDayOfYear } from 'date-fns/fp'
+ export default setDayOfYear
+}
+
+declare module 'date-fns/fp/setDayWithOptions/index.js' {
+ import { setDayWithOptions } from 'date-fns/fp'
+ export default setDayWithOptions
+}
+
+declare module 'date-fns/fp/setHours/index.js' {
+ import { setHours } from 'date-fns/fp'
+ export default setHours
+}
+
+declare module 'date-fns/fp/setISODay/index.js' {
+ import { setISODay } from 'date-fns/fp'
+ export default setISODay
+}
+
+declare module 'date-fns/fp/setISOWeek/index.js' {
+ import { setISOWeek } from 'date-fns/fp'
+ export default setISOWeek
+}
+
+declare module 'date-fns/fp/setISOWeekYear/index.js' {
+ import { setISOWeekYear } from 'date-fns/fp'
+ export default setISOWeekYear
+}
+
+declare module 'date-fns/fp/setMilliseconds/index.js' {
+ import { setMilliseconds } from 'date-fns/fp'
+ export default setMilliseconds
+}
+
+declare module 'date-fns/fp/setMinutes/index.js' {
+ import { setMinutes } from 'date-fns/fp'
+ export default setMinutes
+}
+
+declare module 'date-fns/fp/setMonth/index.js' {
+ import { setMonth } from 'date-fns/fp'
+ export default setMonth
+}
+
+declare module 'date-fns/fp/setQuarter/index.js' {
+ import { setQuarter } from 'date-fns/fp'
+ export default setQuarter
+}
+
+declare module 'date-fns/fp/setSeconds/index.js' {
+ import { setSeconds } from 'date-fns/fp'
+ export default setSeconds
+}
+
+declare module 'date-fns/fp/setWeek/index.js' {
+ import { setWeek } from 'date-fns/fp'
+ export default setWeek
+}
+
+declare module 'date-fns/fp/setWeekWithOptions/index.js' {
+ import { setWeekWithOptions } from 'date-fns/fp'
+ export default setWeekWithOptions
+}
+
+declare module 'date-fns/fp/setWeekYear/index.js' {
+ import { setWeekYear } from 'date-fns/fp'
+ export default setWeekYear
+}
+
+declare module 'date-fns/fp/setWeekYearWithOptions/index.js' {
+ import { setWeekYearWithOptions } from 'date-fns/fp'
+ export default setWeekYearWithOptions
+}
+
+declare module 'date-fns/fp/setYear/index.js' {
+ import { setYear } from 'date-fns/fp'
+ export default setYear
+}
+
+declare module 'date-fns/fp/startOfDay/index.js' {
+ import { startOfDay } from 'date-fns/fp'
+ export default startOfDay
+}
+
+declare module 'date-fns/fp/startOfDecade/index.js' {
+ import { startOfDecade } from 'date-fns/fp'
+ export default startOfDecade
+}
+
+declare module 'date-fns/fp/startOfHour/index.js' {
+ import { startOfHour } from 'date-fns/fp'
+ export default startOfHour
+}
+
+declare module 'date-fns/fp/startOfISOWeek/index.js' {
+ import { startOfISOWeek } from 'date-fns/fp'
+ export default startOfISOWeek
+}
+
+declare module 'date-fns/fp/startOfISOWeekYear/index.js' {
+ import { startOfISOWeekYear } from 'date-fns/fp'
+ export default startOfISOWeekYear
+}
+
+declare module 'date-fns/fp/startOfMinute/index.js' {
+ import { startOfMinute } from 'date-fns/fp'
+ export default startOfMinute
+}
+
+declare module 'date-fns/fp/startOfMonth/index.js' {
+ import { startOfMonth } from 'date-fns/fp'
+ export default startOfMonth
+}
+
+declare module 'date-fns/fp/startOfQuarter/index.js' {
+ import { startOfQuarter } from 'date-fns/fp'
+ export default startOfQuarter
+}
+
+declare module 'date-fns/fp/startOfSecond/index.js' {
+ import { startOfSecond } from 'date-fns/fp'
+ export default startOfSecond
+}
+
+declare module 'date-fns/fp/startOfWeek/index.js' {
+ import { startOfWeek } from 'date-fns/fp'
+ export default startOfWeek
+}
+
+declare module 'date-fns/fp/startOfWeekWithOptions/index.js' {
+ import { startOfWeekWithOptions } from 'date-fns/fp'
+ export default startOfWeekWithOptions
+}
+
+declare module 'date-fns/fp/startOfWeekYear/index.js' {
+ import { startOfWeekYear } from 'date-fns/fp'
+ export default startOfWeekYear
+}
+
+declare module 'date-fns/fp/startOfWeekYearWithOptions/index.js' {
+ import { startOfWeekYearWithOptions } from 'date-fns/fp'
+ export default startOfWeekYearWithOptions
+}
+
+declare module 'date-fns/fp/startOfYear/index.js' {
+ import { startOfYear } from 'date-fns/fp'
+ export default startOfYear
+}
+
+declare module 'date-fns/fp/sub/index.js' {
+ import { sub } from 'date-fns/fp'
+ export default sub
+}
+
+declare module 'date-fns/fp/subBusinessDays/index.js' {
+ import { subBusinessDays } from 'date-fns/fp'
+ export default subBusinessDays
+}
+
+declare module 'date-fns/fp/subDays/index.js' {
+ import { subDays } from 'date-fns/fp'
+ export default subDays
+}
+
+declare module 'date-fns/fp/subHours/index.js' {
+ import { subHours } from 'date-fns/fp'
+ export default subHours
+}
+
+declare module 'date-fns/fp/subISOWeekYears/index.js' {
+ import { subISOWeekYears } from 'date-fns/fp'
+ export default subISOWeekYears
+}
+
+declare module 'date-fns/fp/subMilliseconds/index.js' {
+ import { subMilliseconds } from 'date-fns/fp'
+ export default subMilliseconds
+}
+
+declare module 'date-fns/fp/subMinutes/index.js' {
+ import { subMinutes } from 'date-fns/fp'
+ export default subMinutes
+}
+
+declare module 'date-fns/fp/subMonths/index.js' {
+ import { subMonths } from 'date-fns/fp'
+ export default subMonths
+}
+
+declare module 'date-fns/fp/subQuarters/index.js' {
+ import { subQuarters } from 'date-fns/fp'
+ export default subQuarters
+}
+
+declare module 'date-fns/fp/subSeconds/index.js' {
+ import { subSeconds } from 'date-fns/fp'
+ export default subSeconds
+}
+
+declare module 'date-fns/fp/subWeeks/index.js' {
+ import { subWeeks } from 'date-fns/fp'
+ export default subWeeks
+}
+
+declare module 'date-fns/fp/subYears/index.js' {
+ import { subYears } from 'date-fns/fp'
+ export default subYears
+}
+
+declare module 'date-fns/fp/toDate/index.js' {
+ import { toDate } from 'date-fns/fp'
+ export default toDate
+}
+
+declare module 'date-fns/fp/weeksToDays/index.js' {
+ import { weeksToDays } from 'date-fns/fp'
+ export default weeksToDays
+}
+
+declare module 'date-fns/fp/yearsToMonths/index.js' {
+ import { yearsToMonths } from 'date-fns/fp'
+ export default yearsToMonths
+}
+
+declare module 'date-fns/fp/yearsToQuarters/index.js' {
+ import { yearsToQuarters } from 'date-fns/fp'
+ export default yearsToQuarters
+}
+
+// ECMAScript Module Functions
+
+declare module 'date-fns/esm' {
+ function add(date: Date | number, duration: Duration): Date
+ namespace add {}
+
+ function addBusinessDays(date: Date | number, amount: number): Date
+ namespace addBusinessDays {}
+
+ function addDays(date: Date | number, amount: number): Date
+ namespace addDays {}
+
+ function addHours(date: Date | number, amount: number): Date
+ namespace addHours {}
+
+ function addISOWeekYears(date: Date | number, amount: number): Date
+ namespace addISOWeekYears {}
+
+ function addMilliseconds(date: Date | number, amount: number): Date
+ namespace addMilliseconds {}
+
+ function addMinutes(date: Date | number, amount: number): Date
+ namespace addMinutes {}
+
+ function addMonths(date: Date | number, amount: number): Date
+ namespace addMonths {}
+
+ function addQuarters(date: Date | number, amount: number): Date
+ namespace addQuarters {}
+
+ function addSeconds(date: Date | number, amount: number): Date
+ namespace addSeconds {}
+
+ function addWeeks(date: Date | number, amount: number): Date
+ namespace addWeeks {}
+
+ function addYears(date: Date | number, amount: number): Date
+ namespace addYears {}
+
+ function areIntervalsOverlapping(
+ intervalLeft: Interval,
+ intervalRight: Interval,
+ options?: {
+ inclusive?: boolean
+ }
+ ): boolean
+ namespace areIntervalsOverlapping {}
+
+ function closestIndexTo(
+ dateToCompare: Date | number,
+ datesArray: (Date | number)[]
+ ): number
+ namespace closestIndexTo {}
+
+ function closestTo(
+ dateToCompare: Date | number,
+ datesArray: (Date | number)[]
+ ): Date
+ namespace closestTo {}
+
+ function compareAsc(dateLeft: Date | number, dateRight: Date | number): number
+ namespace compareAsc {}
+
+ function compareDesc(
+ dateLeft: Date | number,
+ dateRight: Date | number
+ ): number
+ namespace compareDesc {}
+
+ function daysToWeeks(days: number): number
+ namespace daysToWeeks {}
+
+ function differenceInBusinessDays(
+ dateLeft: Date | number,
+ dateRight: Date | number
+ ): number
+ namespace differenceInBusinessDays {}
+
+ function differenceInCalendarDays(
+ dateLeft: Date | number,
+ dateRight: Date | number
+ ): number
+ namespace differenceInCalendarDays {}
+
+ function differenceInCalendarISOWeeks(
+ dateLeft: Date | number,
+ dateRight: Date | number
+ ): number
+ namespace differenceInCalendarISOWeeks {}
+
+ function differenceInCalendarISOWeekYears(
+ dateLeft: Date | number,
+ dateRight: Date | number
+ ): number
+ namespace differenceInCalendarISOWeekYears {}
+
+ function differenceInCalendarMonths(
+ dateLeft: Date | number,
+ dateRight: Date | number
+ ): number
+ namespace differenceInCalendarMonths {}
+
+ function differenceInCalendarQuarters(
+ dateLeft: Date | number,
+ dateRight: Date | number
+ ): number
+ namespace differenceInCalendarQuarters {}
+
+ function differenceInCalendarWeeks(
+ dateLeft: Date | number,
+ dateRight: Date | number,
+ options?: {
+ locale?: Locale
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6
+ }
+ ): number
+ namespace differenceInCalendarWeeks {}
+
+ function differenceInCalendarYears(
+ dateLeft: Date | number,
+ dateRight: Date | number
+ ): number
+ namespace differenceInCalendarYears {}
+
+ function differenceInDays(
+ dateLeft: Date | number,
+ dateRight: Date | number
+ ): number
+ namespace differenceInDays {}
+
+ function differenceInHours(
+ dateLeft: Date | number,
+ dateRight: Date | number
+ ): number
+ namespace differenceInHours {}
+
+ function differenceInISOWeekYears(
+ dateLeft: Date | number,
+ dateRight: Date | number
+ ): number
+ namespace differenceInISOWeekYears {}
+
+ function differenceInMilliseconds(
+ dateLeft: Date | number,
+ dateRight: Date | number
+ ): number
+ namespace differenceInMilliseconds {}
+
+ function differenceInMinutes(
+ dateLeft: Date | number,
+ dateRight: Date | number
+ ): number
+ namespace differenceInMinutes {}
+
+ function differenceInMonths(
+ dateLeft: Date | number,
+ dateRight: Date | number
+ ): number
+ namespace differenceInMonths {}
+
+ function differenceInQuarters(
+ dateLeft: Date | number,
+ dateRight: Date | number
+ ): number
+ namespace differenceInQuarters {}
+
+ function differenceInSeconds(
+ dateLeft: Date | number,
+ dateRight: Date | number
+ ): number
+ namespace differenceInSeconds {}
+
+ function differenceInWeeks(
+ dateLeft: Date | number,
+ dateRight: Date | number
+ ): number
+ namespace differenceInWeeks {}
+
+ function differenceInYears(
+ dateLeft: Date | number,
+ dateRight: Date | number
+ ): number
+ namespace differenceInYears {}
+
+ function eachDayOfInterval(
+ interval: Interval,
+ options?: {
+ step?: number
+ }
+ ): Date[]
+ namespace eachDayOfInterval {}
+
+ function eachHourOfInterval(
+ interval: Interval,
+ options?: {
+ step?: number
+ }
+ ): Date[]
+ namespace eachHourOfInterval {}
+
+ function eachMinuteOfInterval(
+ interval: Interval,
+ options?: {
+ step?: number
+ }
+ ): Date[]
+ namespace eachMinuteOfInterval {}
+
+ function eachMonthOfInterval(interval: Interval): Date[]
+ namespace eachMonthOfInterval {}
+
+ function eachQuarterOfInterval(interval: Interval): Date[]
+ namespace eachQuarterOfInterval {}
+
+ function eachWeekendOfInterval(interval: Interval): Date[]
+ namespace eachWeekendOfInterval {}
+
+ function eachWeekendOfMonth(date: Date | number): Date[]
+ namespace eachWeekendOfMonth {}
+
+ function eachWeekendOfYear(date: Date | number): Date[]
+ namespace eachWeekendOfYear {}
+
+ function eachWeekOfInterval(
+ interval: Interval,
+ options?: {
+ locale?: Locale
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6
+ }
+ ): Date[]
+ namespace eachWeekOfInterval {}
+
+ function eachYearOfInterval(interval: Interval): Date[]
+ namespace eachYearOfInterval {}
+
+ function endOfDay(date: Date | number): Date
+ namespace endOfDay {}
+
+ function endOfDecade(
+ date: Date | number,
+ options?: {
+ additionalDigits?: 0 | 1 | 2
+ }
+ ): Date
+ namespace endOfDecade {}
+
+ function endOfHour(date: Date | number): Date
+ namespace endOfHour {}
+
+ function endOfISOWeek(date: Date | number): Date
+ namespace endOfISOWeek {}
+
+ function endOfISOWeekYear(date: Date | number): Date
+ namespace endOfISOWeekYear {}
+
+ function endOfMinute(date: Date | number): Date
+ namespace endOfMinute {}
+
+ function endOfMonth(date: Date | number): Date
+ namespace endOfMonth {}
+
+ function endOfQuarter(date: Date | number): Date
+ namespace endOfQuarter {}
+
+ function endOfSecond(date: Date | number): Date
+ namespace endOfSecond {}
+
+ function endOfToday(): Date
+ namespace endOfToday {}
+
+ function endOfTomorrow(): Date
+ namespace endOfTomorrow {}
+
+ function endOfWeek(
+ date: Date | number,
+ options?: {
+ locale?: Locale
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6
+ }
+ ): Date
+ namespace endOfWeek {}
+
+ function endOfYear(date: Date | number): Date
+ namespace endOfYear {}
+
+ function endOfYesterday(): Date
+ namespace endOfYesterday {}
+
+ function format(
+ date: Date | number,
+ format: string,
+ options?: {
+ locale?: Locale
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6
+ firstWeekContainsDate?: number
+ useAdditionalWeekYearTokens?: boolean
+ useAdditionalDayOfYearTokens?: boolean
+ }
+ ): string
+ namespace format {}
+
+ function formatDistance(
+ date: Date | number,
+ baseDate: Date | number,
+ options?: {
+ includeSeconds?: boolean
+ addSuffix?: boolean
+ locale?: Locale
+ }
+ ): string
+ namespace formatDistance {}
+
+ function formatDistanceStrict(
+ date: Date | number,
+ baseDate: Date | number,
+ options?: {
+ addSuffix?: boolean
+ unit?: 'second' | 'minute' | 'hour' | 'day' | 'month' | 'year'
+ roundingMethod?: 'floor' | 'ceil' | 'round'
+ locale?: Locale
+ }
+ ): string
+ namespace formatDistanceStrict {}
+
+ function formatDistanceToNow(
+ date: Date | number,
+ options?: {
+ includeSeconds?: boolean
+ addSuffix?: boolean
+ locale?: Locale
+ }
+ ): string
+ namespace formatDistanceToNow {}
+
+ function formatDistanceToNowStrict(
+ date: Date | number,
+ options?: {
+ addSuffix?: boolean
+ unit?: 'second' | 'minute' | 'hour' | 'day' | 'month' | 'year'
+ roundingMethod?: 'floor' | 'ceil' | 'round'
+ locale?: Locale
+ }
+ ): string
+ namespace formatDistanceToNowStrict {}
+
+ function formatDuration(
+ duration: Duration,
+ options?: {
+ format?: string[]
+ zero?: boolean
+ delimiter?: string
+ locale?: Locale
+ }
+ ): string
+ namespace formatDuration {}
+
+ function formatISO(
+ date: Date | number,
+ options?: {
+ format?: 'extended' | 'basic'
+ representation?: 'complete' | 'date' | 'time'
+ }
+ ): string
+ namespace formatISO {}
+
+ function formatISO9075(
+ date: Date | number,
+ options?: {
+ format?: 'extended' | 'basic'
+ representation?: 'complete' | 'date' | 'time'
+ }
+ ): string
+ namespace formatISO9075 {}
+
+ function formatISODuration(duration: Duration): string
+ namespace formatISODuration {}
+
+ function formatRelative(
+ date: Date | number,
+ baseDate: Date | number,
+ options?: {
+ locale?: Locale
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6
+ }
+ ): string
+ namespace formatRelative {}
+
+ function formatRFC3339(
+ date: Date | number,
+ options?: {
+ fractionDigits?: 0 | 1 | 2 | 3
+ }
+ ): string
+ namespace formatRFC3339 {}
+
+ function formatRFC7231(date: Date | number): string
+ namespace formatRFC7231 {}
+
+ function fromUnixTime(unixTime: number): Date
+ namespace fromUnixTime {}
+
+ function getDate(date: Date | number): number
+ namespace getDate {}
+
+ function getDay(date: Date | number): 0 | 1 | 2 | 3 | 4 | 5 | 6
+ namespace getDay {}
+
+ function getDayOfYear(date: Date | number): number
+ namespace getDayOfYear {}
+
+ function getDaysInMonth(date: Date | number): number
+ namespace getDaysInMonth {}
+
+ function getDaysInYear(date: Date | number): number
+ namespace getDaysInYear {}
+
+ function getDecade(date: Date | number): number
+ namespace getDecade {}
+
+ function getHours(date: Date | number): number
+ namespace getHours {}
+
+ function getISODay(date: Date | number): number
+ namespace getISODay {}
+
+ function getISOWeek(date: Date | number): number
+ namespace getISOWeek {}
+
+ function getISOWeeksInYear(date: Date | number): number
+ namespace getISOWeeksInYear {}
+
+ function getISOWeekYear(date: Date | number): number
+ namespace getISOWeekYear {}
+
+ function getMilliseconds(date: Date | number): number
+ namespace getMilliseconds {}
+
+ function getMinutes(date: Date | number): number
+ namespace getMinutes {}
+
+ function getMonth(date: Date | number): number
+ namespace getMonth {}
+
+ function getOverlappingDaysInIntervals(
+ intervalLeft: Interval,
+ intervalRight: Interval
+ ): number
+ namespace getOverlappingDaysInIntervals {}
+
+ function getQuarter(date: Date | number): number
+ namespace getQuarter {}
+
+ function getSeconds(date: Date | number): number
+ namespace getSeconds {}
+
+ function getTime(date: Date | number): number
+ namespace getTime {}
+
+ function getUnixTime(date: Date | number): number
+ namespace getUnixTime {}
+
+ function getWeek(
+ date: Date | number,
+ options?: {
+ locale?: Locale
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7
+ }
+ ): number
+ namespace getWeek {}
+
+ function getWeekOfMonth(
+ date: Date | number,
+ options?: {
+ locale?: Locale
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6
+ }
+ ): number
+ namespace getWeekOfMonth {}
+
+ function getWeeksInMonth(
+ date: Date | number,
+ options?: {
+ locale?: Locale
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6
+ }
+ ): number
+ namespace getWeeksInMonth {}
+
+ function getWeekYear(
+ date: Date | number,
+ options?: {
+ locale?: Locale
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7
+ }
+ ): number
+ namespace getWeekYear {}
+
+ function getYear(date: Date | number): number
+ namespace getYear {}
+
+ function hoursToMilliseconds(hours: number): number
+ namespace hoursToMilliseconds {}
+
+ function hoursToMinutes(hours: number): number
+ namespace hoursToMinutes {}
+
+ function hoursToSeconds(hours: number): number
+ namespace hoursToSeconds {}
+
+ function intervalToDuration(interval: Interval): Duration
+ namespace intervalToDuration {}
+
+ function intlFormat(
+ argument: Date | number,
+ formatOptions?: {
+ localeMatcher?: 'lookup' | 'best fit'
+ weekday?: 'narrow' | 'short' | 'long'
+ era?: 'narrow' | 'short' | 'long'
+ year?: 'numeric' | '2-digit'
+ month?: 'numeric' | '2-digit' | 'narrow' | 'short' | 'long'
+ day?: 'numeric' | '2-digit'
+ hour?: 'numeric' | '2-digit'
+ minute?: 'numeric' | '2-digit'
+ second?: 'numeric' | '2-digit'
+ timeZoneName?: 'short' | 'long'
+ formatMatcher?: 'basic' | 'best fit'
+ hour12?: boolean
+ timeZone?: string
+ },
+ localeOptions?: {
+ locale?: string | string[]
+ }
+ ): string
+ namespace intlFormat {}
+
+ function isAfter(date: Date | number, dateToCompare: Date | number): boolean
+ namespace isAfter {}
+
+ function isBefore(date: Date | number, dateToCompare: Date | number): boolean
+ namespace isBefore {}
+
+ function isDate(value: any): boolean
+ namespace isDate {}
+
+ function isEqual(dateLeft: Date | number, dateRight: Date | number): boolean
+ namespace isEqual {}
+
+ function isExists(year: number, month: number, day: number): boolean
+ namespace isExists {}
+
+ function isFirstDayOfMonth(date: Date | number): boolean
+ namespace isFirstDayOfMonth {}
+
+ function isFriday(date: Date | number): boolean
+ namespace isFriday {}
+
+ function isFuture(date: Date | number): boolean
+ namespace isFuture {}
+
+ function isLastDayOfMonth(date: Date | number): boolean
+ namespace isLastDayOfMonth {}
+
+ function isLeapYear(date: Date | number): boolean
+ namespace isLeapYear {}
+
+ function isMatch(
+ dateString: string,
+ formatString: string,
+ options?: {
+ locale?: Locale
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7
+ useAdditionalWeekYearTokens?: boolean
+ useAdditionalDayOfYearTokens?: boolean
+ }
+ ): boolean
+ namespace isMatch {}
+
+ function isMonday(date: Date | number): boolean
+ namespace isMonday {}
+
+ function isPast(date: Date | number): boolean
+ namespace isPast {}
+
+ function isSameDay(dateLeft: Date | number, dateRight: Date | number): boolean
+ namespace isSameDay {}
+
+ function isSameHour(
+ dateLeft: Date | number,
+ dateRight: Date | number
+ ): boolean
+ namespace isSameHour {}
+
+ function isSameISOWeek(
+ dateLeft: Date | number,
+ dateRight: Date | number
+ ): boolean
+ namespace isSameISOWeek {}
+
+ function isSameISOWeekYear(
+ dateLeft: Date | number,
+ dateRight: Date | number
+ ): boolean
+ namespace isSameISOWeekYear {}
+
+ function isSameMinute(
+ dateLeft: Date | number,
+ dateRight: Date | number
+ ): boolean
+ namespace isSameMinute {}
+
+ function isSameMonth(
+ dateLeft: Date | number,
+ dateRight: Date | number
+ ): boolean
+ namespace isSameMonth {}
+
+ function isSameQuarter(
+ dateLeft: Date | number,
+ dateRight: Date | number
+ ): boolean
+ namespace isSameQuarter {}
+
+ function isSameSecond(
+ dateLeft: Date | number,
+ dateRight: Date | number
+ ): boolean
+ namespace isSameSecond {}
+
+ function isSameWeek(
+ dateLeft: Date | number,
+ dateRight: Date | number,
+ options?: {
+ locale?: Locale
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6
+ }
+ ): boolean
+ namespace isSameWeek {}
+
+ function isSameYear(
+ dateLeft: Date | number,
+ dateRight: Date | number
+ ): boolean
+ namespace isSameYear {}
+
+ function isSaturday(date: Date | number): boolean
+ namespace isSaturday {}
+
+ function isSunday(date: Date | number): boolean
+ namespace isSunday {}
+
+ function isThisHour(date: Date | number): boolean
+ namespace isThisHour {}
+
+ function isThisISOWeek(date: Date | number): boolean
+ namespace isThisISOWeek {}
+
+ function isThisMinute(date: Date | number): boolean
+ namespace isThisMinute {}
+
+ function isThisMonth(date: Date | number): boolean
+ namespace isThisMonth {}
+
+ function isThisQuarter(date: Date | number): boolean
+ namespace isThisQuarter {}
+
+ function isThisSecond(date: Date | number): boolean
+ namespace isThisSecond {}
+
+ function isThisWeek(
+ date: Date | number,
+ options?: {
+ locale?: Locale
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6
+ }
+ ): boolean
+ namespace isThisWeek {}
+
+ function isThisYear(date: Date | number): boolean
+ namespace isThisYear {}
+
+ function isThursday(date: Date | number): boolean
+ namespace isThursday {}
+
+ function isToday(date: Date | number): boolean
+ namespace isToday {}
+
+ function isTomorrow(date: Date | number): boolean
+ namespace isTomorrow {}
+
+ function isTuesday(date: Date | number): boolean
+ namespace isTuesday {}
+
+ function isValid(date: any): boolean
+ namespace isValid {}
+
+ function isWednesday(date: Date | number): boolean
+ namespace isWednesday {}
+
+ function isWeekend(date: Date | number): boolean
+ namespace isWeekend {}
+
+ function isWithinInterval(date: Date | number, interval: Interval): boolean
+ namespace isWithinInterval {}
+
+ function isYesterday(date: Date | number): boolean
+ namespace isYesterday {}
+
+ function lastDayOfDecade(date: Date | number): Date
+ namespace lastDayOfDecade {}
+
+ function lastDayOfISOWeek(date: Date | number): Date
+ namespace lastDayOfISOWeek {}
+
+ function lastDayOfISOWeekYear(date: Date | number): Date
+ namespace lastDayOfISOWeekYear {}
+
+ function lastDayOfMonth(date: Date | number): Date
+ namespace lastDayOfMonth {}
+
+ function lastDayOfQuarter(
+ date: Date | number,
+ options?: {
+ additionalDigits?: 0 | 1 | 2
+ }
+ ): Date
+ namespace lastDayOfQuarter {}
+
+ function lastDayOfWeek(
+ date: Date | number,
+ options?: {
+ locale?: Locale
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6
+ }
+ ): Date
+ namespace lastDayOfWeek {}
+
+ function lastDayOfYear(date: Date | number): Date
+ namespace lastDayOfYear {}
+
+ function lightFormat(date: Date | number, format: string): string
+ namespace lightFormat {}
+
+ function max(datesArray: (Date | number)[]): Date
+ namespace max {}
+
+ function milliseconds(duration: Duration): number
+ namespace milliseconds {}
+
+ function millisecondsToHours(milliseconds: number): number
+ namespace millisecondsToHours {}
+
+ function millisecondsToMinutes(milliseconds: number): number
+ namespace millisecondsToMinutes {}
+
+ function millisecondsToSeconds(milliseconds: number): number
+ namespace millisecondsToSeconds {}
+
+ function min(datesArray: (Date | number)[]): Date
+ namespace min {}
+
+ function minutesToHours(minutes: number): number
+ namespace minutesToHours {}
+
+ function minutesToMilliseconds(minutes: number): number
+ namespace minutesToMilliseconds {}
+
+ function minutesToSeconds(minutes: number): number
+ namespace minutesToSeconds {}
+
+ function monthsToQuarters(months: number): number
+ namespace monthsToQuarters {}
+
+ function monthsToYears(months: number): number
+ namespace monthsToYears {}
+
+ function nextDay(date: Date | number, day: Day): Date
+ namespace nextDay {}
+
+ function nextFriday(date: Date | number): Date
+ namespace nextFriday {}
+
+ function nextMonday(date: Date | number): Date
+ namespace nextMonday {}
+
+ function nextSaturday(date: Date | number): Date
+ namespace nextSaturday {}
+
+ function nextSunday(date: Date | number): Date
+ namespace nextSunday {}
+
+ function nextThursday(date: Date | number): Date
+ namespace nextThursday {}
+
+ function nextTuesday(date: Date | number): Date
+ namespace nextTuesday {}
+
+ function nextWednesday(date: Date | number): Date
+ namespace nextWednesday {}
+
+ function parse(
+ dateString: string,
+ formatString: string,
+ referenceDate: Date | number,
+ options?: {
+ locale?: Locale
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7
+ useAdditionalWeekYearTokens?: boolean
+ useAdditionalDayOfYearTokens?: boolean
+ }
+ ): Date
+ namespace parse {}
+
+ function parseISO(
+ argument: string,
+ options?: {
+ additionalDigits?: 0 | 1 | 2
+ }
+ ): Date
+ namespace parseISO {}
+
+ function parseJSON(argument: string | number | Date): Date
+ namespace parseJSON {}
+
+ function quartersToMonths(quarters: number): number
+ namespace quartersToMonths {}
+
+ function quartersToYears(quarters: number): number
+ namespace quartersToYears {}
+
+ function roundToNearestMinutes(
+ date: Date | number,
+ options?: {
+ nearestTo?: number
+ }
+ ): Date
+ namespace roundToNearestMinutes {}
+
+ function secondsToHours(seconds: number): number
+ namespace secondsToHours {}
+
+ function secondsToMilliseconds(seconds: number): number
+ namespace secondsToMilliseconds {}
+
+ function secondsToMinutes(seconds: number): number
+ namespace secondsToMinutes {}
+
+ function set(
+ date: Date | number,
+ values: {
+ year?: number
+ month?: number
+ date?: number
+ hours?: number
+ minutes?: number
+ seconds?: number
+ milliseconds?: number
+ }
+ ): Date
+ namespace set {}
+
+ function setDate(date: Date | number, dayOfMonth: number): Date
+ namespace setDate {}
+
+ function setDay(
+ date: Date | number,
+ day: number,
+ options?: {
+ locale?: Locale
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6
+ }
+ ): Date
+ namespace setDay {}
+
+ function setDayOfYear(date: Date | number, dayOfYear: number): Date
+ namespace setDayOfYear {}
+
+ function setHours(date: Date | number, hours: number): Date
+ namespace setHours {}
+
+ function setISODay(date: Date | number, day: number): Date
+ namespace setISODay {}
+
+ function setISOWeek(date: Date | number, isoWeek: number): Date
+ namespace setISOWeek {}
+
+ function setISOWeekYear(date: Date | number, isoWeekYear: number): Date
+ namespace setISOWeekYear {}
+
+ function setMilliseconds(date: Date | number, milliseconds: number): Date
+ namespace setMilliseconds {}
+
+ function setMinutes(date: Date | number, minutes: number): Date
+ namespace setMinutes {}
+
+ function setMonth(date: Date | number, month: number): Date
+ namespace setMonth {}
+
+ function setQuarter(date: Date | number, quarter: number): Date
+ namespace setQuarter {}
+
+ function setSeconds(date: Date | number, seconds: number): Date
+ namespace setSeconds {}
+
+ function setWeek(
+ date: Date | number,
+ week: number,
+ options?: {
+ locale?: Locale
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7
+ }
+ ): Date
+ namespace setWeek {}
+
+ function setWeekYear(
+ date: Date | number,
+ weekYear: number,
+ options?: {
+ locale?: Locale
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7
+ }
+ ): Date
+ namespace setWeekYear {}
+
+ function setYear(date: Date | number, year: number): Date
+ namespace setYear {}
+
+ function startOfDay(date: Date | number): Date
+ namespace startOfDay {}
+
+ function startOfDecade(date: Date | number): Date
+ namespace startOfDecade {}
+
+ function startOfHour(date: Date | number): Date
+ namespace startOfHour {}
+
+ function startOfISOWeek(date: Date | number): Date
+ namespace startOfISOWeek {}
+
+ function startOfISOWeekYear(date: Date | number): Date
+ namespace startOfISOWeekYear {}
+
+ function startOfMinute(date: Date | number): Date
+ namespace startOfMinute {}
+
+ function startOfMonth(date: Date | number): Date
+ namespace startOfMonth {}
+
+ function startOfQuarter(date: Date | number): Date
+ namespace startOfQuarter {}
+
+ function startOfSecond(date: Date | number): Date
+ namespace startOfSecond {}
+
+ function startOfToday(): Date
+ namespace startOfToday {}
+
+ function startOfTomorrow(): Date
+ namespace startOfTomorrow {}
+
+ function startOfWeek(
+ date: Date | number,
+ options?: {
+ locale?: Locale
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6
+ }
+ ): Date
+ namespace startOfWeek {}
+
+ function startOfWeekYear(
+ date: Date | number,
+ options?: {
+ locale?: Locale
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7
+ }
+ ): Date
+ namespace startOfWeekYear {}
+
+ function startOfYear(date: Date | number): Date
+ namespace startOfYear {}
+
+ function startOfYesterday(): Date
+ namespace startOfYesterday {}
+
+ function sub(date: Date | number, duration: Duration): Date
+ namespace sub {}
+
+ function subBusinessDays(date: Date | number, amount: number): Date
+ namespace subBusinessDays {}
+
+ function subDays(date: Date | number, amount: number): Date
+ namespace subDays {}
+
+ function subHours(date: Date | number, amount: number): Date
+ namespace subHours {}
+
+ function subISOWeekYears(date: Date | number, amount: number): Date
+ namespace subISOWeekYears {}
+
+ function subMilliseconds(date: Date | number, amount: number): Date
+ namespace subMilliseconds {}
+
+ function subMinutes(date: Date | number, amount: number): Date
+ namespace subMinutes {}
+
+ function subMonths(date: Date | number, amount: number): Date
+ namespace subMonths {}
+
+ function subQuarters(date: Date | number, amount: number): Date
+ namespace subQuarters {}
+
+ function subSeconds(date: Date | number, amount: number): Date
+ namespace subSeconds {}
+
+ function subWeeks(date: Date | number, amount: number): Date
+ namespace subWeeks {}
+
+ function subYears(date: Date | number, amount: number): Date
+ namespace subYears {}
+
+ function toDate(argument: Date | number): Date
+ namespace toDate {}
+
+ function weeksToDays(weeks: number): number
+ namespace weeksToDays {}
+
+ function yearsToMonths(years: number): number
+ namespace yearsToMonths {}
+
+ function yearsToQuarters(years: number): number
+ namespace yearsToQuarters {}
+
+ const daysInWeek: number
+
+ const maxTime: number
+
+ const millisecondsInMinute: number
+
+ const millisecondsInHour: number
+
+ const millisecondsInSecond: number
+
+ const minTime: number
+
+ const minutesInHour: number
+
+ const monthsInQuarter: number
+
+ const monthsInYear: number
+
+ const quartersInYear: number
+
+ const secondsInHour: number
+
+ const secondsInMinute: number
+}
+
+declare module 'date-fns/esm/add' {
+ import { add } from 'date-fns/esm'
+ export default add
+}
+
+declare module 'date-fns/esm/addBusinessDays' {
+ import { addBusinessDays } from 'date-fns/esm'
+ export default addBusinessDays
+}
+
+declare module 'date-fns/esm/addDays' {
+ import { addDays } from 'date-fns/esm'
+ export default addDays
+}
+
+declare module 'date-fns/esm/addHours' {
+ import { addHours } from 'date-fns/esm'
+ export default addHours
+}
+
+declare module 'date-fns/esm/addISOWeekYears' {
+ import { addISOWeekYears } from 'date-fns/esm'
+ export default addISOWeekYears
+}
+
+declare module 'date-fns/esm/addMilliseconds' {
+ import { addMilliseconds } from 'date-fns/esm'
+ export default addMilliseconds
+}
+
+declare module 'date-fns/esm/addMinutes' {
+ import { addMinutes } from 'date-fns/esm'
+ export default addMinutes
+}
+
+declare module 'date-fns/esm/addMonths' {
+ import { addMonths } from 'date-fns/esm'
+ export default addMonths
+}
+
+declare module 'date-fns/esm/addQuarters' {
+ import { addQuarters } from 'date-fns/esm'
+ export default addQuarters
+}
+
+declare module 'date-fns/esm/addSeconds' {
+ import { addSeconds } from 'date-fns/esm'
+ export default addSeconds
+}
+
+declare module 'date-fns/esm/addWeeks' {
+ import { addWeeks } from 'date-fns/esm'
+ export default addWeeks
+}
+
+declare module 'date-fns/esm/addYears' {
+ import { addYears } from 'date-fns/esm'
+ export default addYears
+}
+
+declare module 'date-fns/esm/areIntervalsOverlapping' {
+ import { areIntervalsOverlapping } from 'date-fns/esm'
+ export default areIntervalsOverlapping
+}
+
+declare module 'date-fns/esm/closestIndexTo' {
+ import { closestIndexTo } from 'date-fns/esm'
+ export default closestIndexTo
+}
+
+declare module 'date-fns/esm/closestTo' {
+ import { closestTo } from 'date-fns/esm'
+ export default closestTo
+}
+
+declare module 'date-fns/esm/compareAsc' {
+ import { compareAsc } from 'date-fns/esm'
+ export default compareAsc
+}
+
+declare module 'date-fns/esm/compareDesc' {
+ import { compareDesc } from 'date-fns/esm'
+ export default compareDesc
+}
+
+declare module 'date-fns/esm/daysToWeeks' {
+ import { daysToWeeks } from 'date-fns/esm'
+ export default daysToWeeks
+}
+
+declare module 'date-fns/esm/differenceInBusinessDays' {
+ import { differenceInBusinessDays } from 'date-fns/esm'
+ export default differenceInBusinessDays
+}
+
+declare module 'date-fns/esm/differenceInCalendarDays' {
+ import { differenceInCalendarDays } from 'date-fns/esm'
+ export default differenceInCalendarDays
+}
+
+declare module 'date-fns/esm/differenceInCalendarISOWeeks' {
+ import { differenceInCalendarISOWeeks } from 'date-fns/esm'
+ export default differenceInCalendarISOWeeks
+}
+
+declare module 'date-fns/esm/differenceInCalendarISOWeekYears' {
+ import { differenceInCalendarISOWeekYears } from 'date-fns/esm'
+ export default differenceInCalendarISOWeekYears
+}
+
+declare module 'date-fns/esm/differenceInCalendarMonths' {
+ import { differenceInCalendarMonths } from 'date-fns/esm'
+ export default differenceInCalendarMonths
+}
+
+declare module 'date-fns/esm/differenceInCalendarQuarters' {
+ import { differenceInCalendarQuarters } from 'date-fns/esm'
+ export default differenceInCalendarQuarters
+}
+
+declare module 'date-fns/esm/differenceInCalendarWeeks' {
+ import { differenceInCalendarWeeks } from 'date-fns/esm'
+ export default differenceInCalendarWeeks
+}
+
+declare module 'date-fns/esm/differenceInCalendarYears' {
+ import { differenceInCalendarYears } from 'date-fns/esm'
+ export default differenceInCalendarYears
+}
+
+declare module 'date-fns/esm/differenceInDays' {
+ import { differenceInDays } from 'date-fns/esm'
+ export default differenceInDays
+}
+
+declare module 'date-fns/esm/differenceInHours' {
+ import { differenceInHours } from 'date-fns/esm'
+ export default differenceInHours
+}
+
+declare module 'date-fns/esm/differenceInISOWeekYears' {
+ import { differenceInISOWeekYears } from 'date-fns/esm'
+ export default differenceInISOWeekYears
+}
+
+declare module 'date-fns/esm/differenceInMilliseconds' {
+ import { differenceInMilliseconds } from 'date-fns/esm'
+ export default differenceInMilliseconds
+}
+
+declare module 'date-fns/esm/differenceInMinutes' {
+ import { differenceInMinutes } from 'date-fns/esm'
+ export default differenceInMinutes
+}
+
+declare module 'date-fns/esm/differenceInMonths' {
+ import { differenceInMonths } from 'date-fns/esm'
+ export default differenceInMonths
+}
+
+declare module 'date-fns/esm/differenceInQuarters' {
+ import { differenceInQuarters } from 'date-fns/esm'
+ export default differenceInQuarters
+}
+
+declare module 'date-fns/esm/differenceInSeconds' {
+ import { differenceInSeconds } from 'date-fns/esm'
+ export default differenceInSeconds
+}
+
+declare module 'date-fns/esm/differenceInWeeks' {
+ import { differenceInWeeks } from 'date-fns/esm'
+ export default differenceInWeeks
+}
+
+declare module 'date-fns/esm/differenceInYears' {
+ import { differenceInYears } from 'date-fns/esm'
+ export default differenceInYears
+}
+
+declare module 'date-fns/esm/eachDayOfInterval' {
+ import { eachDayOfInterval } from 'date-fns/esm'
+ export default eachDayOfInterval
+}
+
+declare module 'date-fns/esm/eachHourOfInterval' {
+ import { eachHourOfInterval } from 'date-fns/esm'
+ export default eachHourOfInterval
+}
+
+declare module 'date-fns/esm/eachMinuteOfInterval' {
+ import { eachMinuteOfInterval } from 'date-fns/esm'
+ export default eachMinuteOfInterval
+}
+
+declare module 'date-fns/esm/eachMonthOfInterval' {
+ import { eachMonthOfInterval } from 'date-fns/esm'
+ export default eachMonthOfInterval
+}
+
+declare module 'date-fns/esm/eachQuarterOfInterval' {
+ import { eachQuarterOfInterval } from 'date-fns/esm'
+ export default eachQuarterOfInterval
+}
+
+declare module 'date-fns/esm/eachWeekendOfInterval' {
+ import { eachWeekendOfInterval } from 'date-fns/esm'
+ export default eachWeekendOfInterval
+}
+
+declare module 'date-fns/esm/eachWeekendOfMonth' {
+ import { eachWeekendOfMonth } from 'date-fns/esm'
+ export default eachWeekendOfMonth
+}
+
+declare module 'date-fns/esm/eachWeekendOfYear' {
+ import { eachWeekendOfYear } from 'date-fns/esm'
+ export default eachWeekendOfYear
+}
+
+declare module 'date-fns/esm/eachWeekOfInterval' {
+ import { eachWeekOfInterval } from 'date-fns/esm'
+ export default eachWeekOfInterval
+}
+
+declare module 'date-fns/esm/eachYearOfInterval' {
+ import { eachYearOfInterval } from 'date-fns/esm'
+ export default eachYearOfInterval
+}
+
+declare module 'date-fns/esm/endOfDay' {
+ import { endOfDay } from 'date-fns/esm'
+ export default endOfDay
+}
+
+declare module 'date-fns/esm/endOfDecade' {
+ import { endOfDecade } from 'date-fns/esm'
+ export default endOfDecade
+}
+
+declare module 'date-fns/esm/endOfHour' {
+ import { endOfHour } from 'date-fns/esm'
+ export default endOfHour
+}
+
+declare module 'date-fns/esm/endOfISOWeek' {
+ import { endOfISOWeek } from 'date-fns/esm'
+ export default endOfISOWeek
+}
+
+declare module 'date-fns/esm/endOfISOWeekYear' {
+ import { endOfISOWeekYear } from 'date-fns/esm'
+ export default endOfISOWeekYear
+}
+
+declare module 'date-fns/esm/endOfMinute' {
+ import { endOfMinute } from 'date-fns/esm'
+ export default endOfMinute
+}
+
+declare module 'date-fns/esm/endOfMonth' {
+ import { endOfMonth } from 'date-fns/esm'
+ export default endOfMonth
+}
+
+declare module 'date-fns/esm/endOfQuarter' {
+ import { endOfQuarter } from 'date-fns/esm'
+ export default endOfQuarter
+}
+
+declare module 'date-fns/esm/endOfSecond' {
+ import { endOfSecond } from 'date-fns/esm'
+ export default endOfSecond
+}
+
+declare module 'date-fns/esm/endOfToday' {
+ import { endOfToday } from 'date-fns/esm'
+ export default endOfToday
+}
+
+declare module 'date-fns/esm/endOfTomorrow' {
+ import { endOfTomorrow } from 'date-fns/esm'
+ export default endOfTomorrow
+}
+
+declare module 'date-fns/esm/endOfWeek' {
+ import { endOfWeek } from 'date-fns/esm'
+ export default endOfWeek
+}
+
+declare module 'date-fns/esm/endOfYear' {
+ import { endOfYear } from 'date-fns/esm'
+ export default endOfYear
+}
+
+declare module 'date-fns/esm/endOfYesterday' {
+ import { endOfYesterday } from 'date-fns/esm'
+ export default endOfYesterday
+}
+
+declare module 'date-fns/esm/format' {
+ import { format } from 'date-fns/esm'
+ export default format
+}
+
+declare module 'date-fns/esm/formatDistance' {
+ import { formatDistance } from 'date-fns/esm'
+ export default formatDistance
+}
+
+declare module 'date-fns/esm/formatDistanceStrict' {
+ import { formatDistanceStrict } from 'date-fns/esm'
+ export default formatDistanceStrict
+}
+
+declare module 'date-fns/esm/formatDistanceToNow' {
+ import { formatDistanceToNow } from 'date-fns/esm'
+ export default formatDistanceToNow
+}
+
+declare module 'date-fns/esm/formatDistanceToNowStrict' {
+ import { formatDistanceToNowStrict } from 'date-fns/esm'
+ export default formatDistanceToNowStrict
+}
+
+declare module 'date-fns/esm/formatDuration' {
+ import { formatDuration } from 'date-fns/esm'
+ export default formatDuration
+}
+
+declare module 'date-fns/esm/formatISO' {
+ import { formatISO } from 'date-fns/esm'
+ export default formatISO
+}
+
+declare module 'date-fns/esm/formatISO9075' {
+ import { formatISO9075 } from 'date-fns/esm'
+ export default formatISO9075
+}
+
+declare module 'date-fns/esm/formatISODuration' {
+ import { formatISODuration } from 'date-fns/esm'
+ export default formatISODuration
+}
+
+declare module 'date-fns/esm/formatRelative' {
+ import { formatRelative } from 'date-fns/esm'
+ export default formatRelative
+}
+
+declare module 'date-fns/esm/formatRFC3339' {
+ import { formatRFC3339 } from 'date-fns/esm'
+ export default formatRFC3339
+}
+
+declare module 'date-fns/esm/formatRFC7231' {
+ import { formatRFC7231 } from 'date-fns/esm'
+ export default formatRFC7231
+}
+
+declare module 'date-fns/esm/fromUnixTime' {
+ import { fromUnixTime } from 'date-fns/esm'
+ export default fromUnixTime
+}
+
+declare module 'date-fns/esm/getDate' {
+ import { getDate } from 'date-fns/esm'
+ export default getDate
+}
+
+declare module 'date-fns/esm/getDay' {
+ import { getDay } from 'date-fns/esm'
+ export default getDay
+}
+
+declare module 'date-fns/esm/getDayOfYear' {
+ import { getDayOfYear } from 'date-fns/esm'
+ export default getDayOfYear
+}
+
+declare module 'date-fns/esm/getDaysInMonth' {
+ import { getDaysInMonth } from 'date-fns/esm'
+ export default getDaysInMonth
+}
+
+declare module 'date-fns/esm/getDaysInYear' {
+ import { getDaysInYear } from 'date-fns/esm'
+ export default getDaysInYear
+}
+
+declare module 'date-fns/esm/getDecade' {
+ import { getDecade } from 'date-fns/esm'
+ export default getDecade
+}
+
+declare module 'date-fns/esm/getHours' {
+ import { getHours } from 'date-fns/esm'
+ export default getHours
+}
+
+declare module 'date-fns/esm/getISODay' {
+ import { getISODay } from 'date-fns/esm'
+ export default getISODay
+}
+
+declare module 'date-fns/esm/getISOWeek' {
+ import { getISOWeek } from 'date-fns/esm'
+ export default getISOWeek
+}
+
+declare module 'date-fns/esm/getISOWeeksInYear' {
+ import { getISOWeeksInYear } from 'date-fns/esm'
+ export default getISOWeeksInYear
+}
+
+declare module 'date-fns/esm/getISOWeekYear' {
+ import { getISOWeekYear } from 'date-fns/esm'
+ export default getISOWeekYear
+}
+
+declare module 'date-fns/esm/getMilliseconds' {
+ import { getMilliseconds } from 'date-fns/esm'
+ export default getMilliseconds
+}
+
+declare module 'date-fns/esm/getMinutes' {
+ import { getMinutes } from 'date-fns/esm'
+ export default getMinutes
+}
+
+declare module 'date-fns/esm/getMonth' {
+ import { getMonth } from 'date-fns/esm'
+ export default getMonth
+}
+
+declare module 'date-fns/esm/getOverlappingDaysInIntervals' {
+ import { getOverlappingDaysInIntervals } from 'date-fns/esm'
+ export default getOverlappingDaysInIntervals
+}
+
+declare module 'date-fns/esm/getQuarter' {
+ import { getQuarter } from 'date-fns/esm'
+ export default getQuarter
+}
+
+declare module 'date-fns/esm/getSeconds' {
+ import { getSeconds } from 'date-fns/esm'
+ export default getSeconds
+}
+
+declare module 'date-fns/esm/getTime' {
+ import { getTime } from 'date-fns/esm'
+ export default getTime
+}
+
+declare module 'date-fns/esm/getUnixTime' {
+ import { getUnixTime } from 'date-fns/esm'
+ export default getUnixTime
+}
+
+declare module 'date-fns/esm/getWeek' {
+ import { getWeek } from 'date-fns/esm'
+ export default getWeek
+}
+
+declare module 'date-fns/esm/getWeekOfMonth' {
+ import { getWeekOfMonth } from 'date-fns/esm'
+ export default getWeekOfMonth
+}
+
+declare module 'date-fns/esm/getWeeksInMonth' {
+ import { getWeeksInMonth } from 'date-fns/esm'
+ export default getWeeksInMonth
+}
+
+declare module 'date-fns/esm/getWeekYear' {
+ import { getWeekYear } from 'date-fns/esm'
+ export default getWeekYear
+}
+
+declare module 'date-fns/esm/getYear' {
+ import { getYear } from 'date-fns/esm'
+ export default getYear
+}
+
+declare module 'date-fns/esm/hoursToMilliseconds' {
+ import { hoursToMilliseconds } from 'date-fns/esm'
+ export default hoursToMilliseconds
+}
+
+declare module 'date-fns/esm/hoursToMinutes' {
+ import { hoursToMinutes } from 'date-fns/esm'
+ export default hoursToMinutes
+}
+
+declare module 'date-fns/esm/hoursToSeconds' {
+ import { hoursToSeconds } from 'date-fns/esm'
+ export default hoursToSeconds
+}
+
+declare module 'date-fns/esm/intervalToDuration' {
+ import { intervalToDuration } from 'date-fns/esm'
+ export default intervalToDuration
+}
+
+declare module 'date-fns/esm/intlFormat' {
+ import { intlFormat } from 'date-fns/esm'
+ export default intlFormat
+}
+
+declare module 'date-fns/esm/isAfter' {
+ import { isAfter } from 'date-fns/esm'
+ export default isAfter
+}
+
+declare module 'date-fns/esm/isBefore' {
+ import { isBefore } from 'date-fns/esm'
+ export default isBefore
+}
+
+declare module 'date-fns/esm/isDate' {
+ import { isDate } from 'date-fns/esm'
+ export default isDate
+}
+
+declare module 'date-fns/esm/isEqual' {
+ import { isEqual } from 'date-fns/esm'
+ export default isEqual
+}
+
+declare module 'date-fns/esm/isExists' {
+ import { isExists } from 'date-fns/esm'
+ export default isExists
+}
+
+declare module 'date-fns/esm/isFirstDayOfMonth' {
+ import { isFirstDayOfMonth } from 'date-fns/esm'
+ export default isFirstDayOfMonth
+}
+
+declare module 'date-fns/esm/isFriday' {
+ import { isFriday } from 'date-fns/esm'
+ export default isFriday
+}
+
+declare module 'date-fns/esm/isFuture' {
+ import { isFuture } from 'date-fns/esm'
+ export default isFuture
+}
+
+declare module 'date-fns/esm/isLastDayOfMonth' {
+ import { isLastDayOfMonth } from 'date-fns/esm'
+ export default isLastDayOfMonth
+}
+
+declare module 'date-fns/esm/isLeapYear' {
+ import { isLeapYear } from 'date-fns/esm'
+ export default isLeapYear
+}
+
+declare module 'date-fns/esm/isMatch' {
+ import { isMatch } from 'date-fns/esm'
+ export default isMatch
+}
+
+declare module 'date-fns/esm/isMonday' {
+ import { isMonday } from 'date-fns/esm'
+ export default isMonday
+}
+
+declare module 'date-fns/esm/isPast' {
+ import { isPast } from 'date-fns/esm'
+ export default isPast
+}
+
+declare module 'date-fns/esm/isSameDay' {
+ import { isSameDay } from 'date-fns/esm'
+ export default isSameDay
+}
+
+declare module 'date-fns/esm/isSameHour' {
+ import { isSameHour } from 'date-fns/esm'
+ export default isSameHour
+}
+
+declare module 'date-fns/esm/isSameISOWeek' {
+ import { isSameISOWeek } from 'date-fns/esm'
+ export default isSameISOWeek
+}
+
+declare module 'date-fns/esm/isSameISOWeekYear' {
+ import { isSameISOWeekYear } from 'date-fns/esm'
+ export default isSameISOWeekYear
+}
+
+declare module 'date-fns/esm/isSameMinute' {
+ import { isSameMinute } from 'date-fns/esm'
+ export default isSameMinute
+}
+
+declare module 'date-fns/esm/isSameMonth' {
+ import { isSameMonth } from 'date-fns/esm'
+ export default isSameMonth
+}
+
+declare module 'date-fns/esm/isSameQuarter' {
+ import { isSameQuarter } from 'date-fns/esm'
+ export default isSameQuarter
+}
+
+declare module 'date-fns/esm/isSameSecond' {
+ import { isSameSecond } from 'date-fns/esm'
+ export default isSameSecond
+}
+
+declare module 'date-fns/esm/isSameWeek' {
+ import { isSameWeek } from 'date-fns/esm'
+ export default isSameWeek
+}
+
+declare module 'date-fns/esm/isSameYear' {
+ import { isSameYear } from 'date-fns/esm'
+ export default isSameYear
+}
+
+declare module 'date-fns/esm/isSaturday' {
+ import { isSaturday } from 'date-fns/esm'
+ export default isSaturday
+}
+
+declare module 'date-fns/esm/isSunday' {
+ import { isSunday } from 'date-fns/esm'
+ export default isSunday
+}
+
+declare module 'date-fns/esm/isThisHour' {
+ import { isThisHour } from 'date-fns/esm'
+ export default isThisHour
+}
+
+declare module 'date-fns/esm/isThisISOWeek' {
+ import { isThisISOWeek } from 'date-fns/esm'
+ export default isThisISOWeek
+}
+
+declare module 'date-fns/esm/isThisMinute' {
+ import { isThisMinute } from 'date-fns/esm'
+ export default isThisMinute
+}
+
+declare module 'date-fns/esm/isThisMonth' {
+ import { isThisMonth } from 'date-fns/esm'
+ export default isThisMonth
+}
+
+declare module 'date-fns/esm/isThisQuarter' {
+ import { isThisQuarter } from 'date-fns/esm'
+ export default isThisQuarter
+}
+
+declare module 'date-fns/esm/isThisSecond' {
+ import { isThisSecond } from 'date-fns/esm'
+ export default isThisSecond
+}
+
+declare module 'date-fns/esm/isThisWeek' {
+ import { isThisWeek } from 'date-fns/esm'
+ export default isThisWeek
+}
+
+declare module 'date-fns/esm/isThisYear' {
+ import { isThisYear } from 'date-fns/esm'
+ export default isThisYear
+}
+
+declare module 'date-fns/esm/isThursday' {
+ import { isThursday } from 'date-fns/esm'
+ export default isThursday
+}
+
+declare module 'date-fns/esm/isToday' {
+ import { isToday } from 'date-fns/esm'
+ export default isToday
+}
+
+declare module 'date-fns/esm/isTomorrow' {
+ import { isTomorrow } from 'date-fns/esm'
+ export default isTomorrow
+}
+
+declare module 'date-fns/esm/isTuesday' {
+ import { isTuesday } from 'date-fns/esm'
+ export default isTuesday
+}
+
+declare module 'date-fns/esm/isValid' {
+ import { isValid } from 'date-fns/esm'
+ export default isValid
+}
+
+declare module 'date-fns/esm/isWednesday' {
+ import { isWednesday } from 'date-fns/esm'
+ export default isWednesday
+}
+
+declare module 'date-fns/esm/isWeekend' {
+ import { isWeekend } from 'date-fns/esm'
+ export default isWeekend
+}
+
+declare module 'date-fns/esm/isWithinInterval' {
+ import { isWithinInterval } from 'date-fns/esm'
+ export default isWithinInterval
+}
+
+declare module 'date-fns/esm/isYesterday' {
+ import { isYesterday } from 'date-fns/esm'
+ export default isYesterday
+}
+
+declare module 'date-fns/esm/lastDayOfDecade' {
+ import { lastDayOfDecade } from 'date-fns/esm'
+ export default lastDayOfDecade
+}
+
+declare module 'date-fns/esm/lastDayOfISOWeek' {
+ import { lastDayOfISOWeek } from 'date-fns/esm'
+ export default lastDayOfISOWeek
+}
+
+declare module 'date-fns/esm/lastDayOfISOWeekYear' {
+ import { lastDayOfISOWeekYear } from 'date-fns/esm'
+ export default lastDayOfISOWeekYear
+}
+
+declare module 'date-fns/esm/lastDayOfMonth' {
+ import { lastDayOfMonth } from 'date-fns/esm'
+ export default lastDayOfMonth
+}
+
+declare module 'date-fns/esm/lastDayOfQuarter' {
+ import { lastDayOfQuarter } from 'date-fns/esm'
+ export default lastDayOfQuarter
+}
+
+declare module 'date-fns/esm/lastDayOfWeek' {
+ import { lastDayOfWeek } from 'date-fns/esm'
+ export default lastDayOfWeek
+}
+
+declare module 'date-fns/esm/lastDayOfYear' {
+ import { lastDayOfYear } from 'date-fns/esm'
+ export default lastDayOfYear
+}
+
+declare module 'date-fns/esm/lightFormat' {
+ import { lightFormat } from 'date-fns/esm'
+ export default lightFormat
+}
+
+declare module 'date-fns/esm/max' {
+ import { max } from 'date-fns/esm'
+ export default max
+}
+
+declare module 'date-fns/esm/milliseconds' {
+ import { milliseconds } from 'date-fns/esm'
+ export default milliseconds
+}
+
+declare module 'date-fns/esm/millisecondsToHours' {
+ import { millisecondsToHours } from 'date-fns/esm'
+ export default millisecondsToHours
+}
+
+declare module 'date-fns/esm/millisecondsToMinutes' {
+ import { millisecondsToMinutes } from 'date-fns/esm'
+ export default millisecondsToMinutes
+}
+
+declare module 'date-fns/esm/millisecondsToSeconds' {
+ import { millisecondsToSeconds } from 'date-fns/esm'
+ export default millisecondsToSeconds
+}
+
+declare module 'date-fns/esm/min' {
+ import { min } from 'date-fns/esm'
+ export default min
+}
+
+declare module 'date-fns/esm/minutesToHours' {
+ import { minutesToHours } from 'date-fns/esm'
+ export default minutesToHours
+}
+
+declare module 'date-fns/esm/minutesToMilliseconds' {
+ import { minutesToMilliseconds } from 'date-fns/esm'
+ export default minutesToMilliseconds
+}
+
+declare module 'date-fns/esm/minutesToSeconds' {
+ import { minutesToSeconds } from 'date-fns/esm'
+ export default minutesToSeconds
+}
+
+declare module 'date-fns/esm/monthsToQuarters' {
+ import { monthsToQuarters } from 'date-fns/esm'
+ export default monthsToQuarters
+}
+
+declare module 'date-fns/esm/monthsToYears' {
+ import { monthsToYears } from 'date-fns/esm'
+ export default monthsToYears
+}
+
+declare module 'date-fns/esm/nextDay' {
+ import { nextDay } from 'date-fns/esm'
+ export default nextDay
+}
+
+declare module 'date-fns/esm/nextFriday' {
+ import { nextFriday } from 'date-fns/esm'
+ export default nextFriday
+}
+
+declare module 'date-fns/esm/nextMonday' {
+ import { nextMonday } from 'date-fns/esm'
+ export default nextMonday
+}
+
+declare module 'date-fns/esm/nextSaturday' {
+ import { nextSaturday } from 'date-fns/esm'
+ export default nextSaturday
+}
+
+declare module 'date-fns/esm/nextSunday' {
+ import { nextSunday } from 'date-fns/esm'
+ export default nextSunday
+}
+
+declare module 'date-fns/esm/nextThursday' {
+ import { nextThursday } from 'date-fns/esm'
+ export default nextThursday
+}
+
+declare module 'date-fns/esm/nextTuesday' {
+ import { nextTuesday } from 'date-fns/esm'
+ export default nextTuesday
+}
+
+declare module 'date-fns/esm/nextWednesday' {
+ import { nextWednesday } from 'date-fns/esm'
+ export default nextWednesday
+}
+
+declare module 'date-fns/esm/parse' {
+ import { parse } from 'date-fns/esm'
+ export default parse
+}
+
+declare module 'date-fns/esm/parseISO' {
+ import { parseISO } from 'date-fns/esm'
+ export default parseISO
+}
+
+declare module 'date-fns/esm/parseJSON' {
+ import { parseJSON } from 'date-fns/esm'
+ export default parseJSON
+}
+
+declare module 'date-fns/esm/quartersToMonths' {
+ import { quartersToMonths } from 'date-fns/esm'
+ export default quartersToMonths
+}
+
+declare module 'date-fns/esm/quartersToYears' {
+ import { quartersToYears } from 'date-fns/esm'
+ export default quartersToYears
+}
+
+declare module 'date-fns/esm/roundToNearestMinutes' {
+ import { roundToNearestMinutes } from 'date-fns/esm'
+ export default roundToNearestMinutes
+}
+
+declare module 'date-fns/esm/secondsToHours' {
+ import { secondsToHours } from 'date-fns/esm'
+ export default secondsToHours
+}
+
+declare module 'date-fns/esm/secondsToMilliseconds' {
+ import { secondsToMilliseconds } from 'date-fns/esm'
+ export default secondsToMilliseconds
+}
+
+declare module 'date-fns/esm/secondsToMinutes' {
+ import { secondsToMinutes } from 'date-fns/esm'
+ export default secondsToMinutes
+}
+
+declare module 'date-fns/esm/set' {
+ import { set } from 'date-fns/esm'
+ export default set
+}
+
+declare module 'date-fns/esm/setDate' {
+ import { setDate } from 'date-fns/esm'
+ export default setDate
+}
+
+declare module 'date-fns/esm/setDay' {
+ import { setDay } from 'date-fns/esm'
+ export default setDay
+}
+
+declare module 'date-fns/esm/setDayOfYear' {
+ import { setDayOfYear } from 'date-fns/esm'
+ export default setDayOfYear
+}
+
+declare module 'date-fns/esm/setHours' {
+ import { setHours } from 'date-fns/esm'
+ export default setHours
+}
+
+declare module 'date-fns/esm/setISODay' {
+ import { setISODay } from 'date-fns/esm'
+ export default setISODay
+}
+
+declare module 'date-fns/esm/setISOWeek' {
+ import { setISOWeek } from 'date-fns/esm'
+ export default setISOWeek
+}
+
+declare module 'date-fns/esm/setISOWeekYear' {
+ import { setISOWeekYear } from 'date-fns/esm'
+ export default setISOWeekYear
+}
+
+declare module 'date-fns/esm/setMilliseconds' {
+ import { setMilliseconds } from 'date-fns/esm'
+ export default setMilliseconds
+}
+
+declare module 'date-fns/esm/setMinutes' {
+ import { setMinutes } from 'date-fns/esm'
+ export default setMinutes
+}
+
+declare module 'date-fns/esm/setMonth' {
+ import { setMonth } from 'date-fns/esm'
+ export default setMonth
+}
+
+declare module 'date-fns/esm/setQuarter' {
+ import { setQuarter } from 'date-fns/esm'
+ export default setQuarter
+}
+
+declare module 'date-fns/esm/setSeconds' {
+ import { setSeconds } from 'date-fns/esm'
+ export default setSeconds
+}
+
+declare module 'date-fns/esm/setWeek' {
+ import { setWeek } from 'date-fns/esm'
+ export default setWeek
+}
+
+declare module 'date-fns/esm/setWeekYear' {
+ import { setWeekYear } from 'date-fns/esm'
+ export default setWeekYear
+}
+
+declare module 'date-fns/esm/setYear' {
+ import { setYear } from 'date-fns/esm'
+ export default setYear
+}
+
+declare module 'date-fns/esm/startOfDay' {
+ import { startOfDay } from 'date-fns/esm'
+ export default startOfDay
+}
+
+declare module 'date-fns/esm/startOfDecade' {
+ import { startOfDecade } from 'date-fns/esm'
+ export default startOfDecade
+}
+
+declare module 'date-fns/esm/startOfHour' {
+ import { startOfHour } from 'date-fns/esm'
+ export default startOfHour
+}
+
+declare module 'date-fns/esm/startOfISOWeek' {
+ import { startOfISOWeek } from 'date-fns/esm'
+ export default startOfISOWeek
+}
+
+declare module 'date-fns/esm/startOfISOWeekYear' {
+ import { startOfISOWeekYear } from 'date-fns/esm'
+ export default startOfISOWeekYear
+}
+
+declare module 'date-fns/esm/startOfMinute' {
+ import { startOfMinute } from 'date-fns/esm'
+ export default startOfMinute
+}
+
+declare module 'date-fns/esm/startOfMonth' {
+ import { startOfMonth } from 'date-fns/esm'
+ export default startOfMonth
+}
+
+declare module 'date-fns/esm/startOfQuarter' {
+ import { startOfQuarter } from 'date-fns/esm'
+ export default startOfQuarter
+}
+
+declare module 'date-fns/esm/startOfSecond' {
+ import { startOfSecond } from 'date-fns/esm'
+ export default startOfSecond
+}
+
+declare module 'date-fns/esm/startOfToday' {
+ import { startOfToday } from 'date-fns/esm'
+ export default startOfToday
+}
+
+declare module 'date-fns/esm/startOfTomorrow' {
+ import { startOfTomorrow } from 'date-fns/esm'
+ export default startOfTomorrow
+}
+
+declare module 'date-fns/esm/startOfWeek' {
+ import { startOfWeek } from 'date-fns/esm'
+ export default startOfWeek
+}
+
+declare module 'date-fns/esm/startOfWeekYear' {
+ import { startOfWeekYear } from 'date-fns/esm'
+ export default startOfWeekYear
+}
+
+declare module 'date-fns/esm/startOfYear' {
+ import { startOfYear } from 'date-fns/esm'
+ export default startOfYear
+}
+
+declare module 'date-fns/esm/startOfYesterday' {
+ import { startOfYesterday } from 'date-fns/esm'
+ export default startOfYesterday
+}
+
+declare module 'date-fns/esm/sub' {
+ import { sub } from 'date-fns/esm'
+ export default sub
+}
+
+declare module 'date-fns/esm/subBusinessDays' {
+ import { subBusinessDays } from 'date-fns/esm'
+ export default subBusinessDays
+}
+
+declare module 'date-fns/esm/subDays' {
+ import { subDays } from 'date-fns/esm'
+ export default subDays
+}
+
+declare module 'date-fns/esm/subHours' {
+ import { subHours } from 'date-fns/esm'
+ export default subHours
+}
+
+declare module 'date-fns/esm/subISOWeekYears' {
+ import { subISOWeekYears } from 'date-fns/esm'
+ export default subISOWeekYears
+}
+
+declare module 'date-fns/esm/subMilliseconds' {
+ import { subMilliseconds } from 'date-fns/esm'
+ export default subMilliseconds
+}
+
+declare module 'date-fns/esm/subMinutes' {
+ import { subMinutes } from 'date-fns/esm'
+ export default subMinutes
+}
+
+declare module 'date-fns/esm/subMonths' {
+ import { subMonths } from 'date-fns/esm'
+ export default subMonths
+}
+
+declare module 'date-fns/esm/subQuarters' {
+ import { subQuarters } from 'date-fns/esm'
+ export default subQuarters
+}
+
+declare module 'date-fns/esm/subSeconds' {
+ import { subSeconds } from 'date-fns/esm'
+ export default subSeconds
+}
+
+declare module 'date-fns/esm/subWeeks' {
+ import { subWeeks } from 'date-fns/esm'
+ export default subWeeks
+}
+
+declare module 'date-fns/esm/subYears' {
+ import { subYears } from 'date-fns/esm'
+ export default subYears
+}
+
+declare module 'date-fns/esm/toDate' {
+ import { toDate } from 'date-fns/esm'
+ export default toDate
+}
+
+declare module 'date-fns/esm/weeksToDays' {
+ import { weeksToDays } from 'date-fns/esm'
+ export default weeksToDays
+}
+
+declare module 'date-fns/esm/yearsToMonths' {
+ import { yearsToMonths } from 'date-fns/esm'
+ export default yearsToMonths
+}
+
+declare module 'date-fns/esm/yearsToQuarters' {
+ import { yearsToQuarters } from 'date-fns/esm'
+ export default yearsToQuarters
+}
+
+declare module 'date-fns/esm/add/index' {
+ import { add } from 'date-fns/esm'
+ export default add
+}
+
+declare module 'date-fns/esm/addBusinessDays/index' {
+ import { addBusinessDays } from 'date-fns/esm'
+ export default addBusinessDays
+}
+
+declare module 'date-fns/esm/addDays/index' {
+ import { addDays } from 'date-fns/esm'
+ export default addDays
+}
+
+declare module 'date-fns/esm/addHours/index' {
+ import { addHours } from 'date-fns/esm'
+ export default addHours
+}
+
+declare module 'date-fns/esm/addISOWeekYears/index' {
+ import { addISOWeekYears } from 'date-fns/esm'
+ export default addISOWeekYears
+}
+
+declare module 'date-fns/esm/addMilliseconds/index' {
+ import { addMilliseconds } from 'date-fns/esm'
+ export default addMilliseconds
+}
+
+declare module 'date-fns/esm/addMinutes/index' {
+ import { addMinutes } from 'date-fns/esm'
+ export default addMinutes
+}
+
+declare module 'date-fns/esm/addMonths/index' {
+ import { addMonths } from 'date-fns/esm'
+ export default addMonths
+}
+
+declare module 'date-fns/esm/addQuarters/index' {
+ import { addQuarters } from 'date-fns/esm'
+ export default addQuarters
+}
+
+declare module 'date-fns/esm/addSeconds/index' {
+ import { addSeconds } from 'date-fns/esm'
+ export default addSeconds
+}
+
+declare module 'date-fns/esm/addWeeks/index' {
+ import { addWeeks } from 'date-fns/esm'
+ export default addWeeks
+}
+
+declare module 'date-fns/esm/addYears/index' {
+ import { addYears } from 'date-fns/esm'
+ export default addYears
+}
+
+declare module 'date-fns/esm/areIntervalsOverlapping/index' {
+ import { areIntervalsOverlapping } from 'date-fns/esm'
+ export default areIntervalsOverlapping
+}
+
+declare module 'date-fns/esm/closestIndexTo/index' {
+ import { closestIndexTo } from 'date-fns/esm'
+ export default closestIndexTo
+}
+
+declare module 'date-fns/esm/closestTo/index' {
+ import { closestTo } from 'date-fns/esm'
+ export default closestTo
+}
+
+declare module 'date-fns/esm/compareAsc/index' {
+ import { compareAsc } from 'date-fns/esm'
+ export default compareAsc
+}
+
+declare module 'date-fns/esm/compareDesc/index' {
+ import { compareDesc } from 'date-fns/esm'
+ export default compareDesc
+}
+
+declare module 'date-fns/esm/daysToWeeks/index' {
+ import { daysToWeeks } from 'date-fns/esm'
+ export default daysToWeeks
+}
+
+declare module 'date-fns/esm/differenceInBusinessDays/index' {
+ import { differenceInBusinessDays } from 'date-fns/esm'
+ export default differenceInBusinessDays
+}
+
+declare module 'date-fns/esm/differenceInCalendarDays/index' {
+ import { differenceInCalendarDays } from 'date-fns/esm'
+ export default differenceInCalendarDays
+}
+
+declare module 'date-fns/esm/differenceInCalendarISOWeeks/index' {
+ import { differenceInCalendarISOWeeks } from 'date-fns/esm'
+ export default differenceInCalendarISOWeeks
+}
+
+declare module 'date-fns/esm/differenceInCalendarISOWeekYears/index' {
+ import { differenceInCalendarISOWeekYears } from 'date-fns/esm'
+ export default differenceInCalendarISOWeekYears
+}
+
+declare module 'date-fns/esm/differenceInCalendarMonths/index' {
+ import { differenceInCalendarMonths } from 'date-fns/esm'
+ export default differenceInCalendarMonths
+}
+
+declare module 'date-fns/esm/differenceInCalendarQuarters/index' {
+ import { differenceInCalendarQuarters } from 'date-fns/esm'
+ export default differenceInCalendarQuarters
+}
+
+declare module 'date-fns/esm/differenceInCalendarWeeks/index' {
+ import { differenceInCalendarWeeks } from 'date-fns/esm'
+ export default differenceInCalendarWeeks
+}
+
+declare module 'date-fns/esm/differenceInCalendarYears/index' {
+ import { differenceInCalendarYears } from 'date-fns/esm'
+ export default differenceInCalendarYears
+}
+
+declare module 'date-fns/esm/differenceInDays/index' {
+ import { differenceInDays } from 'date-fns/esm'
+ export default differenceInDays
+}
+
+declare module 'date-fns/esm/differenceInHours/index' {
+ import { differenceInHours } from 'date-fns/esm'
+ export default differenceInHours
+}
+
+declare module 'date-fns/esm/differenceInISOWeekYears/index' {
+ import { differenceInISOWeekYears } from 'date-fns/esm'
+ export default differenceInISOWeekYears
+}
+
+declare module 'date-fns/esm/differenceInMilliseconds/index' {
+ import { differenceInMilliseconds } from 'date-fns/esm'
+ export default differenceInMilliseconds
+}
+
+declare module 'date-fns/esm/differenceInMinutes/index' {
+ import { differenceInMinutes } from 'date-fns/esm'
+ export default differenceInMinutes
+}
+
+declare module 'date-fns/esm/differenceInMonths/index' {
+ import { differenceInMonths } from 'date-fns/esm'
+ export default differenceInMonths
+}
+
+declare module 'date-fns/esm/differenceInQuarters/index' {
+ import { differenceInQuarters } from 'date-fns/esm'
+ export default differenceInQuarters
+}
+
+declare module 'date-fns/esm/differenceInSeconds/index' {
+ import { differenceInSeconds } from 'date-fns/esm'
+ export default differenceInSeconds
+}
+
+declare module 'date-fns/esm/differenceInWeeks/index' {
+ import { differenceInWeeks } from 'date-fns/esm'
+ export default differenceInWeeks
+}
+
+declare module 'date-fns/esm/differenceInYears/index' {
+ import { differenceInYears } from 'date-fns/esm'
+ export default differenceInYears
+}
+
+declare module 'date-fns/esm/eachDayOfInterval/index' {
+ import { eachDayOfInterval } from 'date-fns/esm'
+ export default eachDayOfInterval
+}
+
+declare module 'date-fns/esm/eachHourOfInterval/index' {
+ import { eachHourOfInterval } from 'date-fns/esm'
+ export default eachHourOfInterval
+}
+
+declare module 'date-fns/esm/eachMinuteOfInterval/index' {
+ import { eachMinuteOfInterval } from 'date-fns/esm'
+ export default eachMinuteOfInterval
+}
+
+declare module 'date-fns/esm/eachMonthOfInterval/index' {
+ import { eachMonthOfInterval } from 'date-fns/esm'
+ export default eachMonthOfInterval
+}
+
+declare module 'date-fns/esm/eachQuarterOfInterval/index' {
+ import { eachQuarterOfInterval } from 'date-fns/esm'
+ export default eachQuarterOfInterval
+}
+
+declare module 'date-fns/esm/eachWeekendOfInterval/index' {
+ import { eachWeekendOfInterval } from 'date-fns/esm'
+ export default eachWeekendOfInterval
+}
+
+declare module 'date-fns/esm/eachWeekendOfMonth/index' {
+ import { eachWeekendOfMonth } from 'date-fns/esm'
+ export default eachWeekendOfMonth
+}
+
+declare module 'date-fns/esm/eachWeekendOfYear/index' {
+ import { eachWeekendOfYear } from 'date-fns/esm'
+ export default eachWeekendOfYear
+}
+
+declare module 'date-fns/esm/eachWeekOfInterval/index' {
+ import { eachWeekOfInterval } from 'date-fns/esm'
+ export default eachWeekOfInterval
+}
+
+declare module 'date-fns/esm/eachYearOfInterval/index' {
+ import { eachYearOfInterval } from 'date-fns/esm'
+ export default eachYearOfInterval
+}
+
+declare module 'date-fns/esm/endOfDay/index' {
+ import { endOfDay } from 'date-fns/esm'
+ export default endOfDay
+}
+
+declare module 'date-fns/esm/endOfDecade/index' {
+ import { endOfDecade } from 'date-fns/esm'
+ export default endOfDecade
+}
+
+declare module 'date-fns/esm/endOfHour/index' {
+ import { endOfHour } from 'date-fns/esm'
+ export default endOfHour
+}
+
+declare module 'date-fns/esm/endOfISOWeek/index' {
+ import { endOfISOWeek } from 'date-fns/esm'
+ export default endOfISOWeek
+}
+
+declare module 'date-fns/esm/endOfISOWeekYear/index' {
+ import { endOfISOWeekYear } from 'date-fns/esm'
+ export default endOfISOWeekYear
+}
+
+declare module 'date-fns/esm/endOfMinute/index' {
+ import { endOfMinute } from 'date-fns/esm'
+ export default endOfMinute
+}
+
+declare module 'date-fns/esm/endOfMonth/index' {
+ import { endOfMonth } from 'date-fns/esm'
+ export default endOfMonth
+}
+
+declare module 'date-fns/esm/endOfQuarter/index' {
+ import { endOfQuarter } from 'date-fns/esm'
+ export default endOfQuarter
+}
+
+declare module 'date-fns/esm/endOfSecond/index' {
+ import { endOfSecond } from 'date-fns/esm'
+ export default endOfSecond
+}
+
+declare module 'date-fns/esm/endOfToday/index' {
+ import { endOfToday } from 'date-fns/esm'
+ export default endOfToday
+}
+
+declare module 'date-fns/esm/endOfTomorrow/index' {
+ import { endOfTomorrow } from 'date-fns/esm'
+ export default endOfTomorrow
+}
+
+declare module 'date-fns/esm/endOfWeek/index' {
+ import { endOfWeek } from 'date-fns/esm'
+ export default endOfWeek
+}
+
+declare module 'date-fns/esm/endOfYear/index' {
+ import { endOfYear } from 'date-fns/esm'
+ export default endOfYear
+}
+
+declare module 'date-fns/esm/endOfYesterday/index' {
+ import { endOfYesterday } from 'date-fns/esm'
+ export default endOfYesterday
+}
+
+declare module 'date-fns/esm/format/index' {
+ import { format } from 'date-fns/esm'
+ export default format
+}
+
+declare module 'date-fns/esm/formatDistance/index' {
+ import { formatDistance } from 'date-fns/esm'
+ export default formatDistance
+}
+
+declare module 'date-fns/esm/formatDistanceStrict/index' {
+ import { formatDistanceStrict } from 'date-fns/esm'
+ export default formatDistanceStrict
+}
+
+declare module 'date-fns/esm/formatDistanceToNow/index' {
+ import { formatDistanceToNow } from 'date-fns/esm'
+ export default formatDistanceToNow
+}
+
+declare module 'date-fns/esm/formatDistanceToNowStrict/index' {
+ import { formatDistanceToNowStrict } from 'date-fns/esm'
+ export default formatDistanceToNowStrict
+}
+
+declare module 'date-fns/esm/formatDuration/index' {
+ import { formatDuration } from 'date-fns/esm'
+ export default formatDuration
+}
+
+declare module 'date-fns/esm/formatISO/index' {
+ import { formatISO } from 'date-fns/esm'
+ export default formatISO
+}
+
+declare module 'date-fns/esm/formatISO9075/index' {
+ import { formatISO9075 } from 'date-fns/esm'
+ export default formatISO9075
+}
+
+declare module 'date-fns/esm/formatISODuration/index' {
+ import { formatISODuration } from 'date-fns/esm'
+ export default formatISODuration
+}
+
+declare module 'date-fns/esm/formatRelative/index' {
+ import { formatRelative } from 'date-fns/esm'
+ export default formatRelative
+}
+
+declare module 'date-fns/esm/formatRFC3339/index' {
+ import { formatRFC3339 } from 'date-fns/esm'
+ export default formatRFC3339
+}
+
+declare module 'date-fns/esm/formatRFC7231/index' {
+ import { formatRFC7231 } from 'date-fns/esm'
+ export default formatRFC7231
+}
+
+declare module 'date-fns/esm/fromUnixTime/index' {
+ import { fromUnixTime } from 'date-fns/esm'
+ export default fromUnixTime
+}
+
+declare module 'date-fns/esm/getDate/index' {
+ import { getDate } from 'date-fns/esm'
+ export default getDate
+}
+
+declare module 'date-fns/esm/getDay/index' {
+ import { getDay } from 'date-fns/esm'
+ export default getDay
+}
+
+declare module 'date-fns/esm/getDayOfYear/index' {
+ import { getDayOfYear } from 'date-fns/esm'
+ export default getDayOfYear
+}
+
+declare module 'date-fns/esm/getDaysInMonth/index' {
+ import { getDaysInMonth } from 'date-fns/esm'
+ export default getDaysInMonth
+}
+
+declare module 'date-fns/esm/getDaysInYear/index' {
+ import { getDaysInYear } from 'date-fns/esm'
+ export default getDaysInYear
+}
+
+declare module 'date-fns/esm/getDecade/index' {
+ import { getDecade } from 'date-fns/esm'
+ export default getDecade
+}
+
+declare module 'date-fns/esm/getHours/index' {
+ import { getHours } from 'date-fns/esm'
+ export default getHours
+}
+
+declare module 'date-fns/esm/getISODay/index' {
+ import { getISODay } from 'date-fns/esm'
+ export default getISODay
+}
+
+declare module 'date-fns/esm/getISOWeek/index' {
+ import { getISOWeek } from 'date-fns/esm'
+ export default getISOWeek
+}
+
+declare module 'date-fns/esm/getISOWeeksInYear/index' {
+ import { getISOWeeksInYear } from 'date-fns/esm'
+ export default getISOWeeksInYear
+}
+
+declare module 'date-fns/esm/getISOWeekYear/index' {
+ import { getISOWeekYear } from 'date-fns/esm'
+ export default getISOWeekYear
+}
+
+declare module 'date-fns/esm/getMilliseconds/index' {
+ import { getMilliseconds } from 'date-fns/esm'
+ export default getMilliseconds
+}
+
+declare module 'date-fns/esm/getMinutes/index' {
+ import { getMinutes } from 'date-fns/esm'
+ export default getMinutes
+}
+
+declare module 'date-fns/esm/getMonth/index' {
+ import { getMonth } from 'date-fns/esm'
+ export default getMonth
+}
+
+declare module 'date-fns/esm/getOverlappingDaysInIntervals/index' {
+ import { getOverlappingDaysInIntervals } from 'date-fns/esm'
+ export default getOverlappingDaysInIntervals
+}
+
+declare module 'date-fns/esm/getQuarter/index' {
+ import { getQuarter } from 'date-fns/esm'
+ export default getQuarter
+}
+
+declare module 'date-fns/esm/getSeconds/index' {
+ import { getSeconds } from 'date-fns/esm'
+ export default getSeconds
+}
+
+declare module 'date-fns/esm/getTime/index' {
+ import { getTime } from 'date-fns/esm'
+ export default getTime
+}
+
+declare module 'date-fns/esm/getUnixTime/index' {
+ import { getUnixTime } from 'date-fns/esm'
+ export default getUnixTime
+}
+
+declare module 'date-fns/esm/getWeek/index' {
+ import { getWeek } from 'date-fns/esm'
+ export default getWeek
+}
+
+declare module 'date-fns/esm/getWeekOfMonth/index' {
+ import { getWeekOfMonth } from 'date-fns/esm'
+ export default getWeekOfMonth
+}
+
+declare module 'date-fns/esm/getWeeksInMonth/index' {
+ import { getWeeksInMonth } from 'date-fns/esm'
+ export default getWeeksInMonth
+}
+
+declare module 'date-fns/esm/getWeekYear/index' {
+ import { getWeekYear } from 'date-fns/esm'
+ export default getWeekYear
+}
+
+declare module 'date-fns/esm/getYear/index' {
+ import { getYear } from 'date-fns/esm'
+ export default getYear
+}
+
+declare module 'date-fns/esm/hoursToMilliseconds/index' {
+ import { hoursToMilliseconds } from 'date-fns/esm'
+ export default hoursToMilliseconds
+}
+
+declare module 'date-fns/esm/hoursToMinutes/index' {
+ import { hoursToMinutes } from 'date-fns/esm'
+ export default hoursToMinutes
+}
+
+declare module 'date-fns/esm/hoursToSeconds/index' {
+ import { hoursToSeconds } from 'date-fns/esm'
+ export default hoursToSeconds
+}
+
+declare module 'date-fns/esm/intervalToDuration/index' {
+ import { intervalToDuration } from 'date-fns/esm'
+ export default intervalToDuration
+}
+
+declare module 'date-fns/esm/intlFormat/index' {
+ import { intlFormat } from 'date-fns/esm'
+ export default intlFormat
+}
+
+declare module 'date-fns/esm/isAfter/index' {
+ import { isAfter } from 'date-fns/esm'
+ export default isAfter
+}
+
+declare module 'date-fns/esm/isBefore/index' {
+ import { isBefore } from 'date-fns/esm'
+ export default isBefore
+}
+
+declare module 'date-fns/esm/isDate/index' {
+ import { isDate } from 'date-fns/esm'
+ export default isDate
+}
+
+declare module 'date-fns/esm/isEqual/index' {
+ import { isEqual } from 'date-fns/esm'
+ export default isEqual
+}
+
+declare module 'date-fns/esm/isExists/index' {
+ import { isExists } from 'date-fns/esm'
+ export default isExists
+}
+
+declare module 'date-fns/esm/isFirstDayOfMonth/index' {
+ import { isFirstDayOfMonth } from 'date-fns/esm'
+ export default isFirstDayOfMonth
+}
+
+declare module 'date-fns/esm/isFriday/index' {
+ import { isFriday } from 'date-fns/esm'
+ export default isFriday
+}
+
+declare module 'date-fns/esm/isFuture/index' {
+ import { isFuture } from 'date-fns/esm'
+ export default isFuture
+}
+
+declare module 'date-fns/esm/isLastDayOfMonth/index' {
+ import { isLastDayOfMonth } from 'date-fns/esm'
+ export default isLastDayOfMonth
+}
+
+declare module 'date-fns/esm/isLeapYear/index' {
+ import { isLeapYear } from 'date-fns/esm'
+ export default isLeapYear
+}
+
+declare module 'date-fns/esm/isMatch/index' {
+ import { isMatch } from 'date-fns/esm'
+ export default isMatch
+}
+
+declare module 'date-fns/esm/isMonday/index' {
+ import { isMonday } from 'date-fns/esm'
+ export default isMonday
+}
+
+declare module 'date-fns/esm/isPast/index' {
+ import { isPast } from 'date-fns/esm'
+ export default isPast
+}
+
+declare module 'date-fns/esm/isSameDay/index' {
+ import { isSameDay } from 'date-fns/esm'
+ export default isSameDay
+}
+
+declare module 'date-fns/esm/isSameHour/index' {
+ import { isSameHour } from 'date-fns/esm'
+ export default isSameHour
+}
+
+declare module 'date-fns/esm/isSameISOWeek/index' {
+ import { isSameISOWeek } from 'date-fns/esm'
+ export default isSameISOWeek
+}
+
+declare module 'date-fns/esm/isSameISOWeekYear/index' {
+ import { isSameISOWeekYear } from 'date-fns/esm'
+ export default isSameISOWeekYear
+}
+
+declare module 'date-fns/esm/isSameMinute/index' {
+ import { isSameMinute } from 'date-fns/esm'
+ export default isSameMinute
+}
+
+declare module 'date-fns/esm/isSameMonth/index' {
+ import { isSameMonth } from 'date-fns/esm'
+ export default isSameMonth
+}
+
+declare module 'date-fns/esm/isSameQuarter/index' {
+ import { isSameQuarter } from 'date-fns/esm'
+ export default isSameQuarter
+}
+
+declare module 'date-fns/esm/isSameSecond/index' {
+ import { isSameSecond } from 'date-fns/esm'
+ export default isSameSecond
+}
+
+declare module 'date-fns/esm/isSameWeek/index' {
+ import { isSameWeek } from 'date-fns/esm'
+ export default isSameWeek
+}
+
+declare module 'date-fns/esm/isSameYear/index' {
+ import { isSameYear } from 'date-fns/esm'
+ export default isSameYear
+}
+
+declare module 'date-fns/esm/isSaturday/index' {
+ import { isSaturday } from 'date-fns/esm'
+ export default isSaturday
+}
+
+declare module 'date-fns/esm/isSunday/index' {
+ import { isSunday } from 'date-fns/esm'
+ export default isSunday
+}
+
+declare module 'date-fns/esm/isThisHour/index' {
+ import { isThisHour } from 'date-fns/esm'
+ export default isThisHour
+}
+
+declare module 'date-fns/esm/isThisISOWeek/index' {
+ import { isThisISOWeek } from 'date-fns/esm'
+ export default isThisISOWeek
+}
+
+declare module 'date-fns/esm/isThisMinute/index' {
+ import { isThisMinute } from 'date-fns/esm'
+ export default isThisMinute
+}
+
+declare module 'date-fns/esm/isThisMonth/index' {
+ import { isThisMonth } from 'date-fns/esm'
+ export default isThisMonth
+}
+
+declare module 'date-fns/esm/isThisQuarter/index' {
+ import { isThisQuarter } from 'date-fns/esm'
+ export default isThisQuarter
+}
+
+declare module 'date-fns/esm/isThisSecond/index' {
+ import { isThisSecond } from 'date-fns/esm'
+ export default isThisSecond
+}
+
+declare module 'date-fns/esm/isThisWeek/index' {
+ import { isThisWeek } from 'date-fns/esm'
+ export default isThisWeek
+}
+
+declare module 'date-fns/esm/isThisYear/index' {
+ import { isThisYear } from 'date-fns/esm'
+ export default isThisYear
+}
+
+declare module 'date-fns/esm/isThursday/index' {
+ import { isThursday } from 'date-fns/esm'
+ export default isThursday
+}
+
+declare module 'date-fns/esm/isToday/index' {
+ import { isToday } from 'date-fns/esm'
+ export default isToday
+}
+
+declare module 'date-fns/esm/isTomorrow/index' {
+ import { isTomorrow } from 'date-fns/esm'
+ export default isTomorrow
+}
+
+declare module 'date-fns/esm/isTuesday/index' {
+ import { isTuesday } from 'date-fns/esm'
+ export default isTuesday
+}
+
+declare module 'date-fns/esm/isValid/index' {
+ import { isValid } from 'date-fns/esm'
+ export default isValid
+}
+
+declare module 'date-fns/esm/isWednesday/index' {
+ import { isWednesday } from 'date-fns/esm'
+ export default isWednesday
+}
+
+declare module 'date-fns/esm/isWeekend/index' {
+ import { isWeekend } from 'date-fns/esm'
+ export default isWeekend
+}
+
+declare module 'date-fns/esm/isWithinInterval/index' {
+ import { isWithinInterval } from 'date-fns/esm'
+ export default isWithinInterval
+}
+
+declare module 'date-fns/esm/isYesterday/index' {
+ import { isYesterday } from 'date-fns/esm'
+ export default isYesterday
+}
+
+declare module 'date-fns/esm/lastDayOfDecade/index' {
+ import { lastDayOfDecade } from 'date-fns/esm'
+ export default lastDayOfDecade
+}
+
+declare module 'date-fns/esm/lastDayOfISOWeek/index' {
+ import { lastDayOfISOWeek } from 'date-fns/esm'
+ export default lastDayOfISOWeek
+}
+
+declare module 'date-fns/esm/lastDayOfISOWeekYear/index' {
+ import { lastDayOfISOWeekYear } from 'date-fns/esm'
+ export default lastDayOfISOWeekYear
+}
+
+declare module 'date-fns/esm/lastDayOfMonth/index' {
+ import { lastDayOfMonth } from 'date-fns/esm'
+ export default lastDayOfMonth
+}
+
+declare module 'date-fns/esm/lastDayOfQuarter/index' {
+ import { lastDayOfQuarter } from 'date-fns/esm'
+ export default lastDayOfQuarter
+}
+
+declare module 'date-fns/esm/lastDayOfWeek/index' {
+ import { lastDayOfWeek } from 'date-fns/esm'
+ export default lastDayOfWeek
+}
+
+declare module 'date-fns/esm/lastDayOfYear/index' {
+ import { lastDayOfYear } from 'date-fns/esm'
+ export default lastDayOfYear
+}
+
+declare module 'date-fns/esm/lightFormat/index' {
+ import { lightFormat } from 'date-fns/esm'
+ export default lightFormat
+}
+
+declare module 'date-fns/esm/max/index' {
+ import { max } from 'date-fns/esm'
+ export default max
+}
+
+declare module 'date-fns/esm/milliseconds/index' {
+ import { milliseconds } from 'date-fns/esm'
+ export default milliseconds
+}
+
+declare module 'date-fns/esm/millisecondsToHours/index' {
+ import { millisecondsToHours } from 'date-fns/esm'
+ export default millisecondsToHours
+}
+
+declare module 'date-fns/esm/millisecondsToMinutes/index' {
+ import { millisecondsToMinutes } from 'date-fns/esm'
+ export default millisecondsToMinutes
+}
+
+declare module 'date-fns/esm/millisecondsToSeconds/index' {
+ import { millisecondsToSeconds } from 'date-fns/esm'
+ export default millisecondsToSeconds
+}
+
+declare module 'date-fns/esm/min/index' {
+ import { min } from 'date-fns/esm'
+ export default min
+}
+
+declare module 'date-fns/esm/minutesToHours/index' {
+ import { minutesToHours } from 'date-fns/esm'
+ export default minutesToHours
+}
+
+declare module 'date-fns/esm/minutesToMilliseconds/index' {
+ import { minutesToMilliseconds } from 'date-fns/esm'
+ export default minutesToMilliseconds
+}
+
+declare module 'date-fns/esm/minutesToSeconds/index' {
+ import { minutesToSeconds } from 'date-fns/esm'
+ export default minutesToSeconds
+}
+
+declare module 'date-fns/esm/monthsToQuarters/index' {
+ import { monthsToQuarters } from 'date-fns/esm'
+ export default monthsToQuarters
+}
+
+declare module 'date-fns/esm/monthsToYears/index' {
+ import { monthsToYears } from 'date-fns/esm'
+ export default monthsToYears
+}
+
+declare module 'date-fns/esm/nextDay/index' {
+ import { nextDay } from 'date-fns/esm'
+ export default nextDay
+}
+
+declare module 'date-fns/esm/nextFriday/index' {
+ import { nextFriday } from 'date-fns/esm'
+ export default nextFriday
+}
+
+declare module 'date-fns/esm/nextMonday/index' {
+ import { nextMonday } from 'date-fns/esm'
+ export default nextMonday
+}
+
+declare module 'date-fns/esm/nextSaturday/index' {
+ import { nextSaturday } from 'date-fns/esm'
+ export default nextSaturday
+}
+
+declare module 'date-fns/esm/nextSunday/index' {
+ import { nextSunday } from 'date-fns/esm'
+ export default nextSunday
+}
+
+declare module 'date-fns/esm/nextThursday/index' {
+ import { nextThursday } from 'date-fns/esm'
+ export default nextThursday
+}
+
+declare module 'date-fns/esm/nextTuesday/index' {
+ import { nextTuesday } from 'date-fns/esm'
+ export default nextTuesday
+}
+
+declare module 'date-fns/esm/nextWednesday/index' {
+ import { nextWednesday } from 'date-fns/esm'
+ export default nextWednesday
+}
+
+declare module 'date-fns/esm/parse/index' {
+ import { parse } from 'date-fns/esm'
+ export default parse
+}
+
+declare module 'date-fns/esm/parseISO/index' {
+ import { parseISO } from 'date-fns/esm'
+ export default parseISO
+}
+
+declare module 'date-fns/esm/parseJSON/index' {
+ import { parseJSON } from 'date-fns/esm'
+ export default parseJSON
+}
+
+declare module 'date-fns/esm/quartersToMonths/index' {
+ import { quartersToMonths } from 'date-fns/esm'
+ export default quartersToMonths
+}
+
+declare module 'date-fns/esm/quartersToYears/index' {
+ import { quartersToYears } from 'date-fns/esm'
+ export default quartersToYears
+}
+
+declare module 'date-fns/esm/roundToNearestMinutes/index' {
+ import { roundToNearestMinutes } from 'date-fns/esm'
+ export default roundToNearestMinutes
+}
+
+declare module 'date-fns/esm/secondsToHours/index' {
+ import { secondsToHours } from 'date-fns/esm'
+ export default secondsToHours
+}
+
+declare module 'date-fns/esm/secondsToMilliseconds/index' {
+ import { secondsToMilliseconds } from 'date-fns/esm'
+ export default secondsToMilliseconds
+}
+
+declare module 'date-fns/esm/secondsToMinutes/index' {
+ import { secondsToMinutes } from 'date-fns/esm'
+ export default secondsToMinutes
+}
+
+declare module 'date-fns/esm/set/index' {
+ import { set } from 'date-fns/esm'
+ export default set
+}
+
+declare module 'date-fns/esm/setDate/index' {
+ import { setDate } from 'date-fns/esm'
+ export default setDate
+}
+
+declare module 'date-fns/esm/setDay/index' {
+ import { setDay } from 'date-fns/esm'
+ export default setDay
+}
+
+declare module 'date-fns/esm/setDayOfYear/index' {
+ import { setDayOfYear } from 'date-fns/esm'
+ export default setDayOfYear
+}
+
+declare module 'date-fns/esm/setHours/index' {
+ import { setHours } from 'date-fns/esm'
+ export default setHours
+}
+
+declare module 'date-fns/esm/setISODay/index' {
+ import { setISODay } from 'date-fns/esm'
+ export default setISODay
+}
+
+declare module 'date-fns/esm/setISOWeek/index' {
+ import { setISOWeek } from 'date-fns/esm'
+ export default setISOWeek
+}
+
+declare module 'date-fns/esm/setISOWeekYear/index' {
+ import { setISOWeekYear } from 'date-fns/esm'
+ export default setISOWeekYear
+}
+
+declare module 'date-fns/esm/setMilliseconds/index' {
+ import { setMilliseconds } from 'date-fns/esm'
+ export default setMilliseconds
+}
+
+declare module 'date-fns/esm/setMinutes/index' {
+ import { setMinutes } from 'date-fns/esm'
+ export default setMinutes
+}
+
+declare module 'date-fns/esm/setMonth/index' {
+ import { setMonth } from 'date-fns/esm'
+ export default setMonth
+}
+
+declare module 'date-fns/esm/setQuarter/index' {
+ import { setQuarter } from 'date-fns/esm'
+ export default setQuarter
+}
+
+declare module 'date-fns/esm/setSeconds/index' {
+ import { setSeconds } from 'date-fns/esm'
+ export default setSeconds
+}
+
+declare module 'date-fns/esm/setWeek/index' {
+ import { setWeek } from 'date-fns/esm'
+ export default setWeek
+}
+
+declare module 'date-fns/esm/setWeekYear/index' {
+ import { setWeekYear } from 'date-fns/esm'
+ export default setWeekYear
+}
+
+declare module 'date-fns/esm/setYear/index' {
+ import { setYear } from 'date-fns/esm'
+ export default setYear
+}
+
+declare module 'date-fns/esm/startOfDay/index' {
+ import { startOfDay } from 'date-fns/esm'
+ export default startOfDay
+}
+
+declare module 'date-fns/esm/startOfDecade/index' {
+ import { startOfDecade } from 'date-fns/esm'
+ export default startOfDecade
+}
+
+declare module 'date-fns/esm/startOfHour/index' {
+ import { startOfHour } from 'date-fns/esm'
+ export default startOfHour
+}
+
+declare module 'date-fns/esm/startOfISOWeek/index' {
+ import { startOfISOWeek } from 'date-fns/esm'
+ export default startOfISOWeek
+}
+
+declare module 'date-fns/esm/startOfISOWeekYear/index' {
+ import { startOfISOWeekYear } from 'date-fns/esm'
+ export default startOfISOWeekYear
+}
+
+declare module 'date-fns/esm/startOfMinute/index' {
+ import { startOfMinute } from 'date-fns/esm'
+ export default startOfMinute
+}
+
+declare module 'date-fns/esm/startOfMonth/index' {
+ import { startOfMonth } from 'date-fns/esm'
+ export default startOfMonth
+}
+
+declare module 'date-fns/esm/startOfQuarter/index' {
+ import { startOfQuarter } from 'date-fns/esm'
+ export default startOfQuarter
+}
+
+declare module 'date-fns/esm/startOfSecond/index' {
+ import { startOfSecond } from 'date-fns/esm'
+ export default startOfSecond
+}
+
+declare module 'date-fns/esm/startOfToday/index' {
+ import { startOfToday } from 'date-fns/esm'
+ export default startOfToday
+}
+
+declare module 'date-fns/esm/startOfTomorrow/index' {
+ import { startOfTomorrow } from 'date-fns/esm'
+ export default startOfTomorrow
+}
+
+declare module 'date-fns/esm/startOfWeek/index' {
+ import { startOfWeek } from 'date-fns/esm'
+ export default startOfWeek
+}
+
+declare module 'date-fns/esm/startOfWeekYear/index' {
+ import { startOfWeekYear } from 'date-fns/esm'
+ export default startOfWeekYear
+}
+
+declare module 'date-fns/esm/startOfYear/index' {
+ import { startOfYear } from 'date-fns/esm'
+ export default startOfYear
+}
+
+declare module 'date-fns/esm/startOfYesterday/index' {
+ import { startOfYesterday } from 'date-fns/esm'
+ export default startOfYesterday
+}
+
+declare module 'date-fns/esm/sub/index' {
+ import { sub } from 'date-fns/esm'
+ export default sub
+}
+
+declare module 'date-fns/esm/subBusinessDays/index' {
+ import { subBusinessDays } from 'date-fns/esm'
+ export default subBusinessDays
+}
+
+declare module 'date-fns/esm/subDays/index' {
+ import { subDays } from 'date-fns/esm'
+ export default subDays
+}
+
+declare module 'date-fns/esm/subHours/index' {
+ import { subHours } from 'date-fns/esm'
+ export default subHours
+}
+
+declare module 'date-fns/esm/subISOWeekYears/index' {
+ import { subISOWeekYears } from 'date-fns/esm'
+ export default subISOWeekYears
+}
+
+declare module 'date-fns/esm/subMilliseconds/index' {
+ import { subMilliseconds } from 'date-fns/esm'
+ export default subMilliseconds
+}
+
+declare module 'date-fns/esm/subMinutes/index' {
+ import { subMinutes } from 'date-fns/esm'
+ export default subMinutes
+}
+
+declare module 'date-fns/esm/subMonths/index' {
+ import { subMonths } from 'date-fns/esm'
+ export default subMonths
+}
+
+declare module 'date-fns/esm/subQuarters/index' {
+ import { subQuarters } from 'date-fns/esm'
+ export default subQuarters
+}
+
+declare module 'date-fns/esm/subSeconds/index' {
+ import { subSeconds } from 'date-fns/esm'
+ export default subSeconds
+}
+
+declare module 'date-fns/esm/subWeeks/index' {
+ import { subWeeks } from 'date-fns/esm'
+ export default subWeeks
+}
+
+declare module 'date-fns/esm/subYears/index' {
+ import { subYears } from 'date-fns/esm'
+ export default subYears
+}
+
+declare module 'date-fns/esm/toDate/index' {
+ import { toDate } from 'date-fns/esm'
+ export default toDate
+}
+
+declare module 'date-fns/esm/weeksToDays/index' {
+ import { weeksToDays } from 'date-fns/esm'
+ export default weeksToDays
+}
+
+declare module 'date-fns/esm/yearsToMonths/index' {
+ import { yearsToMonths } from 'date-fns/esm'
+ export default yearsToMonths
+}
+
+declare module 'date-fns/esm/yearsToQuarters/index' {
+ import { yearsToQuarters } from 'date-fns/esm'
+ export default yearsToQuarters
+}
+
+declare module 'date-fns/esm/add/index.js' {
+ import { add } from 'date-fns/esm'
+ export default add
+}
+
+declare module 'date-fns/esm/addBusinessDays/index.js' {
+ import { addBusinessDays } from 'date-fns/esm'
+ export default addBusinessDays
+}
+
+declare module 'date-fns/esm/addDays/index.js' {
+ import { addDays } from 'date-fns/esm'
+ export default addDays
+}
+
+declare module 'date-fns/esm/addHours/index.js' {
+ import { addHours } from 'date-fns/esm'
+ export default addHours
+}
+
+declare module 'date-fns/esm/addISOWeekYears/index.js' {
+ import { addISOWeekYears } from 'date-fns/esm'
+ export default addISOWeekYears
+}
+
+declare module 'date-fns/esm/addMilliseconds/index.js' {
+ import { addMilliseconds } from 'date-fns/esm'
+ export default addMilliseconds
+}
+
+declare module 'date-fns/esm/addMinutes/index.js' {
+ import { addMinutes } from 'date-fns/esm'
+ export default addMinutes
+}
+
+declare module 'date-fns/esm/addMonths/index.js' {
+ import { addMonths } from 'date-fns/esm'
+ export default addMonths
+}
+
+declare module 'date-fns/esm/addQuarters/index.js' {
+ import { addQuarters } from 'date-fns/esm'
+ export default addQuarters
+}
+
+declare module 'date-fns/esm/addSeconds/index.js' {
+ import { addSeconds } from 'date-fns/esm'
+ export default addSeconds
+}
+
+declare module 'date-fns/esm/addWeeks/index.js' {
+ import { addWeeks } from 'date-fns/esm'
+ export default addWeeks
+}
+
+declare module 'date-fns/esm/addYears/index.js' {
+ import { addYears } from 'date-fns/esm'
+ export default addYears
+}
+
+declare module 'date-fns/esm/areIntervalsOverlapping/index.js' {
+ import { areIntervalsOverlapping } from 'date-fns/esm'
+ export default areIntervalsOverlapping
+}
+
+declare module 'date-fns/esm/closestIndexTo/index.js' {
+ import { closestIndexTo } from 'date-fns/esm'
+ export default closestIndexTo
+}
+
+declare module 'date-fns/esm/closestTo/index.js' {
+ import { closestTo } from 'date-fns/esm'
+ export default closestTo
+}
+
+declare module 'date-fns/esm/compareAsc/index.js' {
+ import { compareAsc } from 'date-fns/esm'
+ export default compareAsc
+}
+
+declare module 'date-fns/esm/compareDesc/index.js' {
+ import { compareDesc } from 'date-fns/esm'
+ export default compareDesc
+}
+
+declare module 'date-fns/esm/daysToWeeks/index.js' {
+ import { daysToWeeks } from 'date-fns/esm'
+ export default daysToWeeks
+}
+
+declare module 'date-fns/esm/differenceInBusinessDays/index.js' {
+ import { differenceInBusinessDays } from 'date-fns/esm'
+ export default differenceInBusinessDays
+}
+
+declare module 'date-fns/esm/differenceInCalendarDays/index.js' {
+ import { differenceInCalendarDays } from 'date-fns/esm'
+ export default differenceInCalendarDays
+}
+
+declare module 'date-fns/esm/differenceInCalendarISOWeeks/index.js' {
+ import { differenceInCalendarISOWeeks } from 'date-fns/esm'
+ export default differenceInCalendarISOWeeks
+}
+
+declare module 'date-fns/esm/differenceInCalendarISOWeekYears/index.js' {
+ import { differenceInCalendarISOWeekYears } from 'date-fns/esm'
+ export default differenceInCalendarISOWeekYears
+}
+
+declare module 'date-fns/esm/differenceInCalendarMonths/index.js' {
+ import { differenceInCalendarMonths } from 'date-fns/esm'
+ export default differenceInCalendarMonths
+}
+
+declare module 'date-fns/esm/differenceInCalendarQuarters/index.js' {
+ import { differenceInCalendarQuarters } from 'date-fns/esm'
+ export default differenceInCalendarQuarters
+}
+
+declare module 'date-fns/esm/differenceInCalendarWeeks/index.js' {
+ import { differenceInCalendarWeeks } from 'date-fns/esm'
+ export default differenceInCalendarWeeks
+}
+
+declare module 'date-fns/esm/differenceInCalendarYears/index.js' {
+ import { differenceInCalendarYears } from 'date-fns/esm'
+ export default differenceInCalendarYears
+}
+
+declare module 'date-fns/esm/differenceInDays/index.js' {
+ import { differenceInDays } from 'date-fns/esm'
+ export default differenceInDays
+}
+
+declare module 'date-fns/esm/differenceInHours/index.js' {
+ import { differenceInHours } from 'date-fns/esm'
+ export default differenceInHours
+}
+
+declare module 'date-fns/esm/differenceInISOWeekYears/index.js' {
+ import { differenceInISOWeekYears } from 'date-fns/esm'
+ export default differenceInISOWeekYears
+}
+
+declare module 'date-fns/esm/differenceInMilliseconds/index.js' {
+ import { differenceInMilliseconds } from 'date-fns/esm'
+ export default differenceInMilliseconds
+}
+
+declare module 'date-fns/esm/differenceInMinutes/index.js' {
+ import { differenceInMinutes } from 'date-fns/esm'
+ export default differenceInMinutes
+}
+
+declare module 'date-fns/esm/differenceInMonths/index.js' {
+ import { differenceInMonths } from 'date-fns/esm'
+ export default differenceInMonths
+}
+
+declare module 'date-fns/esm/differenceInQuarters/index.js' {
+ import { differenceInQuarters } from 'date-fns/esm'
+ export default differenceInQuarters
+}
+
+declare module 'date-fns/esm/differenceInSeconds/index.js' {
+ import { differenceInSeconds } from 'date-fns/esm'
+ export default differenceInSeconds
+}
+
+declare module 'date-fns/esm/differenceInWeeks/index.js' {
+ import { differenceInWeeks } from 'date-fns/esm'
+ export default differenceInWeeks
+}
+
+declare module 'date-fns/esm/differenceInYears/index.js' {
+ import { differenceInYears } from 'date-fns/esm'
+ export default differenceInYears
+}
+
+declare module 'date-fns/esm/eachDayOfInterval/index.js' {
+ import { eachDayOfInterval } from 'date-fns/esm'
+ export default eachDayOfInterval
+}
+
+declare module 'date-fns/esm/eachHourOfInterval/index.js' {
+ import { eachHourOfInterval } from 'date-fns/esm'
+ export default eachHourOfInterval
+}
+
+declare module 'date-fns/esm/eachMinuteOfInterval/index.js' {
+ import { eachMinuteOfInterval } from 'date-fns/esm'
+ export default eachMinuteOfInterval
+}
+
+declare module 'date-fns/esm/eachMonthOfInterval/index.js' {
+ import { eachMonthOfInterval } from 'date-fns/esm'
+ export default eachMonthOfInterval
+}
+
+declare module 'date-fns/esm/eachQuarterOfInterval/index.js' {
+ import { eachQuarterOfInterval } from 'date-fns/esm'
+ export default eachQuarterOfInterval
+}
+
+declare module 'date-fns/esm/eachWeekendOfInterval/index.js' {
+ import { eachWeekendOfInterval } from 'date-fns/esm'
+ export default eachWeekendOfInterval
+}
+
+declare module 'date-fns/esm/eachWeekendOfMonth/index.js' {
+ import { eachWeekendOfMonth } from 'date-fns/esm'
+ export default eachWeekendOfMonth
+}
+
+declare module 'date-fns/esm/eachWeekendOfYear/index.js' {
+ import { eachWeekendOfYear } from 'date-fns/esm'
+ export default eachWeekendOfYear
+}
+
+declare module 'date-fns/esm/eachWeekOfInterval/index.js' {
+ import { eachWeekOfInterval } from 'date-fns/esm'
+ export default eachWeekOfInterval
+}
+
+declare module 'date-fns/esm/eachYearOfInterval/index.js' {
+ import { eachYearOfInterval } from 'date-fns/esm'
+ export default eachYearOfInterval
+}
+
+declare module 'date-fns/esm/endOfDay/index.js' {
+ import { endOfDay } from 'date-fns/esm'
+ export default endOfDay
+}
+
+declare module 'date-fns/esm/endOfDecade/index.js' {
+ import { endOfDecade } from 'date-fns/esm'
+ export default endOfDecade
+}
+
+declare module 'date-fns/esm/endOfHour/index.js' {
+ import { endOfHour } from 'date-fns/esm'
+ export default endOfHour
+}
+
+declare module 'date-fns/esm/endOfISOWeek/index.js' {
+ import { endOfISOWeek } from 'date-fns/esm'
+ export default endOfISOWeek
+}
+
+declare module 'date-fns/esm/endOfISOWeekYear/index.js' {
+ import { endOfISOWeekYear } from 'date-fns/esm'
+ export default endOfISOWeekYear
+}
+
+declare module 'date-fns/esm/endOfMinute/index.js' {
+ import { endOfMinute } from 'date-fns/esm'
+ export default endOfMinute
+}
+
+declare module 'date-fns/esm/endOfMonth/index.js' {
+ import { endOfMonth } from 'date-fns/esm'
+ export default endOfMonth
+}
+
+declare module 'date-fns/esm/endOfQuarter/index.js' {
+ import { endOfQuarter } from 'date-fns/esm'
+ export default endOfQuarter
+}
+
+declare module 'date-fns/esm/endOfSecond/index.js' {
+ import { endOfSecond } from 'date-fns/esm'
+ export default endOfSecond
+}
+
+declare module 'date-fns/esm/endOfToday/index.js' {
+ import { endOfToday } from 'date-fns/esm'
+ export default endOfToday
+}
+
+declare module 'date-fns/esm/endOfTomorrow/index.js' {
+ import { endOfTomorrow } from 'date-fns/esm'
+ export default endOfTomorrow
+}
+
+declare module 'date-fns/esm/endOfWeek/index.js' {
+ import { endOfWeek } from 'date-fns/esm'
+ export default endOfWeek
+}
+
+declare module 'date-fns/esm/endOfYear/index.js' {
+ import { endOfYear } from 'date-fns/esm'
+ export default endOfYear
+}
+
+declare module 'date-fns/esm/endOfYesterday/index.js' {
+ import { endOfYesterday } from 'date-fns/esm'
+ export default endOfYesterday
+}
+
+declare module 'date-fns/esm/format/index.js' {
+ import { format } from 'date-fns/esm'
+ export default format
+}
+
+declare module 'date-fns/esm/formatDistance/index.js' {
+ import { formatDistance } from 'date-fns/esm'
+ export default formatDistance
+}
+
+declare module 'date-fns/esm/formatDistanceStrict/index.js' {
+ import { formatDistanceStrict } from 'date-fns/esm'
+ export default formatDistanceStrict
+}
+
+declare module 'date-fns/esm/formatDistanceToNow/index.js' {
+ import { formatDistanceToNow } from 'date-fns/esm'
+ export default formatDistanceToNow
+}
+
+declare module 'date-fns/esm/formatDistanceToNowStrict/index.js' {
+ import { formatDistanceToNowStrict } from 'date-fns/esm'
+ export default formatDistanceToNowStrict
+}
+
+declare module 'date-fns/esm/formatDuration/index.js' {
+ import { formatDuration } from 'date-fns/esm'
+ export default formatDuration
+}
+
+declare module 'date-fns/esm/formatISO/index.js' {
+ import { formatISO } from 'date-fns/esm'
+ export default formatISO
+}
+
+declare module 'date-fns/esm/formatISO9075/index.js' {
+ import { formatISO9075 } from 'date-fns/esm'
+ export default formatISO9075
+}
+
+declare module 'date-fns/esm/formatISODuration/index.js' {
+ import { formatISODuration } from 'date-fns/esm'
+ export default formatISODuration
+}
+
+declare module 'date-fns/esm/formatRelative/index.js' {
+ import { formatRelative } from 'date-fns/esm'
+ export default formatRelative
+}
+
+declare module 'date-fns/esm/formatRFC3339/index.js' {
+ import { formatRFC3339 } from 'date-fns/esm'
+ export default formatRFC3339
+}
+
+declare module 'date-fns/esm/formatRFC7231/index.js' {
+ import { formatRFC7231 } from 'date-fns/esm'
+ export default formatRFC7231
+}
+
+declare module 'date-fns/esm/fromUnixTime/index.js' {
+ import { fromUnixTime } from 'date-fns/esm'
+ export default fromUnixTime
+}
+
+declare module 'date-fns/esm/getDate/index.js' {
+ import { getDate } from 'date-fns/esm'
+ export default getDate
+}
+
+declare module 'date-fns/esm/getDay/index.js' {
+ import { getDay } from 'date-fns/esm'
+ export default getDay
+}
+
+declare module 'date-fns/esm/getDayOfYear/index.js' {
+ import { getDayOfYear } from 'date-fns/esm'
+ export default getDayOfYear
+}
+
+declare module 'date-fns/esm/getDaysInMonth/index.js' {
+ import { getDaysInMonth } from 'date-fns/esm'
+ export default getDaysInMonth
+}
+
+declare module 'date-fns/esm/getDaysInYear/index.js' {
+ import { getDaysInYear } from 'date-fns/esm'
+ export default getDaysInYear
+}
+
+declare module 'date-fns/esm/getDecade/index.js' {
+ import { getDecade } from 'date-fns/esm'
+ export default getDecade
+}
+
+declare module 'date-fns/esm/getHours/index.js' {
+ import { getHours } from 'date-fns/esm'
+ export default getHours
+}
+
+declare module 'date-fns/esm/getISODay/index.js' {
+ import { getISODay } from 'date-fns/esm'
+ export default getISODay
+}
+
+declare module 'date-fns/esm/getISOWeek/index.js' {
+ import { getISOWeek } from 'date-fns/esm'
+ export default getISOWeek
+}
+
+declare module 'date-fns/esm/getISOWeeksInYear/index.js' {
+ import { getISOWeeksInYear } from 'date-fns/esm'
+ export default getISOWeeksInYear
+}
+
+declare module 'date-fns/esm/getISOWeekYear/index.js' {
+ import { getISOWeekYear } from 'date-fns/esm'
+ export default getISOWeekYear
+}
+
+declare module 'date-fns/esm/getMilliseconds/index.js' {
+ import { getMilliseconds } from 'date-fns/esm'
+ export default getMilliseconds
+}
+
+declare module 'date-fns/esm/getMinutes/index.js' {
+ import { getMinutes } from 'date-fns/esm'
+ export default getMinutes
+}
+
+declare module 'date-fns/esm/getMonth/index.js' {
+ import { getMonth } from 'date-fns/esm'
+ export default getMonth
+}
+
+declare module 'date-fns/esm/getOverlappingDaysInIntervals/index.js' {
+ import { getOverlappingDaysInIntervals } from 'date-fns/esm'
+ export default getOverlappingDaysInIntervals
+}
+
+declare module 'date-fns/esm/getQuarter/index.js' {
+ import { getQuarter } from 'date-fns/esm'
+ export default getQuarter
+}
+
+declare module 'date-fns/esm/getSeconds/index.js' {
+ import { getSeconds } from 'date-fns/esm'
+ export default getSeconds
+}
+
+declare module 'date-fns/esm/getTime/index.js' {
+ import { getTime } from 'date-fns/esm'
+ export default getTime
+}
+
+declare module 'date-fns/esm/getUnixTime/index.js' {
+ import { getUnixTime } from 'date-fns/esm'
+ export default getUnixTime
+}
+
+declare module 'date-fns/esm/getWeek/index.js' {
+ import { getWeek } from 'date-fns/esm'
+ export default getWeek
+}
+
+declare module 'date-fns/esm/getWeekOfMonth/index.js' {
+ import { getWeekOfMonth } from 'date-fns/esm'
+ export default getWeekOfMonth
+}
+
+declare module 'date-fns/esm/getWeeksInMonth/index.js' {
+ import { getWeeksInMonth } from 'date-fns/esm'
+ export default getWeeksInMonth
+}
+
+declare module 'date-fns/esm/getWeekYear/index.js' {
+ import { getWeekYear } from 'date-fns/esm'
+ export default getWeekYear
+}
+
+declare module 'date-fns/esm/getYear/index.js' {
+ import { getYear } from 'date-fns/esm'
+ export default getYear
+}
+
+declare module 'date-fns/esm/hoursToMilliseconds/index.js' {
+ import { hoursToMilliseconds } from 'date-fns/esm'
+ export default hoursToMilliseconds
+}
+
+declare module 'date-fns/esm/hoursToMinutes/index.js' {
+ import { hoursToMinutes } from 'date-fns/esm'
+ export default hoursToMinutes
+}
+
+declare module 'date-fns/esm/hoursToSeconds/index.js' {
+ import { hoursToSeconds } from 'date-fns/esm'
+ export default hoursToSeconds
+}
+
+declare module 'date-fns/esm/intervalToDuration/index.js' {
+ import { intervalToDuration } from 'date-fns/esm'
+ export default intervalToDuration
+}
+
+declare module 'date-fns/esm/intlFormat/index.js' {
+ import { intlFormat } from 'date-fns/esm'
+ export default intlFormat
+}
+
+declare module 'date-fns/esm/isAfter/index.js' {
+ import { isAfter } from 'date-fns/esm'
+ export default isAfter
+}
+
+declare module 'date-fns/esm/isBefore/index.js' {
+ import { isBefore } from 'date-fns/esm'
+ export default isBefore
+}
+
+declare module 'date-fns/esm/isDate/index.js' {
+ import { isDate } from 'date-fns/esm'
+ export default isDate
+}
+
+declare module 'date-fns/esm/isEqual/index.js' {
+ import { isEqual } from 'date-fns/esm'
+ export default isEqual
+}
+
+declare module 'date-fns/esm/isExists/index.js' {
+ import { isExists } from 'date-fns/esm'
+ export default isExists
+}
+
+declare module 'date-fns/esm/isFirstDayOfMonth/index.js' {
+ import { isFirstDayOfMonth } from 'date-fns/esm'
+ export default isFirstDayOfMonth
+}
+
+declare module 'date-fns/esm/isFriday/index.js' {
+ import { isFriday } from 'date-fns/esm'
+ export default isFriday
+}
+
+declare module 'date-fns/esm/isFuture/index.js' {
+ import { isFuture } from 'date-fns/esm'
+ export default isFuture
+}
+
+declare module 'date-fns/esm/isLastDayOfMonth/index.js' {
+ import { isLastDayOfMonth } from 'date-fns/esm'
+ export default isLastDayOfMonth
+}
+
+declare module 'date-fns/esm/isLeapYear/index.js' {
+ import { isLeapYear } from 'date-fns/esm'
+ export default isLeapYear
+}
+
+declare module 'date-fns/esm/isMatch/index.js' {
+ import { isMatch } from 'date-fns/esm'
+ export default isMatch
+}
+
+declare module 'date-fns/esm/isMonday/index.js' {
+ import { isMonday } from 'date-fns/esm'
+ export default isMonday
+}
+
+declare module 'date-fns/esm/isPast/index.js' {
+ import { isPast } from 'date-fns/esm'
+ export default isPast
+}
+
+declare module 'date-fns/esm/isSameDay/index.js' {
+ import { isSameDay } from 'date-fns/esm'
+ export default isSameDay
+}
+
+declare module 'date-fns/esm/isSameHour/index.js' {
+ import { isSameHour } from 'date-fns/esm'
+ export default isSameHour
+}
+
+declare module 'date-fns/esm/isSameISOWeek/index.js' {
+ import { isSameISOWeek } from 'date-fns/esm'
+ export default isSameISOWeek
+}
+
+declare module 'date-fns/esm/isSameISOWeekYear/index.js' {
+ import { isSameISOWeekYear } from 'date-fns/esm'
+ export default isSameISOWeekYear
+}
+
+declare module 'date-fns/esm/isSameMinute/index.js' {
+ import { isSameMinute } from 'date-fns/esm'
+ export default isSameMinute
+}
+
+declare module 'date-fns/esm/isSameMonth/index.js' {
+ import { isSameMonth } from 'date-fns/esm'
+ export default isSameMonth
+}
+
+declare module 'date-fns/esm/isSameQuarter/index.js' {
+ import { isSameQuarter } from 'date-fns/esm'
+ export default isSameQuarter
+}
+
+declare module 'date-fns/esm/isSameSecond/index.js' {
+ import { isSameSecond } from 'date-fns/esm'
+ export default isSameSecond
+}
+
+declare module 'date-fns/esm/isSameWeek/index.js' {
+ import { isSameWeek } from 'date-fns/esm'
+ export default isSameWeek
+}
+
+declare module 'date-fns/esm/isSameYear/index.js' {
+ import { isSameYear } from 'date-fns/esm'
+ export default isSameYear
+}
+
+declare module 'date-fns/esm/isSaturday/index.js' {
+ import { isSaturday } from 'date-fns/esm'
+ export default isSaturday
+}
+
+declare module 'date-fns/esm/isSunday/index.js' {
+ import { isSunday } from 'date-fns/esm'
+ export default isSunday
+}
+
+declare module 'date-fns/esm/isThisHour/index.js' {
+ import { isThisHour } from 'date-fns/esm'
+ export default isThisHour
+}
+
+declare module 'date-fns/esm/isThisISOWeek/index.js' {
+ import { isThisISOWeek } from 'date-fns/esm'
+ export default isThisISOWeek
+}
+
+declare module 'date-fns/esm/isThisMinute/index.js' {
+ import { isThisMinute } from 'date-fns/esm'
+ export default isThisMinute
+}
+
+declare module 'date-fns/esm/isThisMonth/index.js' {
+ import { isThisMonth } from 'date-fns/esm'
+ export default isThisMonth
+}
+
+declare module 'date-fns/esm/isThisQuarter/index.js' {
+ import { isThisQuarter } from 'date-fns/esm'
+ export default isThisQuarter
+}
+
+declare module 'date-fns/esm/isThisSecond/index.js' {
+ import { isThisSecond } from 'date-fns/esm'
+ export default isThisSecond
+}
+
+declare module 'date-fns/esm/isThisWeek/index.js' {
+ import { isThisWeek } from 'date-fns/esm'
+ export default isThisWeek
+}
+
+declare module 'date-fns/esm/isThisYear/index.js' {
+ import { isThisYear } from 'date-fns/esm'
+ export default isThisYear
+}
+
+declare module 'date-fns/esm/isThursday/index.js' {
+ import { isThursday } from 'date-fns/esm'
+ export default isThursday
+}
+
+declare module 'date-fns/esm/isToday/index.js' {
+ import { isToday } from 'date-fns/esm'
+ export default isToday
+}
+
+declare module 'date-fns/esm/isTomorrow/index.js' {
+ import { isTomorrow } from 'date-fns/esm'
+ export default isTomorrow
+}
+
+declare module 'date-fns/esm/isTuesday/index.js' {
+ import { isTuesday } from 'date-fns/esm'
+ export default isTuesday
+}
+
+declare module 'date-fns/esm/isValid/index.js' {
+ import { isValid } from 'date-fns/esm'
+ export default isValid
+}
+
+declare module 'date-fns/esm/isWednesday/index.js' {
+ import { isWednesday } from 'date-fns/esm'
+ export default isWednesday
+}
+
+declare module 'date-fns/esm/isWeekend/index.js' {
+ import { isWeekend } from 'date-fns/esm'
+ export default isWeekend
+}
+
+declare module 'date-fns/esm/isWithinInterval/index.js' {
+ import { isWithinInterval } from 'date-fns/esm'
+ export default isWithinInterval
+}
+
+declare module 'date-fns/esm/isYesterday/index.js' {
+ import { isYesterday } from 'date-fns/esm'
+ export default isYesterday
+}
+
+declare module 'date-fns/esm/lastDayOfDecade/index.js' {
+ import { lastDayOfDecade } from 'date-fns/esm'
+ export default lastDayOfDecade
+}
+
+declare module 'date-fns/esm/lastDayOfISOWeek/index.js' {
+ import { lastDayOfISOWeek } from 'date-fns/esm'
+ export default lastDayOfISOWeek
+}
+
+declare module 'date-fns/esm/lastDayOfISOWeekYear/index.js' {
+ import { lastDayOfISOWeekYear } from 'date-fns/esm'
+ export default lastDayOfISOWeekYear
+}
+
+declare module 'date-fns/esm/lastDayOfMonth/index.js' {
+ import { lastDayOfMonth } from 'date-fns/esm'
+ export default lastDayOfMonth
+}
+
+declare module 'date-fns/esm/lastDayOfQuarter/index.js' {
+ import { lastDayOfQuarter } from 'date-fns/esm'
+ export default lastDayOfQuarter
+}
+
+declare module 'date-fns/esm/lastDayOfWeek/index.js' {
+ import { lastDayOfWeek } from 'date-fns/esm'
+ export default lastDayOfWeek
+}
+
+declare module 'date-fns/esm/lastDayOfYear/index.js' {
+ import { lastDayOfYear } from 'date-fns/esm'
+ export default lastDayOfYear
+}
+
+declare module 'date-fns/esm/lightFormat/index.js' {
+ import { lightFormat } from 'date-fns/esm'
+ export default lightFormat
+}
+
+declare module 'date-fns/esm/max/index.js' {
+ import { max } from 'date-fns/esm'
+ export default max
+}
+
+declare module 'date-fns/esm/milliseconds/index.js' {
+ import { milliseconds } from 'date-fns/esm'
+ export default milliseconds
+}
+
+declare module 'date-fns/esm/millisecondsToHours/index.js' {
+ import { millisecondsToHours } from 'date-fns/esm'
+ export default millisecondsToHours
+}
+
+declare module 'date-fns/esm/millisecondsToMinutes/index.js' {
+ import { millisecondsToMinutes } from 'date-fns/esm'
+ export default millisecondsToMinutes
+}
+
+declare module 'date-fns/esm/millisecondsToSeconds/index.js' {
+ import { millisecondsToSeconds } from 'date-fns/esm'
+ export default millisecondsToSeconds
+}
+
+declare module 'date-fns/esm/min/index.js' {
+ import { min } from 'date-fns/esm'
+ export default min
+}
+
+declare module 'date-fns/esm/minutesToHours/index.js' {
+ import { minutesToHours } from 'date-fns/esm'
+ export default minutesToHours
+}
+
+declare module 'date-fns/esm/minutesToMilliseconds/index.js' {
+ import { minutesToMilliseconds } from 'date-fns/esm'
+ export default minutesToMilliseconds
+}
+
+declare module 'date-fns/esm/minutesToSeconds/index.js' {
+ import { minutesToSeconds } from 'date-fns/esm'
+ export default minutesToSeconds
+}
+
+declare module 'date-fns/esm/monthsToQuarters/index.js' {
+ import { monthsToQuarters } from 'date-fns/esm'
+ export default monthsToQuarters
+}
+
+declare module 'date-fns/esm/monthsToYears/index.js' {
+ import { monthsToYears } from 'date-fns/esm'
+ export default monthsToYears
+}
+
+declare module 'date-fns/esm/nextDay/index.js' {
+ import { nextDay } from 'date-fns/esm'
+ export default nextDay
+}
+
+declare module 'date-fns/esm/nextFriday/index.js' {
+ import { nextFriday } from 'date-fns/esm'
+ export default nextFriday
+}
+
+declare module 'date-fns/esm/nextMonday/index.js' {
+ import { nextMonday } from 'date-fns/esm'
+ export default nextMonday
+}
+
+declare module 'date-fns/esm/nextSaturday/index.js' {
+ import { nextSaturday } from 'date-fns/esm'
+ export default nextSaturday
+}
+
+declare module 'date-fns/esm/nextSunday/index.js' {
+ import { nextSunday } from 'date-fns/esm'
+ export default nextSunday
+}
+
+declare module 'date-fns/esm/nextThursday/index.js' {
+ import { nextThursday } from 'date-fns/esm'
+ export default nextThursday
+}
+
+declare module 'date-fns/esm/nextTuesday/index.js' {
+ import { nextTuesday } from 'date-fns/esm'
+ export default nextTuesday
+}
+
+declare module 'date-fns/esm/nextWednesday/index.js' {
+ import { nextWednesday } from 'date-fns/esm'
+ export default nextWednesday
+}
+
+declare module 'date-fns/esm/parse/index.js' {
+ import { parse } from 'date-fns/esm'
+ export default parse
+}
+
+declare module 'date-fns/esm/parseISO/index.js' {
+ import { parseISO } from 'date-fns/esm'
+ export default parseISO
+}
+
+declare module 'date-fns/esm/parseJSON/index.js' {
+ import { parseJSON } from 'date-fns/esm'
+ export default parseJSON
+}
+
+declare module 'date-fns/esm/quartersToMonths/index.js' {
+ import { quartersToMonths } from 'date-fns/esm'
+ export default quartersToMonths
+}
+
+declare module 'date-fns/esm/quartersToYears/index.js' {
+ import { quartersToYears } from 'date-fns/esm'
+ export default quartersToYears
+}
+
+declare module 'date-fns/esm/roundToNearestMinutes/index.js' {
+ import { roundToNearestMinutes } from 'date-fns/esm'
+ export default roundToNearestMinutes
+}
+
+declare module 'date-fns/esm/secondsToHours/index.js' {
+ import { secondsToHours } from 'date-fns/esm'
+ export default secondsToHours
+}
+
+declare module 'date-fns/esm/secondsToMilliseconds/index.js' {
+ import { secondsToMilliseconds } from 'date-fns/esm'
+ export default secondsToMilliseconds
+}
+
+declare module 'date-fns/esm/secondsToMinutes/index.js' {
+ import { secondsToMinutes } from 'date-fns/esm'
+ export default secondsToMinutes
+}
+
+declare module 'date-fns/esm/set/index.js' {
+ import { set } from 'date-fns/esm'
+ export default set
+}
+
+declare module 'date-fns/esm/setDate/index.js' {
+ import { setDate } from 'date-fns/esm'
+ export default setDate
+}
+
+declare module 'date-fns/esm/setDay/index.js' {
+ import { setDay } from 'date-fns/esm'
+ export default setDay
+}
+
+declare module 'date-fns/esm/setDayOfYear/index.js' {
+ import { setDayOfYear } from 'date-fns/esm'
+ export default setDayOfYear
+}
+
+declare module 'date-fns/esm/setHours/index.js' {
+ import { setHours } from 'date-fns/esm'
+ export default setHours
+}
+
+declare module 'date-fns/esm/setISODay/index.js' {
+ import { setISODay } from 'date-fns/esm'
+ export default setISODay
+}
+
+declare module 'date-fns/esm/setISOWeek/index.js' {
+ import { setISOWeek } from 'date-fns/esm'
+ export default setISOWeek
+}
+
+declare module 'date-fns/esm/setISOWeekYear/index.js' {
+ import { setISOWeekYear } from 'date-fns/esm'
+ export default setISOWeekYear
+}
+
+declare module 'date-fns/esm/setMilliseconds/index.js' {
+ import { setMilliseconds } from 'date-fns/esm'
+ export default setMilliseconds
+}
+
+declare module 'date-fns/esm/setMinutes/index.js' {
+ import { setMinutes } from 'date-fns/esm'
+ export default setMinutes
+}
+
+declare module 'date-fns/esm/setMonth/index.js' {
+ import { setMonth } from 'date-fns/esm'
+ export default setMonth
+}
+
+declare module 'date-fns/esm/setQuarter/index.js' {
+ import { setQuarter } from 'date-fns/esm'
+ export default setQuarter
+}
+
+declare module 'date-fns/esm/setSeconds/index.js' {
+ import { setSeconds } from 'date-fns/esm'
+ export default setSeconds
+}
+
+declare module 'date-fns/esm/setWeek/index.js' {
+ import { setWeek } from 'date-fns/esm'
+ export default setWeek
+}
+
+declare module 'date-fns/esm/setWeekYear/index.js' {
+ import { setWeekYear } from 'date-fns/esm'
+ export default setWeekYear
+}
+
+declare module 'date-fns/esm/setYear/index.js' {
+ import { setYear } from 'date-fns/esm'
+ export default setYear
+}
+
+declare module 'date-fns/esm/startOfDay/index.js' {
+ import { startOfDay } from 'date-fns/esm'
+ export default startOfDay
+}
+
+declare module 'date-fns/esm/startOfDecade/index.js' {
+ import { startOfDecade } from 'date-fns/esm'
+ export default startOfDecade
+}
+
+declare module 'date-fns/esm/startOfHour/index.js' {
+ import { startOfHour } from 'date-fns/esm'
+ export default startOfHour
+}
+
+declare module 'date-fns/esm/startOfISOWeek/index.js' {
+ import { startOfISOWeek } from 'date-fns/esm'
+ export default startOfISOWeek
+}
+
+declare module 'date-fns/esm/startOfISOWeekYear/index.js' {
+ import { startOfISOWeekYear } from 'date-fns/esm'
+ export default startOfISOWeekYear
+}
+
+declare module 'date-fns/esm/startOfMinute/index.js' {
+ import { startOfMinute } from 'date-fns/esm'
+ export default startOfMinute
+}
+
+declare module 'date-fns/esm/startOfMonth/index.js' {
+ import { startOfMonth } from 'date-fns/esm'
+ export default startOfMonth
+}
+
+declare module 'date-fns/esm/startOfQuarter/index.js' {
+ import { startOfQuarter } from 'date-fns/esm'
+ export default startOfQuarter
+}
+
+declare module 'date-fns/esm/startOfSecond/index.js' {
+ import { startOfSecond } from 'date-fns/esm'
+ export default startOfSecond
+}
+
+declare module 'date-fns/esm/startOfToday/index.js' {
+ import { startOfToday } from 'date-fns/esm'
+ export default startOfToday
+}
+
+declare module 'date-fns/esm/startOfTomorrow/index.js' {
+ import { startOfTomorrow } from 'date-fns/esm'
+ export default startOfTomorrow
+}
+
+declare module 'date-fns/esm/startOfWeek/index.js' {
+ import { startOfWeek } from 'date-fns/esm'
+ export default startOfWeek
+}
+
+declare module 'date-fns/esm/startOfWeekYear/index.js' {
+ import { startOfWeekYear } from 'date-fns/esm'
+ export default startOfWeekYear
+}
+
+declare module 'date-fns/esm/startOfYear/index.js' {
+ import { startOfYear } from 'date-fns/esm'
+ export default startOfYear
+}
+
+declare module 'date-fns/esm/startOfYesterday/index.js' {
+ import { startOfYesterday } from 'date-fns/esm'
+ export default startOfYesterday
+}
+
+declare module 'date-fns/esm/sub/index.js' {
+ import { sub } from 'date-fns/esm'
+ export default sub
+}
+
+declare module 'date-fns/esm/subBusinessDays/index.js' {
+ import { subBusinessDays } from 'date-fns/esm'
+ export default subBusinessDays
+}
+
+declare module 'date-fns/esm/subDays/index.js' {
+ import { subDays } from 'date-fns/esm'
+ export default subDays
+}
+
+declare module 'date-fns/esm/subHours/index.js' {
+ import { subHours } from 'date-fns/esm'
+ export default subHours
+}
+
+declare module 'date-fns/esm/subISOWeekYears/index.js' {
+ import { subISOWeekYears } from 'date-fns/esm'
+ export default subISOWeekYears
+}
+
+declare module 'date-fns/esm/subMilliseconds/index.js' {
+ import { subMilliseconds } from 'date-fns/esm'
+ export default subMilliseconds
+}
+
+declare module 'date-fns/esm/subMinutes/index.js' {
+ import { subMinutes } from 'date-fns/esm'
+ export default subMinutes
+}
+
+declare module 'date-fns/esm/subMonths/index.js' {
+ import { subMonths } from 'date-fns/esm'
+ export default subMonths
+}
+
+declare module 'date-fns/esm/subQuarters/index.js' {
+ import { subQuarters } from 'date-fns/esm'
+ export default subQuarters
+}
+
+declare module 'date-fns/esm/subSeconds/index.js' {
+ import { subSeconds } from 'date-fns/esm'
+ export default subSeconds
+}
+
+declare module 'date-fns/esm/subWeeks/index.js' {
+ import { subWeeks } from 'date-fns/esm'
+ export default subWeeks
+}
+
+declare module 'date-fns/esm/subYears/index.js' {
+ import { subYears } from 'date-fns/esm'
+ export default subYears
+}
+
+declare module 'date-fns/esm/toDate/index.js' {
+ import { toDate } from 'date-fns/esm'
+ export default toDate
+}
+
+declare module 'date-fns/esm/weeksToDays/index.js' {
+ import { weeksToDays } from 'date-fns/esm'
+ export default weeksToDays
+}
+
+declare module 'date-fns/esm/yearsToMonths/index.js' {
+ import { yearsToMonths } from 'date-fns/esm'
+ export default yearsToMonths
+}
+
+declare module 'date-fns/esm/yearsToQuarters/index.js' {
+ import { yearsToQuarters } from 'date-fns/esm'
+ export default yearsToQuarters
+}
+
+// ECMAScript Module FP Functions
+
+declare module 'date-fns/esm/fp' {
+ const add: CurriedFn2<Duration, Date | number, Date>
+ namespace add {}
+
+ const addBusinessDays: CurriedFn2<number, Date | number, Date>
+ namespace addBusinessDays {}
+
+ const addDays: CurriedFn2<number, Date | number, Date>
+ namespace addDays {}
+
+ const addHours: CurriedFn2<number, Date | number, Date>
+ namespace addHours {}
+
+ const addISOWeekYears: CurriedFn2<number, Date | number, Date>
+ namespace addISOWeekYears {}
+
+ const addMilliseconds: CurriedFn2<number, Date | number, Date>
+ namespace addMilliseconds {}
+
+ const addMinutes: CurriedFn2<number, Date | number, Date>
+ namespace addMinutes {}
+
+ const addMonths: CurriedFn2<number, Date | number, Date>
+ namespace addMonths {}
+
+ const addQuarters: CurriedFn2<number, Date | number, Date>
+ namespace addQuarters {}
+
+ const addSeconds: CurriedFn2<number, Date | number, Date>
+ namespace addSeconds {}
+
+ const addWeeks: CurriedFn2<number, Date | number, Date>
+ namespace addWeeks {}
+
+ const addYears: CurriedFn2<number, Date | number, Date>
+ namespace addYears {}
+
+ const areIntervalsOverlapping: CurriedFn2<Interval, Interval, boolean>
+ namespace areIntervalsOverlapping {}
+
+ const areIntervalsOverlappingWithOptions: CurriedFn3<
+ {
+ inclusive?: boolean
+ },
+ Interval,
+ Interval,
+ boolean
+ >
+ namespace areIntervalsOverlappingWithOptions {}
+
+ const closestIndexTo: CurriedFn2<(Date | number)[], Date | number, number>
+ namespace closestIndexTo {}
+
+ const closestTo: CurriedFn2<(Date | number)[], Date | number, Date>
+ namespace closestTo {}
+
+ const compareAsc: CurriedFn2<Date | number, Date | number, number>
+ namespace compareAsc {}
+
+ const compareDesc: CurriedFn2<Date | number, Date | number, number>
+ namespace compareDesc {}
+
+ const daysToWeeks: CurriedFn1<number, number>
+ namespace daysToWeeks {}
+
+ const differenceInBusinessDays: CurriedFn2<
+ Date | number,
+ Date | number,
+ number
+ >
+ namespace differenceInBusinessDays {}
+
+ const differenceInCalendarDays: CurriedFn2<
+ Date | number,
+ Date | number,
+ number
+ >
+ namespace differenceInCalendarDays {}
+
+ const differenceInCalendarISOWeeks: CurriedFn2<
+ Date | number,
+ Date | number,
+ number
+ >
+ namespace differenceInCalendarISOWeeks {}
+
+ const differenceInCalendarISOWeekYears: CurriedFn2<
+ Date | number,
+ Date | number,
+ number
+ >
+ namespace differenceInCalendarISOWeekYears {}
+
+ const differenceInCalendarMonths: CurriedFn2<
+ Date | number,
+ Date | number,
+ number
+ >
+ namespace differenceInCalendarMonths {}
+
+ const differenceInCalendarQuarters: CurriedFn2<
+ Date | number,
+ Date | number,
+ number
+ >
+ namespace differenceInCalendarQuarters {}
+
+ const differenceInCalendarWeeks: CurriedFn2<
+ Date | number,
+ Date | number,
+ number
+ >
+ namespace differenceInCalendarWeeks {}
+
+ const differenceInCalendarWeeksWithOptions: CurriedFn3<
+ {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6
+ locale?: Locale
+ },
+ Date | number,
+ Date | number,
+ number
+ >
+ namespace differenceInCalendarWeeksWithOptions {}
+
+ const differenceInCalendarYears: CurriedFn2<
+ Date | number,
+ Date | number,
+ number
+ >
+ namespace differenceInCalendarYears {}
+
+ const differenceInDays: CurriedFn2<Date | number, Date | number, number>
+ namespace differenceInDays {}
+
+ const differenceInHours: CurriedFn2<Date | number, Date | number, number>
+ namespace differenceInHours {}
+
+ const differenceInISOWeekYears: CurriedFn2<
+ Date | number,
+ Date | number,
+ number
+ >
+ namespace differenceInISOWeekYears {}
+
+ const differenceInMilliseconds: CurriedFn2<
+ Date | number,
+ Date | number,
+ number
+ >
+ namespace differenceInMilliseconds {}
+
+ const differenceInMinutes: CurriedFn2<Date | number, Date | number, number>
+ namespace differenceInMinutes {}
+
+ const differenceInMonths: CurriedFn2<Date | number, Date | number, number>
+ namespace differenceInMonths {}
+
+ const differenceInQuarters: CurriedFn2<Date | number, Date | number, number>
+ namespace differenceInQuarters {}
+
+ const differenceInSeconds: CurriedFn2<Date | number, Date | number, number>
+ namespace differenceInSeconds {}
+
+ const differenceInWeeks: CurriedFn2<Date | number, Date | number, number>
+ namespace differenceInWeeks {}
+
+ const differenceInYears: CurriedFn2<Date | number, Date | number, number>
+ namespace differenceInYears {}
+
+ const eachDayOfInterval: CurriedFn1<Interval, Date[]>
+ namespace eachDayOfInterval {}
+
+ const eachDayOfIntervalWithOptions: CurriedFn2<
+ {
+ step?: number
+ },
+ Interval,
+ Date[]
+ >
+ namespace eachDayOfIntervalWithOptions {}
+
+ const eachHourOfInterval: CurriedFn1<Interval, Date[]>
+ namespace eachHourOfInterval {}
+
+ const eachHourOfIntervalWithOptions: CurriedFn2<
+ {
+ step?: number
+ },
+ Interval,
+ Date[]
+ >
+ namespace eachHourOfIntervalWithOptions {}
+
+ const eachMinuteOfInterval: CurriedFn1<Interval, Date[]>
+ namespace eachMinuteOfInterval {}
+
+ const eachMinuteOfIntervalWithOptions: CurriedFn2<
+ {
+ step?: number
+ },
+ Interval,
+ Date[]
+ >
+ namespace eachMinuteOfIntervalWithOptions {}
+
+ const eachMonthOfInterval: CurriedFn1<Interval, Date[]>
+ namespace eachMonthOfInterval {}
+
+ const eachQuarterOfInterval: CurriedFn1<Interval, Date[]>
+ namespace eachQuarterOfInterval {}
+
+ const eachWeekendOfInterval: CurriedFn1<Interval, Date[]>
+ namespace eachWeekendOfInterval {}
+
+ const eachWeekendOfMonth: CurriedFn1<Date | number, Date[]>
+ namespace eachWeekendOfMonth {}
+
+ const eachWeekendOfYear: CurriedFn1<Date | number, Date[]>
+ namespace eachWeekendOfYear {}
+
+ const eachWeekOfInterval: CurriedFn1<Interval, Date[]>
+ namespace eachWeekOfInterval {}
+
+ const eachWeekOfIntervalWithOptions: CurriedFn2<
+ {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6
+ locale?: Locale
+ },
+ Interval,
+ Date[]
+ >
+ namespace eachWeekOfIntervalWithOptions {}
+
+ const eachYearOfInterval: CurriedFn1<Interval, Date[]>
+ namespace eachYearOfInterval {}
+
+ const endOfDay: CurriedFn1<Date | number, Date>
+ namespace endOfDay {}
+
+ const endOfDecade: CurriedFn1<Date | number, Date>
+ namespace endOfDecade {}
+
+ const endOfDecadeWithOptions: CurriedFn2<
+ {
+ additionalDigits?: 0 | 1 | 2
+ },
+ Date | number,
+ Date
+ >
+ namespace endOfDecadeWithOptions {}
+
+ const endOfHour: CurriedFn1<Date | number, Date>
+ namespace endOfHour {}
+
+ const endOfISOWeek: CurriedFn1<Date | number, Date>
+ namespace endOfISOWeek {}
+
+ const endOfISOWeekYear: CurriedFn1<Date | number, Date>
+ namespace endOfISOWeekYear {}
+
+ const endOfMinute: CurriedFn1<Date | number, Date>
+ namespace endOfMinute {}
+
+ const endOfMonth: CurriedFn1<Date | number, Date>
+ namespace endOfMonth {}
+
+ const endOfQuarter: CurriedFn1<Date | number, Date>
+ namespace endOfQuarter {}
+
+ const endOfSecond: CurriedFn1<Date | number, Date>
+ namespace endOfSecond {}
+
+ const endOfWeek: CurriedFn1<Date | number, Date>
+ namespace endOfWeek {}
+
+ const endOfWeekWithOptions: CurriedFn2<
+ {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6
+ locale?: Locale
+ },
+ Date | number,
+ Date
+ >
+ namespace endOfWeekWithOptions {}
+
+ const endOfYear: CurriedFn1<Date | number, Date>
+ namespace endOfYear {}
+
+ const format: CurriedFn2<string, Date | number, string>
+ namespace format {}
+
+ const formatDistance: CurriedFn2<Date | number, Date | number, string>
+ namespace formatDistance {}
+
+ const formatDistanceStrict: CurriedFn2<Date | number, Date | number, string>
+ namespace formatDistanceStrict {}
+
+ const formatDistanceStrictWithOptions: CurriedFn3<
+ {
+ locale?: Locale
+ roundingMethod?: 'floor' | 'ceil' | 'round'
+ unit?: 'second' | 'minute' | 'hour' | 'day' | 'month' | 'year'
+ addSuffix?: boolean
+ },
+ Date | number,
+ Date | number,
+ string
+ >
+ namespace formatDistanceStrictWithOptions {}
+
+ const formatDistanceWithOptions: CurriedFn3<
+ {
+ locale?: Locale
+ addSuffix?: boolean
+ includeSeconds?: boolean
+ },
+ Date | number,
+ Date | number,
+ string
+ >
+ namespace formatDistanceWithOptions {}
+
+ const formatDuration: CurriedFn1<Duration, string>
+ namespace formatDuration {}
+
+ const formatDurationWithOptions: CurriedFn2<
+ {
+ locale?: Locale
+ delimiter?: string
+ zero?: boolean
+ format?: string[]
+ },
+ Duration,
+ string
+ >
+ namespace formatDurationWithOptions {}
+
+ const formatISO: CurriedFn1<Date | number, string>
+ namespace formatISO {}
+
+ const formatISO9075: CurriedFn1<Date | number, string>
+ namespace formatISO9075 {}
+
+ const formatISO9075WithOptions: CurriedFn2<
+ {
+ representation?: 'complete' | 'date' | 'time'
+ format?: 'extended' | 'basic'
+ },
+ Date | number,
+ string
+ >
+ namespace formatISO9075WithOptions {}
+
+ const formatISODuration: CurriedFn1<Duration, string>
+ namespace formatISODuration {}
+
+ const formatISOWithOptions: CurriedFn2<
+ {
+ representation?: 'complete' | 'date' | 'time'
+ format?: 'extended' | 'basic'
+ },
+ Date | number,
+ string
+ >
+ namespace formatISOWithOptions {}
+
+ const formatRelative: CurriedFn2<Date | number, Date | number, string>
+ namespace formatRelative {}
+
+ const formatRelativeWithOptions: CurriedFn3<
+ {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6
+ locale?: Locale
+ },
+ Date | number,
+ Date | number,
+ string
+ >
+ namespace formatRelativeWithOptions {}
+
+ const formatRFC3339: CurriedFn1<Date | number, string>
+ namespace formatRFC3339 {}
+
+ const formatRFC3339WithOptions: CurriedFn2<
+ {
+ fractionDigits?: 0 | 1 | 2 | 3
+ },
+ Date | number,
+ string
+ >
+ namespace formatRFC3339WithOptions {}
+
+ const formatRFC7231: CurriedFn1<Date | number, string>
+ namespace formatRFC7231 {}
+
+ const formatWithOptions: CurriedFn3<
+ {
+ useAdditionalDayOfYearTokens?: boolean
+ useAdditionalWeekYearTokens?: boolean
+ firstWeekContainsDate?: number
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6
+ locale?: Locale
+ },
+ string,
+ Date | number,
+ string
+ >
+ namespace formatWithOptions {}
+
+ const fromUnixTime: CurriedFn1<number, Date>
+ namespace fromUnixTime {}
+
+ const getDate: CurriedFn1<Date | number, number>
+ namespace getDate {}
+
+ const getDay: CurriedFn1<Date | number, 0 | 1 | 2 | 3 | 4 | 5 | 6>
+ namespace getDay {}
+
+ const getDayOfYear: CurriedFn1<Date | number, number>
+ namespace getDayOfYear {}
+
+ const getDaysInMonth: CurriedFn1<Date | number, number>
+ namespace getDaysInMonth {}
+
+ const getDaysInYear: CurriedFn1<Date | number, number>
+ namespace getDaysInYear {}
+
+ const getDecade: CurriedFn1<Date | number, number>
+ namespace getDecade {}
+
+ const getHours: CurriedFn1<Date | number, number>
+ namespace getHours {}
+
+ const getISODay: CurriedFn1<Date | number, number>
+ namespace getISODay {}
+
+ const getISOWeek: CurriedFn1<Date | number, number>
+ namespace getISOWeek {}
+
+ const getISOWeeksInYear: CurriedFn1<Date | number, number>
+ namespace getISOWeeksInYear {}
+
+ const getISOWeekYear: CurriedFn1<Date | number, number>
+ namespace getISOWeekYear {}
+
+ const getMilliseconds: CurriedFn1<Date | number, number>
+ namespace getMilliseconds {}
+
+ const getMinutes: CurriedFn1<Date | number, number>
+ namespace getMinutes {}
+
+ const getMonth: CurriedFn1<Date | number, number>
+ namespace getMonth {}
+
+ const getOverlappingDaysInIntervals: CurriedFn2<Interval, Interval, number>
+ namespace getOverlappingDaysInIntervals {}
+
+ const getQuarter: CurriedFn1<Date | number, number>
+ namespace getQuarter {}
+
+ const getSeconds: CurriedFn1<Date | number, number>
+ namespace getSeconds {}
+
+ const getTime: CurriedFn1<Date | number, number>
+ namespace getTime {}
+
+ const getUnixTime: CurriedFn1<Date | number, number>
+ namespace getUnixTime {}
+
+ const getWeek: CurriedFn1<Date | number, number>
+ namespace getWeek {}
+
+ const getWeekOfMonth: CurriedFn1<Date | number, number>
+ namespace getWeekOfMonth {}
+
+ const getWeekOfMonthWithOptions: CurriedFn2<
+ {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6
+ locale?: Locale
+ },
+ Date | number,
+ number
+ >
+ namespace getWeekOfMonthWithOptions {}
+
+ const getWeeksInMonth: CurriedFn1<Date | number, number>
+ namespace getWeeksInMonth {}
+
+ const getWeeksInMonthWithOptions: CurriedFn2<
+ {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6
+ locale?: Locale
+ },
+ Date | number,
+ number
+ >
+ namespace getWeeksInMonthWithOptions {}
+
+ const getWeekWithOptions: CurriedFn2<
+ {
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6
+ locale?: Locale
+ },
+ Date | number,
+ number
+ >
+ namespace getWeekWithOptions {}
+
+ const getWeekYear: CurriedFn1<Date | number, number>
+ namespace getWeekYear {}
+
+ const getWeekYearWithOptions: CurriedFn2<
+ {
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6
+ locale?: Locale
+ },
+ Date | number,
+ number
+ >
+ namespace getWeekYearWithOptions {}
+
+ const getYear: CurriedFn1<Date | number, number>
+ namespace getYear {}
+
+ const hoursToMilliseconds: CurriedFn1<number, number>
+ namespace hoursToMilliseconds {}
+
+ const hoursToMinutes: CurriedFn1<number, number>
+ namespace hoursToMinutes {}
+
+ const hoursToSeconds: CurriedFn1<number, number>
+ namespace hoursToSeconds {}
+
+ const intervalToDuration: CurriedFn1<Interval, Duration>
+ namespace intervalToDuration {}
+
+ const intlFormat: CurriedFn3<
+ {
+ locale?: string | string[]
+ },
+ {
+ timeZone?: string
+ hour12?: boolean
+ formatMatcher?: 'basic' | 'best fit'
+ timeZoneName?: 'short' | 'long'
+ second?: 'numeric' | '2-digit'
+ minute?: 'numeric' | '2-digit'
+ hour?: 'numeric' | '2-digit'
+ day?: 'numeric' | '2-digit'
+ month?: 'numeric' | '2-digit' | 'narrow' | 'short' | 'long'
+ year?: 'numeric' | '2-digit'
+ era?: 'narrow' | 'short' | 'long'
+ weekday?: 'narrow' | 'short' | 'long'
+ localeMatcher?: 'lookup' | 'best fit'
+ },
+ Date | number,
+ string
+ >
+ namespace intlFormat {}
+
+ const isAfter: CurriedFn2<Date | number, Date | number, boolean>
+ namespace isAfter {}
+
+ const isBefore: CurriedFn2<Date | number, Date | number, boolean>
+ namespace isBefore {}
+
+ const isDate: CurriedFn1<any, boolean>
+ namespace isDate {}
+
+ const isEqual: CurriedFn2<Date | number, Date | number, boolean>
+ namespace isEqual {}
+
+ const isExists: CurriedFn3<number, number, number, boolean>
+ namespace isExists {}
+
+ const isFirstDayOfMonth: CurriedFn1<Date | number, boolean>
+ namespace isFirstDayOfMonth {}
+
+ const isFriday: CurriedFn1<Date | number, boolean>
+ namespace isFriday {}
+
+ const isLastDayOfMonth: CurriedFn1<Date | number, boolean>
+ namespace isLastDayOfMonth {}
+
+ const isLeapYear: CurriedFn1<Date | number, boolean>
+ namespace isLeapYear {}
+
+ const isMatch: CurriedFn2<string, string, boolean>
+ namespace isMatch {}
+
+ const isMatchWithOptions: CurriedFn3<
+ {
+ useAdditionalDayOfYearTokens?: boolean
+ useAdditionalWeekYearTokens?: boolean
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6
+ locale?: Locale
+ },
+ string,
+ string,
+ boolean
+ >
+ namespace isMatchWithOptions {}
+
+ const isMonday: CurriedFn1<Date | number, boolean>
+ namespace isMonday {}
+
+ const isSameDay: CurriedFn2<Date | number, Date | number, boolean>
+ namespace isSameDay {}
+
+ const isSameHour: CurriedFn2<Date | number, Date | number, boolean>
+ namespace isSameHour {}
+
+ const isSameISOWeek: CurriedFn2<Date | number, Date | number, boolean>
+ namespace isSameISOWeek {}
+
+ const isSameISOWeekYear: CurriedFn2<Date | number, Date | number, boolean>
+ namespace isSameISOWeekYear {}
+
+ const isSameMinute: CurriedFn2<Date | number, Date | number, boolean>
+ namespace isSameMinute {}
+
+ const isSameMonth: CurriedFn2<Date | number, Date | number, boolean>
+ namespace isSameMonth {}
+
+ const isSameQuarter: CurriedFn2<Date | number, Date | number, boolean>
+ namespace isSameQuarter {}
+
+ const isSameSecond: CurriedFn2<Date | number, Date | number, boolean>
+ namespace isSameSecond {}
+
+ const isSameWeek: CurriedFn2<Date | number, Date | number, boolean>
+ namespace isSameWeek {}
+
+ const isSameWeekWithOptions: CurriedFn3<
+ {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6
+ locale?: Locale
+ },
+ Date | number,
+ Date | number,
+ boolean
+ >
+ namespace isSameWeekWithOptions {}
+
+ const isSameYear: CurriedFn2<Date | number, Date | number, boolean>
+ namespace isSameYear {}
+
+ const isSaturday: CurriedFn1<Date | number, boolean>
+ namespace isSaturday {}
+
+ const isSunday: CurriedFn1<Date | number, boolean>
+ namespace isSunday {}
+
+ const isThursday: CurriedFn1<Date | number, boolean>
+ namespace isThursday {}
+
+ const isTuesday: CurriedFn1<Date | number, boolean>
+ namespace isTuesday {}
+
+ const isValid: CurriedFn1<any, boolean>
+ namespace isValid {}
+
+ const isWednesday: CurriedFn1<Date | number, boolean>
+ namespace isWednesday {}
+
+ const isWeekend: CurriedFn1<Date | number, boolean>
+ namespace isWeekend {}
+
+ const isWithinInterval: CurriedFn2<Interval, Date | number, boolean>
+ namespace isWithinInterval {}
+
+ const lastDayOfDecade: CurriedFn1<Date | number, Date>
+ namespace lastDayOfDecade {}
+
+ const lastDayOfISOWeek: CurriedFn1<Date | number, Date>
+ namespace lastDayOfISOWeek {}
+
+ const lastDayOfISOWeekYear: CurriedFn1<Date | number, Date>
+ namespace lastDayOfISOWeekYear {}
+
+ const lastDayOfMonth: CurriedFn1<Date | number, Date>
+ namespace lastDayOfMonth {}
+
+ const lastDayOfQuarter: CurriedFn1<Date | number, Date>
+ namespace lastDayOfQuarter {}
+
+ const lastDayOfQuarterWithOptions: CurriedFn2<
+ {
+ additionalDigits?: 0 | 1 | 2
+ },
+ Date | number,
+ Date
+ >
+ namespace lastDayOfQuarterWithOptions {}
+
+ const lastDayOfWeek: CurriedFn1<Date | number, Date>
+ namespace lastDayOfWeek {}
+
+ const lastDayOfWeekWithOptions: CurriedFn2<
+ {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6
+ locale?: Locale
+ },
+ Date | number,
+ Date
+ >
+ namespace lastDayOfWeekWithOptions {}
+
+ const lastDayOfYear: CurriedFn1<Date | number, Date>
+ namespace lastDayOfYear {}
+
+ const lightFormat: CurriedFn2<string, Date | number, string>
+ namespace lightFormat {}
+
+ const max: CurriedFn1<(Date | number)[], Date>
+ namespace max {}
+
+ const milliseconds: CurriedFn1<Duration, number>
+ namespace milliseconds {}
+
+ const millisecondsToHours: CurriedFn1<number, number>
+ namespace millisecondsToHours {}
+
+ const millisecondsToMinutes: CurriedFn1<number, number>
+ namespace millisecondsToMinutes {}
+
+ const millisecondsToSeconds: CurriedFn1<number, number>
+ namespace millisecondsToSeconds {}
+
+ const min: CurriedFn1<(Date | number)[], Date>
+ namespace min {}
+
+ const minutesToHours: CurriedFn1<number, number>
+ namespace minutesToHours {}
+
+ const minutesToMilliseconds: CurriedFn1<number, number>
+ namespace minutesToMilliseconds {}
+
+ const minutesToSeconds: CurriedFn1<number, number>
+ namespace minutesToSeconds {}
+
+ const monthsToQuarters: CurriedFn1<number, number>
+ namespace monthsToQuarters {}
+
+ const monthsToYears: CurriedFn1<number, number>
+ namespace monthsToYears {}
+
+ const nextDay: CurriedFn2<Day, Date | number, Date>
+ namespace nextDay {}
+
+ const nextFriday: CurriedFn1<Date | number, Date>
+ namespace nextFriday {}
+
+ const nextMonday: CurriedFn1<Date | number, Date>
+ namespace nextMonday {}
+
+ const nextSaturday: CurriedFn1<Date | number, Date>
+ namespace nextSaturday {}
+
+ const nextSunday: CurriedFn1<Date | number, Date>
+ namespace nextSunday {}
+
+ const nextThursday: CurriedFn1<Date | number, Date>
+ namespace nextThursday {}
+
+ const nextTuesday: CurriedFn1<Date | number, Date>
+ namespace nextTuesday {}
+
+ const nextWednesday: CurriedFn1<Date | number, Date>
+ namespace nextWednesday {}
+
+ const parse: CurriedFn3<Date | number, string, string, Date>
+ namespace parse {}
+
+ const parseISO: CurriedFn1<string, Date>
+ namespace parseISO {}
+
+ const parseISOWithOptions: CurriedFn2<
+ {
+ additionalDigits?: 0 | 1 | 2
+ },
+ string,
+ Date
+ >
+ namespace parseISOWithOptions {}
+
+ const parseJSON: CurriedFn1<string | number | Date, Date>
+ namespace parseJSON {}
+
+ const parseWithOptions: CurriedFn4<
+ {
+ useAdditionalDayOfYearTokens?: boolean
+ useAdditionalWeekYearTokens?: boolean
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6
+ locale?: Locale
+ },
+ Date | number,
+ string,
+ string,
+ Date
+ >
+ namespace parseWithOptions {}
+
+ const quartersToMonths: CurriedFn1<number, number>
+ namespace quartersToMonths {}
+
+ const quartersToYears: CurriedFn1<number, number>
+ namespace quartersToYears {}
+
+ const roundToNearestMinutes: CurriedFn1<Date | number, Date>
+ namespace roundToNearestMinutes {}
+
+ const roundToNearestMinutesWithOptions: CurriedFn2<
+ {
+ nearestTo?: number
+ },
+ Date | number,
+ Date
+ >
+ namespace roundToNearestMinutesWithOptions {}
+
+ const secondsToHours: CurriedFn1<number, number>
+ namespace secondsToHours {}
+
+ const secondsToMilliseconds: CurriedFn1<number, number>
+ namespace secondsToMilliseconds {}
+
+ const secondsToMinutes: CurriedFn1<number, number>
+ namespace secondsToMinutes {}
+
+ const set: CurriedFn2<
+ {
+ milliseconds?: number
+ seconds?: number
+ minutes?: number
+ hours?: number
+ date?: number
+ month?: number
+ year?: number
+ },
+ Date | number,
+ Date
+ >
+ namespace set {}
+
+ const setDate: CurriedFn2<number, Date | number, Date>
+ namespace setDate {}
+
+ const setDay: CurriedFn2<number, Date | number, Date>
+ namespace setDay {}
+
+ const setDayOfYear: CurriedFn2<number, Date | number, Date>
+ namespace setDayOfYear {}
+
+ const setDayWithOptions: CurriedFn3<
+ {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6
+ locale?: Locale
+ },
+ number,
+ Date | number,
+ Date
+ >
+ namespace setDayWithOptions {}
+
+ const setHours: CurriedFn2<number, Date | number, Date>
+ namespace setHours {}
+
+ const setISODay: CurriedFn2<number, Date | number, Date>
+ namespace setISODay {}
+
+ const setISOWeek: CurriedFn2<number, Date | number, Date>
+ namespace setISOWeek {}
+
+ const setISOWeekYear: CurriedFn2<number, Date | number, Date>
+ namespace setISOWeekYear {}
+
+ const setMilliseconds: CurriedFn2<number, Date | number, Date>
+ namespace setMilliseconds {}
+
+ const setMinutes: CurriedFn2<number, Date | number, Date>
+ namespace setMinutes {}
+
+ const setMonth: CurriedFn2<number, Date | number, Date>
+ namespace setMonth {}
+
+ const setQuarter: CurriedFn2<number, Date | number, Date>
+ namespace setQuarter {}
+
+ const setSeconds: CurriedFn2<number, Date | number, Date>
+ namespace setSeconds {}
+
+ const setWeek: CurriedFn2<number, Date | number, Date>
+ namespace setWeek {}
+
+ const setWeekWithOptions: CurriedFn3<
+ {
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6
+ locale?: Locale
+ },
+ number,
+ Date | number,
+ Date
+ >
+ namespace setWeekWithOptions {}
+
+ const setWeekYear: CurriedFn2<number, Date | number, Date>
+ namespace setWeekYear {}
+
+ const setWeekYearWithOptions: CurriedFn3<
+ {
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6
+ locale?: Locale
+ },
+ number,
+ Date | number,
+ Date
+ >
+ namespace setWeekYearWithOptions {}
+
+ const setYear: CurriedFn2<number, Date | number, Date>
+ namespace setYear {}
+
+ const startOfDay: CurriedFn1<Date | number, Date>
+ namespace startOfDay {}
+
+ const startOfDecade: CurriedFn1<Date | number, Date>
+ namespace startOfDecade {}
+
+ const startOfHour: CurriedFn1<Date | number, Date>
+ namespace startOfHour {}
+
+ const startOfISOWeek: CurriedFn1<Date | number, Date>
+ namespace startOfISOWeek {}
+
+ const startOfISOWeekYear: CurriedFn1<Date | number, Date>
+ namespace startOfISOWeekYear {}
+
+ const startOfMinute: CurriedFn1<Date | number, Date>
+ namespace startOfMinute {}
+
+ const startOfMonth: CurriedFn1<Date | number, Date>
+ namespace startOfMonth {}
+
+ const startOfQuarter: CurriedFn1<Date | number, Date>
+ namespace startOfQuarter {}
+
+ const startOfSecond: CurriedFn1<Date | number, Date>
+ namespace startOfSecond {}
+
+ const startOfWeek: CurriedFn1<Date | number, Date>
+ namespace startOfWeek {}
+
+ const startOfWeekWithOptions: CurriedFn2<
+ {
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6
+ locale?: Locale
+ },
+ Date | number,
+ Date
+ >
+ namespace startOfWeekWithOptions {}
+
+ const startOfWeekYear: CurriedFn1<Date | number, Date>
+ namespace startOfWeekYear {}
+
+ const startOfWeekYearWithOptions: CurriedFn2<
+ {
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6
+ locale?: Locale
+ },
+ Date | number,
+ Date
+ >
+ namespace startOfWeekYearWithOptions {}
+
+ const startOfYear: CurriedFn1<Date | number, Date>
+ namespace startOfYear {}
+
+ const sub: CurriedFn2<Duration, Date | number, Date>
+ namespace sub {}
+
+ const subBusinessDays: CurriedFn2<number, Date | number, Date>
+ namespace subBusinessDays {}
+
+ const subDays: CurriedFn2<number, Date | number, Date>
+ namespace subDays {}
+
+ const subHours: CurriedFn2<number, Date | number, Date>
+ namespace subHours {}
+
+ const subISOWeekYears: CurriedFn2<number, Date | number, Date>
+ namespace subISOWeekYears {}
+
+ const subMilliseconds: CurriedFn2<number, Date | number, Date>
+ namespace subMilliseconds {}
+
+ const subMinutes: CurriedFn2<number, Date | number, Date>
+ namespace subMinutes {}
+
+ const subMonths: CurriedFn2<number, Date | number, Date>
+ namespace subMonths {}
+
+ const subQuarters: CurriedFn2<number, Date | number, Date>
+ namespace subQuarters {}
+
+ const subSeconds: CurriedFn2<number, Date | number, Date>
+ namespace subSeconds {}
+
+ const subWeeks: CurriedFn2<number, Date | number, Date>
+ namespace subWeeks {}
+
+ const subYears: CurriedFn2<number, Date | number, Date>
+ namespace subYears {}
+
+ const toDate: CurriedFn1<Date | number, Date>
+ namespace toDate {}
+
+ const weeksToDays: CurriedFn1<number, number>
+ namespace weeksToDays {}
+
+ const yearsToMonths: CurriedFn1<number, number>
+ namespace yearsToMonths {}
+
+ const yearsToQuarters: CurriedFn1<number, number>
+ namespace yearsToQuarters {}
+
+ const daysInWeek: number
+
+ const maxTime: number
+
+ const millisecondsInMinute: number
+
+ const millisecondsInHour: number
+
+ const millisecondsInSecond: number
+
+ const minTime: number
+
+ const minutesInHour: number
+
+ const monthsInQuarter: number
+
+ const monthsInYear: number
+
+ const quartersInYear: number
+
+ const secondsInHour: number
+
+ const secondsInMinute: number
+}
+
+declare module 'date-fns/esm/fp/add' {
+ import { add } from 'date-fns/esm/fp'
+ export default add
+}
+
+declare module 'date-fns/esm/fp/addBusinessDays' {
+ import { addBusinessDays } from 'date-fns/esm/fp'
+ export default addBusinessDays
+}
+
+declare module 'date-fns/esm/fp/addDays' {
+ import { addDays } from 'date-fns/esm/fp'
+ export default addDays
+}
+
+declare module 'date-fns/esm/fp/addHours' {
+ import { addHours } from 'date-fns/esm/fp'
+ export default addHours
+}
+
+declare module 'date-fns/esm/fp/addISOWeekYears' {
+ import { addISOWeekYears } from 'date-fns/esm/fp'
+ export default addISOWeekYears
+}
+
+declare module 'date-fns/esm/fp/addMilliseconds' {
+ import { addMilliseconds } from 'date-fns/esm/fp'
+ export default addMilliseconds
+}
+
+declare module 'date-fns/esm/fp/addMinutes' {
+ import { addMinutes } from 'date-fns/esm/fp'
+ export default addMinutes
+}
+
+declare module 'date-fns/esm/fp/addMonths' {
+ import { addMonths } from 'date-fns/esm/fp'
+ export default addMonths
+}
+
+declare module 'date-fns/esm/fp/addQuarters' {
+ import { addQuarters } from 'date-fns/esm/fp'
+ export default addQuarters
+}
+
+declare module 'date-fns/esm/fp/addSeconds' {
+ import { addSeconds } from 'date-fns/esm/fp'
+ export default addSeconds
+}
+
+declare module 'date-fns/esm/fp/addWeeks' {
+ import { addWeeks } from 'date-fns/esm/fp'
+ export default addWeeks
+}
+
+declare module 'date-fns/esm/fp/addYears' {
+ import { addYears } from 'date-fns/esm/fp'
+ export default addYears
+}
+
+declare module 'date-fns/esm/fp/areIntervalsOverlapping' {
+ import { areIntervalsOverlapping } from 'date-fns/esm/fp'
+ export default areIntervalsOverlapping
+}
+
+declare module 'date-fns/esm/fp/areIntervalsOverlappingWithOptions' {
+ import { areIntervalsOverlappingWithOptions } from 'date-fns/esm/fp'
+ export default areIntervalsOverlappingWithOptions
+}
+
+declare module 'date-fns/esm/fp/closestIndexTo' {
+ import { closestIndexTo } from 'date-fns/esm/fp'
+ export default closestIndexTo
+}
+
+declare module 'date-fns/esm/fp/closestTo' {
+ import { closestTo } from 'date-fns/esm/fp'
+ export default closestTo
+}
+
+declare module 'date-fns/esm/fp/compareAsc' {
+ import { compareAsc } from 'date-fns/esm/fp'
+ export default compareAsc
+}
+
+declare module 'date-fns/esm/fp/compareDesc' {
+ import { compareDesc } from 'date-fns/esm/fp'
+ export default compareDesc
+}
+
+declare module 'date-fns/esm/fp/daysToWeeks' {
+ import { daysToWeeks } from 'date-fns/esm/fp'
+ export default daysToWeeks
+}
+
+declare module 'date-fns/esm/fp/differenceInBusinessDays' {
+ import { differenceInBusinessDays } from 'date-fns/esm/fp'
+ export default differenceInBusinessDays
+}
+
+declare module 'date-fns/esm/fp/differenceInCalendarDays' {
+ import { differenceInCalendarDays } from 'date-fns/esm/fp'
+ export default differenceInCalendarDays
+}
+
+declare module 'date-fns/esm/fp/differenceInCalendarISOWeeks' {
+ import { differenceInCalendarISOWeeks } from 'date-fns/esm/fp'
+ export default differenceInCalendarISOWeeks
+}
+
+declare module 'date-fns/esm/fp/differenceInCalendarISOWeekYears' {
+ import { differenceInCalendarISOWeekYears } from 'date-fns/esm/fp'
+ export default differenceInCalendarISOWeekYears
+}
+
+declare module 'date-fns/esm/fp/differenceInCalendarMonths' {
+ import { differenceInCalendarMonths } from 'date-fns/esm/fp'
+ export default differenceInCalendarMonths
+}
+
+declare module 'date-fns/esm/fp/differenceInCalendarQuarters' {
+ import { differenceInCalendarQuarters } from 'date-fns/esm/fp'
+ export default differenceInCalendarQuarters
+}
+
+declare module 'date-fns/esm/fp/differenceInCalendarWeeks' {
+ import { differenceInCalendarWeeks } from 'date-fns/esm/fp'
+ export default differenceInCalendarWeeks
+}
+
+declare module 'date-fns/esm/fp/differenceInCalendarWeeksWithOptions' {
+ import { differenceInCalendarWeeksWithOptions } from 'date-fns/esm/fp'
+ export default differenceInCalendarWeeksWithOptions
+}
+
+declare module 'date-fns/esm/fp/differenceInCalendarYears' {
+ import { differenceInCalendarYears } from 'date-fns/esm/fp'
+ export default differenceInCalendarYears
+}
+
+declare module 'date-fns/esm/fp/differenceInDays' {
+ import { differenceInDays } from 'date-fns/esm/fp'
+ export default differenceInDays
+}
+
+declare module 'date-fns/esm/fp/differenceInHours' {
+ import { differenceInHours } from 'date-fns/esm/fp'
+ export default differenceInHours
+}
+
+declare module 'date-fns/esm/fp/differenceInISOWeekYears' {
+ import { differenceInISOWeekYears } from 'date-fns/esm/fp'
+ export default differenceInISOWeekYears
+}
+
+declare module 'date-fns/esm/fp/differenceInMilliseconds' {
+ import { differenceInMilliseconds } from 'date-fns/esm/fp'
+ export default differenceInMilliseconds
+}
+
+declare module 'date-fns/esm/fp/differenceInMinutes' {
+ import { differenceInMinutes } from 'date-fns/esm/fp'
+ export default differenceInMinutes
+}
+
+declare module 'date-fns/esm/fp/differenceInMonths' {
+ import { differenceInMonths } from 'date-fns/esm/fp'
+ export default differenceInMonths
+}
+
+declare module 'date-fns/esm/fp/differenceInQuarters' {
+ import { differenceInQuarters } from 'date-fns/esm/fp'
+ export default differenceInQuarters
+}
+
+declare module 'date-fns/esm/fp/differenceInSeconds' {
+ import { differenceInSeconds } from 'date-fns/esm/fp'
+ export default differenceInSeconds
+}
+
+declare module 'date-fns/esm/fp/differenceInWeeks' {
+ import { differenceInWeeks } from 'date-fns/esm/fp'
+ export default differenceInWeeks
+}
+
+declare module 'date-fns/esm/fp/differenceInYears' {
+ import { differenceInYears } from 'date-fns/esm/fp'
+ export default differenceInYears
+}
+
+declare module 'date-fns/esm/fp/eachDayOfInterval' {
+ import { eachDayOfInterval } from 'date-fns/esm/fp'
+ export default eachDayOfInterval
+}
+
+declare module 'date-fns/esm/fp/eachDayOfIntervalWithOptions' {
+ import { eachDayOfIntervalWithOptions } from 'date-fns/esm/fp'
+ export default eachDayOfIntervalWithOptions
+}
+
+declare module 'date-fns/esm/fp/eachHourOfInterval' {
+ import { eachHourOfInterval } from 'date-fns/esm/fp'
+ export default eachHourOfInterval
+}
+
+declare module 'date-fns/esm/fp/eachHourOfIntervalWithOptions' {
+ import { eachHourOfIntervalWithOptions } from 'date-fns/esm/fp'
+ export default eachHourOfIntervalWithOptions
+}
+
+declare module 'date-fns/esm/fp/eachMinuteOfInterval' {
+ import { eachMinuteOfInterval } from 'date-fns/esm/fp'
+ export default eachMinuteOfInterval
+}
+
+declare module 'date-fns/esm/fp/eachMinuteOfIntervalWithOptions' {
+ import { eachMinuteOfIntervalWithOptions } from 'date-fns/esm/fp'
+ export default eachMinuteOfIntervalWithOptions
+}
+
+declare module 'date-fns/esm/fp/eachMonthOfInterval' {
+ import { eachMonthOfInterval } from 'date-fns/esm/fp'
+ export default eachMonthOfInterval
+}
+
+declare module 'date-fns/esm/fp/eachQuarterOfInterval' {
+ import { eachQuarterOfInterval } from 'date-fns/esm/fp'
+ export default eachQuarterOfInterval
+}
+
+declare module 'date-fns/esm/fp/eachWeekendOfInterval' {
+ import { eachWeekendOfInterval } from 'date-fns/esm/fp'
+ export default eachWeekendOfInterval
+}
+
+declare module 'date-fns/esm/fp/eachWeekendOfMonth' {
+ import { eachWeekendOfMonth } from 'date-fns/esm/fp'
+ export default eachWeekendOfMonth
+}
+
+declare module 'date-fns/esm/fp/eachWeekendOfYear' {
+ import { eachWeekendOfYear } from 'date-fns/esm/fp'
+ export default eachWeekendOfYear
+}
+
+declare module 'date-fns/esm/fp/eachWeekOfInterval' {
+ import { eachWeekOfInterval } from 'date-fns/esm/fp'
+ export default eachWeekOfInterval
+}
+
+declare module 'date-fns/esm/fp/eachWeekOfIntervalWithOptions' {
+ import { eachWeekOfIntervalWithOptions } from 'date-fns/esm/fp'
+ export default eachWeekOfIntervalWithOptions
+}
+
+declare module 'date-fns/esm/fp/eachYearOfInterval' {
+ import { eachYearOfInterval } from 'date-fns/esm/fp'
+ export default eachYearOfInterval
+}
+
+declare module 'date-fns/esm/fp/endOfDay' {
+ import { endOfDay } from 'date-fns/esm/fp'
+ export default endOfDay
+}
+
+declare module 'date-fns/esm/fp/endOfDecade' {
+ import { endOfDecade } from 'date-fns/esm/fp'
+ export default endOfDecade
+}
+
+declare module 'date-fns/esm/fp/endOfDecadeWithOptions' {
+ import { endOfDecadeWithOptions } from 'date-fns/esm/fp'
+ export default endOfDecadeWithOptions
+}
+
+declare module 'date-fns/esm/fp/endOfHour' {
+ import { endOfHour } from 'date-fns/esm/fp'
+ export default endOfHour
+}
+
+declare module 'date-fns/esm/fp/endOfISOWeek' {
+ import { endOfISOWeek } from 'date-fns/esm/fp'
+ export default endOfISOWeek
+}
+
+declare module 'date-fns/esm/fp/endOfISOWeekYear' {
+ import { endOfISOWeekYear } from 'date-fns/esm/fp'
+ export default endOfISOWeekYear
+}
+
+declare module 'date-fns/esm/fp/endOfMinute' {
+ import { endOfMinute } from 'date-fns/esm/fp'
+ export default endOfMinute
+}
+
+declare module 'date-fns/esm/fp/endOfMonth' {
+ import { endOfMonth } from 'date-fns/esm/fp'
+ export default endOfMonth
+}
+
+declare module 'date-fns/esm/fp/endOfQuarter' {
+ import { endOfQuarter } from 'date-fns/esm/fp'
+ export default endOfQuarter
+}
+
+declare module 'date-fns/esm/fp/endOfSecond' {
+ import { endOfSecond } from 'date-fns/esm/fp'
+ export default endOfSecond
+}
+
+declare module 'date-fns/esm/fp/endOfWeek' {
+ import { endOfWeek } from 'date-fns/esm/fp'
+ export default endOfWeek
+}
+
+declare module 'date-fns/esm/fp/endOfWeekWithOptions' {
+ import { endOfWeekWithOptions } from 'date-fns/esm/fp'
+ export default endOfWeekWithOptions
+}
+
+declare module 'date-fns/esm/fp/endOfYear' {
+ import { endOfYear } from 'date-fns/esm/fp'
+ export default endOfYear
+}
+
+declare module 'date-fns/esm/fp/format' {
+ import { format } from 'date-fns/esm/fp'
+ export default format
+}
+
+declare module 'date-fns/esm/fp/formatDistance' {
+ import { formatDistance } from 'date-fns/esm/fp'
+ export default formatDistance
+}
+
+declare module 'date-fns/esm/fp/formatDistanceStrict' {
+ import { formatDistanceStrict } from 'date-fns/esm/fp'
+ export default formatDistanceStrict
+}
+
+declare module 'date-fns/esm/fp/formatDistanceStrictWithOptions' {
+ import { formatDistanceStrictWithOptions } from 'date-fns/esm/fp'
+ export default formatDistanceStrictWithOptions
+}
+
+declare module 'date-fns/esm/fp/formatDistanceWithOptions' {
+ import { formatDistanceWithOptions } from 'date-fns/esm/fp'
+ export default formatDistanceWithOptions
+}
+
+declare module 'date-fns/esm/fp/formatDuration' {
+ import { formatDuration } from 'date-fns/esm/fp'
+ export default formatDuration
+}
+
+declare module 'date-fns/esm/fp/formatDurationWithOptions' {
+ import { formatDurationWithOptions } from 'date-fns/esm/fp'
+ export default formatDurationWithOptions
+}
+
+declare module 'date-fns/esm/fp/formatISO' {
+ import { formatISO } from 'date-fns/esm/fp'
+ export default formatISO
+}
+
+declare module 'date-fns/esm/fp/formatISO9075' {
+ import { formatISO9075 } from 'date-fns/esm/fp'
+ export default formatISO9075
+}
+
+declare module 'date-fns/esm/fp/formatISO9075WithOptions' {
+ import { formatISO9075WithOptions } from 'date-fns/esm/fp'
+ export default formatISO9075WithOptions
+}
+
+declare module 'date-fns/esm/fp/formatISODuration' {
+ import { formatISODuration } from 'date-fns/esm/fp'
+ export default formatISODuration
+}
+
+declare module 'date-fns/esm/fp/formatISOWithOptions' {
+ import { formatISOWithOptions } from 'date-fns/esm/fp'
+ export default formatISOWithOptions
+}
+
+declare module 'date-fns/esm/fp/formatRelative' {
+ import { formatRelative } from 'date-fns/esm/fp'
+ export default formatRelative
+}
+
+declare module 'date-fns/esm/fp/formatRelativeWithOptions' {
+ import { formatRelativeWithOptions } from 'date-fns/esm/fp'
+ export default formatRelativeWithOptions
+}
+
+declare module 'date-fns/esm/fp/formatRFC3339' {
+ import { formatRFC3339 } from 'date-fns/esm/fp'
+ export default formatRFC3339
+}
+
+declare module 'date-fns/esm/fp/formatRFC3339WithOptions' {
+ import { formatRFC3339WithOptions } from 'date-fns/esm/fp'
+ export default formatRFC3339WithOptions
+}
+
+declare module 'date-fns/esm/fp/formatRFC7231' {
+ import { formatRFC7231 } from 'date-fns/esm/fp'
+ export default formatRFC7231
+}
+
+declare module 'date-fns/esm/fp/formatWithOptions' {
+ import { formatWithOptions } from 'date-fns/esm/fp'
+ export default formatWithOptions
+}
+
+declare module 'date-fns/esm/fp/fromUnixTime' {
+ import { fromUnixTime } from 'date-fns/esm/fp'
+ export default fromUnixTime
+}
+
+declare module 'date-fns/esm/fp/getDate' {
+ import { getDate } from 'date-fns/esm/fp'
+ export default getDate
+}
+
+declare module 'date-fns/esm/fp/getDay' {
+ import { getDay } from 'date-fns/esm/fp'
+ export default getDay
+}
+
+declare module 'date-fns/esm/fp/getDayOfYear' {
+ import { getDayOfYear } from 'date-fns/esm/fp'
+ export default getDayOfYear
+}
+
+declare module 'date-fns/esm/fp/getDaysInMonth' {
+ import { getDaysInMonth } from 'date-fns/esm/fp'
+ export default getDaysInMonth
+}
+
+declare module 'date-fns/esm/fp/getDaysInYear' {
+ import { getDaysInYear } from 'date-fns/esm/fp'
+ export default getDaysInYear
+}
+
+declare module 'date-fns/esm/fp/getDecade' {
+ import { getDecade } from 'date-fns/esm/fp'
+ export default getDecade
+}
+
+declare module 'date-fns/esm/fp/getHours' {
+ import { getHours } from 'date-fns/esm/fp'
+ export default getHours
+}
+
+declare module 'date-fns/esm/fp/getISODay' {
+ import { getISODay } from 'date-fns/esm/fp'
+ export default getISODay
+}
+
+declare module 'date-fns/esm/fp/getISOWeek' {
+ import { getISOWeek } from 'date-fns/esm/fp'
+ export default getISOWeek
+}
+
+declare module 'date-fns/esm/fp/getISOWeeksInYear' {
+ import { getISOWeeksInYear } from 'date-fns/esm/fp'
+ export default getISOWeeksInYear
+}
+
+declare module 'date-fns/esm/fp/getISOWeekYear' {
+ import { getISOWeekYear } from 'date-fns/esm/fp'
+ export default getISOWeekYear
+}
+
+declare module 'date-fns/esm/fp/getMilliseconds' {
+ import { getMilliseconds } from 'date-fns/esm/fp'
+ export default getMilliseconds
+}
+
+declare module 'date-fns/esm/fp/getMinutes' {
+ import { getMinutes } from 'date-fns/esm/fp'
+ export default getMinutes
+}
+
+declare module 'date-fns/esm/fp/getMonth' {
+ import { getMonth } from 'date-fns/esm/fp'
+ export default getMonth
+}
+
+declare module 'date-fns/esm/fp/getOverlappingDaysInIntervals' {
+ import { getOverlappingDaysInIntervals } from 'date-fns/esm/fp'
+ export default getOverlappingDaysInIntervals
+}
+
+declare module 'date-fns/esm/fp/getQuarter' {
+ import { getQuarter } from 'date-fns/esm/fp'
+ export default getQuarter
+}
+
+declare module 'date-fns/esm/fp/getSeconds' {
+ import { getSeconds } from 'date-fns/esm/fp'
+ export default getSeconds
+}
+
+declare module 'date-fns/esm/fp/getTime' {
+ import { getTime } from 'date-fns/esm/fp'
+ export default getTime
+}
+
+declare module 'date-fns/esm/fp/getUnixTime' {
+ import { getUnixTime } from 'date-fns/esm/fp'
+ export default getUnixTime
+}
+
+declare module 'date-fns/esm/fp/getWeek' {
+ import { getWeek } from 'date-fns/esm/fp'
+ export default getWeek
+}
+
+declare module 'date-fns/esm/fp/getWeekOfMonth' {
+ import { getWeekOfMonth } from 'date-fns/esm/fp'
+ export default getWeekOfMonth
+}
+
+declare module 'date-fns/esm/fp/getWeekOfMonthWithOptions' {
+ import { getWeekOfMonthWithOptions } from 'date-fns/esm/fp'
+ export default getWeekOfMonthWithOptions
+}
+
+declare module 'date-fns/esm/fp/getWeeksInMonth' {
+ import { getWeeksInMonth } from 'date-fns/esm/fp'
+ export default getWeeksInMonth
+}
+
+declare module 'date-fns/esm/fp/getWeeksInMonthWithOptions' {
+ import { getWeeksInMonthWithOptions } from 'date-fns/esm/fp'
+ export default getWeeksInMonthWithOptions
+}
+
+declare module 'date-fns/esm/fp/getWeekWithOptions' {
+ import { getWeekWithOptions } from 'date-fns/esm/fp'
+ export default getWeekWithOptions
+}
+
+declare module 'date-fns/esm/fp/getWeekYear' {
+ import { getWeekYear } from 'date-fns/esm/fp'
+ export default getWeekYear
+}
+
+declare module 'date-fns/esm/fp/getWeekYearWithOptions' {
+ import { getWeekYearWithOptions } from 'date-fns/esm/fp'
+ export default getWeekYearWithOptions
+}
+
+declare module 'date-fns/esm/fp/getYear' {
+ import { getYear } from 'date-fns/esm/fp'
+ export default getYear
+}
+
+declare module 'date-fns/esm/fp/hoursToMilliseconds' {
+ import { hoursToMilliseconds } from 'date-fns/esm/fp'
+ export default hoursToMilliseconds
+}
+
+declare module 'date-fns/esm/fp/hoursToMinutes' {
+ import { hoursToMinutes } from 'date-fns/esm/fp'
+ export default hoursToMinutes
+}
+
+declare module 'date-fns/esm/fp/hoursToSeconds' {
+ import { hoursToSeconds } from 'date-fns/esm/fp'
+ export default hoursToSeconds
+}
+
+declare module 'date-fns/esm/fp/intervalToDuration' {
+ import { intervalToDuration } from 'date-fns/esm/fp'
+ export default intervalToDuration
+}
+
+declare module 'date-fns/esm/fp/intlFormat' {
+ import { intlFormat } from 'date-fns/esm/fp'
+ export default intlFormat
+}
+
+declare module 'date-fns/esm/fp/isAfter' {
+ import { isAfter } from 'date-fns/esm/fp'
+ export default isAfter
+}
+
+declare module 'date-fns/esm/fp/isBefore' {
+ import { isBefore } from 'date-fns/esm/fp'
+ export default isBefore
+}
+
+declare module 'date-fns/esm/fp/isDate' {
+ import { isDate } from 'date-fns/esm/fp'
+ export default isDate
+}
+
+declare module 'date-fns/esm/fp/isEqual' {
+ import { isEqual } from 'date-fns/esm/fp'
+ export default isEqual
+}
+
+declare module 'date-fns/esm/fp/isExists' {
+ import { isExists } from 'date-fns/esm/fp'
+ export default isExists
+}
+
+declare module 'date-fns/esm/fp/isFirstDayOfMonth' {
+ import { isFirstDayOfMonth } from 'date-fns/esm/fp'
+ export default isFirstDayOfMonth
+}
+
+declare module 'date-fns/esm/fp/isFriday' {
+ import { isFriday } from 'date-fns/esm/fp'
+ export default isFriday
+}
+
+declare module 'date-fns/esm/fp/isLastDayOfMonth' {
+ import { isLastDayOfMonth } from 'date-fns/esm/fp'
+ export default isLastDayOfMonth
+}
+
+declare module 'date-fns/esm/fp/isLeapYear' {
+ import { isLeapYear } from 'date-fns/esm/fp'
+ export default isLeapYear
+}
+
+declare module 'date-fns/esm/fp/isMatch' {
+ import { isMatch } from 'date-fns/esm/fp'
+ export default isMatch
+}
+
+declare module 'date-fns/esm/fp/isMatchWithOptions' {
+ import { isMatchWithOptions } from 'date-fns/esm/fp'
+ export default isMatchWithOptions
+}
+
+declare module 'date-fns/esm/fp/isMonday' {
+ import { isMonday } from 'date-fns/esm/fp'
+ export default isMonday
+}
+
+declare module 'date-fns/esm/fp/isSameDay' {
+ import { isSameDay } from 'date-fns/esm/fp'
+ export default isSameDay
+}
+
+declare module 'date-fns/esm/fp/isSameHour' {
+ import { isSameHour } from 'date-fns/esm/fp'
+ export default isSameHour
+}
+
+declare module 'date-fns/esm/fp/isSameISOWeek' {
+ import { isSameISOWeek } from 'date-fns/esm/fp'
+ export default isSameISOWeek
+}
+
+declare module 'date-fns/esm/fp/isSameISOWeekYear' {
+ import { isSameISOWeekYear } from 'date-fns/esm/fp'
+ export default isSameISOWeekYear
+}
+
+declare module 'date-fns/esm/fp/isSameMinute' {
+ import { isSameMinute } from 'date-fns/esm/fp'
+ export default isSameMinute
+}
+
+declare module 'date-fns/esm/fp/isSameMonth' {
+ import { isSameMonth } from 'date-fns/esm/fp'
+ export default isSameMonth
+}
+
+declare module 'date-fns/esm/fp/isSameQuarter' {
+ import { isSameQuarter } from 'date-fns/esm/fp'
+ export default isSameQuarter
+}
+
+declare module 'date-fns/esm/fp/isSameSecond' {
+ import { isSameSecond } from 'date-fns/esm/fp'
+ export default isSameSecond
+}
+
+declare module 'date-fns/esm/fp/isSameWeek' {
+ import { isSameWeek } from 'date-fns/esm/fp'
+ export default isSameWeek
+}
+
+declare module 'date-fns/esm/fp/isSameWeekWithOptions' {
+ import { isSameWeekWithOptions } from 'date-fns/esm/fp'
+ export default isSameWeekWithOptions
+}
+
+declare module 'date-fns/esm/fp/isSameYear' {
+ import { isSameYear } from 'date-fns/esm/fp'
+ export default isSameYear
+}
+
+declare module 'date-fns/esm/fp/isSaturday' {
+ import { isSaturday } from 'date-fns/esm/fp'
+ export default isSaturday
+}
+
+declare module 'date-fns/esm/fp/isSunday' {
+ import { isSunday } from 'date-fns/esm/fp'
+ export default isSunday
+}
+
+declare module 'date-fns/esm/fp/isThursday' {
+ import { isThursday } from 'date-fns/esm/fp'
+ export default isThursday
+}
+
+declare module 'date-fns/esm/fp/isTuesday' {
+ import { isTuesday } from 'date-fns/esm/fp'
+ export default isTuesday
+}
+
+declare module 'date-fns/esm/fp/isValid' {
+ import { isValid } from 'date-fns/esm/fp'
+ export default isValid
+}
+
+declare module 'date-fns/esm/fp/isWednesday' {
+ import { isWednesday } from 'date-fns/esm/fp'
+ export default isWednesday
+}
+
+declare module 'date-fns/esm/fp/isWeekend' {
+ import { isWeekend } from 'date-fns/esm/fp'
+ export default isWeekend
+}
+
+declare module 'date-fns/esm/fp/isWithinInterval' {
+ import { isWithinInterval } from 'date-fns/esm/fp'
+ export default isWithinInterval
+}
+
+declare module 'date-fns/esm/fp/lastDayOfDecade' {
+ import { lastDayOfDecade } from 'date-fns/esm/fp'
+ export default lastDayOfDecade
+}
+
+declare module 'date-fns/esm/fp/lastDayOfISOWeek' {
+ import { lastDayOfISOWeek } from 'date-fns/esm/fp'
+ export default lastDayOfISOWeek
+}
+
+declare module 'date-fns/esm/fp/lastDayOfISOWeekYear' {
+ import { lastDayOfISOWeekYear } from 'date-fns/esm/fp'
+ export default lastDayOfISOWeekYear
+}
+
+declare module 'date-fns/esm/fp/lastDayOfMonth' {
+ import { lastDayOfMonth } from 'date-fns/esm/fp'
+ export default lastDayOfMonth
+}
+
+declare module 'date-fns/esm/fp/lastDayOfQuarter' {
+ import { lastDayOfQuarter } from 'date-fns/esm/fp'
+ export default lastDayOfQuarter
+}
+
+declare module 'date-fns/esm/fp/lastDayOfQuarterWithOptions' {
+ import { lastDayOfQuarterWithOptions } from 'date-fns/esm/fp'
+ export default lastDayOfQuarterWithOptions
+}
+
+declare module 'date-fns/esm/fp/lastDayOfWeek' {
+ import { lastDayOfWeek } from 'date-fns/esm/fp'
+ export default lastDayOfWeek
+}
+
+declare module 'date-fns/esm/fp/lastDayOfWeekWithOptions' {
+ import { lastDayOfWeekWithOptions } from 'date-fns/esm/fp'
+ export default lastDayOfWeekWithOptions
+}
+
+declare module 'date-fns/esm/fp/lastDayOfYear' {
+ import { lastDayOfYear } from 'date-fns/esm/fp'
+ export default lastDayOfYear
+}
+
+declare module 'date-fns/esm/fp/lightFormat' {
+ import { lightFormat } from 'date-fns/esm/fp'
+ export default lightFormat
+}
+
+declare module 'date-fns/esm/fp/max' {
+ import { max } from 'date-fns/esm/fp'
+ export default max
+}
+
+declare module 'date-fns/esm/fp/milliseconds' {
+ import { milliseconds } from 'date-fns/esm/fp'
+ export default milliseconds
+}
+
+declare module 'date-fns/esm/fp/millisecondsToHours' {
+ import { millisecondsToHours } from 'date-fns/esm/fp'
+ export default millisecondsToHours
+}
+
+declare module 'date-fns/esm/fp/millisecondsToMinutes' {
+ import { millisecondsToMinutes } from 'date-fns/esm/fp'
+ export default millisecondsToMinutes
+}
+
+declare module 'date-fns/esm/fp/millisecondsToSeconds' {
+ import { millisecondsToSeconds } from 'date-fns/esm/fp'
+ export default millisecondsToSeconds
+}
+
+declare module 'date-fns/esm/fp/min' {
+ import { min } from 'date-fns/esm/fp'
+ export default min
+}
+
+declare module 'date-fns/esm/fp/minutesToHours' {
+ import { minutesToHours } from 'date-fns/esm/fp'
+ export default minutesToHours
+}
+
+declare module 'date-fns/esm/fp/minutesToMilliseconds' {
+ import { minutesToMilliseconds } from 'date-fns/esm/fp'
+ export default minutesToMilliseconds
+}
+
+declare module 'date-fns/esm/fp/minutesToSeconds' {
+ import { minutesToSeconds } from 'date-fns/esm/fp'
+ export default minutesToSeconds
+}
+
+declare module 'date-fns/esm/fp/monthsToQuarters' {
+ import { monthsToQuarters } from 'date-fns/esm/fp'
+ export default monthsToQuarters
+}
+
+declare module 'date-fns/esm/fp/monthsToYears' {
+ import { monthsToYears } from 'date-fns/esm/fp'
+ export default monthsToYears
+}
+
+declare module 'date-fns/esm/fp/nextDay' {
+ import { nextDay } from 'date-fns/esm/fp'
+ export default nextDay
+}
+
+declare module 'date-fns/esm/fp/nextFriday' {
+ import { nextFriday } from 'date-fns/esm/fp'
+ export default nextFriday
+}
+
+declare module 'date-fns/esm/fp/nextMonday' {
+ import { nextMonday } from 'date-fns/esm/fp'
+ export default nextMonday
+}
+
+declare module 'date-fns/esm/fp/nextSaturday' {
+ import { nextSaturday } from 'date-fns/esm/fp'
+ export default nextSaturday
+}
+
+declare module 'date-fns/esm/fp/nextSunday' {
+ import { nextSunday } from 'date-fns/esm/fp'
+ export default nextSunday
+}
+
+declare module 'date-fns/esm/fp/nextThursday' {
+ import { nextThursday } from 'date-fns/esm/fp'
+ export default nextThursday
+}
+
+declare module 'date-fns/esm/fp/nextTuesday' {
+ import { nextTuesday } from 'date-fns/esm/fp'
+ export default nextTuesday
+}
+
+declare module 'date-fns/esm/fp/nextWednesday' {
+ import { nextWednesday } from 'date-fns/esm/fp'
+ export default nextWednesday
+}
+
+declare module 'date-fns/esm/fp/parse' {
+ import { parse } from 'date-fns/esm/fp'
+ export default parse
+}
+
+declare module 'date-fns/esm/fp/parseISO' {
+ import { parseISO } from 'date-fns/esm/fp'
+ export default parseISO
+}
+
+declare module 'date-fns/esm/fp/parseISOWithOptions' {
+ import { parseISOWithOptions } from 'date-fns/esm/fp'
+ export default parseISOWithOptions
+}
+
+declare module 'date-fns/esm/fp/parseJSON' {
+ import { parseJSON } from 'date-fns/esm/fp'
+ export default parseJSON
+}
+
+declare module 'date-fns/esm/fp/parseWithOptions' {
+ import { parseWithOptions } from 'date-fns/esm/fp'
+ export default parseWithOptions
+}
+
+declare module 'date-fns/esm/fp/quartersToMonths' {
+ import { quartersToMonths } from 'date-fns/esm/fp'
+ export default quartersToMonths
+}
+
+declare module 'date-fns/esm/fp/quartersToYears' {
+ import { quartersToYears } from 'date-fns/esm/fp'
+ export default quartersToYears
+}
+
+declare module 'date-fns/esm/fp/roundToNearestMinutes' {
+ import { roundToNearestMinutes } from 'date-fns/esm/fp'
+ export default roundToNearestMinutes
+}
+
+declare module 'date-fns/esm/fp/roundToNearestMinutesWithOptions' {
+ import { roundToNearestMinutesWithOptions } from 'date-fns/esm/fp'
+ export default roundToNearestMinutesWithOptions
+}
+
+declare module 'date-fns/esm/fp/secondsToHours' {
+ import { secondsToHours } from 'date-fns/esm/fp'
+ export default secondsToHours
+}
+
+declare module 'date-fns/esm/fp/secondsToMilliseconds' {
+ import { secondsToMilliseconds } from 'date-fns/esm/fp'
+ export default secondsToMilliseconds
+}
+
+declare module 'date-fns/esm/fp/secondsToMinutes' {
+ import { secondsToMinutes } from 'date-fns/esm/fp'
+ export default secondsToMinutes
+}
+
+declare module 'date-fns/esm/fp/set' {
+ import { set } from 'date-fns/esm/fp'
+ export default set
+}
+
+declare module 'date-fns/esm/fp/setDate' {
+ import { setDate } from 'date-fns/esm/fp'
+ export default setDate
+}
+
+declare module 'date-fns/esm/fp/setDay' {
+ import { setDay } from 'date-fns/esm/fp'
+ export default setDay
+}
+
+declare module 'date-fns/esm/fp/setDayOfYear' {
+ import { setDayOfYear } from 'date-fns/esm/fp'
+ export default setDayOfYear
+}
+
+declare module 'date-fns/esm/fp/setDayWithOptions' {
+ import { setDayWithOptions } from 'date-fns/esm/fp'
+ export default setDayWithOptions
+}
+
+declare module 'date-fns/esm/fp/setHours' {
+ import { setHours } from 'date-fns/esm/fp'
+ export default setHours
+}
+
+declare module 'date-fns/esm/fp/setISODay' {
+ import { setISODay } from 'date-fns/esm/fp'
+ export default setISODay
+}
+
+declare module 'date-fns/esm/fp/setISOWeek' {
+ import { setISOWeek } from 'date-fns/esm/fp'
+ export default setISOWeek
+}
+
+declare module 'date-fns/esm/fp/setISOWeekYear' {
+ import { setISOWeekYear } from 'date-fns/esm/fp'
+ export default setISOWeekYear
+}
+
+declare module 'date-fns/esm/fp/setMilliseconds' {
+ import { setMilliseconds } from 'date-fns/esm/fp'
+ export default setMilliseconds
+}
+
+declare module 'date-fns/esm/fp/setMinutes' {
+ import { setMinutes } from 'date-fns/esm/fp'
+ export default setMinutes
+}
+
+declare module 'date-fns/esm/fp/setMonth' {
+ import { setMonth } from 'date-fns/esm/fp'
+ export default setMonth
+}
+
+declare module 'date-fns/esm/fp/setQuarter' {
+ import { setQuarter } from 'date-fns/esm/fp'
+ export default setQuarter
+}
+
+declare module 'date-fns/esm/fp/setSeconds' {
+ import { setSeconds } from 'date-fns/esm/fp'
+ export default setSeconds
+}
+
+declare module 'date-fns/esm/fp/setWeek' {
+ import { setWeek } from 'date-fns/esm/fp'
+ export default setWeek
+}
+
+declare module 'date-fns/esm/fp/setWeekWithOptions' {
+ import { setWeekWithOptions } from 'date-fns/esm/fp'
+ export default setWeekWithOptions
+}
+
+declare module 'date-fns/esm/fp/setWeekYear' {
+ import { setWeekYear } from 'date-fns/esm/fp'
+ export default setWeekYear
+}
+
+declare module 'date-fns/esm/fp/setWeekYearWithOptions' {
+ import { setWeekYearWithOptions } from 'date-fns/esm/fp'
+ export default setWeekYearWithOptions
+}
+
+declare module 'date-fns/esm/fp/setYear' {
+ import { setYear } from 'date-fns/esm/fp'
+ export default setYear
+}
+
+declare module 'date-fns/esm/fp/startOfDay' {
+ import { startOfDay } from 'date-fns/esm/fp'
+ export default startOfDay
+}
+
+declare module 'date-fns/esm/fp/startOfDecade' {
+ import { startOfDecade } from 'date-fns/esm/fp'
+ export default startOfDecade
+}
+
+declare module 'date-fns/esm/fp/startOfHour' {
+ import { startOfHour } from 'date-fns/esm/fp'
+ export default startOfHour
+}
+
+declare module 'date-fns/esm/fp/startOfISOWeek' {
+ import { startOfISOWeek } from 'date-fns/esm/fp'
+ export default startOfISOWeek
+}
+
+declare module 'date-fns/esm/fp/startOfISOWeekYear' {
+ import { startOfISOWeekYear } from 'date-fns/esm/fp'
+ export default startOfISOWeekYear
+}
+
+declare module 'date-fns/esm/fp/startOfMinute' {
+ import { startOfMinute } from 'date-fns/esm/fp'
+ export default startOfMinute
+}
+
+declare module 'date-fns/esm/fp/startOfMonth' {
+ import { startOfMonth } from 'date-fns/esm/fp'
+ export default startOfMonth
+}
+
+declare module 'date-fns/esm/fp/startOfQuarter' {
+ import { startOfQuarter } from 'date-fns/esm/fp'
+ export default startOfQuarter
+}
+
+declare module 'date-fns/esm/fp/startOfSecond' {
+ import { startOfSecond } from 'date-fns/esm/fp'
+ export default startOfSecond
+}
+
+declare module 'date-fns/esm/fp/startOfWeek' {
+ import { startOfWeek } from 'date-fns/esm/fp'
+ export default startOfWeek
+}
+
+declare module 'date-fns/esm/fp/startOfWeekWithOptions' {
+ import { startOfWeekWithOptions } from 'date-fns/esm/fp'
+ export default startOfWeekWithOptions
+}
+
+declare module 'date-fns/esm/fp/startOfWeekYear' {
+ import { startOfWeekYear } from 'date-fns/esm/fp'
+ export default startOfWeekYear
+}
+
+declare module 'date-fns/esm/fp/startOfWeekYearWithOptions' {
+ import { startOfWeekYearWithOptions } from 'date-fns/esm/fp'
+ export default startOfWeekYearWithOptions
+}
+
+declare module 'date-fns/esm/fp/startOfYear' {
+ import { startOfYear } from 'date-fns/esm/fp'
+ export default startOfYear
+}
+
+declare module 'date-fns/esm/fp/sub' {
+ import { sub } from 'date-fns/esm/fp'
+ export default sub
+}
+
+declare module 'date-fns/esm/fp/subBusinessDays' {
+ import { subBusinessDays } from 'date-fns/esm/fp'
+ export default subBusinessDays
+}
+
+declare module 'date-fns/esm/fp/subDays' {
+ import { subDays } from 'date-fns/esm/fp'
+ export default subDays
+}
+
+declare module 'date-fns/esm/fp/subHours' {
+ import { subHours } from 'date-fns/esm/fp'
+ export default subHours
+}
+
+declare module 'date-fns/esm/fp/subISOWeekYears' {
+ import { subISOWeekYears } from 'date-fns/esm/fp'
+ export default subISOWeekYears
+}
+
+declare module 'date-fns/esm/fp/subMilliseconds' {
+ import { subMilliseconds } from 'date-fns/esm/fp'
+ export default subMilliseconds
+}
+
+declare module 'date-fns/esm/fp/subMinutes' {
+ import { subMinutes } from 'date-fns/esm/fp'
+ export default subMinutes
+}
+
+declare module 'date-fns/esm/fp/subMonths' {
+ import { subMonths } from 'date-fns/esm/fp'
+ export default subMonths
+}
+
+declare module 'date-fns/esm/fp/subQuarters' {
+ import { subQuarters } from 'date-fns/esm/fp'
+ export default subQuarters
+}
+
+declare module 'date-fns/esm/fp/subSeconds' {
+ import { subSeconds } from 'date-fns/esm/fp'
+ export default subSeconds
+}
+
+declare module 'date-fns/esm/fp/subWeeks' {
+ import { subWeeks } from 'date-fns/esm/fp'
+ export default subWeeks
+}
+
+declare module 'date-fns/esm/fp/subYears' {
+ import { subYears } from 'date-fns/esm/fp'
+ export default subYears
+}
+
+declare module 'date-fns/esm/fp/toDate' {
+ import { toDate } from 'date-fns/esm/fp'
+ export default toDate
+}
+
+declare module 'date-fns/esm/fp/weeksToDays' {
+ import { weeksToDays } from 'date-fns/esm/fp'
+ export default weeksToDays
+}
+
+declare module 'date-fns/esm/fp/yearsToMonths' {
+ import { yearsToMonths } from 'date-fns/esm/fp'
+ export default yearsToMonths
+}
+
+declare module 'date-fns/esm/fp/yearsToQuarters' {
+ import { yearsToQuarters } from 'date-fns/esm/fp'
+ export default yearsToQuarters
+}
+
+declare module 'date-fns/esm/fp/add/index' {
+ import { add } from 'date-fns/esm/fp'
+ export default add
+}
+
+declare module 'date-fns/esm/fp/addBusinessDays/index' {
+ import { addBusinessDays } from 'date-fns/esm/fp'
+ export default addBusinessDays
+}
+
+declare module 'date-fns/esm/fp/addDays/index' {
+ import { addDays } from 'date-fns/esm/fp'
+ export default addDays
+}
+
+declare module 'date-fns/esm/fp/addHours/index' {
+ import { addHours } from 'date-fns/esm/fp'
+ export default addHours
+}
+
+declare module 'date-fns/esm/fp/addISOWeekYears/index' {
+ import { addISOWeekYears } from 'date-fns/esm/fp'
+ export default addISOWeekYears
+}
+
+declare module 'date-fns/esm/fp/addMilliseconds/index' {
+ import { addMilliseconds } from 'date-fns/esm/fp'
+ export default addMilliseconds
+}
+
+declare module 'date-fns/esm/fp/addMinutes/index' {
+ import { addMinutes } from 'date-fns/esm/fp'
+ export default addMinutes
+}
+
+declare module 'date-fns/esm/fp/addMonths/index' {
+ import { addMonths } from 'date-fns/esm/fp'
+ export default addMonths
+}
+
+declare module 'date-fns/esm/fp/addQuarters/index' {
+ import { addQuarters } from 'date-fns/esm/fp'
+ export default addQuarters
+}
+
+declare module 'date-fns/esm/fp/addSeconds/index' {
+ import { addSeconds } from 'date-fns/esm/fp'
+ export default addSeconds
+}
+
+declare module 'date-fns/esm/fp/addWeeks/index' {
+ import { addWeeks } from 'date-fns/esm/fp'
+ export default addWeeks
+}
+
+declare module 'date-fns/esm/fp/addYears/index' {
+ import { addYears } from 'date-fns/esm/fp'
+ export default addYears
+}
+
+declare module 'date-fns/esm/fp/areIntervalsOverlapping/index' {
+ import { areIntervalsOverlapping } from 'date-fns/esm/fp'
+ export default areIntervalsOverlapping
+}
+
+declare module 'date-fns/esm/fp/areIntervalsOverlappingWithOptions/index' {
+ import { areIntervalsOverlappingWithOptions } from 'date-fns/esm/fp'
+ export default areIntervalsOverlappingWithOptions
+}
+
+declare module 'date-fns/esm/fp/closestIndexTo/index' {
+ import { closestIndexTo } from 'date-fns/esm/fp'
+ export default closestIndexTo
+}
+
+declare module 'date-fns/esm/fp/closestTo/index' {
+ import { closestTo } from 'date-fns/esm/fp'
+ export default closestTo
+}
+
+declare module 'date-fns/esm/fp/compareAsc/index' {
+ import { compareAsc } from 'date-fns/esm/fp'
+ export default compareAsc
+}
+
+declare module 'date-fns/esm/fp/compareDesc/index' {
+ import { compareDesc } from 'date-fns/esm/fp'
+ export default compareDesc
+}
+
+declare module 'date-fns/esm/fp/daysToWeeks/index' {
+ import { daysToWeeks } from 'date-fns/esm/fp'
+ export default daysToWeeks
+}
+
+declare module 'date-fns/esm/fp/differenceInBusinessDays/index' {
+ import { differenceInBusinessDays } from 'date-fns/esm/fp'
+ export default differenceInBusinessDays
+}
+
+declare module 'date-fns/esm/fp/differenceInCalendarDays/index' {
+ import { differenceInCalendarDays } from 'date-fns/esm/fp'
+ export default differenceInCalendarDays
+}
+
+declare module 'date-fns/esm/fp/differenceInCalendarISOWeeks/index' {
+ import { differenceInCalendarISOWeeks } from 'date-fns/esm/fp'
+ export default differenceInCalendarISOWeeks
+}
+
+declare module 'date-fns/esm/fp/differenceInCalendarISOWeekYears/index' {
+ import { differenceInCalendarISOWeekYears } from 'date-fns/esm/fp'
+ export default differenceInCalendarISOWeekYears
+}
+
+declare module 'date-fns/esm/fp/differenceInCalendarMonths/index' {
+ import { differenceInCalendarMonths } from 'date-fns/esm/fp'
+ export default differenceInCalendarMonths
+}
+
+declare module 'date-fns/esm/fp/differenceInCalendarQuarters/index' {
+ import { differenceInCalendarQuarters } from 'date-fns/esm/fp'
+ export default differenceInCalendarQuarters
+}
+
+declare module 'date-fns/esm/fp/differenceInCalendarWeeks/index' {
+ import { differenceInCalendarWeeks } from 'date-fns/esm/fp'
+ export default differenceInCalendarWeeks
+}
+
+declare module 'date-fns/esm/fp/differenceInCalendarWeeksWithOptions/index' {
+ import { differenceInCalendarWeeksWithOptions } from 'date-fns/esm/fp'
+ export default differenceInCalendarWeeksWithOptions
+}
+
+declare module 'date-fns/esm/fp/differenceInCalendarYears/index' {
+ import { differenceInCalendarYears } from 'date-fns/esm/fp'
+ export default differenceInCalendarYears
+}
+
+declare module 'date-fns/esm/fp/differenceInDays/index' {
+ import { differenceInDays } from 'date-fns/esm/fp'
+ export default differenceInDays
+}
+
+declare module 'date-fns/esm/fp/differenceInHours/index' {
+ import { differenceInHours } from 'date-fns/esm/fp'
+ export default differenceInHours
+}
+
+declare module 'date-fns/esm/fp/differenceInISOWeekYears/index' {
+ import { differenceInISOWeekYears } from 'date-fns/esm/fp'
+ export default differenceInISOWeekYears
+}
+
+declare module 'date-fns/esm/fp/differenceInMilliseconds/index' {
+ import { differenceInMilliseconds } from 'date-fns/esm/fp'
+ export default differenceInMilliseconds
+}
+
+declare module 'date-fns/esm/fp/differenceInMinutes/index' {
+ import { differenceInMinutes } from 'date-fns/esm/fp'
+ export default differenceInMinutes
+}
+
+declare module 'date-fns/esm/fp/differenceInMonths/index' {
+ import { differenceInMonths } from 'date-fns/esm/fp'
+ export default differenceInMonths
+}
+
+declare module 'date-fns/esm/fp/differenceInQuarters/index' {
+ import { differenceInQuarters } from 'date-fns/esm/fp'
+ export default differenceInQuarters
+}
+
+declare module 'date-fns/esm/fp/differenceInSeconds/index' {
+ import { differenceInSeconds } from 'date-fns/esm/fp'
+ export default differenceInSeconds
+}
+
+declare module 'date-fns/esm/fp/differenceInWeeks/index' {
+ import { differenceInWeeks } from 'date-fns/esm/fp'
+ export default differenceInWeeks
+}
+
+declare module 'date-fns/esm/fp/differenceInYears/index' {
+ import { differenceInYears } from 'date-fns/esm/fp'
+ export default differenceInYears
+}
+
+declare module 'date-fns/esm/fp/eachDayOfInterval/index' {
+ import { eachDayOfInterval } from 'date-fns/esm/fp'
+ export default eachDayOfInterval
+}
+
+declare module 'date-fns/esm/fp/eachDayOfIntervalWithOptions/index' {
+ import { eachDayOfIntervalWithOptions } from 'date-fns/esm/fp'
+ export default eachDayOfIntervalWithOptions
+}
+
+declare module 'date-fns/esm/fp/eachHourOfInterval/index' {
+ import { eachHourOfInterval } from 'date-fns/esm/fp'
+ export default eachHourOfInterval
+}
+
+declare module 'date-fns/esm/fp/eachHourOfIntervalWithOptions/index' {
+ import { eachHourOfIntervalWithOptions } from 'date-fns/esm/fp'
+ export default eachHourOfIntervalWithOptions
+}
+
+declare module 'date-fns/esm/fp/eachMinuteOfInterval/index' {
+ import { eachMinuteOfInterval } from 'date-fns/esm/fp'
+ export default eachMinuteOfInterval
+}
+
+declare module 'date-fns/esm/fp/eachMinuteOfIntervalWithOptions/index' {
+ import { eachMinuteOfIntervalWithOptions } from 'date-fns/esm/fp'
+ export default eachMinuteOfIntervalWithOptions
+}
+
+declare module 'date-fns/esm/fp/eachMonthOfInterval/index' {
+ import { eachMonthOfInterval } from 'date-fns/esm/fp'
+ export default eachMonthOfInterval
+}
+
+declare module 'date-fns/esm/fp/eachQuarterOfInterval/index' {
+ import { eachQuarterOfInterval } from 'date-fns/esm/fp'
+ export default eachQuarterOfInterval
+}
+
+declare module 'date-fns/esm/fp/eachWeekendOfInterval/index' {
+ import { eachWeekendOfInterval } from 'date-fns/esm/fp'
+ export default eachWeekendOfInterval
+}
+
+declare module 'date-fns/esm/fp/eachWeekendOfMonth/index' {
+ import { eachWeekendOfMonth } from 'date-fns/esm/fp'
+ export default eachWeekendOfMonth
+}
+
+declare module 'date-fns/esm/fp/eachWeekendOfYear/index' {
+ import { eachWeekendOfYear } from 'date-fns/esm/fp'
+ export default eachWeekendOfYear
+}
+
+declare module 'date-fns/esm/fp/eachWeekOfInterval/index' {
+ import { eachWeekOfInterval } from 'date-fns/esm/fp'
+ export default eachWeekOfInterval
+}
+
+declare module 'date-fns/esm/fp/eachWeekOfIntervalWithOptions/index' {
+ import { eachWeekOfIntervalWithOptions } from 'date-fns/esm/fp'
+ export default eachWeekOfIntervalWithOptions
+}
+
+declare module 'date-fns/esm/fp/eachYearOfInterval/index' {
+ import { eachYearOfInterval } from 'date-fns/esm/fp'
+ export default eachYearOfInterval
+}
+
+declare module 'date-fns/esm/fp/endOfDay/index' {
+ import { endOfDay } from 'date-fns/esm/fp'
+ export default endOfDay
+}
+
+declare module 'date-fns/esm/fp/endOfDecade/index' {
+ import { endOfDecade } from 'date-fns/esm/fp'
+ export default endOfDecade
+}
+
+declare module 'date-fns/esm/fp/endOfDecadeWithOptions/index' {
+ import { endOfDecadeWithOptions } from 'date-fns/esm/fp'
+ export default endOfDecadeWithOptions
+}
+
+declare module 'date-fns/esm/fp/endOfHour/index' {
+ import { endOfHour } from 'date-fns/esm/fp'
+ export default endOfHour
+}
+
+declare module 'date-fns/esm/fp/endOfISOWeek/index' {
+ import { endOfISOWeek } from 'date-fns/esm/fp'
+ export default endOfISOWeek
+}
+
+declare module 'date-fns/esm/fp/endOfISOWeekYear/index' {
+ import { endOfISOWeekYear } from 'date-fns/esm/fp'
+ export default endOfISOWeekYear
+}
+
+declare module 'date-fns/esm/fp/endOfMinute/index' {
+ import { endOfMinute } from 'date-fns/esm/fp'
+ export default endOfMinute
+}
+
+declare module 'date-fns/esm/fp/endOfMonth/index' {
+ import { endOfMonth } from 'date-fns/esm/fp'
+ export default endOfMonth
+}
+
+declare module 'date-fns/esm/fp/endOfQuarter/index' {
+ import { endOfQuarter } from 'date-fns/esm/fp'
+ export default endOfQuarter
+}
+
+declare module 'date-fns/esm/fp/endOfSecond/index' {
+ import { endOfSecond } from 'date-fns/esm/fp'
+ export default endOfSecond
+}
+
+declare module 'date-fns/esm/fp/endOfWeek/index' {
+ import { endOfWeek } from 'date-fns/esm/fp'
+ export default endOfWeek
+}
+
+declare module 'date-fns/esm/fp/endOfWeekWithOptions/index' {
+ import { endOfWeekWithOptions } from 'date-fns/esm/fp'
+ export default endOfWeekWithOptions
+}
+
+declare module 'date-fns/esm/fp/endOfYear/index' {
+ import { endOfYear } from 'date-fns/esm/fp'
+ export default endOfYear
+}
+
+declare module 'date-fns/esm/fp/format/index' {
+ import { format } from 'date-fns/esm/fp'
+ export default format
+}
+
+declare module 'date-fns/esm/fp/formatDistance/index' {
+ import { formatDistance } from 'date-fns/esm/fp'
+ export default formatDistance
+}
+
+declare module 'date-fns/esm/fp/formatDistanceStrict/index' {
+ import { formatDistanceStrict } from 'date-fns/esm/fp'
+ export default formatDistanceStrict
+}
+
+declare module 'date-fns/esm/fp/formatDistanceStrictWithOptions/index' {
+ import { formatDistanceStrictWithOptions } from 'date-fns/esm/fp'
+ export default formatDistanceStrictWithOptions
+}
+
+declare module 'date-fns/esm/fp/formatDistanceWithOptions/index' {
+ import { formatDistanceWithOptions } from 'date-fns/esm/fp'
+ export default formatDistanceWithOptions
+}
+
+declare module 'date-fns/esm/fp/formatDuration/index' {
+ import { formatDuration } from 'date-fns/esm/fp'
+ export default formatDuration
+}
+
+declare module 'date-fns/esm/fp/formatDurationWithOptions/index' {
+ import { formatDurationWithOptions } from 'date-fns/esm/fp'
+ export default formatDurationWithOptions
+}
+
+declare module 'date-fns/esm/fp/formatISO/index' {
+ import { formatISO } from 'date-fns/esm/fp'
+ export default formatISO
+}
+
+declare module 'date-fns/esm/fp/formatISO9075/index' {
+ import { formatISO9075 } from 'date-fns/esm/fp'
+ export default formatISO9075
+}
+
+declare module 'date-fns/esm/fp/formatISO9075WithOptions/index' {
+ import { formatISO9075WithOptions } from 'date-fns/esm/fp'
+ export default formatISO9075WithOptions
+}
+
+declare module 'date-fns/esm/fp/formatISODuration/index' {
+ import { formatISODuration } from 'date-fns/esm/fp'
+ export default formatISODuration
+}
+
+declare module 'date-fns/esm/fp/formatISOWithOptions/index' {
+ import { formatISOWithOptions } from 'date-fns/esm/fp'
+ export default formatISOWithOptions
+}
+
+declare module 'date-fns/esm/fp/formatRelative/index' {
+ import { formatRelative } from 'date-fns/esm/fp'
+ export default formatRelative
+}
+
+declare module 'date-fns/esm/fp/formatRelativeWithOptions/index' {
+ import { formatRelativeWithOptions } from 'date-fns/esm/fp'
+ export default formatRelativeWithOptions
+}
+
+declare module 'date-fns/esm/fp/formatRFC3339/index' {
+ import { formatRFC3339 } from 'date-fns/esm/fp'
+ export default formatRFC3339
+}
+
+declare module 'date-fns/esm/fp/formatRFC3339WithOptions/index' {
+ import { formatRFC3339WithOptions } from 'date-fns/esm/fp'
+ export default formatRFC3339WithOptions
+}
+
+declare module 'date-fns/esm/fp/formatRFC7231/index' {
+ import { formatRFC7231 } from 'date-fns/esm/fp'
+ export default formatRFC7231
+}
+
+declare module 'date-fns/esm/fp/formatWithOptions/index' {
+ import { formatWithOptions } from 'date-fns/esm/fp'
+ export default formatWithOptions
+}
+
+declare module 'date-fns/esm/fp/fromUnixTime/index' {
+ import { fromUnixTime } from 'date-fns/esm/fp'
+ export default fromUnixTime
+}
+
+declare module 'date-fns/esm/fp/getDate/index' {
+ import { getDate } from 'date-fns/esm/fp'
+ export default getDate
+}
+
+declare module 'date-fns/esm/fp/getDay/index' {
+ import { getDay } from 'date-fns/esm/fp'
+ export default getDay
+}
+
+declare module 'date-fns/esm/fp/getDayOfYear/index' {
+ import { getDayOfYear } from 'date-fns/esm/fp'
+ export default getDayOfYear
+}
+
+declare module 'date-fns/esm/fp/getDaysInMonth/index' {
+ import { getDaysInMonth } from 'date-fns/esm/fp'
+ export default getDaysInMonth
+}
+
+declare module 'date-fns/esm/fp/getDaysInYear/index' {
+ import { getDaysInYear } from 'date-fns/esm/fp'
+ export default getDaysInYear
+}
+
+declare module 'date-fns/esm/fp/getDecade/index' {
+ import { getDecade } from 'date-fns/esm/fp'
+ export default getDecade
+}
+
+declare module 'date-fns/esm/fp/getHours/index' {
+ import { getHours } from 'date-fns/esm/fp'
+ export default getHours
+}
+
+declare module 'date-fns/esm/fp/getISODay/index' {
+ import { getISODay } from 'date-fns/esm/fp'
+ export default getISODay
+}
+
+declare module 'date-fns/esm/fp/getISOWeek/index' {
+ import { getISOWeek } from 'date-fns/esm/fp'
+ export default getISOWeek
+}
+
+declare module 'date-fns/esm/fp/getISOWeeksInYear/index' {
+ import { getISOWeeksInYear } from 'date-fns/esm/fp'
+ export default getISOWeeksInYear
+}
+
+declare module 'date-fns/esm/fp/getISOWeekYear/index' {
+ import { getISOWeekYear } from 'date-fns/esm/fp'
+ export default getISOWeekYear
+}
+
+declare module 'date-fns/esm/fp/getMilliseconds/index' {
+ import { getMilliseconds } from 'date-fns/esm/fp'
+ export default getMilliseconds
+}
+
+declare module 'date-fns/esm/fp/getMinutes/index' {
+ import { getMinutes } from 'date-fns/esm/fp'
+ export default getMinutes
+}
+
+declare module 'date-fns/esm/fp/getMonth/index' {
+ import { getMonth } from 'date-fns/esm/fp'
+ export default getMonth
+}
+
+declare module 'date-fns/esm/fp/getOverlappingDaysInIntervals/index' {
+ import { getOverlappingDaysInIntervals } from 'date-fns/esm/fp'
+ export default getOverlappingDaysInIntervals
+}
+
+declare module 'date-fns/esm/fp/getQuarter/index' {
+ import { getQuarter } from 'date-fns/esm/fp'
+ export default getQuarter
+}
+
+declare module 'date-fns/esm/fp/getSeconds/index' {
+ import { getSeconds } from 'date-fns/esm/fp'
+ export default getSeconds
+}
+
+declare module 'date-fns/esm/fp/getTime/index' {
+ import { getTime } from 'date-fns/esm/fp'
+ export default getTime
+}
+
+declare module 'date-fns/esm/fp/getUnixTime/index' {
+ import { getUnixTime } from 'date-fns/esm/fp'
+ export default getUnixTime
+}
+
+declare module 'date-fns/esm/fp/getWeek/index' {
+ import { getWeek } from 'date-fns/esm/fp'
+ export default getWeek
+}
+
+declare module 'date-fns/esm/fp/getWeekOfMonth/index' {
+ import { getWeekOfMonth } from 'date-fns/esm/fp'
+ export default getWeekOfMonth
+}
+
+declare module 'date-fns/esm/fp/getWeekOfMonthWithOptions/index' {
+ import { getWeekOfMonthWithOptions } from 'date-fns/esm/fp'
+ export default getWeekOfMonthWithOptions
+}
+
+declare module 'date-fns/esm/fp/getWeeksInMonth/index' {
+ import { getWeeksInMonth } from 'date-fns/esm/fp'
+ export default getWeeksInMonth
+}
+
+declare module 'date-fns/esm/fp/getWeeksInMonthWithOptions/index' {
+ import { getWeeksInMonthWithOptions } from 'date-fns/esm/fp'
+ export default getWeeksInMonthWithOptions
+}
+
+declare module 'date-fns/esm/fp/getWeekWithOptions/index' {
+ import { getWeekWithOptions } from 'date-fns/esm/fp'
+ export default getWeekWithOptions
+}
+
+declare module 'date-fns/esm/fp/getWeekYear/index' {
+ import { getWeekYear } from 'date-fns/esm/fp'
+ export default getWeekYear
+}
+
+declare module 'date-fns/esm/fp/getWeekYearWithOptions/index' {
+ import { getWeekYearWithOptions } from 'date-fns/esm/fp'
+ export default getWeekYearWithOptions
+}
+
+declare module 'date-fns/esm/fp/getYear/index' {
+ import { getYear } from 'date-fns/esm/fp'
+ export default getYear
+}
+
+declare module 'date-fns/esm/fp/hoursToMilliseconds/index' {
+ import { hoursToMilliseconds } from 'date-fns/esm/fp'
+ export default hoursToMilliseconds
+}
+
+declare module 'date-fns/esm/fp/hoursToMinutes/index' {
+ import { hoursToMinutes } from 'date-fns/esm/fp'
+ export default hoursToMinutes
+}
+
+declare module 'date-fns/esm/fp/hoursToSeconds/index' {
+ import { hoursToSeconds } from 'date-fns/esm/fp'
+ export default hoursToSeconds
+}
+
+declare module 'date-fns/esm/fp/intervalToDuration/index' {
+ import { intervalToDuration } from 'date-fns/esm/fp'
+ export default intervalToDuration
+}
+
+declare module 'date-fns/esm/fp/intlFormat/index' {
+ import { intlFormat } from 'date-fns/esm/fp'
+ export default intlFormat
+}
+
+declare module 'date-fns/esm/fp/isAfter/index' {
+ import { isAfter } from 'date-fns/esm/fp'
+ export default isAfter
+}
+
+declare module 'date-fns/esm/fp/isBefore/index' {
+ import { isBefore } from 'date-fns/esm/fp'
+ export default isBefore
+}
+
+declare module 'date-fns/esm/fp/isDate/index' {
+ import { isDate } from 'date-fns/esm/fp'
+ export default isDate
+}
+
+declare module 'date-fns/esm/fp/isEqual/index' {
+ import { isEqual } from 'date-fns/esm/fp'
+ export default isEqual
+}
+
+declare module 'date-fns/esm/fp/isExists/index' {
+ import { isExists } from 'date-fns/esm/fp'
+ export default isExists
+}
+
+declare module 'date-fns/esm/fp/isFirstDayOfMonth/index' {
+ import { isFirstDayOfMonth } from 'date-fns/esm/fp'
+ export default isFirstDayOfMonth
+}
+
+declare module 'date-fns/esm/fp/isFriday/index' {
+ import { isFriday } from 'date-fns/esm/fp'
+ export default isFriday
+}
+
+declare module 'date-fns/esm/fp/isLastDayOfMonth/index' {
+ import { isLastDayOfMonth } from 'date-fns/esm/fp'
+ export default isLastDayOfMonth
+}
+
+declare module 'date-fns/esm/fp/isLeapYear/index' {
+ import { isLeapYear } from 'date-fns/esm/fp'
+ export default isLeapYear
+}
+
+declare module 'date-fns/esm/fp/isMatch/index' {
+ import { isMatch } from 'date-fns/esm/fp'
+ export default isMatch
+}
+
+declare module 'date-fns/esm/fp/isMatchWithOptions/index' {
+ import { isMatchWithOptions } from 'date-fns/esm/fp'
+ export default isMatchWithOptions
+}
+
+declare module 'date-fns/esm/fp/isMonday/index' {
+ import { isMonday } from 'date-fns/esm/fp'
+ export default isMonday
+}
+
+declare module 'date-fns/esm/fp/isSameDay/index' {
+ import { isSameDay } from 'date-fns/esm/fp'
+ export default isSameDay
+}
+
+declare module 'date-fns/esm/fp/isSameHour/index' {
+ import { isSameHour } from 'date-fns/esm/fp'
+ export default isSameHour
+}
+
+declare module 'date-fns/esm/fp/isSameISOWeek/index' {
+ import { isSameISOWeek } from 'date-fns/esm/fp'
+ export default isSameISOWeek
+}
+
+declare module 'date-fns/esm/fp/isSameISOWeekYear/index' {
+ import { isSameISOWeekYear } from 'date-fns/esm/fp'
+ export default isSameISOWeekYear
+}
+
+declare module 'date-fns/esm/fp/isSameMinute/index' {
+ import { isSameMinute } from 'date-fns/esm/fp'
+ export default isSameMinute
+}
+
+declare module 'date-fns/esm/fp/isSameMonth/index' {
+ import { isSameMonth } from 'date-fns/esm/fp'
+ export default isSameMonth
+}
+
+declare module 'date-fns/esm/fp/isSameQuarter/index' {
+ import { isSameQuarter } from 'date-fns/esm/fp'
+ export default isSameQuarter
+}
+
+declare module 'date-fns/esm/fp/isSameSecond/index' {
+ import { isSameSecond } from 'date-fns/esm/fp'
+ export default isSameSecond
+}
+
+declare module 'date-fns/esm/fp/isSameWeek/index' {
+ import { isSameWeek } from 'date-fns/esm/fp'
+ export default isSameWeek
+}
+
+declare module 'date-fns/esm/fp/isSameWeekWithOptions/index' {
+ import { isSameWeekWithOptions } from 'date-fns/esm/fp'
+ export default isSameWeekWithOptions
+}
+
+declare module 'date-fns/esm/fp/isSameYear/index' {
+ import { isSameYear } from 'date-fns/esm/fp'
+ export default isSameYear
+}
+
+declare module 'date-fns/esm/fp/isSaturday/index' {
+ import { isSaturday } from 'date-fns/esm/fp'
+ export default isSaturday
+}
+
+declare module 'date-fns/esm/fp/isSunday/index' {
+ import { isSunday } from 'date-fns/esm/fp'
+ export default isSunday
+}
+
+declare module 'date-fns/esm/fp/isThursday/index' {
+ import { isThursday } from 'date-fns/esm/fp'
+ export default isThursday
+}
+
+declare module 'date-fns/esm/fp/isTuesday/index' {
+ import { isTuesday } from 'date-fns/esm/fp'
+ export default isTuesday
+}
+
+declare module 'date-fns/esm/fp/isValid/index' {
+ import { isValid } from 'date-fns/esm/fp'
+ export default isValid
+}
+
+declare module 'date-fns/esm/fp/isWednesday/index' {
+ import { isWednesday } from 'date-fns/esm/fp'
+ export default isWednesday
+}
+
+declare module 'date-fns/esm/fp/isWeekend/index' {
+ import { isWeekend } from 'date-fns/esm/fp'
+ export default isWeekend
+}
+
+declare module 'date-fns/esm/fp/isWithinInterval/index' {
+ import { isWithinInterval } from 'date-fns/esm/fp'
+ export default isWithinInterval
+}
+
+declare module 'date-fns/esm/fp/lastDayOfDecade/index' {
+ import { lastDayOfDecade } from 'date-fns/esm/fp'
+ export default lastDayOfDecade
+}
+
+declare module 'date-fns/esm/fp/lastDayOfISOWeek/index' {
+ import { lastDayOfISOWeek } from 'date-fns/esm/fp'
+ export default lastDayOfISOWeek
+}
+
+declare module 'date-fns/esm/fp/lastDayOfISOWeekYear/index' {
+ import { lastDayOfISOWeekYear } from 'date-fns/esm/fp'
+ export default lastDayOfISOWeekYear
+}
+
+declare module 'date-fns/esm/fp/lastDayOfMonth/index' {
+ import { lastDayOfMonth } from 'date-fns/esm/fp'
+ export default lastDayOfMonth
+}
+
+declare module 'date-fns/esm/fp/lastDayOfQuarter/index' {
+ import { lastDayOfQuarter } from 'date-fns/esm/fp'
+ export default lastDayOfQuarter
+}
+
+declare module 'date-fns/esm/fp/lastDayOfQuarterWithOptions/index' {
+ import { lastDayOfQuarterWithOptions } from 'date-fns/esm/fp'
+ export default lastDayOfQuarterWithOptions
+}
+
+declare module 'date-fns/esm/fp/lastDayOfWeek/index' {
+ import { lastDayOfWeek } from 'date-fns/esm/fp'
+ export default lastDayOfWeek
+}
+
+declare module 'date-fns/esm/fp/lastDayOfWeekWithOptions/index' {
+ import { lastDayOfWeekWithOptions } from 'date-fns/esm/fp'
+ export default lastDayOfWeekWithOptions
+}
+
+declare module 'date-fns/esm/fp/lastDayOfYear/index' {
+ import { lastDayOfYear } from 'date-fns/esm/fp'
+ export default lastDayOfYear
+}
+
+declare module 'date-fns/esm/fp/lightFormat/index' {
+ import { lightFormat } from 'date-fns/esm/fp'
+ export default lightFormat
+}
+
+declare module 'date-fns/esm/fp/max/index' {
+ import { max } from 'date-fns/esm/fp'
+ export default max
+}
+
+declare module 'date-fns/esm/fp/milliseconds/index' {
+ import { milliseconds } from 'date-fns/esm/fp'
+ export default milliseconds
+}
+
+declare module 'date-fns/esm/fp/millisecondsToHours/index' {
+ import { millisecondsToHours } from 'date-fns/esm/fp'
+ export default millisecondsToHours
+}
+
+declare module 'date-fns/esm/fp/millisecondsToMinutes/index' {
+ import { millisecondsToMinutes } from 'date-fns/esm/fp'
+ export default millisecondsToMinutes
+}
+
+declare module 'date-fns/esm/fp/millisecondsToSeconds/index' {
+ import { millisecondsToSeconds } from 'date-fns/esm/fp'
+ export default millisecondsToSeconds
+}
+
+declare module 'date-fns/esm/fp/min/index' {
+ import { min } from 'date-fns/esm/fp'
+ export default min
+}
+
+declare module 'date-fns/esm/fp/minutesToHours/index' {
+ import { minutesToHours } from 'date-fns/esm/fp'
+ export default minutesToHours
+}
+
+declare module 'date-fns/esm/fp/minutesToMilliseconds/index' {
+ import { minutesToMilliseconds } from 'date-fns/esm/fp'
+ export default minutesToMilliseconds
+}
+
+declare module 'date-fns/esm/fp/minutesToSeconds/index' {
+ import { minutesToSeconds } from 'date-fns/esm/fp'
+ export default minutesToSeconds
+}
+
+declare module 'date-fns/esm/fp/monthsToQuarters/index' {
+ import { monthsToQuarters } from 'date-fns/esm/fp'
+ export default monthsToQuarters
+}
+
+declare module 'date-fns/esm/fp/monthsToYears/index' {
+ import { monthsToYears } from 'date-fns/esm/fp'
+ export default monthsToYears
+}
+
+declare module 'date-fns/esm/fp/nextDay/index' {
+ import { nextDay } from 'date-fns/esm/fp'
+ export default nextDay
+}
+
+declare module 'date-fns/esm/fp/nextFriday/index' {
+ import { nextFriday } from 'date-fns/esm/fp'
+ export default nextFriday
+}
+
+declare module 'date-fns/esm/fp/nextMonday/index' {
+ import { nextMonday } from 'date-fns/esm/fp'
+ export default nextMonday
+}
+
+declare module 'date-fns/esm/fp/nextSaturday/index' {
+ import { nextSaturday } from 'date-fns/esm/fp'
+ export default nextSaturday
+}
+
+declare module 'date-fns/esm/fp/nextSunday/index' {
+ import { nextSunday } from 'date-fns/esm/fp'
+ export default nextSunday
+}
+
+declare module 'date-fns/esm/fp/nextThursday/index' {
+ import { nextThursday } from 'date-fns/esm/fp'
+ export default nextThursday
+}
+
+declare module 'date-fns/esm/fp/nextTuesday/index' {
+ import { nextTuesday } from 'date-fns/esm/fp'
+ export default nextTuesday
+}
+
+declare module 'date-fns/esm/fp/nextWednesday/index' {
+ import { nextWednesday } from 'date-fns/esm/fp'
+ export default nextWednesday
+}
+
+declare module 'date-fns/esm/fp/parse/index' {
+ import { parse } from 'date-fns/esm/fp'
+ export default parse
+}
+
+declare module 'date-fns/esm/fp/parseISO/index' {
+ import { parseISO } from 'date-fns/esm/fp'
+ export default parseISO
+}
+
+declare module 'date-fns/esm/fp/parseISOWithOptions/index' {
+ import { parseISOWithOptions } from 'date-fns/esm/fp'
+ export default parseISOWithOptions
+}
+
+declare module 'date-fns/esm/fp/parseJSON/index' {
+ import { parseJSON } from 'date-fns/esm/fp'
+ export default parseJSON
+}
+
+declare module 'date-fns/esm/fp/parseWithOptions/index' {
+ import { parseWithOptions } from 'date-fns/esm/fp'
+ export default parseWithOptions
+}
+
+declare module 'date-fns/esm/fp/quartersToMonths/index' {
+ import { quartersToMonths } from 'date-fns/esm/fp'
+ export default quartersToMonths
+}
+
+declare module 'date-fns/esm/fp/quartersToYears/index' {
+ import { quartersToYears } from 'date-fns/esm/fp'
+ export default quartersToYears
+}
+
+declare module 'date-fns/esm/fp/roundToNearestMinutes/index' {
+ import { roundToNearestMinutes } from 'date-fns/esm/fp'
+ export default roundToNearestMinutes
+}
+
+declare module 'date-fns/esm/fp/roundToNearestMinutesWithOptions/index' {
+ import { roundToNearestMinutesWithOptions } from 'date-fns/esm/fp'
+ export default roundToNearestMinutesWithOptions
+}
+
+declare module 'date-fns/esm/fp/secondsToHours/index' {
+ import { secondsToHours } from 'date-fns/esm/fp'
+ export default secondsToHours
+}
+
+declare module 'date-fns/esm/fp/secondsToMilliseconds/index' {
+ import { secondsToMilliseconds } from 'date-fns/esm/fp'
+ export default secondsToMilliseconds
+}
+
+declare module 'date-fns/esm/fp/secondsToMinutes/index' {
+ import { secondsToMinutes } from 'date-fns/esm/fp'
+ export default secondsToMinutes
+}
+
+declare module 'date-fns/esm/fp/set/index' {
+ import { set } from 'date-fns/esm/fp'
+ export default set
+}
+
+declare module 'date-fns/esm/fp/setDate/index' {
+ import { setDate } from 'date-fns/esm/fp'
+ export default setDate
+}
+
+declare module 'date-fns/esm/fp/setDay/index' {
+ import { setDay } from 'date-fns/esm/fp'
+ export default setDay
+}
+
+declare module 'date-fns/esm/fp/setDayOfYear/index' {
+ import { setDayOfYear } from 'date-fns/esm/fp'
+ export default setDayOfYear
+}
+
+declare module 'date-fns/esm/fp/setDayWithOptions/index' {
+ import { setDayWithOptions } from 'date-fns/esm/fp'
+ export default setDayWithOptions
+}
+
+declare module 'date-fns/esm/fp/setHours/index' {
+ import { setHours } from 'date-fns/esm/fp'
+ export default setHours
+}
+
+declare module 'date-fns/esm/fp/setISODay/index' {
+ import { setISODay } from 'date-fns/esm/fp'
+ export default setISODay
+}
+
+declare module 'date-fns/esm/fp/setISOWeek/index' {
+ import { setISOWeek } from 'date-fns/esm/fp'
+ export default setISOWeek
+}
+
+declare module 'date-fns/esm/fp/setISOWeekYear/index' {
+ import { setISOWeekYear } from 'date-fns/esm/fp'
+ export default setISOWeekYear
+}
+
+declare module 'date-fns/esm/fp/setMilliseconds/index' {
+ import { setMilliseconds } from 'date-fns/esm/fp'
+ export default setMilliseconds
+}
+
+declare module 'date-fns/esm/fp/setMinutes/index' {
+ import { setMinutes } from 'date-fns/esm/fp'
+ export default setMinutes
+}
+
+declare module 'date-fns/esm/fp/setMonth/index' {
+ import { setMonth } from 'date-fns/esm/fp'
+ export default setMonth
+}
+
+declare module 'date-fns/esm/fp/setQuarter/index' {
+ import { setQuarter } from 'date-fns/esm/fp'
+ export default setQuarter
+}
+
+declare module 'date-fns/esm/fp/setSeconds/index' {
+ import { setSeconds } from 'date-fns/esm/fp'
+ export default setSeconds
+}
+
+declare module 'date-fns/esm/fp/setWeek/index' {
+ import { setWeek } from 'date-fns/esm/fp'
+ export default setWeek
+}
+
+declare module 'date-fns/esm/fp/setWeekWithOptions/index' {
+ import { setWeekWithOptions } from 'date-fns/esm/fp'
+ export default setWeekWithOptions
+}
+
+declare module 'date-fns/esm/fp/setWeekYear/index' {
+ import { setWeekYear } from 'date-fns/esm/fp'
+ export default setWeekYear
+}
+
+declare module 'date-fns/esm/fp/setWeekYearWithOptions/index' {
+ import { setWeekYearWithOptions } from 'date-fns/esm/fp'
+ export default setWeekYearWithOptions
+}
+
+declare module 'date-fns/esm/fp/setYear/index' {
+ import { setYear } from 'date-fns/esm/fp'
+ export default setYear
+}
+
+declare module 'date-fns/esm/fp/startOfDay/index' {
+ import { startOfDay } from 'date-fns/esm/fp'
+ export default startOfDay
+}
+
+declare module 'date-fns/esm/fp/startOfDecade/index' {
+ import { startOfDecade } from 'date-fns/esm/fp'
+ export default startOfDecade
+}
+
+declare module 'date-fns/esm/fp/startOfHour/index' {
+ import { startOfHour } from 'date-fns/esm/fp'
+ export default startOfHour
+}
+
+declare module 'date-fns/esm/fp/startOfISOWeek/index' {
+ import { startOfISOWeek } from 'date-fns/esm/fp'
+ export default startOfISOWeek
+}
+
+declare module 'date-fns/esm/fp/startOfISOWeekYear/index' {
+ import { startOfISOWeekYear } from 'date-fns/esm/fp'
+ export default startOfISOWeekYear
+}
+
+declare module 'date-fns/esm/fp/startOfMinute/index' {
+ import { startOfMinute } from 'date-fns/esm/fp'
+ export default startOfMinute
+}
+
+declare module 'date-fns/esm/fp/startOfMonth/index' {
+ import { startOfMonth } from 'date-fns/esm/fp'
+ export default startOfMonth
+}
+
+declare module 'date-fns/esm/fp/startOfQuarter/index' {
+ import { startOfQuarter } from 'date-fns/esm/fp'
+ export default startOfQuarter
+}
+
+declare module 'date-fns/esm/fp/startOfSecond/index' {
+ import { startOfSecond } from 'date-fns/esm/fp'
+ export default startOfSecond
+}
+
+declare module 'date-fns/esm/fp/startOfWeek/index' {
+ import { startOfWeek } from 'date-fns/esm/fp'
+ export default startOfWeek
+}
+
+declare module 'date-fns/esm/fp/startOfWeekWithOptions/index' {
+ import { startOfWeekWithOptions } from 'date-fns/esm/fp'
+ export default startOfWeekWithOptions
+}
+
+declare module 'date-fns/esm/fp/startOfWeekYear/index' {
+ import { startOfWeekYear } from 'date-fns/esm/fp'
+ export default startOfWeekYear
+}
+
+declare module 'date-fns/esm/fp/startOfWeekYearWithOptions/index' {
+ import { startOfWeekYearWithOptions } from 'date-fns/esm/fp'
+ export default startOfWeekYearWithOptions
+}
+
+declare module 'date-fns/esm/fp/startOfYear/index' {
+ import { startOfYear } from 'date-fns/esm/fp'
+ export default startOfYear
+}
+
+declare module 'date-fns/esm/fp/sub/index' {
+ import { sub } from 'date-fns/esm/fp'
+ export default sub
+}
+
+declare module 'date-fns/esm/fp/subBusinessDays/index' {
+ import { subBusinessDays } from 'date-fns/esm/fp'
+ export default subBusinessDays
+}
+
+declare module 'date-fns/esm/fp/subDays/index' {
+ import { subDays } from 'date-fns/esm/fp'
+ export default subDays
+}
+
+declare module 'date-fns/esm/fp/subHours/index' {
+ import { subHours } from 'date-fns/esm/fp'
+ export default subHours
+}
+
+declare module 'date-fns/esm/fp/subISOWeekYears/index' {
+ import { subISOWeekYears } from 'date-fns/esm/fp'
+ export default subISOWeekYears
+}
+
+declare module 'date-fns/esm/fp/subMilliseconds/index' {
+ import { subMilliseconds } from 'date-fns/esm/fp'
+ export default subMilliseconds
+}
+
+declare module 'date-fns/esm/fp/subMinutes/index' {
+ import { subMinutes } from 'date-fns/esm/fp'
+ export default subMinutes
+}
+
+declare module 'date-fns/esm/fp/subMonths/index' {
+ import { subMonths } from 'date-fns/esm/fp'
+ export default subMonths
+}
+
+declare module 'date-fns/esm/fp/subQuarters/index' {
+ import { subQuarters } from 'date-fns/esm/fp'
+ export default subQuarters
+}
+
+declare module 'date-fns/esm/fp/subSeconds/index' {
+ import { subSeconds } from 'date-fns/esm/fp'
+ export default subSeconds
+}
+
+declare module 'date-fns/esm/fp/subWeeks/index' {
+ import { subWeeks } from 'date-fns/esm/fp'
+ export default subWeeks
+}
+
+declare module 'date-fns/esm/fp/subYears/index' {
+ import { subYears } from 'date-fns/esm/fp'
+ export default subYears
+}
+
+declare module 'date-fns/esm/fp/toDate/index' {
+ import { toDate } from 'date-fns/esm/fp'
+ export default toDate
+}
+
+declare module 'date-fns/esm/fp/weeksToDays/index' {
+ import { weeksToDays } from 'date-fns/esm/fp'
+ export default weeksToDays
+}
+
+declare module 'date-fns/esm/fp/yearsToMonths/index' {
+ import { yearsToMonths } from 'date-fns/esm/fp'
+ export default yearsToMonths
+}
+
+declare module 'date-fns/esm/fp/yearsToQuarters/index' {
+ import { yearsToQuarters } from 'date-fns/esm/fp'
+ export default yearsToQuarters
+}
+
+declare module 'date-fns/esm/fp/add/index.js' {
+ import { add } from 'date-fns/esm/fp'
+ export default add
+}
+
+declare module 'date-fns/esm/fp/addBusinessDays/index.js' {
+ import { addBusinessDays } from 'date-fns/esm/fp'
+ export default addBusinessDays
+}
+
+declare module 'date-fns/esm/fp/addDays/index.js' {
+ import { addDays } from 'date-fns/esm/fp'
+ export default addDays
+}
+
+declare module 'date-fns/esm/fp/addHours/index.js' {
+ import { addHours } from 'date-fns/esm/fp'
+ export default addHours
+}
+
+declare module 'date-fns/esm/fp/addISOWeekYears/index.js' {
+ import { addISOWeekYears } from 'date-fns/esm/fp'
+ export default addISOWeekYears
+}
+
+declare module 'date-fns/esm/fp/addMilliseconds/index.js' {
+ import { addMilliseconds } from 'date-fns/esm/fp'
+ export default addMilliseconds
+}
+
+declare module 'date-fns/esm/fp/addMinutes/index.js' {
+ import { addMinutes } from 'date-fns/esm/fp'
+ export default addMinutes
+}
+
+declare module 'date-fns/esm/fp/addMonths/index.js' {
+ import { addMonths } from 'date-fns/esm/fp'
+ export default addMonths
+}
+
+declare module 'date-fns/esm/fp/addQuarters/index.js' {
+ import { addQuarters } from 'date-fns/esm/fp'
+ export default addQuarters
+}
+
+declare module 'date-fns/esm/fp/addSeconds/index.js' {
+ import { addSeconds } from 'date-fns/esm/fp'
+ export default addSeconds
+}
+
+declare module 'date-fns/esm/fp/addWeeks/index.js' {
+ import { addWeeks } from 'date-fns/esm/fp'
+ export default addWeeks
+}
+
+declare module 'date-fns/esm/fp/addYears/index.js' {
+ import { addYears } from 'date-fns/esm/fp'
+ export default addYears
+}
+
+declare module 'date-fns/esm/fp/areIntervalsOverlapping/index.js' {
+ import { areIntervalsOverlapping } from 'date-fns/esm/fp'
+ export default areIntervalsOverlapping
+}
+
+declare module 'date-fns/esm/fp/areIntervalsOverlappingWithOptions/index.js' {
+ import { areIntervalsOverlappingWithOptions } from 'date-fns/esm/fp'
+ export default areIntervalsOverlappingWithOptions
+}
+
+declare module 'date-fns/esm/fp/closestIndexTo/index.js' {
+ import { closestIndexTo } from 'date-fns/esm/fp'
+ export default closestIndexTo
+}
+
+declare module 'date-fns/esm/fp/closestTo/index.js' {
+ import { closestTo } from 'date-fns/esm/fp'
+ export default closestTo
+}
+
+declare module 'date-fns/esm/fp/compareAsc/index.js' {
+ import { compareAsc } from 'date-fns/esm/fp'
+ export default compareAsc
+}
+
+declare module 'date-fns/esm/fp/compareDesc/index.js' {
+ import { compareDesc } from 'date-fns/esm/fp'
+ export default compareDesc
+}
+
+declare module 'date-fns/esm/fp/daysToWeeks/index.js' {
+ import { daysToWeeks } from 'date-fns/esm/fp'
+ export default daysToWeeks
+}
+
+declare module 'date-fns/esm/fp/differenceInBusinessDays/index.js' {
+ import { differenceInBusinessDays } from 'date-fns/esm/fp'
+ export default differenceInBusinessDays
+}
+
+declare module 'date-fns/esm/fp/differenceInCalendarDays/index.js' {
+ import { differenceInCalendarDays } from 'date-fns/esm/fp'
+ export default differenceInCalendarDays
+}
+
+declare module 'date-fns/esm/fp/differenceInCalendarISOWeeks/index.js' {
+ import { differenceInCalendarISOWeeks } from 'date-fns/esm/fp'
+ export default differenceInCalendarISOWeeks
+}
+
+declare module 'date-fns/esm/fp/differenceInCalendarISOWeekYears/index.js' {
+ import { differenceInCalendarISOWeekYears } from 'date-fns/esm/fp'
+ export default differenceInCalendarISOWeekYears
+}
+
+declare module 'date-fns/esm/fp/differenceInCalendarMonths/index.js' {
+ import { differenceInCalendarMonths } from 'date-fns/esm/fp'
+ export default differenceInCalendarMonths
+}
+
+declare module 'date-fns/esm/fp/differenceInCalendarQuarters/index.js' {
+ import { differenceInCalendarQuarters } from 'date-fns/esm/fp'
+ export default differenceInCalendarQuarters
+}
+
+declare module 'date-fns/esm/fp/differenceInCalendarWeeks/index.js' {
+ import { differenceInCalendarWeeks } from 'date-fns/esm/fp'
+ export default differenceInCalendarWeeks
+}
+
+declare module 'date-fns/esm/fp/differenceInCalendarWeeksWithOptions/index.js' {
+ import { differenceInCalendarWeeksWithOptions } from 'date-fns/esm/fp'
+ export default differenceInCalendarWeeksWithOptions
+}
+
+declare module 'date-fns/esm/fp/differenceInCalendarYears/index.js' {
+ import { differenceInCalendarYears } from 'date-fns/esm/fp'
+ export default differenceInCalendarYears
+}
+
+declare module 'date-fns/esm/fp/differenceInDays/index.js' {
+ import { differenceInDays } from 'date-fns/esm/fp'
+ export default differenceInDays
+}
+
+declare module 'date-fns/esm/fp/differenceInHours/index.js' {
+ import { differenceInHours } from 'date-fns/esm/fp'
+ export default differenceInHours
+}
+
+declare module 'date-fns/esm/fp/differenceInISOWeekYears/index.js' {
+ import { differenceInISOWeekYears } from 'date-fns/esm/fp'
+ export default differenceInISOWeekYears
+}
+
+declare module 'date-fns/esm/fp/differenceInMilliseconds/index.js' {
+ import { differenceInMilliseconds } from 'date-fns/esm/fp'
+ export default differenceInMilliseconds
+}
+
+declare module 'date-fns/esm/fp/differenceInMinutes/index.js' {
+ import { differenceInMinutes } from 'date-fns/esm/fp'
+ export default differenceInMinutes
+}
+
+declare module 'date-fns/esm/fp/differenceInMonths/index.js' {
+ import { differenceInMonths } from 'date-fns/esm/fp'
+ export default differenceInMonths
+}
+
+declare module 'date-fns/esm/fp/differenceInQuarters/index.js' {
+ import { differenceInQuarters } from 'date-fns/esm/fp'
+ export default differenceInQuarters
+}
+
+declare module 'date-fns/esm/fp/differenceInSeconds/index.js' {
+ import { differenceInSeconds } from 'date-fns/esm/fp'
+ export default differenceInSeconds
+}
+
+declare module 'date-fns/esm/fp/differenceInWeeks/index.js' {
+ import { differenceInWeeks } from 'date-fns/esm/fp'
+ export default differenceInWeeks
+}
+
+declare module 'date-fns/esm/fp/differenceInYears/index.js' {
+ import { differenceInYears } from 'date-fns/esm/fp'
+ export default differenceInYears
+}
+
+declare module 'date-fns/esm/fp/eachDayOfInterval/index.js' {
+ import { eachDayOfInterval } from 'date-fns/esm/fp'
+ export default eachDayOfInterval
+}
+
+declare module 'date-fns/esm/fp/eachDayOfIntervalWithOptions/index.js' {
+ import { eachDayOfIntervalWithOptions } from 'date-fns/esm/fp'
+ export default eachDayOfIntervalWithOptions
+}
+
+declare module 'date-fns/esm/fp/eachHourOfInterval/index.js' {
+ import { eachHourOfInterval } from 'date-fns/esm/fp'
+ export default eachHourOfInterval
+}
+
+declare module 'date-fns/esm/fp/eachHourOfIntervalWithOptions/index.js' {
+ import { eachHourOfIntervalWithOptions } from 'date-fns/esm/fp'
+ export default eachHourOfIntervalWithOptions
+}
+
+declare module 'date-fns/esm/fp/eachMinuteOfInterval/index.js' {
+ import { eachMinuteOfInterval } from 'date-fns/esm/fp'
+ export default eachMinuteOfInterval
+}
+
+declare module 'date-fns/esm/fp/eachMinuteOfIntervalWithOptions/index.js' {
+ import { eachMinuteOfIntervalWithOptions } from 'date-fns/esm/fp'
+ export default eachMinuteOfIntervalWithOptions
+}
+
+declare module 'date-fns/esm/fp/eachMonthOfInterval/index.js' {
+ import { eachMonthOfInterval } from 'date-fns/esm/fp'
+ export default eachMonthOfInterval
+}
+
+declare module 'date-fns/esm/fp/eachQuarterOfInterval/index.js' {
+ import { eachQuarterOfInterval } from 'date-fns/esm/fp'
+ export default eachQuarterOfInterval
+}
+
+declare module 'date-fns/esm/fp/eachWeekendOfInterval/index.js' {
+ import { eachWeekendOfInterval } from 'date-fns/esm/fp'
+ export default eachWeekendOfInterval
+}
+
+declare module 'date-fns/esm/fp/eachWeekendOfMonth/index.js' {
+ import { eachWeekendOfMonth } from 'date-fns/esm/fp'
+ export default eachWeekendOfMonth
+}
+
+declare module 'date-fns/esm/fp/eachWeekendOfYear/index.js' {
+ import { eachWeekendOfYear } from 'date-fns/esm/fp'
+ export default eachWeekendOfYear
+}
+
+declare module 'date-fns/esm/fp/eachWeekOfInterval/index.js' {
+ import { eachWeekOfInterval } from 'date-fns/esm/fp'
+ export default eachWeekOfInterval
+}
+
+declare module 'date-fns/esm/fp/eachWeekOfIntervalWithOptions/index.js' {
+ import { eachWeekOfIntervalWithOptions } from 'date-fns/esm/fp'
+ export default eachWeekOfIntervalWithOptions
+}
+
+declare module 'date-fns/esm/fp/eachYearOfInterval/index.js' {
+ import { eachYearOfInterval } from 'date-fns/esm/fp'
+ export default eachYearOfInterval
+}
+
+declare module 'date-fns/esm/fp/endOfDay/index.js' {
+ import { endOfDay } from 'date-fns/esm/fp'
+ export default endOfDay
+}
+
+declare module 'date-fns/esm/fp/endOfDecade/index.js' {
+ import { endOfDecade } from 'date-fns/esm/fp'
+ export default endOfDecade
+}
+
+declare module 'date-fns/esm/fp/endOfDecadeWithOptions/index.js' {
+ import { endOfDecadeWithOptions } from 'date-fns/esm/fp'
+ export default endOfDecadeWithOptions
+}
+
+declare module 'date-fns/esm/fp/endOfHour/index.js' {
+ import { endOfHour } from 'date-fns/esm/fp'
+ export default endOfHour
+}
+
+declare module 'date-fns/esm/fp/endOfISOWeek/index.js' {
+ import { endOfISOWeek } from 'date-fns/esm/fp'
+ export default endOfISOWeek
+}
+
+declare module 'date-fns/esm/fp/endOfISOWeekYear/index.js' {
+ import { endOfISOWeekYear } from 'date-fns/esm/fp'
+ export default endOfISOWeekYear
+}
+
+declare module 'date-fns/esm/fp/endOfMinute/index.js' {
+ import { endOfMinute } from 'date-fns/esm/fp'
+ export default endOfMinute
+}
+
+declare module 'date-fns/esm/fp/endOfMonth/index.js' {
+ import { endOfMonth } from 'date-fns/esm/fp'
+ export default endOfMonth
+}
+
+declare module 'date-fns/esm/fp/endOfQuarter/index.js' {
+ import { endOfQuarter } from 'date-fns/esm/fp'
+ export default endOfQuarter
+}
+
+declare module 'date-fns/esm/fp/endOfSecond/index.js' {
+ import { endOfSecond } from 'date-fns/esm/fp'
+ export default endOfSecond
+}
+
+declare module 'date-fns/esm/fp/endOfWeek/index.js' {
+ import { endOfWeek } from 'date-fns/esm/fp'
+ export default endOfWeek
+}
+
+declare module 'date-fns/esm/fp/endOfWeekWithOptions/index.js' {
+ import { endOfWeekWithOptions } from 'date-fns/esm/fp'
+ export default endOfWeekWithOptions
+}
+
+declare module 'date-fns/esm/fp/endOfYear/index.js' {
+ import { endOfYear } from 'date-fns/esm/fp'
+ export default endOfYear
+}
+
+declare module 'date-fns/esm/fp/format/index.js' {
+ import { format } from 'date-fns/esm/fp'
+ export default format
+}
+
+declare module 'date-fns/esm/fp/formatDistance/index.js' {
+ import { formatDistance } from 'date-fns/esm/fp'
+ export default formatDistance
+}
+
+declare module 'date-fns/esm/fp/formatDistanceStrict/index.js' {
+ import { formatDistanceStrict } from 'date-fns/esm/fp'
+ export default formatDistanceStrict
+}
+
+declare module 'date-fns/esm/fp/formatDistanceStrictWithOptions/index.js' {
+ import { formatDistanceStrictWithOptions } from 'date-fns/esm/fp'
+ export default formatDistanceStrictWithOptions
+}
+
+declare module 'date-fns/esm/fp/formatDistanceWithOptions/index.js' {
+ import { formatDistanceWithOptions } from 'date-fns/esm/fp'
+ export default formatDistanceWithOptions
+}
+
+declare module 'date-fns/esm/fp/formatDuration/index.js' {
+ import { formatDuration } from 'date-fns/esm/fp'
+ export default formatDuration
+}
+
+declare module 'date-fns/esm/fp/formatDurationWithOptions/index.js' {
+ import { formatDurationWithOptions } from 'date-fns/esm/fp'
+ export default formatDurationWithOptions
+}
+
+declare module 'date-fns/esm/fp/formatISO/index.js' {
+ import { formatISO } from 'date-fns/esm/fp'
+ export default formatISO
+}
+
+declare module 'date-fns/esm/fp/formatISO9075/index.js' {
+ import { formatISO9075 } from 'date-fns/esm/fp'
+ export default formatISO9075
+}
+
+declare module 'date-fns/esm/fp/formatISO9075WithOptions/index.js' {
+ import { formatISO9075WithOptions } from 'date-fns/esm/fp'
+ export default formatISO9075WithOptions
+}
+
+declare module 'date-fns/esm/fp/formatISODuration/index.js' {
+ import { formatISODuration } from 'date-fns/esm/fp'
+ export default formatISODuration
+}
+
+declare module 'date-fns/esm/fp/formatISOWithOptions/index.js' {
+ import { formatISOWithOptions } from 'date-fns/esm/fp'
+ export default formatISOWithOptions
+}
+
+declare module 'date-fns/esm/fp/formatRelative/index.js' {
+ import { formatRelative } from 'date-fns/esm/fp'
+ export default formatRelative
+}
+
+declare module 'date-fns/esm/fp/formatRelativeWithOptions/index.js' {
+ import { formatRelativeWithOptions } from 'date-fns/esm/fp'
+ export default formatRelativeWithOptions
+}
+
+declare module 'date-fns/esm/fp/formatRFC3339/index.js' {
+ import { formatRFC3339 } from 'date-fns/esm/fp'
+ export default formatRFC3339
+}
+
+declare module 'date-fns/esm/fp/formatRFC3339WithOptions/index.js' {
+ import { formatRFC3339WithOptions } from 'date-fns/esm/fp'
+ export default formatRFC3339WithOptions
+}
+
+declare module 'date-fns/esm/fp/formatRFC7231/index.js' {
+ import { formatRFC7231 } from 'date-fns/esm/fp'
+ export default formatRFC7231
+}
+
+declare module 'date-fns/esm/fp/formatWithOptions/index.js' {
+ import { formatWithOptions } from 'date-fns/esm/fp'
+ export default formatWithOptions
+}
+
+declare module 'date-fns/esm/fp/fromUnixTime/index.js' {
+ import { fromUnixTime } from 'date-fns/esm/fp'
+ export default fromUnixTime
+}
+
+declare module 'date-fns/esm/fp/getDate/index.js' {
+ import { getDate } from 'date-fns/esm/fp'
+ export default getDate
+}
+
+declare module 'date-fns/esm/fp/getDay/index.js' {
+ import { getDay } from 'date-fns/esm/fp'
+ export default getDay
+}
+
+declare module 'date-fns/esm/fp/getDayOfYear/index.js' {
+ import { getDayOfYear } from 'date-fns/esm/fp'
+ export default getDayOfYear
+}
+
+declare module 'date-fns/esm/fp/getDaysInMonth/index.js' {
+ import { getDaysInMonth } from 'date-fns/esm/fp'
+ export default getDaysInMonth
+}
+
+declare module 'date-fns/esm/fp/getDaysInYear/index.js' {
+ import { getDaysInYear } from 'date-fns/esm/fp'
+ export default getDaysInYear
+}
+
+declare module 'date-fns/esm/fp/getDecade/index.js' {
+ import { getDecade } from 'date-fns/esm/fp'
+ export default getDecade
+}
+
+declare module 'date-fns/esm/fp/getHours/index.js' {
+ import { getHours } from 'date-fns/esm/fp'
+ export default getHours
+}
+
+declare module 'date-fns/esm/fp/getISODay/index.js' {
+ import { getISODay } from 'date-fns/esm/fp'
+ export default getISODay
+}
+
+declare module 'date-fns/esm/fp/getISOWeek/index.js' {
+ import { getISOWeek } from 'date-fns/esm/fp'
+ export default getISOWeek
+}
+
+declare module 'date-fns/esm/fp/getISOWeeksInYear/index.js' {
+ import { getISOWeeksInYear } from 'date-fns/esm/fp'
+ export default getISOWeeksInYear
+}
+
+declare module 'date-fns/esm/fp/getISOWeekYear/index.js' {
+ import { getISOWeekYear } from 'date-fns/esm/fp'
+ export default getISOWeekYear
+}
+
+declare module 'date-fns/esm/fp/getMilliseconds/index.js' {
+ import { getMilliseconds } from 'date-fns/esm/fp'
+ export default getMilliseconds
+}
+
+declare module 'date-fns/esm/fp/getMinutes/index.js' {
+ import { getMinutes } from 'date-fns/esm/fp'
+ export default getMinutes
+}
+
+declare module 'date-fns/esm/fp/getMonth/index.js' {
+ import { getMonth } from 'date-fns/esm/fp'
+ export default getMonth
+}
+
+declare module 'date-fns/esm/fp/getOverlappingDaysInIntervals/index.js' {
+ import { getOverlappingDaysInIntervals } from 'date-fns/esm/fp'
+ export default getOverlappingDaysInIntervals
+}
+
+declare module 'date-fns/esm/fp/getQuarter/index.js' {
+ import { getQuarter } from 'date-fns/esm/fp'
+ export default getQuarter
+}
+
+declare module 'date-fns/esm/fp/getSeconds/index.js' {
+ import { getSeconds } from 'date-fns/esm/fp'
+ export default getSeconds
+}
+
+declare module 'date-fns/esm/fp/getTime/index.js' {
+ import { getTime } from 'date-fns/esm/fp'
+ export default getTime
+}
+
+declare module 'date-fns/esm/fp/getUnixTime/index.js' {
+ import { getUnixTime } from 'date-fns/esm/fp'
+ export default getUnixTime
+}
+
+declare module 'date-fns/esm/fp/getWeek/index.js' {
+ import { getWeek } from 'date-fns/esm/fp'
+ export default getWeek
+}
+
+declare module 'date-fns/esm/fp/getWeekOfMonth/index.js' {
+ import { getWeekOfMonth } from 'date-fns/esm/fp'
+ export default getWeekOfMonth
+}
+
+declare module 'date-fns/esm/fp/getWeekOfMonthWithOptions/index.js' {
+ import { getWeekOfMonthWithOptions } from 'date-fns/esm/fp'
+ export default getWeekOfMonthWithOptions
+}
+
+declare module 'date-fns/esm/fp/getWeeksInMonth/index.js' {
+ import { getWeeksInMonth } from 'date-fns/esm/fp'
+ export default getWeeksInMonth
+}
+
+declare module 'date-fns/esm/fp/getWeeksInMonthWithOptions/index.js' {
+ import { getWeeksInMonthWithOptions } from 'date-fns/esm/fp'
+ export default getWeeksInMonthWithOptions
+}
+
+declare module 'date-fns/esm/fp/getWeekWithOptions/index.js' {
+ import { getWeekWithOptions } from 'date-fns/esm/fp'
+ export default getWeekWithOptions
+}
+
+declare module 'date-fns/esm/fp/getWeekYear/index.js' {
+ import { getWeekYear } from 'date-fns/esm/fp'
+ export default getWeekYear
+}
+
+declare module 'date-fns/esm/fp/getWeekYearWithOptions/index.js' {
+ import { getWeekYearWithOptions } from 'date-fns/esm/fp'
+ export default getWeekYearWithOptions
+}
+
+declare module 'date-fns/esm/fp/getYear/index.js' {
+ import { getYear } from 'date-fns/esm/fp'
+ export default getYear
+}
+
+declare module 'date-fns/esm/fp/hoursToMilliseconds/index.js' {
+ import { hoursToMilliseconds } from 'date-fns/esm/fp'
+ export default hoursToMilliseconds
+}
+
+declare module 'date-fns/esm/fp/hoursToMinutes/index.js' {
+ import { hoursToMinutes } from 'date-fns/esm/fp'
+ export default hoursToMinutes
+}
+
+declare module 'date-fns/esm/fp/hoursToSeconds/index.js' {
+ import { hoursToSeconds } from 'date-fns/esm/fp'
+ export default hoursToSeconds
+}
+
+declare module 'date-fns/esm/fp/intervalToDuration/index.js' {
+ import { intervalToDuration } from 'date-fns/esm/fp'
+ export default intervalToDuration
+}
+
+declare module 'date-fns/esm/fp/intlFormat/index.js' {
+ import { intlFormat } from 'date-fns/esm/fp'
+ export default intlFormat
+}
+
+declare module 'date-fns/esm/fp/isAfter/index.js' {
+ import { isAfter } from 'date-fns/esm/fp'
+ export default isAfter
+}
+
+declare module 'date-fns/esm/fp/isBefore/index.js' {
+ import { isBefore } from 'date-fns/esm/fp'
+ export default isBefore
+}
+
+declare module 'date-fns/esm/fp/isDate/index.js' {
+ import { isDate } from 'date-fns/esm/fp'
+ export default isDate
+}
+
+declare module 'date-fns/esm/fp/isEqual/index.js' {
+ import { isEqual } from 'date-fns/esm/fp'
+ export default isEqual
+}
+
+declare module 'date-fns/esm/fp/isExists/index.js' {
+ import { isExists } from 'date-fns/esm/fp'
+ export default isExists
+}
+
+declare module 'date-fns/esm/fp/isFirstDayOfMonth/index.js' {
+ import { isFirstDayOfMonth } from 'date-fns/esm/fp'
+ export default isFirstDayOfMonth
+}
+
+declare module 'date-fns/esm/fp/isFriday/index.js' {
+ import { isFriday } from 'date-fns/esm/fp'
+ export default isFriday
+}
+
+declare module 'date-fns/esm/fp/isLastDayOfMonth/index.js' {
+ import { isLastDayOfMonth } from 'date-fns/esm/fp'
+ export default isLastDayOfMonth
+}
+
+declare module 'date-fns/esm/fp/isLeapYear/index.js' {
+ import { isLeapYear } from 'date-fns/esm/fp'
+ export default isLeapYear
+}
+
+declare module 'date-fns/esm/fp/isMatch/index.js' {
+ import { isMatch } from 'date-fns/esm/fp'
+ export default isMatch
+}
+
+declare module 'date-fns/esm/fp/isMatchWithOptions/index.js' {
+ import { isMatchWithOptions } from 'date-fns/esm/fp'
+ export default isMatchWithOptions
+}
+
+declare module 'date-fns/esm/fp/isMonday/index.js' {
+ import { isMonday } from 'date-fns/esm/fp'
+ export default isMonday
+}
+
+declare module 'date-fns/esm/fp/isSameDay/index.js' {
+ import { isSameDay } from 'date-fns/esm/fp'
+ export default isSameDay
+}
+
+declare module 'date-fns/esm/fp/isSameHour/index.js' {
+ import { isSameHour } from 'date-fns/esm/fp'
+ export default isSameHour
+}
+
+declare module 'date-fns/esm/fp/isSameISOWeek/index.js' {
+ import { isSameISOWeek } from 'date-fns/esm/fp'
+ export default isSameISOWeek
+}
+
+declare module 'date-fns/esm/fp/isSameISOWeekYear/index.js' {
+ import { isSameISOWeekYear } from 'date-fns/esm/fp'
+ export default isSameISOWeekYear
+}
+
+declare module 'date-fns/esm/fp/isSameMinute/index.js' {
+ import { isSameMinute } from 'date-fns/esm/fp'
+ export default isSameMinute
+}
+
+declare module 'date-fns/esm/fp/isSameMonth/index.js' {
+ import { isSameMonth } from 'date-fns/esm/fp'
+ export default isSameMonth
+}
+
+declare module 'date-fns/esm/fp/isSameQuarter/index.js' {
+ import { isSameQuarter } from 'date-fns/esm/fp'
+ export default isSameQuarter
+}
+
+declare module 'date-fns/esm/fp/isSameSecond/index.js' {
+ import { isSameSecond } from 'date-fns/esm/fp'
+ export default isSameSecond
+}
+
+declare module 'date-fns/esm/fp/isSameWeek/index.js' {
+ import { isSameWeek } from 'date-fns/esm/fp'
+ export default isSameWeek
+}
+
+declare module 'date-fns/esm/fp/isSameWeekWithOptions/index.js' {
+ import { isSameWeekWithOptions } from 'date-fns/esm/fp'
+ export default isSameWeekWithOptions
+}
+
+declare module 'date-fns/esm/fp/isSameYear/index.js' {
+ import { isSameYear } from 'date-fns/esm/fp'
+ export default isSameYear
+}
+
+declare module 'date-fns/esm/fp/isSaturday/index.js' {
+ import { isSaturday } from 'date-fns/esm/fp'
+ export default isSaturday
+}
+
+declare module 'date-fns/esm/fp/isSunday/index.js' {
+ import { isSunday } from 'date-fns/esm/fp'
+ export default isSunday
+}
+
+declare module 'date-fns/esm/fp/isThursday/index.js' {
+ import { isThursday } from 'date-fns/esm/fp'
+ export default isThursday
+}
+
+declare module 'date-fns/esm/fp/isTuesday/index.js' {
+ import { isTuesday } from 'date-fns/esm/fp'
+ export default isTuesday
+}
+
+declare module 'date-fns/esm/fp/isValid/index.js' {
+ import { isValid } from 'date-fns/esm/fp'
+ export default isValid
+}
+
+declare module 'date-fns/esm/fp/isWednesday/index.js' {
+ import { isWednesday } from 'date-fns/esm/fp'
+ export default isWednesday
+}
+
+declare module 'date-fns/esm/fp/isWeekend/index.js' {
+ import { isWeekend } from 'date-fns/esm/fp'
+ export default isWeekend
+}
+
+declare module 'date-fns/esm/fp/isWithinInterval/index.js' {
+ import { isWithinInterval } from 'date-fns/esm/fp'
+ export default isWithinInterval
+}
+
+declare module 'date-fns/esm/fp/lastDayOfDecade/index.js' {
+ import { lastDayOfDecade } from 'date-fns/esm/fp'
+ export default lastDayOfDecade
+}
+
+declare module 'date-fns/esm/fp/lastDayOfISOWeek/index.js' {
+ import { lastDayOfISOWeek } from 'date-fns/esm/fp'
+ export default lastDayOfISOWeek
+}
+
+declare module 'date-fns/esm/fp/lastDayOfISOWeekYear/index.js' {
+ import { lastDayOfISOWeekYear } from 'date-fns/esm/fp'
+ export default lastDayOfISOWeekYear
+}
+
+declare module 'date-fns/esm/fp/lastDayOfMonth/index.js' {
+ import { lastDayOfMonth } from 'date-fns/esm/fp'
+ export default lastDayOfMonth
+}
+
+declare module 'date-fns/esm/fp/lastDayOfQuarter/index.js' {
+ import { lastDayOfQuarter } from 'date-fns/esm/fp'
+ export default lastDayOfQuarter
+}
+
+declare module 'date-fns/esm/fp/lastDayOfQuarterWithOptions/index.js' {
+ import { lastDayOfQuarterWithOptions } from 'date-fns/esm/fp'
+ export default lastDayOfQuarterWithOptions
+}
+
+declare module 'date-fns/esm/fp/lastDayOfWeek/index.js' {
+ import { lastDayOfWeek } from 'date-fns/esm/fp'
+ export default lastDayOfWeek
+}
+
+declare module 'date-fns/esm/fp/lastDayOfWeekWithOptions/index.js' {
+ import { lastDayOfWeekWithOptions } from 'date-fns/esm/fp'
+ export default lastDayOfWeekWithOptions
+}
+
+declare module 'date-fns/esm/fp/lastDayOfYear/index.js' {
+ import { lastDayOfYear } from 'date-fns/esm/fp'
+ export default lastDayOfYear
+}
+
+declare module 'date-fns/esm/fp/lightFormat/index.js' {
+ import { lightFormat } from 'date-fns/esm/fp'
+ export default lightFormat
+}
+
+declare module 'date-fns/esm/fp/max/index.js' {
+ import { max } from 'date-fns/esm/fp'
+ export default max
+}
+
+declare module 'date-fns/esm/fp/milliseconds/index.js' {
+ import { milliseconds } from 'date-fns/esm/fp'
+ export default milliseconds
+}
+
+declare module 'date-fns/esm/fp/millisecondsToHours/index.js' {
+ import { millisecondsToHours } from 'date-fns/esm/fp'
+ export default millisecondsToHours
+}
+
+declare module 'date-fns/esm/fp/millisecondsToMinutes/index.js' {
+ import { millisecondsToMinutes } from 'date-fns/esm/fp'
+ export default millisecondsToMinutes
+}
+
+declare module 'date-fns/esm/fp/millisecondsToSeconds/index.js' {
+ import { millisecondsToSeconds } from 'date-fns/esm/fp'
+ export default millisecondsToSeconds
+}
+
+declare module 'date-fns/esm/fp/min/index.js' {
+ import { min } from 'date-fns/esm/fp'
+ export default min
+}
+
+declare module 'date-fns/esm/fp/minutesToHours/index.js' {
+ import { minutesToHours } from 'date-fns/esm/fp'
+ export default minutesToHours
+}
+
+declare module 'date-fns/esm/fp/minutesToMilliseconds/index.js' {
+ import { minutesToMilliseconds } from 'date-fns/esm/fp'
+ export default minutesToMilliseconds
+}
+
+declare module 'date-fns/esm/fp/minutesToSeconds/index.js' {
+ import { minutesToSeconds } from 'date-fns/esm/fp'
+ export default minutesToSeconds
+}
+
+declare module 'date-fns/esm/fp/monthsToQuarters/index.js' {
+ import { monthsToQuarters } from 'date-fns/esm/fp'
+ export default monthsToQuarters
+}
+
+declare module 'date-fns/esm/fp/monthsToYears/index.js' {
+ import { monthsToYears } from 'date-fns/esm/fp'
+ export default monthsToYears
+}
+
+declare module 'date-fns/esm/fp/nextDay/index.js' {
+ import { nextDay } from 'date-fns/esm/fp'
+ export default nextDay
+}
+
+declare module 'date-fns/esm/fp/nextFriday/index.js' {
+ import { nextFriday } from 'date-fns/esm/fp'
+ export default nextFriday
+}
+
+declare module 'date-fns/esm/fp/nextMonday/index.js' {
+ import { nextMonday } from 'date-fns/esm/fp'
+ export default nextMonday
+}
+
+declare module 'date-fns/esm/fp/nextSaturday/index.js' {
+ import { nextSaturday } from 'date-fns/esm/fp'
+ export default nextSaturday
+}
+
+declare module 'date-fns/esm/fp/nextSunday/index.js' {
+ import { nextSunday } from 'date-fns/esm/fp'
+ export default nextSunday
+}
+
+declare module 'date-fns/esm/fp/nextThursday/index.js' {
+ import { nextThursday } from 'date-fns/esm/fp'
+ export default nextThursday
+}
+
+declare module 'date-fns/esm/fp/nextTuesday/index.js' {
+ import { nextTuesday } from 'date-fns/esm/fp'
+ export default nextTuesday
+}
+
+declare module 'date-fns/esm/fp/nextWednesday/index.js' {
+ import { nextWednesday } from 'date-fns/esm/fp'
+ export default nextWednesday
+}
+
+declare module 'date-fns/esm/fp/parse/index.js' {
+ import { parse } from 'date-fns/esm/fp'
+ export default parse
+}
+
+declare module 'date-fns/esm/fp/parseISO/index.js' {
+ import { parseISO } from 'date-fns/esm/fp'
+ export default parseISO
+}
+
+declare module 'date-fns/esm/fp/parseISOWithOptions/index.js' {
+ import { parseISOWithOptions } from 'date-fns/esm/fp'
+ export default parseISOWithOptions
+}
+
+declare module 'date-fns/esm/fp/parseJSON/index.js' {
+ import { parseJSON } from 'date-fns/esm/fp'
+ export default parseJSON
+}
+
+declare module 'date-fns/esm/fp/parseWithOptions/index.js' {
+ import { parseWithOptions } from 'date-fns/esm/fp'
+ export default parseWithOptions
+}
+
+declare module 'date-fns/esm/fp/quartersToMonths/index.js' {
+ import { quartersToMonths } from 'date-fns/esm/fp'
+ export default quartersToMonths
+}
+
+declare module 'date-fns/esm/fp/quartersToYears/index.js' {
+ import { quartersToYears } from 'date-fns/esm/fp'
+ export default quartersToYears
+}
+
+declare module 'date-fns/esm/fp/roundToNearestMinutes/index.js' {
+ import { roundToNearestMinutes } from 'date-fns/esm/fp'
+ export default roundToNearestMinutes
+}
+
+declare module 'date-fns/esm/fp/roundToNearestMinutesWithOptions/index.js' {
+ import { roundToNearestMinutesWithOptions } from 'date-fns/esm/fp'
+ export default roundToNearestMinutesWithOptions
+}
+
+declare module 'date-fns/esm/fp/secondsToHours/index.js' {
+ import { secondsToHours } from 'date-fns/esm/fp'
+ export default secondsToHours
+}
+
+declare module 'date-fns/esm/fp/secondsToMilliseconds/index.js' {
+ import { secondsToMilliseconds } from 'date-fns/esm/fp'
+ export default secondsToMilliseconds
+}
+
+declare module 'date-fns/esm/fp/secondsToMinutes/index.js' {
+ import { secondsToMinutes } from 'date-fns/esm/fp'
+ export default secondsToMinutes
+}
+
+declare module 'date-fns/esm/fp/set/index.js' {
+ import { set } from 'date-fns/esm/fp'
+ export default set
+}
+
+declare module 'date-fns/esm/fp/setDate/index.js' {
+ import { setDate } from 'date-fns/esm/fp'
+ export default setDate
+}
+
+declare module 'date-fns/esm/fp/setDay/index.js' {
+ import { setDay } from 'date-fns/esm/fp'
+ export default setDay
+}
+
+declare module 'date-fns/esm/fp/setDayOfYear/index.js' {
+ import { setDayOfYear } from 'date-fns/esm/fp'
+ export default setDayOfYear
+}
+
+declare module 'date-fns/esm/fp/setDayWithOptions/index.js' {
+ import { setDayWithOptions } from 'date-fns/esm/fp'
+ export default setDayWithOptions
+}
+
+declare module 'date-fns/esm/fp/setHours/index.js' {
+ import { setHours } from 'date-fns/esm/fp'
+ export default setHours
+}
+
+declare module 'date-fns/esm/fp/setISODay/index.js' {
+ import { setISODay } from 'date-fns/esm/fp'
+ export default setISODay
+}
+
+declare module 'date-fns/esm/fp/setISOWeek/index.js' {
+ import { setISOWeek } from 'date-fns/esm/fp'
+ export default setISOWeek
+}
+
+declare module 'date-fns/esm/fp/setISOWeekYear/index.js' {
+ import { setISOWeekYear } from 'date-fns/esm/fp'
+ export default setISOWeekYear
+}
+
+declare module 'date-fns/esm/fp/setMilliseconds/index.js' {
+ import { setMilliseconds } from 'date-fns/esm/fp'
+ export default setMilliseconds
+}
+
+declare module 'date-fns/esm/fp/setMinutes/index.js' {
+ import { setMinutes } from 'date-fns/esm/fp'
+ export default setMinutes
+}
+
+declare module 'date-fns/esm/fp/setMonth/index.js' {
+ import { setMonth } from 'date-fns/esm/fp'
+ export default setMonth
+}
+
+declare module 'date-fns/esm/fp/setQuarter/index.js' {
+ import { setQuarter } from 'date-fns/esm/fp'
+ export default setQuarter
+}
+
+declare module 'date-fns/esm/fp/setSeconds/index.js' {
+ import { setSeconds } from 'date-fns/esm/fp'
+ export default setSeconds
+}
+
+declare module 'date-fns/esm/fp/setWeek/index.js' {
+ import { setWeek } from 'date-fns/esm/fp'
+ export default setWeek
+}
+
+declare module 'date-fns/esm/fp/setWeekWithOptions/index.js' {
+ import { setWeekWithOptions } from 'date-fns/esm/fp'
+ export default setWeekWithOptions
+}
+
+declare module 'date-fns/esm/fp/setWeekYear/index.js' {
+ import { setWeekYear } from 'date-fns/esm/fp'
+ export default setWeekYear
+}
+
+declare module 'date-fns/esm/fp/setWeekYearWithOptions/index.js' {
+ import { setWeekYearWithOptions } from 'date-fns/esm/fp'
+ export default setWeekYearWithOptions
+}
+
+declare module 'date-fns/esm/fp/setYear/index.js' {
+ import { setYear } from 'date-fns/esm/fp'
+ export default setYear
+}
+
+declare module 'date-fns/esm/fp/startOfDay/index.js' {
+ import { startOfDay } from 'date-fns/esm/fp'
+ export default startOfDay
+}
+
+declare module 'date-fns/esm/fp/startOfDecade/index.js' {
+ import { startOfDecade } from 'date-fns/esm/fp'
+ export default startOfDecade
+}
+
+declare module 'date-fns/esm/fp/startOfHour/index.js' {
+ import { startOfHour } from 'date-fns/esm/fp'
+ export default startOfHour
+}
+
+declare module 'date-fns/esm/fp/startOfISOWeek/index.js' {
+ import { startOfISOWeek } from 'date-fns/esm/fp'
+ export default startOfISOWeek
+}
+
+declare module 'date-fns/esm/fp/startOfISOWeekYear/index.js' {
+ import { startOfISOWeekYear } from 'date-fns/esm/fp'
+ export default startOfISOWeekYear
+}
+
+declare module 'date-fns/esm/fp/startOfMinute/index.js' {
+ import { startOfMinute } from 'date-fns/esm/fp'
+ export default startOfMinute
+}
+
+declare module 'date-fns/esm/fp/startOfMonth/index.js' {
+ import { startOfMonth } from 'date-fns/esm/fp'
+ export default startOfMonth
+}
+
+declare module 'date-fns/esm/fp/startOfQuarter/index.js' {
+ import { startOfQuarter } from 'date-fns/esm/fp'
+ export default startOfQuarter
+}
+
+declare module 'date-fns/esm/fp/startOfSecond/index.js' {
+ import { startOfSecond } from 'date-fns/esm/fp'
+ export default startOfSecond
+}
+
+declare module 'date-fns/esm/fp/startOfWeek/index.js' {
+ import { startOfWeek } from 'date-fns/esm/fp'
+ export default startOfWeek
+}
+
+declare module 'date-fns/esm/fp/startOfWeekWithOptions/index.js' {
+ import { startOfWeekWithOptions } from 'date-fns/esm/fp'
+ export default startOfWeekWithOptions
+}
+
+declare module 'date-fns/esm/fp/startOfWeekYear/index.js' {
+ import { startOfWeekYear } from 'date-fns/esm/fp'
+ export default startOfWeekYear
+}
+
+declare module 'date-fns/esm/fp/startOfWeekYearWithOptions/index.js' {
+ import { startOfWeekYearWithOptions } from 'date-fns/esm/fp'
+ export default startOfWeekYearWithOptions
+}
+
+declare module 'date-fns/esm/fp/startOfYear/index.js' {
+ import { startOfYear } from 'date-fns/esm/fp'
+ export default startOfYear
+}
+
+declare module 'date-fns/esm/fp/sub/index.js' {
+ import { sub } from 'date-fns/esm/fp'
+ export default sub
+}
+
+declare module 'date-fns/esm/fp/subBusinessDays/index.js' {
+ import { subBusinessDays } from 'date-fns/esm/fp'
+ export default subBusinessDays
+}
+
+declare module 'date-fns/esm/fp/subDays/index.js' {
+ import { subDays } from 'date-fns/esm/fp'
+ export default subDays
+}
+
+declare module 'date-fns/esm/fp/subHours/index.js' {
+ import { subHours } from 'date-fns/esm/fp'
+ export default subHours
+}
+
+declare module 'date-fns/esm/fp/subISOWeekYears/index.js' {
+ import { subISOWeekYears } from 'date-fns/esm/fp'
+ export default subISOWeekYears
+}
+
+declare module 'date-fns/esm/fp/subMilliseconds/index.js' {
+ import { subMilliseconds } from 'date-fns/esm/fp'
+ export default subMilliseconds
+}
+
+declare module 'date-fns/esm/fp/subMinutes/index.js' {
+ import { subMinutes } from 'date-fns/esm/fp'
+ export default subMinutes
+}
+
+declare module 'date-fns/esm/fp/subMonths/index.js' {
+ import { subMonths } from 'date-fns/esm/fp'
+ export default subMonths
+}
+
+declare module 'date-fns/esm/fp/subQuarters/index.js' {
+ import { subQuarters } from 'date-fns/esm/fp'
+ export default subQuarters
+}
+
+declare module 'date-fns/esm/fp/subSeconds/index.js' {
+ import { subSeconds } from 'date-fns/esm/fp'
+ export default subSeconds
+}
+
+declare module 'date-fns/esm/fp/subWeeks/index.js' {
+ import { subWeeks } from 'date-fns/esm/fp'
+ export default subWeeks
+}
+
+declare module 'date-fns/esm/fp/subYears/index.js' {
+ import { subYears } from 'date-fns/esm/fp'
+ export default subYears
+}
+
+declare module 'date-fns/esm/fp/toDate/index.js' {
+ import { toDate } from 'date-fns/esm/fp'
+ export default toDate
+}
+
+declare module 'date-fns/esm/fp/weeksToDays/index.js' {
+ import { weeksToDays } from 'date-fns/esm/fp'
+ export default weeksToDays
+}
+
+declare module 'date-fns/esm/fp/yearsToMonths/index.js' {
+ import { yearsToMonths } from 'date-fns/esm/fp'
+ export default yearsToMonths
+}
+
+declare module 'date-fns/esm/fp/yearsToQuarters/index.js' {
+ import { yearsToQuarters } from 'date-fns/esm/fp'
+ export default yearsToQuarters
+}
+
+// Regular Locales
+
+declare module 'date-fns/locale' {
+ const af: Locale
+ namespace af {}
+
+ const ar: Locale
+ namespace ar {}
+
+ const arDZ: Locale
+ namespace arDZ {}
+
+ const arMA: Locale
+ namespace arMA {}
+
+ const arSA: Locale
+ namespace arSA {}
+
+ const az: Locale
+ namespace az {}
+
+ const be: Locale
+ namespace be {}
+
+ const bg: Locale
+ namespace bg {}
+
+ const bn: Locale
+ namespace bn {}
+
+ const ca: Locale
+ namespace ca {}
+
+ const cs: Locale
+ namespace cs {}
+
+ const cy: Locale
+ namespace cy {}
+
+ const da: Locale
+ namespace da {}
+
+ const de: Locale
+ namespace de {}
+
+ const deAT: Locale
+ namespace deAT {}
+
+ const el: Locale
+ namespace el {}
+
+ const enAU: Locale
+ namespace enAU {}
+
+ const enCA: Locale
+ namespace enCA {}
+
+ const enGB: Locale
+ namespace enGB {}
+
+ const enIN: Locale
+ namespace enIN {}
+
+ const enNZ: Locale
+ namespace enNZ {}
+
+ const enUS: Locale
+ namespace enUS {}
+
+ const enZA: Locale
+ namespace enZA {}
+
+ const eo: Locale
+ namespace eo {}
+
+ const es: Locale
+ namespace es {}
+
+ const et: Locale
+ namespace et {}
+
+ const eu: Locale
+ namespace eu {}
+
+ const faIR: Locale
+ namespace faIR {}
+
+ const fi: Locale
+ namespace fi {}
+
+ const fil: Locale
+ namespace fil {}
+
+ const fr: Locale
+ namespace fr {}
+
+ const frCA: Locale
+ namespace frCA {}
+
+ const frCH: Locale
+ namespace frCH {}
+
+ const gd: Locale
+ namespace gd {}
+
+ const gl: Locale
+ namespace gl {}
+
+ const gu: Locale
+ namespace gu {}
+
+ const he: Locale
+ namespace he {}
+
+ const hi: Locale
+ namespace hi {}
+
+ const hr: Locale
+ namespace hr {}
+
+ const ht: Locale
+ namespace ht {}
+
+ const hu: Locale
+ namespace hu {}
+
+ const hy: Locale
+ namespace hy {}
+
+ const id: Locale
+ namespace id {}
+
+ const is: Locale
+ namespace is {}
+
+ const it: Locale
+ namespace it {}
+
+ const ja: Locale
+ namespace ja {}
+
+ const ka: Locale
+ namespace ka {}
+
+ const kk: Locale
+ namespace kk {}
+
+ const kn: Locale
+ namespace kn {}
+
+ const ko: Locale
+ namespace ko {}
+
+ const lb: Locale
+ namespace lb {}
+
+ const lt: Locale
+ namespace lt {}
+
+ const lv: Locale
+ namespace lv {}
+
+ const mk: Locale
+ namespace mk {}
+
+ const mn: Locale
+ namespace mn {}
+
+ const ms: Locale
+ namespace ms {}
+
+ const mt: Locale
+ namespace mt {}
+
+ const nb: Locale
+ namespace nb {}
+
+ const nl: Locale
+ namespace nl {}
+
+ const nlBE: Locale
+ namespace nlBE {}
+
+ const nn: Locale
+ namespace nn {}
+
+ const pl: Locale
+ namespace pl {}
+
+ const pt: Locale
+ namespace pt {}
+
+ const ptBR: Locale
+ namespace ptBR {}
+
+ const ro: Locale
+ namespace ro {}
+
+ const ru: Locale
+ namespace ru {}
+
+ const sk: Locale
+ namespace sk {}
+
+ const sl: Locale
+ namespace sl {}
+
+ const sq: Locale
+ namespace sq {}
+
+ const sr: Locale
+ namespace sr {}
+
+ const srLatn: Locale
+ namespace srLatn {}
+
+ const sv: Locale
+ namespace sv {}
+
+ const ta: Locale
+ namespace ta {}
+
+ const te: Locale
+ namespace te {}
+
+ const th: Locale
+ namespace th {}
+
+ const tr: Locale
+ namespace tr {}
+
+ const ug: Locale
+ namespace ug {}
+
+ const uk: Locale
+ namespace uk {}
+
+ const uz: Locale
+ namespace uz {}
+
+ const vi: Locale
+ namespace vi {}
+
+ const zhCN: Locale
+ namespace zhCN {}
+
+ const zhTW: Locale
+ namespace zhTW {}
+}
+
+declare module 'date-fns/locale/af' {
+ import { af } from 'date-fns/locale'
+ export default af
+}
+
+declare module 'date-fns/locale/ar' {
+ import { ar } from 'date-fns/locale'
+ export default ar
+}
+
+declare module 'date-fns/locale/ar-DZ' {
+ import { arDZ } from 'date-fns/locale'
+ export default arDZ
+}
+
+declare module 'date-fns/locale/ar-MA' {
+ import { arMA } from 'date-fns/locale'
+ export default arMA
+}
+
+declare module 'date-fns/locale/ar-SA' {
+ import { arSA } from 'date-fns/locale'
+ export default arSA
+}
+
+declare module 'date-fns/locale/az' {
+ import { az } from 'date-fns/locale'
+ export default az
+}
+
+declare module 'date-fns/locale/be' {
+ import { be } from 'date-fns/locale'
+ export default be
+}
+
+declare module 'date-fns/locale/bg' {
+ import { bg } from 'date-fns/locale'
+ export default bg
+}
+
+declare module 'date-fns/locale/bn' {
+ import { bn } from 'date-fns/locale'
+ export default bn
+}
+
+declare module 'date-fns/locale/ca' {
+ import { ca } from 'date-fns/locale'
+ export default ca
+}
+
+declare module 'date-fns/locale/cs' {
+ import { cs } from 'date-fns/locale'
+ export default cs
+}
+
+declare module 'date-fns/locale/cy' {
+ import { cy } from 'date-fns/locale'
+ export default cy
+}
+
+declare module 'date-fns/locale/da' {
+ import { da } from 'date-fns/locale'
+ export default da
+}
+
+declare module 'date-fns/locale/de' {
+ import { de } from 'date-fns/locale'
+ export default de
+}
+
+declare module 'date-fns/locale/de-AT' {
+ import { deAT } from 'date-fns/locale'
+ export default deAT
+}
+
+declare module 'date-fns/locale/el' {
+ import { el } from 'date-fns/locale'
+ export default el
+}
+
+declare module 'date-fns/locale/en-AU' {
+ import { enAU } from 'date-fns/locale'
+ export default enAU
+}
+
+declare module 'date-fns/locale/en-CA' {
+ import { enCA } from 'date-fns/locale'
+ export default enCA
+}
+
+declare module 'date-fns/locale/en-GB' {
+ import { enGB } from 'date-fns/locale'
+ export default enGB
+}
+
+declare module 'date-fns/locale/en-IN' {
+ import { enIN } from 'date-fns/locale'
+ export default enIN
+}
+
+declare module 'date-fns/locale/en-NZ' {
+ import { enNZ } from 'date-fns/locale'
+ export default enNZ
+}
+
+declare module 'date-fns/locale/en-US' {
+ import { enUS } from 'date-fns/locale'
+ export default enUS
+}
+
+declare module 'date-fns/locale/en-ZA' {
+ import { enZA } from 'date-fns/locale'
+ export default enZA
+}
+
+declare module 'date-fns/locale/eo' {
+ import { eo } from 'date-fns/locale'
+ export default eo
+}
+
+declare module 'date-fns/locale/es' {
+ import { es } from 'date-fns/locale'
+ export default es
+}
+
+declare module 'date-fns/locale/et' {
+ import { et } from 'date-fns/locale'
+ export default et
+}
+
+declare module 'date-fns/locale/eu' {
+ import { eu } from 'date-fns/locale'
+ export default eu
+}
+
+declare module 'date-fns/locale/fa-IR' {
+ import { faIR } from 'date-fns/locale'
+ export default faIR
+}
+
+declare module 'date-fns/locale/fi' {
+ import { fi } from 'date-fns/locale'
+ export default fi
+}
+
+declare module 'date-fns/locale/fil' {
+ import { fil } from 'date-fns/locale'
+ export default fil
+}
+
+declare module 'date-fns/locale/fr' {
+ import { fr } from 'date-fns/locale'
+ export default fr
+}
+
+declare module 'date-fns/locale/fr-CA' {
+ import { frCA } from 'date-fns/locale'
+ export default frCA
+}
+
+declare module 'date-fns/locale/fr-CH' {
+ import { frCH } from 'date-fns/locale'
+ export default frCH
+}
+
+declare module 'date-fns/locale/gd' {
+ import { gd } from 'date-fns/locale'
+ export default gd
+}
+
+declare module 'date-fns/locale/gl' {
+ import { gl } from 'date-fns/locale'
+ export default gl
+}
+
+declare module 'date-fns/locale/gu' {
+ import { gu } from 'date-fns/locale'
+ export default gu
+}
+
+declare module 'date-fns/locale/he' {
+ import { he } from 'date-fns/locale'
+ export default he
+}
+
+declare module 'date-fns/locale/hi' {
+ import { hi } from 'date-fns/locale'
+ export default hi
+}
+
+declare module 'date-fns/locale/hr' {
+ import { hr } from 'date-fns/locale'
+ export default hr
+}
+
+declare module 'date-fns/locale/ht' {
+ import { ht } from 'date-fns/locale'
+ export default ht
+}
+
+declare module 'date-fns/locale/hu' {
+ import { hu } from 'date-fns/locale'
+ export default hu
+}
+
+declare module 'date-fns/locale/hy' {
+ import { hy } from 'date-fns/locale'
+ export default hy
+}
+
+declare module 'date-fns/locale/id' {
+ import { id } from 'date-fns/locale'
+ export default id
+}
+
+declare module 'date-fns/locale/is' {
+ import { is } from 'date-fns/locale'
+ export default is
+}
+
+declare module 'date-fns/locale/it' {
+ import { it } from 'date-fns/locale'
+ export default it
+}
+
+declare module 'date-fns/locale/ja' {
+ import { ja } from 'date-fns/locale'
+ export default ja
+}
+
+declare module 'date-fns/locale/ka' {
+ import { ka } from 'date-fns/locale'
+ export default ka
+}
+
+declare module 'date-fns/locale/kk' {
+ import { kk } from 'date-fns/locale'
+ export default kk
+}
+
+declare module 'date-fns/locale/kn' {
+ import { kn } from 'date-fns/locale'
+ export default kn
+}
+
+declare module 'date-fns/locale/ko' {
+ import { ko } from 'date-fns/locale'
+ export default ko
+}
+
+declare module 'date-fns/locale/lb' {
+ import { lb } from 'date-fns/locale'
+ export default lb
+}
+
+declare module 'date-fns/locale/lt' {
+ import { lt } from 'date-fns/locale'
+ export default lt
+}
+
+declare module 'date-fns/locale/lv' {
+ import { lv } from 'date-fns/locale'
+ export default lv
+}
+
+declare module 'date-fns/locale/mk' {
+ import { mk } from 'date-fns/locale'
+ export default mk
+}
+
+declare module 'date-fns/locale/mn' {
+ import { mn } from 'date-fns/locale'
+ export default mn
+}
+
+declare module 'date-fns/locale/ms' {
+ import { ms } from 'date-fns/locale'
+ export default ms
+}
+
+declare module 'date-fns/locale/mt' {
+ import { mt } from 'date-fns/locale'
+ export default mt
+}
+
+declare module 'date-fns/locale/nb' {
+ import { nb } from 'date-fns/locale'
+ export default nb
+}
+
+declare module 'date-fns/locale/nl' {
+ import { nl } from 'date-fns/locale'
+ export default nl
+}
+
+declare module 'date-fns/locale/nl-BE' {
+ import { nlBE } from 'date-fns/locale'
+ export default nlBE
+}
+
+declare module 'date-fns/locale/nn' {
+ import { nn } from 'date-fns/locale'
+ export default nn
+}
+
+declare module 'date-fns/locale/pl' {
+ import { pl } from 'date-fns/locale'
+ export default pl
+}
+
+declare module 'date-fns/locale/pt' {
+ import { pt } from 'date-fns/locale'
+ export default pt
+}
+
+declare module 'date-fns/locale/pt-BR' {
+ import { ptBR } from 'date-fns/locale'
+ export default ptBR
+}
+
+declare module 'date-fns/locale/ro' {
+ import { ro } from 'date-fns/locale'
+ export default ro
+}
+
+declare module 'date-fns/locale/ru' {
+ import { ru } from 'date-fns/locale'
+ export default ru
+}
+
+declare module 'date-fns/locale/sk' {
+ import { sk } from 'date-fns/locale'
+ export default sk
+}
+
+declare module 'date-fns/locale/sl' {
+ import { sl } from 'date-fns/locale'
+ export default sl
+}
+
+declare module 'date-fns/locale/sq' {
+ import { sq } from 'date-fns/locale'
+ export default sq
+}
+
+declare module 'date-fns/locale/sr' {
+ import { sr } from 'date-fns/locale'
+ export default sr
+}
+
+declare module 'date-fns/locale/sr-Latn' {
+ import { srLatn } from 'date-fns/locale'
+ export default srLatn
+}
+
+declare module 'date-fns/locale/sv' {
+ import { sv } from 'date-fns/locale'
+ export default sv
+}
+
+declare module 'date-fns/locale/ta' {
+ import { ta } from 'date-fns/locale'
+ export default ta
+}
+
+declare module 'date-fns/locale/te' {
+ import { te } from 'date-fns/locale'
+ export default te
+}
+
+declare module 'date-fns/locale/th' {
+ import { th } from 'date-fns/locale'
+ export default th
+}
+
+declare module 'date-fns/locale/tr' {
+ import { tr } from 'date-fns/locale'
+ export default tr
+}
+
+declare module 'date-fns/locale/ug' {
+ import { ug } from 'date-fns/locale'
+ export default ug
+}
+
+declare module 'date-fns/locale/uk' {
+ import { uk } from 'date-fns/locale'
+ export default uk
+}
+
+declare module 'date-fns/locale/uz' {
+ import { uz } from 'date-fns/locale'
+ export default uz
+}
+
+declare module 'date-fns/locale/vi' {
+ import { vi } from 'date-fns/locale'
+ export default vi
+}
+
+declare module 'date-fns/locale/zh-CN' {
+ import { zhCN } from 'date-fns/locale'
+ export default zhCN
+}
+
+declare module 'date-fns/locale/zh-TW' {
+ import { zhTW } from 'date-fns/locale'
+ export default zhTW
+}
+
+declare module 'date-fns/locale/af/index' {
+ import { af } from 'date-fns/locale'
+ export default af
+}
+
+declare module 'date-fns/locale/ar/index' {
+ import { ar } from 'date-fns/locale'
+ export default ar
+}
+
+declare module 'date-fns/locale/ar-DZ/index' {
+ import { arDZ } from 'date-fns/locale'
+ export default arDZ
+}
+
+declare module 'date-fns/locale/ar-MA/index' {
+ import { arMA } from 'date-fns/locale'
+ export default arMA
+}
+
+declare module 'date-fns/locale/ar-SA/index' {
+ import { arSA } from 'date-fns/locale'
+ export default arSA
+}
+
+declare module 'date-fns/locale/az/index' {
+ import { az } from 'date-fns/locale'
+ export default az
+}
+
+declare module 'date-fns/locale/be/index' {
+ import { be } from 'date-fns/locale'
+ export default be
+}
+
+declare module 'date-fns/locale/bg/index' {
+ import { bg } from 'date-fns/locale'
+ export default bg
+}
+
+declare module 'date-fns/locale/bn/index' {
+ import { bn } from 'date-fns/locale'
+ export default bn
+}
+
+declare module 'date-fns/locale/ca/index' {
+ import { ca } from 'date-fns/locale'
+ export default ca
+}
+
+declare module 'date-fns/locale/cs/index' {
+ import { cs } from 'date-fns/locale'
+ export default cs
+}
+
+declare module 'date-fns/locale/cy/index' {
+ import { cy } from 'date-fns/locale'
+ export default cy
+}
+
+declare module 'date-fns/locale/da/index' {
+ import { da } from 'date-fns/locale'
+ export default da
+}
+
+declare module 'date-fns/locale/de/index' {
+ import { de } from 'date-fns/locale'
+ export default de
+}
+
+declare module 'date-fns/locale/de-AT/index' {
+ import { deAT } from 'date-fns/locale'
+ export default deAT
+}
+
+declare module 'date-fns/locale/el/index' {
+ import { el } from 'date-fns/locale'
+ export default el
+}
+
+declare module 'date-fns/locale/en-AU/index' {
+ import { enAU } from 'date-fns/locale'
+ export default enAU
+}
+
+declare module 'date-fns/locale/en-CA/index' {
+ import { enCA } from 'date-fns/locale'
+ export default enCA
+}
+
+declare module 'date-fns/locale/en-GB/index' {
+ import { enGB } from 'date-fns/locale'
+ export default enGB
+}
+
+declare module 'date-fns/locale/en-IN/index' {
+ import { enIN } from 'date-fns/locale'
+ export default enIN
+}
+
+declare module 'date-fns/locale/en-NZ/index' {
+ import { enNZ } from 'date-fns/locale'
+ export default enNZ
+}
+
+declare module 'date-fns/locale/en-US/index' {
+ import { enUS } from 'date-fns/locale'
+ export default enUS
+}
+
+declare module 'date-fns/locale/en-ZA/index' {
+ import { enZA } from 'date-fns/locale'
+ export default enZA
+}
+
+declare module 'date-fns/locale/eo/index' {
+ import { eo } from 'date-fns/locale'
+ export default eo
+}
+
+declare module 'date-fns/locale/es/index' {
+ import { es } from 'date-fns/locale'
+ export default es
+}
+
+declare module 'date-fns/locale/et/index' {
+ import { et } from 'date-fns/locale'
+ export default et
+}
+
+declare module 'date-fns/locale/eu/index' {
+ import { eu } from 'date-fns/locale'
+ export default eu
+}
+
+declare module 'date-fns/locale/fa-IR/index' {
+ import { faIR } from 'date-fns/locale'
+ export default faIR
+}
+
+declare module 'date-fns/locale/fi/index' {
+ import { fi } from 'date-fns/locale'
+ export default fi
+}
+
+declare module 'date-fns/locale/fil/index' {
+ import { fil } from 'date-fns/locale'
+ export default fil
+}
+
+declare module 'date-fns/locale/fr/index' {
+ import { fr } from 'date-fns/locale'
+ export default fr
+}
+
+declare module 'date-fns/locale/fr-CA/index' {
+ import { frCA } from 'date-fns/locale'
+ export default frCA
+}
+
+declare module 'date-fns/locale/fr-CH/index' {
+ import { frCH } from 'date-fns/locale'
+ export default frCH
+}
+
+declare module 'date-fns/locale/gd/index' {
+ import { gd } from 'date-fns/locale'
+ export default gd
+}
+
+declare module 'date-fns/locale/gl/index' {
+ import { gl } from 'date-fns/locale'
+ export default gl
+}
+
+declare module 'date-fns/locale/gu/index' {
+ import { gu } from 'date-fns/locale'
+ export default gu
+}
+
+declare module 'date-fns/locale/he/index' {
+ import { he } from 'date-fns/locale'
+ export default he
+}
+
+declare module 'date-fns/locale/hi/index' {
+ import { hi } from 'date-fns/locale'
+ export default hi
+}
+
+declare module 'date-fns/locale/hr/index' {
+ import { hr } from 'date-fns/locale'
+ export default hr
+}
+
+declare module 'date-fns/locale/ht/index' {
+ import { ht } from 'date-fns/locale'
+ export default ht
+}
+
+declare module 'date-fns/locale/hu/index' {
+ import { hu } from 'date-fns/locale'
+ export default hu
+}
+
+declare module 'date-fns/locale/hy/index' {
+ import { hy } from 'date-fns/locale'
+ export default hy
+}
+
+declare module 'date-fns/locale/id/index' {
+ import { id } from 'date-fns/locale'
+ export default id
+}
+
+declare module 'date-fns/locale/is/index' {
+ import { is } from 'date-fns/locale'
+ export default is
+}
+
+declare module 'date-fns/locale/it/index' {
+ import { it } from 'date-fns/locale'
+ export default it
+}
+
+declare module 'date-fns/locale/ja/index' {
+ import { ja } from 'date-fns/locale'
+ export default ja
+}
+
+declare module 'date-fns/locale/ka/index' {
+ import { ka } from 'date-fns/locale'
+ export default ka
+}
+
+declare module 'date-fns/locale/kk/index' {
+ import { kk } from 'date-fns/locale'
+ export default kk
+}
+
+declare module 'date-fns/locale/kn/index' {
+ import { kn } from 'date-fns/locale'
+ export default kn
+}
+
+declare module 'date-fns/locale/ko/index' {
+ import { ko } from 'date-fns/locale'
+ export default ko
+}
+
+declare module 'date-fns/locale/lb/index' {
+ import { lb } from 'date-fns/locale'
+ export default lb
+}
+
+declare module 'date-fns/locale/lt/index' {
+ import { lt } from 'date-fns/locale'
+ export default lt
+}
+
+declare module 'date-fns/locale/lv/index' {
+ import { lv } from 'date-fns/locale'
+ export default lv
+}
+
+declare module 'date-fns/locale/mk/index' {
+ import { mk } from 'date-fns/locale'
+ export default mk
+}
+
+declare module 'date-fns/locale/mn/index' {
+ import { mn } from 'date-fns/locale'
+ export default mn
+}
+
+declare module 'date-fns/locale/ms/index' {
+ import { ms } from 'date-fns/locale'
+ export default ms
+}
+
+declare module 'date-fns/locale/mt/index' {
+ import { mt } from 'date-fns/locale'
+ export default mt
+}
+
+declare module 'date-fns/locale/nb/index' {
+ import { nb } from 'date-fns/locale'
+ export default nb
+}
+
+declare module 'date-fns/locale/nl/index' {
+ import { nl } from 'date-fns/locale'
+ export default nl
+}
+
+declare module 'date-fns/locale/nl-BE/index' {
+ import { nlBE } from 'date-fns/locale'
+ export default nlBE
+}
+
+declare module 'date-fns/locale/nn/index' {
+ import { nn } from 'date-fns/locale'
+ export default nn
+}
+
+declare module 'date-fns/locale/pl/index' {
+ import { pl } from 'date-fns/locale'
+ export default pl
+}
+
+declare module 'date-fns/locale/pt/index' {
+ import { pt } from 'date-fns/locale'
+ export default pt
+}
+
+declare module 'date-fns/locale/pt-BR/index' {
+ import { ptBR } from 'date-fns/locale'
+ export default ptBR
+}
+
+declare module 'date-fns/locale/ro/index' {
+ import { ro } from 'date-fns/locale'
+ export default ro
+}
+
+declare module 'date-fns/locale/ru/index' {
+ import { ru } from 'date-fns/locale'
+ export default ru
+}
+
+declare module 'date-fns/locale/sk/index' {
+ import { sk } from 'date-fns/locale'
+ export default sk
+}
+
+declare module 'date-fns/locale/sl/index' {
+ import { sl } from 'date-fns/locale'
+ export default sl
+}
+
+declare module 'date-fns/locale/sq/index' {
+ import { sq } from 'date-fns/locale'
+ export default sq
+}
+
+declare module 'date-fns/locale/sr/index' {
+ import { sr } from 'date-fns/locale'
+ export default sr
+}
+
+declare module 'date-fns/locale/sr-Latn/index' {
+ import { srLatn } from 'date-fns/locale'
+ export default srLatn
+}
+
+declare module 'date-fns/locale/sv/index' {
+ import { sv } from 'date-fns/locale'
+ export default sv
+}
+
+declare module 'date-fns/locale/ta/index' {
+ import { ta } from 'date-fns/locale'
+ export default ta
+}
+
+declare module 'date-fns/locale/te/index' {
+ import { te } from 'date-fns/locale'
+ export default te
+}
+
+declare module 'date-fns/locale/th/index' {
+ import { th } from 'date-fns/locale'
+ export default th
+}
+
+declare module 'date-fns/locale/tr/index' {
+ import { tr } from 'date-fns/locale'
+ export default tr
+}
+
+declare module 'date-fns/locale/ug/index' {
+ import { ug } from 'date-fns/locale'
+ export default ug
+}
+
+declare module 'date-fns/locale/uk/index' {
+ import { uk } from 'date-fns/locale'
+ export default uk
+}
+
+declare module 'date-fns/locale/uz/index' {
+ import { uz } from 'date-fns/locale'
+ export default uz
+}
+
+declare module 'date-fns/locale/vi/index' {
+ import { vi } from 'date-fns/locale'
+ export default vi
+}
+
+declare module 'date-fns/locale/zh-CN/index' {
+ import { zhCN } from 'date-fns/locale'
+ export default zhCN
+}
+
+declare module 'date-fns/locale/zh-TW/index' {
+ import { zhTW } from 'date-fns/locale'
+ export default zhTW
+}
+
+declare module 'date-fns/locale/af/index.js' {
+ import { af } from 'date-fns/locale'
+ export default af
+}
+
+declare module 'date-fns/locale/ar/index.js' {
+ import { ar } from 'date-fns/locale'
+ export default ar
+}
+
+declare module 'date-fns/locale/ar-DZ/index.js' {
+ import { arDZ } from 'date-fns/locale'
+ export default arDZ
+}
+
+declare module 'date-fns/locale/ar-MA/index.js' {
+ import { arMA } from 'date-fns/locale'
+ export default arMA
+}
+
+declare module 'date-fns/locale/ar-SA/index.js' {
+ import { arSA } from 'date-fns/locale'
+ export default arSA
+}
+
+declare module 'date-fns/locale/az/index.js' {
+ import { az } from 'date-fns/locale'
+ export default az
+}
+
+declare module 'date-fns/locale/be/index.js' {
+ import { be } from 'date-fns/locale'
+ export default be
+}
+
+declare module 'date-fns/locale/bg/index.js' {
+ import { bg } from 'date-fns/locale'
+ export default bg
+}
+
+declare module 'date-fns/locale/bn/index.js' {
+ import { bn } from 'date-fns/locale'
+ export default bn
+}
+
+declare module 'date-fns/locale/ca/index.js' {
+ import { ca } from 'date-fns/locale'
+ export default ca
+}
+
+declare module 'date-fns/locale/cs/index.js' {
+ import { cs } from 'date-fns/locale'
+ export default cs
+}
+
+declare module 'date-fns/locale/cy/index.js' {
+ import { cy } from 'date-fns/locale'
+ export default cy
+}
+
+declare module 'date-fns/locale/da/index.js' {
+ import { da } from 'date-fns/locale'
+ export default da
+}
+
+declare module 'date-fns/locale/de/index.js' {
+ import { de } from 'date-fns/locale'
+ export default de
+}
+
+declare module 'date-fns/locale/de-AT/index.js' {
+ import { deAT } from 'date-fns/locale'
+ export default deAT
+}
+
+declare module 'date-fns/locale/el/index.js' {
+ import { el } from 'date-fns/locale'
+ export default el
+}
+
+declare module 'date-fns/locale/en-AU/index.js' {
+ import { enAU } from 'date-fns/locale'
+ export default enAU
+}
+
+declare module 'date-fns/locale/en-CA/index.js' {
+ import { enCA } from 'date-fns/locale'
+ export default enCA
+}
+
+declare module 'date-fns/locale/en-GB/index.js' {
+ import { enGB } from 'date-fns/locale'
+ export default enGB
+}
+
+declare module 'date-fns/locale/en-IN/index.js' {
+ import { enIN } from 'date-fns/locale'
+ export default enIN
+}
+
+declare module 'date-fns/locale/en-NZ/index.js' {
+ import { enNZ } from 'date-fns/locale'
+ export default enNZ
+}
+
+declare module 'date-fns/locale/en-US/index.js' {
+ import { enUS } from 'date-fns/locale'
+ export default enUS
+}
+
+declare module 'date-fns/locale/en-ZA/index.js' {
+ import { enZA } from 'date-fns/locale'
+ export default enZA
+}
+
+declare module 'date-fns/locale/eo/index.js' {
+ import { eo } from 'date-fns/locale'
+ export default eo
+}
+
+declare module 'date-fns/locale/es/index.js' {
+ import { es } from 'date-fns/locale'
+ export default es
+}
+
+declare module 'date-fns/locale/et/index.js' {
+ import { et } from 'date-fns/locale'
+ export default et
+}
+
+declare module 'date-fns/locale/eu/index.js' {
+ import { eu } from 'date-fns/locale'
+ export default eu
+}
+
+declare module 'date-fns/locale/fa-IR/index.js' {
+ import { faIR } from 'date-fns/locale'
+ export default faIR
+}
+
+declare module 'date-fns/locale/fi/index.js' {
+ import { fi } from 'date-fns/locale'
+ export default fi
+}
+
+declare module 'date-fns/locale/fil/index.js' {
+ import { fil } from 'date-fns/locale'
+ export default fil
+}
+
+declare module 'date-fns/locale/fr/index.js' {
+ import { fr } from 'date-fns/locale'
+ export default fr
+}
+
+declare module 'date-fns/locale/fr-CA/index.js' {
+ import { frCA } from 'date-fns/locale'
+ export default frCA
+}
+
+declare module 'date-fns/locale/fr-CH/index.js' {
+ import { frCH } from 'date-fns/locale'
+ export default frCH
+}
+
+declare module 'date-fns/locale/gd/index.js' {
+ import { gd } from 'date-fns/locale'
+ export default gd
+}
+
+declare module 'date-fns/locale/gl/index.js' {
+ import { gl } from 'date-fns/locale'
+ export default gl
+}
+
+declare module 'date-fns/locale/gu/index.js' {
+ import { gu } from 'date-fns/locale'
+ export default gu
+}
+
+declare module 'date-fns/locale/he/index.js' {
+ import { he } from 'date-fns/locale'
+ export default he
+}
+
+declare module 'date-fns/locale/hi/index.js' {
+ import { hi } from 'date-fns/locale'
+ export default hi
+}
+
+declare module 'date-fns/locale/hr/index.js' {
+ import { hr } from 'date-fns/locale'
+ export default hr
+}
+
+declare module 'date-fns/locale/ht/index.js' {
+ import { ht } from 'date-fns/locale'
+ export default ht
+}
+
+declare module 'date-fns/locale/hu/index.js' {
+ import { hu } from 'date-fns/locale'
+ export default hu
+}
+
+declare module 'date-fns/locale/hy/index.js' {
+ import { hy } from 'date-fns/locale'
+ export default hy
+}
+
+declare module 'date-fns/locale/id/index.js' {
+ import { id } from 'date-fns/locale'
+ export default id
+}
+
+declare module 'date-fns/locale/is/index.js' {
+ import { is } from 'date-fns/locale'
+ export default is
+}
+
+declare module 'date-fns/locale/it/index.js' {
+ import { it } from 'date-fns/locale'
+ export default it
+}
+
+declare module 'date-fns/locale/ja/index.js' {
+ import { ja } from 'date-fns/locale'
+ export default ja
+}
+
+declare module 'date-fns/locale/ka/index.js' {
+ import { ka } from 'date-fns/locale'
+ export default ka
+}
+
+declare module 'date-fns/locale/kk/index.js' {
+ import { kk } from 'date-fns/locale'
+ export default kk
+}
+
+declare module 'date-fns/locale/kn/index.js' {
+ import { kn } from 'date-fns/locale'
+ export default kn
+}
+
+declare module 'date-fns/locale/ko/index.js' {
+ import { ko } from 'date-fns/locale'
+ export default ko
+}
+
+declare module 'date-fns/locale/lb/index.js' {
+ import { lb } from 'date-fns/locale'
+ export default lb
+}
+
+declare module 'date-fns/locale/lt/index.js' {
+ import { lt } from 'date-fns/locale'
+ export default lt
+}
+
+declare module 'date-fns/locale/lv/index.js' {
+ import { lv } from 'date-fns/locale'
+ export default lv
+}
+
+declare module 'date-fns/locale/mk/index.js' {
+ import { mk } from 'date-fns/locale'
+ export default mk
+}
+
+declare module 'date-fns/locale/mn/index.js' {
+ import { mn } from 'date-fns/locale'
+ export default mn
+}
+
+declare module 'date-fns/locale/ms/index.js' {
+ import { ms } from 'date-fns/locale'
+ export default ms
+}
+
+declare module 'date-fns/locale/mt/index.js' {
+ import { mt } from 'date-fns/locale'
+ export default mt
+}
+
+declare module 'date-fns/locale/nb/index.js' {
+ import { nb } from 'date-fns/locale'
+ export default nb
+}
+
+declare module 'date-fns/locale/nl/index.js' {
+ import { nl } from 'date-fns/locale'
+ export default nl
+}
+
+declare module 'date-fns/locale/nl-BE/index.js' {
+ import { nlBE } from 'date-fns/locale'
+ export default nlBE
+}
+
+declare module 'date-fns/locale/nn/index.js' {
+ import { nn } from 'date-fns/locale'
+ export default nn
+}
+
+declare module 'date-fns/locale/pl/index.js' {
+ import { pl } from 'date-fns/locale'
+ export default pl
+}
+
+declare module 'date-fns/locale/pt/index.js' {
+ import { pt } from 'date-fns/locale'
+ export default pt
+}
+
+declare module 'date-fns/locale/pt-BR/index.js' {
+ import { ptBR } from 'date-fns/locale'
+ export default ptBR
+}
+
+declare module 'date-fns/locale/ro/index.js' {
+ import { ro } from 'date-fns/locale'
+ export default ro
+}
+
+declare module 'date-fns/locale/ru/index.js' {
+ import { ru } from 'date-fns/locale'
+ export default ru
+}
+
+declare module 'date-fns/locale/sk/index.js' {
+ import { sk } from 'date-fns/locale'
+ export default sk
+}
+
+declare module 'date-fns/locale/sl/index.js' {
+ import { sl } from 'date-fns/locale'
+ export default sl
+}
+
+declare module 'date-fns/locale/sq/index.js' {
+ import { sq } from 'date-fns/locale'
+ export default sq
+}
+
+declare module 'date-fns/locale/sr/index.js' {
+ import { sr } from 'date-fns/locale'
+ export default sr
+}
+
+declare module 'date-fns/locale/sr-Latn/index.js' {
+ import { srLatn } from 'date-fns/locale'
+ export default srLatn
+}
+
+declare module 'date-fns/locale/sv/index.js' {
+ import { sv } from 'date-fns/locale'
+ export default sv
+}
+
+declare module 'date-fns/locale/ta/index.js' {
+ import { ta } from 'date-fns/locale'
+ export default ta
+}
+
+declare module 'date-fns/locale/te/index.js' {
+ import { te } from 'date-fns/locale'
+ export default te
+}
+
+declare module 'date-fns/locale/th/index.js' {
+ import { th } from 'date-fns/locale'
+ export default th
+}
+
+declare module 'date-fns/locale/tr/index.js' {
+ import { tr } from 'date-fns/locale'
+ export default tr
+}
+
+declare module 'date-fns/locale/ug/index.js' {
+ import { ug } from 'date-fns/locale'
+ export default ug
+}
+
+declare module 'date-fns/locale/uk/index.js' {
+ import { uk } from 'date-fns/locale'
+ export default uk
+}
+
+declare module 'date-fns/locale/uz/index.js' {
+ import { uz } from 'date-fns/locale'
+ export default uz
+}
+
+declare module 'date-fns/locale/vi/index.js' {
+ import { vi } from 'date-fns/locale'
+ export default vi
+}
+
+declare module 'date-fns/locale/zh-CN/index.js' {
+ import { zhCN } from 'date-fns/locale'
+ export default zhCN
+}
+
+declare module 'date-fns/locale/zh-TW/index.js' {
+ import { zhTW } from 'date-fns/locale'
+ export default zhTW
+}
+
+// ECMAScript Module Locales
+
+declare module 'date-fns/esm/locale' {
+ const af: Locale
+ namespace af {}
+
+ const ar: Locale
+ namespace ar {}
+
+ const arDZ: Locale
+ namespace arDZ {}
+
+ const arMA: Locale
+ namespace arMA {}
+
+ const arSA: Locale
+ namespace arSA {}
+
+ const az: Locale
+ namespace az {}
+
+ const be: Locale
+ namespace be {}
+
+ const bg: Locale
+ namespace bg {}
+
+ const bn: Locale
+ namespace bn {}
+
+ const ca: Locale
+ namespace ca {}
+
+ const cs: Locale
+ namespace cs {}
+
+ const cy: Locale
+ namespace cy {}
+
+ const da: Locale
+ namespace da {}
+
+ const de: Locale
+ namespace de {}
+
+ const deAT: Locale
+ namespace deAT {}
+
+ const el: Locale
+ namespace el {}
+
+ const enAU: Locale
+ namespace enAU {}
+
+ const enCA: Locale
+ namespace enCA {}
+
+ const enGB: Locale
+ namespace enGB {}
+
+ const enIN: Locale
+ namespace enIN {}
+
+ const enNZ: Locale
+ namespace enNZ {}
+
+ const enUS: Locale
+ namespace enUS {}
+
+ const enZA: Locale
+ namespace enZA {}
+
+ const eo: Locale
+ namespace eo {}
+
+ const es: Locale
+ namespace es {}
+
+ const et: Locale
+ namespace et {}
+
+ const eu: Locale
+ namespace eu {}
+
+ const faIR: Locale
+ namespace faIR {}
+
+ const fi: Locale
+ namespace fi {}
+
+ const fil: Locale
+ namespace fil {}
+
+ const fr: Locale
+ namespace fr {}
+
+ const frCA: Locale
+ namespace frCA {}
+
+ const frCH: Locale
+ namespace frCH {}
+
+ const gd: Locale
+ namespace gd {}
+
+ const gl: Locale
+ namespace gl {}
+
+ const gu: Locale
+ namespace gu {}
+
+ const he: Locale
+ namespace he {}
+
+ const hi: Locale
+ namespace hi {}
+
+ const hr: Locale
+ namespace hr {}
+
+ const ht: Locale
+ namespace ht {}
+
+ const hu: Locale
+ namespace hu {}
+
+ const hy: Locale
+ namespace hy {}
+
+ const id: Locale
+ namespace id {}
+
+ const is: Locale
+ namespace is {}
+
+ const it: Locale
+ namespace it {}
+
+ const ja: Locale
+ namespace ja {}
+
+ const ka: Locale
+ namespace ka {}
+
+ const kk: Locale
+ namespace kk {}
+
+ const kn: Locale
+ namespace kn {}
+
+ const ko: Locale
+ namespace ko {}
+
+ const lb: Locale
+ namespace lb {}
+
+ const lt: Locale
+ namespace lt {}
+
+ const lv: Locale
+ namespace lv {}
+
+ const mk: Locale
+ namespace mk {}
+
+ const mn: Locale
+ namespace mn {}
+
+ const ms: Locale
+ namespace ms {}
+
+ const mt: Locale
+ namespace mt {}
+
+ const nb: Locale
+ namespace nb {}
+
+ const nl: Locale
+ namespace nl {}
+
+ const nlBE: Locale
+ namespace nlBE {}
+
+ const nn: Locale
+ namespace nn {}
+
+ const pl: Locale
+ namespace pl {}
+
+ const pt: Locale
+ namespace pt {}
+
+ const ptBR: Locale
+ namespace ptBR {}
+
+ const ro: Locale
+ namespace ro {}
+
+ const ru: Locale
+ namespace ru {}
+
+ const sk: Locale
+ namespace sk {}
+
+ const sl: Locale
+ namespace sl {}
+
+ const sq: Locale
+ namespace sq {}
+
+ const sr: Locale
+ namespace sr {}
+
+ const srLatn: Locale
+ namespace srLatn {}
+
+ const sv: Locale
+ namespace sv {}
+
+ const ta: Locale
+ namespace ta {}
+
+ const te: Locale
+ namespace te {}
+
+ const th: Locale
+ namespace th {}
+
+ const tr: Locale
+ namespace tr {}
+
+ const ug: Locale
+ namespace ug {}
+
+ const uk: Locale
+ namespace uk {}
+
+ const uz: Locale
+ namespace uz {}
+
+ const vi: Locale
+ namespace vi {}
+
+ const zhCN: Locale
+ namespace zhCN {}
+
+ const zhTW: Locale
+ namespace zhTW {}
+}
+
+declare module 'date-fns/esm/locale/af' {
+ import { af } from 'date-fns/esm/locale'
+ export default af
+}
+
+declare module 'date-fns/esm/locale/ar' {
+ import { ar } from 'date-fns/esm/locale'
+ export default ar
+}
+
+declare module 'date-fns/esm/locale/ar-DZ' {
+ import { arDZ } from 'date-fns/esm/locale'
+ export default arDZ
+}
+
+declare module 'date-fns/esm/locale/ar-MA' {
+ import { arMA } from 'date-fns/esm/locale'
+ export default arMA
+}
+
+declare module 'date-fns/esm/locale/ar-SA' {
+ import { arSA } from 'date-fns/esm/locale'
+ export default arSA
+}
+
+declare module 'date-fns/esm/locale/az' {
+ import { az } from 'date-fns/esm/locale'
+ export default az
+}
+
+declare module 'date-fns/esm/locale/be' {
+ import { be } from 'date-fns/esm/locale'
+ export default be
+}
+
+declare module 'date-fns/esm/locale/bg' {
+ import { bg } from 'date-fns/esm/locale'
+ export default bg
+}
+
+declare module 'date-fns/esm/locale/bn' {
+ import { bn } from 'date-fns/esm/locale'
+ export default bn
+}
+
+declare module 'date-fns/esm/locale/ca' {
+ import { ca } from 'date-fns/esm/locale'
+ export default ca
+}
+
+declare module 'date-fns/esm/locale/cs' {
+ import { cs } from 'date-fns/esm/locale'
+ export default cs
+}
+
+declare module 'date-fns/esm/locale/cy' {
+ import { cy } from 'date-fns/esm/locale'
+ export default cy
+}
+
+declare module 'date-fns/esm/locale/da' {
+ import { da } from 'date-fns/esm/locale'
+ export default da
+}
+
+declare module 'date-fns/esm/locale/de' {
+ import { de } from 'date-fns/esm/locale'
+ export default de
+}
+
+declare module 'date-fns/esm/locale/de-AT' {
+ import { deAT } from 'date-fns/esm/locale'
+ export default deAT
+}
+
+declare module 'date-fns/esm/locale/el' {
+ import { el } from 'date-fns/esm/locale'
+ export default el
+}
+
+declare module 'date-fns/esm/locale/en-AU' {
+ import { enAU } from 'date-fns/esm/locale'
+ export default enAU
+}
+
+declare module 'date-fns/esm/locale/en-CA' {
+ import { enCA } from 'date-fns/esm/locale'
+ export default enCA
+}
+
+declare module 'date-fns/esm/locale/en-GB' {
+ import { enGB } from 'date-fns/esm/locale'
+ export default enGB
+}
+
+declare module 'date-fns/esm/locale/en-IN' {
+ import { enIN } from 'date-fns/esm/locale'
+ export default enIN
+}
+
+declare module 'date-fns/esm/locale/en-NZ' {
+ import { enNZ } from 'date-fns/esm/locale'
+ export default enNZ
+}
+
+declare module 'date-fns/esm/locale/en-US' {
+ import { enUS } from 'date-fns/esm/locale'
+ export default enUS
+}
+
+declare module 'date-fns/esm/locale/en-ZA' {
+ import { enZA } from 'date-fns/esm/locale'
+ export default enZA
+}
+
+declare module 'date-fns/esm/locale/eo' {
+ import { eo } from 'date-fns/esm/locale'
+ export default eo
+}
+
+declare module 'date-fns/esm/locale/es' {
+ import { es } from 'date-fns/esm/locale'
+ export default es
+}
+
+declare module 'date-fns/esm/locale/et' {
+ import { et } from 'date-fns/esm/locale'
+ export default et
+}
+
+declare module 'date-fns/esm/locale/eu' {
+ import { eu } from 'date-fns/esm/locale'
+ export default eu
+}
+
+declare module 'date-fns/esm/locale/fa-IR' {
+ import { faIR } from 'date-fns/esm/locale'
+ export default faIR
+}
+
+declare module 'date-fns/esm/locale/fi' {
+ import { fi } from 'date-fns/esm/locale'
+ export default fi
+}
+
+declare module 'date-fns/esm/locale/fil' {
+ import { fil } from 'date-fns/esm/locale'
+ export default fil
+}
+
+declare module 'date-fns/esm/locale/fr' {
+ import { fr } from 'date-fns/esm/locale'
+ export default fr
+}
+
+declare module 'date-fns/esm/locale/fr-CA' {
+ import { frCA } from 'date-fns/esm/locale'
+ export default frCA
+}
+
+declare module 'date-fns/esm/locale/fr-CH' {
+ import { frCH } from 'date-fns/esm/locale'
+ export default frCH
+}
+
+declare module 'date-fns/esm/locale/gd' {
+ import { gd } from 'date-fns/esm/locale'
+ export default gd
+}
+
+declare module 'date-fns/esm/locale/gl' {
+ import { gl } from 'date-fns/esm/locale'
+ export default gl
+}
+
+declare module 'date-fns/esm/locale/gu' {
+ import { gu } from 'date-fns/esm/locale'
+ export default gu
+}
+
+declare module 'date-fns/esm/locale/he' {
+ import { he } from 'date-fns/esm/locale'
+ export default he
+}
+
+declare module 'date-fns/esm/locale/hi' {
+ import { hi } from 'date-fns/esm/locale'
+ export default hi
+}
+
+declare module 'date-fns/esm/locale/hr' {
+ import { hr } from 'date-fns/esm/locale'
+ export default hr
+}
+
+declare module 'date-fns/esm/locale/ht' {
+ import { ht } from 'date-fns/esm/locale'
+ export default ht
+}
+
+declare module 'date-fns/esm/locale/hu' {
+ import { hu } from 'date-fns/esm/locale'
+ export default hu
+}
+
+declare module 'date-fns/esm/locale/hy' {
+ import { hy } from 'date-fns/esm/locale'
+ export default hy
+}
+
+declare module 'date-fns/esm/locale/id' {
+ import { id } from 'date-fns/esm/locale'
+ export default id
+}
+
+declare module 'date-fns/esm/locale/is' {
+ import { is } from 'date-fns/esm/locale'
+ export default is
+}
+
+declare module 'date-fns/esm/locale/it' {
+ import { it } from 'date-fns/esm/locale'
+ export default it
+}
+
+declare module 'date-fns/esm/locale/ja' {
+ import { ja } from 'date-fns/esm/locale'
+ export default ja
+}
+
+declare module 'date-fns/esm/locale/ka' {
+ import { ka } from 'date-fns/esm/locale'
+ export default ka
+}
+
+declare module 'date-fns/esm/locale/kk' {
+ import { kk } from 'date-fns/esm/locale'
+ export default kk
+}
+
+declare module 'date-fns/esm/locale/kn' {
+ import { kn } from 'date-fns/esm/locale'
+ export default kn
+}
+
+declare module 'date-fns/esm/locale/ko' {
+ import { ko } from 'date-fns/esm/locale'
+ export default ko
+}
+
+declare module 'date-fns/esm/locale/lb' {
+ import { lb } from 'date-fns/esm/locale'
+ export default lb
+}
+
+declare module 'date-fns/esm/locale/lt' {
+ import { lt } from 'date-fns/esm/locale'
+ export default lt
+}
+
+declare module 'date-fns/esm/locale/lv' {
+ import { lv } from 'date-fns/esm/locale'
+ export default lv
+}
+
+declare module 'date-fns/esm/locale/mk' {
+ import { mk } from 'date-fns/esm/locale'
+ export default mk
+}
+
+declare module 'date-fns/esm/locale/mn' {
+ import { mn } from 'date-fns/esm/locale'
+ export default mn
+}
+
+declare module 'date-fns/esm/locale/ms' {
+ import { ms } from 'date-fns/esm/locale'
+ export default ms
+}
+
+declare module 'date-fns/esm/locale/mt' {
+ import { mt } from 'date-fns/esm/locale'
+ export default mt
+}
+
+declare module 'date-fns/esm/locale/nb' {
+ import { nb } from 'date-fns/esm/locale'
+ export default nb
+}
+
+declare module 'date-fns/esm/locale/nl' {
+ import { nl } from 'date-fns/esm/locale'
+ export default nl
+}
+
+declare module 'date-fns/esm/locale/nl-BE' {
+ import { nlBE } from 'date-fns/esm/locale'
+ export default nlBE
+}
+
+declare module 'date-fns/esm/locale/nn' {
+ import { nn } from 'date-fns/esm/locale'
+ export default nn
+}
+
+declare module 'date-fns/esm/locale/pl' {
+ import { pl } from 'date-fns/esm/locale'
+ export default pl
+}
+
+declare module 'date-fns/esm/locale/pt' {
+ import { pt } from 'date-fns/esm/locale'
+ export default pt
+}
+
+declare module 'date-fns/esm/locale/pt-BR' {
+ import { ptBR } from 'date-fns/esm/locale'
+ export default ptBR
+}
+
+declare module 'date-fns/esm/locale/ro' {
+ import { ro } from 'date-fns/esm/locale'
+ export default ro
+}
+
+declare module 'date-fns/esm/locale/ru' {
+ import { ru } from 'date-fns/esm/locale'
+ export default ru
+}
+
+declare module 'date-fns/esm/locale/sk' {
+ import { sk } from 'date-fns/esm/locale'
+ export default sk
+}
+
+declare module 'date-fns/esm/locale/sl' {
+ import { sl } from 'date-fns/esm/locale'
+ export default sl
+}
+
+declare module 'date-fns/esm/locale/sq' {
+ import { sq } from 'date-fns/esm/locale'
+ export default sq
+}
+
+declare module 'date-fns/esm/locale/sr' {
+ import { sr } from 'date-fns/esm/locale'
+ export default sr
+}
+
+declare module 'date-fns/esm/locale/sr-Latn' {
+ import { srLatn } from 'date-fns/esm/locale'
+ export default srLatn
+}
+
+declare module 'date-fns/esm/locale/sv' {
+ import { sv } from 'date-fns/esm/locale'
+ export default sv
+}
+
+declare module 'date-fns/esm/locale/ta' {
+ import { ta } from 'date-fns/esm/locale'
+ export default ta
+}
+
+declare module 'date-fns/esm/locale/te' {
+ import { te } from 'date-fns/esm/locale'
+ export default te
+}
+
+declare module 'date-fns/esm/locale/th' {
+ import { th } from 'date-fns/esm/locale'
+ export default th
+}
+
+declare module 'date-fns/esm/locale/tr' {
+ import { tr } from 'date-fns/esm/locale'
+ export default tr
+}
+
+declare module 'date-fns/esm/locale/ug' {
+ import { ug } from 'date-fns/esm/locale'
+ export default ug
+}
+
+declare module 'date-fns/esm/locale/uk' {
+ import { uk } from 'date-fns/esm/locale'
+ export default uk
+}
+
+declare module 'date-fns/esm/locale/uz' {
+ import { uz } from 'date-fns/esm/locale'
+ export default uz
+}
+
+declare module 'date-fns/esm/locale/vi' {
+ import { vi } from 'date-fns/esm/locale'
+ export default vi
+}
+
+declare module 'date-fns/esm/locale/zh-CN' {
+ import { zhCN } from 'date-fns/esm/locale'
+ export default zhCN
+}
+
+declare module 'date-fns/esm/locale/zh-TW' {
+ import { zhTW } from 'date-fns/esm/locale'
+ export default zhTW
+}
+
+declare module 'date-fns/esm/locale/af/index' {
+ import { af } from 'date-fns/esm/locale'
+ export default af
+}
+
+declare module 'date-fns/esm/locale/ar/index' {
+ import { ar } from 'date-fns/esm/locale'
+ export default ar
+}
+
+declare module 'date-fns/esm/locale/ar-DZ/index' {
+ import { arDZ } from 'date-fns/esm/locale'
+ export default arDZ
+}
+
+declare module 'date-fns/esm/locale/ar-MA/index' {
+ import { arMA } from 'date-fns/esm/locale'
+ export default arMA
+}
+
+declare module 'date-fns/esm/locale/ar-SA/index' {
+ import { arSA } from 'date-fns/esm/locale'
+ export default arSA
+}
+
+declare module 'date-fns/esm/locale/az/index' {
+ import { az } from 'date-fns/esm/locale'
+ export default az
+}
+
+declare module 'date-fns/esm/locale/be/index' {
+ import { be } from 'date-fns/esm/locale'
+ export default be
+}
+
+declare module 'date-fns/esm/locale/bg/index' {
+ import { bg } from 'date-fns/esm/locale'
+ export default bg
+}
+
+declare module 'date-fns/esm/locale/bn/index' {
+ import { bn } from 'date-fns/esm/locale'
+ export default bn
+}
+
+declare module 'date-fns/esm/locale/ca/index' {
+ import { ca } from 'date-fns/esm/locale'
+ export default ca
+}
+
+declare module 'date-fns/esm/locale/cs/index' {
+ import { cs } from 'date-fns/esm/locale'
+ export default cs
+}
+
+declare module 'date-fns/esm/locale/cy/index' {
+ import { cy } from 'date-fns/esm/locale'
+ export default cy
+}
+
+declare module 'date-fns/esm/locale/da/index' {
+ import { da } from 'date-fns/esm/locale'
+ export default da
+}
+
+declare module 'date-fns/esm/locale/de/index' {
+ import { de } from 'date-fns/esm/locale'
+ export default de
+}
+
+declare module 'date-fns/esm/locale/de-AT/index' {
+ import { deAT } from 'date-fns/esm/locale'
+ export default deAT
+}
+
+declare module 'date-fns/esm/locale/el/index' {
+ import { el } from 'date-fns/esm/locale'
+ export default el
+}
+
+declare module 'date-fns/esm/locale/en-AU/index' {
+ import { enAU } from 'date-fns/esm/locale'
+ export default enAU
+}
+
+declare module 'date-fns/esm/locale/en-CA/index' {
+ import { enCA } from 'date-fns/esm/locale'
+ export default enCA
+}
+
+declare module 'date-fns/esm/locale/en-GB/index' {
+ import { enGB } from 'date-fns/esm/locale'
+ export default enGB
+}
+
+declare module 'date-fns/esm/locale/en-IN/index' {
+ import { enIN } from 'date-fns/esm/locale'
+ export default enIN
+}
+
+declare module 'date-fns/esm/locale/en-NZ/index' {
+ import { enNZ } from 'date-fns/esm/locale'
+ export default enNZ
+}
+
+declare module 'date-fns/esm/locale/en-US/index' {
+ import { enUS } from 'date-fns/esm/locale'
+ export default enUS
+}
+
+declare module 'date-fns/esm/locale/en-ZA/index' {
+ import { enZA } from 'date-fns/esm/locale'
+ export default enZA
+}
+
+declare module 'date-fns/esm/locale/eo/index' {
+ import { eo } from 'date-fns/esm/locale'
+ export default eo
+}
+
+declare module 'date-fns/esm/locale/es/index' {
+ import { es } from 'date-fns/esm/locale'
+ export default es
+}
+
+declare module 'date-fns/esm/locale/et/index' {
+ import { et } from 'date-fns/esm/locale'
+ export default et
+}
+
+declare module 'date-fns/esm/locale/eu/index' {
+ import { eu } from 'date-fns/esm/locale'
+ export default eu
+}
+
+declare module 'date-fns/esm/locale/fa-IR/index' {
+ import { faIR } from 'date-fns/esm/locale'
+ export default faIR
+}
+
+declare module 'date-fns/esm/locale/fi/index' {
+ import { fi } from 'date-fns/esm/locale'
+ export default fi
+}
+
+declare module 'date-fns/esm/locale/fil/index' {
+ import { fil } from 'date-fns/esm/locale'
+ export default fil
+}
+
+declare module 'date-fns/esm/locale/fr/index' {
+ import { fr } from 'date-fns/esm/locale'
+ export default fr
+}
+
+declare module 'date-fns/esm/locale/fr-CA/index' {
+ import { frCA } from 'date-fns/esm/locale'
+ export default frCA
+}
+
+declare module 'date-fns/esm/locale/fr-CH/index' {
+ import { frCH } from 'date-fns/esm/locale'
+ export default frCH
+}
+
+declare module 'date-fns/esm/locale/gd/index' {
+ import { gd } from 'date-fns/esm/locale'
+ export default gd
+}
+
+declare module 'date-fns/esm/locale/gl/index' {
+ import { gl } from 'date-fns/esm/locale'
+ export default gl
+}
+
+declare module 'date-fns/esm/locale/gu/index' {
+ import { gu } from 'date-fns/esm/locale'
+ export default gu
+}
+
+declare module 'date-fns/esm/locale/he/index' {
+ import { he } from 'date-fns/esm/locale'
+ export default he
+}
+
+declare module 'date-fns/esm/locale/hi/index' {
+ import { hi } from 'date-fns/esm/locale'
+ export default hi
+}
+
+declare module 'date-fns/esm/locale/hr/index' {
+ import { hr } from 'date-fns/esm/locale'
+ export default hr
+}
+
+declare module 'date-fns/esm/locale/ht/index' {
+ import { ht } from 'date-fns/esm/locale'
+ export default ht
+}
+
+declare module 'date-fns/esm/locale/hu/index' {
+ import { hu } from 'date-fns/esm/locale'
+ export default hu
+}
+
+declare module 'date-fns/esm/locale/hy/index' {
+ import { hy } from 'date-fns/esm/locale'
+ export default hy
+}
+
+declare module 'date-fns/esm/locale/id/index' {
+ import { id } from 'date-fns/esm/locale'
+ export default id
+}
+
+declare module 'date-fns/esm/locale/is/index' {
+ import { is } from 'date-fns/esm/locale'
+ export default is
+}
+
+declare module 'date-fns/esm/locale/it/index' {
+ import { it } from 'date-fns/esm/locale'
+ export default it
+}
+
+declare module 'date-fns/esm/locale/ja/index' {
+ import { ja } from 'date-fns/esm/locale'
+ export default ja
+}
+
+declare module 'date-fns/esm/locale/ka/index' {
+ import { ka } from 'date-fns/esm/locale'
+ export default ka
+}
+
+declare module 'date-fns/esm/locale/kk/index' {
+ import { kk } from 'date-fns/esm/locale'
+ export default kk
+}
+
+declare module 'date-fns/esm/locale/kn/index' {
+ import { kn } from 'date-fns/esm/locale'
+ export default kn
+}
+
+declare module 'date-fns/esm/locale/ko/index' {
+ import { ko } from 'date-fns/esm/locale'
+ export default ko
+}
+
+declare module 'date-fns/esm/locale/lb/index' {
+ import { lb } from 'date-fns/esm/locale'
+ export default lb
+}
+
+declare module 'date-fns/esm/locale/lt/index' {
+ import { lt } from 'date-fns/esm/locale'
+ export default lt
+}
+
+declare module 'date-fns/esm/locale/lv/index' {
+ import { lv } from 'date-fns/esm/locale'
+ export default lv
+}
+
+declare module 'date-fns/esm/locale/mk/index' {
+ import { mk } from 'date-fns/esm/locale'
+ export default mk
+}
+
+declare module 'date-fns/esm/locale/mn/index' {
+ import { mn } from 'date-fns/esm/locale'
+ export default mn
+}
+
+declare module 'date-fns/esm/locale/ms/index' {
+ import { ms } from 'date-fns/esm/locale'
+ export default ms
+}
+
+declare module 'date-fns/esm/locale/mt/index' {
+ import { mt } from 'date-fns/esm/locale'
+ export default mt
+}
+
+declare module 'date-fns/esm/locale/nb/index' {
+ import { nb } from 'date-fns/esm/locale'
+ export default nb
+}
+
+declare module 'date-fns/esm/locale/nl/index' {
+ import { nl } from 'date-fns/esm/locale'
+ export default nl
+}
+
+declare module 'date-fns/esm/locale/nl-BE/index' {
+ import { nlBE } from 'date-fns/esm/locale'
+ export default nlBE
+}
+
+declare module 'date-fns/esm/locale/nn/index' {
+ import { nn } from 'date-fns/esm/locale'
+ export default nn
+}
+
+declare module 'date-fns/esm/locale/pl/index' {
+ import { pl } from 'date-fns/esm/locale'
+ export default pl
+}
+
+declare module 'date-fns/esm/locale/pt/index' {
+ import { pt } from 'date-fns/esm/locale'
+ export default pt
+}
+
+declare module 'date-fns/esm/locale/pt-BR/index' {
+ import { ptBR } from 'date-fns/esm/locale'
+ export default ptBR
+}
+
+declare module 'date-fns/esm/locale/ro/index' {
+ import { ro } from 'date-fns/esm/locale'
+ export default ro
+}
+
+declare module 'date-fns/esm/locale/ru/index' {
+ import { ru } from 'date-fns/esm/locale'
+ export default ru
+}
+
+declare module 'date-fns/esm/locale/sk/index' {
+ import { sk } from 'date-fns/esm/locale'
+ export default sk
+}
+
+declare module 'date-fns/esm/locale/sl/index' {
+ import { sl } from 'date-fns/esm/locale'
+ export default sl
+}
+
+declare module 'date-fns/esm/locale/sq/index' {
+ import { sq } from 'date-fns/esm/locale'
+ export default sq
+}
+
+declare module 'date-fns/esm/locale/sr/index' {
+ import { sr } from 'date-fns/esm/locale'
+ export default sr
+}
+
+declare module 'date-fns/esm/locale/sr-Latn/index' {
+ import { srLatn } from 'date-fns/esm/locale'
+ export default srLatn
+}
+
+declare module 'date-fns/esm/locale/sv/index' {
+ import { sv } from 'date-fns/esm/locale'
+ export default sv
+}
+
+declare module 'date-fns/esm/locale/ta/index' {
+ import { ta } from 'date-fns/esm/locale'
+ export default ta
+}
+
+declare module 'date-fns/esm/locale/te/index' {
+ import { te } from 'date-fns/esm/locale'
+ export default te
+}
+
+declare module 'date-fns/esm/locale/th/index' {
+ import { th } from 'date-fns/esm/locale'
+ export default th
+}
+
+declare module 'date-fns/esm/locale/tr/index' {
+ import { tr } from 'date-fns/esm/locale'
+ export default tr
+}
+
+declare module 'date-fns/esm/locale/ug/index' {
+ import { ug } from 'date-fns/esm/locale'
+ export default ug
+}
+
+declare module 'date-fns/esm/locale/uk/index' {
+ import { uk } from 'date-fns/esm/locale'
+ export default uk
+}
+
+declare module 'date-fns/esm/locale/uz/index' {
+ import { uz } from 'date-fns/esm/locale'
+ export default uz
+}
+
+declare module 'date-fns/esm/locale/vi/index' {
+ import { vi } from 'date-fns/esm/locale'
+ export default vi
+}
+
+declare module 'date-fns/esm/locale/zh-CN/index' {
+ import { zhCN } from 'date-fns/esm/locale'
+ export default zhCN
+}
+
+declare module 'date-fns/esm/locale/zh-TW/index' {
+ import { zhTW } from 'date-fns/esm/locale'
+ export default zhTW
+}
+
+declare module 'date-fns/esm/locale/af/index.js' {
+ import { af } from 'date-fns/esm/locale'
+ export default af
+}
+
+declare module 'date-fns/esm/locale/ar/index.js' {
+ import { ar } from 'date-fns/esm/locale'
+ export default ar
+}
+
+declare module 'date-fns/esm/locale/ar-DZ/index.js' {
+ import { arDZ } from 'date-fns/esm/locale'
+ export default arDZ
+}
+
+declare module 'date-fns/esm/locale/ar-MA/index.js' {
+ import { arMA } from 'date-fns/esm/locale'
+ export default arMA
+}
+
+declare module 'date-fns/esm/locale/ar-SA/index.js' {
+ import { arSA } from 'date-fns/esm/locale'
+ export default arSA
+}
+
+declare module 'date-fns/esm/locale/az/index.js' {
+ import { az } from 'date-fns/esm/locale'
+ export default az
+}
+
+declare module 'date-fns/esm/locale/be/index.js' {
+ import { be } from 'date-fns/esm/locale'
+ export default be
+}
+
+declare module 'date-fns/esm/locale/bg/index.js' {
+ import { bg } from 'date-fns/esm/locale'
+ export default bg
+}
+
+declare module 'date-fns/esm/locale/bn/index.js' {
+ import { bn } from 'date-fns/esm/locale'
+ export default bn
+}
+
+declare module 'date-fns/esm/locale/ca/index.js' {
+ import { ca } from 'date-fns/esm/locale'
+ export default ca
+}
+
+declare module 'date-fns/esm/locale/cs/index.js' {
+ import { cs } from 'date-fns/esm/locale'
+ export default cs
+}
+
+declare module 'date-fns/esm/locale/cy/index.js' {
+ import { cy } from 'date-fns/esm/locale'
+ export default cy
+}
+
+declare module 'date-fns/esm/locale/da/index.js' {
+ import { da } from 'date-fns/esm/locale'
+ export default da
+}
+
+declare module 'date-fns/esm/locale/de/index.js' {
+ import { de } from 'date-fns/esm/locale'
+ export default de
+}
+
+declare module 'date-fns/esm/locale/de-AT/index.js' {
+ import { deAT } from 'date-fns/esm/locale'
+ export default deAT
+}
+
+declare module 'date-fns/esm/locale/el/index.js' {
+ import { el } from 'date-fns/esm/locale'
+ export default el
+}
+
+declare module 'date-fns/esm/locale/en-AU/index.js' {
+ import { enAU } from 'date-fns/esm/locale'
+ export default enAU
+}
+
+declare module 'date-fns/esm/locale/en-CA/index.js' {
+ import { enCA } from 'date-fns/esm/locale'
+ export default enCA
+}
+
+declare module 'date-fns/esm/locale/en-GB/index.js' {
+ import { enGB } from 'date-fns/esm/locale'
+ export default enGB
+}
+
+declare module 'date-fns/esm/locale/en-IN/index.js' {
+ import { enIN } from 'date-fns/esm/locale'
+ export default enIN
+}
+
+declare module 'date-fns/esm/locale/en-NZ/index.js' {
+ import { enNZ } from 'date-fns/esm/locale'
+ export default enNZ
+}
+
+declare module 'date-fns/esm/locale/en-US/index.js' {
+ import { enUS } from 'date-fns/esm/locale'
+ export default enUS
+}
+
+declare module 'date-fns/esm/locale/en-ZA/index.js' {
+ import { enZA } from 'date-fns/esm/locale'
+ export default enZA
+}
+
+declare module 'date-fns/esm/locale/eo/index.js' {
+ import { eo } from 'date-fns/esm/locale'
+ export default eo
+}
+
+declare module 'date-fns/esm/locale/es/index.js' {
+ import { es } from 'date-fns/esm/locale'
+ export default es
+}
+
+declare module 'date-fns/esm/locale/et/index.js' {
+ import { et } from 'date-fns/esm/locale'
+ export default et
+}
+
+declare module 'date-fns/esm/locale/eu/index.js' {
+ import { eu } from 'date-fns/esm/locale'
+ export default eu
+}
+
+declare module 'date-fns/esm/locale/fa-IR/index.js' {
+ import { faIR } from 'date-fns/esm/locale'
+ export default faIR
+}
+
+declare module 'date-fns/esm/locale/fi/index.js' {
+ import { fi } from 'date-fns/esm/locale'
+ export default fi
+}
+
+declare module 'date-fns/esm/locale/fil/index.js' {
+ import { fil } from 'date-fns/esm/locale'
+ export default fil
+}
+
+declare module 'date-fns/esm/locale/fr/index.js' {
+ import { fr } from 'date-fns/esm/locale'
+ export default fr
+}
+
+declare module 'date-fns/esm/locale/fr-CA/index.js' {
+ import { frCA } from 'date-fns/esm/locale'
+ export default frCA
+}
+
+declare module 'date-fns/esm/locale/fr-CH/index.js' {
+ import { frCH } from 'date-fns/esm/locale'
+ export default frCH
+}
+
+declare module 'date-fns/esm/locale/gd/index.js' {
+ import { gd } from 'date-fns/esm/locale'
+ export default gd
+}
+
+declare module 'date-fns/esm/locale/gl/index.js' {
+ import { gl } from 'date-fns/esm/locale'
+ export default gl
+}
+
+declare module 'date-fns/esm/locale/gu/index.js' {
+ import { gu } from 'date-fns/esm/locale'
+ export default gu
+}
+
+declare module 'date-fns/esm/locale/he/index.js' {
+ import { he } from 'date-fns/esm/locale'
+ export default he
+}
+
+declare module 'date-fns/esm/locale/hi/index.js' {
+ import { hi } from 'date-fns/esm/locale'
+ export default hi
+}
+
+declare module 'date-fns/esm/locale/hr/index.js' {
+ import { hr } from 'date-fns/esm/locale'
+ export default hr
+}
+
+declare module 'date-fns/esm/locale/ht/index.js' {
+ import { ht } from 'date-fns/esm/locale'
+ export default ht
+}
+
+declare module 'date-fns/esm/locale/hu/index.js' {
+ import { hu } from 'date-fns/esm/locale'
+ export default hu
+}
+
+declare module 'date-fns/esm/locale/hy/index.js' {
+ import { hy } from 'date-fns/esm/locale'
+ export default hy
+}
+
+declare module 'date-fns/esm/locale/id/index.js' {
+ import { id } from 'date-fns/esm/locale'
+ export default id
+}
+
+declare module 'date-fns/esm/locale/is/index.js' {
+ import { is } from 'date-fns/esm/locale'
+ export default is
+}
+
+declare module 'date-fns/esm/locale/it/index.js' {
+ import { it } from 'date-fns/esm/locale'
+ export default it
+}
+
+declare module 'date-fns/esm/locale/ja/index.js' {
+ import { ja } from 'date-fns/esm/locale'
+ export default ja
+}
+
+declare module 'date-fns/esm/locale/ka/index.js' {
+ import { ka } from 'date-fns/esm/locale'
+ export default ka
+}
+
+declare module 'date-fns/esm/locale/kk/index.js' {
+ import { kk } from 'date-fns/esm/locale'
+ export default kk
+}
+
+declare module 'date-fns/esm/locale/kn/index.js' {
+ import { kn } from 'date-fns/esm/locale'
+ export default kn
+}
+
+declare module 'date-fns/esm/locale/ko/index.js' {
+ import { ko } from 'date-fns/esm/locale'
+ export default ko
+}
+
+declare module 'date-fns/esm/locale/lb/index.js' {
+ import { lb } from 'date-fns/esm/locale'
+ export default lb
+}
+
+declare module 'date-fns/esm/locale/lt/index.js' {
+ import { lt } from 'date-fns/esm/locale'
+ export default lt
+}
+
+declare module 'date-fns/esm/locale/lv/index.js' {
+ import { lv } from 'date-fns/esm/locale'
+ export default lv
+}
+
+declare module 'date-fns/esm/locale/mk/index.js' {
+ import { mk } from 'date-fns/esm/locale'
+ export default mk
+}
+
+declare module 'date-fns/esm/locale/mn/index.js' {
+ import { mn } from 'date-fns/esm/locale'
+ export default mn
+}
+
+declare module 'date-fns/esm/locale/ms/index.js' {
+ import { ms } from 'date-fns/esm/locale'
+ export default ms
+}
+
+declare module 'date-fns/esm/locale/mt/index.js' {
+ import { mt } from 'date-fns/esm/locale'
+ export default mt
+}
+
+declare module 'date-fns/esm/locale/nb/index.js' {
+ import { nb } from 'date-fns/esm/locale'
+ export default nb
+}
+
+declare module 'date-fns/esm/locale/nl/index.js' {
+ import { nl } from 'date-fns/esm/locale'
+ export default nl
+}
+
+declare module 'date-fns/esm/locale/nl-BE/index.js' {
+ import { nlBE } from 'date-fns/esm/locale'
+ export default nlBE
+}
+
+declare module 'date-fns/esm/locale/nn/index.js' {
+ import { nn } from 'date-fns/esm/locale'
+ export default nn
+}
+
+declare module 'date-fns/esm/locale/pl/index.js' {
+ import { pl } from 'date-fns/esm/locale'
+ export default pl
+}
+
+declare module 'date-fns/esm/locale/pt/index.js' {
+ import { pt } from 'date-fns/esm/locale'
+ export default pt
+}
+
+declare module 'date-fns/esm/locale/pt-BR/index.js' {
+ import { ptBR } from 'date-fns/esm/locale'
+ export default ptBR
+}
+
+declare module 'date-fns/esm/locale/ro/index.js' {
+ import { ro } from 'date-fns/esm/locale'
+ export default ro
+}
+
+declare module 'date-fns/esm/locale/ru/index.js' {
+ import { ru } from 'date-fns/esm/locale'
+ export default ru
+}
+
+declare module 'date-fns/esm/locale/sk/index.js' {
+ import { sk } from 'date-fns/esm/locale'
+ export default sk
+}
+
+declare module 'date-fns/esm/locale/sl/index.js' {
+ import { sl } from 'date-fns/esm/locale'
+ export default sl
+}
+
+declare module 'date-fns/esm/locale/sq/index.js' {
+ import { sq } from 'date-fns/esm/locale'
+ export default sq
+}
+
+declare module 'date-fns/esm/locale/sr/index.js' {
+ import { sr } from 'date-fns/esm/locale'
+ export default sr
+}
+
+declare module 'date-fns/esm/locale/sr-Latn/index.js' {
+ import { srLatn } from 'date-fns/esm/locale'
+ export default srLatn
+}
+
+declare module 'date-fns/esm/locale/sv/index.js' {
+ import { sv } from 'date-fns/esm/locale'
+ export default sv
+}
+
+declare module 'date-fns/esm/locale/ta/index.js' {
+ import { ta } from 'date-fns/esm/locale'
+ export default ta
+}
+
+declare module 'date-fns/esm/locale/te/index.js' {
+ import { te } from 'date-fns/esm/locale'
+ export default te
+}
+
+declare module 'date-fns/esm/locale/th/index.js' {
+ import { th } from 'date-fns/esm/locale'
+ export default th
+}
+
+declare module 'date-fns/esm/locale/tr/index.js' {
+ import { tr } from 'date-fns/esm/locale'
+ export default tr
+}
+
+declare module 'date-fns/esm/locale/ug/index.js' {
+ import { ug } from 'date-fns/esm/locale'
+ export default ug
+}
+
+declare module 'date-fns/esm/locale/uk/index.js' {
+ import { uk } from 'date-fns/esm/locale'
+ export default uk
+}
+
+declare module 'date-fns/esm/locale/uz/index.js' {
+ import { uz } from 'date-fns/esm/locale'
+ export default uz
+}
+
+declare module 'date-fns/esm/locale/vi/index.js' {
+ import { vi } from 'date-fns/esm/locale'
+ export default vi
+}
+
+declare module 'date-fns/esm/locale/zh-CN/index.js' {
+ import { zhCN } from 'date-fns/esm/locale'
+ export default zhCN
+}
+
+declare module 'date-fns/esm/locale/zh-TW/index.js' {
+ import { zhTW } from 'date-fns/esm/locale'
+ export default zhTW
+}
+
+// dateFns Global Interface
+
+interface dateFns {
+ add(date: Date | number, duration: Duration): Date
+
+ addBusinessDays(date: Date | number, amount: number): Date
+
+ addDays(date: Date | number, amount: number): Date
+
+ addHours(date: Date | number, amount: number): Date
+
+ addISOWeekYears(date: Date | number, amount: number): Date
+
+ addMilliseconds(date: Date | number, amount: number): Date
+
+ addMinutes(date: Date | number, amount: number): Date
+
+ addMonths(date: Date | number, amount: number): Date
+
+ addQuarters(date: Date | number, amount: number): Date
+
+ addSeconds(date: Date | number, amount: number): Date
+
+ addWeeks(date: Date | number, amount: number): Date
+
+ addYears(date: Date | number, amount: number): Date
+
+ areIntervalsOverlapping(
+ intervalLeft: Interval,
+ intervalRight: Interval,
+ options?: {
+ inclusive?: boolean
+ }
+ ): boolean
+
+ closestIndexTo(
+ dateToCompare: Date | number,
+ datesArray: (Date | number)[]
+ ): number
+
+ closestTo(dateToCompare: Date | number, datesArray: (Date | number)[]): Date
+
+ compareAsc(dateLeft: Date | number, dateRight: Date | number): number
+
+ compareDesc(dateLeft: Date | number, dateRight: Date | number): number
+
+ daysToWeeks(days: number): number
+
+ differenceInBusinessDays(
+ dateLeft: Date | number,
+ dateRight: Date | number
+ ): number
+
+ differenceInCalendarDays(
+ dateLeft: Date | number,
+ dateRight: Date | number
+ ): number
+
+ differenceInCalendarISOWeeks(
+ dateLeft: Date | number,
+ dateRight: Date | number
+ ): number
+
+ differenceInCalendarISOWeekYears(
+ dateLeft: Date | number,
+ dateRight: Date | number
+ ): number
+
+ differenceInCalendarMonths(
+ dateLeft: Date | number,
+ dateRight: Date | number
+ ): number
+
+ differenceInCalendarQuarters(
+ dateLeft: Date | number,
+ dateRight: Date | number
+ ): number
+
+ differenceInCalendarWeeks(
+ dateLeft: Date | number,
+ dateRight: Date | number,
+ options?: {
+ locale?: Locale
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6
+ }
+ ): number
+
+ differenceInCalendarYears(
+ dateLeft: Date | number,
+ dateRight: Date | number
+ ): number
+
+ differenceInDays(dateLeft: Date | number, dateRight: Date | number): number
+
+ differenceInHours(dateLeft: Date | number, dateRight: Date | number): number
+
+ differenceInISOWeekYears(
+ dateLeft: Date | number,
+ dateRight: Date | number
+ ): number
+
+ differenceInMilliseconds(
+ dateLeft: Date | number,
+ dateRight: Date | number
+ ): number
+
+ differenceInMinutes(dateLeft: Date | number, dateRight: Date | number): number
+
+ differenceInMonths(dateLeft: Date | number, dateRight: Date | number): number
+
+ differenceInQuarters(
+ dateLeft: Date | number,
+ dateRight: Date | number
+ ): number
+
+ differenceInSeconds(dateLeft: Date | number, dateRight: Date | number): number
+
+ differenceInWeeks(dateLeft: Date | number, dateRight: Date | number): number
+
+ differenceInYears(dateLeft: Date | number, dateRight: Date | number): number
+
+ eachDayOfInterval(
+ interval: Interval,
+ options?: {
+ step?: number
+ }
+ ): Date[]
+
+ eachHourOfInterval(
+ interval: Interval,
+ options?: {
+ step?: number
+ }
+ ): Date[]
+
+ eachMinuteOfInterval(
+ interval: Interval,
+ options?: {
+ step?: number
+ }
+ ): Date[]
+
+ eachMonthOfInterval(interval: Interval): Date[]
+
+ eachQuarterOfInterval(interval: Interval): Date[]
+
+ eachWeekendOfInterval(interval: Interval): Date[]
+
+ eachWeekendOfMonth(date: Date | number): Date[]
+
+ eachWeekendOfYear(date: Date | number): Date[]
+
+ eachWeekOfInterval(
+ interval: Interval,
+ options?: {
+ locale?: Locale
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6
+ }
+ ): Date[]
+
+ eachYearOfInterval(interval: Interval): Date[]
+
+ endOfDay(date: Date | number): Date
+
+ endOfDecade(
+ date: Date | number,
+ options?: {
+ additionalDigits?: 0 | 1 | 2
+ }
+ ): Date
+
+ endOfHour(date: Date | number): Date
+
+ endOfISOWeek(date: Date | number): Date
+
+ endOfISOWeekYear(date: Date | number): Date
+
+ endOfMinute(date: Date | number): Date
+
+ endOfMonth(date: Date | number): Date
+
+ endOfQuarter(date: Date | number): Date
+
+ endOfSecond(date: Date | number): Date
+
+ endOfToday(): Date
+
+ endOfTomorrow(): Date
+
+ endOfWeek(
+ date: Date | number,
+ options?: {
+ locale?: Locale
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6
+ }
+ ): Date
+
+ endOfYear(date: Date | number): Date
+
+ endOfYesterday(): Date
+
+ format(
+ date: Date | number,
+ format: string,
+ options?: {
+ locale?: Locale
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6
+ firstWeekContainsDate?: number
+ useAdditionalWeekYearTokens?: boolean
+ useAdditionalDayOfYearTokens?: boolean
+ }
+ ): string
+
+ formatDistance(
+ date: Date | number,
+ baseDate: Date | number,
+ options?: {
+ includeSeconds?: boolean
+ addSuffix?: boolean
+ locale?: Locale
+ }
+ ): string
+
+ formatDistanceStrict(
+ date: Date | number,
+ baseDate: Date | number,
+ options?: {
+ addSuffix?: boolean
+ unit?: 'second' | 'minute' | 'hour' | 'day' | 'month' | 'year'
+ roundingMethod?: 'floor' | 'ceil' | 'round'
+ locale?: Locale
+ }
+ ): string
+
+ formatDistanceToNow(
+ date: Date | number,
+ options?: {
+ includeSeconds?: boolean
+ addSuffix?: boolean
+ locale?: Locale
+ }
+ ): string
+
+ formatDistanceToNowStrict(
+ date: Date | number,
+ options?: {
+ addSuffix?: boolean
+ unit?: 'second' | 'minute' | 'hour' | 'day' | 'month' | 'year'
+ roundingMethod?: 'floor' | 'ceil' | 'round'
+ locale?: Locale
+ }
+ ): string
+
+ formatDuration(
+ duration: Duration,
+ options?: {
+ format?: string[]
+ zero?: boolean
+ delimiter?: string
+ locale?: Locale
+ }
+ ): string
+
+ formatISO(
+ date: Date | number,
+ options?: {
+ format?: 'extended' | 'basic'
+ representation?: 'complete' | 'date' | 'time'
+ }
+ ): string
+
+ formatISO9075(
+ date: Date | number,
+ options?: {
+ format?: 'extended' | 'basic'
+ representation?: 'complete' | 'date' | 'time'
+ }
+ ): string
+
+ formatISODuration(duration: Duration): string
+
+ formatRelative(
+ date: Date | number,
+ baseDate: Date | number,
+ options?: {
+ locale?: Locale
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6
+ }
+ ): string
+
+ formatRFC3339(
+ date: Date | number,
+ options?: {
+ fractionDigits?: 0 | 1 | 2 | 3
+ }
+ ): string
+
+ formatRFC7231(date: Date | number): string
+
+ fromUnixTime(unixTime: number): Date
+
+ getDate(date: Date | number): number
+
+ getDay(date: Date | number): 0 | 1 | 2 | 3 | 4 | 5 | 6
+
+ getDayOfYear(date: Date | number): number
+
+ getDaysInMonth(date: Date | number): number
+
+ getDaysInYear(date: Date | number): number
+
+ getDecade(date: Date | number): number
+
+ getHours(date: Date | number): number
+
+ getISODay(date: Date | number): number
+
+ getISOWeek(date: Date | number): number
+
+ getISOWeeksInYear(date: Date | number): number
+
+ getISOWeekYear(date: Date | number): number
+
+ getMilliseconds(date: Date | number): number
+
+ getMinutes(date: Date | number): number
+
+ getMonth(date: Date | number): number
+
+ getOverlappingDaysInIntervals(
+ intervalLeft: Interval,
+ intervalRight: Interval
+ ): number
+
+ getQuarter(date: Date | number): number
+
+ getSeconds(date: Date | number): number
+
+ getTime(date: Date | number): number
+
+ getUnixTime(date: Date | number): number
+
+ getWeek(
+ date: Date | number,
+ options?: {
+ locale?: Locale
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7
+ }
+ ): number
+
+ getWeekOfMonth(
+ date: Date | number,
+ options?: {
+ locale?: Locale
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6
+ }
+ ): number
+
+ getWeeksInMonth(
+ date: Date | number,
+ options?: {
+ locale?: Locale
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6
+ }
+ ): number
+
+ getWeekYear(
+ date: Date | number,
+ options?: {
+ locale?: Locale
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7
+ }
+ ): number
+
+ getYear(date: Date | number): number
+
+ hoursToMilliseconds(hours: number): number
+
+ hoursToMinutes(hours: number): number
+
+ hoursToSeconds(hours: number): number
+
+ intervalToDuration(interval: Interval): Duration
+
+ intlFormat(
+ argument: Date | number,
+ formatOptions?: {
+ localeMatcher?: 'lookup' | 'best fit'
+ weekday?: 'narrow' | 'short' | 'long'
+ era?: 'narrow' | 'short' | 'long'
+ year?: 'numeric' | '2-digit'
+ month?: 'numeric' | '2-digit' | 'narrow' | 'short' | 'long'
+ day?: 'numeric' | '2-digit'
+ hour?: 'numeric' | '2-digit'
+ minute?: 'numeric' | '2-digit'
+ second?: 'numeric' | '2-digit'
+ timeZoneName?: 'short' | 'long'
+ formatMatcher?: 'basic' | 'best fit'
+ hour12?: boolean
+ timeZone?: string
+ },
+ localeOptions?: {
+ locale?: string | string[]
+ }
+ ): string
+
+ isAfter(date: Date | number, dateToCompare: Date | number): boolean
+
+ isBefore(date: Date | number, dateToCompare: Date | number): boolean
+
+ isDate(value: any): boolean
+
+ isEqual(dateLeft: Date | number, dateRight: Date | number): boolean
+
+ isExists(year: number, month: number, day: number): boolean
+
+ isFirstDayOfMonth(date: Date | number): boolean
+
+ isFriday(date: Date | number): boolean
+
+ isFuture(date: Date | number): boolean
+
+ isLastDayOfMonth(date: Date | number): boolean
+
+ isLeapYear(date: Date | number): boolean
+
+ isMatch(
+ dateString: string,
+ formatString: string,
+ options?: {
+ locale?: Locale
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7
+ useAdditionalWeekYearTokens?: boolean
+ useAdditionalDayOfYearTokens?: boolean
+ }
+ ): boolean
+
+ isMonday(date: Date | number): boolean
+
+ isPast(date: Date | number): boolean
+
+ isSameDay(dateLeft: Date | number, dateRight: Date | number): boolean
+
+ isSameHour(dateLeft: Date | number, dateRight: Date | number): boolean
+
+ isSameISOWeek(dateLeft: Date | number, dateRight: Date | number): boolean
+
+ isSameISOWeekYear(dateLeft: Date | number, dateRight: Date | number): boolean
+
+ isSameMinute(dateLeft: Date | number, dateRight: Date | number): boolean
+
+ isSameMonth(dateLeft: Date | number, dateRight: Date | number): boolean
+
+ isSameQuarter(dateLeft: Date | number, dateRight: Date | number): boolean
+
+ isSameSecond(dateLeft: Date | number, dateRight: Date | number): boolean
+
+ isSameWeek(
+ dateLeft: Date | number,
+ dateRight: Date | number,
+ options?: {
+ locale?: Locale
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6
+ }
+ ): boolean
+
+ isSameYear(dateLeft: Date | number, dateRight: Date | number): boolean
+
+ isSaturday(date: Date | number): boolean
+
+ isSunday(date: Date | number): boolean
+
+ isThisHour(date: Date | number): boolean
+
+ isThisISOWeek(date: Date | number): boolean
+
+ isThisMinute(date: Date | number): boolean
+
+ isThisMonth(date: Date | number): boolean
+
+ isThisQuarter(date: Date | number): boolean
+
+ isThisSecond(date: Date | number): boolean
+
+ isThisWeek(
+ date: Date | number,
+ options?: {
+ locale?: Locale
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6
+ }
+ ): boolean
+
+ isThisYear(date: Date | number): boolean
+
+ isThursday(date: Date | number): boolean
+
+ isToday(date: Date | number): boolean
+
+ isTomorrow(date: Date | number): boolean
+
+ isTuesday(date: Date | number): boolean
+
+ isValid(date: any): boolean
+
+ isWednesday(date: Date | number): boolean
+
+ isWeekend(date: Date | number): boolean
+
+ isWithinInterval(date: Date | number, interval: Interval): boolean
+
+ isYesterday(date: Date | number): boolean
+
+ lastDayOfDecade(date: Date | number): Date
+
+ lastDayOfISOWeek(date: Date | number): Date
+
+ lastDayOfISOWeekYear(date: Date | number): Date
+
+ lastDayOfMonth(date: Date | number): Date
+
+ lastDayOfQuarter(
+ date: Date | number,
+ options?: {
+ additionalDigits?: 0 | 1 | 2
+ }
+ ): Date
+
+ lastDayOfWeek(
+ date: Date | number,
+ options?: {
+ locale?: Locale
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6
+ }
+ ): Date
+
+ lastDayOfYear(date: Date | number): Date
+
+ lightFormat(date: Date | number, format: string): string
+
+ max(datesArray: (Date | number)[]): Date
+
+ milliseconds(duration: Duration): number
+
+ millisecondsToHours(milliseconds: number): number
+
+ millisecondsToMinutes(milliseconds: number): number
+
+ millisecondsToSeconds(milliseconds: number): number
+
+ min(datesArray: (Date | number)[]): Date
+
+ minutesToHours(minutes: number): number
+
+ minutesToMilliseconds(minutes: number): number
+
+ minutesToSeconds(minutes: number): number
+
+ monthsToQuarters(months: number): number
+
+ monthsToYears(months: number): number
+
+ nextDay(date: Date | number, day: Day): Date
+
+ nextFriday(date: Date | number): Date
+
+ nextMonday(date: Date | number): Date
+
+ nextSaturday(date: Date | number): Date
+
+ nextSunday(date: Date | number): Date
+
+ nextThursday(date: Date | number): Date
+
+ nextTuesday(date: Date | number): Date
+
+ nextWednesday(date: Date | number): Date
+
+ parse(
+ dateString: string,
+ formatString: string,
+ referenceDate: Date | number,
+ options?: {
+ locale?: Locale
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7
+ useAdditionalWeekYearTokens?: boolean
+ useAdditionalDayOfYearTokens?: boolean
+ }
+ ): Date
+
+ parseISO(
+ argument: string,
+ options?: {
+ additionalDigits?: 0 | 1 | 2
+ }
+ ): Date
+
+ parseJSON(argument: string | number | Date): Date
+
+ quartersToMonths(quarters: number): number
+
+ quartersToYears(quarters: number): number
+
+ roundToNearestMinutes(
+ date: Date | number,
+ options?: {
+ nearestTo?: number
+ }
+ ): Date
+
+ secondsToHours(seconds: number): number
+
+ secondsToMilliseconds(seconds: number): number
+
+ secondsToMinutes(seconds: number): number
+
+ set(
+ date: Date | number,
+ values: {
+ year?: number
+ month?: number
+ date?: number
+ hours?: number
+ minutes?: number
+ seconds?: number
+ milliseconds?: number
+ }
+ ): Date
+
+ setDate(date: Date | number, dayOfMonth: number): Date
+
+ setDay(
+ date: Date | number,
+ day: number,
+ options?: {
+ locale?: Locale
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6
+ }
+ ): Date
+
+ setDayOfYear(date: Date | number, dayOfYear: number): Date
+
+ setHours(date: Date | number, hours: number): Date
+
+ setISODay(date: Date | number, day: number): Date
+
+ setISOWeek(date: Date | number, isoWeek: number): Date
+
+ setISOWeekYear(date: Date | number, isoWeekYear: number): Date
+
+ setMilliseconds(date: Date | number, milliseconds: number): Date
+
+ setMinutes(date: Date | number, minutes: number): Date
+
+ setMonth(date: Date | number, month: number): Date
+
+ setQuarter(date: Date | number, quarter: number): Date
+
+ setSeconds(date: Date | number, seconds: number): Date
+
+ setWeek(
+ date: Date | number,
+ week: number,
+ options?: {
+ locale?: Locale
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7
+ }
+ ): Date
+
+ setWeekYear(
+ date: Date | number,
+ weekYear: number,
+ options?: {
+ locale?: Locale
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7
+ }
+ ): Date
+
+ setYear(date: Date | number, year: number): Date
+
+ startOfDay(date: Date | number): Date
+
+ startOfDecade(date: Date | number): Date
+
+ startOfHour(date: Date | number): Date
+
+ startOfISOWeek(date: Date | number): Date
+
+ startOfISOWeekYear(date: Date | number): Date
+
+ startOfMinute(date: Date | number): Date
+
+ startOfMonth(date: Date | number): Date
+
+ startOfQuarter(date: Date | number): Date
+
+ startOfSecond(date: Date | number): Date
+
+ startOfToday(): Date
+
+ startOfTomorrow(): Date
+
+ startOfWeek(
+ date: Date | number,
+ options?: {
+ locale?: Locale
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6
+ }
+ ): Date
+
+ startOfWeekYear(
+ date: Date | number,
+ options?: {
+ locale?: Locale
+ weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6
+ firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7
+ }
+ ): Date
+
+ startOfYear(date: Date | number): Date
+
+ startOfYesterday(): Date
+
+ sub(date: Date | number, duration: Duration): Date
+
+ subBusinessDays(date: Date | number, amount: number): Date
+
+ subDays(date: Date | number, amount: number): Date
+
+ subHours(date: Date | number, amount: number): Date
+
+ subISOWeekYears(date: Date | number, amount: number): Date
+
+ subMilliseconds(date: Date | number, amount: number): Date
+
+ subMinutes(date: Date | number, amount: number): Date
+
+ subMonths(date: Date | number, amount: number): Date
+
+ subQuarters(date: Date | number, amount: number): Date
+
+ subSeconds(date: Date | number, amount: number): Date
+
+ subWeeks(date: Date | number, amount: number): Date
+
+ subYears(date: Date | number, amount: number): Date
+
+ toDate(argument: Date | number): Date
+
+ weeksToDays(weeks: number): number
+
+ yearsToMonths(years: number): number
+
+ yearsToQuarters(years: number): number
+
+ daysInWeek: number
+
+ maxTime: number
+
+ millisecondsInMinute: number
+
+ millisecondsInHour: number
+
+ millisecondsInSecond: number
+
+ minTime: number
+
+ minutesInHour: number
+
+ monthsInQuarter: number
+
+ monthsInYear: number
+
+ quartersInYear: number
+
+ secondsInHour: number
+
+ secondsInMinute: number
+}
diff --git a/date-fns/yarn.lock b/date-fns/yarn.lock
new file mode 100644
index 0000000..c53cbe0
--- /dev/null
+++ b/date-fns/yarn.lock
@@ -0,0 +1,12767 @@
+# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
+# yarn lockfile v1
+
+
+"@babel/cli@^7.5.5":
+ version "7.5.5"
+ resolved "https://registry.yarnpkg.com/@babel/cli/-/cli-7.5.5.tgz#bdb6d9169e93e241a08f5f7b0265195bf38ef5ec"
+ integrity sha512-UHI+7pHv/tk9g6WXQKYz+kmXTI77YtuY3vqC59KIqcoWEjsJJSG6rAxKaLsgj3LDyadsPrCB929gVOKM6Hui0w==
+ dependencies:
+ commander "^2.8.1"
+ convert-source-map "^1.1.0"
+ fs-readdir-recursive "^1.1.0"
+ glob "^7.0.0"
+ lodash "^4.17.13"
+ mkdirp "^0.5.1"
+ output-file-sync "^2.0.0"
+ slash "^2.0.0"
+ source-map "^0.5.0"
+ optionalDependencies:
+ chokidar "^2.0.4"
+
+"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.5.5":
+ version "7.5.5"
+ resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.5.5.tgz#bc0782f6d69f7b7d49531219699b988f669a8f9d"
+ integrity sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw==
+ dependencies:
+ "@babel/highlight" "^7.0.0"
+
+"@babel/code-frame@^7.10.4":
+ version "7.10.4"
+ resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.10.4.tgz#168da1a36e90da68ae8d49c0f1b48c7c6249213a"
+ integrity sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==
+ dependencies:
+ "@babel/highlight" "^7.10.4"
+
+"@babel/compat-data@^7.10.4", "@babel/compat-data@^7.11.0":
+ version "7.11.0"
+ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.11.0.tgz#e9f73efe09af1355b723a7f39b11bad637d7c99c"
+ integrity sha512-TPSvJfv73ng0pfnEOh17bYMPQbI95+nGWc71Ss4vZdRBHTDqmM9Z8ZV4rYz8Ks7sfzc95n30k6ODIq5UGnXcYQ==
+ dependencies:
+ browserslist "^4.12.0"
+ invariant "^2.2.4"
+ semver "^5.5.0"
+
+"@babel/compat-data@^7.13.12", "@babel/compat-data@^7.13.8":
+ version "7.13.15"
+ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.13.15.tgz#7e8eea42d0b64fda2b375b22d06c605222e848f4"
+ integrity sha512-ltnibHKR1VnrU4ymHyQ/CXtNXI6yZC0oJThyW78Hft8XndANwi+9H+UIklBDraIjFEJzw8wmcM427oDd9KS5wA==
+
+"@babel/core@^7.1.0", "@babel/core@^7.5.5":
+ version "7.5.5"
+ resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.5.5.tgz#17b2686ef0d6bc58f963dddd68ab669755582c30"
+ integrity sha512-i4qoSr2KTtce0DmkuuQBV4AuQgGPUcPXMr9L5MyYAtk06z068lQ10a4O009fe5OB/DfNV+h+qqT7ddNV8UnRjg==
+ dependencies:
+ "@babel/code-frame" "^7.5.5"
+ "@babel/generator" "^7.5.5"
+ "@babel/helpers" "^7.5.5"
+ "@babel/parser" "^7.5.5"
+ "@babel/template" "^7.4.4"
+ "@babel/traverse" "^7.5.5"
+ "@babel/types" "^7.5.5"
+ convert-source-map "^1.1.0"
+ debug "^4.1.0"
+ json5 "^2.1.0"
+ lodash "^4.17.13"
+ resolve "^1.3.2"
+ semver "^5.4.1"
+ source-map "^0.5.0"
+
+"@babel/generator@^7.0.0", "@babel/generator@^7.4.0", "@babel/generator@^7.5.5":
+ version "7.5.5"
+ resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.5.5.tgz#873a7f936a3c89491b43536d12245b626664e3cf"
+ integrity sha512-ETI/4vyTSxTzGnU2c49XHv2zhExkv9JHLTwDAFz85kmcwuShvYG2H08FwgIguQf4JC75CBnXAUM5PqeF4fj0nQ==
+ dependencies:
+ "@babel/types" "^7.5.5"
+ jsesc "^2.5.1"
+ lodash "^4.17.13"
+ source-map "^0.5.0"
+ trim-right "^1.0.1"
+
+"@babel/generator@^7.11.5":
+ version "7.11.5"
+ resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.11.5.tgz#a5582773425a468e4ba269d9a1f701fbca6a7a82"
+ integrity sha512-9UqHWJ4IwRTy4l0o8gq2ef8ws8UPzvtMkVKjTLAiRmza9p9V6Z+OfuNd9fB1j5Q67F+dVJtPC2sZXI8NM9br4g==
+ dependencies:
+ "@babel/types" "^7.11.5"
+ jsesc "^2.5.1"
+ source-map "^0.6.1"
+
+"@babel/helper-annotate-as-pure@^7.0.0":
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0.tgz#323d39dd0b50e10c7c06ca7d7638e6864d8c5c32"
+ integrity sha512-3UYcJUj9kvSLbLbUIfQTqzcy5VX7GRZ/CCDrnOaZorFFM01aXp1+GJwuFGV4NDDoAS+mOUyHcO6UD/RfqOks3Q==
+ dependencies:
+ "@babel/types" "^7.0.0"
+
+"@babel/helper-annotate-as-pure@^7.10.4":
+ version "7.10.4"
+ resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.4.tgz#5bf0d495a3f757ac3bda48b5bf3b3ba309c72ba3"
+ integrity sha512-XQlqKQP4vXFB7BN8fEEerrmYvHp3fK/rBkRFz9jaJbzK0B1DSfej9Kc7ZzE8Z/OnId1jpJdNAZ3BFQjWG68rcA==
+ dependencies:
+ "@babel/types" "^7.10.4"
+
+"@babel/helper-builder-binary-assignment-operator-visitor@^7.10.4":
+ version "7.10.4"
+ resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.4.tgz#bb0b75f31bf98cbf9ff143c1ae578b87274ae1a3"
+ integrity sha512-L0zGlFrGWZK4PbT8AszSfLTM5sDU1+Az/En9VrdT8/LmEiJt4zXt+Jve9DCAnQcbqDhCI+29y/L93mrDzddCcg==
+ dependencies:
+ "@babel/helper-explode-assignable-expression" "^7.10.4"
+ "@babel/types" "^7.10.4"
+
+"@babel/helper-call-delegate@^7.4.4":
+ version "7.4.4"
+ resolved "https://registry.yarnpkg.com/@babel/helper-call-delegate/-/helper-call-delegate-7.4.4.tgz#87c1f8ca19ad552a736a7a27b1c1fcf8b1ff1f43"
+ integrity sha512-l79boDFJ8S1c5hvQvG+rc+wHw6IuH7YldmRKsYtpbawsxURu/paVy57FZMomGK22/JckepaikOkY0MoAmdyOlQ==
+ dependencies:
+ "@babel/helper-hoist-variables" "^7.4.4"
+ "@babel/traverse" "^7.4.4"
+ "@babel/types" "^7.4.4"
+
+"@babel/helper-compilation-targets@^7.10.4":
+ version "7.10.4"
+ resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.10.4.tgz#804ae8e3f04376607cc791b9d47d540276332bd2"
+ integrity sha512-a3rYhlsGV0UHNDvrtOXBg8/OpfV0OKTkxKPzIplS1zpx7CygDcWWxckxZeDd3gzPzC4kUT0A4nVFDK0wGMh4MQ==
+ dependencies:
+ "@babel/compat-data" "^7.10.4"
+ browserslist "^4.12.0"
+ invariant "^2.2.4"
+ levenary "^1.1.1"
+ semver "^5.5.0"
+
+"@babel/helper-compilation-targets@^7.13.8":
+ version "7.13.13"
+ resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.13.tgz#2b2972a0926474853f41e4adbc69338f520600e5"
+ integrity sha512-q1kcdHNZehBwD9jYPh3WyXcsFERi39X4I59I3NadciWtNDyZ6x+GboOxncFK0kXlKIv6BJm5acncehXWUjWQMQ==
+ dependencies:
+ "@babel/compat-data" "^7.13.12"
+ "@babel/helper-validator-option" "^7.12.17"
+ browserslist "^4.14.5"
+ semver "^6.3.0"
+
+"@babel/helper-create-class-features-plugin@^7.10.4", "@babel/helper-create-class-features-plugin@^7.10.5":
+ version "7.10.5"
+ resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.10.5.tgz#9f61446ba80e8240b0a5c85c6fdac8459d6f259d"
+ integrity sha512-0nkdeijB7VlZoLT3r/mY3bUkw3T8WG/hNw+FATs/6+pG2039IJWjTYL0VTISqsNHMUTEnwbVnc89WIJX9Qed0A==
+ dependencies:
+ "@babel/helper-function-name" "^7.10.4"
+ "@babel/helper-member-expression-to-functions" "^7.10.5"
+ "@babel/helper-optimise-call-expression" "^7.10.4"
+ "@babel/helper-plugin-utils" "^7.10.4"
+ "@babel/helper-replace-supers" "^7.10.4"
+ "@babel/helper-split-export-declaration" "^7.10.4"
+
+"@babel/helper-create-regexp-features-plugin@^7.10.4":
+ version "7.10.4"
+ resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.10.4.tgz#fdd60d88524659a0b6959c0579925e425714f3b8"
+ integrity sha512-2/hu58IEPKeoLF45DBwx3XFqsbCXmkdAay4spVr2x0jYgRxrSNp+ePwvSsy9g6YSaNDcKIQVPXk1Ov8S2edk2g==
+ dependencies:
+ "@babel/helper-annotate-as-pure" "^7.10.4"
+ "@babel/helper-regex" "^7.10.4"
+ regexpu-core "^4.7.0"
+
+"@babel/helper-define-map@^7.10.4":
+ version "7.10.5"
+ resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.10.5.tgz#b53c10db78a640800152692b13393147acb9bb30"
+ integrity sha512-fMw4kgFB720aQFXSVaXr79pjjcW5puTCM16+rECJ/plGS+zByelE8l9nCpV1GibxTnFVmUuYG9U8wYfQHdzOEQ==
+ dependencies:
+ "@babel/helper-function-name" "^7.10.4"
+ "@babel/types" "^7.10.5"
+ lodash "^4.17.19"
+
+"@babel/helper-explode-assignable-expression@^7.10.4":
+ version "7.11.4"
+ resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.11.4.tgz#2d8e3470252cc17aba917ede7803d4a7a276a41b"
+ integrity sha512-ux9hm3zR4WV1Y3xXxXkdG/0gxF9nvI0YVmKVhvK9AfMoaQkemL3sJpXw+Xbz65azo8qJiEz2XVDUpK3KYhH3ZQ==
+ dependencies:
+ "@babel/types" "^7.10.4"
+
+"@babel/helper-function-name@^7.1.0":
+ version "7.1.0"
+ resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz#a0ceb01685f73355d4360c1247f582bfafc8ff53"
+ integrity sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw==
+ dependencies:
+ "@babel/helper-get-function-arity" "^7.0.0"
+ "@babel/template" "^7.1.0"
+ "@babel/types" "^7.0.0"
+
+"@babel/helper-function-name@^7.10.4":
+ version "7.10.4"
+ resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz#d2d3b20c59ad8c47112fa7d2a94bc09d5ef82f1a"
+ integrity sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ==
+ dependencies:
+ "@babel/helper-get-function-arity" "^7.10.4"
+ "@babel/template" "^7.10.4"
+ "@babel/types" "^7.10.4"
+
+"@babel/helper-get-function-arity@^7.0.0":
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz#83572d4320e2a4657263734113c42868b64e49c3"
+ integrity sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==
+ dependencies:
+ "@babel/types" "^7.0.0"
+
+"@babel/helper-get-function-arity@^7.10.4":
+ version "7.10.4"
+ resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz#98c1cbea0e2332f33f9a4661b8ce1505b2c19ba2"
+ integrity sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A==
+ dependencies:
+ "@babel/types" "^7.10.4"
+
+"@babel/helper-hoist-variables@^7.10.4":
+ version "7.10.4"
+ resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.4.tgz#d49b001d1d5a68ca5e6604dda01a6297f7c9381e"
+ integrity sha512-wljroF5PgCk2juF69kanHVs6vrLwIPNp6DLD+Lrl3hoQ3PpPPikaDRNFA+0t81NOoMt2DL6WW/mdU8k4k6ZzuA==
+ dependencies:
+ "@babel/types" "^7.10.4"
+
+"@babel/helper-hoist-variables@^7.4.4":
+ version "7.4.4"
+ resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.4.4.tgz#0298b5f25c8c09c53102d52ac4a98f773eb2850a"
+ integrity sha512-VYk2/H/BnYbZDDg39hr3t2kKyifAm1W6zHRfhx8jGjIHpQEBv9dry7oQ2f3+J703TLu69nYdxsovl0XYfcnK4w==
+ dependencies:
+ "@babel/types" "^7.4.4"
+
+"@babel/helper-member-expression-to-functions@^7.10.4", "@babel/helper-member-expression-to-functions@^7.10.5":
+ version "7.11.0"
+ resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.11.0.tgz#ae69c83d84ee82f4b42f96e2a09410935a8f26df"
+ integrity sha512-JbFlKHFntRV5qKw3YC0CvQnDZ4XMwgzzBbld7Ly4Mj4cbFy3KywcR8NtNctRToMWJOVvLINJv525Gd6wwVEx/Q==
+ dependencies:
+ "@babel/types" "^7.11.0"
+
+"@babel/helper-module-imports@^7.0.0":
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.0.0.tgz#96081b7111e486da4d2cd971ad1a4fe216cc2e3d"
+ integrity sha512-aP/hlLq01DWNEiDg4Jn23i+CXxW/owM4WpDLFUbpjxe4NS3BhLVZQ5i7E0ZrxuQ/vwekIeciyamgB1UIYxxM6A==
+ dependencies:
+ "@babel/types" "^7.0.0"
+
+"@babel/helper-module-imports@^7.10.4":
+ version "7.10.4"
+ resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.10.4.tgz#4c5c54be04bd31670a7382797d75b9fa2e5b5620"
+ integrity sha512-nEQJHqYavI217oD9+s5MUBzk6x1IlvoS9WTPfgG43CbMEeStE0v+r+TucWdx8KFGowPGvyOkDT9+7DHedIDnVw==
+ dependencies:
+ "@babel/types" "^7.10.4"
+
+"@babel/helper-module-transforms@^7.10.4", "@babel/helper-module-transforms@^7.10.5":
+ version "7.11.0"
+ resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.11.0.tgz#b16f250229e47211abdd84b34b64737c2ab2d359"
+ integrity sha512-02EVu8COMuTRO1TAzdMtpBPbe6aQ1w/8fePD2YgQmxZU4gpNWaL9gK3Jp7dxlkUlUCJOTaSeA+Hrm1BRQwqIhg==
+ dependencies:
+ "@babel/helper-module-imports" "^7.10.4"
+ "@babel/helper-replace-supers" "^7.10.4"
+ "@babel/helper-simple-access" "^7.10.4"
+ "@babel/helper-split-export-declaration" "^7.11.0"
+ "@babel/template" "^7.10.4"
+ "@babel/types" "^7.11.0"
+ lodash "^4.17.19"
+
+"@babel/helper-module-transforms@^7.4.4":
+ version "7.5.5"
+ resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.5.5.tgz#f84ff8a09038dcbca1fd4355661a500937165b4a"
+ integrity sha512-jBeCvETKuJqeiaCdyaheF40aXnnU1+wkSiUs/IQg3tB85up1LyL8x77ClY8qJpuRJUcXQo+ZtdNESmZl4j56Pw==
+ dependencies:
+ "@babel/helper-module-imports" "^7.0.0"
+ "@babel/helper-simple-access" "^7.1.0"
+ "@babel/helper-split-export-declaration" "^7.4.4"
+ "@babel/template" "^7.4.4"
+ "@babel/types" "^7.5.5"
+ lodash "^4.17.13"
+
+"@babel/helper-optimise-call-expression@^7.10.4":
+ version "7.10.4"
+ resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.4.tgz#50dc96413d594f995a77905905b05893cd779673"
+ integrity sha512-n3UGKY4VXwXThEiKrgRAoVPBMqeoPgHVqiHZOanAJCG9nQUL2pLRQirUzl0ioKclHGpGqRgIOkgcIJaIWLpygg==
+ dependencies:
+ "@babel/types" "^7.10.4"
+
+"@babel/helper-plugin-utils@^7.0.0":
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz#bbb3fbee98661c569034237cc03967ba99b4f250"
+ integrity sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA==
+
+"@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3":
+ version "7.10.4"
+ resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz#2f75a831269d4f677de49986dff59927533cf375"
+ integrity sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==
+
+"@babel/helper-plugin-utils@^7.13.0":
+ version "7.13.0"
+ resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.13.0.tgz#806526ce125aed03373bc416a828321e3a6a33af"
+ integrity sha512-ZPafIPSwzUlAoWT8DKs1W2VyF2gOWthGd5NGFMsBcMMol+ZhK+EQY/e6V96poa6PA/Bh+C9plWN0hXO1uB8AfQ==
+
+"@babel/helper-regex@^7.10.4":
+ version "7.10.5"
+ resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.10.5.tgz#32dfbb79899073c415557053a19bd055aae50ae0"
+ integrity sha512-68kdUAzDrljqBrio7DYAEgCoJHxppJOERHOgOrDN7WjOzP0ZQ1LsSDRXcemzVZaLvjaJsJEESb6qt+znNuENDg==
+ dependencies:
+ lodash "^4.17.19"
+
+"@babel/helper-remap-async-to-generator@^7.10.4":
+ version "7.11.4"
+ resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.11.4.tgz#4474ea9f7438f18575e30b0cac784045b402a12d"
+ integrity sha512-tR5vJ/vBa9wFy3m5LLv2faapJLnDFxNWff2SAYkSE4rLUdbp7CdObYFgI7wK4T/Mj4UzpjPwzR8Pzmr5m7MHGA==
+ dependencies:
+ "@babel/helper-annotate-as-pure" "^7.10.4"
+ "@babel/helper-wrap-function" "^7.10.4"
+ "@babel/template" "^7.10.4"
+ "@babel/types" "^7.10.4"
+
+"@babel/helper-replace-supers@^7.10.4":
+ version "7.10.4"
+ resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.10.4.tgz#d585cd9388ea06e6031e4cd44b6713cbead9e6cf"
+ integrity sha512-sPxZfFXocEymYTdVK1UNmFPBN+Hv5mJkLPsYWwGBxZAxaWfFu+xqp7b6qWD0yjNuNL2VKc6L5M18tOXUP7NU0A==
+ dependencies:
+ "@babel/helper-member-expression-to-functions" "^7.10.4"
+ "@babel/helper-optimise-call-expression" "^7.10.4"
+ "@babel/traverse" "^7.10.4"
+ "@babel/types" "^7.10.4"
+
+"@babel/helper-simple-access@^7.1.0":
+ version "7.1.0"
+ resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.1.0.tgz#65eeb954c8c245beaa4e859da6188f39d71e585c"
+ integrity sha512-Vk+78hNjRbsiu49zAPALxTb+JUQCz1aolpd8osOF16BGnLtseD21nbHgLPGUwrXEurZgiCOUmvs3ExTu4F5x6w==
+ dependencies:
+ "@babel/template" "^7.1.0"
+ "@babel/types" "^7.0.0"
+
+"@babel/helper-simple-access@^7.10.4":
+ version "7.10.4"
+ resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.10.4.tgz#0f5ccda2945277a2a7a2d3a821e15395edcf3461"
+ integrity sha512-0fMy72ej/VEvF8ULmX6yb5MtHG4uH4Dbd6I/aHDb/JVg0bbivwt9Wg+h3uMvX+QSFtwr5MeItvazbrc4jtRAXw==
+ dependencies:
+ "@babel/template" "^7.10.4"
+ "@babel/types" "^7.10.4"
+
+"@babel/helper-skip-transparent-expression-wrappers@^7.11.0":
+ version "7.11.0"
+ resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.11.0.tgz#eec162f112c2f58d3af0af125e3bb57665146729"
+ integrity sha512-0XIdiQln4Elglgjbwo9wuJpL/K7AGCY26kmEt0+pRP0TAj4jjyNq1MjoRvikrTVqKcx4Gysxt4cXvVFXP/JO2Q==
+ dependencies:
+ "@babel/types" "^7.11.0"
+
+"@babel/helper-skip-transparent-expression-wrappers@^7.12.1":
+ version "7.12.1"
+ resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz#462dc63a7e435ade8468385c63d2b84cce4b3cbf"
+ integrity sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==
+ dependencies:
+ "@babel/types" "^7.12.1"
+
+"@babel/helper-split-export-declaration@^7.10.4", "@babel/helper-split-export-declaration@^7.11.0":
+ version "7.11.0"
+ resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz#f8a491244acf6a676158ac42072911ba83ad099f"
+ integrity sha512-74Vejvp6mHkGE+m+k5vHY93FX2cAtrw1zXrZXRlG4l410Nm9PxfEiVTn1PjDPV5SnmieiueY4AFg2xqhNFuuZg==
+ dependencies:
+ "@babel/types" "^7.11.0"
+
+"@babel/helper-split-export-declaration@^7.4.4":
+ version "7.4.4"
+ resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz#ff94894a340be78f53f06af038b205c49d993677"
+ integrity sha512-Ro/XkzLf3JFITkW6b+hNxzZ1n5OQ80NvIUdmHspih1XAhtN3vPTuUFT4eQnela+2MaZ5ulH+iyP513KJrxbN7Q==
+ dependencies:
+ "@babel/types" "^7.4.4"
+
+"@babel/helper-validator-identifier@^7.10.4":
+ version "7.10.4"
+ resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz#a78c7a7251e01f616512d31b10adcf52ada5e0d2"
+ integrity sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==
+
+"@babel/helper-validator-identifier@^7.12.11":
+ version "7.12.11"
+ resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz#c9a1f021917dcb5ccf0d4e453e399022981fc9ed"
+ integrity sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==
+
+"@babel/helper-validator-option@^7.12.17":
+ version "7.12.17"
+ resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz#d1fbf012e1a79b7eebbfdc6d270baaf8d9eb9831"
+ integrity sha512-TopkMDmLzq8ngChwRlyjR6raKD6gMSae4JdYDB8bByKreQgG0RBTuKe9LRxW3wFtUnjxOPRKBDwEH6Mg5KeDfw==
+
+"@babel/helper-wrap-function@^7.10.4":
+ version "7.10.4"
+ resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.10.4.tgz#8a6f701eab0ff39f765b5a1cfef409990e624b87"
+ integrity sha512-6py45WvEF0MhiLrdxtRjKjufwLL1/ob2qDJgg5JgNdojBAZSAKnAjkyOCNug6n+OBl4VW76XjvgSFTdaMcW0Ug==
+ dependencies:
+ "@babel/helper-function-name" "^7.10.4"
+ "@babel/template" "^7.10.4"
+ "@babel/traverse" "^7.10.4"
+ "@babel/types" "^7.10.4"
+
+"@babel/helpers@^7.5.5":
+ version "7.5.5"
+ resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.5.5.tgz#63908d2a73942229d1e6685bc2a0e730dde3b75e"
+ integrity sha512-nRq2BUhxZFnfEn/ciJuhklHvFOqjJUD5wpx+1bxUF2axL9C+v4DE/dmp5sT2dKnpOs4orZWzpAZqlCy8QqE/7g==
+ dependencies:
+ "@babel/template" "^7.4.4"
+ "@babel/traverse" "^7.5.5"
+ "@babel/types" "^7.5.5"
+
+"@babel/highlight@^7.0.0":
+ version "7.5.0"
+ resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.5.0.tgz#56d11312bd9248fa619591d02472be6e8cb32540"
+ integrity sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ==
+ dependencies:
+ chalk "^2.0.0"
+ esutils "^2.0.2"
+ js-tokens "^4.0.0"
+
+"@babel/highlight@^7.10.4":
+ version "7.10.4"
+ resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.10.4.tgz#7d1bdfd65753538fabe6c38596cdb76d9ac60143"
+ integrity sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==
+ dependencies:
+ "@babel/helper-validator-identifier" "^7.10.4"
+ chalk "^2.0.0"
+ js-tokens "^4.0.0"
+
+"@babel/node@^7.5.5":
+ version "7.5.5"
+ resolved "https://registry.yarnpkg.com/@babel/node/-/node-7.5.5.tgz#5db48a3bcee64d9eda6474f2a0a55b235d0438b5"
+ integrity sha512-xsW6il+yY+lzXMsQuvIJNA7tU8ix/f4G6bDt4DrnCkVpsR6clk9XgEbp7QF+xGNDdoD7M7QYokCH83pm+UjD0w==
+ dependencies:
+ "@babel/polyfill" "^7.0.0"
+ "@babel/register" "^7.5.5"
+ commander "^2.8.1"
+ lodash "^4.17.13"
+ node-environment-flags "^1.0.5"
+ v8flags "^3.1.1"
+
+"@babel/parser@^7.0.0", "@babel/parser@^7.1.0", "@babel/parser@^7.4.3", "@babel/parser@^7.4.4", "@babel/parser@^7.5.5":
+ version "7.5.5"
+ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.5.5.tgz#02f077ac8817d3df4a832ef59de67565e71cca4b"
+ integrity sha512-E5BN68cqR7dhKan1SfqgPGhQ178bkVKpXTPEXnFJBrEt8/DKRZlybmy+IgYLTeN7tp1R5Ccmbm2rBk17sHYU3g==
+
+"@babel/parser@^7.10.4", "@babel/parser@^7.11.5", "@babel/parser@^7.9.4":
+ version "7.11.5"
+ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.11.5.tgz#c7ff6303df71080ec7a4f5b8c003c58f1cf51037"
+ integrity sha512-X9rD8qqm695vgmeaQ4fvz/o3+Wk4ZzQvSHkDBgpYKxpD4qTAUm88ZKtHkVqIOsYFFbIQ6wQYhC6q7pjqVK0E0Q==
+
+"@babel/plugin-proposal-async-generator-functions@^7.10.4":
+ version "7.10.5"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.10.5.tgz#3491cabf2f7c179ab820606cec27fed15e0e8558"
+ integrity sha512-cNMCVezQbrRGvXJwm9fu/1sJj9bHdGAgKodZdLqOQIpfoH3raqmRPBM17+lh7CzhiKRRBrGtZL9WcjxSoGYUSg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.10.4"
+ "@babel/helper-remap-async-to-generator" "^7.10.4"
+ "@babel/plugin-syntax-async-generators" "^7.8.0"
+
+"@babel/plugin-proposal-class-properties@^7.10.4":
+ version "7.10.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.10.4.tgz#a33bf632da390a59c7a8c570045d1115cd778807"
+ integrity sha512-vhwkEROxzcHGNu2mzUC0OFFNXdZ4M23ib8aRRcJSsW8BZK9pQMD7QB7csl97NBbgGZO7ZyHUyKDnxzOaP4IrCg==
+ dependencies:
+ "@babel/helper-create-class-features-plugin" "^7.10.4"
+ "@babel/helper-plugin-utils" "^7.10.4"
+
+"@babel/plugin-proposal-dynamic-import@^7.10.4":
+ version "7.10.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.10.4.tgz#ba57a26cb98b37741e9d5bca1b8b0ddf8291f17e"
+ integrity sha512-up6oID1LeidOOASNXgv/CFbgBqTuKJ0cJjz6An5tWD+NVBNlp3VNSBxv2ZdU7SYl3NxJC7agAQDApZusV6uFwQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.10.4"
+ "@babel/plugin-syntax-dynamic-import" "^7.8.0"
+
+"@babel/plugin-proposal-export-namespace-from@^7.10.4":
+ version "7.10.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.10.4.tgz#570d883b91031637b3e2958eea3c438e62c05f54"
+ integrity sha512-aNdf0LY6/3WXkhh0Fdb6Zk9j1NMD8ovj3F6r0+3j837Pn1S1PdNtcwJ5EG9WkVPNHPxyJDaxMaAOVq4eki0qbg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.10.4"
+ "@babel/plugin-syntax-export-namespace-from" "^7.8.3"
+
+"@babel/plugin-proposal-json-strings@^7.10.4":
+ version "7.10.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.10.4.tgz#593e59c63528160233bd321b1aebe0820c2341db"
+ integrity sha512-fCL7QF0Jo83uy1K0P2YXrfX11tj3lkpN7l4dMv9Y9VkowkhkQDwFHFd8IiwyK5MZjE8UpbgokkgtcReH88Abaw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.10.4"
+ "@babel/plugin-syntax-json-strings" "^7.8.0"
+
+"@babel/plugin-proposal-logical-assignment-operators@^7.11.0":
+ version "7.11.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.11.0.tgz#9f80e482c03083c87125dee10026b58527ea20c8"
+ integrity sha512-/f8p4z+Auz0Uaf+i8Ekf1iM7wUNLcViFUGiPxKeXvxTSl63B875YPiVdUDdem7hREcI0E0kSpEhS8tF5RphK7Q==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.10.4"
+ "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4"
+
+"@babel/plugin-proposal-nullish-coalescing-operator@^7.10.4":
+ version "7.10.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.10.4.tgz#02a7e961fc32e6d5b2db0649e01bf80ddee7e04a"
+ integrity sha512-wq5n1M3ZUlHl9sqT2ok1T2/MTt6AXE0e1Lz4WzWBr95LsAZ5qDXe4KnFuauYyEyLiohvXFMdbsOTMyLZs91Zlw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.10.4"
+ "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0"
+
+"@babel/plugin-proposal-numeric-separator@^7.10.4":
+ version "7.10.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.10.4.tgz#ce1590ff0a65ad12970a609d78855e9a4c1aef06"
+ integrity sha512-73/G7QoRoeNkLZFxsoCCvlg4ezE4eM+57PnOqgaPOozd5myfj7p0muD1mRVJvbUWbOzD+q3No2bWbaKy+DJ8DA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.10.4"
+ "@babel/plugin-syntax-numeric-separator" "^7.10.4"
+
+"@babel/plugin-proposal-object-rest-spread@^7.11.0":
+ version "7.11.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.11.0.tgz#bd81f95a1f746760ea43b6c2d3d62b11790ad0af"
+ integrity sha512-wzch41N4yztwoRw0ak+37wxwJM2oiIiy6huGCoqkvSTA9acYWcPfn9Y4aJqmFFJ70KTJUu29f3DQ43uJ9HXzEA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.10.4"
+ "@babel/plugin-syntax-object-rest-spread" "^7.8.0"
+ "@babel/plugin-transform-parameters" "^7.10.4"
+
+"@babel/plugin-proposal-object-rest-spread@^7.13.8":
+ version "7.13.8"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.13.8.tgz#5d210a4d727d6ce3b18f9de82cc99a3964eed60a"
+ integrity sha512-DhB2EuB1Ih7S3/IRX5AFVgZ16k3EzfRbq97CxAVI1KSYcW+lexV8VZb7G7L8zuPVSdQMRn0kiBpf/Yzu9ZKH0g==
+ dependencies:
+ "@babel/compat-data" "^7.13.8"
+ "@babel/helper-compilation-targets" "^7.13.8"
+ "@babel/helper-plugin-utils" "^7.13.0"
+ "@babel/plugin-syntax-object-rest-spread" "^7.8.3"
+ "@babel/plugin-transform-parameters" "^7.13.0"
+
+"@babel/plugin-proposal-optional-catch-binding@^7.10.4":
+ version "7.10.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.10.4.tgz#31c938309d24a78a49d68fdabffaa863758554dd"
+ integrity sha512-LflT6nPh+GK2MnFiKDyLiqSqVHkQnVf7hdoAvyTnnKj9xB3docGRsdPuxp6qqqW19ifK3xgc9U5/FwrSaCNX5g==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.10.4"
+ "@babel/plugin-syntax-optional-catch-binding" "^7.8.0"
+
+"@babel/plugin-proposal-optional-chaining@^7.11.0":
+ version "7.11.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.11.0.tgz#de5866d0646f6afdaab8a566382fe3a221755076"
+ integrity sha512-v9fZIu3Y8562RRwhm1BbMRxtqZNFmFA2EG+pT2diuU8PT3H6T/KXoZ54KgYisfOFZHV6PfvAiBIZ9Rcz+/JCxA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.10.4"
+ "@babel/helper-skip-transparent-expression-wrappers" "^7.11.0"
+ "@babel/plugin-syntax-optional-chaining" "^7.8.0"
+
+"@babel/plugin-proposal-optional-chaining@^7.12.7":
+ version "7.12.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.12.7.tgz#e02f0ea1b5dc59d401ec16fb824679f683d3303c"
+ integrity sha512-4ovylXZ0PWmwoOvhU2vhnzVNnm88/Sm9nx7V8BPgMvAzn5zDou3/Awy0EjglyubVHasJj+XCEkr/r1X3P5elCA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.10.4"
+ "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1"
+ "@babel/plugin-syntax-optional-chaining" "^7.8.0"
+
+"@babel/plugin-proposal-private-methods@^7.10.4":
+ version "7.10.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.10.4.tgz#b160d972b8fdba5c7d111a145fc8c421fc2a6909"
+ integrity sha512-wh5GJleuI8k3emgTg5KkJK6kHNsGEr0uBTDBuQUBJwckk9xs1ez79ioheEVVxMLyPscB0LfkbVHslQqIzWV6Bw==
+ dependencies:
+ "@babel/helper-create-class-features-plugin" "^7.10.4"
+ "@babel/helper-plugin-utils" "^7.10.4"
+
+"@babel/plugin-proposal-unicode-property-regex@^7.10.4", "@babel/plugin-proposal-unicode-property-regex@^7.4.4":
+ version "7.10.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.10.4.tgz#4483cda53041ce3413b7fe2f00022665ddfaa75d"
+ integrity sha512-H+3fOgPnEXFL9zGYtKQe4IDOPKYlZdF1kqFDQRRb8PK4B8af1vAGK04tF5iQAAsui+mHNBQSAtd2/ndEDe9wuA==
+ dependencies:
+ "@babel/helper-create-regexp-features-plugin" "^7.10.4"
+ "@babel/helper-plugin-utils" "^7.10.4"
+
+"@babel/plugin-syntax-async-generators@^7.8.0":
+ version "7.8.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d"
+ integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.8.0"
+
+"@babel/plugin-syntax-class-properties@^7.10.4":
+ version "7.10.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.10.4.tgz#6644e6a0baa55a61f9e3231f6c9eeb6ee46c124c"
+ integrity sha512-GCSBF7iUle6rNugfURwNmCGG3Z/2+opxAMLs1nND4bhEG5PuxTIggDBoeYYSujAlLtsupzOHYJQgPS3pivwXIA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.10.4"
+
+"@babel/plugin-syntax-dynamic-import@^7.8.0":
+ version "7.8.3"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3"
+ integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.8.0"
+
+"@babel/plugin-syntax-export-namespace-from@^7.8.3":
+ version "7.8.3"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a"
+ integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.8.3"
+
+"@babel/plugin-syntax-json-strings@^7.8.0":
+ version "7.8.3"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a"
+ integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.8.0"
+
+"@babel/plugin-syntax-logical-assignment-operators@^7.10.4":
+ version "7.10.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699"
+ integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.10.4"
+
+"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.0":
+ version "7.8.3"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9"
+ integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.8.0"
+
+"@babel/plugin-syntax-numeric-separator@^7.10.4":
+ version "7.10.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97"
+ integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.10.4"
+
+"@babel/plugin-syntax-object-rest-spread@^7.0.0":
+ version "7.2.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.2.0.tgz#3b7a3e733510c57e820b9142a6579ac8b0dfad2e"
+ integrity sha512-t0JKGgqk2We+9may3t0xDdmneaXmyxq0xieYcKHxIsrJO64n1OiMWNUtc5gQK1PA0NpdCRrtZp4z+IUaKugrSA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+
+"@babel/plugin-syntax-object-rest-spread@^7.8.0", "@babel/plugin-syntax-object-rest-spread@^7.8.3":
+ version "7.8.3"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871"
+ integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.8.0"
+
+"@babel/plugin-syntax-optional-catch-binding@^7.8.0":
+ version "7.8.3"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1"
+ integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.8.0"
+
+"@babel/plugin-syntax-optional-chaining@^7.8.0":
+ version "7.8.3"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a"
+ integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.8.0"
+
+"@babel/plugin-syntax-top-level-await@^7.10.4":
+ version "7.10.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.10.4.tgz#4bbeb8917b54fcf768364e0a81f560e33a3ef57d"
+ integrity sha512-ni1brg4lXEmWyafKr0ccFWkJG0CeMt4WV1oyeBW6EFObF4oOHclbkj5cARxAPQyAQ2UTuplJyK4nfkXIMMFvsQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.10.4"
+
+"@babel/plugin-syntax-typescript@^7.10.4":
+ version "7.10.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.10.4.tgz#2f55e770d3501e83af217d782cb7517d7bb34d25"
+ integrity sha512-oSAEz1YkBCAKr5Yiq8/BNtvSAPwkp/IyUnwZogd8p+F0RuYQQrLeRUzIQhueQTTBy/F+a40uS7OFKxnkRvmvFQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.10.4"
+
+"@babel/plugin-transform-arrow-functions@^7.10.4":
+ version "7.10.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.10.4.tgz#e22960d77e697c74f41c501d44d73dbf8a6a64cd"
+ integrity sha512-9J/oD1jV0ZCBcgnoFWFq1vJd4msoKb/TCpGNFyyLt0zABdcvgK3aYikZ8HjzB14c26bc7E3Q1yugpwGy2aTPNA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.10.4"
+
+"@babel/plugin-transform-arrow-functions@^7.2.0":
+ version "7.2.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.2.0.tgz#9aeafbe4d6ffc6563bf8f8372091628f00779550"
+ integrity sha512-ER77Cax1+8/8jCB9fo4Ud161OZzWN5qawi4GusDuRLcDbDG+bIGYY20zb2dfAFdTRGzrfq2xZPvF0R64EHnimg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+
+"@babel/plugin-transform-async-to-generator@^7.10.4":
+ version "7.10.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.10.4.tgz#41a5017e49eb6f3cda9392a51eef29405b245a37"
+ integrity sha512-F6nREOan7J5UXTLsDsZG3DXmZSVofr2tGNwfdrVwkDWHfQckbQXnXSPfD7iO+c/2HGqycwyLST3DnZ16n+cBJQ==
+ dependencies:
+ "@babel/helper-module-imports" "^7.10.4"
+ "@babel/helper-plugin-utils" "^7.10.4"
+ "@babel/helper-remap-async-to-generator" "^7.10.4"
+
+"@babel/plugin-transform-block-scoped-functions@^7.10.4":
+ version "7.10.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.10.4.tgz#1afa595744f75e43a91af73b0d998ecfe4ebc2e8"
+ integrity sha512-WzXDarQXYYfjaV1szJvN3AD7rZgZzC1JtjJZ8dMHUyiK8mxPRahynp14zzNjU3VkPqPsO38CzxiWO1c9ARZ8JA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.10.4"
+
+"@babel/plugin-transform-block-scoping@^7.10.4":
+ version "7.11.1"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.11.1.tgz#5b7efe98852bef8d652c0b28144cd93a9e4b5215"
+ integrity sha512-00dYeDE0EVEHuuM+26+0w/SCL0BH2Qy7LwHuI4Hi4MH5gkC8/AqMN5uWFJIsoXZrAphiMm1iXzBw6L2T+eA0ew==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.10.4"
+
+"@babel/plugin-transform-block-scoping@^7.5.5":
+ version "7.5.5"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.5.5.tgz#a35f395e5402822f10d2119f6f8e045e3639a2ce"
+ integrity sha512-82A3CLRRdYubkG85lKwhZB0WZoHxLGsJdux/cOVaJCJpvYFl1LVzAIFyRsa7CvXqW8rBM4Zf3Bfn8PHt5DP0Sg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+ lodash "^4.17.13"
+
+"@babel/plugin-transform-classes@^7.10.4":
+ version "7.10.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.10.4.tgz#405136af2b3e218bc4a1926228bc917ab1a0adc7"
+ integrity sha512-2oZ9qLjt161dn1ZE0Ms66xBncQH4In8Sqw1YWgBUZuGVJJS5c0OFZXL6dP2MRHrkU/eKhWg8CzFJhRQl50rQxA==
+ dependencies:
+ "@babel/helper-annotate-as-pure" "^7.10.4"
+ "@babel/helper-define-map" "^7.10.4"
+ "@babel/helper-function-name" "^7.10.4"
+ "@babel/helper-optimise-call-expression" "^7.10.4"
+ "@babel/helper-plugin-utils" "^7.10.4"
+ "@babel/helper-replace-supers" "^7.10.4"
+ "@babel/helper-split-export-declaration" "^7.10.4"
+ globals "^11.1.0"
+
+"@babel/plugin-transform-computed-properties@^7.10.4":
+ version "7.10.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.10.4.tgz#9ded83a816e82ded28d52d4b4ecbdd810cdfc0eb"
+ integrity sha512-JFwVDXcP/hM/TbyzGq3l/XWGut7p46Z3QvqFMXTfk6/09m7xZHJUN9xHfsv7vqqD4YnfI5ueYdSJtXqqBLyjBw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.10.4"
+
+"@babel/plugin-transform-destructuring@^7.10.4":
+ version "7.10.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.10.4.tgz#70ddd2b3d1bea83d01509e9bb25ddb3a74fc85e5"
+ integrity sha512-+WmfvyfsyF603iPa6825mq6Qrb7uLjTOsa3XOFzlYcYDHSS4QmpOWOL0NNBY5qMbvrcf3tq0Cw+v4lxswOBpgA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.10.4"
+
+"@babel/plugin-transform-destructuring@^7.5.0":
+ version "7.5.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.5.0.tgz#f6c09fdfe3f94516ff074fe877db7bc9ef05855a"
+ integrity sha512-YbYgbd3TryYYLGyC7ZR+Tq8H/+bCmwoaxHfJHupom5ECstzbRLTch6gOQbhEY9Z4hiCNHEURgq06ykFv9JZ/QQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+
+"@babel/plugin-transform-dotall-regex@^7.10.4", "@babel/plugin-transform-dotall-regex@^7.4.4":
+ version "7.10.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.10.4.tgz#469c2062105c1eb6a040eaf4fac4b488078395ee"
+ integrity sha512-ZEAVvUTCMlMFAbASYSVQoxIbHm2OkG2MseW6bV2JjIygOjdVv8tuxrCTzj1+Rynh7ODb8GivUy7dzEXzEhuPaA==
+ dependencies:
+ "@babel/helper-create-regexp-features-plugin" "^7.10.4"
+ "@babel/helper-plugin-utils" "^7.10.4"
+
+"@babel/plugin-transform-duplicate-keys@^7.10.4":
+ version "7.10.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.10.4.tgz#697e50c9fee14380fe843d1f306b295617431e47"
+ integrity sha512-GL0/fJnmgMclHiBTTWXNlYjYsA7rDrtsazHG6mglaGSTh0KsrW04qml+Bbz9FL0LcJIRwBWL5ZqlNHKTkU3xAA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.10.4"
+
+"@babel/plugin-transform-exponentiation-operator@^7.10.4":
+ version "7.10.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.10.4.tgz#5ae338c57f8cf4001bdb35607ae66b92d665af2e"
+ integrity sha512-S5HgLVgkBcRdyQAHbKj+7KyuWx8C6t5oETmUuwz1pt3WTWJhsUV0WIIXuVvfXMxl/QQyHKlSCNNtaIamG8fysw==
+ dependencies:
+ "@babel/helper-builder-binary-assignment-operator-visitor" "^7.10.4"
+ "@babel/helper-plugin-utils" "^7.10.4"
+
+"@babel/plugin-transform-for-of@^7.10.4":
+ version "7.10.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.10.4.tgz#c08892e8819d3a5db29031b115af511dbbfebae9"
+ integrity sha512-ItdQfAzu9AlEqmusA/65TqJ79eRcgGmpPPFvBnGILXZH975G0LNjP1yjHvGgfuCxqrPPueXOPe+FsvxmxKiHHQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.10.4"
+
+"@babel/plugin-transform-function-name@^7.10.4":
+ version "7.10.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.10.4.tgz#6a467880e0fc9638514ba369111811ddbe2644b7"
+ integrity sha512-OcDCq2y5+E0dVD5MagT5X+yTRbcvFjDI2ZVAottGH6tzqjx/LKpgkUepu3hp/u4tZBzxxpNGwLsAvGBvQ2mJzg==
+ dependencies:
+ "@babel/helper-function-name" "^7.10.4"
+ "@babel/helper-plugin-utils" "^7.10.4"
+
+"@babel/plugin-transform-literals@^7.10.4":
+ version "7.10.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.10.4.tgz#9f42ba0841100a135f22712d0e391c462f571f3c"
+ integrity sha512-Xd/dFSTEVuUWnyZiMu76/InZxLTYilOSr1UlHV+p115Z/Le2Fi1KXkJUYz0b42DfndostYlPub3m8ZTQlMaiqQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.10.4"
+
+"@babel/plugin-transform-member-expression-literals@^7.10.4":
+ version "7.10.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.10.4.tgz#b1ec44fcf195afcb8db2c62cd8e551c881baf8b7"
+ integrity sha512-0bFOvPyAoTBhtcJLr9VcwZqKmSjFml1iVxvPL0ReomGU53CX53HsM4h2SzckNdkQcHox1bpAqzxBI1Y09LlBSw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.10.4"
+
+"@babel/plugin-transform-modules-amd@^7.10.4":
+ version "7.10.5"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.10.5.tgz#1b9cddaf05d9e88b3aad339cb3e445c4f020a9b1"
+ integrity sha512-elm5uruNio7CTLFItVC/rIzKLfQ17+fX7EVz5W0TMgIHFo1zY0Ozzx+lgwhL4plzl8OzVn6Qasx5DeEFyoNiRw==
+ dependencies:
+ "@babel/helper-module-transforms" "^7.10.5"
+ "@babel/helper-plugin-utils" "^7.10.4"
+ babel-plugin-dynamic-import-node "^2.3.3"
+
+"@babel/plugin-transform-modules-commonjs@^7.10.4":
+ version "7.10.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.10.4.tgz#66667c3eeda1ebf7896d41f1f16b17105a2fbca0"
+ integrity sha512-Xj7Uq5o80HDLlW64rVfDBhao6OX89HKUmb+9vWYaLXBZOma4gA6tw4Ni1O5qVDoZWUV0fxMYA0aYzOawz0l+1w==
+ dependencies:
+ "@babel/helper-module-transforms" "^7.10.4"
+ "@babel/helper-plugin-utils" "^7.10.4"
+ "@babel/helper-simple-access" "^7.10.4"
+ babel-plugin-dynamic-import-node "^2.3.3"
+
+"@babel/plugin-transform-modules-commonjs@^7.5.0":
+ version "7.5.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.5.0.tgz#425127e6045231360858eeaa47a71d75eded7a74"
+ integrity sha512-xmHq0B+ytyrWJvQTc5OWAC4ii6Dhr0s22STOoydokG51JjWhyYo5mRPXoi+ZmtHQhZZwuXNN+GG5jy5UZZJxIQ==
+ dependencies:
+ "@babel/helper-module-transforms" "^7.4.4"
+ "@babel/helper-plugin-utils" "^7.0.0"
+ "@babel/helper-simple-access" "^7.1.0"
+ babel-plugin-dynamic-import-node "^2.3.0"
+
+"@babel/plugin-transform-modules-systemjs@^7.10.4":
+ version "7.10.5"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.10.5.tgz#6270099c854066681bae9e05f87e1b9cadbe8c85"
+ integrity sha512-f4RLO/OL14/FP1AEbcsWMzpbUz6tssRaeQg11RH1BP/XnPpRoVwgeYViMFacnkaw4k4wjRSjn3ip1Uw9TaXuMw==
+ dependencies:
+ "@babel/helper-hoist-variables" "^7.10.4"
+ "@babel/helper-module-transforms" "^7.10.5"
+ "@babel/helper-plugin-utils" "^7.10.4"
+ babel-plugin-dynamic-import-node "^2.3.3"
+
+"@babel/plugin-transform-modules-umd@^7.10.4":
+ version "7.10.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.10.4.tgz#9a8481fe81b824654b3a0b65da3df89f3d21839e"
+ integrity sha512-mohW5q3uAEt8T45YT7Qc5ws6mWgJAaL/8BfWD9Dodo1A3RKWli8wTS+WiQ/knF+tXlPirW/1/MqzzGfCExKECA==
+ dependencies:
+ "@babel/helper-module-transforms" "^7.10.4"
+ "@babel/helper-plugin-utils" "^7.10.4"
+
+"@babel/plugin-transform-named-capturing-groups-regex@^7.10.4":
+ version "7.10.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.10.4.tgz#78b4d978810b6f3bcf03f9e318f2fc0ed41aecb6"
+ integrity sha512-V6LuOnD31kTkxQPhKiVYzYC/Jgdq53irJC/xBSmqcNcqFGV+PER4l6rU5SH2Vl7bH9mLDHcc0+l9HUOe4RNGKA==
+ dependencies:
+ "@babel/helper-create-regexp-features-plugin" "^7.10.4"
+
+"@babel/plugin-transform-new-target@^7.10.4":
+ version "7.10.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.10.4.tgz#9097d753cb7b024cb7381a3b2e52e9513a9c6888"
+ integrity sha512-YXwWUDAH/J6dlfwqlWsztI2Puz1NtUAubXhOPLQ5gjR/qmQ5U96DY4FQO8At33JN4XPBhrjB8I4eMmLROjjLjw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.10.4"
+
+"@babel/plugin-transform-object-super@^7.10.4":
+ version "7.10.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.10.4.tgz#d7146c4d139433e7a6526f888c667e314a093894"
+ integrity sha512-5iTw0JkdRdJvr7sY0vHqTpnruUpTea32JHmq/atIWqsnNussbRzjEDyWep8UNztt1B5IusBYg8Irb0bLbiEBCQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.10.4"
+ "@babel/helper-replace-supers" "^7.10.4"
+
+"@babel/plugin-transform-parameters@^7.10.4":
+ version "7.10.5"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.10.5.tgz#59d339d58d0b1950435f4043e74e2510005e2c4a"
+ integrity sha512-xPHwUj5RdFV8l1wuYiu5S9fqWGM2DrYc24TMvUiRrPVm+SM3XeqU9BcokQX/kEUe+p2RBwy+yoiR1w/Blq6ubw==
+ dependencies:
+ "@babel/helper-get-function-arity" "^7.10.4"
+ "@babel/helper-plugin-utils" "^7.10.4"
+
+"@babel/plugin-transform-parameters@^7.13.0":
+ version "7.13.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.13.0.tgz#8fa7603e3097f9c0b7ca1a4821bc2fb52e9e5007"
+ integrity sha512-Jt8k/h/mIwE2JFEOb3lURoY5C85ETcYPnbuAJ96zRBzh1XHtQZfs62ChZ6EP22QlC8c7Xqr9q+e1SU5qttwwjw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.13.0"
+
+"@babel/plugin-transform-parameters@^7.4.4":
+ version "7.4.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.4.4.tgz#7556cf03f318bd2719fe4c922d2d808be5571e16"
+ integrity sha512-oMh5DUO1V63nZcu/ZVLQFqiihBGo4OpxJxR1otF50GMeCLiRx5nUdtokd+u9SuVJrvvuIh9OosRFPP4pIPnwmw==
+ dependencies:
+ "@babel/helper-call-delegate" "^7.4.4"
+ "@babel/helper-get-function-arity" "^7.0.0"
+ "@babel/helper-plugin-utils" "^7.0.0"
+
+"@babel/plugin-transform-property-literals@^7.10.4":
+ version "7.10.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.10.4.tgz#f6fe54b6590352298785b83edd815d214c42e3c0"
+ integrity sha512-ofsAcKiUxQ8TY4sScgsGeR2vJIsfrzqvFb9GvJ5UdXDzl+MyYCaBj/FGzXuv7qE0aJcjWMILny1epqelnFlz8g==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.10.4"
+
+"@babel/plugin-transform-regenerator@^7.10.4":
+ version "7.10.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.10.4.tgz#2015e59d839074e76838de2159db421966fd8b63"
+ integrity sha512-3thAHwtor39A7C04XucbMg17RcZ3Qppfxr22wYzZNcVIkPHfpM9J0SO8zuCV6SZa265kxBJSrfKTvDCYqBFXGw==
+ dependencies:
+ regenerator-transform "^0.14.2"
+
+"@babel/plugin-transform-reserved-words@^7.10.4":
+ version "7.10.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.10.4.tgz#8f2682bcdcef9ed327e1b0861585d7013f8a54dd"
+ integrity sha512-hGsw1O6Rew1fkFbDImZIEqA8GoidwTAilwCyWqLBM9f+e/u/sQMQu7uX6dyokfOayRuuVfKOW4O7HvaBWM+JlQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.10.4"
+
+"@babel/plugin-transform-shorthand-properties@^7.10.4":
+ version "7.10.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.10.4.tgz#9fd25ec5cdd555bb7f473e5e6ee1c971eede4dd6"
+ integrity sha512-AC2K/t7o07KeTIxMoHneyX90v3zkm5cjHJEokrPEAGEy3UCp8sLKfnfOIGdZ194fyN4wfX/zZUWT9trJZ0qc+Q==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.10.4"
+
+"@babel/plugin-transform-spread@^7.11.0":
+ version "7.11.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.11.0.tgz#fa84d300f5e4f57752fe41a6d1b3c554f13f17cc"
+ integrity sha512-UwQYGOqIdQJe4aWNyS7noqAnN2VbaczPLiEtln+zPowRNlD+79w3oi2TWfYe0eZgd+gjZCbsydN7lzWysDt+gw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.10.4"
+ "@babel/helper-skip-transparent-expression-wrappers" "^7.11.0"
+
+"@babel/plugin-transform-sticky-regex@^7.10.4":
+ version "7.10.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.10.4.tgz#8f3889ee8657581130a29d9cc91d7c73b7c4a28d"
+ integrity sha512-Ddy3QZfIbEV0VYcVtFDCjeE4xwVTJWTmUtorAJkn6u/92Z/nWJNV+mILyqHKrUxXYKA2EoCilgoPePymKL4DvQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.10.4"
+ "@babel/helper-regex" "^7.10.4"
+
+"@babel/plugin-transform-template-literals@^7.10.4":
+ version "7.10.5"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.10.5.tgz#78bc5d626a6642db3312d9d0f001f5e7639fde8c"
+ integrity sha512-V/lnPGIb+KT12OQikDvgSuesRX14ck5FfJXt6+tXhdkJ+Vsd0lDCVtF6jcB4rNClYFzaB2jusZ+lNISDk2mMMw==
+ dependencies:
+ "@babel/helper-annotate-as-pure" "^7.10.4"
+ "@babel/helper-plugin-utils" "^7.10.4"
+
+"@babel/plugin-transform-template-literals@^7.4.4":
+ version "7.4.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.4.4.tgz#9d28fea7bbce637fb7612a0750989d8321d4bcb0"
+ integrity sha512-mQrEC4TWkhLN0z8ygIvEL9ZEToPhG5K7KDW3pzGqOfIGZ28Jb0POUkeWcoz8HnHvhFy6dwAT1j8OzqN8s804+g==
+ dependencies:
+ "@babel/helper-annotate-as-pure" "^7.0.0"
+ "@babel/helper-plugin-utils" "^7.0.0"
+
+"@babel/plugin-transform-typeof-symbol@^7.10.4":
+ version "7.10.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.10.4.tgz#9509f1a7eec31c4edbffe137c16cc33ff0bc5bfc"
+ integrity sha512-QqNgYwuuW0y0H+kUE/GWSR45t/ccRhe14Fs/4ZRouNNQsyd4o3PG4OtHiIrepbM2WKUBDAXKCAK/Lk4VhzTaGA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.10.4"
+
+"@babel/plugin-transform-typescript@^7.10.4":
+ version "7.11.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.11.0.tgz#2b4879676af37342ebb278216dd090ac67f13abb"
+ integrity sha512-edJsNzTtvb3MaXQwj8403B7mZoGu9ElDJQZOKjGUnvilquxBA3IQoEIOvkX/1O8xfAsnHS/oQhe2w/IXrr+w0w==
+ dependencies:
+ "@babel/helper-create-class-features-plugin" "^7.10.5"
+ "@babel/helper-plugin-utils" "^7.10.4"
+ "@babel/plugin-syntax-typescript" "^7.10.4"
+
+"@babel/plugin-transform-unicode-escapes@^7.10.4":
+ version "7.10.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.10.4.tgz#feae523391c7651ddac115dae0a9d06857892007"
+ integrity sha512-y5XJ9waMti2J+e7ij20e+aH+fho7Wb7W8rNuu72aKRwCHFqQdhkdU2lo3uZ9tQuboEJcUFayXdARhcxLQ3+6Fg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.10.4"
+
+"@babel/plugin-transform-unicode-regex@^7.10.4":
+ version "7.10.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.10.4.tgz#e56d71f9282fac6db09c82742055576d5e6d80a8"
+ integrity sha512-wNfsc4s8N2qnIwpO/WP2ZiSyjfpTamT2C9V9FDH/Ljub9zw6P3SjkXcFmc0RQUt96k2fmIvtla2MMjgTwIAC+A==
+ dependencies:
+ "@babel/helper-create-regexp-features-plugin" "^7.10.4"
+ "@babel/helper-plugin-utils" "^7.10.4"
+
+"@babel/polyfill@^7.0.0":
+ version "7.4.4"
+ resolved "https://registry.yarnpkg.com/@babel/polyfill/-/polyfill-7.4.4.tgz#78801cf3dbe657844eeabf31c1cae3828051e893"
+ integrity sha512-WlthFLfhQQhh+A2Gn5NSFl0Huxz36x86Jn+E9OW7ibK8edKPq+KLy4apM1yDpQ8kJOVi1OVjpP4vSDLdrI04dg==
+ dependencies:
+ core-js "^2.6.5"
+ regenerator-runtime "^0.13.2"
+
+"@babel/preset-env@^7.11.5":
+ version "7.11.5"
+ resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.11.5.tgz#18cb4b9379e3e92ffea92c07471a99a2914e4272"
+ integrity sha512-kXqmW1jVcnB2cdueV+fyBM8estd5mlNfaQi6lwLgRwCby4edpavgbFhiBNjmWA3JpB/yZGSISa7Srf+TwxDQoA==
+ dependencies:
+ "@babel/compat-data" "^7.11.0"
+ "@babel/helper-compilation-targets" "^7.10.4"
+ "@babel/helper-module-imports" "^7.10.4"
+ "@babel/helper-plugin-utils" "^7.10.4"
+ "@babel/plugin-proposal-async-generator-functions" "^7.10.4"
+ "@babel/plugin-proposal-class-properties" "^7.10.4"
+ "@babel/plugin-proposal-dynamic-import" "^7.10.4"
+ "@babel/plugin-proposal-export-namespace-from" "^7.10.4"
+ "@babel/plugin-proposal-json-strings" "^7.10.4"
+ "@babel/plugin-proposal-logical-assignment-operators" "^7.11.0"
+ "@babel/plugin-proposal-nullish-coalescing-operator" "^7.10.4"
+ "@babel/plugin-proposal-numeric-separator" "^7.10.4"
+ "@babel/plugin-proposal-object-rest-spread" "^7.11.0"
+ "@babel/plugin-proposal-optional-catch-binding" "^7.10.4"
+ "@babel/plugin-proposal-optional-chaining" "^7.11.0"
+ "@babel/plugin-proposal-private-methods" "^7.10.4"
+ "@babel/plugin-proposal-unicode-property-regex" "^7.10.4"
+ "@babel/plugin-syntax-async-generators" "^7.8.0"
+ "@babel/plugin-syntax-class-properties" "^7.10.4"
+ "@babel/plugin-syntax-dynamic-import" "^7.8.0"
+ "@babel/plugin-syntax-export-namespace-from" "^7.8.3"
+ "@babel/plugin-syntax-json-strings" "^7.8.0"
+ "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4"
+ "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0"
+ "@babel/plugin-syntax-numeric-separator" "^7.10.4"
+ "@babel/plugin-syntax-object-rest-spread" "^7.8.0"
+ "@babel/plugin-syntax-optional-catch-binding" "^7.8.0"
+ "@babel/plugin-syntax-optional-chaining" "^7.8.0"
+ "@babel/plugin-syntax-top-level-await" "^7.10.4"
+ "@babel/plugin-transform-arrow-functions" "^7.10.4"
+ "@babel/plugin-transform-async-to-generator" "^7.10.4"
+ "@babel/plugin-transform-block-scoped-functions" "^7.10.4"
+ "@babel/plugin-transform-block-scoping" "^7.10.4"
+ "@babel/plugin-transform-classes" "^7.10.4"
+ "@babel/plugin-transform-computed-properties" "^7.10.4"
+ "@babel/plugin-transform-destructuring" "^7.10.4"
+ "@babel/plugin-transform-dotall-regex" "^7.10.4"
+ "@babel/plugin-transform-duplicate-keys" "^7.10.4"
+ "@babel/plugin-transform-exponentiation-operator" "^7.10.4"
+ "@babel/plugin-transform-for-of" "^7.10.4"
+ "@babel/plugin-transform-function-name" "^7.10.4"
+ "@babel/plugin-transform-literals" "^7.10.4"
+ "@babel/plugin-transform-member-expression-literals" "^7.10.4"
+ "@babel/plugin-transform-modules-amd" "^7.10.4"
+ "@babel/plugin-transform-modules-commonjs" "^7.10.4"
+ "@babel/plugin-transform-modules-systemjs" "^7.10.4"
+ "@babel/plugin-transform-modules-umd" "^7.10.4"
+ "@babel/plugin-transform-named-capturing-groups-regex" "^7.10.4"
+ "@babel/plugin-transform-new-target" "^7.10.4"
+ "@babel/plugin-transform-object-super" "^7.10.4"
+ "@babel/plugin-transform-parameters" "^7.10.4"
+ "@babel/plugin-transform-property-literals" "^7.10.4"
+ "@babel/plugin-transform-regenerator" "^7.10.4"
+ "@babel/plugin-transform-reserved-words" "^7.10.4"
+ "@babel/plugin-transform-shorthand-properties" "^7.10.4"
+ "@babel/plugin-transform-spread" "^7.11.0"
+ "@babel/plugin-transform-sticky-regex" "^7.10.4"
+ "@babel/plugin-transform-template-literals" "^7.10.4"
+ "@babel/plugin-transform-typeof-symbol" "^7.10.4"
+ "@babel/plugin-transform-unicode-escapes" "^7.10.4"
+ "@babel/plugin-transform-unicode-regex" "^7.10.4"
+ "@babel/preset-modules" "^0.1.3"
+ "@babel/types" "^7.11.5"
+ browserslist "^4.12.0"
+ core-js-compat "^3.6.2"
+ invariant "^2.2.2"
+ levenary "^1.1.1"
+ semver "^5.5.0"
+
+"@babel/preset-modules@^0.1.3":
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.4.tgz#362f2b68c662842970fdb5e254ffc8fc1c2e415e"
+ integrity sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+ "@babel/plugin-proposal-unicode-property-regex" "^7.4.4"
+ "@babel/plugin-transform-dotall-regex" "^7.4.4"
+ "@babel/types" "^7.4.4"
+ esutils "^2.0.2"
+
+"@babel/preset-typescript@^7.10.4":
+ version "7.10.4"
+ resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.10.4.tgz#7d5d052e52a682480d6e2cc5aa31be61c8c25e36"
+ integrity sha512-SdYnvGPv+bLlwkF2VkJnaX/ni1sMNetcGI1+nThF1gyv6Ph8Qucc4ZZAjM5yZcE/AKRXIOTZz7eSRDWOEjPyRQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.10.4"
+ "@babel/plugin-transform-typescript" "^7.10.4"
+
+"@babel/register@^7.5.5":
+ version "7.5.5"
+ resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.5.5.tgz#40fe0d474c8c8587b28d6ae18a03eddad3dac3c1"
+ integrity sha512-pdd5nNR+g2qDkXZlW1yRCWFlNrAn2PPdnZUB72zjX4l1Vv4fMRRLwyf+n/idFCLI1UgVGboUU8oVziwTBiyNKQ==
+ dependencies:
+ core-js "^3.0.0"
+ find-cache-dir "^2.0.0"
+ lodash "^4.17.13"
+ mkdirp "^0.5.1"
+ pirates "^4.0.0"
+ source-map-support "^0.5.9"
+
+"@babel/runtime@^7.8.4":
+ version "7.11.2"
+ resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.11.2.tgz#f549c13c754cc40b87644b9fa9f09a6a95fe0736"
+ integrity sha512-TeWkU52so0mPtDcaCTxNBI/IHiz0pZgr8VEFqXFtZWpYD08ZB6FaSwVAS8MKRQAP3bYKiVjwysOJgMFY28o6Tw==
+ dependencies:
+ regenerator-runtime "^0.13.4"
+
+"@babel/template@^7.1.0", "@babel/template@^7.4.0", "@babel/template@^7.4.4":
+ version "7.4.4"
+ resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.4.4.tgz#f4b88d1225689a08f5bc3a17483545be9e4ed237"
+ integrity sha512-CiGzLN9KgAvgZsnivND7rkA+AeJ9JB0ciPOD4U59GKbQP2iQl+olF1l76kJOupqidozfZ32ghwBEJDhnk9MEcw==
+ dependencies:
+ "@babel/code-frame" "^7.0.0"
+ "@babel/parser" "^7.4.4"
+ "@babel/types" "^7.4.4"
+
+"@babel/template@^7.10.4":
+ version "7.10.4"
+ resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.10.4.tgz#3251996c4200ebc71d1a8fc405fba940f36ba278"
+ integrity sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==
+ dependencies:
+ "@babel/code-frame" "^7.10.4"
+ "@babel/parser" "^7.10.4"
+ "@babel/types" "^7.10.4"
+
+"@babel/traverse@^7.0.0", "@babel/traverse@^7.1.0", "@babel/traverse@^7.4.3", "@babel/traverse@^7.4.4", "@babel/traverse@^7.5.5":
+ version "7.5.5"
+ resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.5.5.tgz#f664f8f368ed32988cd648da9f72d5ca70f165bb"
+ integrity sha512-MqB0782whsfffYfSjH4TM+LMjrJnhCNEDMDIjeTpl+ASaUvxcjoiVCo/sM1GhS1pHOXYfWVCYneLjMckuUxDaQ==
+ dependencies:
+ "@babel/code-frame" "^7.5.5"
+ "@babel/generator" "^7.5.5"
+ "@babel/helper-function-name" "^7.1.0"
+ "@babel/helper-split-export-declaration" "^7.4.4"
+ "@babel/parser" "^7.5.5"
+ "@babel/types" "^7.5.5"
+ debug "^4.1.0"
+ globals "^11.1.0"
+ lodash "^4.17.13"
+
+"@babel/traverse@^7.10.4":
+ version "7.11.5"
+ resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.11.5.tgz#be777b93b518eb6d76ee2e1ea1d143daa11e61c3"
+ integrity sha512-EjiPXt+r7LiCZXEfRpSJd+jUMnBd4/9OUv7Nx3+0u9+eimMwJmG0Q98lw4/289JCoxSE8OolDMNZaaF/JZ69WQ==
+ dependencies:
+ "@babel/code-frame" "^7.10.4"
+ "@babel/generator" "^7.11.5"
+ "@babel/helper-function-name" "^7.10.4"
+ "@babel/helper-split-export-declaration" "^7.11.0"
+ "@babel/parser" "^7.11.5"
+ "@babel/types" "^7.11.5"
+ debug "^4.1.0"
+ globals "^11.1.0"
+ lodash "^4.17.19"
+
+"@babel/types@^7.0.0", "@babel/types@^7.3.0", "@babel/types@^7.4.0", "@babel/types@^7.4.4", "@babel/types@^7.5.5":
+ version "7.5.5"
+ resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.5.5.tgz#97b9f728e182785909aa4ab56264f090a028d18a"
+ integrity sha512-s63F9nJioLqOlW3UkyMd+BYhXt44YuaFm/VV0VwuteqjYwRrObkU7ra9pY4wAJR3oXi8hJrMcrcJdO/HH33vtw==
+ dependencies:
+ esutils "^2.0.2"
+ lodash "^4.17.13"
+ to-fast-properties "^2.0.0"
+
+"@babel/types@^7.10.4", "@babel/types@^7.10.5", "@babel/types@^7.11.0", "@babel/types@^7.11.5":
+ version "7.11.5"
+ resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.11.5.tgz#d9de577d01252d77c6800cee039ee64faf75662d"
+ integrity sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==
+ dependencies:
+ "@babel/helper-validator-identifier" "^7.10.4"
+ lodash "^4.17.19"
+ to-fast-properties "^2.0.0"
+
+"@babel/types@^7.12.1":
+ version "7.12.12"
+ resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.12.12.tgz#4608a6ec313abbd87afa55004d373ad04a96c299"
+ integrity sha512-lnIX7piTxOH22xE7fDXDbSHg9MM1/6ORnafpJmov5rs0kX5g4BZxeXNJLXsMRiO0U5Rb8/FvMS6xlTnTHvxonQ==
+ dependencies:
+ "@babel/helper-validator-identifier" "^7.12.11"
+ lodash "^4.17.19"
+ to-fast-properties "^2.0.0"
+
+"@cnakazawa/watch@^1.0.3":
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/@cnakazawa/watch/-/watch-1.0.3.tgz#099139eaec7ebf07a27c1786a3ff64f39464d2ef"
+ integrity sha512-r5160ogAvGyHsal38Kux7YYtodEKOj89RGb28ht1jh3SJb08VwRwAKKJL0bGb04Zd/3r9FL3BFIc3bBidYffCA==
+ dependencies:
+ exec-sh "^0.3.2"
+ minimist "^1.2.0"
+
+"@date-fns/date-fns-db@^0.0.14":
+ version "0.0.14"
+ resolved "https://registry.yarnpkg.com/@date-fns/date-fns-db/-/date-fns-db-0.0.14.tgz#7ca0eee070bfdb789778a5972afbcefe57971aba"
+ integrity sha512-4Cg+IDM2XRl+cPN08i7c4ohb7wlF1FDxvf4e6GjQtX5dn9yZLAhVCvdu72lD8C71SjyO7DLY7KC9cEtSrRMx4g==
+
+"@date-fns/date-fns-scripts@0.0.4":
+ version "0.0.4"
+ resolved "https://registry.yarnpkg.com/@date-fns/date-fns-scripts/-/date-fns-scripts-0.0.4.tgz#c4ba7fbf766e3024eb77d57f64d3a39d29b2977a"
+ integrity sha512-USNncRFPROEgDmpb4iuqfgvw2Ok+lm6juXrVheW6714rKkbgubgE4Ob5c4KLN2TGPZg4ZC5AcXo381vCAlGVTA==
+ dependencies:
+ "@date-fns/date-fns-db" "^0.0.14"
+ firebase "^8.2.2"
+ firebase-admin "^9.4.2"
+ json-bond "^0.1.0"
+ typesaurus "^7.1.0"
+
+"@firebase/analytics-types@0.4.0":
+ version "0.4.0"
+ resolved "https://registry.yarnpkg.com/@firebase/analytics-types/-/analytics-types-0.4.0.tgz#d6716f9fa36a6e340bc0ecfe68af325aa6f60508"
+ integrity sha512-Jj2xW+8+8XPfWGkv9HPv/uR+Qrmq37NPYT352wf7MvE9LrstpLVmFg3LqG6MCRr5miLAom5sen2gZ+iOhVDeRA==
+
+"@firebase/analytics@0.6.2":
+ version "0.6.2"
+ resolved "https://registry.yarnpkg.com/@firebase/analytics/-/analytics-0.6.2.tgz#7f45675a1b524fff4d9e9fe318fd6e2ed067a325"
+ integrity sha512-4Ceov+rPfOEPIdbjlpTim/wbcUUneIesHag4UOzvmFsRRXqbxLwQpyZQWEbTSriUeU8uTKj9yOW32hsskV9Klg==
+ dependencies:
+ "@firebase/analytics-types" "0.4.0"
+ "@firebase/component" "0.1.21"
+ "@firebase/installations" "0.4.19"
+ "@firebase/logger" "0.2.6"
+ "@firebase/util" "0.3.4"
+ tslib "^1.11.1"
+
+"@firebase/app-types@0.6.1":
+ version "0.6.1"
+ resolved "https://registry.yarnpkg.com/@firebase/app-types/-/app-types-0.6.1.tgz#dcbd23030a71c0c74fc95d4a3f75ba81653850e9"
+ integrity sha512-L/ZnJRAq7F++utfuoTKX4CLBG5YR7tFO3PLzG1/oXXKEezJ0kRL3CMRoueBEmTCzVb/6SIs2Qlaw++uDgi5Xyg==
+
+"@firebase/app@0.6.13":
+ version "0.6.13"
+ resolved "https://registry.yarnpkg.com/@firebase/app/-/app-0.6.13.tgz#f2e9fa9e75815e54161dc34659a60f1fffd9a450"
+ integrity sha512-xGrJETzvCb89VYbGSHFHCW7O/y067HRxT7MGehUE1xMxdPVBDNayHnxEuKwzfGvXAjVmajXBKFlKxaCWpgSjCQ==
+ dependencies:
+ "@firebase/app-types" "0.6.1"
+ "@firebase/component" "0.1.21"
+ "@firebase/logger" "0.2.6"
+ "@firebase/util" "0.3.4"
+ dom-storage "2.1.0"
+ tslib "^1.11.1"
+ xmlhttprequest "1.8.0"
+
+"@firebase/auth-interop-types@0.1.5":
+ version "0.1.5"
+ resolved "https://registry.yarnpkg.com/@firebase/auth-interop-types/-/auth-interop-types-0.1.5.tgz#9fc9bd7c879f16b8d1bb08373a0f48c3a8b74557"
+ integrity sha512-88h74TMQ6wXChPA6h9Q3E1Jg6TkTHep2+k63OWg3s0ozyGVMeY+TTOti7PFPzq5RhszQPQOoCi59es4MaRvgCw==
+
+"@firebase/auth-types@0.10.1":
+ version "0.10.1"
+ resolved "https://registry.yarnpkg.com/@firebase/auth-types/-/auth-types-0.10.1.tgz#7815e71c9c6f072034415524b29ca8f1d1770660"
+ integrity sha512-/+gBHb1O9x/YlG7inXfxff/6X3BPZt4zgBv4kql6HEmdzNQCodIRlEYnI+/da+lN+dha7PjaFH7C7ewMmfV7rw==
+
+"@firebase/auth@0.16.1":
+ version "0.16.1"
+ resolved "https://registry.yarnpkg.com/@firebase/auth/-/auth-0.16.1.tgz#8b0c9a9c6ab29694ea6d7f467d91b9d3dd22fce8"
+ integrity sha512-7juD7D/kaxNti/xa5G+ZGJJs+bdJUWOW0MlNBtXwiG+TjMh69EDmwJnQmmc9h/32QVvXt1qo1OGWOoMMpF/2Gg==
+ dependencies:
+ "@firebase/auth-types" "0.10.1"
+
+"@firebase/component@0.1.21":
+ version "0.1.21"
+ resolved "https://registry.yarnpkg.com/@firebase/component/-/component-0.1.21.tgz#56062eb0d449dc1e7bbef3c084a9b5fa48c7c14d"
+ integrity sha512-kd5sVmCLB95EK81Pj+yDTea8pzN2qo/1yr0ua9yVi6UgMzm6zAeih73iVUkaat96MAHy26yosMufkvd3zC4IKg==
+ dependencies:
+ "@firebase/util" "0.3.4"
+ tslib "^1.11.1"
+
+"@firebase/database-types@0.6.1", "@firebase/database-types@^0.6.1":
+ version "0.6.1"
+ resolved "https://registry.yarnpkg.com/@firebase/database-types/-/database-types-0.6.1.tgz#cf1cfc03e617ed4c2561703781f85ba4c707ff65"
+ integrity sha512-JtL3FUbWG+bM59iYuphfx9WOu2Mzf0OZNaqWiQ7lJR8wBe7bS9rIm9jlBFtksB7xcya1lZSQPA/GAy2jIlMIkA==
+ dependencies:
+ "@firebase/app-types" "0.6.1"
+
+"@firebase/database@0.8.2":
+ version "0.8.2"
+ resolved "https://registry.yarnpkg.com/@firebase/database/-/database-0.8.2.tgz#cfe893fa467bb5e55056ab2ffa8b2abc66a8ad52"
+ integrity sha512-E86yrom0Ii+61UScG44y1q3H3NuozzGGTGbYmiyTe1qK8Qvzuiu7yyfdDnqFW2fkeKvTRLoDeCpgZy27FgEndQ==
+ dependencies:
+ "@firebase/auth-interop-types" "0.1.5"
+ "@firebase/component" "0.1.21"
+ "@firebase/database-types" "0.6.1"
+ "@firebase/logger" "0.2.6"
+ "@firebase/util" "0.3.4"
+ faye-websocket "0.11.3"
+ tslib "^1.11.1"
+
+"@firebase/database@^0.8.1":
+ version "0.8.1"
+ resolved "https://registry.yarnpkg.com/@firebase/database/-/database-0.8.1.tgz#a7bc1c01052d35817a242c21bfe09ab29ee485a3"
+ integrity sha512-/1HhR4ejpqUaM9Cn3KSeNdQvdlehWIhdfTVWFxS73ZlLYf7ayk9jITwH10H3ZOIm5yNzxF67p/U7Z/0IPhgWaQ==
+ dependencies:
+ "@firebase/auth-interop-types" "0.1.5"
+ "@firebase/component" "0.1.21"
+ "@firebase/database-types" "0.6.1"
+ "@firebase/logger" "0.2.6"
+ "@firebase/util" "0.3.4"
+ faye-websocket "0.11.3"
+ tslib "^1.11.1"
+
+"@firebase/firestore-types@2.1.0":
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/@firebase/firestore-types/-/firestore-types-2.1.0.tgz#ad406c6fd7f0eae7ea52979f712daa0166aef665"
+ integrity sha512-jietErBWihMvJkqqEquQy5GgoEwzHnMXXC/TsVoe9FPysXm1/AeJS12taS7ZYvenAtyvL/AEJyKrRKRh4adcJQ==
+
+"@firebase/firestore@2.1.2":
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/@firebase/firestore/-/firestore-2.1.2.tgz#6a09062e4e4212ef52e46a9ce44b1e0c37c553f3"
+ integrity sha512-8yUdBLLr6UhE+IjPR+fxLBD0bDnEqF9GalohfURZeLQPaL3b+LtqqGCLvvXC4MKT0lJAHOV8J9LA6rHj8vI0/Q==
+ dependencies:
+ "@firebase/component" "0.1.21"
+ "@firebase/firestore-types" "2.1.0"
+ "@firebase/logger" "0.2.6"
+ "@firebase/util" "0.3.4"
+ "@firebase/webchannel-wrapper" "0.4.1"
+ "@grpc/grpc-js" "^1.0.0"
+ "@grpc/proto-loader" "^0.5.0"
+ node-fetch "2.6.1"
+ tslib "^1.11.1"
+
+"@firebase/functions-types@0.4.0":
+ version "0.4.0"
+ resolved "https://registry.yarnpkg.com/@firebase/functions-types/-/functions-types-0.4.0.tgz#0b789f4fe9a9c0b987606c4da10139345b40f6b9"
+ integrity sha512-3KElyO3887HNxtxNF1ytGFrNmqD+hheqjwmT3sI09FaDCuaxGbOnsXAXH2eQ049XRXw9YQpHMgYws/aUNgXVyQ==
+
+"@firebase/functions@0.6.1":
+ version "0.6.1"
+ resolved "https://registry.yarnpkg.com/@firebase/functions/-/functions-0.6.1.tgz#32640b8f877637057dfaaeb122be8c8e99ad1af7"
+ integrity sha512-xNCAY3cLlVWE8Azf+/84OjnaXMoyUstJ3vwVRG0ie22QhsdQuPa1tXTiPX4Tmm+Hbbd/Aw0A/7dkEnuW+zYzaQ==
+ dependencies:
+ "@firebase/component" "0.1.21"
+ "@firebase/functions-types" "0.4.0"
+ "@firebase/messaging-types" "0.5.0"
+ node-fetch "2.6.1"
+ tslib "^1.11.1"
+
+"@firebase/installations-types@0.3.4":
+ version "0.3.4"
+ resolved "https://registry.yarnpkg.com/@firebase/installations-types/-/installations-types-0.3.4.tgz#589a941d713f4f64bf9f4feb7f463505bab1afa2"
+ integrity sha512-RfePJFovmdIXb6rYwtngyxuEcWnOrzdZd9m7xAW0gRxDIjBT20n3BOhjpmgRWXo/DAxRmS7bRjWAyTHY9cqN7Q==
+
+"@firebase/installations@0.4.19":
+ version "0.4.19"
+ resolved "https://registry.yarnpkg.com/@firebase/installations/-/installations-0.4.19.tgz#53f50aeb022996963f89f59560d7b4cf801869da"
+ integrity sha512-QqAQzosKVVqIx7oMt5ujF4NsIXgtlTnej4JXGJ8sQQuJoMnt3T+PFQRHbr7uOfVaBiHYhEaXCcmmhfKUHwKftw==
+ dependencies:
+ "@firebase/component" "0.1.21"
+ "@firebase/installations-types" "0.3.4"
+ "@firebase/util" "0.3.4"
+ idb "3.0.2"
+ tslib "^1.11.1"
+
+"@firebase/logger@0.2.6":
+ version "0.2.6"
+ resolved "https://registry.yarnpkg.com/@firebase/logger/-/logger-0.2.6.tgz#3aa2ca4fe10327cabf7808bd3994e88db26d7989"
+ integrity sha512-KIxcUvW/cRGWlzK9Vd2KB864HlUnCfdTH0taHE0sXW5Xl7+W68suaeau1oKNEqmc3l45azkd4NzXTCWZRZdXrw==
+
+"@firebase/messaging-types@0.5.0":
+ version "0.5.0"
+ resolved "https://registry.yarnpkg.com/@firebase/messaging-types/-/messaging-types-0.5.0.tgz#c5d0ef309ced1758fda93ef3ac70a786de2e73c4"
+ integrity sha512-QaaBswrU6umJYb/ZYvjR5JDSslCGOH6D9P136PhabFAHLTR4TWjsaACvbBXuvwrfCXu10DtcjMxqfhdNIB1Xfg==
+
+"@firebase/messaging@0.7.3":
+ version "0.7.3"
+ resolved "https://registry.yarnpkg.com/@firebase/messaging/-/messaging-0.7.3.tgz#31dded892455e4d0680e1452ff2fbfdfb9e4ce9b"
+ integrity sha512-63nOP2SmQJrj9jrhV3K96L5MRKS6AqmFVLX1XbGk6K6lz38ZC4LIoCcHxzUBXY7fCAuZvNmh/YB3pE8B2mTs8A==
+ dependencies:
+ "@firebase/component" "0.1.21"
+ "@firebase/installations" "0.4.19"
+ "@firebase/messaging-types" "0.5.0"
+ "@firebase/util" "0.3.4"
+ idb "3.0.2"
+ tslib "^1.11.1"
+
+"@firebase/performance-types@0.0.13":
+ version "0.0.13"
+ resolved "https://registry.yarnpkg.com/@firebase/performance-types/-/performance-types-0.0.13.tgz#58ce5453f57e34b18186f74ef11550dfc558ede6"
+ integrity sha512-6fZfIGjQpwo9S5OzMpPyqgYAUZcFzZxHFqOyNtorDIgNXq33nlldTL/vtaUZA8iT9TT5cJlCrF/jthKU7X21EA==
+
+"@firebase/performance@0.4.5":
+ version "0.4.5"
+ resolved "https://registry.yarnpkg.com/@firebase/performance/-/performance-0.4.5.tgz#3ab89208ed6fb80165e5594058e46dc85113cd78"
+ integrity sha512-oenEOaV/UzvV8XPi8afYQ71RzyrHoBesqOyXqb1TOg7dpU+i+UJ5PS8K64DytKUHTxQl+UJFcuxNpsoy9BpWzw==
+ dependencies:
+ "@firebase/component" "0.1.21"
+ "@firebase/installations" "0.4.19"
+ "@firebase/logger" "0.2.6"
+ "@firebase/performance-types" "0.0.13"
+ "@firebase/util" "0.3.4"
+ tslib "^1.11.1"
+
+"@firebase/polyfill@0.3.36":
+ version "0.3.36"
+ resolved "https://registry.yarnpkg.com/@firebase/polyfill/-/polyfill-0.3.36.tgz#c057cce6748170f36966b555749472b25efdb145"
+ integrity sha512-zMM9oSJgY6cT2jx3Ce9LYqb0eIpDE52meIzd/oe/y70F+v9u1LDqk5kUF5mf16zovGBWMNFmgzlsh6Wj0OsFtg==
+ dependencies:
+ core-js "3.6.5"
+ promise-polyfill "8.1.3"
+ whatwg-fetch "2.0.4"
+
+"@firebase/remote-config-types@0.1.9":
+ version "0.1.9"
+ resolved "https://registry.yarnpkg.com/@firebase/remote-config-types/-/remote-config-types-0.1.9.tgz#fe6bbe4d08f3b6e92fce30e4b7a9f4d6a96d6965"
+ integrity sha512-G96qnF3RYGbZsTRut7NBX0sxyczxt1uyCgXQuH/eAfUCngxjEGcZQnBdy6mvSdqdJh5mC31rWPO4v9/s7HwtzA==
+
+"@firebase/remote-config@0.1.30":
+ version "0.1.30"
+ resolved "https://registry.yarnpkg.com/@firebase/remote-config/-/remote-config-0.1.30.tgz#2cd6bbbed526a98b154e13a2cc73e748a77d7c3d"
+ integrity sha512-LAfLDcp1AN0V/7AkxBuTKy+Qnq9fKYKxbA5clrXRNVzJbTVnF5eFGsaUOlkes0ESG6lbqKy5ZcDgdl73zBIhAA==
+ dependencies:
+ "@firebase/component" "0.1.21"
+ "@firebase/installations" "0.4.19"
+ "@firebase/logger" "0.2.6"
+ "@firebase/remote-config-types" "0.1.9"
+ "@firebase/util" "0.3.4"
+ tslib "^1.11.1"
+
+"@firebase/storage-types@0.3.13":
+ version "0.3.13"
+ resolved "https://registry.yarnpkg.com/@firebase/storage-types/-/storage-types-0.3.13.tgz#cd43e939a2ab5742e109eb639a313673a48b5458"
+ integrity sha512-pL7b8d5kMNCCL0w9hF7pr16POyKkb3imOW7w0qYrhBnbyJTdVxMWZhb0HxCFyQWC0w3EiIFFmxoz8NTFZDEFog==
+
+"@firebase/storage@0.4.2":
+ version "0.4.2"
+ resolved "https://registry.yarnpkg.com/@firebase/storage/-/storage-0.4.2.tgz#bc5924b87bd2fdd4ab0de49851c0125ebc236b89"
+ integrity sha512-87CrvKrf8kijVekRBmUs8htsNz7N5X/pDhv3BvJBqw8K65GsUolpyjx0f4QJRkCRUYmh3MSkpa5P08lpVbC6nQ==
+ dependencies:
+ "@firebase/component" "0.1.21"
+ "@firebase/storage-types" "0.3.13"
+ "@firebase/util" "0.3.4"
+ tslib "^1.11.1"
+
+"@firebase/util@0.3.4":
+ version "0.3.4"
+ resolved "https://registry.yarnpkg.com/@firebase/util/-/util-0.3.4.tgz#e389d0e0e2aac88a5235b06ba9431db999d4892b"
+ integrity sha512-VwjJUE2Vgr2UMfH63ZtIX9Hd7x+6gayi6RUXaTqEYxSbf/JmehLmAEYSuxS/NckfzAXWeGnKclvnXVibDgpjQQ==
+ dependencies:
+ tslib "^1.11.1"
+
+"@firebase/webchannel-wrapper@0.4.1":
+ version "0.4.1"
+ resolved "https://registry.yarnpkg.com/@firebase/webchannel-wrapper/-/webchannel-wrapper-0.4.1.tgz#600f2275ff54739ad5ac0102f1467b8963cd5f71"
+ integrity sha512-0yPjzuzGMkW1GkrC8yWsiN7vt1OzkMIi9HgxRmKREZl2wnNPOKo/yScTjXf/O57HM8dltqxPF6jlNLFVtc2qdw==
+
+"@google-cloud/common@^3.5.0":
+ version "3.5.0"
+ resolved "https://registry.yarnpkg.com/@google-cloud/common/-/common-3.5.0.tgz#0959e769e8075a06eb0823cc567eef00fd0c2d02"
+ integrity sha512-10d7ZAvKhq47L271AqvHEd8KzJqGU45TY+rwM2Z3JHuB070FeTi7oJJd7elfrnKaEvaktw3hH2wKnRWxk/3oWQ==
+ dependencies:
+ "@google-cloud/projectify" "^2.0.0"
+ "@google-cloud/promisify" "^2.0.0"
+ arrify "^2.0.1"
+ duplexify "^4.1.1"
+ ent "^2.2.0"
+ extend "^3.0.2"
+ google-auth-library "^6.1.1"
+ retry-request "^4.1.1"
+ teeny-request "^7.0.0"
+
+"@google-cloud/firestore@^4.5.0":
+ version "4.8.1"
+ resolved "https://registry.yarnpkg.com/@google-cloud/firestore/-/firestore-4.8.1.tgz#bcba4d45d4d53dd4eaed5b19300ae238e65a3106"
+ integrity sha512-x/8ixlYqQuH9DoluhBj/uj3MqwoQN1lSCT2v+ieOXuh2L+8eoA7H+FF7f+UJ/D6hzo0MMWJd6q7QaBkpzp203Q==
+ dependencies:
+ fast-deep-equal "^3.1.1"
+ functional-red-black-tree "^1.0.1"
+ google-gax "^2.9.2"
+
+"@google-cloud/paginator@^3.0.0":
+ version "3.0.5"
+ resolved "https://registry.yarnpkg.com/@google-cloud/paginator/-/paginator-3.0.5.tgz#9d6b96c421a89bd560c1bc2c197c7611ef21db6c"
+ integrity sha512-N4Uk4BT1YuskfRhKXBs0n9Lg2YTROZc6IMpkO/8DIHODtm5s3xY8K5vVBo23v/2XulY3azwITQlYWgT4GdLsUw==
+ dependencies:
+ arrify "^2.0.0"
+ extend "^3.0.2"
+
+"@google-cloud/projectify@^2.0.0":
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/@google-cloud/projectify/-/projectify-2.0.1.tgz#13350ee609346435c795bbfe133a08dfeab78d65"
+ integrity sha512-ZDG38U/Yy6Zr21LaR3BTiiLtpJl6RkPS/JwoRT453G+6Q1DhlV0waNf8Lfu+YVYGIIxgKnLayJRfYlFJfiI8iQ==
+
+"@google-cloud/promisify@^2.0.0":
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/@google-cloud/promisify/-/promisify-2.0.3.tgz#f934b5cdc939e3c7039ff62b9caaf59a9d89e3a8"
+ integrity sha512-d4VSA86eL/AFTe5xtyZX+ePUjE8dIFu2T8zmdeNBSa5/kNgXPCx/o/wbFNHAGLJdGnk1vddRuMESD9HbOC8irw==
+
+"@google-cloud/storage@^5.3.0":
+ version "5.7.0"
+ resolved "https://registry.yarnpkg.com/@google-cloud/storage/-/storage-5.7.0.tgz#1cdbeeaab21f78b69de060c11b765c2b5591de91"
+ integrity sha512-6nPTylNaYWsVo5yHDdjQfUSh9qP/DFwahhyvOAf9CSDKfeoOys8+PAyHsoKyL29uyYoC6ymws7uJDO48y/SzBA==
+ dependencies:
+ "@google-cloud/common" "^3.5.0"
+ "@google-cloud/paginator" "^3.0.0"
+ "@google-cloud/promisify" "^2.0.0"
+ arrify "^2.0.0"
+ compressible "^2.0.12"
+ date-and-time "^0.14.0"
+ duplexify "^4.0.0"
+ extend "^3.0.2"
+ gaxios "^4.0.0"
+ gcs-resumable-upload "^3.1.0"
+ get-stream "^6.0.0"
+ hash-stream-validation "^0.2.2"
+ mime "^2.2.0"
+ mime-types "^2.0.8"
+ onetime "^5.1.0"
+ p-limit "^3.0.1"
+ pumpify "^2.0.0"
+ snakeize "^0.1.0"
+ stream-events "^1.0.1"
+ xdg-basedir "^4.0.0"
+
+"@grpc/grpc-js@^1.0.0", "@grpc/grpc-js@~1.2.0":
+ version "1.2.2"
+ resolved "https://registry.yarnpkg.com/@grpc/grpc-js/-/grpc-js-1.2.2.tgz#ee4a7417fe15a686a8e369c36ec4c80678445c67"
+ integrity sha512-iK/T984Ni6VnmlQK/LJdUk+VsXSaYIWkgzJ0LyOcxN2SowAmoRjG28kS7B1ui/q/MAv42iM3051WBt5QorFxmg==
+ dependencies:
+ "@types/node" "^12.12.47"
+ google-auth-library "^6.1.1"
+ semver "^6.2.0"
+
+"@grpc/proto-loader@^0.5.0", "@grpc/proto-loader@^0.5.1":
+ version "0.5.5"
+ resolved "https://registry.yarnpkg.com/@grpc/proto-loader/-/proto-loader-0.5.5.tgz#6725e7a1827bdf8e92e29fbf4e9ef0203c0906a9"
+ integrity sha512-WwN9jVNdHRQoOBo9FDH7qU+mgfjPc8GygPYms3M+y3fbQLfnCe/Kv/E01t7JRgnrsOHH8euvSbed3mIalXhwqQ==
+ dependencies:
+ lodash.camelcase "^4.3.0"
+ protobufjs "^6.8.6"
+
+"@jest/console@^24.7.1":
+ version "24.7.1"
+ resolved "https://registry.yarnpkg.com/@jest/console/-/console-24.7.1.tgz#32a9e42535a97aedfe037e725bd67e954b459545"
+ integrity sha512-iNhtIy2M8bXlAOULWVTUxmnelTLFneTNEkHCgPmgd+zNwy9zVddJ6oS5rZ9iwoscNdT5mMwUd0C51v/fSlzItg==
+ dependencies:
+ "@jest/source-map" "^24.3.0"
+ chalk "^2.0.1"
+ slash "^2.0.0"
+
+"@jest/core@^24.8.0":
+ version "24.8.0"
+ resolved "https://registry.yarnpkg.com/@jest/core/-/core-24.8.0.tgz#fbbdcd42a41d0d39cddbc9f520c8bab0c33eed5b"
+ integrity sha512-R9rhAJwCBQzaRnrRgAdVfnglUuATXdwTRsYqs6NMdVcAl5euG8LtWDe+fVkN27YfKVBW61IojVsXKaOmSnqd/A==
+ dependencies:
+ "@jest/console" "^24.7.1"
+ "@jest/reporters" "^24.8.0"
+ "@jest/test-result" "^24.8.0"
+ "@jest/transform" "^24.8.0"
+ "@jest/types" "^24.8.0"
+ ansi-escapes "^3.0.0"
+ chalk "^2.0.1"
+ exit "^0.1.2"
+ graceful-fs "^4.1.15"
+ jest-changed-files "^24.8.0"
+ jest-config "^24.8.0"
+ jest-haste-map "^24.8.0"
+ jest-message-util "^24.8.0"
+ jest-regex-util "^24.3.0"
+ jest-resolve-dependencies "^24.8.0"
+ jest-runner "^24.8.0"
+ jest-runtime "^24.8.0"
+ jest-snapshot "^24.8.0"
+ jest-util "^24.8.0"
+ jest-validate "^24.8.0"
+ jest-watcher "^24.8.0"
+ micromatch "^3.1.10"
+ p-each-series "^1.0.0"
+ pirates "^4.0.1"
+ realpath-native "^1.1.0"
+ rimraf "^2.5.4"
+ strip-ansi "^5.0.0"
+
+"@jest/environment@^24.8.0":
+ version "24.8.0"
+ resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-24.8.0.tgz#0342261383c776bdd652168f68065ef144af0eac"
+ integrity sha512-vlGt2HLg7qM+vtBrSkjDxk9K0YtRBi7HfRFaDxoRtyi+DyVChzhF20duvpdAnKVBV6W5tym8jm0U9EfXbDk1tw==
+ dependencies:
+ "@jest/fake-timers" "^24.8.0"
+ "@jest/transform" "^24.8.0"
+ "@jest/types" "^24.8.0"
+ jest-mock "^24.8.0"
+
+"@jest/fake-timers@^24.8.0":
+ version "24.8.0"
+ resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-24.8.0.tgz#2e5b80a4f78f284bcb4bd5714b8e10dd36a8d3d1"
+ integrity sha512-2M4d5MufVXwi6VzZhJ9f5S/wU4ud2ck0kxPof1Iz3zWx6Y+V2eJrES9jEktB6O3o/oEyk+il/uNu9PvASjWXQw==
+ dependencies:
+ "@jest/types" "^24.8.0"
+ jest-message-util "^24.8.0"
+ jest-mock "^24.8.0"
+
+"@jest/reporters@^24.8.0":
+ version "24.8.0"
+ resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-24.8.0.tgz#075169cd029bddec54b8f2c0fc489fd0b9e05729"
+ integrity sha512-eZ9TyUYpyIIXfYCrw0UHUWUvE35vx5I92HGMgS93Pv7du+GHIzl+/vh8Qj9MCWFK/4TqyttVBPakWMOfZRIfxw==
+ dependencies:
+ "@jest/environment" "^24.8.0"
+ "@jest/test-result" "^24.8.0"
+ "@jest/transform" "^24.8.0"
+ "@jest/types" "^24.8.0"
+ chalk "^2.0.1"
+ exit "^0.1.2"
+ glob "^7.1.2"
+ istanbul-lib-coverage "^2.0.2"
+ istanbul-lib-instrument "^3.0.1"
+ istanbul-lib-report "^2.0.4"
+ istanbul-lib-source-maps "^3.0.1"
+ istanbul-reports "^2.1.1"
+ jest-haste-map "^24.8.0"
+ jest-resolve "^24.8.0"
+ jest-runtime "^24.8.0"
+ jest-util "^24.8.0"
+ jest-worker "^24.6.0"
+ node-notifier "^5.2.1"
+ slash "^2.0.0"
+ source-map "^0.6.0"
+ string-length "^2.0.0"
+
+"@jest/source-map@^24.3.0":
+ version "24.3.0"
+ resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-24.3.0.tgz#563be3aa4d224caf65ff77edc95cd1ca4da67f28"
+ integrity sha512-zALZt1t2ou8le/crCeeiRYzvdnTzaIlpOWaet45lNSqNJUnXbppUUFR4ZUAlzgDmKee4Q5P/tKXypI1RiHwgag==
+ dependencies:
+ callsites "^3.0.0"
+ graceful-fs "^4.1.15"
+ source-map "^0.6.0"
+
+"@jest/test-result@^24.8.0":
+ version "24.8.0"
+ resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-24.8.0.tgz#7675d0aaf9d2484caa65e048d9b467d160f8e9d3"
+ integrity sha512-+YdLlxwizlfqkFDh7Mc7ONPQAhA4YylU1s529vVM1rsf67vGZH/2GGm5uO8QzPeVyaVMobCQ7FTxl38QrKRlng==
+ dependencies:
+ "@jest/console" "^24.7.1"
+ "@jest/types" "^24.8.0"
+ "@types/istanbul-lib-coverage" "^2.0.0"
+
+"@jest/test-sequencer@^24.8.0":
+ version "24.8.0"
+ resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-24.8.0.tgz#2f993bcf6ef5eb4e65e8233a95a3320248cf994b"
+ integrity sha512-OzL/2yHyPdCHXEzhoBuq37CE99nkme15eHkAzXRVqthreWZamEMA0WoetwstsQBCXABhczpK03JNbc4L01vvLg==
+ dependencies:
+ "@jest/test-result" "^24.8.0"
+ jest-haste-map "^24.8.0"
+ jest-runner "^24.8.0"
+ jest-runtime "^24.8.0"
+
+"@jest/transform@^24.8.0":
+ version "24.8.0"
+ resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-24.8.0.tgz#628fb99dce4f9d254c6fd9341e3eea262e06fef5"
+ integrity sha512-xBMfFUP7TortCs0O+Xtez2W7Zu1PLH9bvJgtraN1CDST6LBM/eTOZ9SfwS/lvV8yOfcDpFmwf9bq5cYbXvqsvA==
+ dependencies:
+ "@babel/core" "^7.1.0"
+ "@jest/types" "^24.8.0"
+ babel-plugin-istanbul "^5.1.0"
+ chalk "^2.0.1"
+ convert-source-map "^1.4.0"
+ fast-json-stable-stringify "^2.0.0"
+ graceful-fs "^4.1.15"
+ jest-haste-map "^24.8.0"
+ jest-regex-util "^24.3.0"
+ jest-util "^24.8.0"
+ micromatch "^3.1.10"
+ realpath-native "^1.1.0"
+ slash "^2.0.0"
+ source-map "^0.6.1"
+ write-file-atomic "2.4.1"
+
+"@jest/types@^24.8.0":
+ version "24.8.0"
+ resolved "https://registry.yarnpkg.com/@jest/types/-/types-24.8.0.tgz#f31e25948c58f0abd8c845ae26fcea1491dea7ad"
+ integrity sha512-g17UxVr2YfBtaMUxn9u/4+siG1ptg9IGYAYwvpwn61nBg779RXnjE/m7CxYcIzEt0AbHZZAHSEZNhkE2WxURVg==
+ dependencies:
+ "@types/istanbul-lib-coverage" "^2.0.0"
+ "@types/istanbul-reports" "^1.1.1"
+ "@types/yargs" "^12.0.9"
+
+"@jest/types@^25.5.0":
+ version "25.5.0"
+ resolved "https://registry.yarnpkg.com/@jest/types/-/types-25.5.0.tgz#4d6a4793f7b9599fc3680877b856a97dbccf2a9d"
+ integrity sha512-OXD0RgQ86Tu3MazKo8bnrkDRaDXXMGUqd+kTtLtK1Zb7CRzQcaSRPPPV37SvYTdevXEBVxe0HXylEjs8ibkmCw==
+ dependencies:
+ "@types/istanbul-lib-coverage" "^2.0.0"
+ "@types/istanbul-reports" "^1.1.1"
+ "@types/yargs" "^15.0.0"
+ chalk "^3.0.0"
+
+"@kwsites/file-exists@^1.1.1":
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/@kwsites/file-exists/-/file-exists-1.1.1.tgz#ad1efcac13e1987d8dbaf235ef3be5b0d96faa99"
+ integrity sha512-m9/5YGR18lIwxSFDwfE3oA7bWuq9kdau6ugN4H2rJeyhFQZcG9AgSHkQtSD15a8WvTgfz9aikZMrKPHvbpqFiw==
+ dependencies:
+ debug "^4.1.1"
+
+"@kwsites/promise-deferred@^1.1.1":
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/@kwsites/promise-deferred/-/promise-deferred-1.1.1.tgz#8ace5259254426ccef57f3175bc64ed7095ed919"
+ integrity sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw==
+
+"@mrmlnc/readdir-enhanced@^2.2.1":
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde"
+ integrity sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==
+ dependencies:
+ call-me-maybe "^1.0.1"
+ glob-to-regexp "^0.3.0"
+
+"@nodelib/fs.scandir@2.1.4":
+ version "2.1.4"
+ resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.4.tgz#d4b3549a5db5de2683e0c1071ab4f140904bbf69"
+ integrity sha512-33g3pMJk3bg5nXbL/+CY6I2eJDzZAni49PfJnL5fghPTggPvBd/pFNSgJsdAgWptuFu7qq/ERvOYFlhvsLTCKA==
+ dependencies:
+ "@nodelib/fs.stat" "2.0.4"
+ run-parallel "^1.1.9"
+
+"@nodelib/fs.stat@2.0.4", "@nodelib/fs.stat@^2.0.2":
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.4.tgz#a3f2dd61bab43b8db8fa108a121cfffe4c676655"
+ integrity sha512-IYlHJA0clt2+Vg7bccq+TzRdJvv19c2INqBSsoOLp1je7xjtr7J26+WXR72MCdvU9q1qTzIWDfhMf+DRvQJK4Q==
+
+"@nodelib/fs.stat@^1.1.2":
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b"
+ integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==
+
+"@nodelib/fs.walk@^1.2.3":
+ version "1.2.6"
+ resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.6.tgz#cce9396b30aa5afe9e3756608f5831adcb53d063"
+ integrity sha512-8Broas6vTtW4GIXTAHDoE32hnN2M5ykgCpWGbuXHQ15vEMqr23pB76e/GZcYsZCHALv50ktd24qhEyKr6wBtow==
+ dependencies:
+ "@nodelib/fs.scandir" "2.1.4"
+ fastq "^1.6.0"
+
+"@octokit/auth-token@^2.4.4":
+ version "2.4.5"
+ resolved "https://registry.yarnpkg.com/@octokit/auth-token/-/auth-token-2.4.5.tgz#568ccfb8cb46f36441fac094ce34f7a875b197f3"
+ integrity sha512-BpGYsPgJt05M7/L/5FoE1PiAbdxXFZkX/3kDYcsvd1v6UhlnE5e96dTDr0ezX/EFwciQxf3cNV0loipsURU+WA==
+ dependencies:
+ "@octokit/types" "^6.0.3"
+
+"@octokit/core@^3.2.5":
+ version "3.2.5"
+ resolved "https://registry.yarnpkg.com/@octokit/core/-/core-3.2.5.tgz#57becbd5fd789b0592b915840855f3a5f233d554"
+ integrity sha512-+DCtPykGnvXKWWQI0E1XD+CCeWSBhB6kwItXqfFmNBlIlhczuDPbg+P6BtLnVBaRJDAjv+1mrUJuRsFSjktopg==
+ dependencies:
+ "@octokit/auth-token" "^2.4.4"
+ "@octokit/graphql" "^4.5.8"
+ "@octokit/request" "^5.4.12"
+ "@octokit/types" "^6.0.3"
+ before-after-hook "^2.1.0"
+ universal-user-agent "^6.0.0"
+
+"@octokit/endpoint@^6.0.1":
+ version "6.0.11"
+ resolved "https://registry.yarnpkg.com/@octokit/endpoint/-/endpoint-6.0.11.tgz#082adc2aebca6dcefa1fb383f5efb3ed081949d1"
+ integrity sha512-fUIPpx+pZyoLW4GCs3yMnlj2LfoXTWDUVPTC4V3MUEKZm48W+XYpeWSZCv+vYF1ZABUm2CqnDVf1sFtIYrj7KQ==
+ dependencies:
+ "@octokit/types" "^6.0.3"
+ is-plain-object "^5.0.0"
+ universal-user-agent "^6.0.0"
+
+"@octokit/graphql@^4.5.8":
+ version "4.6.0"
+ resolved "https://registry.yarnpkg.com/@octokit/graphql/-/graphql-4.6.0.tgz#f9abca55f82183964a33439d5264674c701c3327"
+ integrity sha512-CJ6n7izLFXLvPZaWzCQDjU/RP+vHiZmWdOunaCS87v+2jxMsW9FB5ktfIxybRBxZjxuJGRnxk7xJecWTVxFUYQ==
+ dependencies:
+ "@octokit/request" "^5.3.0"
+ "@octokit/types" "^6.0.3"
+ universal-user-agent "^6.0.0"
+
+"@octokit/openapi-types@^5.2.1":
+ version "5.2.1"
+ resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-5.2.1.tgz#5e846f86104aef96ace20091d8afb6be27979d8a"
+ integrity sha512-Bf7MBvQ1nMpv15ANaQtRBsC7YnwQFPM0eUztp3luQs9L6sBEiQ6ArM1Wx5CG+N7tXETtd0oE0DMcU4wbLlCZIw==
+
+"@octokit/request-error@^2.0.0":
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/@octokit/request-error/-/request-error-2.0.5.tgz#72cc91edc870281ad583a42619256b380c600143"
+ integrity sha512-T/2wcCFyM7SkXzNoyVNWjyVlUwBvW3igM3Btr/eKYiPmucXTtkxt2RBsf6gn3LTzaLSLTQtNmvg+dGsOxQrjZg==
+ dependencies:
+ "@octokit/types" "^6.0.3"
+ deprecation "^2.0.0"
+ once "^1.4.0"
+
+"@octokit/request@^5.3.0", "@octokit/request@^5.4.12":
+ version "5.4.14"
+ resolved "https://registry.yarnpkg.com/@octokit/request/-/request-5.4.14.tgz#ec5f96f78333bb2af390afa5ff66f114b063bc96"
+ integrity sha512-VkmtacOIQp9daSnBmDI92xNIeLuSRDOIuplp/CJomkvzt7M18NXgG044Cx/LFKLgjKt9T2tZR6AtJayba9GTSA==
+ dependencies:
+ "@octokit/endpoint" "^6.0.1"
+ "@octokit/request-error" "^2.0.0"
+ "@octokit/types" "^6.7.1"
+ deprecation "^2.0.0"
+ is-plain-object "^5.0.0"
+ node-fetch "^2.6.1"
+ once "^1.4.0"
+ universal-user-agent "^6.0.0"
+
+"@octokit/types@^6.0.3", "@octokit/types@^6.7.1":
+ version "6.11.1"
+ resolved "https://registry.yarnpkg.com/@octokit/types/-/types-6.11.1.tgz#54ece128029526fa99bd71e757b9e35478403d95"
+ integrity sha512-UiSRTG2lrFbMUMwhKNR0uSV33Fzv4bNu1n5iFuuNOg80XCh0VYNhR4TQWgrkLhVxdDuej6s61aP3eQvVm6K6uA==
+ dependencies:
+ "@octokit/openapi-types" "^5.2.1"
+
+"@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2":
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/@protobufjs/aspromise/-/aspromise-1.1.2.tgz#9b8b0cc663d669a7d8f6f5d0893a14d348f30fbf"
+ integrity sha1-m4sMxmPWaafY9vXQiToU00jzD78=
+
+"@protobufjs/base64@^1.1.2":
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/@protobufjs/base64/-/base64-1.1.2.tgz#4c85730e59b9a1f1f349047dbf24296034bb2735"
+ integrity sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==
+
+"@protobufjs/codegen@^2.0.4":
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/@protobufjs/codegen/-/codegen-2.0.4.tgz#7ef37f0d010fb028ad1ad59722e506d9262815cb"
+ integrity sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==
+
+"@protobufjs/eventemitter@^1.1.0":
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz#355cbc98bafad5978f9ed095f397621f1d066b70"
+ integrity sha1-NVy8mLr61ZePntCV85diHx0Ga3A=
+
+"@protobufjs/fetch@^1.1.0":
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/@protobufjs/fetch/-/fetch-1.1.0.tgz#ba99fb598614af65700c1619ff06d454b0d84c45"
+ integrity sha1-upn7WYYUr2VwDBYZ/wbUVLDYTEU=
+ dependencies:
+ "@protobufjs/aspromise" "^1.1.1"
+ "@protobufjs/inquire" "^1.1.0"
+
+"@protobufjs/float@^1.0.2":
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/@protobufjs/float/-/float-1.0.2.tgz#5e9e1abdcb73fc0a7cb8b291df78c8cbd97b87d1"
+ integrity sha1-Xp4avctz/Ap8uLKR33jIy9l7h9E=
+
+"@protobufjs/inquire@^1.1.0":
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/@protobufjs/inquire/-/inquire-1.1.0.tgz#ff200e3e7cf2429e2dcafc1140828e8cc638f089"
+ integrity sha1-/yAOPnzyQp4tyvwRQIKOjMY48Ik=
+
+"@protobufjs/path@^1.1.2":
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/@protobufjs/path/-/path-1.1.2.tgz#6cc2b20c5c9ad6ad0dccfd21ca7673d8d7fbf68d"
+ integrity sha1-bMKyDFya1q0NzP0hynZz2Nf79o0=
+
+"@protobufjs/pool@^1.1.0":
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/@protobufjs/pool/-/pool-1.1.0.tgz#09fd15f2d6d3abfa9b65bc366506d6ad7846ff54"
+ integrity sha1-Cf0V8tbTq/qbZbw2ZQbWrXhG/1Q=
+
+"@protobufjs/utf8@^1.1.0":
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570"
+ integrity sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA=
+
+"@samverschueren/stream-to-observable@^0.3.0":
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.0.tgz#ecdf48d532c58ea477acfcab80348424f8d0662f"
+ integrity sha512-MI4Xx6LHs4Webyvi6EbspgyAb4D2Q2VtnCQ1blOJcoLS6mVa8lNN2rkIy1CVxfTUpoyIbCTkXES1rLXztFD1lg==
+ dependencies:
+ any-observable "^0.3.0"
+
+"@sinonjs/commons@^1", "@sinonjs/commons@^1.0.2", "@sinonjs/commons@^1.4.0":
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.4.0.tgz#7b3ec2d96af481d7a0321252e7b1c94724ec5a78"
+ integrity sha512-9jHK3YF/8HtJ9wCAbG+j8cD0i0+ATS9A7gXFqS36TblLPNy6rEEc+SB0imo91eCboGaBYGV/MT1/br/J+EE7Tw==
+ dependencies:
+ type-detect "4.0.8"
+
+"@sinonjs/formatio@^3.2.1":
+ version "3.2.1"
+ resolved "https://registry.yarnpkg.com/@sinonjs/formatio/-/formatio-3.2.1.tgz#52310f2f9bcbc67bdac18c94ad4901b95fde267e"
+ integrity sha512-tsHvOB24rvyvV2+zKMmPkZ7dXX6LSLKZ7aOtXY6Edklp0uRcgGpOsQTTGTcWViFyx4uhWc6GV8QdnALbIbIdeQ==
+ dependencies:
+ "@sinonjs/commons" "^1"
+ "@sinonjs/samsam" "^3.1.0"
+
+"@sinonjs/samsam@^3.1.0", "@sinonjs/samsam@^3.3.2":
+ version "3.3.2"
+ resolved "https://registry.yarnpkg.com/@sinonjs/samsam/-/samsam-3.3.2.tgz#63942e3d5eb0b79f6de3bef9abfad15fb4b6401b"
+ integrity sha512-ILO/rR8LfAb60Y1Yfp9vxfYAASK43NFC2mLzpvLUbCQY/Qu8YwReboseu8aheCEkyElZF2L2T9mHcR2bgdvZyA==
+ dependencies:
+ "@sinonjs/commons" "^1.0.2"
+ array-from "^2.1.1"
+ lodash "^4.17.11"
+
+"@sinonjs/text-encoding@^0.7.1":
+ version "0.7.1"
+ resolved "https://registry.yarnpkg.com/@sinonjs/text-encoding/-/text-encoding-0.7.1.tgz#8da5c6530915653f3a1f38fd5f101d8c3f8079c5"
+ integrity sha512-+iTbntw2IZPb/anVDbypzfQa+ay64MW0Zo8aJ8gZPWMMK6/OubMVb6lUPMagqjOPnmtauXnFCACVl3O7ogjeqQ==
+
+"@tootallnate/once@1":
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82"
+ integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==
+
+"@types/babel__core@^7.1.0":
+ version "7.1.2"
+ resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.2.tgz#608c74f55928033fce18b99b213c16be4b3d114f"
+ integrity sha512-cfCCrFmiGY/yq0NuKNxIQvZFy9kY/1immpSpTngOnyIbD4+eJOG5mxphhHDv3CHL9GltO4GcKr54kGBg3RNdbg==
+ dependencies:
+ "@babel/parser" "^7.1.0"
+ "@babel/types" "^7.0.0"
+ "@types/babel__generator" "*"
+ "@types/babel__template" "*"
+ "@types/babel__traverse" "*"
+
+"@types/babel__generator@*":
+ version "7.0.2"
+ resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.0.2.tgz#d2112a6b21fad600d7674274293c85dce0cb47fc"
+ integrity sha512-NHcOfab3Zw4q5sEE2COkpfXjoE7o+PmqD9DQW4koUT3roNxwziUdXGnRndMat/LJNUtePwn1TlP4do3uoe3KZQ==
+ dependencies:
+ "@babel/types" "^7.0.0"
+
+"@types/babel__template@*":
+ version "7.0.2"
+ resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.0.2.tgz#4ff63d6b52eddac1de7b975a5223ed32ecea9307"
+ integrity sha512-/K6zCpeW7Imzgab2bLkLEbz0+1JlFSrUMdw7KoIIu+IUdu51GWaBZpd3y1VXGVXzynvGa4DaIaxNZHiON3GXUg==
+ dependencies:
+ "@babel/parser" "^7.1.0"
+ "@babel/types" "^7.0.0"
+
+"@types/babel__traverse@*", "@types/babel__traverse@^7.0.6":
+ version "7.0.7"
+ resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.0.7.tgz#2496e9ff56196cc1429c72034e07eab6121b6f3f"
+ integrity sha512-CeBpmX1J8kWLcDEnI3Cl2Eo6RfbGvzUctA+CjZUhOKDFbLfcr7fc4usEqLNWetrlJd7RhAkyYe2czXop4fICpw==
+ dependencies:
+ "@babel/types" "^7.3.0"
+
+"@types/color-name@^1.1.1":
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0"
+ integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==
+
+"@types/empower@*":
+ version "1.2.30"
+ resolved "https://registry.yarnpkg.com/@types/empower/-/empower-1.2.30.tgz#c7cfc14b3a61e54c74c674c1fbc91ba2df0d1392"
+ integrity sha1-x8/BSzph5Ux0xnTB+8kbot8NE5I=
+
+"@types/eslint-visitor-keys@^1.0.0":
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#1ee30d79544ca84d68d4b3cdb0af4f205663dd2d"
+ integrity sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag==
+
+"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0":
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz#42995b446db9a48a11a07ec083499a860e9138ff"
+ integrity sha512-hRJD2ahnnpLgsj6KWMYSrmXkM3rm2Dl1qkx6IOFD5FnuNPXJIG5L0dhgKXCYTRMGzU4n0wImQ/xfmRc4POUFlg==
+
+"@types/istanbul-lib-report@*":
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-1.1.1.tgz#e5471e7fa33c61358dd38426189c037a58433b8c"
+ integrity sha512-3BUTyMzbZa2DtDI2BkERNC6jJw2Mr2Y0oGI7mRxYNBPxppbtEK1F66u3bKwU2g+wxwWI7PAoRpJnOY1grJqzHg==
+ dependencies:
+ "@types/istanbul-lib-coverage" "*"
+
+"@types/istanbul-reports@^1.1.1":
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-1.1.1.tgz#7a8cbf6a406f36c8add871625b278eaf0b0d255a"
+ integrity sha512-UpYjBi8xefVChsCoBpKShdxTllC9pwISirfoZsUa2AAdQg/Jd2KQGtSbw+ya7GPo7x/wAPlH6JBhKhAsXUEZNA==
+ dependencies:
+ "@types/istanbul-lib-coverage" "*"
+ "@types/istanbul-lib-report" "*"
+
+"@types/jest@^26.0.13":
+ version "26.0.13"
+ resolved "https://registry.yarnpkg.com/@types/jest/-/jest-26.0.13.tgz#5a7b9d5312f5dd521a38329c38ee9d3802a0b85e"
+ integrity sha512-sCzjKow4z9LILc6DhBvn5AkIfmQzDZkgtVVKmGwVrs5tuid38ws281D4l+7x1kP487+FlKDh5kfMZ8WSPAdmdA==
+ dependencies:
+ jest-diff "^25.2.1"
+ pretty-format "^25.2.1"
+
+"@types/json-schema@^7.0.3":
+ version "7.0.3"
+ resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.3.tgz#bdfd69d61e464dcc81b25159c270d75a73c1a636"
+ integrity sha512-Il2DtDVRGDcqjDtE+rF8iqg1CArehSK84HZJCT7AMITlyXRBpuPhqGLDQMowraqqu1coEaimg4ZOqggt6L6L+A==
+
+"@types/long@^4.0.0", "@types/long@^4.0.1":
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/@types/long/-/long-4.0.1.tgz#459c65fa1867dafe6a8f322c4c51695663cc55e9"
+ integrity sha512-5tXH6Bx/kNGd3MgffdmP4dy2Z+G4eaXw0SE81Tq3BNadtnMR5/ySMzX4SLEzHJzSmPNn4HIdpQsBvXMUykr58w==
+
+"@types/node@^10.10.0":
+ version "10.17.50"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-10.17.50.tgz#7a20902af591282aa9176baefc37d4372131c32d"
+ integrity sha512-vwX+/ija9xKc/z9VqMCdbf4WYcMTGsI0I/L/6shIF3qXURxZOhPQlPRHtjTpiNhAwn0paMJzlOQqw6mAGEQnTA==
+
+"@types/node@^12.12.47":
+ version "12.19.12"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-12.19.12.tgz#04793c2afa4ce833a9972e4c476432e30f9df47b"
+ integrity sha512-UwfL2uIU9arX/+/PRcIkT08/iBadGN2z6ExOROA2Dh5mAuWTBj6iJbQX4nekiV5H8cTrEG569LeX+HRco9Cbxw==
+
+"@types/node@^13.7.0":
+ version "13.13.39"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-13.13.39.tgz#237d071fb593d3aaa96f655a8eb2f91e0fb1480c"
+ integrity sha512-wct+WgRTTkBm2R3vbrFOqyZM5w0g+D8KnhstG9463CJBVC3UVZHMToge7iMBR1vDl/I+NWFHUeK9X+JcF0rWKw==
+
+"@types/node@^14.6.3":
+ version "14.6.3"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-14.6.3.tgz#cc4f979548ca4d8e7b90bc0180052ab99ee64224"
+ integrity sha512-pC/hkcREG6YfDfui1FBmj8e20jFU5Exjw4NYDm8kEdrW+mOh0T1Zve8DWKnS7ZIZvgncrctcNCXF4Q2I+loyww==
+
+"@types/power-assert-formatter@*":
+ version "1.4.29"
+ resolved "https://registry.yarnpkg.com/@types/power-assert-formatter/-/power-assert-formatter-1.4.29.tgz#d423428085cb2a16c6a1c8b96e4b0bed22936aa8"
+ integrity sha512-K3kBfCD4xnx+W5xLVbkyiKUKHvkZBL3R2fS3/wSoFJORcXdzN3ir13zTok1wNnH+hbv8Wc+YTWJDyqEdNsEXzg==
+
+"@types/power-assert@^1.5.3":
+ version "1.5.3"
+ resolved "https://registry.yarnpkg.com/@types/power-assert/-/power-assert-1.5.3.tgz#9e415f8d5703375c3d5d7bf912ca7ac334faf0c6"
+ integrity sha512-PzV9RX7RRUBYLxp52ipXo9dSvBnqVR09mcvGt3hXuzoJt0EUpPPv0X3btjCQqrhQ1xLbyt0dfPiGfRfrZB4G0A==
+ dependencies:
+ "@types/empower" "*"
+ "@types/power-assert-formatter" "*"
+
+"@types/q@^1.5.1":
+ version "1.5.2"
+ resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.2.tgz#690a1475b84f2a884fd07cd797c00f5f31356ea8"
+ integrity sha512-ce5d3q03Ex0sy4R14722Rmt6MT07Ua+k4FwDfdcToYJcMKNtRVQvJ6JCAPdAmAnbRb6CsX6aYb9m96NGod9uTw==
+
+"@types/sinon@^9.0.6":
+ version "9.0.6"
+ resolved "https://registry.yarnpkg.com/@types/sinon/-/sinon-9.0.6.tgz#fb4b6883fe0417e6a1ac5d9753bdcb7016dd4dd0"
+ integrity sha512-j3GK0fiHgn8fe7sqOpInMjm0A2Tary1NBZ8gbI/sZ0C0JxYeO+nh8H0/pW/0l94vNWcH1FnZOZu/cOvIfNZTrg==
+ dependencies:
+ "@types/sinonjs__fake-timers" "*"
+
+"@types/sinonjs__fake-timers@*":
+ version "6.0.2"
+ resolved "https://registry.yarnpkg.com/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-6.0.2.tgz#3a84cf5ec3249439015e14049bd3161419bf9eae"
+ integrity sha512-dIPoZ3g5gcx9zZEszaxLSVTvMReD3xxyyDnQUjA6IYDG9Ba2AV0otMPs+77sG9ojB4Qr2N2Vk5RnKeuA0X/0bg==
+
+"@types/stack-utils@^1.0.1":
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-1.0.1.tgz#0a851d3bd96498fa25c33ab7278ed3bd65f06c3e"
+ integrity sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw==
+
+"@types/yargs-parser@*":
+ version "15.0.0"
+ resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-15.0.0.tgz#cb3f9f741869e20cce330ffbeb9271590483882d"
+ integrity sha512-FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw==
+
+"@types/yargs@^12.0.2", "@types/yargs@^12.0.9":
+ version "12.0.12"
+ resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-12.0.12.tgz#45dd1d0638e8c8f153e87d296907659296873916"
+ integrity sha512-SOhuU4wNBxhhTHxYaiG5NY4HBhDIDnJF60GU+2LqHAdKKer86//e4yg69aENCtQ04n0ovz+tq2YPME5t5yp4pw==
+
+"@types/yargs@^15.0.0":
+ version "15.0.5"
+ resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-15.0.5.tgz#947e9a6561483bdee9adffc983e91a6902af8b79"
+ integrity sha512-Dk/IDOPtOgubt/IaevIUbTgV7doaKkoorvOyYM2CMwuDyP89bekI7H4xLIwunNYiK9jhCkmc6pUrJk3cj2AB9w==
+ dependencies:
+ "@types/yargs-parser" "*"
+
+"@typescript-eslint/eslint-plugin@^2.9.0":
+ version "2.9.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.9.0.tgz#fa810282c0e45f6c2310b9c0dfcd25bff97ab7e9"
+ integrity sha512-98rfOt3NYn5Gr9wekTB8TexxN6oM8ZRvYuphPs1Atfsy419SDLYCaE30aJkRiiTCwGEY98vOhFsEVm7Zs4toQQ==
+ dependencies:
+ "@typescript-eslint/experimental-utils" "2.9.0"
+ eslint-utils "^1.4.3"
+ functional-red-black-tree "^1.0.1"
+ regexpp "^3.0.0"
+ tsutils "^3.17.1"
+
+"@typescript-eslint/experimental-utils@2.9.0":
+ version "2.9.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-2.9.0.tgz#bbe99a8d9510240c055fc4b17230dd0192ba3c7f"
+ integrity sha512-0lOLFdpdJsCMqMSZT7l7W2ta0+GX8A3iefG3FovJjrX+QR8y6htFlFdU7aOVPL6pDvt6XcsOb8fxk5sq+girTw==
+ dependencies:
+ "@types/json-schema" "^7.0.3"
+ "@typescript-eslint/typescript-estree" "2.9.0"
+ eslint-scope "^5.0.0"
+
+"@typescript-eslint/parser@^2.9.0":
+ version "2.9.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-2.9.0.tgz#2e9cf438de119b143f642a3a406e1e27eb70b7cd"
+ integrity sha512-fJ+dNs3CCvEsJK2/Vg5c2ZjuQ860ySOAsodDPwBaVlrGvRN+iCNC8kUfLFL8cT49W4GSiLPa/bHiMjYXA7EhKQ==
+ dependencies:
+ "@types/eslint-visitor-keys" "^1.0.0"
+ "@typescript-eslint/experimental-utils" "2.9.0"
+ "@typescript-eslint/typescript-estree" "2.9.0"
+ eslint-visitor-keys "^1.1.0"
+
+"@typescript-eslint/typescript-estree@2.9.0":
+ version "2.9.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-2.9.0.tgz#09138daf8f47d0e494ba7db9e77394e928803017"
+ integrity sha512-v6btSPXEWCP594eZbM+JCXuFoXWXyF/z8kaSBSdCb83DF+Y7+xItW29SsKtSULgLemqJBT+LpT+0ZqdfH7QVmA==
+ dependencies:
+ debug "^4.1.1"
+ eslint-visitor-keys "^1.1.0"
+ glob "^7.1.6"
+ is-glob "^4.0.1"
+ lodash.unescape "4.0.1"
+ semver "^6.3.0"
+ tsutils "^3.17.1"
+
+"@webassemblyjs/ast@1.8.5":
+ version "1.8.5"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.8.5.tgz#51b1c5fe6576a34953bf4b253df9f0d490d9e359"
+ integrity sha512-aJMfngIZ65+t71C3y2nBBg5FFG0Okt9m0XEgWZ7Ywgn1oMAT8cNwx00Uv1cQyHtidq0Xn94R4TAywO+LCQ+ZAQ==
+ dependencies:
+ "@webassemblyjs/helper-module-context" "1.8.5"
+ "@webassemblyjs/helper-wasm-bytecode" "1.8.5"
+ "@webassemblyjs/wast-parser" "1.8.5"
+
+"@webassemblyjs/floating-point-hex-parser@1.8.5":
+ version "1.8.5"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.8.5.tgz#1ba926a2923613edce496fd5b02e8ce8a5f49721"
+ integrity sha512-9p+79WHru1oqBh9ewP9zW95E3XAo+90oth7S5Re3eQnECGq59ly1Ri5tsIipKGpiStHsUYmY3zMLqtk3gTcOtQ==
+
+"@webassemblyjs/helper-api-error@1.8.5":
+ version "1.8.5"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.8.5.tgz#c49dad22f645227c5edb610bdb9697f1aab721f7"
+ integrity sha512-Za/tnzsvnqdaSPOUXHyKJ2XI7PDX64kWtURyGiJJZKVEdFOsdKUCPTNEVFZq3zJ2R0G5wc2PZ5gvdTRFgm81zA==
+
+"@webassemblyjs/helper-buffer@1.8.5":
+ version "1.8.5"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.8.5.tgz#fea93e429863dd5e4338555f42292385a653f204"
+ integrity sha512-Ri2R8nOS0U6G49Q86goFIPNgjyl6+oE1abW1pS84BuhP1Qcr5JqMwRFT3Ah3ADDDYGEgGs1iyb1DGX+kAi/c/Q==
+
+"@webassemblyjs/helper-code-frame@1.8.5":
+ version "1.8.5"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.5.tgz#9a740ff48e3faa3022b1dff54423df9aa293c25e"
+ integrity sha512-VQAadSubZIhNpH46IR3yWO4kZZjMxN1opDrzePLdVKAZ+DFjkGD/rf4v1jap744uPVU6yjL/smZbRIIJTOUnKQ==
+ dependencies:
+ "@webassemblyjs/wast-printer" "1.8.5"
+
+"@webassemblyjs/helper-fsm@1.8.5":
+ version "1.8.5"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.8.5.tgz#ba0b7d3b3f7e4733da6059c9332275d860702452"
+ integrity sha512-kRuX/saORcg8se/ft6Q2UbRpZwP4y7YrWsLXPbbmtepKr22i8Z4O3V5QE9DbZK908dh5Xya4Un57SDIKwB9eow==
+
+"@webassemblyjs/helper-module-context@1.8.5":
+ version "1.8.5"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.5.tgz#def4b9927b0101dc8cbbd8d1edb5b7b9c82eb245"
+ integrity sha512-/O1B236mN7UNEU4t9X7Pj38i4VoU8CcMHyy3l2cV/kIF4U5KoHXDVqcDuOs1ltkac90IM4vZdHc52t1x8Yfs3g==
+ dependencies:
+ "@webassemblyjs/ast" "1.8.5"
+ mamacro "^0.0.3"
+
+"@webassemblyjs/helper-wasm-bytecode@1.8.5":
+ version "1.8.5"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.8.5.tgz#537a750eddf5c1e932f3744206551c91c1b93e61"
+ integrity sha512-Cu4YMYG3Ddl72CbmpjU/wbP6SACcOPVbHN1dI4VJNJVgFwaKf1ppeFJrwydOG3NDHxVGuCfPlLZNyEdIYlQ6QQ==
+
+"@webassemblyjs/helper-wasm-section@1.8.5":
+ version "1.8.5"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.8.5.tgz#74ca6a6bcbe19e50a3b6b462847e69503e6bfcbf"
+ integrity sha512-VV083zwR+VTrIWWtgIUpqfvVdK4ff38loRmrdDBgBT8ADXYsEZ5mPQ4Nde90N3UYatHdYoDIFb7oHzMncI02tA==
+ dependencies:
+ "@webassemblyjs/ast" "1.8.5"
+ "@webassemblyjs/helper-buffer" "1.8.5"
+ "@webassemblyjs/helper-wasm-bytecode" "1.8.5"
+ "@webassemblyjs/wasm-gen" "1.8.5"
+
+"@webassemblyjs/ieee754@1.8.5":
+ version "1.8.5"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.8.5.tgz#712329dbef240f36bf57bd2f7b8fb9bf4154421e"
+ integrity sha512-aaCvQYrvKbY/n6wKHb/ylAJr27GglahUO89CcGXMItrOBqRarUMxWLJgxm9PJNuKULwN5n1csT9bYoMeZOGF3g==
+ dependencies:
+ "@xtuc/ieee754" "^1.2.0"
+
+"@webassemblyjs/leb128@1.8.5":
+ version "1.8.5"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.8.5.tgz#044edeb34ea679f3e04cd4fd9824d5e35767ae10"
+ integrity sha512-plYUuUwleLIziknvlP8VpTgO4kqNaH57Y3JnNa6DLpu/sGcP6hbVdfdX5aHAV716pQBKrfuU26BJK29qY37J7A==
+ dependencies:
+ "@xtuc/long" "4.2.2"
+
+"@webassemblyjs/utf8@1.8.5":
+ version "1.8.5"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.8.5.tgz#a8bf3b5d8ffe986c7c1e373ccbdc2a0915f0cedc"
+ integrity sha512-U7zgftmQriw37tfD934UNInokz6yTmn29inT2cAetAsaU9YeVCveWEwhKL1Mg4yS7q//NGdzy79nlXh3bT8Kjw==
+
+"@webassemblyjs/wasm-edit@1.8.5":
+ version "1.8.5"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.8.5.tgz#962da12aa5acc1c131c81c4232991c82ce56e01a"
+ integrity sha512-A41EMy8MWw5yvqj7MQzkDjU29K7UJq1VrX2vWLzfpRHt3ISftOXqrtojn7nlPsZ9Ijhp5NwuODuycSvfAO/26Q==
+ dependencies:
+ "@webassemblyjs/ast" "1.8.5"
+ "@webassemblyjs/helper-buffer" "1.8.5"
+ "@webassemblyjs/helper-wasm-bytecode" "1.8.5"
+ "@webassemblyjs/helper-wasm-section" "1.8.5"
+ "@webassemblyjs/wasm-gen" "1.8.5"
+ "@webassemblyjs/wasm-opt" "1.8.5"
+ "@webassemblyjs/wasm-parser" "1.8.5"
+ "@webassemblyjs/wast-printer" "1.8.5"
+
+"@webassemblyjs/wasm-gen@1.8.5":
+ version "1.8.5"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.5.tgz#54840766c2c1002eb64ed1abe720aded714f98bc"
+ integrity sha512-BCZBT0LURC0CXDzj5FXSc2FPTsxwp3nWcqXQdOZE4U7h7i8FqtFK5Egia6f9raQLpEKT1VL7zr4r3+QX6zArWg==
+ dependencies:
+ "@webassemblyjs/ast" "1.8.5"
+ "@webassemblyjs/helper-wasm-bytecode" "1.8.5"
+ "@webassemblyjs/ieee754" "1.8.5"
+ "@webassemblyjs/leb128" "1.8.5"
+ "@webassemblyjs/utf8" "1.8.5"
+
+"@webassemblyjs/wasm-opt@1.8.5":
+ version "1.8.5"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.8.5.tgz#b24d9f6ba50394af1349f510afa8ffcb8a63d264"
+ integrity sha512-HKo2mO/Uh9A6ojzu7cjslGaHaUU14LdLbGEKqTR7PBKwT6LdPtLLh9fPY33rmr5wcOMrsWDbbdCHq4hQUdd37Q==
+ dependencies:
+ "@webassemblyjs/ast" "1.8.5"
+ "@webassemblyjs/helper-buffer" "1.8.5"
+ "@webassemblyjs/wasm-gen" "1.8.5"
+ "@webassemblyjs/wasm-parser" "1.8.5"
+
+"@webassemblyjs/wasm-parser@1.8.5":
+ version "1.8.5"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.8.5.tgz#21576f0ec88b91427357b8536383668ef7c66b8d"
+ integrity sha512-pi0SYE9T6tfcMkthwcgCpL0cM9nRYr6/6fjgDtL6q/ZqKHdMWvxitRi5JcZ7RI4SNJJYnYNaWy5UUrHQy998lw==
+ dependencies:
+ "@webassemblyjs/ast" "1.8.5"
+ "@webassemblyjs/helper-api-error" "1.8.5"
+ "@webassemblyjs/helper-wasm-bytecode" "1.8.5"
+ "@webassemblyjs/ieee754" "1.8.5"
+ "@webassemblyjs/leb128" "1.8.5"
+ "@webassemblyjs/utf8" "1.8.5"
+
+"@webassemblyjs/wast-parser@1.8.5":
+ version "1.8.5"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.8.5.tgz#e10eecd542d0e7bd394f6827c49f3df6d4eefb8c"
+ integrity sha512-daXC1FyKWHF1i11obK086QRlsMsY4+tIOKgBqI1lxAnkp9xe9YMcgOxm9kLe+ttjs5aWV2KKE1TWJCN57/Btsg==
+ dependencies:
+ "@webassemblyjs/ast" "1.8.5"
+ "@webassemblyjs/floating-point-hex-parser" "1.8.5"
+ "@webassemblyjs/helper-api-error" "1.8.5"
+ "@webassemblyjs/helper-code-frame" "1.8.5"
+ "@webassemblyjs/helper-fsm" "1.8.5"
+ "@xtuc/long" "4.2.2"
+
+"@webassemblyjs/wast-printer@1.8.5":
+ version "1.8.5"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.8.5.tgz#114bbc481fd10ca0e23b3560fa812748b0bae5bc"
+ integrity sha512-w0U0pD4EhlnvRyeJzBqaVSJAo9w/ce7/WPogeXLzGkO6hzhr4GnQIZ4W4uUt5b9ooAaXPtnXlj0gzsXEOUNYMg==
+ dependencies:
+ "@webassemblyjs/ast" "1.8.5"
+ "@webassemblyjs/wast-parser" "1.8.5"
+ "@xtuc/long" "4.2.2"
+
+"@xtuc/ieee754@^1.2.0":
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790"
+ integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==
+
+"@xtuc/long@4.2.2":
+ version "4.2.2"
+ resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d"
+ integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==
+
+abab@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.0.tgz#aba0ab4c5eee2d4c79d3487d85450fb2376ebb0f"
+ integrity sha512-sY5AXXVZv4Y1VACTtR11UJCPHHudgY5i26Qj5TypE6DKlIApbwb5uqhXcJ5UUGbvZNRh7EeIoW+LrJumBsKp7w==
+
+abbrev@1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8"
+ integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==
+
+abbrev@1.0.x:
+ version "1.0.9"
+ resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.0.9.tgz#91b4792588a7738c25f35dd6f63752a2f8776135"
+ integrity sha1-kbR5JYinc4wl813W9jdSovh3YTU=
+
+abort-controller@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392"
+ integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==
+ dependencies:
+ event-target-shim "^5.0.0"
+
+accepts@~1.3.4, accepts@~1.3.7:
+ version "1.3.7"
+ resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd"
+ integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==
+ dependencies:
+ mime-types "~2.1.24"
+ negotiator "0.6.2"
+
+acorn-es7-plugin@^1.0.12:
+ version "1.1.7"
+ resolved "https://registry.yarnpkg.com/acorn-es7-plugin/-/acorn-es7-plugin-1.1.7.tgz#f2ee1f3228a90eead1245f9ab1922eb2e71d336b"
+ integrity sha1-8u4fMiipDurRJF+asZIusucdM2s=
+
+acorn-globals@^4.1.0:
+ version "4.3.3"
+ resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-4.3.3.tgz#a86f75b69680b8780d30edd21eee4e0ea170c05e"
+ integrity sha512-vkR40VwS2SYO98AIeFvzWWh+xyc2qi9s7OoXSFEGIP/rOJKzjnhykaZJNnHdoq4BL2gGxI5EZOU16z896EYnOQ==
+ dependencies:
+ acorn "^6.0.1"
+ acorn-walk "^6.0.1"
+
+acorn-jsx@^5.0.0:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.0.1.tgz#32a064fd925429216a09b141102bfdd185fae40e"
+ integrity sha512-HJ7CfNHrfJLlNTzIEUTj43LNWGkqpRLxm3YjAlcD0ACydk9XynzYsCBHxut+iqt+1aBXkx9UP/w/ZqMr13XIzg==
+
+acorn-walk@^6.0.1, acorn-walk@^6.1.1:
+ version "6.2.0"
+ resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.2.0.tgz#123cb8f3b84c2171f1f7fb252615b1c78a6b1a8c"
+ integrity sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==
+
+acorn@^5.0.0, acorn@^5.5.3:
+ version "5.7.3"
+ resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.3.tgz#67aa231bf8812974b85235a96771eb6bd07ea279"
+ integrity sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==
+
+acorn@^6.0.1, acorn@^6.0.7, acorn@^6.2.1:
+ version "6.3.0"
+ resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.3.0.tgz#0087509119ffa4fc0a0041d1e93a417e68cb856e"
+ integrity sha512-/czfa8BwS88b9gWQVhc8eknunSA2DoJpJyTQkhheIf5E48u1N0R4q/YxxsAeqRrmK9TQ/uYfgLDfZo91UlANIA==
+
+adm-zip@~0.4.3:
+ version "0.4.13"
+ resolved "https://registry.yarnpkg.com/adm-zip/-/adm-zip-0.4.13.tgz#597e2f8cc3672151e1307d3e95cddbc75672314a"
+ integrity sha512-fERNJX8sOXfel6qCBCMPvZLzENBEhZTzKqg6vrOW5pvoEaQuJhRU4ndTAh6lHOxn1I6jnz2NHra56ZODM751uw==
+
+after@0.8.2:
+ version "0.8.2"
+ resolved "https://registry.yarnpkg.com/after/-/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f"
+ integrity sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=
+
+agent-base@6:
+ version "6.0.2"
+ resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77"
+ integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==
+ dependencies:
+ debug "4"
+
+agent-base@^4.3.0:
+ version "4.3.0"
+ resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.3.0.tgz#8165f01c436009bccad0b1d122f05ed770efc6ee"
+ integrity sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==
+ dependencies:
+ es6-promisify "^5.0.0"
+
+ajv-errors@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d"
+ integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==
+
+ajv-keywords@^3.1.0, ajv-keywords@^3.4.1:
+ version "3.4.1"
+ resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.4.1.tgz#ef916e271c64ac12171fd8384eaae6b2345854da"
+ integrity sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ==
+
+ajv@6.8.1, ajv@^5.0.0, ajv@^6.1.0, ajv@^6.10.2, ajv@^6.5.5, ajv@^6.9.1:
+ version "6.8.1"
+ resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.8.1.tgz#0890b93742985ebf8973cd365c5b23920ce3cb20"
+ integrity sha512-eqxCp82P+JfqL683wwsL73XmFs1eG6qjw+RD3YHx+Jll1r0jNd4dh8QG9NYAeNGA/hnZjeEDgtTskgJULbxpWQ==
+ dependencies:
+ fast-deep-equal "^2.0.1"
+ fast-json-stable-stringify "^2.0.0"
+ json-schema-traverse "^0.4.1"
+ uri-js "^4.2.2"
+
+alphanum-sort@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3"
+ integrity sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=
+
+amdefine@>=0.0.4:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5"
+ integrity sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=
+
+ansi-colors@^1.0.1:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-1.1.0.tgz#6374b4dd5d4718ff3ce27a671a3b1cad077132a9"
+ integrity sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==
+ dependencies:
+ ansi-wrap "^0.1.0"
+
+ansi-colors@^3.0.0:
+ version "3.2.4"
+ resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf"
+ integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==
+
+ansi-escape-sequences@^4.0.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/ansi-escape-sequences/-/ansi-escape-sequences-4.1.0.tgz#2483c8773f50dd9174dd9557e92b1718f1816097"
+ integrity sha512-dzW9kHxH011uBsidTXd14JXgzye/YLb2LzeKZ4bsgl/Knwx8AtbSFkkGxagdNOoh0DlqHCmfiEjWKBaqjOanVw==
+ dependencies:
+ array-back "^3.0.1"
+
+ansi-escapes@^3.0.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b"
+ integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==
+
+ansi-escapes@^4.2.1:
+ version "4.2.1"
+ resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.2.1.tgz#4dccdb846c3eee10f6d64dea66273eab90c37228"
+ integrity sha512-Cg3ymMAdN10wOk/VYfLV7KCQyv7EDirJ64500sU7n9UlmioEtDuU5Gd+hj73hXSU/ex7tHJSssmyftDdkMLO8Q==
+ dependencies:
+ type-fest "^0.5.2"
+
+ansi-gray@^0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/ansi-gray/-/ansi-gray-0.1.1.tgz#2962cf54ec9792c48510a3deb524436861ef7251"
+ integrity sha1-KWLPVOyXksSFEKPetSRDaGHvclE=
+ dependencies:
+ ansi-wrap "0.1.0"
+
+ansi-regex@^2.0.0:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df"
+ integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8=
+
+ansi-regex@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998"
+ integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=
+
+ansi-regex@^4.0.0, ansi-regex@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997"
+ integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==
+
+ansi-regex@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75"
+ integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==
+
+ansi-styles@^2.2.1:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe"
+ integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=
+
+ansi-styles@^3.2.0, ansi-styles@^3.2.1:
+ version "3.2.1"
+ resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
+ integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==
+ dependencies:
+ color-convert "^1.9.0"
+
+ansi-styles@^4.0.0, ansi-styles@^4.1.0:
+ version "4.2.1"
+ resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.1.tgz#90ae75c424d008d2624c5bf29ead3177ebfcf359"
+ integrity sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==
+ dependencies:
+ "@types/color-name" "^1.1.1"
+ color-convert "^2.0.1"
+
+ansi-wrap@0.1.0, ansi-wrap@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/ansi-wrap/-/ansi-wrap-0.1.0.tgz#a82250ddb0015e9a27ca82e82ea603bbfa45efaf"
+ integrity sha1-qCJQ3bABXponyoLoLqYDu/pF768=
+
+any-observable@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/any-observable/-/any-observable-0.3.0.tgz#af933475e5806a67d0d7df090dd5e8bef65d119b"
+ integrity sha512-/FQM1EDkTsf63Ub2C6O7GuYFDsSXUwsaZDurV0np41ocwq0jthUAYCmhBX9f+KwlaCgIuWyr/4WlUQUBfKfZog==
+
+any-promise@^1.0.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f"
+ integrity sha1-q8av7tzqUugJzcA3au0845Y10X8=
+
+anymatch@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb"
+ integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==
+ dependencies:
+ micromatch "^3.1.4"
+ normalize-path "^2.1.1"
+
+append-transform@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/append-transform/-/append-transform-1.0.0.tgz#046a52ae582a228bd72f58acfbe2967c678759ab"
+ integrity sha512-P009oYkeHyU742iSZJzZZywj4QRJdnTWffaKuJQLablCZ1uz6/cW4yaRgcDaoQ+uwOxxnt0gRUcwfsNP2ri0gw==
+ dependencies:
+ default-require-extensions "^2.0.0"
+
+aproba@^1.0.3, aproba@^1.1.1:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a"
+ integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==
+
+archiver-utils@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/archiver-utils/-/archiver-utils-2.1.0.tgz#e8a460e94b693c3e3da182a098ca6285ba9249e2"
+ integrity sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==
+ dependencies:
+ glob "^7.1.4"
+ graceful-fs "^4.2.0"
+ lazystream "^1.0.0"
+ lodash.defaults "^4.2.0"
+ lodash.difference "^4.5.0"
+ lodash.flatten "^4.4.0"
+ lodash.isplainobject "^4.0.6"
+ lodash.union "^4.6.0"
+ normalize-path "^3.0.0"
+ readable-stream "^2.0.0"
+
+archiver@^3.0.0:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/archiver/-/archiver-3.1.1.tgz#9db7819d4daf60aec10fe86b16cb9258ced66ea0"
+ integrity sha512-5Hxxcig7gw5Jod/8Gq0OneVgLYET+oNHcxgWItq4TbhOzRLKNAFUb9edAftiMKXvXfCB0vbGrJdZDNq0dWMsxg==
+ dependencies:
+ archiver-utils "^2.1.0"
+ async "^2.6.3"
+ buffer-crc32 "^0.2.1"
+ glob "^7.1.4"
+ readable-stream "^3.4.0"
+ tar-stream "^2.1.0"
+ zip-stream "^2.1.2"
+
+are-we-there-yet@~1.1.2:
+ version "1.1.5"
+ resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21"
+ integrity sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==
+ dependencies:
+ delegates "^1.0.0"
+ readable-stream "^2.0.6"
+
+arg@^4.1.0:
+ version "4.1.3"
+ resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089"
+ integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==
+
+argparse@^1.0.7:
+ version "1.0.10"
+ resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911"
+ integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==
+ dependencies:
+ sprintf-js "~1.0.2"
+
+arr-diff@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520"
+ integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=
+
+arr-flatten@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1"
+ integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==
+
+arr-union@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4"
+ integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=
+
+array-back@^1.0.2, array-back@^1.0.3:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/array-back/-/array-back-1.0.4.tgz#644ba7f095f7ffcf7c43b5f0dc39d3c1f03c063b"
+ integrity sha1-ZEun8JX3/898Q7Xw3DnTwfA8Bjs=
+ dependencies:
+ typical "^2.6.0"
+
+array-back@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/array-back/-/array-back-2.0.0.tgz#6877471d51ecc9c9bfa6136fb6c7d5fe69748022"
+ integrity sha512-eJv4pLLufP3g5kcZry0j6WXpIbzYw9GUB4mVJZno9wfwiBxbizTnHCw3VJb07cBihbFX48Y7oSrW9y+gt4glyw==
+ dependencies:
+ typical "^2.6.1"
+
+array-back@^3.0.1:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/array-back/-/array-back-3.1.0.tgz#b8859d7a508871c9a7b2cf42f99428f65e96bfb0"
+ integrity sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==
+
+array-back@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/array-back/-/array-back-4.0.1.tgz#9b80312935a52062e1a233a9c7abeb5481b30e90"
+ integrity sha512-Z/JnaVEXv+A9xabHzN43FiiiWEE7gPCRXMrVmRm00tWbjZRul1iHm7ECzlyNq1p4a4ATXz+G9FJ3GqGOkOV3fg==
+
+array-back@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/array-back/-/array-back-5.0.0.tgz#e196609edcec48376236d163958df76e659a0d36"
+ integrity sha512-kgVWwJReZWmVuWOQKEOohXKJX+nD02JAZ54D1RRWlv8L0NebauKAaFxACKzB74RTclt1+WNz5KHaLRDAPZbDEw==
+
+array-equal@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93"
+ integrity sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=
+
+array-filter@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/array-filter/-/array-filter-1.0.0.tgz#baf79e62e6ef4c2a4c0b831232daffec251f9d83"
+ integrity sha1-uveeYubvTCpMC4MSMtr/7CUfnYM=
+
+array-find-index@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1"
+ integrity sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=
+
+array-flatten@1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2"
+ integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=
+
+array-from@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/array-from/-/array-from-2.1.1.tgz#cfe9d8c26628b9dc5aecc62a9f5d8f1f352c1195"
+ integrity sha1-z+nYwmYoudxa7MYqn12PHzUsEZU=
+
+array-slice@^0.2.3:
+ version "0.2.3"
+ resolved "https://registry.yarnpkg.com/array-slice/-/array-slice-0.2.3.tgz#dd3cfb80ed7973a75117cdac69b0b99ec86186f5"
+ integrity sha1-3Tz7gO15c6dRF82sabC5nshhhvU=
+
+array-union@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39"
+ integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=
+ dependencies:
+ array-uniq "^1.0.1"
+
+array-union@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d"
+ integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==
+
+array-uniq@^1.0.1:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6"
+ integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=
+
+array-unique@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53"
+ integrity sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=
+
+array-unique@^0.3.2:
+ version "0.3.2"
+ resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428"
+ integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=
+
+arraybuffer.slice@~0.0.7:
+ version "0.0.7"
+ resolved "https://registry.yarnpkg.com/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz#3bbc4275dd584cc1b10809b89d4e8b63a69e7675"
+ integrity sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog==
+
+arrify@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d"
+ integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=
+
+arrify@^2.0.0, arrify@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/arrify/-/arrify-2.0.1.tgz#c9655e9331e0abcd588d2a7cad7e9956f66701fa"
+ integrity sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==
+
+asn1.js@^4.0.0:
+ version "4.10.1"
+ resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0"
+ integrity sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==
+ dependencies:
+ bn.js "^4.0.0"
+ inherits "^2.0.1"
+ minimalistic-assert "^1.0.0"
+
+asn1@~0.2.3:
+ version "0.2.4"
+ resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136"
+ integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==
+ dependencies:
+ safer-buffer "~2.1.0"
+
+assert-plus@1.0.0, assert-plus@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525"
+ integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=
+
+assert@^1.1.1:
+ version "1.5.0"
+ resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb"
+ integrity sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==
+ dependencies:
+ object-assign "^4.1.1"
+ util "0.10.3"
+
+assign-symbols@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367"
+ integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=
+
+astral-regex@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9"
+ integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==
+
+async-each@^1.0.1:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf"
+ integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==
+
+async-limiter@~1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd"
+ integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==
+
+async@1.x:
+ version "1.5.2"
+ resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a"
+ integrity sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=
+
+async@^2.0.0, async@^2.1.2, async@^2.6.2, async@^2.6.3:
+ version "2.6.3"
+ resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff"
+ integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==
+ dependencies:
+ lodash "^4.17.14"
+
+asynckit@^0.4.0:
+ version "0.4.0"
+ resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
+ integrity sha1-x57Zf380y48robyXkLzDZkdLS3k=
+
+atob@^2.1.1:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9"
+ integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==
+
+aws-sign2@~0.7.0:
+ version "0.7.0"
+ resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8"
+ integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=
+
+aws4@^1.8.0:
+ version "1.8.0"
+ resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f"
+ integrity sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==
+
+babel-code-frame@^6.26.0:
+ version "6.26.0"
+ resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b"
+ integrity sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=
+ dependencies:
+ chalk "^1.1.3"
+ esutils "^2.0.2"
+ js-tokens "^3.0.2"
+
+babel-eslint@^10.0.2:
+ version "10.0.2"
+ resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-10.0.2.tgz#182d5ac204579ff0881684b040560fdcc1558456"
+ integrity sha512-UdsurWPtgiPgpJ06ryUnuaSXC2s0WoSZnQmEpbAH65XZSdwowgN5MvyP7e88nW07FYXv72erVtpBkxyDVKhH1Q==
+ dependencies:
+ "@babel/code-frame" "^7.0.0"
+ "@babel/parser" "^7.0.0"
+ "@babel/traverse" "^7.0.0"
+ "@babel/types" "^7.0.0"
+ eslint-scope "3.7.1"
+ eslint-visitor-keys "^1.0.0"
+
+babel-generator@^6.18.0:
+ version "6.26.1"
+ resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.1.tgz#1844408d3b8f0d35a404ea7ac180f087a601bd90"
+ integrity sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==
+ dependencies:
+ babel-messages "^6.23.0"
+ babel-runtime "^6.26.0"
+ babel-types "^6.26.0"
+ detect-indent "^4.0.0"
+ jsesc "^1.3.0"
+ lodash "^4.17.4"
+ source-map "^0.5.7"
+ trim-right "^1.0.1"
+
+babel-jest@^24.8.0:
+ version "24.8.0"
+ resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-24.8.0.tgz#5c15ff2b28e20b0f45df43fe6b7f2aae93dba589"
+ integrity sha512-+5/kaZt4I9efoXzPlZASyK/lN9qdRKmmUav9smVc0ruPQD7IsfucQ87gpOE8mn2jbDuS6M/YOW6n3v9ZoIfgnw==
+ dependencies:
+ "@jest/transform" "^24.8.0"
+ "@jest/types" "^24.8.0"
+ "@types/babel__core" "^7.1.0"
+ babel-plugin-istanbul "^5.1.0"
+ babel-preset-jest "^24.6.0"
+ chalk "^2.4.2"
+ slash "^2.0.0"
+
+babel-loader@8.0.6:
+ version "8.0.6"
+ resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.0.6.tgz#e33bdb6f362b03f4bb141a0c21ab87c501b70dfb"
+ integrity sha512-4BmWKtBOBm13uoUwd08UwjZlaw3O9GWf456R9j+5YykFZ6LUIjIKLc0zEZf+hauxPOJs96C8k6FvYD09vWzhYw==
+ dependencies:
+ find-cache-dir "^2.0.0"
+ loader-utils "^1.0.2"
+ mkdirp "^0.5.1"
+ pify "^4.0.1"
+
+babel-messages@^6.23.0:
+ version "6.23.0"
+ resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e"
+ integrity sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=
+ dependencies:
+ babel-runtime "^6.22.0"
+
+babel-plugin-add-import-extension@^1.4.3:
+ version "1.4.3"
+ resolved "https://registry.yarnpkg.com/babel-plugin-add-import-extension/-/babel-plugin-add-import-extension-1.4.3.tgz#9a153095f3c8bb820abbf168bbc71aba837e4e4a"
+ integrity sha512-NiKs80ucIlktWtQ6VGovyVprpgaDxqlo3fT2e2vIyF6k3+02YMmQt+QrBDOq/YImkK/pIXb/SKaO+FxKsfvNlA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.10.4"
+
+babel-plugin-add-module-exports@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/babel-plugin-add-module-exports/-/babel-plugin-add-module-exports-1.0.2.tgz#96cd610d089af664f016467fc4567c099cce2d9c"
+ integrity sha512-4paN7RivvU3Rzju1vGSHWPjO8Y0rI6droWvSFKI6dvEQ4mvoV0zGojnlzVRfI6N8zISo6VERXt3coIuVmzuvNg==
+ optionalDependencies:
+ chokidar "^2.0.4"
+
+babel-plugin-dynamic-import-node@^2.3.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz#f00f507bdaa3c3e3ff6e7e5e98d90a7acab96f7f"
+ integrity sha512-o6qFkpeQEBxcqt0XYlWzAVxNCSCZdUgcR8IRlhD/8DylxjjO4foPcvTW0GGKa/cVt3rvxZ7o5ippJ+/0nvLhlQ==
+ dependencies:
+ object.assign "^4.1.0"
+
+babel-plugin-dynamic-import-node@^2.3.3:
+ version "2.3.3"
+ resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3"
+ integrity sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==
+ dependencies:
+ object.assign "^4.1.0"
+
+babel-plugin-empower-assert@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-empower-assert/-/babel-plugin-empower-assert-2.0.0.tgz#41087d602b5debea7a6b28654d5a458394c879d7"
+ integrity sha512-xAzOOTEYIp8BnbHNmU7xKj7mePlPP3/bvFqcjBTeJBDzl+pne4ZjNcpOnaV6WUYnux3fcOOgRW622CsWlU4SGg==
+
+babel-plugin-espower@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-espower/-/babel-plugin-espower-3.0.1.tgz#180db17126f88e754105b8b5216d21e520a6bd4e"
+ integrity sha512-Ms49U7VIAtQ/TtcqRbD6UBmJBUCSxiC3+zPc+eGqxKUIFO1lTshyEDRUjhoAbd2rWfwYf3cZ62oXozrd8W6J0A==
+ dependencies:
+ "@babel/generator" "^7.0.0"
+ "@babel/parser" "^7.0.0"
+ call-matcher "^1.0.0"
+ core-js "^2.0.0"
+ espower-location-detector "^1.0.0"
+ espurify "^1.6.0"
+ estraverse "^4.1.1"
+
+babel-plugin-istanbul@^5.1.0:
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-5.2.0.tgz#df4ade83d897a92df069c4d9a25cf2671293c854"
+ integrity sha512-5LphC0USA8t4i1zCtjbbNb6jJj/9+X6P37Qfirc/70EQ34xKlMW+a1RHGwxGI+SwWpNwZ27HqvzAobeqaXwiZw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+ find-up "^3.0.0"
+ istanbul-lib-instrument "^3.3.0"
+ test-exclude "^5.2.3"
+
+babel-plugin-jest-hoist@^24.6.0:
+ version "24.6.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.6.0.tgz#f7f7f7ad150ee96d7a5e8e2c5da8319579e78019"
+ integrity sha512-3pKNH6hMt9SbOv0F3WVmy5CWQ4uogS3k0GY5XLyQHJ9EGpAT9XWkFd2ZiXXtkwFHdAHa5j7w7kfxSP5lAIwu7w==
+ dependencies:
+ "@types/babel__traverse" "^7.0.6"
+
+babel-preset-jest@^24.6.0:
+ version "24.6.0"
+ resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-24.6.0.tgz#66f06136eefce87797539c0d63f1769cc3915984"
+ integrity sha512-pdZqLEdmy1ZK5kyRUfvBb2IfTPb2BUvIJczlPspS8fWmBQslNNDBqVfh7BW5leOVJMDZKzjD8XEyABTk6gQ5yw==
+ dependencies:
+ "@babel/plugin-syntax-object-rest-spread" "^7.0.0"
+ babel-plugin-jest-hoist "^24.6.0"
+
+babel-preset-power-assert@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/babel-preset-power-assert/-/babel-preset-power-assert-3.0.0.tgz#3ceba576d57eb3f1b2e5e1865277539d9dc6570d"
+ integrity sha512-StkhBJsKdLemlsujCWjuHjjd/h+u7L2bgb/9/YsgBj1FBnE0BUthyaY8Xdpiqthf3NUudhd8BJMZFjGtXVKE6A==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+ babel-plugin-empower-assert "^2.0.0"
+ babel-plugin-espower "^3.0.0"
+
+babel-runtime@^6.22.0, babel-runtime@^6.26.0:
+ version "6.26.0"
+ resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe"
+ integrity sha1-llxwWGaOgrVde/4E/yM3vItWR/4=
+ dependencies:
+ core-js "^2.4.0"
+ regenerator-runtime "^0.11.0"
+
+babel-template@^6.16.0:
+ version "6.26.0"
+ resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02"
+ integrity sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=
+ dependencies:
+ babel-runtime "^6.26.0"
+ babel-traverse "^6.26.0"
+ babel-types "^6.26.0"
+ babylon "^6.18.0"
+ lodash "^4.17.4"
+
+babel-traverse@^6.18.0, babel-traverse@^6.26.0:
+ version "6.26.0"
+ resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee"
+ integrity sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=
+ dependencies:
+ babel-code-frame "^6.26.0"
+ babel-messages "^6.23.0"
+ babel-runtime "^6.26.0"
+ babel-types "^6.26.0"
+ babylon "^6.18.0"
+ debug "^2.6.8"
+ globals "^9.18.0"
+ invariant "^2.2.2"
+ lodash "^4.17.4"
+
+babel-types@^6.18.0, babel-types@^6.26.0:
+ version "6.26.0"
+ resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497"
+ integrity sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=
+ dependencies:
+ babel-runtime "^6.26.0"
+ esutils "^2.0.2"
+ lodash "^4.17.4"
+ to-fast-properties "^1.0.3"
+
+babylon@^6.18.0:
+ version "6.18.0"
+ resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3"
+ integrity sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==
+
+backo2@1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/backo2/-/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947"
+ integrity sha1-MasayLEpNjRj41s+u2n038+6eUc=
+
+balanced-match@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
+ integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c=
+
+base64-arraybuffer@0.1.5:
+ version "0.1.5"
+ resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz#73926771923b5a19747ad666aa5cd4bf9c6e9ce8"
+ integrity sha1-c5JncZI7Whl0etZmqlzUv5xunOg=
+
+base64-js@^1.0.2:
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.1.tgz#58ece8cb75dd07e71ed08c736abc5fac4dbf8df1"
+ integrity sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==
+
+base64-js@^1.3.0:
+ version "1.5.1"
+ resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a"
+ integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==
+
+base64id@1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/base64id/-/base64id-1.0.0.tgz#47688cb99bb6804f0e06d3e763b1c32e57d8e6b6"
+ integrity sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY=
+
+base@^0.11.1:
+ version "0.11.2"
+ resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f"
+ integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==
+ dependencies:
+ cache-base "^1.0.1"
+ class-utils "^0.3.5"
+ component-emitter "^1.2.1"
+ define-property "^1.0.0"
+ isobject "^3.0.1"
+ mixin-deep "^1.2.0"
+ pascalcase "^0.1.1"
+
+bcrypt-pbkdf@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e"
+ integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=
+ dependencies:
+ tweetnacl "^0.14.3"
+
+before-after-hook@^2.1.0:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-2.1.1.tgz#99ae36992b5cfab4a83f6bee74ab27835f28f405"
+ integrity sha512-5ekuQOvO04MDj7kYZJaMab2S8SPjGJbotVNyv7QYFCOAwrGZs/YnoDNlh1U+m5hl7H2D/+n0taaAV/tfyd3KMA==
+
+better-assert@~1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/better-assert/-/better-assert-1.0.2.tgz#40866b9e1b9e0b55b481894311e68faffaebc522"
+ integrity sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=
+ dependencies:
+ callsite "1.0.0"
+
+bfj@^6.1.1:
+ version "6.1.2"
+ resolved "https://registry.yarnpkg.com/bfj/-/bfj-6.1.2.tgz#325c861a822bcb358a41c78a33b8e6e2086dde7f"
+ integrity sha512-BmBJa4Lip6BPRINSZ0BPEIfB1wUY/9rwbwvIHQA1KjX9om29B6id0wnWXq7m3bn5JrUVjeOTnVuhPT1FiHwPGw==
+ dependencies:
+ bluebird "^3.5.5"
+ check-types "^8.0.3"
+ hoopy "^0.1.4"
+ tryer "^1.0.1"
+
+big.js@^5.2.2:
+ version "5.2.2"
+ resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328"
+ integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==
+
+bignumber.js@^9.0.0:
+ version "9.0.1"
+ resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.0.1.tgz#8d7ba124c882bfd8e43260c67475518d0689e4e5"
+ integrity sha512-IdZR9mh6ahOBv/hYGiXyVuyCetmGJhtYkqLBpTStdhEGjegpPlUawydyaF3pbIOFynJTpllEs+NP+CS9jKFLjA==
+
+binary-extensions@^1.0.0:
+ version "1.13.1"
+ resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65"
+ integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==
+
+bl@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/bl/-/bl-3.0.0.tgz#3611ec00579fd18561754360b21e9f784500ff88"
+ integrity sha512-EUAyP5UHU5hxF8BPT0LKW8gjYLhq1DQIcneOX/pL/m2Alo+OYDQAJlHq+yseMP50Os2nHXOSic6Ss3vSQeyf4A==
+ dependencies:
+ readable-stream "^3.0.1"
+
+blob@0.0.5:
+ version "0.0.5"
+ resolved "https://registry.yarnpkg.com/blob/-/blob-0.0.5.tgz#d680eeef25f8cd91ad533f5b01eed48e64caf683"
+ integrity sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig==
+
+bluebird@^3.3.0, bluebird@^3.5.5:
+ version "3.5.5"
+ resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.5.tgz#a8d0afd73251effbbd5fe384a77d73003c17a71f"
+ integrity sha512-5am6HnnfN+urzt4yfg7IgTbotDjIT/u8AJpEt0sIU9FtXfVeezXAPKswrG+xKUCOYAINpSdgZVDU6QFh+cuH3w==
+
+bluebird@^3.7.2:
+ version "3.7.2"
+ resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f"
+ integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==
+
+bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0:
+ version "4.11.8"
+ resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f"
+ integrity sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==
+
+body-parser@1.19.0, body-parser@^1.16.1:
+ version "1.19.0"
+ resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a"
+ integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==
+ dependencies:
+ bytes "3.1.0"
+ content-type "~1.0.4"
+ debug "2.6.9"
+ depd "~1.1.2"
+ http-errors "1.7.2"
+ iconv-lite "0.4.24"
+ on-finished "~2.3.0"
+ qs "6.7.0"
+ raw-body "2.4.0"
+ type-is "~1.6.17"
+
+boolbase@^1.0.0, boolbase@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e"
+ integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24=
+
+brace-expansion@^1.1.7:
+ version "1.1.11"
+ resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
+ integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
+ dependencies:
+ balanced-match "^1.0.0"
+ concat-map "0.0.1"
+
+braces@^0.1.2:
+ version "0.1.5"
+ resolved "https://registry.yarnpkg.com/braces/-/braces-0.1.5.tgz#c085711085291d8b75fdd74eab0f8597280711e6"
+ integrity sha1-wIVxEIUpHYt1/ddOqw+FlygHEeY=
+ dependencies:
+ expand-range "^0.1.0"
+
+braces@^2.3.1, braces@^2.3.2:
+ version "2.3.2"
+ resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729"
+ integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==
+ dependencies:
+ arr-flatten "^1.1.0"
+ array-unique "^0.3.2"
+ extend-shallow "^2.0.1"
+ fill-range "^4.0.0"
+ isobject "^3.0.1"
+ repeat-element "^1.1.2"
+ snapdragon "^0.8.1"
+ snapdragon-node "^2.0.1"
+ split-string "^3.0.2"
+ to-regex "^3.0.1"
+
+braces@^3.0.1:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107"
+ integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==
+ dependencies:
+ fill-range "^7.0.1"
+
+brorand@^1.0.1:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f"
+ integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=
+
+browser-process-hrtime@^0.1.2:
+ version "0.1.3"
+ resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-0.1.3.tgz#616f00faef1df7ec1b5bf9cfe2bdc3170f26c7b4"
+ integrity sha512-bRFnI4NnjO6cnyLmOV/7PVoDEMJChlcfN0z4s1YMBY989/SvlfMI1lgCnkFUs53e9gQF+w7qu7XdllSTiSl8Aw==
+
+browser-resolve@^1.11.3:
+ version "1.11.3"
+ resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.3.tgz#9b7cbb3d0f510e4cb86bdbd796124d28b5890af6"
+ integrity sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ==
+ dependencies:
+ resolve "1.1.7"
+
+browser-stdout@1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.0.tgz#f351d32969d32fa5d7a5567154263d928ae3bd1f"
+ integrity sha1-81HTKWnTL6XXpVZxVCY9korjvR8=
+
+browser-stdout@1.3.1:
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60"
+ integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==
+
+browserify-aes@^1.0.0, browserify-aes@^1.0.4:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48"
+ integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==
+ dependencies:
+ buffer-xor "^1.0.3"
+ cipher-base "^1.0.0"
+ create-hash "^1.1.0"
+ evp_bytestokey "^1.0.3"
+ inherits "^2.0.1"
+ safe-buffer "^5.0.1"
+
+browserify-cipher@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0"
+ integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==
+ dependencies:
+ browserify-aes "^1.0.4"
+ browserify-des "^1.0.0"
+ evp_bytestokey "^1.0.0"
+
+browserify-des@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c"
+ integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==
+ dependencies:
+ cipher-base "^1.0.1"
+ des.js "^1.0.0"
+ inherits "^2.0.1"
+ safe-buffer "^5.1.2"
+
+browserify-rsa@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524"
+ integrity sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=
+ dependencies:
+ bn.js "^4.1.0"
+ randombytes "^2.0.1"
+
+browserify-sign@^4.0.0:
+ version "4.0.4"
+ resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.0.4.tgz#aa4eb68e5d7b658baa6bf6a57e630cbd7a93d298"
+ integrity sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=
+ dependencies:
+ bn.js "^4.1.1"
+ browserify-rsa "^4.0.0"
+ create-hash "^1.1.0"
+ create-hmac "^1.1.2"
+ elliptic "^6.0.0"
+ inherits "^2.0.1"
+ parse-asn1 "^5.0.0"
+
+browserify-zlib@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f"
+ integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==
+ dependencies:
+ pako "~1.0.5"
+
+browserslist@^4.0.0:
+ version "4.6.6"
+ resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.6.6.tgz#6e4bf467cde520bc9dbdf3747dafa03531cec453"
+ integrity sha512-D2Nk3W9JL9Fp/gIcWei8LrERCS+eXu9AM5cfXA8WEZ84lFks+ARnZ0q/R69m2SV3Wjma83QDDPxsNKXUwdIsyA==
+ dependencies:
+ caniuse-lite "^1.0.30000984"
+ electron-to-chromium "^1.3.191"
+ node-releases "^1.1.25"
+
+browserslist@^4.12.0, browserslist@^4.8.5:
+ version "4.14.0"
+ resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.14.0.tgz#2908951abfe4ec98737b72f34c3bcedc8d43b000"
+ integrity sha512-pUsXKAF2lVwhmtpeA3LJrZ76jXuusrNyhduuQs7CDFf9foT4Y38aQOserd2lMe5DSSrjf3fx34oHwryuvxAUgQ==
+ dependencies:
+ caniuse-lite "^1.0.30001111"
+ electron-to-chromium "^1.3.523"
+ escalade "^3.0.2"
+ node-releases "^1.1.60"
+
+browserslist@^4.14.5:
+ version "4.16.3"
+ resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.16.3.tgz#340aa46940d7db878748567c5dea24a48ddf3717"
+ integrity sha512-vIyhWmIkULaq04Gt93txdh+j02yX/JzlyhLYbV3YQCn/zvES3JnY7TifHHvvr1w5hTDluNKMkV05cs4vy8Q7sw==
+ dependencies:
+ caniuse-lite "^1.0.30001181"
+ colorette "^1.2.1"
+ electron-to-chromium "^1.3.649"
+ escalade "^3.1.1"
+ node-releases "^1.1.70"
+
+bser@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.0.tgz#65fc784bf7f87c009b973c12db6546902fa9c7b5"
+ integrity sha512-8zsjWrQkkBoLK6uxASk1nJ2SKv97ltiGDo6A3wA0/yRPz+CwmEyDo0hUrhIuukG2JHpAl3bvFIixw2/3Hi0DOg==
+ dependencies:
+ node-int64 "^0.4.0"
+
+buffer-alloc-unsafe@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0"
+ integrity sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==
+
+buffer-alloc@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/buffer-alloc/-/buffer-alloc-1.2.0.tgz#890dd90d923a873e08e10e5fd51a57e5b7cce0ec"
+ integrity sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==
+ dependencies:
+ buffer-alloc-unsafe "^1.1.0"
+ buffer-fill "^1.0.0"
+
+buffer-crc32@^0.2.1, buffer-crc32@^0.2.13:
+ version "0.2.13"
+ resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242"
+ integrity sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=
+
+buffer-equal-constant-time@1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz#f8e71132f7ffe6e01a5c9697a4c6f3e48d5cc819"
+ integrity sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=
+
+buffer-fill@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c"
+ integrity sha1-+PeLdniYiO858gXNY39o5wISKyw=
+
+buffer-from@^1.0.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef"
+ integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==
+
+buffer-xor@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9"
+ integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=
+
+buffer@^4.3.0:
+ version "4.9.1"
+ resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298"
+ integrity sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=
+ dependencies:
+ base64-js "^1.0.2"
+ ieee754 "^1.1.4"
+ isarray "^1.0.0"
+
+buffer@^5.1.0:
+ version "5.4.0"
+ resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.4.0.tgz#33294f5c1f26e08461e528b69fa06de3c45cbd8c"
+ integrity sha512-Xpgy0IwHK2N01ncykXTy6FpCWuM+CJSHoPVBLyNqyrWxsedpLvwsYUhf0ME3WRFNUhos0dMamz9cOS/xRDtU5g==
+ dependencies:
+ base64-js "^1.0.2"
+ ieee754 "^1.1.4"
+
+builtin-status-codes@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8"
+ integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=
+
+bytes@3.1.0, bytes@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6"
+ integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==
+
+cacache@^11.2.0:
+ version "11.3.3"
+ resolved "https://registry.yarnpkg.com/cacache/-/cacache-11.3.3.tgz#8bd29df8c6a718a6ebd2d010da4d7972ae3bbadc"
+ integrity sha512-p8WcneCytvzPxhDvYp31PD039vi77I12W+/KfR9S8AZbaiARFBCpsPJS+9uhWfeBfeAtW7o/4vt3MUqLkbY6nA==
+ dependencies:
+ bluebird "^3.5.5"
+ chownr "^1.1.1"
+ figgy-pudding "^3.5.1"
+ glob "^7.1.4"
+ graceful-fs "^4.1.15"
+ lru-cache "^5.1.1"
+ mississippi "^3.0.0"
+ mkdirp "^0.5.1"
+ move-concurrently "^1.0.1"
+ promise-inflight "^1.0.1"
+ rimraf "^2.6.3"
+ ssri "^6.0.1"
+ unique-filename "^1.1.1"
+ y18n "^4.0.0"
+
+cacache@^12.0.2:
+ version "12.0.2"
+ resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.2.tgz#8db03205e36089a3df6954c66ce92541441ac46c"
+ integrity sha512-ifKgxH2CKhJEg6tNdAwziu6Q33EvuG26tYcda6PT3WKisZcYDXsnEdnRv67Po3yCzFfaSoMjGZzJyD2c3DT1dg==
+ dependencies:
+ bluebird "^3.5.5"
+ chownr "^1.1.1"
+ figgy-pudding "^3.5.1"
+ glob "^7.1.4"
+ graceful-fs "^4.1.15"
+ infer-owner "^1.0.3"
+ lru-cache "^5.1.1"
+ mississippi "^3.0.0"
+ mkdirp "^0.5.1"
+ move-concurrently "^1.0.1"
+ promise-inflight "^1.0.1"
+ rimraf "^2.6.3"
+ ssri "^6.0.1"
+ unique-filename "^1.1.1"
+ y18n "^4.0.0"
+
+cache-base@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2"
+ integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==
+ dependencies:
+ collection-visit "^1.0.0"
+ component-emitter "^1.2.1"
+ get-value "^2.0.6"
+ has-value "^1.0.0"
+ isobject "^3.0.1"
+ set-value "^2.0.0"
+ to-object-path "^0.3.0"
+ union-value "^1.0.0"
+ unset-value "^1.0.0"
+
+cache-point@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/cache-point/-/cache-point-2.0.0.tgz#91e03c38da9cfba9d95ac6a34d24cfe6eff8920f"
+ integrity sha512-4gkeHlFpSKgm3vm2gJN5sPqfmijYRFYCQ6tv5cLw0xVmT6r1z1vd4FNnpuOREco3cBs1G709sZ72LdgddKvL5w==
+ dependencies:
+ array-back "^4.0.1"
+ fs-then-native "^2.0.0"
+ mkdirp2 "^1.0.4"
+
+call-matcher@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/call-matcher/-/call-matcher-1.1.0.tgz#23b2c1bc7a8394c8be28609d77ddbd5786680432"
+ integrity sha512-IoQLeNwwf9KTNbtSA7aEBb1yfDbdnzwjCetjkC8io5oGeOmK2CBNdg0xr+tadRYKO0p7uQyZzvon0kXlZbvGrw==
+ dependencies:
+ core-js "^2.0.0"
+ deep-equal "^1.0.0"
+ espurify "^1.6.0"
+ estraverse "^4.0.0"
+
+call-me-maybe@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b"
+ integrity sha1-JtII6onje1y95gJQoV8DHBak1ms=
+
+call-signature@0.0.2:
+ version "0.0.2"
+ resolved "https://registry.yarnpkg.com/call-signature/-/call-signature-0.0.2.tgz#a84abc825a55ef4cb2b028bd74e205a65b9a4996"
+ integrity sha1-qEq8glpV70yysCi9dOIFpluaSZY=
+
+caller-callsite@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134"
+ integrity sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=
+ dependencies:
+ callsites "^2.0.0"
+
+caller-path@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-2.0.0.tgz#468f83044e369ab2010fac5f06ceee15bb2cb1f4"
+ integrity sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=
+ dependencies:
+ caller-callsite "^2.0.0"
+
+callsite@1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/callsite/-/callsite-1.0.0.tgz#280398e5d664bd74038b6f0905153e6e8af1bc20"
+ integrity sha1-KAOY5dZkvXQDi28JBRU+borxvCA=
+
+callsites@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50"
+ integrity sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=
+
+callsites@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73"
+ integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==
+
+camelcase-keys@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7"
+ integrity sha1-MIvur/3ygRkFHvodkyITyRuPkuc=
+ dependencies:
+ camelcase "^2.0.0"
+ map-obj "^1.0.0"
+
+camelcase@^2.0.0:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f"
+ integrity sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=
+
+camelcase@^5.0.0, camelcase@^5.2.0:
+ version "5.3.1"
+ resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320"
+ integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==
+
+caniuse-api@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0"
+ integrity sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==
+ dependencies:
+ browserslist "^4.0.0"
+ caniuse-lite "^1.0.0"
+ lodash.memoize "^4.1.2"
+ lodash.uniq "^4.5.0"
+
+caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000984:
+ version "1.0.30000989"
+ resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000989.tgz#b9193e293ccf7e4426c5245134b8f2a56c0ac4b9"
+ integrity sha512-vrMcvSuMz16YY6GSVZ0dWDTJP8jqk3iFQ/Aq5iqblPwxSVVZI+zxDyTX0VPqtQsDnfdrBDcsmhgTEOh5R8Lbpw==
+
+caniuse-lite@^1.0.30001111:
+ version "1.0.30001122"
+ resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001122.tgz#2c8ff631330d986a07a7ba7125cce77a1373b475"
+ integrity sha512-pxjw28CThdrqfz06nJkpAc5SXM404TXB/h5f4UJX+rrXJKE/1bu/KAILc2AY+O6cQIFtRjV9qOR2vaEp9LDGUA==
+
+caniuse-lite@^1.0.30001181:
+ version "1.0.30001208"
+ resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001208.tgz#a999014a35cebd4f98c405930a057a0d75352eb9"
+ integrity sha512-OE5UE4+nBOro8Dyvv0lfx+SRtfVIOM9uhKqFmJeUbGriqhhStgp1A0OyBpgy3OUF8AhYCT+PVwPC1gMl2ZcQMA==
+
+capture-exit@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/capture-exit/-/capture-exit-2.0.0.tgz#fb953bfaebeb781f62898239dabb426d08a509a4"
+ integrity sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==
+ dependencies:
+ rsvp "^4.8.4"
+
+caseless@~0.12.0:
+ version "0.12.0"
+ resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc"
+ integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=
+
+catharsis@^0.8.11:
+ version "0.8.11"
+ resolved "https://registry.yarnpkg.com/catharsis/-/catharsis-0.8.11.tgz#d0eb3d2b82b7da7a3ce2efb1a7b00becc6643468"
+ integrity sha512-a+xUyMV7hD1BrDQA/3iPV7oc+6W26BgVJO05PGEoatMyIuPScQKsde6i3YorWX1qs+AZjnJ18NqdKoCtKiNh1g==
+ dependencies:
+ lodash "^4.17.14"
+
+chalk@2.4.2, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.3.1, chalk@^2.4.1, chalk@^2.4.2:
+ version "2.4.2"
+ resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
+ integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
+ dependencies:
+ ansi-styles "^3.2.1"
+ escape-string-regexp "^1.0.5"
+ supports-color "^5.3.0"
+
+chalk@^1.0.0, chalk@^1.1.3:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98"
+ integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=
+ dependencies:
+ ansi-styles "^2.2.1"
+ escape-string-regexp "^1.0.2"
+ has-ansi "^2.0.0"
+ strip-ansi "^3.0.0"
+ supports-color "^2.0.0"
+
+chalk@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4"
+ integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==
+ dependencies:
+ ansi-styles "^4.1.0"
+ supports-color "^7.1.0"
+
+chardet@^0.7.0:
+ version "0.7.0"
+ resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e"
+ integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==
+
+check-types@^8.0.3:
+ version "8.0.3"
+ resolved "https://registry.yarnpkg.com/check-types/-/check-types-8.0.3.tgz#3356cca19c889544f2d7a95ed49ce508a0ecf552"
+ integrity sha512-YpeKZngUmG65rLudJ4taU7VLkOCTMhNl/u4ctNC56LQS/zJTyNH0Lrtwm1tfTsbLlwvlfsA2d1c8vCf/Kh2KwQ==
+
+chokidar@^2.0.2, chokidar@^2.0.3, chokidar@^2.0.4:
+ version "2.1.6"
+ resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.6.tgz#b6cad653a929e244ce8a834244164d241fa954c5"
+ integrity sha512-V2jUo67OKkc6ySiRpJrjlpJKl9kDuG+Xb8VgsGzb+aEouhgS1D0weyPU4lEzdAcsCAvrih2J2BqyXqHWvVLw5g==
+ dependencies:
+ anymatch "^2.0.0"
+ async-each "^1.0.1"
+ braces "^2.3.2"
+ glob-parent "^3.1.0"
+ inherits "^2.0.3"
+ is-binary-path "^1.0.0"
+ is-glob "^4.0.0"
+ normalize-path "^3.0.0"
+ path-is-absolute "^1.0.0"
+ readdirp "^2.2.1"
+ upath "^1.1.1"
+ optionalDependencies:
+ fsevents "^1.2.7"
+
+chownr@^1.1.1:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.2.tgz#a18f1e0b269c8a6a5d3c86eb298beb14c3dd7bf6"
+ integrity sha512-GkfeAQh+QNy3wquu9oIZr6SS5x7wGdSgNQvD10X3r+AZr1Oys22HW8kAmDMvNg2+Dm0TeGaEuO8gFwdBXxwO8A==
+
+chrome-trace-event@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz#234090ee97c7d4ad1a2c4beae27505deffc608a4"
+ integrity sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==
+ dependencies:
+ tslib "^1.9.0"
+
+ci-info@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46"
+ integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==
+
+ci-job-number@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/ci-job-number/-/ci-job-number-0.3.0.tgz#34bdd114b0dece1960287bd40a57051041a2a800"
+ integrity sha1-NL3RFLDezhlgKHvUClcFEEGiqAA=
+
+cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de"
+ integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==
+ dependencies:
+ inherits "^2.0.1"
+ safe-buffer "^5.0.1"
+
+circular-json@^0.5.5:
+ version "0.5.9"
+ resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.5.9.tgz#932763ae88f4f7dead7a0d09c8a51a4743a53b1d"
+ integrity sha512-4ivwqHpIFJZBuhN3g/pEcdbnGUywkBblloGbkglyloVjjR3uT6tieI89MVOfbP2tHX5sgb01FuLgAOzebNlJNQ==
+
+class-utils@^0.3.5:
+ version "0.3.6"
+ resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463"
+ integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==
+ dependencies:
+ arr-union "^3.1.0"
+ define-property "^0.2.5"
+ isobject "^3.0.0"
+ static-extend "^0.1.1"
+
+cli-cursor@^2.0.0, cli-cursor@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5"
+ integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=
+ dependencies:
+ restore-cursor "^2.0.0"
+
+cli-cursor@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307"
+ integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==
+ dependencies:
+ restore-cursor "^3.1.0"
+
+cli-truncate@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-0.2.1.tgz#9f15cfbb0705005369216c626ac7d05ab90dd574"
+ integrity sha1-nxXPuwcFAFNpIWxiasfQWrkN1XQ=
+ dependencies:
+ slice-ansi "0.0.4"
+ string-width "^1.0.1"
+
+cli-width@^2.0.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639"
+ integrity sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=
+
+cliui@^4.0.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49"
+ integrity sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==
+ dependencies:
+ string-width "^2.1.1"
+ strip-ansi "^4.0.0"
+ wrap-ansi "^2.0.0"
+
+cliui@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5"
+ integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==
+ dependencies:
+ string-width "^3.1.0"
+ strip-ansi "^5.2.0"
+ wrap-ansi "^5.1.0"
+
+cloc@^2.2.0:
+ version "2.5.0"
+ resolved "https://registry.yarnpkg.com/cloc/-/cloc-2.5.0.tgz#5463371e2eee7735744211c9b9a3641bbdafcfa6"
+ integrity sha512-ZPJI2BZ0mvE8bV6IkxVa3RvDoclsW1SqYwmaGTBGBtvXpu6CD271W2ishYDBHCOubec0HgeVisVy1AybkLTWnw==
+
+clone-deep@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387"
+ integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==
+ dependencies:
+ is-plain-object "^2.0.4"
+ kind-of "^6.0.2"
+ shallow-clone "^3.0.0"
+
+co@^4.6.0:
+ version "4.6.0"
+ resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184"
+ integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=
+
+coa@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/coa/-/coa-2.0.2.tgz#43f6c21151b4ef2bf57187db0d73de229e3e7ec3"
+ integrity sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==
+ dependencies:
+ "@types/q" "^1.5.1"
+ chalk "^2.4.1"
+ q "^1.1.2"
+
+code-point-at@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77"
+ integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=
+
+collect-all@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/collect-all/-/collect-all-1.0.3.tgz#1abcc20448b58a1447487fcf34130e9512b0acf8"
+ integrity sha512-0y0rBgoX8IzIjBAUnO73SEtSb4Mhk3IoceWJq5zZSxb9mWORhWH8xLYo4EDSOE1jRBk1LhmfjqWFFt10h/+MEA==
+ dependencies:
+ stream-connect "^1.0.2"
+ stream-via "^1.0.4"
+
+collection-visit@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0"
+ integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=
+ dependencies:
+ map-visit "^1.0.0"
+ object-visit "^1.0.0"
+
+color-convert@^1.9.0, color-convert@^1.9.1:
+ version "1.9.3"
+ resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
+ integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==
+ dependencies:
+ color-name "1.1.3"
+
+color-convert@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3"
+ integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==
+ dependencies:
+ color-name "~1.1.4"
+
+color-name@1.1.3:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
+ integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=
+
+color-name@^1.0.0, color-name@~1.1.4:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
+ integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
+
+color-string@^1.5.2:
+ version "1.5.3"
+ resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.5.3.tgz#c9bbc5f01b58b5492f3d6857459cb6590ce204cc"
+ integrity sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw==
+ dependencies:
+ color-name "^1.0.0"
+ simple-swizzle "^0.2.2"
+
+color-support@^1.1.3:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2"
+ integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==
+
+color@^3.0.0:
+ version "3.1.2"
+ resolved "https://registry.yarnpkg.com/color/-/color-3.1.2.tgz#68148e7f85d41ad7649c5fa8c8106f098d229e10"
+ integrity sha512-vXTJhHebByxZn3lDvDJYw4lR5+uB3vuoHsuYA5AKuxRVn5wzzIfQKGLBmgdVRHKTJYeK5rvJcHnrd0Li49CFpg==
+ dependencies:
+ color-convert "^1.9.1"
+ color-string "^1.5.2"
+
+colorette@^1.2.1:
+ version "1.2.2"
+ resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.2.tgz#cbcc79d5e99caea2dbf10eb3a26fd8b3e6acfa94"
+ integrity sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==
+
+colors@^1.1.0:
+ version "1.3.3"
+ resolved "https://registry.yarnpkg.com/colors/-/colors-1.3.3.tgz#39e005d546afe01e01f9c4ca8fa50f686a01205d"
+ integrity sha512-mmGt/1pZqYRjMxB1axhTo16/snVZ5krrKkcmMeVKxzECMMXoCgnvTPp10QgHfcbQZw8Dq2jMNG6je4JlWU0gWg==
+
+combine-lists@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/combine-lists/-/combine-lists-1.0.1.tgz#458c07e09e0d900fc28b70a3fec2dacd1d2cb7f6"
+ integrity sha1-RYwH4J4NkA/Ci3Cj/sLazR0st/Y=
+ dependencies:
+ lodash "^4.5.0"
+
+combined-stream@^1.0.6, combined-stream@~1.0.6:
+ version "1.0.8"
+ resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f"
+ integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==
+ dependencies:
+ delayed-stream "~1.0.0"
+
+command-line-args@^5.0.0:
+ version "5.1.1"
+ resolved "https://registry.yarnpkg.com/command-line-args/-/command-line-args-5.1.1.tgz#88e793e5bb3ceb30754a86863f0401ac92fd369a"
+ integrity sha512-hL/eG8lrll1Qy1ezvkant+trihbGnaKaeEjj6Scyr3DN+RC7iQ5Rz84IeLERfAWDGo0HBSNAakczwgCilDXnWg==
+ dependencies:
+ array-back "^3.0.1"
+ find-replace "^3.0.0"
+ lodash.camelcase "^4.3.0"
+ typical "^4.0.0"
+
+command-line-tool@^0.8.0:
+ version "0.8.0"
+ resolved "https://registry.yarnpkg.com/command-line-tool/-/command-line-tool-0.8.0.tgz#b00290ef1dfc11cc731dd1f43a92cfa5f21e715b"
+ integrity sha512-Xw18HVx/QzQV3Sc5k1vy3kgtOeGmsKIqwtFFoyjI4bbcpSgnw2CWVULvtakyw4s6fhyAdI6soQQhXc2OzJy62g==
+ dependencies:
+ ansi-escape-sequences "^4.0.0"
+ array-back "^2.0.0"
+ command-line-args "^5.0.0"
+ command-line-usage "^4.1.0"
+ typical "^2.6.1"
+
+command-line-usage@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/command-line-usage/-/command-line-usage-4.1.0.tgz#a6b3b2e2703b4dcf8bd46ae19e118a9a52972882"
+ integrity sha512-MxS8Ad995KpdAC0Jopo/ovGIroV/m0KHwzKfXxKag6FHOkGsH8/lv5yjgablcRxCJJC0oJeUMuO/gmaq+Wq46g==
+ dependencies:
+ ansi-escape-sequences "^4.0.0"
+ array-back "^2.0.0"
+ table-layout "^0.4.2"
+ typical "^2.6.1"
+
+commander@2.15.1:
+ version "2.15.1"
+ resolved "https://registry.yarnpkg.com/commander/-/commander-2.15.1.tgz#df46e867d0fc2aec66a34662b406a9ccafff5b0f"
+ integrity sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==
+
+commander@2.9.0:
+ version "2.9.0"
+ resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4"
+ integrity sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=
+ dependencies:
+ graceful-readlink ">= 1.0.0"
+
+commander@^2.14.1, commander@^2.18.0, commander@^2.19.0, commander@^2.20.0, commander@^2.8.1, commander@^2.9.0, commander@~2.20.0:
+ version "2.20.0"
+ resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422"
+ integrity sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==
+
+common-sequence@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/common-sequence/-/common-sequence-2.0.0.tgz#a4f01aaf5aebd0ac1ce43653e8c8fe6f0ef3a987"
+ integrity sha512-f0QqPLpRTgMQn/pQIynf+SdE73Lw5Q1jn4hjirHLgH/NJ71TiHjXusV16BmOyuK5rRQ1W2f++II+TFZbQOh4hA==
+
+commondir@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b"
+ integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=
+
+compare-versions@^3.4.0:
+ version "3.5.1"
+ resolved "https://registry.yarnpkg.com/compare-versions/-/compare-versions-3.5.1.tgz#26e1f5cf0d48a77eced5046b9f67b6b61075a393"
+ integrity sha512-9fGPIB7C6AyM18CJJBHt5EnCZDG3oiTJYy0NjfIAGjKpzv0tkxWko7TNQHF5ymqm7IH03tqmeuBxtvD+Izh6mg==
+
+component-bind@1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/component-bind/-/component-bind-1.0.0.tgz#00c608ab7dcd93897c0009651b1d3a8e1e73bbd1"
+ integrity sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=
+
+component-emitter@1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6"
+ integrity sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=
+
+component-emitter@^1.2.1:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0"
+ integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==
+
+component-inherit@0.0.3:
+ version "0.0.3"
+ resolved "https://registry.yarnpkg.com/component-inherit/-/component-inherit-0.0.3.tgz#645fc4adf58b72b649d5cae65135619db26ff143"
+ integrity sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=
+
+compress-commons@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/compress-commons/-/compress-commons-2.1.1.tgz#9410d9a534cf8435e3fbbb7c6ce48de2dc2f0610"
+ integrity sha512-eVw6n7CnEMFzc3duyFVrQEuY1BlHR3rYsSztyG32ibGMW722i3C6IizEGMFmfMU+A+fALvBIwxN3czffTcdA+Q==
+ dependencies:
+ buffer-crc32 "^0.2.13"
+ crc32-stream "^3.0.1"
+ normalize-path "^3.0.0"
+ readable-stream "^2.3.6"
+
+compressible@^2.0.12:
+ version "2.0.18"
+ resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba"
+ integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==
+ dependencies:
+ mime-db ">= 1.43.0 < 2"
+
+compression-webpack-plugin@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/compression-webpack-plugin/-/compression-webpack-plugin-2.0.0.tgz#46476350c1eb27f783dccc79ac2f709baa2cffbc"
+ integrity sha512-bDgd7oTUZC8EkRx8j0sjyCfeiO+e5sFcfgaFcjVhfQf5lLya7oY2BczxcJ7IUuVjz5m6fy8IECFmVFew3xLk8Q==
+ dependencies:
+ cacache "^11.2.0"
+ find-cache-dir "^2.0.0"
+ neo-async "^2.5.0"
+ schema-utils "^1.0.0"
+ serialize-javascript "^1.4.0"
+ webpack-sources "^1.0.1"
+
+concat-map@0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
+ integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
+
+concat-stream@1.6.2, concat-stream@^1.5.0:
+ version "1.6.2"
+ resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34"
+ integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==
+ dependencies:
+ buffer-from "^1.0.0"
+ inherits "^2.0.3"
+ readable-stream "^2.2.2"
+ typedarray "^0.0.6"
+
+concat-stream@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-2.0.0.tgz#414cf5af790a48c60ab9be4527d56d5e41133cb1"
+ integrity sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==
+ dependencies:
+ buffer-from "^1.0.0"
+ inherits "^2.0.3"
+ readable-stream "^3.0.2"
+ typedarray "^0.0.6"
+
+config-chain@^1.1.12:
+ version "1.1.12"
+ resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.12.tgz#0fde8d091200eb5e808caf25fe618c02f48e4efa"
+ integrity sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA==
+ dependencies:
+ ini "^1.3.4"
+ proto-list "~1.2.1"
+
+config-master@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/config-master/-/config-master-3.1.0.tgz#667663590505a283bf26a484d68489d74c5485da"
+ integrity sha1-ZnZjWQUFooO/JqSE1oSJ10xUhdo=
+ dependencies:
+ walk-back "^2.0.1"
+
+configstore@^5.0.0:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/configstore/-/configstore-5.0.1.tgz#d365021b5df4b98cdd187d6a3b0e3f6a7cc5ed96"
+ integrity sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==
+ dependencies:
+ dot-prop "^5.2.0"
+ graceful-fs "^4.1.2"
+ make-dir "^3.0.0"
+ unique-string "^2.0.0"
+ write-file-atomic "^3.0.0"
+ xdg-basedir "^4.0.0"
+
+connect@^3.6.0:
+ version "3.7.0"
+ resolved "https://registry.yarnpkg.com/connect/-/connect-3.7.0.tgz#5d49348910caa5e07a01800b030d0c35f20484f8"
+ integrity sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==
+ dependencies:
+ debug "2.6.9"
+ finalhandler "1.1.2"
+ parseurl "~1.3.3"
+ utils-merge "1.0.1"
+
+console-browserify@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10"
+ integrity sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=
+ dependencies:
+ date-now "^0.1.4"
+
+console-control-strings@^1.0.0, console-control-strings@~1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e"
+ integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=
+
+constants-browserify@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75"
+ integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=
+
+content-disposition@0.5.3:
+ version "0.5.3"
+ resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd"
+ integrity sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==
+ dependencies:
+ safe-buffer "5.1.2"
+
+content-type@~1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b"
+ integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==
+
+convert-source-map@^1.1.0, convert-source-map@^1.4.0, convert-source-map@^1.5.0:
+ version "1.6.0"
+ resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.6.0.tgz#51b537a8c43e0f04dec1993bffcdd504e758ac20"
+ integrity sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==
+ dependencies:
+ safe-buffer "~5.1.1"
+
+cookie-signature@1.0.6:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c"
+ integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw=
+
+cookie@0.3.1:
+ version "0.3.1"
+ resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb"
+ integrity sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=
+
+cookie@0.4.0:
+ version "0.4.0"
+ resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba"
+ integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==
+
+copy-concurrently@^1.0.0:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0"
+ integrity sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==
+ dependencies:
+ aproba "^1.1.1"
+ fs-write-stream-atomic "^1.0.8"
+ iferr "^0.1.5"
+ mkdirp "^0.5.1"
+ rimraf "^2.5.4"
+ run-queue "^1.0.0"
+
+copy-descriptor@^0.1.0:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d"
+ integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=
+
+core-js-compat@^3.6.2:
+ version "3.6.5"
+ resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.6.5.tgz#2a51d9a4e25dfd6e690251aa81f99e3c05481f1c"
+ integrity sha512-7ItTKOhOZbznhXAQ2g/slGg1PJV5zDO/WdkTwi7UEOJmkvsE32PWvx6mKtDjiMpjnR2CNf6BAD6sSxIlv7ptng==
+ dependencies:
+ browserslist "^4.8.5"
+ semver "7.0.0"
+
+core-js@3.6.5:
+ version "3.6.5"
+ resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.6.5.tgz#7395dc273af37fb2e50e9bd3d9fe841285231d1a"
+ integrity sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA==
+
+core-js@^2.0.0, core-js@^2.2.0, core-js@^2.4.0, core-js@^2.6.5:
+ version "2.6.9"
+ resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.9.tgz#6b4b214620c834152e179323727fc19741b084f2"
+ integrity sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A==
+
+core-js@^3.0.0:
+ version "3.2.1"
+ resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.2.1.tgz#cd41f38534da6cc59f7db050fe67307de9868b09"
+ integrity sha512-Qa5XSVefSVPRxy2XfUC13WbvqkxhkwB3ve+pgCQveNgYzbM/UxZeu1dcOX/xr4UmfUd+muuvsaxilQzCyUurMw==
+
+core-util-is@1.0.2, core-util-is@~1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
+ integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=
+
+cosmiconfig@^5.0.0, cosmiconfig@^5.0.2, cosmiconfig@^5.0.7:
+ version "5.2.1"
+ resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a"
+ integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==
+ dependencies:
+ import-fresh "^2.0.0"
+ is-directory "^0.3.1"
+ js-yaml "^3.13.1"
+ parse-json "^4.0.0"
+
+coveralls@^3.0.6:
+ version "3.0.6"
+ resolved "https://registry.yarnpkg.com/coveralls/-/coveralls-3.0.6.tgz#5c63b2759b6781118e7439bd870ba5e9ee428b25"
+ integrity sha512-Pgh4v3gCI4T/9VijVrm8Ym5v0OgjvGLKj3zTUwkvsCiwqae/p6VLzpsFNjQS2i6ewV7ef+DjFJ5TSKxYt/mCrA==
+ dependencies:
+ growl "~> 1.10.0"
+ js-yaml "^3.13.1"
+ lcov-parse "^0.0.10"
+ log-driver "^1.2.7"
+ minimist "^1.2.0"
+ request "^2.86.0"
+
+crc32-stream@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/crc32-stream/-/crc32-stream-3.0.1.tgz#cae6eeed003b0e44d739d279de5ae63b171b4e85"
+ integrity sha512-mctvpXlbzsvK+6z8kJwSJ5crm7yBwrQMTybJzMw1O4lLGJqjlDCXY2Zw7KheiA6XBEcBmfLx1D88mjRGVJtY9w==
+ dependencies:
+ crc "^3.4.4"
+ readable-stream "^3.4.0"
+
+crc@^3.4.4:
+ version "3.8.0"
+ resolved "https://registry.yarnpkg.com/crc/-/crc-3.8.0.tgz#ad60269c2c856f8c299e2c4cc0de4556914056c6"
+ integrity sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ==
+ dependencies:
+ buffer "^5.1.0"
+
+create-ecdh@^4.0.0:
+ version "4.0.3"
+ resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.3.tgz#c9111b6f33045c4697f144787f9254cdc77c45ff"
+ integrity sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==
+ dependencies:
+ bn.js "^4.1.0"
+ elliptic "^6.0.0"
+
+create-hash@^1.1.0, create-hash@^1.1.2:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196"
+ integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==
+ dependencies:
+ cipher-base "^1.0.1"
+ inherits "^2.0.1"
+ md5.js "^1.3.4"
+ ripemd160 "^2.0.1"
+ sha.js "^2.4.0"
+
+create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4:
+ version "1.1.7"
+ resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff"
+ integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==
+ dependencies:
+ cipher-base "^1.0.3"
+ create-hash "^1.1.0"
+ inherits "^2.0.1"
+ ripemd160 "^2.0.0"
+ safe-buffer "^5.0.1"
+ sha.js "^2.4.8"
+
+create-require@^1.1.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333"
+ integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==
+
+cross-spawn@6.0.5, cross-spawn@^6.0.0, cross-spawn@^6.0.5:
+ version "6.0.5"
+ resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4"
+ integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==
+ dependencies:
+ nice-try "^1.0.4"
+ path-key "^2.0.1"
+ semver "^5.5.0"
+ shebang-command "^1.2.0"
+ which "^1.2.9"
+
+cross-spawn@^5.0.1:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449"
+ integrity sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=
+ dependencies:
+ lru-cache "^4.0.1"
+ shebang-command "^1.2.0"
+ which "^1.2.9"
+
+crypto-browserify@^3.11.0:
+ version "3.12.0"
+ resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec"
+ integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==
+ dependencies:
+ browserify-cipher "^1.0.0"
+ browserify-sign "^4.0.0"
+ create-ecdh "^4.0.0"
+ create-hash "^1.1.0"
+ create-hmac "^1.1.0"
+ diffie-hellman "^5.0.0"
+ inherits "^2.0.1"
+ pbkdf2 "^3.0.3"
+ public-encrypt "^4.0.0"
+ randombytes "^2.0.0"
+ randomfill "^1.0.3"
+
+crypto-random-string@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5"
+ integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==
+
+css-color-names@0.0.4, css-color-names@^0.0.4:
+ version "0.0.4"
+ resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0"
+ integrity sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=
+
+css-declaration-sorter@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz#c198940f63a76d7e36c1e71018b001721054cb22"
+ integrity sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA==
+ dependencies:
+ postcss "^7.0.1"
+ timsort "^0.3.0"
+
+css-loader@^2.1.0:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-2.1.1.tgz#d8254f72e412bb2238bb44dd674ffbef497333ea"
+ integrity sha512-OcKJU/lt232vl1P9EEDamhoO9iKY3tIjY5GU+XDLblAykTdgs6Ux9P1hTHve8nFKy5KPpOXOsVI/hIwi3841+w==
+ dependencies:
+ camelcase "^5.2.0"
+ icss-utils "^4.1.0"
+ loader-utils "^1.2.3"
+ normalize-path "^3.0.0"
+ postcss "^7.0.14"
+ postcss-modules-extract-imports "^2.0.0"
+ postcss-modules-local-by-default "^2.0.6"
+ postcss-modules-scope "^2.1.0"
+ postcss-modules-values "^2.0.0"
+ postcss-value-parser "^3.3.0"
+ schema-utils "^1.0.0"
+
+css-select-base-adapter@^0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz#3b2ff4972cc362ab88561507a95408a1432135d7"
+ integrity sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==
+
+css-select@^2.0.0:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/css-select/-/css-select-2.0.2.tgz#ab4386cec9e1f668855564b17c3733b43b2a5ede"
+ integrity sha512-dSpYaDVoWaELjvZ3mS6IKZM/y2PMPa/XYoEfYNZePL4U/XgyxZNroHEHReDx/d+VgXh9VbCTtFqLkFbmeqeaRQ==
+ dependencies:
+ boolbase "^1.0.0"
+ css-what "^2.1.2"
+ domutils "^1.7.0"
+ nth-check "^1.0.2"
+
+css-tree@1.0.0-alpha.29:
+ version "1.0.0-alpha.29"
+ resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.29.tgz#3fa9d4ef3142cbd1c301e7664c1f352bd82f5a39"
+ integrity sha512-sRNb1XydwkW9IOci6iB2xmy8IGCj6r/fr+JWitvJ2JxQRPzN3T4AGGVWCMlVmVwM1gtgALJRmGIlWv5ppnGGkg==
+ dependencies:
+ mdn-data "~1.1.0"
+ source-map "^0.5.3"
+
+css-tree@1.0.0-alpha.33:
+ version "1.0.0-alpha.33"
+ resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.33.tgz#970e20e5a91f7a378ddd0fc58d0b6c8d4f3be93e"
+ integrity sha512-SPt57bh5nQnpsTBsx/IXbO14sRc9xXu5MtMAVuo0BaQQmyf0NupNPPSoMaqiAF5tDFafYsTkfeH4Q/HCKXkg4w==
+ dependencies:
+ mdn-data "2.0.4"
+ source-map "^0.5.3"
+
+css-unit-converter@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/css-unit-converter/-/css-unit-converter-1.1.1.tgz#d9b9281adcfd8ced935bdbaba83786897f64e996"
+ integrity sha1-2bkoGtz9jO2TW9urqDeGiX9k6ZY=
+
+css-what@^2.1.2:
+ version "2.1.3"
+ resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.3.tgz#a6d7604573365fe74686c3f311c56513d88285f2"
+ integrity sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==
+
+cssesc@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-2.0.0.tgz#3b13bd1bb1cb36e1bcb5a4dcd27f54c5dcb35703"
+ integrity sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==
+
+cssesc@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee"
+ integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==
+
+cssnano-preset-default@^4.0.7:
+ version "4.0.7"
+ resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz#51ec662ccfca0f88b396dcd9679cdb931be17f76"
+ integrity sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA==
+ dependencies:
+ css-declaration-sorter "^4.0.1"
+ cssnano-util-raw-cache "^4.0.1"
+ postcss "^7.0.0"
+ postcss-calc "^7.0.1"
+ postcss-colormin "^4.0.3"
+ postcss-convert-values "^4.0.1"
+ postcss-discard-comments "^4.0.2"
+ postcss-discard-duplicates "^4.0.2"
+ postcss-discard-empty "^4.0.1"
+ postcss-discard-overridden "^4.0.1"
+ postcss-merge-longhand "^4.0.11"
+ postcss-merge-rules "^4.0.3"
+ postcss-minify-font-values "^4.0.2"
+ postcss-minify-gradients "^4.0.2"
+ postcss-minify-params "^4.0.2"
+ postcss-minify-selectors "^4.0.2"
+ postcss-normalize-charset "^4.0.1"
+ postcss-normalize-display-values "^4.0.2"
+ postcss-normalize-positions "^4.0.2"
+ postcss-normalize-repeat-style "^4.0.2"
+ postcss-normalize-string "^4.0.2"
+ postcss-normalize-timing-functions "^4.0.2"
+ postcss-normalize-unicode "^4.0.1"
+ postcss-normalize-url "^4.0.1"
+ postcss-normalize-whitespace "^4.0.2"
+ postcss-ordered-values "^4.1.2"
+ postcss-reduce-initial "^4.0.3"
+ postcss-reduce-transforms "^4.0.2"
+ postcss-svgo "^4.0.2"
+ postcss-unique-selectors "^4.0.1"
+
+cssnano-util-get-arguments@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz#ed3a08299f21d75741b20f3b81f194ed49cc150f"
+ integrity sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8=
+
+cssnano-util-get-match@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz#c0e4ca07f5386bb17ec5e52250b4f5961365156d"
+ integrity sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0=
+
+cssnano-util-raw-cache@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz#b26d5fd5f72a11dfe7a7846fb4c67260f96bf282"
+ integrity sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==
+ dependencies:
+ postcss "^7.0.0"
+
+cssnano-util-same-parent@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz#574082fb2859d2db433855835d9a8456ea18bbf3"
+ integrity sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==
+
+cssnano@^4.1.10:
+ version "4.1.10"
+ resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-4.1.10.tgz#0ac41f0b13d13d465487e111b778d42da631b8b2"
+ integrity sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ==
+ dependencies:
+ cosmiconfig "^5.0.0"
+ cssnano-preset-default "^4.0.7"
+ is-resolvable "^1.0.0"
+ postcss "^7.0.0"
+
+csso@^3.5.1:
+ version "3.5.1"
+ resolved "https://registry.yarnpkg.com/csso/-/csso-3.5.1.tgz#7b9eb8be61628973c1b261e169d2f024008e758b"
+ integrity sha512-vrqULLffYU1Q2tLdJvaCYbONStnfkfimRxXNaGjxMldI0C7JPBC4rB1RyjhfdZ4m1frm8pM9uRPKH3d2knZ8gg==
+ dependencies:
+ css-tree "1.0.0-alpha.29"
+
+cssom@0.3.x, "cssom@>= 0.3.2 < 0.4.0":
+ version "0.3.8"
+ resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a"
+ integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==
+
+cssstyle@^1.0.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-1.4.0.tgz#9d31328229d3c565c61e586b02041a28fccdccf1"
+ integrity sha512-GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA==
+ dependencies:
+ cssom "0.3.x"
+
+currently-unhandled@^0.4.1:
+ version "0.4.1"
+ resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea"
+ integrity sha1-mI3zP+qxke95mmE2nddsF635V+o=
+ dependencies:
+ array-find-index "^1.0.1"
+
+custom-event@~1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/custom-event/-/custom-event-1.0.1.tgz#5d02a46850adf1b4a317946a3928fccb5bfd0425"
+ integrity sha1-XQKkaFCt8bSjF5RqOSj8y1v9BCU=
+
+cyclist@~0.2.2:
+ version "0.2.2"
+ resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-0.2.2.tgz#1b33792e11e914a2fd6d6ed6447464444e5fa640"
+ integrity sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=
+
+dargs@^5.1.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/dargs/-/dargs-5.1.0.tgz#ec7ea50c78564cd36c9d5ec18f66329fade27829"
+ integrity sha1-7H6lDHhWTNNsnV7Bj2Yyn63ieCk=
+
+dashdash@^1.12.0:
+ version "1.14.1"
+ resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0"
+ integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=
+ dependencies:
+ assert-plus "^1.0.0"
+
+data-urls@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-1.1.0.tgz#15ee0582baa5e22bb59c77140da8f9c76963bbfe"
+ integrity sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==
+ dependencies:
+ abab "^2.0.0"
+ whatwg-mimetype "^2.2.0"
+ whatwg-url "^7.0.0"
+
+date-and-time@^0.14.0:
+ version "0.14.2"
+ resolved "https://registry.yarnpkg.com/date-and-time/-/date-and-time-0.14.2.tgz#a4266c3dead460f6c231fe9674e585908dac354e"
+ integrity sha512-EFTCh9zRSEpGPmJaexg7HTuzZHh6cnJj1ui7IGCFNXzd2QdpsNh05Db5TF3xzJm30YN+A8/6xHSuRcQqoc3kFA==
+
+date-fns@^1.27.2:
+ version "1.30.1"
+ resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.30.1.tgz#2e71bf0b119153dbb4cc4e88d9ea5acfb50dc05c"
+ integrity sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw==
+
+date-format@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/date-format/-/date-format-1.2.0.tgz#615e828e233dd1ab9bb9ae0950e0ceccfa6ecad8"
+ integrity sha1-YV6CjiM90aubua4JUODOzPpuytg=
+
+date-now@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b"
+ integrity sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=
+
+dateformat@^1.0.6:
+ version "1.0.12"
+ resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-1.0.12.tgz#9f124b67594c937ff706932e4a642cca8dbbfee9"
+ integrity sha1-nxJLZ1lMk3/3BpMuSmQsyo27/uk=
+ dependencies:
+ get-stdin "^4.0.1"
+ meow "^3.3.0"
+
+debug@2.6.8:
+ version "2.6.8"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.8.tgz#e731531ca2ede27d188222427da17821d68ff4fc"
+ integrity sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=
+ dependencies:
+ ms "2.0.0"
+
+debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.8:
+ version "2.6.9"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
+ integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
+ dependencies:
+ ms "2.0.0"
+
+debug@3.1.0, debug@~3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261"
+ integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==
+ dependencies:
+ ms "2.0.0"
+
+debug@4:
+ version "4.3.1"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee"
+ integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==
+ dependencies:
+ ms "2.1.2"
+
+debug@^3.1.0, debug@^3.2.6:
+ version "3.2.6"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b"
+ integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==
+ dependencies:
+ ms "^2.1.1"
+
+debug@^4.0.1, debug@^4.1.0, debug@^4.1.1:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791"
+ integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==
+ dependencies:
+ ms "^2.1.1"
+
+debug@^4.3.2:
+ version "4.3.2"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b"
+ integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==
+ dependencies:
+ ms "2.1.2"
+
+decamelize@^1.1.2, decamelize@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
+ integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=
+
+decode-uri-component@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545"
+ integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=
+
+dedent@^0.7.0:
+ version "0.7.0"
+ resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c"
+ integrity sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=
+
+deep-equal@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5"
+ integrity sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=
+
+deep-extend@^0.6.0, deep-extend@~0.6.0:
+ version "0.6.0"
+ resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac"
+ integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==
+
+deep-is@~0.1.3:
+ version "0.1.3"
+ resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34"
+ integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=
+
+default-require-extensions@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/default-require-extensions/-/default-require-extensions-2.0.0.tgz#f5f8fbb18a7d6d50b21f641f649ebb522cfe24f7"
+ integrity sha1-9fj7sYp9bVCyH2QfZJ67Uiz+JPc=
+ dependencies:
+ strip-bom "^3.0.0"
+
+define-properties@^1.1.2, define-properties@^1.1.3:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1"
+ integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==
+ dependencies:
+ object-keys "^1.0.12"
+
+define-property@^0.2.5:
+ version "0.2.5"
+ resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116"
+ integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=
+ dependencies:
+ is-descriptor "^0.1.0"
+
+define-property@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6"
+ integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY=
+ dependencies:
+ is-descriptor "^1.0.0"
+
+define-property@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d"
+ integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==
+ dependencies:
+ is-descriptor "^1.0.2"
+ isobject "^3.0.1"
+
+delayed-stream@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
+ integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk=
+
+delegates@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a"
+ integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=
+
+depd@~1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9"
+ integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=
+
+deprecation@^2.0.0:
+ version "2.3.1"
+ resolved "https://registry.yarnpkg.com/deprecation/-/deprecation-2.3.1.tgz#6368cbdb40abf3373b525ac87e4a260c3a700919"
+ integrity sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==
+
+des.js@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc"
+ integrity sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=
+ dependencies:
+ inherits "^2.0.1"
+ minimalistic-assert "^1.0.0"
+
+destroy@~1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80"
+ integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=
+
+detect-file@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7"
+ integrity sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=
+
+detect-indent@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208"
+ integrity sha1-920GQ1LN9Docts5hnE7jqUdd4gg=
+ dependencies:
+ repeating "^2.0.0"
+
+detect-libc@^1.0.2:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b"
+ integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=
+
+detect-newline@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2"
+ integrity sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I=
+
+di@^0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/di/-/di-0.0.1.tgz#806649326ceaa7caa3306d75d985ea2748ba913c"
+ integrity sha1-gGZJMmzqp8qjMG112YXqJ0i6kTw=
+
+dicer@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/dicer/-/dicer-0.3.0.tgz#eacd98b3bfbf92e8ab5c2fdb71aaac44bb06b872"
+ integrity sha512-MdceRRWqltEG2dZqO769g27N/3PXfcKl04VhYnBlo2YhH7zPi88VebsjTKclaOyiuMaGU72hTfw3VkUitGcVCA==
+ dependencies:
+ streamsearch "0.1.2"
+
+diff-match-patch@^1.0.0:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/diff-match-patch/-/diff-match-patch-1.0.4.tgz#6ac4b55237463761c4daf0dc603eb869124744b1"
+ integrity sha512-Uv3SW8bmH9nAtHKaKSanOQmj2DnlH65fUpcrMdfdaOxUG02QQ4YGZ8AE7kKOMisF7UqvOlGKVYWRvezdncW9lg==
+
+diff-sequences@^24.3.0:
+ version "24.3.0"
+ resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-24.3.0.tgz#0f20e8a1df1abddaf4d9c226680952e64118b975"
+ integrity sha512-xLqpez+Zj9GKSnPWS0WZw1igGocZ+uua8+y+5dDNTT934N3QuY1sp2LkHzwiaYQGz60hMq0pjAshdeXm5VUOEw==
+
+diff-sequences@^25.2.6:
+ version "25.2.6"
+ resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-25.2.6.tgz#5f467c00edd35352b7bca46d7927d60e687a76dd"
+ integrity sha512-Hq8o7+6GaZeoFjtpgvRBUknSXNeJiCx7V9Fr94ZMljNiCr9n9L8H8aJqgWOQiDDGdyn29fRNcDdRVJ5fdyihfg==
+
+diff@3.2.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/diff/-/diff-3.2.0.tgz#c9ce393a4b7cbd0b058a725c93df299027868ff9"
+ integrity sha1-yc45Okt8vQsFinJck98pkCeGj/k=
+
+diff@3.5.0, diff@^3.5.0:
+ version "3.5.0"
+ resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12"
+ integrity sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==
+
+diff@^4.0.1:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d"
+ integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==
+
+diffie-hellman@^5.0.0:
+ version "5.0.3"
+ resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875"
+ integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==
+ dependencies:
+ bn.js "^4.1.0"
+ miller-rabin "^4.0.0"
+ randombytes "^2.0.0"
+
+dir-glob@2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.0.0.tgz#0b205d2b6aef98238ca286598a8204d29d0a0034"
+ integrity sha512-37qirFDz8cA5fimp9feo43fSuRo2gHwaIn6dXL8Ber1dGwUosDrGZeCCXq57WnIqE4aQ+u3eQZzsk1yOzhdwag==
+ dependencies:
+ arrify "^1.0.1"
+ path-type "^3.0.0"
+
+dir-glob@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f"
+ integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==
+ dependencies:
+ path-type "^4.0.0"
+
+dmd@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/dmd/-/dmd-6.0.0.tgz#660ae23d9f4e38b08d143dced2cfc4b95f813ba6"
+ integrity sha512-PwWZlqZnJPETwqZZ70haRa+UDZcD5jeBD3ywW1Kf+jYYv0MHu/S7Ri9jsSoeTMwkcMVW9hXOMA1IZUMEufBhOg==
+ dependencies:
+ array-back "^5.0.0"
+ cache-point "^2.0.0"
+ common-sequence "^2.0.0"
+ file-set "^4.0.1"
+ handlebars "^4.7.7"
+ marked "^2.0.0"
+ object-get "^2.1.1"
+ reduce-flatten "^3.0.0"
+ reduce-unique "^2.0.1"
+ reduce-without "^1.0.1"
+ test-value "^3.0.0"
+ walk-back "^5.0.0"
+
+doctrine@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961"
+ integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==
+ dependencies:
+ esutils "^2.0.2"
+
+dom-serialize@^2.2.0:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/dom-serialize/-/dom-serialize-2.2.1.tgz#562ae8999f44be5ea3076f5419dcd59eb43ac95b"
+ integrity sha1-ViromZ9Evl6jB29UGdzVnrQ6yVs=
+ dependencies:
+ custom-event "~1.0.0"
+ ent "~2.2.0"
+ extend "^3.0.0"
+ void-elements "^2.0.0"
+
+dom-serializer@0:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.2.1.tgz#13650c850daffea35d8b626a4cfc4d3a17643fdb"
+ integrity sha512-sK3ujri04WyjwQXVoK4PU3y8ula1stq10GJZpqHIUgoGZdsGzAGu65BnU3d08aTVSvO7mGPZUc0wTEDL+qGE0Q==
+ dependencies:
+ domelementtype "^2.0.1"
+ entities "^2.0.0"
+
+dom-storage@2.1.0, dom-storage@^2.0.2:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/dom-storage/-/dom-storage-2.1.0.tgz#00fb868bc9201357ea243c7bcfd3304c1e34ea39"
+ integrity sha512-g6RpyWXzl0RR6OTElHKBl7nwnK87GUyZMYC7JWsB/IA73vpqK2K6LT39x4VepLxlSsWBFrPVLnsSR5Jyty0+2Q==
+
+domain-browser@^1.1.1:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda"
+ integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==
+
+domelementtype@1:
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f"
+ integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==
+
+domelementtype@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.0.1.tgz#1f8bdfe91f5a78063274e803b4bdcedf6e94f94d"
+ integrity sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ==
+
+domexception@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/domexception/-/domexception-1.0.1.tgz#937442644ca6a31261ef36e3ec677fe805582c90"
+ integrity sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==
+ dependencies:
+ webidl-conversions "^4.0.2"
+
+domutils@^1.7.0:
+ version "1.7.0"
+ resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a"
+ integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==
+ dependencies:
+ dom-serializer "0"
+ domelementtype "1"
+
+dot-prop@^4.1.1:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-4.2.0.tgz#1f19e0c2e1aa0e32797c49799f2837ac6af69c57"
+ integrity sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==
+ dependencies:
+ is-obj "^1.0.0"
+
+dot-prop@^5.2.0:
+ version "5.3.0"
+ resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.3.0.tgz#90ccce708cd9cd82cc4dc8c3ddd9abdd55b20e88"
+ integrity sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==
+ dependencies:
+ is-obj "^2.0.0"
+
+duplexer@^0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1"
+ integrity sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=
+
+duplexify@^3.4.2, duplexify@^3.6.0:
+ version "3.7.1"
+ resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309"
+ integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==
+ dependencies:
+ end-of-stream "^1.0.0"
+ inherits "^2.0.1"
+ readable-stream "^2.0.0"
+ stream-shift "^1.0.0"
+
+duplexify@^4.0.0, duplexify@^4.1.1:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-4.1.1.tgz#7027dc374f157b122a8ae08c2d3ea4d2d953aa61"
+ integrity sha512-DY3xVEmVHTv1wSzKNbwoU6nVjzI369Y6sPoqfYr0/xlx3IdX2n94xIszTcjPO8W8ZIv0Wb0PXNcjuZyT4wiICA==
+ dependencies:
+ end-of-stream "^1.4.1"
+ inherits "^2.0.3"
+ readable-stream "^3.1.1"
+ stream-shift "^1.0.0"
+
+eastasianwidth@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb"
+ integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==
+
+ecc-jsbn@~0.1.1:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9"
+ integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=
+ dependencies:
+ jsbn "~0.1.0"
+ safer-buffer "^2.1.0"
+
+ecdsa-sig-formatter@1.0.11, ecdsa-sig-formatter@^1.0.11:
+ version "1.0.11"
+ resolved "https://registry.yarnpkg.com/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz#ae0f0fa2d85045ef14a817daa3ce9acd0489e5bf"
+ integrity sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==
+ dependencies:
+ safe-buffer "^5.0.1"
+
+editorconfig@^0.15.3:
+ version "0.15.3"
+ resolved "https://registry.yarnpkg.com/editorconfig/-/editorconfig-0.15.3.tgz#bef84c4e75fb8dcb0ce5cee8efd51c15999befc5"
+ integrity sha512-M9wIMFx96vq0R4F+gRpY3o2exzb8hEj/n9S8unZtHSvYjibBp/iMufSzvmOcV/laG0ZtuTVGtiJggPOSW2r93g==
+ dependencies:
+ commander "^2.19.0"
+ lru-cache "^4.1.5"
+ semver "^5.6.0"
+ sigmund "^1.0.1"
+
+ee-first@1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
+ integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=
+
+ejs@^2.6.1:
+ version "2.6.2"
+ resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.6.2.tgz#3a32c63d1cd16d11266cd4703b14fec4e74ab4f6"
+ integrity sha512-PcW2a0tyTuPHz3tWyYqtK6r1fZ3gp+3Sop8Ph+ZYN81Ob5rwmbHEzaqs10N3BEsaGTkh/ooniXK+WwszGlc2+Q==
+
+electron-to-chromium@^1.3.191:
+ version "1.3.229"
+ resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.229.tgz#accc9a08dd07d0a4d6c76937821bc94eb2e49eae"
+ integrity sha512-N6pUbSuKFBeUifxBZp9hODS1N9jFobJYW47QT2VvZIr+G5AWnHK/iG3ON9RPRGH7lHDQ6KUDVhzpNkj4ZiznoA==
+
+electron-to-chromium@^1.3.523:
+ version "1.3.556"
+ resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.556.tgz#d2a8fed6b93051c5c27d182c43c7bc4d88b77afb"
+ integrity sha512-g5cGpg6rOCXxyfaLCQIWz9Fx+raFfbZ6sc4QLfvvaiCERBzY6YD6rh5d12QN++bEF1Tm9osYnxP37lbN/92j4A==
+
+electron-to-chromium@^1.3.649:
+ version "1.3.712"
+ resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.712.tgz#ae467ffe5f95961c6d41ceefe858fc36eb53b38f"
+ integrity sha512-3kRVibBeCM4vsgoHHGKHmPocLqtFAGTrebXxxtgKs87hNUzXrX2NuS3jnBys7IozCnw7viQlozxKkmty2KNfrw==
+
+elegant-spinner@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/elegant-spinner/-/elegant-spinner-1.0.1.tgz#db043521c95d7e303fd8f345bedc3349cfb0729e"
+ integrity sha1-2wQ1IcldfjA/2PNFvtwzSc+wcp4=
+
+elliptic@^6.0.0:
+ version "6.5.0"
+ resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.0.tgz#2b8ed4c891b7de3200e14412a5b8248c7af505ca"
+ integrity sha512-eFOJTMyCYb7xtE/caJ6JJu+bhi67WCYNbkGSknu20pmM8Ke/bqOfdnZWxyoGN26JgfxTbXrsCkEw4KheCT/KGg==
+ dependencies:
+ bn.js "^4.4.0"
+ brorand "^1.0.1"
+ hash.js "^1.0.0"
+ hmac-drbg "^1.0.0"
+ inherits "^2.0.1"
+ minimalistic-assert "^1.0.0"
+ minimalistic-crypto-utils "^1.0.0"
+
+emoji-regex@^7.0.1:
+ version "7.0.3"
+ resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156"
+ integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==
+
+emoji-regex@^8.0.0:
+ version "8.0.0"
+ resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37"
+ integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==
+
+emojis-list@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389"
+ integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k=
+
+empower-core@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/empower-core/-/empower-core-1.2.0.tgz#ce3fb2484d5187fa29c23fba8344b0b2fdf5601c"
+ integrity sha512-g6+K6Geyc1o6FdXs9HwrXleCFan7d66G5xSCfSF7x1mJDCes6t0om9lFQG3zOrzh3Bkb/45N0cZ5Gqsf7YrzGQ==
+ dependencies:
+ call-signature "0.0.2"
+ core-js "^2.0.0"
+
+empower@^1.3.1:
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/empower/-/empower-1.3.1.tgz#768979cbbb36d71d8f5edaab663deacb9dab916c"
+ integrity sha512-uB6/ViBaawOO/uujFADTK3SqdYlxYNn+N4usK9MRKZ4Hbn/1QSy8k2PezxCA2/+JGbF8vd/eOfghZ90oOSDZCA==
+ dependencies:
+ core-js "^2.0.0"
+ empower-core "^1.2.0"
+
+encodeurl@~1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"
+ integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=
+
+encoding@^0.1.11:
+ version "0.1.12"
+ resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz#538b66f3ee62cd1ab51ec323829d1f9480c74beb"
+ integrity sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=
+ dependencies:
+ iconv-lite "~0.4.13"
+
+end-of-stream@^1.0.0, end-of-stream@^1.1.0, end-of-stream@^1.4.1:
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43"
+ integrity sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==
+ dependencies:
+ once "^1.4.0"
+
+engine.io-client@~3.2.0:
+ version "3.2.1"
+ resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-3.2.1.tgz#6f54c0475de487158a1a7c77d10178708b6add36"
+ integrity sha512-y5AbkytWeM4jQr7m/koQLc5AxpRKC1hEVUb/s1FUAWEJq5AzJJ4NLvzuKPuxtDi5Mq755WuDvZ6Iv2rXj4PTzw==
+ dependencies:
+ component-emitter "1.2.1"
+ component-inherit "0.0.3"
+ debug "~3.1.0"
+ engine.io-parser "~2.1.1"
+ has-cors "1.1.0"
+ indexof "0.0.1"
+ parseqs "0.0.5"
+ parseuri "0.0.5"
+ ws "~3.3.1"
+ xmlhttprequest-ssl "~1.5.4"
+ yeast "0.1.2"
+
+engine.io-parser@~2.1.0, engine.io-parser@~2.1.1:
+ version "2.1.3"
+ resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-2.1.3.tgz#757ab970fbf2dfb32c7b74b033216d5739ef79a6"
+ integrity sha512-6HXPre2O4Houl7c4g7Ic/XzPnHBvaEmN90vtRO9uLmwtRqQmTOw0QMevL1TOfL2Cpu1VzsaTmMotQgMdkzGkVA==
+ dependencies:
+ after "0.8.2"
+ arraybuffer.slice "~0.0.7"
+ base64-arraybuffer "0.1.5"
+ blob "0.0.5"
+ has-binary2 "~1.0.2"
+
+engine.io@~3.2.0:
+ version "3.2.1"
+ resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-3.2.1.tgz#b60281c35484a70ee0351ea0ebff83ec8c9522a2"
+ integrity sha512-+VlKzHzMhaU+GsCIg4AoXF1UdDFjHHwMmMKqMJNDNLlUlejz58FCy4LBqB2YVJskHGYl06BatYWKP2TVdVXE5w==
+ dependencies:
+ accepts "~1.3.4"
+ base64id "1.0.0"
+ cookie "0.3.1"
+ debug "~3.1.0"
+ engine.io-parser "~2.1.0"
+ ws "~3.3.1"
+
+enhanced-resolve@4.1.0, enhanced-resolve@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz#41c7e0bfdfe74ac1ffe1e57ad6a5c6c9f3742a7f"
+ integrity sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng==
+ dependencies:
+ graceful-fs "^4.1.2"
+ memory-fs "^0.4.0"
+ tapable "^1.0.0"
+
+ent@^2.2.0, ent@~2.2.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/ent/-/ent-2.2.0.tgz#e964219325a21d05f44466a2f686ed6ce5f5dd1d"
+ integrity sha1-6WQhkyWiHQX0RGai9obtbOX13R0=
+
+entities@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/entities/-/entities-2.0.0.tgz#68d6084cab1b079767540d80e56a39b423e4abf4"
+ integrity sha512-D9f7V0JSRwIxlRI2mjMqufDrRDnx8p+eEOz7aUM9SuvF8gsBzra0/6tbjl1m8eQHrZlYj6PxqE00hZ1SAIKPLw==
+
+entities@~2.0.0:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/entities/-/entities-2.0.3.tgz#5c487e5742ab93c15abb5da22759b8590ec03b7f"
+ integrity sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ==
+
+errno@^0.1.3, errno@~0.1.7:
+ version "0.1.7"
+ resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618"
+ integrity sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==
+ dependencies:
+ prr "~1.0.1"
+
+error-ex@^1.2.0, error-ex@^1.3.1:
+ version "1.3.2"
+ resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf"
+ integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==
+ dependencies:
+ is-arrayish "^0.2.1"
+
+es-abstract@^1.12.0, es-abstract@^1.5.1:
+ version "1.13.0"
+ resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.13.0.tgz#ac86145fdd5099d8dd49558ccba2eaf9b88e24e9"
+ integrity sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==
+ dependencies:
+ es-to-primitive "^1.2.0"
+ function-bind "^1.1.1"
+ has "^1.0.3"
+ is-callable "^1.1.4"
+ is-regex "^1.0.4"
+ object-keys "^1.0.12"
+
+es-to-primitive@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.0.tgz#edf72478033456e8dda8ef09e00ad9650707f377"
+ integrity sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==
+ dependencies:
+ is-callable "^1.1.4"
+ is-date-object "^1.0.1"
+ is-symbol "^1.0.2"
+
+es6-promise@^4.0.3:
+ version "4.2.8"
+ resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a"
+ integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==
+
+es6-promisify@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203"
+ integrity sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=
+ dependencies:
+ es6-promise "^4.0.3"
+
+escalade@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.0.2.tgz#6a580d70edb87880f22b4c91d0d56078df6962c4"
+ integrity sha512-gPYAU37hYCUhW5euPeR+Y74F7BL+IBsV93j5cvGriSaD1aG6MGsqsV1yamRdrWrb2j3aiZvb0X+UBOWpx3JWtQ==
+
+escalade@^3.1.1:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40"
+ integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==
+
+escape-html@~1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
+ integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=
+
+escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
+ integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
+
+escape-string-regexp@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344"
+ integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==
+
+escodegen@1.8.x:
+ version "1.8.1"
+ resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.8.1.tgz#5a5b53af4693110bebb0867aa3430dd3b70a1018"
+ integrity sha1-WltTr0aTEQvrsIZ6o0MN07cKEBg=
+ dependencies:
+ esprima "^2.7.1"
+ estraverse "^1.9.1"
+ esutils "^2.0.2"
+ optionator "^0.8.1"
+ optionalDependencies:
+ source-map "~0.2.0"
+
+escodegen@^1.9.1:
+ version "1.12.0"
+ resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.12.0.tgz#f763daf840af172bb3a2b6dd7219c0e17f7ff541"
+ integrity sha512-TuA+EhsanGcme5T3R0L80u4t8CpbXQjegRmf7+FPTJrtCTErXFeelblRgHQa1FofEzqYYJmJ/OqjTwREp9qgmg==
+ dependencies:
+ esprima "^3.1.3"
+ estraverse "^4.2.0"
+ esutils "^2.0.2"
+ optionator "^0.8.1"
+ optionalDependencies:
+ source-map "~0.6.1"
+
+eslint-config-prettier@^4.3.0:
+ version "4.3.0"
+ resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-4.3.0.tgz#c55c1fcac8ce4518aeb77906984e134d9eb5a4f0"
+ integrity sha512-sZwhSTHVVz78+kYD3t5pCWSYEdVSBR0PXnwjDRsUs8ytIrK8PLXw+6FKp8r3Z7rx4ZszdetWlXYKOHoUrrwPlA==
+ dependencies:
+ get-stdin "^6.0.0"
+
+eslint-scope@3.7.1:
+ version "3.7.1"
+ resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-3.7.1.tgz#3d63c3edfda02e06e01a452ad88caacc7cdcb6e8"
+ integrity sha1-PWPD7f2gLgbgGkUq2IyqzHzctug=
+ dependencies:
+ esrecurse "^4.1.0"
+ estraverse "^4.1.1"
+
+eslint-scope@^4.0.3:
+ version "4.0.3"
+ resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848"
+ integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==
+ dependencies:
+ esrecurse "^4.1.0"
+ estraverse "^4.1.1"
+
+eslint-scope@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.0.0.tgz#e87c8887c73e8d1ec84f1ca591645c358bfc8fb9"
+ integrity sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw==
+ dependencies:
+ esrecurse "^4.1.0"
+ estraverse "^4.1.1"
+
+eslint-utils@^1.3.1:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.4.0.tgz#e2c3c8dba768425f897cf0f9e51fe2e241485d4c"
+ integrity sha512-7ehnzPaP5IIEh1r1tkjuIrxqhNkzUJa9z3R92tLJdZIVdWaczEhr3EbhGtsMrVxi1KeR8qA7Off6SWc5WNQqyQ==
+ dependencies:
+ eslint-visitor-keys "^1.0.0"
+
+eslint-utils@^1.4.3:
+ version "1.4.3"
+ resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.4.3.tgz#74fec7c54d0776b6f67e0251040b5806564e981f"
+ integrity sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==
+ dependencies:
+ eslint-visitor-keys "^1.1.0"
+
+eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz#e2a82cea84ff246ad6fb57f9bde5b46621459ec2"
+ integrity sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==
+
+eslint@^5.16.0:
+ version "5.16.0"
+ resolved "https://registry.yarnpkg.com/eslint/-/eslint-5.16.0.tgz#a1e3ac1aae4a3fbd8296fcf8f7ab7314cbb6abea"
+ integrity sha512-S3Rz11i7c8AA5JPv7xAH+dOyq/Cu/VXHiHXBPOU1k/JAM5dXqQPt3qcrhpHSorXmrpu2g0gkIBVXAqCpzfoZIg==
+ dependencies:
+ "@babel/code-frame" "^7.0.0"
+ ajv "^6.9.1"
+ chalk "^2.1.0"
+ cross-spawn "^6.0.5"
+ debug "^4.0.1"
+ doctrine "^3.0.0"
+ eslint-scope "^4.0.3"
+ eslint-utils "^1.3.1"
+ eslint-visitor-keys "^1.0.0"
+ espree "^5.0.1"
+ esquery "^1.0.1"
+ esutils "^2.0.2"
+ file-entry-cache "^5.0.1"
+ functional-red-black-tree "^1.0.1"
+ glob "^7.1.2"
+ globals "^11.7.0"
+ ignore "^4.0.6"
+ import-fresh "^3.0.0"
+ imurmurhash "^0.1.4"
+ inquirer "^6.2.2"
+ js-yaml "^3.13.0"
+ json-stable-stringify-without-jsonify "^1.0.1"
+ levn "^0.3.0"
+ lodash "^4.17.11"
+ minimatch "^3.0.4"
+ mkdirp "^0.5.1"
+ natural-compare "^1.4.0"
+ optionator "^0.8.2"
+ path-is-inside "^1.0.2"
+ progress "^2.0.0"
+ regexpp "^2.0.1"
+ semver "^5.5.1"
+ strip-ansi "^4.0.0"
+ strip-json-comments "^2.0.1"
+ table "^5.2.3"
+ text-table "^0.2.0"
+
+espower-location-detector@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/espower-location-detector/-/espower-location-detector-1.0.0.tgz#a17b7ecc59d30e179e2bef73fb4137704cb331b5"
+ integrity sha1-oXt+zFnTDheeK+9z+0E3cEyzMbU=
+ dependencies:
+ is-url "^1.2.1"
+ path-is-absolute "^1.0.0"
+ source-map "^0.5.0"
+ xtend "^4.0.0"
+
+espree@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/espree/-/espree-5.0.1.tgz#5d6526fa4fc7f0788a5cf75b15f30323e2f81f7a"
+ integrity sha512-qWAZcWh4XE/RwzLJejfcofscgMc9CamR6Tn1+XRXNzrvUSSbiAjGOI/fggztjIi7y9VLPqnICMIPiGyr8JaZ0A==
+ dependencies:
+ acorn "^6.0.7"
+ acorn-jsx "^5.0.0"
+ eslint-visitor-keys "^1.0.0"
+
+esprima@2.7.x, esprima@^2.7.1:
+ version "2.7.3"
+ resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581"
+ integrity sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=
+
+esprima@^3.1.3:
+ version "3.1.3"
+ resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633"
+ integrity sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=
+
+esprima@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
+ integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==
+
+espurify@^1.6.0:
+ version "1.8.1"
+ resolved "https://registry.yarnpkg.com/espurify/-/espurify-1.8.1.tgz#5746c6c1ab42d302de10bd1d5bf7f0e8c0515056"
+ integrity sha512-ZDko6eY/o+D/gHCWyHTU85mKDgYcS4FJj7S+YD6WIInm7GQ6AnOjmcL4+buFV/JOztVLELi/7MmuGU5NHta0Mg==
+ dependencies:
+ core-js "^2.0.0"
+
+esquery@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.1.tgz#406c51658b1f5991a5f9b62b1dc25b00e3e5c708"
+ integrity sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==
+ dependencies:
+ estraverse "^4.0.0"
+
+esrecurse@^4.1.0:
+ version "4.2.1"
+ resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf"
+ integrity sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==
+ dependencies:
+ estraverse "^4.1.0"
+
+estraverse@^1.9.1:
+ version "1.9.3"
+ resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-1.9.3.tgz#af67f2dc922582415950926091a4005d29c9bb44"
+ integrity sha1-r2fy3JIlgkFZUJJgkaQAXSnJu0Q=
+
+estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0:
+ version "4.3.0"
+ resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d"
+ integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==
+
+esutils@^2.0.2:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64"
+ integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==
+
+etag@~1.8.1:
+ version "1.8.1"
+ resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887"
+ integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=
+
+event-target-shim@^5.0.0:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789"
+ integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==
+
+eventemitter3@^3.0.0:
+ version "3.1.2"
+ resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.2.tgz#2d3d48f9c346698fce83a85d7d664e98535df6e7"
+ integrity sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==
+
+events@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/events/-/events-3.0.0.tgz#9a0a0dfaf62893d92b875b8f2698ca4114973e88"
+ integrity sha512-Dc381HFWJzEOhQ+d8pkNon++bk9h6cdAoAj4iE6Q4y6xgTzySWXlKn05/TVNpjnfRqi/X0EpJEJohPjNI3zpVA==
+
+evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02"
+ integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==
+ dependencies:
+ md5.js "^1.3.4"
+ safe-buffer "^5.1.1"
+
+exec-sh@^0.3.2:
+ version "0.3.2"
+ resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.3.2.tgz#6738de2eb7c8e671d0366aea0b0db8c6f7d7391b"
+ integrity sha512-9sLAvzhI5nc8TpuQUh4ahMdCrWT00wPWz7j47/emR5+2qEfoZP5zzUXvx+vdx+H6ohhnsYC31iX04QLYJK8zTg==
+
+execa@^0.10.0:
+ version "0.10.0"
+ resolved "https://registry.yarnpkg.com/execa/-/execa-0.10.0.tgz#ff456a8f53f90f8eccc71a96d11bdfc7f082cb50"
+ integrity sha512-7XOMnz8Ynx1gGo/3hyV9loYNPWM94jG3+3T3Y8tsfSstFmETmENCMU/A/zj8Lyaj1lkgEepKepvd6240tBRvlw==
+ dependencies:
+ cross-spawn "^6.0.0"
+ get-stream "^3.0.0"
+ is-stream "^1.1.0"
+ npm-run-path "^2.0.0"
+ p-finally "^1.0.0"
+ signal-exit "^3.0.0"
+ strip-eof "^1.0.0"
+
+execa@^0.9.0:
+ version "0.9.0"
+ resolved "https://registry.yarnpkg.com/execa/-/execa-0.9.0.tgz#adb7ce62cf985071f60580deb4a88b9e34712d01"
+ integrity sha512-BbUMBiX4hqiHZUA5+JujIjNb6TyAlp2D5KLheMjMluwOuzcnylDL4AxZYLLn1n2AGB49eSWwyKvvEQoRpnAtmA==
+ dependencies:
+ cross-spawn "^5.0.1"
+ get-stream "^3.0.0"
+ is-stream "^1.1.0"
+ npm-run-path "^2.0.0"
+ p-finally "^1.0.0"
+ signal-exit "^3.0.0"
+ strip-eof "^1.0.0"
+
+execa@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8"
+ integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==
+ dependencies:
+ cross-spawn "^6.0.0"
+ get-stream "^4.0.0"
+ is-stream "^1.1.0"
+ npm-run-path "^2.0.0"
+ p-finally "^1.0.0"
+ signal-exit "^3.0.0"
+ strip-eof "^1.0.0"
+
+exit@^0.1.2:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c"
+ integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=
+
+expand-braces@^0.1.1:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/expand-braces/-/expand-braces-0.1.2.tgz#488b1d1d2451cb3d3a6b192cfc030f44c5855fea"
+ integrity sha1-SIsdHSRRyz06axks/AMPRMWFX+o=
+ dependencies:
+ array-slice "^0.2.3"
+ array-unique "^0.2.1"
+ braces "^0.1.2"
+
+expand-brackets@^2.1.4:
+ version "2.1.4"
+ resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622"
+ integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI=
+ dependencies:
+ debug "^2.3.3"
+ define-property "^0.2.5"
+ extend-shallow "^2.0.1"
+ posix-character-classes "^0.1.0"
+ regex-not "^1.0.0"
+ snapdragon "^0.8.1"
+ to-regex "^3.0.1"
+
+expand-range@^0.1.0:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-0.1.1.tgz#4cb8eda0993ca56fa4f41fc42f3cbb4ccadff044"
+ integrity sha1-TLjtoJk8pW+k9B/ELzy7TMrf8EQ=
+ dependencies:
+ is-number "^0.1.1"
+ repeat-string "^0.2.2"
+
+expand-tilde@^2.0.0, expand-tilde@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502"
+ integrity sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=
+ dependencies:
+ homedir-polyfill "^1.0.1"
+
+expect@^24.8.0:
+ version "24.8.0"
+ resolved "https://registry.yarnpkg.com/expect/-/expect-24.8.0.tgz#471f8ec256b7b6129ca2524b2a62f030df38718d"
+ integrity sha512-/zYvP8iMDrzaaxHVa724eJBCKqSHmO0FA7EDkBiRHxg6OipmMn1fN+C8T9L9K8yr7UONkOifu6+LLH+z76CnaA==
+ dependencies:
+ "@jest/types" "^24.8.0"
+ ansi-styles "^3.2.0"
+ jest-get-type "^24.8.0"
+ jest-matcher-utils "^24.8.0"
+ jest-message-util "^24.8.0"
+ jest-regex-util "^24.3.0"
+
+express@^4.16.3:
+ version "4.17.1"
+ resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134"
+ integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==
+ dependencies:
+ accepts "~1.3.7"
+ array-flatten "1.1.1"
+ body-parser "1.19.0"
+ content-disposition "0.5.3"
+ content-type "~1.0.4"
+ cookie "0.4.0"
+ cookie-signature "1.0.6"
+ debug "2.6.9"
+ depd "~1.1.2"
+ encodeurl "~1.0.2"
+ escape-html "~1.0.3"
+ etag "~1.8.1"
+ finalhandler "~1.1.2"
+ fresh "0.5.2"
+ merge-descriptors "1.0.1"
+ methods "~1.1.2"
+ on-finished "~2.3.0"
+ parseurl "~1.3.3"
+ path-to-regexp "0.1.7"
+ proxy-addr "~2.0.5"
+ qs "6.7.0"
+ range-parser "~1.2.1"
+ safe-buffer "5.1.2"
+ send "0.17.1"
+ serve-static "1.14.1"
+ setprototypeof "1.1.1"
+ statuses "~1.5.0"
+ type-is "~1.6.18"
+ utils-merge "1.0.1"
+ vary "~1.1.2"
+
+extend-shallow@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f"
+ integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=
+ dependencies:
+ is-extendable "^0.1.0"
+
+extend-shallow@^3.0.0, extend-shallow@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8"
+ integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=
+ dependencies:
+ assign-symbols "^1.0.0"
+ is-extendable "^1.0.1"
+
+extend@^3.0.0, extend@^3.0.2, extend@~3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa"
+ integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==
+
+external-editor@^3.0.3:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495"
+ integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==
+ dependencies:
+ chardet "^0.7.0"
+ iconv-lite "^0.4.24"
+ tmp "^0.0.33"
+
+extglob@^2.0.4:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543"
+ integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==
+ dependencies:
+ array-unique "^0.3.2"
+ define-property "^1.0.0"
+ expand-brackets "^2.1.4"
+ extend-shallow "^2.0.1"
+ fragment-cache "^0.2.1"
+ regex-not "^1.0.0"
+ snapdragon "^0.8.1"
+ to-regex "^3.0.1"
+
+extract-zip@^1.6.5:
+ version "1.6.7"
+ resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-1.6.7.tgz#a840b4b8af6403264c8db57f4f1a74333ef81fe9"
+ integrity sha1-qEC0uK9kAyZMjbV/Txp0Mz74H+k=
+ dependencies:
+ concat-stream "1.6.2"
+ debug "2.6.9"
+ mkdirp "0.5.1"
+ yauzl "2.4.1"
+
+extsprintf@1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05"
+ integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=
+
+extsprintf@^1.2.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f"
+ integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8=
+
+fancy-log@^1.3.3:
+ version "1.3.3"
+ resolved "https://registry.yarnpkg.com/fancy-log/-/fancy-log-1.3.3.tgz#dbc19154f558690150a23953a0adbd035be45fc7"
+ integrity sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw==
+ dependencies:
+ ansi-gray "^0.1.1"
+ color-support "^1.1.3"
+ parse-node-version "^1.0.0"
+ time-stamp "^1.0.0"
+
+fast-deep-equal@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49"
+ integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=
+
+fast-deep-equal@^3.1.1:
+ version "3.1.3"
+ resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
+ integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==
+
+fast-glob@^2.0.2:
+ version "2.2.7"
+ resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.7.tgz#6953857c3afa475fff92ee6015d52da70a4cd39d"
+ integrity sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==
+ dependencies:
+ "@mrmlnc/readdir-enhanced" "^2.2.1"
+ "@nodelib/fs.stat" "^1.1.2"
+ glob-parent "^3.1.0"
+ is-glob "^4.0.0"
+ merge2 "^1.2.3"
+ micromatch "^3.1.10"
+
+fast-glob@^3.1.1:
+ version "3.2.5"
+ resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.5.tgz#7939af2a656de79a4f1901903ee8adcaa7cb9661"
+ integrity sha512-2DtFcgT68wiTTiwZ2hNdJfcHNke9XOfnwmBRWXhmeKM8rF0TGwmC/Qto3S7RoZKp5cilZbxzO5iTNTQsJ+EeDg==
+ dependencies:
+ "@nodelib/fs.stat" "^2.0.2"
+ "@nodelib/fs.walk" "^1.2.3"
+ glob-parent "^5.1.0"
+ merge2 "^1.3.0"
+ micromatch "^4.0.2"
+ picomatch "^2.2.1"
+
+fast-json-stable-stringify@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2"
+ integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I=
+
+fast-levenshtein@~2.0.4:
+ version "2.0.6"
+ resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
+ integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=
+
+fast-text-encoding@^1.0.0, fast-text-encoding@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/fast-text-encoding/-/fast-text-encoding-1.0.3.tgz#ec02ac8e01ab8a319af182dae2681213cfe9ce53"
+ integrity sha512-dtm4QZH9nZtcDt8qJiOH9fcQd1NAgi+K1O2DbE6GG1PPCK/BWfOH3idCTRQ4ImXRUOyopDEgDEnVEE7Y/2Wrig==
+
+fastq@^1.6.0:
+ version "1.11.0"
+ resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.11.0.tgz#bb9fb955a07130a918eb63c1f5161cc32a5d0858"
+ integrity sha512-7Eczs8gIPDrVzT+EksYBcupqMyxSHXXrHOLRRxU2/DicV8789MRBRR8+Hc2uWzUupOs4YS4JzBmBxjjCVBxD/g==
+ dependencies:
+ reusify "^1.0.4"
+
+faye-websocket@0.11.3:
+ version "0.11.3"
+ resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.3.tgz#5c0e9a8968e8912c286639fde977a8b209f2508e"
+ integrity sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA==
+ dependencies:
+ websocket-driver ">=0.5.1"
+
+faye-websocket@0.9.3:
+ version "0.9.3"
+ resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.9.3.tgz#482a505b0df0ae626b969866d3bd740cdb962e83"
+ integrity sha1-SCpQWw3wrmJrlphm0710DNuWLoM=
+ dependencies:
+ websocket-driver ">=0.5.1"
+
+fb-watchman@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.0.tgz#54e9abf7dfa2f26cd9b1636c588c1afc05de5d58"
+ integrity sha1-VOmr99+i8mzZsWNsWIwa/AXeXVg=
+ dependencies:
+ bser "^2.0.0"
+
+fd-slicer@~1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.0.1.tgz#8b5bcbd9ec327c5041bf9ab023fd6750f1177e65"
+ integrity sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU=
+ dependencies:
+ pend "~1.2.0"
+
+figgy-pudding@^3.5.1:
+ version "3.5.1"
+ resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.1.tgz#862470112901c727a0e495a80744bd5baa1d6790"
+ integrity sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w==
+
+figures@^1.7.0:
+ version "1.7.0"
+ resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e"
+ integrity sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=
+ dependencies:
+ escape-string-regexp "^1.0.5"
+ object-assign "^4.1.0"
+
+figures@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962"
+ integrity sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=
+ dependencies:
+ escape-string-regexp "^1.0.5"
+
+figures@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/figures/-/figures-3.0.0.tgz#756275c964646163cc6f9197c7a0295dbfd04de9"
+ integrity sha512-HKri+WoWoUgr83pehn/SIgLOMZ9nAWC6dcGj26RY2R4F50u4+RTUz0RCrUlOV3nKRAICW1UGzyb+kcX2qK1S/g==
+ dependencies:
+ escape-string-regexp "^1.0.5"
+
+file-entry-cache@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c"
+ integrity sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==
+ dependencies:
+ flat-cache "^2.0.1"
+
+file-loader@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-3.0.1.tgz#f8e0ba0b599918b51adfe45d66d1e771ad560faa"
+ integrity sha512-4sNIOXgtH/9WZq4NvlfU3Opn5ynUsqBwSLyM+I7UOwdGigTBYfVVQEwe/msZNX/j4pCJTIM14Fsw66Svo1oVrw==
+ dependencies:
+ loader-utils "^1.0.2"
+ schema-utils "^1.0.0"
+
+file-set@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/file-set/-/file-set-4.0.1.tgz#d8a4485a89c8db7ca414f05a043bce44a2d6a913"
+ integrity sha512-tRzX4kGPmxS2HDK2q2L4qcPopTl/gcyahve2/O8l8hHNJgJ7m+r/ZncCJ1MmFWEMp1yHxJGIU9gAcsWu5jPMpg==
+ dependencies:
+ array-back "^4.0.1"
+ glob "^7.1.6"
+
+fileset@^2.0.3:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/fileset/-/fileset-2.0.3.tgz#8e7548a96d3cc2327ee5e674168723a333bba2a0"
+ integrity sha1-jnVIqW08wjJ+5eZ0FocjozO7oqA=
+ dependencies:
+ glob "^7.0.3"
+ minimatch "^3.0.3"
+
+filesize@^3.6.1:
+ version "3.6.1"
+ resolved "https://registry.yarnpkg.com/filesize/-/filesize-3.6.1.tgz#090bb3ee01b6f801a8a8be99d31710b3422bb317"
+ integrity sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg==
+
+fill-range@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7"
+ integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=
+ dependencies:
+ extend-shallow "^2.0.1"
+ is-number "^3.0.0"
+ repeat-string "^1.6.1"
+ to-regex-range "^2.1.0"
+
+fill-range@^7.0.1:
+ version "7.0.1"
+ resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40"
+ integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==
+ dependencies:
+ to-regex-range "^5.0.1"
+
+finalhandler@1.1.2, finalhandler@~1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d"
+ integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==
+ dependencies:
+ debug "2.6.9"
+ encodeurl "~1.0.2"
+ escape-html "~1.0.3"
+ on-finished "~2.3.0"
+ parseurl "~1.3.3"
+ statuses "~1.5.0"
+ unpipe "~1.0.0"
+
+find-cache-dir@^2.0.0, find-cache-dir@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7"
+ integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==
+ dependencies:
+ commondir "^1.0.1"
+ make-dir "^2.0.0"
+ pkg-dir "^3.0.0"
+
+find-parent-dir@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/find-parent-dir/-/find-parent-dir-0.3.0.tgz#33c44b429ab2b2f0646299c5f9f718f376ff8d54"
+ integrity sha1-M8RLQpqysvBkYpnF+fcY83b/jVQ=
+
+find-replace@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/find-replace/-/find-replace-3.0.0.tgz#3e7e23d3b05167a76f770c9fbd5258b0def68c38"
+ integrity sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==
+ dependencies:
+ array-back "^3.0.1"
+
+find-up@^1.0.0:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f"
+ integrity sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=
+ dependencies:
+ path-exists "^2.0.0"
+ pinkie-promise "^2.0.0"
+
+find-up@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73"
+ integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==
+ dependencies:
+ locate-path "^3.0.0"
+
+findup-sync@3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-3.0.0.tgz#17b108f9ee512dfb7a5c7f3c8b27ea9e1a9c08d1"
+ integrity sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==
+ dependencies:
+ detect-file "^1.0.0"
+ is-glob "^4.0.0"
+ micromatch "^3.0.4"
+ resolve-dir "^1.0.1"
+
+firebase-admin@^9.4.2:
+ version "9.4.2"
+ resolved "https://registry.yarnpkg.com/firebase-admin/-/firebase-admin-9.4.2.tgz#190d5d7ca5e3f251d99503feb6e05e7ab1623851"
+ integrity sha512-mRnBJbW6BAz6DJkZ0GOUTkmnmCrwVzMreMc6O+RXWukFydOzi5Xr6TKSiPKxoOQw41r9IluP2AZ3Qzvlx2SR+g==
+ dependencies:
+ "@firebase/database" "^0.8.1"
+ "@firebase/database-types" "^0.6.1"
+ "@types/node" "^10.10.0"
+ dicer "^0.3.0"
+ jsonwebtoken "^8.5.1"
+ node-forge "^0.10.0"
+ optionalDependencies:
+ "@google-cloud/firestore" "^4.5.0"
+ "@google-cloud/storage" "^5.3.0"
+
+firebase@^3.7.1:
+ version "3.9.0"
+ resolved "https://registry.yarnpkg.com/firebase/-/firebase-3.9.0.tgz#c4237f50f58eeb25081b1839d6cbf175f8f7ed9b"
+ integrity sha1-xCN/UPWO6yUIGxg51svxdfj37Zs=
+ dependencies:
+ dom-storage "^2.0.2"
+ faye-websocket "0.9.3"
+ jsonwebtoken "^7.3.0"
+ promise-polyfill "^6.0.2"
+ xmlhttprequest "^1.8.0"
+
+firebase@^8.2.2:
+ version "8.2.2"
+ resolved "https://registry.yarnpkg.com/firebase/-/firebase-8.2.2.tgz#3ba46cad0470055bbedf68cb1ded7c4c07cbc525"
+ integrity sha512-a07aW2TTAA9S7p4mx5pu8hvtVokJEjAQlAocHKOWwmRJRIduE9Vvr/3i50FtujT5gGNr0Qm+EyWyB+/7TJiwnw==
+ dependencies:
+ "@firebase/analytics" "0.6.2"
+ "@firebase/app" "0.6.13"
+ "@firebase/app-types" "0.6.1"
+ "@firebase/auth" "0.16.1"
+ "@firebase/database" "0.8.2"
+ "@firebase/firestore" "2.1.2"
+ "@firebase/functions" "0.6.1"
+ "@firebase/installations" "0.4.19"
+ "@firebase/messaging" "0.7.3"
+ "@firebase/performance" "0.4.5"
+ "@firebase/polyfill" "0.3.36"
+ "@firebase/remote-config" "0.1.30"
+ "@firebase/storage" "0.4.2"
+ "@firebase/util" "0.3.4"
+
+flat-cache@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0"
+ integrity sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==
+ dependencies:
+ flatted "^2.0.0"
+ rimraf "2.6.3"
+ write "1.0.3"
+
+flatted@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.1.tgz#69e57caa8f0eacbc281d2e2cb458d46fdb449e08"
+ integrity sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg==
+
+flow-bin@0.84.0:
+ version "0.84.0"
+ resolved "https://registry.yarnpkg.com/flow-bin/-/flow-bin-0.84.0.tgz#4cb2364c750fb37a7840524fa62456b53f64cdcb"
+ integrity sha512-ocji8eEYp+YfICsm+F6cIHUcD7v5sb0/ADEXm6gyUKdjQzmSckMrPUdZtyfP973t3YGHKliUMxMvIBHyR5LbXQ==
+
+flush-write-stream@^1.0.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8"
+ integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==
+ dependencies:
+ inherits "^2.0.3"
+ readable-stream "^2.3.6"
+
+follow-redirects@^1.0.0:
+ version "1.7.0"
+ resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.7.0.tgz#489ebc198dc0e7f64167bd23b03c4c19b5784c76"
+ integrity sha512-m/pZQy4Gj287eNy94nivy5wchN3Kp+Q5WgUPNy5lJSZ3sgkVKSYV/ZChMAQVIgx1SqfZ2zBZtPA2YlXIWxxJOQ==
+ dependencies:
+ debug "^3.2.6"
+
+for-in@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80"
+ integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=
+
+forever-agent@~0.6.1:
+ version "0.6.1"
+ resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91"
+ integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=
+
+form-data@~2.3.2:
+ version "2.3.3"
+ resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6"
+ integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==
+ dependencies:
+ asynckit "^0.4.0"
+ combined-stream "^1.0.6"
+ mime-types "^2.1.12"
+
+forwarded@~0.1.2:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84"
+ integrity sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=
+
+fragment-cache@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19"
+ integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=
+ dependencies:
+ map-cache "^0.2.2"
+
+fresh@0.5.2:
+ version "0.5.2"
+ resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7"
+ integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=
+
+from2@^2.1.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af"
+ integrity sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=
+ dependencies:
+ inherits "^2.0.1"
+ readable-stream "^2.0.0"
+
+fs-access@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/fs-access/-/fs-access-1.0.1.tgz#d6a87f262271cefebec30c553407fb995da8777a"
+ integrity sha1-1qh/JiJxzv6+wwxVNAf7mV2od3o=
+ dependencies:
+ null-check "^1.0.0"
+
+fs-constants@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad"
+ integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==
+
+fs-extra@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-1.0.0.tgz#cd3ce5f7e7cb6145883fcae3191e9877f8587950"
+ integrity sha1-zTzl9+fLYUWIP8rjGR6Yd/hYeVA=
+ dependencies:
+ graceful-fs "^4.1.2"
+ jsonfile "^2.1.0"
+ klaw "^1.0.0"
+
+fs-minipass@^1.2.5:
+ version "1.2.6"
+ resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.6.tgz#2c5cc30ded81282bfe8a0d7c7c1853ddeb102c07"
+ integrity sha512-crhvyXcMejjv3Z5d2Fa9sf5xLYVCF5O1c71QxbVnbLsmYMBEvDAftewesN/HhY03YRoA7zOMxjNGrF5svGaaeQ==
+ dependencies:
+ minipass "^2.2.1"
+
+fs-readdir-recursive@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz#e32fc030a2ccee44a6b5371308da54be0b397d27"
+ integrity sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==
+
+fs-then-native@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/fs-then-native/-/fs-then-native-2.0.0.tgz#19a124d94d90c22c8e045f2e8dd6ebea36d48c67"
+ integrity sha1-GaEk2U2QwiyOBF8ujdbr6jbUjGc=
+
+fs-write-stream-atomic@^1.0.8:
+ version "1.0.10"
+ resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9"
+ integrity sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=
+ dependencies:
+ graceful-fs "^4.1.2"
+ iferr "^0.1.5"
+ imurmurhash "^0.1.4"
+ readable-stream "1 || 2"
+
+fs.realpath@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
+ integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8=
+
+fsevents@^1.2.7:
+ version "1.2.9"
+ resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.9.tgz#3f5ed66583ccd6f400b5a00db6f7e861363e388f"
+ integrity sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw==
+ dependencies:
+ nan "^2.12.1"
+ node-pre-gyp "^0.12.0"
+
+function-bind@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
+ integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
+
+functional-red-black-tree@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327"
+ integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=
+
+gauge@~2.7.3:
+ version "2.7.4"
+ resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7"
+ integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=
+ dependencies:
+ aproba "^1.0.3"
+ console-control-strings "^1.0.0"
+ has-unicode "^2.0.0"
+ object-assign "^4.1.0"
+ signal-exit "^3.0.0"
+ string-width "^1.0.1"
+ strip-ansi "^3.0.1"
+ wide-align "^1.1.0"
+
+gaxios@^3.0.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/gaxios/-/gaxios-3.2.0.tgz#11b6f0e8fb08d94a10d4d58b044ad3bec6dd486a"
+ integrity sha512-+6WPeVzPvOshftpxJwRi2Ozez80tn/hdtOUag7+gajDHRJvAblKxTFSSMPtr2hmnLy7p0mvYz0rMXLBl8pSO7Q==
+ dependencies:
+ abort-controller "^3.0.0"
+ extend "^3.0.2"
+ https-proxy-agent "^5.0.0"
+ is-stream "^2.0.0"
+ node-fetch "^2.3.0"
+
+gaxios@^4.0.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/gaxios/-/gaxios-4.1.0.tgz#e8ad466db5a4383c70b9d63bfd14dfaa87eb0099"
+ integrity sha512-vb0to8xzGnA2qcgywAjtshOKKVDf2eQhJoiL6fHhgW5tVN7wNk7egnYIO9zotfn3lQ3De1VPdf7V5/BWfCtCmg==
+ dependencies:
+ abort-controller "^3.0.0"
+ extend "^3.0.2"
+ https-proxy-agent "^5.0.0"
+ is-stream "^2.0.0"
+ node-fetch "^2.3.0"
+
+gcp-metadata@^4.2.0:
+ version "4.2.1"
+ resolved "https://registry.yarnpkg.com/gcp-metadata/-/gcp-metadata-4.2.1.tgz#31849fbcf9025ef34c2297c32a89a1e7e9f2cd62"
+ integrity sha512-tSk+REe5iq/N+K+SK1XjZJUrFPuDqGZVzCy2vocIHIGmPlTGsa8owXMJwGkrXr73NO0AzhPW4MF2DEHz7P2AVw==
+ dependencies:
+ gaxios "^4.0.0"
+ json-bigint "^1.0.0"
+
+gcs-resumable-upload@^3.1.0:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/gcs-resumable-upload/-/gcs-resumable-upload-3.1.1.tgz#67c766a0555d6a352f9651b7603337207167d0de"
+ integrity sha512-RS1osvAicj9+MjCc6jAcVL1Pt3tg7NK2C2gXM5nqD1Gs0klF2kj5nnAFSBy97JrtslMIQzpb7iSuxaG8rFWd2A==
+ dependencies:
+ abort-controller "^3.0.0"
+ configstore "^5.0.0"
+ extend "^3.0.2"
+ gaxios "^3.0.0"
+ google-auth-library "^6.0.0"
+ pumpify "^2.0.0"
+ stream-events "^1.0.4"
+
+get-caller-file@^1.0.1:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a"
+ integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==
+
+get-caller-file@^2.0.1:
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e"
+ integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==
+
+get-own-enumerable-property-symbols@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.0.tgz#b877b49a5c16aefac3655f2ed2ea5b684df8d203"
+ integrity sha512-CIJYJC4GGF06TakLg8z4GQKvDsx9EMspVxOYih7LerEL/WosUnFIww45CGfxfeKHqlg3twgUrYRT1O3WQqjGCg==
+
+get-stdin@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe"
+ integrity sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=
+
+get-stdin@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-6.0.0.tgz#9e09bf712b360ab9225e812048f71fde9c89657b"
+ integrity sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==
+
+get-stream@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14"
+ integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=
+
+get-stream@^4.0.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5"
+ integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==
+ dependencies:
+ pump "^3.0.0"
+
+get-stream@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.0.tgz#3e0012cb6827319da2706e601a1583e8629a6718"
+ integrity sha512-A1B3Bh1UmL0bidM/YX2NsCOTnGJePL9rO/M+Mw3m9f2gUpfokS0hi5Eah0WSUEWZdZhIZtMjkIYS7mDfOqNHbg==
+
+get-value@^2.0.3, get-value@^2.0.6:
+ version "2.0.6"
+ resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28"
+ integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=
+
+getpass@^0.1.1:
+ version "0.1.7"
+ resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa"
+ integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=
+ dependencies:
+ assert-plus "^1.0.0"
+
+glob-parent@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae"
+ integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=
+ dependencies:
+ is-glob "^3.1.0"
+ path-dirname "^1.0.0"
+
+glob-parent@^5.1.0:
+ version "5.1.2"
+ resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4"
+ integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
+ dependencies:
+ is-glob "^4.0.1"
+
+glob-promise@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/glob-promise/-/glob-promise-2.0.0.tgz#7a0f42660f42d0964f62ffec37fd41ecb64f5eb5"
+ integrity sha1-eg9CZg9C0JZPYv/sN/1B7LZPXrU=
+
+glob-to-regexp@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab"
+ integrity sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=
+
+glob@7.1.1:
+ version "7.1.1"
+ resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8"
+ integrity sha1-gFIR3wT6rxxjo2ADBs31reULLsg=
+ dependencies:
+ fs.realpath "^1.0.0"
+ inflight "^1.0.4"
+ inherits "2"
+ minimatch "^3.0.2"
+ once "^1.3.0"
+ path-is-absolute "^1.0.0"
+
+glob@7.1.2:
+ version "7.1.2"
+ resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15"
+ integrity sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==
+ dependencies:
+ fs.realpath "^1.0.0"
+ inflight "^1.0.4"
+ inherits "2"
+ minimatch "^3.0.4"
+ once "^1.3.0"
+ path-is-absolute "^1.0.0"
+
+glob@^5.0.15:
+ version "5.0.15"
+ resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1"
+ integrity sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=
+ dependencies:
+ inflight "^1.0.4"
+ inherits "2"
+ minimatch "2 || 3"
+ once "^1.3.0"
+ path-is-absolute "^1.0.0"
+
+glob@^7.0.0, glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4:
+ version "7.1.4"
+ resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255"
+ integrity sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==
+ dependencies:
+ fs.realpath "^1.0.0"
+ inflight "^1.0.4"
+ inherits "2"
+ minimatch "^3.0.4"
+ once "^1.3.0"
+ path-is-absolute "^1.0.0"
+
+glob@^7.1.6:
+ version "7.1.6"
+ resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6"
+ integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==
+ dependencies:
+ fs.realpath "^1.0.0"
+ inflight "^1.0.4"
+ inherits "2"
+ minimatch "^3.0.4"
+ once "^1.3.0"
+ path-is-absolute "^1.0.0"
+
+global-modules@2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780"
+ integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==
+ dependencies:
+ global-prefix "^3.0.0"
+
+global-modules@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea"
+ integrity sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==
+ dependencies:
+ global-prefix "^1.0.1"
+ is-windows "^1.0.1"
+ resolve-dir "^1.0.0"
+
+global-prefix@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-1.0.2.tgz#dbf743c6c14992593c655568cb66ed32c0122ebe"
+ integrity sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=
+ dependencies:
+ expand-tilde "^2.0.2"
+ homedir-polyfill "^1.0.1"
+ ini "^1.3.4"
+ is-windows "^1.0.1"
+ which "^1.2.14"
+
+global-prefix@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-3.0.0.tgz#fc85f73064df69f50421f47f883fe5b913ba9b97"
+ integrity sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==
+ dependencies:
+ ini "^1.3.5"
+ kind-of "^6.0.2"
+ which "^1.3.1"
+
+globals@^11.1.0, globals@^11.7.0:
+ version "11.12.0"
+ resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e"
+ integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==
+
+globals@^9.18.0:
+ version "9.18.0"
+ resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a"
+ integrity sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==
+
+globby@^11.0.3:
+ version "11.0.3"
+ resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.3.tgz#9b1f0cb523e171dd1ad8c7b2a9fb4b644b9593cb"
+ integrity sha512-ffdmosjA807y7+lA1NM0jELARVmYul/715xiILEjo3hBLPTcirgQNnXECn5g3mtR8TOLCVbkfua1Hpen25/Xcg==
+ dependencies:
+ array-union "^2.1.0"
+ dir-glob "^3.0.1"
+ fast-glob "^3.1.1"
+ ignore "^5.1.4"
+ merge2 "^1.3.0"
+ slash "^3.0.0"
+
+globby@^8.0.1:
+ version "8.0.2"
+ resolved "https://registry.yarnpkg.com/globby/-/globby-8.0.2.tgz#5697619ccd95c5275dbb2d6faa42087c1a941d8d"
+ integrity sha512-yTzMmKygLp8RUpG1Ymu2VXPSJQZjNAZPD4ywgYEaG7e4tBJeUQBO8OpXrf1RCNcEs5alsoJYPAMiIHP0cmeC7w==
+ dependencies:
+ array-union "^1.0.1"
+ dir-glob "2.0.0"
+ fast-glob "^2.0.2"
+ glob "^7.1.2"
+ ignore "^3.3.5"
+ pify "^3.0.0"
+ slash "^1.0.0"
+
+google-auth-library@^6.0.0, google-auth-library@^6.1.1, google-auth-library@^6.1.3:
+ version "6.1.3"
+ resolved "https://registry.yarnpkg.com/google-auth-library/-/google-auth-library-6.1.3.tgz#39d868140b70d0c4b32c6f6d8f4ccc1400d84dca"
+ integrity sha512-m9mwvY3GWbr7ZYEbl61isWmk+fvTmOt0YNUfPOUY2VH8K5pZlAIWJjxEi0PqR3OjMretyiQLI6GURMrPSwHQ2g==
+ dependencies:
+ arrify "^2.0.0"
+ base64-js "^1.3.0"
+ ecdsa-sig-formatter "^1.0.11"
+ fast-text-encoding "^1.0.0"
+ gaxios "^4.0.0"
+ gcp-metadata "^4.2.0"
+ gtoken "^5.0.4"
+ jws "^4.0.0"
+ lru-cache "^6.0.0"
+
+google-gax@^2.9.2:
+ version "2.10.0"
+ resolved "https://registry.yarnpkg.com/google-gax/-/google-gax-2.10.0.tgz#7918e5194fe3c5f4330cccb3a3b66e368ac70d8f"
+ integrity sha512-K+1JK5ofNl5k30LsI8UQb/DeLMEbhL/SWirCx0L9pnMcApSfAjRAO7yajXT5X1vicxDBnNSwKs+cu4elxpYraw==
+ dependencies:
+ "@grpc/grpc-js" "~1.2.0"
+ "@grpc/proto-loader" "^0.5.1"
+ "@types/long" "^4.0.0"
+ abort-controller "^3.0.0"
+ duplexify "^4.0.0"
+ fast-text-encoding "^1.0.3"
+ google-auth-library "^6.1.3"
+ is-stream-ended "^0.1.4"
+ node-fetch "^2.6.1"
+ protobufjs "^6.10.2"
+ retry-request "^4.0.0"
+
+google-p12-pem@^3.0.3:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/google-p12-pem/-/google-p12-pem-3.0.3.tgz#673ac3a75d3903a87f05878f3c75e06fc151669e"
+ integrity sha512-wS0ek4ZtFx/ACKYF3JhyGe5kzH7pgiQ7J5otlumqR9psmWMYc+U9cErKlCYVYHoUaidXHdZ2xbo34kB+S+24hA==
+ dependencies:
+ node-forge "^0.10.0"
+
+graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@^4.2.0:
+ version "4.2.2"
+ resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.2.tgz#6f0952605d0140c1cfdb138ed005775b92d67b02"
+ integrity sha512-IItsdsea19BoLC7ELy13q1iJFNmd7ofZH5+X/pJr90/nRoPEX0DJo1dHDbgtYWOhJhcCgMDTOw84RZ72q6lB+Q==
+
+"graceful-readlink@>= 1.0.0":
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725"
+ integrity sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=
+
+growl@1.10.5, "growl@~> 1.10.0":
+ version "1.10.5"
+ resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e"
+ integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==
+
+growl@1.9.2:
+ version "1.9.2"
+ resolved "https://registry.yarnpkg.com/growl/-/growl-1.9.2.tgz#0ea7743715db8d8de2c5ede1775e1b45ac85c02f"
+ integrity sha1-Dqd0NxXbjY3ixe3hd14bRayFwC8=
+
+growly@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081"
+ integrity sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=
+
+gtoken@^5.0.4:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/gtoken/-/gtoken-5.1.0.tgz#4ba8d2fc9a8459098f76e7e8fd7beaa39fda9fe4"
+ integrity sha512-4d8N6Lk8TEAHl9vVoRVMh9BNOKWVgl2DdNtr3428O75r3QFrF/a5MMu851VmK0AA8+iSvbwRv69k5XnMLURGhg==
+ dependencies:
+ gaxios "^4.0.0"
+ google-p12-pem "^3.0.3"
+ jws "^4.0.0"
+ mime "^2.2.0"
+
+gulp-mocha@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/gulp-mocha/-/gulp-mocha-6.0.0.tgz#80f32bc705ce30747f355ddb8ccd96a1c73bef13"
+ integrity sha512-FfBldW5ttnDpKf4Sg6/BLOOKCCbr5mbixDGK1t02/8oSrTCwNhgN/mdszG3cuQuYNzuouUdw4EH/mlYtgUscPg==
+ dependencies:
+ dargs "^5.1.0"
+ execa "^0.10.0"
+ mocha "^5.2.0"
+ npm-run-path "^2.0.2"
+ plugin-error "^1.0.1"
+ supports-color "^5.4.0"
+ through2 "^2.0.3"
+
+gzip-size-cli@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/gzip-size-cli/-/gzip-size-cli-1.0.0.tgz#97ef47b1600a2ad8f9c31539661eab39ec36caed"
+ integrity sha1-l+9HsWAKKtj5wxU5Zh6rOew2yu0=
+ dependencies:
+ gzip-size "^3.0.0"
+ meow "^3.3.0"
+
+gzip-size@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-3.0.0.tgz#546188e9bdc337f673772f81660464b389dce520"
+ integrity sha1-VGGI6b3DN/Zzdy+BZgRks4nc5SA=
+ dependencies:
+ duplexer "^0.1.1"
+
+gzip-size@^5.0.0:
+ version "5.1.1"
+ resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-5.1.1.tgz#cb9bee692f87c0612b232840a873904e4c135274"
+ integrity sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA==
+ dependencies:
+ duplexer "^0.1.1"
+ pify "^4.0.1"
+
+handlebars@^4.0.1, handlebars@^4.1.2:
+ version "4.1.2"
+ resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.1.2.tgz#b6b37c1ced0306b221e094fc7aca3ec23b131b67"
+ integrity sha512-nvfrjqvt9xQ8Z/w0ijewdD/vvWDTOweBUm96NTr66Wfvo1mJenBLwcYmPs3TIBP5ruzYGD7Hx/DaM9RmhroGPw==
+ dependencies:
+ neo-async "^2.6.0"
+ optimist "^0.6.1"
+ source-map "^0.6.1"
+ optionalDependencies:
+ uglify-js "^3.1.4"
+
+handlebars@^4.7.7:
+ version "4.7.7"
+ resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.7.tgz#9ce33416aad02dbd6c8fafa8240d5d98004945a1"
+ integrity sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==
+ dependencies:
+ minimist "^1.2.5"
+ neo-async "^2.6.0"
+ source-map "^0.6.1"
+ wordwrap "^1.0.0"
+ optionalDependencies:
+ uglify-js "^3.1.4"
+
+har-schema@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92"
+ integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=
+
+har-validator@~5.1.0:
+ version "5.1.3"
+ resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080"
+ integrity sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==
+ dependencies:
+ ajv "^6.5.5"
+ har-schema "^2.0.0"
+
+has-ansi@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91"
+ integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=
+ dependencies:
+ ansi-regex "^2.0.0"
+
+has-binary2@~1.0.2:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/has-binary2/-/has-binary2-1.0.3.tgz#7776ac627f3ea77250cfc332dab7ddf5e4f5d11d"
+ integrity sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw==
+ dependencies:
+ isarray "2.0.1"
+
+has-cors@1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/has-cors/-/has-cors-1.1.0.tgz#5e474793f7ea9843d1bb99c23eef49ff126fff39"
+ integrity sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=
+
+has-flag@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa"
+ integrity sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=
+
+has-flag@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
+ integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0=
+
+has-flag@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
+ integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
+
+has-symbols@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44"
+ integrity sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=
+
+has-unicode@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9"
+ integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=
+
+has-value@^0.3.1:
+ version "0.3.1"
+ resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f"
+ integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=
+ dependencies:
+ get-value "^2.0.3"
+ has-values "^0.1.4"
+ isobject "^2.0.0"
+
+has-value@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177"
+ integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=
+ dependencies:
+ get-value "^2.0.6"
+ has-values "^1.0.0"
+ isobject "^3.0.0"
+
+has-values@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771"
+ integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E=
+
+has-values@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f"
+ integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=
+ dependencies:
+ is-number "^3.0.0"
+ kind-of "^4.0.0"
+
+has@^1.0.0, has@^1.0.1, has@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
+ integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==
+ dependencies:
+ function-bind "^1.1.1"
+
+hash-base@^3.0.0:
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.0.4.tgz#5fc8686847ecd73499403319a6b0a3f3f6ae4918"
+ integrity sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=
+ dependencies:
+ inherits "^2.0.1"
+ safe-buffer "^5.0.1"
+
+hash-stream-validation@^0.2.2:
+ version "0.2.4"
+ resolved "https://registry.yarnpkg.com/hash-stream-validation/-/hash-stream-validation-0.2.4.tgz#ee68b41bf822f7f44db1142ec28ba9ee7ccb7512"
+ integrity sha512-Gjzu0Xn7IagXVkSu9cSFuK1fqzwtLwFhNhVL8IFJijRNMgUttFbBSIAzKuSIrsFMO1+g1RlsoN49zPIbwPDMGQ==
+
+hash.js@^1.0.0, hash.js@^1.0.3:
+ version "1.1.7"
+ resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42"
+ integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==
+ dependencies:
+ inherits "^2.0.3"
+ minimalistic-assert "^1.0.1"
+
+hasha@^2.2.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/hasha/-/hasha-2.2.0.tgz#78d7cbfc1e6d66303fe79837365984517b2f6ee1"
+ integrity sha1-eNfL/B5tZjA/55g3NlmEUXsvbuE=
+ dependencies:
+ is-stream "^1.0.1"
+ pinkie-promise "^2.0.0"
+
+he@1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd"
+ integrity sha1-k0EP0hsAlzUVH4howvJx80J+I/0=
+
+hex-color-regex@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e"
+ integrity sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==
+
+hmac-drbg@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1"
+ integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=
+ dependencies:
+ hash.js "^1.0.3"
+ minimalistic-assert "^1.0.0"
+ minimalistic-crypto-utils "^1.0.1"
+
+hoek@2.x.x:
+ version "2.16.3"
+ resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed"
+ integrity sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=
+
+homedir-polyfill@^1.0.1:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz#743298cef4e5af3e194161fbadcc2151d3a058e8"
+ integrity sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==
+ dependencies:
+ parse-passwd "^1.0.0"
+
+hoopy@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/hoopy/-/hoopy-0.1.4.tgz#609207d661100033a9a9402ad3dea677381c1b1d"
+ integrity sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ==
+
+hosted-git-info@^2.1.4:
+ version "2.8.4"
+ resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.4.tgz#44119abaf4bc64692a16ace34700fed9c03e2546"
+ integrity sha512-pzXIvANXEFrc5oFFXRMkbLPQ2rXRoDERwDLyrcUxGhaZhgP54BBSl9Oheh7Vv0T090cszWBxPjkQQ5Sq1PbBRQ==
+
+hsl-regex@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/hsl-regex/-/hsl-regex-1.0.0.tgz#d49330c789ed819e276a4c0d272dffa30b18fe6e"
+ integrity sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4=
+
+hsla-regex@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/hsla-regex/-/hsla-regex-1.0.0.tgz#c1ce7a3168c8c6614033a4b5f7877f3b225f9c38"
+ integrity sha1-wc56MWjIxmFAM6S194d/OyJfnDg=
+
+html-comment-regex@^1.1.0:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.2.tgz#97d4688aeb5c81886a364faa0cad1dda14d433a7"
+ integrity sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==
+
+html-encoding-sniffer@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz#e70d84b94da53aa375e11fe3a351be6642ca46f8"
+ integrity sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==
+ dependencies:
+ whatwg-encoding "^1.0.1"
+
+http-errors@1.7.2:
+ version "1.7.2"
+ resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f"
+ integrity sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==
+ dependencies:
+ depd "~1.1.2"
+ inherits "2.0.3"
+ setprototypeof "1.1.1"
+ statuses ">= 1.5.0 < 2"
+ toidentifier "1.0.0"
+
+http-errors@~1.7.2:
+ version "1.7.3"
+ resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06"
+ integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==
+ dependencies:
+ depd "~1.1.2"
+ inherits "2.0.4"
+ setprototypeof "1.1.1"
+ statuses ">= 1.5.0 < 2"
+ toidentifier "1.0.0"
+
+"http-parser-js@>=0.4.0 <0.4.11":
+ version "0.4.10"
+ resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.4.10.tgz#92c9c1374c35085f75db359ec56cc257cbb93fa4"
+ integrity sha1-ksnBN0w1CF912zWexWzCV8u5P6Q=
+
+http-proxy-agent@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a"
+ integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==
+ dependencies:
+ "@tootallnate/once" "1"
+ agent-base "6"
+ debug "4"
+
+http-proxy@^1.13.0:
+ version "1.17.0"
+ resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.17.0.tgz#7ad38494658f84605e2f6db4436df410f4e5be9a"
+ integrity sha512-Taqn+3nNvYRfJ3bGvKfBSRwy1v6eePlm3oc/aWVxZp57DQr5Eq3xhKJi7Z4hZpS8PC3H4qI+Yly5EmFacGuA/g==
+ dependencies:
+ eventemitter3 "^3.0.0"
+ follow-redirects "^1.0.0"
+ requires-port "^1.0.0"
+
+http-signature@~1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1"
+ integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=
+ dependencies:
+ assert-plus "^1.0.0"
+ jsprim "^1.2.2"
+ sshpk "^1.7.0"
+
+https-browserify@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73"
+ integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=
+
+https-proxy-agent@^2.2.1:
+ version "2.2.2"
+ resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.2.2.tgz#271ea8e90f836ac9f119daccd39c19ff7dfb0793"
+ integrity sha512-c8Ndjc9Bkpfx/vCJueCPy0jlP4ccCCSNDp8xwCZzPjKJUm+B+u9WX2x98Qx4n1PiMNTWo3D7KK5ifNV/yJyRzg==
+ dependencies:
+ agent-base "^4.3.0"
+ debug "^3.1.0"
+
+https-proxy-agent@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz#e2a90542abb68a762e0a0850f6c9edadfd8506b2"
+ integrity sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==
+ dependencies:
+ agent-base "6"
+ debug "4"
+
+husky@^1.0.1:
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/husky/-/husky-1.3.1.tgz#26823e399300388ca2afff11cfa8a86b0033fae0"
+ integrity sha512-86U6sVVVf4b5NYSZ0yvv88dRgBSSXXmHaiq5pP4KDj5JVzdwKgBjEtUPOm8hcoytezFwbU+7gotXNhpHdystlg==
+ dependencies:
+ cosmiconfig "^5.0.7"
+ execa "^1.0.0"
+ find-up "^3.0.0"
+ get-stdin "^6.0.0"
+ is-ci "^2.0.0"
+ pkg-dir "^3.0.0"
+ please-upgrade-node "^3.1.1"
+ read-pkg "^4.0.1"
+ run-node "^1.0.0"
+ slash "^2.0.0"
+
+iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@^0.4.4, iconv-lite@~0.4.13:
+ version "0.4.24"
+ resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
+ integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
+ dependencies:
+ safer-buffer ">= 2.1.2 < 3"
+
+icss-replace-symbols@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz#06ea6f83679a7749e386cfe1fe812ae5db223ded"
+ integrity sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=
+
+icss-utils@^4.1.0:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-4.1.1.tgz#21170b53789ee27447c2f47dd683081403f9a467"
+ integrity sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA==
+ dependencies:
+ postcss "^7.0.14"
+
+idb@3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/idb/-/idb-3.0.2.tgz#c8e9122d5ddd40f13b60ae665e4862f8b13fa384"
+ integrity sha512-+FLa/0sTXqyux0o6C+i2lOR0VoS60LU/jzUo5xjfY6+7sEEgy4Gz1O7yFBXvjd7N0NyIGWIRg8DcQSLEG+VSPw==
+
+ieee754@^1.1.4:
+ version "1.1.13"
+ resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84"
+ integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==
+
+iferr@^0.1.5:
+ version "0.1.5"
+ resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501"
+ integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE=
+
+ignore-walk@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.1.tgz#a83e62e7d272ac0e3b551aaa82831a19b69f82f8"
+ integrity sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ==
+ dependencies:
+ minimatch "^3.0.4"
+
+ignore@^3.3.5:
+ version "3.3.10"
+ resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043"
+ integrity sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==
+
+ignore@^4.0.6:
+ version "4.0.6"
+ resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc"
+ integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==
+
+ignore@^5.1.4:
+ version "5.1.8"
+ resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57"
+ integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==
+
+import-fresh@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546"
+ integrity sha1-2BNVwVYS04bGH53dOSLUMEgipUY=
+ dependencies:
+ caller-path "^2.0.0"
+ resolve-from "^3.0.0"
+
+import-fresh@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.1.0.tgz#6d33fa1dcef6df930fae003446f33415af905118"
+ integrity sha512-PpuksHKGt8rXfWEr9m9EHIpgyyaltBy8+eF6GJM0QCAxMgxCfucMF3mjecK2QsJr0amJW7gTqh5/wht0z2UhEQ==
+ dependencies:
+ parent-module "^1.0.0"
+ resolve-from "^4.0.0"
+
+import-local@2.0.0, import-local@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d"
+ integrity sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==
+ dependencies:
+ pkg-dir "^3.0.0"
+ resolve-cwd "^2.0.0"
+
+imurmurhash@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
+ integrity sha1-khi5srkoojixPcT7a21XbyMUU+o=
+
+indent-string@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80"
+ integrity sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=
+ dependencies:
+ repeating "^2.0.0"
+
+indent-string@^3.0.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-3.2.0.tgz#4a5fd6d27cc332f37e5419a504dbb837105c9289"
+ integrity sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=
+
+indexes-of@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607"
+ integrity sha1-8w9xbI4r00bHtn0985FVZqfAVgc=
+
+indexof@0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d"
+ integrity sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=
+
+infer-owner@^1.0.3:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467"
+ integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==
+
+inflight@^1.0.4:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
+ integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=
+ dependencies:
+ once "^1.3.0"
+ wrappy "1"
+
+inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.1, inherits@~2.0.3:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
+ integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
+
+inherits@2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1"
+ integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=
+
+inherits@2.0.3:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
+ integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=
+
+ini@^1.3.4, ini@^1.3.5, ini@~1.3.0:
+ version "1.3.5"
+ resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927"
+ integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==
+
+inquirer@^6.2.2:
+ version "6.5.1"
+ resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.5.1.tgz#8bfb7a5ac02dac6ff641ac4c5ff17da112fcdb42"
+ integrity sha512-uxNHBeQhRXIoHWTSNYUFhQVrHYFThIt6IVo2fFmSe8aBwdR3/w6b58hJpiL/fMukFkvGzjg+hSxFtwvVmKZmXw==
+ dependencies:
+ ansi-escapes "^4.2.1"
+ chalk "^2.4.2"
+ cli-cursor "^3.1.0"
+ cli-width "^2.0.0"
+ external-editor "^3.0.3"
+ figures "^3.0.0"
+ lodash "^4.17.15"
+ mute-stream "0.0.8"
+ run-async "^2.2.0"
+ rxjs "^6.4.0"
+ string-width "^4.1.0"
+ strip-ansi "^5.1.0"
+ through "^2.3.6"
+
+interpret@1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.2.0.tgz#d5061a6224be58e8083985f5014d844359576296"
+ integrity sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==
+
+invariant@^2.2.2, invariant@^2.2.4:
+ version "2.2.4"
+ resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6"
+ integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==
+ dependencies:
+ loose-envify "^1.0.0"
+
+invert-kv@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02"
+ integrity sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==
+
+ipaddr.js@1.9.0:
+ version "1.9.0"
+ resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.0.tgz#37df74e430a0e47550fe54a2defe30d8acd95f65"
+ integrity sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA==
+
+is-absolute-url@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6"
+ integrity sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=
+
+is-accessor-descriptor@^0.1.6:
+ version "0.1.6"
+ resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6"
+ integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=
+ dependencies:
+ kind-of "^3.0.2"
+
+is-accessor-descriptor@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656"
+ integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==
+ dependencies:
+ kind-of "^6.0.0"
+
+is-arrayish@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
+ integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=
+
+is-arrayish@^0.3.1:
+ version "0.3.2"
+ resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03"
+ integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==
+
+is-binary-path@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898"
+ integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=
+ dependencies:
+ binary-extensions "^1.0.0"
+
+is-buffer@^1.1.5:
+ version "1.1.6"
+ resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
+ integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==
+
+is-callable@^1.1.4:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75"
+ integrity sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==
+
+is-ci@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c"
+ integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==
+ dependencies:
+ ci-info "^2.0.0"
+
+is-color-stop@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/is-color-stop/-/is-color-stop-1.1.0.tgz#cfff471aee4dd5c9e158598fbe12967b5cdad345"
+ integrity sha1-z/9HGu5N1cnhWFmPvhKWe1za00U=
+ dependencies:
+ css-color-names "^0.0.4"
+ hex-color-regex "^1.1.0"
+ hsl-regex "^1.0.0"
+ hsla-regex "^1.0.0"
+ rgb-regex "^1.0.1"
+ rgba-regex "^1.0.0"
+
+is-data-descriptor@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56"
+ integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=
+ dependencies:
+ kind-of "^3.0.2"
+
+is-data-descriptor@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7"
+ integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==
+ dependencies:
+ kind-of "^6.0.0"
+
+is-date-object@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16"
+ integrity sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=
+
+is-descriptor@^0.1.0:
+ version "0.1.6"
+ resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca"
+ integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==
+ dependencies:
+ is-accessor-descriptor "^0.1.6"
+ is-data-descriptor "^0.1.4"
+ kind-of "^5.0.0"
+
+is-descriptor@^1.0.0, is-descriptor@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec"
+ integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==
+ dependencies:
+ is-accessor-descriptor "^1.0.0"
+ is-data-descriptor "^1.0.0"
+ kind-of "^6.0.2"
+
+is-directory@^0.3.1:
+ version "0.3.1"
+ resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1"
+ integrity sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=
+
+is-extendable@^0.1.0, is-extendable@^0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89"
+ integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=
+
+is-extendable@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4"
+ integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==
+ dependencies:
+ is-plain-object "^2.0.4"
+
+is-extglob@^2.1.0, is-extglob@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
+ integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=
+
+is-finite@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa"
+ integrity sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=
+ dependencies:
+ number-is-nan "^1.0.0"
+
+is-fullwidth-code-point@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb"
+ integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs=
+ dependencies:
+ number-is-nan "^1.0.0"
+
+is-fullwidth-code-point@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f"
+ integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=
+
+is-fullwidth-code-point@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d"
+ integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==
+
+is-generator-fn@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118"
+ integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==
+
+is-glob@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a"
+ integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=
+ dependencies:
+ is-extglob "^2.1.0"
+
+is-glob@^4.0.0, is-glob@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc"
+ integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==
+ dependencies:
+ is-extglob "^2.1.1"
+
+is-number@^0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/is-number/-/is-number-0.1.1.tgz#69a7af116963d47206ec9bd9b48a14216f1e3806"
+ integrity sha1-aaevEWlj1HIG7JvZtIoUIW8eOAY=
+
+is-number@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195"
+ integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=
+ dependencies:
+ kind-of "^3.0.2"
+
+is-number@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
+ integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
+
+is-obj@^1.0.0, is-obj@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f"
+ integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8=
+
+is-obj@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982"
+ integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==
+
+is-observable@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/is-observable/-/is-observable-1.1.0.tgz#b3e986c8f44de950867cab5403f5a3465005975e"
+ integrity sha512-NqCa4Sa2d+u7BWc6CukaObG3Fh+CU9bvixbpcXYhy2VvYS7vVGIdAgnIS5Ks3A/cqk4rebLJ9s8zBstT2aKnIA==
+ dependencies:
+ symbol-observable "^1.1.0"
+
+is-plain-obj@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e"
+ integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4=
+
+is-plain-object@^2.0.3, is-plain-object@^2.0.4:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677"
+ integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==
+ dependencies:
+ isobject "^3.0.1"
+
+is-plain-object@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344"
+ integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==
+
+is-promise@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa"
+ integrity sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=
+
+is-regex@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491"
+ integrity sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=
+ dependencies:
+ has "^1.0.1"
+
+is-regexp@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069"
+ integrity sha1-/S2INUXEa6xaYz57mgnof6LLUGk=
+
+is-resolvable@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88"
+ integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==
+
+is-stream-ended@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/is-stream-ended/-/is-stream-ended-0.1.4.tgz#f50224e95e06bce0e356d440a4827cd35b267eda"
+ integrity sha512-xj0XPvmr7bQFTvirqnFr50o0hQIh6ZItDqloxt5aJrR4NQsYeSsyFQERYGCAzfindAcnKjINnwEEgLx4IqVzQw==
+
+is-stream@^1.0.1, is-stream@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"
+ integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ=
+
+is-stream@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3"
+ integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==
+
+is-svg@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/is-svg/-/is-svg-3.0.0.tgz#9321dbd29c212e5ca99c4fa9794c714bcafa2f75"
+ integrity sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ==
+ dependencies:
+ html-comment-regex "^1.1.0"
+
+is-symbol@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.2.tgz#a055f6ae57192caee329e7a860118b497a950f38"
+ integrity sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==
+ dependencies:
+ has-symbols "^1.0.0"
+
+is-typedarray@^1.0.0, is-typedarray@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
+ integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=
+
+is-url@^1.2.1:
+ version "1.2.4"
+ resolved "https://registry.yarnpkg.com/is-url/-/is-url-1.2.4.tgz#04a4df46d28c4cff3d73d01ff06abeb318a1aa52"
+ integrity sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==
+
+is-utf8@^0.2.0:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72"
+ integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=
+
+is-windows@^1.0.1, is-windows@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d"
+ integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==
+
+is-wsl@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d"
+ integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=
+
+isarray@0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf"
+ integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=
+
+isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
+ integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=
+
+isarray@2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.1.tgz#a37d94ed9cda2d59865c9f76fe596ee1f338741e"
+ integrity sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=
+
+isbinaryfile@^3.0.0:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-3.0.3.tgz#5d6def3edebf6e8ca8cae9c30183a804b5f8be80"
+ integrity sha512-8cJBL5tTd2OS0dM4jz07wQd5g0dCCqIhUxPIGtZfa5L6hWlvV5MHTITy/DBAsF+Oe2LS1X3krBUhNwaGUWpWxw==
+ dependencies:
+ buffer-alloc "^1.2.0"
+
+isemail@1.x.x:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/isemail/-/isemail-1.2.0.tgz#be03df8cc3e29de4d2c5df6501263f1fa4595e9a"
+ integrity sha1-vgPfjMPineTSxd9lASY/H6RZXpo=
+
+isexe@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
+ integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=
+
+isobject@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89"
+ integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=
+ dependencies:
+ isarray "1.0.0"
+
+isobject@^3.0.0, isobject@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df"
+ integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8=
+
+isstream@~0.1.2:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
+ integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=
+
+istanbul-api@^2.1.6:
+ version "2.1.6"
+ resolved "https://registry.yarnpkg.com/istanbul-api/-/istanbul-api-2.1.6.tgz#d61702a9d1c66ad89d92e66d401e16b0bda4a35f"
+ integrity sha512-x0Eicp6KsShG1k1rMgBAi/1GgY7kFGEBwQpw3PXGEmu+rBcBNhqU8g2DgY9mlepAsLPzrzrbqSgCGANnki4POA==
+ dependencies:
+ async "^2.6.2"
+ compare-versions "^3.4.0"
+ fileset "^2.0.3"
+ istanbul-lib-coverage "^2.0.5"
+ istanbul-lib-hook "^2.0.7"
+ istanbul-lib-instrument "^3.3.0"
+ istanbul-lib-report "^2.0.8"
+ istanbul-lib-source-maps "^3.0.6"
+ istanbul-reports "^2.2.4"
+ js-yaml "^3.13.1"
+ make-dir "^2.1.0"
+ minimatch "^3.0.4"
+ once "^1.4.0"
+
+istanbul-instrumenter-loader@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/istanbul-instrumenter-loader/-/istanbul-instrumenter-loader-3.0.1.tgz#9957bd59252b373fae5c52b7b5188e6fde2a0949"
+ integrity sha512-a5SPObZgS0jB/ixaKSMdn6n/gXSrK2S6q/UfRJBT3e6gQmVjwZROTODQsYW5ZNwOu78hG62Y3fWlebaVOL0C+w==
+ dependencies:
+ convert-source-map "^1.5.0"
+ istanbul-lib-instrument "^1.7.3"
+ loader-utils "^1.1.0"
+ schema-utils "^0.3.0"
+
+istanbul-lib-coverage@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.1.tgz#ccf7edcd0a0bb9b8f729feeb0930470f9af664f0"
+ integrity sha512-PzITeunAgyGbtY1ibVIUiV679EFChHjoMNRibEIobvmrCRaIgwLxNucOSimtNWUhEib/oO7QY2imD75JVgCJWQ==
+
+istanbul-lib-coverage@^2.0.2, istanbul-lib-coverage@^2.0.5:
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz#675f0ab69503fad4b1d849f736baaca803344f49"
+ integrity sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==
+
+istanbul-lib-hook@^2.0.7:
+ version "2.0.7"
+ resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-2.0.7.tgz#c95695f383d4f8f60df1f04252a9550e15b5b133"
+ integrity sha512-vrRztU9VRRFDyC+aklfLoeXyNdTfga2EI3udDGn4cZ6fpSXpHLV9X6CHvfoMCPtggg8zvDDmC4b9xfu0z6/llA==
+ dependencies:
+ append-transform "^1.0.0"
+
+istanbul-lib-instrument@^1.7.3:
+ version "1.10.2"
+ resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-1.10.2.tgz#1f55ed10ac3c47f2bdddd5307935126754d0a9ca"
+ integrity sha512-aWHxfxDqvh/ZlxR8BBaEPVSWDPUkGD63VjGQn3jcw8jCp7sHEMKcrj4xfJn/ABzdMEHiQNyvDQhqm5o8+SQg7A==
+ dependencies:
+ babel-generator "^6.18.0"
+ babel-template "^6.16.0"
+ babel-traverse "^6.18.0"
+ babel-types "^6.18.0"
+ babylon "^6.18.0"
+ istanbul-lib-coverage "^1.2.1"
+ semver "^5.3.0"
+
+istanbul-lib-instrument@^3.0.1, istanbul-lib-instrument@^3.3.0:
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz#a5f63d91f0bbc0c3e479ef4c5de027335ec6d630"
+ integrity sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA==
+ dependencies:
+ "@babel/generator" "^7.4.0"
+ "@babel/parser" "^7.4.3"
+ "@babel/template" "^7.4.0"
+ "@babel/traverse" "^7.4.3"
+ "@babel/types" "^7.4.0"
+ istanbul-lib-coverage "^2.0.5"
+ semver "^6.0.0"
+
+istanbul-lib-report@^2.0.4, istanbul-lib-report@^2.0.8:
+ version "2.0.8"
+ resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz#5a8113cd746d43c4889eba36ab10e7d50c9b4f33"
+ integrity sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ==
+ dependencies:
+ istanbul-lib-coverage "^2.0.5"
+ make-dir "^2.1.0"
+ supports-color "^6.1.0"
+
+istanbul-lib-source-maps@^3.0.1, istanbul-lib-source-maps@^3.0.6:
+ version "3.0.6"
+ resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz#284997c48211752ec486253da97e3879defba8c8"
+ integrity sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw==
+ dependencies:
+ debug "^4.1.1"
+ istanbul-lib-coverage "^2.0.5"
+ make-dir "^2.1.0"
+ rimraf "^2.6.3"
+ source-map "^0.6.1"
+
+istanbul-reports@^2.1.1, istanbul-reports@^2.2.4:
+ version "2.2.6"
+ resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-2.2.6.tgz#7b4f2660d82b29303a8fe6091f8ca4bf058da1af"
+ integrity sha512-SKi4rnMyLBKe0Jy2uUdx28h8oG7ph2PPuQPvIAh31d+Ci+lSiEu4C+h3oBPuJ9+mPKhOyW0M8gY4U5NM1WLeXA==
+ dependencies:
+ handlebars "^4.1.2"
+
+istanbul@^0.4.0:
+ version "0.4.5"
+ resolved "https://registry.yarnpkg.com/istanbul/-/istanbul-0.4.5.tgz#65c7d73d4c4da84d4f3ac310b918fb0b8033733b"
+ integrity sha1-ZcfXPUxNqE1POsMQuRj7C4Azczs=
+ dependencies:
+ abbrev "1.0.x"
+ async "1.x"
+ escodegen "1.8.x"
+ esprima "2.7.x"
+ glob "^5.0.15"
+ handlebars "^4.0.1"
+ js-yaml "3.x"
+ mkdirp "0.5.x"
+ nopt "3.x"
+ once "1.x"
+ resolve "1.1.x"
+ supports-color "^3.1.0"
+ which "^1.1.1"
+ wordwrap "^1.0.0"
+
+jest-changed-files@^24.8.0:
+ version "24.8.0"
+ resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-24.8.0.tgz#7e7eb21cf687587a85e50f3d249d1327e15b157b"
+ integrity sha512-qgANC1Yrivsq+UrLXsvJefBKVoCsKB0Hv+mBb6NMjjZ90wwxCDmU3hsCXBya30cH+LnPYjwgcU65i6yJ5Nfuug==
+ dependencies:
+ "@jest/types" "^24.8.0"
+ execa "^1.0.0"
+ throat "^4.0.0"
+
+jest-cli@^24.8.0:
+ version "24.8.0"
+ resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-24.8.0.tgz#b075ac914492ed114fa338ade7362a301693e989"
+ integrity sha512-+p6J00jSMPQ116ZLlHJJvdf8wbjNbZdeSX9ptfHX06/MSNaXmKihQzx5vQcw0q2G6JsdVkUIdWbOWtSnaYs3yA==
+ dependencies:
+ "@jest/core" "^24.8.0"
+ "@jest/test-result" "^24.8.0"
+ "@jest/types" "^24.8.0"
+ chalk "^2.0.1"
+ exit "^0.1.2"
+ import-local "^2.0.0"
+ is-ci "^2.0.0"
+ jest-config "^24.8.0"
+ jest-util "^24.8.0"
+ jest-validate "^24.8.0"
+ prompts "^2.0.1"
+ realpath-native "^1.1.0"
+ yargs "^12.0.2"
+
+jest-config@^24.8.0:
+ version "24.8.0"
+ resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-24.8.0.tgz#77db3d265a6f726294687cbbccc36f8a76ee0f4f"
+ integrity sha512-Czl3Nn2uEzVGsOeaewGWoDPD8GStxCpAe0zOYs2x2l0fZAgPbCr3uwUkgNKV3LwE13VXythM946cd5rdGkkBZw==
+ dependencies:
+ "@babel/core" "^7.1.0"
+ "@jest/test-sequencer" "^24.8.0"
+ "@jest/types" "^24.8.0"
+ babel-jest "^24.8.0"
+ chalk "^2.0.1"
+ glob "^7.1.1"
+ jest-environment-jsdom "^24.8.0"
+ jest-environment-node "^24.8.0"
+ jest-get-type "^24.8.0"
+ jest-jasmine2 "^24.8.0"
+ jest-regex-util "^24.3.0"
+ jest-resolve "^24.8.0"
+ jest-util "^24.8.0"
+ jest-validate "^24.8.0"
+ micromatch "^3.1.10"
+ pretty-format "^24.8.0"
+ realpath-native "^1.1.0"
+
+jest-diff@^24.8.0:
+ version "24.8.0"
+ resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-24.8.0.tgz#146435e7d1e3ffdf293d53ff97e193f1d1546172"
+ integrity sha512-wxetCEl49zUpJ/bvUmIFjd/o52J+yWcoc5ZyPq4/W1LUKGEhRYDIbP1KcF6t+PvqNrGAFk4/JhtxDq/Nnzs66g==
+ dependencies:
+ chalk "^2.0.1"
+ diff-sequences "^24.3.0"
+ jest-get-type "^24.8.0"
+ pretty-format "^24.8.0"
+
+jest-diff@^25.2.1:
+ version "25.5.0"
+ resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-25.5.0.tgz#1dd26ed64f96667c068cef026b677dfa01afcfa9"
+ integrity sha512-z1kygetuPiREYdNIumRpAHY6RXiGmp70YHptjdaxTWGmA085W3iCnXNx0DhflK3vwrKmrRWyY1wUpkPMVxMK7A==
+ dependencies:
+ chalk "^3.0.0"
+ diff-sequences "^25.2.6"
+ jest-get-type "^25.2.6"
+ pretty-format "^25.5.0"
+
+jest-docblock@^24.3.0:
+ version "24.3.0"
+ resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-24.3.0.tgz#b9c32dac70f72e4464520d2ba4aec02ab14db5dd"
+ integrity sha512-nlANmF9Yq1dufhFlKG9rasfQlrY7wINJbo3q01tu56Jv5eBU5jirylhF2O5ZBnLxzOVBGRDz/9NAwNyBtG4Nyg==
+ dependencies:
+ detect-newline "^2.1.0"
+
+jest-each@^24.8.0:
+ version "24.8.0"
+ resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-24.8.0.tgz#a05fd2bf94ddc0b1da66c6d13ec2457f35e52775"
+ integrity sha512-NrwK9gaL5+XgrgoCsd9svsoWdVkK4gnvyhcpzd6m487tXHqIdYeykgq3MKI1u4I+5Zf0tofr70at9dWJDeb+BA==
+ dependencies:
+ "@jest/types" "^24.8.0"
+ chalk "^2.0.1"
+ jest-get-type "^24.8.0"
+ jest-util "^24.8.0"
+ pretty-format "^24.8.0"
+
+jest-environment-jsdom@^24.8.0:
+ version "24.8.0"
+ resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-24.8.0.tgz#300f6949a146cabe1c9357ad9e9ecf9f43f38857"
+ integrity sha512-qbvgLmR7PpwjoFjM/sbuqHJt/NCkviuq9vus9NBn/76hhSidO+Z6Bn9tU8friecegbJL8gzZQEMZBQlFWDCwAQ==
+ dependencies:
+ "@jest/environment" "^24.8.0"
+ "@jest/fake-timers" "^24.8.0"
+ "@jest/types" "^24.8.0"
+ jest-mock "^24.8.0"
+ jest-util "^24.8.0"
+ jsdom "^11.5.1"
+
+jest-environment-node@^24.8.0:
+ version "24.8.0"
+ resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-24.8.0.tgz#d3f726ba8bc53087a60e7a84ca08883a4c892231"
+ integrity sha512-vIGUEScd1cdDgR6sqn2M08sJTRLQp6Dk/eIkCeO4PFHxZMOgy+uYLPMC4ix3PEfM5Au/x3uQ/5Tl0DpXXZsJ/Q==
+ dependencies:
+ "@jest/environment" "^24.8.0"
+ "@jest/fake-timers" "^24.8.0"
+ "@jest/types" "^24.8.0"
+ jest-mock "^24.8.0"
+ jest-util "^24.8.0"
+
+jest-get-type@^22.1.0:
+ version "22.4.3"
+ resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-22.4.3.tgz#e3a8504d8479342dd4420236b322869f18900ce4"
+ integrity sha512-/jsz0Y+V29w1chdXVygEKSz2nBoHoYqNShPe+QgxSNjAuP1i8+k4LbQNrfoliKej0P45sivkSCh7yiD6ubHS3w==
+
+jest-get-type@^24.8.0:
+ version "24.8.0"
+ resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-24.8.0.tgz#a7440de30b651f5a70ea3ed7ff073a32dfe646fc"
+ integrity sha512-RR4fo8jEmMD9zSz2nLbs2j0zvPpk/KCEz3a62jJWbd2ayNo0cb+KFRxPHVhE4ZmgGJEQp0fosmNz84IfqM8cMQ==
+
+jest-get-type@^25.2.6:
+ version "25.2.6"
+ resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-25.2.6.tgz#0b0a32fab8908b44d508be81681487dbabb8d877"
+ integrity sha512-DxjtyzOHjObRM+sM1knti6or+eOgcGU4xVSb2HNP1TqO4ahsT+rqZg+nyqHWJSvWgKC5cG3QjGFBqxLghiF/Ig==
+
+jest-haste-map@^24.8.0:
+ version "24.8.1"
+ resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-24.8.1.tgz#f39cc1d2b1d907e014165b4bd5a957afcb992982"
+ integrity sha512-SwaxMGVdAZk3ernAx2Uv2sorA7jm3Kx+lR0grp6rMmnY06Kn/urtKx1LPN2mGTea4fCT38impYT28FfcLUhX0g==
+ dependencies:
+ "@jest/types" "^24.8.0"
+ anymatch "^2.0.0"
+ fb-watchman "^2.0.0"
+ graceful-fs "^4.1.15"
+ invariant "^2.2.4"
+ jest-serializer "^24.4.0"
+ jest-util "^24.8.0"
+ jest-worker "^24.6.0"
+ micromatch "^3.1.10"
+ sane "^4.0.3"
+ walker "^1.0.7"
+ optionalDependencies:
+ fsevents "^1.2.7"
+
+jest-jasmine2@^24.8.0:
+ version "24.8.0"
+ resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-24.8.0.tgz#a9c7e14c83dd77d8b15e820549ce8987cc8cd898"
+ integrity sha512-cEky88npEE5LKd5jPpTdDCLvKkdyklnaRycBXL6GNmpxe41F0WN44+i7lpQKa/hcbXaQ+rc9RMaM4dsebrYong==
+ dependencies:
+ "@babel/traverse" "^7.1.0"
+ "@jest/environment" "^24.8.0"
+ "@jest/test-result" "^24.8.0"
+ "@jest/types" "^24.8.0"
+ chalk "^2.0.1"
+ co "^4.6.0"
+ expect "^24.8.0"
+ is-generator-fn "^2.0.0"
+ jest-each "^24.8.0"
+ jest-matcher-utils "^24.8.0"
+ jest-message-util "^24.8.0"
+ jest-runtime "^24.8.0"
+ jest-snapshot "^24.8.0"
+ jest-util "^24.8.0"
+ pretty-format "^24.8.0"
+ throat "^4.0.0"
+
+jest-leak-detector@^24.8.0:
+ version "24.8.0"
+ resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-24.8.0.tgz#c0086384e1f650c2d8348095df769f29b48e6980"
+ integrity sha512-cG0yRSK8A831LN8lIHxI3AblB40uhv0z+SsQdW3GoMMVcK+sJwrIIyax5tu3eHHNJ8Fu6IMDpnLda2jhn2pD/g==
+ dependencies:
+ pretty-format "^24.8.0"
+
+jest-matcher-utils@^24.8.0:
+ version "24.8.0"
+ resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-24.8.0.tgz#2bce42204c9af12bde46f83dc839efe8be832495"
+ integrity sha512-lex1yASY51FvUuHgm0GOVj7DCYEouWSlIYmCW7APSqB9v8mXmKSn5+sWVF0MhuASG0bnYY106/49JU1FZNl5hw==
+ dependencies:
+ chalk "^2.0.1"
+ jest-diff "^24.8.0"
+ jest-get-type "^24.8.0"
+ pretty-format "^24.8.0"
+
+jest-message-util@^24.8.0:
+ version "24.8.0"
+ resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-24.8.0.tgz#0d6891e72a4beacc0292b638685df42e28d6218b"
+ integrity sha512-p2k71rf/b6ns8btdB0uVdljWo9h0ovpnEe05ZKWceQGfXYr4KkzgKo3PBi8wdnd9OtNh46VpNIJynUn/3MKm1g==
+ dependencies:
+ "@babel/code-frame" "^7.0.0"
+ "@jest/test-result" "^24.8.0"
+ "@jest/types" "^24.8.0"
+ "@types/stack-utils" "^1.0.1"
+ chalk "^2.0.1"
+ micromatch "^3.1.10"
+ slash "^2.0.0"
+ stack-utils "^1.0.1"
+
+jest-mock@^24.8.0:
+ version "24.8.0"
+ resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-24.8.0.tgz#2f9d14d37699e863f1febf4e4d5a33b7fdbbde56"
+ integrity sha512-6kWugwjGjJw+ZkK4mDa0Df3sDlUTsV47MSrT0nGQ0RBWJbpODDQ8MHDVtGtUYBne3IwZUhtB7elxHspU79WH3A==
+ dependencies:
+ "@jest/types" "^24.8.0"
+
+jest-pnp-resolver@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.1.tgz#ecdae604c077a7fbc70defb6d517c3c1c898923a"
+ integrity sha512-pgFw2tm54fzgYvc/OHrnysABEObZCUNFnhjoRjaVOCN8NYc032/gVjPaHD4Aq6ApkSieWtfKAFQtmDKAmhupnQ==
+
+jest-regex-util@^24.3.0:
+ version "24.3.0"
+ resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-24.3.0.tgz#d5a65f60be1ae3e310d5214a0307581995227b36"
+ integrity sha512-tXQR1NEOyGlfylyEjg1ImtScwMq8Oh3iJbGTjN7p0J23EuVX1MA8rwU69K4sLbCmwzgCUbVkm0FkSF9TdzOhtg==
+
+jest-resolve-dependencies@^24.8.0:
+ version "24.8.0"
+ resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-24.8.0.tgz#19eec3241f2045d3f990dba331d0d7526acff8e0"
+ integrity sha512-hyK1qfIf/krV+fSNyhyJeq3elVMhK9Eijlwy+j5jqmZ9QsxwKBiP6qukQxaHtK8k6zql/KYWwCTQ+fDGTIJauw==
+ dependencies:
+ "@jest/types" "^24.8.0"
+ jest-regex-util "^24.3.0"
+ jest-snapshot "^24.8.0"
+
+jest-resolve@^24.8.0:
+ version "24.8.0"
+ resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-24.8.0.tgz#84b8e5408c1f6a11539793e2b5feb1b6e722439f"
+ integrity sha512-+hjSzi1PoRvnuOICoYd5V/KpIQmkAsfjFO71458hQ2Whi/yf1GDeBOFj8Gxw4LrApHsVJvn5fmjcPdmoUHaVKw==
+ dependencies:
+ "@jest/types" "^24.8.0"
+ browser-resolve "^1.11.3"
+ chalk "^2.0.1"
+ jest-pnp-resolver "^1.2.1"
+ realpath-native "^1.1.0"
+
+jest-runner@^24.8.0:
+ version "24.8.0"
+ resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-24.8.0.tgz#4f9ae07b767db27b740d7deffad0cf67ccb4c5bb"
+ integrity sha512-utFqC5BaA3JmznbissSs95X1ZF+d+4WuOWwpM9+Ak356YtMhHE/GXUondZdcyAAOTBEsRGAgH/0TwLzfI9h7ow==
+ dependencies:
+ "@jest/console" "^24.7.1"
+ "@jest/environment" "^24.8.0"
+ "@jest/test-result" "^24.8.0"
+ "@jest/types" "^24.8.0"
+ chalk "^2.4.2"
+ exit "^0.1.2"
+ graceful-fs "^4.1.15"
+ jest-config "^24.8.0"
+ jest-docblock "^24.3.0"
+ jest-haste-map "^24.8.0"
+ jest-jasmine2 "^24.8.0"
+ jest-leak-detector "^24.8.0"
+ jest-message-util "^24.8.0"
+ jest-resolve "^24.8.0"
+ jest-runtime "^24.8.0"
+ jest-util "^24.8.0"
+ jest-worker "^24.6.0"
+ source-map-support "^0.5.6"
+ throat "^4.0.0"
+
+jest-runtime@^24.8.0:
+ version "24.8.0"
+ resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-24.8.0.tgz#05f94d5b05c21f6dc54e427cd2e4980923350620"
+ integrity sha512-Mq0aIXhvO/3bX44ccT+czU1/57IgOMyy80oM0XR/nyD5zgBcesF84BPabZi39pJVA6UXw+fY2Q1N+4BiVUBWOA==
+ dependencies:
+ "@jest/console" "^24.7.1"
+ "@jest/environment" "^24.8.0"
+ "@jest/source-map" "^24.3.0"
+ "@jest/transform" "^24.8.0"
+ "@jest/types" "^24.8.0"
+ "@types/yargs" "^12.0.2"
+ chalk "^2.0.1"
+ exit "^0.1.2"
+ glob "^7.1.3"
+ graceful-fs "^4.1.15"
+ jest-config "^24.8.0"
+ jest-haste-map "^24.8.0"
+ jest-message-util "^24.8.0"
+ jest-mock "^24.8.0"
+ jest-regex-util "^24.3.0"
+ jest-resolve "^24.8.0"
+ jest-snapshot "^24.8.0"
+ jest-util "^24.8.0"
+ jest-validate "^24.8.0"
+ realpath-native "^1.1.0"
+ slash "^2.0.0"
+ strip-bom "^3.0.0"
+ yargs "^12.0.2"
+
+jest-serializer@^24.4.0:
+ version "24.4.0"
+ resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-24.4.0.tgz#f70c5918c8ea9235ccb1276d232e459080588db3"
+ integrity sha512-k//0DtglVstc1fv+GY/VHDIjrtNjdYvYjMlbLUed4kxrE92sIUewOi5Hj3vrpB8CXfkJntRPDRjCrCvUhBdL8Q==
+
+jest-snapshot@^24.8.0:
+ version "24.8.0"
+ resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-24.8.0.tgz#3bec6a59da2ff7bc7d097a853fb67f9d415cb7c6"
+ integrity sha512-5ehtWoc8oU9/cAPe6fez6QofVJLBKyqkY2+TlKTOf0VllBB/mqUNdARdcjlZrs9F1Cv+/HKoCS/BknT0+tmfPg==
+ dependencies:
+ "@babel/types" "^7.0.0"
+ "@jest/types" "^24.8.0"
+ chalk "^2.0.1"
+ expect "^24.8.0"
+ jest-diff "^24.8.0"
+ jest-matcher-utils "^24.8.0"
+ jest-message-util "^24.8.0"
+ jest-resolve "^24.8.0"
+ mkdirp "^0.5.1"
+ natural-compare "^1.4.0"
+ pretty-format "^24.8.0"
+ semver "^5.5.0"
+
+jest-util@^24.8.0:
+ version "24.8.0"
+ resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-24.8.0.tgz#41f0e945da11df44cc76d64ffb915d0716f46cd1"
+ integrity sha512-DYZeE+XyAnbNt0BG1OQqKy/4GVLPtzwGx5tsnDrFcax36rVE3lTA5fbvgmbVPUZf9w77AJ8otqR4VBbfFJkUZA==
+ dependencies:
+ "@jest/console" "^24.7.1"
+ "@jest/fake-timers" "^24.8.0"
+ "@jest/source-map" "^24.3.0"
+ "@jest/test-result" "^24.8.0"
+ "@jest/types" "^24.8.0"
+ callsites "^3.0.0"
+ chalk "^2.0.1"
+ graceful-fs "^4.1.15"
+ is-ci "^2.0.0"
+ mkdirp "^0.5.1"
+ slash "^2.0.0"
+ source-map "^0.6.0"
+
+jest-validate@^23.5.0:
+ version "23.6.0"
+ resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-23.6.0.tgz#36761f99d1ed33fcd425b4e4c5595d62b6597474"
+ integrity sha512-OFKapYxe72yz7agrDAWi8v2WL8GIfVqcbKRCLbRG9PAxtzF9b1SEDdTpytNDN12z2fJynoBwpMpvj2R39plI2A==
+ dependencies:
+ chalk "^2.0.1"
+ jest-get-type "^22.1.0"
+ leven "^2.1.0"
+ pretty-format "^23.6.0"
+
+jest-validate@^24.8.0:
+ version "24.8.0"
+ resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-24.8.0.tgz#624c41533e6dfe356ffadc6e2423a35c2d3b4849"
+ integrity sha512-+/N7VOEMW1Vzsrk3UWBDYTExTPwf68tavEPKDnJzrC6UlHtUDU/fuEdXqFoHzv9XnQ+zW6X3qMZhJ3YexfeLDA==
+ dependencies:
+ "@jest/types" "^24.8.0"
+ camelcase "^5.0.0"
+ chalk "^2.0.1"
+ jest-get-type "^24.8.0"
+ leven "^2.1.0"
+ pretty-format "^24.8.0"
+
+jest-watcher@^24.8.0:
+ version "24.8.0"
+ resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-24.8.0.tgz#58d49915ceddd2de85e238f6213cef1c93715de4"
+ integrity sha512-SBjwHt5NedQoVu54M5GEx7cl7IGEFFznvd/HNT8ier7cCAx/Qgu9ZMlaTQkvK22G1YOpcWBLQPFSImmxdn3DAw==
+ dependencies:
+ "@jest/test-result" "^24.8.0"
+ "@jest/types" "^24.8.0"
+ "@types/yargs" "^12.0.9"
+ ansi-escapes "^3.0.0"
+ chalk "^2.0.1"
+ jest-util "^24.8.0"
+ string-length "^2.0.0"
+
+jest-worker@^24.6.0:
+ version "24.6.0"
+ resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-24.6.0.tgz#7f81ceae34b7cde0c9827a6980c35b7cdc0161b3"
+ integrity sha512-jDwgW5W9qGNvpI1tNnvajh0a5IE/PuGLFmHk6aR/BZFz8tSgGw17GsDPXAJ6p91IvYDjOw8GpFbvvZGAK+DPQQ==
+ dependencies:
+ merge-stream "^1.0.1"
+ supports-color "^6.1.0"
+
+jest@^24.8.0:
+ version "24.8.0"
+ resolved "https://registry.yarnpkg.com/jest/-/jest-24.8.0.tgz#d5dff1984d0d1002196e9b7f12f75af1b2809081"
+ integrity sha512-o0HM90RKFRNWmAWvlyV8i5jGZ97pFwkeVoGvPW1EtLTgJc2+jcuqcbbqcSZLE/3f2S5pt0y2ZBETuhpWNl1Reg==
+ dependencies:
+ import-local "^2.0.0"
+ jest-cli "^24.8.0"
+
+joi@^6.10.1:
+ version "6.10.1"
+ resolved "https://registry.yarnpkg.com/joi/-/joi-6.10.1.tgz#4d50c318079122000fe5f16af1ff8e1917b77e06"
+ integrity sha1-TVDDGAeRIgAP5fFq8f+OGRe3fgY=
+ dependencies:
+ hoek "2.x.x"
+ isemail "1.x.x"
+ moment "2.x.x"
+ topo "1.x.x"
+
+js-beautify@^1.5.10:
+ version "1.10.2"
+ resolved "https://registry.yarnpkg.com/js-beautify/-/js-beautify-1.10.2.tgz#88c9099cd6559402b124cfab18754936f8a7b178"
+ integrity sha512-ZtBYyNUYJIsBWERnQP0rPN9KjkrDfJcMjuVGcvXOUJrD1zmOGwhRwQ4msG+HJ+Ni/FA7+sRQEMYVzdTQDvnzvQ==
+ dependencies:
+ config-chain "^1.1.12"
+ editorconfig "^0.15.3"
+ glob "^7.1.3"
+ mkdirp "~0.5.1"
+ nopt "~4.0.1"
+
+js-fns@^2.5.1:
+ version "2.5.1"
+ resolved "https://registry.yarnpkg.com/js-fns/-/js-fns-2.5.1.tgz#8b3de33c5da0ba58cd02a1f2f44c49c9fee0b89f"
+ integrity sha512-407HErrcBhMeLa1gUDEHJEIGzHoEH26j79rQnQ2vjeMMYUES87ObDjkVXLMIbY7lCzXfsgh4bVJLgP5GYDazcQ==
+
+"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
+ integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
+
+js-tokens@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b"
+ integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls=
+
+js-yaml@3.x, js-yaml@^3.13.0, js-yaml@^3.13.1:
+ version "3.13.1"
+ resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847"
+ integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==
+ dependencies:
+ argparse "^1.0.7"
+ esprima "^4.0.0"
+
+js2xmlparser@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/js2xmlparser/-/js2xmlparser-4.0.1.tgz#670ef71bc5661f089cc90481b99a05a1227ae3bd"
+ integrity sha512-KrPTolcw6RocpYjdC7pL7v62e55q7qOMHvLX1UCLc5AAS8qeJ6nukarEJAF2KL2PZxlbGueEbINqZR2bDe/gUw==
+ dependencies:
+ xmlcreate "^2.0.3"
+
+jsbn@~0.1.0:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513"
+ integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM=
+
+jsdoc-api@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/jsdoc-api/-/jsdoc-api-6.0.0.tgz#fbba403ef59de0480b7e5aadd563a7bb715b0187"
+ integrity sha512-zvfB63nAc9e+Rv2kKmJfE6tmo4x8KFho5vKr6VfYTlCCgqtrfPv0McCdqT4betUT9rWtw0zGkNUVkVqeQipY6Q==
+ dependencies:
+ array-back "^4.0.1"
+ cache-point "^2.0.0"
+ collect-all "^1.0.3"
+ file-set "^4.0.1"
+ fs-then-native "^2.0.0"
+ jsdoc "^3.6.4"
+ object-to-spawn-args "^2.0.0"
+ temp-path "^1.0.0"
+ walk-back "^4.0.0"
+
+jsdoc-babel@^0.5.0:
+ version "0.5.0"
+ resolved "https://registry.yarnpkg.com/jsdoc-babel/-/jsdoc-babel-0.5.0.tgz#7217b8820469fe600dccfdee895648c6a0dd4a2e"
+ integrity sha512-PYfTbc3LNTeR8TpZs2M94NLDWqARq0r9gx3SvuziJfmJS7/AeMKvtj0xjzOX0R/4MOVA7/FqQQK7d6U0iEoztQ==
+ dependencies:
+ jsdoc-regex "^1.0.1"
+ lodash "^4.17.10"
+
+jsdoc-parse@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/jsdoc-parse/-/jsdoc-parse-6.0.0.tgz#e9652cc43618e6940d166386a4ab1dd5d6a88289"
+ integrity sha512-35DhfCHL1bq5r0TvolhyyGhhoem700IfEvviL8I1t99Qxa3aSmWbBEpnvvouA7TyXlwxcQfSg75ryXW8Ppq7FA==
+ dependencies:
+ array-back "^5.0.0"
+ lodash.omit "^4.5.0"
+ lodash.pick "^4.4.0"
+ reduce-extract "^1.0.0"
+ sort-array "^4.1.3"
+ test-value "^3.0.0"
+
+jsdoc-regex@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/jsdoc-regex/-/jsdoc-regex-1.0.1.tgz#8424428d5b563ad8c5c7fbec079b9a8b09c8dcfa"
+ integrity sha1-hCRCjVtWOtjFx/vsB5uaiwnI3Po=
+
+jsdoc-to-markdown@7:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/jsdoc-to-markdown/-/jsdoc-to-markdown-7.0.0.tgz#949a03690315c408adced452311bf8e5c3be91f8"
+ integrity sha512-pcZluhsRqi+qx/BKcBfdUWBOXPk7G0aRKGkBgxemedqnqM0XfxO+SYFeouExrIsuAGGmsQ/eQk2uqynG6FM2ug==
+ dependencies:
+ array-back "^5.0.0"
+ command-line-tool "^0.8.0"
+ config-master "^3.1.0"
+ dmd "^6.0.0"
+ jsdoc-api "^6.0.0"
+ jsdoc-parse "^6.0.0"
+ walk-back "^5.0.0"
+
+jsdoc@^3.6.4:
+ version "3.6.5"
+ resolved "https://registry.yarnpkg.com/jsdoc/-/jsdoc-3.6.5.tgz#e004372ca6f2dcdf19b3d2ebcd7c725528485502"
+ integrity sha512-SbY+i9ONuxSK35cgVHaI8O9senTE4CDYAmGSDJ5l3+sfe62Ff4gy96osy6OW84t4K4A8iGnMrlRrsSItSNp3RQ==
+ dependencies:
+ "@babel/parser" "^7.9.4"
+ bluebird "^3.7.2"
+ catharsis "^0.8.11"
+ escape-string-regexp "^2.0.0"
+ js2xmlparser "^4.0.1"
+ klaw "^3.0.0"
+ markdown-it "^10.0.0"
+ markdown-it-anchor "^5.2.7"
+ marked "^0.8.2"
+ mkdirp "^1.0.4"
+ requizzle "^0.2.3"
+ strip-json-comments "^3.1.0"
+ taffydb "2.6.2"
+ underscore "~1.10.2"
+
+jsdom@^11.5.1:
+ version "11.12.0"
+ resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-11.12.0.tgz#1a80d40ddd378a1de59656e9e6dc5a3ba8657bc8"
+ integrity sha512-y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw==
+ dependencies:
+ abab "^2.0.0"
+ acorn "^5.5.3"
+ acorn-globals "^4.1.0"
+ array-equal "^1.0.0"
+ cssom ">= 0.3.2 < 0.4.0"
+ cssstyle "^1.0.0"
+ data-urls "^1.0.0"
+ domexception "^1.0.1"
+ escodegen "^1.9.1"
+ html-encoding-sniffer "^1.0.2"
+ left-pad "^1.3.0"
+ nwsapi "^2.0.7"
+ parse5 "4.0.0"
+ pn "^1.1.0"
+ request "^2.87.0"
+ request-promise-native "^1.0.5"
+ sax "^1.2.4"
+ symbol-tree "^3.2.2"
+ tough-cookie "^2.3.4"
+ w3c-hr-time "^1.0.1"
+ webidl-conversions "^4.0.2"
+ whatwg-encoding "^1.0.3"
+ whatwg-mimetype "^2.1.0"
+ whatwg-url "^6.4.1"
+ ws "^5.2.0"
+ xml-name-validator "^3.0.0"
+
+jsesc@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b"
+ integrity sha1-RsP+yMGJKxKwgz25vHYiF226s0s=
+
+jsesc@^2.5.1:
+ version "2.5.2"
+ resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4"
+ integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==
+
+jsesc@~0.5.0:
+ version "0.5.0"
+ resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d"
+ integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=
+
+json-bigint@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/json-bigint/-/json-bigint-1.0.0.tgz#ae547823ac0cad8398667f8cd9ef4730f5b01ff1"
+ integrity sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==
+ dependencies:
+ bignumber.js "^9.0.0"
+
+json-bond@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/json-bond/-/json-bond-0.1.0.tgz#a679e6c7f2c9a7b622208da4226f5a2c6e304a34"
+ integrity sha512-oOTXdcq0PCJr6OUnzyLN2n0b5msex2KWP60/mgZpop8P6WGWQgZr9frPs4vap+cJG89Mn+hSE8dsEPwNU2B3Ig==
+
+json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9"
+ integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==
+
+json-schema-traverse@^0.4.1:
+ version "0.4.1"
+ resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660"
+ integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==
+
+json-schema@0.2.3:
+ version "0.2.3"
+ resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13"
+ integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=
+
+json-stable-stringify-without-jsonify@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651"
+ integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=
+
+json-stringify-safe@~5.0.1:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"
+ integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=
+
+json3@3.3.2:
+ version "3.3.2"
+ resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.2.tgz#3c0434743df93e2f5c42aee7b19bcb483575f4e1"
+ integrity sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=
+
+json5@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe"
+ integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==
+ dependencies:
+ minimist "^1.2.0"
+
+json5@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.0.tgz#e7a0c62c48285c628d20a10b85c89bb807c32850"
+ integrity sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ==
+ dependencies:
+ minimist "^1.2.0"
+
+jsonfile@^2.1.0:
+ version "2.4.0"
+ resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8"
+ integrity sha1-NzaitCi4e72gzIO1P6PWM6NcKug=
+ optionalDependencies:
+ graceful-fs "^4.1.6"
+
+jsonwebtoken@^7.3.0:
+ version "7.4.3"
+ resolved "https://registry.yarnpkg.com/jsonwebtoken/-/jsonwebtoken-7.4.3.tgz#77f5021de058b605a1783fa1283e99812e645638"
+ integrity sha1-d/UCHeBYtgWheD+hKD6ZgS5kVjg=
+ dependencies:
+ joi "^6.10.1"
+ jws "^3.1.4"
+ lodash.once "^4.0.0"
+ ms "^2.0.0"
+ xtend "^4.0.1"
+
+jsonwebtoken@^8.5.1:
+ version "8.5.1"
+ resolved "https://registry.yarnpkg.com/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz#00e71e0b8df54c2121a1f26137df2280673bcc0d"
+ integrity sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==
+ dependencies:
+ jws "^3.2.2"
+ lodash.includes "^4.3.0"
+ lodash.isboolean "^3.0.3"
+ lodash.isinteger "^4.0.4"
+ lodash.isnumber "^3.0.3"
+ lodash.isplainobject "^4.0.6"
+ lodash.isstring "^4.0.1"
+ lodash.once "^4.0.0"
+ ms "^2.1.1"
+ semver "^5.6.0"
+
+jsprim@^1.2.2:
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2"
+ integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=
+ dependencies:
+ assert-plus "1.0.0"
+ extsprintf "1.3.0"
+ json-schema "0.2.3"
+ verror "1.10.0"
+
+just-extend@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/just-extend/-/just-extend-4.0.2.tgz#f3f47f7dfca0f989c55410a7ebc8854b07108afc"
+ integrity sha512-FrLwOgm+iXrPV+5zDU6Jqu4gCRXbWEQg2O3SKONsWE4w7AXFRkryS53bpWdaL9cNol+AmR3AEYz6kn+o0fCPnw==
+
+jwa@^1.4.1:
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/jwa/-/jwa-1.4.1.tgz#743c32985cb9e98655530d53641b66c8645b039a"
+ integrity sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==
+ dependencies:
+ buffer-equal-constant-time "1.0.1"
+ ecdsa-sig-formatter "1.0.11"
+ safe-buffer "^5.0.1"
+
+jwa@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/jwa/-/jwa-2.0.0.tgz#a7e9c3f29dae94027ebcaf49975c9345593410fc"
+ integrity sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==
+ dependencies:
+ buffer-equal-constant-time "1.0.1"
+ ecdsa-sig-formatter "1.0.11"
+ safe-buffer "^5.0.1"
+
+jws@^3.1.4, jws@^3.2.2:
+ version "3.2.2"
+ resolved "https://registry.yarnpkg.com/jws/-/jws-3.2.2.tgz#001099f3639468c9414000e99995fa52fb478304"
+ integrity sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==
+ dependencies:
+ jwa "^1.4.1"
+ safe-buffer "^5.0.1"
+
+jws@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/jws/-/jws-4.0.0.tgz#2d4e8cf6a318ffaa12615e9dec7e86e6c97310f4"
+ integrity sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==
+ dependencies:
+ jwa "^2.0.0"
+ safe-buffer "^5.0.1"
+
+karma-benchmark-reporter@^0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/karma-benchmark-reporter/-/karma-benchmark-reporter-0.1.1.tgz#3b7e49f05700e428ff10824ad0d410ae2d07d27a"
+ integrity sha1-O35J8FcA5Cj/EIJK0NQQri0H0no=
+
+karma-benchmark@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/karma-benchmark/-/karma-benchmark-1.0.4.tgz#42fb9ea8a8fa42f3b6f49f72d9025bff026aba1a"
+ integrity sha512-e9YmWrX3xk7BSosBaL/7lg0ZKSOpwQySKlLb1xa2m5VbwMVFffS29QB9f2UCT7+aMCnJlNRWjcKym4Ch/60OsA==
+ dependencies:
+ lodash "4.17.15"
+ platform "1.3.5"
+
+karma-chrome-launcher@2.2:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/karma-chrome-launcher/-/karma-chrome-launcher-2.2.0.tgz#cf1b9d07136cc18fe239327d24654c3dbc368acf"
+ integrity sha512-uf/ZVpAabDBPvdPdveyk1EPgbnloPvFFGgmRhYLTDH7gEB4nZdSBk8yTU47w1g/drLSx5uMOkjKk7IWKfWg/+w==
+ dependencies:
+ fs-access "^1.0.0"
+ which "^1.2.1"
+
+karma-cli@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/karma-cli/-/karma-cli-1.0.1.tgz#ae6c3c58a313a1d00b45164c455b9b86ce17f960"
+ integrity sha1-rmw8WKMTodALRRZMRVubhs4X+WA=
+ dependencies:
+ resolve "^1.1.6"
+
+karma-coverage-istanbul-reporter@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/karma-coverage-istanbul-reporter/-/karma-coverage-istanbul-reporter-2.1.0.tgz#5f1bcc13c5e14ee1d91821ee8946861674f54c75"
+ integrity sha512-UH0mXPJFJyK5uiK7EkwGtQ8f30lCBAfqRResnZ4pzLJ04SOp4SPlYkmwbbZ6iVJ6sQFVzlDUXlntBEsLRdgZpg==
+ dependencies:
+ istanbul-api "^2.1.6"
+ minimatch "^3.0.4"
+
+karma-coverage@^1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/karma-coverage/-/karma-coverage-1.1.2.tgz#cc09dceb589a83101aca5fe70c287645ef387689"
+ integrity sha512-eQawj4Cl3z/CjxslYy9ariU4uDh7cCNFZHNWXWRpl0pNeblY/4wHR7M7boTYXWrn9bY0z2pZmr11eKje/S/hIw==
+ dependencies:
+ dateformat "^1.0.6"
+ istanbul "^0.4.0"
+ lodash "^4.17.0"
+ minimatch "^3.0.0"
+ source-map "^0.5.1"
+
+karma-mocha-reporter@^2.2.5:
+ version "2.2.5"
+ resolved "https://registry.yarnpkg.com/karma-mocha-reporter/-/karma-mocha-reporter-2.2.5.tgz#15120095e8ed819186e47a0b012f3cd741895560"
+ integrity sha1-FRIAlejtgZGG5HoLAS8810GJVWA=
+ dependencies:
+ chalk "^2.1.0"
+ log-symbols "^2.1.0"
+ strip-ansi "^4.0.0"
+
+karma-mocha@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/karma-mocha/-/karma-mocha-1.3.0.tgz#eeaac7ffc0e201eb63c467440d2b69c7cf3778bf"
+ integrity sha1-7qrH/8DiAetjxGdEDStpx883eL8=
+ dependencies:
+ minimist "1.2.0"
+
+karma-phantomjs-launcher@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/karma-phantomjs-launcher/-/karma-phantomjs-launcher-1.0.4.tgz#d23ca34801bda9863ad318e3bb4bd4062b13acd2"
+ integrity sha1-0jyjSAG9qYY60xjju0vUBisTrNI=
+ dependencies:
+ lodash "^4.0.1"
+ phantomjs-prebuilt "^2.1.7"
+
+karma-sauce-launcher@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/karma-sauce-launcher/-/karma-sauce-launcher-1.2.0.tgz#6f2558ddef3cf56879fa27540c8ae9f8bfd16bca"
+ integrity sha512-lEhtGRGS+3Yw6JSx/vJY9iQyHNtTjcojrSwNzqNUOaDceKDu9dPZqA/kr69bUO9G2T6GKbu8AZgXqy94qo31Jg==
+ dependencies:
+ q "^1.5.0"
+ sauce-connect-launcher "^1.2.2"
+ saucelabs "^1.4.0"
+ wd "^1.4.0"
+
+karma-sourcemap-loader@^0.3.5:
+ version "0.3.7"
+ resolved "https://registry.yarnpkg.com/karma-sourcemap-loader/-/karma-sourcemap-loader-0.3.7.tgz#91322c77f8f13d46fed062b042e1009d4c4505d8"
+ integrity sha1-kTIsd/jxPUb+0GKwQuEAnUxFBdg=
+ dependencies:
+ graceful-fs "^4.1.2"
+
+karma-webpack@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/karma-webpack/-/karma-webpack-4.0.2.tgz#23219bd95bdda853e3073d3874d34447c77bced0"
+ integrity sha512-970/okAsdUOmiMOCY8sb17A2I8neS25Ad9uhyK3GHgmRSIFJbDcNEFE8dqqUhNe9OHiCC9k3DMrSmtd/0ymP1A==
+ dependencies:
+ clone-deep "^4.0.1"
+ loader-utils "^1.1.0"
+ neo-async "^2.6.1"
+ schema-utils "^1.0.0"
+ source-map "^0.7.3"
+ webpack-dev-middleware "^3.7.0"
+
+karma@^3.1.4:
+ version "3.1.4"
+ resolved "https://registry.yarnpkg.com/karma/-/karma-3.1.4.tgz#3890ca9722b10d1d14b726e1335931455788499e"
+ integrity sha512-31Vo8Qr5glN+dZEVIpnPCxEGleqE0EY6CtC2X9TagRV3rRQ3SNrvfhddICkJgUK3AgqpeKSZau03QumTGhGoSw==
+ dependencies:
+ bluebird "^3.3.0"
+ body-parser "^1.16.1"
+ chokidar "^2.0.3"
+ colors "^1.1.0"
+ combine-lists "^1.0.0"
+ connect "^3.6.0"
+ core-js "^2.2.0"
+ di "^0.0.1"
+ dom-serialize "^2.2.0"
+ expand-braces "^0.1.1"
+ flatted "^2.0.0"
+ glob "^7.1.1"
+ graceful-fs "^4.1.2"
+ http-proxy "^1.13.0"
+ isbinaryfile "^3.0.0"
+ lodash "^4.17.5"
+ log4js "^3.0.0"
+ mime "^2.3.1"
+ minimatch "^3.0.2"
+ optimist "^0.6.1"
+ qjobs "^1.1.4"
+ range-parser "^1.2.0"
+ rimraf "^2.6.0"
+ safe-buffer "^5.0.1"
+ socket.io "2.1.1"
+ source-map "^0.6.1"
+ tmp "0.0.33"
+ useragent "2.3.0"
+
+kew@^0.7.0:
+ version "0.7.0"
+ resolved "https://registry.yarnpkg.com/kew/-/kew-0.7.0.tgz#79d93d2d33363d6fdd2970b335d9141ad591d79b"
+ integrity sha1-edk9LTM2PW/dKXCzNdkUGtWR15s=
+
+kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0:
+ version "3.2.2"
+ resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64"
+ integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=
+ dependencies:
+ is-buffer "^1.1.5"
+
+kind-of@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57"
+ integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc=
+ dependencies:
+ is-buffer "^1.1.5"
+
+kind-of@^5.0.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d"
+ integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==
+
+kind-of@^6.0.0, kind-of@^6.0.2:
+ version "6.0.2"
+ resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051"
+ integrity sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==
+
+klaw@^1.0.0:
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439"
+ integrity sha1-QIhDO0azsbolnXh4XY6W9zugJDk=
+ optionalDependencies:
+ graceful-fs "^4.1.9"
+
+klaw@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/klaw/-/klaw-3.0.0.tgz#b11bec9cf2492f06756d6e809ab73a2910259146"
+ integrity sha512-0Fo5oir+O9jnXu5EefYbVK+mHMBeEVEy2cmctR1O1NECcCkPRreJKrS6Qt/j3KC2C148Dfo9i3pCmCMsdqGr0g==
+ dependencies:
+ graceful-fs "^4.1.9"
+
+kleur@^3.0.3:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e"
+ integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==
+
+last-call-webpack-plugin@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/last-call-webpack-plugin/-/last-call-webpack-plugin-3.0.0.tgz#9742df0e10e3cf46e5c0381c2de90d3a7a2d7555"
+ integrity sha512-7KI2l2GIZa9p2spzPIVZBYyNKkN+e/SQPpnjlTiPhdbDW3F86tdKKELxKpzJ5sgU19wQWsACULZmpTPYHeWO5w==
+ dependencies:
+ lodash "^4.17.5"
+ webpack-sources "^1.1.0"
+
+lazystream@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/lazystream/-/lazystream-1.0.0.tgz#f6995fe0f820392f61396be89462407bb77168e4"
+ integrity sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=
+ dependencies:
+ readable-stream "^2.0.5"
+
+lcid@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/lcid/-/lcid-2.0.0.tgz#6ef5d2df60e52f82eb228a4c373e8d1f397253cf"
+ integrity sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==
+ dependencies:
+ invert-kv "^2.0.0"
+
+lcov-parse@^0.0.10:
+ version "0.0.10"
+ resolved "https://registry.yarnpkg.com/lcov-parse/-/lcov-parse-0.0.10.tgz#1b0b8ff9ac9c7889250582b70b71315d9da6d9a3"
+ integrity sha1-GwuP+ayceIklBYK3C3ExXZ2m2aM=
+
+left-pad@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/left-pad/-/left-pad-1.3.0.tgz#5b8a3a7765dfe001261dde915589e782f8c94d1e"
+ integrity sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA==
+
+leven@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/leven/-/leven-2.1.0.tgz#c2e7a9f772094dee9d34202ae8acce4687875580"
+ integrity sha1-wuep93IJTe6dNCAq6KzORoeHVYA=
+
+leven@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2"
+ integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==
+
+levenary@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/levenary/-/levenary-1.1.1.tgz#842a9ee98d2075aa7faeedbe32679e9205f46f77"
+ integrity sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ==
+ dependencies:
+ leven "^3.1.0"
+
+levn@^0.3.0, levn@~0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee"
+ integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=
+ dependencies:
+ prelude-ls "~1.1.2"
+ type-check "~0.3.2"
+
+linkify-it@^2.0.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/linkify-it/-/linkify-it-2.2.0.tgz#e3b54697e78bf915c70a38acd78fd09e0058b1cf"
+ integrity sha512-GnAl/knGn+i1U/wjBz3akz2stz+HrHLsxMwHQGofCDfPvlf+gDKN58UtfmUquTY4/MXeE2x7k19KQmeoZi94Iw==
+ dependencies:
+ uc.micro "^1.0.1"
+
+lint-staged@^7.3.0:
+ version "7.3.0"
+ resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-7.3.0.tgz#90ff33e5ca61ed3dbac35b6f6502dbefdc0db58d"
+ integrity sha512-AXk40M9DAiPi7f4tdJggwuKIViUplYtVj1os1MVEteW7qOkU50EOehayCfO9TsoGK24o/EsWb41yrEgfJDDjCw==
+ dependencies:
+ chalk "^2.3.1"
+ commander "^2.14.1"
+ cosmiconfig "^5.0.2"
+ debug "^3.1.0"
+ dedent "^0.7.0"
+ execa "^0.9.0"
+ find-parent-dir "^0.3.0"
+ is-glob "^4.0.0"
+ is-windows "^1.0.2"
+ jest-validate "^23.5.0"
+ listr "^0.14.1"
+ lodash "^4.17.5"
+ log-symbols "^2.2.0"
+ micromatch "^3.1.8"
+ npm-which "^3.0.1"
+ p-map "^1.1.1"
+ path-is-inside "^1.0.2"
+ pify "^3.0.0"
+ please-upgrade-node "^3.0.2"
+ staged-git-files "1.1.1"
+ string-argv "^0.0.2"
+ stringify-object "^3.2.2"
+
+listr-silent-renderer@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz#924b5a3757153770bf1a8e3fbf74b8bbf3f9242e"
+ integrity sha1-kktaN1cVN3C/Go4/v3S4u/P5JC4=
+
+listr-update-renderer@^0.5.0:
+ version "0.5.0"
+ resolved "https://registry.yarnpkg.com/listr-update-renderer/-/listr-update-renderer-0.5.0.tgz#4ea8368548a7b8aecb7e06d8c95cb45ae2ede6a2"
+ integrity sha512-tKRsZpKz8GSGqoI/+caPmfrypiaq+OQCbd+CovEC24uk1h952lVj5sC7SqyFUm+OaJ5HN/a1YLt5cit2FMNsFA==
+ dependencies:
+ chalk "^1.1.3"
+ cli-truncate "^0.2.1"
+ elegant-spinner "^1.0.1"
+ figures "^1.7.0"
+ indent-string "^3.0.0"
+ log-symbols "^1.0.2"
+ log-update "^2.3.0"
+ strip-ansi "^3.0.1"
+
+listr-verbose-renderer@^0.5.0:
+ version "0.5.0"
+ resolved "https://registry.yarnpkg.com/listr-verbose-renderer/-/listr-verbose-renderer-0.5.0.tgz#f1132167535ea4c1261102b9f28dac7cba1e03db"
+ integrity sha512-04PDPqSlsqIOaaaGZ+41vq5FejI9auqTInicFRndCBgE3bXG8D6W1I+mWhk+1nqbHmyhla/6BUrd5OSiHwKRXw==
+ dependencies:
+ chalk "^2.4.1"
+ cli-cursor "^2.1.0"
+ date-fns "^1.27.2"
+ figures "^2.0.0"
+
+listr@^0.14.1:
+ version "0.14.3"
+ resolved "https://registry.yarnpkg.com/listr/-/listr-0.14.3.tgz#2fea909604e434be464c50bddba0d496928fa586"
+ integrity sha512-RmAl7su35BFd/xoMamRjpIE4j3v+L28o8CT5YhAXQJm1fD+1l9ngXY8JAQRJ+tFK2i5njvi0iRUKV09vPwA0iA==
+ dependencies:
+ "@samverschueren/stream-to-observable" "^0.3.0"
+ is-observable "^1.1.0"
+ is-promise "^2.1.0"
+ is-stream "^1.1.0"
+ listr-silent-renderer "^1.1.1"
+ listr-update-renderer "^0.5.0"
+ listr-verbose-renderer "^0.5.0"
+ p-map "^2.0.0"
+ rxjs "^6.3.3"
+
+load-json-file@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0"
+ integrity sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=
+ dependencies:
+ graceful-fs "^4.1.2"
+ parse-json "^2.2.0"
+ pify "^2.0.0"
+ pinkie-promise "^2.0.0"
+ strip-bom "^2.0.0"
+
+load-json-file@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b"
+ integrity sha1-L19Fq5HjMhYjT9U62rZo607AmTs=
+ dependencies:
+ graceful-fs "^4.1.2"
+ parse-json "^4.0.0"
+ pify "^3.0.0"
+ strip-bom "^3.0.0"
+
+loader-runner@^2.4.0:
+ version "2.4.0"
+ resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357"
+ integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==
+
+loader-utils@1.2.3, loader-utils@^1.0.2, loader-utils@^1.1.0, loader-utils@^1.2.3:
+ version "1.2.3"
+ resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.2.3.tgz#1ff5dc6911c9f0a062531a4c04b609406108c2c7"
+ integrity sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==
+ dependencies:
+ big.js "^5.2.2"
+ emojis-list "^2.0.0"
+ json5 "^1.0.1"
+
+locate-path@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e"
+ integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==
+ dependencies:
+ p-locate "^3.0.0"
+ path-exists "^3.0.0"
+
+lodash._baseassign@^3.0.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz#8c38a099500f215ad09e59f1722fd0c52bfe0a4e"
+ integrity sha1-jDigmVAPIVrQnlnxci/QxSv+Ck4=
+ dependencies:
+ lodash._basecopy "^3.0.0"
+ lodash.keys "^3.0.0"
+
+lodash._basecopy@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz#8da0e6a876cf344c0ad8a54882111dd3c5c7ca36"
+ integrity sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=
+
+lodash._basecreate@^3.0.0:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/lodash._basecreate/-/lodash._basecreate-3.0.3.tgz#1bc661614daa7fc311b7d03bf16806a0213cf821"
+ integrity sha1-G8ZhYU2qf8MRt9A78WgGoCE8+CE=
+
+lodash._getnative@^3.0.0:
+ version "3.9.1"
+ resolved "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5"
+ integrity sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=
+
+lodash._isiterateecall@^3.0.0:
+ version "3.0.9"
+ resolved "https://registry.yarnpkg.com/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz#5203ad7ba425fae842460e696db9cf3e6aac057c"
+ integrity sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=
+
+lodash.camelcase@^4.3.0:
+ version "4.3.0"
+ resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6"
+ integrity sha1-soqmKIorn8ZRA1x3EfZathkDMaY=
+
+lodash.clonedeep@^4.5.0:
+ version "4.5.0"
+ resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef"
+ integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=
+
+lodash.create@3.1.1:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/lodash.create/-/lodash.create-3.1.1.tgz#d7f2849f0dbda7e04682bb8cd72ab022461debe7"
+ integrity sha1-1/KEnw29p+BGgruM1yqwIkYd6+c=
+ dependencies:
+ lodash._baseassign "^3.0.0"
+ lodash._basecreate "^3.0.0"
+ lodash._isiterateecall "^3.0.0"
+
+lodash.defaults@^4.2.0:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c"
+ integrity sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=
+
+lodash.difference@^4.5.0:
+ version "4.5.0"
+ resolved "https://registry.yarnpkg.com/lodash.difference/-/lodash.difference-4.5.0.tgz#9ccb4e505d486b91651345772885a2df27fd017c"
+ integrity sha1-nMtOUF1Ia5FlE0V3KIWi3yf9AXw=
+
+lodash.flatten@^4.4.0:
+ version "4.4.0"
+ resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f"
+ integrity sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=
+
+lodash.includes@^4.3.0:
+ version "4.3.0"
+ resolved "https://registry.yarnpkg.com/lodash.includes/-/lodash.includes-4.3.0.tgz#60bb98a87cb923c68ca1e51325483314849f553f"
+ integrity sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8=
+
+lodash.isarguments@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a"
+ integrity sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=
+
+lodash.isarray@^3.0.0:
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/lodash.isarray/-/lodash.isarray-3.0.4.tgz#79e4eb88c36a8122af86f844aa9bcd851b5fbb55"
+ integrity sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=
+
+lodash.isboolean@^3.0.3:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz#6c2e171db2a257cd96802fd43b01b20d5f5870f6"
+ integrity sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY=
+
+lodash.isinteger@^4.0.4:
+ version "4.0.4"
+ resolved "https://registry.yarnpkg.com/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz#619c0af3d03f8b04c31f5882840b77b11cd68343"
+ integrity sha1-YZwK89A/iwTDH1iChAt3sRzWg0M=
+
+lodash.isnumber@^3.0.3:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz#3ce76810c5928d03352301ac287317f11c0b1ffc"
+ integrity sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w=
+
+lodash.isplainobject@^4.0.6:
+ version "4.0.6"
+ resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb"
+ integrity sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=
+
+lodash.isstring@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/lodash.isstring/-/lodash.isstring-4.0.1.tgz#d527dfb5456eca7cc9bb95d5daeaf88ba54a5451"
+ integrity sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=
+
+lodash.keys@^3.0.0:
+ version "3.1.2"
+ resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-3.1.2.tgz#4dbc0472b156be50a0b286855d1bd0b0c656098a"
+ integrity sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=
+ dependencies:
+ lodash._getnative "^3.0.0"
+ lodash.isarguments "^3.0.0"
+ lodash.isarray "^3.0.0"
+
+lodash.memoize@^4.1.2:
+ version "4.1.2"
+ resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe"
+ integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=
+
+lodash.omit@^4.5.0:
+ version "4.5.0"
+ resolved "https://registry.yarnpkg.com/lodash.omit/-/lodash.omit-4.5.0.tgz#6eb19ae5a1ee1dd9df0b969e66ce0b7fa30b5e60"
+ integrity sha1-brGa5aHuHdnfC5aeZs4Lf6MLXmA=
+
+lodash.once@^4.0.0:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac"
+ integrity sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=
+
+lodash.padend@^4.6.1:
+ version "4.6.1"
+ resolved "https://registry.yarnpkg.com/lodash.padend/-/lodash.padend-4.6.1.tgz#53ccba047d06e158d311f45da625f4e49e6f166e"
+ integrity sha1-U8y6BH0G4VjTEfRdpiX05J5vFm4=
+
+lodash.pick@^4.4.0:
+ version "4.4.0"
+ resolved "https://registry.yarnpkg.com/lodash.pick/-/lodash.pick-4.4.0.tgz#52f05610fff9ded422611441ed1fc123a03001b3"
+ integrity sha1-UvBWEP/53tQiYRRB7R/BI6AwAbM=
+
+lodash.sortby@^4.7.0:
+ version "4.7.0"
+ resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438"
+ integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=
+
+lodash.unescape@4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/lodash.unescape/-/lodash.unescape-4.0.1.tgz#bf2249886ce514cda112fae9218cdc065211fc9c"
+ integrity sha1-vyJJiGzlFM2hEvrpIYzcBlIR/Jw=
+
+lodash.union@^4.6.0:
+ version "4.6.0"
+ resolved "https://registry.yarnpkg.com/lodash.union/-/lodash.union-4.6.0.tgz#48bb5088409f16f1821666641c44dd1aaae3cd88"
+ integrity sha1-SLtQiECfFvGCFmZkHETdGqrjzYg=
+
+lodash.uniq@^4.5.0:
+ version "4.5.0"
+ resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773"
+ integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=
+
+lodash@4.17.15, lodash@^4.0.0, lodash@^4.0.1, lodash@^4.16.6, lodash@^4.17.0, lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.5.0:
+ version "4.17.15"
+ resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548"
+ integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==
+
+lodash@^4.17.10, lodash@^4.17.19:
+ version "4.17.20"
+ resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52"
+ integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==
+
+log-driver@^1.2.7:
+ version "1.2.7"
+ resolved "https://registry.yarnpkg.com/log-driver/-/log-driver-1.2.7.tgz#63b95021f0702fedfa2c9bb0a24e7797d71871d8"
+ integrity sha512-U7KCmLdqsGHBLeWqYlFA0V0Sl6P08EE1ZrmA9cxjUE0WVqT9qnyVDPz1kzpFEP0jdJuFnasWIfSd7fsaNXkpbg==
+
+log-symbols@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-1.0.2.tgz#376ff7b58ea3086a0f09facc74617eca501e1a18"
+ integrity sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=
+ dependencies:
+ chalk "^1.0.0"
+
+log-symbols@^2.1.0, log-symbols@^2.2.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a"
+ integrity sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==
+ dependencies:
+ chalk "^2.0.1"
+
+log-update@^2.3.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/log-update/-/log-update-2.3.0.tgz#88328fd7d1ce7938b29283746f0b1bc126b24708"
+ integrity sha1-iDKP19HOeTiykoN0bwsbwSayRwg=
+ dependencies:
+ ansi-escapes "^3.0.0"
+ cli-cursor "^2.0.0"
+ wrap-ansi "^3.0.1"
+
+log4js@^3.0.0:
+ version "3.0.6"
+ resolved "https://registry.yarnpkg.com/log4js/-/log4js-3.0.6.tgz#e6caced94967eeeb9ce399f9f8682a4b2b28c8ff"
+ integrity sha512-ezXZk6oPJCWL483zj64pNkMuY/NcRX5MPiB0zE6tjZM137aeusrOnW1ecxgF9cmwMWkBMhjteQxBPoZBh9FDxQ==
+ dependencies:
+ circular-json "^0.5.5"
+ date-format "^1.2.0"
+ debug "^3.1.0"
+ rfdc "^1.1.2"
+ streamroller "0.7.0"
+
+lolex@^4.1.0, lolex@^4.2.0:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/lolex/-/lolex-4.2.0.tgz#ddbd7f6213ca1ea5826901ab1222b65d714b3cd7"
+ integrity sha512-gKO5uExCXvSm6zbF562EvM+rd1kQDnB9AZBbiQVzf1ZmdDpxUSvpnAaVOP83N/31mRK8Ml8/VE8DMvsAZQ+7wg==
+
+long@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28"
+ integrity sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==
+
+loose-envify@^1.0.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf"
+ integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==
+ dependencies:
+ js-tokens "^3.0.0 || ^4.0.0"
+
+loud-rejection@^1.0.0:
+ version "1.6.0"
+ resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f"
+ integrity sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=
+ dependencies:
+ currently-unhandled "^0.4.1"
+ signal-exit "^3.0.0"
+
+lru-cache@4.1.x, lru-cache@^4.0.1, lru-cache@^4.1.5:
+ version "4.1.5"
+ resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd"
+ integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==
+ dependencies:
+ pseudomap "^1.0.2"
+ yallist "^2.1.2"
+
+lru-cache@^5.1.1:
+ version "5.1.1"
+ resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920"
+ integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==
+ dependencies:
+ yallist "^3.0.2"
+
+lru-cache@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94"
+ integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==
+ dependencies:
+ yallist "^4.0.0"
+
+make-dir@^2.0.0, make-dir@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5"
+ integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==
+ dependencies:
+ pify "^4.0.1"
+ semver "^5.6.0"
+
+make-dir@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f"
+ integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==
+ dependencies:
+ semver "^6.0.0"
+
+make-error@^1.1.1:
+ version "1.3.6"
+ resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2"
+ integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==
+
+makeerror@1.0.x:
+ version "1.0.11"
+ resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c"
+ integrity sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=
+ dependencies:
+ tmpl "1.0.x"
+
+mamacro@^0.0.3:
+ version "0.0.3"
+ resolved "https://registry.yarnpkg.com/mamacro/-/mamacro-0.0.3.tgz#ad2c9576197c9f1abf308d0787865bd975a3f3e4"
+ integrity sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA==
+
+map-age-cleaner@^0.1.1:
+ version "0.1.3"
+ resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a"
+ integrity sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==
+ dependencies:
+ p-defer "^1.0.0"
+
+map-cache@^0.2.2:
+ version "0.2.2"
+ resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf"
+ integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=
+
+map-obj@^1.0.0, map-obj@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d"
+ integrity sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=
+
+map-visit@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f"
+ integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=
+ dependencies:
+ object-visit "^1.0.0"
+
+markdown-it-anchor@^5.2.7:
+ version "5.3.0"
+ resolved "https://registry.yarnpkg.com/markdown-it-anchor/-/markdown-it-anchor-5.3.0.tgz#d549acd64856a8ecd1bea58365ef385effbac744"
+ integrity sha512-/V1MnLL/rgJ3jkMWo84UR+K+jF1cxNG1a+KwqeXqTIJ+jtA8aWSHuigx8lTzauiIjBDbwF3NcWQMotd0Dm39jA==
+
+markdown-it@^10.0.0:
+ version "10.0.0"
+ resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-10.0.0.tgz#abfc64f141b1722d663402044e43927f1f50a8dc"
+ integrity sha512-YWOP1j7UbDNz+TumYP1kpwnP0aEa711cJjrAQrzd0UXlbJfc5aAq0F/PZHjiioqDC1NKgvIMX+o+9Bk7yuM2dg==
+ dependencies:
+ argparse "^1.0.7"
+ entities "~2.0.0"
+ linkify-it "^2.0.0"
+ mdurl "^1.0.1"
+ uc.micro "^1.0.5"
+
+marked@^0.8.2:
+ version "0.8.2"
+ resolved "https://registry.yarnpkg.com/marked/-/marked-0.8.2.tgz#4faad28d26ede351a7a1aaa5fec67915c869e355"
+ integrity sha512-EGwzEeCcLniFX51DhTpmTom+dSA/MG/OBUDjnWtHbEnjAH180VzUeAw+oE4+Zv+CoYBWyRlYOTR0N8SO9R1PVw==
+
+marked@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/marked/-/marked-2.0.1.tgz#5e7ed7009bfa5c95182e4eb696f85e948cefcee3"
+ integrity sha512-5+/fKgMv2hARmMW7DOpykr2iLhl0NgjyELk5yn92iE7z8Se1IS9n3UsFm86hFXIkvMBmVxki8+ckcpjBeyo/hw==
+
+md5.js@^1.3.4:
+ version "1.3.5"
+ resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f"
+ integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==
+ dependencies:
+ hash-base "^3.0.0"
+ inherits "^2.0.1"
+ safe-buffer "^5.1.2"
+
+mdn-data@2.0.4:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.4.tgz#699b3c38ac6f1d728091a64650b65d388502fd5b"
+ integrity sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==
+
+mdn-data@~1.1.0:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-1.1.4.tgz#50b5d4ffc4575276573c4eedb8780812a8419f01"
+ integrity sha512-FSYbp3lyKjyj3E7fMl6rYvUdX0FBXaluGqlFoYESWQlyUTq8R+wp0rkFxoYFqZlHCvsUXGjyJmLQSnXToYhOSA==
+
+mdurl@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e"
+ integrity sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=
+
+media-typer@0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748"
+ integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=
+
+mem@^4.0.0:
+ version "4.3.0"
+ resolved "https://registry.yarnpkg.com/mem/-/mem-4.3.0.tgz#461af497bc4ae09608cdb2e60eefb69bff744178"
+ integrity sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==
+ dependencies:
+ map-age-cleaner "^0.1.1"
+ mimic-fn "^2.0.0"
+ p-is-promise "^2.0.0"
+
+memory-fs@^0.4.0, memory-fs@^0.4.1:
+ version "0.4.1"
+ resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552"
+ integrity sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=
+ dependencies:
+ errno "^0.1.3"
+ readable-stream "^2.0.1"
+
+meow@^3.3.0:
+ version "3.7.0"
+ resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb"
+ integrity sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=
+ dependencies:
+ camelcase-keys "^2.0.0"
+ decamelize "^1.1.2"
+ loud-rejection "^1.0.0"
+ map-obj "^1.0.1"
+ minimist "^1.1.3"
+ normalize-package-data "^2.3.4"
+ object-assign "^4.0.1"
+ read-pkg-up "^1.0.1"
+ redent "^1.0.0"
+ trim-newlines "^1.0.0"
+
+merge-descriptors@1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61"
+ integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=
+
+merge-stream@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-1.0.1.tgz#4041202d508a342ba00174008df0c251b8c135e1"
+ integrity sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE=
+ dependencies:
+ readable-stream "^2.0.1"
+
+merge2@^1.2.3:
+ version "1.2.4"
+ resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.2.4.tgz#c9269589e6885a60cf80605d9522d4b67ca646e3"
+ integrity sha512-FYE8xI+6pjFOhokZu0We3S5NKCirLbCzSh2Usf3qEyr4X8U+0jNg9P8RZ4qz+V2UoECLVwSyzU3LxXBaLGtD3A==
+
+merge2@^1.3.0:
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae"
+ integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==
+
+methods@~1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee"
+ integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=
+
+micromatch@^3.0.4, micromatch@^3.1.10, micromatch@^3.1.4, micromatch@^3.1.8:
+ version "3.1.10"
+ resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23"
+ integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==
+ dependencies:
+ arr-diff "^4.0.0"
+ array-unique "^0.3.2"
+ braces "^2.3.1"
+ define-property "^2.0.2"
+ extend-shallow "^3.0.2"
+ extglob "^2.0.4"
+ fragment-cache "^0.2.1"
+ kind-of "^6.0.2"
+ nanomatch "^1.2.9"
+ object.pick "^1.3.0"
+ regex-not "^1.0.0"
+ snapdragon "^0.8.1"
+ to-regex "^3.0.2"
+
+micromatch@^4.0.2:
+ version "4.0.4"
+ resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.4.tgz#896d519dfe9db25fce94ceb7a500919bf881ebf9"
+ integrity sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==
+ dependencies:
+ braces "^3.0.1"
+ picomatch "^2.2.3"
+
+miller-rabin@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d"
+ integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==
+ dependencies:
+ bn.js "^4.0.0"
+ brorand "^1.0.1"
+
+mime-db@1.40.0:
+ version "1.40.0"
+ resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.40.0.tgz#a65057e998db090f732a68f6c276d387d4126c32"
+ integrity sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==
+
+mime-db@1.45.0, "mime-db@>= 1.43.0 < 2":
+ version "1.45.0"
+ resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.45.0.tgz#cceeda21ccd7c3a745eba2decd55d4b73e7879ea"
+ integrity sha512-CkqLUxUk15hofLoLyljJSrukZi8mAtgd+yE5uO4tqRZsdsAJKv0O+rFMhVDRJgozy+yG6md5KwuXhD4ocIoP+w==
+
+mime-types@^2.0.8:
+ version "2.1.28"
+ resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.28.tgz#1160c4757eab2c5363888e005273ecf79d2a0ecd"
+ integrity sha512-0TO2yJ5YHYr7M2zzT7gDU1tbwHxEUWBCLt0lscSNpcdAfFyJOVEpRYNS7EXVcTLNj/25QO8gulHC5JtTzSE2UQ==
+ dependencies:
+ mime-db "1.45.0"
+
+mime-types@^2.1.12, mime-types@~2.1.19, mime-types@~2.1.24:
+ version "2.1.24"
+ resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.24.tgz#b6f8d0b3e951efb77dedeca194cff6d16f676f81"
+ integrity sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==
+ dependencies:
+ mime-db "1.40.0"
+
+mime@1.6.0:
+ version "1.6.0"
+ resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1"
+ integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==
+
+mime@^2.2.0:
+ version "2.4.7"
+ resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.7.tgz#962aed9be0ed19c91fd7dc2ece5d7f4e89a90d74"
+ integrity sha512-dhNd1uA2u397uQk3Nv5LM4lm93WYDUXFn3Fu291FJerns4jyTudqhIWe4W04YLy7Uk1tm1Ore04NpjRvQp/NPA==
+
+mime@^2.3.1, mime@^2.4.2:
+ version "2.4.4"
+ resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.4.tgz#bd7b91135fc6b01cde3e9bae33d659b63d8857e5"
+ integrity sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==
+
+mimic-fn@^1.0.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022"
+ integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==
+
+mimic-fn@^2.0.0, mimic-fn@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b"
+ integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==
+
+minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7"
+ integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==
+
+minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a"
+ integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=
+
+"minimatch@2 || 3", minimatch@3.0.4, minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.3, minimatch@^3.0.4:
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
+ integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==
+ dependencies:
+ brace-expansion "^1.1.7"
+
+minimist@0.0.8:
+ version "0.0.8"
+ resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d"
+ integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=
+
+minimist@1.2.0, minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
+ integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=
+
+minimist@^1.2.5:
+ version "1.2.5"
+ resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602"
+ integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==
+
+minimist@~0.0.1:
+ version "0.0.10"
+ resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf"
+ integrity sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=
+
+minipass@^2.2.1, minipass@^2.3.5:
+ version "2.3.5"
+ resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.5.tgz#cacebe492022497f656b0f0f51e2682a9ed2d848"
+ integrity sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA==
+ dependencies:
+ safe-buffer "^5.1.2"
+ yallist "^3.0.0"
+
+minizlib@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.2.1.tgz#dd27ea6136243c7c880684e8672bb3a45fd9b614"
+ integrity sha512-7+4oTUOWKg7AuL3vloEWekXY2/D20cevzsrNT2kGWm+39J9hGTCBv8VI5Pm5lXZ/o3/mdR4f8rflAPhnQb8mPA==
+ dependencies:
+ minipass "^2.2.1"
+
+mississippi@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022"
+ integrity sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==
+ dependencies:
+ concat-stream "^1.5.0"
+ duplexify "^3.4.2"
+ end-of-stream "^1.1.0"
+ flush-write-stream "^1.0.0"
+ from2 "^2.1.0"
+ parallel-transform "^1.1.0"
+ pump "^3.0.0"
+ pumpify "^1.3.3"
+ stream-each "^1.1.0"
+ through2 "^2.0.0"
+
+mixin-deep@^1.2.0:
+ version "1.3.2"
+ resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566"
+ integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==
+ dependencies:
+ for-in "^1.0.2"
+ is-extendable "^1.0.1"
+
+mkdirp2@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/mkdirp2/-/mkdirp2-1.0.4.tgz#56de1f8f5c93cf2199906362eba0f9f262ee4437"
+ integrity sha512-Q2PKB4ZR4UPtjLl76JfzlgSCUZhSV1AXQgAZa1qt5RiaALFjP/CDrGvFBrOz7Ck6McPcwMAxTsJvWOUjOU8XMw==
+
+mkdirp@0.5.1, mkdirp@0.5.x, mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.1:
+ version "0.5.1"
+ resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903"
+ integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=
+ dependencies:
+ minimist "0.0.8"
+
+mkdirp@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e"
+ integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==
+
+mocha@^3.5.3:
+ version "3.5.3"
+ resolved "https://registry.yarnpkg.com/mocha/-/mocha-3.5.3.tgz#1e0480fe36d2da5858d1eb6acc38418b26eaa20d"
+ integrity sha512-/6na001MJWEtYxHOV1WLfsmR4YIynkUEhBwzsb+fk2qmQ3iqsi258l/Q2MWHJMImAcNpZ8DEdYAK72NHoIQ9Eg==
+ dependencies:
+ browser-stdout "1.3.0"
+ commander "2.9.0"
+ debug "2.6.8"
+ diff "3.2.0"
+ escape-string-regexp "1.0.5"
+ glob "7.1.1"
+ growl "1.9.2"
+ he "1.1.1"
+ json3 "3.3.2"
+ lodash.create "3.1.1"
+ mkdirp "0.5.1"
+ supports-color "3.1.2"
+
+mocha@^5.2.0:
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/mocha/-/mocha-5.2.0.tgz#6d8ae508f59167f940f2b5b3c4a612ae50c90ae6"
+ integrity sha512-2IUgKDhc3J7Uug+FxMXuqIyYzH7gJjXECKe/w43IGgQHTSj3InJi+yAA7T24L9bQMRKiUEHxEX37G5JpVUGLcQ==
+ dependencies:
+ browser-stdout "1.3.1"
+ commander "2.15.1"
+ debug "3.1.0"
+ diff "3.5.0"
+ escape-string-regexp "1.0.5"
+ glob "7.1.2"
+ growl "1.10.5"
+ he "1.1.1"
+ minimatch "3.0.4"
+ mkdirp "0.5.1"
+ supports-color "5.4.0"
+
+moment@2.x.x, moment@^2.24.0:
+ version "2.24.0"
+ resolved "https://registry.yarnpkg.com/moment/-/moment-2.24.0.tgz#0d055d53f5052aa653c9f6eb68bb5d12bf5c2b5b"
+ integrity sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg==
+
+move-concurrently@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92"
+ integrity sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=
+ dependencies:
+ aproba "^1.1.1"
+ copy-concurrently "^1.0.0"
+ fs-write-stream-atomic "^1.0.8"
+ mkdirp "^0.5.1"
+ rimraf "^2.5.4"
+ run-queue "^1.0.3"
+
+ms@2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
+ integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=
+
+ms@2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a"
+ integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==
+
+ms@2.1.2, ms@^2.0.0, ms@^2.1.1:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
+ integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
+
+mute-stream@0.0.8:
+ version "0.0.8"
+ resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d"
+ integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==
+
+mz@^2.7.0:
+ version "2.7.0"
+ resolved "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32"
+ integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==
+ dependencies:
+ any-promise "^1.0.0"
+ object-assign "^4.0.1"
+ thenify-all "^1.0.0"
+
+nan@^2.12.1:
+ version "2.14.0"
+ resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.0.tgz#7818f722027b2459a86f0295d434d1fc2336c52c"
+ integrity sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==
+
+nanomatch@^1.2.9:
+ version "1.2.13"
+ resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119"
+ integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==
+ dependencies:
+ arr-diff "^4.0.0"
+ array-unique "^0.3.2"
+ define-property "^2.0.2"
+ extend-shallow "^3.0.2"
+ fragment-cache "^0.2.1"
+ is-windows "^1.0.2"
+ kind-of "^6.0.2"
+ object.pick "^1.3.0"
+ regex-not "^1.0.0"
+ snapdragon "^0.8.1"
+ to-regex "^3.0.1"
+
+natural-compare@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
+ integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=
+
+needle@^2.2.1:
+ version "2.4.0"
+ resolved "https://registry.yarnpkg.com/needle/-/needle-2.4.0.tgz#6833e74975c444642590e15a750288c5f939b57c"
+ integrity sha512-4Hnwzr3mi5L97hMYeNl8wRW/Onhy4nUKR/lVemJ8gJedxxUyBLm9kkrDColJvoSfwi0jCNhD+xCdOtiGDQiRZg==
+ dependencies:
+ debug "^3.2.6"
+ iconv-lite "^0.4.4"
+ sax "^1.2.4"
+
+negotiator@0.6.2:
+ version "0.6.2"
+ resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb"
+ integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==
+
+neo-async@^2.5.0, neo-async@^2.6.0, neo-async@^2.6.1:
+ version "2.6.1"
+ resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c"
+ integrity sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==
+
+nice-try@^1.0.4:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366"
+ integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==
+
+nise@^1.5.1:
+ version "1.5.1"
+ resolved "https://registry.yarnpkg.com/nise/-/nise-1.5.1.tgz#de61d99a1d3b46b5233be4531569b9a8e27372b2"
+ integrity sha512-edFWm0fsFG2n318rfEnKlTZTkjlbVOFF9XIA+fj+Ed+Qz1laYW2lobwavWoMzGrYDHH1EpiNJgDfvGnkZztR/g==
+ dependencies:
+ "@sinonjs/formatio" "^3.2.1"
+ "@sinonjs/text-encoding" "^0.7.1"
+ just-extend "^4.0.2"
+ lolex "^4.1.0"
+ path-to-regexp "^1.7.0"
+
+node-environment-flags@^1.0.5:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/node-environment-flags/-/node-environment-flags-1.0.6.tgz#a30ac13621f6f7d674260a54dede048c3982c088"
+ integrity sha512-5Evy2epuL+6TM0lCQGpFIj6KwiEsGh1SrHUhTbNX+sLbBtjidPZFAnVK9y5yU1+h//RitLbRHTIMyxQPtxMdHw==
+ dependencies:
+ object.getownpropertydescriptors "^2.0.3"
+ semver "^5.7.0"
+
+node-fetch@2.6.1, node-fetch@^2.3.0, node-fetch@^2.6.1:
+ version "2.6.1"
+ resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052"
+ integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==
+
+node-fetch@^1.7.3:
+ version "1.7.3"
+ resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef"
+ integrity sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==
+ dependencies:
+ encoding "^0.1.11"
+ is-stream "^1.0.1"
+
+node-forge@^0.10.0:
+ version "0.10.0"
+ resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.10.0.tgz#32dea2afb3e9926f02ee5ce8794902691a676bf3"
+ integrity sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==
+
+node-int64@^0.4.0:
+ version "0.4.0"
+ resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b"
+ integrity sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=
+
+node-libs-browser@^2.2.1:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425"
+ integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==
+ dependencies:
+ assert "^1.1.1"
+ browserify-zlib "^0.2.0"
+ buffer "^4.3.0"
+ console-browserify "^1.1.0"
+ constants-browserify "^1.0.0"
+ crypto-browserify "^3.11.0"
+ domain-browser "^1.1.1"
+ events "^3.0.0"
+ https-browserify "^1.0.0"
+ os-browserify "^0.3.0"
+ path-browserify "0.0.1"
+ process "^0.11.10"
+ punycode "^1.2.4"
+ querystring-es3 "^0.2.0"
+ readable-stream "^2.3.3"
+ stream-browserify "^2.0.1"
+ stream-http "^2.7.2"
+ string_decoder "^1.0.0"
+ timers-browserify "^2.0.4"
+ tty-browserify "0.0.0"
+ url "^0.11.0"
+ util "^0.11.0"
+ vm-browserify "^1.0.1"
+
+node-modules-regexp@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40"
+ integrity sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=
+
+node-notifier@^5.2.1:
+ version "5.4.1"
+ resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-5.4.1.tgz#7c0192cc63aedb25cd99619174daa27902b10903"
+ integrity sha512-p52B+onAEHKW1OF9MGO/S7k/ahGEHfhP5/tvwYzog/5XLYOd8ZuD6vdNZdUuWMONRnKPneXV43v3s6Snx1wsCQ==
+ dependencies:
+ growly "^1.3.0"
+ is-wsl "^1.1.0"
+ semver "^5.5.0"
+ shellwords "^0.1.1"
+ which "^1.3.0"
+
+node-pre-gyp@^0.12.0:
+ version "0.12.0"
+ resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.12.0.tgz#39ba4bb1439da030295f899e3b520b7785766149"
+ integrity sha512-4KghwV8vH5k+g2ylT+sLTjy5wmUOb9vPhnM8NHvRf9dHmnW/CndrFXy2aRPaPST6dugXSdHXfeaHQm77PIz/1A==
+ dependencies:
+ detect-libc "^1.0.2"
+ mkdirp "^0.5.1"
+ needle "^2.2.1"
+ nopt "^4.0.1"
+ npm-packlist "^1.1.6"
+ npmlog "^4.0.2"
+ rc "^1.2.7"
+ rimraf "^2.6.1"
+ semver "^5.3.0"
+ tar "^4"
+
+node-releases@^1.1.25:
+ version "1.1.27"
+ resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.27.tgz#b19ec8add2afe9a826a99dceccc516104c1edaf4"
+ integrity sha512-9iXUqHKSGo6ph/tdXVbHFbhRVQln4ZDTIBJCzsa90HimnBYc5jw8RWYt4wBYFHehGyC3koIz5O4mb2fHrbPOuA==
+ dependencies:
+ semver "^5.3.0"
+
+node-releases@^1.1.60:
+ version "1.1.60"
+ resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.60.tgz#6948bdfce8286f0b5d0e5a88e8384e954dfe7084"
+ integrity sha512-gsO4vjEdQaTusZAEebUWp2a5d7dF5DYoIpDG7WySnk7BuZDW+GPpHXoXXuYawRBr/9t5q54tirPz79kFIWg4dA==
+
+node-releases@^1.1.70:
+ version "1.1.71"
+ resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.71.tgz#cb1334b179896b1c89ecfdd4b725fb7bbdfc7dbb"
+ integrity sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg==
+
+nopt@3.x:
+ version "3.0.6"
+ resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9"
+ integrity sha1-xkZdvwirzU2zWTF/eaxopkayj/k=
+ dependencies:
+ abbrev "1"
+
+nopt@^4.0.1, nopt@~4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d"
+ integrity sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=
+ dependencies:
+ abbrev "1"
+ osenv "^0.1.4"
+
+normalize-package-data@^2.3.2, normalize-package-data@^2.3.4:
+ version "2.5.0"
+ resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8"
+ integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==
+ dependencies:
+ hosted-git-info "^2.1.4"
+ resolve "^1.10.0"
+ semver "2 || 3 || 4 || 5"
+ validate-npm-package-license "^3.0.1"
+
+normalize-path@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9"
+ integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=
+ dependencies:
+ remove-trailing-separator "^1.0.1"
+
+normalize-path@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
+ integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==
+
+normalize-url@^3.0.0:
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559"
+ integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==
+
+npm-bundled@^1.0.1:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.6.tgz#e7ba9aadcef962bb61248f91721cd932b3fe6bdd"
+ integrity sha512-8/JCaftHwbd//k6y2rEWp6k1wxVfpFzB6t1p825+cUb7Ym2XQfhwIC5KwhrvzZRJu+LtDE585zVaS32+CGtf0g==
+
+npm-packlist@^1.1.6:
+ version "1.4.4"
+ resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.4.tgz#866224233850ac534b63d1a6e76050092b5d2f44"
+ integrity sha512-zTLo8UcVYtDU3gdeaFu2Xu0n0EvelfHDGuqtNIn5RO7yQj4H1TqNdBc/yZjxnWA0PVB8D3Woyp0i5B43JwQ6Vw==
+ dependencies:
+ ignore-walk "^3.0.1"
+ npm-bundled "^1.0.1"
+
+npm-path@^2.0.2:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/npm-path/-/npm-path-2.0.4.tgz#c641347a5ff9d6a09e4d9bce5580c4f505278e64"
+ integrity sha512-IFsj0R9C7ZdR5cP+ET342q77uSRdtWOlWpih5eC+lu29tIDbNEgDbzgVJ5UFvYHWhxDZ5TFkJafFioO0pPQjCw==
+ dependencies:
+ which "^1.2.10"
+
+npm-run-path@^2.0.0, npm-run-path@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f"
+ integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=
+ dependencies:
+ path-key "^2.0.0"
+
+npm-which@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/npm-which/-/npm-which-3.0.1.tgz#9225f26ec3a285c209cae67c3b11a6b4ab7140aa"
+ integrity sha1-kiXybsOihcIJyuZ8OxGmtKtxQKo=
+ dependencies:
+ commander "^2.9.0"
+ npm-path "^2.0.2"
+ which "^1.2.10"
+
+npmlog@^4.0.2:
+ version "4.1.2"
+ resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b"
+ integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==
+ dependencies:
+ are-we-there-yet "~1.1.2"
+ console-control-strings "~1.1.0"
+ gauge "~2.7.3"
+ set-blocking "~2.0.0"
+
+nth-check@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c"
+ integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==
+ dependencies:
+ boolbase "~1.0.0"
+
+null-check@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/null-check/-/null-check-1.0.0.tgz#977dffd7176012b9ec30d2a39db5cf72a0439edd"
+ integrity sha1-l33/1xdgErnsMNKjnbXPcqBDnt0=
+
+number-is-nan@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d"
+ integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=
+
+nwsapi@^2.0.7:
+ version "2.1.4"
+ resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.1.4.tgz#e006a878db23636f8e8a67d33ca0e4edf61a842f"
+ integrity sha512-iGfd9Y6SFdTNldEy2L0GUhcarIutFmk+MPWIn9dmj8NMIup03G08uUF2KGbbmv/Ux4RT0VZJoP/sVbWA6d/VIw==
+
+oauth-sign@~0.9.0:
+ version "0.9.0"
+ resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455"
+ integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==
+
+object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
+ integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=
+
+object-component@0.0.3:
+ version "0.0.3"
+ resolved "https://registry.yarnpkg.com/object-component/-/object-component-0.0.3.tgz#f0c69aa50efc95b866c186f400a33769cb2f1291"
+ integrity sha1-8MaapQ78lbhmwYb0AKM3acsvEpE=
+
+object-copy@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c"
+ integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw=
+ dependencies:
+ copy-descriptor "^0.1.0"
+ define-property "^0.2.5"
+ kind-of "^3.0.3"
+
+object-get@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/object-get/-/object-get-2.1.1.tgz#1dad63baf6d94df184d1c58756cc9be55b174dac"
+ integrity sha512-7n4IpLMzGGcLEMiQKsNR7vCe+N5E9LORFrtNUVy4sO3dj9a3HedZCxEL2T7QuLhcHN1NBuBsMOKaOsAYI9IIvg==
+
+object-keys@^1.0.0, object-keys@^1.0.11, object-keys@^1.0.12:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e"
+ integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==
+
+object-to-spawn-args@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/object-to-spawn-args/-/object-to-spawn-args-2.0.0.tgz#00484be684e9213fb5a67f988b18a9d11ad5fcbd"
+ integrity sha512-ZMT4owlXg3JGegecLlAgAA/6BsdKHn63R3ayXcAa3zFkF7oUBHcSb0oxszeutYe0FO2c1lT5pwCuidLkC4Gx3g==
+
+object-visit@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb"
+ integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=
+ dependencies:
+ isobject "^3.0.0"
+
+object.assign@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da"
+ integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==
+ dependencies:
+ define-properties "^1.1.2"
+ function-bind "^1.1.1"
+ has-symbols "^1.0.0"
+ object-keys "^1.0.11"
+
+object.getownpropertydescriptors@^2.0.3:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz#8758c846f5b407adab0f236e0986f14b051caa16"
+ integrity sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=
+ dependencies:
+ define-properties "^1.1.2"
+ es-abstract "^1.5.1"
+
+object.pick@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747"
+ integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=
+ dependencies:
+ isobject "^3.0.1"
+
+object.values@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.0.tgz#bf6810ef5da3e5325790eaaa2be213ea84624da9"
+ integrity sha512-8mf0nKLAoFX6VlNVdhGj31SVYpaNFtUnuoOXWyFEstsWRgU837AK+JYM0iAxwkSzGRbwn8cbFmgbyxj1j4VbXg==
+ dependencies:
+ define-properties "^1.1.3"
+ es-abstract "^1.12.0"
+ function-bind "^1.1.1"
+ has "^1.0.3"
+
+on-finished@~2.3.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947"
+ integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=
+ dependencies:
+ ee-first "1.1.1"
+
+once@1.x, once@^1.3.0, once@^1.3.1, once@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
+ integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E=
+ dependencies:
+ wrappy "1"
+
+onetime@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4"
+ integrity sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=
+ dependencies:
+ mimic-fn "^1.0.0"
+
+onetime@^5.1.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.0.tgz#fff0f3c91617fe62bb50189636e99ac8a6df7be5"
+ integrity sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==
+ dependencies:
+ mimic-fn "^2.1.0"
+
+opener@^1.5.1:
+ version "1.5.1"
+ resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.1.tgz#6d2f0e77f1a0af0032aca716c2c1fbb8e7e8abed"
+ integrity sha512-goYSy5c2UXE4Ra1xixabeVh1guIX/ZV/YokJksb6q2lubWu6UbvPQ20p542/sFIll1nl8JnCyK9oBaOcCWXwvA==
+
+optimist@^0.6.1:
+ version "0.6.1"
+ resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686"
+ integrity sha1-2j6nRob6IaGaERwybpDrFaAZZoY=
+ dependencies:
+ minimist "~0.0.1"
+ wordwrap "~0.0.2"
+
+optimize-css-assets-webpack-plugin@^5.0.1:
+ version "5.0.3"
+ resolved "https://registry.yarnpkg.com/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.3.tgz#e2f1d4d94ad8c0af8967ebd7cf138dcb1ef14572"
+ integrity sha512-q9fbvCRS6EYtUKKSwI87qm2IxlyJK5b4dygW1rKUBT6mMDhdG5e5bZT63v6tnJR9F9FB/H5a0HTmtw+laUBxKA==
+ dependencies:
+ cssnano "^4.1.10"
+ last-call-webpack-plugin "^3.0.0"
+
+optionator@^0.8.1, optionator@^0.8.2:
+ version "0.8.2"
+ resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64"
+ integrity sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=
+ dependencies:
+ deep-is "~0.1.3"
+ fast-levenshtein "~2.0.4"
+ levn "~0.3.0"
+ prelude-ls "~1.1.2"
+ type-check "~0.3.2"
+ wordwrap "~1.0.0"
+
+os-browserify@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27"
+ integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=
+
+os-homedir@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3"
+ integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M=
+
+os-locale@^3.0.0, os-locale@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a"
+ integrity sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==
+ dependencies:
+ execa "^1.0.0"
+ lcid "^2.0.0"
+ mem "^4.0.0"
+
+os-tmpdir@^1.0.0, os-tmpdir@~1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
+ integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=
+
+osenv@^0.1.4:
+ version "0.1.5"
+ resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410"
+ integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==
+ dependencies:
+ os-homedir "^1.0.0"
+ os-tmpdir "^1.0.0"
+
+output-file-sync@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/output-file-sync/-/output-file-sync-2.0.1.tgz#f53118282f5f553c2799541792b723a4c71430c0"
+ integrity sha512-mDho4qm7WgIXIGf4eYU1RHN2UU5tPfVYVSRwDJw0uTmj35DQUt/eNp19N7v6T3SrR0ESTEf2up2CGO73qI35zQ==
+ dependencies:
+ graceful-fs "^4.1.11"
+ is-plain-obj "^1.1.0"
+ mkdirp "^0.5.1"
+
+p-defer@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c"
+ integrity sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=
+
+p-each-series@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-1.0.0.tgz#930f3d12dd1f50e7434457a22cd6f04ac6ad7f71"
+ integrity sha1-kw89Et0fUOdDRFeiLNbwSsatf3E=
+ dependencies:
+ p-reduce "^1.0.0"
+
+p-finally@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae"
+ integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=
+
+p-is-promise@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-2.1.0.tgz#918cebaea248a62cf7ffab8e3bca8c5f882fc42e"
+ integrity sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==
+
+p-limit@^2.0.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.0.tgz#417c9941e6027a9abcba5092dd2904e255b5fbc2"
+ integrity sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==
+ dependencies:
+ p-try "^2.0.0"
+
+p-limit@^3.0.1, p-limit@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b"
+ integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==
+ dependencies:
+ yocto-queue "^0.1.0"
+
+p-locate@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4"
+ integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==
+ dependencies:
+ p-limit "^2.0.0"
+
+p-map@^1.1.1:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/p-map/-/p-map-1.2.0.tgz#e4e94f311eabbc8633a1e79908165fca26241b6b"
+ integrity sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==
+
+p-map@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175"
+ integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==
+
+p-reduce@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/p-reduce/-/p-reduce-1.0.0.tgz#18c2b0dd936a4690a529f8231f58a0fdb6a47dfa"
+ integrity sha1-GMKw3ZNqRpClKfgjH1ig/bakffo=
+
+p-try@^2.0.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6"
+ integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==
+
+pako@~1.0.5:
+ version "1.0.10"
+ resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.10.tgz#4328badb5086a426aa90f541977d4955da5c9732"
+ integrity sha512-0DTvPVU3ed8+HNXOu5Bs+o//Mbdj9VNQMUOe9oKCwh8l0GNwpTDMKCWbRjgtD291AWnkAgkqA/LOnQS8AmS1tw==
+
+parallel-transform@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.1.0.tgz#d410f065b05da23081fcd10f28854c29bda33b06"
+ integrity sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY=
+ dependencies:
+ cyclist "~0.2.2"
+ inherits "^2.0.3"
+ readable-stream "^2.1.5"
+
+parent-module@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2"
+ integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==
+ dependencies:
+ callsites "^3.0.0"
+
+parse-asn1@^5.0.0:
+ version "5.1.4"
+ resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.4.tgz#37f6628f823fbdeb2273b4d540434a22f3ef1fcc"
+ integrity sha512-Qs5duJcuvNExRfFZ99HDD3z4mAi3r9Wl/FOjEOijlxwCZs7E7mW2vjTpgQ4J8LpTF8x5v+1Vn5UQFejmWT11aw==
+ dependencies:
+ asn1.js "^4.0.0"
+ browserify-aes "^1.0.0"
+ create-hash "^1.1.0"
+ evp_bytestokey "^1.0.0"
+ pbkdf2 "^3.0.3"
+ safe-buffer "^5.1.1"
+
+parse-json@^2.2.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9"
+ integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=
+ dependencies:
+ error-ex "^1.2.0"
+
+parse-json@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0"
+ integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=
+ dependencies:
+ error-ex "^1.3.1"
+ json-parse-better-errors "^1.0.1"
+
+parse-node-version@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/parse-node-version/-/parse-node-version-1.0.1.tgz#e2b5dbede00e7fa9bc363607f53327e8b073189b"
+ integrity sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==
+
+parse-passwd@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6"
+ integrity sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=
+
+parse5@4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/parse5/-/parse5-4.0.0.tgz#6d78656e3da8d78b4ec0b906f7c08ef1dfe3f608"
+ integrity sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==
+
+parseqs@0.0.5:
+ version "0.0.5"
+ resolved "https://registry.yarnpkg.com/parseqs/-/parseqs-0.0.5.tgz#d5208a3738e46766e291ba2ea173684921a8b89d"
+ integrity sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=
+ dependencies:
+ better-assert "~1.0.0"
+
+parseuri@0.0.5:
+ version "0.0.5"
+ resolved "https://registry.yarnpkg.com/parseuri/-/parseuri-0.0.5.tgz#80204a50d4dbb779bfdc6ebe2778d90e4bce320a"
+ integrity sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=
+ dependencies:
+ better-assert "~1.0.0"
+
+parseurl@~1.3.3:
+ version "1.3.3"
+ resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4"
+ integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==
+
+pascalcase@^0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14"
+ integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=
+
+path-browserify@0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a"
+ integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==
+
+path-dirname@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0"
+ integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=
+
+path-exists@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b"
+ integrity sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=
+ dependencies:
+ pinkie-promise "^2.0.0"
+
+path-exists@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515"
+ integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=
+
+path-is-absolute@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
+ integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
+
+path-is-inside@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53"
+ integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=
+
+path-key@^2.0.0, path-key@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40"
+ integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=
+
+path-parse@^1.0.6:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c"
+ integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==
+
+path-to-regexp@0.1.7:
+ version "0.1.7"
+ resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c"
+ integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=
+
+path-to-regexp@^1.7.0:
+ version "1.7.0"
+ resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.7.0.tgz#59fde0f435badacba103a84e9d3bc64e96b9937d"
+ integrity sha1-Wf3g9DW62suhA6hOnTvGTpa5k30=
+ dependencies:
+ isarray "0.0.1"
+
+path-type@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441"
+ integrity sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=
+ dependencies:
+ graceful-fs "^4.1.2"
+ pify "^2.0.0"
+ pinkie-promise "^2.0.0"
+
+path-type@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f"
+ integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==
+ dependencies:
+ pify "^3.0.0"
+
+path-type@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b"
+ integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==
+
+pbkdf2@^3.0.3:
+ version "3.0.17"
+ resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.17.tgz#976c206530617b14ebb32114239f7b09336e93a6"
+ integrity sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==
+ dependencies:
+ create-hash "^1.1.2"
+ create-hmac "^1.1.4"
+ ripemd160 "^2.0.1"
+ safe-buffer "^5.0.1"
+ sha.js "^2.4.8"
+
+pend@~1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50"
+ integrity sha1-elfrVQpng/kRUzH89GY9XI4AelA=
+
+performance-now@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b"
+ integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=
+
+phantomjs-prebuilt@^2.1.7:
+ version "2.1.16"
+ resolved "https://registry.yarnpkg.com/phantomjs-prebuilt/-/phantomjs-prebuilt-2.1.16.tgz#efd212a4a3966d3647684ea8ba788549be2aefef"
+ integrity sha1-79ISpKOWbTZHaE6ouniFSb4q7+8=
+ dependencies:
+ es6-promise "^4.0.3"
+ extract-zip "^1.6.5"
+ fs-extra "^1.0.0"
+ hasha "^2.2.0"
+ kew "^0.7.0"
+ progress "^1.1.8"
+ request "^2.81.0"
+ request-progress "^2.0.1"
+ which "^1.2.10"
+
+picomatch@^2.2.1, picomatch@^2.2.3:
+ version "2.2.3"
+ resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.3.tgz#465547f359ccc206d3c48e46a1bcb89bf7ee619d"
+ integrity sha512-KpELjfwcCDUb9PeigTs2mBJzXUPzAuP2oPcA989He8Rte0+YUAjw1JVedDhuTKPkHjSYzMN3npC9luThGYEKdg==
+
+pify@^2.0.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
+ integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw=
+
+pify@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176"
+ integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=
+
+pify@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231"
+ integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==
+
+pinkie-promise@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa"
+ integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o=
+ dependencies:
+ pinkie "^2.0.0"
+
+pinkie@^2.0.0:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870"
+ integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA=
+
+pirates@^4.0.0, pirates@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.1.tgz#643a92caf894566f91b2b986d2c66950a8e2fb87"
+ integrity sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==
+ dependencies:
+ node-modules-regexp "^1.0.0"
+
+pkg-dir@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3"
+ integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==
+ dependencies:
+ find-up "^3.0.0"
+
+platform@1.3.5:
+ version "1.3.5"
+ resolved "https://registry.yarnpkg.com/platform/-/platform-1.3.5.tgz#fb6958c696e07e2918d2eeda0f0bc9448d733444"
+ integrity sha512-TuvHS8AOIZNAlE77WUDiR4rySV/VMptyMfcfeoMgs4P8apaZM3JrnbzBiixKUv+XR6i+BXrQh8WAnjaSPFO65Q==
+
+please-upgrade-node@^3.0.2, please-upgrade-node@^3.1.1:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz#aeddd3f994c933e4ad98b99d9a556efa0e2fe942"
+ integrity sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==
+ dependencies:
+ semver-compare "^1.0.0"
+
+plugin-error@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/plugin-error/-/plugin-error-1.0.1.tgz#77016bd8919d0ac377fdcdd0322328953ca5781c"
+ integrity sha512-L1zP0dk7vGweZME2i+EeakvUNqSrdiI3F91TwEoYiGrAfUXmVv6fJIq4g82PAXxNsWOp0J7ZqQy/3Szz0ajTxA==
+ dependencies:
+ ansi-colors "^1.0.1"
+ arr-diff "^4.0.0"
+ arr-union "^3.1.0"
+ extend-shallow "^3.0.2"
+
+pn@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/pn/-/pn-1.1.0.tgz#e2f4cef0e219f463c179ab37463e4e1ecdccbafb"
+ integrity sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==
+
+posix-character-classes@^0.1.0:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab"
+ integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=
+
+postcss-calc@^7.0.1:
+ version "7.0.1"
+ resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-7.0.1.tgz#36d77bab023b0ecbb9789d84dcb23c4941145436"
+ integrity sha512-oXqx0m6tb4N3JGdmeMSc/i91KppbYsFZKdH0xMOqK8V1rJlzrKlTdokz8ozUXLVejydRN6u2IddxpcijRj2FqQ==
+ dependencies:
+ css-unit-converter "^1.1.1"
+ postcss "^7.0.5"
+ postcss-selector-parser "^5.0.0-rc.4"
+ postcss-value-parser "^3.3.1"
+
+postcss-colormin@^4.0.3:
+ version "4.0.3"
+ resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-4.0.3.tgz#ae060bce93ed794ac71264f08132d550956bd381"
+ integrity sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw==
+ dependencies:
+ browserslist "^4.0.0"
+ color "^3.0.0"
+ has "^1.0.0"
+ postcss "^7.0.0"
+ postcss-value-parser "^3.0.0"
+
+postcss-convert-values@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz#ca3813ed4da0f812f9d43703584e449ebe189a7f"
+ integrity sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ==
+ dependencies:
+ postcss "^7.0.0"
+ postcss-value-parser "^3.0.0"
+
+postcss-discard-comments@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz#1fbabd2c246bff6aaad7997b2b0918f4d7af4033"
+ integrity sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg==
+ dependencies:
+ postcss "^7.0.0"
+
+postcss-discard-duplicates@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz#3fe133cd3c82282e550fc9b239176a9207b784eb"
+ integrity sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ==
+ dependencies:
+ postcss "^7.0.0"
+
+postcss-discard-empty@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz#c8c951e9f73ed9428019458444a02ad90bb9f765"
+ integrity sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w==
+ dependencies:
+ postcss "^7.0.0"
+
+postcss-discard-overridden@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz#652aef8a96726f029f5e3e00146ee7a4e755ff57"
+ integrity sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==
+ dependencies:
+ postcss "^7.0.0"
+
+postcss-merge-longhand@^4.0.11:
+ version "4.0.11"
+ resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz#62f49a13e4a0ee04e7b98f42bb16062ca2549e24"
+ integrity sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw==
+ dependencies:
+ css-color-names "0.0.4"
+ postcss "^7.0.0"
+ postcss-value-parser "^3.0.0"
+ stylehacks "^4.0.0"
+
+postcss-merge-rules@^4.0.3:
+ version "4.0.3"
+ resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz#362bea4ff5a1f98e4075a713c6cb25aefef9a650"
+ integrity sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ==
+ dependencies:
+ browserslist "^4.0.0"
+ caniuse-api "^3.0.0"
+ cssnano-util-same-parent "^4.0.0"
+ postcss "^7.0.0"
+ postcss-selector-parser "^3.0.0"
+ vendors "^1.0.0"
+
+postcss-minify-font-values@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz#cd4c344cce474343fac5d82206ab2cbcb8afd5a6"
+ integrity sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg==
+ dependencies:
+ postcss "^7.0.0"
+ postcss-value-parser "^3.0.0"
+
+postcss-minify-gradients@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz#93b29c2ff5099c535eecda56c4aa6e665a663471"
+ integrity sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q==
+ dependencies:
+ cssnano-util-get-arguments "^4.0.0"
+ is-color-stop "^1.0.0"
+ postcss "^7.0.0"
+ postcss-value-parser "^3.0.0"
+
+postcss-minify-params@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz#6b9cef030c11e35261f95f618c90036d680db874"
+ integrity sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg==
+ dependencies:
+ alphanum-sort "^1.0.0"
+ browserslist "^4.0.0"
+ cssnano-util-get-arguments "^4.0.0"
+ postcss "^7.0.0"
+ postcss-value-parser "^3.0.0"
+ uniqs "^2.0.0"
+
+postcss-minify-selectors@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz#e2e5eb40bfee500d0cd9243500f5f8ea4262fbd8"
+ integrity sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g==
+ dependencies:
+ alphanum-sort "^1.0.0"
+ has "^1.0.0"
+ postcss "^7.0.0"
+ postcss-selector-parser "^3.0.0"
+
+postcss-modules-extract-imports@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz#818719a1ae1da325f9832446b01136eeb493cd7e"
+ integrity sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ==
+ dependencies:
+ postcss "^7.0.5"
+
+postcss-modules-local-by-default@^2.0.6:
+ version "2.0.6"
+ resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-2.0.6.tgz#dd9953f6dd476b5fd1ef2d8830c8929760b56e63"
+ integrity sha512-oLUV5YNkeIBa0yQl7EYnxMgy4N6noxmiwZStaEJUSe2xPMcdNc8WmBQuQCx18H5psYbVxz8zoHk0RAAYZXP9gA==
+ dependencies:
+ postcss "^7.0.6"
+ postcss-selector-parser "^6.0.0"
+ postcss-value-parser "^3.3.1"
+
+postcss-modules-scope@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-2.1.0.tgz#ad3f5bf7856114f6fcab901b0502e2a2bc39d4eb"
+ integrity sha512-91Rjps0JnmtUB0cujlc8KIKCsJXWjzuxGeT/+Q2i2HXKZ7nBUeF9YQTZZTNvHVoNYj1AthsjnGLtqDUE0Op79A==
+ dependencies:
+ postcss "^7.0.6"
+ postcss-selector-parser "^6.0.0"
+
+postcss-modules-values@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-2.0.0.tgz#479b46dc0c5ca3dc7fa5270851836b9ec7152f64"
+ integrity sha512-Ki7JZa7ff1N3EIMlPnGTZfUMe69FFwiQPnVSXC9mnn3jozCRBYIxiZd44yJOV2AmabOo4qFf8s0dC/+lweG7+w==
+ dependencies:
+ icss-replace-symbols "^1.1.0"
+ postcss "^7.0.6"
+
+postcss-normalize-charset@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz#8b35add3aee83a136b0471e0d59be58a50285dd4"
+ integrity sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g==
+ dependencies:
+ postcss "^7.0.0"
+
+postcss-normalize-display-values@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz#0dbe04a4ce9063d4667ed2be476bb830c825935a"
+ integrity sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ==
+ dependencies:
+ cssnano-util-get-match "^4.0.0"
+ postcss "^7.0.0"
+ postcss-value-parser "^3.0.0"
+
+postcss-normalize-positions@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz#05f757f84f260437378368a91f8932d4b102917f"
+ integrity sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA==
+ dependencies:
+ cssnano-util-get-arguments "^4.0.0"
+ has "^1.0.0"
+ postcss "^7.0.0"
+ postcss-value-parser "^3.0.0"
+
+postcss-normalize-repeat-style@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz#c4ebbc289f3991a028d44751cbdd11918b17910c"
+ integrity sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q==
+ dependencies:
+ cssnano-util-get-arguments "^4.0.0"
+ cssnano-util-get-match "^4.0.0"
+ postcss "^7.0.0"
+ postcss-value-parser "^3.0.0"
+
+postcss-normalize-string@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz#cd44c40ab07a0c7a36dc5e99aace1eca4ec2690c"
+ integrity sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA==
+ dependencies:
+ has "^1.0.0"
+ postcss "^7.0.0"
+ postcss-value-parser "^3.0.0"
+
+postcss-normalize-timing-functions@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz#8e009ca2a3949cdaf8ad23e6b6ab99cb5e7d28d9"
+ integrity sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A==
+ dependencies:
+ cssnano-util-get-match "^4.0.0"
+ postcss "^7.0.0"
+ postcss-value-parser "^3.0.0"
+
+postcss-normalize-unicode@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz#841bd48fdcf3019ad4baa7493a3d363b52ae1cfb"
+ integrity sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg==
+ dependencies:
+ browserslist "^4.0.0"
+ postcss "^7.0.0"
+ postcss-value-parser "^3.0.0"
+
+postcss-normalize-url@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz#10e437f86bc7c7e58f7b9652ed878daaa95faae1"
+ integrity sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA==
+ dependencies:
+ is-absolute-url "^2.0.0"
+ normalize-url "^3.0.0"
+ postcss "^7.0.0"
+ postcss-value-parser "^3.0.0"
+
+postcss-normalize-whitespace@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz#bf1d4070fe4fcea87d1348e825d8cc0c5faa7d82"
+ integrity sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA==
+ dependencies:
+ postcss "^7.0.0"
+ postcss-value-parser "^3.0.0"
+
+postcss-ordered-values@^4.1.2:
+ version "4.1.2"
+ resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz#0cf75c820ec7d5c4d280189559e0b571ebac0eee"
+ integrity sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw==
+ dependencies:
+ cssnano-util-get-arguments "^4.0.0"
+ postcss "^7.0.0"
+ postcss-value-parser "^3.0.0"
+
+postcss-reduce-initial@^4.0.3:
+ version "4.0.3"
+ resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz#7fd42ebea5e9c814609639e2c2e84ae270ba48df"
+ integrity sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA==
+ dependencies:
+ browserslist "^4.0.0"
+ caniuse-api "^3.0.0"
+ has "^1.0.0"
+ postcss "^7.0.0"
+
+postcss-reduce-transforms@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz#17efa405eacc6e07be3414a5ca2d1074681d4e29"
+ integrity sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg==
+ dependencies:
+ cssnano-util-get-match "^4.0.0"
+ has "^1.0.0"
+ postcss "^7.0.0"
+ postcss-value-parser "^3.0.0"
+
+postcss-selector-parser@^3.0.0:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz#4f875f4afb0c96573d5cf4d74011aee250a7e865"
+ integrity sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU=
+ dependencies:
+ dot-prop "^4.1.1"
+ indexes-of "^1.0.1"
+ uniq "^1.0.1"
+
+postcss-selector-parser@^5.0.0-rc.4:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz#249044356697b33b64f1a8f7c80922dddee7195c"
+ integrity sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==
+ dependencies:
+ cssesc "^2.0.0"
+ indexes-of "^1.0.1"
+ uniq "^1.0.1"
+
+postcss-selector-parser@^6.0.0:
+ version "6.0.2"
+ resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz#934cf799d016c83411859e09dcecade01286ec5c"
+ integrity sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg==
+ dependencies:
+ cssesc "^3.0.0"
+ indexes-of "^1.0.1"
+ uniq "^1.0.1"
+
+postcss-svgo@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-4.0.2.tgz#17b997bc711b333bab143aaed3b8d3d6e3d38258"
+ integrity sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw==
+ dependencies:
+ is-svg "^3.0.0"
+ postcss "^7.0.0"
+ postcss-value-parser "^3.0.0"
+ svgo "^1.0.0"
+
+postcss-unique-selectors@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz#9446911f3289bfd64c6d680f073c03b1f9ee4bac"
+ integrity sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==
+ dependencies:
+ alphanum-sort "^1.0.0"
+ postcss "^7.0.0"
+ uniqs "^2.0.0"
+
+postcss-value-parser@^3.0.0, postcss-value-parser@^3.3.0, postcss-value-parser@^3.3.1:
+ version "3.3.1"
+ resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281"
+ integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==
+
+postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.5, postcss@^7.0.6:
+ version "7.0.17"
+ resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.17.tgz#4da1bdff5322d4a0acaab4d87f3e782436bad31f"
+ integrity sha512-546ZowA+KZ3OasvQZHsbuEpysvwTZNGJv9EfyCQdsIDltPSWHAeTQ5fQy/Npi2ZDtLI3zs7Ps/p6wThErhm9fQ==
+ dependencies:
+ chalk "^2.4.2"
+ source-map "^0.6.1"
+ supports-color "^6.1.0"
+
+power-assert-context-formatter@^1.0.7:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/power-assert-context-formatter/-/power-assert-context-formatter-1.2.0.tgz#8fbe72692288ec5a7203cdf215c8b838a6061d2a"
+ integrity sha512-HLNEW8Bin+BFCpk/zbyKwkEu9W8/zThIStxGo7weYcFkKgMuGCHUJhvJeBGXDZf0Qm2xis4pbnnciGZiX0EpSg==
+ dependencies:
+ core-js "^2.0.0"
+ power-assert-context-traversal "^1.2.0"
+
+power-assert-context-reducer-ast@^1.0.7:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/power-assert-context-reducer-ast/-/power-assert-context-reducer-ast-1.2.0.tgz#c7ca1c9e39a6fb717f7ac5fe9e76e192bf525df3"
+ integrity sha512-EgOxmZ/Lb7tw4EwSKX7ZnfC0P/qRZFEG28dx/690qvhmOJ6hgThYFm5TUWANDLK5NiNKlPBi5WekVGd2+5wPrw==
+ dependencies:
+ acorn "^5.0.0"
+ acorn-es7-plugin "^1.0.12"
+ core-js "^2.0.0"
+ espurify "^1.6.0"
+ estraverse "^4.2.0"
+
+power-assert-context-traversal@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/power-assert-context-traversal/-/power-assert-context-traversal-1.2.0.tgz#f6e71454baf640de5c1c9c270349f5c9ab0b2e94"
+ integrity sha512-NFoHU6g2umNajiP2l4qb0BRWD773Aw9uWdWYH9EQsVwIZnog5bd2YYLFCVvaxWpwNzWeEfZIon2xtyc63026pQ==
+ dependencies:
+ core-js "^2.0.0"
+ estraverse "^4.1.0"
+
+power-assert-formatter@^1.4.1:
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/power-assert-formatter/-/power-assert-formatter-1.4.1.tgz#5dc125ed50a3dfb1dda26c19347f3bf58ec2884a"
+ integrity sha1-XcEl7VCj37HdomwZNH879Y7CiEo=
+ dependencies:
+ core-js "^2.0.0"
+ power-assert-context-formatter "^1.0.7"
+ power-assert-context-reducer-ast "^1.0.7"
+ power-assert-renderer-assertion "^1.0.7"
+ power-assert-renderer-comparison "^1.0.7"
+ power-assert-renderer-diagram "^1.0.7"
+ power-assert-renderer-file "^1.0.7"
+
+power-assert-renderer-assertion@^1.0.7:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/power-assert-renderer-assertion/-/power-assert-renderer-assertion-1.2.0.tgz#3db6ffcda106b37bc1e06432ad0d748a682b147a"
+ integrity sha512-3F7Q1ZLmV2ZCQv7aV7NJLNK9G7QsostrhOU7U0RhEQS/0vhEqrRg2jEJl1jtUL4ZyL2dXUlaaqrmPv5r9kRvIg==
+ dependencies:
+ power-assert-renderer-base "^1.1.1"
+ power-assert-util-string-width "^1.2.0"
+
+power-assert-renderer-base@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/power-assert-renderer-base/-/power-assert-renderer-base-1.1.1.tgz#96a650c6fd05ee1bc1f66b54ad61442c8b3f63eb"
+ integrity sha1-lqZQxv0F7hvB9mtUrWFELIs/Y+s=
+
+power-assert-renderer-comparison@^1.0.7:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/power-assert-renderer-comparison/-/power-assert-renderer-comparison-1.2.0.tgz#e4f88113225a69be8aa586ead05aef99462c0495"
+ integrity sha512-7c3RKPDBKK4E3JqdPtYRE9cM8AyX4LC4yfTvvTYyx8zSqmT5kJnXwzR0yWQLOavACllZfwrAGQzFiXPc5sWa+g==
+ dependencies:
+ core-js "^2.0.0"
+ diff-match-patch "^1.0.0"
+ power-assert-renderer-base "^1.1.1"
+ stringifier "^1.3.0"
+ type-name "^2.0.1"
+
+power-assert-renderer-diagram@^1.0.7:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/power-assert-renderer-diagram/-/power-assert-renderer-diagram-1.2.0.tgz#37f66e8542e5677c5b58e6d72b01c0d9a30e2219"
+ integrity sha512-JZ6PC+DJPQqfU6dwSmpcoD7gNnb/5U77bU5KgNwPPa+i1Pxiz6UuDeM3EUBlhZ1HvH9tMjI60anqVyi5l2oNdg==
+ dependencies:
+ core-js "^2.0.0"
+ power-assert-renderer-base "^1.1.1"
+ power-assert-util-string-width "^1.2.0"
+ stringifier "^1.3.0"
+
+power-assert-renderer-file@^1.0.7:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/power-assert-renderer-file/-/power-assert-renderer-file-1.2.0.tgz#3f4bebd9e1455d75cf2ac541e7bb515a87d4ce4b"
+ integrity sha512-/oaVrRbeOtGoyyd7e4IdLP/jIIUFJdqJtsYzP9/88R39CMnfF/S/rUc8ZQalENfUfQ/wQHu+XZYRMaCEZmEesg==
+ dependencies:
+ power-assert-renderer-base "^1.1.1"
+
+power-assert-util-string-width@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/power-assert-util-string-width/-/power-assert-util-string-width-1.2.0.tgz#6e06d5e3581bb876c5d377c53109fffa95bd91a0"
+ integrity sha512-lX90G0igAW0iyORTILZ/QjZWsa1MZ6VVY3L0K86e2eKun3S4LKPH4xZIl8fdeMYLfOjkaszbNSzf1uugLeAm2A==
+ dependencies:
+ eastasianwidth "^0.2.0"
+
+power-assert@^1.6.1:
+ version "1.6.1"
+ resolved "https://registry.yarnpkg.com/power-assert/-/power-assert-1.6.1.tgz#b28cbc02ae808afd1431d0cd5093a39ac5a5b1fe"
+ integrity sha512-VWkkZV6Y+W8qLX/PtJu2Ur2jDPIs0a5vbP0TpKeybNcIXmT4vcKoVkyTp5lnQvTpY/DxacAZ4RZisHRHLJcAZQ==
+ dependencies:
+ define-properties "^1.1.2"
+ empower "^1.3.1"
+ power-assert-formatter "^1.4.1"
+ universal-deep-strict-equal "^1.2.1"
+ xtend "^4.0.0"
+
+prelude-ls@~1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54"
+ integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=
+
+prettier@2:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.2.1.tgz#795a1a78dd52f073da0cd42b21f9c91381923ff5"
+ integrity sha512-PqyhM2yCjg/oKkFPtTGUojv7gnZAoG80ttl45O6x2Ug/rMJw4wcc9k6aaf2hibP7BGVCCM33gZoGjyvt9mm16Q==
+
+pretty-format@^23.6.0:
+ version "23.6.0"
+ resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-23.6.0.tgz#5eaac8eeb6b33b987b7fe6097ea6a8a146ab5760"
+ integrity sha512-zf9NV1NSlDLDjycnwm6hpFATCGl/K1lt0R/GdkAK2O5LN/rwJoB+Mh93gGJjut4YbmecbfgLWVGSTCr0Ewvvbw==
+ dependencies:
+ ansi-regex "^3.0.0"
+ ansi-styles "^3.2.0"
+
+pretty-format@^24.8.0:
+ version "24.8.0"
+ resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-24.8.0.tgz#8dae7044f58db7cb8be245383b565a963e3c27f2"
+ integrity sha512-P952T7dkrDEplsR+TuY7q3VXDae5Sr7zmQb12JU/NDQa/3CH7/QW0yvqLcGN6jL+zQFKaoJcPc+yJxMTGmosqw==
+ dependencies:
+ "@jest/types" "^24.8.0"
+ ansi-regex "^4.0.0"
+ ansi-styles "^3.2.0"
+ react-is "^16.8.4"
+
+pretty-format@^25.2.1, pretty-format@^25.5.0:
+ version "25.5.0"
+ resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-25.5.0.tgz#7873c1d774f682c34b8d48b6743a2bf2ac55791a"
+ integrity sha512-kbo/kq2LQ/A/is0PQwsEHM7Ca6//bGPPvU6UnsdDRSKTWxT/ru/xb88v4BJf6a69H+uTytOEsTusT9ksd/1iWQ==
+ dependencies:
+ "@jest/types" "^25.5.0"
+ ansi-regex "^5.0.0"
+ ansi-styles "^4.0.0"
+ react-is "^16.12.0"
+
+process-nextick-args@~2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2"
+ integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==
+
+process@^0.11.10:
+ version "0.11.10"
+ resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182"
+ integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI=
+
+progress@^1.1.8:
+ version "1.1.8"
+ resolved "https://registry.yarnpkg.com/progress/-/progress-1.1.8.tgz#e260c78f6161cdd9b0e56cc3e0a85de17c7a57be"
+ integrity sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74=
+
+progress@^2.0.0:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8"
+ integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==
+
+promise-inflight@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3"
+ integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM=
+
+promise-polyfill@8.1.3:
+ version "8.1.3"
+ resolved "https://registry.yarnpkg.com/promise-polyfill/-/promise-polyfill-8.1.3.tgz#8c99b3cf53f3a91c68226ffde7bde81d7f904116"
+ integrity sha512-MG5r82wBzh7pSKDRa9y+vllNHz3e3d4CNj1PQE4BQYxLme0gKYYBm9YENq+UkEikyZ0XbiGWxYlVw3Rl9O/U8g==
+
+promise-polyfill@^6.0.2:
+ version "6.1.0"
+ resolved "https://registry.yarnpkg.com/promise-polyfill/-/promise-polyfill-6.1.0.tgz#dfa96943ea9c121fca4de9b5868cb39d3472e057"
+ integrity sha1-36lpQ+qcEh/KTem1hoyznTRy4Fc=
+
+prompts@^2.0.1:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.2.1.tgz#f901dd2a2dfee080359c0e20059b24188d75ad35"
+ integrity sha512-VObPvJiWPhpZI6C5m60XOzTfnYg/xc/an+r9VYymj9WJW3B/DIH+REzjpAACPf8brwPeP+7vz3bIim3S+AaMjw==
+ dependencies:
+ kleur "^3.0.3"
+ sisteransi "^1.0.3"
+
+proto-list@~1.2.1:
+ version "1.2.4"
+ resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849"
+ integrity sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=
+
+protobufjs@^6.10.2, protobufjs@^6.8.6:
+ version "6.10.2"
+ resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-6.10.2.tgz#b9cb6bd8ec8f87514592ba3fdfd28e93f33a469b"
+ integrity sha512-27yj+04uF6ya9l+qfpH187aqEzfCF4+Uit0I9ZBQVqK09hk/SQzKa2MUqUpXaVa7LOFRg1TSSr3lVxGOk6c0SQ==
+ dependencies:
+ "@protobufjs/aspromise" "^1.1.2"
+ "@protobufjs/base64" "^1.1.2"
+ "@protobufjs/codegen" "^2.0.4"
+ "@protobufjs/eventemitter" "^1.1.0"
+ "@protobufjs/fetch" "^1.1.0"
+ "@protobufjs/float" "^1.0.2"
+ "@protobufjs/inquire" "^1.1.0"
+ "@protobufjs/path" "^1.1.2"
+ "@protobufjs/pool" "^1.1.0"
+ "@protobufjs/utf8" "^1.1.0"
+ "@types/long" "^4.0.1"
+ "@types/node" "^13.7.0"
+ long "^4.0.0"
+
+proxy-addr@~2.0.5:
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.5.tgz#34cbd64a2d81f4b1fd21e76f9f06c8a45299ee34"
+ integrity sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ==
+ dependencies:
+ forwarded "~0.1.2"
+ ipaddr.js "1.9.0"
+
+prr@~1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476"
+ integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY=
+
+pseudomap@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3"
+ integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM=
+
+psl@^1.1.24, psl@^1.1.28:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/psl/-/psl-1.3.0.tgz#e1ebf6a3b5564fa8376f3da2275da76d875ca1bd"
+ integrity sha512-avHdspHO+9rQTLbv1RO+MPYeP/SzsCoxofjVnHanETfQhTJrmB0HlDoW+EiN/R+C0BZ+gERab9NY0lPN2TxNag==
+
+public-encrypt@^4.0.0:
+ version "4.0.3"
+ resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0"
+ integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==
+ dependencies:
+ bn.js "^4.1.0"
+ browserify-rsa "^4.0.0"
+ create-hash "^1.1.0"
+ parse-asn1 "^5.0.0"
+ randombytes "^2.0.1"
+ safe-buffer "^5.1.2"
+
+pump@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909"
+ integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==
+ dependencies:
+ end-of-stream "^1.1.0"
+ once "^1.3.1"
+
+pump@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64"
+ integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==
+ dependencies:
+ end-of-stream "^1.1.0"
+ once "^1.3.1"
+
+pumpify@^1.3.3:
+ version "1.5.1"
+ resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce"
+ integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==
+ dependencies:
+ duplexify "^3.6.0"
+ inherits "^2.0.3"
+ pump "^2.0.0"
+
+pumpify@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-2.0.1.tgz#abfc7b5a621307c728b551decbbefb51f0e4aa1e"
+ integrity sha512-m7KOje7jZxrmutanlkS1daj1dS6z6BgslzOXmcSEpIlCxM3VJH7lG5QLeck/6hgF6F4crFf01UtQmNsJfweTAw==
+ dependencies:
+ duplexify "^4.1.1"
+ inherits "^2.0.3"
+ pump "^3.0.0"
+
+punycode@1.3.2:
+ version "1.3.2"
+ resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d"
+ integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=
+
+punycode@^1.2.4, punycode@^1.4.1:
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e"
+ integrity sha1-wNWmOycYgArY4esPpSachN1BhF4=
+
+punycode@^2.1.0, punycode@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
+ integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==
+
+q@^1.1.2, q@^1.5.0, q@^1.5.1:
+ version "1.5.1"
+ resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7"
+ integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=
+
+qjobs@^1.1.4:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/qjobs/-/qjobs-1.2.0.tgz#c45e9c61800bd087ef88d7e256423bdd49e5d071"
+ integrity sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==
+
+qs@6.7.0:
+ version "6.7.0"
+ resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc"
+ integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==
+
+qs@~6.5.2:
+ version "6.5.2"
+ resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36"
+ integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==
+
+querystring-es3@^0.2.0:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73"
+ integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=
+
+querystring@0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620"
+ integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=
+
+queue-microtask@^1.2.2:
+ version "1.2.3"
+ resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243"
+ integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==
+
+randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a"
+ integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==
+ dependencies:
+ safe-buffer "^5.1.0"
+
+randomfill@^1.0.3:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458"
+ integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==
+ dependencies:
+ randombytes "^2.0.5"
+ safe-buffer "^5.1.0"
+
+range-parser@^1.2.0, range-parser@^1.2.1, range-parser@~1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031"
+ integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==
+
+raw-body@2.4.0:
+ version "2.4.0"
+ resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.0.tgz#a1ce6fb9c9bc356ca52e89256ab59059e13d0332"
+ integrity sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==
+ dependencies:
+ bytes "3.1.0"
+ http-errors "1.7.2"
+ iconv-lite "0.4.24"
+ unpipe "1.0.0"
+
+rc@^1.2.7:
+ version "1.2.8"
+ resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed"
+ integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==
+ dependencies:
+ deep-extend "^0.6.0"
+ ini "~1.3.0"
+ minimist "^1.2.0"
+ strip-json-comments "~2.0.1"
+
+react-is@^16.12.0:
+ version "16.13.1"
+ resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4"
+ integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==
+
+react-is@^16.8.4:
+ version "16.9.0"
+ resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.9.0.tgz#21ca9561399aad0ff1a7701c01683e8ca981edcb"
+ integrity sha512-tJBzzzIgnnRfEm046qRcURvwQnZVXmuCbscxUO5RWrGTXpon2d4c8mI0D8WE6ydVIm29JiLB6+RslkIvym9Rjw==
+
+read-pkg-up@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02"
+ integrity sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=
+ dependencies:
+ find-up "^1.0.0"
+ read-pkg "^1.0.0"
+
+read-pkg-up@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-4.0.0.tgz#1b221c6088ba7799601c808f91161c66e58f8978"
+ integrity sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA==
+ dependencies:
+ find-up "^3.0.0"
+ read-pkg "^3.0.0"
+
+read-pkg@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28"
+ integrity sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=
+ dependencies:
+ load-json-file "^1.0.0"
+ normalize-package-data "^2.3.2"
+ path-type "^1.0.0"
+
+read-pkg@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389"
+ integrity sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=
+ dependencies:
+ load-json-file "^4.0.0"
+ normalize-package-data "^2.3.2"
+ path-type "^3.0.0"
+
+read-pkg@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-4.0.1.tgz#963625378f3e1c4d48c85872b5a6ec7d5d093237"
+ integrity sha1-ljYlN48+HE1IyFhytabsfV0JMjc=
+ dependencies:
+ normalize-package-data "^2.3.2"
+ parse-json "^4.0.0"
+ pify "^3.0.0"
+
+"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.0, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6:
+ version "2.3.6"
+ resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf"
+ integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==
+ dependencies:
+ core-util-is "~1.0.0"
+ inherits "~2.0.3"
+ isarray "~1.0.0"
+ process-nextick-args "~2.0.0"
+ safe-buffer "~5.1.1"
+ string_decoder "~1.1.1"
+ util-deprecate "~1.0.1"
+
+readable-stream@^3.0.1, readable-stream@^3.0.2, readable-stream@^3.1.1, readable-stream@^3.4.0:
+ version "3.4.0"
+ resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.4.0.tgz#a51c26754658e0a3c21dbf59163bd45ba6f447fc"
+ integrity sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==
+ dependencies:
+ inherits "^2.0.3"
+ string_decoder "^1.1.1"
+ util-deprecate "^1.0.1"
+
+readdirp@^2.2.1:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525"
+ integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==
+ dependencies:
+ graceful-fs "^4.1.11"
+ micromatch "^3.1.10"
+ readable-stream "^2.0.2"
+
+realpath-native@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/realpath-native/-/realpath-native-1.1.0.tgz#2003294fea23fb0672f2476ebe22fcf498a2d65c"
+ integrity sha512-wlgPA6cCIIg9gKz0fgAPjnzh4yR/LnXovwuo9hvyGvx3h8nX4+/iLZplfUWasXpqD8BdnGnP5njOFjkUwPzvjA==
+ dependencies:
+ util.promisify "^1.0.0"
+
+redent@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde"
+ integrity sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=
+ dependencies:
+ indent-string "^2.1.0"
+ strip-indent "^1.0.1"
+
+reduce-extract@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/reduce-extract/-/reduce-extract-1.0.0.tgz#67f2385beda65061b5f5f4312662e8b080ca1525"
+ integrity sha1-Z/I4W+2mUGG19fQxJmLosIDKFSU=
+ dependencies:
+ test-value "^1.0.1"
+
+reduce-flatten@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/reduce-flatten/-/reduce-flatten-1.0.1.tgz#258c78efd153ddf93cb561237f61184f3696e327"
+ integrity sha1-JYx479FT3fk8tWEjf2EYTzaW4yc=
+
+reduce-flatten@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/reduce-flatten/-/reduce-flatten-3.0.0.tgz#da477d68453fd9510f9a5fbef86e0fa04b4fd315"
+ integrity sha512-eczl8wAYBxJ6Egl6I1ECIF+8z6sHu+KE7BzaEDZTpPXKXfy9SUDQlVYwkRcNTjJLC3Iakxbhss50KuT/R6SYfg==
+
+reduce-unique@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/reduce-unique/-/reduce-unique-2.0.1.tgz#fb34b90e89297c1e08d75dcf17e9a6443ea71081"
+ integrity sha512-x4jH/8L1eyZGR785WY+ePtyMNhycl1N2XOLxhCbzZFaqF4AXjLzqSxa2UHgJ2ZVR/HHyPOvl1L7xRnW8ye5MdA==
+
+reduce-without@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/reduce-without/-/reduce-without-1.0.1.tgz#68ad0ead11855c9a37d4e8256c15bbf87972fc8c"
+ integrity sha1-aK0OrRGFXJo31OglbBW7+Hly/Iw=
+ dependencies:
+ test-value "^2.0.0"
+
+regenerate-unicode-properties@^8.2.0:
+ version "8.2.0"
+ resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz#e5de7111d655e7ba60c057dbe9ff37c87e65cdec"
+ integrity sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==
+ dependencies:
+ regenerate "^1.4.0"
+
+regenerate@^1.4.0:
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.1.tgz#cad92ad8e6b591773485fbe05a485caf4f457e6f"
+ integrity sha512-j2+C8+NtXQgEKWk49MMP5P/u2GhnahTtVkRIHr5R5lVRlbKvmQ+oS+A5aLKWp2ma5VkT8sh6v+v4hbH0YHR66A==
+
+regenerator-runtime@^0.11.0:
+ version "0.11.1"
+ resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9"
+ integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==
+
+regenerator-runtime@^0.13.2:
+ version "0.13.3"
+ resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz#7cf6a77d8f5c6f60eb73c5fc1955b2ceb01e6bf5"
+ integrity sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw==
+
+regenerator-runtime@^0.13.4:
+ version "0.13.7"
+ resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz#cac2dacc8a1ea675feaabaeb8ae833898ae46f55"
+ integrity sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==
+
+regenerator-transform@^0.14.2:
+ version "0.14.5"
+ resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.5.tgz#c98da154683671c9c4dcb16ece736517e1b7feb4"
+ integrity sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==
+ dependencies:
+ "@babel/runtime" "^7.8.4"
+
+regex-not@^1.0.0, regex-not@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c"
+ integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==
+ dependencies:
+ extend-shallow "^3.0.2"
+ safe-regex "^1.1.0"
+
+regexpp@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f"
+ integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==
+
+regexpp@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.0.0.tgz#dd63982ee3300e67b41c1956f850aa680d9d330e"
+ integrity sha512-Z+hNr7RAVWxznLPuA7DIh8UNX1j9CDrUQxskw9IrBE1Dxue2lyXT+shqEIeLUjrokxIP8CMy1WkjgG3rTsd5/g==
+
+regexpu-core@^4.7.0:
+ version "4.7.0"
+ resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.7.0.tgz#fcbf458c50431b0bb7b45d6967b8192d91f3d938"
+ integrity sha512-TQ4KXRnIn6tz6tjnrXEkD/sshygKH/j5KzK86X8MkeHyZ8qst/LZ89j3X4/8HEIfHANTFIP/AbXakeRhWIl5YQ==
+ dependencies:
+ regenerate "^1.4.0"
+ regenerate-unicode-properties "^8.2.0"
+ regjsgen "^0.5.1"
+ regjsparser "^0.6.4"
+ unicode-match-property-ecmascript "^1.0.4"
+ unicode-match-property-value-ecmascript "^1.2.0"
+
+regjsgen@^0.5.1:
+ version "0.5.2"
+ resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.2.tgz#92ff295fb1deecbf6ecdab2543d207e91aa33733"
+ integrity sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==
+
+regjsparser@^0.6.4:
+ version "0.6.4"
+ resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.4.tgz#a769f8684308401a66e9b529d2436ff4d0666272"
+ integrity sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw==
+ dependencies:
+ jsesc "~0.5.0"
+
+remove-trailing-separator@^1.0.1:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef"
+ integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8=
+
+repeat-element@^1.1.2:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce"
+ integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==
+
+repeat-string@^0.2.2:
+ version "0.2.2"
+ resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-0.2.2.tgz#c7a8d3236068362059a7e4651fc6884e8b1fb4ae"
+ integrity sha1-x6jTI2BoNiBZp+RlH8aITosftK4=
+
+repeat-string@^1.6.1:
+ version "1.6.1"
+ resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637"
+ integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc=
+
+repeating@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda"
+ integrity sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=
+ dependencies:
+ is-finite "^1.0.0"
+
+request-progress@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/request-progress/-/request-progress-2.0.1.tgz#5d36bb57961c673aa5b788dbc8141fdf23b44e08"
+ integrity sha1-XTa7V5YcZzqlt4jbyBQf3yO0Tgg=
+ dependencies:
+ throttleit "^1.0.0"
+
+request-promise-core@1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.2.tgz#339f6aababcafdb31c799ff158700336301d3346"
+ integrity sha512-UHYyq1MO8GsefGEt7EprS8UrXsm1TxEvFUX1IMTuSLU2Rh7fTIdFtl8xD7JiEYiWU2dl+NYAjCTksTehQUxPag==
+ dependencies:
+ lodash "^4.17.11"
+
+request-promise-native@^1.0.5:
+ version "1.0.7"
+ resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.7.tgz#a49868a624bdea5069f1251d0a836e0d89aa2c59"
+ integrity sha512-rIMnbBdgNViL37nZ1b3L/VfPOpSi0TqVDQPAvO6U14lMzOLrt5nilxCQqtDKhZeDiW0/hkCXGoQjhgJd/tCh6w==
+ dependencies:
+ request-promise-core "1.1.2"
+ stealthy-require "^1.1.1"
+ tough-cookie "^2.3.3"
+
+request@2.88.0, request@^2.81.0, request@^2.86.0, request@^2.87.0:
+ version "2.88.0"
+ resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef"
+ integrity sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==
+ dependencies:
+ aws-sign2 "~0.7.0"
+ aws4 "^1.8.0"
+ caseless "~0.12.0"
+ combined-stream "~1.0.6"
+ extend "~3.0.2"
+ forever-agent "~0.6.1"
+ form-data "~2.3.2"
+ har-validator "~5.1.0"
+ http-signature "~1.2.0"
+ is-typedarray "~1.0.0"
+ isstream "~0.1.2"
+ json-stringify-safe "~5.0.1"
+ mime-types "~2.1.19"
+ oauth-sign "~0.9.0"
+ performance-now "^2.1.0"
+ qs "~6.5.2"
+ safe-buffer "^5.1.2"
+ tough-cookie "~2.4.3"
+ tunnel-agent "^0.6.0"
+ uuid "^3.3.2"
+
+require-directory@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
+ integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I=
+
+require-main-filename@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1"
+ integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=
+
+require-main-filename@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b"
+ integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==
+
+requires-port@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff"
+ integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=
+
+requizzle@^0.2.3:
+ version "0.2.3"
+ resolved "https://registry.yarnpkg.com/requizzle/-/requizzle-0.2.3.tgz#4675c90aacafb2c036bd39ba2daa4a1cb777fded"
+ integrity sha512-YanoyJjykPxGHii0fZP0uUPEXpvqfBDxWV7s6GKAiiOsiqhX6vHNyW3Qzdmqp/iq/ExbhaGbVrjB4ruEVSM4GQ==
+ dependencies:
+ lodash "^4.17.14"
+
+resolve-cwd@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a"
+ integrity sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=
+ dependencies:
+ resolve-from "^3.0.0"
+
+resolve-dir@^1.0.0, resolve-dir@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-1.0.1.tgz#79a40644c362be82f26effe739c9bb5382046f43"
+ integrity sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=
+ dependencies:
+ expand-tilde "^2.0.0"
+ global-modules "^1.0.0"
+
+resolve-from@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748"
+ integrity sha1-six699nWiBvItuZTM17rywoYh0g=
+
+resolve-from@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6"
+ integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==
+
+resolve-url@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a"
+ integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=
+
+resolve@1.1.7, resolve@1.1.x:
+ version "1.1.7"
+ resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b"
+ integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=
+
+resolve@^1.1.6, resolve@^1.10.0, resolve@^1.3.2:
+ version "1.12.0"
+ resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.12.0.tgz#3fc644a35c84a48554609ff26ec52b66fa577df6"
+ integrity sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==
+ dependencies:
+ path-parse "^1.0.6"
+
+restore-cursor@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf"
+ integrity sha1-n37ih/gv0ybU/RYpI9YhKe7g368=
+ dependencies:
+ onetime "^2.0.0"
+ signal-exit "^3.0.2"
+
+restore-cursor@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e"
+ integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==
+ dependencies:
+ onetime "^5.1.0"
+ signal-exit "^3.0.2"
+
+ret@~0.1.10:
+ version "0.1.15"
+ resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc"
+ integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==
+
+retry-request@^4.0.0, retry-request@^4.1.1:
+ version "4.1.3"
+ resolved "https://registry.yarnpkg.com/retry-request/-/retry-request-4.1.3.tgz#d5f74daf261372cff58d08b0a1979b4d7cab0fde"
+ integrity sha512-QnRZUpuPNgX0+D1xVxul6DbJ9slvo4Rm6iV/dn63e048MvGbUZiKySVt6Tenp04JqmchxjiLltGerOJys7kJYQ==
+ dependencies:
+ debug "^4.1.1"
+
+reusify@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76"
+ integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==
+
+rfdc@^1.1.2:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.1.4.tgz#ba72cc1367a0ccd9cf81a870b3b58bd3ad07f8c2"
+ integrity sha512-5C9HXdzK8EAqN7JDif30jqsBzavB7wLpaubisuQIGHWf2gUXSpzy6ArX/+Da8RjFpagWsCn+pIgxTMAmKw9Zug==
+
+rgb-regex@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/rgb-regex/-/rgb-regex-1.0.1.tgz#c0e0d6882df0e23be254a475e8edd41915feaeb1"
+ integrity sha1-wODWiC3w4jviVKR16O3UGRX+rrE=
+
+rgba-regex@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/rgba-regex/-/rgba-regex-1.0.0.tgz#43374e2e2ca0968b0ef1523460b7d730ff22eeb3"
+ integrity sha1-QzdOLiyglosO8VI0YLfXMP8i7rM=
+
+rimraf@2.6.3:
+ version "2.6.3"
+ resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab"
+ integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==
+ dependencies:
+ glob "^7.1.3"
+
+rimraf@^2.5.4, rimraf@^2.6.0, rimraf@^2.6.1, rimraf@^2.6.3, rimraf@^2.7.1:
+ version "2.7.1"
+ resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec"
+ integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==
+ dependencies:
+ glob "^7.1.3"
+
+ripemd160@^2.0.0, ripemd160@^2.0.1:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c"
+ integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==
+ dependencies:
+ hash-base "^3.0.0"
+ inherits "^2.0.1"
+
+rsvp@^4.8.4:
+ version "4.8.5"
+ resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734"
+ integrity sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==
+
+run-async@^2.2.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0"
+ integrity sha1-A3GrSuC91yDUFm19/aZP96RFpsA=
+ dependencies:
+ is-promise "^2.1.0"
+
+run-node@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/run-node/-/run-node-1.0.0.tgz#46b50b946a2aa2d4947ae1d886e9856fd9cabe5e"
+ integrity sha512-kc120TBlQ3mih1LSzdAJXo4xn/GWS2ec0l3S+syHDXP9uRr0JAT8Qd3mdMuyjqCzeZktgP3try92cEgf9Nks8A==
+
+run-parallel@^1.1.9:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee"
+ integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==
+ dependencies:
+ queue-microtask "^1.2.2"
+
+run-queue@^1.0.0, run-queue@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47"
+ integrity sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=
+ dependencies:
+ aproba "^1.1.1"
+
+rxjs@^6.3.3, rxjs@^6.4.0:
+ version "6.5.2"
+ resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.2.tgz#2e35ce815cd46d84d02a209fb4e5921e051dbec7"
+ integrity sha512-HUb7j3kvb7p7eCUHE3FqjoDsC1xfZQ4AHFWfTKSpZ+sAhhz5X1WX0ZuUqWbzB2QhSLp3DoLUG+hMdEDKqWo2Zg==
+ dependencies:
+ tslib "^1.9.0"
+
+safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1:
+ version "5.1.2"
+ resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
+ integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
+
+safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.2.0:
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519"
+ integrity sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==
+
+safe-regex@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e"
+ integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4=
+ dependencies:
+ ret "~0.1.10"
+
+"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
+ integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
+
+sane@^4.0.3:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/sane/-/sane-4.1.0.tgz#ed881fd922733a6c461bc189dc2b6c006f3ffded"
+ integrity sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==
+ dependencies:
+ "@cnakazawa/watch" "^1.0.3"
+ anymatch "^2.0.0"
+ capture-exit "^2.0.0"
+ exec-sh "^0.3.2"
+ execa "^1.0.0"
+ fb-watchman "^2.0.0"
+ micromatch "^3.1.4"
+ minimist "^1.1.1"
+ walker "~1.0.5"
+
+sauce-connect-launcher@^1.2.2:
+ version "1.2.7"
+ resolved "https://registry.yarnpkg.com/sauce-connect-launcher/-/sauce-connect-launcher-1.2.7.tgz#c7f8b3d4eb354d07a9922b4cd67356f527192556"
+ integrity sha512-v07+QhFrxgz3seMFuRSonu3gW1s6DbcLQlFhjsRrmKUauzPbbudHdnn91WYgEwhoZVdPNzeZpAEJwcQyd9xnTA==
+ dependencies:
+ adm-zip "~0.4.3"
+ async "^2.1.2"
+ https-proxy-agent "^2.2.1"
+ lodash "^4.16.6"
+ rimraf "^2.5.4"
+
+saucelabs@^1.4.0:
+ version "1.5.0"
+ resolved "https://registry.yarnpkg.com/saucelabs/-/saucelabs-1.5.0.tgz#9405a73c360d449b232839919a86c396d379fd9d"
+ integrity sha512-jlX3FGdWvYf4Q3LFfFWS1QvPg3IGCGWxIc8QBFdPTbpTJnt/v17FHXYVAn7C8sHf1yUXo2c7yIM0isDryfYtHQ==
+ dependencies:
+ https-proxy-agent "^2.2.1"
+
+sax@^1.2.4, sax@~1.2.4:
+ version "1.2.4"
+ resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
+ integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==
+
+schema-utils@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-0.3.0.tgz#f5877222ce3e931edae039f17eb3716e7137f8cf"
+ integrity sha1-9YdyIs4+kx7a4DnxfrNxbnE3+M8=
+ dependencies:
+ ajv "^5.0.0"
+
+schema-utils@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770"
+ integrity sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==
+ dependencies:
+ ajv "^6.1.0"
+ ajv-errors "^1.0.0"
+ ajv-keywords "^3.1.0"
+
+semver-compare@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc"
+ integrity sha1-De4hahyUGrN+nvsXiPavxf9VN/w=
+
+"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.5.0, semver@^5.6.0:
+ version "5.6.0"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004"
+ integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==
+
+semver@7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e"
+ integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==
+
+semver@^5.4.1, semver@^5.5.1, semver@^5.7.0:
+ version "5.7.0"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.0.tgz#790a7cf6fea5459bac96110b29b60412dc8ff96b"
+ integrity sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==
+
+semver@^6.0.0, semver@^6.2.0, semver@^6.3.0:
+ version "6.3.0"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d"
+ integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
+
+send@0.17.1:
+ version "0.17.1"
+ resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8"
+ integrity sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==
+ dependencies:
+ debug "2.6.9"
+ depd "~1.1.2"
+ destroy "~1.0.4"
+ encodeurl "~1.0.2"
+ escape-html "~1.0.3"
+ etag "~1.8.1"
+ fresh "0.5.2"
+ http-errors "~1.7.2"
+ mime "1.6.0"
+ ms "2.1.1"
+ on-finished "~2.3.0"
+ range-parser "~1.2.1"
+ statuses "~1.5.0"
+
+serialize-javascript@^1.4.0, serialize-javascript@^1.7.0:
+ version "1.7.0"
+ resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-1.7.0.tgz#d6e0dfb2a3832a8c94468e6eb1db97e55a192a65"
+ integrity sha512-ke8UG8ulpFOxO8f8gRYabHQe/ZntKlcig2Mp+8+URDP1D8vJZ0KUt7LYo07q25Z/+JVSgpr/cui9PIp5H6/+nA==
+
+serve-static@1.14.1:
+ version "1.14.1"
+ resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9"
+ integrity sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==
+ dependencies:
+ encodeurl "~1.0.2"
+ escape-html "~1.0.3"
+ parseurl "~1.3.3"
+ send "0.17.1"
+
+set-blocking@^2.0.0, set-blocking@~2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
+ integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc=
+
+set-value@^2.0.0, set-value@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b"
+ integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==
+ dependencies:
+ extend-shallow "^2.0.1"
+ is-extendable "^0.1.1"
+ is-plain-object "^2.0.3"
+ split-string "^3.0.1"
+
+setimmediate@^1.0.4:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285"
+ integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=
+
+setprototypeof@1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683"
+ integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==
+
+sha.js@^2.4.0, sha.js@^2.4.8:
+ version "2.4.11"
+ resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7"
+ integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==
+ dependencies:
+ inherits "^2.0.1"
+ safe-buffer "^5.0.1"
+
+shallow-clone@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3"
+ integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==
+ dependencies:
+ kind-of "^6.0.2"
+
+shebang-command@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea"
+ integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=
+ dependencies:
+ shebang-regex "^1.0.0"
+
+shebang-regex@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3"
+ integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=
+
+shellwords@^0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b"
+ integrity sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==
+
+sigmund@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/sigmund/-/sigmund-1.0.1.tgz#3ff21f198cad2175f9f3b781853fd94d0d19b590"
+ integrity sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=
+
+signal-exit@^3.0.0, signal-exit@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d"
+ integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=
+
+simple-git@^2.35.2:
+ version "2.35.2"
+ resolved "https://registry.yarnpkg.com/simple-git/-/simple-git-2.35.2.tgz#b0f4d30bfba2b6998a3f435f25ef13ccef26305e"
+ integrity sha512-UjOKsrz92Bx7z00Wla5V6qLSf5X2XSp0sL2gzKw1Bh7iJfDPDaU7gK5avIup0yo1/sMOSUMQer2b9GcnF6nmTQ==
+ dependencies:
+ "@kwsites/file-exists" "^1.1.1"
+ "@kwsites/promise-deferred" "^1.1.1"
+ debug "^4.3.2"
+
+simple-swizzle@^0.2.2:
+ version "0.2.2"
+ resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a"
+ integrity sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=
+ dependencies:
+ is-arrayish "^0.3.1"
+
+sinon@^7.4.1:
+ version "7.4.1"
+ resolved "https://registry.yarnpkg.com/sinon/-/sinon-7.4.1.tgz#bcd0c63953893e87fa0cc502f52489c32a83d4d9"
+ integrity sha512-7s9buHGHN/jqoy/v4bJgmt0m1XEkCEd/tqdHXumpBp0JSujaT4Ng84JU5wDdK4E85ZMq78NuDe0I3NAqXY8TFg==
+ dependencies:
+ "@sinonjs/commons" "^1.4.0"
+ "@sinonjs/formatio" "^3.2.1"
+ "@sinonjs/samsam" "^3.3.2"
+ diff "^3.5.0"
+ lolex "^4.2.0"
+ nise "^1.5.1"
+ supports-color "^5.5.0"
+
+sisteransi@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.3.tgz#98168d62b79e3a5e758e27ae63c4a053d748f4eb"
+ integrity sha512-SbEG75TzH8G7eVXFSN5f9EExILKfly7SUvVY5DhhYLvfhKqhDFY0OzevWa/zwak0RLRfWS5AvfMWpd9gJvr5Yg==
+
+size-limit@^0.21.0:
+ version "0.21.1"
+ resolved "https://registry.yarnpkg.com/size-limit/-/size-limit-0.21.1.tgz#755ecd318a02570574ff7a815b88c6801f9a9995"
+ integrity sha512-bBSSU4l6iT+hHRdhbXTpn9Ee4MWQhPW5EaBgNRV5T5/KJLCRZBTLwSY94L2RW90aRKruDP+veuSmrE98NRzQww==
+ dependencies:
+ bytes "^3.0.0"
+ chalk "^2.4.1"
+ ci-job-number "^0.3.0"
+ compression-webpack-plugin "^2.0.0"
+ cosmiconfig "^5.0.7"
+ css-loader "^2.1.0"
+ escape-string-regexp "^1.0.5"
+ file-loader "^3.0.1"
+ globby "^8.0.1"
+ gzip-size "^5.0.0"
+ memory-fs "^0.4.1"
+ optimize-css-assets-webpack-plugin "^5.0.1"
+ read-pkg-up "^4.0.0"
+ style-loader "^0.23.1"
+ webpack "^4.28.2"
+ webpack-bundle-analyzer "^3.0.3"
+ yargs "^12.0.5"
+
+slash@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55"
+ integrity sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=
+
+slash@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44"
+ integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==
+
+slash@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634"
+ integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==
+
+slice-ansi@0.0.4:
+ version "0.0.4"
+ resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35"
+ integrity sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=
+
+slice-ansi@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636"
+ integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==
+ dependencies:
+ ansi-styles "^3.2.0"
+ astral-regex "^1.0.0"
+ is-fullwidth-code-point "^2.0.0"
+
+snakeize@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/snakeize/-/snakeize-0.1.0.tgz#10c088d8b58eb076b3229bb5a04e232ce126422d"
+ integrity sha1-EMCI2LWOsHazIpu1oE4jLOEmQi0=
+
+snapdragon-node@^2.0.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b"
+ integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==
+ dependencies:
+ define-property "^1.0.0"
+ isobject "^3.0.0"
+ snapdragon-util "^3.0.1"
+
+snapdragon-util@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2"
+ integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==
+ dependencies:
+ kind-of "^3.2.0"
+
+snapdragon@^0.8.1:
+ version "0.8.2"
+ resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d"
+ integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==
+ dependencies:
+ base "^0.11.1"
+ debug "^2.2.0"
+ define-property "^0.2.5"
+ extend-shallow "^2.0.1"
+ map-cache "^0.2.2"
+ source-map "^0.5.6"
+ source-map-resolve "^0.5.0"
+ use "^3.1.0"
+
+snazzy@^7.0.0:
+ version "7.1.1"
+ resolved "https://registry.yarnpkg.com/snazzy/-/snazzy-7.1.1.tgz#26639b19a72c4d542c762049f829d14a1ad16879"
+ integrity sha512-gJ46s+jcwOeRhO9uEkTyzcREFZ0c5LZOgcVakLxTPIvhRIywKvbvArvMg5e8bBbpWe4InC/8eyEQOGXgJVNOfw==
+ dependencies:
+ chalk "^2.3.0"
+ inherits "^2.0.1"
+ minimist "^1.1.1"
+ readable-stream "^2.0.6"
+ standard-json "^1.0.0"
+ strip-ansi "^4.0.0"
+ text-table "^0.2.0"
+
+socket.io-adapter@~1.1.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-1.1.1.tgz#2a805e8a14d6372124dd9159ad4502f8cb07f06b"
+ integrity sha1-KoBeihTWNyEk3ZFZrUUC+MsH8Gs=
+
+socket.io-client@2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-2.1.1.tgz#dcb38103436ab4578ddb026638ae2f21b623671f"
+ integrity sha512-jxnFyhAuFxYfjqIgduQlhzqTcOEQSn+OHKVfAxWaNWa7ecP7xSNk2Dx/3UEsDcY7NcFafxvNvKPmmO7HTwTxGQ==
+ dependencies:
+ backo2 "1.0.2"
+ base64-arraybuffer "0.1.5"
+ component-bind "1.0.0"
+ component-emitter "1.2.1"
+ debug "~3.1.0"
+ engine.io-client "~3.2.0"
+ has-binary2 "~1.0.2"
+ has-cors "1.1.0"
+ indexof "0.0.1"
+ object-component "0.0.3"
+ parseqs "0.0.5"
+ parseuri "0.0.5"
+ socket.io-parser "~3.2.0"
+ to-array "0.1.4"
+
+socket.io-parser@~3.2.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-3.2.0.tgz#e7c6228b6aa1f814e6148aea325b51aa9499e077"
+ integrity sha512-FYiBx7rc/KORMJlgsXysflWx/RIvtqZbyGLlHZvjfmPTPeuD/I8MaW7cfFrj5tRltICJdgwflhfZ3NVVbVLFQA==
+ dependencies:
+ component-emitter "1.2.1"
+ debug "~3.1.0"
+ isarray "2.0.1"
+
+socket.io@2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-2.1.1.tgz#a069c5feabee3e6b214a75b40ce0652e1cfb9980"
+ integrity sha512-rORqq9c+7W0DAK3cleWNSyfv/qKXV99hV4tZe+gGLfBECw3XEhBy7x85F3wypA9688LKjtwO9pX9L33/xQI8yA==
+ dependencies:
+ debug "~3.1.0"
+ engine.io "~3.2.0"
+ has-binary2 "~1.0.2"
+ socket.io-adapter "~1.1.0"
+ socket.io-client "2.1.1"
+ socket.io-parser "~3.2.0"
+
+sort-array@^4.1.3:
+ version "4.1.3"
+ resolved "https://registry.yarnpkg.com/sort-array/-/sort-array-4.1.3.tgz#ede740ab6c82c900524b157feff79bcfd610b36d"
+ integrity sha512-6auiM0DNob/zF+7Ae/SM4BFL5D7DPK/HVcllhVu5V+FgoCPs0A6b6ZwJDuvJpXQgFpxqLZUOD2kdxqO4Z59dkg==
+ dependencies:
+ array-back "^5.0.0"
+ typical "^6.0.1"
+
+source-list-map@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34"
+ integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==
+
+source-map-resolve@^0.5.0:
+ version "0.5.2"
+ resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.2.tgz#72e2cc34095543e43b2c62b2c4c10d4a9054f259"
+ integrity sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==
+ dependencies:
+ atob "^2.1.1"
+ decode-uri-component "^0.2.0"
+ resolve-url "^0.2.1"
+ source-map-url "^0.4.0"
+ urix "^0.1.0"
+
+source-map-support@^0.5.17:
+ version "0.5.19"
+ resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61"
+ integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==
+ dependencies:
+ buffer-from "^1.0.0"
+ source-map "^0.6.0"
+
+source-map-support@^0.5.6, source-map-support@^0.5.9, source-map-support@~0.5.12:
+ version "0.5.13"
+ resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.13.tgz#31b24a9c2e73c2de85066c0feb7d44767ed52932"
+ integrity sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==
+ dependencies:
+ buffer-from "^1.0.0"
+ source-map "^0.6.0"
+
+source-map-url@^0.4.0:
+ version "0.4.0"
+ resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3"
+ integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=
+
+source-map@^0.5.0, source-map@^0.5.1, source-map@^0.5.3, source-map@^0.5.6, source-map@^0.5.7:
+ version "0.5.7"
+ resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
+ integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=
+
+source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1:
+ version "0.6.1"
+ resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
+ integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
+
+source-map@^0.7.3:
+ version "0.7.3"
+ resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383"
+ integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==
+
+source-map@~0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.2.0.tgz#dab73fbcfc2ba819b4de03bd6f6eaa48164b3f9d"
+ integrity sha1-2rc/vPwrqBm03gO9b26qSBZLP50=
+ dependencies:
+ amdefine ">=0.0.4"
+
+spdx-correct@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4"
+ integrity sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==
+ dependencies:
+ spdx-expression-parse "^3.0.0"
+ spdx-license-ids "^3.0.0"
+
+spdx-exceptions@^2.1.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz#2ea450aee74f2a89bfb94519c07fcd6f41322977"
+ integrity sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==
+
+spdx-expression-parse@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0"
+ integrity sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==
+ dependencies:
+ spdx-exceptions "^2.1.0"
+ spdx-license-ids "^3.0.0"
+
+spdx-license-ids@^3.0.0:
+ version "3.0.5"
+ resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz#3694b5804567a458d3c8045842a6358632f62654"
+ integrity sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==
+
+split-string@^3.0.1, split-string@^3.0.2:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2"
+ integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==
+ dependencies:
+ extend-shallow "^3.0.0"
+
+sprintf-js@~1.0.2:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
+ integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=
+
+sshpk@^1.7.0:
+ version "1.16.1"
+ resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877"
+ integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==
+ dependencies:
+ asn1 "~0.2.3"
+ assert-plus "^1.0.0"
+ bcrypt-pbkdf "^1.0.0"
+ dashdash "^1.12.0"
+ ecc-jsbn "~0.1.1"
+ getpass "^0.1.1"
+ jsbn "~0.1.0"
+ safer-buffer "^2.0.2"
+ tweetnacl "~0.14.0"
+
+ssri@^6.0.1:
+ version "6.0.1"
+ resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.1.tgz#2a3c41b28dd45b62b63676ecb74001265ae9edd8"
+ integrity sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==
+ dependencies:
+ figgy-pudding "^3.5.1"
+
+stable@^0.1.8:
+ version "0.1.8"
+ resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf"
+ integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==
+
+stack-utils@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.2.tgz#33eba3897788558bebfc2db059dc158ec36cebb8"
+ integrity sha512-MTX+MeG5U994cazkjd/9KNAapsHnibjMLnfXodlkXw76JEea0UiNzrqidzo1emMwk7w5Qhc9jd4Bn9TBb1MFwA==
+
+staged-git-files@1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/staged-git-files/-/staged-git-files-1.1.1.tgz#37c2218ef0d6d26178b1310719309a16a59f8f7b"
+ integrity sha512-H89UNKr1rQJvI1c/PIR3kiAMBV23yvR7LItZiV74HWZwzt7f3YHuujJ9nJZlt58WlFox7XQsOahexwk7nTe69A==
+
+standard-json@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/standard-json/-/standard-json-1.1.0.tgz#33ac0d2eccaddb0556f5ae28c43a35624cf1fb25"
+ integrity sha512-nkonX+n5g3pyVBvJZmvRlFtT/7JyLbNh4CtrYC3Qfxihgs8PKX52f6ONKQXORStuBWJ5PI83EUrNXme7LKfiTQ==
+ dependencies:
+ concat-stream "^2.0.0"
+
+static-extend@^0.1.1:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6"
+ integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=
+ dependencies:
+ define-property "^0.2.5"
+ object-copy "^0.1.0"
+
+"statuses@>= 1.5.0 < 2", statuses@~1.5.0:
+ version "1.5.0"
+ resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c"
+ integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=
+
+stealthy-require@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b"
+ integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=
+
+stream-browserify@^2.0.1:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b"
+ integrity sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==
+ dependencies:
+ inherits "~2.0.1"
+ readable-stream "^2.0.2"
+
+stream-connect@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/stream-connect/-/stream-connect-1.0.2.tgz#18bc81f2edb35b8b5d9a8009200a985314428a97"
+ integrity sha1-GLyB8u2zW4tdmoAJIAqYUxRCipc=
+ dependencies:
+ array-back "^1.0.2"
+
+stream-each@^1.1.0:
+ version "1.2.3"
+ resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae"
+ integrity sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==
+ dependencies:
+ end-of-stream "^1.1.0"
+ stream-shift "^1.0.0"
+
+stream-events@^1.0.1, stream-events@^1.0.4, stream-events@^1.0.5:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/stream-events/-/stream-events-1.0.5.tgz#bbc898ec4df33a4902d892333d47da9bf1c406d5"
+ integrity sha512-E1GUzBSgvct8Jsb3v2X15pjzN1tYebtbLaMg+eBOUOAxgbLoSbT2NS91ckc5lJD1KfLjId+jXJRgo0qnV5Nerg==
+ dependencies:
+ stubs "^3.0.0"
+
+stream-http@^2.7.2:
+ version "2.8.3"
+ resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc"
+ integrity sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==
+ dependencies:
+ builtin-status-codes "^3.0.0"
+ inherits "^2.0.1"
+ readable-stream "^2.3.6"
+ to-arraybuffer "^1.0.0"
+ xtend "^4.0.0"
+
+stream-shift@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952"
+ integrity sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=
+
+stream-via@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/stream-via/-/stream-via-1.0.4.tgz#8dccbb0ac909328eb8bc8e2a4bd3934afdaf606c"
+ integrity sha512-DBp0lSvX5G9KGRDTkR/R+a29H+Wk2xItOF+MpZLLNDWbEV9tGPnqLPxHEYjmiz8xGtJHRIqmI+hCjmNzqoA4nQ==
+
+streamroller@0.7.0:
+ version "0.7.0"
+ resolved "https://registry.yarnpkg.com/streamroller/-/streamroller-0.7.0.tgz#a1d1b7cf83d39afb0d63049a5acbf93493bdf64b"
+ integrity sha512-WREzfy0r0zUqp3lGO096wRuUp7ho1X6uo/7DJfTlEi0Iv/4gT7YHqXDjKC2ioVGBZtE8QzsQD9nx1nIuoZ57jQ==
+ dependencies:
+ date-format "^1.2.0"
+ debug "^3.1.0"
+ mkdirp "^0.5.1"
+ readable-stream "^2.3.0"
+
+streamsearch@0.1.2:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/streamsearch/-/streamsearch-0.1.2.tgz#808b9d0e56fc273d809ba57338e929919a1a9f1a"
+ integrity sha1-gIudDlb8Jz2Am6VzOOkpkZoanxo=
+
+string-argv@^0.0.2:
+ version "0.0.2"
+ resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.0.2.tgz#dac30408690c21f3c3630a3ff3a05877bdcbd736"
+ integrity sha1-2sMECGkMIfPDYwo/86BYd73L1zY=
+
+string-length@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/string-length/-/string-length-2.0.0.tgz#d40dbb686a3ace960c1cffca562bf2c45f8363ed"
+ integrity sha1-1A27aGo6zpYMHP/KVivyxF+DY+0=
+ dependencies:
+ astral-regex "^1.0.0"
+ strip-ansi "^4.0.0"
+
+string-width@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3"
+ integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=
+ dependencies:
+ code-point-at "^1.0.0"
+ is-fullwidth-code-point "^1.0.0"
+ strip-ansi "^3.0.0"
+
+"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e"
+ integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==
+ dependencies:
+ is-fullwidth-code-point "^2.0.0"
+ strip-ansi "^4.0.0"
+
+string-width@^3.0.0, string-width@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961"
+ integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==
+ dependencies:
+ emoji-regex "^7.0.1"
+ is-fullwidth-code-point "^2.0.0"
+ strip-ansi "^5.1.0"
+
+string-width@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.1.0.tgz#ba846d1daa97c3c596155308063e075ed1c99aff"
+ integrity sha512-NrX+1dVVh+6Y9dnQ19pR0pP4FiEIlUvdTGn8pw6CKTNq5sgib2nIhmUNT5TAmhWmvKr3WcxBcP3E8nWezuipuQ==
+ dependencies:
+ emoji-regex "^8.0.0"
+ is-fullwidth-code-point "^3.0.0"
+ strip-ansi "^5.2.0"
+
+string_decoder@^1.0.0, string_decoder@^1.1.1:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e"
+ integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==
+ dependencies:
+ safe-buffer "~5.2.0"
+
+string_decoder@~1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8"
+ integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==
+ dependencies:
+ safe-buffer "~5.1.0"
+
+stringifier@^1.3.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/stringifier/-/stringifier-1.4.0.tgz#d704581567f4526265d00ed8ecb354a02c3fec28"
+ integrity sha512-cNsMOqqrcbLcHTXEVmkw9y0fwDwkdgtZwlfyolzpQDoAE1xdNGhQhxBUfiDvvZIKl1hnUEgMv66nHwtMz3OjPw==
+ dependencies:
+ core-js "^2.0.0"
+ traverse "^0.6.6"
+ type-name "^2.0.1"
+
+stringify-object@^3.2.2:
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629"
+ integrity sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==
+ dependencies:
+ get-own-enumerable-property-symbols "^3.0.0"
+ is-obj "^1.0.1"
+ is-regexp "^1.0.0"
+
+strip-ansi@^3.0.0, strip-ansi@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf"
+ integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=
+ dependencies:
+ ansi-regex "^2.0.0"
+
+strip-ansi@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f"
+ integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8=
+ dependencies:
+ ansi-regex "^3.0.0"
+
+strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0:
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae"
+ integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==
+ dependencies:
+ ansi-regex "^4.1.0"
+
+strip-bom@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e"
+ integrity sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=
+ dependencies:
+ is-utf8 "^0.2.0"
+
+strip-bom@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3"
+ integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=
+
+strip-eof@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf"
+ integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=
+
+strip-indent@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2"
+ integrity sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=
+ dependencies:
+ get-stdin "^4.0.1"
+
+strip-json-comments@^2.0.1, strip-json-comments@~2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
+ integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo=
+
+strip-json-comments@^3.1.0:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006"
+ integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==
+
+stubs@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/stubs/-/stubs-3.0.0.tgz#e8d2ba1fa9c90570303c030b6900f7d5f89abe5b"
+ integrity sha1-6NK6H6nJBXAwPAMLaQD31fiavls=
+
+style-loader@^0.23.1:
+ version "0.23.1"
+ resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.23.1.tgz#cb9154606f3e771ab6c4ab637026a1049174d925"
+ integrity sha512-XK+uv9kWwhZMZ1y7mysB+zoihsEj4wneFWAS5qoiLwzW0WzSqMrrsIy+a3zkQJq0ipFtBpX5W3MqyRIBF/WFGg==
+ dependencies:
+ loader-utils "^1.1.0"
+ schema-utils "^1.0.0"
+
+stylehacks@^4.0.0:
+ version "4.0.3"
+ resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-4.0.3.tgz#6718fcaf4d1e07d8a1318690881e8d96726a71d5"
+ integrity sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g==
+ dependencies:
+ browserslist "^4.0.0"
+ postcss "^7.0.0"
+ postcss-selector-parser "^3.0.0"
+
+supports-color@3.1.2:
+ version "3.1.2"
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.1.2.tgz#72a262894d9d408b956ca05ff37b2ed8a6e2a2d5"
+ integrity sha1-cqJiiU2dQIuVbKBf83su2KbiotU=
+ dependencies:
+ has-flag "^1.0.0"
+
+supports-color@5.4.0:
+ version "5.4.0"
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.4.0.tgz#1c6b337402c2137605efe19f10fec390f6faab54"
+ integrity sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==
+ dependencies:
+ has-flag "^3.0.0"
+
+supports-color@6.1.0, supports-color@^6.1.0:
+ version "6.1.0"
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3"
+ integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==
+ dependencies:
+ has-flag "^3.0.0"
+
+supports-color@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7"
+ integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=
+
+supports-color@^3.1.0:
+ version "3.2.3"
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6"
+ integrity sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=
+ dependencies:
+ has-flag "^1.0.0"
+
+supports-color@^5.3.0, supports-color@^5.4.0, supports-color@^5.5.0:
+ version "5.5.0"
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
+ integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==
+ dependencies:
+ has-flag "^3.0.0"
+
+supports-color@^7.1.0:
+ version "7.2.0"
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da"
+ integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==
+ dependencies:
+ has-flag "^4.0.0"
+
+svgo@^1.0.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.3.0.tgz#bae51ba95ded9a33a36b7c46ce9c359ae9154313"
+ integrity sha512-MLfUA6O+qauLDbym+mMZgtXCGRfIxyQoeH6IKVcFslyODEe/ElJNwr0FohQ3xG4C6HK6bk3KYPPXwHVJk3V5NQ==
+ dependencies:
+ chalk "^2.4.1"
+ coa "^2.0.2"
+ css-select "^2.0.0"
+ css-select-base-adapter "^0.1.1"
+ css-tree "1.0.0-alpha.33"
+ csso "^3.5.1"
+ js-yaml "^3.13.1"
+ mkdirp "~0.5.1"
+ object.values "^1.1.0"
+ sax "~1.2.4"
+ stable "^0.1.8"
+ unquote "~1.1.1"
+ util.promisify "~1.0.0"
+
+symbol-observable@^1.1.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804"
+ integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==
+
+symbol-tree@^3.2.2:
+ version "3.2.4"
+ resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2"
+ integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==
+
+table-layout@^0.4.2:
+ version "0.4.5"
+ resolved "https://registry.yarnpkg.com/table-layout/-/table-layout-0.4.5.tgz#d906de6a25fa09c0c90d1d08ecd833ecedcb7378"
+ integrity sha512-zTvf0mcggrGeTe/2jJ6ECkJHAQPIYEwDoqsiqBjI24mvRmQbInK5jq33fyypaCBxX08hMkfmdOqj6haT33EqWw==
+ dependencies:
+ array-back "^2.0.0"
+ deep-extend "~0.6.0"
+ lodash.padend "^4.6.1"
+ typical "^2.6.1"
+ wordwrapjs "^3.0.0"
+
+table@^5.2.3:
+ version "5.4.5"
+ resolved "https://registry.yarnpkg.com/table/-/table-5.4.5.tgz#c8f4ea2d8fee08c0027fac27b0ec0a4fe01dfa42"
+ integrity sha512-oGa2Hl7CQjfoaogtrOHEJroOcYILTx7BZWLGsJIlzoWmB2zmguhNfPJZsWPKYek/MgCxfco54gEi31d1uN2hFA==
+ dependencies:
+ ajv "^6.10.2"
+ lodash "^4.17.14"
+ slice-ansi "^2.1.0"
+ string-width "^3.0.0"
+
+taffydb@2.6.2:
+ version "2.6.2"
+ resolved "https://registry.yarnpkg.com/taffydb/-/taffydb-2.6.2.tgz#7cbcb64b5a141b6a2efc2c5d2c67b4e150b2a268"
+ integrity sha1-fLy2S1oUG2ou/CxdLGe04VCyomg=
+
+tapable@^1.0.0, tapable@^1.1.3:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2"
+ integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==
+
+tar-stream@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.1.0.tgz#d1aaa3661f05b38b5acc9b7020efdca5179a2cc3"
+ integrity sha512-+DAn4Nb4+gz6WZigRzKEZl1QuJVOLtAwwF+WUxy1fJ6X63CaGaUAxJRD2KEn1OMfcbCjySTYpNC6WmfQoIEOdw==
+ dependencies:
+ bl "^3.0.0"
+ end-of-stream "^1.4.1"
+ fs-constants "^1.0.0"
+ inherits "^2.0.3"
+ readable-stream "^3.1.1"
+
+tar@^4:
+ version "4.4.10"
+ resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.10.tgz#946b2810b9a5e0b26140cf78bea6b0b0d689eba1"
+ integrity sha512-g2SVs5QIxvo6OLp0GudTqEf05maawKUxXru104iaayWA09551tFCTI8f1Asb4lPfkBr91k07iL4c11XO3/b0tA==
+ dependencies:
+ chownr "^1.1.1"
+ fs-minipass "^1.2.5"
+ minipass "^2.3.5"
+ minizlib "^1.2.1"
+ mkdirp "^0.5.0"
+ safe-buffer "^5.1.2"
+ yallist "^3.0.3"
+
+teeny-request@^7.0.0:
+ version "7.0.1"
+ resolved "https://registry.yarnpkg.com/teeny-request/-/teeny-request-7.0.1.tgz#bdd41fdffea5f8fbc0d29392cb47bec4f66b2b4c"
+ integrity sha512-sasJmQ37klOlplL4Ia/786M5YlOcoLGQyq2TE4WHSRupbAuDaQW0PfVxV4MtdBtRJ4ngzS+1qim8zP6Zp35qCw==
+ dependencies:
+ http-proxy-agent "^4.0.0"
+ https-proxy-agent "^5.0.0"
+ node-fetch "^2.6.1"
+ stream-events "^1.0.5"
+ uuid "^8.0.0"
+
+temp-path@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/temp-path/-/temp-path-1.0.0.tgz#24b1543973ab442896d9ad367dd9cbdbfafe918b"
+ integrity sha1-JLFUOXOrRCiW2a02fdnL2/r+kYs=
+
+terser-webpack-plugin@^1.4.1:
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.1.tgz#61b18e40eaee5be97e771cdbb10ed1280888c2b4"
+ integrity sha512-ZXmmfiwtCLfz8WKZyYUuuHf3dMYEjg8NrjHMb0JqHVHVOSkzp3cW2/XG1fP3tRhqEqSzMwzzRQGtAPbs4Cncxg==
+ dependencies:
+ cacache "^12.0.2"
+ find-cache-dir "^2.1.0"
+ is-wsl "^1.1.0"
+ schema-utils "^1.0.0"
+ serialize-javascript "^1.7.0"
+ source-map "^0.6.1"
+ terser "^4.1.2"
+ webpack-sources "^1.4.0"
+ worker-farm "^1.7.0"
+
+terser@^4.1.2:
+ version "4.1.4"
+ resolved "https://registry.yarnpkg.com/terser/-/terser-4.1.4.tgz#4478b6a08bb096a61e793fea1a4434408bab936c"
+ integrity sha512-+ZwXJvdSwbd60jG0Illav0F06GDJF0R4ydZ21Q3wGAFKoBGyJGo34F63vzJHgvYxc1ukOtIjvwEvl9MkjzM6Pg==
+ dependencies:
+ commander "^2.20.0"
+ source-map "~0.6.1"
+ source-map-support "~0.5.12"
+
+test-exclude@^5.2.3:
+ version "5.2.3"
+ resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-5.2.3.tgz#c3d3e1e311eb7ee405e092dac10aefd09091eac0"
+ integrity sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g==
+ dependencies:
+ glob "^7.1.3"
+ minimatch "^3.0.4"
+ read-pkg-up "^4.0.0"
+ require-main-filename "^2.0.0"
+
+test-value@^1.0.1:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/test-value/-/test-value-1.1.0.tgz#a09136f72ec043d27c893707c2b159bfad7de93f"
+ integrity sha1-oJE29y7AQ9J8iTcHwrFZv6196T8=
+ dependencies:
+ array-back "^1.0.2"
+ typical "^2.4.2"
+
+test-value@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/test-value/-/test-value-2.1.0.tgz#11da6ff670f3471a73b625ca4f3fdcf7bb748291"
+ integrity sha1-Edpv9nDzRxpztiXKTz/c97t0gpE=
+ dependencies:
+ array-back "^1.0.3"
+ typical "^2.6.0"
+
+test-value@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/test-value/-/test-value-3.0.0.tgz#9168c062fab11a86b8d444dd968bb4b73851ce92"
+ integrity sha512-sVACdAWcZkSU9x7AOmJo5TqE+GyNJknHaHsMrR6ZnhjVlVN9Yx6FjHrsKZ3BjIpPCT68zYesPWkakrNupwfOTQ==
+ dependencies:
+ array-back "^2.0.0"
+ typical "^2.6.1"
+
+text-table@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
+ integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=
+
+thenify-all@^1.0.0:
+ version "1.6.0"
+ resolved "https://registry.yarnpkg.com/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726"
+ integrity sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY=
+ dependencies:
+ thenify ">= 3.1.0 < 4"
+
+"thenify@>= 3.1.0 < 4":
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/thenify/-/thenify-3.3.0.tgz#e69e38a1babe969b0108207978b9f62b88604839"
+ integrity sha1-5p44obq+lpsBCCB5eLn2K4hgSDk=
+ dependencies:
+ any-promise "^1.0.0"
+
+throat@^4.0.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/throat/-/throat-4.1.0.tgz#89037cbc92c56ab18926e6ba4cbb200e15672a6a"
+ integrity sha1-iQN8vJLFarGJJua6TLsgDhVnKmo=
+
+throttleit@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/throttleit/-/throttleit-1.0.0.tgz#9e785836daf46743145a5984b6268d828528ac6c"
+ integrity sha1-nnhYNtr0Z0MUWlmEtiaNgoUorGw=
+
+through2@^2.0.0, through2@^2.0.3:
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd"
+ integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==
+ dependencies:
+ readable-stream "~2.3.6"
+ xtend "~4.0.1"
+
+through@^2.3.6:
+ version "2.3.8"
+ resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
+ integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=
+
+time-stamp@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-1.1.0.tgz#764a5a11af50561921b133f3b44e618687e0f5c3"
+ integrity sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=
+
+timers-browserify@^2.0.4:
+ version "2.0.11"
+ resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.11.tgz#800b1f3eee272e5bc53ee465a04d0e804c31211f"
+ integrity sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ==
+ dependencies:
+ setimmediate "^1.0.4"
+
+timsort@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4"
+ integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=
+
+tmp@0.0.33, tmp@0.0.x, tmp@^0.0.33:
+ version "0.0.33"
+ resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9"
+ integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==
+ dependencies:
+ os-tmpdir "~1.0.2"
+
+tmpl@1.0.x:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1"
+ integrity sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=
+
+to-array@0.1.4:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/to-array/-/to-array-0.1.4.tgz#17e6c11f73dd4f3d74cda7a4ff3238e9ad9bf890"
+ integrity sha1-F+bBH3PdTz10zaek/zI46a2b+JA=
+
+to-arraybuffer@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43"
+ integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=
+
+to-fast-properties@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47"
+ integrity sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=
+
+to-fast-properties@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e"
+ integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=
+
+to-object-path@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af"
+ integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=
+ dependencies:
+ kind-of "^3.0.2"
+
+to-regex-range@^2.1.0:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38"
+ integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=
+ dependencies:
+ is-number "^3.0.0"
+ repeat-string "^1.6.1"
+
+to-regex-range@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4"
+ integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==
+ dependencies:
+ is-number "^7.0.0"
+
+to-regex@^3.0.1, to-regex@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce"
+ integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==
+ dependencies:
+ define-property "^2.0.2"
+ extend-shallow "^3.0.2"
+ regex-not "^1.0.2"
+ safe-regex "^1.1.0"
+
+toidentifier@1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553"
+ integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==
+
+topo@1.x.x:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/topo/-/topo-1.1.0.tgz#e9d751615d1bb87dc865db182fa1ca0a5ef536d5"
+ integrity sha1-6ddRYV0buH3IZdsYL6HKCl71NtU=
+ dependencies:
+ hoek "2.x.x"
+
+tough-cookie@^2.3.3, tough-cookie@^2.3.4:
+ version "2.5.0"
+ resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2"
+ integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==
+ dependencies:
+ psl "^1.1.28"
+ punycode "^2.1.1"
+
+tough-cookie@~2.4.3:
+ version "2.4.3"
+ resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.4.3.tgz#53f36da3f47783b0925afa06ff9f3b165280f781"
+ integrity sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==
+ dependencies:
+ psl "^1.1.24"
+ punycode "^1.4.1"
+
+tr46@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09"
+ integrity sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=
+ dependencies:
+ punycode "^2.1.0"
+
+traverse@^0.6.6:
+ version "0.6.6"
+ resolved "https://registry.yarnpkg.com/traverse/-/traverse-0.6.6.tgz#cbdf560fd7b9af632502fed40f918c157ea97137"
+ integrity sha1-y99WD9e5r2MlAv7UD5GMFX6pcTc=
+
+trim-newlines@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613"
+ integrity sha1-WIeWa7WCpFA6QetST301ARgVphM=
+
+trim-right@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003"
+ integrity sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=
+
+tryer@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/tryer/-/tryer-1.0.1.tgz#f2c85406800b9b0f74c9f7465b81eaad241252f8"
+ integrity sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA==
+
+ts-node@^9.1.1:
+ version "9.1.1"
+ resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-9.1.1.tgz#51a9a450a3e959401bda5f004a72d54b936d376d"
+ integrity sha512-hPlt7ZACERQGf03M253ytLY3dHbGNGrAq9qIHWUY9XHYl1z7wYngSr3OQ5xmui8o2AaxsONxIzjafLUiWBo1Fg==
+ dependencies:
+ arg "^4.1.0"
+ create-require "^1.1.0"
+ diff "^4.0.1"
+ make-error "^1.1.1"
+ source-map-support "^0.5.17"
+ yn "3.1.1"
+
+tslib@^1.11.1:
+ version "1.14.1"
+ resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
+ integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
+
+tslib@^1.8.1, tslib@^1.9.0:
+ version "1.10.0"
+ resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a"
+ integrity sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==
+
+tsutils@^3.17.1:
+ version "3.17.1"
+ resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.17.1.tgz#ed719917f11ca0dee586272b2ac49e015a2dd759"
+ integrity sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g==
+ dependencies:
+ tslib "^1.8.1"
+
+tty-browserify@0.0.0:
+ version "0.0.0"
+ resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6"
+ integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=
+
+tunnel-agent@^0.6.0:
+ version "0.6.0"
+ resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd"
+ integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=
+ dependencies:
+ safe-buffer "^5.0.1"
+
+tweetnacl@^0.14.3, tweetnacl@~0.14.0:
+ version "0.14.5"
+ resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64"
+ integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=
+
+type-check@~0.3.2:
+ version "0.3.2"
+ resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72"
+ integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=
+ dependencies:
+ prelude-ls "~1.1.2"
+
+type-detect@4.0.8:
+ version "4.0.8"
+ resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c"
+ integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==
+
+type-fest@^0.5.2:
+ version "0.5.2"
+ resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.5.2.tgz#d6ef42a0356c6cd45f49485c3b6281fc148e48a2"
+ integrity sha512-DWkS49EQKVX//Tbupb9TFa19c7+MK1XmzkrZUR8TAktmE/DizXoaoJV6TZ/tSIPXipqNiRI6CyAe7x69Jb6RSw==
+
+type-is@~1.6.17, type-is@~1.6.18:
+ version "1.6.18"
+ resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131"
+ integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==
+ dependencies:
+ media-typer "0.3.0"
+ mime-types "~2.1.24"
+
+type-name@^2.0.1:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/type-name/-/type-name-2.0.2.tgz#efe7d4123d8ac52afff7f40c7e4dec5266008fb4"
+ integrity sha1-7+fUEj2KxSr/9/QMfk3sUmYAj7Q=
+
+typedarray-to-buffer@^3.1.5:
+ version "3.1.5"
+ resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080"
+ integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==
+ dependencies:
+ is-typedarray "^1.0.0"
+
+typedarray@^0.0.6:
+ version "0.0.6"
+ resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
+ integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=
+
+typesaurus@^7.1.0:
+ version "7.1.0"
+ resolved "https://registry.yarnpkg.com/typesaurus/-/typesaurus-7.1.0.tgz#f030083a201f6e4d02e7f3287bec271d84fba229"
+ integrity sha512-2Az/QN4FprxtT/6Grr3gFb8v6dY1NkSkGvEt6l0b4/cY28p6HmNY/VaZP9p9wQP2GdU8lAbOi+Ip6j1gehCarA==
+
+typescript@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.0.2.tgz#7ea7c88777c723c681e33bf7988be5d008d05ac2"
+ integrity sha512-e4ERvRV2wb+rRZ/IQeb3jm2VxBsirQLpQhdxplZ2MEzGvDkkMmPglecnNDfSUBivMjP93vRbngYYDQqQ/78bcQ==
+
+typical@^2.4.2, typical@^2.6.0, typical@^2.6.1:
+ version "2.6.1"
+ resolved "https://registry.yarnpkg.com/typical/-/typical-2.6.1.tgz#5c080e5d661cbbe38259d2e70a3c7253e873881d"
+ integrity sha1-XAgOXWYcu+OCWdLnCjxyU+hziB0=
+
+typical@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/typical/-/typical-4.0.0.tgz#cbeaff3b9d7ae1e2bbfaf5a4e6f11eccfde94fc4"
+ integrity sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==
+
+typical@^6.0.1:
+ version "6.0.1"
+ resolved "https://registry.yarnpkg.com/typical/-/typical-6.0.1.tgz#89bd1a6aa5e5e96fa907fb6b7579223bff558a06"
+ integrity sha512-+g3NEp7fJLe9DPa1TArHm9QAA7YciZmWnfAqEaFrBihQ7epOv9i99rjtgb6Iz0wh3WuQDjsCTDfgRoGnmHN81A==
+
+uc.micro@^1.0.1, uc.micro@^1.0.5:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-1.0.6.tgz#9c411a802a409a91fc6cf74081baba34b24499ac"
+ integrity sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==
+
+uglify-js@^3.1.4:
+ version "3.6.0"
+ resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.6.0.tgz#704681345c53a8b2079fb6cec294b05ead242ff5"
+ integrity sha512-W+jrUHJr3DXKhrsS7NUVxn3zqMOFn0hL/Ei6v0anCIMoKC93TjcflTagwIHLW7SfMFfiQuktQyFVCFHGUE0+yg==
+ dependencies:
+ commander "~2.20.0"
+ source-map "~0.6.1"
+
+ultron@~1.1.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.1.tgz#9fe1536a10a664a65266a1e3ccf85fd36302bc9c"
+ integrity sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==
+
+underscore@~1.10.2:
+ version "1.10.2"
+ resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.10.2.tgz#73d6aa3668f3188e4adb0f1943bd12cfd7efaaaf"
+ integrity sha512-N4P+Q/BuyuEKFJ43B9gYuOj4TQUHXX+j2FqguVOpjkssLUUrnJofCcBccJSCoeturDoZU6GorDTHSvUDlSQbTg==
+
+unicode-canonical-property-names-ecmascript@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818"
+ integrity sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==
+
+unicode-match-property-ecmascript@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961bce9227d09cd3ffbb8fed5f020c"
+ integrity sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==
+ dependencies:
+ unicode-canonical-property-names-ecmascript "^1.0.4"
+ unicode-property-aliases-ecmascript "^1.0.4"
+
+unicode-match-property-value-ecmascript@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz#0d91f600eeeb3096aa962b1d6fc88876e64ea531"
+ integrity sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==
+
+unicode-property-aliases-ecmascript@^1.0.4:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz#dd57a99f6207bedff4628abefb94c50db941c8f4"
+ integrity sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==
+
+union-value@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847"
+ integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==
+ dependencies:
+ arr-union "^3.1.0"
+ get-value "^2.0.6"
+ is-extendable "^0.1.1"
+ set-value "^2.0.1"
+
+uniq@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff"
+ integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=
+
+uniqs@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02"
+ integrity sha1-/+3ks2slKQaW5uFl1KWe25mOawI=
+
+unique-filename@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230"
+ integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==
+ dependencies:
+ unique-slug "^2.0.0"
+
+unique-slug@^2.0.0:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c"
+ integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==
+ dependencies:
+ imurmurhash "^0.1.4"
+
+unique-string@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-2.0.0.tgz#39c6451f81afb2749de2b233e3f7c5e8843bd89d"
+ integrity sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==
+ dependencies:
+ crypto-random-string "^2.0.0"
+
+universal-deep-strict-equal@^1.2.1:
+ version "1.2.2"
+ resolved "https://registry.yarnpkg.com/universal-deep-strict-equal/-/universal-deep-strict-equal-1.2.2.tgz#0da4ac2f73cff7924c81fa4de018ca562ca2b0a7"
+ integrity sha1-DaSsL3PP95JMgfpN4BjKViyisKc=
+ dependencies:
+ array-filter "^1.0.0"
+ indexof "0.0.1"
+ object-keys "^1.0.0"
+
+universal-user-agent@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-6.0.0.tgz#3381f8503b251c0d9cd21bc1de939ec9df5480ee"
+ integrity sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==
+
+unpipe@1.0.0, unpipe@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
+ integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=
+
+unquote@~1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/unquote/-/unquote-1.1.1.tgz#8fded7324ec6e88a0ff8b905e7c098cdc086d544"
+ integrity sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=
+
+unset-value@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559"
+ integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=
+ dependencies:
+ has-value "^0.3.1"
+ isobject "^3.0.0"
+
+upath@^1.1.1:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/upath/-/upath-1.1.2.tgz#3db658600edaeeccbe6db5e684d67ee8c2acd068"
+ integrity sha512-kXpym8nmDmlCBr7nKdIx8P2jNBa+pBpIUFRnKJ4dr8htyYGJFokkr2ZvERRtUN+9SY+JqXouNgUPtv6JQva/2Q==
+
+uri-js@^4.2.2:
+ version "4.2.2"
+ resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0"
+ integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==
+ dependencies:
+ punycode "^2.1.0"
+
+urix@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72"
+ integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=
+
+url@^0.11.0:
+ version "0.11.0"
+ resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1"
+ integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=
+ dependencies:
+ punycode "1.3.2"
+ querystring "0.2.0"
+
+use@^3.1.0:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f"
+ integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==
+
+useragent@2.3.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/useragent/-/useragent-2.3.0.tgz#217f943ad540cb2128658ab23fc960f6a88c9972"
+ integrity sha512-4AoH4pxuSvHCjqLO04sU6U/uE65BYza8l/KKBS0b0hnUPWi+cQ2BpeTEwejCSx9SPV5/U03nniDTrWx5NrmKdw==
+ dependencies:
+ lru-cache "4.1.x"
+ tmp "0.0.x"
+
+util-deprecate@^1.0.1, util-deprecate@~1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
+ integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=
+
+util.promisify@^1.0.0, util.promisify@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030"
+ integrity sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==
+ dependencies:
+ define-properties "^1.1.2"
+ object.getownpropertydescriptors "^2.0.3"
+
+util@0.10.3:
+ version "0.10.3"
+ resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9"
+ integrity sha1-evsa/lCAUkZInj23/g7TeTNqwPk=
+ dependencies:
+ inherits "2.0.1"
+
+util@^0.11.0:
+ version "0.11.1"
+ resolved "https://registry.yarnpkg.com/util/-/util-0.11.1.tgz#3236733720ec64bb27f6e26f421aaa2e1b588d61"
+ integrity sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==
+ dependencies:
+ inherits "2.0.3"
+
+utils-merge@1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713"
+ integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=
+
+uuid@^3.3.2:
+ version "3.3.2"
+ resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131"
+ integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==
+
+uuid@^8.0.0:
+ version "8.3.2"
+ resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2"
+ integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==
+
+v8-compile-cache@2.0.3:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.0.3.tgz#00f7494d2ae2b688cfe2899df6ed2c54bef91dbe"
+ integrity sha512-CNmdbwQMBjwr9Gsmohvm0pbL954tJrNzf6gWL3K+QMQf00PF7ERGrEiLgjuU3mKreLC2MeGhUsNV9ybTbLgd3w==
+
+v8flags@^3.1.1:
+ version "3.1.3"
+ resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-3.1.3.tgz#fc9dc23521ca20c5433f81cc4eb9b3033bb105d8"
+ integrity sha512-amh9CCg3ZxkzQ48Mhcb8iX7xpAfYJgePHxWMQCBWECpOSqJUXgY26ncA61UTV0BkPqfhcy6mzwCIoP4ygxpW8w==
+ dependencies:
+ homedir-polyfill "^1.0.1"
+
+validate-npm-package-license@^3.0.1:
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a"
+ integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==
+ dependencies:
+ spdx-correct "^3.0.0"
+ spdx-expression-parse "^3.0.0"
+
+vargs@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/vargs/-/vargs-0.1.0.tgz#6b6184da6520cc3204ce1b407cac26d92609ebff"
+ integrity sha1-a2GE2mUgzDIEzhtAfKwm2SYJ6/8=
+
+vary@~1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc"
+ integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=
+
+vendors@^1.0.0:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.3.tgz#a6467781abd366217c050f8202e7e50cc9eef8c0"
+ integrity sha512-fOi47nsJP5Wqefa43kyWSg80qF+Q3XA6MUkgi7Hp1HQaKDQW4cQrK2D0P7mmbFtsV1N89am55Yru/nyEwRubcw==
+
+verror@1.10.0:
+ version "1.10.0"
+ resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400"
+ integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=
+ dependencies:
+ assert-plus "^1.0.0"
+ core-util-is "1.0.2"
+ extsprintf "^1.2.0"
+
+vm-browserify@^1.0.1:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.0.tgz#bd76d6a23323e2ca8ffa12028dc04559c75f9019"
+ integrity sha512-iq+S7vZJE60yejDYM0ek6zg308+UZsdtPExWP9VZoCFCz1zkJoXFnAX7aZfd/ZwrkidzdUZL0C/ryW+JwAiIGw==
+
+void-elements@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec"
+ integrity sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=
+
+w3c-hr-time@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz#82ac2bff63d950ea9e3189a58a65625fedf19045"
+ integrity sha1-gqwr/2PZUOqeMYmlimViX+3xkEU=
+ dependencies:
+ browser-process-hrtime "^0.1.2"
+
+walk-back@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/walk-back/-/walk-back-2.0.1.tgz#554e2a9d874fac47a8cb006bf44c2f0c4998a0a4"
+ integrity sha1-VU4qnYdPrEeoywBr9EwvDEmYoKQ=
+
+walk-back@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/walk-back/-/walk-back-4.0.0.tgz#9e4ad2bd72038f3beed2d83180f9fd40b233bfab"
+ integrity sha512-kudCA8PXVQfrqv2mFTG72vDBRi8BKWxGgFLwPpzHcpZnSwZk93WMwUDVcLHWNsnm+Y0AC4Vb6MUNRgaHfyV2DQ==
+
+walk-back@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/walk-back/-/walk-back-5.0.0.tgz#ba29d399957f87abb27645ebe885d53cf4f2f373"
+ integrity sha512-ASerU3aOj9ok+uMNiW0A6/SEwNOxhPmiprbHmPFw1faz7Qmoy9wD3sbmL5HYG+IBxT5c/4cX9O2kSpNv8OAM9A==
+
+walker@^1.0.7, walker@~1.0.5:
+ version "1.0.7"
+ resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb"
+ integrity sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=
+ dependencies:
+ makeerror "1.0.x"
+
+watchpack@^1.6.0:
+ version "1.6.0"
+ resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.6.0.tgz#4bc12c2ebe8aa277a71f1d3f14d685c7b446cd00"
+ integrity sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA==
+ dependencies:
+ chokidar "^2.0.2"
+ graceful-fs "^4.1.2"
+ neo-async "^2.5.0"
+
+wd@^1.4.0:
+ version "1.11.3"
+ resolved "https://registry.yarnpkg.com/wd/-/wd-1.11.3.tgz#db228863e15648e0c1466df45b263fc30470dbc4"
+ integrity sha512-doB7E6DDhis6sSCfWps9Uz0UBBPAySv1x96KH6klfHp8y89HvhqEq3c0O8LPZhG37egJULN0m7+M9t16xUTG0g==
+ dependencies:
+ archiver "^3.0.0"
+ async "^2.0.0"
+ fancy-log "^1.3.3"
+ gulp-mocha "^6.0.0"
+ lodash "^4.0.0"
+ mkdirp "^0.5.1"
+ q "^1.5.1"
+ request "2.88.0"
+ vargs "^0.1.0"
+
+webidl-conversions@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad"
+ integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==
+
+webpack-bundle-analyzer@^3.0.3:
+ version "3.4.1"
+ resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-3.4.1.tgz#430544c7ba1631baccf673475ca8300cb74a3c47"
+ integrity sha512-Bs8D/1zF+17lhqj2OYmzi7HEVYqEVxu7lCO9Ff8BwajenOU0vAwEoV8e4ICCPNZAcqR1PCR/7o2SkW+cnCmF0A==
+ dependencies:
+ acorn "^6.0.7"
+ acorn-walk "^6.1.1"
+ bfj "^6.1.1"
+ chalk "^2.4.1"
+ commander "^2.18.0"
+ ejs "^2.6.1"
+ express "^4.16.3"
+ filesize "^3.6.1"
+ gzip-size "^5.0.0"
+ lodash "^4.17.15"
+ mkdirp "^0.5.1"
+ opener "^1.5.1"
+ ws "^6.0.0"
+
+webpack-cli@^3.1.2:
+ version "3.3.6"
+ resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-3.3.6.tgz#2c8c399a2642133f8d736a359007a052e060032c"
+ integrity sha512-0vEa83M7kJtxK/jUhlpZ27WHIOndz5mghWL2O53kiDoA9DIxSKnfqB92LoqEn77cT4f3H2cZm1BMEat/6AZz3A==
+ dependencies:
+ chalk "2.4.2"
+ cross-spawn "6.0.5"
+ enhanced-resolve "4.1.0"
+ findup-sync "3.0.0"
+ global-modules "2.0.0"
+ import-local "2.0.0"
+ interpret "1.2.0"
+ loader-utils "1.2.3"
+ supports-color "6.1.0"
+ v8-compile-cache "2.0.3"
+ yargs "13.2.4"
+
+webpack-dev-middleware@^3.7.0:
+ version "3.7.0"
+ resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.7.0.tgz#ef751d25f4e9a5c8a35da600c5fda3582b5c6cff"
+ integrity sha512-qvDesR1QZRIAZHOE3iQ4CXLZZSQ1lAUsSpnQmlB1PBfoN/xdRjmge3Dok0W4IdaVLJOGJy3sGI4sZHwjRU0PCA==
+ dependencies:
+ memory-fs "^0.4.1"
+ mime "^2.4.2"
+ range-parser "^1.2.1"
+ webpack-log "^2.0.0"
+
+webpack-log@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/webpack-log/-/webpack-log-2.0.0.tgz#5b7928e0637593f119d32f6227c1e0ac31e1b47f"
+ integrity sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==
+ dependencies:
+ ansi-colors "^3.0.0"
+ uuid "^3.3.2"
+
+webpack-sources@^1.0.1, webpack-sources@^1.1.0, webpack-sources@^1.4.0, webpack-sources@^1.4.1:
+ version "1.4.3"
+ resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933"
+ integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==
+ dependencies:
+ source-list-map "^2.0.0"
+ source-map "~0.6.1"
+
+webpack@4, webpack@^4.28.2:
+ version "4.39.2"
+ resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.39.2.tgz#c9aa5c1776d7c309d1b3911764f0288c8c2816aa"
+ integrity sha512-AKgTfz3xPSsEibH00JfZ9sHXGUwIQ6eZ9tLN8+VLzachk1Cw2LVmy+4R7ZiwTa9cZZ15tzySjeMui/UnSCAZhA==
+ dependencies:
+ "@webassemblyjs/ast" "1.8.5"
+ "@webassemblyjs/helper-module-context" "1.8.5"
+ "@webassemblyjs/wasm-edit" "1.8.5"
+ "@webassemblyjs/wasm-parser" "1.8.5"
+ acorn "^6.2.1"
+ ajv "^6.10.2"
+ ajv-keywords "^3.4.1"
+ chrome-trace-event "^1.0.2"
+ enhanced-resolve "^4.1.0"
+ eslint-scope "^4.0.3"
+ json-parse-better-errors "^1.0.2"
+ loader-runner "^2.4.0"
+ loader-utils "^1.2.3"
+ memory-fs "^0.4.1"
+ micromatch "^3.1.10"
+ mkdirp "^0.5.1"
+ neo-async "^2.6.1"
+ node-libs-browser "^2.2.1"
+ schema-utils "^1.0.0"
+ tapable "^1.1.3"
+ terser-webpack-plugin "^1.4.1"
+ watchpack "^1.6.0"
+ webpack-sources "^1.4.1"
+
+websocket-driver@>=0.5.1:
+ version "0.7.3"
+ resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.3.tgz#a2d4e0d4f4f116f1e6297eba58b05d430100e9f9"
+ integrity sha512-bpxWlvbbB459Mlipc5GBzzZwhoZgGEZLuqPaR0INBGnPAY1vdBX6hPnoFXiw+3yWxDuHyQjO2oXTMyS8A5haFg==
+ dependencies:
+ http-parser-js ">=0.4.0 <0.4.11"
+ safe-buffer ">=5.1.0"
+ websocket-extensions ">=0.1.1"
+
+websocket-extensions@>=0.1.1:
+ version "0.1.3"
+ resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.3.tgz#5d2ff22977003ec687a4b87073dfbbac146ccf29"
+ integrity sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==
+
+whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.3:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0"
+ integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==
+ dependencies:
+ iconv-lite "0.4.24"
+
+whatwg-fetch@2.0.4:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz#dde6a5df315f9d39991aa17621853d720b85566f"
+ integrity sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng==
+
+whatwg-mimetype@^2.1.0, whatwg-mimetype@^2.2.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf"
+ integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==
+
+whatwg-url@^6.4.1:
+ version "6.5.0"
+ resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-6.5.0.tgz#f2df02bff176fd65070df74ad5ccbb5a199965a8"
+ integrity sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ==
+ dependencies:
+ lodash.sortby "^4.7.0"
+ tr46 "^1.0.1"
+ webidl-conversions "^4.0.2"
+
+whatwg-url@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.0.0.tgz#fde926fa54a599f3adf82dff25a9f7be02dc6edd"
+ integrity sha512-37GeVSIJ3kn1JgKyjiYNmSLP1yzbpb29jdmwBSgkD9h40/hyrR/OifpVUndji3tmwGgD8qpw7iQu3RSbCrBpsQ==
+ dependencies:
+ lodash.sortby "^4.7.0"
+ tr46 "^1.0.1"
+ webidl-conversions "^4.0.2"
+
+which-module@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a"
+ integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=
+
+which@^1.1.1, which@^1.2.1, which@^1.2.10, which@^1.2.14, which@^1.2.9, which@^1.3.0, which@^1.3.1:
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"
+ integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==
+ dependencies:
+ isexe "^2.0.0"
+
+wide-align@^1.1.0:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457"
+ integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==
+ dependencies:
+ string-width "^1.0.2 || 2"
+
+wordwrap@^1.0.0, wordwrap@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb"
+ integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=
+
+wordwrap@~0.0.2:
+ version "0.0.3"
+ resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107"
+ integrity sha1-o9XabNXAvAAI03I0u68b7WMFkQc=
+
+wordwrapjs@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/wordwrapjs/-/wordwrapjs-3.0.0.tgz#c94c372894cadc6feb1a66bff64e1d9af92c5d1e"
+ integrity sha512-mO8XtqyPvykVCsrwj5MlOVWvSnCdT+C+QVbm6blradR7JExAhbkZ7hZ9A+9NUtwzSqrlUo9a67ws0EiILrvRpw==
+ dependencies:
+ reduce-flatten "^1.0.1"
+ typical "^2.6.1"
+
+worker-farm@^1.7.0:
+ version "1.7.0"
+ resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8"
+ integrity sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==
+ dependencies:
+ errno "~0.1.7"
+
+world-countries@^1.8.1:
+ version "1.8.1"
+ resolved "https://registry.yarnpkg.com/world-countries/-/world-countries-1.8.1.tgz#14ba7d735d422d63de70deb6e35ec5e49341b209"
+ integrity sha1-FLp9c11CLWPecN62417F5JNBsgk=
+
+wrap-ansi@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85"
+ integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=
+ dependencies:
+ string-width "^1.0.1"
+ strip-ansi "^3.0.1"
+
+wrap-ansi@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-3.0.1.tgz#288a04d87eda5c286e060dfe8f135ce8d007f8ba"
+ integrity sha1-KIoE2H7aXChuBg3+jxNc6NAH+Lo=
+ dependencies:
+ string-width "^2.1.1"
+ strip-ansi "^4.0.0"
+
+wrap-ansi@^5.1.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09"
+ integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==
+ dependencies:
+ ansi-styles "^3.2.0"
+ string-width "^3.0.0"
+ strip-ansi "^5.0.0"
+
+wrappy@1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
+ integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
+
+write-file-atomic@2.4.1:
+ version "2.4.1"
+ resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.1.tgz#d0b05463c188ae804396fd5ab2a370062af87529"
+ integrity sha512-TGHFeZEZMnv+gBFRfjAcxL5bPHrsGKtnb4qsFAws7/vlh+QfwAaySIw4AXP9ZskTTh5GWu3FLuJhsWVdiJPGvg==
+ dependencies:
+ graceful-fs "^4.1.11"
+ imurmurhash "^0.1.4"
+ signal-exit "^3.0.2"
+
+write-file-atomic@^3.0.0:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8"
+ integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==
+ dependencies:
+ imurmurhash "^0.1.4"
+ is-typedarray "^1.0.0"
+ signal-exit "^3.0.2"
+ typedarray-to-buffer "^3.1.5"
+
+write@1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/write/-/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3"
+ integrity sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==
+ dependencies:
+ mkdirp "^0.5.1"
+
+ws@^5.2.0:
+ version "5.2.2"
+ resolved "https://registry.yarnpkg.com/ws/-/ws-5.2.2.tgz#dffef14866b8e8dc9133582514d1befaf96e980f"
+ integrity sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA==
+ dependencies:
+ async-limiter "~1.0.0"
+
+ws@^6.0.0:
+ version "6.2.1"
+ resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.1.tgz#442fdf0a47ed64f59b6a5d8ff130f4748ed524fb"
+ integrity sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==
+ dependencies:
+ async-limiter "~1.0.0"
+
+ws@~3.3.1:
+ version "3.3.3"
+ resolved "https://registry.yarnpkg.com/ws/-/ws-3.3.3.tgz#f1cf84fe2d5e901ebce94efaece785f187a228f2"
+ integrity sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==
+ dependencies:
+ async-limiter "~1.0.0"
+ safe-buffer "~5.1.0"
+ ultron "~1.1.0"
+
+xdg-basedir@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-4.0.0.tgz#4bc8d9984403696225ef83a1573cbbcb4e79db13"
+ integrity sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==
+
+xml-name-validator@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a"
+ integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==
+
+xmlcreate@^2.0.3:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/xmlcreate/-/xmlcreate-2.0.3.tgz#df9ecd518fd3890ab3548e1b811d040614993497"
+ integrity sha512-HgS+X6zAztGa9zIK3Y3LXuJes33Lz9x+YyTxgrkIdabu2vqcGOWwdfCpf1hWLRrd553wd4QCDf6BBO6FfdsRiQ==
+
+xmlhttprequest-ssl@~1.5.4:
+ version "1.5.5"
+ resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz#c2876b06168aadc40e57d97e81191ac8f4398b3e"
+ integrity sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4=
+
+xmlhttprequest@1.8.0, xmlhttprequest@^1.8.0:
+ version "1.8.0"
+ resolved "https://registry.yarnpkg.com/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz#67fe075c5c24fef39f9d65f5f7b7fe75171968fc"
+ integrity sha1-Z/4HXFwk/vOfnWX197f+dRcZaPw=
+
+xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.1:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54"
+ integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==
+
+"y18n@^3.2.1 || ^4.0.0", y18n@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b"
+ integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==
+
+yallist@^2.1.2:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52"
+ integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=
+
+yallist@^3.0.0, yallist@^3.0.2, yallist@^3.0.3:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.3.tgz#b4b049e314be545e3ce802236d6cd22cd91c3de9"
+ integrity sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==
+
+yallist@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72"
+ integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==
+
+yargs-parser@^11.1.1:
+ version "11.1.1"
+ resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-11.1.1.tgz#879a0865973bca9f6bab5cbdf3b1c67ec7d3bcf4"
+ integrity sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==
+ dependencies:
+ camelcase "^5.0.0"
+ decamelize "^1.2.0"
+
+yargs-parser@^13.1.0:
+ version "13.1.1"
+ resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.1.tgz#d26058532aa06d365fe091f6a1fc06b2f7e5eca0"
+ integrity sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==
+ dependencies:
+ camelcase "^5.0.0"
+ decamelize "^1.2.0"
+
+yargs@13.2.4:
+ version "13.2.4"
+ resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.2.4.tgz#0b562b794016eb9651b98bd37acf364aa5d6dc83"
+ integrity sha512-HG/DWAJa1PAnHT9JAhNa8AbAv3FPaiLzioSjCcmuXXhP8MlpHO5vwls4g4j6n30Z74GVQj8Xa62dWVx1QCGklg==
+ dependencies:
+ cliui "^5.0.0"
+ find-up "^3.0.0"
+ get-caller-file "^2.0.1"
+ os-locale "^3.1.0"
+ require-directory "^2.1.1"
+ require-main-filename "^2.0.0"
+ set-blocking "^2.0.0"
+ string-width "^3.0.0"
+ which-module "^2.0.0"
+ y18n "^4.0.0"
+ yargs-parser "^13.1.0"
+
+yargs@^12.0.2, yargs@^12.0.5:
+ version "12.0.5"
+ resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.5.tgz#05f5997b609647b64f66b81e3b4b10a368e7ad13"
+ integrity sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==
+ dependencies:
+ cliui "^4.0.0"
+ decamelize "^1.2.0"
+ find-up "^3.0.0"
+ get-caller-file "^1.0.1"
+ os-locale "^3.0.0"
+ require-directory "^2.1.1"
+ require-main-filename "^1.0.1"
+ set-blocking "^2.0.0"
+ string-width "^2.0.0"
+ which-module "^2.0.0"
+ y18n "^3.2.1 || ^4.0.0"
+ yargs-parser "^11.1.1"
+
+yauzl@2.4.1:
+ version "2.4.1"
+ resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.4.1.tgz#9528f442dab1b2284e58b4379bb194e22e0c4005"
+ integrity sha1-lSj0QtqxsihOWLQ3m7GU4i4MQAU=
+ dependencies:
+ fd-slicer "~1.0.1"
+
+yeast@0.1.2:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/yeast/-/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419"
+ integrity sha1-AI4G2AlDIMNy28L47XagymyKxBk=
+
+yn@3.1.1:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50"
+ integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==
+
+yocto-queue@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b"
+ integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==
+
+zip-stream@^2.1.2:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/zip-stream/-/zip-stream-2.1.2.tgz#841efd23214b602ff49c497cba1a85d8b5fbc39c"
+ integrity sha512-ykebHGa2+uzth/R4HZLkZh3XFJzivhVsjJt8bN3GvBzLaqqrUdRacu+c4QtnUgjkkQfsOuNE1JgLKMCPNmkKgg==
+ dependencies:
+ archiver-utils "^2.1.0"
+ compress-commons "^2.1.1"
+ readable-stream "^3.4.0"