import { ExternalLinkContent } from "@prismicio/types-internal/lib/content" import type { Link } from "@prismicio/types-internal/lib/customtypes" import dataset from "../../../dataset/weblinks.json" import type { MockConfig } from "../../../MockConfig" import { slug } from "../../../utils" export type ExternalLinkConfig = MockConfig export const ExternalLinkMock = { generate(def: Link, config?: ExternalLinkConfig): ExternalLinkContent { let value: ExternalLinkContent if (config?.value) { value = config.value } else { const url = getRandomUrl() const text = def.config?.allowText ? slug() : undefined const variant = def.config?.variants?.[ Math.floor(Math.random() * def.config.variants.length) ] value = { __TYPE__: "ExternalLink", url, ...(text && { text }), ...(variant && { variant }), } } return ExternalLinkContent.encode(value) }, } function getRandomUrl(): string { const webLinks = dataset as ReadonlyArray const randomIndex = Math.floor(Math.random() * webLinks.length) const url = webLinks[randomIndex] if (!url) throw new Error("Something happened during web link generation.") return url }