From c946f6de390e8958ee06128b7952ddfa44678d7f Mon Sep 17 00:00:00 2001 From: Matt Kane Date: Tue, 2 Jul 2024 12:36:47 +0100 Subject: [PATCH 01/30] feat: add glob loader --- packages/astro/src/content/glob.ts | 126 ++++++++++++++++++ packages/astro/src/content/runtime.ts | 2 +- packages/astro/templates/content/module.mjs | 2 +- .../content-outside-src/columbia.md | 15 +++ .../content-outside-src/endeavour.md | 14 ++ .../content-outside-src/enterprise.md | 14 ++ .../content-outside-src/index.md | 15 +++ .../content/_data/glob-content/columbia.md | 15 +++ .../content/_data/glob-content/endeavour.md | 14 ++ .../content/_data/glob-content/enterprise.md | 14 ++ .../src/content/_data/glob-content/index.md | 15 +++ .../src/content/_data/glob-data/index.json | 3 + .../src/content/_data/glob-data/one.json | 3 + .../src/content/_data/glob-data/three.json | 3 + .../src/content/_data/glob-data/two.json | 3 + .../content-layer/src/content/config.ts | 14 +- .../content-layer/src/loaders/post-loader.ts | 2 +- .../src/pages/spacecraft/[slug].astro | 26 ++++ packages/astro/types/content.d.ts | 9 ++ 19 files changed, 304 insertions(+), 5 deletions(-) create mode 100644 packages/astro/src/content/glob.ts create mode 100644 packages/astro/test/fixtures/content-layer/content-outside-src/columbia.md create mode 100644 packages/astro/test/fixtures/content-layer/content-outside-src/endeavour.md create mode 100644 packages/astro/test/fixtures/content-layer/content-outside-src/enterprise.md create mode 100644 packages/astro/test/fixtures/content-layer/content-outside-src/index.md create mode 100644 packages/astro/test/fixtures/content-layer/src/content/_data/glob-content/columbia.md create mode 100644 packages/astro/test/fixtures/content-layer/src/content/_data/glob-content/endeavour.md create mode 100644 packages/astro/test/fixtures/content-layer/src/content/_data/glob-content/enterprise.md create mode 100644 packages/astro/test/fixtures/content-layer/src/content/_data/glob-content/index.md create mode 100644 packages/astro/test/fixtures/content-layer/src/content/_data/glob-data/index.json create mode 100644 packages/astro/test/fixtures/content-layer/src/content/_data/glob-data/one.json create mode 100644 packages/astro/test/fixtures/content-layer/src/content/_data/glob-data/three.json create mode 100644 packages/astro/test/fixtures/content-layer/src/content/_data/glob-data/two.json create mode 100644 packages/astro/test/fixtures/content-layer/src/pages/spacecraft/[slug].astro diff --git a/packages/astro/src/content/glob.ts b/packages/astro/src/content/glob.ts new file mode 100644 index 000000000000..655fbd4671ff --- /dev/null +++ b/packages/astro/src/content/glob.ts @@ -0,0 +1,126 @@ +import { fileURLToPath, pathToFileURL } from 'url'; +import type { Loader, LoaderContext } from './loaders.js'; +import { promises as fs } from 'fs'; +import fastGlob from 'fast-glob'; +import pLimit from 'p-limit'; +import { getContentEntryIdAndSlug, getEntryConfigByExtMap } from './utils.js'; +import type { ContentEntryType, DataEntryType } from '../@types/astro.js'; + +export interface GlobOptions { + /** The glob pattern to match files, relative to the base directory */ + pattern: string; + /** The base directory to resolve the glob pattern from. Relative to the site root. Defaults to the content directory */ + base?: string; +} + +function generateSlug(entry: URL, base: URL) { + const { slug } = getContentEntryIdAndSlug({ + entry, + contentDir: base, + collection: '', + }); + return slug.startsWith('/') ? slug : `/${slug}`; +} + +/** + * Loads multiple entries, using a glob pattern to match files. + * @param pattern A glob pattern to match files, relative to the content directory. + */ +export function glob(patternOrOptions: string | GlobOptions): Loader { + const globOptions: GlobOptions = + typeof patternOrOptions === 'string' + ? { + pattern: patternOrOptions, + } + : patternOrOptions; + + if (globOptions.pattern.startsWith('../')) { + throw new Error( + 'Glob patterns cannot start with `../`. Set the `base` option to a parent directory instead.' + ); + } + if (globOptions.pattern.startsWith('/')) { + throw new Error( + 'Glob patterns cannot start with `/`. Set the `base` option to a parent directory or use a relative path instead.' + ); + } + async function syncData( + id: string, + fileUrl: URL, + { logger, parseData, store }: LoaderContext, + entryType?: ContentEntryType | DataEntryType + ) { + if (!entryType) { + logger.warn(`No entry type found for ${fileUrl.pathname}`); + return; + } + const info = await entryType.getEntryInfo({ + contents: await fs.readFile(fileUrl, 'utf-8'), + fileUrl, + }); + + const resolvedId = (info as any).id || (info as any).slug || id; + console.log('setting', resolvedId, info); + store.set(resolvedId, { ...info, id: resolvedId }); + } + + return { + name: 'glob-loader', + load: async (options) => { + const { settings, logger, watcher } = options; + + const entryConfigByExt = getEntryConfigByExtMap([ + ...settings.contentEntryTypes, + ...settings.dataEntryTypes, + ]); + + const contentDir = new URL('./content/', settings.config.srcDir); + + const baseDir = globOptions.base + ? new URL(globOptions.base, settings.config.root) + : contentDir; + + if (!baseDir.pathname.endsWith('/')) { + baseDir.pathname = `${baseDir.pathname}/`; + } + + const files = await fastGlob(globOptions.pattern, { + cwd: fileURLToPath(baseDir), + }); + + function configForFile(file: string) { + const ext = file.split('.').at(-1); + if (!ext) { + logger.warn(`No extension found for ${file}`); + return; + } + return entryConfigByExt.get(`.${ext}`); + } + + const limit = pLimit(10); + options.store.clear(); + await Promise.all( + files.map((file) => + limit(async () => { + const entryType = configForFile(file); + const fileURL = new URL(file, baseDir); + const slug = generateSlug(fileURL, baseDir); + await syncData(slug, fileURL, options, entryType); + }) + ) + ); + + watcher?.on('change', async (changedPath) => { + const entryType = configForFile(changedPath); + const changedFile = pathToFileURL(changedPath); + const slug = generateSlug(changedFile, baseDir); + await syncData(slug, changedFile, options, entryType); + }); + + watcher?.on('unlink', async (deletedPath) => { + const slug = generateSlug(pathToFileURL(deletedPath), baseDir); + options.store.delete(slug); + }); + }, + }; +} diff --git a/packages/astro/src/content/runtime.ts b/packages/astro/src/content/runtime.ts index a22bd291947e..d9eda865f77e 100644 --- a/packages/astro/src/content/runtime.ts +++ b/packages/astro/src/content/runtime.ts @@ -16,7 +16,7 @@ import { import type { ContentLookupMap } from './utils.js'; import { globalDataStore } from './data-store.js'; export { file } from './file.js'; - +export { glob } from './glob.js'; type LazyImport = () => Promise; type GlobResult = Record; type CollectionToEntryMap = Record; diff --git a/packages/astro/templates/content/module.mjs b/packages/astro/templates/content/module.mjs index 92ae22b31119..0e803d512bad 100644 --- a/packages/astro/templates/content/module.mjs +++ b/packages/astro/templates/content/module.mjs @@ -9,7 +9,7 @@ import { createReference, } from 'astro/content/runtime'; -export { defineCollection, file } from 'astro/content/runtime'; +export { defineCollection, file, glob } from 'astro/content/runtime'; export { z } from 'astro/zod'; const contentDir = '@@CONTENT_DIR@@'; diff --git a/packages/astro/test/fixtures/content-layer/content-outside-src/columbia.md b/packages/astro/test/fixtures/content-layer/content-outside-src/columbia.md new file mode 100644 index 000000000000..4971108e36ed --- /dev/null +++ b/packages/astro/test/fixtures/content-layer/content-outside-src/columbia.md @@ -0,0 +1,15 @@ +--- +title: Columbia +description: 'Learn about the Columbia NASA space shuttle.' +publishedDate: 'Sat May 21 2022 00:00:00 GMT-0400 (Eastern Daylight Time)' +tags: [space, 90s] +--- + +**Source:** [Wikipedia](https://en.wikipedia.org/wiki/Space_Shuttle_Endeavour) + +Space Shuttle Endeavour (Orbiter Vehicle Designation: OV-105) is a retired orbiter from NASA's Space Shuttle program and the fifth and final operational Shuttle built. It embarked on its first mission, STS-49, in May 1992 and its 25th and final mission, STS-134, in May 2011. STS-134 was expected to be the final mission of the Space Shuttle program, but with the authorization of STS-135, Atlantis became the last shuttle to fly. + +The United States Congress approved the construction of Endeavour in 1987 to replace the Space Shuttle Challenger, which was destroyed in 1986. + +NASA chose, on cost grounds, to build much of Endeavour from spare parts rather than refitting the Space Shuttle Enterprise, and used structural spares built during the construction of Discovery and Atlantis in its assembly. +Space Shuttle Endeavour (Orbiter Vehicle Designation: OV-105) is a retired orbiter from NASA's Space Shuttle program and the fifth and final operational Shuttle built. It embarked on its first mission, STS-49, in May 1992 and its 25th and final mission, STS-134, in May 2011. STS-134 was expected to be the final mission of the Space Shuttle program, but with the authorization of STS-135, Atlantis became the last shuttle to fly. diff --git a/packages/astro/test/fixtures/content-layer/content-outside-src/endeavour.md b/packages/astro/test/fixtures/content-layer/content-outside-src/endeavour.md new file mode 100644 index 000000000000..51d6e8c42178 --- /dev/null +++ b/packages/astro/test/fixtures/content-layer/content-outside-src/endeavour.md @@ -0,0 +1,14 @@ +--- +title: Endeavour +description: 'Learn about the Endeavour NASA space shuttle.' +publishedDate: 'Sun Jul 11 2021 00:00:00 GMT-0400 (Eastern Daylight Time)' +tags: [space, 90s] +--- + +**Source:** [Wikipedia](https://en.wikipedia.org/wiki/Space_Shuttle_Endeavour) + +Space Shuttle Endeavour (Orbiter Vehicle Designation: OV-105) is a retired orbiter from NASA's Space Shuttle program and the fifth and final operational Shuttle built. It embarked on its first mission, STS-49, in May 1992 and its 25th and final mission, STS-134, in May 2011. STS-134 was expected to be the final mission of the Space Shuttle program, but with the authorization of STS-135, Atlantis became the last shuttle to fly. + +The United States Congress approved the construction of Endeavour in 1987 to replace the Space Shuttle Challenger, which was destroyed in 1986. + +NASA chose, on cost grounds, to build much of Endeavour from spare parts rather than refitting the Space Shuttle Enterprise, and used structural spares built during the construction of Discovery and Atlantis in its assembly. diff --git a/packages/astro/test/fixtures/content-layer/content-outside-src/enterprise.md b/packages/astro/test/fixtures/content-layer/content-outside-src/enterprise.md new file mode 100644 index 000000000000..3131e6d5df3a --- /dev/null +++ b/packages/astro/test/fixtures/content-layer/content-outside-src/enterprise.md @@ -0,0 +1,14 @@ +--- +title: 'Enterprise' +description: 'Learn about the Enterprise NASA space shuttle.' +publishedDate: 'Tue Jun 08 2021 00:00:00 GMT-0400 (Eastern Daylight Time)' +tags: [space, 70s] +--- + +**Source:** [Wikipedia](https://en.wikipedia.org/wiki/Space_Shuttle_Enterprise) + +Space Shuttle Enterprise (Orbiter Vehicle Designation: OV-101) was the first orbiter of the Space Shuttle system. Rolled out on September 17, 1976, it was built for NASA as part of the Space Shuttle program to perform atmospheric test flights after being launched from a modified Boeing 747. It was constructed without engines or a functional heat shield. As a result, it was not capable of spaceflight. + +Originally, Enterprise had been intended to be refitted for orbital flight to become the second space-rated orbiter in service. However, during the construction of Space Shuttle Columbia, details of the final design changed, making it simpler and less costly to build Challenger around a body frame that had been built as a test article. Similarly, Enterprise was considered for refit to replace Challenger after the latter was destroyed, but Endeavour was built from structural spares instead. + +Enterprise was restored and placed on display in 2003 at the Smithsonian's new Steven F. Udvar-Hazy Center in Virginia. Following the retirement of the Space Shuttle fleet, Discovery replaced Enterprise at the Udvar-Hazy Center, and Enterprise was transferred to the Intrepid Sea, Air & Space Museum in New York City, where it has been on display since July 2012. diff --git a/packages/astro/test/fixtures/content-layer/content-outside-src/index.md b/packages/astro/test/fixtures/content-layer/content-outside-src/index.md new file mode 100644 index 000000000000..4971108e36ed --- /dev/null +++ b/packages/astro/test/fixtures/content-layer/content-outside-src/index.md @@ -0,0 +1,15 @@ +--- +title: Columbia +description: 'Learn about the Columbia NASA space shuttle.' +publishedDate: 'Sat May 21 2022 00:00:00 GMT-0400 (Eastern Daylight Time)' +tags: [space, 90s] +--- + +**Source:** [Wikipedia](https://en.wikipedia.org/wiki/Space_Shuttle_Endeavour) + +Space Shuttle Endeavour (Orbiter Vehicle Designation: OV-105) is a retired orbiter from NASA's Space Shuttle program and the fifth and final operational Shuttle built. It embarked on its first mission, STS-49, in May 1992 and its 25th and final mission, STS-134, in May 2011. STS-134 was expected to be the final mission of the Space Shuttle program, but with the authorization of STS-135, Atlantis became the last shuttle to fly. + +The United States Congress approved the construction of Endeavour in 1987 to replace the Space Shuttle Challenger, which was destroyed in 1986. + +NASA chose, on cost grounds, to build much of Endeavour from spare parts rather than refitting the Space Shuttle Enterprise, and used structural spares built during the construction of Discovery and Atlantis in its assembly. +Space Shuttle Endeavour (Orbiter Vehicle Designation: OV-105) is a retired orbiter from NASA's Space Shuttle program and the fifth and final operational Shuttle built. It embarked on its first mission, STS-49, in May 1992 and its 25th and final mission, STS-134, in May 2011. STS-134 was expected to be the final mission of the Space Shuttle program, but with the authorization of STS-135, Atlantis became the last shuttle to fly. diff --git a/packages/astro/test/fixtures/content-layer/src/content/_data/glob-content/columbia.md b/packages/astro/test/fixtures/content-layer/src/content/_data/glob-content/columbia.md new file mode 100644 index 000000000000..4971108e36ed --- /dev/null +++ b/packages/astro/test/fixtures/content-layer/src/content/_data/glob-content/columbia.md @@ -0,0 +1,15 @@ +--- +title: Columbia +description: 'Learn about the Columbia NASA space shuttle.' +publishedDate: 'Sat May 21 2022 00:00:00 GMT-0400 (Eastern Daylight Time)' +tags: [space, 90s] +--- + +**Source:** [Wikipedia](https://en.wikipedia.org/wiki/Space_Shuttle_Endeavour) + +Space Shuttle Endeavour (Orbiter Vehicle Designation: OV-105) is a retired orbiter from NASA's Space Shuttle program and the fifth and final operational Shuttle built. It embarked on its first mission, STS-49, in May 1992 and its 25th and final mission, STS-134, in May 2011. STS-134 was expected to be the final mission of the Space Shuttle program, but with the authorization of STS-135, Atlantis became the last shuttle to fly. + +The United States Congress approved the construction of Endeavour in 1987 to replace the Space Shuttle Challenger, which was destroyed in 1986. + +NASA chose, on cost grounds, to build much of Endeavour from spare parts rather than refitting the Space Shuttle Enterprise, and used structural spares built during the construction of Discovery and Atlantis in its assembly. +Space Shuttle Endeavour (Orbiter Vehicle Designation: OV-105) is a retired orbiter from NASA's Space Shuttle program and the fifth and final operational Shuttle built. It embarked on its first mission, STS-49, in May 1992 and its 25th and final mission, STS-134, in May 2011. STS-134 was expected to be the final mission of the Space Shuttle program, but with the authorization of STS-135, Atlantis became the last shuttle to fly. diff --git a/packages/astro/test/fixtures/content-layer/src/content/_data/glob-content/endeavour.md b/packages/astro/test/fixtures/content-layer/src/content/_data/glob-content/endeavour.md new file mode 100644 index 000000000000..51d6e8c42178 --- /dev/null +++ b/packages/astro/test/fixtures/content-layer/src/content/_data/glob-content/endeavour.md @@ -0,0 +1,14 @@ +--- +title: Endeavour +description: 'Learn about the Endeavour NASA space shuttle.' +publishedDate: 'Sun Jul 11 2021 00:00:00 GMT-0400 (Eastern Daylight Time)' +tags: [space, 90s] +--- + +**Source:** [Wikipedia](https://en.wikipedia.org/wiki/Space_Shuttle_Endeavour) + +Space Shuttle Endeavour (Orbiter Vehicle Designation: OV-105) is a retired orbiter from NASA's Space Shuttle program and the fifth and final operational Shuttle built. It embarked on its first mission, STS-49, in May 1992 and its 25th and final mission, STS-134, in May 2011. STS-134 was expected to be the final mission of the Space Shuttle program, but with the authorization of STS-135, Atlantis became the last shuttle to fly. + +The United States Congress approved the construction of Endeavour in 1987 to replace the Space Shuttle Challenger, which was destroyed in 1986. + +NASA chose, on cost grounds, to build much of Endeavour from spare parts rather than refitting the Space Shuttle Enterprise, and used structural spares built during the construction of Discovery and Atlantis in its assembly. diff --git a/packages/astro/test/fixtures/content-layer/src/content/_data/glob-content/enterprise.md b/packages/astro/test/fixtures/content-layer/src/content/_data/glob-content/enterprise.md new file mode 100644 index 000000000000..3131e6d5df3a --- /dev/null +++ b/packages/astro/test/fixtures/content-layer/src/content/_data/glob-content/enterprise.md @@ -0,0 +1,14 @@ +--- +title: 'Enterprise' +description: 'Learn about the Enterprise NASA space shuttle.' +publishedDate: 'Tue Jun 08 2021 00:00:00 GMT-0400 (Eastern Daylight Time)' +tags: [space, 70s] +--- + +**Source:** [Wikipedia](https://en.wikipedia.org/wiki/Space_Shuttle_Enterprise) + +Space Shuttle Enterprise (Orbiter Vehicle Designation: OV-101) was the first orbiter of the Space Shuttle system. Rolled out on September 17, 1976, it was built for NASA as part of the Space Shuttle program to perform atmospheric test flights after being launched from a modified Boeing 747. It was constructed without engines or a functional heat shield. As a result, it was not capable of spaceflight. + +Originally, Enterprise had been intended to be refitted for orbital flight to become the second space-rated orbiter in service. However, during the construction of Space Shuttle Columbia, details of the final design changed, making it simpler and less costly to build Challenger around a body frame that had been built as a test article. Similarly, Enterprise was considered for refit to replace Challenger after the latter was destroyed, but Endeavour was built from structural spares instead. + +Enterprise was restored and placed on display in 2003 at the Smithsonian's new Steven F. Udvar-Hazy Center in Virginia. Following the retirement of the Space Shuttle fleet, Discovery replaced Enterprise at the Udvar-Hazy Center, and Enterprise was transferred to the Intrepid Sea, Air & Space Museum in New York City, where it has been on display since July 2012. diff --git a/packages/astro/test/fixtures/content-layer/src/content/_data/glob-content/index.md b/packages/astro/test/fixtures/content-layer/src/content/_data/glob-content/index.md new file mode 100644 index 000000000000..4971108e36ed --- /dev/null +++ b/packages/astro/test/fixtures/content-layer/src/content/_data/glob-content/index.md @@ -0,0 +1,15 @@ +--- +title: Columbia +description: 'Learn about the Columbia NASA space shuttle.' +publishedDate: 'Sat May 21 2022 00:00:00 GMT-0400 (Eastern Daylight Time)' +tags: [space, 90s] +--- + +**Source:** [Wikipedia](https://en.wikipedia.org/wiki/Space_Shuttle_Endeavour) + +Space Shuttle Endeavour (Orbiter Vehicle Designation: OV-105) is a retired orbiter from NASA's Space Shuttle program and the fifth and final operational Shuttle built. It embarked on its first mission, STS-49, in May 1992 and its 25th and final mission, STS-134, in May 2011. STS-134 was expected to be the final mission of the Space Shuttle program, but with the authorization of STS-135, Atlantis became the last shuttle to fly. + +The United States Congress approved the construction of Endeavour in 1987 to replace the Space Shuttle Challenger, which was destroyed in 1986. + +NASA chose, on cost grounds, to build much of Endeavour from spare parts rather than refitting the Space Shuttle Enterprise, and used structural spares built during the construction of Discovery and Atlantis in its assembly. +Space Shuttle Endeavour (Orbiter Vehicle Designation: OV-105) is a retired orbiter from NASA's Space Shuttle program and the fifth and final operational Shuttle built. It embarked on its first mission, STS-49, in May 1992 and its 25th and final mission, STS-134, in May 2011. STS-134 was expected to be the final mission of the Space Shuttle program, but with the authorization of STS-135, Atlantis became the last shuttle to fly. diff --git a/packages/astro/test/fixtures/content-layer/src/content/_data/glob-data/index.json b/packages/astro/test/fixtures/content-layer/src/content/_data/glob-data/index.json new file mode 100644 index 000000000000..efc60137d68e --- /dev/null +++ b/packages/astro/test/fixtures/content-layer/src/content/_data/glob-data/index.json @@ -0,0 +1,3 @@ +{ + "title": "One" +} diff --git a/packages/astro/test/fixtures/content-layer/src/content/_data/glob-data/one.json b/packages/astro/test/fixtures/content-layer/src/content/_data/glob-data/one.json new file mode 100644 index 000000000000..efc60137d68e --- /dev/null +++ b/packages/astro/test/fixtures/content-layer/src/content/_data/glob-data/one.json @@ -0,0 +1,3 @@ +{ + "title": "One" +} diff --git a/packages/astro/test/fixtures/content-layer/src/content/_data/glob-data/three.json b/packages/astro/test/fixtures/content-layer/src/content/_data/glob-data/three.json new file mode 100644 index 000000000000..7d028e937a71 --- /dev/null +++ b/packages/astro/test/fixtures/content-layer/src/content/_data/glob-data/three.json @@ -0,0 +1,3 @@ +{ + "title": "Three" +} diff --git a/packages/astro/test/fixtures/content-layer/src/content/_data/glob-data/two.json b/packages/astro/test/fixtures/content-layer/src/content/_data/glob-data/two.json new file mode 100644 index 000000000000..1a8215509b0a --- /dev/null +++ b/packages/astro/test/fixtures/content-layer/src/content/_data/glob-data/two.json @@ -0,0 +1,3 @@ +{ + "title": "Two" +} diff --git a/packages/astro/test/fixtures/content-layer/src/content/config.ts b/packages/astro/test/fixtures/content-layer/src/content/config.ts index 78b6858111f5..e1a42a508e9e 100644 --- a/packages/astro/test/fixtures/content-layer/src/content/config.ts +++ b/packages/astro/test/fixtures/content-layer/src/content/config.ts @@ -1,4 +1,4 @@ -import { defineCollection, file, z } from 'astro:content'; +import { defineCollection, file, glob, z } from 'astro:content'; import { loader } from '../loaders/post-loader.js'; const blog = defineCollection({ @@ -66,4 +66,14 @@ const cats = defineCollection({ }), }) -export const collections = { blog, dogs, cats }; +const spacecraft = defineCollection({ + type: "experimental_data", + loader: glob({ pattern: "*", base: "content-outside-src" }) +}) + +const numbers = defineCollection({ + type: "experimental_data", + loader: glob("_data/glob-data/*"), +}) + +export const collections = { blog, dogs, cats, numbers, spacecraft }; diff --git a/packages/astro/test/fixtures/content-layer/src/loaders/post-loader.ts b/packages/astro/test/fixtures/content-layer/src/loaders/post-loader.ts index 38e4e28b5816..d3f967976c3e 100644 --- a/packages/astro/test/fixtures/content-layer/src/loaders/post-loader.ts +++ b/packages/astro/test/fixtures/content-layer/src/loaders/post-loader.ts @@ -25,7 +25,7 @@ export function loader(config:PostLoaderConfig): Loader { store.clear(); - for (const post of posts) { + for (const post of posts.slice(0, 10)) { store.set(post.id, post); } meta.set('lastSynced', String(Date.now())); diff --git a/packages/astro/test/fixtures/content-layer/src/pages/spacecraft/[slug].astro b/packages/astro/test/fixtures/content-layer/src/pages/spacecraft/[slug].astro new file mode 100644 index 000000000000..10262d457076 --- /dev/null +++ b/packages/astro/test/fixtures/content-layer/src/pages/spacecraft/[slug].astro @@ -0,0 +1,26 @@ +--- +import type { GetStaticPaths } from "astro"; +import { getCollection } from "astro:content" +export const getStaticPaths = (async () => { + const collection = await getCollection("spacecraft"); + if(!collection) return [] + return collection.map((craft) => ({ + params: { + slug: craft.id + }, + props: { + craft: craft.data + } + })); +}) satisfies GetStaticPaths; + + + + +const { craft } = Astro.props as any + +--- + +

{craft.data.title}

+ + diff --git a/packages/astro/types/content.d.ts b/packages/astro/types/content.d.ts index 2c5ff792936f..b3cb744859b8 100644 --- a/packages/astro/types/content.d.ts +++ b/packages/astro/types/content.d.ts @@ -69,6 +69,15 @@ declare module 'astro:content' { export function file(filePath: string): Loader; + export interface GlobOptions { + /** The glob pattern to match files, relative to the base directory */ + pattern: string; + /** The base directory to resolve the glob pattern from. Relative to the site root. Defaults to the content directory */ + base?: string; + } + + export function glob(patternOrOptions: string | GlobOptions): Loader; + type BaseSchemaWithoutEffects = | import('astro/zod').AnyZodObject | import('astro/zod').ZodUnion<[BaseSchemaWithoutEffects, ...BaseSchemaWithoutEffects[]]> From 28e2a5af94aa1d29a6c4950d8c2445d0550c82cc Mon Sep 17 00:00:00 2001 From: Matt Kane Date: Tue, 2 Jul 2024 16:57:59 +0100 Subject: [PATCH 02/30] Enable watching and fix paths --- packages/astro/package.json | 2 + packages/astro/src/@types/astro.ts | 2 +- packages/astro/src/content/file.ts | 3 +- packages/astro/src/content/glob.ts | 47 ++++++++++-------- packages/astro/src/content/loaders.ts | 3 ++ .../columbia-copy.md} | 0 .../content-layer/src/content/config.ts | 4 +- .../src/{content/_data => data}/dogs.json | 0 .../glob-content/columbia.md} | 0 .../_data => data}/glob-content/endeavour.md | 0 .../_data => data}/glob-content/enterprise.md | 0 .../src/data/glob-content/index.md | 15 ++++++ .../_data => data}/glob-data/index.json | 0 .../_data => data}/glob-data/one.json | 0 .../_data => data}/glob-data/three.json | 0 .../_data => data}/glob-data/two.json | 0 packages/astro/types/content.d.ts | 2 +- pnpm-lock.yaml | 48 +++++++++++++++++-- 18 files changed, 98 insertions(+), 28 deletions(-) rename packages/astro/test/fixtures/content-layer/{src/content/_data/glob-content/columbia.md => content-outside-src/columbia-copy.md} (100%) rename packages/astro/test/fixtures/content-layer/src/{content/_data => data}/dogs.json (100%) rename packages/astro/test/fixtures/content-layer/src/{content/_data/glob-content/index.md => data/glob-content/columbia.md} (100%) rename packages/astro/test/fixtures/content-layer/src/{content/_data => data}/glob-content/endeavour.md (100%) rename packages/astro/test/fixtures/content-layer/src/{content/_data => data}/glob-content/enterprise.md (100%) create mode 100644 packages/astro/test/fixtures/content-layer/src/data/glob-content/index.md rename packages/astro/test/fixtures/content-layer/src/{content/_data => data}/glob-data/index.json (100%) rename packages/astro/test/fixtures/content-layer/src/{content/_data => data}/glob-data/one.json (100%) rename packages/astro/test/fixtures/content-layer/src/{content/_data => data}/glob-data/three.json (100%) rename packages/astro/test/fixtures/content-layer/src/{content/_data => data}/glob-data/two.json (100%) diff --git a/packages/astro/package.json b/packages/astro/package.json index 8bfde658e7de..3864b2225e71 100644 --- a/packages/astro/package.json +++ b/packages/astro/package.json @@ -165,6 +165,7 @@ "js-yaml": "^4.1.0", "kleur": "^4.1.5", "magic-string": "^0.30.10", + "micromatch": "^4.0.7", "mrmime": "^2.0.0", "ora": "^8.0.1", "p-limit": "^5.0.0", @@ -208,6 +209,7 @@ "@types/html-escaper": "^3.0.2", "@types/http-cache-semantics": "^4.0.4", "@types/js-yaml": "^4.0.9", + "@types/micromatch": "^4.0.9", "@types/probe-image-size": "^7.2.4", "@types/prompts": "^2.4.9", "@types/semver": "^7.5.8", diff --git a/packages/astro/src/@types/astro.ts b/packages/astro/src/@types/astro.ts index 3668aa9de33f..d8ba590297ee 100644 --- a/packages/astro/src/@types/astro.ts +++ b/packages/astro/src/@types/astro.ts @@ -46,7 +46,7 @@ import type { TransitionBeforePreparationEvent, TransitionBeforeSwapEvent, } from '../transitions/events.js'; -import type { DeepPartial, OmitIndexSignature, Simplify, WithRequired } from '../type-utils.js'; +import type { DeepPartial, OmitIndexSignature, Simplify } from '../type-utils.js'; import type { SUPPORTED_MARKDOWN_FILE_EXTENSIONS } from './../core/constants.js'; export type { AstroIntegrationLogger, ToolbarServerHelpers }; diff --git a/packages/astro/src/content/file.ts b/packages/astro/src/content/file.ts index 091f1e5ea4b3..78db5baecc5a 100644 --- a/packages/astro/src/content/file.ts +++ b/packages/astro/src/content/file.ts @@ -57,9 +57,8 @@ export function file(fileName: string): Loader { name: 'file-loader', load: async (options) => { const { settings, logger, watcher } = options; - const contentDir = new URL('./content/', settings.config.srcDir); logger.debug(`Loading data from ${fileName}`); - const url = new URL(fileName, contentDir); + const url = new URL(fileName, settings.config.root); if (!existsSync(url)) { logger.error(`File not found: ${fileName}`); return; diff --git a/packages/astro/src/content/glob.ts b/packages/astro/src/content/glob.ts index 655fbd4671ff..5f17b4c76e31 100644 --- a/packages/astro/src/content/glob.ts +++ b/packages/astro/src/content/glob.ts @@ -5,15 +5,17 @@ import fastGlob from 'fast-glob'; import pLimit from 'p-limit'; import { getContentEntryIdAndSlug, getEntryConfigByExtMap } from './utils.js'; import type { ContentEntryType, DataEntryType } from '../@types/astro.js'; +import micromatch from 'micromatch'; +import { relative } from 'path/posix'; export interface GlobOptions { /** The glob pattern to match files, relative to the base directory */ pattern: string; - /** The base directory to resolve the glob pattern from. Relative to the site root. Defaults to the content directory */ + /** The base directory to resolve the glob pattern from, relative to the root directory. Defaults to `.` */ base?: string; } -function generateSlug(entry: URL, base: URL) { +function generateSlugDefault(entry: URL, base: URL) { const { slug } = getContentEntryIdAndSlug({ entry, contentDir: base, @@ -26,14 +28,7 @@ function generateSlug(entry: URL, base: URL) { * Loads multiple entries, using a glob pattern to match files. * @param pattern A glob pattern to match files, relative to the content directory. */ -export function glob(patternOrOptions: string | GlobOptions): Loader { - const globOptions: GlobOptions = - typeof patternOrOptions === 'string' - ? { - pattern: patternOrOptions, - } - : patternOrOptions; - +export function glob(globOptions: GlobOptions): Loader { if (globOptions.pattern.startsWith('../')) { throw new Error( 'Glob patterns cannot start with `../`. Set the `base` option to a parent directory instead.' @@ -60,7 +55,6 @@ export function glob(patternOrOptions: string | GlobOptions): Loader { }); const resolvedId = (info as any).id || (info as any).slug || id; - console.log('setting', resolvedId, info); store.set(resolvedId, { ...info, id: resolvedId }); } @@ -74,11 +68,9 @@ export function glob(patternOrOptions: string | GlobOptions): Loader { ...settings.dataEntryTypes, ]); - const contentDir = new URL('./content/', settings.config.srcDir); - const baseDir = globOptions.base ? new URL(globOptions.base, settings.config.root) - : contentDir; + : settings.config.root; if (!baseDir.pathname.endsWith('/')) { baseDir.pathname = `${baseDir.pathname}/`; @@ -104,21 +96,38 @@ export function glob(patternOrOptions: string | GlobOptions): Loader { limit(async () => { const entryType = configForFile(file); const fileURL = new URL(file, baseDir); - const slug = generateSlug(fileURL, baseDir); + const slug = generateSlugDefault(fileURL, baseDir); await syncData(slug, fileURL, options, entryType); }) ) ); - watcher?.on('change', async (changedPath) => { + const matcher: RegExp = micromatch.makeRe(globOptions.pattern); + + const matchesGlob = (entry: string) => !entry.startsWith('../') && matcher.test(entry); + + const basePath = fileURLToPath(baseDir); + + async function onChange(changedPath: string) { + const entry = relative(basePath, changedPath); + if (!matchesGlob(entry)) { + return; + } const entryType = configForFile(changedPath); const changedFile = pathToFileURL(changedPath); - const slug = generateSlug(changedFile, baseDir); + const slug = generateSlugDefault(changedFile, baseDir); await syncData(slug, changedFile, options, entryType); - }); + } + watcher?.on('change', onChange); + + watcher?.on('add', onChange); watcher?.on('unlink', async (deletedPath) => { - const slug = generateSlug(pathToFileURL(deletedPath), baseDir); + const entry = relative(basePath, deletedPath); + if (!matchesGlob(entry)) { + return; + } + const slug = generateSlugDefault(pathToFileURL(deletedPath), baseDir); options.store.delete(slug); }); }, diff --git a/packages/astro/src/content/loaders.ts b/packages/astro/src/content/loaders.ts index f2cfee3962a5..f2a233b3e17b 100644 --- a/packages/astro/src/content/loaders.ts +++ b/packages/astro/src/content/loaders.ts @@ -67,6 +67,9 @@ export async function syncContentLayer({ store, watcher, }: SyncContentLayerOptions) { + // The default max listeners is 10, which can be exceeded when using a lot of loaders + watcher?.setMaxListeners(50); + const logger = globalLogger.forkIntegrationLogger('content'); logger.info('Syncing content'); if (!store) { diff --git a/packages/astro/test/fixtures/content-layer/src/content/_data/glob-content/columbia.md b/packages/astro/test/fixtures/content-layer/content-outside-src/columbia-copy.md similarity index 100% rename from packages/astro/test/fixtures/content-layer/src/content/_data/glob-content/columbia.md rename to packages/astro/test/fixtures/content-layer/content-outside-src/columbia-copy.md diff --git a/packages/astro/test/fixtures/content-layer/src/content/config.ts b/packages/astro/test/fixtures/content-layer/src/content/config.ts index e1a42a508e9e..60832b5f5637 100644 --- a/packages/astro/test/fixtures/content-layer/src/content/config.ts +++ b/packages/astro/test/fixtures/content-layer/src/content/config.ts @@ -8,7 +8,7 @@ const blog = defineCollection({ const dogs = defineCollection({ type: "experimental_data", - loader: file("_data/dogs.json"), + loader: file("src/data/dogs.json"), schema: z.object({ breed: z.string(), id: z.string(), @@ -73,7 +73,7 @@ const spacecraft = defineCollection({ const numbers = defineCollection({ type: "experimental_data", - loader: glob("_data/glob-data/*"), + loader: glob({pattern: "src/data/glob-data/*", base: "."}), }) export const collections = { blog, dogs, cats, numbers, spacecraft }; diff --git a/packages/astro/test/fixtures/content-layer/src/content/_data/dogs.json b/packages/astro/test/fixtures/content-layer/src/data/dogs.json similarity index 100% rename from packages/astro/test/fixtures/content-layer/src/content/_data/dogs.json rename to packages/astro/test/fixtures/content-layer/src/data/dogs.json diff --git a/packages/astro/test/fixtures/content-layer/src/content/_data/glob-content/index.md b/packages/astro/test/fixtures/content-layer/src/data/glob-content/columbia.md similarity index 100% rename from packages/astro/test/fixtures/content-layer/src/content/_data/glob-content/index.md rename to packages/astro/test/fixtures/content-layer/src/data/glob-content/columbia.md diff --git a/packages/astro/test/fixtures/content-layer/src/content/_data/glob-content/endeavour.md b/packages/astro/test/fixtures/content-layer/src/data/glob-content/endeavour.md similarity index 100% rename from packages/astro/test/fixtures/content-layer/src/content/_data/glob-content/endeavour.md rename to packages/astro/test/fixtures/content-layer/src/data/glob-content/endeavour.md diff --git a/packages/astro/test/fixtures/content-layer/src/content/_data/glob-content/enterprise.md b/packages/astro/test/fixtures/content-layer/src/data/glob-content/enterprise.md similarity index 100% rename from packages/astro/test/fixtures/content-layer/src/content/_data/glob-content/enterprise.md rename to packages/astro/test/fixtures/content-layer/src/data/glob-content/enterprise.md diff --git a/packages/astro/test/fixtures/content-layer/src/data/glob-content/index.md b/packages/astro/test/fixtures/content-layer/src/data/glob-content/index.md new file mode 100644 index 000000000000..4971108e36ed --- /dev/null +++ b/packages/astro/test/fixtures/content-layer/src/data/glob-content/index.md @@ -0,0 +1,15 @@ +--- +title: Columbia +description: 'Learn about the Columbia NASA space shuttle.' +publishedDate: 'Sat May 21 2022 00:00:00 GMT-0400 (Eastern Daylight Time)' +tags: [space, 90s] +--- + +**Source:** [Wikipedia](https://en.wikipedia.org/wiki/Space_Shuttle_Endeavour) + +Space Shuttle Endeavour (Orbiter Vehicle Designation: OV-105) is a retired orbiter from NASA's Space Shuttle program and the fifth and final operational Shuttle built. It embarked on its first mission, STS-49, in May 1992 and its 25th and final mission, STS-134, in May 2011. STS-134 was expected to be the final mission of the Space Shuttle program, but with the authorization of STS-135, Atlantis became the last shuttle to fly. + +The United States Congress approved the construction of Endeavour in 1987 to replace the Space Shuttle Challenger, which was destroyed in 1986. + +NASA chose, on cost grounds, to build much of Endeavour from spare parts rather than refitting the Space Shuttle Enterprise, and used structural spares built during the construction of Discovery and Atlantis in its assembly. +Space Shuttle Endeavour (Orbiter Vehicle Designation: OV-105) is a retired orbiter from NASA's Space Shuttle program and the fifth and final operational Shuttle built. It embarked on its first mission, STS-49, in May 1992 and its 25th and final mission, STS-134, in May 2011. STS-134 was expected to be the final mission of the Space Shuttle program, but with the authorization of STS-135, Atlantis became the last shuttle to fly. diff --git a/packages/astro/test/fixtures/content-layer/src/content/_data/glob-data/index.json b/packages/astro/test/fixtures/content-layer/src/data/glob-data/index.json similarity index 100% rename from packages/astro/test/fixtures/content-layer/src/content/_data/glob-data/index.json rename to packages/astro/test/fixtures/content-layer/src/data/glob-data/index.json diff --git a/packages/astro/test/fixtures/content-layer/src/content/_data/glob-data/one.json b/packages/astro/test/fixtures/content-layer/src/data/glob-data/one.json similarity index 100% rename from packages/astro/test/fixtures/content-layer/src/content/_data/glob-data/one.json rename to packages/astro/test/fixtures/content-layer/src/data/glob-data/one.json diff --git a/packages/astro/test/fixtures/content-layer/src/content/_data/glob-data/three.json b/packages/astro/test/fixtures/content-layer/src/data/glob-data/three.json similarity index 100% rename from packages/astro/test/fixtures/content-layer/src/content/_data/glob-data/three.json rename to packages/astro/test/fixtures/content-layer/src/data/glob-data/three.json diff --git a/packages/astro/test/fixtures/content-layer/src/content/_data/glob-data/two.json b/packages/astro/test/fixtures/content-layer/src/data/glob-data/two.json similarity index 100% rename from packages/astro/test/fixtures/content-layer/src/content/_data/glob-data/two.json rename to packages/astro/test/fixtures/content-layer/src/data/glob-data/two.json diff --git a/packages/astro/types/content.d.ts b/packages/astro/types/content.d.ts index b3cb744859b8..34d596dcc865 100644 --- a/packages/astro/types/content.d.ts +++ b/packages/astro/types/content.d.ts @@ -76,7 +76,7 @@ declare module 'astro:content' { base?: string; } - export function glob(patternOrOptions: string | GlobOptions): Loader; + export function glob(options: GlobOptions): Loader; type BaseSchemaWithoutEffects = | import('astro/zod').AnyZodObject diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 566a7e94bbd0..d9c68b9aa3d1 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -654,6 +654,9 @@ importers: magic-string: specifier: ^0.30.10 version: 0.30.10 + micromatch: + specifier: ^4.0.7 + version: 4.0.7 mrmime: specifier: ^2.0.0 version: 2.0.0 @@ -773,6 +776,9 @@ importers: '@types/js-yaml': specifier: ^4.0.9 version: 4.0.9 + '@types/micromatch': + specifier: ^4.0.9 + version: 4.0.9 '@types/probe-image-size': specifier: ^7.2.4 version: 7.2.4 @@ -7274,6 +7280,9 @@ packages: '@types/body-parser@1.19.5': resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==} + '@types/braces@3.0.4': + resolution: {integrity: sha512-0WR3b8eaISjEW7RpZnclONaLFDf7buaowRHdqLp4vLj54AsSAYWfh3DRbfiYJY9XDxMgx1B4sE1Afw2PGpuHOA==} + '@types/canvas-confetti@1.6.4': resolution: {integrity: sha512-fNyZ/Fdw/Y92X0vv7B+BD6ysHL4xVU5dJcgzgxLdGbn8O3PezZNIJpml44lKM0nsGur+o/6+NZbZeNTt00U1uA==} @@ -7367,6 +7376,9 @@ packages: '@types/mdx@2.0.13': resolution: {integrity: sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==} + '@types/micromatch@4.0.9': + resolution: {integrity: sha512-7V+8ncr22h4UoYRLnLXSpTxjQrNUXtWHGeMPRJt1nULXI57G9bIcpyrHlmrQ7QK24EyyuXvYcSSWAM8GA9nqCg==} + '@types/mime@1.3.5': resolution: {integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==} @@ -7938,6 +7950,10 @@ packages: resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} engines: {node: '>=8'} + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + browserslist@4.23.0: resolution: {integrity: sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} @@ -8750,6 +8766,10 @@ packages: resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} engines: {node: '>=8'} + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + finalhandler@1.2.0: resolution: {integrity: sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==} engines: {node: '>= 0.8'} @@ -9347,7 +9367,6 @@ packages: libsql@0.3.12: resolution: {integrity: sha512-to30hj8O3DjS97wpbKN6ERZ8k66MN1IaOfFLR6oHqd25GMiPJ/ZX0VaZ7w+TsPmxcFS3p71qArj/hiedCyvXCg==} - cpu: [x64, arm64, wasm32] os: [darwin, linux, win32] lilconfig@2.1.0: @@ -9697,6 +9716,10 @@ packages: resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} engines: {node: '>=8.6'} + micromatch@4.0.7: + resolution: {integrity: sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==} + engines: {node: '>=8.6'} + mime-db@1.52.0: resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} engines: {node: '>= 0.6'} @@ -13297,6 +13320,8 @@ snapshots: '@types/connect': 3.4.38 '@types/node': 18.19.31 + '@types/braces@3.0.4': {} + '@types/canvas-confetti@1.6.4': {} '@types/chai@4.3.16': {} @@ -13393,6 +13418,10 @@ snapshots: '@types/mdx@2.0.13': {} + '@types/micromatch@4.0.9': + dependencies: + '@types/braces': 3.0.4 + '@types/mime@1.3.5': {} '@types/ms@0.7.34': {} @@ -14146,6 +14175,10 @@ snapshots: dependencies: fill-range: 7.0.1 + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + browserslist@4.23.0: dependencies: caniuse-lite: 1.0.30001610 @@ -14884,7 +14917,7 @@ snapshots: '@nodelib/fs.walk': 1.2.8 glob-parent: 5.1.2 merge2: 1.4.1 - micromatch: 4.0.5 + micromatch: 4.0.7 fast-json-stable-stringify@2.1.0: {} @@ -14915,6 +14948,10 @@ snapshots: dependencies: to-regex-range: 5.0.1 + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 + finalhandler@1.2.0: dependencies: debug: 2.6.9 @@ -14939,7 +14976,7 @@ snapshots: find-yarn-workspace-root2@1.2.16: dependencies: - micromatch: 4.0.5 + micromatch: 4.0.7 pkg-dir: 4.2.0 flat-cache@4.0.1: @@ -16283,6 +16320,11 @@ snapshots: braces: 3.0.2 picomatch: 2.3.1 + micromatch@4.0.7: + dependencies: + braces: 3.0.3 + picomatch: 2.3.1 + mime-db@1.52.0: {} mime-types@2.1.35: From fc09b7f11f283072f7f5e7b7a85656ccf0bd2760 Mon Sep 17 00:00:00 2001 From: Matt Kane Date: Wed, 3 Jul 2024 12:35:05 +0100 Subject: [PATCH 03/30] Store the full entry object, not just data --- packages/astro/src/content/data-store.ts | 54 +++++++++++++++---- packages/astro/src/content/file.ts | 2 +- packages/astro/src/content/glob.ts | 18 +++++-- packages/astro/src/content/runtime.ts | 30 +++++++---- .../src/pages/spacecraft/[slug].astro | 7 +-- packages/astro/types/content.d.ts | 17 ++++-- 6 files changed, 97 insertions(+), 31 deletions(-) diff --git a/packages/astro/src/content/data-store.ts b/packages/astro/src/content/data-store.ts index f8c24ac184aa..acd159c25ffc 100644 --- a/packages/astro/src/content/data-store.ts +++ b/packages/astro/src/content/data-store.ts @@ -1,6 +1,14 @@ import { promises as fs, type PathLike, existsSync } from 'fs'; const SAVE_DEBOUNCE_MS = 500; + +export interface DataEntry { + id: string; + data: Record; + filePath?: string; + body?: string; +} + export class DataStore { #collections = new Map>(); @@ -13,14 +21,14 @@ export class DataStore { constructor() { this.#collections = new Map(); } - get(collectionName: string, key: string) { + get(collectionName: string, key: string): T | undefined { return this.#collections.get(collectionName)?.get(String(key)); } - entries(collectionName: string): Array<[id: string, any]> { + entries(collectionName: string): Array<[id: string, T]> { const collection = this.#collections.get(collectionName) ?? new Map(); return [...collection.entries()]; } - values(collectionName: string): Array { + values(collectionName: string): Array { const collection = this.#collections.get(collectionName) ?? new Map(); return [...collection.values()]; } @@ -78,11 +86,30 @@ export class DataStore { scopedStore(collectionName: string): ScopedDataStore { return { - get: (key: string) => this.get(collectionName, key), + get: (key: string) => this.get(collectionName, key), entries: () => this.entries(collectionName), values: () => this.values(collectionName), keys: () => this.keys(collectionName), - set: (key: string, value: any) => this.set(collectionName, key, value), + set: (key, data, body, filePath) => { + if (!key) { + throw new Error(`Key must be a non-empty string`); + } + const id = String(key); + const entry: DataEntry = { + id, + data, + }; + // We do it like this so we don't waste space stringifying + // the body and filePath if they are not set + if (body) { + entry.body = body; + } + if (filePath) { + entry.filePath = filePath; + } + + this.set(collectionName, id, entry); + }, delete: (key: string) => this.delete(collectionName, key), clear: () => this.clear(collectionName), has: (key: string) => this.has(collectionName, key), @@ -90,7 +117,13 @@ export class DataStore { } metaStore(collectionName: string): MetaStore { - return this.scopedStore(`meta:${collectionName}`) as MetaStore; + const collectionKey = `meta:${collectionName}`; + return { + get: (key: string) => this.get(collectionKey, key), + set: (key: string, data: string) => this.set(collectionKey, key, data), + delete: (key: string) => this.delete(collectionKey, key), + has: (key: string) => this.has(collectionKey, key), + }; } toString() { @@ -148,10 +181,10 @@ export class DataStore { } export interface ScopedDataStore { - get: (key: string) => unknown; - entries: () => Array<[id: string, unknown]>; - set: (key: string, value: unknown) => void; - values: () => Array; + get: (key: string) => DataEntry | undefined; + entries: () => Array<[id: string, DataEntry]>; + set: (key: string, data: Record, body?: string, filePath?: string) => void; + values: () => Array; keys: () => Array; delete: (key: string) => void; clear: () => void; @@ -166,6 +199,7 @@ export interface MetaStore { get: (key: string) => string | undefined; set: (key: string, value: string) => void; has: (key: string) => boolean; + delete: (key: string) => void; } function dataStoreSingleton() { diff --git a/packages/astro/src/content/file.ts b/packages/astro/src/content/file.ts index 78db5baecc5a..6899faa6f374 100644 --- a/packages/astro/src/content/file.ts +++ b/packages/astro/src/content/file.ts @@ -38,7 +38,7 @@ export function file(fileName: string): Loader { continue; } const item = await parseData({ id, data: rawItem, filePath }); - store.set(id, item); + store.set(id, item, undefined, filePath); } } else if (typeof json === 'object') { const entries = Object.entries>(json); diff --git a/packages/astro/src/content/glob.ts b/packages/astro/src/content/glob.ts index 5f17b4c76e31..87916910a393 100644 --- a/packages/astro/src/content/glob.ts +++ b/packages/astro/src/content/glob.ts @@ -43,19 +43,27 @@ export function glob(globOptions: GlobOptions): Loader { id: string, fileUrl: URL, { logger, parseData, store }: LoaderContext, - entryType?: ContentEntryType | DataEntryType + entryType?: ContentEntryType ) { if (!entryType) { logger.warn(`No entry type found for ${fileUrl.pathname}`); return; } - const info = await entryType.getEntryInfo({ + const { slug, body, data } = await entryType.getEntryInfo({ contents: await fs.readFile(fileUrl, 'utf-8'), fileUrl, }); - const resolvedId = (info as any).id || (info as any).slug || id; - store.set(resolvedId, { ...info, id: resolvedId }); + const filePath = fileURLToPath(fileUrl); + const resolvedId = slug || id; + + const parsedData = await parseData({ + id: resolvedId, + data, + filePath, + }); + + store.set(resolvedId, parsedData, body, filePath); } return { @@ -66,7 +74,7 @@ export function glob(globOptions: GlobOptions): Loader { const entryConfigByExt = getEntryConfigByExtMap([ ...settings.contentEntryTypes, ...settings.dataEntryTypes, - ]); + ] as Array); const baseDir = globOptions.base ? new URL(globOptions.base, settings.config.root) diff --git a/packages/astro/src/content/runtime.ts b/packages/astro/src/content/runtime.ts index d9eda865f77e..fe5b81fd31b6 100644 --- a/packages/astro/src/content/runtime.ts +++ b/packages/astro/src/content/runtime.ts @@ -14,7 +14,7 @@ import { unescapeHTML, } from '../runtime/server/index.js'; import type { ContentLookupMap } from './utils.js'; -import { globalDataStore } from './data-store.js'; +import { globalDataStore, type DataEntry } from './data-store.js'; export { file } from './file.js'; export { glob } from './glob.js'; type LazyImport = () => Promise; @@ -65,10 +65,9 @@ export function createGetCollection({ } else if (collection in dataCollectionToEntryMap) { type = 'data'; } else if (store.hasCollection(collection)) { - return [...store.entries(collection)].map(([id, data]) => ({ - id, + return [...store.values(collection)].map((entry) => ({ + ...entry, collection, - data, type: 'experimental_data', })); } else { @@ -139,6 +138,23 @@ export function createGetEntryBySlug({ getRenderEntryImport: GetEntryImport; }) { return async function getEntryBySlug(collection: string, slug: string) { + const store = await globalDataStore.get(); + + if (store.hasCollection(collection)) { + const data = store.get(collection, slug); + if (!data) { + throw new Error(`Entry ${collection} → ${slug} was not found.`); + } + + const entry = store.get(collection, slug); + + return { + ...entry, + collection, + type: 'experimental_data', + }; + } + const entryImport = await getEntryImport(collection, slug); if (typeof entryImport !== 'function') return undefined; @@ -171,11 +187,7 @@ export function createGetDataEntryById({ getEntryImport }: { getEntryImport: Get throw new Error(`Entry ${collection} → ${id} was not found.`); } - return { - id, - collection, - data: store.get(collection, id), - }; + return store.get(collection, id); } const lazyImport = await getEntryImport(collection, id); diff --git a/packages/astro/test/fixtures/content-layer/src/pages/spacecraft/[slug].astro b/packages/astro/test/fixtures/content-layer/src/pages/spacecraft/[slug].astro index 10262d457076..efc6e4f99f99 100644 --- a/packages/astro/test/fixtures/content-layer/src/pages/spacecraft/[slug].astro +++ b/packages/astro/test/fixtures/content-layer/src/pages/spacecraft/[slug].astro @@ -9,7 +9,7 @@ export const getStaticPaths = (async () => { slug: craft.id }, props: { - craft: craft.data + craft } })); }) satisfies GetStaticPaths; @@ -18,9 +18,10 @@ export const getStaticPaths = (async () => { const { craft } = Astro.props as any - ---

{craft.data.title}

- +
+	{craft.body}
+
diff --git a/packages/astro/types/content.d.ts b/packages/astro/types/content.d.ts index 34d596dcc865..3260f54a81d9 100644 --- a/packages/astro/types/content.d.ts +++ b/packages/astro/types/content.d.ts @@ -20,17 +20,28 @@ declare module 'astro:content' { >; }>; + export interface DataEntry { + id: string; + data: Record; + filePath?: string; + body?: string; + } + export interface DataStore { - get: (key: string) => any; - entries: () => IterableIterator<[id: string, any]>; - set: (key: string, value: any) => void; + get: (key: string) => DataEntry; + entries: () => Array<[id: string, DataEntry]>; + set: (key: string, data: Record, body?: string, filePath?: string) => void; + values: () => Array; + keys: () => Array; delete: (key: string) => void; clear: () => void; has: (key: string) => boolean; } + export interface MetaStore { get: (key: string) => string | undefined; set: (key: string, value: string) => void; + delete: (key: string) => void; has: (key: string) => boolean; } From 69e9a65ce4ef944e9872567679dc68e1a4510579 Mon Sep 17 00:00:00 2001 From: Matt Kane Date: Wed, 3 Jul 2024 14:40:53 +0100 Subject: [PATCH 04/30] Add generateId support --- packages/astro/src/content/glob.ts | 71 +++++++++++++------ .../src/data/glob-content/columbia.md | 15 ---- .../src/data/glob-content/endeavour.md | 14 ---- .../src/data/glob-content/enterprise.md | 14 ---- .../src/data/glob-content/index.md | 15 ---- .../src/pages/spacecraft/[slug].astro | 2 +- 6 files changed, 51 insertions(+), 80 deletions(-) delete mode 100644 packages/astro/test/fixtures/content-layer/src/data/glob-content/columbia.md delete mode 100644 packages/astro/test/fixtures/content-layer/src/data/glob-content/endeavour.md delete mode 100644 packages/astro/test/fixtures/content-layer/src/data/glob-content/enterprise.md delete mode 100644 packages/astro/test/fixtures/content-layer/src/data/glob-content/index.md diff --git a/packages/astro/src/content/glob.ts b/packages/astro/src/content/glob.ts index 87916910a393..475f5ee23036 100644 --- a/packages/astro/src/content/glob.ts +++ b/packages/astro/src/content/glob.ts @@ -4,24 +4,43 @@ import { promises as fs } from 'fs'; import fastGlob from 'fast-glob'; import pLimit from 'p-limit'; import { getContentEntryIdAndSlug, getEntryConfigByExtMap } from './utils.js'; -import type { ContentEntryType, DataEntryType } from '../@types/astro.js'; +import type { ContentEntryType } from '../@types/astro.js'; import micromatch from 'micromatch'; import { relative } from 'path/posix'; +import { green } from 'kleur/colors'; +export interface GenerateIdOptions { + /** The path to the entry file, relative to the base directory. */ + entry: string; + + /** The base directory URL. */ + base: URL; + /** The parsed, unvalidated data of the entry. */ + data: Record; +} export interface GlobOptions { /** The glob pattern to match files, relative to the base directory */ pattern: string; /** The base directory to resolve the glob pattern from, relative to the root directory. Defaults to `.` */ base?: string; + /** + * Function that generates an ID for an entry. Default implementation generates a slug from the entry path. + * @returns The ID of the entry. Must be unique per collection. + **/ + generateId?: (options: GenerateIdOptions) => string; } -function generateSlugDefault(entry: URL, base: URL) { +function generateIdDefault({ entry, base, data }: GenerateIdOptions): string { + if (data.slug) { + return data.slug as string; + } + const entryURL = new URL(entry, base); const { slug } = getContentEntryIdAndSlug({ - entry, + entry: entryURL, contentDir: base, collection: '', }); - return slug.startsWith('/') ? slug : `/${slug}`; + return slug; } /** @@ -39,31 +58,40 @@ export function glob(globOptions: GlobOptions): Loader { 'Glob patterns cannot start with `/`. Set the `base` option to a parent directory or use a relative path instead.' ); } + + const generateId = globOptions?.generateId ?? generateIdDefault; + + const fileToIdMap = new Map(); + async function syncData( - id: string, - fileUrl: URL, + entry: string, + base: URL, { logger, parseData, store }: LoaderContext, entryType?: ContentEntryType ) { if (!entryType) { - logger.warn(`No entry type found for ${fileUrl.pathname}`); + logger.warn(`No entry type found for ${entry}`); return; } - const { slug, body, data } = await entryType.getEntryInfo({ + const fileUrl = new URL(entry, base); + const { body, data } = await entryType.getEntryInfo({ contents: await fs.readFile(fileUrl, 'utf-8'), fileUrl, }); + const id = generateId({ entry, base, data }); + const filePath = fileURLToPath(fileUrl); - const resolvedId = slug || id; const parsedData = await parseData({ - id: resolvedId, + id, data, filePath, }); - store.set(resolvedId, parsedData, body, filePath); + store.set(id, parsedData, body, filePath); + + fileToIdMap.set(filePath, id); } return { @@ -100,12 +128,10 @@ export function glob(globOptions: GlobOptions): Loader { const limit = pLimit(10); options.store.clear(); await Promise.all( - files.map((file) => + files.map((entry) => limit(async () => { - const entryType = configForFile(file); - const fileURL = new URL(file, baseDir); - const slug = generateSlugDefault(fileURL, baseDir); - await syncData(slug, fileURL, options, entryType); + const entryType = configForFile(entry); + await syncData(entry, baseDir, options, entryType); }) ) ); @@ -122,9 +148,9 @@ export function glob(globOptions: GlobOptions): Loader { return; } const entryType = configForFile(changedPath); - const changedFile = pathToFileURL(changedPath); - const slug = generateSlugDefault(changedFile, baseDir); - await syncData(slug, changedFile, options, entryType); + const baseUrl = pathToFileURL(basePath); + await syncData(entry, baseUrl, options, entryType); + logger.info(`Reloaded data from ${green(entry)}`); } watcher?.on('change', onChange); @@ -135,8 +161,11 @@ export function glob(globOptions: GlobOptions): Loader { if (!matchesGlob(entry)) { return; } - const slug = generateSlugDefault(pathToFileURL(deletedPath), baseDir); - options.store.delete(slug); + const id = fileToIdMap.get(deletedPath); + if (id) { + options.store.delete(id); + fileToIdMap.delete(deletedPath); + } }); }, }; diff --git a/packages/astro/test/fixtures/content-layer/src/data/glob-content/columbia.md b/packages/astro/test/fixtures/content-layer/src/data/glob-content/columbia.md deleted file mode 100644 index 4971108e36ed..000000000000 --- a/packages/astro/test/fixtures/content-layer/src/data/glob-content/columbia.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -title: Columbia -description: 'Learn about the Columbia NASA space shuttle.' -publishedDate: 'Sat May 21 2022 00:00:00 GMT-0400 (Eastern Daylight Time)' -tags: [space, 90s] ---- - -**Source:** [Wikipedia](https://en.wikipedia.org/wiki/Space_Shuttle_Endeavour) - -Space Shuttle Endeavour (Orbiter Vehicle Designation: OV-105) is a retired orbiter from NASA's Space Shuttle program and the fifth and final operational Shuttle built. It embarked on its first mission, STS-49, in May 1992 and its 25th and final mission, STS-134, in May 2011. STS-134 was expected to be the final mission of the Space Shuttle program, but with the authorization of STS-135, Atlantis became the last shuttle to fly. - -The United States Congress approved the construction of Endeavour in 1987 to replace the Space Shuttle Challenger, which was destroyed in 1986. - -NASA chose, on cost grounds, to build much of Endeavour from spare parts rather than refitting the Space Shuttle Enterprise, and used structural spares built during the construction of Discovery and Atlantis in its assembly. -Space Shuttle Endeavour (Orbiter Vehicle Designation: OV-105) is a retired orbiter from NASA's Space Shuttle program and the fifth and final operational Shuttle built. It embarked on its first mission, STS-49, in May 1992 and its 25th and final mission, STS-134, in May 2011. STS-134 was expected to be the final mission of the Space Shuttle program, but with the authorization of STS-135, Atlantis became the last shuttle to fly. diff --git a/packages/astro/test/fixtures/content-layer/src/data/glob-content/endeavour.md b/packages/astro/test/fixtures/content-layer/src/data/glob-content/endeavour.md deleted file mode 100644 index 51d6e8c42178..000000000000 --- a/packages/astro/test/fixtures/content-layer/src/data/glob-content/endeavour.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -title: Endeavour -description: 'Learn about the Endeavour NASA space shuttle.' -publishedDate: 'Sun Jul 11 2021 00:00:00 GMT-0400 (Eastern Daylight Time)' -tags: [space, 90s] ---- - -**Source:** [Wikipedia](https://en.wikipedia.org/wiki/Space_Shuttle_Endeavour) - -Space Shuttle Endeavour (Orbiter Vehicle Designation: OV-105) is a retired orbiter from NASA's Space Shuttle program and the fifth and final operational Shuttle built. It embarked on its first mission, STS-49, in May 1992 and its 25th and final mission, STS-134, in May 2011. STS-134 was expected to be the final mission of the Space Shuttle program, but with the authorization of STS-135, Atlantis became the last shuttle to fly. - -The United States Congress approved the construction of Endeavour in 1987 to replace the Space Shuttle Challenger, which was destroyed in 1986. - -NASA chose, on cost grounds, to build much of Endeavour from spare parts rather than refitting the Space Shuttle Enterprise, and used structural spares built during the construction of Discovery and Atlantis in its assembly. diff --git a/packages/astro/test/fixtures/content-layer/src/data/glob-content/enterprise.md b/packages/astro/test/fixtures/content-layer/src/data/glob-content/enterprise.md deleted file mode 100644 index 3131e6d5df3a..000000000000 --- a/packages/astro/test/fixtures/content-layer/src/data/glob-content/enterprise.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -title: 'Enterprise' -description: 'Learn about the Enterprise NASA space shuttle.' -publishedDate: 'Tue Jun 08 2021 00:00:00 GMT-0400 (Eastern Daylight Time)' -tags: [space, 70s] ---- - -**Source:** [Wikipedia](https://en.wikipedia.org/wiki/Space_Shuttle_Enterprise) - -Space Shuttle Enterprise (Orbiter Vehicle Designation: OV-101) was the first orbiter of the Space Shuttle system. Rolled out on September 17, 1976, it was built for NASA as part of the Space Shuttle program to perform atmospheric test flights after being launched from a modified Boeing 747. It was constructed without engines or a functional heat shield. As a result, it was not capable of spaceflight. - -Originally, Enterprise had been intended to be refitted for orbital flight to become the second space-rated orbiter in service. However, during the construction of Space Shuttle Columbia, details of the final design changed, making it simpler and less costly to build Challenger around a body frame that had been built as a test article. Similarly, Enterprise was considered for refit to replace Challenger after the latter was destroyed, but Endeavour was built from structural spares instead. - -Enterprise was restored and placed on display in 2003 at the Smithsonian's new Steven F. Udvar-Hazy Center in Virginia. Following the retirement of the Space Shuttle fleet, Discovery replaced Enterprise at the Udvar-Hazy Center, and Enterprise was transferred to the Intrepid Sea, Air & Space Museum in New York City, where it has been on display since July 2012. diff --git a/packages/astro/test/fixtures/content-layer/src/data/glob-content/index.md b/packages/astro/test/fixtures/content-layer/src/data/glob-content/index.md deleted file mode 100644 index 4971108e36ed..000000000000 --- a/packages/astro/test/fixtures/content-layer/src/data/glob-content/index.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -title: Columbia -description: 'Learn about the Columbia NASA space shuttle.' -publishedDate: 'Sat May 21 2022 00:00:00 GMT-0400 (Eastern Daylight Time)' -tags: [space, 90s] ---- - -**Source:** [Wikipedia](https://en.wikipedia.org/wiki/Space_Shuttle_Endeavour) - -Space Shuttle Endeavour (Orbiter Vehicle Designation: OV-105) is a retired orbiter from NASA's Space Shuttle program and the fifth and final operational Shuttle built. It embarked on its first mission, STS-49, in May 1992 and its 25th and final mission, STS-134, in May 2011. STS-134 was expected to be the final mission of the Space Shuttle program, but with the authorization of STS-135, Atlantis became the last shuttle to fly. - -The United States Congress approved the construction of Endeavour in 1987 to replace the Space Shuttle Challenger, which was destroyed in 1986. - -NASA chose, on cost grounds, to build much of Endeavour from spare parts rather than refitting the Space Shuttle Enterprise, and used structural spares built during the construction of Discovery and Atlantis in its assembly. -Space Shuttle Endeavour (Orbiter Vehicle Designation: OV-105) is a retired orbiter from NASA's Space Shuttle program and the fifth and final operational Shuttle built. It embarked on its first mission, STS-49, in May 1992 and its 25th and final mission, STS-134, in May 2011. STS-134 was expected to be the final mission of the Space Shuttle program, but with the authorization of STS-135, Atlantis became the last shuttle to fly. diff --git a/packages/astro/test/fixtures/content-layer/src/pages/spacecraft/[slug].astro b/packages/astro/test/fixtures/content-layer/src/pages/spacecraft/[slug].astro index efc6e4f99f99..ceff0b361e71 100644 --- a/packages/astro/test/fixtures/content-layer/src/pages/spacecraft/[slug].astro +++ b/packages/astro/test/fixtures/content-layer/src/pages/spacecraft/[slug].astro @@ -6,7 +6,7 @@ export const getStaticPaths = (async () => { if(!collection) return [] return collection.map((craft) => ({ params: { - slug: craft.id + slug: `/${craft.id}` }, props: { craft From ed063cf418f95e00dc464f2f0ce2c626cc6285dc Mon Sep 17 00:00:00 2001 From: Matt Kane Date: Wed, 3 Jul 2024 15:29:28 +0100 Subject: [PATCH 05/30] Fix test --- packages/astro/src/content/runtime.ts | 8 +++++++- packages/astro/test/content-layer.test.js | 17 +++++++++++++++-- 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/packages/astro/src/content/runtime.ts b/packages/astro/src/content/runtime.ts index fe5b81fd31b6..002a942b9d22 100644 --- a/packages/astro/src/content/runtime.ts +++ b/packages/astro/src/content/runtime.ts @@ -187,7 +187,13 @@ export function createGetDataEntryById({ getEntryImport }: { getEntryImport: Get throw new Error(`Entry ${collection} → ${id} was not found.`); } - return store.get(collection, id); + const entry = store.get(collection, id); + + return { + ...entry, + collection, + type: 'experimental_data', + }; } const lazyImport = await getEntryImport(collection, id); diff --git a/packages/astro/test/content-layer.test.js b/packages/astro/test/content-layer.test.js index 04e49f6a8c93..9a20dd4ce7f7 100644 --- a/packages/astro/test/content-layer.test.js +++ b/packages/astro/test/content-layer.test.js @@ -73,9 +73,16 @@ describe('Content Layer', () => { it('Returns data entry by id', async () => { assert.ok(json.hasOwnProperty('dataEntryById')); + assert.ok( + json.dataEntryById.filePath?.endsWith( + 'packages/astro/test/fixtures/content-layer/src/data/dogs.json' + ) + ); + delete json.dataEntryById.filePath; assert.deepEqual(json.dataEntryById, { id: 'beagle', collection: 'dogs', + type: 'experimental_data', data: { breed: 'Beagle', id: 'beagle', @@ -92,7 +99,6 @@ describe('Content Layer', () => { assert.ok(Array.isArray(json.simpleLoader)); const item = json.simpleLoader[0]; - assert.equal(json.simpleLoader.length, 4); assert.deepEqual(item, { id: 'siamese', collection: 'cats', @@ -177,9 +183,16 @@ describe('Content Layer', () => { it('Returns data entry by id', async () => { assert.ok(json.hasOwnProperty('dataEntryById')); + assert.ok( + json.dataEntryById.filePath?.endsWith( + 'packages/astro/test/fixtures/content-layer/src/data/dogs.json' + ) + ); + delete json.dataEntryById.filePath; assert.deepEqual(json.dataEntryById, { id: 'beagle', collection: 'dogs', + type: 'experimental_data', data: { breed: 'Beagle', id: 'beagle', @@ -196,7 +209,7 @@ describe('Content Layer', () => { const initialJson = await rawJsonResponse.json(); assert.equal(initialJson.fileLoader[0].data.temperament.includes('Bouncy'), false); - await fixture.editFile('/src/content/_data/dogs.json', (prev) => { + await fixture.editFile('/src/data/dogs.json', (prev) => { const data = JSON.parse(prev); data[0].temperament.push('Bouncy'); return JSON.stringify(data, null, 2); From 2f2eb76005fb366f4354b33e7a955016e404b568 Mon Sep 17 00:00:00 2001 From: Matt Kane Date: Thu, 4 Jul 2024 12:02:51 +0100 Subject: [PATCH 06/30] Rename loaders to sync --- packages/astro/src/content/file.ts | 2 +- packages/astro/src/content/glob.ts | 2 +- packages/astro/src/content/{loaders.ts => sync.ts} | 0 packages/astro/src/core/build/index.ts | 2 +- packages/astro/src/core/dev/dev.ts | 2 +- packages/astro/src/core/sync/index.ts | 2 +- 6 files changed, 5 insertions(+), 5 deletions(-) rename packages/astro/src/content/{loaders.ts => sync.ts} (100%) diff --git a/packages/astro/src/content/file.ts b/packages/astro/src/content/file.ts index 6899faa6f374..90032420d635 100644 --- a/packages/astro/src/content/file.ts +++ b/packages/astro/src/content/file.ts @@ -1,5 +1,5 @@ import { fileURLToPath } from 'url'; -import type { Loader, LoaderContext } from './loaders.js'; +import type { Loader, LoaderContext } from './sync.js'; import { promises as fs, existsSync } from 'fs'; /** diff --git a/packages/astro/src/content/glob.ts b/packages/astro/src/content/glob.ts index 475f5ee23036..fc4bc00b5cd8 100644 --- a/packages/astro/src/content/glob.ts +++ b/packages/astro/src/content/glob.ts @@ -1,5 +1,5 @@ import { fileURLToPath, pathToFileURL } from 'url'; -import type { Loader, LoaderContext } from './loaders.js'; +import type { Loader, LoaderContext } from './sync.js'; import { promises as fs } from 'fs'; import fastGlob from 'fast-glob'; import pLimit from 'p-limit'; diff --git a/packages/astro/src/content/loaders.ts b/packages/astro/src/content/sync.ts similarity index 100% rename from packages/astro/src/content/loaders.ts rename to packages/astro/src/content/sync.ts diff --git a/packages/astro/src/core/build/index.ts b/packages/astro/src/core/build/index.ts index b318ffb5b4b2..8b05cfa1c86c 100644 --- a/packages/astro/src/core/build/index.ts +++ b/packages/astro/src/core/build/index.ts @@ -11,7 +11,7 @@ import type { RuntimeMode, } from '../../@types/astro.js'; import { injectImageEndpoint } from '../../assets/endpoint/config.js'; -import { syncContentLayer } from '../../content/loaders.js'; +import { syncContentLayer } from '../../content/sync.js'; import { telemetry } from '../../events/index.js'; import { eventCliSession } from '../../events/session.js'; import { diff --git a/packages/astro/src/core/dev/dev.ts b/packages/astro/src/core/dev/dev.ts index c920e40822d7..ce7c6606d542 100644 --- a/packages/astro/src/core/dev/dev.ts +++ b/packages/astro/src/core/dev/dev.ts @@ -7,7 +7,7 @@ import { gt, major, minor, patch } from 'semver'; import type * as vite from 'vite'; import type { AstroInlineConfig } from '../../@types/astro.js'; import { attachContentServerListeners } from '../../content/index.js'; -import { syncContentLayer } from '../../content/loaders.js'; +import { syncContentLayer } from '../../content/sync.js'; import { telemetry } from '../../events/index.js'; import * as msg from '../messages.js'; import { ensureProcessNodeEnv } from '../util.js'; diff --git a/packages/astro/src/core/sync/index.ts b/packages/astro/src/core/sync/index.ts index e399ee516a02..d1b80f00ac4f 100644 --- a/packages/astro/src/core/sync/index.ts +++ b/packages/astro/src/core/sync/index.ts @@ -6,7 +6,7 @@ import { type HMRPayload, createServer } from 'vite'; import type { AstroConfig, AstroInlineConfig, AstroSettings } from '../../@types/astro.js'; import { getPackage } from '../../cli/install-package.js'; import { createContentTypesGenerator } from '../../content/index.js'; -import { syncContentLayer } from '../../content/loaders.js'; +import { syncContentLayer } from '../../content/sync.js'; import { globalContentConfigObserver } from '../../content/utils.js'; import { syncAstroEnv } from '../../env/sync.js'; import { telemetry } from '../../events/index.js'; From 874f7281e830bad745787ae8deca722438ec687e Mon Sep 17 00:00:00 2001 From: Matt Kane Date: Thu, 4 Jul 2024 12:52:13 +0100 Subject: [PATCH 07/30] Refacctor imports --- packages/astro/package.json | 3 +- .../astro/src/content/{ => loaders}/file.ts | 2 +- .../astro/src/content/{ => loaders}/glob.ts | 6 +-- packages/astro/src/content/loaders/index.ts | 3 ++ packages/astro/src/content/loaders/types.ts | 46 +++++++++++++++++ packages/astro/src/content/runtime.ts | 2 - packages/astro/src/content/sync.ts | 49 ++----------------- .../content-layer/src/content/config.ts | 5 +- .../content-layer/src/loaders/post-loader.ts | 3 +- packages/astro/types/content.d.ts | 48 ++---------------- 10 files changed, 66 insertions(+), 101 deletions(-) rename packages/astro/src/content/{ => loaders}/file.ts (97%) rename packages/astro/src/content/{ => loaders}/glob.ts (97%) create mode 100644 packages/astro/src/content/loaders/index.ts create mode 100644 packages/astro/src/content/loaders/types.ts diff --git a/packages/astro/package.json b/packages/astro/package.json index 3864b2225e71..aad29ce89a5d 100644 --- a/packages/astro/package.json +++ b/packages/astro/package.json @@ -67,6 +67,7 @@ "./assets/services/sharp": "./dist/assets/services/sharp.js", "./assets/services/squoosh": "./dist/assets/services/squoosh.js", "./assets/services/noop": "./dist/assets/services/noop.js", + "./loaders": "./dist/content/loaders/index.js", "./content/runtime": "./dist/content/runtime.js", "./content/runtime-assets": "./dist/content/runtime-assets.js", "./debug": "./components/Debug.astro", @@ -242,4 +243,4 @@ "publishConfig": { "provenance": true } -} +} \ No newline at end of file diff --git a/packages/astro/src/content/file.ts b/packages/astro/src/content/loaders/file.ts similarity index 97% rename from packages/astro/src/content/file.ts rename to packages/astro/src/content/loaders/file.ts index 90032420d635..a5cc1a90ee0d 100644 --- a/packages/astro/src/content/file.ts +++ b/packages/astro/src/content/loaders/file.ts @@ -1,5 +1,5 @@ import { fileURLToPath } from 'url'; -import type { Loader, LoaderContext } from './sync.js'; +import type { Loader, LoaderContext } from './types.js'; import { promises as fs, existsSync } from 'fs'; /** diff --git a/packages/astro/src/content/glob.ts b/packages/astro/src/content/loaders/glob.ts similarity index 97% rename from packages/astro/src/content/glob.ts rename to packages/astro/src/content/loaders/glob.ts index fc4bc00b5cd8..21e07a1243c7 100644 --- a/packages/astro/src/content/glob.ts +++ b/packages/astro/src/content/loaders/glob.ts @@ -1,10 +1,10 @@ import { fileURLToPath, pathToFileURL } from 'url'; -import type { Loader, LoaderContext } from './sync.js'; +import type { Loader, LoaderContext } from './types.js'; import { promises as fs } from 'fs'; import fastGlob from 'fast-glob'; import pLimit from 'p-limit'; -import { getContentEntryIdAndSlug, getEntryConfigByExtMap } from './utils.js'; -import type { ContentEntryType } from '../@types/astro.js'; +import { getContentEntryIdAndSlug, getEntryConfigByExtMap } from '../utils.js'; +import type { ContentEntryType } from '../../@types/astro.js'; import micromatch from 'micromatch'; import { relative } from 'path/posix'; import { green } from 'kleur/colors'; diff --git a/packages/astro/src/content/loaders/index.ts b/packages/astro/src/content/loaders/index.ts new file mode 100644 index 000000000000..30b4bfbe5334 --- /dev/null +++ b/packages/astro/src/content/loaders/index.ts @@ -0,0 +1,3 @@ +export { file } from './file.js'; +export { glob } from './glob.js'; +export * from './types.js'; diff --git a/packages/astro/src/content/loaders/types.ts b/packages/astro/src/content/loaders/types.ts new file mode 100644 index 000000000000..4847d0f59f34 --- /dev/null +++ b/packages/astro/src/content/loaders/types.ts @@ -0,0 +1,46 @@ +import type { AstroIntegrationLogger, AstroSettings } from '../../@types/astro.js'; +import type { MetaStore, ScopedDataStore } from '../data-store.js'; +import type { FSWatcher } from 'vite'; +import type { ZodSchema } from 'zod'; + +export interface ParseDataOptions { + /** The ID of the entry. Unique per collection */ + id: string; + /** The raw, unvalidated data of the entry */ + data: Record; + /** An optional file path, where the entry represents a local file. */ + filePath?: string; +} + +export type DataWithId = { + id: string; + [key: string]: unknown; +}; + +export interface LoaderContext { + /** The unique name of the collection */ + collection: string; + /** A database abstraction to store the actual data */ + store: ScopedDataStore; + /** A simple KV store, designed for things like sync tokens */ + meta: MetaStore; + logger: AstroIntegrationLogger; + + settings: AstroSettings; + + /** Validates and parses the data according to the collection schema */ + parseData(props: ParseDataOptions): Promise; + + /** When running in dev, this is a filesystem watcher that can be used to trigger updates */ + watcher?: FSWatcher; +} + +export interface Loader { + /** Unique name of the loader, e.g. the npm package name */ + name: string; + /** Do the actual loading of the data */ + load: (context: LoaderContext) => Promise; + /** Optionally, define the schema of the data. Will be overridden by user-defined schema */ + schema?: ZodSchema | Promise | (() => ZodSchema | Promise); + render?: (entry: any) => any; +} diff --git a/packages/astro/src/content/runtime.ts b/packages/astro/src/content/runtime.ts index 002a942b9d22..893c40ac6c64 100644 --- a/packages/astro/src/content/runtime.ts +++ b/packages/astro/src/content/runtime.ts @@ -15,8 +15,6 @@ import { } from '../runtime/server/index.js'; import type { ContentLookupMap } from './utils.js'; import { globalDataStore, type DataEntry } from './data-store.js'; -export { file } from './file.js'; -export { glob } from './glob.js'; type LazyImport = () => Promise; type GlobResult = Record; type CollectionToEntryMap = Record; diff --git a/packages/astro/src/content/sync.ts b/packages/astro/src/content/sync.ts index f2a233b3e17b..bce88554afe8 100644 --- a/packages/astro/src/content/sync.ts +++ b/packages/astro/src/content/sync.ts @@ -1,54 +1,11 @@ -import type { ZodSchema } from 'zod'; import type { AstroSettings } from '../@types/astro.js'; -import type { AstroIntegrationLogger, Logger } from '../core/logger/core.js'; -import { DataStore, globalDataStore, type MetaStore, type ScopedDataStore } from './data-store.js'; +import type { Logger } from '../core/logger/core.js'; +import { DataStore, globalDataStore } from './data-store.js'; import { getEntryData, globalContentConfigObserver } from './utils.js'; import { promises as fs, existsSync } from 'fs'; import { DATA_STORE_FILE } from './consts.js'; import type { FSWatcher } from 'vite'; - -export interface ParseDataOptions { - /** The ID of the entry. Unique per collection */ - id: string; - /** The raw, unvalidated data of the entry */ - data: Record; - /** An optional file path, where the entry represents a local file. */ - filePath?: string; -} - -export type DataWithId = { - id: string; - [key: string]: unknown; -}; - -export interface LoaderContext { - /** The unique name of the collection */ - collection: string; - /** A database abstraction to store the actual data */ - store: ScopedDataStore; - /** A simple KV store, designed for things like sync tokens */ - meta: MetaStore; - logger: AstroIntegrationLogger; - - settings: AstroSettings; - - /** Validates and parses the data according to the collection schema */ - parseData(props: ParseDataOptions): Promise; - - /** When running in dev, this is a filesystem watcher that can be used to trigger updates */ - watcher?: FSWatcher; -} - -export interface Loader { - /** Unique name of the loader, e.g. the npm package name */ - name: string; - /** Do the actual loading of the data */ - load: (context: LoaderContext) => Promise; - /** Optionally, define the schema of the data. Will be overridden by user-defined schema */ - schema?: ZodSchema | Promise | (() => ZodSchema | Promise); - render?: (entry: any) => any; -} - +import type { DataWithId, LoaderContext } from './loaders/types.js'; export interface SyncContentLayerOptions { store?: DataStore; settings: AstroSettings; diff --git a/packages/astro/test/fixtures/content-layer/src/content/config.ts b/packages/astro/test/fixtures/content-layer/src/content/config.ts index 60832b5f5637..a9f41118d22a 100644 --- a/packages/astro/test/fixtures/content-layer/src/content/config.ts +++ b/packages/astro/test/fixtures/content-layer/src/content/config.ts @@ -1,4 +1,5 @@ -import { defineCollection, file, glob, z } from 'astro:content'; +import { defineCollection, z } from 'astro:content'; +import { file, glob } from "astro/loaders" import { loader } from '../loaders/post-loader.js'; const blog = defineCollection({ @@ -7,7 +8,7 @@ const blog = defineCollection({ }); const dogs = defineCollection({ - type: "experimental_data", + type: "experimental_data", loader: file("src/data/dogs.json"), schema: z.object({ breed: z.string(), diff --git a/packages/astro/test/fixtures/content-layer/src/loaders/post-loader.ts b/packages/astro/test/fixtures/content-layer/src/loaders/post-loader.ts index d3f967976c3e..1d7aa0df1843 100644 --- a/packages/astro/test/fixtures/content-layer/src/loaders/post-loader.ts +++ b/packages/astro/test/fixtures/content-layer/src/loaders/post-loader.ts @@ -1,4 +1,5 @@ -import { type Loader, z } from 'astro:content'; +import { z } from 'astro:content'; +import type { Loader } from "astro/loaders" export interface PostLoaderConfig { url: string; diff --git a/packages/astro/types/content.d.ts b/packages/astro/types/content.d.ts index 3260f54a81d9..d66a8a64d14c 100644 --- a/packages/astro/types/content.d.ts +++ b/packages/astro/types/content.d.ts @@ -45,50 +45,6 @@ declare module 'astro:content' { has: (key: string) => boolean; } - export interface ParseDataOptions { - /** The ID of the entry. Unique per collection */ - id: string; - /** The raw, unvalidated data of the entry */ - data: Record; - /** An optional file path, where the entry represents a local file */ - filePath?: string; - } - export interface LoaderContext { - collection: string; - /** A database abstraction to store the actual data */ - store: DataStore; - /** A simple KV store, designed for things like sync tokens */ - meta: MetaStore; - logger: import('astro').AstroIntegrationLogger; - settings: import('astro').AstroSettings; - /** Validates and parses the data according to the schema */ - parseData = Record>( - props: ParseDataOptions - ): T; - /** When running in dev, this is a filesystem watcher that can be used to trigger updates */ - watcher?: import('vite').FSWatcher; - } - export interface Loader { - /** Unique name of the loader, e.g. the npm package name */ - name: string; - /** Do the actual loading of the data */ - load: (context: LoaderContext) => Promise; - /** Optionally, define the schema of the data. Will be overridden by user-defined schema */ - schema?: BaseSchema | Promise | (() => BaseSchema | Promise); - render?: (entry: any) => any; - } - - export function file(filePath: string): Loader; - - export interface GlobOptions { - /** The glob pattern to match files, relative to the base directory */ - pattern: string; - /** The base directory to resolve the glob pattern from. Relative to the site root. Defaults to the content directory */ - base?: string; - } - - export function glob(options: GlobOptions): Loader; - type BaseSchemaWithoutEffects = | import('astro/zod').AnyZodObject | import('astro/zod').ZodUnion<[BaseSchemaWithoutEffects, ...BaseSchemaWithoutEffects[]]> @@ -109,7 +65,9 @@ declare module 'astro:content' { type ContentCollectionV2Config = { type: 'experimental_data'; schema?: S | ((context: SchemaContext) => S); - loader: Loader | (() => Array | Promise>); + loader: + | import('astro/loader/types').Loader + | (() => Array | Promise>); }; type DataCollectionConfig = { From d2c8ab2c17635225587fef42af826ee71b7759a7 Mon Sep 17 00:00:00 2001 From: Matt Kane Date: Thu, 4 Jul 2024 13:04:32 +0100 Subject: [PATCH 08/30] Use getEntry --- packages/astro/package.json | 2 +- packages/astro/src/content/runtime.ts | 16 ++++++++++++++++ packages/astro/test/content-layer.test.js | 16 ++++++++-------- .../content-layer/src/pages/collections.json.js | 6 +++--- 4 files changed, 28 insertions(+), 12 deletions(-) diff --git a/packages/astro/package.json b/packages/astro/package.json index aad29ce89a5d..929c7cf24321 100644 --- a/packages/astro/package.json +++ b/packages/astro/package.json @@ -243,4 +243,4 @@ "publishConfig": { "provenance": true } -} \ No newline at end of file +} diff --git a/packages/astro/src/content/runtime.ts b/packages/astro/src/content/runtime.ts index 893c40ac6c64..05c53fc310af 100644 --- a/packages/astro/src/content/runtime.ts +++ b/packages/astro/src/content/runtime.ts @@ -257,6 +257,22 @@ export function createGetEntry({ : collectionOrLookupObject.slug; } + const store = await globalDataStore.get(); + + if (store.hasCollection(collection)) { + const data = store.get(collection, lookupId); + if (!data) { + throw new Error(`Entry ${collection} → ${lookupId} was not found.`); + } + + const entry = store.get(collection, lookupId); + + return { + ...entry, + collection, + } as DataEntryResult | ContentEntryResult; + } + const entryImport = await getEntryImport(collection, lookupId); if (typeof entryImport !== 'function') return undefined; diff --git a/packages/astro/test/content-layer.test.js b/packages/astro/test/content-layer.test.js index 9a20dd4ce7f7..e664890d2d6c 100644 --- a/packages/astro/test/content-layer.test.js +++ b/packages/astro/test/content-layer.test.js @@ -72,14 +72,14 @@ describe('Content Layer', () => { }); it('Returns data entry by id', async () => { - assert.ok(json.hasOwnProperty('dataEntryById')); + assert.ok(json.hasOwnProperty('dataEntry')); assert.ok( - json.dataEntryById.filePath?.endsWith( + json.dataEntry.filePath?.endsWith( 'packages/astro/test/fixtures/content-layer/src/data/dogs.json' ) ); - delete json.dataEntryById.filePath; - assert.deepEqual(json.dataEntryById, { + delete json.dataEntry.filePath; + assert.deepEqual(json.dataEntry, { id: 'beagle', collection: 'dogs', type: 'experimental_data', @@ -182,14 +182,14 @@ describe('Content Layer', () => { }); it('Returns data entry by id', async () => { - assert.ok(json.hasOwnProperty('dataEntryById')); + assert.ok(json.hasOwnProperty('dataEntry')); assert.ok( - json.dataEntryById.filePath?.endsWith( + json.dataEntry.filePath?.endsWith( 'packages/astro/test/fixtures/content-layer/src/data/dogs.json' ) ); - delete json.dataEntryById.filePath; - assert.deepEqual(json.dataEntryById, { + delete json.dataEntry.filePath; + assert.deepEqual(json.dataEntry, { id: 'beagle', collection: 'dogs', type: 'experimental_data', diff --git a/packages/astro/test/fixtures/content-layer/src/pages/collections.json.js b/packages/astro/test/fixtures/content-layer/src/pages/collections.json.js index 821d8dc2a964..5f98a51285b9 100644 --- a/packages/astro/test/fixtures/content-layer/src/pages/collections.json.js +++ b/packages/astro/test/fixtures/content-layer/src/pages/collections.json.js @@ -1,14 +1,14 @@ -import { getCollection, getDataEntryById } from 'astro:content'; +import { getCollection, getEntry } from 'astro:content'; export async function GET() { const customLoader = (await getCollection('blog')).slice(0, 10); const fileLoader = await getCollection('dogs'); - const dataEntryById = await getDataEntryById('dogs', 'beagle'); + const dataEntry= await getEntry('dogs', 'beagle'); const simpleLoader = await getCollection('cats'); return new Response( - JSON.stringify({ customLoader, fileLoader, dataEntryById, simpleLoader }), + JSON.stringify({ customLoader, fileLoader, dataEntry, simpleLoader }), ); } From d2821915b7918c3bf7a08cf054c738be4194ec34 Mon Sep 17 00:00:00 2001 From: Matt Kane Date: Thu, 4 Jul 2024 13:04:50 +0100 Subject: [PATCH 09/30] Format --- packages/astro/src/content/loaders/file.ts | 2 +- packages/astro/src/content/loaders/glob.ts | 12 ++++++------ packages/astro/src/content/loaders/types.ts | 4 ++-- packages/astro/src/content/runtime.ts | 2 +- packages/astro/src/content/sync.ts | 8 ++++---- packages/astro/src/content/types-generator.ts | 2 +- .../src/content/vite-plugin-content-virtual-mod.ts | 2 +- packages/astro/src/core/build/index.ts | 2 +- 8 files changed, 17 insertions(+), 17 deletions(-) diff --git a/packages/astro/src/content/loaders/file.ts b/packages/astro/src/content/loaders/file.ts index a5cc1a90ee0d..adbd1bf8a291 100644 --- a/packages/astro/src/content/loaders/file.ts +++ b/packages/astro/src/content/loaders/file.ts @@ -1,6 +1,6 @@ +import { promises as fs, existsSync } from 'fs'; import { fileURLToPath } from 'url'; import type { Loader, LoaderContext } from './types.js'; -import { promises as fs, existsSync } from 'fs'; /** * Loads entries from a JSON file. The file must contain an array of objects that contain unique `id` fields, or an object with string keys. diff --git a/packages/astro/src/content/loaders/glob.ts b/packages/astro/src/content/loaders/glob.ts index 21e07a1243c7..cd20973480c9 100644 --- a/packages/astro/src/content/loaders/glob.ts +++ b/packages/astro/src/content/loaders/glob.ts @@ -1,13 +1,13 @@ -import { fileURLToPath, pathToFileURL } from 'url'; -import type { Loader, LoaderContext } from './types.js'; import { promises as fs } from 'fs'; +import { fileURLToPath, pathToFileURL } from 'url'; import fastGlob from 'fast-glob'; -import pLimit from 'p-limit'; -import { getContentEntryIdAndSlug, getEntryConfigByExtMap } from '../utils.js'; -import type { ContentEntryType } from '../../@types/astro.js'; +import { green } from 'kleur/colors'; import micromatch from 'micromatch'; +import pLimit from 'p-limit'; import { relative } from 'path/posix'; -import { green } from 'kleur/colors'; +import type { ContentEntryType } from '../../@types/astro.js'; +import { getContentEntryIdAndSlug, getEntryConfigByExtMap } from '../utils.js'; +import type { Loader, LoaderContext } from './types.js'; export interface GenerateIdOptions { /** The path to the entry file, relative to the base directory. */ diff --git a/packages/astro/src/content/loaders/types.ts b/packages/astro/src/content/loaders/types.ts index 4847d0f59f34..865e6724e544 100644 --- a/packages/astro/src/content/loaders/types.ts +++ b/packages/astro/src/content/loaders/types.ts @@ -1,7 +1,7 @@ -import type { AstroIntegrationLogger, AstroSettings } from '../../@types/astro.js'; -import type { MetaStore, ScopedDataStore } from '../data-store.js'; import type { FSWatcher } from 'vite'; import type { ZodSchema } from 'zod'; +import type { AstroIntegrationLogger, AstroSettings } from '../../@types/astro.js'; +import type { MetaStore, ScopedDataStore } from '../data-store.js'; export interface ParseDataOptions { /** The ID of the entry. Unique per collection */ diff --git a/packages/astro/src/content/runtime.ts b/packages/astro/src/content/runtime.ts index 05c53fc310af..2dad92ac2e47 100644 --- a/packages/astro/src/content/runtime.ts +++ b/packages/astro/src/content/runtime.ts @@ -13,8 +13,8 @@ import { renderUniqueStylesheet, unescapeHTML, } from '../runtime/server/index.js'; +import { type DataEntry, globalDataStore } from './data-store.js'; import type { ContentLookupMap } from './utils.js'; -import { globalDataStore, type DataEntry } from './data-store.js'; type LazyImport = () => Promise; type GlobResult = Record; type CollectionToEntryMap = Record; diff --git a/packages/astro/src/content/sync.ts b/packages/astro/src/content/sync.ts index bce88554afe8..819c8915cc25 100644 --- a/packages/astro/src/content/sync.ts +++ b/packages/astro/src/content/sync.ts @@ -1,11 +1,11 @@ +import { promises as fs, existsSync } from 'fs'; +import type { FSWatcher } from 'vite'; import type { AstroSettings } from '../@types/astro.js'; import type { Logger } from '../core/logger/core.js'; -import { DataStore, globalDataStore } from './data-store.js'; -import { getEntryData, globalContentConfigObserver } from './utils.js'; -import { promises as fs, existsSync } from 'fs'; import { DATA_STORE_FILE } from './consts.js'; -import type { FSWatcher } from 'vite'; +import { DataStore, globalDataStore } from './data-store.js'; import type { DataWithId, LoaderContext } from './loaders/types.js'; +import { getEntryData, globalContentConfigObserver } from './utils.js'; export interface SyncContentLayerOptions { store?: DataStore; settings: AstroSettings; diff --git a/packages/astro/src/content/types-generator.ts b/packages/astro/src/content/types-generator.ts index 53133dc02809..0ad52eedfc81 100644 --- a/packages/astro/src/content/types-generator.ts +++ b/packages/astro/src/content/types-generator.ts @@ -5,8 +5,8 @@ import glob from 'fast-glob'; import { bold, cyan } from 'kleur/colors'; import { type ViteDevServer, normalizePath } from 'vite'; import { z } from 'zod'; -import { zodToTs, printNode } from 'zod-to-ts'; import { zodToJsonSchema } from 'zod-to-json-schema'; +import { printNode, zodToTs } from 'zod-to-ts'; import type { AstroSettings, ContentEntryType } from '../@types/astro.js'; import { AstroError } from '../core/errors/errors.js'; import { AstroErrorData } from '../core/errors/index.js'; diff --git a/packages/astro/src/content/vite-plugin-content-virtual-mod.ts b/packages/astro/src/content/vite-plugin-content-virtual-mod.ts index 2273c478176d..fbd0880db5dc 100644 --- a/packages/astro/src/content/vite-plugin-content-virtual-mod.ts +++ b/packages/astro/src/content/vite-plugin-content-virtual-mod.ts @@ -1,10 +1,10 @@ import nodeFs from 'node:fs'; import { extname } from 'node:path'; import { fileURLToPath, pathToFileURL } from 'node:url'; +import { dataToEsm } from '@rollup/pluginutils'; import glob from 'fast-glob'; import pLimit from 'p-limit'; import type { Plugin } from 'vite'; -import { dataToEsm } from '@rollup/pluginutils'; import type { AstroSettings } from '../@types/astro.js'; import { encodeName } from '../core/build/util.js'; import { AstroError, AstroErrorData } from '../core/errors/index.js'; diff --git a/packages/astro/src/core/build/index.ts b/packages/astro/src/core/build/index.ts index 8b05cfa1c86c..854a3fbd0914 100644 --- a/packages/astro/src/core/build/index.ts +++ b/packages/astro/src/core/build/index.ts @@ -11,6 +11,7 @@ import type { RuntimeMode, } from '../../@types/astro.js'; import { injectImageEndpoint } from '../../assets/endpoint/config.js'; +import { DataStore, globalDataStore } from '../../content/data-store.js'; import { syncContentLayer } from '../../content/sync.js'; import { telemetry } from '../../events/index.js'; import { eventCliSession } from '../../events/session.js'; @@ -33,7 +34,6 @@ import { collectPagesData } from './page-data.js'; import { staticBuild, viteBuild } from './static-build.js'; import type { StaticBuildOptions } from './types.js'; import { getTimeStat } from './util.js'; -import { globalDataStore, DataStore } from '../../content/data-store.js'; export interface BuildOptions { /** * Teardown the compiler WASM instance after build. This can improve performance when From 49df4064ab5c727ec2d5461df393fbd7f430b967 Mon Sep 17 00:00:00 2001 From: Matt Kane Date: Thu, 4 Jul 2024 15:22:39 +0100 Subject: [PATCH 10/30] Fix import --- packages/astro/templates/content/module.mjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/astro/templates/content/module.mjs b/packages/astro/templates/content/module.mjs index 0e803d512bad..f246678a25ec 100644 --- a/packages/astro/templates/content/module.mjs +++ b/packages/astro/templates/content/module.mjs @@ -9,7 +9,7 @@ import { createReference, } from 'astro/content/runtime'; -export { defineCollection, file, glob } from 'astro/content/runtime'; +export { defineCollection } from 'astro/content/runtime'; export { z } from 'astro/zod'; const contentDir = '@@CONTENT_DIR@@'; From d8aa5a57d74549e2d1d673c1b53f58b34403e418 Mon Sep 17 00:00:00 2001 From: Matt Kane Date: Thu, 4 Jul 2024 15:54:34 +0100 Subject: [PATCH 11/30] Remove type from output --- packages/astro/src/content/runtime.ts | 3 - packages/astro/test/content-layer.test.js | 5 - .../content-layer/src/content/config.ts | 91 ++++++++++--------- 3 files changed, 46 insertions(+), 53 deletions(-) diff --git a/packages/astro/src/content/runtime.ts b/packages/astro/src/content/runtime.ts index 2dad92ac2e47..7b5d2b6f48af 100644 --- a/packages/astro/src/content/runtime.ts +++ b/packages/astro/src/content/runtime.ts @@ -66,7 +66,6 @@ export function createGetCollection({ return [...store.values(collection)].map((entry) => ({ ...entry, collection, - type: 'experimental_data', })); } else { // eslint-disable-next-line no-console @@ -149,7 +148,6 @@ export function createGetEntryBySlug({ return { ...entry, collection, - type: 'experimental_data', }; } @@ -190,7 +188,6 @@ export function createGetDataEntryById({ getEntryImport }: { getEntryImport: Get return { ...entry, collection, - type: 'experimental_data', }; } diff --git a/packages/astro/test/content-layer.test.js b/packages/astro/test/content-layer.test.js index e664890d2d6c..439cd5143b2c 100644 --- a/packages/astro/test/content-layer.test.js +++ b/packages/astro/test/content-layer.test.js @@ -33,7 +33,6 @@ describe('Content Layer', () => { title: 'sunt aut facere repellat provident occaecati excepturi optio reprehenderit', body: 'quia et suscipit\nsuscipit recusandae consequuntur expedita et cum\nreprehenderit molestiae ut ut quas totam\nnostrum rerum est autem sunt rem eveniet architecto', }, - type: 'experimental_data', }); }); @@ -82,7 +81,6 @@ describe('Content Layer', () => { assert.deepEqual(json.dataEntry, { id: 'beagle', collection: 'dogs', - type: 'experimental_data', data: { breed: 'Beagle', id: 'beagle', @@ -110,7 +108,6 @@ describe('Content Layer', () => { lifespan: '15 years', temperament: ['Active', 'Affectionate', 'Social', 'Playful'], }, - type: 'experimental_data', }); }); }); @@ -143,7 +140,6 @@ describe('Content Layer', () => { title: 'sunt aut facere repellat provident occaecati excepturi optio reprehenderit', body: 'quia et suscipit\nsuscipit recusandae consequuntur expedita et cum\nreprehenderit molestiae ut ut quas totam\nnostrum rerum est autem sunt rem eveniet architecto', }, - type: 'experimental_data', }); }); @@ -192,7 +188,6 @@ describe('Content Layer', () => { assert.deepEqual(json.dataEntry, { id: 'beagle', collection: 'dogs', - type: 'experimental_data', data: { breed: 'Beagle', id: 'beagle', diff --git a/packages/astro/test/fixtures/content-layer/src/content/config.ts b/packages/astro/test/fixtures/content-layer/src/content/config.ts index a9f41118d22a..891d71e2d005 100644 --- a/packages/astro/test/fixtures/content-layer/src/content/config.ts +++ b/packages/astro/test/fixtures/content-layer/src/content/config.ts @@ -1,60 +1,61 @@ import { defineCollection, z } from 'astro:content'; -import { file, glob } from "astro/loaders" +import { file, glob } from 'astro/loaders'; import { loader } from '../loaders/post-loader.js'; const blog = defineCollection({ - type: "experimental_data", - loader: loader({ url: "https://jsonplaceholder.typicode.com/posts" }), + type: 'experimental_data', + loader: loader({ url: 'https://jsonplaceholder.typicode.com/posts' }), }); const dogs = defineCollection({ - type: "experimental_data", - loader: file("src/data/dogs.json"), + type: 'experimental_data', + loader: file('src/data/dogs.json'), schema: z.object({ breed: z.string(), id: z.string(), size: z.string(), origin: z.string(), lifespan: z.string(), - temperament: z.array(z.string()) + temperament: z.array(z.string()), }), -}) +}); const cats = defineCollection({ - type: "experimental_data", - loader: async function() { - return [{ - "breed": "Siamese", - "id": "siamese", - "size": "Medium", - "origin": "Thailand", - "lifespan": "15 years", - "temperament": ["Active", "Affectionate", "Social", "Playful"] + type: 'experimental_data', + loader: async function () { + return [ + { + breed: 'Siamese', + id: 'siamese', + size: 'Medium', + origin: 'Thailand', + lifespan: '15 years', + temperament: ['Active', 'Affectionate', 'Social', 'Playful'], }, - { - "breed": "Persian", - "id": "persian", - "size": "Medium", - "origin": "Iran", - "lifespan": "15 years", - "temperament": ["Calm", "Affectionate", "Social"] + { + breed: 'Persian', + id: 'persian', + size: 'Medium', + origin: 'Iran', + lifespan: '15 years', + temperament: ['Calm', 'Affectionate', 'Social'], }, - { - "breed": "Tabby", - "id": "tabby", - "size": "Medium", - "origin": "Egypt", - "lifespan": "15 years", - "temperament": ["Curious", "Playful", "Independent"] + { + breed: 'Tabby', + id: 'tabby', + size: 'Medium', + origin: 'Egypt', + lifespan: '15 years', + temperament: ['Curious', 'Playful', 'Independent'], }, { - "breed": "Ragdoll", - "id": "ragdoll", - "size": "Medium", - "origin": "United States", - "lifespan": "15 years", - "temperament": ["Calm", "Affectionate", "Social"] - } + breed: 'Ragdoll', + id: 'ragdoll', + size: 'Medium', + origin: 'United States', + lifespan: '15 years', + temperament: ['Calm', 'Affectionate', 'Social'], + }, ]; }, schema: z.object({ @@ -63,18 +64,18 @@ const cats = defineCollection({ size: z.string(), origin: z.string(), lifespan: z.string(), - temperament: z.array(z.string()) + temperament: z.array(z.string()), }), -}) +}); const spacecraft = defineCollection({ - type: "experimental_data", - loader: glob({ pattern: "*", base: "content-outside-src" }) -}) + type: 'experimental_data', + loader: glob({ pattern: '*', base: 'content-outside-src' }), +}); const numbers = defineCollection({ - type: "experimental_data", - loader: glob({pattern: "src/data/glob-data/*", base: "."}), -}) + type: 'experimental_data', + loader: glob({ pattern: 'src/data/glob-data/*', base: '.' }), +}); export const collections = { blog, dogs, cats, numbers, spacecraft }; From 3b77d4c920af6f3ba91de72ff3634d15d6b05005 Mon Sep 17 00:00:00 2001 From: Matt Kane Date: Thu, 4 Jul 2024 16:24:27 +0100 Subject: [PATCH 12/30] Windows path --- packages/astro/test/content-layer.test.js | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/packages/astro/test/content-layer.test.js b/packages/astro/test/content-layer.test.js index 439cd5143b2c..4e1f2d7c3a66 100644 --- a/packages/astro/test/content-layer.test.js +++ b/packages/astro/test/content-layer.test.js @@ -1,6 +1,8 @@ import assert from 'node:assert/strict'; import { after, before, describe, it } from 'node:test'; import { loadFixture } from './test-utils.js'; +import { sep } from 'node:path'; +import { sep as posixSep } from 'node:path/posix'; describe('Content Layer', () => { /** @type {import("./test-utils.js").Fixture} */ @@ -73,9 +75,10 @@ describe('Content Layer', () => { it('Returns data entry by id', async () => { assert.ok(json.hasOwnProperty('dataEntry')); assert.ok( - json.dataEntry.filePath?.endsWith( - 'packages/astro/test/fixtures/content-layer/src/data/dogs.json' - ) + json.dataEntry.filePath + ?.split(sep) + .join(posixSep) + .endsWith('packages/astro/test/fixtures/content-layer/src/data/dogs.json') ); delete json.dataEntry.filePath; assert.deepEqual(json.dataEntry, { @@ -180,9 +183,10 @@ describe('Content Layer', () => { it('Returns data entry by id', async () => { assert.ok(json.hasOwnProperty('dataEntry')); assert.ok( - json.dataEntry.filePath?.endsWith( - 'packages/astro/test/fixtures/content-layer/src/data/dogs.json' - ) + json.dataEntry.filePath + ?.split(sep) + .join(posixSep) + .endsWith('packages/astro/test/fixtures/content-layer/src/data/dogs.json') ); delete json.dataEntry.filePath; assert.deepEqual(json.dataEntry, { From c8ddc35dc563f93b587efb158694cf9a695b9e88 Mon Sep 17 00:00:00 2001 From: Matt Kane Date: Mon, 8 Jul 2024 09:12:25 +0100 Subject: [PATCH 13/30] Add test for absolute path --- .../astro/test/fixtures/content-layer/src/content/config.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/astro/test/fixtures/content-layer/src/content/config.ts b/packages/astro/test/fixtures/content-layer/src/content/config.ts index 891d71e2d005..7b5bd16a9abf 100644 --- a/packages/astro/test/fixtures/content-layer/src/content/config.ts +++ b/packages/astro/test/fixtures/content-layer/src/content/config.ts @@ -1,6 +1,7 @@ import { defineCollection, z } from 'astro:content'; import { file, glob } from 'astro/loaders'; import { loader } from '../loaders/post-loader.js'; +import { fileURLToPath } from 'node:url'; const blog = defineCollection({ type: 'experimental_data', @@ -68,9 +69,12 @@ const cats = defineCollection({ }), }); +// Absolute paths should also work +const absoluteRoot = fileURLToPath(new URL('../../content-outside-src', import.meta.url)) + const spacecraft = defineCollection({ type: 'experimental_data', - loader: glob({ pattern: '*', base: 'content-outside-src' }), + loader: glob({ pattern: '*', base: absoluteRoot }), }); const numbers = defineCollection({ From 616a3cf5eee53d3cb3faecffe01dfcb51e4e469c Mon Sep 17 00:00:00 2001 From: Matt Kane Date: Mon, 8 Jul 2024 10:33:38 +0100 Subject: [PATCH 14/30] Update lockfile --- pnpm-lock.yaml | 58 +++++++++++++++++++++++++------------------------- 1 file changed, 29 insertions(+), 29 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 42c560deb736..0bc02855e9cc 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -128,7 +128,7 @@ importers: examples/basics: dependencies: astro: - specifier: ^4.11.3 + specifier: ^4.11.5 version: link:../../packages/astro examples/blog: @@ -143,13 +143,13 @@ importers: specifier: ^3.1.6 version: link:../../packages/integrations/sitemap astro: - specifier: ^4.11.3 + specifier: ^4.11.5 version: link:../../packages/astro examples/component: devDependencies: astro: - specifier: ^4.11.3 + specifier: ^4.11.5 version: link:../../packages/astro examples/container-with-vitest: @@ -158,7 +158,7 @@ importers: specifier: ^3.6.0 version: link:../../packages/integrations/react astro: - specifier: ^4.11.3 + specifier: ^4.11.5 version: link:../../packages/astro react: specifier: ^18.3.1 @@ -189,7 +189,7 @@ importers: specifier: ^3.14.1 version: 3.14.1 astro: - specifier: ^4.11.3 + specifier: ^4.11.5 version: link:../../packages/astro examples/framework-lit: @@ -201,7 +201,7 @@ importers: specifier: ^0.2.1 version: 0.2.1 astro: - specifier: ^4.11.3 + specifier: ^4.11.5 version: link:../../packages/astro lit: specifier: ^3.1.4 @@ -231,7 +231,7 @@ importers: specifier: ^18.3.0 version: 18.3.0 astro: - specifier: ^4.11.3 + specifier: ^4.11.5 version: link:../../packages/astro preact: specifier: ^10.22.1 @@ -261,7 +261,7 @@ importers: specifier: ^1.2.3 version: 1.2.3(preact@10.22.1) astro: - specifier: ^4.11.3 + specifier: ^4.11.5 version: link:../../packages/astro preact: specifier: ^10.22.1 @@ -279,7 +279,7 @@ importers: specifier: ^18.3.0 version: 18.3.0 astro: - specifier: ^4.11.3 + specifier: ^4.11.5 version: link:../../packages/astro react: specifier: ^18.3.1 @@ -294,7 +294,7 @@ importers: specifier: ^4.4.0 version: link:../../packages/integrations/solid astro: - specifier: ^4.11.3 + specifier: ^4.11.5 version: link:../../packages/astro solid-js: specifier: ^1.8.18 @@ -306,7 +306,7 @@ importers: specifier: ^5.6.0 version: link:../../packages/integrations/svelte astro: - specifier: ^4.11.3 + specifier: ^4.11.5 version: link:../../packages/astro svelte: specifier: ^4.2.18 @@ -318,7 +318,7 @@ importers: specifier: ^4.5.0 version: link:../../packages/integrations/vue astro: - specifier: ^4.11.3 + specifier: ^4.11.5 version: link:../../packages/astro vue: specifier: ^3.4.31 @@ -330,13 +330,13 @@ importers: specifier: ^8.3.2 version: link:../../packages/integrations/node astro: - specifier: ^4.11.3 + specifier: ^4.11.5 version: link:../../packages/astro examples/integration: devDependencies: astro: - specifier: ^4.11.3 + specifier: ^4.11.5 version: link:../../packages/astro examples/middleware: @@ -345,7 +345,7 @@ importers: specifier: ^8.3.2 version: link:../../packages/integrations/node astro: - specifier: ^4.11.3 + specifier: ^4.11.5 version: link:../../packages/astro html-minifier: specifier: ^4.0.0 @@ -358,19 +358,19 @@ importers: examples/minimal: dependencies: astro: - specifier: ^4.11.3 + specifier: ^4.11.5 version: link:../../packages/astro examples/non-html-pages: dependencies: astro: - specifier: ^4.11.3 + specifier: ^4.11.5 version: link:../../packages/astro examples/portfolio: dependencies: astro: - specifier: ^4.11.3 + specifier: ^4.11.5 version: link:../../packages/astro examples/ssr: @@ -382,7 +382,7 @@ importers: specifier: ^5.6.0 version: link:../../packages/integrations/svelte astro: - specifier: ^4.11.3 + specifier: ^4.11.5 version: link:../../packages/astro svelte: specifier: ^4.2.18 @@ -391,7 +391,7 @@ importers: examples/starlog: dependencies: astro: - specifier: ^4.11.3 + specifier: ^4.11.5 version: link:../../packages/astro sass: specifier: ^1.77.6 @@ -403,7 +403,7 @@ importers: examples/toolbar-app: devDependencies: astro: - specifier: ^4.11.3 + specifier: ^4.11.5 version: link:../../packages/astro examples/view-transitions: @@ -415,7 +415,7 @@ importers: specifier: ^5.1.0 version: link:../../packages/integrations/tailwind astro: - specifier: ^4.11.3 + specifier: ^4.11.5 version: link:../../packages/astro examples/with-markdoc: @@ -424,7 +424,7 @@ importers: specifier: ^0.11.1 version: link:../../packages/integrations/markdoc astro: - specifier: ^4.11.3 + specifier: ^4.11.5 version: link:../../packages/astro examples/with-markdown-plugins: @@ -433,7 +433,7 @@ importers: specifier: ^5.1.1 version: link:../../packages/markdown/remark astro: - specifier: ^4.11.3 + specifier: ^4.11.5 version: link:../../packages/astro hast-util-select: specifier: ^6.0.2 @@ -454,7 +454,7 @@ importers: examples/with-markdown-shiki: dependencies: astro: - specifier: ^4.11.3 + specifier: ^4.11.5 version: link:../../packages/astro examples/with-mdx: @@ -466,7 +466,7 @@ importers: specifier: ^3.5.0 version: link:../../packages/integrations/preact astro: - specifier: ^4.11.3 + specifier: ^4.11.5 version: link:../../packages/astro preact: specifier: ^10.22.1 @@ -481,7 +481,7 @@ importers: specifier: ^0.5.1 version: 0.5.1(nanostores@0.10.3)(preact@10.22.1) astro: - specifier: ^4.11.3 + specifier: ^4.11.5 version: link:../../packages/astro nanostores: specifier: ^0.10.3 @@ -502,7 +502,7 @@ importers: specifier: ^1.6.4 version: 1.6.4 astro: - specifier: ^4.11.3 + specifier: ^4.11.5 version: link:../../packages/astro autoprefixer: specifier: ^10.4.19 @@ -520,7 +520,7 @@ importers: examples/with-vitest: dependencies: astro: - specifier: ^4.11.3 + specifier: ^4.11.5 version: link:../../packages/astro vitest: specifier: ^1.6.0 From 391e7e635cb49d7ab5faa1c92fa6f2681781e83e Mon Sep 17 00:00:00 2001 From: Matt Kane Date: Mon, 8 Jul 2024 13:09:50 +0100 Subject: [PATCH 15/30] Debugging windows --- packages/astro/package.json | 2 +- packages/astro/src/content/loaders/glob.ts | 10 +++++++--- .../test/fixtures/content-layer/src/content/config.ts | 3 ++- scripts/cmd/test.js | 2 +- 4 files changed, 11 insertions(+), 6 deletions(-) diff --git a/packages/astro/package.json b/packages/astro/package.json index 32a9d68f5ec3..21fd52eb980f 100644 --- a/packages/astro/package.json +++ b/packages/astro/package.json @@ -243,4 +243,4 @@ "publishConfig": { "provenance": true } -} +} \ No newline at end of file diff --git a/packages/astro/src/content/loaders/glob.ts b/packages/astro/src/content/loaders/glob.ts index cd20973480c9..288046e85a7f 100644 --- a/packages/astro/src/content/loaders/glob.ts +++ b/packages/astro/src/content/loaders/glob.ts @@ -136,6 +136,10 @@ export function glob(globOptions: GlobOptions): Loader { ) ); + if (!watcher) { + return; + } + const matcher: RegExp = micromatch.makeRe(globOptions.pattern); const matchesGlob = (entry: string) => !entry.startsWith('../') && matcher.test(entry); @@ -152,11 +156,11 @@ export function glob(globOptions: GlobOptions): Loader { await syncData(entry, baseUrl, options, entryType); logger.info(`Reloaded data from ${green(entry)}`); } - watcher?.on('change', onChange); + watcher.on('change', onChange); - watcher?.on('add', onChange); + watcher.on('add', onChange); - watcher?.on('unlink', async (deletedPath) => { + watcher.on('unlink', async (deletedPath) => { const entry = relative(basePath, deletedPath); if (!matchesGlob(entry)) { return; diff --git a/packages/astro/test/fixtures/content-layer/src/content/config.ts b/packages/astro/test/fixtures/content-layer/src/content/config.ts index 7b5bd16a9abf..360331b8ec5d 100644 --- a/packages/astro/test/fixtures/content-layer/src/content/config.ts +++ b/packages/astro/test/fixtures/content-layer/src/content/config.ts @@ -69,8 +69,9 @@ const cats = defineCollection({ }), }); + // Absolute paths should also work -const absoluteRoot = fileURLToPath(new URL('../../content-outside-src', import.meta.url)) +const absoluteRoot = new URL('../../content-outside-src', import.meta.url).href; const spacecraft = defineCollection({ type: 'experimental_data', diff --git a/scripts/cmd/test.js b/scripts/cmd/test.js index 04f02f73afc0..d0d64a883c60 100644 --- a/scripts/cmd/test.js +++ b/scripts/cmd/test.js @@ -7,7 +7,7 @@ import arg from 'arg'; import glob from 'tiny-glob'; const isCI = !!process.env.CI; -const defaultTimeout = isCI ? 1400000 : 600000; +const defaultTimeout = 600000 //isCI ? 600000 : 600000; export default async function test() { const args = arg({ From 7bc79e9db887a34ee4112fc002863372a05fb264 Mon Sep 17 00:00:00 2001 From: Matt Kane Date: Mon, 8 Jul 2024 18:45:34 +0100 Subject: [PATCH 16/30] Allow file URL for base dir --- packages/astro/src/content/loaders/glob.ts | 4 ++-- .../astro/test/fixtures/content-layer/src/content/config.ts | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/astro/src/content/loaders/glob.ts b/packages/astro/src/content/loaders/glob.ts index 288046e85a7f..03d384c7aa35 100644 --- a/packages/astro/src/content/loaders/glob.ts +++ b/packages/astro/src/content/loaders/glob.ts @@ -21,8 +21,8 @@ export interface GenerateIdOptions { export interface GlobOptions { /** The glob pattern to match files, relative to the base directory */ pattern: string; - /** The base directory to resolve the glob pattern from, relative to the root directory. Defaults to `.` */ - base?: string; + /** The base directory to resolve the glob pattern from. Relative to the root directory, or an absolute file URL. Defaults to `.` */ + base?: string | URL; /** * Function that generates an ID for an entry. Default implementation generates a slug from the entry path. * @returns The ID of the entry. Must be unique per collection. diff --git a/packages/astro/test/fixtures/content-layer/src/content/config.ts b/packages/astro/test/fixtures/content-layer/src/content/config.ts index 360331b8ec5d..49d9d6f4a2b5 100644 --- a/packages/astro/test/fixtures/content-layer/src/content/config.ts +++ b/packages/astro/test/fixtures/content-layer/src/content/config.ts @@ -71,7 +71,7 @@ const cats = defineCollection({ // Absolute paths should also work -const absoluteRoot = new URL('../../content-outside-src', import.meta.url).href; +const absoluteRoot = new URL('../../content-outside-src', import.meta.url); const spacecraft = defineCollection({ type: 'experimental_data', From 4f53a292277b5cbb105d6021e9e4bd107e73747e Mon Sep 17 00:00:00 2001 From: Matt Kane Date: Mon, 8 Jul 2024 19:35:07 +0100 Subject: [PATCH 17/30] Reset time limit --- scripts/cmd/test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/cmd/test.js b/scripts/cmd/test.js index d0d64a883c60..04f02f73afc0 100644 --- a/scripts/cmd/test.js +++ b/scripts/cmd/test.js @@ -7,7 +7,7 @@ import arg from 'arg'; import glob from 'tiny-glob'; const isCI = !!process.env.CI; -const defaultTimeout = 600000 //isCI ? 600000 : 600000; +const defaultTimeout = isCI ? 1400000 : 600000; export default async function test() { const args = arg({ From 741c4d88a498fd5f7c8fdf8e747de4c9da8c59da Mon Sep 17 00:00:00 2001 From: Matt Kane Date: Tue, 9 Jul 2024 16:30:11 +0100 Subject: [PATCH 18/30] wip: add markdown rendering to content layer --- benchmark/bench/memory.js | 2 +- benchmark/make-project/markdown-cc1.js | 58 ++++++++++ benchmark/make-project/markdown-cc2.js | 74 ++++++++++++ packages/astro/package.json | 1 + packages/astro/src/@types/astro.ts | 9 ++ packages/astro/src/content/data-store.ts | 36 +++++- packages/astro/src/content/loaders/file.ts | 8 +- packages/astro/src/content/loaders/glob.ts | 105 ++++++++++++------ packages/astro/src/content/loaders/types.ts | 1 + packages/astro/src/content/runtime.ts | 12 ++ packages/astro/src/content/sync.ts | 4 +- .../content-entry-type.ts | 16 +++ .../content-layer/src/loaders/post-loader.ts | 4 +- .../src/pages/spacecraft/[slug].astro | 7 +- pnpm-lock.yaml | 8 ++ 15 files changed, 295 insertions(+), 50 deletions(-) create mode 100644 benchmark/make-project/markdown-cc1.js create mode 100644 benchmark/make-project/markdown-cc2.js diff --git a/benchmark/bench/memory.js b/benchmark/bench/memory.js index 34a4972f78b1..92ac7b2a8e05 100644 --- a/benchmark/bench/memory.js +++ b/benchmark/bench/memory.js @@ -18,7 +18,7 @@ export async function run(projectDir, outputFile) { const outputFilePath = fileURLToPath(outputFile); console.log('Building and benchmarking...'); - await execaCommand(`node --expose-gc --max_old_space_size=256 ${astroBin} build`, { + await execaCommand(`node --expose-gc --max_old_space_size=10000 ${astroBin} build`, { cwd: root, stdio: 'inherit', env: { diff --git a/benchmark/make-project/markdown-cc1.js b/benchmark/make-project/markdown-cc1.js new file mode 100644 index 000000000000..6ed6287d5eb4 --- /dev/null +++ b/benchmark/make-project/markdown-cc1.js @@ -0,0 +1,58 @@ +import fs from 'node:fs/promises'; +import { loremIpsumMd } from './_util.js'; + +/** + * @param {URL} projectDir + */ +export async function run(projectDir) { + await fs.rm(projectDir, { recursive: true, force: true }); + await fs.mkdir(new URL('./src/pages/blog', projectDir), { recursive: true }); + await fs.mkdir(new URL('./src/content/blog', projectDir), { recursive: true }); + + const promises = []; + + + for (let i = 0; i < 10000; i++) { + const content = `\ +# Article ${i} + +${loremIpsumMd} +`; + promises.push( + fs.writeFile(new URL(`./src/content/blog/article-${i}.md`, projectDir), content, 'utf-8') + ); + } + + + await fs.writeFile( + new URL(`./src/pages/blog/[...slug].astro`, projectDir), + `\ +--- +import { getCollection } from 'astro:content'; +export async function getStaticPaths() { + const blogEntries = await getCollection('blog'); + return blogEntries.map(entry => ({ + params: { slug: entry.slug }, props: { entry }, + })); +} +const { entry } = Astro.props; +const { Content } = await entry.render(); +--- +

{entry.data.title}

+ +`, + 'utf-8' + ); + + await Promise.all(promises); + + await fs.writeFile( + new URL('./astro.config.js', projectDir), + `\ +import { defineConfig } from 'astro/config'; + +export default defineConfig({ +});`, + 'utf-8' + ); +} diff --git a/benchmark/make-project/markdown-cc2.js b/benchmark/make-project/markdown-cc2.js new file mode 100644 index 000000000000..5fbc815a7c10 --- /dev/null +++ b/benchmark/make-project/markdown-cc2.js @@ -0,0 +1,74 @@ +import fs from 'node:fs/promises'; +import { loremIpsumMd } from './_util.js'; + +/** + * @param {URL} projectDir + */ +export async function run(projectDir) { + await fs.rm(projectDir, { recursive: true, force: true }); + await fs.mkdir(new URL('./src/pages/blog', projectDir), { recursive: true }); + await fs.mkdir(new URL('./data/blog', projectDir), { recursive: true }); + await fs.mkdir(new URL('./src/content', projectDir), { recursive: true }); + + const promises = []; + + for (let i = 0; i < 10000; i++) { + const content = `\ +# Article ${i} + +${loremIpsumMd} +`; + promises.push( + fs.writeFile(new URL(`./data/blog/article-${i}.md`, projectDir), content, 'utf-8') + ); + } + + await fs.writeFile( + new URL(`./src/content/config.ts`, projectDir), + /*ts */ ` + import { defineCollection, z } from 'astro:content'; + import { glob } from 'astro/loaders'; + + const blog = defineCollection({ + type: 'experimental_data', + loader: glob({ pattern: '*', base: './data/blog' }), + }); + + export const collections = { blog } + + ` + ); + + await fs.writeFile( + new URL(`./src/pages/blog/[...slug].astro`, projectDir), + `\ +--- +import { getCollection } from 'astro:content'; +export async function getStaticPaths() { + const blogEntries = await getCollection('blog'); + return blogEntries.map(entry => ({ + params: { slug: entry.id }, props: { entry }, + })); +} +const { entry } = Astro.props; +const { Content } = await entry.render(); + +--- +

{entry.data.title}

+ +`, + 'utf-8' + ); + + await Promise.all(promises); + + await fs.writeFile( + new URL('./astro.config.js', projectDir), + `\ +import { defineConfig } from 'astro/config'; + +export default defineConfig({ +});`, + 'utf-8' + ); +} diff --git a/packages/astro/package.json b/packages/astro/package.json index 21fd52eb980f..a9270bddf30a 100644 --- a/packages/astro/package.json +++ b/packages/astro/package.json @@ -185,6 +185,7 @@ "vite": "^5.3.2", "vitefu": "^0.2.5", "which-pm": "^2.2.0", + "xxhash-wasm": "^1.0.2", "yargs-parser": "^21.1.1", "zod": "^3.23.8", "zod-to-json-schema": "^3.23.1", diff --git a/packages/astro/src/@types/astro.ts b/packages/astro/src/@types/astro.ts index d8ba590297ee..5c8d286f1314 100644 --- a/packages/astro/src/@types/astro.ts +++ b/packages/astro/src/@types/astro.ts @@ -48,6 +48,7 @@ import type { } from '../transitions/events.js'; import type { DeepPartial, OmitIndexSignature, Simplify } from '../type-utils.js'; import type { SUPPORTED_MARKDOWN_FILE_EXTENSIONS } from './../core/constants.js'; +import type { DataEntry } from '../content/data-store.js'; export type { AstroIntegrationLogger, ToolbarServerHelpers }; @@ -2276,6 +2277,12 @@ export type DataEntryModule = { }; }; +export interface RenderResult { + code: string; + metadata?: Record; +} +export type RenderFunction = (entry: DataEntry) => Promise; + export interface ContentEntryType { extensions: string[]; getEntryInfo(params: { @@ -2291,6 +2298,8 @@ export interface ContentEntryType { } ): rollup.LoadResult | Promise; contentModuleTypes?: string; + getRenderFunction?(settings: AstroSettings): Promise; + /** * Handle asset propagation for rendered content to avoid bleed. * Ex. MDX content can import styles and scripts, so `handlePropagation` should be true. diff --git a/packages/astro/src/content/data-store.ts b/packages/astro/src/content/data-store.ts index acd159c25ffc..c30fa83ea157 100644 --- a/packages/astro/src/content/data-store.ts +++ b/packages/astro/src/content/data-store.ts @@ -7,6 +7,11 @@ export interface DataEntry { data: Record; filePath?: string; body?: string; + digest?: number | string; + rendered?: { + html: string; + metadata?: Record; + }; } export class DataStore { @@ -90,25 +95,38 @@ export class DataStore { entries: () => this.entries(collectionName), values: () => this.values(collectionName), keys: () => this.keys(collectionName), - set: (key, data, body, filePath) => { + set: ({ id: key, data, body, filePath, digest, rendered }) => { if (!key) { - throw new Error(`Key must be a non-empty string`); + throw new Error(`ID must be a non-empty string`); } const id = String(key); + if (digest) { + const existing = this.get(collectionName, id); + if (existing && existing.digest === digest) { + return false; + } + } const entry: DataEntry = { id, data, }; // We do it like this so we don't waste space stringifying - // the body and filePath if they are not set + // the fields if they are not set if (body) { entry.body = body; } if (filePath) { entry.filePath = filePath; } + if (digest) { + entry.digest = digest; + } + if (rendered) { + entry.rendered = rendered; + } this.set(collectionName, id, entry); + return true; }, delete: (key: string) => this.delete(collectionName, key), clear: () => this.clear(collectionName), @@ -183,7 +201,17 @@ export class DataStore { export interface ScopedDataStore { get: (key: string) => DataEntry | undefined; entries: () => Array<[id: string, DataEntry]>; - set: (key: string, data: Record, body?: string, filePath?: string) => void; + set: (opts: { + id: string; + data: Record; + body?: string; + filePath?: string; + digest?: number | string; + rendered?: { + html: string; + metadata?: Record; + }; + }) => boolean; values: () => Array; keys: () => Array; delete: (key: string) => void; diff --git a/packages/astro/src/content/loaders/file.ts b/packages/astro/src/content/loaders/file.ts index adbd1bf8a291..99608eb95fe6 100644 --- a/packages/astro/src/content/loaders/file.ts +++ b/packages/astro/src/content/loaders/file.ts @@ -37,16 +37,16 @@ export function file(fileName: string): Loader { logger.error(`Item in ${fileName} is missing an id or slug field.`); continue; } - const item = await parseData({ id, data: rawItem, filePath }); - store.set(id, item, undefined, filePath); + const data = await parseData({ id, data: rawItem, filePath }); + store.set({ id, data, filePath }); } } else if (typeof json === 'object') { const entries = Object.entries>(json); logger.debug(`Found object with ${entries.length} entries in ${fileName}`); store.clear(); for (const [id, rawItem] of entries) { - const item = await parseData({ id, data: rawItem, filePath }); - store.set(id, item); + const data = await parseData({ id, data: rawItem, filePath }); + store.set({ id, data }); } } else { logger.error(`Invalid data in ${fileName}. Must be an array or object.`); diff --git a/packages/astro/src/content/loaders/glob.ts b/packages/astro/src/content/loaders/glob.ts index 03d384c7aa35..07ee83e03424 100644 --- a/packages/astro/src/content/loaders/glob.ts +++ b/packages/astro/src/content/loaders/glob.ts @@ -5,9 +5,10 @@ import { green } from 'kleur/colors'; import micromatch from 'micromatch'; import pLimit from 'p-limit'; import { relative } from 'path/posix'; -import type { ContentEntryType } from '../../@types/astro.js'; +import type { ContentEntryType, RenderFunction } from '../../@types/astro.js'; import { getContentEntryIdAndSlug, getEntryConfigByExtMap } from '../utils.js'; import type { Loader, LoaderContext } from './types.js'; +import xxhash from 'xxhash-wasm'; export interface GenerateIdOptions { /** The path to the entry file, relative to the base directory. */ @@ -63,41 +64,75 @@ export function glob(globOptions: GlobOptions): Loader { const fileToIdMap = new Map(); - async function syncData( - entry: string, - base: URL, - { logger, parseData, store }: LoaderContext, - entryType?: ContentEntryType - ) { - if (!entryType) { - logger.warn(`No entry type found for ${entry}`); - return; - } - const fileUrl = new URL(entry, base); - const { body, data } = await entryType.getEntryInfo({ - contents: await fs.readFile(fileUrl, 'utf-8'), - fileUrl, - }); - - const id = generateId({ entry, base, data }); - - const filePath = fileURLToPath(fileUrl); - - const parsedData = await parseData({ - id, - data, - filePath, - }); - - store.set(id, parsedData, body, filePath); - - fileToIdMap.set(filePath, id); - } - return { name: 'glob-loader', load: async (options) => { - const { settings, logger, watcher } = options; + const { settings, logger, watcher, parseData, store } = options; + const { h64ToString } = await xxhash(); + + const renderFunctionByContentType = new WeakMap(); + + async function syncData(entry: string, base: URL, entryType?: ContentEntryType) { + if (!entryType) { + logger.warn(`No entry type found for ${entry}`); + return; + } + const fileUrl = new URL(entry, base); + const contents = await fs.readFile(fileUrl, 'utf-8'); + + const { body, data } = await entryType.getEntryInfo({ + contents, + fileUrl, + }); + + const digest = h64ToString(contents); + + const id = generateId({ entry, base, data }); + + const existingEntry = store.get(id); + + if (existingEntry && existingEntry.digest === digest) { + return; + } + + const filePath = fileURLToPath(fileUrl); + + const parsedData = await parseData({ + id, + data, + filePath, + }); + + if (entryType.getRenderFunction) { + let render = renderFunctionByContentType.get(entryType); + if (!render) { + render = await entryType.getRenderFunction(settings); + renderFunctionByContentType.set(entryType, render); + } + const renderResult = await render({ + id, + data: parsedData, + body, + filePath, + digest, + }); + store.set({ + id, + data: parsedData, + body, + filePath, + digest, + rendered: { + html: renderResult.code, + metadata: renderResult.metadata, + }, + }); + } else { + store.set({ id, data: parsedData, body, filePath, digest }); + } + + fileToIdMap.set(filePath, id); + } const entryConfigByExt = getEntryConfigByExtMap([ ...settings.contentEntryTypes, @@ -131,7 +166,7 @@ export function glob(globOptions: GlobOptions): Loader { files.map((entry) => limit(async () => { const entryType = configForFile(entry); - await syncData(entry, baseDir, options, entryType); + await syncData(entry, baseDir, entryType); }) ) ); @@ -153,7 +188,7 @@ export function glob(globOptions: GlobOptions): Loader { } const entryType = configForFile(changedPath); const baseUrl = pathToFileURL(basePath); - await syncData(entry, baseUrl, options, entryType); + await syncData(entry, baseUrl, entryType); logger.info(`Reloaded data from ${green(entry)}`); } watcher.on('change', onChange); diff --git a/packages/astro/src/content/loaders/types.ts b/packages/astro/src/content/loaders/types.ts index 865e6724e544..de42a501b8b3 100644 --- a/packages/astro/src/content/loaders/types.ts +++ b/packages/astro/src/content/loaders/types.ts @@ -2,6 +2,7 @@ import type { FSWatcher } from 'vite'; import type { ZodSchema } from 'zod'; import type { AstroIntegrationLogger, AstroSettings } from '../../@types/astro.js'; import type { MetaStore, ScopedDataStore } from '../data-store.js'; +import type { XXHashAPI } from 'xxhash-wasm'; export interface ParseDataOptions { /** The ID of the entry. Unique per collection */ diff --git a/packages/astro/src/content/runtime.ts b/packages/astro/src/content/runtime.ts index 7b5d2b6f48af..e37a3a9eac2e 100644 --- a/packages/astro/src/content/runtime.ts +++ b/packages/astro/src/content/runtime.ts @@ -66,6 +66,7 @@ export function createGetCollection({ return [...store.values(collection)].map((entry) => ({ ...entry, collection, + render: async () => renderEntry(entry), })); } else { // eslint-disable-next-line no-console @@ -148,6 +149,7 @@ export function createGetEntryBySlug({ return { ...entry, collection, + render: async () => renderEntry(entry), }; } @@ -267,6 +269,7 @@ export function createGetEntry({ return { ...entry, collection, + render: async () => render({ ...entry, id: lookupId, collection }), } as DataEntryResult | ContentEntryResult; } @@ -315,6 +318,15 @@ type RenderResult = { remarkPluginFrontmatter: Record; }; +async function renderEntry(entry?: DataEntry) { + const Content = createComponent({ + factory() { + return createHeadAndContent('', renderTemplate`${entry?.rendered?.html ?? ''}`); + }, + }); + return { Content }; +} + async function render({ collection, id, diff --git a/packages/astro/src/content/sync.ts b/packages/astro/src/content/sync.ts index 819c8915cc25..0e811304bb31 100644 --- a/packages/astro/src/content/sync.ts +++ b/packages/astro/src/content/sync.ts @@ -6,6 +6,7 @@ import { DATA_STORE_FILE } from './consts.js'; import { DataStore, globalDataStore } from './data-store.js'; import type { DataWithId, LoaderContext } from './loaders/types.js'; import { getEntryData, globalContentConfigObserver } from './utils.js'; + export interface SyncContentLayerOptions { store?: DataStore; settings: AstroSettings; @@ -38,6 +39,7 @@ export async function syncContentLayer({ logger.debug('Content config not loaded, skipping sync'); return; } + await Promise.all( Object.entries(contentConfig.config.collections).map(async ([name, collection]) => { if (collection.type !== 'experimental_data') { @@ -112,6 +114,6 @@ export async function simpleLoader( context.store.clear(); for (const raw of data) { const item = await context.parseData({ id: raw.id, data: raw }); - context.store.set(raw.id, item); + context.store.set({ id: raw.id, data: item }); } } diff --git a/packages/astro/src/vite-plugin-markdown/content-entry-type.ts b/packages/astro/src/vite-plugin-markdown/content-entry-type.ts index 131422298d3f..25860e7a5ff5 100644 --- a/packages/astro/src/vite-plugin-markdown/content-entry-type.ts +++ b/packages/astro/src/vite-plugin-markdown/content-entry-type.ts @@ -1,6 +1,7 @@ import { fileURLToPath } from 'node:url'; import type { ContentEntryType } from '../@types/astro.js'; import { safeParseFrontmatter } from '../content/utils.js'; +import { createMarkdownProcessor } from '@astrojs/markdown-remark'; export const markdownContentEntryType: ContentEntryType = { extensions: ['.md'], @@ -15,4 +16,19 @@ export const markdownContentEntryType: ContentEntryType = { }, // We need to handle propagation for Markdown because they support layouts which will bring in styles. handlePropagation: true, + + async getRenderFunction(settings) { + const processor = await createMarkdownProcessor(settings.config.markdown); + return async function renderToString(entry) { + if (!entry.body) { + return { + code: '', + }; + } + const res = await processor.render(entry.body, { + frontmatter: entry.data, + }); + return res; + }; + }, }; diff --git a/packages/astro/test/fixtures/content-layer/src/loaders/post-loader.ts b/packages/astro/test/fixtures/content-layer/src/loaders/post-loader.ts index 1d7aa0df1843..e75403caa2b3 100644 --- a/packages/astro/test/fixtures/content-layer/src/loaders/post-loader.ts +++ b/packages/astro/test/fixtures/content-layer/src/loaders/post-loader.ts @@ -26,8 +26,8 @@ export function loader(config:PostLoaderConfig): Loader { store.clear(); - for (const post of posts.slice(0, 10)) { - store.set(post.id, post); + for (const data of posts.slice(0, 10)) { + store.set({id: data.id, data}); } meta.set('lastSynced', String(Date.now())); }, diff --git a/packages/astro/test/fixtures/content-layer/src/pages/spacecraft/[slug].astro b/packages/astro/test/fixtures/content-layer/src/pages/spacecraft/[slug].astro index ceff0b361e71..b7f2f5eb592e 100644 --- a/packages/astro/test/fixtures/content-layer/src/pages/spacecraft/[slug].astro +++ b/packages/astro/test/fixtures/content-layer/src/pages/spacecraft/[slug].astro @@ -18,10 +18,11 @@ export const getStaticPaths = (async () => { const { craft } = Astro.props as any + +const { Content } = await craft.render() + ---

{craft.data.title}

-
-	{craft.body}
-
+ diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0bc02855e9cc..7a989f4436ba 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -711,6 +711,9 @@ importers: which-pm: specifier: ^2.2.0 version: 2.2.0 + xxhash-wasm: + specifier: ^1.0.2 + version: 1.0.2 yargs-parser: specifier: ^21.1.1 version: 21.1.1 @@ -11723,6 +11726,9 @@ packages: resolution: {integrity: sha512-f9s+fUkX04BxQf+7mMWAp5zk61pciie+fFLC9hX9UVvCeJQfNHRHXpeo5MPcR0EUf57PYLdt+ZO4f3Ipk2oZUw==} engines: {node: '>=0.1'} + xxhash-wasm@1.0.2: + resolution: {integrity: sha512-ibF0Or+FivM9lNrg+HGJfVX8WJqgo+kCLDc4vx6xMeTce7Aj+DLttKbxxRR/gNLSAelRc1omAPlJ77N/Jem07A==} + y18n@5.0.8: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} engines: {node: '>=10'} @@ -18467,6 +18473,8 @@ snapshots: xmldom-sre@0.1.31: {} + xxhash-wasm@1.0.2: {} + y18n@5.0.8: {} yallist@2.1.2: {} From a36548cea4362b06b829a59499bb3c3932755577 Mon Sep 17 00:00:00 2001 From: Matt Kane Date: Tue, 9 Jul 2024 16:39:41 +0100 Subject: [PATCH 19/30] use cached entries --- packages/astro/src/content/loaders/glob.ts | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/packages/astro/src/content/loaders/glob.ts b/packages/astro/src/content/loaders/glob.ts index 07ee83e03424..d7b39bedd87a 100644 --- a/packages/astro/src/content/loaders/glob.ts +++ b/packages/astro/src/content/loaders/glob.ts @@ -72,6 +72,8 @@ export function glob(globOptions: GlobOptions): Loader { const renderFunctionByContentType = new WeakMap(); + const untouchedEntries = new Set(options.store.keys()); + async function syncData(entry: string, base: URL, entryType?: ContentEntryType) { if (!entryType) { logger.warn(`No entry type found for ${entry}`); @@ -88,6 +90,7 @@ export function glob(globOptions: GlobOptions): Loader { const digest = h64ToString(contents); const id = generateId({ entry, base, data }); + untouchedEntries.delete(id); const existingEntry = store.get(id); @@ -161,7 +164,6 @@ export function glob(globOptions: GlobOptions): Loader { } const limit = pLimit(10); - options.store.clear(); await Promise.all( files.map((entry) => limit(async () => { @@ -170,6 +172,10 @@ export function glob(globOptions: GlobOptions): Loader { }) ) ); + // Remove entries that were not found this time + untouchedEntries.forEach((id) => { + options.store.delete(id); + }); if (!watcher) { return; From c7c68a86c376dc0f38b1bdbaf729b312e7bcdd4f Mon Sep 17 00:00:00 2001 From: Matt Kane Date: Tue, 9 Jul 2024 16:57:19 +0100 Subject: [PATCH 20/30] CLean up types --- packages/astro/src/@types/astro.ts | 8 ++------ packages/astro/src/content/data-store.ts | 15 +++++++-------- packages/astro/src/content/loaders/glob.ts | 7 ++----- packages/astro/src/content/loaders/types.ts | 1 - packages/astro/src/content/runtime.ts | 6 +++--- .../vite-plugin-markdown/content-entry-type.ts | 9 ++++++--- 6 files changed, 20 insertions(+), 26 deletions(-) diff --git a/packages/astro/src/@types/astro.ts b/packages/astro/src/@types/astro.ts index 5c8d286f1314..3afa406b4f28 100644 --- a/packages/astro/src/@types/astro.ts +++ b/packages/astro/src/@types/astro.ts @@ -48,7 +48,7 @@ import type { } from '../transitions/events.js'; import type { DeepPartial, OmitIndexSignature, Simplify } from '../type-utils.js'; import type { SUPPORTED_MARKDOWN_FILE_EXTENSIONS } from './../core/constants.js'; -import type { DataEntry } from '../content/data-store.js'; +import type { DataEntry, RenderedContent } from '../content/data-store.js'; export type { AstroIntegrationLogger, ToolbarServerHelpers }; @@ -2277,11 +2277,7 @@ export type DataEntryModule = { }; }; -export interface RenderResult { - code: string; - metadata?: Record; -} -export type RenderFunction = (entry: DataEntry) => Promise; +export type RenderFunction = (entry: DataEntry) => Promise; export interface ContentEntryType { extensions: string[]; diff --git a/packages/astro/src/content/data-store.ts b/packages/astro/src/content/data-store.ts index c30fa83ea157..720985d05aad 100644 --- a/packages/astro/src/content/data-store.ts +++ b/packages/astro/src/content/data-store.ts @@ -2,16 +2,18 @@ import { promises as fs, type PathLike, existsSync } from 'fs'; const SAVE_DEBOUNCE_MS = 500; +export interface RenderedContent { + html: string; + metadata?: Record; +} + export interface DataEntry { id: string; data: Record; filePath?: string; body?: string; digest?: number | string; - rendered?: { - html: string; - metadata?: Record; - }; + rendered?: RenderedContent; } export class DataStore { @@ -207,10 +209,7 @@ export interface ScopedDataStore { body?: string; filePath?: string; digest?: number | string; - rendered?: { - html: string; - metadata?: Record; - }; + rendered?: RenderedContent; }) => boolean; values: () => Array; keys: () => Array; diff --git a/packages/astro/src/content/loaders/glob.ts b/packages/astro/src/content/loaders/glob.ts index d7b39bedd87a..09f9acc4effe 100644 --- a/packages/astro/src/content/loaders/glob.ts +++ b/packages/astro/src/content/loaders/glob.ts @@ -112,7 +112,7 @@ export function glob(globOptions: GlobOptions): Loader { render = await entryType.getRenderFunction(settings); renderFunctionByContentType.set(entryType, render); } - const renderResult = await render({ + const rendered = await render({ id, data: parsedData, body, @@ -125,10 +125,7 @@ export function glob(globOptions: GlobOptions): Loader { body, filePath, digest, - rendered: { - html: renderResult.code, - metadata: renderResult.metadata, - }, + rendered, }); } else { store.set({ id, data: parsedData, body, filePath, digest }); diff --git a/packages/astro/src/content/loaders/types.ts b/packages/astro/src/content/loaders/types.ts index de42a501b8b3..865e6724e544 100644 --- a/packages/astro/src/content/loaders/types.ts +++ b/packages/astro/src/content/loaders/types.ts @@ -2,7 +2,6 @@ import type { FSWatcher } from 'vite'; import type { ZodSchema } from 'zod'; import type { AstroIntegrationLogger, AstroSettings } from '../../@types/astro.js'; import type { MetaStore, ScopedDataStore } from '../data-store.js'; -import type { XXHashAPI } from 'xxhash-wasm'; export interface ParseDataOptions { /** The ID of the entry. Unique per collection */ diff --git a/packages/astro/src/content/runtime.ts b/packages/astro/src/content/runtime.ts index e37a3a9eac2e..268085abc6d6 100644 --- a/packages/astro/src/content/runtime.ts +++ b/packages/astro/src/content/runtime.ts @@ -66,7 +66,7 @@ export function createGetCollection({ return [...store.values(collection)].map((entry) => ({ ...entry, collection, - render: async () => renderEntry(entry), + render: () => renderEntry(entry), })); } else { // eslint-disable-next-line no-console @@ -149,7 +149,7 @@ export function createGetEntryBySlug({ return { ...entry, collection, - render: async () => renderEntry(entry), + render: () => renderEntry(entry), }; } @@ -269,7 +269,7 @@ export function createGetEntry({ return { ...entry, collection, - render: async () => render({ ...entry, id: lookupId, collection }), + render: () => renderEntry(entry), } as DataEntryResult | ContentEntryResult; } diff --git a/packages/astro/src/vite-plugin-markdown/content-entry-type.ts b/packages/astro/src/vite-plugin-markdown/content-entry-type.ts index 25860e7a5ff5..fca75e5ac007 100644 --- a/packages/astro/src/vite-plugin-markdown/content-entry-type.ts +++ b/packages/astro/src/vite-plugin-markdown/content-entry-type.ts @@ -22,13 +22,16 @@ export const markdownContentEntryType: ContentEntryType = { return async function renderToString(entry) { if (!entry.body) { return { - code: '', + html: '', }; } - const res = await processor.render(entry.body, { + const result = await processor.render(entry.body, { frontmatter: entry.data, }); - return res; + return { + html: result.code, + metadata: result.metadata, + }; }; }, }; From 4456717d620fa0e654e4afeb86e73ba7dd267a18 Mon Sep 17 00:00:00 2001 From: Matt Kane Date: Wed, 10 Jul 2024 09:15:42 +0100 Subject: [PATCH 21/30] Instrument more of the build --- benchmark/bench/memory.js | 2 +- packages/astro/src/core/build/index.ts | 14 ++++++++------ 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/benchmark/bench/memory.js b/benchmark/bench/memory.js index 92ac7b2a8e05..3a437b3fe357 100644 --- a/benchmark/bench/memory.js +++ b/benchmark/bench/memory.js @@ -18,7 +18,7 @@ export async function run(projectDir, outputFile) { const outputFilePath = fileURLToPath(outputFile); console.log('Building and benchmarking...'); - await execaCommand(`node --expose-gc --max_old_space_size=10000 ${astroBin} build`, { + await execaCommand(`node --expose-gc --max_old_space_size=10000 ${astroBin} build --silent`, { cwd: root, stdio: 'inherit', env: { diff --git a/packages/astro/src/core/build/index.ts b/packages/astro/src/core/build/index.ts index 854a3fbd0914..c0b35d4502c2 100644 --- a/packages/astro/src/core/build/index.ts +++ b/packages/astro/src/core/build/index.ts @@ -149,19 +149,21 @@ class AstroBuilder { if (syncRet !== 0) { return process.exit(syncRet); } - - const dataStore = await DataStore.fromModule(); - globalDataStore.set(dataStore); - await syncContentLayer({ settings: this.settings, logger: logger }); - return { viteConfig }; } /** Run the build logic. build() is marked private because usage should go through ".run()" */ private async build({ viteConfig }: { viteConfig: vite.InlineConfig }) { + this.settings.timer.start('Total build'); + await runHookBuildStart({ config: this.settings.config, logging: this.logger }); this.validateConfig(); + const dataStore = await DataStore.fromModule(); + globalDataStore.set(dataStore); + this.settings.timer.start('Sync content layer'); + await syncContentLayer({ settings: this.settings, logger: this.logger }); + this.settings.timer.end('Sync content layer'); this.logger.info('build', `output: ${blue('"' + this.settings.config.output + '"')}`); this.logger.info('build', `directory: ${blue(fileURLToPath(this.settings.config.outDir))}`); if (this.settings.adapter) { @@ -233,7 +235,7 @@ class AstroBuilder { buildMode: this.settings.config.output, }); } - + this.settings.timer.end('Total build'); // Benchmark results this.settings.timer.writeStats(); } From 3a15fe3a1afd59c8c7011bcf97bb6a1f07292e0a Mon Sep 17 00:00:00 2001 From: Matt Kane Date: Fri, 12 Jul 2024 10:37:42 +0100 Subject: [PATCH 22/30] Add digest helper --- packages/astro/package.json | 2 +- packages/astro/src/@types/astro.ts | 2 +- packages/astro/src/content/loaders/glob.ts | 20 +++++++------------ packages/astro/src/content/loaders/types.ts | 3 +++ packages/astro/src/content/sync.ts | 9 +++++++++ packages/astro/src/content/utils.ts | 1 + .../content-entry-type.ts | 2 +- packages/astro/test/content-layer.test.js | 4 ++-- 8 files changed, 25 insertions(+), 18 deletions(-) diff --git a/packages/astro/package.json b/packages/astro/package.json index 4de3f4fc6866..12585cbafaae 100644 --- a/packages/astro/package.json +++ b/packages/astro/package.json @@ -246,4 +246,4 @@ "publishConfig": { "provenance": true } -} \ No newline at end of file +} diff --git a/packages/astro/src/@types/astro.ts b/packages/astro/src/@types/astro.ts index 33d3958ef8c8..115a710ed74c 100644 --- a/packages/astro/src/@types/astro.ts +++ b/packages/astro/src/@types/astro.ts @@ -17,6 +17,7 @@ import type { ActionInputSchema, } from '../actions/runtime/virtual/server.js'; import type { RemotePattern } from '../assets/utils/remotePattern.js'; +import type { DataEntry, RenderedContent } from '../content/data-store.js'; import type { AssetsPrefix, SerializedSSRManifest } from '../core/app/types.js'; import type { PageBuildData } from '../core/build/types.js'; import type { AstroConfigType } from '../core/config/index.js'; @@ -52,7 +53,6 @@ import type { } from '../transitions/events.js'; import type { DeepPartial, OmitIndexSignature, Simplify } from '../type-utils.js'; import type { SUPPORTED_MARKDOWN_FILE_EXTENSIONS } from './../core/constants.js'; -import type { DataEntry, RenderedContent } from '../content/data-store.js'; export type { AstroIntegrationLogger, ToolbarServerHelpers }; diff --git a/packages/astro/src/content/loaders/glob.ts b/packages/astro/src/content/loaders/glob.ts index 09f9acc4effe..27590aa98e21 100644 --- a/packages/astro/src/content/loaders/glob.ts +++ b/packages/astro/src/content/loaders/glob.ts @@ -7,8 +7,7 @@ import pLimit from 'p-limit'; import { relative } from 'path/posix'; import type { ContentEntryType, RenderFunction } from '../../@types/astro.js'; import { getContentEntryIdAndSlug, getEntryConfigByExtMap } from '../utils.js'; -import type { Loader, LoaderContext } from './types.js'; -import xxhash from 'xxhash-wasm'; +import type { Loader } from './types.js'; export interface GenerateIdOptions { /** The path to the entry file, relative to the base directory. */ @@ -66,13 +65,10 @@ export function glob(globOptions: GlobOptions): Loader { return { name: 'glob-loader', - load: async (options) => { - const { settings, logger, watcher, parseData, store } = options; - const { h64ToString } = await xxhash(); - + load: async ({ settings, logger, watcher, parseData, store, generateDigest }) => { const renderFunctionByContentType = new WeakMap(); - const untouchedEntries = new Set(options.store.keys()); + const untouchedEntries = new Set(store.keys()); async function syncData(entry: string, base: URL, entryType?: ContentEntryType) { if (!entryType) { @@ -87,13 +83,13 @@ export function glob(globOptions: GlobOptions): Loader { fileUrl, }); - const digest = h64ToString(contents); - const id = generateId({ entry, base, data }); untouchedEntries.delete(id); const existingEntry = store.get(id); + const digest = generateDigest(contents); + if (existingEntry && existingEntry.digest === digest) { return; } @@ -170,9 +166,7 @@ export function glob(globOptions: GlobOptions): Loader { ) ); // Remove entries that were not found this time - untouchedEntries.forEach((id) => { - options.store.delete(id); - }); + untouchedEntries.forEach((id) => store.delete(id)); if (!watcher) { return; @@ -205,7 +199,7 @@ export function glob(globOptions: GlobOptions): Loader { } const id = fileToIdMap.get(deletedPath); if (id) { - options.store.delete(id); + store.delete(id); fileToIdMap.delete(deletedPath); } }); diff --git a/packages/astro/src/content/loaders/types.ts b/packages/astro/src/content/loaders/types.ts index 865e6724e544..efe4dd999f76 100644 --- a/packages/astro/src/content/loaders/types.ts +++ b/packages/astro/src/content/loaders/types.ts @@ -31,6 +31,9 @@ export interface LoaderContext { /** Validates and parses the data according to the collection schema */ parseData(props: ParseDataOptions): Promise; + /** Generates a non-cryptographic content digest. This can be used to check if the data has changed */ + generateDigest(data: Record | string): string; + /** When running in dev, this is a filesystem watcher that can be used to trigger updates */ watcher?: FSWatcher; } diff --git a/packages/astro/src/content/sync.ts b/packages/astro/src/content/sync.ts index 0e811304bb31..10e0ab426e05 100644 --- a/packages/astro/src/content/sync.ts +++ b/packages/astro/src/content/sync.ts @@ -1,5 +1,6 @@ import { promises as fs, existsSync } from 'fs'; import type { FSWatcher } from 'vite'; +import xxhash from 'xxhash-wasm'; import type { AstroSettings } from '../@types/astro.js'; import type { Logger } from '../core/logger/core.js'; import { DATA_STORE_FILE } from './consts.js'; @@ -40,6 +41,13 @@ export async function syncContentLayer({ return; } + const { h64ToString } = await xxhash(); + + const generateDigest = (data: Record | string) => { + const dataString = typeof data === 'string' ? data : JSON.stringify(data); + return h64ToString(dataString); + }; + await Promise.all( Object.entries(contentConfig.config.collections).map(async ([name, collection]) => { if (collection.type !== 'experimental_data') { @@ -84,6 +92,7 @@ export async function syncContentLayer({ logger: globalLogger.forkIntegrationLogger(collection.loader.name ?? 'content'), settings, parseData, + generateDigest, watcher, }; diff --git a/packages/astro/src/content/utils.ts b/packages/astro/src/content/utils.ts index bbb6f6e18d33..fe2c4e4ef78a 100644 --- a/packages/astro/src/content/utils.ts +++ b/packages/astro/src/content/utils.ts @@ -71,6 +71,7 @@ export const collectionConfigParser = z.union([ logger: z.any(), settings: z.any(), parseData: z.any(), + generateDigest: z.function(z.tuple([z.any()], z.string())), watcher: z.any().optional(), }), ], diff --git a/packages/astro/src/vite-plugin-markdown/content-entry-type.ts b/packages/astro/src/vite-plugin-markdown/content-entry-type.ts index fca75e5ac007..be546a9fe9c2 100644 --- a/packages/astro/src/vite-plugin-markdown/content-entry-type.ts +++ b/packages/astro/src/vite-plugin-markdown/content-entry-type.ts @@ -1,7 +1,7 @@ import { fileURLToPath } from 'node:url'; +import { createMarkdownProcessor } from '@astrojs/markdown-remark'; import type { ContentEntryType } from '../@types/astro.js'; import { safeParseFrontmatter } from '../content/utils.js'; -import { createMarkdownProcessor } from '@astrojs/markdown-remark'; export const markdownContentEntryType: ContentEntryType = { extensions: ['.md'], diff --git a/packages/astro/test/content-layer.test.js b/packages/astro/test/content-layer.test.js index 4e1f2d7c3a66..dc17c225ef6e 100644 --- a/packages/astro/test/content-layer.test.js +++ b/packages/astro/test/content-layer.test.js @@ -1,8 +1,8 @@ import assert from 'node:assert/strict'; -import { after, before, describe, it } from 'node:test'; -import { loadFixture } from './test-utils.js'; import { sep } from 'node:path'; import { sep as posixSep } from 'node:path/posix'; +import { after, before, describe, it } from 'node:test'; +import { loadFixture } from './test-utils.js'; describe('Content Layer', () => { /** @type {import("./test-utils.js").Fixture} */ From 29bce4ff72282c2cbff0af9ffbdf2c48a6e3f924 Mon Sep 17 00:00:00 2001 From: Matt Kane Date: Fri, 12 Jul 2024 10:41:40 +0100 Subject: [PATCH 23/30] Add comments --- packages/astro/src/content/loaders/glob.ts | 1 + packages/astro/src/content/sync.ts | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/astro/src/content/loaders/glob.ts b/packages/astro/src/content/loaders/glob.ts index 27590aa98e21..f3f08a2bd339 100644 --- a/packages/astro/src/content/loaders/glob.ts +++ b/packages/astro/src/content/loaders/glob.ts @@ -106,6 +106,7 @@ export function glob(globOptions: GlobOptions): Loader { let render = renderFunctionByContentType.get(entryType); if (!render) { render = await entryType.getRenderFunction(settings); + // Cache the render function for this content type, so it can re-use parsers and other expensive setup renderFunctionByContentType.set(entryType, render); } const rendered = await render({ diff --git a/packages/astro/src/content/sync.ts b/packages/astro/src/content/sync.ts index 10e0ab426e05..ec8aed27caf0 100644 --- a/packages/astro/src/content/sync.ts +++ b/packages/astro/src/content/sync.ts @@ -40,7 +40,8 @@ export async function syncContentLayer({ logger.debug('Content config not loaded, skipping sync'); return; } - + // xxhash is a very fast non-cryptographic hash function that is used to generate a content digest + // It uses wasm, so we need to load it asynchronously. const { h64ToString } = await xxhash(); const generateDigest = (data: Record | string) => { From 88e5d7f6c981da23a79666a2a3b7289aa94f6b64 Mon Sep 17 00:00:00 2001 From: Matt Kane Date: Fri, 12 Jul 2024 16:43:07 +0100 Subject: [PATCH 24/30] Make image extraction work --- packages/astro/src/content/runtime.ts | 8 +++----- .../vite-plugin-markdown/content-entry-type.ts | 9 +++++++-- .../content-outside-src/columbia-copy.md | 2 +- .../content-outside-src/columbia.md | 11 +++++++---- .../content-outside-src/shuttle.jpg | Bin 0 -> 174008 bytes .../content-layer/src/content/config.ts | 2 +- 6 files changed, 19 insertions(+), 13 deletions(-) create mode 100644 packages/astro/test/fixtures/content-layer/content-outside-src/shuttle.jpg diff --git a/packages/astro/src/content/runtime.ts b/packages/astro/src/content/runtime.ts index 268085abc6d6..423dcd2fab24 100644 --- a/packages/astro/src/content/runtime.ts +++ b/packages/astro/src/content/runtime.ts @@ -12,6 +12,7 @@ import { renderTemplate, renderUniqueStylesheet, unescapeHTML, + render as serverRender, } from '../runtime/server/index.js'; import { type DataEntry, globalDataStore } from './data-store.js'; import type { ContentLookupMap } from './utils.js'; @@ -319,11 +320,8 @@ type RenderResult = { }; async function renderEntry(entry?: DataEntry) { - const Content = createComponent({ - factory() { - return createHeadAndContent('', renderTemplate`${entry?.rendered?.html ?? ''}`); - }, - }); + console.log('entry:', entry?.rendered?.metadata); + const Content = createComponent(() => serverRender`${unescapeHTML(entry?.rendered?.html)}`); return { Content }; } diff --git a/packages/astro/src/vite-plugin-markdown/content-entry-type.ts b/packages/astro/src/vite-plugin-markdown/content-entry-type.ts index be546a9fe9c2..9b78d8f35149 100644 --- a/packages/astro/src/vite-plugin-markdown/content-entry-type.ts +++ b/packages/astro/src/vite-plugin-markdown/content-entry-type.ts @@ -1,4 +1,4 @@ -import { fileURLToPath } from 'node:url'; +import { fileURLToPath, pathToFileURL } from 'node:url'; import { createMarkdownProcessor } from '@astrojs/markdown-remark'; import type { ContentEntryType } from '../@types/astro.js'; import { safeParseFrontmatter } from '../content/utils.js'; @@ -27,10 +27,15 @@ export const markdownContentEntryType: ContentEntryType = { } const result = await processor.render(entry.body, { frontmatter: entry.data, + // @ts-expect-error Internal API + fileURL: entry.filePath ? pathToFileURL(entry.filePath) : undefined, }); return { html: result.code, - metadata: result.metadata, + metadata: { + ...result.metadata, + imagePaths: Array.from(result.metadata.imagePaths), + }, }; }; }, diff --git a/packages/astro/test/fixtures/content-layer/content-outside-src/columbia-copy.md b/packages/astro/test/fixtures/content-layer/content-outside-src/columbia-copy.md index 4971108e36ed..f6443af0f972 100644 --- a/packages/astro/test/fixtures/content-layer/content-outside-src/columbia-copy.md +++ b/packages/astro/test/fixtures/content-layer/content-outside-src/columbia-copy.md @@ -1,5 +1,5 @@ --- -title: Columbia +title: More Columbia description: 'Learn about the Columbia NASA space shuttle.' publishedDate: 'Sat May 21 2022 00:00:00 GMT-0400 (Eastern Daylight Time)' tags: [space, 90s] diff --git a/packages/astro/test/fixtures/content-layer/content-outside-src/columbia.md b/packages/astro/test/fixtures/content-layer/content-outside-src/columbia.md index 4971108e36ed..7e4a04f5fb27 100644 --- a/packages/astro/test/fixtures/content-layer/content-outside-src/columbia.md +++ b/packages/astro/test/fixtures/content-layer/content-outside-src/columbia.md @@ -7,9 +7,12 @@ tags: [space, 90s] **Source:** [Wikipedia](https://en.wikipedia.org/wiki/Space_Shuttle_Endeavour) -Space Shuttle Endeavour (Orbiter Vehicle Designation: OV-105) is a retired orbiter from NASA's Space Shuttle program and the fifth and final operational Shuttle built. It embarked on its first mission, STS-49, in May 1992 and its 25th and final mission, STS-134, in May 2011. STS-134 was expected to be the final mission of the Space Shuttle program, but with the authorization of STS-135, Atlantis became the last shuttle to fly. +![columbia](./shuttle.jpg) -The United States Congress approved the construction of Endeavour in 1987 to replace the Space Shuttle Challenger, which was destroyed in 1986. +## Columbia -NASA chose, on cost grounds, to build much of Endeavour from spare parts rather than refitting the Space Shuttle Enterprise, and used structural spares built during the construction of Discovery and Atlantis in its assembly. -Space Shuttle Endeavour (Orbiter Vehicle Designation: OV-105) is a retired orbiter from NASA's Space Shuttle program and the fifth and final operational Shuttle built. It embarked on its first mission, STS-49, in May 1992 and its 25th and final mission, STS-134, in May 2011. STS-134 was expected to be the final mission of the Space Shuttle program, but with the authorization of STS-135, Atlantis became the last shuttle to fly. +Space Shuttle Columbia (Orbiter Vehicle Designation: OV-102) was the first space-rated orbiter in NASA's Space Shuttle fleet. It launched for the first time on mission STS-1 on April 12, 1981, the first flight of the Space Shuttle program. Over 22 years of service, it completed 27 missions before disintegrating during re-entry near the end of its 28th mission, STS-107 on February 1, 2003, resulting in the deaths of all seven crew members. + +Columbia was named after the American sloop Columbia Rediviva which, from 1787 to 1793, under the command of Captain Robert Gray, explored the US Pacific Northwest and became the first American vessel to circumnavigate the globe. It is also named after the Command Module of Apollo 11, the first crewed landing on another celestial body. Columbia + +Columbia was the first space shuttle to reach space, on mission STS-1. It was also the first space shuttle to be launched more than once, with a total of 28 missions flown over 22 years. In 2003, Columbia was destroyed as it re-entered Earth's atmosphere, killing all seven crew members. The disaster led to the grounding of the space shuttle fleet for over two years, and the eventual retirement of the remaining orbiters. diff --git a/packages/astro/test/fixtures/content-layer/content-outside-src/shuttle.jpg b/packages/astro/test/fixtures/content-layer/content-outside-src/shuttle.jpg new file mode 100644 index 0000000000000000000000000000000000000000..80b8ea67b8e497a8d0dec5ec6c25c13befae8dcb GIT binary patch literal 174008 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 literal 0 HcmV?d00001 diff --git a/packages/astro/test/fixtures/content-layer/src/content/config.ts b/packages/astro/test/fixtures/content-layer/src/content/config.ts index 49d9d6f4a2b5..6e806a9d6449 100644 --- a/packages/astro/test/fixtures/content-layer/src/content/config.ts +++ b/packages/astro/test/fixtures/content-layer/src/content/config.ts @@ -75,7 +75,7 @@ const absoluteRoot = new URL('../../content-outside-src', import.meta.url); const spacecraft = defineCollection({ type: 'experimental_data', - loader: glob({ pattern: '*', base: absoluteRoot }), + loader: glob({ pattern: '*.md', base: absoluteRoot }), }); const numbers = defineCollection({ From 81ee3c59c410037dfc092fecfd0b3bda27e386f7 Mon Sep 17 00:00:00 2001 From: Matt Kane Date: Thu, 18 Jul 2024 11:42:25 +0100 Subject: [PATCH 25/30] feat: image support for content layer (#11469) * wip * wip * Add image to benchmark * Stub assets if missing * Resolve assets in data * Ignore virtual module * Format * rm log * Handle images when using cached data * Fix CCC * Add a comment * Changes from review * Format * Use relative paths for asset files * Pass all md props to getImage * Ensure dotastro dir exists * Fix tests * Changes from review * Don't use temp array in getcollection * Add error handling * Format * Handle paths that are already relative --- benchmark/make-project/image.jpg | Bin 0 -> 174008 bytes benchmark/make-project/markdown-cc1.js | 5 + benchmark/make-project/markdown-cc2.js | 4 + benchmark/package.json | 3 +- packages/astro/package.json | 1 + .../astro/src/assets/utils/resolveImports.ts | 40 ++++++ packages/astro/src/content/consts.ts | 6 + packages/astro/src/content/data-store.ts | 128 +++++++++++++++++- packages/astro/src/content/loaders/file.ts | 13 +- packages/astro/src/content/loaders/glob.ts | 31 +++-- packages/astro/src/content/runtime.ts | 117 ++++++++++++++-- packages/astro/src/content/sync.ts | 45 +++--- packages/astro/src/content/types-generator.ts | 2 +- packages/astro/src/content/utils.ts | 74 ++++++++-- .../src/content/vite-plugin-content-assets.ts | 14 +- .../vite-plugin-content-virtual-mod.ts | 14 ++ packages/astro/src/core/errors/errors-data.ts | 13 ++ packages/astro/test/content-layer.test.js | 20 +-- .../fixtures/content-layer/astro.config.mjs | 8 ++ .../content-outside-src/columbia.md | 6 +- .../content-layer/images/atlantis.avif | Bin 0 -> 74927 bytes .../fixtures/content-layer/images/launch.webp | Bin 0 -> 73552 bytes .../fixtures/content-layer/images/shuttle.jpg | Bin 0 -> 174008 bytes .../content-layer/src/content/config.ts | 7 + .../src/pages/collections.json.js | 4 +- .../src/pages/spacecraft/[slug].astro | 3 + pnpm-lock.yaml | 12 ++ 27 files changed, 491 insertions(+), 79 deletions(-) create mode 100644 benchmark/make-project/image.jpg create mode 100644 packages/astro/src/assets/utils/resolveImports.ts create mode 100644 packages/astro/test/fixtures/content-layer/images/atlantis.avif create mode 100644 packages/astro/test/fixtures/content-layer/images/launch.webp create mode 100644 packages/astro/test/fixtures/content-layer/images/shuttle.jpg diff --git a/benchmark/make-project/image.jpg b/benchmark/make-project/image.jpg new file mode 100644 index 0000000000000000000000000000000000000000..80b8ea67b8e497a8d0dec5ec6c25c13befae8dcb GIT binary patch literal 174008 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 literal 0 HcmV?d00001 diff --git a/benchmark/make-project/markdown-cc1.js b/benchmark/make-project/markdown-cc1.js index 6ed6287d5eb4..6c83959601e3 100644 --- a/benchmark/make-project/markdown-cc1.js +++ b/benchmark/make-project/markdown-cc1.js @@ -8,6 +8,7 @@ export async function run(projectDir) { await fs.rm(projectDir, { recursive: true, force: true }); await fs.mkdir(new URL('./src/pages/blog', projectDir), { recursive: true }); await fs.mkdir(new URL('./src/content/blog', projectDir), { recursive: true }); + await fs.copyFile(new URL('./image.jpg', import.meta.url), new URL('./src/image.jpg', projectDir)); const promises = []; @@ -17,6 +18,10 @@ export async function run(projectDir) { # Article ${i} ${loremIpsumMd} + +![image ${i}](../../image.jpg) + + `; promises.push( fs.writeFile(new URL(`./src/content/blog/article-${i}.md`, projectDir), content, 'utf-8') diff --git a/benchmark/make-project/markdown-cc2.js b/benchmark/make-project/markdown-cc2.js index 5fbc815a7c10..05dd73fab54f 100644 --- a/benchmark/make-project/markdown-cc2.js +++ b/benchmark/make-project/markdown-cc2.js @@ -9,6 +9,7 @@ export async function run(projectDir) { await fs.mkdir(new URL('./src/pages/blog', projectDir), { recursive: true }); await fs.mkdir(new URL('./data/blog', projectDir), { recursive: true }); await fs.mkdir(new URL('./src/content', projectDir), { recursive: true }); + await fs.copyFile(new URL('./image.jpg', import.meta.url), new URL('./image.jpg', projectDir)); const promises = []; @@ -17,6 +18,9 @@ export async function run(projectDir) { # Article ${i} ${loremIpsumMd} + +![image ${i}](../../image.jpg) + `; promises.push( fs.writeFile(new URL(`./data/blog/article-${i}.md`, projectDir), content, 'utf-8') diff --git a/benchmark/package.json b/benchmark/package.json index 5f7206242b45..d56a6d1b0673 100644 --- a/benchmark/package.json +++ b/benchmark/package.json @@ -16,6 +16,7 @@ "markdown-table": "^3.0.3", "mri": "^1.2.0", "port-authority": "^2.0.1", - "pretty-bytes": "^6.1.1" + "pretty-bytes": "^6.1.1", + "sharp": "^0.33.3" } } diff --git a/packages/astro/package.json b/packages/astro/package.json index b9bc36d885d7..617c894a1462 100644 --- a/packages/astro/package.json +++ b/packages/astro/package.json @@ -170,6 +170,7 @@ "magic-string": "^0.30.10", "micromatch": "^4.0.7", "mrmime": "^2.0.0", + "neotraverse": "^0.6.9", "ora": "^8.0.1", "p-limit": "^6.1.0", "p-queue": "^8.0.1", diff --git a/packages/astro/src/assets/utils/resolveImports.ts b/packages/astro/src/assets/utils/resolveImports.ts new file mode 100644 index 000000000000..8d147552ece5 --- /dev/null +++ b/packages/astro/src/assets/utils/resolveImports.ts @@ -0,0 +1,40 @@ +import { isRemotePath, removeBase } from '@astrojs/internal-helpers/path'; +import { CONTENT_IMAGE_FLAG, IMAGE_IMPORT_PREFIX } from '../../content/consts.js'; +import { shorthash } from '../../runtime/server/shorthash.js'; +import { VALID_INPUT_FORMATS } from '../consts.js'; + +/** + * Resolves an image src from a content file (such as markdown) to a module ID or import that can be resolved by Vite. + * + * @param imageSrc The src attribute of an image tag + * @param filePath The path to the file that contains the imagem relative to the site root + * @returns A module id of the image that can be rsolved by Vite, or undefined if it is not a local image + */ +export function imageSrcToImportId(imageSrc: string, filePath: string): string | undefined { + // If the import is coming from the data store it will have a special prefix to identify it + // as an image import. We remove this prefix so that we can resolve the image correctly. + imageSrc = removeBase(imageSrc, IMAGE_IMPORT_PREFIX); + + // We only care about local imports + if (isRemotePath(imageSrc) || imageSrc.startsWith('/')) { + return; + } + // We only care about images + const ext = imageSrc.split('.').at(-1) as (typeof VALID_INPUT_FORMATS)[number] | undefined; + if (!ext || !VALID_INPUT_FORMATS.includes(ext)) { + return; + } + + // The import paths are relative to the content (md) file, but when it's actually resolved it will + // be in a single assets file, so relative paths will no longer work. To deal with this we use + // a query parameter to store the original path to the file and append a query param flag. + // This allows our Vite plugin to intercept the import and resolve the path relative to the + // importer and get the correct full path for the imported image. + + const params = new URLSearchParams(CONTENT_IMAGE_FLAG); + params.set('importer', filePath); + return `${imageSrc}?${params.toString()}`; +} + +export const importIdToSymbolName = (importId: string) => + `__ASTRO_IMAGE_IMPORT_${shorthash(importId)}`; diff --git a/packages/astro/src/content/consts.ts b/packages/astro/src/content/consts.ts index c4ace33d11c9..10734426b471 100644 --- a/packages/astro/src/content/consts.ts +++ b/packages/astro/src/content/consts.ts @@ -2,22 +2,28 @@ export const PROPAGATED_ASSET_FLAG = 'astroPropagatedAssets'; export const CONTENT_RENDER_FLAG = 'astroRenderContent'; export const CONTENT_FLAG = 'astroContentCollectionEntry'; export const DATA_FLAG = 'astroDataCollectionEntry'; +export const CONTENT_IMAGE_FLAG = 'astroContentImageFlag'; export const VIRTUAL_MODULE_ID = 'astro:content'; export const RESOLVED_VIRTUAL_MODULE_ID = '\0' + VIRTUAL_MODULE_ID; export const DATA_STORE_VIRTUAL_ID = 'astro:data-layer-content'; export const RESOLVED_DATA_STORE_VIRTUAL_ID = '\0' + DATA_STORE_VIRTUAL_ID; +export const ASSET_IMPORTS_VIRTUAL_ID = 'astro:asset-imports'; +export const ASSET_IMPORTS_RESOLVED_STUB_ID = '\0' + ASSET_IMPORTS_VIRTUAL_ID; export const LINKS_PLACEHOLDER = '@@ASTRO-LINKS@@'; export const STYLES_PLACEHOLDER = '@@ASTRO-STYLES@@'; export const SCRIPTS_PLACEHOLDER = '@@ASTRO-SCRIPTS@@'; +export const IMAGE_IMPORT_PREFIX = '__ASTRO_IMAGE_'; export const CONTENT_FLAGS = [ CONTENT_FLAG, CONTENT_RENDER_FLAG, DATA_FLAG, PROPAGATED_ASSET_FLAG, + CONTENT_IMAGE_FLAG, ] as const; export const CONTENT_TYPES_FILE = 'types.d.ts'; export const DATA_STORE_FILE = 'data-store.json'; +export const ASSET_IMPORTS_FILE = 'assets.mjs'; diff --git a/packages/astro/src/content/data-store.ts b/packages/astro/src/content/data-store.ts index 720985d05aad..f91c0164876e 100644 --- a/packages/astro/src/content/data-store.ts +++ b/packages/astro/src/content/data-store.ts @@ -1,10 +1,15 @@ import { promises as fs, type PathLike, existsSync } from 'fs'; +import { imageSrcToImportId, importIdToSymbolName } from '../assets/utils/resolveImports.js'; +import { AstroError, AstroErrorData } from '../core/errors/index.js'; const SAVE_DEBOUNCE_MS = 500; export interface RenderedContent { html: string; - metadata?: Record; + metadata?: { + imagePaths: Array; + [key: string]: unknown; + }; } export interface DataEntry { @@ -21,9 +26,15 @@ export class DataStore { #file?: PathLike; + #assetsFile?: PathLike; + #saveTimeout: NodeJS.Timeout | undefined; + #assetsSaveTimeout: NodeJS.Timeout | undefined; #dirty = false; + #assetsDirty = false; + + #assetImports = new Set(); constructor() { this.#collections = new Map(); @@ -77,7 +88,77 @@ export class DataStore { return this.#collections; } - #saveToDiskDebounced = () => { + addAssetImport(assetImport: string, filePath: string) { + const id = imageSrcToImportId(assetImport, filePath); + if (id) { + this.#assetImports.add(id); + // We debounce the writes to disk because addAssetImport is called for every image in every file, + // and can be called many times in quick succession by a filesystem watcher. We only want to write + // the file once, after all the imports have been added. + this.#writeAssetsImportsDebounced(); + } + } + + addAssetImports(assets: Array, filePath: string) { + assets.forEach((asset) => this.addAssetImport(asset, filePath)); + } + + async writeAssetImports(filePath: PathLike) { + this.#assetsFile = filePath; + + if (this.#assetImports.size === 0) { + try { + await fs.writeFile(filePath, 'export default new Map();'); + } catch (err) { + throw new AstroError({ + ...(err as Error), + ...AstroErrorData.ContentLayerWriteError, + }); + } + } + + if (!this.#assetsDirty && existsSync(filePath)) { + return; + } + // Import the assets, with a symbol name that is unique to the import id. The import + // for each asset is an object with path, format and dimensions. + // We then export them all, mapped by the import id, so we can find them again in the build. + const imports: Array = []; + const exports: Array = []; + this.#assetImports.forEach((id) => { + const symbol = importIdToSymbolName(id); + imports.push(`import ${symbol} from '${id}';`); + exports.push(`[${JSON.stringify(id)}, ${symbol}]`); + }); + const code = /* js */ ` +${imports.join('\n')} +export default new Map([${exports.join(', ')}]); + `; + try { + await fs.writeFile(filePath, code); + } catch (err) { + throw new AstroError({ + ...(err as Error), + ...AstroErrorData.ContentLayerWriteError, + }); + } + this.#assetsDirty = false; + } + + #writeAssetsImportsDebounced() { + this.#assetsDirty = true; + if (this.#assetsFile) { + if (this.#assetsSaveTimeout) { + clearTimeout(this.#assetsSaveTimeout); + } + this.#assetsSaveTimeout = setTimeout(() => { + this.#assetsSaveTimeout = undefined; + this.writeAssetImports(this.#assetsFile!); + }, SAVE_DEBOUNCE_MS); + } + } + + #saveToDiskDebounced() { this.#dirty = true; // Only save to disk if it has already been saved once if (this.#file) { @@ -89,7 +170,7 @@ export class DataStore { this.writeToDisk(this.#file!); }, SAVE_DEBOUNCE_MS); } - }; + } scopedStore(collectionName: string): ScopedDataStore { return { @@ -118,6 +199,9 @@ export class DataStore { entry.body = body; } if (filePath) { + if (filePath.startsWith('/')) { + throw new Error(`File path must be relative to the site root. Got: ${filePath}`); + } entry.filePath = filePath; } if (digest) { @@ -133,6 +217,10 @@ export class DataStore { delete: (key: string) => this.delete(collectionName, key), clear: () => this.clear(collectionName), has: (key: string) => this.has(collectionName, key), + addAssetImport: (assetImport: string, fileName: string) => + this.addAssetImport(assetImport, fileName), + addAssetImports: (assets: Array, fileName: string) => + this.addAssetImports(assets, fileName), }; } @@ -162,8 +250,11 @@ export class DataStore { await fs.writeFile(filePath, this.toString()); this.#file = filePath; this.#dirty = false; - } catch { - throw new Error(`Failed to save data store to disk`); + } catch (err) { + throw new AstroError({ + ...(err as Error), + ...AstroErrorData.ContentLayerWriteError, + }); } } @@ -203,6 +294,18 @@ export class DataStore { export interface ScopedDataStore { get: (key: string) => DataEntry | undefined; entries: () => Array<[id: string, DataEntry]>; + /** + * Adds a new entry to the store. If an entry with the same ID already exists, + * it will be replaced. + * @param opts + * @param opts.id The ID of the entry. Must be unique per collection. + * @param opts.data The data to store. + * @param opts.body The raw body of the content, if applicable. + * @param opts.filePath The file path of the content, if applicable. Relative to the site root. + * @param opts.digest A content digest, to check if the content has changed. + * @param opts.rendered The rendered content, if applicable. + * @returns + */ set: (opts: { id: string; data: Record; @@ -216,6 +319,21 @@ export interface ScopedDataStore { delete: (key: string) => void; clear: () => void; has: (key: string) => boolean; + /** + * Adds image etc assets to the store. These assets will be transformed + * by Vite, and the URLs will be available in the final build. + * @param assets An array of asset src values, relative to the importing file. + * @param fileName The full path of the file that is importing the assets. + */ + addAssetImports: (assets: Array, fileName: string) => void; + /** + * Adds a single asset to the store. This asset will be transformed + * by Vite, and the URL will be available in the final build. + * @param assetImport + * @param fileName + * @returns + */ + addAssetImport: (assetImport: string, fileName: string) => void; } /** diff --git a/packages/astro/src/content/loaders/file.ts b/packages/astro/src/content/loaders/file.ts index 99608eb95fe6..cbc684a99788 100644 --- a/packages/astro/src/content/loaders/file.ts +++ b/packages/astro/src/content/loaders/file.ts @@ -1,5 +1,6 @@ -import { promises as fs, existsSync } from 'fs'; -import { fileURLToPath } from 'url'; +import { promises as fs, existsSync } from 'node:fs'; +import { fileURLToPath } from 'node:url'; +import { posixRelative } from '../utils.js'; import type { Loader, LoaderContext } from './types.js'; /** @@ -13,7 +14,7 @@ export function file(fileName: string): Loader { throw new Error('Glob patterns are not supported in `file` loader. Use `glob` loader instead.'); } - async function syncData(filePath: string, { logger, parseData, store }: LoaderContext) { + async function syncData(filePath: string, { logger, parseData, store, settings }: LoaderContext) { let json: Array>; try { @@ -38,7 +39,11 @@ export function file(fileName: string): Loader { continue; } const data = await parseData({ id, data: rawItem, filePath }); - store.set({ id, data, filePath }); + store.set({ + id, + data, + filePath: posixRelative(fileURLToPath(settings.config.root), filePath), + }); } } else if (typeof json === 'object') { const entries = Object.entries>(json); diff --git a/packages/astro/src/content/loaders/glob.ts b/packages/astro/src/content/loaders/glob.ts index f3f08a2bd339..e3c908b7a2e4 100644 --- a/packages/astro/src/content/loaders/glob.ts +++ b/packages/astro/src/content/loaders/glob.ts @@ -1,12 +1,11 @@ -import { promises as fs } from 'fs'; -import { fileURLToPath, pathToFileURL } from 'url'; +import { promises as fs } from 'node:fs'; +import { fileURLToPath, pathToFileURL } from 'node:url'; import fastGlob from 'fast-glob'; import { green } from 'kleur/colors'; import micromatch from 'micromatch'; import pLimit from 'p-limit'; -import { relative } from 'path/posix'; import type { ContentEntryType, RenderFunction } from '../../@types/astro.js'; -import { getContentEntryIdAndSlug, getEntryConfigByExtMap } from '../utils.js'; +import { getContentEntryIdAndSlug, getEntryConfigByExtMap, posixRelative } from '../utils.js'; import type { Loader } from './types.js'; export interface GenerateIdOptions { @@ -90,12 +89,23 @@ export function glob(globOptions: GlobOptions): Loader { const digest = generateDigest(contents); - if (existingEntry && existingEntry.digest === digest) { + if (existingEntry && existingEntry.digest === digest && existingEntry.filePath) { + if (existingEntry.rendered?.metadata?.imagePaths?.length) { + // Add asset imports for existing entries + store.addAssetImports( + existingEntry.rendered.metadata.imagePaths, + existingEntry.filePath + ); + } + // Re-parsing to resolve images and other effects + await parseData(existingEntry); return; } const filePath = fileURLToPath(fileUrl); + const relativePath = posixRelative(fileURLToPath(settings.config.root), filePath); + const parsedData = await parseData({ id, data, @@ -120,12 +130,15 @@ export function glob(globOptions: GlobOptions): Loader { id, data: parsedData, body, - filePath, + filePath: relativePath, digest, rendered, }); + if (rendered.metadata?.imagePaths?.length) { + store.addAssetImports(rendered.metadata.imagePaths, relativePath); + } } else { - store.set({ id, data: parsedData, body, filePath, digest }); + store.set({ id, data: parsedData, body, filePath: relativePath, digest }); } fileToIdMap.set(filePath, id); @@ -180,7 +193,7 @@ export function glob(globOptions: GlobOptions): Loader { const basePath = fileURLToPath(baseDir); async function onChange(changedPath: string) { - const entry = relative(basePath, changedPath); + const entry = posixRelative(basePath, changedPath); if (!matchesGlob(entry)) { return; } @@ -194,7 +207,7 @@ export function glob(globOptions: GlobOptions): Loader { watcher.on('add', onChange); watcher.on('unlink', async (deletedPath) => { - const entry = relative(basePath, deletedPath); + const entry = posixRelative(basePath, deletedPath); if (!matchesGlob(entry)) { return; } diff --git a/packages/astro/src/content/runtime.ts b/packages/astro/src/content/runtime.ts index 423dcd2fab24..ffceb9173281 100644 --- a/packages/astro/src/content/runtime.ts +++ b/packages/astro/src/content/runtime.ts @@ -1,6 +1,9 @@ import type { MarkdownHeading } from '@astrojs/markdown-remark'; +import { Traverse } from 'neotraverse/modern'; import pLimit from 'p-limit'; import { ZodIssueCode, string as zodString } from 'zod'; +import type { GetImageResult, ImageMetadata } from '../@types/astro.js'; +import { imageSrcToImportId } from '../assets/utils/resolveImports.js'; import { AstroError, AstroErrorData } from '../core/errors/index.js'; import { prependForwardSlash } from '../core/path.js'; import { @@ -11,9 +14,10 @@ import { renderScriptElement, renderTemplate, renderUniqueStylesheet, - unescapeHTML, render as serverRender, + unescapeHTML, } from '../runtime/server/index.js'; +import { IMAGE_IMPORT_PREFIX } from './consts.js'; import { type DataEntry, globalDataStore } from './data-store.js'; import type { ContentLookupMap } from './utils.js'; type LazyImport = () => Promise; @@ -64,11 +68,22 @@ export function createGetCollection({ } else if (collection in dataCollectionToEntryMap) { type = 'data'; } else if (store.hasCollection(collection)) { - return [...store.values(collection)].map((entry) => ({ - ...entry, - collection, - render: () => renderEntry(entry), - })); + // @ts-expect-error virtual module + const { default: imageAssetMap } = await import('astro:asset-imports'); + + const result = []; + for (const entry of store.values(collection)) { + const data = entry.filePath + ? updateImageReferencesInData(entry.data, entry.filePath, imageAssetMap) + : entry.data; + result.push({ + ...entry, + data, + collection, + render: () => renderEntry(entry), + }); + } + return result; } else { // eslint-disable-next-line no-console console.warn( @@ -260,13 +275,16 @@ export function createGetEntry({ const store = await globalDataStore.get(); if (store.hasCollection(collection)) { - const data = store.get(collection, lookupId); - if (!data) { + const entry = store.get(collection, lookupId); + if (!entry) { throw new Error(`Entry ${collection} → ${lookupId} was not found.`); } - const entry = store.get(collection, lookupId); - + if (entry.filePath) { + // @ts-expect-error virtual module + const { default: imageAssetMap } = await import('astro:asset-imports'); + entry.data = updateImageReferencesInData(entry.data, entry.filePath, imageAssetMap); + } return { ...entry, collection, @@ -319,9 +337,84 @@ type RenderResult = { remarkPluginFrontmatter: Record; }; +const CONTENT_LAYER_IMAGE_REGEX = /__ASTRO_IMAGE_="([^"]+)"/g; + +async function updateImageReferencesInBody(html: string, fileName: string) { + // @ts-expect-error Virtual module + const { default: imageAssetMap } = await import('astro:asset-imports'); + + const imageObjects = new Map(); + + // @ts-expect-error Virtual module resolved at runtime + const { getImage } = await import('astro:assets'); + + // First load all the images. This is done outside of the replaceAll + // function because getImage is async. + for (const [_full, imagePath] of html.matchAll(CONTENT_LAYER_IMAGE_REGEX)) { + try { + const decodedImagePath = JSON.parse(imagePath.replaceAll('"', '"')); + const id = imageSrcToImportId(decodedImagePath.src, fileName); + + const imported = imageAssetMap.get(id); + if (!id || imageObjects.has(id) || !imported) { + continue; + } + const image: GetImageResult = await getImage({ ...decodedImagePath, src: imported }); + imageObjects.set(imagePath, image); + } catch (e) { + throw new Error(`Failed to parse image reference: ${imagePath}`); + } + } + + return html.replaceAll(CONTENT_LAYER_IMAGE_REGEX, (full, imagePath) => { + const image = imageObjects.get(imagePath); + + if (!image) { + return full; + } + + const { index, ...attributes } = image.attributes; + + return Object.entries({ + ...attributes, + src: image.src, + srcset: image.srcSet.attribute, + }) + .map(([key, value]) => (value ? `${key}=${JSON.stringify(String(value))}` : '')) + .join(' '); + }); +} + +function updateImageReferencesInData>( + data: T, + fileName: string, + imageAssetMap: Map +): T { + return new Traverse(data).map(function (ctx, val) { + if (typeof val === 'string' && val.startsWith(IMAGE_IMPORT_PREFIX)) { + const src = val.replace(IMAGE_IMPORT_PREFIX, ''); + const id = imageSrcToImportId(src, fileName); + if (!id) { + ctx.update(src); + return; + } + const imported = imageAssetMap.get(id); + if (imported) { + ctx.update(imported); + } else { + ctx.update(src); + } + } + }); +} + async function renderEntry(entry?: DataEntry) { - console.log('entry:', entry?.rendered?.metadata); - const Content = createComponent(() => serverRender`${unescapeHTML(entry?.rendered?.html)}`); + const html = + entry?.rendered?.metadata?.imagePaths?.length && entry.filePath + ? await updateImageReferencesInBody(entry.rendered.html, entry.filePath) + : entry?.rendered?.html; + + const Content = createComponent(() => serverRender`${unescapeHTML(html)}`); return { Content }; } diff --git a/packages/astro/src/content/sync.ts b/packages/astro/src/content/sync.ts index ec8aed27caf0..19dc31bcacee 100644 --- a/packages/astro/src/content/sync.ts +++ b/packages/astro/src/content/sync.ts @@ -1,12 +1,13 @@ -import { promises as fs, existsSync } from 'fs'; +import { promises as fs, existsSync } from 'node:fs'; +import { fileURLToPath } from 'node:url'; import type { FSWatcher } from 'vite'; import xxhash from 'xxhash-wasm'; import type { AstroSettings } from '../@types/astro.js'; import type { Logger } from '../core/logger/core.js'; -import { DATA_STORE_FILE } from './consts.js'; +import { ASSET_IMPORTS_FILE, DATA_STORE_FILE } from './consts.js'; import { DataStore, globalDataStore } from './data-store.js'; import type { DataWithId, LoaderContext } from './loaders/types.js'; -import { getEntryData, globalContentConfigObserver } from './utils.js'; +import { getEntryDataAndImages, globalContentConfigObserver, posixRelative } from './utils.js'; export interface SyncContentLayerOptions { store?: DataStore; @@ -59,24 +60,19 @@ export async function syncContentLayer({ if (!schema && typeof collection.loader === 'object') { schema = collection.loader.schema; - } - - if (typeof schema === 'function') { - schema = await schema({ - image: () => { - throw new Error('Images are currently not supported for experimental data collections'); - }, - }); + if (typeof schema === 'function') { + schema = await schema(); + } } const collectionWithResolvedSchema = { ...collection, schema }; - const parseData: LoaderContext['parseData'] = ({ id, data, filePath = '' }) => - getEntryData( + const parseData: LoaderContext['parseData'] = async ({ id, data, filePath = '' }) => { + const { imageImports, data: parsedData } = await getEntryDataAndImages( { id, collection: name, - unvalidatedData: data, + unvalidatedData: data as DataWithId, _internal: { rawData: undefined, filePath, @@ -84,7 +80,19 @@ export async function syncContentLayer({ }, collectionWithResolvedSchema, false - ) as Promise; + ); + if (imageImports?.length) { + store.addAssetImports( + imageImports, + // This path may already be relative, if we're re-parsing an existing entry + filePath.startsWith('/') + ? posixRelative(fileURLToPath(settings.config.root), filePath) + : filePath + ); + } + + return parsedData; + }; const payload: LoaderContext = { collection: name, @@ -108,11 +116,16 @@ export async function syncContentLayer({ return collection.loader.load(payload); }) ); - const cacheFile = new URL(DATA_STORE_FILE, settings.config.cacheDir); if (!existsSync(settings.config.cacheDir)) { await fs.mkdir(settings.config.cacheDir, { recursive: true }); } + const cacheFile = new URL(DATA_STORE_FILE, settings.config.cacheDir); await store.writeToDisk(cacheFile); + if (!existsSync(settings.dotAstroDir)) { + await fs.mkdir(settings.dotAstroDir, { recursive: true }); + } + const assetImportsFile = new URL(ASSET_IMPORTS_FILE, settings.dotAstroDir); + await store.writeAssetImports(assetImportsFile); logger.info('Synced content'); } diff --git a/packages/astro/src/content/types-generator.ts b/packages/astro/src/content/types-generator.ts index 0ad52eedfc81..2fd4d0d1551c 100644 --- a/packages/astro/src/content/types-generator.ts +++ b/packages/astro/src/content/types-generator.ts @@ -487,7 +487,7 @@ async function writeContentFiles({ } else { dataTypesStr += `${collectionKey}: {\n`; for (const entryKey of collectionEntryKeys) { - dataTypesStr += `${entryKey}: {\n id: ${entryKey};\n collection: ${collectionKey};\n data: ${dataType}\n};\n`; + dataTypesStr += `${entryKey}: {\n id: ${entryKey};\n collection: ${collectionKey};\n data: ${dataType};\n render(): Render[".md"];\n };\n`; } dataTypesStr += `};\n`; } diff --git a/packages/astro/src/content/utils.ts b/packages/astro/src/content/utils.ts index fe2c4e4ef78a..7f779b528199 100644 --- a/packages/astro/src/content/utils.ts +++ b/packages/astro/src/content/utils.ts @@ -15,7 +15,7 @@ import type { import { AstroError, AstroErrorData, MarkdownError, errorMap } from '../core/errors/index.js'; import { isYAMLException } from '../core/errors/utils.js'; import type { Logger } from '../core/logger/core.js'; -import { CONTENT_FLAGS, PROPAGATED_ASSET_FLAG } from './consts.js'; +import { CONTENT_FLAGS, IMAGE_IMPORT_PREFIX, PROPAGATED_ASSET_FLAG } from './consts.js'; import { createImage } from './runtime-assets.js'; /** * Amap from a collection + slug to the local file path. @@ -120,33 +120,46 @@ export function parseEntrySlug({ } } -export async function getEntryData( +export async function getEntryDataAndImages< + TInputData extends Record = Record, + TOutputData extends TInputData = TInputData, +>( entry: { id: string; collection: string; - unvalidatedData: Record; + unvalidatedData: TInputData; _internal: EntryInternal; }, collectionConfig: CollectionConfig, shouldEmitFile: boolean, pluginContext?: PluginContext -) { - let data; +): Promise<{ data: TOutputData; imageImports: Array }> { + let data: TOutputData; if (collectionConfig.type === 'data' || collectionConfig.type === 'experimental_data') { - data = entry.unvalidatedData; + data = entry.unvalidatedData as TOutputData; } else { const { slug, ...unvalidatedData } = entry.unvalidatedData; - data = unvalidatedData; + data = unvalidatedData as TOutputData; } let schema = collectionConfig.schema; + + const imageImports = new Set(); + if (typeof schema === 'function') { - if (!pluginContext) { - throw new Error('Plugin context is required for schema functions'); + if (pluginContext) { + schema = schema({ + image: createImage(pluginContext, shouldEmitFile, entry._internal.filePath), + }); + } else if (collectionConfig.type === 'experimental_data') { + schema = schema({ + image: () => + z.string().transform((val) => { + imageImports.add(val); + return `${IMAGE_IMPORT_PREFIX}${val}`; + }), + }); } - schema = schema({ - image: createImage(pluginContext, shouldEmitFile, entry._internal.filePath), - }); } if (schema) { @@ -175,7 +188,7 @@ export async function getEntryData( }, }); if (parsed.success) { - data = parsed.data as Record; + data = parsed.data as TOutputData; } else { if (!formattedError) { formattedError = new AstroError({ @@ -195,6 +208,27 @@ export async function getEntryData( throw formattedError; } } + + return { data, imageImports: Array.from(imageImports) }; +} + +export async function getEntryData( + entry: { + id: string; + collection: string; + unvalidatedData: Record; + _internal: EntryInternal; + }, + collectionConfig: CollectionConfig, + shouldEmitFile: boolean, + pluginContext?: PluginContext +) { + const { data } = await getEntryDataAndImages( + entry, + collectionConfig, + shouldEmitFile, + pluginContext + ); return data; } @@ -612,3 +646,17 @@ export function hasAssetPropagationFlag(id: string): boolean { return false; } } + +/** + * Convert a platform path to a posix path. + */ +export function posixifyPath(filePath: string) { + return filePath.split(path.sep).join('/'); +} + +/** + * Unlike `path.posix.relative`, this function will accept a platform path and return a posix path. + */ +export function posixRelative(from: string, to: string) { + return posixifyPath(path.relative(from, to)); +} diff --git a/packages/astro/src/content/vite-plugin-content-assets.ts b/packages/astro/src/content/vite-plugin-content-assets.ts index d3228270a6dc..1dfb64f086ed 100644 --- a/packages/astro/src/content/vite-plugin-content-assets.ts +++ b/packages/astro/src/content/vite-plugin-content-assets.ts @@ -1,5 +1,5 @@ import { extname } from 'node:path'; -import { pathToFileURL } from 'node:url'; +import { fileURLToPath, pathToFileURL } from 'node:url'; import type { Plugin, Rollup } from 'vite'; import type { AstroSettings, SSRElement } from '../@types/astro.js'; import { getAssetsPrefix } from '../assets/utils/getAssetsPrefix.js'; @@ -12,6 +12,7 @@ import { joinPaths, prependForwardSlash } from '../core/path.js'; import { getStylesForURL } from '../vite-plugin-astro-server/css.js'; import { getScriptsForURL } from '../vite-plugin-astro-server/scripts.js'; import { + CONTENT_IMAGE_FLAG, CONTENT_RENDER_FLAG, LINKS_PLACEHOLDER, PROPAGATED_ASSET_FLAG, @@ -32,6 +33,17 @@ export function astroContentAssetPropagationPlugin({ name: 'astro:content-asset-propagation', enforce: 'pre', async resolveId(id, importer, opts) { + if (hasContentFlag(id, CONTENT_IMAGE_FLAG)) { + const [base, query] = id.split('?'); + const params = new URLSearchParams(query); + const importerParam = params.get('importer'); + + const importerPath = importerParam + ? fileURLToPath(new URL(importerParam, settings.config.root)) + : importer; + + return this.resolve(base, importerPath, { skipSelf: true, ...opts }); + } if (hasContentFlag(id, CONTENT_RENDER_FLAG)) { const base = id.split('?')[0]; diff --git a/packages/astro/src/content/vite-plugin-content-virtual-mod.ts b/packages/astro/src/content/vite-plugin-content-virtual-mod.ts index d07e2cea8cab..63477f19f787 100644 --- a/packages/astro/src/content/vite-plugin-content-virtual-mod.ts +++ b/packages/astro/src/content/vite-plugin-content-virtual-mod.ts @@ -14,6 +14,9 @@ import { rootRelativePath } from '../core/viteUtils.js'; import type { AstroPluginMetadata } from '../vite-plugin-astro/index.js'; import { createDefaultAstroMetadata } from '../vite-plugin-astro/metadata.js'; import { + ASSET_IMPORTS_FILE, + ASSET_IMPORTS_RESOLVED_STUB_ID, + ASSET_IMPORTS_VIRTUAL_ID, CONTENT_FLAG, CONTENT_RENDER_FLAG, DATA_FLAG, @@ -69,6 +72,13 @@ export function astroContentVirtualModPlugin({ if (id === DATA_STORE_VIRTUAL_ID) { return RESOLVED_DATA_STORE_VIRTUAL_ID; } + if (id === ASSET_IMPORTS_VIRTUAL_ID) { + const assetImportsFile = new URL(ASSET_IMPORTS_FILE, settings.dotAstroDir); + if (fs.existsSync(assetImportsFile)) { + return fileURLToPath(assetImportsFile); + } + return ASSET_IMPORTS_RESOLVED_STUB_ID; + } }, async load(id, args) { if (id === RESOLVED_VIRTUAL_MODULE_ID) { @@ -114,6 +124,10 @@ export function astroContentVirtualModPlugin({ this.error({ message, id, cause: err }); } } + + if (id === ASSET_IMPORTS_RESOLVED_STUB_ID) { + return 'export default new Map()'; + } }, renderChunk(code, chunk) { if (!settings.config.experimental.contentCollectionCache) { diff --git a/packages/astro/src/core/errors/errors-data.ts b/packages/astro/src/core/errors/errors-data.ts index 8b586e6d2cbe..bc9b0d48a1b4 100644 --- a/packages/astro/src/core/errors/errors-data.ts +++ b/packages/astro/src/core/errors/errors-data.ts @@ -1468,6 +1468,19 @@ export const UnknownContentCollectionError = { name: 'UnknownContentCollectionError', title: 'Unknown Content Collection Error.', } satisfies ErrorData; + +/** + * @docs + * @description + * Astro encountered an unexpected error when writing your content layer data to disk. + * + * If you can reliably cause this error to happen, we'd appreciate if you could [open an issue](https://astro.build/issues/) + */ +export const ContentLayerWriteError = { + name: 'ContentLayerWriteError', + title: 'Could not write content layer data.', +} satisfies ErrorData; + /** * @docs * @message diff --git a/packages/astro/test/content-layer.test.js b/packages/astro/test/content-layer.test.js index dc17c225ef6e..af07e818f9c5 100644 --- a/packages/astro/test/content-layer.test.js +++ b/packages/astro/test/content-layer.test.js @@ -1,4 +1,5 @@ import assert from 'node:assert/strict'; +import { promises as fs } from 'node:fs'; import { sep } from 'node:path'; import { sep as posixSep } from 'node:path/posix'; import { after, before, describe, it } from 'node:test'; @@ -16,7 +17,10 @@ describe('Content Layer', () => { let json; before(async () => { fixture = await loadFixture({ root: './fixtures/content-layer/' }); - await fixture.build(); + await fs + .unlink(new URL('./node_modules/.astro/data-store.json', fixture.config.root)) + .catch(() => {}); + await fixture.build({}); const rawJson = await fixture.readFile('/collections.json'); json = JSON.parse(rawJson); }); @@ -74,12 +78,7 @@ describe('Content Layer', () => { it('Returns data entry by id', async () => { assert.ok(json.hasOwnProperty('dataEntry')); - assert.ok( - json.dataEntry.filePath - ?.split(sep) - .join(posixSep) - .endsWith('packages/astro/test/fixtures/content-layer/src/data/dogs.json') - ); + assert.equal(json.dataEntry.filePath?.split(sep).join(posixSep), 'src/data/dogs.json'); delete json.dataEntry.filePath; assert.deepEqual(json.dataEntry, { id: 'beagle', @@ -182,12 +181,7 @@ describe('Content Layer', () => { it('Returns data entry by id', async () => { assert.ok(json.hasOwnProperty('dataEntry')); - assert.ok( - json.dataEntry.filePath - ?.split(sep) - .join(posixSep) - .endsWith('packages/astro/test/fixtures/content-layer/src/data/dogs.json') - ); + assert.equal(json.dataEntry.filePath?.split(sep).join(posixSep), 'src/data/dogs.json'); delete json.dataEntry.filePath; assert.deepEqual(json.dataEntry, { id: 'beagle', diff --git a/packages/astro/test/fixtures/content-layer/astro.config.mjs b/packages/astro/test/fixtures/content-layer/astro.config.mjs index d69e57975a64..d90448042321 100644 --- a/packages/astro/test/fixtures/content-layer/astro.config.mjs +++ b/packages/astro/test/fixtures/content-layer/astro.config.mjs @@ -1,6 +1,14 @@ import mdx from '@astrojs/mdx'; import { defineConfig } from 'astro/config'; +import { fileURLToPath } from 'node:url'; export default defineConfig({ integrations: [mdx()], + vite: { + resolve: { + alias: { + '@images': fileURLToPath(new URL('./images', import.meta.url)) + } + }, + } }); diff --git a/packages/astro/test/fixtures/content-layer/content-outside-src/columbia.md b/packages/astro/test/fixtures/content-layer/content-outside-src/columbia.md index 7e4a04f5fb27..e8a7bf248647 100644 --- a/packages/astro/test/fixtures/content-layer/content-outside-src/columbia.md +++ b/packages/astro/test/fixtures/content-layer/content-outside-src/columbia.md @@ -3,11 +3,15 @@ title: Columbia description: 'Learn about the Columbia NASA space shuttle.' publishedDate: 'Sat May 21 2022 00:00:00 GMT-0400 (Eastern Daylight Time)' tags: [space, 90s] +heroImage: "@images/launch.webp" --- **Source:** [Wikipedia](https://en.wikipedia.org/wiki/Space_Shuttle_Endeavour) -![columbia](./shuttle.jpg) +![columbia bare](shuttle.jpg) +![columbia relative](./shuttle.jpg) +![atlantis alias](@images/atlantis.avif) +![columbia relative 2](./shuttle.jpg) ## Columbia diff --git a/packages/astro/test/fixtures/content-layer/images/atlantis.avif b/packages/astro/test/fixtures/content-layer/images/atlantis.avif new file mode 100644 index 0000000000000000000000000000000000000000..6b9f6d5a5913ae2c01bbd59532d0cdadaf81a552 GIT binary patch literal 74927 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 CriU;9 literal 0 HcmV?d00001 diff --git a/packages/astro/test/fixtures/content-layer/images/shuttle.jpg b/packages/astro/test/fixtures/content-layer/images/shuttle.jpg new file mode 100644 index 0000000000000000000000000000000000000000..80b8ea67b8e497a8d0dec5ec6c25c13befae8dcb GIT binary patch literal 174008 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 literal 0 HcmV?d00001 diff --git a/packages/astro/test/fixtures/content-layer/src/content/config.ts b/packages/astro/test/fixtures/content-layer/src/content/config.ts index 6e806a9d6449..e5667cf7a57e 100644 --- a/packages/astro/test/fixtures/content-layer/src/content/config.ts +++ b/packages/astro/test/fixtures/content-layer/src/content/config.ts @@ -76,6 +76,13 @@ const absoluteRoot = new URL('../../content-outside-src', import.meta.url); const spacecraft = defineCollection({ type: 'experimental_data', loader: glob({ pattern: '*.md', base: absoluteRoot }), + schema: ({ image }) => z.object({ + title: z.string(), + description: z.string(), + publishedDate: z.string(), + tags: z.array(z.string()), + heroImage: image().optional(), + }), }); const numbers = defineCollection({ diff --git a/packages/astro/test/fixtures/content-layer/src/pages/collections.json.js b/packages/astro/test/fixtures/content-layer/src/pages/collections.json.js index 5f98a51285b9..c656eb9f3834 100644 --- a/packages/astro/test/fixtures/content-layer/src/pages/collections.json.js +++ b/packages/astro/test/fixtures/content-layer/src/pages/collections.json.js @@ -8,7 +8,5 @@ export async function GET() { const simpleLoader = await getCollection('cats'); - return new Response( - JSON.stringify({ customLoader, fileLoader, dataEntry, simpleLoader }), - ); + return Response.json({ customLoader, fileLoader, dataEntry, simpleLoader }) } diff --git a/packages/astro/test/fixtures/content-layer/src/pages/spacecraft/[slug].astro b/packages/astro/test/fixtures/content-layer/src/pages/spacecraft/[slug].astro index b7f2f5eb592e..bd7b51ab9e80 100644 --- a/packages/astro/test/fixtures/content-layer/src/pages/spacecraft/[slug].astro +++ b/packages/astro/test/fixtures/content-layer/src/pages/spacecraft/[slug].astro @@ -1,6 +1,8 @@ --- import type { GetStaticPaths } from "astro"; import { getCollection } from "astro:content" +import { Image } from "astro:assets" + export const getStaticPaths = (async () => { const collection = await getCollection("spacecraft"); if(!collection) return [] @@ -24,5 +26,6 @@ const { Content } = await craft.render() ---

{craft.data.title}

+{craft.data.heroImage ? {craft.data.title} : undefined} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 78f5bd743a2b..c7f772bc4bcf 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -108,6 +108,9 @@ importers: pretty-bytes: specifier: ^6.1.1 version: 6.1.1 + sharp: + specifier: ^0.33.3 + version: 0.33.3 benchmark/packages/timer: dependencies: @@ -699,6 +702,9 @@ importers: mrmime: specifier: ^2.0.0 version: 2.0.0 + neotraverse: + specifier: ^0.6.9 + version: 0.6.9 ora: specifier: ^8.0.1 version: 8.0.1 @@ -9958,6 +9964,10 @@ packages: resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} engines: {node: '>= 0.6'} + neotraverse@0.6.9: + resolution: {integrity: sha512-IJ00Agk9rMj4ChQwT/nWhLG/vC7PgNAk+BEKOE0DU5ToOHrmv3wefk8+2TcPDb4TRTQNpq0TIaDlaqvmrTAbrw==} + engines: {node: '>= 18'} + nlcst-to-string@4.0.0: resolution: {integrity: sha512-YKLBCcUYKAg0FNlOBT6aI91qFmSiFKiluk655WzPF+DDMA02qIyy8uiRqI8QXtcFpEvll12LpL5MXqEmAZ+dcA==} @@ -16483,6 +16493,8 @@ snapshots: negotiator@0.6.3: {} + neotraverse@0.6.9: {} + nlcst-to-string@4.0.0: dependencies: '@types/nlcst': 2.0.3 From 831a49de1a380ff24f338750831e5a2edf437842 Mon Sep 17 00:00:00 2001 From: Matt Kane Date: Thu, 18 Jul 2024 15:13:54 +0100 Subject: [PATCH 26/30] Dedupe sync runs --- packages/astro/src/core/build/index.ts | 22 ++++++---------------- packages/astro/src/core/sync/index.ts | 5 +++++ 2 files changed, 11 insertions(+), 16 deletions(-) diff --git a/packages/astro/src/core/build/index.ts b/packages/astro/src/core/build/index.ts index a59172155262..58526e00f395 100644 --- a/packages/astro/src/core/build/index.ts +++ b/packages/astro/src/core/build/index.ts @@ -11,8 +11,6 @@ import type { RuntimeMode, } from '../../@types/astro.js'; import { injectImageEndpoint } from '../../assets/endpoint/config.js'; -import { DataStore, globalDataStore } from '../../content/data-store.js'; -import { syncContentLayer } from '../../content/sync.js'; import { telemetry } from '../../events/index.js'; import { eventCliSession } from '../../events/session.js'; import { @@ -151,25 +149,14 @@ class AstroBuilder { fs, }); - const dataStore = await DataStore.fromModule(); - globalDataStore.set(dataStore); - await syncContentLayer({ settings: this.settings, logger: logger }); - return { viteConfig }; } /** Run the build logic. build() is marked private because usage should go through ".run()" */ private async build({ viteConfig }: { viteConfig: vite.InlineConfig }) { - this.settings.timer.start('Total build'); - await runHookBuildStart({ config: this.settings.config, logging: this.logger }); this.validateConfig(); - const dataStore = await DataStore.fromModule(); - globalDataStore.set(dataStore); - this.settings.timer.start('Sync content layer'); - await syncContentLayer({ settings: this.settings, logger: this.logger }); - this.settings.timer.end('Sync content layer'); this.logger.info('build', `output: ${blue('"' + this.settings.config.output + '"')}`); this.logger.info('build', `directory: ${blue(fileURLToPath(this.settings.config.outDir))}`); if (this.settings.adapter) { @@ -241,18 +228,21 @@ class AstroBuilder { buildMode: this.settings.config.output, }); } - this.settings.timer.end('Total build'); - // Benchmark results - this.settings.timer.writeStats(); } /** Build the given Astro project. */ async run() { + this.settings.timer.start('Total build'); + const setupData = await this.setup(); try { await this.build(setupData); } catch (_err) { throw _err; + } finally { + this.settings.timer.end('Total build'); + // Benchmark results + this.settings.timer.writeStats(); } } diff --git a/packages/astro/src/core/sync/index.ts b/packages/astro/src/core/sync/index.ts index ece724cec989..73369429fc81 100644 --- a/packages/astro/src/core/sync/index.ts +++ b/packages/astro/src/core/sync/index.ts @@ -29,6 +29,7 @@ import type { Logger } from '../logger/core.js'; import { formatErrorMessage } from '../messages.js'; import { ensureProcessNodeEnv } from '../util.js'; import { setUpEnvTs } from './setup-env-ts.js'; +import { DataStore, globalDataStore } from '../../content/data-store.js'; export type SyncOptions = { /** @@ -99,7 +100,11 @@ export async function syncInternal({ } syncAstroEnv(settings, fs); + settings.timer.start('Sync content layer'); + const dataStore = await DataStore.fromModule(); + globalDataStore.set(dataStore); await syncContentLayer({ settings, logger }); + settings.timer.end('Sync content layer'); await setUpEnvTs({ settings, logger, fs }); logger.info('types', `Generated ${dim(getTimeStat(timerStart, performance.now()))}`); From 682060071a2e6c1d6410befca536cab87e995d2a Mon Sep 17 00:00:00 2001 From: Matt Kane Date: Thu, 18 Jul 2024 16:02:46 +0100 Subject: [PATCH 27/30] Fix syncing in dev --- packages/astro/src/core/dev/dev.ts | 4 ++++ packages/astro/src/core/sync/index.ts | 11 +++++------ 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/packages/astro/src/core/dev/dev.ts b/packages/astro/src/core/dev/dev.ts index ce7c6606d542..2952caa50d6a 100644 --- a/packages/astro/src/core/dev/dev.ts +++ b/packages/astro/src/core/dev/dev.ts @@ -18,6 +18,7 @@ import { fetchLatestAstroVersion, shouldCheckForUpdates, } from './update-check.js'; +import { DataStore, globalDataStore } from '../../content/data-store.js'; export interface DevServer { address: AddressInfo; @@ -103,6 +104,9 @@ export default async function dev(inlineConfig: AstroInlineConfig): Promise Date: Fri, 19 Jul 2024 17:18:11 +0100 Subject: [PATCH 28/30] Changes from review --- packages/astro/src/@types/astro.ts | 4 +-- packages/astro/src/content/data-store.ts | 2 +- packages/astro/src/content/loaders/glob.ts | 41 ++++++++++++++++------ 3 files changed, 33 insertions(+), 14 deletions(-) diff --git a/packages/astro/src/@types/astro.ts b/packages/astro/src/@types/astro.ts index 33938ca853cc..e06c2eda00c4 100644 --- a/packages/astro/src/@types/astro.ts +++ b/packages/astro/src/@types/astro.ts @@ -2378,7 +2378,7 @@ export type DataEntryModule = { }; }; -export type RenderFunction = (entry: DataEntry) => Promise; +export type ContentEntryRenderFuction = (entry: DataEntry) => Promise; export interface ContentEntryType { extensions: string[]; @@ -2395,7 +2395,7 @@ export interface ContentEntryType { } ): rollup.LoadResult | Promise; contentModuleTypes?: string; - getRenderFunction?(settings: AstroSettings): Promise; + getRenderFunction?(settings: AstroSettings): Promise; /** * Handle asset propagation for rendered content to avoid bleed. diff --git a/packages/astro/src/content/data-store.ts b/packages/astro/src/content/data-store.ts index f91c0164876e..ddf89e4eccac 100644 --- a/packages/astro/src/content/data-store.ts +++ b/packages/astro/src/content/data-store.ts @@ -304,7 +304,7 @@ export interface ScopedDataStore { * @param opts.filePath The file path of the content, if applicable. Relative to the site root. * @param opts.digest A content digest, to check if the content has changed. * @param opts.rendered The rendered content, if applicable. - * @returns + * @returns `true` if the entry was added or updated, `false` if the entry was not changed. This will be the case if the provided digest matches the one in the store. */ set: (opts: { id: string; diff --git a/packages/astro/src/content/loaders/glob.ts b/packages/astro/src/content/loaders/glob.ts index e3c908b7a2e4..bc1b86d5f6cd 100644 --- a/packages/astro/src/content/loaders/glob.ts +++ b/packages/astro/src/content/loaders/glob.ts @@ -4,9 +4,10 @@ import fastGlob from 'fast-glob'; import { green } from 'kleur/colors'; import micromatch from 'micromatch'; import pLimit from 'p-limit'; -import type { ContentEntryType, RenderFunction } from '../../@types/astro.js'; +import type { ContentEntryType, ContentEntryRenderFuction } from '../../@types/astro.js'; import { getContentEntryIdAndSlug, getEntryConfigByExtMap, posixRelative } from '../utils.js'; import type { Loader } from './types.js'; +import type { RenderedContent } from '../data-store.js'; export interface GenerateIdOptions { /** The path to the entry file, relative to the base directory. */ @@ -65,7 +66,10 @@ export function glob(globOptions: GlobOptions): Loader { return { name: 'glob-loader', load: async ({ settings, logger, watcher, parseData, store, generateDigest }) => { - const renderFunctionByContentType = new WeakMap(); + const renderFunctionByContentType = new WeakMap< + ContentEntryType, + ContentEntryRenderFuction + >(); const untouchedEntries = new Set(store.keys()); @@ -75,7 +79,15 @@ export function glob(globOptions: GlobOptions): Loader { return; } const fileUrl = new URL(entry, base); - const contents = await fs.readFile(fileUrl, 'utf-8'); + const contents = await fs.readFile(fileUrl, 'utf-8').catch((err) => { + logger.error(`Error reading ${entry}: ${err.message}`); + return; + }); + + if (!contents) { + logger.warn(`No contents found for ${entry}`); + return; + } const { body, data } = await entryType.getEntryInfo({ contents, @@ -119,13 +131,20 @@ export function glob(globOptions: GlobOptions): Loader { // Cache the render function for this content type, so it can re-use parsers and other expensive setup renderFunctionByContentType.set(entryType, render); } - const rendered = await render({ - id, - data: parsedData, - body, - filePath, - digest, - }); + let rendered: RenderedContent | undefined = undefined; + + try { + rendered = await render?.({ + id, + data: parsedData, + body, + filePath, + digest, + }); + } catch (error: any) { + logger.error(`Error rendering ${entry}: ${error.message}`); + } + store.set({ id, data: parsedData, @@ -134,7 +153,7 @@ export function glob(globOptions: GlobOptions): Loader { digest, rendered, }); - if (rendered.metadata?.imagePaths?.length) { + if (rendered?.metadata?.imagePaths?.length) { store.addAssetImports(rendered.metadata.imagePaths, relativePath); } } else { From aacf87ae74e63818ffcc51ca34d5b7d1e101996f Mon Sep 17 00:00:00 2001 From: Matt Kane Date: Fri, 19 Jul 2024 17:24:45 +0100 Subject: [PATCH 29/30] Windows paths ftw --- packages/astro/src/content/sync.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/astro/src/content/sync.ts b/packages/astro/src/content/sync.ts index 19dc31bcacee..9542717f4bf6 100644 --- a/packages/astro/src/content/sync.ts +++ b/packages/astro/src/content/sync.ts @@ -8,6 +8,7 @@ import { ASSET_IMPORTS_FILE, DATA_STORE_FILE } from './consts.js'; import { DataStore, globalDataStore } from './data-store.js'; import type { DataWithId, LoaderContext } from './loaders/types.js'; import { getEntryDataAndImages, globalContentConfigObserver, posixRelative } from './utils.js'; +import { isAbsolute } from 'node:path'; export interface SyncContentLayerOptions { store?: DataStore; @@ -85,7 +86,7 @@ export async function syncContentLayer({ store.addAssetImports( imageImports, // This path may already be relative, if we're re-parsing an existing entry - filePath.startsWith('/') + isAbsolute(filePath) ? posixRelative(fileURLToPath(settings.config.root), filePath) : filePath ); From 4a0767eb3fde5b4a1fa8e35f7398def1cf9f94c5 Mon Sep 17 00:00:00 2001 From: Matt Kane Date: Mon, 22 Jul 2024 09:48:58 +0100 Subject: [PATCH 30/30] feat(content-layer): support references in content layer (#11494) * Support references in content layer * Fix utf8 rendering * Warn for invalid entries * Fix test * lol windows paths * Remove assertion --- packages/astro/src/content/runtime.ts | 147 ++++++++++++++---- packages/astro/templates/content/module.mjs | 5 + packages/astro/test/content-layer.test.js | 21 +++ .../content-outside-src/columbia-copy.md | 1 + .../content-layer/src/content/config.ts | 3 +- .../src/pages/collections.json.js | 7 +- .../src/pages/spacecraft/[slug].astro | 6 +- 7 files changed, 152 insertions(+), 38 deletions(-) diff --git a/packages/astro/src/content/runtime.ts b/packages/astro/src/content/runtime.ts index ffceb9173281..edd8ca7d7dac 100644 --- a/packages/astro/src/content/runtime.ts +++ b/packages/astro/src/content/runtime.ts @@ -1,7 +1,7 @@ import type { MarkdownHeading } from '@astrojs/markdown-remark'; import { Traverse } from 'neotraverse/modern'; import pLimit from 'p-limit'; -import { ZodIssueCode, string as zodString } from 'zod'; +import { ZodIssueCode, z } from 'zod'; import type { GetImageResult, ImageMetadata } from '../@types/astro.js'; import { imageSrcToImportId } from '../assets/utils/resolveImports.js'; import { AstroError, AstroErrorData } from '../core/errors/index.js'; @@ -147,9 +147,11 @@ export function createGetCollection({ export function createGetEntryBySlug({ getEntryImport, getRenderEntryImport, + collectionNames, }: { getEntryImport: GetEntryImport; getRenderEntryImport: GetEntryImport; + collectionNames: Set; }) { return async function getEntryBySlug(collection: string, slug: string) { const store = await globalDataStore.get(); @@ -168,6 +170,11 @@ export function createGetEntryBySlug({ render: () => renderEntry(entry), }; } + if (!collectionNames.has(collection)) { + // eslint-disable-next-line no-console + console.warn(`The collection ${JSON.stringify(collection)} does not exist.`); + return undefined; + } const entryImport = await getEntryImport(collection, slug); if (typeof entryImport !== 'function') return undefined; @@ -191,7 +198,10 @@ export function createGetEntryBySlug({ }; } -export function createGetDataEntryById({ getEntryImport }: { getEntryImport: GetEntryImport }) { +export function createGetDataEntryById({ + getEntryImport, + collectionNames, +}: { getEntryImport: GetEntryImport; collectionNames: Set }) { return async function getDataEntryById(collection: string, id: string) { const store = await globalDataStore.get(); @@ -208,6 +218,11 @@ export function createGetDataEntryById({ getEntryImport }: { getEntryImport: Get collection, }; } + if (!collectionNames.has(collection)) { + // eslint-disable-next-line no-console + console.warn(`The collection ${JSON.stringify(collection)} does not exist.`); + return undefined; + } const lazyImport = await getEntryImport(collection, id); @@ -243,9 +258,11 @@ type EntryLookupObject = { collection: string; id: string } | { collection: stri export function createGetEntry({ getEntryImport, getRenderEntryImport, + collectionNames, }: { getEntryImport: GetEntryImport; getRenderEntryImport: GetEntryImport; + collectionNames: Set; }) { return async function getEntry( // Can either pass collection and identifier as 2 positional args, @@ -277,7 +294,9 @@ export function createGetEntry({ if (store.hasCollection(collection)) { const entry = store.get(collection, lookupId); if (!entry) { - throw new Error(`Entry ${collection} → ${lookupId} was not found.`); + // eslint-disable-next-line no-console + console.warn(`Entry ${collection} → ${lookupId} was not found.`); + return; } if (entry.filePath) { @@ -292,6 +311,12 @@ export function createGetEntry({ } as DataEntryResult | ContentEntryResult; } + if (!collectionNames.has(collection)) { + // eslint-disable-next-line no-console + console.warn(`The collection ${JSON.stringify(collection)} does not exist.`); + return undefined; + } + const entryImport = await getEntryImport(collection, lookupId); if (typeof entryImport !== 'function') return undefined; @@ -514,36 +539,92 @@ async function render({ export function createReference({ lookupMap }: { lookupMap: ContentLookupMap }) { return function reference(collection: string) { - return zodString().transform((lookupId: string, ctx) => { - const flattenedErrorPath = ctx.path.join('.'); - if (!lookupMap[collection]) { - ctx.addIssue({ - code: ZodIssueCode.custom, - message: `**${flattenedErrorPath}:** Reference to ${collection} invalid. Collection does not exist or is empty.`, - }); - return; - } - - const { type, entries } = lookupMap[collection]; - const entry = entries[lookupId]; - - if (!entry) { - ctx.addIssue({ - code: ZodIssueCode.custom, - message: `**${flattenedErrorPath}**: Reference to ${collection} invalid. Expected ${Object.keys( - entries - ) - .map((c) => JSON.stringify(c)) - .join(' | ')}. Received ${JSON.stringify(lookupId)}.`, - }); - return; - } - // Content is still identified by slugs, so map to a `slug` key for consistency. - if (type === 'content') { - return { slug: lookupId, collection }; - } - return { id: lookupId, collection }; - }); + return z + .union([ + z.string(), + z.object({ + id: z.string(), + collection: z.string(), + }), + z.object({ + slug: z.string(), + collection: z.string(), + }), + ]) + .transform( + async ( + lookup: + | string + | { id: string; collection: string } + | { slug: string; collection: string }, + ctx + ) => { + const flattenedErrorPath = ctx.path.join('.'); + const store = await globalDataStore.get(); + const collectionIsInStore = store.hasCollection(collection); + + if (typeof lookup === 'object') { + // If these don't match then something is wrong with the reference + if (lookup.collection !== collection) { + ctx.addIssue({ + code: ZodIssueCode.custom, + message: `**${flattenedErrorPath}**: Reference to ${collection} invalid. Expected ${collection}. Received ${lookup.collection}.`, + }); + return; + } + + // A reference object might refer to an invalid collection, because when we convert it we don't have access to the store. + // If it is an object then we're validating later in the pipeline, so we can check the collection at that point. + if (!lookupMap[collection] && !collectionIsInStore) { + ctx.addIssue({ + code: ZodIssueCode.custom, + message: `**${flattenedErrorPath}:** Reference to ${collection} invalid. Collection does not exist or is empty.`, + }); + return; + } + return lookup; + } + + if (collectionIsInStore) { + const entry = store.get(collection, lookup); + if (!entry) { + ctx.addIssue({ + code: ZodIssueCode.custom, + message: `**${flattenedErrorPath}**: Reference to ${collection} invalid. Entry ${lookup} does not exist.`, + }); + return; + } + return { id: lookup, collection }; + } + + if (!lookupMap[collection] && store.collections().size === 0) { + // If the collection is not in the lookup map or store, it may be a content layer collection and the store may not yet be populated. + // For now, we can't validate this reference, so we'll optimistically convert it to a reference object which we'll validate + // later in the pipeline when we do have access to the store. + return { id: lookup, collection }; + } + + const { type, entries } = lookupMap[collection]; + const entry = entries[lookup]; + + if (!entry) { + ctx.addIssue({ + code: ZodIssueCode.custom, + message: `**${flattenedErrorPath}**: Reference to ${collection} invalid. Expected ${Object.keys( + entries + ) + .map((c) => JSON.stringify(c)) + .join(' | ')}. Received ${JSON.stringify(lookup)}.`, + }); + return; + } + // Content is still identified by slugs, so map to a `slug` key for consistency. + if (type === 'content') { + return { slug: lookup, collection }; + } + return { id: lookup, collection }; + } + ); }; } diff --git a/packages/astro/templates/content/module.mjs b/packages/astro/templates/content/module.mjs index f246678a25ec..b7afc9433978 100644 --- a/packages/astro/templates/content/module.mjs +++ b/packages/astro/templates/content/module.mjs @@ -33,6 +33,8 @@ const collectionToEntryMap = createCollectionToGlobResultMap({ let lookupMap = {}; /* @@LOOKUP_MAP_ASSIGNMENT@@ */ +const collectionNames = new Set(Object.keys(lookupMap)); + function createGlobLookup(glob) { return async (collection, lookupId) => { const filePath = lookupMap[collection]?.entries[lookupId]; @@ -59,15 +61,18 @@ export const getCollection = createGetCollection({ export const getEntryBySlug = createGetEntryBySlug({ getEntryImport: createGlobLookup(contentCollectionToEntryMap), getRenderEntryImport: createGlobLookup(collectionToRenderEntryMap), + collectionNames, }); export const getDataEntryById = createGetDataEntryById({ getEntryImport: createGlobLookup(dataCollectionToEntryMap), + collectionNames, }); export const getEntry = createGetEntry({ getEntryImport: createGlobLookup(collectionToEntryMap), getRenderEntryImport: createGlobLookup(collectionToRenderEntryMap), + collectionNames, }); export const getEntries = createGetEntries(getEntry); diff --git a/packages/astro/test/content-layer.test.js b/packages/astro/test/content-layer.test.js index af07e818f9c5..e7b607a8c574 100644 --- a/packages/astro/test/content-layer.test.js +++ b/packages/astro/test/content-layer.test.js @@ -112,6 +112,27 @@ describe('Content Layer', () => { }, }); }); + + it('transforms a reference id to a reference object', async () => { + assert.ok(json.hasOwnProperty('entryWithReference')); + assert.deepEqual(json.entryWithReference.data.cat, { collection: 'cats', id: 'tabby' }); + }); + + it('returns a referenced entry', async () => { + assert.ok(json.hasOwnProperty('referencedEntry')); + assert.deepEqual(json.referencedEntry, { + collection: 'cats', + data: { + breed: 'Tabby', + id: 'tabby', + size: 'Medium', + origin: 'Egypt', + lifespan: '15 years', + temperament: ['Curious', 'Playful', 'Independent'], + }, + id: 'tabby', + }); + }); }); describe('Dev', () => { diff --git a/packages/astro/test/fixtures/content-layer/content-outside-src/columbia-copy.md b/packages/astro/test/fixtures/content-layer/content-outside-src/columbia-copy.md index f6443af0f972..6e770b2afd95 100644 --- a/packages/astro/test/fixtures/content-layer/content-outside-src/columbia-copy.md +++ b/packages/astro/test/fixtures/content-layer/content-outside-src/columbia-copy.md @@ -3,6 +3,7 @@ title: More Columbia description: 'Learn about the Columbia NASA space shuttle.' publishedDate: 'Sat May 21 2022 00:00:00 GMT-0400 (Eastern Daylight Time)' tags: [space, 90s] +cat: tabby --- **Source:** [Wikipedia](https://en.wikipedia.org/wiki/Space_Shuttle_Endeavour) diff --git a/packages/astro/test/fixtures/content-layer/src/content/config.ts b/packages/astro/test/fixtures/content-layer/src/content/config.ts index e5667cf7a57e..bf7b34f19d29 100644 --- a/packages/astro/test/fixtures/content-layer/src/content/config.ts +++ b/packages/astro/test/fixtures/content-layer/src/content/config.ts @@ -1,4 +1,4 @@ -import { defineCollection, z } from 'astro:content'; +import { defineCollection, z, reference } from 'astro:content'; import { file, glob } from 'astro/loaders'; import { loader } from '../loaders/post-loader.js'; import { fileURLToPath } from 'node:url'; @@ -82,6 +82,7 @@ const spacecraft = defineCollection({ publishedDate: z.string(), tags: z.array(z.string()), heroImage: image().optional(), + cat: reference('cats').optional(), }), }); diff --git a/packages/astro/test/fixtures/content-layer/src/pages/collections.json.js b/packages/astro/test/fixtures/content-layer/src/pages/collections.json.js index c656eb9f3834..43e4df23005c 100644 --- a/packages/astro/test/fixtures/content-layer/src/pages/collections.json.js +++ b/packages/astro/test/fixtures/content-layer/src/pages/collections.json.js @@ -4,9 +4,12 @@ export async function GET() { const customLoader = (await getCollection('blog')).slice(0, 10); const fileLoader = await getCollection('dogs'); - const dataEntry= await getEntry('dogs', 'beagle'); + const dataEntry = await getEntry('dogs', 'beagle'); const simpleLoader = await getCollection('cats'); - return Response.json({ customLoader, fileLoader, dataEntry, simpleLoader }) + const entryWithReference = await getEntry('spacecraft', 'columbia-copy') + const referencedEntry = await getEntry(entryWithReference.data.cat) + + return Response.json({ customLoader, fileLoader, dataEntry, simpleLoader, entryWithReference, referencedEntry }); } diff --git a/packages/astro/test/fixtures/content-layer/src/pages/spacecraft/[slug].astro b/packages/astro/test/fixtures/content-layer/src/pages/spacecraft/[slug].astro index bd7b51ab9e80..4df64a395f45 100644 --- a/packages/astro/test/fixtures/content-layer/src/pages/spacecraft/[slug].astro +++ b/packages/astro/test/fixtures/content-layer/src/pages/spacecraft/[slug].astro @@ -1,6 +1,6 @@ --- import type { GetStaticPaths } from "astro"; -import { getCollection } from "astro:content" +import { getCollection, getEntry } from "astro:content" import { Image } from "astro:assets" export const getStaticPaths = (async () => { @@ -21,11 +21,13 @@ export const getStaticPaths = (async () => { const { craft } = Astro.props as any +let cat = craft.data.cat ? await getEntry(craft.data.cat) : undefined const { Content } = await craft.render() --- - +

{craft.data.title}

+{cat?

🐈: {cat.data.breed}

: undefined} {craft.data.heroImage ? {craft.data.title} : undefined}

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