@vendure/core
Version:
A modern, headless ecommerce framework
53 lines (52 loc) • 1.44 kB
TypeScript
import { RequestContext } from '../../api/common/request-context';
import { InjectableStrategy } from '../../common/types/injectable-strategy';
/**
* @description
* Parameters for slug generation
*/
export interface SlugGenerateParams {
/**
* The input string to be converted to a slug
*/
value: string;
/**
* The optional entity name (e.g., 'Product', 'Collection')
*/
entityName?: string;
/**
* The optional field name (e.g., 'slug', 'code')
*/
fieldName?: string;
}
/**
* @description
* Defines the strategy for generating slugs from input strings.
* Slugs are URL-friendly versions of text that are commonly used for
* entity identifiers in URLs.
*
* @example
* ```ts
* export class CustomSlugStrategy implements SlugStrategy {
* generate(ctx: RequestContext, params: SlugGenerateParams): string {
* return params.value
* .toLowerCase()
* .replace(/[^a-z0-9]+/g, '-')
* .replace(/^-+|-+$/g, '');
* }
* }
* ```
*
* @docsCategory configuration
* @since 3.5.0
*/
export interface SlugStrategy extends InjectableStrategy {
/**
* @description
* Generates a slug from the input string.
*
* @param ctx The request context
* @param params The parameters for slug generation
* @returns A URL-friendly slug string
*/
generate(ctx: RequestContext, params: SlugGenerateParams): string | Promise<string>;
}