Use case or problem
This is tangential to my issue, but currently I am making an Astro website that uses an Obsidian vault and its notes to build webpages. These notes are a mix of Markdown and MDX files, and for the latter, I use a third-party plugin to treat those .mdx files as Markdown files (where the plugin basically just registers the .mdx extension as a Markdown file via registerExtensions(['mdx'], 'markdown')). But I noticed that Bases do not read the YAML properties of those MDX files read like regular Markdown files. That does make sense, since Bases is likely designed to read the frontmatter of only Markdown files, and that should be the only case out-of-the-box. Though it seems like I’m unable to read those properties in the current Bases implementation.
But with the beginnings of the Bases API being made, it had me thinking that it would be neat to be able to have plugins be able to add their own computed properties or update existing ones in the entries that a Base reads. Formulas sort of fulfill this role already, but they are (currently, at least) limited to the already existing Properties of the notes a Base reads. Allowing plugins to add/update properties based on the note’s contents or even interacting with content outside of the read note (such as configuration files or API endpoints) would give Bases some added flexibility.
Proposed solution
I feel like an API similar to how Obsidian registers Markdown post-processors or (more recently) Base views would make the most sense. Something like:
registerBasesProcessor(processor: (entry: BaseEntry) => void)
where the entry already points towards the file it is referencing, and it would be possible to modify the properties that the entry holds before it’s presented to the UI.