summaryrefslogtreecommitdiff
path: root/src-migrate/libs/slug.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src-migrate/libs/slug.ts')
-rw-r--r--src-migrate/libs/slug.ts35
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;
};