Skip to content

Commit d040c84

Browse files
Merge pull request #5332 from paolostyle/date-fns-v4
chore(deps): upgrade date-fns to v4.1.0 (attempt no. 2)
2 parents 94e2931 + d707d7d commit d040c84

File tree

7 files changed

+116
-110
lines changed

7 files changed

+116
-110
lines changed

package.json

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,22 @@
77
"homepage": "https://github.com/Hacker0x01/react-datepicker",
88
"main": "dist/index.js",
99
"types": "dist/index.d.ts",
10-
"browser": "dist/react-datepicker.min.js",
1110
"module": "dist/es/index.js",
1211
"unpkg": "dist/react-datepicker.min.js",
1312
"style": "dist/react-datepicker.min.css",
13+
"exports": {
14+
".": {
15+
"import": {
16+
"types": "./dist/index.d.ts",
17+
"default": "./dist/es/index.js"
18+
},
19+
"require": {
20+
"types": "./dist/index.d.ts",
21+
"default": "./dist/index.js"
22+
}
23+
},
24+
"./dist/*.css": "./dist/*.css"
25+
},
1426
"files": ["*.md", "dist", "lib", "es", "src/stylesheets"],
1527
"sideEffects": ["**/*.css"],
1628
"keywords": ["react", "datepicker", "calendar", "date", "react-component"],
@@ -85,7 +97,7 @@
8597
"dependencies": {
8698
"@floating-ui/react": "^0.27.0",
8799
"clsx": "^2.1.1",
88-
"date-fns": "^3.6.0"
100+
"date-fns": "^4.1.0"
89101
},
90102
"scripts": {
91103
"eslint": "eslint --ext .js,.jsx,.ts,.tsx ./src",

rollup.config.mjs

Lines changed: 6 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -24,28 +24,12 @@ const banner = `/*!
2424
Released under the ${pkg.license} License.
2525
*/`;
2626

27-
// it's important to mark all subpackages of data-fns as externals
28-
// see https://github.com/Hacker0x01/react-datepicker/issues/1606
29-
// We're relying on date-fn's package.json `exports` field to
30-
// determine the list of directories to include.
31-
const dateFnsPackageJson = JSON.parse(
32-
fs
33-
.readFileSync(
34-
path.join(
35-
path.dirname(fileURLToPath(import.meta.url)),
36-
"node_modules/date-fns/package.json",
37-
),
38-
)
39-
.toString(),
40-
);
41-
const dateFnsSubpackages = Object.keys(dateFnsPackageJson.exports)
42-
.map((key) => key.replace("./", ""))
43-
.filter((key) => key !== "." && key !== "package.json")
44-
.map((key) => `date-fns/${key}`);
45-
4627
const globals = {
4728
react: "React",
48-
"prop-types": "PropTypes",
29+
"react-dom": "ReactDOM",
30+
clsx: "clsx",
31+
"date-fns": "dateFns",
32+
"@floating-ui/react": "FloatingUIReact",
4933
};
5034

5135
// NOTE:https://rollupjs.org/migration/#changed-defaults
@@ -59,7 +43,7 @@ const config = {
5943
input: "src/index.tsx",
6044
output: [
6145
{
62-
file: pkg.browser,
46+
file: pkg.unpkg,
6347
format: "umd",
6448
name: "DatePicker",
6549
globals,
@@ -68,7 +52,7 @@ const config = {
6852
plugins: [terser()],
6953
},
7054
{
71-
file: pkg.browser.replace(".min.js", ".js"),
55+
file: pkg.unpkg.replace(".min.js", ".js"),
7256
format: "umd",
7357
sourcemap: "inline",
7458
name: "DatePicker",
@@ -109,7 +93,6 @@ const config = {
10993
external: [
11094
...Object.keys(pkg.dependencies || {}),
11195
...Object.keys(pkg.peerDependencies || {}),
112-
...dateFnsSubpackages,
11396
],
11497
};
11598

src/date_utils.ts

Lines changed: 75 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -1,64 +1,67 @@
1-
import { addDays } from "date-fns/addDays";
2-
import { addHours } from "date-fns/addHours";
3-
import { addMinutes } from "date-fns/addMinutes";
4-
import { addMonths } from "date-fns/addMonths";
5-
import { addQuarters } from "date-fns/addQuarters";
6-
import { addSeconds } from "date-fns/addSeconds";
7-
import { addWeeks } from "date-fns/addWeeks";
8-
import { addYears } from "date-fns/addYears";
9-
import { differenceInCalendarDays } from "date-fns/differenceInCalendarDays";
10-
import { differenceInCalendarMonths } from "date-fns/differenceInCalendarMonths";
11-
import { differenceInCalendarQuarters } from "date-fns/differenceInCalendarQuarters";
12-
import { differenceInCalendarYears } from "date-fns/differenceInCalendarYears";
13-
import { endOfDay } from "date-fns/endOfDay";
14-
import { endOfMonth } from "date-fns/endOfMonth";
15-
import { endOfWeek } from "date-fns/endOfWeek";
16-
import { endOfYear } from "date-fns/endOfYear";
17-
import { format, longFormatters } from "date-fns/format";
18-
import { getDate } from "date-fns/getDate";
19-
import { getDay } from "date-fns/getDay";
20-
import { getHours } from "date-fns/getHours";
21-
import { getISOWeek } from "date-fns/getISOWeek";
22-
import { getMinutes } from "date-fns/getMinutes";
23-
import { getMonth } from "date-fns/getMonth";
24-
import { getQuarter } from "date-fns/getQuarter";
25-
import { getSeconds } from "date-fns/getSeconds";
26-
import { getTime } from "date-fns/getTime";
27-
import { getYear } from "date-fns/getYear";
28-
import { isAfter } from "date-fns/isAfter";
29-
import { isBefore } from "date-fns/isBefore";
30-
import { isDate } from "date-fns/isDate";
31-
import { isEqual as dfIsEqual } from "date-fns/isEqual";
32-
import { isSameDay as dfIsSameDay } from "date-fns/isSameDay";
33-
import { isSameMonth as dfIsSameMonth } from "date-fns/isSameMonth";
34-
import { isSameQuarter as dfIsSameQuarter } from "date-fns/isSameQuarter";
35-
import { isSameYear as dfIsSameYear } from "date-fns/isSameYear";
36-
import { isValid as isValidDate } from "date-fns/isValid";
37-
import { isWithinInterval } from "date-fns/isWithinInterval";
38-
import { max } from "date-fns/max";
39-
import { min } from "date-fns/min";
40-
import { parse } from "date-fns/parse";
41-
import { parseISO } from "date-fns/parseISO";
42-
import { set } from "date-fns/set";
43-
import { setHours } from "date-fns/setHours";
44-
import { setMinutes } from "date-fns/setMinutes";
45-
import { setMonth } from "date-fns/setMonth";
46-
import { setQuarter } from "date-fns/setQuarter";
47-
import { setSeconds } from "date-fns/setSeconds";
48-
import { setYear } from "date-fns/setYear";
49-
import { startOfDay } from "date-fns/startOfDay";
50-
import { startOfMonth } from "date-fns/startOfMonth";
51-
import { startOfQuarter } from "date-fns/startOfQuarter";
52-
import { startOfWeek } from "date-fns/startOfWeek";
53-
import { startOfYear } from "date-fns/startOfYear";
54-
import { subDays } from "date-fns/subDays";
55-
import { subMonths } from "date-fns/subMonths";
56-
import { subQuarters } from "date-fns/subQuarters";
57-
import { subWeeks } from "date-fns/subWeeks";
58-
import { subYears } from "date-fns/subYears";
59-
import { toDate } from "date-fns/toDate";
60-
61-
import type { Day, Locale as DateFnsLocale } from "date-fns";
1+
import {
2+
addDays,
3+
addHours,
4+
addMinutes,
5+
addMonths,
6+
addQuarters,
7+
addSeconds,
8+
addWeeks,
9+
addYears,
10+
isEqual as dfIsEqual,
11+
isSameDay as dfIsSameDay,
12+
isSameMonth as dfIsSameMonth,
13+
isSameQuarter as dfIsSameQuarter,
14+
isSameYear as dfIsSameYear,
15+
differenceInCalendarDays,
16+
differenceInCalendarMonths,
17+
differenceInCalendarQuarters,
18+
differenceInCalendarYears,
19+
endOfDay,
20+
endOfMonth,
21+
endOfWeek,
22+
endOfYear,
23+
format,
24+
getDate,
25+
getDay,
26+
getHours,
27+
getISOWeek,
28+
getMinutes,
29+
getMonth,
30+
getQuarter,
31+
getSeconds,
32+
getTime,
33+
getYear,
34+
isAfter,
35+
isBefore,
36+
isDate,
37+
isValid as isValidDate,
38+
isWithinInterval,
39+
longFormatters,
40+
max,
41+
min,
42+
parse,
43+
parseISO,
44+
set,
45+
setHours,
46+
setMinutes,
47+
setMonth,
48+
setQuarter,
49+
setSeconds,
50+
setYear,
51+
startOfDay,
52+
startOfMonth,
53+
startOfQuarter,
54+
startOfWeek,
55+
startOfYear,
56+
subDays,
57+
subMonths,
58+
subQuarters,
59+
subWeeks,
60+
subYears,
61+
toDate,
62+
} from "date-fns";
63+
64+
import type { Locale as DateFnsLocale, Day } from "date-fns";
6265

6366
export type DateNumberType = Day;
6467
interface LocaleObj
@@ -340,21 +343,21 @@ export function setTime(
340343
return setHours(setMinutes(setSeconds(date, second), minute), hour);
341344
}
342345

343-
export { setMinutes, setHours, setMonth, setQuarter, setYear };
346+
export { setHours, setMinutes, setMonth, setQuarter, setYear };
344347

345348
// ** Date Getters **
346349

347350
// getDay Returns day of week, getDate returns day of month
348351
export {
349-
getSeconds,
350-
getMinutes,
352+
getDate,
353+
getDay,
351354
getHours,
355+
getMinutes,
352356
getMonth,
353357
getQuarter,
354-
getYear,
355-
getDay,
356-
getDate,
358+
getSeconds,
357359
getTime,
360+
getYear,
358361
};
359362

360363
/**
@@ -487,22 +490,22 @@ export function getEndOfMonth(date: Date): Date {
487490
// *** Addition ***
488491

489492
export {
490-
addSeconds,
491-
addMinutes,
492493
addDays,
493-
addWeeks,
494+
addMinutes,
494495
addMonths,
495496
addQuarters,
497+
addSeconds,
498+
addWeeks,
496499
addYears,
497500
};
498501

499502
// *** Subtraction ***
500503

501-
export { addHours, subDays, subWeeks, subMonths, subQuarters, subYears };
504+
export { addHours, subDays, subMonths, subQuarters, subWeeks, subYears };
502505

503506
// ** Date Comparison **
504507

505-
export { isBefore, isAfter };
508+
export { isAfter, isBefore };
506509

507510
/**
508511
* Checks if two dates are in the same year.

src/test/calendar_test.test.tsx

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,14 @@
33
*/
44

55
import { render, fireEvent, act, waitFor } from "@testing-library/react";
6-
import { setDate, startOfMonth, eachDayOfInterval, endOfMonth } from "date-fns";
7-
import { endOfYear } from "date-fns/endOfYear";
8-
import { isSunday } from "date-fns/isSunday";
6+
import {
7+
setDate,
8+
startOfMonth,
9+
eachDayOfInterval,
10+
endOfMonth,
11+
endOfYear,
12+
isSunday,
13+
} from "date-fns";
914
import { eo } from "date-fns/locale/eo";
1015
import { fi } from "date-fns/locale/fi";
1116
import React from "react";

src/test/date_utils_test.test.ts

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
1-
import { addYears, setSeconds } from "date-fns";
2-
import { addQuarters } from "date-fns/addQuarters";
1+
import {
2+
addYears,
3+
setSeconds,
4+
addQuarters,
5+
setHours,
6+
setMinutes,
7+
} from "date-fns";
38
import { ptBR } from "date-fns/locale/pt-BR";
4-
import { setHours } from "date-fns/setHours";
5-
import { setMinutes } from "date-fns/setMinutes";
69

710
import {
811
newDate,

src/test/month_test.test.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/* eslint jest/expect-expect: ["error", { "assertFunctionNames": ["expect", "assertDateRangeInclusive", "runAxe"] }] */
22
import { render, fireEvent } from "@testing-library/react";
3-
import { es } from "date-fns/locale";
3+
import { es } from "date-fns/locale/es";
44
import React from "react";
55

66
import DatePicker from "../";

yarn.lock

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4178,10 +4178,10 @@ __metadata:
41784178
languageName: node
41794179
linkType: hard
41804180

4181-
"date-fns@npm:^3.6.0":
4182-
version: 3.6.0
4183-
resolution: "date-fns@npm:3.6.0"
4184-
checksum: 10c0/0b5fb981590ef2f8e5a3ba6cd6d77faece0ea7f7158948f2eaae7bbb7c80a8f63ae30b01236c2923cf89bb3719c33aeb150c715ea4fe4e86e37dcf06bed42fb6
4181+
"date-fns@npm:^4.1.0":
4182+
version: 4.1.0
4183+
resolution: "date-fns@npm:4.1.0"
4184+
checksum: 10c0/b79ff32830e6b7faa009590af6ae0fb8c3fd9ffad46d930548fbb5acf473773b4712ae887e156ba91a7b3dc30591ce0f517d69fd83bd9c38650fdc03b4e0bac8
41854185
languageName: node
41864186
linkType: hard
41874187

@@ -8413,7 +8413,7 @@ __metadata:
84138413
babel-plugin-transform-react-remove-prop-types: "npm:^0.4.24"
84148414
clsx: "npm:^2.1.1"
84158415
core-js: "npm:^3.38.1"
8416-
date-fns: "npm:^3.6.0"
8416+
date-fns: "npm:^4.1.0"
84178417
eslint: "npm:^8.57.0"
84188418
eslint-config-prettier: "npm:^9.1.0"
84198419
eslint-plugin-import: "npm:^2.29.1"

0 commit comments

Comments
 (0)