refactor: pass file contents

This commit is contained in:
bholmesdev 2023-02-09 12:16:02 -05:00
parent e4d38c3498
commit e17e8735be
4 changed files with 9 additions and 9 deletions

View file

@ -980,7 +980,7 @@ export interface AstroConfig extends z.output<typeof AstroConfigSchema> {
export interface ContentEntryType {
extensions: string[];
getEntryInfo(params: { fileUrl: URL }): Promise<{
getEntryInfo(params: { fileUrl: URL; contents: string }): Promise<{
data: Record<string, unknown>;
/**
* Used for error hints to point to correct line and location

View file

@ -79,7 +79,10 @@ export function astroContentImportPlugin({
unvalidatedSlug: string,
rawData: string;
if (contentEntryType) {
const info = await contentEntryType.getEntryInfo({ fileUrl: pathToFileURL(fileId) });
const info = await contentEntryType.getEntryInfo({
fileUrl: pathToFileURL(fileId),
contents: rawContents,
});
body = info.body;
unvalidatedData = info.data;
unvalidatedSlug = info.slug;

View file

@ -1,15 +1,13 @@
import type { AstroIntegration } from 'astro';
import type { InlineConfig } from 'vite';
import _Markdoc from '@markdoc/markdoc';
import fs from 'node:fs';
import { parseFrontmatter } from './utils.js';
import { fileURLToPath } from 'node:url';
const contentEntryType = {
extensions: ['.mdoc'],
async getEntryInfo({ fileUrl }: { fileUrl: URL }) {
const rawContents = await fs.promises.readFile(fileUrl, 'utf-8');
const parsed = parseFrontmatter(rawContents, fileURLToPath(fileUrl));
async getEntryInfo({ fileUrl, contents }: { fileUrl: URL; contents: string }) {
const parsed = parseFrontmatter(contents, fileURLToPath(fileUrl));
return {
data: parsed.data,
body: parsed.content,

View file

@ -25,9 +25,8 @@ export type MdxOptions = Omit<typeof markdownConfigDefaults, 'remarkPlugins' | '
const contentEntryType = {
extensions: ['.mdx'],
async getEntryInfo({ fileUrl }: { fileUrl: URL }) {
const rawContents = await fs.readFile(fileUrl, 'utf-8');
const parsed = parseFrontmatter(rawContents, fileURLToPath(fileUrl));
async getEntryInfo({ fileUrl, contents }: { fileUrl: URL; contents: string }) {
const parsed = parseFrontmatter(contents, fileURLToPath(fileUrl));
return {
data: parsed.data,
body: parsed.content,