From 721a722c89335033e56688999fc7944515b89448 Mon Sep 17 00:00:00 2001 From: Sasha Koss Date: Mon, 29 Oct 2018 12:00:27 +0200 Subject: [PATCH] Followup fixes for the weekend helpers (#959) - Format code and examples using Prettier - Adjust the change log entry - Remove redundant getWeekendsBetween - Rebuild the package - Fix Flow typings --- CHANGELOG.md | 17 +- package.json | 2 +- src/eachWeekendOfInterval/index.d.ts | 2 +- src/eachWeekendOfInterval/index.js | 54 ++- src/eachWeekendOfInterval/index.js.flow | 8 +- src/eachWeekendOfInterval/test.js | 72 ++-- src/eachWeekendOfMonth/index.d.ts | 2 +- src/eachWeekendOfMonth/index.js | 13 +- src/eachWeekendOfMonth/index.js.flow | 5 +- src/eachWeekendOfMonth/test.js | 23 +- src/eachWeekendOfYear/index.d.ts | 2 +- src/eachWeekendOfYear/index.js | 13 +- src/eachWeekendOfYear/index.js.flow | 5 +- src/eachWeekendOfYear/test.js | 25 +- src/esm/fp/index.js | 14 + src/esm/index.js | 5 + src/fp/eachWeekendOfInterval/index.d.ts | 4 + src/fp/eachWeekendOfInterval/index.js | 8 + .../eachWeekendOfInterval}/index.js.flow | 11 +- .../index.d.ts | 4 + .../eachWeekendOfIntervalWithOptions/index.js | 8 + .../index.js.flow | 56 +++ src/fp/eachWeekendOfMonth/index.d.ts | 4 + src/fp/eachWeekendOfMonth/index.js | 8 + src/fp/eachWeekendOfMonth/index.js.flow | 52 +++ .../eachWeekendOfMonthWithOptions/index.d.ts | 4 + src/fp/eachWeekendOfMonthWithOptions/index.js | 8 + .../index.js.flow | 56 +++ .../eachWeekendOfYear}/index.d.ts | 4 +- src/fp/eachWeekendOfYear/index.js | 8 + src/fp/eachWeekendOfYear/index.js.flow | 52 +++ .../eachWeekendOfYearWithOptions/index.d.ts | 4 + src/fp/eachWeekendOfYearWithOptions/index.js | 8 + .../index.js.flow | 56 +++ src/fp/index.js | 6 + src/fp/index.js.flow | 14 + src/getWeekendsBetween/benchmark.js | 16 - src/getWeekendsBetween/index.js | 81 ---- src/getWeekendsBetween/test.js | 135 ------ src/index.js | 3 + src/index.js.flow | 12 + typings.d.ts | 394 ++++++++++++++++++ yarn.lock | 8 +- 43 files changed, 934 insertions(+), 352 deletions(-) create mode 100644 src/fp/eachWeekendOfInterval/index.d.ts create mode 100644 src/fp/eachWeekendOfInterval/index.js rename src/{getWeekendsBetween => fp/eachWeekendOfInterval}/index.js.flow (85%) mode change 100755 => 100644 create mode 100644 src/fp/eachWeekendOfIntervalWithOptions/index.d.ts create mode 100644 src/fp/eachWeekendOfIntervalWithOptions/index.js create mode 100644 src/fp/eachWeekendOfIntervalWithOptions/index.js.flow create mode 100644 src/fp/eachWeekendOfMonth/index.d.ts create mode 100644 src/fp/eachWeekendOfMonth/index.js create mode 100644 src/fp/eachWeekendOfMonth/index.js.flow create mode 100644 src/fp/eachWeekendOfMonthWithOptions/index.d.ts create mode 100644 src/fp/eachWeekendOfMonthWithOptions/index.js create mode 100644 src/fp/eachWeekendOfMonthWithOptions/index.js.flow rename src/{getWeekendsBetween => fp/eachWeekendOfYear}/index.d.ts (56%) create mode 100644 src/fp/eachWeekendOfYear/index.js create mode 100644 src/fp/eachWeekendOfYear/index.js.flow create mode 100644 src/fp/eachWeekendOfYearWithOptions/index.d.ts create mode 100644 src/fp/eachWeekendOfYearWithOptions/index.js create mode 100644 src/fp/eachWeekendOfYearWithOptions/index.js.flow delete mode 100755 src/getWeekendsBetween/benchmark.js delete mode 100755 src/getWeekendsBetween/index.js delete mode 100755 src/getWeekendsBetween/test.js diff --git a/CHANGELOG.md b/CHANGELOG.md index b2c56fd9ce..62ae69ffce 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,14 +15,6 @@ for the list of changes made since `v2.0.0-alpha.1`. ### Added -- 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. - - - `eachWeekendOfInterval` - - - `eachWeekendOfMonth` - - - `eachWeekendOfYear` - - 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). @@ -141,7 +133,6 @@ for the list of changes made since `v2.0.0-alpha.1`. - [fi locale is updated for v2 format](https://github.com/date-fns/date-fns/pull/775). Kudos to [@sjuvonen](https://github.com/sjuvonen). - - New locale-dependent week-numbering year helpers: - `getWeek` @@ -172,6 +163,14 @@ for the list of changes made since `v2.0.0-alpha.1`. - 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` + ### Changed - **BREAKING**: new format string API for `format` function diff --git a/package.json b/package.json index 083ec6213a..4ea292183f 100644 --- a/package.json +++ b/package.json @@ -48,7 +48,7 @@ "babel-preset-power-assert": "^1.0.0", "cloc": "^2.2.0", "firebase": "^3.7.1", - "flow-bin": "0.72", + "flow-bin": "0.84.0", "fs-promise": "^1.0.0", "glob-promise": "^2.0.0", "gzip-size-cli": "^1.0.0", diff --git a/src/eachWeekendOfInterval/index.d.ts b/src/eachWeekendOfInterval/index.d.ts index 23b580937b..3f4e8969c5 100644 --- a/src/eachWeekendOfInterval/index.d.ts +++ b/src/eachWeekendOfInterval/index.d.ts @@ -1,4 +1,4 @@ // This file is generated automatically by `scripts/build/typings.js`. Please, don't change it. -import {eachWeekendOfInterval} from 'date-fns' +import { eachWeekendOfInterval } from 'date-fns' export = eachWeekendOfInterval diff --git a/src/eachWeekendOfInterval/index.js b/src/eachWeekendOfInterval/index.js index 0a5dfa88dc..fc43ca5ddc 100755 --- a/src/eachWeekendOfInterval/index.js +++ b/src/eachWeekendOfInterval/index.js @@ -17,52 +17,48 @@ import isWeekend from '../isWeekend/index.js' * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate} * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday) * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale} - * @returns {Array} an array containing all the Saturdays and Sundays + * @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 - * var result = eachWeekendOfInterval( - * {start: new Date(2022, 8, 17), + * var result = eachWeekendOfInterval({ + * start: new Date(2022, 8, 17), * end: new Date(2022, 8, 30) - * }, - * {weekStartsOn: 2} - * ) - * //=> ['Sat Sep 17 2022', 'Sun Sep 18 2022', 'Sat Sep 24 2022', 'Sun Sep 25 2022'] + * }) + * //=> [ + * 2022-09-17T22:00:00.000Z, + * 2022-09-23T22:00:00.000Z, + * 2022-09-24T22:00:00.000Z + * ] * * @example * // Lists all Saturdays and Sundays in the given date interval - * var result = eachWeekendOfInterval( - * {start: new Date(2016, 2, 5), - * end: new Date(2016, 2, 19) - * }, - * {weekStartsOn: 2} - * ) - * //=> ['Sat Mar 05 2016', 'Sun Mar 06 2016, 'Sat Mar 12 2016', 'Sun Mar 13 2016', 'Sat Mar 19 2016'] - * - * @example - * // Lists all Saturdays and Sundays in the given date interval - * var result = eachWeekendOfInterval( - * {start: new Date(2016, 2, 25), + * var result = eachWeekendOfInterval({ + * start: new Date(2016, 2, 25), * end: new Date(2016, 2, 5) - * }, - * {weekStartsOn: 2} - * ) - * //=> RangeError + * }) + * //=> RangeError: Invalid interval */ - -export default function eachWeekendOfInterval (dirtyInterval, dirtyOptions) { +export default function eachWeekendOfInterval(dirtyInterval, dirtyOptions) { if (arguments.length < 1) { - throw new TypeError('1 argument required, but only ' + arguments.length + ' present') + throw new TypeError( + '1 argument required, but only ' + arguments.length + ' present' + ) } 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) + 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)) { diff --git a/src/eachWeekendOfInterval/index.js.flow b/src/eachWeekendOfInterval/index.js.flow index 3043b51ee7..57e27d8b6d 100755 --- a/src/eachWeekendOfInterval/index.js.flow +++ b/src/eachWeekendOfInterval/index.js.flow @@ -14,7 +14,8 @@ type Options = { includeSeconds?: boolean, addSuffix?: boolean, unit?: 'second' | 'minute' | 'hour' | 'day' | 'month' | 'year', - roundingMethod?: 'floor' | 'ceil' | 'round' + roundingMethod?: 'floor' | 'ceil' | 'round', + awareOfUnicodeTokens?: boolean } type Locale = { @@ -46,7 +47,4 @@ type Locale = { } } -declare module.exports: ( - interval: Interval, - options?: Options -) => Array +declare module.exports: (interval: Interval, options?: Options) => Date[] diff --git a/src/eachWeekendOfInterval/test.js b/src/eachWeekendOfInterval/test.js index 9f1daa30a7..671a0a210f 100755 --- a/src/eachWeekendOfInterval/test.js +++ b/src/eachWeekendOfInterval/test.js @@ -4,8 +4,8 @@ import assert from 'power-assert' import eachWeekendOfInterval from '.' -describe('eachWeekendOfInterval', function () { - it('returns array length of 4', function () { +describe('eachWeekendOfInterval', function() { + it('returns array length of 4', function() { var result = eachWeekendOfInterval({ start: new Date(2018, 8 /* Sept */, 17), end: new Date(2018, 8 /* Sept */, 30) @@ -13,7 +13,7 @@ describe('eachWeekendOfInterval', function () { assert(result.length === 4) }) - it('returns array length of 4 with date.toISOString()', function () { + it('returns array length of 4 with date.toISOString()', function() { var result = eachWeekendOfInterval({ start: new Date(2018, 8 /* Sept */, 17).toISOString(), end: new Date(2018, 8 /* Sept */, 30).toISOString() @@ -21,7 +21,7 @@ describe('eachWeekendOfInterval', function () { assert(result.length === 4) }) - it('returns array length of 4 when date strings are used', function () { + it('returns array length of 4 when date strings are used', function() { var result = eachWeekendOfInterval({ start: new Date('September 17, 2019'), end: new Date('September 30, 2019') @@ -29,7 +29,7 @@ describe('eachWeekendOfInterval', function () { assert(result.length === 4) }) - it('the first Saturday returned is Sat Sep 22 2018', function () { + it('the first Saturday returned is Sat Sep 22 2018', function() { var result = eachWeekendOfInterval({ start: new Date(2018, 8 /* Sept */, 17), end: new Date(2018, 8 /* Sept */, 30) @@ -37,7 +37,7 @@ describe('eachWeekendOfInterval', function () { assert(result[0].toDateString() === 'Sat Sep 22 2018') }) - it('the first Sunday returned is Sun Sep 23 2018', function () { + it('the first Sunday returned is Sun Sep 23 2018', function() { var result = eachWeekendOfInterval({ start: new Date(2018, 8, 17), end: new Date(2018, 8, 30) @@ -45,7 +45,7 @@ describe('eachWeekendOfInterval', function () { assert(result[1].toDateString() === 'Sun Sep 23 2018') }) - it('the second Saturday returned is Sat Sep 29 2018', function () { + it('the second Saturday returned is Sat Sep 29 2018', function() { var result = eachWeekendOfInterval({ start: new Date(2018, 8 /* Sept */, 17), end: new Date(2018, 8 /* Sept */, 30) @@ -53,7 +53,7 @@ describe('eachWeekendOfInterval', function () { assert(result[2].toDateString() === 'Sat Sep 29 2018') }) - it('the second Sunday returned is Sun Sep 30 2018', function () { + it('the second Sunday returned is Sun Sep 30 2018', function() { var result = eachWeekendOfInterval({ start: new Date(2018, 8 /* Sept */, 17), end: new Date(2018, 8 /* Sept */, 30) @@ -61,7 +61,7 @@ describe('eachWeekendOfInterval', function () { assert(result[3].toDateString() === 'Sun Sep 30 2018') }) - it('returns array length of 104', function () { + it('returns array length of 104', function() { var result = eachWeekendOfInterval({ start: new Date(2019, 0 /* Jan */, 1), end: new Date(2019, 11 /* Dec */, 31) @@ -69,7 +69,7 @@ describe('eachWeekendOfInterval', function () { assert(result.length === 104) }) - it('returns Sun Mar 17 2019', function () { + it('returns Sun Mar 17 2019', function() { var result = eachWeekendOfInterval({ start: new Date(2019, 0 /* Jan */, 1), end: new Date(2019, 11 /* Dec */, 31) @@ -77,7 +77,7 @@ describe('eachWeekendOfInterval', function () { assert(result[21].toDateString() === 'Sun Mar 17 2019') }) - it('returns Sat Oct 26 2019', function () { + it('returns Sat Oct 26 2019', function() { var result = eachWeekendOfInterval({ start: new Date(2019, 0 /* Jan */, 1), end: new Date(2019, 11 /* Dec */, 31) @@ -85,62 +85,72 @@ describe('eachWeekendOfInterval', function () { assert(result[84].toDateString() === 'Sat Oct 26 2019') }) - it('throws `RangeError` invalid interval start date is used', function () { + it('throws `RangeError` invalid interval start date is used', function() { // $ExpectedMistake - var block = eachWeekendOfInterval.bind(null, + var block = eachWeekendOfInterval.bind( + null, { start: new Date(NaN), end: new Date(2019, 11 /* Dec */, 31) }, - { weekStartsOn: 6 }) + { weekStartsOn: 6 } + ) assert.throws(block, RangeError) }) - it('throws `RangeError` invalid interval end date is used', function () { + it('throws `RangeError` invalid interval end date is used', function() { // $ExpectedMistake - var block = eachWeekendOfInterval.bind(null, + var block = eachWeekendOfInterval.bind( + null, { start: new Date(2019, 0 /* Jan */, 1), end: new Date(NaN) }, - { weekStartsOn: 6 }) + { weekStartsOn: 6 } + ) assert.throws(block, RangeError) }) - it('throws TypeError exception if passed less than 1 argument', function () { - assert.throws(eachWeekendOfInterval.bind(), TypeError) + it('throws TypeError exception if passed less than 1 argument', function() { + assert.throws(eachWeekendOfInterval, TypeError) }) - it('throws `RangeError` if `options.weekStartsOn` is not convertable to 0, 1, ..., 6 or undefined', function () { - // $ExpectedMistake - var block = eachWeekendOfInterval.bind(null, + it('throws `RangeError` if `options.weekStartsOn` is not convertable to 0, 1, ..., 6 or undefined', function() { + var block = eachWeekendOfInterval.bind( + null, + // $ExpectedMistake { start: new Date(2018, 8 /* Sept */, 17), end: new Date(2018, 8 /* Sept */, 30) }, - { weekStartsOn: 9 }) + { weekStartsOn: 9 } + ) assert.throws(block, RangeError) }) - it('throws `RangeError` if `options.weekStartsOn` when passing in invalid value', function () { - // $ExpectedMistake - var block = eachWeekendOfInterval.bind(null, + it('throws `RangeError` if `options.weekStartsOn` when passing in invalid value', function() { + var block = eachWeekendOfInterval.bind( + null, + // $ExpectedMistake { start: new Date(2018, 8 /* Sept */, 17), end: new Date(2018, 8 /* Sept */, 30) }, - { weekStartsOn: NaN }) + { weekStartsOn: NaN } + ) assert.throws(block, RangeError) }) - it('throws `RangeError` if start of an interval is after its end', function () { - // $ExpectedMistake - var block = eachWeekendOfInterval.bind(null, + it('throws `RangeError` if start of an interval is after its end', function() { + var block = eachWeekendOfInterval.bind( + null, + // $ExpectedMistake { start: new Date(2018, 8 /* Sept */, 25), end: new Date(2018, 8 /* Sept */, 6) }, - { weekStartsOn: NaN }) + { weekStartsOn: NaN } + ) assert.throws(block, RangeError) }) }) diff --git a/src/eachWeekendOfMonth/index.d.ts b/src/eachWeekendOfMonth/index.d.ts index 25be83b5d7..f687eb281e 100644 --- a/src/eachWeekendOfMonth/index.d.ts +++ b/src/eachWeekendOfMonth/index.d.ts @@ -1,4 +1,4 @@ // This file is generated automatically by `scripts/build/typings.js`. Please, don't change it. -import {eachWeekendOfMonth} from 'date-fns' +import { eachWeekendOfMonth } from 'date-fns' export = eachWeekendOfMonth diff --git a/src/eachWeekendOfMonth/index.js b/src/eachWeekendOfMonth/index.js index 9067437f9c..988012d591 100644 --- a/src/eachWeekendOfMonth/index.js +++ b/src/eachWeekendOfMonth/index.js @@ -13,16 +13,21 @@ import endOfMonth from '../endOfMonth/index.js' * @param {Date|String|Number} date - the given month * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options} * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate} - * @returns {Array} an array containing all the Saturdays and Sundays + * @returns {Date[]} an array containing all the Saturdays and Sundays * @throws {TypeError} 1 argument required * * @example * // Lists all Saturdays and Sundays in the given month * var result = eachWeekendOfMonth(new Date(2020, 1, 1)) - * //=> ['Sat Feb 01 2020', 'Sun Feb 02 2020', 'Sat Feb 08 2020', ... , 'Sat Feb 22 2020', 'Sun Feb 23 2020', 'Sat Feb 29 2020'] + * //=> [ + * 2020-02-01T23:00:00.000Z, + * 2020-02-07T23:00:00.000Z, + * 2020-02-08T23:00:00.000Z, + * ... + * 2020-02-28T23:00:00.000Z + * ] */ - -export default function eachWeekendOfMonth (dirtyDate, dirtyOptions) { +export default function eachWeekendOfMonth(dirtyDate, dirtyOptions) { if (arguments.length < 1) { throw new TypeError( '1 arguments required, but only ' + arguments.length + ' present' diff --git a/src/eachWeekendOfMonth/index.js.flow b/src/eachWeekendOfMonth/index.js.flow index 912b0cfd58..a748e1f2fa 100644 --- a/src/eachWeekendOfMonth/index.js.flow +++ b/src/eachWeekendOfMonth/index.js.flow @@ -14,7 +14,8 @@ type Options = { includeSeconds?: boolean, addSuffix?: boolean, unit?: 'second' | 'minute' | 'hour' | 'day' | 'month' | 'year', - roundingMethod?: 'floor' | 'ceil' | 'round' + roundingMethod?: 'floor' | 'ceil' | 'round', + awareOfUnicodeTokens?: boolean } type Locale = { @@ -49,4 +50,4 @@ type Locale = { declare module.exports: ( date: Date | string | number, options?: Options -) => Array +) => Date[] diff --git a/src/eachWeekendOfMonth/test.js b/src/eachWeekendOfMonth/test.js index d8d5e4f51c..82973f63d5 100644 --- a/src/eachWeekendOfMonth/test.js +++ b/src/eachWeekendOfMonth/test.js @@ -4,35 +4,42 @@ import assert from 'power-assert' import eachWeekendOfMonth from '.' -describe('eachWeekendOfMonth', function () { - it('returns array length of 8', function () { +describe('eachWeekendOfMonth', function() { + it('returns array length of 8', function() { var result = eachWeekendOfMonth(new Date(2022, 1, 20)) assert(result.length === 8) }) - it('returns the first date in array: Sat Feb 05 2022', function () { + it('returns the first date in array: Sat Feb 05 2022', function() { var result = eachWeekendOfMonth(new Date(2022, 1, 13)) assert(result.length === 8) assert(result[0].toDateString() === 'Sat Feb 05 2022') }) - it('returns the last date in array: Sun Feb 27 2022', function () { + it('returns the last date in array: Sun Feb 27 2022', function() { var result = eachWeekendOfMonth(new Date(2022, 1, 5)) assert(result.length === 8) assert(result[result.length - 1].toDateString() === 'Sun Feb 27 2022') }) - it('throws TypeError exception when passed less than 1 argument', function () { + it('throws TypeError exception when passed less than 1 argument', function() { assert.throws(eachWeekendOfMonth.bind(null), TypeError) }) - it('throws TypeError exception when the expected year is a NaN', function () { + it('throws TypeError exception when the expected year is a NaN', function() { assert.throws(eachWeekendOfMonth.bind(1, NaN), RangeError) }) - it('throws RangeError exception when the additionalDigits option is a NaN', function () { + it('throws RangeError exception when the additionalDigits option is a NaN', function() { assert.throws( - eachWeekendOfMonth.bind(null, new Date(2020, 1, 5), { additionalDigits: NaN }), + eachWeekendOfMonth.bind( + null, + // $ExpectedMistake + new Date(2020, 1, 5), + { + additionalDigits: NaN + } + ), RangeError ) }) diff --git a/src/eachWeekendOfYear/index.d.ts b/src/eachWeekendOfYear/index.d.ts index 3cc9dd4330..bfa802e790 100644 --- a/src/eachWeekendOfYear/index.d.ts +++ b/src/eachWeekendOfYear/index.d.ts @@ -1,4 +1,4 @@ // This file is generated automatically by `scripts/build/typings.js`. Please, don't change it. -import {eachWeekendOfYear} from 'date-fns' +import { eachWeekendOfYear } from 'date-fns' export = eachWeekendOfYear diff --git a/src/eachWeekendOfYear/index.js b/src/eachWeekendOfYear/index.js index 26cb21f82d..11c71fff8e 100644 --- a/src/eachWeekendOfYear/index.js +++ b/src/eachWeekendOfYear/index.js @@ -13,16 +13,21 @@ import endOfYear from '../endOfYear/index.js' * @param {Date|String|Number} date - the given year * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options} * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate} - * @returns {Array} an array containing all the Saturdays and Sundays + * @returns {Date[]} an array containing all the Saturdays and Sundays * @throws {TypeError} 1 argument required * * @example * // Lists all Saturdays and Sundays in the year * var result = eachWeekendOfYear(new Date(2020, 1, 1)) - * //=> ['Sat Jan 04 2020', 'Sun Jan 05 2020', 'Sat Jan 11 2020', ... , 'Sun Dec 20 2020', 'Sat Dec 26 2020', 'Sun Dec 27 2020'] + * //=> [ + * 2020-01-03T23:00:00.000Z, + * 2020-01-04T23:00:00.000Z, + * 2020-01-10T23:00:00.000Z, + * ... + * 2020-12-26T23:00:00.000Z + * ] */ - -export default function eachWeekendOfYear (dirtyDate, dirtyOptions) { +export default function eachWeekendOfYear(dirtyDate, dirtyOptions) { if (arguments.length < 1) { throw new TypeError( '1 arguments required, but only ' + arguments.length + ' present' diff --git a/src/eachWeekendOfYear/index.js.flow b/src/eachWeekendOfYear/index.js.flow index 912b0cfd58..a748e1f2fa 100644 --- a/src/eachWeekendOfYear/index.js.flow +++ b/src/eachWeekendOfYear/index.js.flow @@ -14,7 +14,8 @@ type Options = { includeSeconds?: boolean, addSuffix?: boolean, unit?: 'second' | 'minute' | 'hour' | 'day' | 'month' | 'year', - roundingMethod?: 'floor' | 'ceil' | 'round' + roundingMethod?: 'floor' | 'ceil' | 'round', + awareOfUnicodeTokens?: boolean } type Locale = { @@ -49,4 +50,4 @@ type Locale = { declare module.exports: ( date: Date | string | number, options?: Options -) => Array +) => Date[] diff --git a/src/eachWeekendOfYear/test.js b/src/eachWeekendOfYear/test.js index 64acd9ae26..4da3ab1072 100644 --- a/src/eachWeekendOfYear/test.js +++ b/src/eachWeekendOfYear/test.js @@ -4,43 +4,48 @@ import assert from 'power-assert' import eachWeekendOfYear from '.' -describe('eachWeekendOfYear', function () { - it('returns array length of 104', function () { +describe('eachWeekendOfYear', function() { + it('returns array length of 104', function() { var result = eachWeekendOfYear(new Date(2020, 0, 1)) assert(result.length === 104) }) - it('returns array length of 104 when year value is a string', function () { + it('returns array length of 104 when year value is a string', function() { var result = eachWeekendOfYear(new Date(2018, 11, 31)) assert(result.length === 104) }) - it('returns the date of index 60: Sat Aug 01 2020', function () { + it('returns the date of index 60: Sat Aug 01 2020', function() { var result = eachWeekendOfYear(new Date(2020, 2, 22)) assert(result[60].toDateString() === 'Sat Aug 01 2020') }) - it('returns the last Sunday of the year: Sun Dec 27 2020', function () { + it('returns the last Sunday of the year: Sun Dec 27 2020', function() { var result = eachWeekendOfYear(new Date(2020, 8, 12)) assert(result[103].toDateString() === 'Sun Dec 27 2020') }) - it('throws TypeError exception when no argument is passed in', function () { + it('throws TypeError exception when no argument is passed in', function() { assert.throws(eachWeekendOfYear.bind(null), TypeError) }) - it('throws TypeError exception when the expected year is a NaN', function () { + it('throws TypeError exception when the expected year is a NaN', function() { assert.throws(eachWeekendOfYear.bind(NaN), TypeError) }) - it('throws RangeError exception when the additionalDigits option is a NaN', function () { + it('throws RangeError exception when the additionalDigits option is a NaN', function() { assert.throws( - eachWeekendOfYear.bind(null, new Date(2020, 5, 28), { additionalDigits: NaN }), + eachWeekendOfYear.bind( + null, + // $ExpectedMistake + new Date(2020, 5, 28), + { additionalDigits: NaN } + ), RangeError ) }) - it('throws RangeError exception when date is invalid', function () { + it('throws RangeError exception when date is invalid', function() { assert.throws( eachWeekendOfYear.bind(null, new Date(NaN), { additionalDigits: 2 }), RangeError diff --git a/src/esm/fp/index.js b/src/esm/fp/index.js index 30ca3946d7..ba3fba3dd4 100644 --- a/src/esm/fp/index.js +++ b/src/esm/fp/index.js @@ -150,6 +150,20 @@ export { default as eachWeekOfInterval } from './eachWeekOfInterval/index.js' export { default as eachWeekOfIntervalWithOptions } from './eachWeekOfIntervalWithOptions/index.js' +export { + default as eachWeekendOfInterval +} from './eachWeekendOfInterval/index.js' +export { + default as eachWeekendOfIntervalWithOptions +} from './eachWeekendOfIntervalWithOptions/index.js' +export { default as eachWeekendOfMonth } from './eachWeekendOfMonth/index.js' +export { + default as eachWeekendOfMonthWithOptions +} from './eachWeekendOfMonthWithOptions/index.js' +export { default as eachWeekendOfYear } from './eachWeekendOfYear/index.js' +export { + default as eachWeekendOfYearWithOptions +} from './eachWeekendOfYearWithOptions/index.js' export { default as endOfDay } from './endOfDay/index.js' export { default as endOfDayWithOptions } from './endOfDayWithOptions/index.js' export { default as endOfDecade } from './endOfDecade/index.js' diff --git a/src/esm/index.js b/src/esm/index.js index 80a45a8d76..75121f08f1 100644 --- a/src/esm/index.js +++ b/src/esm/index.js @@ -56,6 +56,11 @@ export { default as differenceInWeeks } from './differenceInWeeks/index.js' export { default as differenceInYears } from './differenceInYears/index.js' export { default as eachDayOfInterval } from './eachDayOfInterval/index.js' export { default as eachWeekOfInterval } from './eachWeekOfInterval/index.js' +export { + default as eachWeekendOfInterval +} from './eachWeekendOfInterval/index.js' +export { default as eachWeekendOfMonth } from './eachWeekendOfMonth/index.js' +export { default as eachWeekendOfYear } from './eachWeekendOfYear/index.js' export { default as endOfDay } from './endOfDay/index.js' export { default as endOfDecade } from './endOfDecade/index.js' export { default as endOfHour } from './endOfHour/index.js' diff --git a/src/fp/eachWeekendOfInterval/index.d.ts b/src/fp/eachWeekendOfInterval/index.d.ts new file mode 100644 index 0000000000..114d516588 --- /dev/null +++ b/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 = eachWeekendOfInterval diff --git a/src/fp/eachWeekendOfInterval/index.js b/src/fp/eachWeekendOfInterval/index.js new file mode 100644 index 0000000000..91f0e2cc23 --- /dev/null +++ b/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.js' +import convertToFP from '../_lib/convertToFP/index.js' + +var eachWeekendOfInterval = convertToFP(fn, 1) + +export default eachWeekendOfInterval diff --git a/src/getWeekendsBetween/index.js.flow b/src/fp/eachWeekendOfInterval/index.js.flow old mode 100755 new mode 100644 similarity index 85% rename from src/getWeekendsBetween/index.js.flow rename to src/fp/eachWeekendOfInterval/index.js.flow index a8bf6e920d..1c82971e1f --- a/src/getWeekendsBetween/index.js.flow +++ b/src/fp/eachWeekendOfInterval/index.js.flow @@ -14,7 +14,8 @@ type Options = { includeSeconds?: boolean, addSuffix?: boolean, unit?: 'second' | 'minute' | 'hour' | 'day' | 'month' | 'year', - roundingMethod?: 'floor' | 'ceil' | 'round' + roundingMethod?: 'floor' | 'ceil' | 'round', + awareOfUnicodeTokens?: boolean } type Locale = { @@ -46,8 +47,6 @@ type Locale = { } } -declare module.exports: ( - dateStart: Date | string | number, - dateEnd: Date | string | number, - options?: Options -) => Array +type CurriedFn1 = (a: A) => R + +declare module.exports: CurriedFn1 diff --git a/src/fp/eachWeekendOfIntervalWithOptions/index.d.ts b/src/fp/eachWeekendOfIntervalWithOptions/index.d.ts new file mode 100644 index 0000000000..571b1400db --- /dev/null +++ b/src/fp/eachWeekendOfIntervalWithOptions/index.d.ts @@ -0,0 +1,4 @@ +// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it. + +import { eachWeekendOfIntervalWithOptions } from 'date-fns/fp' +export = eachWeekendOfIntervalWithOptions diff --git a/src/fp/eachWeekendOfIntervalWithOptions/index.js b/src/fp/eachWeekendOfIntervalWithOptions/index.js new file mode 100644 index 0000000000..92cbb61fa6 --- /dev/null +++ b/src/fp/eachWeekendOfIntervalWithOptions/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.js' +import convertToFP from '../_lib/convertToFP/index.js' + +var eachWeekendOfIntervalWithOptions = convertToFP(fn, 2) + +export default eachWeekendOfIntervalWithOptions diff --git a/src/fp/eachWeekendOfIntervalWithOptions/index.js.flow b/src/fp/eachWeekendOfIntervalWithOptions/index.js.flow new file mode 100644 index 0000000000..89bbe4f337 --- /dev/null +++ b/src/fp/eachWeekendOfIntervalWithOptions/index.js.flow @@ -0,0 +1,56 @@ +// @flow +// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it. + +type Interval = { + start: Date | string | number, + end: Date | string | number +} + +type Options = { + weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6, + firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7, + additionalDigits?: 0 | 1 | 2, + locale?: Locale, + includeSeconds?: boolean, + addSuffix?: boolean, + unit?: 'second' | 'minute' | 'hour' | 'day' | 'month' | 'year', + roundingMethod?: 'floor' | 'ceil' | 'round', + awareOfUnicodeTokens?: boolean +} + +type Locale = { + formatDistance: Function, + formatRelative: Function, + localize: { + ordinalNumber: Function, + era: Function, + quarter: Function, + month: Function, + day: Function, + dayPeriod: Function + }, + formatLong: Object, + date: Function, + time: Function, + dateTime: Function, + match: { + ordinalNumber: Function, + era: Function, + quarter: Function, + month: Function, + day: Function, + dayPeriod: Function + }, + options?: { + weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6, + firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7 + } +} + +type CurriedFn1 = (a: A) => R + +type CurriedFn2 = ( + a: A +) => CurriedFn1 | ((a: A, b: B) => R) + +declare module.exports: CurriedFn2 diff --git a/src/fp/eachWeekendOfMonth/index.d.ts b/src/fp/eachWeekendOfMonth/index.d.ts new file mode 100644 index 0000000000..924022412c --- /dev/null +++ b/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 = eachWeekendOfMonth diff --git a/src/fp/eachWeekendOfMonth/index.js b/src/fp/eachWeekendOfMonth/index.js new file mode 100644 index 0000000000..62dc29e0a2 --- /dev/null +++ b/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.js' +import convertToFP from '../_lib/convertToFP/index.js' + +var eachWeekendOfMonth = convertToFP(fn, 1) + +export default eachWeekendOfMonth diff --git a/src/fp/eachWeekendOfMonth/index.js.flow b/src/fp/eachWeekendOfMonth/index.js.flow new file mode 100644 index 0000000000..5667a58081 --- /dev/null +++ b/src/fp/eachWeekendOfMonth/index.js.flow @@ -0,0 +1,52 @@ +// @flow +// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it. + +type Interval = { + start: Date | string | number, + end: Date | string | number +} + +type Options = { + weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6, + firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7, + additionalDigits?: 0 | 1 | 2, + locale?: Locale, + includeSeconds?: boolean, + addSuffix?: boolean, + unit?: 'second' | 'minute' | 'hour' | 'day' | 'month' | 'year', + roundingMethod?: 'floor' | 'ceil' | 'round', + awareOfUnicodeTokens?: boolean +} + +type Locale = { + formatDistance: Function, + formatRelative: Function, + localize: { + ordinalNumber: Function, + era: Function, + quarter: Function, + month: Function, + day: Function, + dayPeriod: Function + }, + formatLong: Object, + date: Function, + time: Function, + dateTime: Function, + match: { + ordinalNumber: Function, + era: Function, + quarter: Function, + month: Function, + day: Function, + dayPeriod: Function + }, + options?: { + weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6, + firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7 + } +} + +type CurriedFn1 = (a: A) => R + +declare module.exports: CurriedFn1 diff --git a/src/fp/eachWeekendOfMonthWithOptions/index.d.ts b/src/fp/eachWeekendOfMonthWithOptions/index.d.ts new file mode 100644 index 0000000000..c965b39564 --- /dev/null +++ b/src/fp/eachWeekendOfMonthWithOptions/index.d.ts @@ -0,0 +1,4 @@ +// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it. + +import { eachWeekendOfMonthWithOptions } from 'date-fns/fp' +export = eachWeekendOfMonthWithOptions diff --git a/src/fp/eachWeekendOfMonthWithOptions/index.js b/src/fp/eachWeekendOfMonthWithOptions/index.js new file mode 100644 index 0000000000..00c9261160 --- /dev/null +++ b/src/fp/eachWeekendOfMonthWithOptions/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.js' +import convertToFP from '../_lib/convertToFP/index.js' + +var eachWeekendOfMonthWithOptions = convertToFP(fn, 2) + +export default eachWeekendOfMonthWithOptions diff --git a/src/fp/eachWeekendOfMonthWithOptions/index.js.flow b/src/fp/eachWeekendOfMonthWithOptions/index.js.flow new file mode 100644 index 0000000000..4a0c0ac39c --- /dev/null +++ b/src/fp/eachWeekendOfMonthWithOptions/index.js.flow @@ -0,0 +1,56 @@ +// @flow +// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it. + +type Interval = { + start: Date | string | number, + end: Date | string | number +} + +type Options = { + weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6, + firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7, + additionalDigits?: 0 | 1 | 2, + locale?: Locale, + includeSeconds?: boolean, + addSuffix?: boolean, + unit?: 'second' | 'minute' | 'hour' | 'day' | 'month' | 'year', + roundingMethod?: 'floor' | 'ceil' | 'round', + awareOfUnicodeTokens?: boolean +} + +type Locale = { + formatDistance: Function, + formatRelative: Function, + localize: { + ordinalNumber: Function, + era: Function, + quarter: Function, + month: Function, + day: Function, + dayPeriod: Function + }, + formatLong: Object, + date: Function, + time: Function, + dateTime: Function, + match: { + ordinalNumber: Function, + era: Function, + quarter: Function, + month: Function, + day: Function, + dayPeriod: Function + }, + options?: { + weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6, + firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7 + } +} + +type CurriedFn1 = (a: A) => R + +type CurriedFn2 = ( + a: A +) => CurriedFn1 | ((a: A, b: B) => R) + +declare module.exports: CurriedFn2 diff --git a/src/getWeekendsBetween/index.d.ts b/src/fp/eachWeekendOfYear/index.d.ts similarity index 56% rename from src/getWeekendsBetween/index.d.ts rename to src/fp/eachWeekendOfYear/index.d.ts index 620be7b2d8..35b5b0d3c5 100644 --- a/src/getWeekendsBetween/index.d.ts +++ b/src/fp/eachWeekendOfYear/index.d.ts @@ -1,4 +1,4 @@ // This file is generated automatically by `scripts/build/typings.js`. Please, don't change it. -import {getWeekendsBetween} from 'date-fns' -export = getWeekendsBetween +import { eachWeekendOfYear } from 'date-fns/fp' +export = eachWeekendOfYear diff --git a/src/fp/eachWeekendOfYear/index.js b/src/fp/eachWeekendOfYear/index.js new file mode 100644 index 0000000000..ecac091c49 --- /dev/null +++ b/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.js' +import convertToFP from '../_lib/convertToFP/index.js' + +var eachWeekendOfYear = convertToFP(fn, 1) + +export default eachWeekendOfYear diff --git a/src/fp/eachWeekendOfYear/index.js.flow b/src/fp/eachWeekendOfYear/index.js.flow new file mode 100644 index 0000000000..5667a58081 --- /dev/null +++ b/src/fp/eachWeekendOfYear/index.js.flow @@ -0,0 +1,52 @@ +// @flow +// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it. + +type Interval = { + start: Date | string | number, + end: Date | string | number +} + +type Options = { + weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6, + firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7, + additionalDigits?: 0 | 1 | 2, + locale?: Locale, + includeSeconds?: boolean, + addSuffix?: boolean, + unit?: 'second' | 'minute' | 'hour' | 'day' | 'month' | 'year', + roundingMethod?: 'floor' | 'ceil' | 'round', + awareOfUnicodeTokens?: boolean +} + +type Locale = { + formatDistance: Function, + formatRelative: Function, + localize: { + ordinalNumber: Function, + era: Function, + quarter: Function, + month: Function, + day: Function, + dayPeriod: Function + }, + formatLong: Object, + date: Function, + time: Function, + dateTime: Function, + match: { + ordinalNumber: Function, + era: Function, + quarter: Function, + month: Function, + day: Function, + dayPeriod: Function + }, + options?: { + weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6, + firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7 + } +} + +type CurriedFn1 = (a: A) => R + +declare module.exports: CurriedFn1 diff --git a/src/fp/eachWeekendOfYearWithOptions/index.d.ts b/src/fp/eachWeekendOfYearWithOptions/index.d.ts new file mode 100644 index 0000000000..caef63dd47 --- /dev/null +++ b/src/fp/eachWeekendOfYearWithOptions/index.d.ts @@ -0,0 +1,4 @@ +// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it. + +import { eachWeekendOfYearWithOptions } from 'date-fns/fp' +export = eachWeekendOfYearWithOptions diff --git a/src/fp/eachWeekendOfYearWithOptions/index.js b/src/fp/eachWeekendOfYearWithOptions/index.js new file mode 100644 index 0000000000..d6700bcaca --- /dev/null +++ b/src/fp/eachWeekendOfYearWithOptions/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.js' +import convertToFP from '../_lib/convertToFP/index.js' + +var eachWeekendOfYearWithOptions = convertToFP(fn, 2) + +export default eachWeekendOfYearWithOptions diff --git a/src/fp/eachWeekendOfYearWithOptions/index.js.flow b/src/fp/eachWeekendOfYearWithOptions/index.js.flow new file mode 100644 index 0000000000..4a0c0ac39c --- /dev/null +++ b/src/fp/eachWeekendOfYearWithOptions/index.js.flow @@ -0,0 +1,56 @@ +// @flow +// This file is generated automatically by `scripts/build/typings.js`. Please, don't change it. + +type Interval = { + start: Date | string | number, + end: Date | string | number +} + +type Options = { + weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6, + firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7, + additionalDigits?: 0 | 1 | 2, + locale?: Locale, + includeSeconds?: boolean, + addSuffix?: boolean, + unit?: 'second' | 'minute' | 'hour' | 'day' | 'month' | 'year', + roundingMethod?: 'floor' | 'ceil' | 'round', + awareOfUnicodeTokens?: boolean +} + +type Locale = { + formatDistance: Function, + formatRelative: Function, + localize: { + ordinalNumber: Function, + era: Function, + quarter: Function, + month: Function, + day: Function, + dayPeriod: Function + }, + formatLong: Object, + date: Function, + time: Function, + dateTime: Function, + match: { + ordinalNumber: Function, + era: Function, + quarter: Function, + month: Function, + day: Function, + dayPeriod: Function + }, + options?: { + weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6, + firstWeekContainsDate?: 1 | 2 | 3 | 4 | 5 | 6 | 7 + } +} + +type CurriedFn1 = (a: A) => R + +type CurriedFn2 = ( + a: A +) => CurriedFn1 | ((a: A, b: B) => R) + +declare module.exports: CurriedFn2 diff --git a/src/fp/index.js b/src/fp/index.js index f72c761f49..f5a2e70bdb 100644 --- a/src/fp/index.js +++ b/src/fp/index.js @@ -69,6 +69,12 @@ module.exports = { eachDayOfIntervalWithOptions: require('./eachDayOfIntervalWithOptions/index.js'), eachWeekOfInterval: require('./eachWeekOfInterval/index.js'), eachWeekOfIntervalWithOptions: require('./eachWeekOfIntervalWithOptions/index.js'), + eachWeekendOfInterval: require('./eachWeekendOfInterval/index.js'), + eachWeekendOfIntervalWithOptions: require('./eachWeekendOfIntervalWithOptions/index.js'), + eachWeekendOfMonth: require('./eachWeekendOfMonth/index.js'), + eachWeekendOfMonthWithOptions: require('./eachWeekendOfMonthWithOptions/index.js'), + eachWeekendOfYear: require('./eachWeekendOfYear/index.js'), + eachWeekendOfYearWithOptions: require('./eachWeekendOfYearWithOptions/index.js'), endOfDay: require('./endOfDay/index.js'), endOfDayWithOptions: require('./endOfDayWithOptions/index.js'), endOfDecade: require('./endOfDecade/index.js'), diff --git a/src/fp/index.js.flow b/src/fp/index.js.flow index 3440f493e2..95068239ad 100644 --- a/src/fp/index.js.flow +++ b/src/fp/index.js.flow @@ -383,6 +383,20 @@ declare module.exports: { >, eachDayOfInterval: CurriedFn1, eachDayOfIntervalWithOptions: CurriedFn2, + eachWeekendOfInterval: CurriedFn1, + eachWeekendOfIntervalWithOptions: CurriedFn2, + eachWeekendOfMonth: CurriedFn1, + eachWeekendOfMonthWithOptions: CurriedFn2< + Options, + Date | string | number, + Date[] + >, + eachWeekendOfYear: CurriedFn1, + eachWeekendOfYearWithOptions: CurriedFn2< + Options, + Date | string | number, + Date[] + >, eachWeekOfInterval: CurriedFn1, eachWeekOfIntervalWithOptions: CurriedFn2, endOfDay: CurriedFn1, diff --git a/src/getWeekendsBetween/benchmark.js b/src/getWeekendsBetween/benchmark.js deleted file mode 100755 index c48b6114a5..0000000000 --- a/src/getWeekendsBetween/benchmark.js +++ /dev/null @@ -1,16 +0,0 @@ -// @flow -/* eslint-env mocha */ -/* global suite, benchmark */ - -import getWeekendsBetween from '.' - -suite('getWeekendsBetween', function () { - benchmark('date-fns', function () { - return getWeekendsBetween({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/src/getWeekendsBetween/index.js b/src/getWeekendsBetween/index.js deleted file mode 100755 index 9f62ed8d84..0000000000 --- a/src/getWeekendsBetween/index.js +++ /dev/null @@ -1,81 +0,0 @@ -import toInteger from '../_lib/toInteger/index.js' -import eachDayOfInterval from '../eachDayOfInterval/index.js' -import isSunday from '../isSunday/index.js' -import isWeekend from '../isWeekend/index.js' - -/** - * @name getWeekendsBetween - * @category Week 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 {Date|String|Number} dateStart - the start date - * @param {Date|String|Number} dateEnd - the end date - * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options} - * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate} - * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday) - * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale} - * @returns {Array} an array containing all the Saturdays and Sundays - * @throws {TypeError} 2 arguments required - * - * @example - * // Lists all Saturdays and Sundays in the given date interval - * let result = getWeekendsBetween( - * {start: new Date(2022, 8, 17), - * end: new Date(2022, 8, 30)}, - * {weekStartsOn: 2} - * ) - * //=> ['Sat Sep 17 2022', 'Sun Sep 18 2022', 'Sat Sep 24 2022', 'Sun Sep 25 2022'] - * - * @example - * // Lists all Saturdays and Sundays in the given date interval - * let result = getWeekendsBetween( - * {start: new Date('March 5, 2016'), - * end: new Date('March 19, 2016')}, - * {weekStartsOn: 2} - * ) - * //=> ['Sat Mar 05 2016', 'Sun Mar 06 2016, 'Sat Mar 12 2016', 'Sun Mar 13 2016', 'Sat Mar 19 2016'] - * - * @example - * // Lists all Saturdays and Sundays in the given date interval - * let result = getWeekendsBetween( - * {start: new Date('March 25, 2016'), - * end: new Date('March 5, 2016')}, - * {weekStartsOn: 2} - * ) - * //=> [] - */ - -export default function getWeekendsBetween (dirtyInterval, dirtyOptions) { - if (arguments.length < 1) { - throw new TypeError('1 argument required, but only ' + arguments.length + ' present') - } - - 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 interval = dirtyInterval || {} - var dateInterval = eachDayOfInterval(interval) - var weekends = [] - var index = 0 - while (index++ < dateInterval.length) { - var date = dateInterval[index] - if (isWeekend(date)) { - weekends.push(new Date(date)) - if (isSunday(date)) { - index = index + 5 - } - } - } - return weekends -} diff --git a/src/getWeekendsBetween/test.js b/src/getWeekendsBetween/test.js deleted file mode 100755 index bf951b8e2a..0000000000 --- a/src/getWeekendsBetween/test.js +++ /dev/null @@ -1,135 +0,0 @@ -// @flow -/* eslint-env mocha */ - -import assert from 'power-assert' -import getWeekendsBetween from '.' - -describe('getWeekendsBetween', function () { - it('returns array length of 4', function () { - var result = getWeekendsBetween({ - start: new Date(2018, 8 /* Sept */, 17), - end: new Date(2018, 8 /* Sept */, 30) - }) - assert(result.length === 4) - }) - - it('returns array length of 4 with date.toISOString()', function () { - var result = getWeekendsBetween({ - start: new Date(2018, 8 /* Sept */, 17).toISOString(), - end: new Date(2018, 8 /* Sept */, 30).toISOString() - }) - assert(result.length === 4) - }) - - it('returns array length of 4 when date strings are used', function () { - var result = getWeekendsBetween({ - start: new Date('September 17, 2019'), - end: new Date('September 30, 2019') - }) - assert(result.length === 4) - }) - - it('the first Saturday returned is Sat Sep 22 2018', function () { - var result = getWeekendsBetween({ - start: new Date(2018, 8 /* Sept */, 17), - end: new Date(2018, 8 /* Sept */, 30) - }) - assert(result[0].toDateString() === 'Sat Sep 22 2018') - }) - - it('the first Sunday returned is Sun Sep 23 2018', function () { - var result = getWeekendsBetween({ - start: new Date(2018, 8, 17), - end: new Date(2018, 8, 30) - }) - assert(result[1].toDateString() === 'Sun Sep 23 2018') - }) - - it('the second Saturday returned is Sat Sep 29 2018', function () { - var result = getWeekendsBetween({ - start: new Date(2018, 8 /* Sept */, 17), - end: new Date(2018, 8 /* Sept */, 30) - }) - assert(result[2].toDateString() === 'Sat Sep 29 2018') - }) - - it('the second Sunday returned is Sun Sep 30 2018', function () { - var result = getWeekendsBetween({ - start: new Date(2018, 8 /* Sept */, 17), - end: new Date(2018, 8 /* Sept */, 30) - }) - assert(result[3].toDateString() === 'Sun Sep 30 2018') - }) - - it('returns array length of 104', function () { - var result = getWeekendsBetween({ - start: new Date(2019, 0 /* Jan */, 1), - end: new Date(2019, 11 /* Dec */, 31) - }) - assert(result.length === 104) - }) - - it('returns Sun Mar 17 2019', function () { - var result = getWeekendsBetween({ - start: new Date(2019, 0 /* Jan */, 1), - end: new Date(2019, 11 /* Dec */, 31) - }) - assert(result[21].toDateString() === 'Sun Mar 17 2019') - }) - - it('returns Sat Oct 26 2019', function () { - var result = getWeekendsBetween({ - start: new Date(2019, 0 /* Jan */, 1), - end: new Date(2019, 11 /* Dec */, 31) - }) - assert(result[84].toDateString() === 'Sat Oct 26 2019') - }) - - it('throws `RangeError` invalid interval start date is used', function () { - // $ExpectedMistake - var block = getWeekendsBetween.bind(null, - { - start: new Date(NaN), - end: new Date(2019, 11 /* Dec */, 31) - }, - { weekStartsOn: 6 }) - assert.throws(block, RangeError) - }) - - it('throws `RangeError` invalid interval end date is used', function () { - // $ExpectedMistake - var block = getWeekendsBetween.bind(null, - { - start: new Date(2019, 0 /* Jan */, 1), - end: new Date(NaN) - }, - { weekStartsOn: 6 }) - assert.throws(block, RangeError) - }) - - it('throws TypeError exception if passed less than 1 argument', function () { - assert.throws(getWeekendsBetween.bind(), TypeError) - }) - - it('throws `RangeError` if `options.weekStartsOn` is not convertable to 0, 1, ..., 6 or undefined', function () { - // $ExpectedMistake - var block = getWeekendsBetween.bind(null, - { - start: new Date(2018, 8 /* Sept */, 17), - end: new Date(2018, 8 /* Sept */, 30) - }, - { weekStartsOn: 9 }) - assert.throws(block, RangeError) - }) - - it('throws `RangeError` if `options.weekStartsOn` when passing in invalid value', function () { - // $ExpectedMistake - var block = getWeekendsBetween.bind(null, - { - start: new Date(2018, 8 /* Sept */, 17), - end: new Date(2018, 8 /* Sept */, 30) - }, - { weekStartsOn: NaN }) - assert.throws(block, RangeError) - }) -}) diff --git a/src/index.js b/src/index.js index fc0ac58719..f8a2c7879e 100644 --- a/src/index.js +++ b/src/index.js @@ -35,6 +35,9 @@ module.exports = { differenceInYears: require('./differenceInYears/index.js'), eachDayOfInterval: require('./eachDayOfInterval/index.js'), eachWeekOfInterval: require('./eachWeekOfInterval/index.js'), + eachWeekendOfInterval: require('./eachWeekendOfInterval/index.js'), + eachWeekendOfMonth: require('./eachWeekendOfMonth/index.js'), + eachWeekendOfYear: require('./eachWeekendOfYear/index.js'), endOfDay: require('./endOfDay/index.js'), endOfDecade: require('./endOfDecade/index.js'), endOfHour: require('./endOfHour/index.js'), diff --git a/src/index.js.flow b/src/index.js.flow index 534598ed94..043c89c6a9 100644 --- a/src/index.js.flow +++ b/src/index.js.flow @@ -242,6 +242,18 @@ declare module.exports: { eachDayOfInterval: (interval: Interval, options?: Options) => Date[], + eachWeekendOfInterval: (interval: Interval, options?: Options) => Date[], + + eachWeekendOfMonth: ( + date: Date | string | number, + options?: Options + ) => Date[], + + eachWeekendOfYear: ( + date: Date | string | number, + options?: Options + ) => Date[], + eachWeekOfInterval: (interval: Interval, options?: Options) => Date[], endOfDay: (date: Date | string | number, options?: Options) => Date, diff --git a/typings.d.ts b/typings.d.ts index 69a199a5b3..21488c36db 100644 --- a/typings.d.ts +++ b/typings.d.ts @@ -381,6 +381,27 @@ declare module 'date-fns' { } + function eachWeekendOfInterval(interval: Interval, options?: Options): Date[] + namespace eachWeekendOfInterval { + + } + + function eachWeekendOfMonth( + date: Date | string | number, + options?: Options + ): Date[] + namespace eachWeekendOfMonth { + + } + + function eachWeekendOfYear( + date: Date | string | number, + options?: Options + ): Date[] + namespace eachWeekendOfYear { + + } + function eachWeekOfInterval(interval: Interval, options?: Options): Date[] namespace eachWeekOfInterval { @@ -1365,6 +1386,21 @@ declare module 'date-fns/eachDayOfInterval' { export = eachDayOfInterval } +declare module 'date-fns/eachWeekendOfInterval' { + import { eachWeekendOfInterval } from 'date-fns' + export = eachWeekendOfInterval +} + +declare module 'date-fns/eachWeekendOfMonth' { + import { eachWeekendOfMonth } from 'date-fns' + export = eachWeekendOfMonth +} + +declare module 'date-fns/eachWeekendOfYear' { + import { eachWeekendOfYear } from 'date-fns' + export = eachWeekendOfYear +} + declare module 'date-fns/eachWeekOfInterval' { import { eachWeekOfInterval } from 'date-fns' export = eachWeekOfInterval @@ -2115,6 +2151,21 @@ declare module 'date-fns/eachDayOfInterval/index' { export = eachDayOfInterval } +declare module 'date-fns/eachWeekendOfInterval/index' { + import { eachWeekendOfInterval } from 'date-fns' + export = eachWeekendOfInterval +} + +declare module 'date-fns/eachWeekendOfMonth/index' { + import { eachWeekendOfMonth } from 'date-fns' + export = eachWeekendOfMonth +} + +declare module 'date-fns/eachWeekendOfYear/index' { + import { eachWeekendOfYear } from 'date-fns' + export = eachWeekendOfYear +} + declare module 'date-fns/eachWeekOfInterval/index' { import { eachWeekOfInterval } from 'date-fns' export = eachWeekOfInterval @@ -2865,6 +2916,21 @@ declare module 'date-fns/eachDayOfInterval/index.js' { export = eachDayOfInterval } +declare module 'date-fns/eachWeekendOfInterval/index.js' { + import { eachWeekendOfInterval } from 'date-fns' + export = eachWeekendOfInterval +} + +declare module 'date-fns/eachWeekendOfMonth/index.js' { + import { eachWeekendOfMonth } from 'date-fns' + export = eachWeekendOfMonth +} + +declare module 'date-fns/eachWeekendOfYear/index.js' { + import { eachWeekendOfYear } from 'date-fns' + export = eachWeekendOfYear +} + declare module 'date-fns/eachWeekOfInterval/index.js' { import { eachWeekOfInterval } from 'date-fns' export = eachWeekOfInterval @@ -4027,6 +4093,44 @@ declare module 'date-fns/fp' { } + const eachWeekendOfInterval: CurriedFn1 + namespace eachWeekendOfInterval { + + } + + const eachWeekendOfIntervalWithOptions: CurriedFn2 + namespace eachWeekendOfIntervalWithOptions { + + } + + const eachWeekendOfMonth: CurriedFn1 + namespace eachWeekendOfMonth { + + } + + const eachWeekendOfMonthWithOptions: CurriedFn2< + Options, + Date | string | number, + Date[] + > + namespace eachWeekendOfMonthWithOptions { + + } + + const eachWeekendOfYear: CurriedFn1 + namespace eachWeekendOfYear { + + } + + const eachWeekendOfYearWithOptions: CurriedFn2< + Options, + Date | string | number, + Date[] + > + namespace eachWeekendOfYearWithOptions { + + } + const eachWeekOfInterval: CurriedFn1 namespace eachWeekOfInterval { @@ -6027,6 +6131,36 @@ declare module 'date-fns/fp/eachDayOfIntervalWithOptions' { export = eachDayOfIntervalWithOptions } +declare module 'date-fns/fp/eachWeekendOfInterval' { + import { eachWeekendOfInterval } from 'date-fns/fp' + export = eachWeekendOfInterval +} + +declare module 'date-fns/fp/eachWeekendOfIntervalWithOptions' { + import { eachWeekendOfIntervalWithOptions } from 'date-fns/fp' + export = eachWeekendOfIntervalWithOptions +} + +declare module 'date-fns/fp/eachWeekendOfMonth' { + import { eachWeekendOfMonth } from 'date-fns/fp' + export = eachWeekendOfMonth +} + +declare module 'date-fns/fp/eachWeekendOfMonthWithOptions' { + import { eachWeekendOfMonthWithOptions } from 'date-fns/fp' + export = eachWeekendOfMonthWithOptions +} + +declare module 'date-fns/fp/eachWeekendOfYear' { + import { eachWeekendOfYear } from 'date-fns/fp' + export = eachWeekendOfYear +} + +declare module 'date-fns/fp/eachWeekendOfYearWithOptions' { + import { eachWeekendOfYearWithOptions } from 'date-fns/fp' + export = eachWeekendOfYearWithOptions +} + declare module 'date-fns/fp/eachWeekOfInterval' { import { eachWeekOfInterval } from 'date-fns/fp' export = eachWeekOfInterval @@ -7527,6 +7661,36 @@ declare module 'date-fns/fp/eachDayOfIntervalWithOptions/index' { export = eachDayOfIntervalWithOptions } +declare module 'date-fns/fp/eachWeekendOfInterval/index' { + import { eachWeekendOfInterval } from 'date-fns/fp' + export = eachWeekendOfInterval +} + +declare module 'date-fns/fp/eachWeekendOfIntervalWithOptions/index' { + import { eachWeekendOfIntervalWithOptions } from 'date-fns/fp' + export = eachWeekendOfIntervalWithOptions +} + +declare module 'date-fns/fp/eachWeekendOfMonth/index' { + import { eachWeekendOfMonth } from 'date-fns/fp' + export = eachWeekendOfMonth +} + +declare module 'date-fns/fp/eachWeekendOfMonthWithOptions/index' { + import { eachWeekendOfMonthWithOptions } from 'date-fns/fp' + export = eachWeekendOfMonthWithOptions +} + +declare module 'date-fns/fp/eachWeekendOfYear/index' { + import { eachWeekendOfYear } from 'date-fns/fp' + export = eachWeekendOfYear +} + +declare module 'date-fns/fp/eachWeekendOfYearWithOptions/index' { + import { eachWeekendOfYearWithOptions } from 'date-fns/fp' + export = eachWeekendOfYearWithOptions +} + declare module 'date-fns/fp/eachWeekOfInterval/index' { import { eachWeekOfInterval } from 'date-fns/fp' export = eachWeekOfInterval @@ -9027,6 +9191,36 @@ declare module 'date-fns/fp/eachDayOfIntervalWithOptions/index.js' { export = eachDayOfIntervalWithOptions } +declare module 'date-fns/fp/eachWeekendOfInterval/index.js' { + import { eachWeekendOfInterval } from 'date-fns/fp' + export = eachWeekendOfInterval +} + +declare module 'date-fns/fp/eachWeekendOfIntervalWithOptions/index.js' { + import { eachWeekendOfIntervalWithOptions } from 'date-fns/fp' + export = eachWeekendOfIntervalWithOptions +} + +declare module 'date-fns/fp/eachWeekendOfMonth/index.js' { + import { eachWeekendOfMonth } from 'date-fns/fp' + export = eachWeekendOfMonth +} + +declare module 'date-fns/fp/eachWeekendOfMonthWithOptions/index.js' { + import { eachWeekendOfMonthWithOptions } from 'date-fns/fp' + export = eachWeekendOfMonthWithOptions +} + +declare module 'date-fns/fp/eachWeekendOfYear/index.js' { + import { eachWeekendOfYear } from 'date-fns/fp' + export = eachWeekendOfYear +} + +declare module 'date-fns/fp/eachWeekendOfYearWithOptions/index.js' { + import { eachWeekendOfYearWithOptions } from 'date-fns/fp' + export = eachWeekendOfYearWithOptions +} + declare module 'date-fns/fp/eachWeekOfInterval/index.js' { import { eachWeekOfInterval } from 'date-fns/fp' export = eachWeekOfInterval @@ -10493,6 +10687,27 @@ declare module 'date-fns/esm' { } + function eachWeekendOfInterval(interval: Interval, options?: Options): Date[] + namespace eachWeekendOfInterval { + + } + + function eachWeekendOfMonth( + date: Date | string | number, + options?: Options + ): Date[] + namespace eachWeekendOfMonth { + + } + + function eachWeekendOfYear( + date: Date | string | number, + options?: Options + ): Date[] + namespace eachWeekendOfYear { + + } + function eachWeekOfInterval(interval: Interval, options?: Options): Date[] namespace eachWeekOfInterval { @@ -11477,6 +11692,21 @@ declare module 'date-fns/esm/eachDayOfInterval' { export default eachDayOfInterval } +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 @@ -12227,6 +12457,21 @@ declare module 'date-fns/esm/eachDayOfInterval/index' { export default eachDayOfInterval } +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 @@ -12977,6 +13222,21 @@ declare module 'date-fns/esm/eachDayOfInterval/index.js' { export default eachDayOfInterval } +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 @@ -14139,6 +14399,44 @@ declare module 'date-fns/esm/fp' { } + const eachWeekendOfInterval: CurriedFn1 + namespace eachWeekendOfInterval { + + } + + const eachWeekendOfIntervalWithOptions: CurriedFn2 + namespace eachWeekendOfIntervalWithOptions { + + } + + const eachWeekendOfMonth: CurriedFn1 + namespace eachWeekendOfMonth { + + } + + const eachWeekendOfMonthWithOptions: CurriedFn2< + Options, + Date | string | number, + Date[] + > + namespace eachWeekendOfMonthWithOptions { + + } + + const eachWeekendOfYear: CurriedFn1 + namespace eachWeekendOfYear { + + } + + const eachWeekendOfYearWithOptions: CurriedFn2< + Options, + Date | string | number, + Date[] + > + namespace eachWeekendOfYearWithOptions { + + } + const eachWeekOfInterval: CurriedFn1 namespace eachWeekOfInterval { @@ -16139,6 +16437,36 @@ declare module 'date-fns/esm/fp/eachDayOfIntervalWithOptions' { export default eachDayOfIntervalWithOptions } +declare module 'date-fns/esm/fp/eachWeekendOfInterval' { + import { eachWeekendOfInterval } from 'date-fns/esm/fp' + export default eachWeekendOfInterval +} + +declare module 'date-fns/esm/fp/eachWeekendOfIntervalWithOptions' { + import { eachWeekendOfIntervalWithOptions } from 'date-fns/esm/fp' + export default eachWeekendOfIntervalWithOptions +} + +declare module 'date-fns/esm/fp/eachWeekendOfMonth' { + import { eachWeekendOfMonth } from 'date-fns/esm/fp' + export default eachWeekendOfMonth +} + +declare module 'date-fns/esm/fp/eachWeekendOfMonthWithOptions' { + import { eachWeekendOfMonthWithOptions } from 'date-fns/esm/fp' + export default eachWeekendOfMonthWithOptions +} + +declare module 'date-fns/esm/fp/eachWeekendOfYear' { + import { eachWeekendOfYear } from 'date-fns/esm/fp' + export default eachWeekendOfYear +} + +declare module 'date-fns/esm/fp/eachWeekendOfYearWithOptions' { + import { eachWeekendOfYearWithOptions } from 'date-fns/esm/fp' + export default eachWeekendOfYearWithOptions +} + declare module 'date-fns/esm/fp/eachWeekOfInterval' { import { eachWeekOfInterval } from 'date-fns/esm/fp' export default eachWeekOfInterval @@ -17639,6 +17967,36 @@ declare module 'date-fns/esm/fp/eachDayOfIntervalWithOptions/index' { export default eachDayOfIntervalWithOptions } +declare module 'date-fns/esm/fp/eachWeekendOfInterval/index' { + import { eachWeekendOfInterval } from 'date-fns/esm/fp' + export default eachWeekendOfInterval +} + +declare module 'date-fns/esm/fp/eachWeekendOfIntervalWithOptions/index' { + import { eachWeekendOfIntervalWithOptions } from 'date-fns/esm/fp' + export default eachWeekendOfIntervalWithOptions +} + +declare module 'date-fns/esm/fp/eachWeekendOfMonth/index' { + import { eachWeekendOfMonth } from 'date-fns/esm/fp' + export default eachWeekendOfMonth +} + +declare module 'date-fns/esm/fp/eachWeekendOfMonthWithOptions/index' { + import { eachWeekendOfMonthWithOptions } from 'date-fns/esm/fp' + export default eachWeekendOfMonthWithOptions +} + +declare module 'date-fns/esm/fp/eachWeekendOfYear/index' { + import { eachWeekendOfYear } from 'date-fns/esm/fp' + export default eachWeekendOfYear +} + +declare module 'date-fns/esm/fp/eachWeekendOfYearWithOptions/index' { + import { eachWeekendOfYearWithOptions } from 'date-fns/esm/fp' + export default eachWeekendOfYearWithOptions +} + declare module 'date-fns/esm/fp/eachWeekOfInterval/index' { import { eachWeekOfInterval } from 'date-fns/esm/fp' export default eachWeekOfInterval @@ -19139,6 +19497,36 @@ declare module 'date-fns/esm/fp/eachDayOfIntervalWithOptions/index.js' { export default eachDayOfIntervalWithOptions } +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/eachWeekendOfIntervalWithOptions/index.js' { + import { eachWeekendOfIntervalWithOptions } from 'date-fns/esm/fp' + export default eachWeekendOfIntervalWithOptions +} + +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/eachWeekendOfMonthWithOptions/index.js' { + import { eachWeekendOfMonthWithOptions } from 'date-fns/esm/fp' + export default eachWeekendOfMonthWithOptions +} + +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/eachWeekendOfYearWithOptions/index.js' { + import { eachWeekendOfYearWithOptions } from 'date-fns/esm/fp' + export default eachWeekendOfYearWithOptions +} + declare module 'date-fns/esm/fp/eachWeekOfInterval/index.js' { import { eachWeekOfInterval } from 'date-fns/esm/fp' export default eachWeekOfInterval @@ -22550,6 +22938,12 @@ interface dateFns { eachDayOfInterval(interval: Interval, options?: Options): Date[] + eachWeekendOfInterval(interval: Interval, options?: Options): Date[] + + eachWeekendOfMonth(date: Date | string | number, options?: Options): Date[] + + eachWeekendOfYear(date: Date | string | number, options?: Options): Date[] + eachWeekOfInterval(interval: Interval, options?: Options): Date[] endOfDay(date: Date | string | number, options?: Options): Date diff --git a/yarn.lock b/yarn.lock index 315c4b9f0f..755b08bbc1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2624,10 +2624,10 @@ firebase@^3.7.1: rsvp "3.2.1" xmlhttprequest "1.8.0" -flow-bin@0.72: - version "0.72.0" - resolved "https://registry.yarnpkg.com/flow-bin/-/flow-bin-0.72.0.tgz#12051180fb2db7ccb728fefe67c77e955e92a44d" - integrity sha1-EgURgPstt8y3KP7+Z8d+lV6SpE0= +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== for-in@^0.1.5: version "0.1.6"