/ .astro / content.d.ts
content.d.ts
  1  declare module 'astro:content' {
  2  	export interface RenderResult {
  3  		Content: import('astro/runtime/server/index.js').AstroComponentFactory;
  4  		headings: import('astro').MarkdownHeading[];
  5  		remarkPluginFrontmatter: Record<string, any>;
  6  	}
  7  	interface Render {
  8  		'.md': Promise<RenderResult>;
  9  	}
 10  
 11  	export interface RenderedContent {
 12  		html: string;
 13  		metadata?: {
 14  			imagePaths: Array<string>;
 15  			[key: string]: unknown;
 16  		};
 17  	}
 18  }
 19  
 20  declare module 'astro:content' {
 21  	type Flatten<T> = T extends { [K: string]: infer U } ? U : never;
 22  
 23  	export type CollectionKey = keyof AnyEntryMap;
 24  	export type CollectionEntry<C extends CollectionKey> = Flatten<AnyEntryMap[C]>;
 25  
 26  	export type ContentCollectionKey = keyof ContentEntryMap;
 27  	export type DataCollectionKey = keyof DataEntryMap;
 28  
 29  	type AllValuesOf<T> = T extends any ? T[keyof T] : never;
 30  	type ValidContentEntrySlug<C extends keyof ContentEntryMap> = AllValuesOf<
 31  		ContentEntryMap[C]
 32  	>['slug'];
 33  
 34  	export type ReferenceDataEntry<
 35  		C extends CollectionKey,
 36  		E extends keyof DataEntryMap[C] = string,
 37  	> = {
 38  		collection: C;
 39  		id: E;
 40  	};
 41  	export type ReferenceContentEntry<
 42  		C extends keyof ContentEntryMap,
 43  		E extends ValidContentEntrySlug<C> | (string & {}) = string,
 44  	> = {
 45  		collection: C;
 46  		slug: E;
 47  	};
 48  	export type ReferenceLiveEntry<C extends keyof LiveContentConfig['collections']> = {
 49  		collection: C;
 50  		id: string;
 51  	};
 52  
 53  	/** @deprecated Use `getEntry` instead. */
 54  	export function getEntryBySlug<
 55  		C extends keyof ContentEntryMap,
 56  		E extends ValidContentEntrySlug<C> | (string & {}),
 57  	>(
 58  		collection: C,
 59  		// Note that this has to accept a regular string too, for SSR
 60  		entrySlug: E,
 61  	): E extends ValidContentEntrySlug<C>
 62  		? Promise<CollectionEntry<C>>
 63  		: Promise<CollectionEntry<C> | undefined>;
 64  
 65  	/** @deprecated Use `getEntry` instead. */
 66  	export function getDataEntryById<C extends keyof DataEntryMap, E extends keyof DataEntryMap[C]>(
 67  		collection: C,
 68  		entryId: E,
 69  	): Promise<CollectionEntry<C>>;
 70  
 71  	export function getCollection<C extends keyof AnyEntryMap, E extends CollectionEntry<C>>(
 72  		collection: C,
 73  		filter?: (entry: CollectionEntry<C>) => entry is E,
 74  	): Promise<E[]>;
 75  	export function getCollection<C extends keyof AnyEntryMap>(
 76  		collection: C,
 77  		filter?: (entry: CollectionEntry<C>) => unknown,
 78  	): Promise<CollectionEntry<C>[]>;
 79  
 80  	export function getLiveCollection<C extends keyof LiveContentConfig['collections']>(
 81  		collection: C,
 82  		filter?: LiveLoaderCollectionFilterType<C>,
 83  	): Promise<
 84  		import('astro').LiveDataCollectionResult<LiveLoaderDataType<C>, LiveLoaderErrorType<C>>
 85  	>;
 86  
 87  	export function getEntry<
 88  		C extends keyof ContentEntryMap,
 89  		E extends ValidContentEntrySlug<C> | (string & {}),
 90  	>(
 91  		entry: ReferenceContentEntry<C, E>,
 92  	): E extends ValidContentEntrySlug<C>
 93  		? Promise<CollectionEntry<C>>
 94  		: Promise<CollectionEntry<C> | undefined>;
 95  	export function getEntry<
 96  		C extends keyof DataEntryMap,
 97  		E extends keyof DataEntryMap[C] | (string & {}),
 98  	>(
 99  		entry: ReferenceDataEntry<C, E>,
100  	): E extends keyof DataEntryMap[C]
101  		? Promise<DataEntryMap[C][E]>
102  		: Promise<CollectionEntry<C> | undefined>;
103  	export function getEntry<
104  		C extends keyof ContentEntryMap,
105  		E extends ValidContentEntrySlug<C> | (string & {}),
106  	>(
107  		collection: C,
108  		slug: E,
109  	): E extends ValidContentEntrySlug<C>
110  		? Promise<CollectionEntry<C>>
111  		: Promise<CollectionEntry<C> | undefined>;
112  	export function getEntry<
113  		C extends keyof DataEntryMap,
114  		E extends keyof DataEntryMap[C] | (string & {}),
115  	>(
116  		collection: C,
117  		id: E,
118  	): E extends keyof DataEntryMap[C]
119  		? string extends keyof DataEntryMap[C]
120  			? Promise<DataEntryMap[C][E]> | undefined
121  			: Promise<DataEntryMap[C][E]>
122  		: Promise<CollectionEntry<C> | undefined>;
123  	export function getLiveEntry<C extends keyof LiveContentConfig['collections']>(
124  		collection: C,
125  		filter: string | LiveLoaderEntryFilterType<C>,
126  	): Promise<import('astro').LiveDataEntryResult<LiveLoaderDataType<C>, LiveLoaderErrorType<C>>>;
127  
128  	/** Resolve an array of entry references from the same collection */
129  	export function getEntries<C extends keyof ContentEntryMap>(
130  		entries: ReferenceContentEntry<C, ValidContentEntrySlug<C>>[],
131  	): Promise<CollectionEntry<C>[]>;
132  	export function getEntries<C extends keyof DataEntryMap>(
133  		entries: ReferenceDataEntry<C, keyof DataEntryMap[C]>[],
134  	): Promise<CollectionEntry<C>[]>;
135  
136  	export function render<C extends keyof AnyEntryMap>(
137  		entry: AnyEntryMap[C][string],
138  	): Promise<RenderResult>;
139  
140  	export function reference<C extends keyof AnyEntryMap>(
141  		collection: C,
142  	): import('astro/zod').ZodEffects<
143  		import('astro/zod').ZodString,
144  		C extends keyof ContentEntryMap
145  			? ReferenceContentEntry<C, ValidContentEntrySlug<C>>
146  			: ReferenceDataEntry<C, keyof DataEntryMap[C]>
147  	>;
148  	// Allow generic `string` to avoid excessive type errors in the config
149  	// if `dev` is not running to update as you edit.
150  	// Invalid collection names will be caught at build time.
151  	export function reference<C extends string>(
152  		collection: C,
153  	): import('astro/zod').ZodEffects<import('astro/zod').ZodString, never>;
154  
155  	type ReturnTypeOrOriginal<T> = T extends (...args: any[]) => infer R ? R : T;
156  	type InferEntrySchema<C extends keyof AnyEntryMap> = import('astro/zod').infer<
157  		ReturnTypeOrOriginal<Required<ContentConfig['collections'][C]>['schema']>
158  	>;
159  
160  	type ContentEntryMap = {
161  		
162  	};
163  
164  	type DataEntryMap = {
165  		
166  	};
167  
168  	type AnyEntryMap = ContentEntryMap & DataEntryMap;
169  
170  	type ExtractLoaderTypes<T> = T extends import('astro/loaders').LiveLoader<
171  		infer TData,
172  		infer TEntryFilter,
173  		infer TCollectionFilter,
174  		infer TError
175  	>
176  		? { data: TData; entryFilter: TEntryFilter; collectionFilter: TCollectionFilter; error: TError }
177  		: { data: never; entryFilter: never; collectionFilter: never; error: never };
178  	type ExtractDataType<T> = ExtractLoaderTypes<T>['data'];
179  	type ExtractEntryFilterType<T> = ExtractLoaderTypes<T>['entryFilter'];
180  	type ExtractCollectionFilterType<T> = ExtractLoaderTypes<T>['collectionFilter'];
181  	type ExtractErrorType<T> = ExtractLoaderTypes<T>['error'];
182  
183  	type LiveLoaderDataType<C extends keyof LiveContentConfig['collections']> =
184  		LiveContentConfig['collections'][C]['schema'] extends undefined
185  			? ExtractDataType<LiveContentConfig['collections'][C]['loader']>
186  			: import('astro/zod').infer<
187  					Exclude<LiveContentConfig['collections'][C]['schema'], undefined>
188  				>;
189  	type LiveLoaderEntryFilterType<C extends keyof LiveContentConfig['collections']> =
190  		ExtractEntryFilterType<LiveContentConfig['collections'][C]['loader']>;
191  	type LiveLoaderCollectionFilterType<C extends keyof LiveContentConfig['collections']> =
192  		ExtractCollectionFilterType<LiveContentConfig['collections'][C]['loader']>;
193  	type LiveLoaderErrorType<C extends keyof LiveContentConfig['collections']> = ExtractErrorType<
194  		LiveContentConfig['collections'][C]['loader']
195  	>;
196  
197  	export type ContentConfig = typeof import("../src/content.config.mjs");
198  	export type LiveContentConfig = never;
199  }