import { PrismicError } from "./errors"
import { isRepositoryName } from "./isRepositoryName"

/**
 * Get a repository's Prismic Content API endpoint.
 *
 * @example
 * 	;```ts
 * 	getRepositoryEndpoint("my-repo")
 * 	// => "https://my-repo.cdn.prismic.io/api/v2"
 * 	```
 *
 * @typeParam RepositoryName - Name of the Prismic repository.
 * @param repositoryName - Name of the repository.
 * @returns The repository's Prismic Content API endpoint.
 * @throws {@link Error} Thrown if an invalid repository name is provided.
 */
export const getRepositoryEndpoint = <RepositoryName extends string>(
	repositoryName: RepositoryName,
): `https://${RepositoryName}.cdn.prismic.io/api/v2` => {
	if (isRepositoryName(repositoryName)) {
		return `https://${repositoryName}.cdn.prismic.io/api/v2` as const
	} else {
		throw new PrismicError(
			`An invalid Prismic repository name was given: ${repositoryName}`,
			undefined,
			undefined,
		)
	}
}
