Skip to content

Commit cada10a

Browse files
authored
Add errors for unknown experimental keys (#7011)
1 parent 6b4fcde commit cada10a

File tree

6 files changed

+16
-12
lines changed

6 files changed

+16
-12
lines changed

.changeset/red-eggs-speak.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'astro': patch
3+
---
4+
5+
Throw an error when unknown experimental keys are present

packages/astro/src/core/config/schema.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -210,6 +210,17 @@ export const AstroConfigSchema = z.object({
210210
middleware: z.oboolean().optional().default(ASTRO_CONFIG_DEFAULTS.experimental.middleware),
211211
hybridOutput: z.boolean().optional().default(ASTRO_CONFIG_DEFAULTS.experimental.hybridOutput),
212212
})
213+
.passthrough()
214+
.refine(d => {
215+
const validKeys = Object.keys(ASTRO_CONFIG_DEFAULTS.experimental)
216+
const invalidKeys = Object.keys(d).filter(key => !validKeys.includes(key))
217+
if (invalidKeys.length > 0) return false
218+
return true
219+
}, d => {
220+
const validKeys = Object.keys(ASTRO_CONFIG_DEFAULTS.experimental)
221+
const invalidKeys = Object.keys(d).filter(key => !validKeys.includes(key))
222+
return { message: `Invalid experimental key: \`${invalidKeys.join(', ')}\`. \nMake sure the spelling is correct, and that your Astro version supports this experiment.\nSee https://docs.astro.build/en/reference/configuration-reference/#experimental-flags for more information.` };
223+
})
213224
.optional()
214225
.default({}),
215226
legacy: z.object({}).optional().default({}),

packages/astro/test/custom-elements.test.js

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,6 @@ describe('Custom Elements', () => {
88
before(async () => {
99
fixture = await loadFixture({
1010
root: './fixtures/custom-elements/',
11-
experimental: {
12-
integrations: true,
13-
},
1411
});
1512
await fixture.build();
1613
});

packages/astro/test/fixtures/custom-elements/astro.config.mjs

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,4 @@ import ceIntegration from '@test/custom-element-renderer';
33

44
export default defineConfig({
55
integrations: [ceIntegration()],
6-
experimental: {
7-
integrations: true
8-
}
96
})

packages/astro/test/ssr-prerender-404.test.js

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,6 @@ describe('SSR: prerender 404', () => {
1111
root: './fixtures/ssr-prerender-404/',
1212
output: 'server',
1313
adapter: testAdapter(),
14-
experimental: {
15-
prerender: true,
16-
},
1714
});
1815
await fixture.build();
1916
});

packages/astro/test/ssr-prerender.test.js

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,6 @@ describe('SSR: prerender', () => {
1212
root: './fixtures/ssr-prerender/',
1313
output: 'server',
1414
adapter: testAdapter(),
15-
experimental: {
16-
prerender: true,
17-
},
1815
});
1916
await fixture.build();
2017
});

0 commit comments

Comments
 (0)