diff options
Diffstat (limited to 'src-migrate/libs/slug.ts')
| -rw-r--r-- | src-migrate/libs/slug.ts | 35 |
1 files changed, 22 insertions, 13 deletions
diff --git a/src-migrate/libs/slug.ts b/src-migrate/libs/slug.ts index 5ab3b3dd..e8267ed2 100644 --- a/src-migrate/libs/slug.ts +++ b/src-migrate/libs/slug.ts @@ -3,21 +3,30 @@ import { toTitleCase } from './toTitleCase'; export const createSlug = ( prefix: string, name: string, - id: string, - withHost = false -) => { - const cleanName = name - .trim() - .replace(new RegExp(/[^A-Za-z0-9]/, 'g'), '-') - .toLowerCase(); - - let slug = `${cleanName}-${id}`; - const splitSlug = slug.split('-'); - const filterSlug = splitSlug.filter((x) => x !== ''); + id: string | number, + withHost: boolean = false +): string => { + name ||= ''; + + // pastikan id jadi string + const safeId = (id ?? '').toString(); - slug = `${prefix}${filterSlug.join('-')}`; + let slug = + name + ?.trim() + .replace(new RegExp(/[^A-Za-z0-9]/, 'g'), '-') // non alphanumeric -> "-" + .toLowerCase() + + '-' + + safeId; + + const splitSlug = slug.split('-'); + const filterSlugFromEmptyChar = splitSlug.filter((x) => x !== ''); + slug = prefix + filterSlugFromEmptyChar.join('-'); - if (withHost) slug = process.env.NEXT_PUBLIC_SELF_HOST + slug; + if (withHost) { + const host = (process.env.NEXT_PUBLIC_SELF_HOST || '').replace(/\/+$/, ''); + slug = host + slug; + } return slug; }; |
