diff --git a/packages/docusaurus-utils/src/__tests__/lastUpdateUtils.test.ts b/packages/docusaurus-utils/src/__tests__/lastUpdateUtils.test.ts index 67b57f8deaa1..39799d62d423 100644 --- a/packages/docusaurus-utils/src/__tests__/lastUpdateUtils.test.ts +++ b/packages/docusaurus-utils/src/__tests__/lastUpdateUtils.test.ts @@ -61,6 +61,14 @@ describe('readLastUpdateData', () => { expect(lastUpdatedBy).toBeNull(); expect(lastUpdatedAt).toEqual(testTimestamp); }); + + it('handles invalid date string in front matter gracefully', async () => { + const {lastUpdatedAt, lastUpdatedBy} = await readUntrackedFile({ + date: 'invalid-date-string', + }); + expect(lastUpdatedAt).toBeNull(); + expect(lastUpdatedBy).toBeNull(); + }); }); it('read last time show author time', async () => { diff --git a/packages/docusaurus-utils/src/lastUpdateUtils.ts b/packages/docusaurus-utils/src/lastUpdateUtils.ts index 0f1a44e86887..c80f8bbaeb9d 100644 --- a/packages/docusaurus-utils/src/lastUpdateUtils.ts +++ b/packages/docusaurus-utils/src/lastUpdateUtils.ts @@ -61,9 +61,10 @@ export async function readLastUpdateData( } const frontMatterAuthor = lastUpdateFrontMatter?.author; - const frontMatterTimestamp = lastUpdateFrontMatter?.date - ? new Date(lastUpdateFrontMatter.date).getTime() - : undefined; + const rawDate = lastUpdateFrontMatter?.date; + const parsedDate = rawDate ? new Date(rawDate).getTime() : undefined; + const frontMatterTimestamp = + parsedDate && !Number.isNaN(parsedDate) ? parsedDate : undefined; // We try to minimize git last update calls // We call it at most once