Fix variable frontmatter error - handle both string and object formats for preview image fields #960
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Problem
The extension was throwing runtime errors when frontmatter fields used variable formats (union types), specifically when a field could be either a string or an object. This commonly occurs with Astro's content schema definitions:
Both of these frontmatter formats should be valid:
However, the extension was calling
.startsWith('http')directly on the field value without type checking, causing errors when the value was an object instead of a string.Solution
1. Main Fix in PagesParser.ts
Added proper type checking before calling string methods on frontmatter field values:
srcproperty: Extracts thesrcvalue2. Additional Fix in ContentType.ts
Fixed validation logic that was calling
.lengthon potentially non-string/non-array values:.lengthpropertyTesting
Created comprehensive tests covering all scenarios:
PagesParser scenarios:
cover: "image.jpg"✓cover: { src: "image.jpg", title: "title" }✓ContentType validation scenarios:
Result
The extension now gracefully handles variable frontmatter formats without throwing errors or showing error popups. Users can confidently use Astro-style union types and other variable schemas in their frontmatter without encountering runtime errors.
Fixes #958.
💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.