From 8fd5eaf0020e9a3cfdcdb8562f147414818af73a Mon Sep 17 00:00:00 2001 From: Jumpei Ogawa Date: Tue, 2 Dec 2025 09:45:16 +0900 Subject: [PATCH 1/4] Revert "fix: improve type check" This reverts commit 082d41ff5df9bb29c45fc53f178b69e54ce882f8. --- src/universal/get-last-element-of.ts | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/src/universal/get-last-element-of.ts b/src/universal/get-last-element-of.ts index 8c4d500..bc0ddfc 100644 --- a/src/universal/get-last-element-of.ts +++ b/src/universal/get-last-element-of.ts @@ -29,14 +29,10 @@ export function getLastElementOf( if (withIndex === true) { const index = arr.length - 1; - if (arr[index]) { - return { - el: arr[index], - index, - }; - } else { - return undefined; - } + return { + el: arr[index], + index, + }; } else { return arr[arr.length - 1]; } From 567581e86f0e5c92f26444bb39ecc2f0a4e2fb87 Mon Sep 17 00:00:00 2001 From: Jumpei Ogawa Date: Tue, 2 Dec 2025 09:48:40 +0900 Subject: [PATCH 2/4] fix: allow `undefined` as a return value --- src/universal/get-last-element-of.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/universal/get-last-element-of.ts b/src/universal/get-last-element-of.ts index bc0ddfc..d80fc3f 100644 --- a/src/universal/get-last-element-of.ts +++ b/src/universal/get-last-element-of.ts @@ -19,7 +19,7 @@ export function getLastElementOf( options: { withIndex?: boolean; } = {}, -): T | { el: T; index: number; } | undefined { +): T | { el: T | undefined; index: number; } | undefined { if (arr.length <= 0) { return undefined; } From 2b6aa602cefd04f1a4d964d4c283ed5055a420fa Mon Sep 17 00:00:00 2001 From: Jumpei Ogawa Date: Tue, 2 Dec 2025 10:32:21 +0900 Subject: [PATCH 3/4] test: allow `undefined` as a return value --- test/universal/get-last-element-of.test.ts | 27 ++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/test/universal/get-last-element-of.test.ts b/test/universal/get-last-element-of.test.ts index f6224b5..aa56df7 100644 --- a/test/universal/get-last-element-of.test.ts +++ b/test/universal/get-last-element-of.test.ts @@ -30,3 +30,30 @@ test("getLastElementOf (with index, empty array given)", () => { expect(lastElement).toBeUndefined(); }); + +test("undefined element (without index)", () => { + const lastElement = getLastElementOf([ "a", "b", undefined, "c", undefined ], { withIndex: false }); + + expect(lastElement).toBeUndefined(); +}); + +test("undefined element (with index)", () => { + const { el, index } = getLastElementOf([ "a", "b", undefined, "c", undefined ], { withIndex: true }) ?? {}; + + expect(el).toBeUndefined(); + expect(index).toBe(4); +}); + +test("false element (with index)", () => { + const { el, index } = getLastElementOf([ "a", "b", false ], { withIndex: true }) ?? {}; + + expect(el).toBe(false); + expect(index).toBe(2); +}); + +test("empty string element (with index)", () => { + const { el, index } = getLastElementOf([ "a", "b", "" ], { withIndex: true }) ?? {}; + + expect(el).toBe(""); + expect(index).toBe(2); +}); From d911b71c02085b7b01e31d83ac9de1555f08e20a Mon Sep 17 00:00:00 2001 From: Jumpei Ogawa Date: Tue, 2 Dec 2025 09:26:08 +0900 Subject: [PATCH 4/4] chore: v2.0.1 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 14cbd4e..388a56b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@phanect/utils", - "version": "2.0.0", + "version": "2.0.1", "description": "@phanect's personal utility library for JavaScript & TypeScript", "repository": { "type": "git",