UNPKG

@astrolicious/i18n

Version:

Yet another i18n integration for Astro with server and client utilities, type safety and translations built-in.

37 lines (35 loc) 1.21 kB
type DataEntryConstraint = { id: string; collection: string; data: Record<string, unknown>; }; type ContentEntryConstraint = DataEntryConstraint & { slug: string; }; type EntryConstraint = DataEntryConstraint | ContentEntryConstraint; type ReferenceConstraint<TEntry extends EntryConstraint> = { collection: TEntry["collection"]; } & (TEntry extends ContentEntryConstraint ? { slug: TEntry["slug"]; } : { id: TEntry["id"]; }); type PickKeysByValue<T, ValueType> = { [Key in keyof T as T[Key] extends ValueType ? Key : never]: T[Key]; }; declare const handleI18nSlug: (slug: string) => { locale: string; slug: string; }; declare const collectionFilters: { byLocale: <TEntry extends EntryConstraint>(entry: TEntry, { locale }: { locale: string; }) => boolean; matchingEntries: <TEntry_1 extends EntryConstraint, TKey extends keyof PickKeysByValue<TEntry_1["data"], ReferenceConstraint<TEntry_1> | undefined>>(entry: TEntry_1, { key, currentEntry, locale, defaultLocale, }: { currentEntry: TEntry_1; key: TKey; locale: string; defaultLocale: string; }) => boolean; }; export { collectionFilters, handleI18nSlug };