aboutsummaryrefslogtreecommitdiffstats
path: root/node_modules/date-fns/esm/addMonths
diff options
context:
space:
mode:
authorPinapelz <yukais@pinapelz.com>2025-06-28 17:26:46 -0700
committerPinapelz <yukais@pinapelz.com>2025-06-28 17:43:56 -0700
commite4fa1e69e7ebfb627c7198fd1a9881e9327ec4d4 (patch)
tree06284a538a6008eca75051399e47db4e5d50301c /node_modules/date-fns/esm/addMonths
initial commit: scaffolding
Diffstat (limited to 'node_modules/date-fns/esm/addMonths')
-rw-r--r--node_modules/date-fns/esm/addMonths/index.d.ts4
-rw-r--r--node_modules/date-fns/esm/addMonths/index.js61
-rw-r--r--node_modules/date-fns/esm/addMonths/index.js.flow52
-rw-r--r--node_modules/date-fns/esm/addMonths/package.json4
4 files changed, 121 insertions, 0 deletions
diff --git a/node_modules/date-fns/esm/addMonths/index.d.ts b/node_modules/date-fns/esm/addMonths/index.d.ts
new file mode 100644
index 0000000..1308e13
--- /dev/null
+++ b/node_modules/date-fns/esm/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/node_modules/date-fns/esm/addMonths/index.js b/node_modules/date-fns/esm/addMonths/index.js
new file mode 100644
index 0000000..f5c0eb1
--- /dev/null
+++ b/node_modules/date-fns/esm/addMonths/index.js
@@ -0,0 +1,61 @@
+import toInteger from "../_lib/toInteger/index.js";
+import toDate from "../toDate/index.js";
+import requiredArgs from "../_lib/requiredArgs/index.js";
+/**
+ * @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.
+ *
+ * @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, dirtyAmount) {
+ requiredArgs(2, arguments);
+ var date = toDate(dirtyDate);
+ var 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;
+ }
+ var 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.
+ var endOfDesiredMonth = new Date(date.getTime());
+ endOfDesiredMonth.setMonth(date.getMonth() + amount + 1, 0);
+ var 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;
+ }
+} \ No newline at end of file
diff --git a/node_modules/date-fns/esm/addMonths/index.js.flow b/node_modules/date-fns/esm/addMonths/index.js.flow
new file mode 100644
index 0000000..f568f0d
--- /dev/null
+++ b/node_modules/date-fns/esm/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/node_modules/date-fns/esm/addMonths/package.json b/node_modules/date-fns/esm/addMonths/package.json
new file mode 100644
index 0000000..b109f05
--- /dev/null
+++ b/node_modules/date-fns/esm/addMonths/package.json
@@ -0,0 +1,4 @@
+{
+ "sideEffects": false,
+ "typings": "../../typings.d.ts"
+} \ No newline at end of file
send patches to the email below
yukais@pinapelz.com
include the subject [PATCH repo_name]
pinapelz.com
homepage