@ninetailed/experience.js-utils-contentful
Version:
Contentful utilities for Experience.js
119 lines (118 loc) • 5.17 kB
TypeScript
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: {};
}>[];
}