diff options
| author | Miqdad <ahmadmiqdad27@gmail.com> | 2025-10-29 09:20:24 +0700 |
|---|---|---|
| committer | Miqdad <ahmadmiqdad27@gmail.com> | 2025-10-29 09:20:24 +0700 |
| commit | f091d443fe0cdbcb1500a5b396b180bab30affd5 (patch) | |
| tree | 068655ec9a4f69b38293cd07dcfc8c215a5c8a32 /src-migrate/libs | |
| parent | 0febcbbbb62bb2f76e1385b8f4edb05e7217a618 (diff) | |
| parent | 7f71d52e2e6e6e8ffb5ea2837be84c800d04ef95 (diff) | |
Merge branch 'new-release' of https://bitbucket.org/altafixco/next-indoteknik into cr_prod_card
merge
Diffstat (limited to 'src-migrate/libs')
| -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; }; |
