Skip to Content
⚠️Active Development Notice: TimeTiles is under active development. Information may be placeholder content or not up-to-date.

web


web / lib/utils/slug

lib/utils/slug

Provides utility functions for generating and validating URL-friendly slugs.

This module contains helpers for creating unique, SEO-friendly slugs from a given string (like a title or name). It includes functionality to:

  • Sanitize a string into a basic slug format.
  • Check for the uniqueness of a slug within a specific collection to prevent duplicates.
  • Generate a unique slug by appending a random suffix if a conflict is found.
  • A factory function (createSlugHook) to easily integrate this logic into Payload CMS collection field hooks.

Functions

generateSlug()

generateSlug(text): string

Generates a basic slug from a string by:

  • Converting to lowercase
  • Replacing non-alphanumeric characters with hyphens
  • Removing leading/trailing hyphens.

Parameters

text

string

Returns

string


generateUniqueSlug()

generateUniqueSlug<T>(baseText, collection, req, currentId?): Promise<string>

Generates a unique slug by checking for existing slugs and appending random suffixes if needed.

Type Parameters

T

T extends "import-files" | "catalogs" | "datasets" | "dataset-schemas" | "import-jobs" | "scheduled-imports" | "events" | "users" | "user-usage" | "media" | "location-cache" | "geocoding-providers" | "pages" | "payload-jobs" | "payload-locked-documents" | "payload-preferences" | "payload-migrations"

Parameters

baseText

string

collection

T

req

PayloadRequest

currentId?

string | number

Returns

Promise<string>


createSlugHook()

createSlugHook<T>(collection, options?): (__namedParameters) => Promise<undefined | string>

Hook function to be used in Payload collection field hooks.

Type Parameters

T

T extends "import-files" | "catalogs" | "datasets" | "dataset-schemas" | "import-jobs" | "scheduled-imports" | "events" | "users" | "user-usage" | "media" | "location-cache" | "geocoding-providers" | "pages" | "payload-jobs" | "payload-locked-documents" | "payload-preferences" | "payload-migrations"

Parameters

collection

T

The collection name.

options?

Optional object with sourceField (dot notation).

sourceField?

string

Returns

(__namedParameters): Promise<undefined | string>

Parameters
__namedParameters
value?

string

data?

Record<string, unknown>

req?

PayloadRequest

operation?

string

originalDoc?

Record<string, unknown>

Returns

Promise<undefined | string>

Last updated on