diff --git a/__tests__/date.test.ts b/__tests__/date.test.ts index 4e29b7da..f113c9b9 100644 --- a/__tests__/date.test.ts +++ b/__tests__/date.test.ts @@ -30,4 +30,16 @@ describe('Date utility', () => { .toBe('2023-12-02 16:38:36'); }); }); + it('Empty string', () => { + const timestamp = ' '; + const offset = undefined; + expect(convertTimestampWithOffsetToPostgresString( + timestamp, + offset + )) + .toBe(convertTimestampWithOffsetToPostgresString( + new Date().toISOString(), + offset + )); + }); }); diff --git a/__tests__/string.test.ts b/__tests__/string.test.ts index e56dfc4e..bbd33603 100644 --- a/__tests__/string.test.ts +++ b/__tests__/string.test.ts @@ -2,10 +2,12 @@ import { parameterize } from '@/utility/string'; describe('String', () => { it('parameterizes', () => { + expect(parameterize('my-tag')).toBe('my-tag'); expect(parameterize('my tag')).toBe('my-tag'); expect(parameterize('My Tag')).toBe('my-tag'); expect(parameterize('my_tag')).toBe('my-tag'); expect(parameterize('person\'s tag')).toBe('persons-tag'); expect(parameterize('"person\'s tag"')).toBe('persons-tag'); + expect(parameterize('宿宿宿宿')).toBe('宿宿宿宿'); }); }); diff --git a/src/utility/date.ts b/src/utility/date.ts index 9029c7b3..7e6159be 100644 --- a/src/utility/date.ts +++ b/src/utility/date.ts @@ -18,14 +18,16 @@ export const formatDateForPostgres = (date: Date) => '$1-$2-$3 $4', ); -const dateFromTimestamp = (timestamp?: AmbiguousTimestamp): Date => - typeof timestamp === 'number' +const dateFromTimestamp = (timestamp?: AmbiguousTimestamp): Date => { + const date = typeof timestamp === 'number' ? new Date(timestamp * 1000) - : typeof timestamp === 'string' && timestamp.trim().length > 0 + : typeof timestamp === 'string' ? /.+Z/i.test(timestamp) ? new Date(timestamp) : new Date(`${timestamp}Z`) - : new Date(); + : undefined; + return date && !isNaN(date.getTime()) ? date : new Date(); +}; const createNaiveDateWithOffset = ( timestamp?: AmbiguousTimestamp, diff --git a/src/utility/string.ts b/src/utility/string.ts index 5c597cde..8bad0cd2 100644 --- a/src/utility/string.ts +++ b/src/utility/string.ts @@ -24,6 +24,8 @@ export const parameterize = ( .trim() // Replaces spaces, underscores, and dashes with dashes .replaceAll(/[\s_–—]/gi, '-') + // Removes punctuation + .replaceAll(/['"!@#$%^&*()_+=[\]{};:/?,.<>\\|`~]/gi, '') // Removes all non-alphanumeric characters .replaceAll( shouldRemoveNonAlphanumeric