diff --git a/package-lock.json b/package-lock.json index 96e2f190..324d5d8a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -71,29 +71,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@asamuzakjp/css-color": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@asamuzakjp/css-color/-/css-color-3.2.0.tgz", - "integrity": "sha512-K1A6z8tS3XsmCMM86xoWdn7Fkdn9m6RSVtocUrJYIwZnFVkng/PvkEoWtOWmP+Scc6saYWHWZYbndEEXxl24jw==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@csstools/css-calc": "^2.1.3", - "@csstools/css-color-parser": "^3.0.9", - "@csstools/css-parser-algorithms": "^3.0.4", - "@csstools/css-tokenizer": "^3.0.3", - "lru-cache": "^10.4.3" - } - }, - "node_modules/@asamuzakjp/css-color/node_modules/lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "dev": true, - "license": "ISC", - "optional": true - }, "node_modules/@babel/code-frame": { "version": "7.29.7", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.7.tgz", @@ -650,6 +627,7 @@ "dev": true, "license": "MIT" }, +<<<<<<< HEAD "node_modules/@csstools/color-helpers": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-5.1.0.tgz", @@ -725,6 +703,8 @@ "@csstools/css-tokenizer": "^3.0.4" } }, +======= +>>>>>>> 498ad39 (test: add edge case coverage for dateDiffDays) "node_modules/@emnapi/core": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.10.0.tgz", @@ -4124,6 +4104,7 @@ "node": ">=0.4.0" } }, +<<<<<<< HEAD "node_modules/agent-base": { "version": "7.1.4", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", @@ -4135,6 +4116,8 @@ "node": ">= 14" } }, +======= +>>>>>>> 498ad39 (test: add edge case coverage for dateDiffDays) "node_modules/ajv": { "version": "6.15.0", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.15.0.tgz", @@ -5213,6 +5196,7 @@ "node": ">=4" } }, +<<<<<<< HEAD "node_modules/cssstyle": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-4.6.0.tgz", @@ -5228,6 +5212,8 @@ "node": ">=18" } }, +======= +>>>>>>> 498ad39 (test: add edge case coverage for dateDiffDays) "node_modules/csstype": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", @@ -5362,6 +5348,7 @@ "dev": true, "license": "BSD-2-Clause" }, +<<<<<<< HEAD "node_modules/data-urls": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-5.0.0.tgz", @@ -5377,6 +5364,8 @@ "node": ">=18" } }, +======= +>>>>>>> 498ad39 (test: add edge case coverage for dateDiffDays) "node_modules/data-view-buffer": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", @@ -5459,6 +5448,7 @@ } } }, +<<<<<<< HEAD "node_modules/decimal.js": { "version": "10.6.0", "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.6.0.tgz", @@ -5467,6 +5457,8 @@ "license": "MIT", "optional": true }, +======= +>>>>>>> 498ad39 (test: add edge case coverage for dateDiffDays) "node_modules/decimal.js-light": { "version": "2.5.1", "resolved": "https://registry.npmjs.org/decimal.js-light/-/decimal.js-light-2.5.1.tgz", @@ -5686,6 +5678,7 @@ "dev": true, "license": "MIT" }, +<<<<<<< HEAD "node_modules/entities": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", @@ -5700,6 +5693,8 @@ "url": "https://github.com/fb55/entities?sponsor=1" } }, +======= +>>>>>>> 498ad39 (test: add edge case coverage for dateDiffDays) "node_modules/error-ex": { "version": "1.3.4", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz", @@ -7105,6 +7100,7 @@ "node": ">= 0.4" } }, +<<<<<<< HEAD "node_modules/html-encoding-sniffer": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-4.0.0.tgz", @@ -7119,6 +7115,8 @@ "node": ">=18" } }, +======= +>>>>>>> 498ad39 (test: add edge case coverage for dateDiffDays) "node_modules/html-escaper": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", @@ -7146,6 +7144,7 @@ "node": ">=8.0.0" } }, +<<<<<<< HEAD "node_modules/http-proxy-agent": { "version": "7.0.2", "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", @@ -7176,6 +7175,8 @@ "node": ">= 14" } }, +======= +>>>>>>> 498ad39 (test: add edge case coverage for dateDiffDays) "node_modules/human-signals": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", @@ -7195,6 +7196,7 @@ "node": ">=20.0.0" } }, +<<<<<<< HEAD "node_modules/iconv-lite": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", @@ -7209,6 +7211,8 @@ "node": ">=0.10.0" } }, +======= +>>>>>>> 498ad39 (test: add edge case coverage for dateDiffDays) "node_modules/ignore": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", @@ -7632,6 +7636,7 @@ "node": ">=8" } }, +<<<<<<< HEAD "node_modules/is-potential-custom-element-name": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", @@ -7640,6 +7645,8 @@ "license": "MIT", "optional": true }, +======= +>>>>>>> 498ad39 (test: add edge case coverage for dateDiffDays) "node_modules/is-regex": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", @@ -9998,6 +10005,7 @@ "url": "https://github.com/sponsors/sindresorhus" } }, +<<<<<<< HEAD "node_modules/nwsapi": { "version": "2.2.23", "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.23.tgz", @@ -10006,6 +10014,8 @@ "license": "MIT", "optional": true }, +======= +>>>>>>> 498ad39 (test: add edge case coverage for dateDiffDays) "node_modules/oauth": { "version": "0.9.15", "resolved": "https://registry.npmjs.org/oauth/-/oauth-0.9.15.tgz", @@ -10316,6 +10326,7 @@ "url": "https://github.com/sponsors/sindresorhus" } }, +<<<<<<< HEAD "node_modules/parse5": { "version": "7.3.0", "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz", @@ -10330,6 +10341,8 @@ "url": "https://github.com/inikulin/parse5?sponsor=1" } }, +======= +>>>>>>> 498ad39 (test: add edge case coverage for dateDiffDays) "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -10579,7 +10592,6 @@ "version": "2.3.2", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, "hasInstallScript": true, "license": "MIT", "optional": true, @@ -11292,6 +11304,7 @@ "dev": true, "license": "MIT" }, +<<<<<<< HEAD "node_modules/rrweb-cssom": { "version": "0.8.0", "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.8.0.tgz", @@ -11300,6 +11313,8 @@ "license": "MIT", "optional": true }, +======= +>>>>>>> 498ad39 (test: add edge case coverage for dateDiffDays) "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -11379,6 +11394,7 @@ "url": "https://github.com/sponsors/ljharb" } }, +<<<<<<< HEAD "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", @@ -11401,6 +11417,8 @@ "node": ">=v12.22.7" } }, +======= +>>>>>>> 498ad39 (test: add edge case coverage for dateDiffDays) "node_modules/scheduler": { "version": "0.23.2", "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", @@ -12105,6 +12123,7 @@ "node": ">=12.0.0" } }, +<<<<<<< HEAD "node_modules/symbol-tree": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", @@ -12113,6 +12132,8 @@ "license": "MIT", "optional": true }, +======= +>>>>>>> 498ad39 (test: add edge case coverage for dateDiffDays) "node_modules/synckit": { "version": "0.11.12", "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.12.tgz", @@ -12372,6 +12393,7 @@ "node": ">=14.0.0" } }, +<<<<<<< HEAD "node_modules/tldts": { "version": "6.1.86", "resolved": "https://registry.npmjs.org/tldts/-/tldts-6.1.86.tgz", @@ -12394,6 +12416,8 @@ "license": "MIT", "optional": true }, +======= +>>>>>>> 498ad39 (test: add edge case coverage for dateDiffDays) "node_modules/tmpl": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", @@ -12414,6 +12438,7 @@ "node": ">=8.0" } }, +<<<<<<< HEAD "node_modules/tough-cookie": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-5.1.2.tgz", @@ -12442,6 +12467,8 @@ "node": ">=18" } }, +======= +>>>>>>> 498ad39 (test: add edge case coverage for dateDiffDays) "node_modules/ts-api-utils": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.5.0.tgz", @@ -13049,6 +13076,7 @@ } } }, +<<<<<<< HEAD "node_modules/w3c-xmlserializer": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz", @@ -13063,6 +13091,8 @@ "node": ">=18" } }, +======= +>>>>>>> 498ad39 (test: add edge case coverage for dateDiffDays) "node_modules/walker": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", @@ -13073,6 +13103,7 @@ "makeerror": "1.0.12" } }, +<<<<<<< HEAD "node_modules/webidl-conversions": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", @@ -13125,6 +13156,8 @@ "node": ">=18" } }, +======= +>>>>>>> 498ad39 (test: add edge case coverage for dateDiffDays) "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -13386,6 +13419,7 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, +<<<<<<< HEAD "node_modules/ws": { "version": "8.21.0", "resolved": "https://registry.npmjs.org/ws/-/ws-8.21.0.tgz", @@ -13428,6 +13462,8 @@ "license": "MIT", "optional": true }, +======= +>>>>>>> 498ad39 (test: add edge case coverage for dateDiffDays) "node_modules/y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", diff --git a/test/dateDiffDays.test.ts b/test/dateDiffDays.test.ts index 32983107..ab6a96b2 100644 --- a/test/dateDiffDays.test.ts +++ b/test/dateDiffDays.test.ts @@ -44,6 +44,25 @@ describe("dateUtils dateDiffDays", () => { expect(dateDiffDays("2025-01-01", "2024-01-01")).toBe(-366); }); + it("returns positive day differences for non-consecutive dates", () => { + expect(dateDiffDays("2024-04-05", "2024-04-15")).toBe(10); + }); + + it("handles month boundary edge cases", () => { + expect(dateDiffDays("2024-04-30", "2024-05-01")).toBe(1); + expect(dateDiffDays("2024-05-31", "2024-06-01")).toBe(1); + }); + + it("handles leap year and non-leap year boundaries", () => { + expect(dateDiffDays("2024-02-28", "2024-03-01")).toBe(2); + expect(dateDiffDays("2023-02-28", "2023-03-01")).toBe(1); + }); + + it("returns NaN for invalid date input", () => { + expect(Number.isNaN(dateDiffDays("invalid-date", "2024-01-01"))).toBe(true); + expect(Number.isNaN(dateDiffDays("2024-01-01", "not-a-date"))).toBe(true); + }); + it("returns fractional days when times differ on same date", () => { const diff = dateDiffDays("2024-06-15T10:00:00Z", "2024-06-15T23:59:59Z"); expect(diff).toBeGreaterThan(0);