UNPKG

@ninetailed/experience.js-utils-contentful

Version:
119 lines (118 loc) 5.17 kB
import { Reference } from '@ninetailed/experience.js'; import { BaselineWithExperiencesEntry } from '../types/BaselineWithExperiencesEntry'; import { EntryLike } from '../types/Entry'; import type { EntryFields } from '../types/EntryFields'; import { ExperienceEntry, ExperienceEntryLike } from '../types/ExperienceEntry'; import { ExperimentEntry } from '../types/ExperimentEntry'; export type MapVariantFunction<In extends EntryFields, Out extends Reference> = (input: EntryLike<In>) => Out; export type MapVariantFunctionAsync<In extends EntryFields, Out extends Reference> = (input: EntryLike<In>) => Promise<Out>; export declare class ExperienceMapper { static isExperienceEntry<VariantFields extends EntryFields>(entry: ExperienceEntryLike<VariantFields>): entry is ExperienceEntry<VariantFields>; /** * Maps a Contentful Ninetailed Experience Entry to a format compatible with the Experience.js SDK. * * @param ctfEntry A Contentful Ninetailed Experience Entry */ static mapExperience<VariantFields extends EntryFields>(ctfEntry: ExperienceEntryLike<VariantFields>): import("@ninetailed/experience.js").ExperienceConfiguration<{ id: string; sys: { id: string; type?: string | undefined; createdAt?: string | undefined; updatedAt?: string | undefined; locale?: string | undefined; revision?: number | undefined; space?: { sys: { id: string; type?: string | undefined; linkType?: string | undefined; }; } | undefined; environment?: { sys: { id: string; type?: string | undefined; linkType?: string | undefined; }; } | undefined; contentType?: { sys: { id: string; type?: string | undefined; linkType?: string | undefined; }; } | undefined; }; metadata?: { tags: { sys: { id: string; linkType: string; type?: string | undefined; }; }[]; } | undefined; fields: VariantFields; }>; /** * * Maps a Contentful Ninetailed Experience Entry to a format compatible with the Experience.js SDK * using a custom mapping function for the Experience's variants. * * @param ctfEntry A Contentful Ninetailed Experience Entry * @param mapFn A custom function to map the Experience's variants */ static mapCustomExperience<Variant extends Reference, VariantFields extends EntryFields>(ctfEntry: ExperienceEntryLike<VariantFields>, mapFn: MapVariantFunction<VariantFields, Variant>): import("@ninetailed/experience.js").ExperienceConfiguration<Variant>; /** * Similar to `mapCustomExperience` but supports asynchronous mapping functions. * @see mapCustomExperience */ static mapCustomExperienceAsync<Variant extends Reference, VariantFields extends EntryFields>(ctfEntry: ExperienceEntryLike<VariantFields>, mapFn: MapVariantFunctionAsync<VariantFields, Variant>): Promise<import("@ninetailed/experience.js").ExperienceConfiguration<Awaited<Variant>>>; static isExperiment(entry: ExperienceEntryLike): entry is ExperimentEntry; static mapExperiment(entry: ExperienceEntryLike): import("@ninetailed/experience.js").ExperienceConfiguration<{ id: string; }>; static mapBaselineWithExperiences<Fields extends EntryFields>(entry: BaselineWithExperiencesEntry<Fields>): import("@ninetailed/experience.js").ExperienceConfiguration<{ id: string; sys: { id: string; type?: string | undefined; createdAt?: string | undefined; updatedAt?: string | undefined; locale?: string | undefined; revision?: number | undefined; space?: { sys: { id: string; type?: string | undefined; linkType?: string | undefined; }; } | undefined; environment?: { sys: { id: string; type?: string | undefined; linkType?: string | undefined; }; } | undefined; contentType?: { sys: { id: string; type?: string | undefined; linkType?: string | undefined; }; } | undefined; }; metadata?: { tags: { sys: { id: string; linkType: string; type?: string | undefined; }; }[]; } | undefined; fields: {}; }>[]; }