Skip to content

Commit 8ef001e

Browse files
committed
add session slug processor factory
1 parent 7d628ea commit 8ef001e

File tree

1 file changed

+20
-0
lines changed

1 file changed

+20
-0
lines changed

src/format/slug.ts

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import slugify from "@sindresorhus/slugify";
22

3+
export const SLUG_PRESERVE_UNICODE = false;
34
export const SLUG_SEPARATOR = "_";
45

56
interface ProcessorOptions {
@@ -83,3 +84,22 @@ export function unicode_safe_processor(
8384
}, [] as string[])
8485
.join(separator);
8586
}
87+
88+
export function make_session_slug_processor({
89+
preserve_unicode = SLUG_PRESERVE_UNICODE,
90+
separator = SLUG_SEPARATOR,
91+
}) {
92+
const processor = preserve_unicode
93+
? unicode_safe_processor
94+
: url_safe_processor;
95+
const seen = new Set();
96+
97+
return function (url: string) {
98+
const slug = processor(url, { separator });
99+
100+
if (seen.has(slug)) throw new Error(`Duplicate slug ${slug}`);
101+
seen.add(slug);
102+
103+
return slug;
104+
};
105+
}

0 commit comments

Comments
 (0)