diff options
| author | Matt Kosarek <matt.kosarek@canonical.com> | 2026-03-11 17:49:05 -0400 |
|---|---|---|
| committer | Matt Kosarek <matt.kosarek@canonical.com> | 2026-03-11 17:49:05 -0400 |
| commit | 77b0f69d0c6e555349dd491d7ca209924d119e61 (patch) | |
| tree | 095cf20002f5df752c04c20af4366588bd7ba32b /.astro/content.d.ts | |
| parent | c929a29c728c6799a3f83f5ad5c1c6f99ed516d4 (diff) | |
Diffstat (limited to '.astro/content.d.ts')
| -rw-r--r-- | .astro/content.d.ts | 209 |
1 files changed, 209 insertions, 0 deletions
diff --git a/.astro/content.d.ts b/.astro/content.d.ts new file mode 100644 index 0000000..cccfa96 --- /dev/null +++ b/.astro/content.d.ts @@ -0,0 +1,209 @@ +declare module 'astro:content' { + export interface RenderResult { + Content: import('astro/runtime/server/index.js').AstroComponentFactory; + headings: import('astro').MarkdownHeading[]; + remarkPluginFrontmatter: Record<string, any>; + } + interface Render { + '.md': Promise<RenderResult>; + } + + export interface RenderedContent { + html: string; + metadata?: { + imagePaths: Array<string>; + [key: string]: unknown; + }; + } +} + +declare module 'astro:content' { + type Flatten<T> = T extends { [K: string]: infer U } ? U : never; + + export type CollectionKey = keyof AnyEntryMap; + export type CollectionEntry<C extends CollectionKey> = Flatten<AnyEntryMap[C]>; + + export type ContentCollectionKey = keyof ContentEntryMap; + export type DataCollectionKey = keyof DataEntryMap; + + type AllValuesOf<T> = T extends any ? T[keyof T] : never; + type ValidContentEntrySlug<C extends keyof ContentEntryMap> = AllValuesOf< + ContentEntryMap[C] + >['slug']; + + export type ReferenceDataEntry< + C extends CollectionKey, + E extends keyof DataEntryMap[C] = string, + > = { + collection: C; + id: E; + }; + export type ReferenceContentEntry< + C extends keyof ContentEntryMap, + E extends ValidContentEntrySlug<C> | (string & {}) = string, + > = { + collection: C; + slug: E; + }; + export type ReferenceLiveEntry<C extends keyof LiveContentConfig['collections']> = { + collection: C; + id: string; + }; + + /** @deprecated Use `getEntry` instead. */ + export function getEntryBySlug< + C extends keyof ContentEntryMap, + E extends ValidContentEntrySlug<C> | (string & {}), + >( + collection: C, + // Note that this has to accept a regular string too, for SSR + entrySlug: E, + ): E extends ValidContentEntrySlug<C> + ? Promise<CollectionEntry<C>> + : Promise<CollectionEntry<C> | undefined>; + + /** @deprecated Use `getEntry` instead. */ + export function getDataEntryById<C extends keyof DataEntryMap, E extends keyof DataEntryMap[C]>( + collection: C, + entryId: E, + ): Promise<CollectionEntry<C>>; + + export function getCollection<C extends keyof AnyEntryMap, E extends CollectionEntry<C>>( + collection: C, + filter?: (entry: CollectionEntry<C>) => entry is E, + ): Promise<E[]>; + export function getCollection<C extends keyof AnyEntryMap>( + collection: C, + filter?: (entry: CollectionEntry<C>) => unknown, + ): Promise<CollectionEntry<C>[]>; + + export function getLiveCollection<C extends keyof LiveContentConfig['collections']>( + collection: C, + filter?: LiveLoaderCollectionFilterType<C>, + ): Promise< + import('astro').LiveDataCollectionResult<LiveLoaderDataType<C>, LiveLoaderErrorType<C>> + >; + + export function getEntry< + C extends keyof ContentEntryMap, + E extends ValidContentEntrySlug<C> | (string & {}), + >( + entry: ReferenceContentEntry<C, E>, + ): E extends ValidContentEntrySlug<C> + ? Promise<CollectionEntry<C>> + : Promise<CollectionEntry<C> | undefined>; + export function getEntry< + C extends keyof DataEntryMap, + E extends keyof DataEntryMap[C] | (string & {}), + >( + entry: ReferenceDataEntry<C, E>, + ): E extends keyof DataEntryMap[C] + ? Promise<DataEntryMap[C][E]> + : Promise<CollectionEntry<C> | undefined>; + export function getEntry< + C extends keyof ContentEntryMap, + E extends ValidContentEntrySlug<C> | (string & {}), + >( + collection: C, + slug: E, + ): E extends ValidContentEntrySlug<C> + ? Promise<CollectionEntry<C>> + : Promise<CollectionEntry<C> | undefined>; + export function getEntry< + C extends keyof DataEntryMap, + E extends keyof DataEntryMap[C] | (string & {}), + >( + collection: C, + id: E, + ): E extends keyof DataEntryMap[C] + ? string extends keyof DataEntryMap[C] + ? Promise<DataEntryMap[C][E]> | undefined + : Promise<DataEntryMap[C][E]> + : Promise<CollectionEntry<C> | undefined>; + export function getLiveEntry<C extends keyof LiveContentConfig['collections']>( + collection: C, + filter: string | LiveLoaderEntryFilterType<C>, + ): Promise<import('astro').LiveDataEntryResult<LiveLoaderDataType<C>, LiveLoaderErrorType<C>>>; + + /** Resolve an array of entry references from the same collection */ + export function getEntries<C extends keyof ContentEntryMap>( + entries: ReferenceContentEntry<C, ValidContentEntrySlug<C>>[], + ): Promise<CollectionEntry<C>[]>; + export function getEntries<C extends keyof DataEntryMap>( + entries: ReferenceDataEntry<C, keyof DataEntryMap[C]>[], + ): Promise<CollectionEntry<C>[]>; + + export function render<C extends keyof AnyEntryMap>( + entry: AnyEntryMap[C][string], + ): Promise<RenderResult>; + + export function reference<C extends keyof AnyEntryMap>( + collection: C, + ): import('astro/zod').ZodEffects< + import('astro/zod').ZodString, + C extends keyof ContentEntryMap + ? ReferenceContentEntry<C, ValidContentEntrySlug<C>> + : ReferenceDataEntry<C, keyof DataEntryMap[C]> + >; + // Allow generic `string` to avoid excessive type errors in the config + // if `dev` is not running to update as you edit. + // Invalid collection names will be caught at build time. + export function reference<C extends string>( + collection: C, + ): import('astro/zod').ZodEffects<import('astro/zod').ZodString, never>; + + type ReturnTypeOrOriginal<T> = T extends (...args: any[]) => infer R ? R : T; + type InferEntrySchema<C extends keyof AnyEntryMap> = import('astro/zod').infer< + ReturnTypeOrOriginal<Required<ContentConfig['collections'][C]>['schema']> + >; + + type ContentEntryMap = { + + }; + + type DataEntryMap = { + "posts": Record<string, { + id: string; + render(): Render[".md"]; + slug: string; + body: string; + collection: "posts"; + data: InferEntrySchema<"posts">; + rendered?: RenderedContent; + filePath?: string; +}>; + + }; + + type AnyEntryMap = ContentEntryMap & DataEntryMap; + + type ExtractLoaderTypes<T> = T extends import('astro/loaders').LiveLoader< + infer TData, + infer TEntryFilter, + infer TCollectionFilter, + infer TError + > + ? { data: TData; entryFilter: TEntryFilter; collectionFilter: TCollectionFilter; error: TError } + : { data: never; entryFilter: never; collectionFilter: never; error: never }; + type ExtractDataType<T> = ExtractLoaderTypes<T>['data']; + type ExtractEntryFilterType<T> = ExtractLoaderTypes<T>['entryFilter']; + type ExtractCollectionFilterType<T> = ExtractLoaderTypes<T>['collectionFilter']; + type ExtractErrorType<T> = ExtractLoaderTypes<T>['error']; + + type LiveLoaderDataType<C extends keyof LiveContentConfig['collections']> = + LiveContentConfig['collections'][C]['schema'] extends undefined + ? ExtractDataType<LiveContentConfig['collections'][C]['loader']> + : import('astro/zod').infer< + Exclude<LiveContentConfig['collections'][C]['schema'], undefined> + >; + type LiveLoaderEntryFilterType<C extends keyof LiveContentConfig['collections']> = + ExtractEntryFilterType<LiveContentConfig['collections'][C]['loader']>; + type LiveLoaderCollectionFilterType<C extends keyof LiveContentConfig['collections']> = + ExtractCollectionFilterType<LiveContentConfig['collections'][C]['loader']>; + type LiveLoaderErrorType<C extends keyof LiveContentConfig['collections']> = ExtractErrorType< + LiveContentConfig['collections'][C]['loader'] + >; + + export type ContentConfig = typeof import("../src/content/config.js"); + export type LiveContentConfig = never; +} |
