Repository: withastro/astro
File: packages/astro/src/core/config/schema.ts (TypeScript)

Code before:
							.string()
							.refine((val) => !val.includes('*') || val.endsWith('/*') || val.endsWith('/**'), {
								message: 'wildcards can only be placed at the end of a pathname',
							})
							.optional(),
					}),
				)
				.default([]),
			experimentalLayout: z.enum(['responsive', 'fixed', 'full-width', 'none']).optional(),
			experimentalObjectFit: z.string().optional(),
			experimentalObjectPosition: z.string().optional(),
			experimentalBreakpoints: z.array(z.number()).optional(),
		})
		.default(ASTRO_CONFIG_DEFAULTS.image),
	devToolbar: z
		.object({
			enabled: z.boolean().default(ASTRO_CONFIG_DEFAULTS.devToolbar.enabled),
		})
		.default(ASTRO_CONFIG_DEFAULTS.devToolbar),
	markdown: z
		.object({
			syntaxHighlight: z
				.union([
					z.object({
						type: highlighterTypesSchema,
						excludeLangs: z.array(z.string()).optional(),
					}),
					highlighterTypesSchema,
					z.literal(false),
				])
				.default(ASTRO_CONFIG_DEFAULTS.markdown.syntaxHighlight),
			shikiConfig: z
				.object({
					langs: z
						.custom<ShikiLang>()
						.array()
						.transform((langs) => {
							for (const lang of langs) {
								// shiki 1.0 compat
								if (typeof lang === 'object') {
									// `id` renamed to `name` (always override)
									if ((lang as any).id) {
										lang.name = (lang as any).id;
									}
									// `grammar` flattened to lang itself
									if ((lang as any).grammar) {
										Object.assign(lang, (lang as any).grammar);
									}
								}
							}
							return langs;

Review comment (suggestion):
We need to add a default value. In line 316, you have an example of how we do it. 

```js
.default(ASTRO_CONFIG_DEFAULTS.markdown.syntaxHighlight)
```

Code after:
								{
									message: 'wildcards can only be placed at the beginning of the hostname',
								},
							)
							.optional(),
						port: z.string().optional(),
						pathname: z
							.string()
							.refine((val) => !val.includes('*') || val.endsWith('/*') || val.endsWith('/**'), {
								message: 'wildcards can only be placed at the end of a pathname',
							})
							.optional(),
					}),
				)
				.default([]),
			experimentalLayout: z.enum(['responsive', 'fixed', 'full-width', 'none']).optional(),
			experimentalObjectFit: z.string().optional(),
			experimentalObjectPosition: z.string().optional(),
			experimentalBreakpoints: z.array(z.number()).optional(),
		})
		.default(ASTRO_CONFIG_DEFAULTS.image),
	devToolbar: z
		.object({
			enabled: z.boolean().default(ASTRO_CONFIG_DEFAULTS.devToolbar.enabled),
		})
		.default(ASTRO_CONFIG_DEFAULTS.devToolbar),
	markdown: z
		.object({
			syntaxHighlight: z
				.union([
					z
						.object({
							type: highlighterTypesSchema,
							excludeLangs: z
								.array(z.string())
								.optional()
								.default(syntaxHighlightDefaults.excludeLangs),
						})
						.default(syntaxHighlightDefaults),
					highlighterTypesSchema,
					z.literal(false),
				])
				.default(ASTRO_CONFIG_DEFAULTS.markdown.syntaxHighlight),
			shikiConfig: z
				.object({
					langs: z
						.custom<ShikiLang>()
						.array()
						.transform((langs) => {
							for (const lang of langs) {
								// shiki 1.0 compat