From 6c80a1e37cdfa083e8bf01fe76f0005929d77c55 Mon Sep 17 00:00:00 2001 From: Matt Kane Date: Thu, 27 Jun 2024 09:21:15 +0100 Subject: [PATCH 01/34] Empty commit From 0f807d30f57a22ad6cc2f24996367dde09b4ad0a Mon Sep 17 00:00:00 2001 From: Matt Kane Date: Wed, 26 Jun 2024 12:16:29 +0100 Subject: [PATCH 02/34] Changeset --- .changeset/smooth-chicken-wash.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/smooth-chicken-wash.md diff --git a/.changeset/smooth-chicken-wash.md b/.changeset/smooth-chicken-wash.md new file mode 100644 index 000000000000..a3a433831952 --- /dev/null +++ b/.changeset/smooth-chicken-wash.md @@ -0,0 +1,5 @@ +--- +'astro': minor +--- + +Implements Content Layer From 9561a071648b4b3bd0be4213b9a74ad3a7f9568d Mon Sep 17 00:00:00 2001 From: Matt Kane Date: Fri, 28 Jun 2024 09:00:01 +0100 Subject: [PATCH 03/34] feat: add Content Layer loader (#11334) * wip * wip * wip * Update demo * Add meta * wip * Add file loader * Add schema validation * Remove log * Changeset * Format * Lockfile * Fix type * Handle loading for data store JSON * Use rollup util to import JSON * Fix types * Format * Add tests * Changes from review --- packages/astro/package.json | 1 + packages/astro/src/content/consts.ts | 4 + packages/astro/src/content/data-store.ts | 155 +++++++++ packages/astro/src/content/file.ts | 62 ++++ packages/astro/src/content/loaders.ts | 123 +++++++ packages/astro/src/content/runtime.ts | 27 +- packages/astro/src/content/types-generator.ts | 16 +- packages/astro/src/content/utils.ts | 31 +- .../vite-plugin-content-virtual-mod.ts | 27 ++ packages/astro/src/core/build/index.ts | 7 +- packages/astro/src/core/sync/index.ts | 3 + packages/astro/templates/content/module.mjs | 2 +- packages/astro/test/content-layer.test.js | 83 +++++ .../fixtures/content-layer/astro.config.mjs | 6 + .../test/fixtures/content-layer/package.json | 9 + .../content-layer/src/components/H2.astro | 4 + .../content-layer/src/components/H3.astro | 2 + .../src/components/LayoutProp.astro | 39 +++ .../src/components/WithScripts.astro | 11 + .../content-layer/src/content/_data/dogs.json | 302 ++++++++++++++++++ .../content-layer/src/content/config.ts | 21 ++ .../content-layer/src/loaders/post-loader.ts | 34 ++ .../content-layer/src/pages/blog/[id].astro | 29 ++ .../src/pages/collections.json.js | 12 + .../content-layer/src/pages/dogs/[slug].astro | 40 +++ .../content-layer/src/pages/index.astro | 30 ++ packages/astro/types/content.d.ts | 56 +++- pnpm-lock.yaml | 195 +++++++---- 28 files changed, 1252 insertions(+), 79 deletions(-) create mode 100644 packages/astro/src/content/data-store.ts create mode 100644 packages/astro/src/content/file.ts create mode 100644 packages/astro/src/content/loaders.ts create mode 100644 packages/astro/test/content-layer.test.js create mode 100644 packages/astro/test/fixtures/content-layer/astro.config.mjs create mode 100644 packages/astro/test/fixtures/content-layer/package.json create mode 100644 packages/astro/test/fixtures/content-layer/src/components/H2.astro create mode 100644 packages/astro/test/fixtures/content-layer/src/components/H3.astro create mode 100644 packages/astro/test/fixtures/content-layer/src/components/LayoutProp.astro create mode 100644 packages/astro/test/fixtures/content-layer/src/components/WithScripts.astro create mode 100644 packages/astro/test/fixtures/content-layer/src/content/_data/dogs.json create mode 100644 packages/astro/test/fixtures/content-layer/src/content/config.ts create mode 100644 packages/astro/test/fixtures/content-layer/src/loaders/post-loader.ts create mode 100644 packages/astro/test/fixtures/content-layer/src/pages/blog/[id].astro create mode 100644 packages/astro/test/fixtures/content-layer/src/pages/collections.json.js create mode 100644 packages/astro/test/fixtures/content-layer/src/pages/dogs/[slug].astro create mode 100644 packages/astro/test/fixtures/content-layer/src/pages/index.astro diff --git a/packages/astro/package.json b/packages/astro/package.json index d9069bb71a6e..56c224604b72 100644 --- a/packages/astro/package.json +++ b/packages/astro/package.json @@ -133,6 +133,7 @@ "@babel/plugin-transform-react-jsx": "^7.24.7", "@babel/traverse": "^7.24.7", "@babel/types": "^7.24.7", + "@rollup/pluginutils": "^5.1.0", "@types/babel__core": "^7.20.5", "@types/cookie": "^0.6.0", "acorn": "^8.12.0", diff --git a/packages/astro/src/content/consts.ts b/packages/astro/src/content/consts.ts index f65652453b60..c4ace33d11c9 100644 --- a/packages/astro/src/content/consts.ts +++ b/packages/astro/src/content/consts.ts @@ -5,6 +5,8 @@ export const DATA_FLAG = 'astroDataCollectionEntry'; 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 LINKS_PLACEHOLDER = '@@ASTRO-LINKS@@'; export const STYLES_PLACEHOLDER = '@@ASTRO-STYLES@@'; export const SCRIPTS_PLACEHOLDER = '@@ASTRO-SCRIPTS@@'; @@ -17,3 +19,5 @@ export const CONTENT_FLAGS = [ ] as const; export const CONTENT_TYPES_FILE = 'types.d.ts'; + +export const DATA_STORE_FILE = 'data-store.json'; diff --git a/packages/astro/src/content/data-store.ts b/packages/astro/src/content/data-store.ts new file mode 100644 index 000000000000..07971562d226 --- /dev/null +++ b/packages/astro/src/content/data-store.ts @@ -0,0 +1,155 @@ +import { promises as fs, type PathLike, existsSync } from 'fs'; +export class DataStore { + #collections = new Map>(); + constructor() { + this.#collections = new Map(); + } + get(collectionName: string, key: string) { + return this.#collections.get(collectionName)?.get(String(key)); + } + entries(collectionName: string): Array<[id: string, any]> { + const collection = this.#collections.get(collectionName) ?? new Map(); + return [...collection.entries()]; + } + values(collectionName: string): Array { + const collection = this.#collections.get(collectionName) ?? new Map(); + return [...collection.values()]; + } + keys(collectionName: string): Array { + const collection = this.#collections.get(collectionName) ?? new Map(); + return [...collection.keys()]; + } + set(collectionName: string, key: string, value: unknown) { + const collection = this.#collections.get(collectionName) ?? new Map(); + collection.set(String(key), value); + this.#collections.set(collectionName, collection); + } + delete(collectionName: string, key: string) { + const collection = this.#collections.get(collectionName); + if (collection) { + collection.delete(String(key)); + } + } + clear(collectionName: string) { + this.#collections.delete(collectionName); + } + + has(collectionName: string, key: string) { + const collection = this.#collections.get(collectionName); + if (collection) { + return collection.has(String(key)); + } + return false; + } + + hasCollection(collectionName: string) { + return this.#collections.has(collectionName); + } + + collections() { + return this.#collections; + } + + scopedStore(collectionName: string): ScopedDataStore { + return { + 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), + delete: (key: string) => this.delete(collectionName, key), + clear: () => this.clear(collectionName), + has: (key: string) => this.has(collectionName, key), + }; + } + + metaStore(collectionName: string): MetaStore { + return this.scopedStore(`meta:${collectionName}`) as MetaStore; + } + + toString() { + return JSON.stringify( + Array.from(this.#collections.entries()).map(([collectionName, collection]) => { + return [collectionName, Array.from(collection.entries())]; + }) + ); + } + + async writeToDisk(filePath: PathLike) { + try { + await fs.writeFile(filePath, this.toString()); + } catch { + throw new Error(`Failed to save data store to disk`); + } + } + + static async fromDisk(filePath: PathLike) { + if (!existsSync(filePath)) { + return new DataStore(); + } + const str = await fs.readFile(filePath, 'utf-8'); + return DataStore.fromString(str); + } + + static fromString(str: string) { + const entries = JSON.parse(str); + return DataStore.fromJSON(entries); + } + + static async fromModule() { + try { + // @ts-expect-error + const data = await import('astro:data-layer-content'); + return DataStore.fromJSON(data.default); + } catch {} + return new DataStore(); + } + + static fromJSON(entries: Array<[string, Array<[string, any]>]>) { + const collections = new Map>(); + for (const [collectionName, collection] of entries) { + collections.set(collectionName, new Map(collection)); + } + const store = new DataStore(); + store.#collections = collections; + return store; + } +} + +export interface ScopedDataStore { + get: (key: string) => unknown; + entries: () => Array<[id: string, unknown]>; + set: (key: string, value: unknown) => void; + values: () => Array; + keys: () => Array; + delete: (key: string) => void; + clear: () => void; + has: (key: string) => boolean; +} + +/** + * A key-value store for metadata strings. Useful for storing things like sync tokens. + */ + +export interface MetaStore { + get: (key: string) => string | undefined; + set: (key: string, value: string) => void; + has: (key: string) => boolean; +} + +function dataStoreSingleton() { + let instance: Promise | DataStore | undefined = undefined; + return { + get: async () => { + if (!instance) { + instance = DataStore.fromModule(); + } + return instance; + }, + set: (store: DataStore) => { + instance = store; + }, + }; +} + +export const globalDataStore = dataStoreSingleton(); diff --git a/packages/astro/src/content/file.ts b/packages/astro/src/content/file.ts new file mode 100644 index 000000000000..572d89d34e84 --- /dev/null +++ b/packages/astro/src/content/file.ts @@ -0,0 +1,62 @@ +import { fileURLToPath } from 'url'; +import type { Loader } from './loaders.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. + * @todo Add support for other file types, such as YAML, CSV etc. + * @param fileName The path to the JSON file to load, relative to the content directory. + */ +export function file(fileName: string): Loader { + if (fileName.includes('*')) { + // TODO: AstroError + throw new Error('Glob patterns are not supported in `file` loader. Use `glob` loader instead.'); + } + return { + name: 'file-loader', + load: async ({ store, logger, settings, parseData }) => { + const contentDir = new URL('./content/', settings.config.srcDir); + + const url = new URL(fileName, contentDir); + if (!existsSync(url)) { + logger.error(`File not found: ${fileName}`); + return; + } + + let json: Array>; + + try { + const data = await fs.readFile(url, 'utf-8'); + json = JSON.parse(data); + } catch (error: any) { + logger.error(`Error reading data from ${fileName}`); + logger.debug(error.message); + return; + } + + const filePath = fileURLToPath(url); + + if (Array.isArray(json)) { + if (json.length === 0) { + logger.warn(`No items found in ${fileName}`); + } + for (const rawItem of json) { + const id = (rawItem.id ?? rawItem.slug)?.toString(); + if (!id) { + 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); + } + } else if (typeof json === 'object') { + for (const [id, rawItem] of Object.entries>(json)) { + const item = await parseData({ id, data: rawItem, filePath }); + store.set(id, item); + } + } else { + logger.error(`Invalid data in ${fileName}. Must be an array or object.`); + } + }, + }; +} diff --git a/packages/astro/src/content/loaders.ts b/packages/astro/src/content/loaders.ts new file mode 100644 index 000000000000..934ef99e3e30 --- /dev/null +++ b/packages/astro/src/content/loaders.ts @@ -0,0 +1,123 @@ +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 { getEntryData, globalContentConfigObserver } from './utils.js'; +import { promises as fs, existsSync } from 'fs'; +import { DATA_STORE_FILE } from './consts.js'; + +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 { + /** 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 = Record>( + props: ParseDataOptions + ): T; +} + +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?: S | Promise | (() => S | Promise); + render?: (entry: any) => any; +} + +/** + * Run the `load()` method of each collection's loader, which will load the data and save it in the data store. + * The loader itself is responsible for deciding whether this will clear and reload the full collection, or + * perform an incremental update. After the data is loaded, the data store is written to disk. + */ +export async function syncContentLayer({ + settings, + logger: globalLogger, + store, +}: { settings: AstroSettings; logger: Logger; store?: DataStore }) { + const logger = globalLogger.forkIntegrationLogger('content'); + if (!store) { + store = await DataStore.fromDisk(new URL(DATA_STORE_FILE, settings.config.cacheDir)); + globalDataStore.set(store); + } + const contentConfig = globalContentConfigObserver.get(); + if (contentConfig?.status !== 'loaded') { + 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') { + return; + } + + let { schema } = collection; + + if (!schema) { + schema = collection.loader.schema; + } + + if (typeof schema === 'function') { + schema = await schema({ + image: () => { + throw new Error('Images are currently not supported for experimental data collections'); + }, + }); + } + + const collectionWithResolvedSchema = { ...collection, schema }; + + function parseData = Record>({ + id, + data, + filePath = '', + }: { id: string; data: T; filePath?: string }): T { + return getEntryData( + { + id, + collection: name, + unvalidatedData: data, + _internal: { + rawData: undefined, + filePath, + }, + }, + collectionWithResolvedSchema, + false + ) as unknown as T; + } + + return collection.loader.load({ + collection: name, + store: store.scopedStore(name), + meta: store.metaStore(name), + logger, + settings, + parseData, + }); + }) + ); + const cacheFile = new URL(DATA_STORE_FILE, settings.config.cacheDir); + if (!existsSync(settings.config.cacheDir)) { + await fs.mkdir(settings.config.cacheDir, { recursive: true }); + } + await store.writeToDisk(cacheFile); + logger.info('Synced content'); +} diff --git a/packages/astro/src/content/runtime.ts b/packages/astro/src/content/runtime.ts index 6fd017c85c95..a22bd291947e 100644 --- a/packages/astro/src/content/runtime.ts +++ b/packages/astro/src/content/runtime.ts @@ -14,6 +14,8 @@ import { unescapeHTML, } from '../runtime/server/index.js'; import type { ContentLookupMap } from './utils.js'; +import { globalDataStore } from './data-store.js'; +export { file } from './file.js'; type LazyImport = () => Promise; type GlobResult = Record; @@ -56,11 +58,19 @@ export function createGetCollection({ cacheEntriesByCollection: Map; }) { return async function getCollection(collection: string, filter?: (entry: any) => unknown) { - let type: 'content' | 'data'; + const store = await globalDataStore.get(); + let type: 'content' | 'data' | 'experimental_data'; if (collection in contentCollectionToEntryMap) { type = 'content'; } else if (collection in dataCollectionToEntryMap) { type = 'data'; + } else if (store.hasCollection(collection)) { + return [...store.entries(collection)].map(([id, data]) => ({ + id, + collection, + data, + type: 'experimental_data', + })); } else { // eslint-disable-next-line no-console console.warn( @@ -153,6 +163,21 @@ export function createGetEntryBySlug({ export function createGetDataEntryById({ getEntryImport }: { getEntryImport: GetEntryImport }) { return async function getDataEntryById(collection: string, id: string) { + const store = await globalDataStore.get(); + + if (store.hasCollection(collection)) { + const data = store.get(collection, id); + if (!data) { + throw new Error(`Entry ${collection} → ${id} was not found.`); + } + + return { + id, + collection, + data: store.get(collection, id), + }; + } + const lazyImport = await getEntryImport(collection, id); // TODO: AstroError diff --git a/packages/astro/src/content/types-generator.ts b/packages/astro/src/content/types-generator.ts index b970eadb9011..5aed9f1ecd1c 100644 --- a/packages/astro/src/content/types-generator.ts +++ b/packages/astro/src/content/types-generator.ts @@ -46,6 +46,10 @@ type CollectionEntryMap = { | { type: 'data'; entries: Record; + } + | { + type: 'experimental_data'; + entries: Record; }; }; @@ -245,7 +249,7 @@ export async function createContentTypesGenerator({ collectionEntryMap[collectionKey] = { type: 'content', entries: { - ...collectionInfo.entries, + ...(collectionInfo.entries as Record), [entryKey]: { slug: addedSlug }, }, }; @@ -400,6 +404,7 @@ async function writeContentFiles({ if ( collectionConfig?.type && collection.type !== 'unknown' && + collectionConfig.type !== 'experimental_data' && collection.type !== collectionConfig.type ) { viteServer.hot.send({ @@ -422,7 +427,7 @@ async function writeContentFiles({ }); return; } - const resolvedType: 'content' | 'data' = + const resolvedType: 'content' | 'data' | 'experimental_data' = collection.type === 'unknown' ? // Add empty / unknown collections to the data type map by default // This ensures `getCollection('empty-collection')` doesn't raise a type error @@ -430,7 +435,11 @@ async function writeContentFiles({ : collection.type; const collectionEntryKeys = Object.keys(collection.entries).sort(); - const dataType = collectionConfig?.schema ? `InferEntrySchema<${collectionKey}>` : 'any'; + const dataType = + collectionConfig?.schema || + (collectionConfig?.type === 'experimental_data' && collectionConfig.loader?.schema) + ? `InferEntrySchema<${collectionKey}>` + : 'any'; switch (resolvedType) { case 'content': if (collectionEntryKeys.length === 0) { @@ -450,6 +459,7 @@ async function writeContentFiles({ contentTypesStr += `};\n`; break; case 'data': + case 'experimental_data': if (collectionEntryKeys.length === 0) { dataTypesStr += `${collectionKey}: Record;\n`; } else { diff --git a/packages/astro/src/content/utils.ts b/packages/astro/src/content/utils.ts index 2bbe40fbe9a4..e48cbeeb2780 100644 --- a/packages/astro/src/content/utils.ts +++ b/packages/astro/src/content/utils.ts @@ -35,6 +35,30 @@ export const collectionConfigParser = z.union([ type: z.literal('data'), schema: z.any().optional(), }), + z.object({ + type: z.literal('experimental_data'), + schema: z.any().optional(), + loader: z.object({ + name: z.string(), + load: z.function( + z.tuple( + [ + z.object({ + collection: z.string(), + store: z.any(), + meta: z.any(), + logger: z.any(), + settings: z.any(), + parseData: z.any(), + }), + ], + z.unknown() + ) + ), + schema: z.any().optional(), + render: z.function(z.tuple([z.any()], z.unknown())).optional(), + }), + }), ]); export const contentConfigParser = z.object({ @@ -81,10 +105,10 @@ export async function getEntryData( }, collectionConfig: CollectionConfig, shouldEmitFile: boolean, - pluginContext: PluginContext + pluginContext?: PluginContext ) { let data; - if (collectionConfig.type === 'data') { + if (collectionConfig.type === 'data' || collectionConfig.type === 'experimental_data') { data = entry.unvalidatedData; } else { const { slug, ...unvalidatedData } = entry.unvalidatedData; @@ -93,6 +117,9 @@ export async function getEntryData( let schema = collectionConfig.schema; if (typeof schema === 'function') { + if (!pluginContext) { + throw new Error('Plugin context is required for schema functions'); + } schema = schema({ image: createImage(pluginContext, shouldEmitFile, entry._internal.filePath), }); 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 76634c3ddd25..6308c47757e3 100644 --- a/packages/astro/src/content/vite-plugin-content-virtual-mod.ts +++ b/packages/astro/src/content/vite-plugin-content-virtual-mod.ts @@ -4,6 +4,7 @@ import { fileURLToPath, pathToFileURL } from 'node:url'; 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'; @@ -15,6 +16,9 @@ import { CONTENT_FLAG, CONTENT_RENDER_FLAG, DATA_FLAG, + DATA_STORE_FILE, + DATA_STORE_VIRTUAL_ID, + RESOLVED_DATA_STORE_VIRTUAL_ID, RESOLVED_VIRTUAL_MODULE_ID, VIRTUAL_MODULE_ID, } from './consts.js'; @@ -42,6 +46,7 @@ export function astroContentVirtualModPlugin({ }: AstroContentVirtualModPluginParams): Plugin { let IS_DEV = false; const IS_SERVER = isServerLikeOutput(settings.config); + const dataStoreFile = new URL(DATA_STORE_FILE, settings.config.cacheDir); return { name: 'astro-content-virtual-mod-plugin', enforce: 'pre', @@ -60,6 +65,9 @@ export function astroContentVirtualModPlugin({ return { id: RESOLVED_VIRTUAL_MODULE_ID, external: true }; } } + if (id === DATA_STORE_VIRTUAL_ID) { + return RESOLVED_DATA_STORE_VIRTUAL_ID; + } }, async load(id, args) { if (id === RESOLVED_VIRTUAL_MODULE_ID) { @@ -91,6 +99,25 @@ export function astroContentVirtualModPlugin({ } satisfies AstroPluginMetadata, }; } + if (id === RESOLVED_DATA_STORE_VIRTUAL_ID) { + if (!fs.existsSync(dataStoreFile)) { + return 'export default {}'; + } + const jsonData = await fs.promises.readFile(dataStoreFile, 'utf-8'); + + try { + const parsed = JSON.parse(jsonData); + return { + code: dataToEsm(parsed, { + compact: true, + }), + map: { mappings: '' }, + }; + } catch (err) { + const message = 'Could not parse JSON file'; + this.error({ message, id, cause: err }); + } + } }, renderChunk(code, chunk) { if (!settings.config.experimental.contentCollectionCache) { diff --git a/packages/astro/src/core/build/index.ts b/packages/astro/src/core/build/index.ts index d4c23b7c6dc4..b318ffb5b4b2 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 { syncContentLayer } from '../../content/loaders.js'; import { telemetry } from '../../events/index.js'; import { eventCliSession } from '../../events/session.js'; import { @@ -32,7 +33,7 @@ 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 @@ -149,6 +150,10 @@ class AstroBuilder { return process.exit(syncRet); } + const dataStore = await DataStore.fromModule(); + globalDataStore.set(dataStore); + await syncContentLayer({ settings: this.settings, logger: logger }); + return { viteConfig }; } diff --git a/packages/astro/src/core/sync/index.ts b/packages/astro/src/core/sync/index.ts index 1e43884ac0a7..e399ee516a02 100644 --- a/packages/astro/src/core/sync/index.ts +++ b/packages/astro/src/core/sync/index.ts @@ -6,6 +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 { globalContentConfigObserver } from '../../content/utils.js'; import { syncAstroEnv } from '../../env/sync.js'; import { telemetry } from '../../events/index.js'; @@ -86,6 +87,8 @@ export default async function sync( if (exitCode !== 0) return exitCode; syncAstroEnv(settings, options?.fs); + await syncContentLayer({ settings, logger }); + logger.info(null, `Types generated ${dim(getTimeStat(timerStart, performance.now()))}`); return 0; } catch (err) { diff --git a/packages/astro/templates/content/module.mjs b/packages/astro/templates/content/module.mjs index f246678a25ec..92ae22b31119 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 } from 'astro/content/runtime'; +export { defineCollection, file } from 'astro/content/runtime'; export { z } from 'astro/zod'; const contentDir = '@@CONTENT_DIR@@'; diff --git a/packages/astro/test/content-layer.test.js b/packages/astro/test/content-layer.test.js new file mode 100644 index 000000000000..6b079e299818 --- /dev/null +++ b/packages/astro/test/content-layer.test.js @@ -0,0 +1,83 @@ +import assert from 'node:assert/strict'; +import { before, describe, it } from 'node:test'; +import { loadFixture } from './test-utils.js'; + +describe('Content Layer', () => { + let fixture; + let json; + + before(async () => { + fixture = await loadFixture({ root: './fixtures/content-layer/' }); + await fixture.build(); + const rawJson = await fixture.readFile('/collections.json'); + json = JSON.parse(rawJson); + }); + + it('Returns custom loader collection', async () => { + assert.ok(json.hasOwnProperty('customLoader')); + assert.ok(Array.isArray(json.customLoader)); + + const item = json.customLoader[0]; + assert.deepEqual(item, { + id: '1', + collection: 'blog', + data: { + userId: 1, + id: 1, + 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', + }); + }); + + it('Returns `file()` loader collection', async () => { + assert.ok(json.hasOwnProperty('fileLoader')); + assert.ok(Array.isArray(json.fileLoader)); + + const ids = json.fileLoader.map((item) => item.data.id); + assert.deepEqual(ids, [ + 'labrador-retriever', + 'german-shepherd', + 'golden-retriever', + 'french-bulldog', + 'bulldog', + 'beagle', + 'poodle', + 'rottweiler', + 'german-shorthaired-pointer', + 'yorkshire-terrier', + 'boxer', + 'dachshund', + 'siberian-husky', + 'great-dane', + 'doberman-pinscher', + 'australian-shepherd', + 'miniature-schnauzer', + 'cavalier-king-charles-spaniel', + 'shih-tzu', + 'boston-terrier', + 'bernese-mountain-dog', + 'pomeranian', + 'havanese', + 'english-springer-spaniel', + 'shetland-sheepdog', + ]); + }); + + it('Returns data entry by id', async () => { + assert.ok(json.hasOwnProperty('dataEntryById')); + assert.deepEqual(json.dataEntryById, { + id: 'beagle', + collection: 'dogs', + data: { + breed: 'Beagle', + id: 'beagle', + size: 'Small to Medium', + origin: 'England', + lifespan: '12-15 years', + temperament: ['Friendly', 'Curious', 'Merry'], + }, + }); + }); +}); diff --git a/packages/astro/test/fixtures/content-layer/astro.config.mjs b/packages/astro/test/fixtures/content-layer/astro.config.mjs new file mode 100644 index 000000000000..d69e57975a64 --- /dev/null +++ b/packages/astro/test/fixtures/content-layer/astro.config.mjs @@ -0,0 +1,6 @@ +import mdx from '@astrojs/mdx'; +import { defineConfig } from 'astro/config'; + +export default defineConfig({ + integrations: [mdx()], +}); diff --git a/packages/astro/test/fixtures/content-layer/package.json b/packages/astro/test/fixtures/content-layer/package.json new file mode 100644 index 000000000000..fc73ce6f7ac7 --- /dev/null +++ b/packages/astro/test/fixtures/content-layer/package.json @@ -0,0 +1,9 @@ +{ + "name": "@test/content-layer", + "version": "0.0.0", + "private": true, + "dependencies": { + "astro": "workspace:*", + "@astrojs/mdx": "workspace:*" + } +} diff --git a/packages/astro/test/fixtures/content-layer/src/components/H2.astro b/packages/astro/test/fixtures/content-layer/src/components/H2.astro new file mode 100644 index 000000000000..d1ad359c2ee1 --- /dev/null +++ b/packages/astro/test/fixtures/content-layer/src/components/H2.astro @@ -0,0 +1,4 @@ +--- +--- + +

diff --git a/packages/astro/test/fixtures/content-layer/src/components/H3.astro b/packages/astro/test/fixtures/content-layer/src/components/H3.astro new file mode 100644 index 000000000000..fa476e929eae --- /dev/null +++ b/packages/astro/test/fixtures/content-layer/src/components/H3.astro @@ -0,0 +1,2 @@ + +

\ No newline at end of file diff --git a/packages/astro/test/fixtures/content-layer/src/components/LayoutProp.astro b/packages/astro/test/fixtures/content-layer/src/components/LayoutProp.astro new file mode 100644 index 000000000000..a2954162a396 --- /dev/null +++ b/packages/astro/test/fixtures/content-layer/src/components/LayoutProp.astro @@ -0,0 +1,39 @@ +--- +import { CollectionEntry, getCollection } from 'astro:content'; +import H3 from './H3.astro' +// Test for recursive `getCollection()` calls +const blog = await getCollection('blog'); + +type Props = { + content: CollectionEntry<'blog'>['data']; +}; + +const { + content: { title }, +} = Astro.props; +--- + + + + + + + + With Layout Prop + + +

{title}

+

H3 inserted in the layout

+ + + + + diff --git a/packages/astro/test/fixtures/content-layer/src/components/WithScripts.astro b/packages/astro/test/fixtures/content-layer/src/components/WithScripts.astro new file mode 100644 index 000000000000..e37694eaf1f0 --- /dev/null +++ b/packages/astro/test/fixtures/content-layer/src/components/WithScripts.astro @@ -0,0 +1,11 @@ +

Hoisted script didn't update me :(

+ +

Inline script didn't update me :(

+ + + + diff --git a/packages/astro/test/fixtures/content-layer/src/content/_data/dogs.json b/packages/astro/test/fixtures/content-layer/src/content/_data/dogs.json new file mode 100644 index 000000000000..66e6320c65e1 --- /dev/null +++ b/packages/astro/test/fixtures/content-layer/src/content/_data/dogs.json @@ -0,0 +1,302 @@ +[ + { + "breed": "Labrador Retriever", + "id": "labrador-retriever", + "size": "Large", + "origin": "Canada", + "lifespan": "10-12 years", + "temperament": [ + "Friendly", + "Active", + "Outgoing" + ] + }, + { + "breed": "German Shepherd", + "id": "german-shepherd", + "size": "Large", + "origin": "Germany", + "lifespan": "9-13 years", + "temperament": [ + "Loyal", + "Intelligent", + "Confident" + ] + }, + { + "breed": "Golden Retriever", + "id": "golden-retriever", + "size": "Large", + "origin": "Scotland", + "lifespan": "10-12 years", + "temperament": [ + "Intelligent", + "Friendly", + "Devoted" + ] + }, + { + "breed": "French Bulldog", + "id": "french-bulldog", + "size": "Small", + "origin": "France", + "lifespan": "10-12 years", + "temperament": [ + "Playful", + "Adaptable", + "Sociable" + ] + }, + { + "breed": "Bulldog", + "id": "bulldog", + "size": "Medium", + "origin": "England", + "lifespan": "8-10 years", + "temperament": [ + "Docile", + "Willful", + "Friendly" + ] + }, + { + "breed": "Beagle", + "id": "beagle", + "size": "Small to Medium", + "origin": "England", + "lifespan": "12-15 years", + "temperament": [ + "Friendly", + "Curious", + "Merry" + ] + }, + { + "breed": "Poodle", + "id": "poodle", + "size": "Toy, Miniature, or Standard", + "origin": "Germany", + "lifespan": "12-15 years", + "temperament": [ + "Intelligent", + "Active", + "Alert" + ] + }, + { + "breed": "Rottweiler", + "id": "rottweiler", + "size": "Large", + "origin": "Germany", + "lifespan": "8-10 years", + "temperament": [ + "Loyal", + "Confident", + "Courageous" + ] + }, + { + "breed": "German Shorthaired Pointer", + "id": "german-shorthaired-pointer", + "size": "Medium to Large", + "origin": "Germany", + "lifespan": "10-12 years", + "temperament": [ + "Friendly", + "Intelligent", + "Willing to Please" + ] + }, + { + "breed": "Yorkshire Terrier", + "id": "yorkshire-terrier", + "size": "Toy", + "origin": "England", + "lifespan": "13-16 years", + "temperament": [ + "Affectionate", + "Sprightly", + "Tomboyish" + ] + }, + { + "breed": "Boxer", + "id": "boxer", + "size": "Medium to Large", + "origin": "Germany", + "lifespan": "10-12 years", + "temperament": [ + "Playful", + "Energetic", + "Loyal" + ] + }, + { + "breed": "Dachshund", + "id": "dachshund", + "size": "Small", + "origin": "Germany", + "lifespan": "12-16 years", + "temperament": [ + "Clever", + "Stubborn", + "Devoted" + ] + }, + { + "breed": "Siberian Husky", + "id": "siberian-husky", + "size": "Medium", + "origin": "Siberia", + "lifespan": "12-14 years", + "temperament": [ + "Outgoing", + "Mischievous", + "Loyal" + ] + }, + { + "breed": "Great Dane", + "id": "great-dane", + "size": "Large", + "origin": "Germany", + "lifespan": "7-10 years", + "temperament": [ + "Friendly", + "Patient", + "Dependable" + ] + }, + { + "breed": "Doberman Pinscher", + "id": "doberman-pinscher", + "size": "Large", + "origin": "Germany", + "lifespan": "10-12 years", + "temperament": [ + "Loyal", + "Fearless", + "Alert" + ] + }, + { + "breed": "Australian Shepherd", + "id": "australian-shepherd", + "size": "Medium", + "origin": "United States", + "lifespan": "12-15 years", + "temperament": [ + "Intelligent", + "Work-oriented", + "Exuberant" + ] + }, + { + "breed": "Miniature Schnauzer", + "id": "miniature-schnauzer", + "size": "Small", + "origin": "Germany", + "lifespan": "12-15 years", + "temperament": [ + "Friendly", + "Smart", + "Obedient" + ] + }, + { + "breed": "Cavalier King Charles Spaniel", + "id": "cavalier-king-charles-spaniel", + "size": "Small", + "origin": "United Kingdom", + "lifespan": "9-14 years", + "temperament": [ + "Affectionate", + "Gentle", + "Graceful" + ] + }, + { + "breed": "Shih Tzu", + "id": "shih-tzu", + "size": "Small", + "origin": "China", + "lifespan": "10-18 years", + "temperament": [ + "Affectionate", + "Playful", + "Outgoing" + ] + }, + { + "breed": "Boston Terrier", + "id": "boston-terrier", + "size": "Small", + "origin": "United States", + "lifespan": "11-13 years", + "temperament": [ + "Friendly", + "Lively", + "Intelligent" + ] + }, + { + "breed": "Bernese Mountain Dog", + "id": "bernese-mountain-dog", + "size": "Large", + "origin": "Switzerland", + "lifespan": "7-10 years", + "temperament": [ + "Good-natured", + "Calm", + "Strong" + ] + }, + { + "breed": "Pomeranian", + "id": "pomeranian", + "size": "Toy", + "origin": "Germany", + "lifespan": "12-16 years", + "temperament": [ + "Lively", + "Bold", + "Inquisitive" + ] + }, + { + "breed": "Havanese", + "id": "havanese", + "size": "Small", + "origin": "Cuba", + "lifespan": "14-16 years", + "temperament": [ + "Playful", + "Intelligent", + "Outgoing" + ] + }, + { + "breed": "English Springer Spaniel", + "id": "english-springer-spaniel", + "size": "Medium", + "origin": "England", + "lifespan": "12-14 years", + "temperament": [ + "Friendly", + "Playful", + "Obedient" + ] + }, + { + "breed": "Shetland Sheepdog", + "id": "shetland-sheepdog", + "size": "Small", + "origin": "Scotland", + "lifespan": "12-14 years", + "temperament": [ + "Playful", + "Energetic", + "Intelligent" + ] + } +] diff --git a/packages/astro/test/fixtures/content-layer/src/content/config.ts b/packages/astro/test/fixtures/content-layer/src/content/config.ts new file mode 100644 index 000000000000..eda587f6a25f --- /dev/null +++ b/packages/astro/test/fixtures/content-layer/src/content/config.ts @@ -0,0 +1,21 @@ +import { defineCollection, file, z } from 'astro:content'; +import { loader } from '../loaders/post-loader.js'; + +const blog = defineCollection({ + type: "experimental_data", + loader: loader({ url: "https://jsonplaceholder.typicode.com/posts" }), +}); + +const dogs = defineCollection({ + type: "experimental_data", + loader: file("_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()) + }), +}) +export const collections = { blog, dogs }; 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 new file mode 100644 index 000000000000..edd2a8dbf443 --- /dev/null +++ b/packages/astro/test/fixtures/content-layer/src/loaders/post-loader.ts @@ -0,0 +1,34 @@ +import type { Loader } from 'astro:content'; + +export interface PostLoaderConfig { + url: string; +} + +export function loader(config:PostLoaderConfig): Loader { + return { + name: "post-loader", + load: async ({ + store, meta, logger + }) => { + logger.info('Loading posts'); + + const lastSynced = meta.get('lastSynced'); + + // Don't sync more than once a minute + if (lastSynced && (Date.now() - Number(lastSynced) < 1000 * 60)) { + logger.info('Skipping sync'); + return; + } + + const posts = await fetch(config.url) + .then((res) => res.json()); + + store.clear(); + + for (const post of posts) { + store.set(post.id, post); + } + meta.set('lastSynced', String(Date.now())); + }, + }; +} diff --git a/packages/astro/test/fixtures/content-layer/src/pages/blog/[id].astro b/packages/astro/test/fixtures/content-layer/src/pages/blog/[id].astro new file mode 100644 index 000000000000..850833907ba7 --- /dev/null +++ b/packages/astro/test/fixtures/content-layer/src/pages/blog/[id].astro @@ -0,0 +1,29 @@ +--- +import type { GetStaticPaths } from "astro"; +import { getCollection } from "astro:content" +export const getStaticPaths = (async () => { + const collection = await getCollection("blog"); + if(!collection) return [] + return collection.map((post) => ({ + params: { + id: post.id + }, + props: { + post: post.data + } + })); +}) satisfies GetStaticPaths; + +interface Props { + post: { + title: string; + body: string; + } +} + +const { post } = Astro.props + +--- + +

{post.title}

+

{post.body}

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 new file mode 100644 index 000000000000..bb41b224677f --- /dev/null +++ b/packages/astro/test/fixtures/content-layer/src/pages/collections.json.js @@ -0,0 +1,12 @@ +import { getCollection, getDataEntryById } from 'astro:content'; + +export async function GET() { + const customLoader = await getCollection('blog'); + const fileLoader = await getCollection('dogs'); + + const dataEntryById = await getDataEntryById('dogs', 'beagle'); + + return new Response( + JSON.stringify({ customLoader, fileLoader, dataEntryById }), + ); +} diff --git a/packages/astro/test/fixtures/content-layer/src/pages/dogs/[slug].astro b/packages/astro/test/fixtures/content-layer/src/pages/dogs/[slug].astro new file mode 100644 index 000000000000..977ae6efa167 --- /dev/null +++ b/packages/astro/test/fixtures/content-layer/src/pages/dogs/[slug].astro @@ -0,0 +1,40 @@ +--- +import type { GetStaticPaths } from "astro"; +import { getCollection } from "astro:content" +export const getStaticPaths = (async () => { + const collection = await getCollection("dogs"); + if(!collection) return [] + return collection.map((dog) => ({ + params: { + slug: dog.id + }, + props: { + dog: dog.data + } + })); +}) satisfies GetStaticPaths; + + +interface Props { + dog: { + breed: string; + id: string; + size: string; + origin: string; + lifespan: string; + temperament: string[]; + } +} + +const { dog } = Astro.props + + +--- + +

{dog.breed}

+
    +
  • Size: {dog.size}
  • +
  • Origin: {dog.origin}
  • +
  • Lifespan: {dog.lifespan}
  • +
  • Temperament: {dog.temperament.join(", ")}
  • +
diff --git a/packages/astro/test/fixtures/content-layer/src/pages/index.astro b/packages/astro/test/fixtures/content-layer/src/pages/index.astro new file mode 100644 index 000000000000..7036de032fdf --- /dev/null +++ b/packages/astro/test/fixtures/content-layer/src/pages/index.astro @@ -0,0 +1,30 @@ +--- +import { getCollection, getDataEntryById } from 'astro:content'; + +const blog = await getCollection('blog'); +const first = await getDataEntryById('blog', 1); +const dogs = await getCollection('dogs'); +--- + + + Index + + + +

Dogs

+ +

Blog Posts

+ +

{first.data.title}

+ + + + diff --git a/packages/astro/types/content.d.ts b/packages/astro/types/content.d.ts index e09bda61844b..4894d8341be5 100644 --- a/packages/astro/types/content.d.ts +++ b/packages/astro/types/content.d.ts @@ -20,6 +20,53 @@ declare module 'astro:content' { >; }>; + export interface DataStore { + get: (key: string) => any; + entries: () => IterableIterator<[id: string, any]>; + set: (key: string, value: any) => void; + delete: (key: string) => void; + clear: () => void; + has: (key: string) => boolean; + } + export interface MetaStore { + get: (key: string) => string | undefined; + set: (key: string, value: string) => void; + 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: any; + /** Validates and parses the data according to the schema */ + parseData = Record>( + props: ParseDataOptions + ): T; + } + 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?: S | Promise | (() => S | Promise); + render?: (entry: any) => any; + } + + export function file(filePath: string): Loader; + type BaseSchemaWithoutEffects = | import('astro/zod').AnyZodObject | import('astro/zod').ZodUnion<[BaseSchemaWithoutEffects, ...BaseSchemaWithoutEffects[]]> @@ -32,6 +79,12 @@ declare module 'astro:content' { export type SchemaContext = { image: ImageFunction }; + type ContentCollectionV2Config = { + type: 'experimental_data'; + schema?: S | ((context: SchemaContext) => S); + loader: Loader; + }; + type DataCollectionConfig = { type: 'data'; schema?: S | ((context: SchemaContext) => S); @@ -44,7 +97,8 @@ declare module 'astro:content' { export type CollectionConfig = | ContentCollectionConfig - | DataCollectionConfig; + | DataCollectionConfig + | ContentCollectionV2Config; export function defineCollection( input: CollectionConfig diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1761c6cf3ebd..2951b639e8ad 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -74,7 +74,7 @@ importers: version: 5.5.2 typescript-eslint: specifier: ^7.13.1 - version: 7.13.1(eslint@9.5.0)(typescript@5.5.2) + version: 7.14.1(eslint@9.5.0)(typescript@5.5.2) benchmark: dependencies: @@ -558,6 +558,9 @@ importers: '@babel/types': specifier: ^7.24.7 version: 7.24.7 + '@rollup/pluginutils': + specifier: ^5.1.0 + version: 5.1.0(rollup@4.18.0) '@types/babel__core': specifier: ^7.20.5 version: 7.20.5 @@ -680,7 +683,7 @@ importers: version: 7.6.2 shiki: specifier: ^1.9.0 - version: 1.9.0 + version: 1.9.1 string-width: specifier: ^7.1.0 version: 7.1.0 @@ -2650,6 +2653,15 @@ importers: specifier: workspace:* version: link:../../.. + packages/astro/test/fixtures/content-layer: + dependencies: + '@astrojs/mdx': + specifier: workspace:* + version: link:../../../../integrations/mdx + astro: + specifier: workspace:* + version: link:../../.. + packages/astro/test/fixtures/content-mixed-errors: dependencies: astro: @@ -4719,7 +4731,7 @@ importers: version: 6.0.0 rehype-pretty-code: specifier: ^0.13.2 - version: 0.13.2(shiki@1.9.0) + version: 0.13.2(shiki@1.9.1) remark-math: specifier: ^6.0.0 version: 6.0.0 @@ -5249,7 +5261,7 @@ importers: version: 3.1.1(svelte@4.2.18)(vite@5.3.1(@types/node@20.12.7)(sass@1.77.6)) svelte2tsx: specifier: ^0.7.10 - version: 0.7.10(svelte@4.2.18)(typescript@5.5.2) + version: 0.7.12(svelte@4.2.18)(typescript@5.5.2) devDependencies: astro: specifier: workspace:* @@ -5704,7 +5716,7 @@ importers: version: 3.0.1 shiki: specifier: ^1.9.0 - version: 1.9.0 + version: 1.9.1 unified: specifier: ^11.0.5 version: 11.0.5 @@ -7192,8 +7204,8 @@ packages: cpu: [x64] os: [win32] - '@shikijs/core@1.9.0': - resolution: {integrity: sha512-cbSoY8P/jgGByG8UOl3jnP/CWg/Qk+1q+eAKWtcrU3pNoILF8wTsLB0jT44qUBV8Ce1SvA9uqcM9Xf+u3fJFBw==} + '@shikijs/core@1.9.1': + resolution: {integrity: sha512-EmUful2MQtY8KgCF1OkBtOuMcvaZEvmdubhW0UHCGXi21O9dRLeADVCj+k6ZS+de7Mz9d2qixOXJ+GLhcK3pXg==} '@sinclair/typebox@0.27.8': resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} @@ -7454,8 +7466,8 @@ packages: '@types/yargs-parser@21.0.3': resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} - '@typescript-eslint/eslint-plugin@7.13.1': - resolution: {integrity: sha512-kZqi+WZQaZfPKnsflLJQCz6Ze9FFSMfXrrIOcyargekQxG37ES7DJNpJUE9Q/X5n3yTIP/WPutVNzgknQ7biLg==} + '@typescript-eslint/eslint-plugin@7.14.1': + resolution: {integrity: sha512-aAJd6bIf2vvQRjUG3ZkNXkmBpN+J7Wd0mfQiiVCJMu9Z5GcZZdcc0j8XwN/BM97Fl7e3SkTXODSk4VehUv7CGw==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: '@typescript-eslint/parser': ^7.0.0 @@ -7465,8 +7477,8 @@ packages: typescript: optional: true - '@typescript-eslint/parser@7.13.1': - resolution: {integrity: sha512-1ELDPlnLvDQ5ybTSrMhRTFDfOQEOXNM+eP+3HT/Yq7ruWpciQw+Avi73pdEbA4SooCawEWo3dtYbF68gN7Ed1A==} + '@typescript-eslint/parser@7.14.1': + resolution: {integrity: sha512-8lKUOebNLcR0D7RvlcloOacTOWzOqemWEWkKSVpMZVF/XVcwjPR+3MD08QzbW9TCGJ+DwIc6zUSGZ9vd8cO1IA==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 @@ -7475,12 +7487,12 @@ packages: typescript: optional: true - '@typescript-eslint/scope-manager@7.13.1': - resolution: {integrity: sha512-adbXNVEs6GmbzaCpymHQ0MB6E4TqoiVbC0iqG3uijR8ZYfpAXMGttouQzF4Oat3P2GxDVIrg7bMI/P65LiQZdg==} + '@typescript-eslint/scope-manager@7.14.1': + resolution: {integrity: sha512-gPrFSsoYcsffYXTOZ+hT7fyJr95rdVe4kGVX1ps/dJ+DfmlnjFN/GcMxXcVkeHDKqsq6uAcVaQaIi3cFffmAbA==} engines: {node: ^18.18.0 || >=20.0.0} - '@typescript-eslint/type-utils@7.13.1': - resolution: {integrity: sha512-aWDbLu1s9bmgPGXSzNCxELu+0+HQOapV/y+60gPXafR8e2g1Bifxzevaa+4L2ytCWm+CHqpELq4CSoN9ELiwCg==} + '@typescript-eslint/type-utils@7.14.1': + resolution: {integrity: sha512-/MzmgNd3nnbDbOi3LfasXWWe292+iuo+umJ0bCCMCPc1jLO/z2BQmWUUUXvXLbrQey/JgzdF/OV+I5bzEGwJkQ==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 @@ -7489,12 +7501,12 @@ packages: typescript: optional: true - '@typescript-eslint/types@7.13.1': - resolution: {integrity: sha512-7K7HMcSQIAND6RBL4kDl24sG/xKM13cA85dc7JnmQXw2cBDngg7c19B++JzvJHRG3zG36n9j1i451GBzRuHchw==} + '@typescript-eslint/types@7.14.1': + resolution: {integrity: sha512-mL7zNEOQybo5R3AavY+Am7KLv8BorIv7HCYS5rKoNZKQD9tsfGUpO4KdAn3sSUvTiS4PQkr2+K0KJbxj8H9NDg==} engines: {node: ^18.18.0 || >=20.0.0} - '@typescript-eslint/typescript-estree@7.13.1': - resolution: {integrity: sha512-uxNr51CMV7npU1BxZzYjoVz9iyjckBduFBP0S5sLlh1tXYzHzgZ3BR9SVsNed+LmwKrmnqN3Kdl5t7eZ5TS1Yw==} + '@typescript-eslint/typescript-estree@7.14.1': + resolution: {integrity: sha512-k5d0VuxViE2ulIO6FbxxSZaxqDVUyMbXcidC8rHvii0I56XZPv8cq+EhMns+d/EVIL41sMXqRbK3D10Oza1bbA==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: typescript: '*' @@ -7502,14 +7514,14 @@ packages: typescript: optional: true - '@typescript-eslint/utils@7.13.1': - resolution: {integrity: sha512-h5MzFBD5a/Gh/fvNdp9pTfqJAbuQC4sCN2WzuXme71lqFJsZtLbjxfSk4r3p02WIArOF9N94pdsLiGutpDbrXQ==} + '@typescript-eslint/utils@7.14.1': + resolution: {integrity: sha512-CMmVVELns3nak3cpJhZosDkm63n+DwBlDX8g0k4QUa9BMnF+lH2lr3d130M1Zt1xxmB3LLk3NV7KQCq86ZBBhQ==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 - '@typescript-eslint/visitor-keys@7.13.1': - resolution: {integrity: sha512-k/Bfne7lrP7hcb7m9zSsgcBmo+8eicqqfNAJ7uUY+jkTFpKeH2FSkWpFRtimBxgkyvqfu9jTPRbYOvud6isdXA==} + '@typescript-eslint/visitor-keys@7.14.1': + resolution: {integrity: sha512-Crb+F75U1JAEtBeQGxSKwI60hZmmzaqA3z9sYsVm8X7W5cwLEm5bRe0/uXS6+MR/y8CVpKSR/ontIAIEPFcEkA==} engines: {node: ^18.18.0 || >=20.0.0} '@typescript/twoslash@3.1.0': @@ -7626,9 +7638,15 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 + '@vue/compiler-core@3.4.29': + resolution: {integrity: sha512-TFKiRkKKsRCKvg/jTSSKK7mYLJEQdUiUfykbG49rubC9SfDyvT2JrzTReopWlz2MxqeLyxh9UZhvxEIBgAhtrg==} + '@vue/compiler-core@3.4.30': resolution: {integrity: sha512-ZL8y4Xxdh8O6PSwfdZ1IpQ24PjTAieOz3jXb/MDTfDtANcKBMxg1KLm6OX2jofsaQGYfIVzd3BAG22i56/cF1w==} + '@vue/compiler-dom@3.4.29': + resolution: {integrity: sha512-A6+iZ2fKIEGnfPJejdB7b1FlJzgiD+Y/sxxKwJWg1EbJu6ZPgzaPQQ51ESGNv0CP6jm6Z7/pO6Ia8Ze6IKrX7w==} + '@vue/compiler-dom@3.4.30': resolution: {integrity: sha512-+16Sd8lYr5j/owCbr9dowcNfrHd+pz+w2/b5Lt26Oz/kB90C9yNbxQ3bYOvt7rI2bxk0nqda39hVcwDFw85c2Q==} @@ -7669,6 +7687,9 @@ packages: '@vue/shared@3.1.5': resolution: {integrity: sha512-oJ4F3TnvpXaQwZJNF3ZK+kLPHKarDmJjJ6jyzVNDKH9md1dptjC7lWR//jrGuLdek/U6iltWxqAnYOu8gCiOvA==} + '@vue/shared@3.4.29': + resolution: {integrity: sha512-hQ2gAQcBO/CDpC82DCrinJNgOHI2v+FA7BDW4lMSPeBpQ7sRe2OLHWe5cph1s7D8DUQAwRt18dBDfJJ220APEA==} + '@vue/shared@3.4.30': resolution: {integrity: sha512-CLg+f8RQCHQnKvuHY9adMsMaQOcqclh6Z5V9TaoMgy0ut0tz848joZ7/CYFFyF/yZ5i2yaw7Fn498C+CNZVHIg==} @@ -9694,6 +9715,10 @@ packages: resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} engines: {node: '>=8'} + minipass@7.1.0: + resolution: {integrity: sha512-oGZRv2OT1lO2UF1zUcwdTb3wqUwI0kBGTgt/T7OdSj6M6N5m3o5uPf0AIW6lVxGGoiWUR7e2AwTE+xiwK8WQig==} + engines: {node: '>=16 || 14 >=14.17'} + minipass@7.1.2: resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} engines: {node: '>=16 || 14 >=14.17'} @@ -10697,8 +10722,8 @@ packages: shiki@0.10.1: resolution: {integrity: sha512-VsY7QJVzU51j5o1+DguUd+6vmCmZ5v/6gYu4vyYAhzjuNQU6P/vmSy4uQaOhvje031qQMiW0d2BwgMH52vqMng==} - shiki@1.9.0: - resolution: {integrity: sha512-i6//Lqgn7+7nZA0qVjoYH0085YdNk4MC+tJV4bo+HgjgRMJ0JmkLZzFAuvVioJqLkcGDK5GAMpghZEZkCnwxpQ==} + shiki@1.9.1: + resolution: {integrity: sha512-8PDkgb5ja3nfujTjvC4VytL6wGOGCtFAClUb2r3QROevYXxcq+/shVJK5s6gy0HZnjaJgFxd6BpPqpRfqne5rA==} side-channel@1.0.6: resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} @@ -10923,8 +10948,8 @@ packages: peerDependencies: svelte: ^3.19.0 || ^4.0.0 - svelte2tsx@0.7.10: - resolution: {integrity: sha512-POOXaTncPGjwXMj6NVSRvdNj8KFqqLabFtXsQal3WyPy4X5raGsiDST2+ELhceKwfHk79/hR3qGUeU7KxYo4vQ==} + svelte2tsx@0.7.12: + resolution: {integrity: sha512-LFPsKxxUi+q2QCBI0TBm2m1MDPXp6mN0w0bldauwkZ+3tcvo1S6On3RQdOKe1C2vWRZKyfenj4Nu5Vb0YKagKw==} peerDependencies: svelte: ^3.55 || ^4.0.0-next.0 || ^4.0 || ^5.0.0-next.0 typescript: ^4.9.4 || ^5.0.0 @@ -11150,8 +11175,8 @@ packages: typescript-auto-import-cache@0.3.2: resolution: {integrity: sha512-+laqe5SFL1vN62FPOOJSUDTZxtgsoOXjneYOXIpx5rQ4UMiN89NAtJLpqLqyebv9fgQ/IMeeTX+mQyRnwvJzvg==} - typescript-eslint@7.13.1: - resolution: {integrity: sha512-pvLEuRs8iS9s3Cnp/Wt//hpK8nKc8hVa3cLljHqzaJJQYP8oys8GUyIFqtlev+2lT/fqMPcyQko+HJ6iYK3nFA==} + typescript-eslint@7.14.1: + resolution: {integrity: sha512-Eo1X+Y0JgGPspcANKjeR6nIqXl4VL5ldXLc15k4m9upq+eY5fhU2IueiEZL6jmHrKH8aCfbIvM/v3IrX5Hg99w==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 @@ -11190,6 +11215,9 @@ packages: resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} engines: {node: '>=18'} + unified@11.0.4: + resolution: {integrity: sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==} + unified@11.0.5: resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==} @@ -13121,7 +13149,7 @@ snapshots: '@rollup/rollup-win32-x64-msvc@4.18.0': optional: true - '@shikijs/core@1.9.0': {} + '@shikijs/core@1.9.1': {} '@sinclair/typebox@0.27.8': {} @@ -13403,14 +13431,14 @@ snapshots: '@types/yargs-parser@21.0.3': {} - '@typescript-eslint/eslint-plugin@7.13.1(@typescript-eslint/parser@7.13.1(eslint@9.5.0)(typescript@5.5.2))(eslint@9.5.0)(typescript@5.5.2)': + '@typescript-eslint/eslint-plugin@7.14.1(@typescript-eslint/parser@7.14.1(eslint@9.5.0)(typescript@5.5.2))(eslint@9.5.0)(typescript@5.5.2)': dependencies: '@eslint-community/regexpp': 4.10.0 - '@typescript-eslint/parser': 7.13.1(eslint@9.5.0)(typescript@5.5.2) - '@typescript-eslint/scope-manager': 7.13.1 - '@typescript-eslint/type-utils': 7.13.1(eslint@9.5.0)(typescript@5.5.2) - '@typescript-eslint/utils': 7.13.1(eslint@9.5.0)(typescript@5.5.2) - '@typescript-eslint/visitor-keys': 7.13.1 + '@typescript-eslint/parser': 7.14.1(eslint@9.5.0)(typescript@5.5.2) + '@typescript-eslint/scope-manager': 7.14.1 + '@typescript-eslint/type-utils': 7.14.1(eslint@9.5.0)(typescript@5.5.2) + '@typescript-eslint/utils': 7.14.1(eslint@9.5.0)(typescript@5.5.2) + '@typescript-eslint/visitor-keys': 7.14.1 eslint: 9.5.0 graphemer: 1.4.0 ignore: 5.3.1 @@ -13421,12 +13449,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@7.13.1(eslint@9.5.0)(typescript@5.5.2)': + '@typescript-eslint/parser@7.14.1(eslint@9.5.0)(typescript@5.5.2)': dependencies: - '@typescript-eslint/scope-manager': 7.13.1 - '@typescript-eslint/types': 7.13.1 - '@typescript-eslint/typescript-estree': 7.13.1(typescript@5.5.2) - '@typescript-eslint/visitor-keys': 7.13.1 + '@typescript-eslint/scope-manager': 7.14.1 + '@typescript-eslint/types': 7.14.1 + '@typescript-eslint/typescript-estree': 7.14.1(typescript@5.5.2) + '@typescript-eslint/visitor-keys': 7.14.1 debug: 4.3.5 eslint: 9.5.0 optionalDependencies: @@ -13434,15 +13462,15 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@7.13.1': + '@typescript-eslint/scope-manager@7.14.1': dependencies: - '@typescript-eslint/types': 7.13.1 - '@typescript-eslint/visitor-keys': 7.13.1 + '@typescript-eslint/types': 7.14.1 + '@typescript-eslint/visitor-keys': 7.14.1 - '@typescript-eslint/type-utils@7.13.1(eslint@9.5.0)(typescript@5.5.2)': + '@typescript-eslint/type-utils@7.14.1(eslint@9.5.0)(typescript@5.5.2)': dependencies: - '@typescript-eslint/typescript-estree': 7.13.1(typescript@5.5.2) - '@typescript-eslint/utils': 7.13.1(eslint@9.5.0)(typescript@5.5.2) + '@typescript-eslint/typescript-estree': 7.14.1(typescript@5.5.2) + '@typescript-eslint/utils': 7.14.1(eslint@9.5.0)(typescript@5.5.2) debug: 4.3.5 eslint: 9.5.0 ts-api-utils: 1.3.0(typescript@5.5.2) @@ -13451,12 +13479,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/types@7.13.1': {} + '@typescript-eslint/types@7.14.1': {} - '@typescript-eslint/typescript-estree@7.13.1(typescript@5.5.2)': + '@typescript-eslint/typescript-estree@7.14.1(typescript@5.5.2)': dependencies: - '@typescript-eslint/types': 7.13.1 - '@typescript-eslint/visitor-keys': 7.13.1 + '@typescript-eslint/types': 7.14.1 + '@typescript-eslint/visitor-keys': 7.14.1 debug: 4.3.5 globby: 11.1.0 is-glob: 4.0.3 @@ -13468,20 +13496,20 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@7.13.1(eslint@9.5.0)(typescript@5.5.2)': + '@typescript-eslint/utils@7.14.1(eslint@9.5.0)(typescript@5.5.2)': dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@9.5.0) - '@typescript-eslint/scope-manager': 7.13.1 - '@typescript-eslint/types': 7.13.1 - '@typescript-eslint/typescript-estree': 7.13.1(typescript@5.5.2) + '@typescript-eslint/scope-manager': 7.14.1 + '@typescript-eslint/types': 7.14.1 + '@typescript-eslint/typescript-estree': 7.14.1(typescript@5.5.2) eslint: 9.5.0 transitivePeerDependencies: - supports-color - typescript - '@typescript-eslint/visitor-keys@7.13.1': + '@typescript-eslint/visitor-keys@7.14.1': dependencies: - '@typescript-eslint/types': 7.13.1 + '@typescript-eslint/types': 7.14.1 eslint-visitor-keys: 3.4.3 '@typescript/twoslash@3.1.0': @@ -13676,6 +13704,14 @@ snapshots: '@babel/parser': 7.24.7 '@vue/compiler-sfc': 3.4.30 + '@vue/compiler-core@3.4.29': + dependencies: + '@babel/parser': 7.24.7 + '@vue/shared': 3.4.29 + entities: 4.5.0 + estree-walker: 2.0.2 + source-map-js: 1.2.0 + '@vue/compiler-core@3.4.30': dependencies: '@babel/parser': 7.24.7 @@ -13684,6 +13720,11 @@ snapshots: estree-walker: 2.0.2 source-map-js: 1.2.0 + '@vue/compiler-dom@3.4.29': + dependencies: + '@vue/compiler-core': 3.4.29 + '@vue/shared': 3.4.29 + '@vue/compiler-dom@3.4.30': dependencies: '@vue/compiler-core': 3.4.30 @@ -13760,6 +13801,8 @@ snapshots: '@vue/shared@3.1.5': {} + '@vue/shared@3.4.29': {} + '@vue/shared@3.4.30': {} '@webcomponents/template-shadowroot@0.2.1': {} @@ -14934,7 +14977,7 @@ snapshots: foreground-child: 3.1.1 jackspeak: 2.3.6 minimatch: 9.0.4 - minipass: 7.1.2 + minipass: 7.1.0 path-scurry: 1.10.2 glob@7.2.3: @@ -16183,6 +16226,8 @@ snapshots: minipass@5.0.0: {} + minipass@7.1.0: {} + minipass@7.1.2: {} minizlib@2.1.2: @@ -16499,7 +16544,7 @@ snapshots: path-scurry@1.10.2: dependencies: lru-cache: 10.2.0 - minipass: 7.1.2 + minipass: 7.1.0 path-to-regexp@0.1.7: {} @@ -16941,7 +16986,7 @@ snapshots: '@ungap/structured-clone': 1.2.0 hast-util-heading-rank: 3.0.0 hast-util-is-element: 3.0.0 - unified: 11.0.5 + unified: 11.0.4 unist-util-visit: 5.0.0 rehype-mathjax@6.0.0: @@ -16966,7 +17011,7 @@ snapshots: hast-util-from-html: 2.0.1 unified: 11.0.5 - rehype-pretty-code@0.13.2(shiki@1.9.0): + rehype-pretty-code@0.13.2(shiki@1.9.1): dependencies: '@types/hast': 3.0.4 hast-util-to-string: 3.0.0 @@ -16975,7 +17020,7 @@ snapshots: unified: 11.0.5 unist-util-visit: 5.0.0 optionalDependencies: - shiki: 1.9.0 + shiki: 1.9.1 rehype-raw@7.0.0: dependencies: @@ -17336,9 +17381,9 @@ snapshots: vscode-oniguruma: 1.7.0 vscode-textmate: 5.2.0 - shiki@1.9.0: + shiki@1.9.1: dependencies: - '@shikijs/core': 1.9.0 + '@shikijs/core': 1.9.1 side-channel@1.0.6: dependencies: @@ -17552,7 +17597,7 @@ snapshots: dependencies: svelte: 4.2.18 - svelte2tsx@0.7.10(svelte@4.2.18)(typescript@5.5.2): + svelte2tsx@0.7.12(svelte@4.2.18)(typescript@5.5.2): dependencies: dedent-js: 1.0.1 pascal-case: 3.1.2 @@ -17799,11 +17844,11 @@ snapshots: dependencies: semver: 7.6.2 - typescript-eslint@7.13.1(eslint@9.5.0)(typescript@5.5.2): + typescript-eslint@7.14.1(eslint@9.5.0)(typescript@5.5.2): dependencies: - '@typescript-eslint/eslint-plugin': 7.13.1(@typescript-eslint/parser@7.13.1(eslint@9.5.0)(typescript@5.5.2))(eslint@9.5.0)(typescript@5.5.2) - '@typescript-eslint/parser': 7.13.1(eslint@9.5.0)(typescript@5.5.2) - '@typescript-eslint/utils': 7.13.1(eslint@9.5.0)(typescript@5.5.2) + '@typescript-eslint/eslint-plugin': 7.14.1(@typescript-eslint/parser@7.14.1(eslint@9.5.0)(typescript@5.5.2))(eslint@9.5.0)(typescript@5.5.2) + '@typescript-eslint/parser': 7.14.1(eslint@9.5.0)(typescript@5.5.2) + '@typescript-eslint/utils': 7.14.1(eslint@9.5.0)(typescript@5.5.2) eslint: 9.5.0 optionalDependencies: typescript: 5.5.2 @@ -17826,6 +17871,16 @@ snapshots: unicorn-magic@0.1.0: {} + unified@11.0.4: + dependencies: + '@types/unist': 3.0.2 + bail: 2.0.2 + devlop: 1.1.0 + extend: 3.0.2 + is-plain-obj: 4.1.0 + trough: 2.2.0 + vfile: 6.0.1 + unified@11.0.5: dependencies: '@types/unist': 3.0.2 @@ -18041,7 +18096,7 @@ snapshots: '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.24.7) '@babel/plugin-transform-typescript': 7.24.7(@babel/core@7.24.7) '@vue/babel-plugin-jsx': 1.2.2(@babel/core@7.24.7) - '@vue/compiler-dom': 3.4.30 + '@vue/compiler-dom': 3.4.29 kolorist: 1.8.0 magic-string: 0.30.10 vite: 5.3.1(@types/node@20.12.7)(sass@1.77.6) From a66df947dcc9878f2cbcac24137befd1fc43cb74 Mon Sep 17 00:00:00 2001 From: Matt Kane Date: Fri, 28 Jun 2024 09:09:32 +0100 Subject: [PATCH 04/34] fix: sync content layer in dev (#11365) * wip * wip * wip * Update demo * Add meta * wip * Add file loader * Add schema validation * Remove log * Changeset * Format * Lockfile * Fix type * Handle loading for data store JSON * Use rollup util to import JSON * Fix types * Format * Add tests * Changes from review * Sync content layer in dev --- packages/astro/src/content/file.ts | 7 +++++-- packages/astro/src/content/loaders.ts | 3 ++- packages/astro/src/core/dev/dev.ts | 3 +++ packages/astro/types/content.d.ts | 2 +- 4 files changed, 11 insertions(+), 4 deletions(-) diff --git a/packages/astro/src/content/file.ts b/packages/astro/src/content/file.ts index 572d89d34e84..39395cd3b489 100644 --- a/packages/astro/src/content/file.ts +++ b/packages/astro/src/content/file.ts @@ -16,7 +16,7 @@ export function file(fileName: string): Loader { name: 'file-loader', load: async ({ store, logger, settings, parseData }) => { const contentDir = new URL('./content/', settings.config.srcDir); - + logger.debug(`Loading data from ${fileName}`) const url = new URL(fileName, contentDir); if (!existsSync(url)) { logger.error(`File not found: ${fileName}`); @@ -40,6 +40,7 @@ export function file(fileName: string): Loader { if (json.length === 0) { logger.warn(`No items found in ${fileName}`); } + logger.debug(`Found ${json.length} item array in ${fileName}`); for (const rawItem of json) { const id = (rawItem.id ?? rawItem.slug)?.toString(); if (!id) { @@ -50,7 +51,9 @@ export function file(fileName: string): Loader { store.set(id, item); } } else if (typeof json === 'object') { - for (const [id, rawItem] of Object.entries>(json)) { + const entries = Object.entries>(json); + logger.debug(`Found object with ${entries.length} entries in ${fileName}`); + for (const [id, rawItem] of entries) { const item = await parseData({ id, data: rawItem, filePath }); store.set(id, item); } diff --git a/packages/astro/src/content/loaders.ts b/packages/astro/src/content/loaders.ts index 934ef99e3e30..2bbcf8e20629 100644 --- a/packages/astro/src/content/loaders.ts +++ b/packages/astro/src/content/loaders.ts @@ -53,6 +53,7 @@ export async function syncContentLayer({ store, }: { settings: AstroSettings; logger: Logger; store?: DataStore }) { const logger = globalLogger.forkIntegrationLogger('content'); + logger.info('Syncing content'); if (!store) { store = await DataStore.fromDisk(new URL(DATA_STORE_FILE, settings.config.cacheDir)); globalDataStore.set(store); @@ -108,7 +109,7 @@ export async function syncContentLayer({ collection: name, store: store.scopedStore(name), meta: store.metaStore(name), - logger, + logger: globalLogger.forkIntegrationLogger(collection.loader.name ?? 'content'), settings, parseData, }); diff --git a/packages/astro/src/core/dev/dev.ts b/packages/astro/src/core/dev/dev.ts index ee1254f5fbf5..d0ca34bebf61 100644 --- a/packages/astro/src/core/dev/dev.ts +++ b/packages/astro/src/core/dev/dev.ts @@ -7,6 +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 { telemetry } from '../../events/index.js'; import * as msg from '../messages.js'; import { ensureProcessNodeEnv } from '../util.js'; @@ -102,6 +103,8 @@ export default async function dev(inlineConfig: AstroInlineConfig): Promise = Record>( props: ParseDataOptions From f9a3998cc0db9855dc7eebe8c15933e8eb32b7fc Mon Sep 17 00:00:00 2001 From: Matt Kane Date: Fri, 28 Jun 2024 09:40:46 +0100 Subject: [PATCH 05/34] feat: add typegen for loaders (#11358) --- packages/astro/package.json | 3 +- packages/astro/src/content/loaders.ts | 4 +-- packages/astro/src/content/types-generator.ts | 28 +++++++++++++++---- .../content-layer/src/loaders/post-loader.ts | 12 +++++++- packages/astro/types/content.d.ts | 6 ++-- pnpm-lock.yaml | 14 ++++++++++ 6 files changed, 55 insertions(+), 12 deletions(-) diff --git a/packages/astro/package.json b/packages/astro/package.json index 56c224604b72..7e0a4bfa2583 100644 --- a/packages/astro/package.json +++ b/packages/astro/package.json @@ -185,7 +185,8 @@ "which-pm": "^2.2.0", "yargs-parser": "^21.1.1", "zod": "^3.23.8", - "zod-to-json-schema": "^3.23.1" + "zod-to-json-schema": "^3.23.1", + "zod-to-ts": "^1.2.0" }, "optionalDependencies": { "sharp": "^0.33.3" diff --git a/packages/astro/src/content/loaders.ts b/packages/astro/src/content/loaders.ts index 2bbcf8e20629..3cf9e59066cd 100644 --- a/packages/astro/src/content/loaders.ts +++ b/packages/astro/src/content/loaders.ts @@ -32,13 +32,13 @@ export interface LoaderContext { ): T; } -export interface Loader { +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?: S | Promise | (() => S | Promise); + schema?: ZodSchema | Promise | (() => ZodSchema | Promise); render?: (entry: any) => any; } diff --git a/packages/astro/src/content/types-generator.ts b/packages/astro/src/content/types-generator.ts index 5aed9f1ecd1c..4532ac1f56e7 100644 --- a/packages/astro/src/content/types-generator.ts +++ b/packages/astro/src/content/types-generator.ts @@ -5,6 +5,7 @@ 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 type { AstroSettings, ContentEntryType } from '../@types/astro.js'; import { AstroError } from '../core/errors/errors.js'; @@ -360,6 +361,27 @@ function normalizeConfigPath(from: string, to: string) { return `"${isRelativePath(configPath) ? '' : './'}${normalizedPath}"` as const; } +async function typeForCollection( + collection: ContentConfig['collections'][T] | undefined, + collectionKey: T +): Promise { + if (collection?.schema) { + return `InferEntrySchema<${collectionKey}>`; + } + + if (collection?.type === 'experimental_data' && collection.loader.schema) { + let schema = collection.loader.schema; + if (typeof schema === 'function') { + schema = await schema(); + } + if (schema) { + const ast = zodToTs(schema); + return printNode(ast.node); + } + } + return 'any'; +} + async function writeContentFiles({ fs, contentPaths, @@ -435,11 +457,7 @@ async function writeContentFiles({ : collection.type; const collectionEntryKeys = Object.keys(collection.entries).sort(); - const dataType = - collectionConfig?.schema || - (collectionConfig?.type === 'experimental_data' && collectionConfig.loader?.schema) - ? `InferEntrySchema<${collectionKey}>` - : 'any'; + const dataType = await typeForCollection(collectionConfig, collectionKey); switch (resolvedType) { case 'content': if (collectionEntryKeys.length === 0) { 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 edd2a8dbf443..38e4e28b5816 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,4 @@ -import type { Loader } from 'astro:content'; +import { type Loader, z } from 'astro:content'; export interface PostLoaderConfig { url: string; @@ -30,5 +30,15 @@ export function loader(config:PostLoaderConfig): Loader { } meta.set('lastSynced', String(Date.now())); }, + schema: async () => { + // Simulate a delay + await new Promise((resolve) => setTimeout(resolve, 1000)); + return z.object({ + title: z.string(), + body: z.string(), + userId: z.number(), + id: z.number(), + }); + } }; } diff --git a/packages/astro/types/content.d.ts b/packages/astro/types/content.d.ts index 23699f3b1346..c130245cd335 100644 --- a/packages/astro/types/content.d.ts +++ b/packages/astro/types/content.d.ts @@ -55,13 +55,13 @@ declare module 'astro:content' { props: ParseDataOptions ): T; } - export interface Loader { + 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?: S | Promise | (() => S | Promise); + schema?: BaseSchema | Promise | (() => BaseSchema | Promise); render?: (entry: any) => any; } @@ -82,7 +82,7 @@ declare module 'astro:content' { type ContentCollectionV2Config = { type: 'experimental_data'; schema?: S | ((context: SchemaContext) => S); - loader: Loader; + loader: Loader; }; type DataCollectionConfig = { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2951b639e8ad..cea105105e2b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -717,6 +717,9 @@ importers: zod-to-json-schema: specifier: ^3.23.1 version: 3.23.1(zod@3.23.8) + zod-to-ts: + specifier: ^1.2.0 + version: 1.2.0(typescript@5.5.2)(zod@3.23.8) optionalDependencies: sharp: specifier: ^0.33.3 @@ -11703,6 +11706,12 @@ packages: peerDependencies: zod: ^3.23.3 + zod-to-ts@1.2.0: + resolution: {integrity: sha512-x30XE43V+InwGpvTySRNz9kB7qFU8DlyEy7BsSTCHPH1R0QasMmHWZDCzYm6bVXtj/9NNJAZF3jW8rzFvH5OFA==} + peerDependencies: + typescript: ^4.9.4 || ^5.0.2 + zod: ^3 + zod@3.23.8: resolution: {integrity: sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==} @@ -18379,6 +18388,11 @@ snapshots: dependencies: zod: 3.23.8 + zod-to-ts@1.2.0(typescript@5.5.2)(zod@3.23.8): + dependencies: + typescript: 5.5.2 + zod: 3.23.8 + zod@3.23.8: {} zwitch@2.0.4: {} From 322f8cc1037559776f85268507a4b9728bf8445c Mon Sep 17 00:00:00 2001 From: Matt Kane Date: Fri, 28 Jun 2024 17:38:24 +0100 Subject: [PATCH 06/34] fix: watch for content layer changes (#11371) * fix: watch for content layer changes * Add test --- packages/astro/src/content/data-store.ts | 31 +++ packages/astro/src/content/file.ts | 90 ++++--- packages/astro/src/content/loaders.ts | 15 +- packages/astro/src/content/utils.ts | 1 + .../vite-plugin-content-virtual-mod.ts | 25 ++ packages/astro/src/core/dev/dev.ts | 6 +- packages/astro/test/content-layer.test.js | 239 +++++++++++++----- packages/astro/test/test-utils.js | 2 +- packages/astro/types/content.d.ts | 2 + 9 files changed, 305 insertions(+), 106 deletions(-) diff --git a/packages/astro/src/content/data-store.ts b/packages/astro/src/content/data-store.ts index 07971562d226..f8c24ac184aa 100644 --- a/packages/astro/src/content/data-store.ts +++ b/packages/astro/src/content/data-store.ts @@ -1,6 +1,15 @@ import { promises as fs, type PathLike, existsSync } from 'fs'; + +const SAVE_DEBOUNCE_MS = 500; export class DataStore { #collections = new Map>(); + + #file?: PathLike; + + #saveTimeout: NodeJS.Timeout | undefined; + + #dirty = false; + constructor() { this.#collections = new Map(); } @@ -23,15 +32,18 @@ export class DataStore { const collection = this.#collections.get(collectionName) ?? new Map(); collection.set(String(key), value); this.#collections.set(collectionName, collection); + this.#saveToDiskDebounced(); } delete(collectionName: string, key: string) { const collection = this.#collections.get(collectionName); if (collection) { collection.delete(String(key)); + this.#saveToDiskDebounced(); } } clear(collectionName: string) { this.#collections.delete(collectionName); + this.#saveToDiskDebounced(); } has(collectionName: string, key: string) { @@ -50,6 +62,20 @@ export class DataStore { return this.#collections; } + #saveToDiskDebounced = () => { + this.#dirty = true; + // Only save to disk if it has already been saved once + if (this.#file) { + if (this.#saveTimeout) { + clearTimeout(this.#saveTimeout); + } + this.#saveTimeout = setTimeout(() => { + this.#saveTimeout = undefined; + this.writeToDisk(this.#file!); + }, SAVE_DEBOUNCE_MS); + } + }; + scopedStore(collectionName: string): ScopedDataStore { return { get: (key: string) => this.get(collectionName, key), @@ -76,8 +102,13 @@ export class DataStore { } async writeToDisk(filePath: PathLike) { + if (!this.#dirty) { + return; + } try { await fs.writeFile(filePath, this.toString()); + this.#file = filePath; + this.#dirty = false; } catch { throw new Error(`Failed to save data store to disk`); } diff --git a/packages/astro/src/content/file.ts b/packages/astro/src/content/file.ts index 39395cd3b489..091f1e5ea4b3 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 } from './loaders.js'; +import type { Loader, LoaderContext } from './loaders.js'; import { promises as fs, existsSync } from 'fs'; /** @@ -12,54 +12,68 @@ export function file(fileName: string): Loader { // TODO: AstroError throw new Error('Glob patterns are not supported in `file` loader. Use `glob` loader instead.'); } + + async function syncData(filePath: string, { logger, parseData, store }: LoaderContext) { + let json: Array>; + + try { + const data = await fs.readFile(filePath, 'utf-8'); + json = JSON.parse(data); + } catch (error: any) { + logger.error(`Error reading data from ${fileName}`); + logger.debug(error.message); + return; + } + + if (Array.isArray(json)) { + if (json.length === 0) { + logger.warn(`No items found in ${fileName}`); + } + logger.debug(`Found ${json.length} item array in ${fileName}`); + store.clear(); + for (const rawItem of json) { + const id = (rawItem.id ?? rawItem.slug)?.toString(); + if (!id) { + 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); + } + } 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); + } + } else { + logger.error(`Invalid data in ${fileName}. Must be an array or object.`); + } + } + return { name: 'file-loader', - load: async ({ store, logger, settings, parseData }) => { + load: async (options) => { + const { settings, logger, watcher } = options; const contentDir = new URL('./content/', settings.config.srcDir); - logger.debug(`Loading data from ${fileName}`) + logger.debug(`Loading data from ${fileName}`); const url = new URL(fileName, contentDir); if (!existsSync(url)) { logger.error(`File not found: ${fileName}`); return; } - - let json: Array>; - - try { - const data = await fs.readFile(url, 'utf-8'); - json = JSON.parse(data); - } catch (error: any) { - logger.error(`Error reading data from ${fileName}`); - logger.debug(error.message); - return; - } - const filePath = fileURLToPath(url); - if (Array.isArray(json)) { - if (json.length === 0) { - logger.warn(`No items found in ${fileName}`); - } - logger.debug(`Found ${json.length} item array in ${fileName}`); - for (const rawItem of json) { - const id = (rawItem.id ?? rawItem.slug)?.toString(); - if (!id) { - 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); - } - } else if (typeof json === 'object') { - const entries = Object.entries>(json); - logger.debug(`Found object with ${entries.length} entries in ${fileName}`); - for (const [id, rawItem] of entries) { - const item = await parseData({ id, data: rawItem, filePath }); - store.set(id, item); + await syncData(filePath, options); + + watcher?.on('change', async (changedPath) => { + if (changedPath === filePath) { + logger.info(`Reloading data from ${fileName}`); + await syncData(filePath, options); } - } else { - logger.error(`Invalid data in ${fileName}. Must be an array or object.`); - } + }); }, }; } diff --git a/packages/astro/src/content/loaders.ts b/packages/astro/src/content/loaders.ts index 3cf9e59066cd..84b354b8fe0b 100644 --- a/packages/astro/src/content/loaders.ts +++ b/packages/astro/src/content/loaders.ts @@ -5,6 +5,7 @@ import { DataStore, globalDataStore, type MetaStore, type ScopedDataStore } from 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 */ @@ -30,6 +31,9 @@ export interface LoaderContext { parseData = Record>( props: ParseDataOptions ): T; + + /** When running in dev, this is a filesystem watcher that can be used to trigger updates */ + watcher?: FSWatcher; } export interface Loader { @@ -42,6 +46,13 @@ export interface Loader { render?: (entry: any) => any; } +export interface SyncContentLayerOptions { + store?: DataStore; + settings: AstroSettings; + logger: Logger; + watcher?: FSWatcher; +} + /** * Run the `load()` method of each collection's loader, which will load the data and save it in the data store. * The loader itself is responsible for deciding whether this will clear and reload the full collection, or @@ -51,7 +62,8 @@ export async function syncContentLayer({ settings, logger: globalLogger, store, -}: { settings: AstroSettings; logger: Logger; store?: DataStore }) { + watcher, +}: SyncContentLayerOptions) { const logger = globalLogger.forkIntegrationLogger('content'); logger.info('Syncing content'); if (!store) { @@ -112,6 +124,7 @@ export async function syncContentLayer({ logger: globalLogger.forkIntegrationLogger(collection.loader.name ?? 'content'), settings, parseData, + watcher, }); }) ); diff --git a/packages/astro/src/content/utils.ts b/packages/astro/src/content/utils.ts index e48cbeeb2780..1b3c483fd353 100644 --- a/packages/astro/src/content/utils.ts +++ b/packages/astro/src/content/utils.ts @@ -50,6 +50,7 @@ export const collectionConfigParser = z.union([ logger: z.any(), settings: z.any(), parseData: z.any(), + watcher: z.any().optional(), }), ], z.unknown() 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 6308c47757e3..2273c478176d 100644 --- a/packages/astro/src/content/vite-plugin-content-virtual-mod.ts +++ b/packages/astro/src/content/vite-plugin-content-virtual-mod.ts @@ -129,6 +129,31 @@ export function astroContentVirtualModPlugin({ return code.replaceAll(RESOLVED_VIRTUAL_MODULE_ID, `${prefix}content/entry.mjs`); } }, + + configureServer(server) { + const dataStorePath = fileURLToPath(dataStoreFile); + // Watch for changes to the data store file + if (Array.isArray(server.watcher.options.ignored)) { + // The data store file is in node_modules, so is ignored by default, + // so we need to un-ignore it. + server.watcher.options.ignored.push(`!${dataStorePath}`); + } + server.watcher.add(dataStorePath); + + server.watcher.on('change', (changedPath) => { + // If the datastore file changes, invalidate the virtual module + if (changedPath === dataStorePath) { + const module = server.moduleGraph.getModuleById(RESOLVED_DATA_STORE_VIRTUAL_ID); + if (module) { + server.moduleGraph.invalidateModule(module); + } + server.ws.send({ + type: 'full-reload', + path: '*', + }); + } + }); + }, }; } diff --git a/packages/astro/src/core/dev/dev.ts b/packages/astro/src/core/dev/dev.ts index d0ca34bebf61..c920e40822d7 100644 --- a/packages/astro/src/core/dev/dev.ts +++ b/packages/astro/src/core/dev/dev.ts @@ -103,7 +103,11 @@ export default async function dev(inlineConfig: AstroInlineConfig): Promise { + /** @type {import("./test-utils.js").Fixture} */ let fixture; - let json; before(async () => { fixture = await loadFixture({ root: './fixtures/content-layer/' }); - await fixture.build(); - const rawJson = await fixture.readFile('/collections.json'); - json = JSON.parse(rawJson); }); - it('Returns custom loader collection', async () => { - assert.ok(json.hasOwnProperty('customLoader')); - assert.ok(Array.isArray(json.customLoader)); - - const item = json.customLoader[0]; - assert.deepEqual(item, { - id: '1', - collection: 'blog', - data: { - userId: 1, - id: 1, - 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', + describe('Build', () => { + let json; + before(async () => { + fixture = await loadFixture({ root: './fixtures/content-layer/' }); + await fixture.build(); + const rawJson = await fixture.readFile('/collections.json'); + json = JSON.parse(rawJson); + }); + + it('Returns custom loader collection', async () => { + assert.ok(json.hasOwnProperty('customLoader')); + assert.ok(Array.isArray(json.customLoader)); + + const item = json.customLoader[0]; + assert.deepEqual(item, { + id: '1', + collection: 'blog', + data: { + userId: 1, + id: 1, + 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', + }); + }); + + it('Returns `file()` loader collection', async () => { + assert.ok(json.hasOwnProperty('fileLoader')); + assert.ok(Array.isArray(json.fileLoader)); + + const ids = json.fileLoader.map((item) => item.data.id); + assert.deepEqual(ids, [ + 'labrador-retriever', + 'german-shepherd', + 'golden-retriever', + 'french-bulldog', + 'bulldog', + 'beagle', + 'poodle', + 'rottweiler', + 'german-shorthaired-pointer', + 'yorkshire-terrier', + 'boxer', + 'dachshund', + 'siberian-husky', + 'great-dane', + 'doberman-pinscher', + 'australian-shepherd', + 'miniature-schnauzer', + 'cavalier-king-charles-spaniel', + 'shih-tzu', + 'boston-terrier', + 'bernese-mountain-dog', + 'pomeranian', + 'havanese', + 'english-springer-spaniel', + 'shetland-sheepdog', + ]); }); - }); - it('Returns `file()` loader collection', async () => { - assert.ok(json.hasOwnProperty('fileLoader')); - assert.ok(Array.isArray(json.fileLoader)); - - const ids = json.fileLoader.map((item) => item.data.id); - assert.deepEqual(ids, [ - 'labrador-retriever', - 'german-shepherd', - 'golden-retriever', - 'french-bulldog', - 'bulldog', - 'beagle', - 'poodle', - 'rottweiler', - 'german-shorthaired-pointer', - 'yorkshire-terrier', - 'boxer', - 'dachshund', - 'siberian-husky', - 'great-dane', - 'doberman-pinscher', - 'australian-shepherd', - 'miniature-schnauzer', - 'cavalier-king-charles-spaniel', - 'shih-tzu', - 'boston-terrier', - 'bernese-mountain-dog', - 'pomeranian', - 'havanese', - 'english-springer-spaniel', - 'shetland-sheepdog', - ]); + it('Returns data entry by id', async () => { + assert.ok(json.hasOwnProperty('dataEntryById')); + assert.deepEqual(json.dataEntryById, { + id: 'beagle', + collection: 'dogs', + data: { + breed: 'Beagle', + id: 'beagle', + size: 'Small to Medium', + origin: 'England', + lifespan: '12-15 years', + temperament: ['Friendly', 'Curious', 'Merry'], + }, + }); + }); }); - it('Returns data entry by id', async () => { - assert.ok(json.hasOwnProperty('dataEntryById')); - assert.deepEqual(json.dataEntryById, { - id: 'beagle', - collection: 'dogs', - data: { - breed: 'Beagle', + describe('Dev', () => { + let devServer; + let json; + before(async () => { + devServer = await fixture.startDevServer(); + const rawJsonResponse = await fixture.fetch('/collections.json'); + const rawJson = await rawJsonResponse.text(); + json = JSON.parse(rawJson); + }); + + after(async () => { + devServer?.stop(); + }); + + it('Returns custom loader collection', async () => { + assert.ok(json.hasOwnProperty('customLoader')); + assert.ok(Array.isArray(json.customLoader)); + + const item = json.customLoader[0]; + assert.deepEqual(item, { + id: '1', + collection: 'blog', + data: { + userId: 1, + id: 1, + 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', + }); + }); + + it('Returns `file()` loader collection', async () => { + assert.ok(json.hasOwnProperty('fileLoader')); + assert.ok(Array.isArray(json.fileLoader)); + + const ids = json.fileLoader.map((item) => item.data.id); + assert.deepEqual(ids, [ + 'labrador-retriever', + 'german-shepherd', + 'golden-retriever', + 'french-bulldog', + 'bulldog', + 'beagle', + 'poodle', + 'rottweiler', + 'german-shorthaired-pointer', + 'yorkshire-terrier', + 'boxer', + 'dachshund', + 'siberian-husky', + 'great-dane', + 'doberman-pinscher', + 'australian-shepherd', + 'miniature-schnauzer', + 'cavalier-king-charles-spaniel', + 'shih-tzu', + 'boston-terrier', + 'bernese-mountain-dog', + 'pomeranian', + 'havanese', + 'english-springer-spaniel', + 'shetland-sheepdog', + ]); + }); + + it('Returns data entry by id', async () => { + assert.ok(json.hasOwnProperty('dataEntryById')); + assert.deepEqual(json.dataEntryById, { id: 'beagle', - size: 'Small to Medium', - origin: 'England', - lifespan: '12-15 years', - temperament: ['Friendly', 'Curious', 'Merry'], - }, + collection: 'dogs', + data: { + breed: 'Beagle', + id: 'beagle', + size: 'Small to Medium', + origin: 'England', + lifespan: '12-15 years', + temperament: ['Friendly', 'Curious', 'Merry'], + }, + }); + }); + + it('updates collection when data file is changed', async () => { + const rawJsonResponse = await fixture.fetch('/collections.json'); + const initialJson = await rawJsonResponse.json(); + assert.equal(initialJson.fileLoader[0].data.temperament.includes('Bouncy'), false); + + await fixture.editFile('/src/content/_data/dogs.json', (prev) => { + const data = JSON.parse(prev); + data[0].temperament.push('Bouncy'); + return JSON.stringify(data, null, 2); + }); + + // Writes are debounced to 500ms + await new Promise((r) => setTimeout(r, 700)); + + const updatedJsonResponse = await fixture.fetch('/collections.json'); + const updated = await updatedJsonResponse.json(); + assert.ok(updated.fileLoader[0].data.temperament.includes('Bouncy')); }); }); }); diff --git a/packages/astro/test/test-utils.js b/packages/astro/test/test-utils.js index d68d64e3870c..18ef7966077f 100644 --- a/packages/astro/test/test-utils.js +++ b/packages/astro/test/test-utils.js @@ -36,7 +36,7 @@ process.env.ASTRO_TELEMETRY_DISABLED = true; * @property {(path: string) => Promise} pathExists * @property {(url: string, opts: Parameters[1]) => Promise} fetch * @property {(path: string) => Promise} readFile - * @property {(path: string, updater: (content: string) => string) => Promise} writeFile + * @property {(path: string, updater: (content: string) => string) => Promise} editFile * @property {(path: string) => Promise} readdir * @property {(pattern: string) => Promise} glob * @property {typeof dev} startDevServer diff --git a/packages/astro/types/content.d.ts b/packages/astro/types/content.d.ts index c130245cd335..4847361a155e 100644 --- a/packages/astro/types/content.d.ts +++ b/packages/astro/types/content.d.ts @@ -54,6 +54,8 @@ declare module 'astro:content' { 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 */ From a957a74ae175eee686c59dd011d5f08e2b651ae7 Mon Sep 17 00:00:00 2001 From: Matt Kane Date: Mon, 1 Jul 2024 15:46:36 +0100 Subject: [PATCH 07/34] feat: adds simple loader (#11386) * wip * Add simple loader * Fix type guard * Tighten loader schema * Add loader function to type --- packages/astro/src/content/loaders.ts | 48 +++++++++----- packages/astro/src/content/types-generator.ts | 6 +- packages/astro/src/content/utils.ts | 62 +++++++++++++------ packages/astro/test/content-layer.test.js | 21 +++++++ .../content-layer/src/content/config.ts | 50 ++++++++++++++- .../src/pages/collections.json.js | 6 +- packages/astro/types/content.d.ts | 7 ++- 7 files changed, 161 insertions(+), 39 deletions(-) diff --git a/packages/astro/src/content/loaders.ts b/packages/astro/src/content/loaders.ts index 84b354b8fe0b..f2cfee3962a5 100644 --- a/packages/astro/src/content/loaders.ts +++ b/packages/astro/src/content/loaders.ts @@ -16,6 +16,11 @@ export interface ParseDataOptions { filePath?: string; } +export type DataWithId = { + id: string; + [key: string]: unknown; +}; + export interface LoaderContext { /** The unique name of the collection */ collection: string; @@ -28,9 +33,7 @@ export interface LoaderContext { settings: AstroSettings; /** Validates and parses the data according to the collection schema */ - parseData = Record>( - props: ParseDataOptions - ): T; + parseData(props: ParseDataOptions): Promise; /** When running in dev, this is a filesystem watcher that can be used to trigger updates */ watcher?: FSWatcher; @@ -83,7 +86,7 @@ export async function syncContentLayer({ let { schema } = collection; - if (!schema) { + if (!schema && typeof collection.loader === 'object') { schema = collection.loader.schema; } @@ -97,12 +100,8 @@ export async function syncContentLayer({ const collectionWithResolvedSchema = { ...collection, schema }; - function parseData = Record>({ - id, - data, - filePath = '', - }: { id: string; data: T; filePath?: string }): T { - return getEntryData( + const parseData: LoaderContext['parseData'] = ({ id, data, filePath = '' }) => + getEntryData( { id, collection: name, @@ -114,10 +113,9 @@ export async function syncContentLayer({ }, collectionWithResolvedSchema, false - ) as unknown as T; - } + ) as Promise; - return collection.loader.load({ + const payload: LoaderContext = { collection: name, store: store.scopedStore(name), meta: store.metaStore(name), @@ -125,7 +123,17 @@ export async function syncContentLayer({ settings, parseData, watcher, - }); + }; + + if (typeof collection.loader === 'function') { + return simpleLoader(collection.loader, payload); + } + + if (!collection.loader.load) { + throw new Error(`Collection loader for ${name} does not have a load method`); + } + + return collection.loader.load(payload); }) ); const cacheFile = new URL(DATA_STORE_FILE, settings.config.cacheDir); @@ -135,3 +143,15 @@ export async function syncContentLayer({ await store.writeToDisk(cacheFile); logger.info('Synced content'); } + +export async function simpleLoader( + handler: () => Array | Promise>, + context: LoaderContext +) { + const data = await handler(); + context.store.clear(); + for (const raw of data) { + const item = await context.parseData({ id: raw.id, data: raw }); + context.store.set(raw.id, item); + } +} diff --git a/packages/astro/src/content/types-generator.ts b/packages/astro/src/content/types-generator.ts index 4532ac1f56e7..53133dc02809 100644 --- a/packages/astro/src/content/types-generator.ts +++ b/packages/astro/src/content/types-generator.ts @@ -369,7 +369,11 @@ async function typeForCollection( return `InferEntrySchema<${collectionKey}>`; } - if (collection?.type === 'experimental_data' && collection.loader.schema) { + if ( + collection?.type === 'experimental_data' && + typeof collection.loader === 'object' && + collection.loader.schema + ) { let schema = collection.loader.schema; if (typeof schema === 'function') { schema = await schema(); diff --git a/packages/astro/src/content/utils.ts b/packages/astro/src/content/utils.ts index 1b3c483fd353..bbb6f6e18d33 100644 --- a/packages/astro/src/content/utils.ts +++ b/packages/astro/src/content/utils.ts @@ -38,27 +38,49 @@ export const collectionConfigParser = z.union([ z.object({ type: z.literal('experimental_data'), schema: z.any().optional(), - loader: z.object({ - name: z.string(), - load: z.function( - z.tuple( - [ - z.object({ - collection: z.string(), - store: z.any(), - meta: z.any(), - logger: z.any(), - settings: z.any(), - parseData: z.any(), - watcher: z.any().optional(), - }), - ], - z.unknown() - ) + loader: z.union([ + z.function().returns( + z.union([ + z.array( + z + .object({ + id: z.string(), + }) + .catchall(z.unknown()) + ), + z.promise( + z.array( + z + .object({ + id: z.string(), + }) + .catchall(z.unknown()) + ) + ), + ]) ), - schema: z.any().optional(), - render: z.function(z.tuple([z.any()], z.unknown())).optional(), - }), + z.object({ + name: z.string(), + load: z.function( + z.tuple( + [ + z.object({ + collection: z.string(), + store: z.any(), + meta: z.any(), + logger: z.any(), + settings: z.any(), + parseData: z.any(), + watcher: z.any().optional(), + }), + ], + z.unknown() + ) + ), + schema: z.any().optional(), + render: z.function(z.tuple([z.any()], z.unknown())).optional(), + }), + ]), }), ]); diff --git a/packages/astro/test/content-layer.test.js b/packages/astro/test/content-layer.test.js index d36428faff8a..04e49f6a8c93 100644 --- a/packages/astro/test/content-layer.test.js +++ b/packages/astro/test/content-layer.test.js @@ -86,6 +86,27 @@ describe('Content Layer', () => { }, }); }); + + it('returns collection from a simple loader', async () => { + assert.ok(json.hasOwnProperty('simpleLoader')); + assert.ok(Array.isArray(json.simpleLoader)); + + const item = json.simpleLoader[0]; + assert.equal(json.simpleLoader.length, 4); + assert.deepEqual(item, { + id: 'siamese', + collection: 'cats', + data: { + breed: 'Siamese', + id: 'siamese', + size: 'Medium', + origin: 'Thailand', + lifespan: '15 years', + temperament: ['Active', 'Affectionate', 'Social', 'Playful'], + }, + type: 'experimental_data', + }); + }); }); describe('Dev', () => { 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 eda587f6a25f..78b6858111f5 100644 --- a/packages/astro/test/fixtures/content-layer/src/content/config.ts +++ b/packages/astro/test/fixtures/content-layer/src/content/config.ts @@ -18,4 +18,52 @@ const dogs = defineCollection({ temperament: z.array(z.string()) }), }) -export const collections = { blog, dogs }; + +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"] + }, + { + "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": "Ragdoll", + "id": "ragdoll", + "size": "Medium", + "origin": "United States", + "lifespan": "15 years", + "temperament": ["Calm", "Affectionate", "Social"] + } + ]; + }, + schema: z.object({ + breed: z.string(), + id: z.string(), + size: z.string(), + origin: z.string(), + lifespan: z.string(), + temperament: z.array(z.string()) + }), +}) + +export const collections = { blog, dogs, cats }; 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 bb41b224677f..821d8dc2a964 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,12 +1,14 @@ import { getCollection, getDataEntryById } from 'astro:content'; export async function GET() { - const customLoader = await getCollection('blog'); + const customLoader = (await getCollection('blog')).slice(0, 10); const fileLoader = await getCollection('dogs'); const dataEntryById = await getDataEntryById('dogs', 'beagle'); + const simpleLoader = await getCollection('cats'); + return new Response( - JSON.stringify({ customLoader, fileLoader, dataEntryById }), + JSON.stringify({ customLoader, fileLoader, dataEntryById, simpleLoader }), ); } diff --git a/packages/astro/types/content.d.ts b/packages/astro/types/content.d.ts index 4847361a155e..2c5ff792936f 100644 --- a/packages/astro/types/content.d.ts +++ b/packages/astro/types/content.d.ts @@ -81,10 +81,15 @@ declare module 'astro:content' { export type SchemaContext = { image: ImageFunction }; + export interface DataWithId { + id: string; + [key: string]: unknown; + } + type ContentCollectionV2Config = { type: 'experimental_data'; schema?: S | ((context: SchemaContext) => S); - loader: Loader; + loader: Loader | (() => Array | Promise>); }; type DataCollectionConfig = { From 6d60438d244bc5996eef1175fefd83da0221bc7e Mon Sep 17 00:00:00 2001 From: Matt Kane Date: Mon, 8 Jul 2024 10:28:32 +0100 Subject: [PATCH 08/34] Reinstall vitest --- examples/container-with-vitest/package.json | 6 +- pnpm-lock.yaml | 112 +++++++------------- 2 files changed, 43 insertions(+), 75 deletions(-) diff --git a/examples/container-with-vitest/package.json b/examples/container-with-vitest/package.json index 4fa718428ffe..21ae4bea31dc 100644 --- a/examples/container-with-vitest/package.json +++ b/examples/container-with-vitest/package.json @@ -12,14 +12,14 @@ "test": "vitest run" }, "dependencies": { - "astro": "^4.11.5", "@astrojs/react": "^3.6.0", + "astro": "^4.11.5", "react": "^18.3.1", "react-dom": "^18.3.1", "vitest": "^1.6.0" }, "devDependencies": { - "@types/react-dom": "^18.3.0", - "@types/react": "^18.3.3" + "@types/react": "^18.3.3", + "@types/react-dom": "^18.3.0" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 46873295a9a1..3b3cbce48dc9 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -7722,8 +7722,8 @@ packages: peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - acorn-walk@8.3.2: - resolution: {integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==} + acorn-walk@8.3.3: + resolution: {integrity: sha512-MxXdReSRhGO7VlFe1bRG/oI7/mdLV9B9JJT0N8vZOhF7gFRR5l3M8W9G8JxmKV+JC5mGqJ0QvqfSOLsCPa4nUw==} engines: {node: '>=0.4.0'} acorn@8.12.0: @@ -8166,6 +8166,9 @@ packages: concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + confbox@0.1.7: + resolution: {integrity: sha512-uJcB/FKZtBMCJpK8MQji6bJHgu1tixKPxRLeGkNzBoOZzpnZUJm0jm2/sBDWcuBx1dYgxV4JU+g5hmNxCyAmdA==} + consola@3.2.3: resolution: {integrity: sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==} engines: {node: ^14.18.0 || >=16.10.0} @@ -8306,8 +8309,8 @@ packages: deep-diff@1.0.2: resolution: {integrity: sha512-aWS3UIVH+NPGCD1kki+DCU9Dua032iSsO43LqQpcs4R3+dVv7tX0qBGjiVHJHjplsoUM2XRO/KB92glqc68awg==} - deep-eql@4.1.3: - resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==} + deep-eql@4.1.4: + resolution: {integrity: sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==} engines: {node: '>=6'} deep-is@0.1.4: @@ -9347,7 +9350,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: @@ -9777,8 +9779,8 @@ packages: engines: {node: '>=10'} hasBin: true - mlly@1.6.1: - resolution: {integrity: sha512-vLgaHvaeunuOXHSmEbZ9izxPx3USsk8KCQ8iC+aTlp5sKRSoZvwhHh5L9VbKSaVC6sJDqbyohIS76E2VmHIPAA==} + mlly@1.7.1: + resolution: {integrity: sha512-rrVRZRELyQzrIUAVMHxP97kv+G786pHmOKzuFII8zDYahFBS7qnHh2AlYSl1GAHhaMPCz6/oHjVMcfFYgFYHgA==} mri@1.2.0: resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} @@ -10119,8 +10121,8 @@ packages: resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} engines: {node: '>=8'} - pkg-types@1.0.3: - resolution: {integrity: sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==} + pkg-types@1.1.3: + resolution: {integrity: sha512-+JrgthZG6m3ckicaOB74TwQ+tBWsFl3qVQg7mN8ulwSOElJ7gBhKzj2VkCPnZ4NlF6kEquYU+RIYNVAvzd54UA==} playwright-core@1.45.0: resolution: {integrity: sha512-lZmHlFQ0VYSpAs43dRq1/nJ9G/6SiTI7VPqidld9TDefL9tX87bTKExWZZUF5PeRyqtXqd8fQi2qmfIedkwsNQ==} @@ -10439,8 +10441,8 @@ packages: peerDependencies: react: 19.0.0-rc-fb9a90fa48-20240614 - react-is@18.2.0: - resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} + react-is@18.3.1: + resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} react-refresh@0.14.2: resolution: {integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==} @@ -11048,8 +11050,8 @@ packages: tiny-glob@0.2.9: resolution: {integrity: sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==} - tinybench@2.7.0: - resolution: {integrity: sha512-Qgayeb106x2o4hNzNjsZEfFziw8IbKqtbXBjVh7VIZfBxfD5M4gWtpyx5+YTae2gJ6Y6Dz/KLepiv16RFeQWNA==} + tinybench@2.8.0: + resolution: {integrity: sha512-1/eK7zUnIklz4JUUlL+658n58XO2hHLQfSk1Zf2LKieUjxidN16eKFEoDEfjHc3ohofSSqK3X5yO6VGb6iW8Lw==} tinypool@0.8.4: resolution: {integrity: sha512-i11VH5gS6IFeLY3gMBQ00/MmLncVP7JLXOw1vlgkytLmJK7QnEr7NXf0LBdxfmNPAeyetukOk0bOYrJrFGjYJQ==} @@ -11422,34 +11424,6 @@ packages: vue: optional: true - vite@5.3.1: - resolution: {integrity: sha512-XBmSKRLXLxiaPYamLv3/hnP/KXDai1NDexN0FpkTaZXTfycHvkRHoenpgl/fvuK/kPbB6xAgoyiryAhQNxYmAQ==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - peerDependencies: - '@types/node': ^18.0.0 || >=20.0.0 - less: '*' - lightningcss: ^1.21.0 - sass: '*' - stylus: '*' - sugarss: '*' - terser: ^5.4.0 - peerDependenciesMeta: - '@types/node': - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - vite@5.3.2: resolution: {integrity: sha512-6lA7OBHBlXUxiJxbO5aAY2fsHHzDr1q7DvXYnyZycRs2Dz+dXBWuhpWHvmljTRTpQC2uvGmUFFkSHF2vGo90MA==} engines: {node: ^18.0.0 || >=20.0.0} @@ -11884,7 +11858,7 @@ snapshots: '@babel/code-frame@7.24.7': dependencies: '@babel/highlight': 7.24.7 - picocolors: 1.0.0 + picocolors: 1.0.1 '@babel/compat-data@7.24.7': {} @@ -11923,7 +11897,7 @@ snapshots: dependencies: '@babel/compat-data': 7.24.7 '@babel/helper-validator-option': 7.24.7 - browserslist: 4.23.0 + browserslist: 4.23.1 lru-cache: 5.1.1 semver: 6.3.1 @@ -12037,7 +12011,7 @@ snapshots: '@babel/helper-validator-identifier': 7.24.7 chalk: 2.4.2 js-tokens: 4.0.0 - picocolors: 1.0.0 + picocolors: 1.0.1 '@babel/parser@7.24.7': dependencies: @@ -13894,7 +13868,9 @@ snapshots: dependencies: acorn: 8.12.0 - acorn-walk@8.3.2: {} + acorn-walk@8.3.3: + dependencies: + acorn: 8.12.0 acorn@8.12.0: {} @@ -14206,7 +14182,7 @@ snapshots: dependencies: assertion-error: 1.1.0 check-error: 1.0.3 - deep-eql: 4.1.3 + deep-eql: 4.1.4 get-func-name: 2.0.2 loupe: 2.3.7 pathval: 1.1.1 @@ -14372,6 +14348,8 @@ snapshots: concat-map@0.0.1: {} + confbox@0.1.7: {} + consola@3.2.3: {} console-control-strings@1.1.0: {} @@ -14489,7 +14467,7 @@ snapshots: deep-diff@1.0.2: {} - deep-eql@4.1.3: + deep-eql@4.1.4: dependencies: type-detect: 4.0.8 @@ -15683,8 +15661,8 @@ snapshots: local-pkg@0.5.0: dependencies: - mlly: 1.6.1 - pkg-types: 1.0.3 + mlly: 1.7.1 + pkg-types: 1.1.3 locate-character@3.0.0: {} @@ -16339,11 +16317,11 @@ snapshots: mkdirp@3.0.1: {} - mlly@1.6.1: + mlly@1.7.1: dependencies: acorn: 8.12.0 pathe: 1.1.2 - pkg-types: 1.0.3 + pkg-types: 1.1.3 ufo: 1.5.3 mri@1.2.0: {} @@ -16671,10 +16649,10 @@ snapshots: dependencies: find-up: 4.1.0 - pkg-types@1.0.3: + pkg-types@1.1.3: dependencies: - jsonc-parser: 3.2.1 - mlly: 1.6.1 + confbox: 0.1.7 + mlly: 1.7.1 pathe: 1.1.2 playwright-core@1.45.0: {} @@ -16971,7 +16949,7 @@ snapshots: dependencies: '@jest/schemas': 29.6.3 ansi-styles: 5.2.0 - react-is: 18.2.0 + react-is: 18.3.1 pretty-format@3.8.0: {} @@ -17027,7 +17005,7 @@ snapshots: react: 19.0.0-rc-fb9a90fa48-20240614 scheduler: 0.25.0-rc-fb9a90fa48-20240614 - react-is@18.2.0: {} + react-is@18.3.1: {} react-refresh@0.14.2: {} @@ -17803,7 +17781,7 @@ snapshots: globalyzer: 0.1.0 globrex: 0.1.2 - tinybench@2.7.0: {} + tinybench@2.8.0: {} tinypool@0.8.4: {} @@ -18130,7 +18108,7 @@ snapshots: cac: 6.7.14 debug: 4.3.5 pathe: 1.1.2 - picocolors: 1.0.0 + picocolors: 1.0.1 vite: 5.3.2(@types/node@20.12.7)(sass@1.77.6) transitivePeerDependencies: - '@types/node' @@ -18208,16 +18186,6 @@ snapshots: optionalDependencies: vue: 3.4.31(typescript@5.5.2) - vite@5.3.1(@types/node@20.12.7)(sass@1.77.6): - dependencies: - esbuild: 0.21.5 - postcss: 8.4.39 - rollup: 4.18.0 - optionalDependencies: - '@types/node': 20.12.7 - fsevents: 2.3.3 - sass: 1.77.6 - vite@5.3.2(@types/node@20.12.7)(sass@1.77.6): dependencies: esbuild: 0.21.5 @@ -18239,19 +18207,19 @@ snapshots: '@vitest/snapshot': 1.6.0 '@vitest/spy': 1.6.0 '@vitest/utils': 1.6.0 - acorn-walk: 8.3.2 + acorn-walk: 8.3.3 chai: 4.4.1 debug: 4.3.5 execa: 8.0.1 local-pkg: 0.5.0 magic-string: 0.30.10 pathe: 1.1.2 - picocolors: 1.0.0 + picocolors: 1.0.1 std-env: 3.7.0 strip-literal: 2.1.0 - tinybench: 2.7.0 + tinybench: 2.8.0 tinypool: 0.8.4 - vite: 5.3.1(@types/node@20.12.7)(sass@1.77.6) + vite: 5.3.2(@types/node@20.12.7)(sass@1.77.6) vite-node: 1.6.0(@types/node@20.12.7)(sass@1.77.6) why-is-node-running: 2.2.2 optionalDependencies: From eb28c152ec8d793bea31820a3fb90504473c752e Mon Sep 17 00:00:00 2001 From: Matt Kane Date: Wed, 10 Jul 2024 15:31:25 +0100 Subject: [PATCH 09/34] feat: add glob loader (#11398) * feat: add glob loader * Enable watching and fix paths * Store the full entry object, not just data * Add generateId support * Fix test * Rename loaders to sync * Refacctor imports * Use getEntry * Format * Fix import * Remove type from output * Windows path * Add test for absolute path * Update lockfile * Debugging windows * Allow file URL for base dir * Reset time limit --- packages/astro/package.json | 5 +- packages/astro/src/@types/astro.ts | 2 +- packages/astro/src/content/data-store.ts | 54 +++++- .../astro/src/content/{ => loaders}/file.ts | 9 +- packages/astro/src/content/loaders/glob.ts | 176 ++++++++++++++++++ packages/astro/src/content/loaders/index.ts | 3 + packages/astro/src/content/loaders/types.ts | 46 +++++ packages/astro/src/content/runtime.ts | 47 ++++- .../astro/src/content/{loaders.ts => sync.ts} | 58 +----- packages/astro/src/content/types-generator.ts | 2 +- .../vite-plugin-content-virtual-mod.ts | 2 +- packages/astro/src/core/build/index.ts | 4 +- packages/astro/src/core/dev/dev.ts | 2 +- packages/astro/src/core/sync/index.ts | 2 +- packages/astro/templates/content/module.mjs | 2 +- packages/astro/test/content-layer.test.js | 30 ++- .../content-outside-src/columbia-copy.md | 15 ++ .../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-layer/src/content/config.ts | 97 ++++++---- .../src/{content/_data => data}/dogs.json | 0 .../src/data/glob-data/index.json | 3 + .../content-layer/src/data/glob-data/one.json | 3 + .../src/data/glob-data/three.json | 3 + .../content-layer/src/data/glob-data/two.json | 3 + .../content-layer/src/loaders/post-loader.ts | 5 +- .../src/pages/collections.json.js | 6 +- .../src/pages/spacecraft/[slug].astro | 27 +++ packages/astro/types/content.d.ts | 56 ++---- pnpm-lock.yaml | 47 ++++- 32 files changed, 590 insertions(+), 177 deletions(-) rename packages/astro/src/content/{ => loaders}/file.ts (92%) create mode 100644 packages/astro/src/content/loaders/glob.ts create mode 100644 packages/astro/src/content/loaders/index.ts create mode 100644 packages/astro/src/content/loaders/types.ts rename packages/astro/src/content/{loaders.ts => sync.ts} (68%) create mode 100644 packages/astro/test/fixtures/content-layer/content-outside-src/columbia-copy.md 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 rename packages/astro/test/fixtures/content-layer/src/{content/_data => data}/dogs.json (100%) create mode 100644 packages/astro/test/fixtures/content-layer/src/data/glob-data/index.json create mode 100644 packages/astro/test/fixtures/content-layer/src/data/glob-data/one.json create mode 100644 packages/astro/test/fixtures/content-layer/src/data/glob-data/three.json create mode 100644 packages/astro/test/fixtures/content-layer/src/data/glob-data/two.json create mode 100644 packages/astro/test/fixtures/content-layer/src/pages/spacecraft/[slug].astro diff --git a/packages/astro/package.json b/packages/astro/package.json index df095373b316..21fd52eb980f 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", @@ -165,6 +166,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 +210,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", @@ -240,4 +243,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 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/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/loaders/file.ts similarity index 92% rename from packages/astro/src/content/file.ts rename to packages/astro/src/content/loaders/file.ts index 091f1e5ea4b3..adbd1bf8a291 100644 --- a/packages/astro/src/content/file.ts +++ b/packages/astro/src/content/loaders/file.ts @@ -1,6 +1,6 @@ -import { fileURLToPath } from 'url'; -import type { Loader, LoaderContext } from './loaders.js'; import { promises as fs, existsSync } from 'fs'; +import { fileURLToPath } from 'url'; +import type { Loader, LoaderContext } from './types.js'; /** * 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. @@ -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); @@ -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/loaders/glob.ts b/packages/astro/src/content/loaders/glob.ts new file mode 100644 index 000000000000..03d384c7aa35 --- /dev/null +++ b/packages/astro/src/content/loaders/glob.ts @@ -0,0 +1,176 @@ +import { promises as fs } from 'fs'; +import { fileURLToPath, pathToFileURL } from '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 } 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. */ + 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, 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. + **/ + generateId?: (options: GenerateIdOptions) => string; +} + +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: entryURL, + contentDir: base, + collection: '', + }); + return 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(globOptions: GlobOptions): Loader { + 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.' + ); + } + + const generateId = globOptions?.generateId ?? generateIdDefault; + + 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 entryConfigByExt = getEntryConfigByExtMap([ + ...settings.contentEntryTypes, + ...settings.dataEntryTypes, + ] as Array); + + const baseDir = globOptions.base + ? new URL(globOptions.base, settings.config.root) + : settings.config.root; + + 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((entry) => + limit(async () => { + const entryType = configForFile(entry); + await syncData(entry, baseDir, options, entryType); + }) + ) + ); + + if (!watcher) { + return; + } + + 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 baseUrl = pathToFileURL(basePath); + await syncData(entry, baseUrl, options, entryType); + logger.info(`Reloaded data from ${green(entry)}`); + } + watcher.on('change', onChange); + + watcher.on('add', onChange); + + watcher.on('unlink', async (deletedPath) => { + const entry = relative(basePath, deletedPath); + if (!matchesGlob(entry)) { + return; + } + const id = fileToIdMap.get(deletedPath); + if (id) { + options.store.delete(id); + fileToIdMap.delete(deletedPath); + } + }); + }, + }; +} 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..865e6724e544 --- /dev/null +++ b/packages/astro/src/content/loaders/types.ts @@ -0,0 +1,46 @@ +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 */ + 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 a22bd291947e..7b5d2b6f48af 100644 --- a/packages/astro/src/content/runtime.ts +++ b/packages/astro/src/content/runtime.ts @@ -13,10 +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 } from './data-store.js'; -export { file } from './file.js'; - type LazyImport = () => Promise; type GlobResult = Record; type CollectionToEntryMap = Record; @@ -65,11 +63,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 { // eslint-disable-next-line no-console @@ -139,6 +135,22 @@ 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, + }; + } + const entryImport = await getEntryImport(collection, slug); if (typeof entryImport !== 'function') return undefined; @@ -171,10 +183,11 @@ export function createGetDataEntryById({ getEntryImport }: { getEntryImport: Get throw new Error(`Entry ${collection} → ${id} was not found.`); } + const entry = store.get(collection, id); + return { - id, + ...entry, collection, - data: store.get(collection, id), }; } @@ -241,6 +254,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/src/content/loaders.ts b/packages/astro/src/content/sync.ts similarity index 68% rename from packages/astro/src/content/loaders.ts rename to packages/astro/src/content/sync.ts index f2cfee3962a5..819c8915cc25 100644 --- a/packages/astro/src/content/loaders.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 { 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 { AstroSettings } from '../@types/astro.js'; +import type { Logger } from '../core/logger/core.js'; +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; @@ -67,6 +24,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/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 b318ffb5b4b2..854a3fbd0914 100644 --- a/packages/astro/src/core/build/index.ts +++ b/packages/astro/src/core/build/index.ts @@ -11,7 +11,8 @@ import type { RuntimeMode, } from '../../@types/astro.js'; import { injectImageEndpoint } from '../../assets/endpoint/config.js'; -import { syncContentLayer } from '../../content/loaders.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 { @@ -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 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'; diff --git a/packages/astro/templates/content/module.mjs b/packages/astro/templates/content/module.mjs index 92ae22b31119..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 } from 'astro/content/runtime'; +export { defineCollection } from 'astro/content/runtime'; export { z } from 'astro/zod'; const contentDir = '@@CONTENT_DIR@@'; diff --git a/packages/astro/test/content-layer.test.js b/packages/astro/test/content-layer.test.js index 04e49f6a8c93..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} */ @@ -33,7 +35,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', }); }); @@ -72,8 +73,15 @@ describe('Content Layer', () => { }); it('Returns data entry by id', async () => { - assert.ok(json.hasOwnProperty('dataEntryById')); - assert.deepEqual(json.dataEntryById, { + 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') + ); + delete json.dataEntry.filePath; + assert.deepEqual(json.dataEntry, { id: 'beagle', collection: 'dogs', data: { @@ -92,7 +100,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', @@ -104,7 +111,6 @@ describe('Content Layer', () => { lifespan: '15 years', temperament: ['Active', 'Affectionate', 'Social', 'Playful'], }, - type: 'experimental_data', }); }); }); @@ -137,7 +143,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', }); }); @@ -176,8 +181,15 @@ describe('Content Layer', () => { }); it('Returns data entry by id', async () => { - assert.ok(json.hasOwnProperty('dataEntryById')); - assert.deepEqual(json.dataEntryById, { + 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') + ); + delete json.dataEntry.filePath; + assert.deepEqual(json.dataEntry, { id: 'beagle', collection: 'dogs', data: { @@ -196,7 +208,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); 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 new file mode 100644 index 000000000000..4971108e36ed --- /dev/null +++ b/packages/astro/test/fixtures/content-layer/content-outside-src/columbia-copy.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/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/config.ts b/packages/astro/test/fixtures/content-layer/src/content/config.ts index 78b6858111f5..49d9d6f4a2b5 100644 --- a/packages/astro/test/fixtures/content-layer/src/content/config.ts +++ b/packages/astro/test/fixtures/content-layer/src/content/config.ts @@ -1,59 +1,62 @@ -import { defineCollection, file, z } from 'astro:content'; +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", - 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("_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({ @@ -62,8 +65,22 @@ const cats = defineCollection({ size: z.string(), origin: z.string(), lifespan: z.string(), - temperament: z.array(z.string()) + temperament: z.array(z.string()), }), -}) +}); + + +// Absolute paths should also work +const absoluteRoot = new URL('../../content-outside-src', import.meta.url); + +const spacecraft = defineCollection({ + type: 'experimental_data', + loader: glob({ pattern: '*', base: absoluteRoot }), +}); + +const numbers = defineCollection({ + type: 'experimental_data', + loader: glob({ pattern: 'src/data/glob-data/*', base: '.' }), +}); -export const collections = { blog, dogs, cats }; +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/data/glob-data/index.json b/packages/astro/test/fixtures/content-layer/src/data/glob-data/index.json new file mode 100644 index 000000000000..efc60137d68e --- /dev/null +++ b/packages/astro/test/fixtures/content-layer/src/data/glob-data/index.json @@ -0,0 +1,3 @@ +{ + "title": "One" +} diff --git a/packages/astro/test/fixtures/content-layer/src/data/glob-data/one.json b/packages/astro/test/fixtures/content-layer/src/data/glob-data/one.json new file mode 100644 index 000000000000..efc60137d68e --- /dev/null +++ b/packages/astro/test/fixtures/content-layer/src/data/glob-data/one.json @@ -0,0 +1,3 @@ +{ + "title": "One" +} diff --git a/packages/astro/test/fixtures/content-layer/src/data/glob-data/three.json b/packages/astro/test/fixtures/content-layer/src/data/glob-data/three.json new file mode 100644 index 000000000000..7d028e937a71 --- /dev/null +++ b/packages/astro/test/fixtures/content-layer/src/data/glob-data/three.json @@ -0,0 +1,3 @@ +{ + "title": "Three" +} diff --git a/packages/astro/test/fixtures/content-layer/src/data/glob-data/two.json b/packages/astro/test/fixtures/content-layer/src/data/glob-data/two.json new file mode 100644 index 000000000000..1a8215509b0a --- /dev/null +++ b/packages/astro/test/fixtures/content-layer/src/data/glob-data/two.json @@ -0,0 +1,3 @@ +{ + "title": "Two" +} 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..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; @@ -25,7 +26,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/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 }), ); } 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..ceff0b361e71 --- /dev/null +++ b/packages/astro/test/fixtures/content-layer/src/pages/spacecraft/[slug].astro @@ -0,0 +1,27 @@ +--- +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 + } + })); +}) satisfies GetStaticPaths; + + + + +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 2c5ff792936f..d66a8a64d14c 100644 --- a/packages/astro/types/content.d.ts +++ b/packages/astro/types/content.d.ts @@ -20,55 +20,31 @@ 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; } - 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; - type BaseSchemaWithoutEffects = | import('astro/zod').AnyZodObject | import('astro/zod').ZodUnion<[BaseSchemaWithoutEffects, ...BaseSchemaWithoutEffects[]]> @@ -89,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 = { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3b3cbce48dc9..0bc02855e9cc 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} @@ -8753,6 +8769,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'} @@ -9699,6 +9719,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'} @@ -13271,6 +13295,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': {} @@ -13367,6 +13393,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': {} @@ -14122,6 +14152,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 @@ -14862,7 +14896,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: {} @@ -14893,6 +14927,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 @@ -14917,7 +14955,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: @@ -16261,6 +16299,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 f7562f6e26c837eef013fcbc767522d4a6cd4327 Mon Sep 17 00:00:00 2001 From: Matt Kane Date: Mon, 22 Jul 2024 11:13:02 +0100 Subject: [PATCH 10/34] feat: add markdown rendering to content layer (#11440) * feat: add glob loader * Enable watching and fix paths * Store the full entry object, not just data * Add generateId support * Fix test * Rename loaders to sync * Refacctor imports * Use getEntry * Format * Fix import * Remove type from output * Windows path * Add test for absolute path * Update lockfile * Debugging windows * Allow file URL for base dir * Reset time limit * wip: add markdown rendering to content layer * use cached entries * CLean up types * Instrument more of the build * Add digest helper * Add comments * Make image extraction work * 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 * Dedupe sync runs * Fix syncing in dev * Changes from review * Windows paths ftw * 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 --- benchmark/bench/memory.js | 2 +- benchmark/make-project/image.jpg | Bin 0 -> 174008 bytes benchmark/make-project/markdown-cc1.js | 63 +++++ benchmark/make-project/markdown-cc2.js | 78 +++++ benchmark/package.json | 3 +- packages/astro/package.json | 2 + packages/astro/src/@types/astro.ts | 5 + .../astro/src/assets/utils/resolveImports.ts | 40 +++ packages/astro/src/content/consts.ts | 6 + packages/astro/src/content/data-store.ts | 161 ++++++++++- packages/astro/src/content/loaders/file.ts | 19 +- packages/astro/src/content/loaders/glob.ts | 155 +++++++--- packages/astro/src/content/loaders/types.ts | 3 + packages/astro/src/content/runtime.ts | 266 +++++++++++++++--- packages/astro/src/content/sync.ts | 60 ++-- packages/astro/src/content/types-generator.ts | 2 +- packages/astro/src/content/utils.ts | 75 ++++- .../src/content/vite-plugin-content-assets.ts | 14 +- .../vite-plugin-content-virtual-mod.ts | 14 + packages/astro/src/core/build/index.ts | 15 +- packages/astro/src/core/dev/dev.ts | 4 + packages/astro/src/core/errors/errors-data.ts | 13 + packages/astro/src/core/sync/index.ts | 8 +- .../content-entry-type.ts | 26 +- packages/astro/templates/content/module.mjs | 5 + packages/astro/test/content-layer.test.js | 45 ++- .../fixtures/content-layer/astro.config.mjs | 8 + .../content-outside-src/columbia-copy.md | 3 +- .../content-outside-src/columbia.md | 15 +- .../content-outside-src/shuttle.jpg | Bin 0 -> 174008 bytes .../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 | 12 +- .../content-layer/src/loaders/post-loader.ts | 4 +- .../src/pages/collections.json.js | 9 +- .../src/pages/spacecraft/[slug].astro | 16 +- pnpm-lock.yaml | 22 +- 38 files changed, 992 insertions(+), 181 deletions(-) create mode 100644 benchmark/make-project/image.jpg create mode 100644 benchmark/make-project/markdown-cc1.js create mode 100644 benchmark/make-project/markdown-cc2.js create mode 100644 packages/astro/src/assets/utils/resolveImports.ts create mode 100644 packages/astro/test/fixtures/content-layer/content-outside-src/shuttle.jpg 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/bench/memory.js b/benchmark/bench/memory.js index 34a4972f78b1..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=256 ${astroBin} build`, { + await execaCommand(`node --expose-gc --max_old_space_size=10000 ${astroBin} build --silent`, { cwd: root, stdio: 'inherit', env: { 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 new file mode 100644 index 000000000000..6c83959601e3 --- /dev/null +++ b/benchmark/make-project/markdown-cc1.js @@ -0,0 +1,63 @@ +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 }); + await fs.copyFile(new URL('./image.jpg', import.meta.url), new URL('./src/image.jpg', projectDir)); + + const promises = []; + + + for (let i = 0; i < 10000; i++) { + const content = `\ +# Article ${i} + +${loremIpsumMd} + +![image ${i}](../../image.jpg) + + +`; + 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..05dd73fab54f --- /dev/null +++ b/benchmark/make-project/markdown-cc2.js @@ -0,0 +1,78 @@ +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 }); + await fs.copyFile(new URL('./image.jpg', import.meta.url), new URL('./image.jpg', projectDir)); + + const promises = []; + + for (let i = 0; i < 10000; i++) { + const content = `\ +# Article ${i} + +${loremIpsumMd} + +![image ${i}](../../image.jpg) + +`; + 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/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 d24919ae4083..714f5ca6a7ae 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", @@ -187,6 +188,7 @@ "vite": "^5.3.4", "vitefu": "^0.2.5", "which-pm": "^3.0.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 2c24f74b5386..e06c2eda00c4 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, SSRManifest, SerializedSSRManifest } from '../core/app/types.js'; import type { PageBuildData } from '../core/build/types.js'; import type { AstroConfigType } from '../core/config/index.js'; @@ -2377,6 +2378,8 @@ export type DataEntryModule = { }; }; +export type ContentEntryRenderFuction = (entry: DataEntry) => Promise; + export interface ContentEntryType { extensions: string[]; getEntryInfo(params: { @@ -2392,6 +2395,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/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 acd159c25ffc..ddf89e4eccac 100644 --- a/packages/astro/src/content/data-store.ts +++ b/packages/astro/src/content/data-store.ts @@ -1,12 +1,24 @@ 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?: { + imagePaths: Array; + [key: string]: unknown; + }; +} + export interface DataEntry { id: string; data: Record; filePath?: string; body?: string; + digest?: number | string; + rendered?: RenderedContent; } export class DataStore { @@ -14,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(); @@ -70,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) { @@ -82,7 +170,7 @@ export class DataStore { this.writeToDisk(this.#file!); }, SAVE_DEBOUNCE_MS); } - }; + } scopedStore(collectionName: string): ScopedDataStore { return { @@ -90,29 +178,49 @@ 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) { + if (filePath.startsWith('/')) { + throw new Error(`File path must be relative to the site root. Got: ${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), 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), }; } @@ -142,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, + }); } } @@ -183,12 +294,46 @@ 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; + /** + * 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 `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; + data: Record; + body?: string; + filePath?: string; + digest?: number | string; + rendered?: RenderedContent; + }) => boolean; values: () => Array; keys: () => Array; 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 adbd1bf8a291..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 { @@ -37,16 +38,20 @@ 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: posixRelative(fileURLToPath(settings.config.root), 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..bc1b86d5f6cd 100644 --- a/packages/astro/src/content/loaders/glob.ts +++ b/packages/astro/src/content/loaders/glob.ts @@ -1,13 +1,13 @@ -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 } from '../../@types/astro.js'; -import { getContentEntryIdAndSlug, getEntryConfigByExtMap } from '../utils.js'; -import type { Loader, LoaderContext } from './types.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. */ @@ -63,41 +63,105 @@ 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; + load: async ({ settings, logger, watcher, parseData, store, generateDigest }) => { + const renderFunctionByContentType = new WeakMap< + ContentEntryType, + ContentEntryRenderFuction + >(); + + const untouchedEntries = new Set(store.keys()); + + 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').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, + fileUrl, + }); + + const id = generateId({ entry, base, data }); + untouchedEntries.delete(id); + + const existingEntry = store.get(id); + + const digest = generateDigest(contents); + + 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, + filePath, + }); + + if (entryType.getRenderFunction) { + 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); + } + 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, + body, + filePath: relativePath, + digest, + rendered, + }); + if (rendered?.metadata?.imagePaths?.length) { + store.addAssetImports(rendered.metadata.imagePaths, relativePath); + } + } else { + store.set({ id, data: parsedData, body, filePath: relativePath, digest }); + } + + fileToIdMap.set(filePath, id); + } const entryConfigByExt = getEntryConfigByExtMap([ ...settings.contentEntryTypes, @@ -126,15 +190,16 @@ export function glob(globOptions: GlobOptions): Loader { } const limit = pLimit(10); - options.store.clear(); await Promise.all( files.map((entry) => limit(async () => { const entryType = configForFile(entry); - await syncData(entry, baseDir, options, entryType); + await syncData(entry, baseDir, entryType); }) ) ); + // Remove entries that were not found this time + untouchedEntries.forEach((id) => store.delete(id)); if (!watcher) { return; @@ -147,13 +212,13 @@ 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; } 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); @@ -161,13 +226,13 @@ 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; } 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/runtime.ts b/packages/astro/src/content/runtime.ts index 7b5d2b6f48af..edd8ca7d7dac 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 { 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'; import { prependForwardSlash } from '../core/path.js'; import { @@ -11,8 +14,10 @@ import { renderScriptElement, renderTemplate, renderUniqueStylesheet, + 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; @@ -63,10 +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, - })); + // @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( @@ -130,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(); @@ -148,8 +167,14 @@ export function createGetEntryBySlug({ return { ...entry, collection, + 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; @@ -173,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(); @@ -190,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); @@ -225,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, @@ -257,19 +292,31 @@ export function createGetEntry({ 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); + if (!entry) { + // eslint-disable-next-line no-console + console.warn(`Entry ${collection} → ${lookupId} was not found.`); + return; + } + 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, + render: () => renderEntry(entry), } 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; @@ -315,6 +362,87 @@ 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) { + 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 }; +} + async function render({ collection, id, @@ -411,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/src/content/sync.ts b/packages/astro/src/content/sync.ts index 819c8915cc25..9542717f4bf6 100644 --- a/packages/astro/src/content/sync.ts +++ b/packages/astro/src/content/sync.ts @@ -1,11 +1,15 @@ -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'; +import { isAbsolute } from 'node:path'; + export interface SyncContentLayerOptions { store?: DataStore; settings: AstroSettings; @@ -38,6 +42,15 @@ 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) => { + 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') { @@ -48,24 +61,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, @@ -73,7 +81,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 + isAbsolute(filePath) + ? posixRelative(fileURLToPath(settings.config.root), filePath) + : filePath + ); + } + + return parsedData; + }; const payload: LoaderContext = { collection: name, @@ -82,6 +102,7 @@ export async function syncContentLayer({ logger: globalLogger.forkIntegrationLogger(collection.loader.name ?? 'content'), settings, parseData, + generateDigest, watcher, }; @@ -96,11 +117,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'); } @@ -112,6 +138,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/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 bbb6f6e18d33..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. @@ -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(), }), ], @@ -119,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) { @@ -174,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({ @@ -194,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; } @@ -611,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/build/index.ts b/packages/astro/src/core/build/index.ts index e6a38eed0081..9989c01548ae 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 { @@ -152,10 +150,6 @@ class AstroBuilder { fs, }); - const dataStore = await DataStore.fromModule(); - globalDataStore.set(dataStore); - await syncContentLayer({ settings: this.settings, logger: logger }); - return { viteConfig }; } @@ -240,18 +234,21 @@ class AstroBuilder { buildMode: this.settings.config.output, }); } - - // 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/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 { 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 4e1f2d7c3a66..e7b607a8c574 100644 --- a/packages/astro/test/content-layer.test.js +++ b/packages/astro/test/content-layer.test.js @@ -1,8 +1,9 @@ import assert from 'node:assert/strict'; -import { after, before, describe, it } from 'node:test'; -import { loadFixture } from './test-utils.js'; +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'; +import { loadFixture } from './test-utils.js'; describe('Content Layer', () => { /** @type {import("./test-utils.js").Fixture} */ @@ -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', @@ -113,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', () => { @@ -182,12 +202,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-copy.md b/packages/astro/test/fixtures/content-layer/content-outside-src/columbia-copy.md index 4971108e36ed..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 @@ -1,8 +1,9 @@ --- -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] +cat: tabby --- **Source:** [Wikipedia](https://en.wikipedia.org/wiki/Space_Shuttle_Endeavour) 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..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,13 +3,20 @@ 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) -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 bare](shuttle.jpg) +![columbia relative](./shuttle.jpg) +![atlantis alias](@images/atlantis.avif) +![columbia relative 2](./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/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 49d9d6f4a2b5..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'; @@ -75,7 +75,15 @@ 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 }), + schema: ({ image }) => z.object({ + title: z.string(), + description: z.string(), + publishedDate: z.string(), + tags: z.array(z.string()), + heroImage: image().optional(), + cat: reference('cats').optional(), + }), }); const numbers = defineCollection({ 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/collections.json.js b/packages/astro/test/fixtures/content-layer/src/pages/collections.json.js index 5f98a51285b9..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,11 +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 new Response( - JSON.stringify({ 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 ceff0b361e71..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,8 @@ --- 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 () => { const collection = await getCollection("spacecraft"); if(!collection) return [] @@ -18,10 +20,14 @@ 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}

-
-	{craft.body}
-
+{cat?

🐈: {cat.data.breed}

: undefined} +{craft.data.heroImage ? {craft.data.title} : undefined} + diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e85a41ddc7e6..2aa10d89f990 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 @@ -750,6 +756,9 @@ importers: which-pm: specifier: ^3.0.0 version: 3.0.0 + xxhash-wasm: + specifier: ^1.0.2 + version: 1.0.2 yargs-parser: specifier: ^21.1.1 version: 21.1.1 @@ -9964,6 +9973,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==} @@ -11824,6 +11837,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'} @@ -12225,7 +12241,7 @@ snapshots: dependencies: '@babel/code-frame': 7.24.7 '@babel/parser': 7.24.8 - '@babel/types': 7.24.7 + '@babel/types': 7.24.9 '@babel/traverse@7.24.7': dependencies: @@ -16486,6 +16502,8 @@ snapshots: negotiator@0.6.3: {} + neotraverse@0.6.9: {} + nlcst-to-string@4.0.0: dependencies: '@types/nlcst': 2.0.3 @@ -18550,6 +18568,8 @@ snapshots: xmldom-sre@0.1.31: {} + xxhash-wasm@1.0.2: {} + y18n@5.0.8: {} yallist@2.1.2: {} From 4230c11711119ffc810e0d169f0836be94440321 Mon Sep 17 00:00:00 2001 From: Matt Kane Date: Tue, 23 Jul 2024 10:45:39 +0100 Subject: [PATCH 11/34] chore: fix content layer types (#11527) * Add experimental_content type * Fix import * Make data store methods generic * fix loader types --- packages/astro/src/content/data-store.ts | 15 ++++++++------ packages/astro/src/content/loaders/glob.ts | 4 ++-- packages/astro/src/content/loaders/types.ts | 11 +++------- packages/astro/src/content/runtime.ts | 2 +- packages/astro/src/content/sync.ts | 12 +++++------ packages/astro/src/content/types-generator.ts | 20 ++++++++++--------- packages/astro/src/content/utils.ts | 13 +++++++++--- packages/astro/src/core/dev/dev.ts | 2 +- packages/astro/src/core/sync/index.ts | 2 +- packages/astro/templates/content/types.d.ts | 11 ++++++++++ .../content-layer/src/content/config.ts | 4 ++-- packages/astro/types/content.d.ts | 15 ++++---------- 12 files changed, 61 insertions(+), 50 deletions(-) diff --git a/packages/astro/src/content/data-store.ts b/packages/astro/src/content/data-store.ts index ddf89e4eccac..66c7b171f265 100644 --- a/packages/astro/src/content/data-store.ts +++ b/packages/astro/src/content/data-store.ts @@ -12,9 +12,9 @@ export interface RenderedContent { }; } -export interface DataEntry { +export interface DataEntry = Record> { id: string; - data: Record; + data: TData; filePath?: string; body?: string; digest?: number | string; @@ -174,7 +174,8 @@ export default new Map([${exports.join(', ')}]); scopedStore(collectionName: string): ScopedDataStore { return { - get: (key: string) => this.get(collectionName, key), + get: = Record>(key: string) => + this.get>(collectionName, key), entries: () => this.entries(collectionName), values: () => this.values(collectionName), keys: () => this.keys(collectionName), @@ -292,7 +293,9 @@ export default new Map([${exports.join(', ')}]); } export interface ScopedDataStore { - get: (key: string) => DataEntry | undefined; + get: = Record>( + 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, @@ -306,9 +309,9 @@ export interface ScopedDataStore { * @param opts.rendered The rendered content, if applicable. * @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: { + set: >(opts: { id: string; - data: Record; + data: TData; body?: string; filePath?: string; digest?: number | string; diff --git a/packages/astro/src/content/loaders/glob.ts b/packages/astro/src/content/loaders/glob.ts index bc1b86d5f6cd..e0ce403209d6 100644 --- a/packages/astro/src/content/loaders/glob.ts +++ b/packages/astro/src/content/loaders/glob.ts @@ -4,10 +4,10 @@ import fastGlob from 'fast-glob'; import { green } from 'kleur/colors'; import micromatch from 'micromatch'; import pLimit from 'p-limit'; -import type { ContentEntryType, ContentEntryRenderFuction } from '../../@types/astro.js'; +import type { ContentEntryRenderFuction, ContentEntryType } from '../../@types/astro.js'; +import type { RenderedContent } from '../data-store.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. */ diff --git a/packages/astro/src/content/loaders/types.ts b/packages/astro/src/content/loaders/types.ts index efe4dd999f76..3a17431925b9 100644 --- a/packages/astro/src/content/loaders/types.ts +++ b/packages/astro/src/content/loaders/types.ts @@ -3,20 +3,15 @@ import type { ZodSchema } from 'zod'; import type { AstroIntegrationLogger, AstroSettings } from '../../@types/astro.js'; import type { MetaStore, ScopedDataStore } from '../data-store.js'; -export interface ParseDataOptions { +export interface ParseDataOptions> { /** The ID of the entry. Unique per collection */ id: string; /** The raw, unvalidated data of the entry */ - data: Record; + data: TData; /** 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; @@ -29,7 +24,7 @@ export interface LoaderContext { settings: AstroSettings; /** Validates and parses the data according to the collection schema */ - parseData(props: ParseDataOptions): Promise; + 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; diff --git a/packages/astro/src/content/runtime.ts b/packages/astro/src/content/runtime.ts index edd8ca7d7dac..f609f7bbd59d 100644 --- a/packages/astro/src/content/runtime.ts +++ b/packages/astro/src/content/runtime.ts @@ -62,7 +62,7 @@ export function createGetCollection({ }) { return async function getCollection(collection: string, filter?: (entry: any) => unknown) { const store = await globalDataStore.get(); - let type: 'content' | 'data' | 'experimental_data'; + let type: 'content' | 'data' | 'experimental_data' | 'experimental_content'; if (collection in contentCollectionToEntryMap) { type = 'content'; } else if (collection in dataCollectionToEntryMap) { diff --git a/packages/astro/src/content/sync.ts b/packages/astro/src/content/sync.ts index 9542717f4bf6..aa0ecdc79b3f 100644 --- a/packages/astro/src/content/sync.ts +++ b/packages/astro/src/content/sync.ts @@ -1,4 +1,5 @@ import { promises as fs, existsSync } from 'node:fs'; +import { isAbsolute } from 'node:path'; import { fileURLToPath } from 'node:url'; import type { FSWatcher } from 'vite'; import xxhash from 'xxhash-wasm'; @@ -6,9 +7,8 @@ import type { AstroSettings } from '../@types/astro.js'; import type { Logger } from '../core/logger/core.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 type { LoaderContext } from './loaders/types.js'; import { getEntryDataAndImages, globalContentConfigObserver, posixRelative } from './utils.js'; -import { isAbsolute } from 'node:path'; export interface SyncContentLayerOptions { store?: DataStore; @@ -53,7 +53,7 @@ export async function syncContentLayer({ await Promise.all( Object.entries(contentConfig.config.collections).map(async ([name, collection]) => { - if (collection.type !== 'experimental_data') { + if (collection.type !== 'experimental_data' && collection.type !== 'experimental_content') { return; } @@ -73,7 +73,7 @@ export async function syncContentLayer({ { id, collection: name, - unvalidatedData: data as DataWithId, + unvalidatedData: data, _internal: { rawData: undefined, filePath, @@ -130,8 +130,8 @@ export async function syncContentLayer({ logger.info('Synced content'); } -export async function simpleLoader( - handler: () => Array | Promise>, +export async function simpleLoader( + handler: () => Array | Promise>, context: LoaderContext ) { const data = await handler(); diff --git a/packages/astro/src/content/types-generator.ts b/packages/astro/src/content/types-generator.ts index 2fd4d0d1551c..7dce328d3215 100644 --- a/packages/astro/src/content/types-generator.ts +++ b/packages/astro/src/content/types-generator.ts @@ -45,11 +45,7 @@ type CollectionEntryMap = { entries: Record; } | { - type: 'data'; - entries: Record; - } - | { - type: 'experimental_data'; + type: 'data' | 'experimental_content' | 'experimental_data'; entries: Record; }; }; @@ -370,7 +366,7 @@ async function typeForCollection( } if ( - collection?.type === 'experimental_data' && + (collection?.type === 'experimental_data' || collection?.type === 'experimental_content') && typeof collection.loader === 'object' && collection.loader.schema ) { @@ -431,6 +427,7 @@ async function writeContentFiles({ collectionConfig?.type && collection.type !== 'unknown' && collectionConfig.type !== 'experimental_data' && + collectionConfig.type !== 'experimental_content' && collection.type !== collectionConfig.type ) { viteServer.hot.send({ @@ -453,7 +450,7 @@ async function writeContentFiles({ }); return; } - const resolvedType: 'content' | 'data' | 'experimental_data' = + const resolvedType: 'content' | 'data' | 'experimental_data' | 'experimental_content' = collection.type === 'unknown' ? // Add empty / unknown collections to the data type map by default // This ensures `getCollection('empty-collection')` doesn't raise a type error @@ -480,14 +477,19 @@ async function writeContentFiles({ } contentTypesStr += `};\n`; break; - case 'data': case 'experimental_data': + dataTypesStr += `${collectionKey}: Record;\n`; + break; + case 'experimental_content': + dataTypesStr += `${collectionKey}: Record;\n`; + break; + case 'data': if (collectionEntryKeys.length === 0) { dataTypesStr += `${collectionKey}: Record;\n`; } else { dataTypesStr += `${collectionKey}: {\n`; for (const entryKey of collectionEntryKeys) { - dataTypesStr += `${entryKey}: {\n id: ${entryKey};\n collection: ${collectionKey};\n data: ${dataType};\n render(): Render[".md"];\n };\n`; + dataTypesStr += `${entryKey}: {\n id: ${entryKey};\n collection: ${collectionKey};\n data: ${dataType}\n};\n`; } dataTypesStr += `};\n`; } diff --git a/packages/astro/src/content/utils.ts b/packages/astro/src/content/utils.ts index 7f779b528199..1d153cdc9901 100644 --- a/packages/astro/src/content/utils.ts +++ b/packages/astro/src/content/utils.ts @@ -36,7 +36,7 @@ export const collectionConfigParser = z.union([ schema: z.any().optional(), }), z.object({ - type: z.literal('experimental_data'), + type: z.union([z.literal('experimental_data'), z.literal('experimental_content')]), schema: z.any().optional(), loader: z.union([ z.function().returns( @@ -135,7 +135,11 @@ export async function getEntryDataAndImages< pluginContext?: PluginContext ): Promise<{ data: TOutputData; imageImports: Array }> { let data: TOutputData; - if (collectionConfig.type === 'data' || collectionConfig.type === 'experimental_data') { + if ( + collectionConfig.type === 'data' || + collectionConfig.type === 'experimental_data' || + collectionConfig.type === 'experimental_content' + ) { data = entry.unvalidatedData as TOutputData; } else { const { slug, ...unvalidatedData } = entry.unvalidatedData; @@ -151,7 +155,10 @@ export async function getEntryDataAndImages< schema = schema({ image: createImage(pluginContext, shouldEmitFile, entry._internal.filePath), }); - } else if (collectionConfig.type === 'experimental_data') { + } else if ( + collectionConfig.type === 'experimental_data' || + collectionConfig.type === 'experimental_content' + ) { schema = schema({ image: () => z.string().transform((val) => { diff --git a/packages/astro/src/core/dev/dev.ts b/packages/astro/src/core/dev/dev.ts index 2952caa50d6a..32622dff6523 100644 --- a/packages/astro/src/core/dev/dev.ts +++ b/packages/astro/src/core/dev/dev.ts @@ -6,6 +6,7 @@ import { performance } from 'perf_hooks'; import { gt, major, minor, patch } from 'semver'; import type * as vite from 'vite'; import type { AstroInlineConfig } from '../../@types/astro.js'; +import { DataStore, globalDataStore } from '../../content/data-store.js'; import { attachContentServerListeners } from '../../content/index.js'; import { syncContentLayer } from '../../content/sync.js'; import { telemetry } from '../../events/index.js'; @@ -18,7 +19,6 @@ import { fetchLatestAstroVersion, shouldCheckForUpdates, } from './update-check.js'; -import { DataStore, globalDataStore } from '../../content/data-store.js'; export interface DevServer { address: AddressInfo; diff --git a/packages/astro/src/core/sync/index.ts b/packages/astro/src/core/sync/index.ts index 79a3223efe94..1dc1c41fb646 100644 --- a/packages/astro/src/core/sync/index.ts +++ b/packages/astro/src/core/sync/index.ts @@ -5,6 +5,7 @@ import { dim } from 'kleur/colors'; import { type HMRPayload, createServer } from 'vite'; import type { AstroConfig, AstroInlineConfig, AstroSettings } from '../../@types/astro.js'; import { getPackage } from '../../cli/install-package.js'; +import { DataStore, globalDataStore } from '../../content/data-store.js'; import { createContentTypesGenerator } from '../../content/index.js'; import { syncContentLayer } from '../../content/sync.js'; import { globalContentConfigObserver } from '../../content/utils.js'; @@ -29,7 +30,6 @@ 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 = { /** diff --git a/packages/astro/templates/content/types.d.ts b/packages/astro/templates/content/types.d.ts index 9ac20a7f1457..04e7cc28998c 100644 --- a/packages/astro/templates/content/types.d.ts +++ b/packages/astro/templates/content/types.d.ts @@ -6,6 +6,17 @@ declare module 'astro:content' { remarkPluginFrontmatter: Record; }>; } + interface ContentLayerRenderer { + Content: import('astro/runtime/server/index.js').AstroComponentFactory; + } + + export interface RenderedContent { + html: string; + metadata?: { + imagePaths: Array; + [key: string]: unknown; + }; + } } declare module 'astro:content' { 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 bf7b34f19d29..38b6bc52644f 100644 --- a/packages/astro/test/fixtures/content-layer/src/content/config.ts +++ b/packages/astro/test/fixtures/content-layer/src/content/config.ts @@ -74,7 +74,7 @@ const cats = defineCollection({ const absoluteRoot = new URL('../../content-outside-src', import.meta.url); const spacecraft = defineCollection({ - type: 'experimental_data', + type: 'experimental_content', loader: glob({ pattern: '*.md', base: absoluteRoot }), schema: ({ image }) => z.object({ title: z.string(), @@ -87,7 +87,7 @@ const spacecraft = defineCollection({ }); const numbers = defineCollection({ - type: 'experimental_data', + type: 'experimental_content', loader: glob({ pattern: 'src/data/glob-data/*', base: '.' }), }); diff --git a/packages/astro/types/content.d.ts b/packages/astro/types/content.d.ts index d66a8a64d14c..b927e93fd03b 100644 --- a/packages/astro/types/content.d.ts +++ b/packages/astro/types/content.d.ts @@ -57,17 +57,10 @@ declare module 'astro:content' { export type SchemaContext = { image: ImageFunction }; - export interface DataWithId { - id: string; - [key: string]: unknown; - } - - type ContentCollectionV2Config = { - type: 'experimental_data'; + type ContentLayerConfig = { + type: 'experimental_data' | 'experimental_content'; schema?: S | ((context: SchemaContext) => S); - loader: - | import('astro/loader/types').Loader - | (() => Array | Promise>); + loader: import('astro/loaders').Loader | (() => Array | Promise>); }; type DataCollectionConfig = { @@ -83,7 +76,7 @@ declare module 'astro:content' { export type CollectionConfig = | ContentCollectionConfig | DataCollectionConfig - | ContentCollectionV2Config; + | ContentLayerConfig; export function defineCollection( input: CollectionConfig From 84b0608770ff9f55e9c8e1446b18fbc3d8fb48f8 Mon Sep 17 00:00:00 2001 From: Matt Kane Date: Tue, 23 Jul 2024 11:25:43 +0100 Subject: [PATCH 12/34] Lockfile --- pnpm-lock.yaml | 592 +++++++++++++++++++++++++------------------------ 1 file changed, 304 insertions(+), 288 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2aa10d89f990..6a4b17945907 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -19,8 +19,8 @@ importers: version: link:benchmark devDependencies: '@astrojs/check': - specifier: ^0.8.1 - version: 0.8.2(prettier-plugin-astro@0.14.0)(prettier@3.3.3)(typescript@5.5.3) + specifier: ^0.8.2 + version: 0.8.2(prettier-plugin-astro@0.14.1)(prettier@3.3.3)(typescript@5.5.3) '@biomejs/biome': specifier: 1.8.1 version: 1.8.1 @@ -61,8 +61,8 @@ importers: specifier: ^3.3.3 version: 3.3.3 prettier-plugin-astro: - specifier: ^0.14.0 - version: 0.14.0 + specifier: ^0.14.1 + version: 0.14.1 tiny-glob: specifier: ^0.2.9 version: 0.2.9 @@ -252,8 +252,8 @@ importers: specifier: ^4.2.18 version: 4.2.18 vue: - specifier: ^3.4.31 - version: 3.4.31(typescript@5.5.3) + specifier: ^3.4.33 + version: 3.4.33(typescript@5.5.3) examples/framework-preact: dependencies: @@ -324,8 +324,8 @@ importers: specifier: ^4.12.2 version: link:../../packages/astro vue: - specifier: ^3.4.31 - version: 3.4.31(typescript@5.5.3) + specifier: ^3.4.33 + version: 3.4.33(typescript@5.5.3) examples/hackernews: dependencies: @@ -388,8 +388,8 @@ importers: specifier: ^5.1.0 version: link:../../packages/integrations/tailwind '@fortawesome/fontawesome-free': - specifier: ^6.5.2 - version: 6.5.2 + specifier: ^6.6.0 + version: 6.6.0 '@tailwindcss/forms': specifier: ^0.5.7 version: 0.5.7(tailwindcss@3.4.6) @@ -403,7 +403,7 @@ importers: specifier: ^4.12.2 version: link:../../packages/astro postcss: - specifier: ^8.4.38 + specifier: ^8.4.39 version: 8.4.39 react: specifier: ^18.3.1 @@ -412,7 +412,7 @@ importers: specifier: ^18.3.1 version: 18.3.1(react@18.3.1) tailwindcss: - specifier: ^3.4.3 + specifier: ^3.4.6 version: 3.4.6 examples/ssr: @@ -556,7 +556,7 @@ importers: specifier: ^8.4.39 version: 8.4.39 tailwindcss: - specifier: ^3.4.5 + specifier: ^3.4.6 version: 3.4.6 examples/with-vitest: @@ -571,8 +571,8 @@ importers: packages/astro: dependencies: '@astrojs/compiler': - specifier: ^2.9.0 - version: 2.9.1 + specifier: ^2.9.2 + version: 2.9.2 '@astrojs/internal-helpers': specifier: workspace:* version: link:../internal-helpers @@ -602,7 +602,7 @@ importers: version: 7.24.7 '@rollup/pluginutils': specifier: ^5.1.0 - version: 5.1.0(rollup@4.18.1) + version: 5.1.0(rollup@4.19.0) '@types/babel__core': specifier: ^7.20.5 version: 7.20.5 @@ -727,11 +727,11 @@ importers: specifier: ^13.0.1 version: 13.0.1 semver: - specifier: ^7.6.2 - version: 7.6.2 + specifier: ^7.6.3 + version: 7.6.3 shiki: - specifier: ^1.10.3 - version: 1.10.3 + specifier: ^1.11.0 + version: 1.11.0 string-width: specifier: ^7.2.0 version: 7.2.0 @@ -777,8 +777,8 @@ importers: version: 0.33.3 devDependencies: '@astrojs/check': - specifier: ^0.8.1 - version: 0.8.2(prettier-plugin-astro@0.14.0)(prettier@3.3.3)(typescript@5.5.3) + specifier: ^0.8.2 + version: 0.8.2(prettier-plugin-astro@0.14.1)(prettier@3.3.3)(typescript@5.5.3) '@playwright/test': specifier: ^1.45.2 version: 1.45.2 @@ -810,8 +810,8 @@ importers: specifier: ^1.1.4 version: 1.1.4 '@types/dom-view-transitions': - specifier: ^1.0.4 - version: 1.0.4 + specifier: ^1.0.5 + version: 1.0.5 '@types/hast': specifier: ^3.0.4 version: 3.0.4 @@ -885,8 +885,8 @@ importers: specifier: ^0.1.2 version: 0.1.2 rollup: - specifier: ^4.18.1 - version: 4.18.1 + specifier: ^4.19.0 + version: 4.19.0 sass: specifier: ^1.77.8 version: 1.77.8 @@ -944,8 +944,8 @@ importers: packages/astro/e2e/fixtures/actions-blog: dependencies: '@astrojs/check': - specifier: ^0.8.1 - version: 0.8.2(prettier-plugin-astro@0.14.0)(prettier@3.3.3)(typescript@5.5.3) + specifier: ^0.8.2 + version: 0.8.2(prettier-plugin-astro@0.14.1)(prettier@3.3.3)(typescript@5.5.3) '@astrojs/db': specifier: workspace:* version: link:../../../../db @@ -977,8 +977,8 @@ importers: packages/astro/e2e/fixtures/actions-react-19: dependencies: '@astrojs/check': - specifier: ^0.8.1 - version: 0.8.2(prettier-plugin-astro@0.14.0)(prettier@3.3.3)(typescript@5.5.3) + specifier: ^0.8.2 + version: 0.8.2(prettier-plugin-astro@0.14.1)(prettier@3.3.3)(typescript@5.5.3) '@astrojs/db': specifier: workspace:* version: link:../../../../db @@ -1031,8 +1031,8 @@ importers: specifier: workspace:* version: link:../../.. vue: - specifier: ^3.4.31 - version: 3.4.31(typescript@5.5.3) + specifier: ^3.4.33 + version: 3.4.33(typescript@5.5.3) packages/astro/e2e/fixtures/client-only: dependencies: @@ -1052,8 +1052,8 @@ importers: specifier: ^4.2.18 version: 4.2.18 vue: - specifier: ^3.4.31 - version: 3.4.31(typescript@5.5.3) + specifier: ^3.4.33 + version: 3.4.33(typescript@5.5.3) devDependencies: '@astrojs/preact': specifier: workspace:* @@ -1176,8 +1176,8 @@ importers: specifier: ^4.2.18 version: 4.2.18 vue: - specifier: ^3.4.31 - version: 3.4.31(typescript@5.5.3) + specifier: ^3.4.33 + version: 3.4.33(typescript@5.5.3) packages/astro/e2e/fixtures/hmr: devDependencies: @@ -1245,8 +1245,8 @@ importers: specifier: ^4.2.18 version: 4.2.18 vue: - specifier: ^3.4.31 - version: 3.4.31(typescript@5.5.3) + specifier: ^3.4.33 + version: 3.4.33(typescript@5.5.3) devDependencies: '@astrojs/lit': specifier: workspace:* @@ -1304,8 +1304,8 @@ importers: specifier: ^4.2.18 version: 4.2.18 vue: - specifier: ^3.4.31 - version: 3.4.31(typescript@5.5.3) + specifier: ^3.4.33 + version: 3.4.33(typescript@5.5.3) devDependencies: '@astrojs/preact': specifier: workspace:* @@ -1344,8 +1344,8 @@ importers: specifier: ^4.2.18 version: 4.2.18 vue: - specifier: ^3.4.31 - version: 3.4.31(typescript@5.5.3) + specifier: ^3.4.33 + version: 3.4.33(typescript@5.5.3) devDependencies: '@astrojs/preact': specifier: workspace:* @@ -1384,8 +1384,8 @@ importers: specifier: ^4.2.18 version: 4.2.18 vue: - specifier: ^3.4.31 - version: 3.4.31(typescript@5.5.3) + specifier: ^3.4.33 + version: 3.4.33(typescript@5.5.3) devDependencies: '@astrojs/preact': specifier: workspace:* @@ -1424,8 +1424,8 @@ importers: specifier: ^4.2.18 version: 4.2.18 vue: - specifier: ^3.4.31 - version: 3.4.31(typescript@5.5.3) + specifier: ^3.4.33 + version: 3.4.33(typescript@5.5.3) devDependencies: '@astrojs/preact': specifier: workspace:* @@ -1464,8 +1464,8 @@ importers: specifier: ^4.2.18 version: 4.2.18 vue: - specifier: ^3.4.31 - version: 3.4.31(typescript@5.5.3) + specifier: ^3.4.33 + version: 3.4.33(typescript@5.5.3) devDependencies: '@astrojs/preact': specifier: workspace:* @@ -1504,8 +1504,8 @@ importers: specifier: ^4.2.18 version: 4.2.18 vue: - specifier: ^3.4.31 - version: 3.4.31(typescript@5.5.3) + specifier: ^3.4.33 + version: 3.4.33(typescript@5.5.3) devDependencies: '@astrojs/preact': specifier: workspace:* @@ -1706,7 +1706,7 @@ importers: specifier: ^8.4.39 version: 8.4.39 tailwindcss: - specifier: ^3.4.5 + specifier: ^3.4.6 version: 3.4.6 packages/astro/e2e/fixtures/ts-resolution: @@ -1751,8 +1751,8 @@ importers: specifier: ^4.2.18 version: 4.2.18 vue: - specifier: ^3.4.31 - version: 3.4.31(typescript@5.5.3) + specifier: ^3.4.33 + version: 3.4.33(typescript@5.5.3) packages/astro/e2e/fixtures/vue-component: dependencies: @@ -1766,8 +1766,8 @@ importers: specifier: workspace:* version: link:../../.. vue: - specifier: ^3.4.31 - version: 3.4.31(typescript@5.5.3) + specifier: ^3.4.33 + version: 3.4.33(typescript@5.5.3) packages/astro/performance: devDependencies: @@ -1895,8 +1895,8 @@ importers: specifier: ^4.2.18 version: 4.2.18 vue: - specifier: ^3.4.31 - version: 3.4.31(typescript@5.5.3) + specifier: ^3.4.33 + version: 3.4.33(typescript@5.5.3) packages/astro/test/fixtures/actions: dependencies: @@ -2068,8 +2068,8 @@ importers: specifier: ^4.2.18 version: 4.2.18 vue: - specifier: ^3.4.31 - version: 3.4.31(typescript@5.5.3) + specifier: ^3.4.33 + version: 3.4.33(typescript@5.5.3) packages/astro/test/fixtures/astro-class-list: dependencies: @@ -2226,8 +2226,8 @@ importers: specifier: workspace:* version: link:../../.. vue: - specifier: ^3.4.31 - version: 3.4.31(typescript@5.5.3) + specifier: ^3.4.33 + version: 3.4.33(typescript@5.5.3) packages/astro/test/fixtures/astro-expr: dependencies: @@ -2517,8 +2517,8 @@ importers: specifier: ^4.2.18 version: 4.2.18 vue: - specifier: ^3.4.31 - version: 3.4.31(typescript@5.5.3) + specifier: ^3.4.33 + version: 3.4.33(typescript@5.5.3) packages/astro/test/fixtures/before-hydration: dependencies: @@ -2656,8 +2656,8 @@ importers: specifier: ^18.3.1 version: 18.3.1(react@18.3.1) vue: - specifier: ^3.4.31 - version: 3.4.31(typescript@5.5.3) + specifier: ^3.4.33 + version: 3.4.33(typescript@5.5.3) packages/astro/test/fixtures/content: dependencies: @@ -3114,8 +3114,8 @@ importers: specifier: ^4.2.18 version: 4.2.18 vue: - specifier: ^3.4.31 - version: 3.4.31(typescript@5.5.3) + specifier: ^3.4.33 + version: 3.4.33(typescript@5.5.3) packages/astro/test/fixtures/fontsource-package: dependencies: @@ -3312,8 +3312,8 @@ importers: specifier: ^4.2.18 version: 4.2.18 vue: - specifier: ^3.4.31 - version: 3.4.31(typescript@5.5.3) + specifier: ^3.4.33 + version: 3.4.33(typescript@5.5.3) devDependencies: '@astrojs/mdx': specifier: workspace:* @@ -3500,8 +3500,8 @@ importers: specifier: ^4.2.18 version: 4.2.18 vue: - specifier: ^3.4.31 - version: 3.4.31(typescript@5.5.3) + specifier: ^3.4.33 + version: 3.4.33(typescript@5.5.3) devDependencies: postcss-preset-env: specifier: ^9.6.0 @@ -3787,8 +3787,8 @@ importers: specifier: workspace:* version: link:../../.. vue: - specifier: ^3.4.31 - version: 3.4.31(typescript@5.5.3) + specifier: ^3.4.33 + version: 3.4.33(typescript@5.5.3) packages/astro/test/fixtures/solid-component: dependencies: @@ -4118,7 +4118,7 @@ importers: specifier: ^8.4.39 version: 8.4.39 tailwindcss: - specifier: ^3.4.5 + specifier: ^3.4.6 version: 3.4.6 packages/astro/test/fixtures/tailwindcss-ts: @@ -4133,7 +4133,7 @@ importers: specifier: ^8.4.39 version: 8.4.39 tailwindcss: - specifier: ^3.4.5 + specifier: ^3.4.6 version: 3.4.6 packages/astro/test/fixtures/third-party-astro: @@ -4193,8 +4193,8 @@ importers: specifier: workspace:* version: link:../../.. vue: - specifier: ^3.4.31 - version: 3.4.31(typescript@5.5.3) + specifier: ^3.4.33 + version: 3.4.33(typescript@5.5.3) packages/astro/test/fixtures/vue-jsx: dependencies: @@ -4205,8 +4205,8 @@ importers: specifier: workspace:* version: link:../../.. vue: - specifier: ^3.4.31 - version: 3.4.31(typescript@5.5.3) + specifier: ^3.4.33 + version: 3.4.33(typescript@5.5.3) packages/astro/test/fixtures/vue-with-multi-renderer: dependencies: @@ -4223,8 +4223,8 @@ importers: specifier: ^4.2.18 version: 4.2.18 vue: - specifier: ^3.4.31 - version: 3.4.31(typescript@5.5.3) + specifier: ^3.4.33 + version: 3.4.33(typescript@5.5.3) packages/astro/test/fixtures/with-endpoint-routes: dependencies: @@ -4440,8 +4440,8 @@ importers: packages/db/test/fixtures/ticketing-example: dependencies: '@astrojs/check': - specifier: ^0.8.1 - version: 0.8.2(prettier-plugin-astro@0.14.0)(prettier@3.3.3)(typescript@5.5.3) + specifier: ^0.8.2 + version: 0.8.2(prettier-plugin-astro@0.14.1)(prettier@3.3.3)(typescript@5.5.3) '@astrojs/db': specifier: workspace:* version: link:../../.. @@ -4857,7 +4857,7 @@ importers: version: 6.0.0 rehype-pretty-code: specifier: ^0.13.2 - version: 0.13.2(shiki@1.10.3) + version: 0.13.2(shiki@1.11.0) remark-math: specifier: ^6.0.0 version: 6.0.0 @@ -5294,8 +5294,8 @@ importers: specifier: ^18.3.1 version: 18.3.1(react@18.3.1) vue: - specifier: ^3.4.31 - version: 3.4.31(typescript@5.5.3) + specifier: ^3.4.33 + version: 3.4.33(typescript@5.5.3) packages/integrations/sitemap: dependencies: @@ -5418,7 +5418,7 @@ importers: specifier: workspace:* version: link:../../../scripts tailwindcss: - specifier: ^3.4.5 + specifier: ^3.4.6 version: 3.4.6 vite: specifier: ^5.3.4 @@ -5442,8 +5442,8 @@ importers: specifier: ^1.3.1 version: 1.3.1(react@18.3.1) '@vercel/edge': - specifier: ^1.1.1 - version: 1.1.1 + specifier: ^1.1.2 + version: 1.1.2 '@vercel/nft': specifier: ^0.27.3 version: 0.27.3 @@ -5666,16 +5666,16 @@ importers: dependencies: '@vitejs/plugin-vue': specifier: ^5.0.5 - version: 5.0.5(vite@5.3.4(@types/node@20.12.7)(sass@1.77.8))(vue@3.4.31(typescript@5.5.3)) + version: 5.0.5(vite@5.3.4(@types/node@20.12.7)(sass@1.77.8))(vue@3.4.33(typescript@5.5.3)) '@vitejs/plugin-vue-jsx': specifier: ^4.0.0 - version: 4.0.0(vite@5.3.4(@types/node@20.12.7)(sass@1.77.8))(vue@3.4.31(typescript@5.5.3)) + version: 4.0.0(vite@5.3.4(@types/node@20.12.7)(sass@1.77.8))(vue@3.4.33(typescript@5.5.3)) '@vue/compiler-sfc': - specifier: ^3.4.31 - version: 3.4.31 + specifier: ^3.4.33 + version: 3.4.33 vite-plugin-vue-devtools: specifier: ^7.3.6 - version: 7.3.6(rollup@4.18.1)(vite@5.3.4(@types/node@20.12.7)(sass@1.77.8))(vue@3.4.31(typescript@5.5.3)) + version: 7.3.6(rollup@4.19.0)(vite@5.3.4(@types/node@20.12.7)(sass@1.77.8))(vue@3.4.33(typescript@5.5.3)) devDependencies: astro: specifier: workspace:* @@ -5693,8 +5693,8 @@ importers: specifier: ^5.3.4 version: 5.3.4(@types/node@20.12.7)(sass@1.77.8) vue: - specifier: ^3.4.31 - version: 3.4.31(typescript@5.5.3) + specifier: ^3.4.33 + version: 3.4.33(typescript@5.5.3) packages/integrations/vue/test/fixtures/app-entrypoint: dependencies: @@ -5706,7 +5706,7 @@ importers: version: link:../../../../../astro vite-svg-loader: specifier: 5.1.0 - version: 5.1.0(vue@3.4.31(typescript@5.5.3)) + version: 5.1.0(vue@3.4.33(typescript@5.5.3)) packages/integrations/vue/test/fixtures/app-entrypoint-async: dependencies: @@ -5718,7 +5718,7 @@ importers: version: link:../../../../../astro vite-svg-loader: specifier: 5.1.0 - version: 5.1.0(vue@3.4.31(typescript@5.5.3)) + version: 5.1.0(vue@3.4.33(typescript@5.5.3)) packages/integrations/vue/test/fixtures/app-entrypoint-css: dependencies: @@ -5739,7 +5739,7 @@ importers: version: link:../../../../../astro vite-svg-loader: specifier: 5.1.0 - version: 5.1.0(vue@3.4.31(typescript@5.5.3)) + version: 5.1.0(vue@3.4.33(typescript@5.5.3)) packages/integrations/vue/test/fixtures/app-entrypoint-relative: dependencies: @@ -5771,8 +5771,8 @@ importers: packages/integrations/web-vitals: dependencies: web-vitals: - specifier: ^4.2.1 - version: 4.2.1 + specifier: ^4.2.2 + version: 4.2.2 devDependencies: '@astrojs/db': specifier: workspace:* @@ -5847,8 +5847,8 @@ importers: specifier: ^3.0.2 version: 3.0.2 shiki: - specifier: ^1.10.3 - version: 1.10.3 + specifier: ^1.11.0 + version: 1.11.0 unified: specifier: ^11.0.5 version: 11.0.5 @@ -5970,8 +5970,8 @@ importers: specifier: ^4.0.0 version: 4.0.0 semver: - specifier: ^7.6.2 - version: 7.6.2 + specifier: ^7.6.3 + version: 7.6.3 terminal-link: specifier: ^3.0.0 version: 3.0.0 @@ -6088,11 +6088,8 @@ packages: resolution: {integrity: sha512-bVzyKzEpIwqjihBU/aUzt1LQckJuHK0agd3/ITdXhPUYculrc6K1/K7H+XG4rwjXtg+ikT3PM05V1MVYWiIvQw==} engines: {node: '>=18.14.1'} - '@astrojs/compiler@1.8.2': - resolution: {integrity: sha512-o/ObKgtMzl8SlpIdzaxFnt7SATKPxu4oIP/1NL+HDJRzxfJcAkOTAb/ZKMRyULbz4q+1t2/DAebs2Z1QairkZw==} - - '@astrojs/compiler@2.9.1': - resolution: {integrity: sha512-s8Ge2lWHx/s3kl4UoerjL/iPtwdtogNM/BLOaGCwQA6crMOVYpphy5wUkYlKyuh8GAeGYH/5haLAFBsgNy9AQQ==} + '@astrojs/compiler@2.9.2': + resolution: {integrity: sha512-Vpu0Ffsj8SoV+N0DFHlxxOMKHwSC9059Xy/OlG1t6uFYSoJXxkBC2WyF6igO7x10V+8uJrhOxaXr3nA90kJXow==} '@astrojs/language-server@2.12.1': resolution: {integrity: sha512-CCibE6XwSmrZEKlPDr48LZJN7NWxOurOJK1yOzqZFMNV8Y6DIqF6s1e60gbNNHMZkthWYBNTPno4Ni/XyviinQ==} @@ -6883,8 +6880,8 @@ packages: '@fontsource/montserrat@5.0.18': resolution: {integrity: sha512-85JBs2rCdFK/VBdSb401e2lXk5gynVo2zi3Rh2Guem4WNtT2q52+V90o3KzjmajY3TPJvCZA/kI7R05ev7148g==} - '@fortawesome/fontawesome-free@6.5.2': - resolution: {integrity: sha512-hRILoInAx8GNT5IMkrtIt9blOdrqHOnPBH+k70aWUAqPZPgopb9G5EQJFpaBx/S8zp2fC+mPW349Bziuk1o28Q==} + '@fortawesome/fontawesome-free@6.6.0': + resolution: {integrity: sha512-60G28ke/sXdtS9KZCpZSHHkCbdsOGEhIUGlwq6yhY74UpTiToIh8np7A8yphhM4BWsvNFtIvLpi4co+h9Mr9Ow==} engines: {node: '>=6'} '@humanwhocodes/module-importer@1.0.1': @@ -7275,88 +7272,88 @@ packages: rollup: optional: true - '@rollup/rollup-android-arm-eabi@4.18.1': - resolution: {integrity: sha512-lncuC4aHicncmbORnx+dUaAgzee9cm/PbIqgWz1PpXuwc+sa1Ct83tnqUDy/GFKleLiN7ZIeytM6KJ4cAn1SxA==} + '@rollup/rollup-android-arm-eabi@4.19.0': + resolution: {integrity: sha512-JlPfZ/C7yn5S5p0yKk7uhHTTnFlvTgLetl2VxqE518QgyM7C9bSfFTYvB/Q/ftkq0RIPY4ySxTz+/wKJ/dXC0w==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.18.1': - resolution: {integrity: sha512-F/tkdw0WSs4ojqz5Ovrw5r9odqzFjb5LIgHdHZG65dFI1lWTWRVy32KDJLKRISHgJvqUeUhdIvy43fX41znyDg==} + '@rollup/rollup-android-arm64@4.19.0': + resolution: {integrity: sha512-RDxUSY8D1tWYfn00DDi5myxKgOk6RvWPxhmWexcICt/MEC6yEMr4HNCu1sXXYLw8iAsg0D44NuU+qNq7zVWCrw==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.18.1': - resolution: {integrity: sha512-vk+ma8iC1ebje/ahpxpnrfVQJibTMyHdWpOGZ3JpQ7Mgn/3QNHmPq7YwjZbIE7km73dH5M1e6MRRsnEBW7v5CQ==} + '@rollup/rollup-darwin-arm64@4.19.0': + resolution: {integrity: sha512-emvKHL4B15x6nlNTBMtIaC9tLPRpeA5jMvRLXVbl/W9Ie7HhkrE7KQjvgS9uxgatL1HmHWDXk5TTS4IaNJxbAA==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.18.1': - resolution: {integrity: sha512-IgpzXKauRe1Tafcej9STjSSuG0Ghu/xGYH+qG6JwsAUxXrnkvNHcq/NL6nz1+jzvWAnQkuAJ4uIwGB48K9OCGA==} + '@rollup/rollup-darwin-x64@4.19.0': + resolution: {integrity: sha512-fO28cWA1dC57qCd+D0rfLC4VPbh6EOJXrreBmFLWPGI9dpMlER2YwSPZzSGfq11XgcEpPukPTfEVFtw2q2nYJg==} cpu: [x64] os: [darwin] - '@rollup/rollup-linux-arm-gnueabihf@4.18.1': - resolution: {integrity: sha512-P9bSiAUnSSM7EmyRK+e5wgpqai86QOSv8BwvkGjLwYuOpaeomiZWifEos517CwbG+aZl1T4clSE1YqqH2JRs+g==} + '@rollup/rollup-linux-arm-gnueabihf@4.19.0': + resolution: {integrity: sha512-2Rn36Ubxdv32NUcfm0wB1tgKqkQuft00PtM23VqLuCUR4N5jcNWDoV5iBC9jeGdgS38WK66ElncprqgMUOyomw==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.18.1': - resolution: {integrity: sha512-5RnjpACoxtS+aWOI1dURKno11d7krfpGDEn19jI8BuWmSBbUC4ytIADfROM1FZrFhQPSoP+KEa3NlEScznBTyQ==} + '@rollup/rollup-linux-arm-musleabihf@4.19.0': + resolution: {integrity: sha512-gJuzIVdq/X1ZA2bHeCGCISe0VWqCoNT8BvkQ+BfsixXwTOndhtLUpOg0A1Fcx/+eA6ei6rMBzlOz4JzmiDw7JQ==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.18.1': - resolution: {integrity: sha512-8mwmGD668m8WaGbthrEYZ9CBmPug2QPGWxhJxh/vCgBjro5o96gL04WLlg5BA233OCWLqERy4YUzX3bJGXaJgQ==} + '@rollup/rollup-linux-arm64-gnu@4.19.0': + resolution: {integrity: sha512-0EkX2HYPkSADo9cfeGFoQ7R0/wTKb7q6DdwI4Yn/ULFE1wuRRCHybxpl2goQrx4c/yzK3I8OlgtBu4xvted0ug==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.18.1': - resolution: {integrity: sha512-dJX9u4r4bqInMGOAQoGYdwDP8lQiisWb9et+T84l2WXk41yEej8v2iGKodmdKimT8cTAYt0jFb+UEBxnPkbXEQ==} + '@rollup/rollup-linux-arm64-musl@4.19.0': + resolution: {integrity: sha512-GlIQRj9px52ISomIOEUq/IojLZqzkvRpdP3cLgIE1wUWaiU5Takwlzpz002q0Nxxr1y2ZgxC2obWxjr13lvxNQ==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-powerpc64le-gnu@4.18.1': - resolution: {integrity: sha512-V72cXdTl4EI0x6FNmho4D502sy7ed+LuVW6Ym8aI6DRQ9hQZdp5sj0a2usYOlqvFBNKQnLQGwmYnujo2HvjCxQ==} + '@rollup/rollup-linux-powerpc64le-gnu@4.19.0': + resolution: {integrity: sha512-N6cFJzssruDLUOKfEKeovCKiHcdwVYOT1Hs6dovDQ61+Y9n3Ek4zXvtghPPelt6U0AH4aDGnDLb83uiJMkWYzQ==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.18.1': - resolution: {integrity: sha512-f+pJih7sxoKmbjghrM2RkWo2WHUW8UbfxIQiWo5yeCaCM0TveMEuAzKJte4QskBp1TIinpnRcxkquY+4WuY/tg==} + '@rollup/rollup-linux-riscv64-gnu@4.19.0': + resolution: {integrity: sha512-2DnD3mkS2uuam/alF+I7M84koGwvn3ZVD7uG+LEWpyzo/bq8+kKnus2EVCkcvh6PlNB8QPNFOz6fWd5N8o1CYg==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.18.1': - resolution: {integrity: sha512-qb1hMMT3Fr/Qz1OKovCuUM11MUNLUuHeBC2DPPAWUYYUAOFWaxInaTwTQmc7Fl5La7DShTEpmYwgdt2hG+4TEg==} + '@rollup/rollup-linux-s390x-gnu@4.19.0': + resolution: {integrity: sha512-D6pkaF7OpE7lzlTOFCB2m3Ngzu2ykw40Nka9WmKGUOTS3xcIieHe82slQlNq69sVB04ch73thKYIWz/Ian8DUA==} cpu: [s390x] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.18.1': - resolution: {integrity: sha512-7O5u/p6oKUFYjRbZkL2FLbwsyoJAjyeXHCU3O4ndvzg2OFO2GinFPSJFGbiwFDaCFc+k7gs9CF243PwdPQFh5g==} + '@rollup/rollup-linux-x64-gnu@4.19.0': + resolution: {integrity: sha512-HBndjQLP8OsdJNSxpNIN0einbDmRFg9+UQeZV1eiYupIRuZsDEoeGU43NQsS34Pp166DtwQOnpcbV/zQxM+rWA==} cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.18.1': - resolution: {integrity: sha512-pDLkYITdYrH/9Cv/Vlj8HppDuLMDUBmgsM0+N+xLtFd18aXgM9Nyqupb/Uw+HeidhfYg2lD6CXvz6CjoVOaKjQ==} + '@rollup/rollup-linux-x64-musl@4.19.0': + resolution: {integrity: sha512-HxfbvfCKJe/RMYJJn0a12eiOI9OOtAUF4G6ozrFUK95BNyoJaSiBjIOHjZskTUffUrB84IPKkFG9H9nEvJGW6A==} cpu: [x64] os: [linux] - '@rollup/rollup-win32-arm64-msvc@4.18.1': - resolution: {integrity: sha512-W2ZNI323O/8pJdBGil1oCauuCzmVd9lDmWBBqxYZcOqWD6aWqJtVBQ1dFrF4dYpZPks6F+xCZHfzG5hYlSHZ6g==} + '@rollup/rollup-win32-arm64-msvc@4.19.0': + resolution: {integrity: sha512-HxDMKIhmcguGTiP5TsLNolwBUK3nGGUEoV/BO9ldUBoMLBssvh4J0X8pf11i1fTV7WShWItB1bKAKjX4RQeYmg==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.18.1': - resolution: {integrity: sha512-ELfEX1/+eGZYMaCIbK4jqLxO1gyTSOIlZr6pbC4SRYFaSIDVKOnZNMdoZ+ON0mrFDp4+H5MhwNC1H/AhE3zQLg==} + '@rollup/rollup-win32-ia32-msvc@4.19.0': + resolution: {integrity: sha512-xItlIAZZaiG/u0wooGzRsx11rokP4qyc/79LkAOdznGRAbOFc+SfEdfUOszG1odsHNgwippUJavag/+W/Etc6Q==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.18.1': - resolution: {integrity: sha512-yjk2MAkQmoaPYCSu35RLJ62+dz358nE83VfTePJRp8CG7aMg25mEJYpXFiD+NcevhX8LxD5OP5tktPXnXN7GDw==} + '@rollup/rollup-win32-x64-msvc@4.19.0': + resolution: {integrity: sha512-xNo5fV5ycvCCKqiZcpB65VMR11NJB+StnxHz20jdqRAktfdfzhgjTiJ2doTDQE/7dqGaV5I7ZGqKpgph6lCIag==} cpu: [x64] os: [win32] - '@shikijs/core@1.10.3': - resolution: {integrity: sha512-D45PMaBaeDHxww+EkcDQtDAtzv00Gcsp72ukBtaLSmqRvh0WgGMq3Al0rl1QQBZfuneO75NXMIzEZGFitThWbg==} + '@shikijs/core@1.11.0': + resolution: {integrity: sha512-VbEhDAhT/2ozO0TPr5/ZQBO/NWLqtk4ZiBf6NplYpF38mKjNfMMied5fNEfIfYfN+cdKvhDB4VMcKvG/g9c3zg==} '@sindresorhus/merge-streams@2.3.0': resolution: {integrity: sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==} @@ -7454,8 +7451,8 @@ packages: '@types/dlv@1.1.4': resolution: {integrity: sha512-m8KmImw4Jt+4rIgupwfivrWEOnj1LzkmKkqbh075uG13eTQ1ZxHWT6T0vIdSQhLIjQCiR0n0lZdtyDOPO1x2Mw==} - '@types/dom-view-transitions@1.0.4': - resolution: {integrity: sha512-oDuagM6G+xPLrLU4KeCKlr1oalMF5mJqV5pDPMDVIEaa8AkUW00i6u+5P02XCjdEEUQJC9dpnxqSLsZeAciSLQ==} + '@types/dom-view-transitions@1.0.5': + resolution: {integrity: sha512-N2sILR7fxSMnaFaAPwGj4DtHCXjIyQTHt+xJyf9jATpzUsTkMNM0DWtqZB6W7f501B/Y0tq3uqat/VlbjuTpMA==} '@types/estree-jsx@1.0.5': resolution: {integrity: sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==} @@ -7706,8 +7703,8 @@ packages: react: optional: true - '@vercel/edge@1.1.1': - resolution: {integrity: sha512-NtKiIbn9Cq6HWGy+qRudz28mz5nxfOJWls5Pnckjw1yCfSX8rhXdvY/il3Sy3Zd5n/sKCM2h7VSCCpJF/oaDrQ==} + '@vercel/edge@1.1.2': + resolution: {integrity: sha512-wt5SnhsMahWX8U9ZZhFUQoiXhMn/CUxA5xeMdZX1cwyOL1ZbDR3rNI8HRT9RSU73nDxeF6jlnqJyp/0Jy0VM2A==} '@vercel/nft@0.27.3': resolution: {integrity: sha512-oySTdDSzUAFDXpsSLk9Q943o+/Yu/+TCFxnehpFQEf/3khi2stMpTHPVNwFdvZq/Z4Ky93lE+MGHpXCRpMkSCA==} @@ -7800,14 +7797,20 @@ packages: '@vue/compiler-core@3.4.31': resolution: {integrity: sha512-skOiodXWTV3DxfDhB4rOf3OGalpITLlgCeOwb+Y9GJpfQ8ErigdBUHomBzvG78JoVE8MJoQsb+qhZiHfKeNeEg==} + '@vue/compiler-core@3.4.33': + resolution: {integrity: sha512-MoIREbkdPQlnGfSKDMgzTqzqx5nmEjIc0ydLVYlTACGBsfvOJ4tHSbZXKVF536n6fB+0eZaGEOqsGThPpdvF5A==} + '@vue/compiler-dom@3.4.31': resolution: {integrity: sha512-wK424WMXsG1IGMyDGyLqB+TbmEBFM78hIsOJ9QwUVLGrcSk0ak6zYty7Pj8ftm7nEtdU/DGQxAXp0/lM/2cEpQ==} - '@vue/compiler-sfc@3.4.31': - resolution: {integrity: sha512-einJxqEw8IIJxzmnxmJBuK2usI+lJonl53foq+9etB2HAzlPjAS/wa7r0uUpXw5ByX3/0uswVSrjNb17vJm1kQ==} + '@vue/compiler-dom@3.4.33': + resolution: {integrity: sha512-GzB8fxEHKw0gGet5BKlpfXEqoBnzSVWwMnT+dc25wE7pFEfrU/QsvjZMP9rD4iVXHBBoemTct8mN0GJEI6ZX5A==} + + '@vue/compiler-sfc@3.4.33': + resolution: {integrity: sha512-7rk7Vbkn21xMwIUpHQR4hCVejwE6nvhBOiDgoBcR03qvGqRKA7dCBSsHZhwhYUsmjlbJ7OtD5UFIyhP6BY+c8A==} - '@vue/compiler-ssr@3.4.31': - resolution: {integrity: sha512-RtefmITAje3fJ8FSg1gwgDhdKhZVntIVbwupdyZDSifZTRMiWxWehAOTCc8/KZDnBOcYQ4/9VWxsTbd3wT0hAA==} + '@vue/compiler-ssr@3.4.33': + resolution: {integrity: sha512-0WveC9Ai+eT/1b6LCV5IfsufBZ0HP7pSSTdDjcuW302tTEgoBw8rHVHKPbGUtzGReUFCRXbv6zQDDgucnV2WzQ==} '@vue/devtools-core@7.3.6': resolution: {integrity: sha512-XqFYVkyS3eySHF4bgLt+KF6yL6nYzVY/JTJHnK6KIJXIE4GIAxmn5Gxfsb4cUG9sl0FGiMqRCnM37Q+P08wr8A==} @@ -7823,19 +7826,19 @@ packages: '@vue/reactivity@3.1.5': resolution: {integrity: sha512-1tdfLmNjWG6t/CsPldh+foumYFo3cpyCHgBYQ34ylaMsJ+SNHQ1kApMIa8jN+i593zQuaw3AdWH0nJTARzCFhg==} - '@vue/reactivity@3.4.31': - resolution: {integrity: sha512-VGkTani8SOoVkZNds1PfJ/T1SlAIOf8E58PGAhIOUDYPC4GAmFA2u/E14TDAFcf3vVDKunc4QqCe/SHr8xC65Q==} + '@vue/reactivity@3.4.33': + resolution: {integrity: sha512-B24QIelahDbyHipBgbUItQblbd4w5HpG3KccL+YkGyo3maXyS253FzcTR3pSz739OTphmzlxP7JxEMWBpewilA==} - '@vue/runtime-core@3.4.31': - resolution: {integrity: sha512-LDkztxeUPazxG/p8c5JDDKPfkCDBkkiNLVNf7XZIUnJ+66GVGkP+TIh34+8LtPisZ+HMWl2zqhIw0xN5MwU1cw==} + '@vue/runtime-core@3.4.33': + resolution: {integrity: sha512-6wavthExzT4iAxpe8q37/rDmf44nyOJGISJPxCi9YsQO+8w9v0gLCFLfH5TzD1V1AYrTAdiF4Y1cgUmP68jP6w==} - '@vue/runtime-dom@3.4.31': - resolution: {integrity: sha512-2Auws3mB7+lHhTFCg8E9ZWopA6Q6L455EcU7bzcQ4x6Dn4cCPuqj6S2oBZgN2a8vJRS/LSYYxwFFq2Hlx3Fsaw==} + '@vue/runtime-dom@3.4.33': + resolution: {integrity: sha512-iHsMCUSFJ+4z432Bn9kZzHX+zOXa6+iw36DaVRmKYZpPt9jW9riF32SxNwB124i61kp9+AZtheQ/mKoJLerAaQ==} - '@vue/server-renderer@3.4.31': - resolution: {integrity: sha512-D5BLbdvrlR9PE3by9GaUp1gQXlCNadIZytMIb8H2h3FMWJd4oUfkUTEH2wAr3qxoRz25uxbTcbqd3WKlm9EHQA==} + '@vue/server-renderer@3.4.33': + resolution: {integrity: sha512-jTH0d6gQcaYideFP/k0WdEu8PpRS9MF8d0b6SfZzNi+ap972pZ0TNIeTaESwdOtdY0XPVj54XEJ6K0wXxir4fw==} peerDependencies: - vue: 3.4.31 + vue: 3.4.33 '@vue/shared@3.1.5': resolution: {integrity: sha512-oJ4F3TnvpXaQwZJNF3ZK+kLPHKarDmJjJ6jyzVNDKH9md1dptjC7lWR//jrGuLdek/U6iltWxqAnYOu8gCiOvA==} @@ -7843,6 +7846,9 @@ packages: '@vue/shared@3.4.31': resolution: {integrity: sha512-Yp3wtJk//8cO4NItOPpi3QkLExAr/aLBGZMmTtW9WpdwBCJpRM6zj9WgWktXAl8IDIozwNMByT45JP3tO3ACWA==} + '@vue/shared@3.4.33': + resolution: {integrity: sha512-aoRY0jQk3A/cuvdkodTrM4NMfxco8n55eG4H7ML/CRy7OryHfiqvug4xrCBBMbbN+dvXAetDDwZW9DXWWjBntA==} + '@webcomponents/template-shadowroot@0.2.1': resolution: {integrity: sha512-fXL/vIUakyZL62hyvUh+EMwbVoTc0hksublmRz6ai6et8znHkJa6gtqMUZo1oc7dIz46exHSIImml9QTdknMHg==} @@ -10500,8 +10506,8 @@ packages: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} - prettier-plugin-astro@0.14.0: - resolution: {integrity: sha512-7jRGJsexaRIyUzTk8uzXlP45cw6DQ5Ci4bTe0xCBCcuO1Fff8jJy9oI+kRCQKSdDFTSAArMSg8GpvzlKBtSaZA==} + prettier-plugin-astro@0.14.1: + resolution: {integrity: sha512-RiBETaaP9veVstE4vUwSIcdATj6dKmXljouXc/DDNwBSPTp8FRkLGDSGFClKsAFeeg+13SB0Z1JZvbD76bigJw==} engines: {node: ^14.15.0 || >=16.0.0} prettier@2.8.8: @@ -10762,8 +10768,8 @@ packages: engines: {node: '>=14'} hasBin: true - rollup@4.18.1: - resolution: {integrity: sha512-Elx2UT8lzxxOXMpy5HWQGZqkrQOtrVDDa/bm9l10+U4rQnVzbL/LgZ4NOM1MPIDyHk69W4InuYDF5dzRh4Kw1A==} + rollup@4.19.0: + resolution: {integrity: sha512-5r7EYSQIowHsK4eTZ0Y81qpZuJz+MUuYeqmmYmRMl1nwhdmbiYqt5jwzf6u7wyOzJgYqtCRMtVRKOtHANBz7rA==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -10828,6 +10834,11 @@ packages: engines: {node: '>=10'} hasBin: true + semver@7.6.3: + resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} + engines: {node: '>=10'} + hasBin: true + send@0.18.0: resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} engines: {node: '>= 0.8.0'} @@ -10893,8 +10904,8 @@ packages: shiki@0.10.1: resolution: {integrity: sha512-VsY7QJVzU51j5o1+DguUd+6vmCmZ5v/6gYu4vyYAhzjuNQU6P/vmSy4uQaOhvje031qQMiW0d2BwgMH52vqMng==} - shiki@1.10.3: - resolution: {integrity: sha512-eneCLncGuvPdTutJuLyUGS8QNPAVFO5Trvld2wgEq1e002mwctAhJKeMGWtWVXOIEzmlcLRqcgPSorR6AVzOmQ==} + shiki@1.11.0: + resolution: {integrity: sha512-NqH/O1zRHvnuk/WfSL6b7+DtI7/kkMMSQGlZhm9DyzSU+SoIHhaw/fBZMr+zp9R8KjdIzkk3JKSC6hORuGDyng==} side-channel@1.0.6: resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} @@ -11674,9 +11685,6 @@ packages: vscode-css-languageservice@6.3.0: resolution: {integrity: sha512-nU92imtkgzpCL0xikrIb8WvedV553F2BENzgz23wFuok/HLN5BeQmroMy26pUwFxV2eV8oNRmYCUv8iO7kSMhw==} - vscode-html-languageservice@5.2.0: - resolution: {integrity: sha512-cdNMhyw57/SQzgUUGSIMQ66jikqEN6nBNyhx5YuOyj9310+eY9zw8Q0cXpiKzDX8aHYFewQEXRnigl06j/TVwQ==} - vscode-html-languageservice@5.3.0: resolution: {integrity: sha512-C4Z3KsP5Ih+fjHpiBc5jxmvCl+4iEwvXegIrzu2F5pktbWvQaBT3YkVPk8N+QlSSMk8oCG6PKtZ/Sq2YHb5e8g==} @@ -11712,8 +11720,8 @@ packages: vscode-uri@3.0.8: resolution: {integrity: sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==} - vue@3.4.31: - resolution: {integrity: sha512-njqRrOy7W3YLAlVqSKpBebtZpDVg21FPoaq1I7f/+qqBThK9ChAIjkRWgeP6Eat+8C+iia4P3OYqpATP21BCoQ==} + vue@3.4.33: + resolution: {integrity: sha512-VdMCWQOummbhctl4QFMcW6eNtXHsFyDlX60O/tsSQuCcuDOnJ1qPOhhVla65Niece7xq/P2zyZReIO5mP+LGTQ==} peerDependencies: typescript: '*' peerDependenciesMeta: @@ -11734,8 +11742,8 @@ packages: web-vitals@3.5.2: resolution: {integrity: sha512-c0rhqNcHXRkY/ogGDJQxZ9Im9D19hDihbzSQJrsioex+KnFgmMzBiy57Z1EjkhX/+OjyBpclDCzz2ITtjokFmg==} - web-vitals@4.2.1: - resolution: {integrity: sha512-U6bAxeudnhDqcXNl50JC4hLlqox9DZnngxfISZm3DMZnonW35xtJOVUc091L+DOY+6hVZVpKXoiCP0RiT6339Q==} + web-vitals@4.2.2: + resolution: {integrity: sha512-nYfoOqb4EmElljyXU2qdeE76KsvoHdftQKY4DzA9Aw8DervCg2bG634pHLrJ/d6+B4mE3nWTSJv8Mo7B2mbZkw==} webidl-conversions@3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} @@ -11950,9 +11958,9 @@ snapshots: astro: link:packages/astro lite-youtube-embed: 0.3.2 - '@astrojs/check@0.8.2(prettier-plugin-astro@0.14.0)(prettier@3.3.3)(typescript@5.5.3)': + '@astrojs/check@0.8.2(prettier-plugin-astro@0.14.1)(prettier@3.3.3)(typescript@5.5.3)': dependencies: - '@astrojs/language-server': 2.12.1(prettier-plugin-astro@0.14.0)(prettier@3.3.3)(typescript@5.5.3) + '@astrojs/language-server': 2.12.1(prettier-plugin-astro@0.14.1)(prettier@3.3.3)(typescript@5.5.3) chokidar: 3.6.0 fast-glob: 3.3.2 kleur: 4.1.5 @@ -11968,13 +11976,11 @@ snapshots: log-update: 5.0.1 sisteransi: 1.0.5 - '@astrojs/compiler@1.8.2': {} - - '@astrojs/compiler@2.9.1': {} + '@astrojs/compiler@2.9.2': {} - '@astrojs/language-server@2.12.1(prettier-plugin-astro@0.14.0)(prettier@3.3.3)(typescript@5.5.3)': + '@astrojs/language-server@2.12.1(prettier-plugin-astro@0.14.1)(prettier@3.3.3)(typescript@5.5.3)': dependencies: - '@astrojs/compiler': 2.9.1 + '@astrojs/compiler': 2.9.2 '@jridgewell/sourcemap-codec': 1.4.15 '@volar/kit': 2.4.0-alpha.16(typescript@5.5.3) '@volar/language-core': 2.4.0-alpha.16 @@ -11989,11 +11995,11 @@ snapshots: volar-service-prettier: 0.0.59(@volar/language-service@2.4.0-alpha.16)(prettier@3.3.3) volar-service-typescript: 0.0.59(@volar/language-service@2.4.0-alpha.16) volar-service-typescript-twoslash-queries: 0.0.59(@volar/language-service@2.4.0-alpha.16) - vscode-html-languageservice: 5.2.0 + vscode-html-languageservice: 5.3.0 vscode-uri: 3.0.8 optionalDependencies: prettier: 3.3.3 - prettier-plugin-astro: 0.14.0 + prettier-plugin-astro: 0.14.1 transitivePeerDependencies: - typescript @@ -12337,7 +12343,7 @@ snapshots: outdent: 0.5.0 prettier: 2.8.8 resolve-from: 5.0.0 - semver: 7.6.2 + semver: 7.6.3 '@changesets/assemble-release-plan@6.0.3': dependencies: @@ -12347,7 +12353,7 @@ snapshots: '@changesets/should-skip-package': 0.1.0 '@changesets/types': 6.0.0 '@manypkg/get-packages': 1.1.3 - semver: 7.6.2 + semver: 7.6.3 '@changesets/changelog-git@0.2.0': dependencies: @@ -12392,7 +12398,7 @@ snapshots: p-limit: 2.3.0 preferred-pm: 3.1.3 resolve-from: 5.0.0 - semver: 7.6.2 + semver: 7.6.3 spawndamnit: 2.0.0 term-size: 2.2.1 @@ -12416,7 +12422,7 @@ snapshots: '@manypkg/get-packages': 1.1.3 chalk: 2.4.2 fs-extra: 7.0.1 - semver: 7.6.2 + semver: 7.6.3 '@changesets/get-github-info@0.6.0': dependencies: @@ -12881,7 +12887,7 @@ snapshots: '@fontsource/montserrat@5.0.18': {} - '@fortawesome/fontawesome-free@6.5.2': {} + '@fortawesome/fontawesome-free@6.6.0': {} '@humanwhocodes/module-importer@1.0.1': {} @@ -13117,7 +13123,7 @@ snapshots: nopt: 5.0.0 npmlog: 5.0.1 rimraf: 3.0.2 - semver: 7.6.2 + semver: 7.6.3 tar: 6.2.1 transitivePeerDependencies: - encoding @@ -13305,63 +13311,63 @@ snapshots: estree-walker: 2.0.2 picomatch: 2.3.1 - '@rollup/pluginutils@5.1.0(rollup@4.18.1)': + '@rollup/pluginutils@5.1.0(rollup@4.19.0)': dependencies: '@types/estree': 1.0.5 estree-walker: 2.0.2 picomatch: 2.3.1 optionalDependencies: - rollup: 4.18.1 + rollup: 4.19.0 - '@rollup/rollup-android-arm-eabi@4.18.1': + '@rollup/rollup-android-arm-eabi@4.19.0': optional: true - '@rollup/rollup-android-arm64@4.18.1': + '@rollup/rollup-android-arm64@4.19.0': optional: true - '@rollup/rollup-darwin-arm64@4.18.1': + '@rollup/rollup-darwin-arm64@4.19.0': optional: true - '@rollup/rollup-darwin-x64@4.18.1': + '@rollup/rollup-darwin-x64@4.19.0': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.18.1': + '@rollup/rollup-linux-arm-gnueabihf@4.19.0': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.18.1': + '@rollup/rollup-linux-arm-musleabihf@4.19.0': optional: true - '@rollup/rollup-linux-arm64-gnu@4.18.1': + '@rollup/rollup-linux-arm64-gnu@4.19.0': optional: true - '@rollup/rollup-linux-arm64-musl@4.18.1': + '@rollup/rollup-linux-arm64-musl@4.19.0': optional: true - '@rollup/rollup-linux-powerpc64le-gnu@4.18.1': + '@rollup/rollup-linux-powerpc64le-gnu@4.19.0': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.18.1': + '@rollup/rollup-linux-riscv64-gnu@4.19.0': optional: true - '@rollup/rollup-linux-s390x-gnu@4.18.1': + '@rollup/rollup-linux-s390x-gnu@4.19.0': optional: true - '@rollup/rollup-linux-x64-gnu@4.18.1': + '@rollup/rollup-linux-x64-gnu@4.19.0': optional: true - '@rollup/rollup-linux-x64-musl@4.18.1': + '@rollup/rollup-linux-x64-musl@4.19.0': optional: true - '@rollup/rollup-win32-arm64-msvc@4.18.1': + '@rollup/rollup-win32-arm64-msvc@4.19.0': optional: true - '@rollup/rollup-win32-ia32-msvc@4.18.1': + '@rollup/rollup-win32-ia32-msvc@4.19.0': optional: true - '@rollup/rollup-win32-x64-msvc@4.18.1': + '@rollup/rollup-win32-x64-msvc@4.19.0': optional: true - '@shikijs/core@1.10.3': + '@shikijs/core@1.11.0': dependencies: '@types/hast': 3.0.4 @@ -13473,7 +13479,7 @@ snapshots: '@types/dlv@1.1.4': {} - '@types/dom-view-transitions@1.0.4': {} + '@types/dom-view-transitions@1.0.5': {} '@types/estree-jsx@1.0.5': dependencies: @@ -13712,7 +13718,7 @@ snapshots: globby: 11.1.0 is-glob: 4.0.3 minimatch: 9.0.4 - semver: 7.6.2 + semver: 7.6.3 ts-api-utils: 1.3.0(typescript@5.5.3) optionalDependencies: typescript: 5.5.3 @@ -13763,7 +13769,7 @@ snapshots: optionalDependencies: react: 18.3.1 - '@vercel/edge@1.1.1': {} + '@vercel/edge@1.1.2': {} '@vercel/nft@0.27.3': dependencies: @@ -13794,20 +13800,20 @@ snapshots: transitivePeerDependencies: - supports-color - '@vitejs/plugin-vue-jsx@4.0.0(vite@5.3.4(@types/node@20.12.7)(sass@1.77.8))(vue@3.4.31(typescript@5.5.3))': + '@vitejs/plugin-vue-jsx@4.0.0(vite@5.3.4(@types/node@20.12.7)(sass@1.77.8))(vue@3.4.33(typescript@5.5.3))': dependencies: '@babel/core': 7.24.9 '@babel/plugin-transform-typescript': 7.24.7(@babel/core@7.24.9) '@vue/babel-plugin-jsx': 1.2.2(@babel/core@7.24.9) vite: 5.3.4(@types/node@20.12.7)(sass@1.77.8) - vue: 3.4.31(typescript@5.5.3) + vue: 3.4.33(typescript@5.5.3) transitivePeerDependencies: - supports-color - '@vitejs/plugin-vue@5.0.5(vite@5.3.4(@types/node@20.12.7)(sass@1.77.8))(vue@3.4.31(typescript@5.5.3))': + '@vitejs/plugin-vue@5.0.5(vite@5.3.4(@types/node@20.12.7)(sass@1.77.8))(vue@3.4.33(typescript@5.5.3))': dependencies: vite: 5.3.4(@types/node@20.12.7)(sass@1.77.8) - vue: 3.4.31(typescript@5.5.3) + vue: 3.4.33(typescript@5.5.3) '@vitest/expect@2.0.3': dependencies: @@ -13925,7 +13931,7 @@ snapshots: '@babel/helper-module-imports': 7.22.15 '@babel/helper-plugin-utils': 7.24.7 '@babel/parser': 7.24.8 - '@vue/compiler-sfc': 3.4.31 + '@vue/compiler-sfc': 3.4.33 '@vue/compiler-core@3.4.31': dependencies: @@ -13935,29 +13941,42 @@ snapshots: estree-walker: 2.0.2 source-map-js: 1.2.0 + '@vue/compiler-core@3.4.33': + dependencies: + '@babel/parser': 7.24.8 + '@vue/shared': 3.4.33 + entities: 4.5.0 + estree-walker: 2.0.2 + source-map-js: 1.2.0 + '@vue/compiler-dom@3.4.31': dependencies: '@vue/compiler-core': 3.4.31 '@vue/shared': 3.4.31 - '@vue/compiler-sfc@3.4.31': + '@vue/compiler-dom@3.4.33': + dependencies: + '@vue/compiler-core': 3.4.33 + '@vue/shared': 3.4.33 + + '@vue/compiler-sfc@3.4.33': dependencies: '@babel/parser': 7.24.8 - '@vue/compiler-core': 3.4.31 - '@vue/compiler-dom': 3.4.31 - '@vue/compiler-ssr': 3.4.31 - '@vue/shared': 3.4.31 + '@vue/compiler-core': 3.4.33 + '@vue/compiler-dom': 3.4.33 + '@vue/compiler-ssr': 3.4.33 + '@vue/shared': 3.4.33 estree-walker: 2.0.2 magic-string: 0.30.10 postcss: 8.4.39 source-map-js: 1.2.0 - '@vue/compiler-ssr@3.4.31': + '@vue/compiler-ssr@3.4.33': dependencies: - '@vue/compiler-dom': 3.4.31 - '@vue/shared': 3.4.31 + '@vue/compiler-dom': 3.4.33 + '@vue/shared': 3.4.33 - '@vue/devtools-core@7.3.6(vite@5.3.4(@types/node@20.12.7)(sass@1.77.8))(vue@3.4.31(typescript@5.5.3))': + '@vue/devtools-core@7.3.6(vite@5.3.4(@types/node@20.12.7)(sass@1.77.8))(vue@3.4.33(typescript@5.5.3))': dependencies: '@vue/devtools-kit': 7.3.6 '@vue/devtools-shared': 7.3.6 @@ -13965,7 +13984,7 @@ snapshots: nanoid: 3.3.7 pathe: 1.1.2 vite-hot-client: 0.2.3(vite@5.3.4(@types/node@20.12.7)(sass@1.77.8)) - vue: 3.4.31(typescript@5.5.3) + vue: 3.4.33(typescript@5.5.3) transitivePeerDependencies: - vite @@ -13987,32 +14006,34 @@ snapshots: dependencies: '@vue/shared': 3.1.5 - '@vue/reactivity@3.4.31': + '@vue/reactivity@3.4.33': dependencies: - '@vue/shared': 3.4.31 + '@vue/shared': 3.4.33 - '@vue/runtime-core@3.4.31': + '@vue/runtime-core@3.4.33': dependencies: - '@vue/reactivity': 3.4.31 - '@vue/shared': 3.4.31 + '@vue/reactivity': 3.4.33 + '@vue/shared': 3.4.33 - '@vue/runtime-dom@3.4.31': + '@vue/runtime-dom@3.4.33': dependencies: - '@vue/reactivity': 3.4.31 - '@vue/runtime-core': 3.4.31 - '@vue/shared': 3.4.31 + '@vue/reactivity': 3.4.33 + '@vue/runtime-core': 3.4.33 + '@vue/shared': 3.4.33 csstype: 3.1.3 - '@vue/server-renderer@3.4.31(vue@3.4.31(typescript@5.5.3))': + '@vue/server-renderer@3.4.33(vue@3.4.33(typescript@5.5.3))': dependencies: - '@vue/compiler-ssr': 3.4.31 - '@vue/shared': 3.4.31 - vue: 3.4.31(typescript@5.5.3) + '@vue/compiler-ssr': 3.4.33 + '@vue/shared': 3.4.33 + vue: 3.4.33(typescript@5.5.3) '@vue/shared@3.1.5': {} '@vue/shared@3.4.31': {} + '@vue/shared@3.4.33': {} + '@webcomponents/template-shadowroot@0.2.1': {} abbrev@1.1.1: {} @@ -17079,9 +17100,9 @@ snapshots: prelude-ls@1.2.1: {} - prettier-plugin-astro@0.14.0: + prettier-plugin-astro@0.14.1: dependencies: - '@astrojs/compiler': 1.8.2 + '@astrojs/compiler': 2.9.2 prettier: 3.3.3 sass-formatter: 0.7.9 @@ -17220,7 +17241,7 @@ snapshots: hast-util-from-html: 2.0.1 unified: 11.0.5 - rehype-pretty-code@0.13.2(shiki@1.10.3): + rehype-pretty-code@0.13.2(shiki@1.11.0): dependencies: '@types/hast': 3.0.4 hast-util-to-string: 3.0.0 @@ -17229,7 +17250,7 @@ snapshots: unified: 11.0.5 unist-util-visit: 5.0.0 optionalDependencies: - shiki: 1.10.3 + shiki: 1.11.0 rehype-raw@7.0.0: dependencies: @@ -17409,26 +17430,26 @@ snapshots: dependencies: glob: 10.3.12 - rollup@4.18.1: + rollup@4.19.0: dependencies: '@types/estree': 1.0.5 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.18.1 - '@rollup/rollup-android-arm64': 4.18.1 - '@rollup/rollup-darwin-arm64': 4.18.1 - '@rollup/rollup-darwin-x64': 4.18.1 - '@rollup/rollup-linux-arm-gnueabihf': 4.18.1 - '@rollup/rollup-linux-arm-musleabihf': 4.18.1 - '@rollup/rollup-linux-arm64-gnu': 4.18.1 - '@rollup/rollup-linux-arm64-musl': 4.18.1 - '@rollup/rollup-linux-powerpc64le-gnu': 4.18.1 - '@rollup/rollup-linux-riscv64-gnu': 4.18.1 - '@rollup/rollup-linux-s390x-gnu': 4.18.1 - '@rollup/rollup-linux-x64-gnu': 4.18.1 - '@rollup/rollup-linux-x64-musl': 4.18.1 - '@rollup/rollup-win32-arm64-msvc': 4.18.1 - '@rollup/rollup-win32-ia32-msvc': 4.18.1 - '@rollup/rollup-win32-x64-msvc': 4.18.1 + '@rollup/rollup-android-arm-eabi': 4.19.0 + '@rollup/rollup-android-arm64': 4.19.0 + '@rollup/rollup-darwin-arm64': 4.19.0 + '@rollup/rollup-darwin-x64': 4.19.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.19.0 + '@rollup/rollup-linux-arm-musleabihf': 4.19.0 + '@rollup/rollup-linux-arm64-gnu': 4.19.0 + '@rollup/rollup-linux-arm64-musl': 4.19.0 + '@rollup/rollup-linux-powerpc64le-gnu': 4.19.0 + '@rollup/rollup-linux-riscv64-gnu': 4.19.0 + '@rollup/rollup-linux-s390x-gnu': 4.19.0 + '@rollup/rollup-linux-x64-gnu': 4.19.0 + '@rollup/rollup-linux-x64-musl': 4.19.0 + '@rollup/rollup-win32-arm64-msvc': 4.19.0 + '@rollup/rollup-win32-ia32-msvc': 4.19.0 + '@rollup/rollup-win32-x64-msvc': 4.19.0 fsevents: 2.3.3 rrweb-cssom@0.6.0: {} @@ -17484,6 +17505,8 @@ snapshots: semver@7.6.2: {} + semver@7.6.3: {} + send@0.18.0: dependencies: debug: 2.6.9 @@ -17590,9 +17613,9 @@ snapshots: vscode-oniguruma: 1.7.0 vscode-textmate: 5.2.0 - shiki@1.10.3: + shiki@1.11.0: dependencies: - '@shikijs/core': 1.10.3 + '@shikijs/core': 1.11.0 '@types/hast': 3.0.4 side-channel@1.0.6: @@ -18048,7 +18071,7 @@ snapshots: typescript-auto-import-cache@0.3.3: dependencies: - semver: 7.6.2 + semver: 7.6.3 typescript-eslint@7.16.1(eslint@9.7.0)(typescript@5.5.3): dependencies: @@ -18255,10 +18278,10 @@ snapshots: - supports-color - terser - vite-plugin-inspect@0.8.4(rollup@4.18.1)(vite@5.3.4(@types/node@20.12.7)(sass@1.77.8)): + vite-plugin-inspect@0.8.4(rollup@4.19.0)(vite@5.3.4(@types/node@20.12.7)(sass@1.77.8)): dependencies: '@antfu/utils': 0.7.8 - '@rollup/pluginutils': 5.1.0(rollup@4.18.1) + '@rollup/pluginutils': 5.1.0(rollup@4.19.0) debug: 4.3.5 error-stack-parser-es: 0.1.1 fs-extra: 11.2.0 @@ -18284,15 +18307,15 @@ snapshots: transitivePeerDependencies: - supports-color - vite-plugin-vue-devtools@7.3.6(rollup@4.18.1)(vite@5.3.4(@types/node@20.12.7)(sass@1.77.8))(vue@3.4.31(typescript@5.5.3)): + vite-plugin-vue-devtools@7.3.6(rollup@4.19.0)(vite@5.3.4(@types/node@20.12.7)(sass@1.77.8))(vue@3.4.33(typescript@5.5.3)): dependencies: - '@vue/devtools-core': 7.3.6(vite@5.3.4(@types/node@20.12.7)(sass@1.77.8))(vue@3.4.31(typescript@5.5.3)) + '@vue/devtools-core': 7.3.6(vite@5.3.4(@types/node@20.12.7)(sass@1.77.8))(vue@3.4.33(typescript@5.5.3)) '@vue/devtools-kit': 7.3.6 '@vue/devtools-shared': 7.3.6 execa: 8.0.1 sirv: 2.0.4 vite: 5.3.4(@types/node@20.12.7)(sass@1.77.8) - vite-plugin-inspect: 0.8.4(rollup@4.18.1)(vite@5.3.4(@types/node@20.12.7)(sass@1.77.8)) + vite-plugin-inspect: 0.8.4(rollup@4.19.0)(vite@5.3.4(@types/node@20.12.7)(sass@1.77.8)) vite-plugin-vue-inspector: 5.1.2(vite@5.3.4(@types/node@20.12.7)(sass@1.77.8)) transitivePeerDependencies: - '@nuxt/kit' @@ -18315,17 +18338,17 @@ snapshots: transitivePeerDependencies: - supports-color - vite-svg-loader@5.1.0(vue@3.4.31(typescript@5.5.3)): + vite-svg-loader@5.1.0(vue@3.4.33(typescript@5.5.3)): dependencies: svgo: 3.2.0 optionalDependencies: - vue: 3.4.31(typescript@5.5.3) + vue: 3.4.33(typescript@5.5.3) vite@5.3.4(@types/node@20.12.7)(sass@1.77.8): dependencies: esbuild: 0.21.5 postcss: 8.4.39 - rollup: 4.18.1 + rollup: 4.19.0 optionalDependencies: '@types/node': 20.12.7 fsevents: 2.3.3 @@ -18409,7 +18432,7 @@ snapshots: volar-service-typescript@0.0.59(@volar/language-service@2.4.0-alpha.16): dependencies: path-browserify: 1.0.1 - semver: 7.6.2 + semver: 7.6.3 typescript-auto-import-cache: 0.3.3 vscode-languageserver-textdocument: 1.0.11 vscode-nls: 5.2.0 @@ -18424,13 +18447,6 @@ snapshots: vscode-languageserver-types: 3.17.5 vscode-uri: 3.0.8 - vscode-html-languageservice@5.2.0: - dependencies: - '@vscode/l10n': 0.0.18 - vscode-languageserver-textdocument: 1.0.11 - vscode-languageserver-types: 3.17.5 - vscode-uri: 3.0.8 - vscode-html-languageservice@5.3.0: dependencies: '@vscode/l10n': 0.0.18 @@ -18463,13 +18479,13 @@ snapshots: vscode-uri@3.0.8: {} - vue@3.4.31(typescript@5.5.3): + vue@3.4.33(typescript@5.5.3): dependencies: - '@vue/compiler-dom': 3.4.31 - '@vue/compiler-sfc': 3.4.31 - '@vue/runtime-dom': 3.4.31 - '@vue/server-renderer': 3.4.31(vue@3.4.31(typescript@5.5.3)) - '@vue/shared': 3.4.31 + '@vue/compiler-dom': 3.4.33 + '@vue/compiler-sfc': 3.4.33 + '@vue/runtime-dom': 3.4.33 + '@vue/server-renderer': 3.4.33(vue@3.4.33(typescript@5.5.3)) + '@vue/shared': 3.4.33 optionalDependencies: typescript: 5.5.3 @@ -18483,7 +18499,7 @@ snapshots: web-vitals@3.5.2: {} - web-vitals@4.2.1: {} + web-vitals@4.2.2: {} webidl-conversions@3.0.1: {} From f093238078f593e774fa5ce9ee9b56f89485652e Mon Sep 17 00:00:00 2001 From: Matt Kane Date: Wed, 24 Jul 2024 11:23:20 +0100 Subject: [PATCH 13/34] Clean content layer with `--force` (#11541) * Clearn content layer with `--force` * Add tests * Document --force flag --- packages/astro/src/cli/build/index.ts | 4 ++ packages/astro/src/core/build/index.ts | 21 +++++++--- packages/astro/test/content-layer.test.js | 17 +++++++- .../content-layer/src/content/config.ts | 40 ++++++++++++++----- .../src/pages/collections.json.js | 4 +- packages/astro/test/test-utils.js | 7 +++- 6 files changed, 73 insertions(+), 20 deletions(-) diff --git a/packages/astro/src/cli/build/index.ts b/packages/astro/src/cli/build/index.ts index 15ff584317d9..63c2f0d0e1c5 100644 --- a/packages/astro/src/cli/build/index.ts +++ b/packages/astro/src/cli/build/index.ts @@ -15,6 +15,10 @@ export async function build({ flags }: BuildOptions) { tables: { Flags: [ ['--outDir ', `Specify the output directory for the build.`], + [ + '--force', + 'Clear the content layer and content collection cache, forcing a full rebuild.', + ], ['--help (-h)', 'See all available flags.'], ], }, diff --git a/packages/astro/src/core/build/index.ts b/packages/astro/src/core/build/index.ts index 9989c01548ae..a55667c421dd 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 { DATA_STORE_FILE } from '../../content/consts.js'; import { telemetry } from '../../events/index.js'; import { eventCliSession } from '../../events/session.js'; import { @@ -67,12 +68,20 @@ export default async function build( const logger = createNodeLogger(inlineConfig); const { userConfig, astroConfig } = await resolveConfig(inlineConfig, 'build'); telemetry.record(eventCliSession('build', userConfig)); - if (astroConfig.experimental.contentCollectionCache && options.force) { - const contentCacheDir = new URL('./content/', astroConfig.cacheDir); - if (fs.existsSync(contentCacheDir)) { - logger.debug('content', 'clearing content cache'); - await fs.promises.rm(contentCacheDir, { force: true, recursive: true }); - logger.warn('content', 'content cache cleared (force)'); + if (options.force) { + if (astroConfig.experimental.contentCollectionCache) { + const contentCacheDir = new URL('./content/', astroConfig.cacheDir); + if (fs.existsSync(contentCacheDir)) { + logger.debug('content', 'clearing content cache'); + await fs.promises.rm(contentCacheDir, { force: true, recursive: true }); + logger.warn('content', 'content cache cleared (force)'); + } + } + const dataStore = new URL(DATA_STORE_FILE, astroConfig.cacheDir); + if (fs.existsSync(dataStore)) { + logger.debug('content', 'clearing data store'); + await fs.promises.rm(dataStore, { force: true }); + logger.warn('content', 'data store cleared (force)'); } } diff --git a/packages/astro/test/content-layer.test.js b/packages/astro/test/content-layer.test.js index e7b607a8c574..be856ba4d3f0 100644 --- a/packages/astro/test/content-layer.test.js +++ b/packages/astro/test/content-layer.test.js @@ -20,7 +20,7 @@ describe('Content Layer', () => { await fs .unlink(new URL('./node_modules/.astro/data-store.json', fixture.config.root)) .catch(() => {}); - await fixture.build({}); + await fixture.build(); const rawJson = await fixture.readFile('/collections.json'); json = JSON.parse(rawJson); }); @@ -133,6 +133,21 @@ describe('Content Layer', () => { id: 'tabby', }); }); + + it('updates the store on new builds', async () => { + assert.equal(json.increment.data.lastValue, 1); + await fixture.build(); + const newJson = JSON.parse(await fixture.readFile('/collections.json')); + assert.equal(newJson.increment.data.lastValue, 2); + }); + + it('clears the store on new build with force flag', async () => { + let newJson = JSON.parse(await fixture.readFile('/collections.json')); + assert.equal(newJson.increment.data.lastValue, 2); + await fixture.build({}, { force: true }); + newJson = JSON.parse(await fixture.readFile('/collections.json')); + assert.equal(newJson.increment.data.lastValue, 1); + }); }); describe('Dev', () => { 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 38b6bc52644f..fd9dd5ad7c9a 100644 --- a/packages/astro/test/fixtures/content-layer/src/content/config.ts +++ b/packages/astro/test/fixtures/content-layer/src/content/config.ts @@ -69,21 +69,21 @@ const cats = defineCollection({ }), }); - // Absolute paths should also work const absoluteRoot = new URL('../../content-outside-src', import.meta.url); const spacecraft = defineCollection({ type: 'experimental_content', 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(), - cat: reference('cats').optional(), - }), + schema: ({ image }) => + z.object({ + title: z.string(), + description: z.string(), + publishedDate: z.string(), + tags: z.array(z.string()), + heroImage: image().optional(), + cat: reference('cats').optional(), + }), }); const numbers = defineCollection({ @@ -91,4 +91,24 @@ const numbers = defineCollection({ loader: glob({ pattern: 'src/data/glob-data/*', base: '.' }), }); -export const collections = { blog, dogs, cats, numbers, spacecraft }; +const increment = defineCollection({ + type: 'experimental_data', + loader: { + name: 'increment-loader', + load: async ({ store }) => { + const entry = store.get<{ lastValue: number }>('value'); + const lastValue: number = entry?.data.lastValue ?? 0; + store.set({ + id: 'value', + data: { + lastValue: lastValue + 1, + }, + }); + }, + }, + schema: z.object({ + lastValue: z.number(), + }), +}); + +export const collections = { blog, dogs, cats, numbers, spacecraft, increment }; 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 43e4df23005c..618377dae4ff 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 @@ -11,5 +11,7 @@ export async function GET() { const entryWithReference = await getEntry('spacecraft', 'columbia-copy') const referencedEntry = await getEntry(entryWithReference.data.cat) - return Response.json({ customLoader, fileLoader, dataEntry, simpleLoader, entryWithReference, referencedEntry }); + const increment = await getEntry('increment', 'value') + + return Response.json({ customLoader, fileLoader, dataEntry, simpleLoader, entryWithReference, referencedEntry, increment }); } diff --git a/packages/astro/test/test-utils.js b/packages/astro/test/test-utils.js index acb2f1e5cba0..d3cdb30d2527 100644 --- a/packages/astro/test/test-utils.js +++ b/packages/astro/test/test-utils.js @@ -157,9 +157,12 @@ export async function loadFixture(inlineConfig) { let devServer; return { - build: async (extraInlineConfig = {}) => { + build: async (extraInlineConfig = {}, options = {}) => { process.env.NODE_ENV = 'production'; - return build(mergeConfig(inlineConfig, extraInlineConfig), { teardownCompiler: false }); + return build(mergeConfig(inlineConfig, extraInlineConfig), { + teardownCompiler: false, + ...options, + }); }, sync, check: async (opts) => { From bb36a2d8b3d0bd6915fb4f90a73d19d5a557d8dc Mon Sep 17 00:00:00 2001 From: Matt Kane Date: Fri, 26 Jul 2024 10:46:09 +0100 Subject: [PATCH 14/34] Fixes to content layer render types (#11558) --- packages/astro/src/content/data-store.ts | 4 +++- packages/astro/src/content/types-generator.ts | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/astro/src/content/data-store.ts b/packages/astro/src/content/data-store.ts index 66c7b171f265..218101560a0c 100644 --- a/packages/astro/src/content/data-store.ts +++ b/packages/astro/src/content/data-store.ts @@ -1,13 +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'; - +import type { MarkdownHeading } from '@astrojs/markdown-remark'; const SAVE_DEBOUNCE_MS = 500; export interface RenderedContent { html: string; metadata?: { imagePaths: Array; + headings?: MarkdownHeading[]; + frontmatter?: Record; [key: string]: unknown; }; } diff --git a/packages/astro/src/content/types-generator.ts b/packages/astro/src/content/types-generator.ts index 7dce328d3215..7398290db42e 100644 --- a/packages/astro/src/content/types-generator.ts +++ b/packages/astro/src/content/types-generator.ts @@ -481,7 +481,7 @@ async function writeContentFiles({ dataTypesStr += `${collectionKey}: Record;\n`; break; case 'experimental_content': - dataTypesStr += `${collectionKey}: Record;\n`; + dataTypesStr += `${collectionKey}: Record;\n rendered?: RenderedContent \n}>;\n`; break; case 'data': if (collectionEntryKeys.length === 0) { From e553a4c8aa6114eddce192a9a57b77d3ad9356d1 Mon Sep 17 00:00:00 2001 From: Matt Kane Date: Fri, 26 Jul 2024 11:18:48 +0100 Subject: [PATCH 15/34] Lockfile --- pnpm-lock.yaml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6a4b17945907..6d315e373f97 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -2728,6 +2728,12 @@ importers: specifier: workspace:* version: link:../../.. + packages/astro/test/fixtures/content-collections-same-contents: + dependencies: + astro: + specifier: workspace:* + version: link:../../.. + packages/astro/test/fixtures/content-collections-with-config-mjs: dependencies: astro: From 05f9df7f9570bcc46d1aa85f3669960265c2d3cd Mon Sep 17 00:00:00 2001 From: Matt Kane Date: Tue, 30 Jul 2024 10:03:33 +0100 Subject: [PATCH 16/34] feat: use devalue to serialize content layer data (#11562) * feat: use devalue to serialize content layer data * Fix import * Use devalue stringify * Unused import * Propagate error messages correctly --- packages/astro/src/content/data-store.ts | 59 +++++++++---------- packages/astro/src/content/sync.ts | 8 +-- .../vite-plugin-content-virtual-mod.ts | 2 +- packages/astro/src/core/dev/dev.ts | 20 ++++++- packages/astro/src/core/sync/index.ts | 21 +++++-- packages/astro/test/content-layer.test.js | 20 ++++--- .../content-layer/src/content/config.ts | 2 +- .../src/pages/collections.json.js | 28 ++++++--- .../test/fixtures/content-layer/src/utils.js | 8 +++ 9 files changed, 107 insertions(+), 61 deletions(-) create mode 100644 packages/astro/test/fixtures/content-layer/src/utils.js diff --git a/packages/astro/src/content/data-store.ts b/packages/astro/src/content/data-store.ts index 218101560a0c..6c9b5ff69128 100644 --- a/packages/astro/src/content/data-store.ts +++ b/packages/astro/src/content/data-store.ts @@ -2,6 +2,7 @@ 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'; import type { MarkdownHeading } from '@astrojs/markdown-remark'; +import * as devalue from 'devalue'; const SAVE_DEBOUNCE_MS = 500; export interface RenderedContent { @@ -113,7 +114,7 @@ export class DataStore { await fs.writeFile(filePath, 'export default new Map();'); } catch (err) { throw new AstroError({ - ...(err as Error), + message: (err as Error).message, ...AstroErrorData.ContentLayerWriteError, }); } @@ -140,7 +141,7 @@ export default new Map([${exports.join(', ')}]); await fs.writeFile(filePath, code); } catch (err) { throw new AstroError({ - ...(err as Error), + message: (err as Error).message, ...AstroErrorData.ContentLayerWriteError, }); } @@ -238,11 +239,7 @@ export default new Map([${exports.join(', ')}]); } toString() { - return JSON.stringify( - Array.from(this.#collections.entries()).map(([collectionName, collection]) => { - return [collectionName, Array.from(collection.entries())]; - }) - ); + return devalue.stringify(this.#collections); } async writeToDisk(filePath: PathLike) { @@ -255,43 +252,45 @@ export default new Map([${exports.join(', ')}]); this.#dirty = false; } catch (err) { throw new AstroError({ - ...(err as Error), + message: (err as Error).message, ...AstroErrorData.ContentLayerWriteError, }); } } - - static async fromDisk(filePath: PathLike) { - if (!existsSync(filePath)) { - return new DataStore(); - } - const str = await fs.readFile(filePath, 'utf-8'); - return DataStore.fromString(str); - } - - static fromString(str: string) { - const entries = JSON.parse(str); - return DataStore.fromJSON(entries); - } - + /** + * Attempts to load a DataStore from the virtual module. + * This only works in Vite. + */ static async fromModule() { try { - // @ts-expect-error + // @ts-expect-error - this is a virtual module const data = await import('astro:data-layer-content'); - return DataStore.fromJSON(data.default); + const map = devalue.unflatten(data.default); + return DataStore.fromMap(map); } catch {} return new DataStore(); } - static fromJSON(entries: Array<[string, Array<[string, any]>]>) { - const collections = new Map>(); - for (const [collectionName, collection] of entries) { - collections.set(collectionName, new Map(collection)); - } + static async fromMap(data: Map>) { const store = new DataStore(); - store.#collections = collections; + store.#collections = data; return store; } + + static async fromString(data: string) { + const map = devalue.parse(data); + return DataStore.fromMap(map); + } + + static async fromFile(filePath: string | URL) { + try { + if (existsSync(filePath)) { + const data = await fs.readFile(filePath, 'utf-8'); + return DataStore.fromString(data); + } + } catch {} + return new DataStore(); + } } export interface ScopedDataStore { diff --git a/packages/astro/src/content/sync.ts b/packages/astro/src/content/sync.ts index aa0ecdc79b3f..5d5c669fce2f 100644 --- a/packages/astro/src/content/sync.ts +++ b/packages/astro/src/content/sync.ts @@ -6,12 +6,12 @@ import xxhash from 'xxhash-wasm'; import type { AstroSettings } from '../@types/astro.js'; import type { Logger } from '../core/logger/core.js'; import { ASSET_IMPORTS_FILE, DATA_STORE_FILE } from './consts.js'; -import { DataStore, globalDataStore } from './data-store.js'; +import type { DataStore } from './data-store.js'; import type { LoaderContext } from './loaders/types.js'; import { getEntryDataAndImages, globalContentConfigObserver, posixRelative } from './utils.js'; export interface SyncContentLayerOptions { - store?: DataStore; + store: DataStore; settings: AstroSettings; logger: Logger; watcher?: FSWatcher; @@ -33,10 +33,6 @@ export async function syncContentLayer({ const logger = globalLogger.forkIntegrationLogger('content'); logger.info('Syncing content'); - if (!store) { - store = await DataStore.fromDisk(new URL(DATA_STORE_FILE, settings.config.cacheDir)); - globalDataStore.set(store); - } const contentConfig = globalContentConfigObserver.get(); if (contentConfig?.status !== 'loaded') { logger.debug('Content config not loaded, skipping sync'); 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 63477f19f787..14f459575d72 100644 --- a/packages/astro/src/content/vite-plugin-content-virtual-mod.ts +++ b/packages/astro/src/content/vite-plugin-content-virtual-mod.ts @@ -107,7 +107,7 @@ export function astroContentVirtualModPlugin({ } if (id === RESOLVED_DATA_STORE_VIRTUAL_ID) { if (!fs.existsSync(dataStoreFile)) { - return 'export default {}'; + return 'export default new Map()'; } const jsonData = await fs.promises.readFile(dataStoreFile, 'utf-8'); diff --git a/packages/astro/src/core/dev/dev.ts b/packages/astro/src/core/dev/dev.ts index 32622dff6523..df77de800fe6 100644 --- a/packages/astro/src/core/dev/dev.ts +++ b/packages/astro/src/core/dev/dev.ts @@ -1,4 +1,4 @@ -import fs from 'node:fs'; +import fs, { existsSync } from 'node:fs'; import type http from 'node:http'; import type { AddressInfo } from 'node:net'; import { green } from 'kleur/colors'; @@ -19,6 +19,7 @@ import { fetchLatestAstroVersion, shouldCheckForUpdates, } from './update-check.js'; +import { DATA_STORE_FILE } from '../../content/consts.js'; export interface DevServer { address: AddressInfo; @@ -104,13 +105,26 @@ export default async function dev(inlineConfig: AstroInlineConfig): Promise { /** @type {import("./test-utils.js").Fixture} */ let fixture; @@ -22,7 +22,7 @@ describe('Content Layer', () => { .catch(() => {}); await fixture.build(); const rawJson = await fixture.readFile('/collections.json'); - json = JSON.parse(rawJson); + json = devalue.parse(rawJson); }); it('Returns custom loader collection', async () => { @@ -118,6 +118,10 @@ describe('Content Layer', () => { assert.deepEqual(json.entryWithReference.data.cat, { collection: 'cats', id: 'tabby' }); }); + it('can store Date objects', async () => { + assert.ok(json.entryWithReference.data.publishedDate instanceof Date); + }); + it('returns a referenced entry', async () => { assert.ok(json.hasOwnProperty('referencedEntry')); assert.deepEqual(json.referencedEntry, { @@ -137,15 +141,15 @@ describe('Content Layer', () => { it('updates the store on new builds', async () => { assert.equal(json.increment.data.lastValue, 1); await fixture.build(); - const newJson = JSON.parse(await fixture.readFile('/collections.json')); + const newJson = devalue.parse(await fixture.readFile('/collections.json')); assert.equal(newJson.increment.data.lastValue, 2); }); it('clears the store on new build with force flag', async () => { - let newJson = JSON.parse(await fixture.readFile('/collections.json')); + let newJson = devalue.parse(await fixture.readFile('/collections.json')); assert.equal(newJson.increment.data.lastValue, 2); await fixture.build({}, { force: true }); - newJson = JSON.parse(await fixture.readFile('/collections.json')); + newJson = devalue.parse(await fixture.readFile('/collections.json')); assert.equal(newJson.increment.data.lastValue, 1); }); }); @@ -157,7 +161,7 @@ describe('Content Layer', () => { devServer = await fixture.startDevServer(); const rawJsonResponse = await fixture.fetch('/collections.json'); const rawJson = await rawJsonResponse.text(); - json = JSON.parse(rawJson); + json = devalue.parse(rawJson); }); after(async () => { @@ -235,7 +239,7 @@ describe('Content Layer', () => { it('updates collection when data file is changed', async () => { const rawJsonResponse = await fixture.fetch('/collections.json'); - const initialJson = await rawJsonResponse.json(); + const initialJson = devalue.parse(await rawJsonResponse.text()); assert.equal(initialJson.fileLoader[0].data.temperament.includes('Bouncy'), false); await fixture.editFile('/src/data/dogs.json', (prev) => { @@ -248,7 +252,7 @@ describe('Content Layer', () => { await new Promise((r) => setTimeout(r, 700)); const updatedJsonResponse = await fixture.fetch('/collections.json'); - const updated = await updatedJsonResponse.json(); + const updated = devalue.parse(await updatedJsonResponse.text()); assert.ok(updated.fileLoader[0].data.temperament.includes('Bouncy')); }); }); 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 fd9dd5ad7c9a..1f89603ecdc1 100644 --- a/packages/astro/test/fixtures/content-layer/src/content/config.ts +++ b/packages/astro/test/fixtures/content-layer/src/content/config.ts @@ -79,7 +79,7 @@ const spacecraft = defineCollection({ z.object({ title: z.string(), description: z.string(), - publishedDate: z.string(), + publishedDate: z.coerce.date(), 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 618377dae4ff..d2894f95f18e 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,17 +1,29 @@ import { getCollection, getEntry } from 'astro:content'; +import * as devalue from 'devalue'; +import { stripAllRenderFn, stripRenderFn } from '../utils'; export async function GET() { - const customLoader = (await getCollection('blog')).slice(0, 10); - const fileLoader = await getCollection('dogs'); + const customLoader = stripAllRenderFn((await getCollection('blog')).slice(0, 10)); + const fileLoader = stripAllRenderFn(await getCollection('dogs')); - const dataEntry = await getEntry('dogs', 'beagle'); + const dataEntry = stripRenderFn(await getEntry('dogs', 'beagle')); - const simpleLoader = await getCollection('cats'); + const simpleLoader = stripAllRenderFn(await getCollection('cats')); - const entryWithReference = await getEntry('spacecraft', 'columbia-copy') - const referencedEntry = await getEntry(entryWithReference.data.cat) + const entryWithReference = stripRenderFn(await getEntry('spacecraft', 'columbia-copy')); + const referencedEntry = stripRenderFn(await getEntry(entryWithReference.data.cat)); - const increment = await getEntry('increment', 'value') + const increment = stripRenderFn(await getEntry('increment', 'value')); - return Response.json({ customLoader, fileLoader, dataEntry, simpleLoader, entryWithReference, referencedEntry, increment }); + return new Response( + devalue.stringify({ + customLoader, + fileLoader, + dataEntry, + simpleLoader, + entryWithReference, + referencedEntry, + increment, + }) + ); } diff --git a/packages/astro/test/fixtures/content-layer/src/utils.js b/packages/astro/test/fixtures/content-layer/src/utils.js new file mode 100644 index 000000000000..3a6244327862 --- /dev/null +++ b/packages/astro/test/fixtures/content-layer/src/utils.js @@ -0,0 +1,8 @@ +export function stripRenderFn(entryWithRender) { + const { render, ...entry } = entryWithRender; + return entry; +} + +export function stripAllRenderFn(collection = []) { + return collection.map(stripRenderFn); +} From c366ae42d99c12c77dd07e67cf651ae073af6b22 Mon Sep 17 00:00:00 2001 From: Matt Kane Date: Wed, 31 Jul 2024 14:40:17 +0100 Subject: [PATCH 17/34] Support --force flag in sync and dev (#11581) * Support --force flag in sync and dev * Fix test --- packages/astro/src/@types/astro.ts | 4 ++++ packages/astro/src/cli/build/index.ts | 2 +- packages/astro/src/cli/dev/index.ts | 1 + packages/astro/src/cli/flags.ts | 1 + packages/astro/src/cli/sync/index.ts | 10 ++++++++-- packages/astro/src/core/build/index.ts | 18 +++--------------- packages/astro/src/core/dev/container.ts | 1 + packages/astro/src/core/sync/index.ts | 21 ++++++++++++++++++++- packages/astro/test/content-layer.test.js | 2 +- 9 files changed, 40 insertions(+), 20 deletions(-) diff --git a/packages/astro/src/@types/astro.ts b/packages/astro/src/@types/astro.ts index f18ab592a478..05a26b3d5beb 100644 --- a/packages/astro/src/@types/astro.ts +++ b/packages/astro/src/@types/astro.ts @@ -2350,6 +2350,10 @@ export interface AstroInlineOnlyConfig { * @default "info" */ logLevel?: LoggerLevel; + /** + * Clear the content layer cache, forcing a rebuild of all content entries. + */ + force?: boolean; /** * @internal for testing only, use `logLevel` instead. */ diff --git a/packages/astro/src/cli/build/index.ts b/packages/astro/src/cli/build/index.ts index 63c2f0d0e1c5..0303c09ee6ad 100644 --- a/packages/astro/src/cli/build/index.ts +++ b/packages/astro/src/cli/build/index.ts @@ -29,5 +29,5 @@ export async function build({ flags }: BuildOptions) { const inlineConfig = flagsToAstroInlineConfig(flags); - await _build(inlineConfig, { force: flags.force ?? false }); + await _build(inlineConfig); } diff --git a/packages/astro/src/cli/dev/index.ts b/packages/astro/src/cli/dev/index.ts index 5db47fb9703c..2468c74a3264 100644 --- a/packages/astro/src/cli/dev/index.ts +++ b/packages/astro/src/cli/dev/index.ts @@ -19,6 +19,7 @@ export async function dev({ flags }: DevOptions) { ['--host', `Listen on all addresses, including LAN and public addresses.`], ['--host ', `Expose on a network IP address at `], ['--open', 'Automatically open the app in the browser on server start'], + ['--force', 'Clear the content layer cache, forcing a full rebuild.'], ['--help (-h)', 'See all available flags.'], ], }, diff --git a/packages/astro/src/cli/flags.ts b/packages/astro/src/cli/flags.ts index 0af16806df44..af674fe2325e 100644 --- a/packages/astro/src/cli/flags.ts +++ b/packages/astro/src/cli/flags.ts @@ -9,6 +9,7 @@ export function flagsToAstroInlineConfig(flags: Flags): AstroInlineConfig { configFile: typeof flags.config === 'string' ? flags.config : undefined, mode: typeof flags.mode === 'string' ? (flags.mode as AstroInlineConfig['mode']) : undefined, logLevel: flags.verbose ? 'debug' : flags.silent ? 'silent' : undefined, + force: flags.force ? true : undefined, // Astro user configs root: typeof flags.root === 'string' ? flags.root : undefined, diff --git a/packages/astro/src/cli/sync/index.ts b/packages/astro/src/cli/sync/index.ts index 6849fee70844..d10bbb7d286e 100644 --- a/packages/astro/src/cli/sync/index.ts +++ b/packages/astro/src/cli/sync/index.ts @@ -13,7 +13,10 @@ export async function sync({ flags }: SyncOptions) { commandName: 'astro sync', usage: '[...flags]', tables: { - Flags: [['--help (-h)', 'See all available flags.']], + Flags: [ + ['--force', 'Clear the content layer cache, forcing a full rebuild.'], + ['--help (-h)', 'See all available flags.'], + ], }, description: `Generates TypeScript types for all Astro modules.`, }); @@ -21,7 +24,10 @@ export async function sync({ flags }: SyncOptions) { } try { - await _sync({ inlineConfig: flagsToAstroInlineConfig(flags), telemetry: true }); + await _sync({ + inlineConfig: flagsToAstroInlineConfig(flags), + telemetry: true, + }); return 0; } catch (_) { return 1; diff --git a/packages/astro/src/core/build/index.ts b/packages/astro/src/core/build/index.ts index a55667c421dd..40428196351a 100644 --- a/packages/astro/src/core/build/index.ts +++ b/packages/astro/src/core/build/index.ts @@ -11,7 +11,6 @@ import type { RuntimeMode, } from '../../@types/astro.js'; import { injectImageEndpoint } from '../../assets/endpoint/config.js'; -import { DATA_STORE_FILE } from '../../content/consts.js'; import { telemetry } from '../../events/index.js'; import { eventCliSession } from '../../events/session.js'; import { @@ -34,6 +33,7 @@ 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 { clearContentLayerCache } from '../sync/index.js'; export interface BuildOptions { /** * Teardown the compiler WASM instance after build. This can improve performance when @@ -44,13 +44,6 @@ export interface BuildOptions { */ teardownCompiler?: boolean; - /** - * If `experimental.contentCollectionCache` is enabled, this flag will clear the cache before building - * - * @internal not part of our public api - * @default false - */ - force?: boolean; } /** @@ -68,7 +61,7 @@ export default async function build( const logger = createNodeLogger(inlineConfig); const { userConfig, astroConfig } = await resolveConfig(inlineConfig, 'build'); telemetry.record(eventCliSession('build', userConfig)); - if (options.force) { + if (inlineConfig.force) { if (astroConfig.experimental.contentCollectionCache) { const contentCacheDir = new URL('./content/', astroConfig.cacheDir); if (fs.existsSync(contentCacheDir)) { @@ -77,12 +70,7 @@ export default async function build( logger.warn('content', 'content cache cleared (force)'); } } - const dataStore = new URL(DATA_STORE_FILE, astroConfig.cacheDir); - if (fs.existsSync(dataStore)) { - logger.debug('content', 'clearing data store'); - await fs.promises.rm(dataStore, { force: true }); - logger.warn('content', 'data store cleared (force)'); - } + await clearContentLayerCache({ astroConfig, logger, fs }); } const settings = await createSettings(astroConfig, fileURLToPath(astroConfig.root)); diff --git a/packages/astro/src/core/dev/container.ts b/packages/astro/src/core/dev/container.ts index aaf6506e9d81..be42c5cc7697 100644 --- a/packages/astro/src/core/dev/container.ts +++ b/packages/astro/src/core/dev/container.ts @@ -97,6 +97,7 @@ export async function createContainer({ skip: { content: true, }, + force: inlineConfig?.force, }); const viteServer = await vite.createServer(viteConfig); diff --git a/packages/astro/src/core/sync/index.ts b/packages/astro/src/core/sync/index.ts index 5ed93975b478..46fc74bb8fdb 100644 --- a/packages/astro/src/core/sync/index.ts +++ b/packages/astro/src/core/sync/index.ts @@ -39,6 +39,7 @@ export type SyncOptions = { fs?: typeof fsMod; logger: Logger; settings: AstroSettings; + force?: boolean; skip?: { // Must be skipped in dev content?: boolean; @@ -66,7 +67,19 @@ export default async function sync({ settings, logger, }); - return await syncInternal({ settings, logger, fs }); + return await syncInternal({ settings, logger, fs, force: inlineConfig.force }); +} + +/** + * Clears the content layer and content collection cache, forcing a full rebuild. + */ +export async function clearContentLayerCache({ astroConfig, logger, fs = fsMod }: { astroConfig: AstroConfig; logger: Logger, fs?: typeof fsMod }) { + const dataStore = new URL(DATA_STORE_FILE, astroConfig.cacheDir); + if (fs.existsSync(dataStore)) { + logger.debug('content', 'clearing data store'); + await fs.promises.rm(dataStore, { force: true }); + logger.warn('content', 'data store cleared (force)'); + } } /** @@ -80,7 +93,13 @@ export async function syncInternal({ fs = fsMod, settings, skip, + force }: SyncOptions): Promise { + + if (force) { + await clearContentLayerCache({ astroConfig: settings.config, logger, fs }); + } + const cwd = fileURLToPath(settings.config.root); const timerStart = performance.now(); diff --git a/packages/astro/test/content-layer.test.js b/packages/astro/test/content-layer.test.js index ec51fe95f3b0..95960cd11921 100644 --- a/packages/astro/test/content-layer.test.js +++ b/packages/astro/test/content-layer.test.js @@ -148,7 +148,7 @@ describe('Content Layer', () => { it('clears the store on new build with force flag', async () => { let newJson = devalue.parse(await fixture.readFile('/collections.json')); assert.equal(newJson.increment.data.lastValue, 2); - await fixture.build({}, { force: true }); + await fixture.build({ force: true }, {}); newJson = devalue.parse(await fixture.readFile('/collections.json')); assert.equal(newJson.increment.data.lastValue, 1); }); From 2abc38babfe5a647882251e578f48450565b0988 Mon Sep 17 00:00:00 2001 From: Matt Kane Date: Thu, 1 Aug 2024 12:44:04 +0100 Subject: [PATCH 18/34] Separate render function and merge content layer types (#11579) * Separate render function and merge content layer types * Changes from review --- packages/astro/src/content/consts.ts | 2 ++ packages/astro/src/content/data-store.ts | 4 +-- packages/astro/src/content/runtime.ts | 33 ++++++++++++++----- packages/astro/src/content/sync.ts | 4 +-- packages/astro/src/content/types-generator.ts | 17 ++++------ packages/astro/src/content/utils.ts | 20 +++++------ packages/astro/src/core/dev/dev.ts | 2 +- packages/astro/src/core/sync/index.ts | 2 +- packages/astro/templates/content/module.mjs | 2 +- packages/astro/templates/content/types.d.ts | 6 +++- packages/astro/test/content-layer.test.js | 2 +- .../content-layer/src/content/config.ts | 8 ++--- .../src/pages/spacecraft/[slug].astro | 4 +-- packages/astro/types/content.d.ts | 2 +- 14 files changed, 63 insertions(+), 45 deletions(-) diff --git a/packages/astro/src/content/consts.ts b/packages/astro/src/content/consts.ts index 10734426b471..269b5a27d09d 100644 --- a/packages/astro/src/content/consts.ts +++ b/packages/astro/src/content/consts.ts @@ -27,3 +27,5 @@ export const CONTENT_TYPES_FILE = 'types.d.ts'; export const DATA_STORE_FILE = 'data-store.json'; export const ASSET_IMPORTS_FILE = 'assets.mjs'; + +export const CONTENT_LAYER_TYPE = 'experimental_content'; diff --git a/packages/astro/src/content/data-store.ts b/packages/astro/src/content/data-store.ts index 6c9b5ff69128..720be732b50d 100644 --- a/packages/astro/src/content/data-store.ts +++ b/packages/astro/src/content/data-store.ts @@ -1,8 +1,8 @@ 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'; import type { MarkdownHeading } from '@astrojs/markdown-remark'; import * as devalue from 'devalue'; +import { imageSrcToImportId, importIdToSymbolName } from '../assets/utils/resolveImports.js'; +import { AstroError, AstroErrorData } from '../core/errors/index.js'; const SAVE_DEBOUNCE_MS = 500; export interface RenderedContent { diff --git a/packages/astro/src/content/runtime.ts b/packages/astro/src/content/runtime.ts index f609f7bbd59d..abb66fac312b 100644 --- a/packages/astro/src/content/runtime.ts +++ b/packages/astro/src/content/runtime.ts @@ -4,7 +4,7 @@ import pLimit from 'p-limit'; 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'; +import { AstroError, AstroErrorData, AstroUserError } from '../core/errors/index.js'; import { prependForwardSlash } from '../core/path.js'; import { type AstroComponentFactory, @@ -17,7 +17,7 @@ import { render as serverRender, unescapeHTML, } from '../runtime/server/index.js'; -import { IMAGE_IMPORT_PREFIX } from './consts.js'; +import { CONTENT_LAYER_TYPE, IMAGE_IMPORT_PREFIX } from './consts.js'; import { type DataEntry, globalDataStore } from './data-store.js'; import type { ContentLookupMap } from './utils.js'; type LazyImport = () => Promise; @@ -26,6 +26,16 @@ type CollectionToEntryMap = Record; type GetEntryImport = (collection: string, lookupId: string) => Promise; export function defineCollection(config: any) { + if ( + ('loader' in config && config.type !== CONTENT_LAYER_TYPE) || + (config.type === CONTENT_LAYER_TYPE && !('loader' in config)) + ) { + // TODO: when this moves out of experimental, we will set the type automatically + throw new AstroUserError( + 'Collections that use the content layer must have a `loader` defined and `type` set to `experimental_content`', + "Check your collection definitions in `src/content/config.*`.'" + ); + } if (!config.type) config.type = 'content'; return config; } @@ -62,7 +72,7 @@ export function createGetCollection({ }) { return async function getCollection(collection: string, filter?: (entry: any) => unknown) { const store = await globalDataStore.get(); - let type: 'content' | 'data' | 'experimental_data' | 'experimental_content'; + let type: 'content' | 'data'; if (collection in contentCollectionToEntryMap) { type = 'content'; } else if (collection in dataCollectionToEntryMap) { @@ -80,7 +90,6 @@ export function createGetCollection({ ...entry, data, collection, - render: () => renderEntry(entry), }); } return result; @@ -167,7 +176,6 @@ export function createGetEntryBySlug({ return { ...entry, collection, - render: () => renderEntry(entry), }; } if (!collectionNames.has(collection)) { @@ -201,7 +209,10 @@ export function createGetEntryBySlug({ export function createGetDataEntryById({ getEntryImport, collectionNames, -}: { getEntryImport: GetEntryImport; collectionNames: Set }) { +}: { + getEntryImport: GetEntryImport; + collectionNames: Set; +}) { return async function getDataEntryById(collection: string, id: string) { const store = await globalDataStore.get(); @@ -307,7 +318,6 @@ export function createGetEntry({ return { ...entry, collection, - render: () => renderEntry(entry), } as DataEntryResult | ContentEntryResult; } @@ -433,7 +443,14 @@ function updateImageReferencesInData>( }); } -async function renderEntry(entry?: DataEntry) { +export async function renderEntry( + entry: DataEntry | { render: () => Promise<{ Content: AstroComponentFactory }> } +) { + if (entry && 'render' in entry) { + // This is an old content collection entry, so we use its render method + return entry.render(); + } + const html = entry?.rendered?.metadata?.imagePaths?.length && entry.filePath ? await updateImageReferencesInBody(entry.rendered.html, entry.filePath) diff --git a/packages/astro/src/content/sync.ts b/packages/astro/src/content/sync.ts index 5d5c669fce2f..21c5e1b53367 100644 --- a/packages/astro/src/content/sync.ts +++ b/packages/astro/src/content/sync.ts @@ -5,7 +5,7 @@ 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 { ASSET_IMPORTS_FILE, DATA_STORE_FILE } from './consts.js'; +import { ASSET_IMPORTS_FILE, CONTENT_LAYER_TYPE, DATA_STORE_FILE } from './consts.js'; import type { DataStore } from './data-store.js'; import type { LoaderContext } from './loaders/types.js'; import { getEntryDataAndImages, globalContentConfigObserver, posixRelative } from './utils.js'; @@ -49,7 +49,7 @@ export async function syncContentLayer({ await Promise.all( Object.entries(contentConfig.config.collections).map(async ([name, collection]) => { - if (collection.type !== 'experimental_data' && collection.type !== 'experimental_content') { + if (collection.type !== CONTENT_LAYER_TYPE) { return; } diff --git a/packages/astro/src/content/types-generator.ts b/packages/astro/src/content/types-generator.ts index 7398290db42e..07df4192efab 100644 --- a/packages/astro/src/content/types-generator.ts +++ b/packages/astro/src/content/types-generator.ts @@ -12,6 +12,7 @@ import { AstroError } from '../core/errors/errors.js'; import { AstroErrorData } from '../core/errors/index.js'; import type { Logger } from '../core/logger/core.js'; import { isRelativePath } from '../core/path.js'; +import { CONTENT_LAYER_TYPE } from './consts.js'; import { CONTENT_TYPES_FILE, VIRTUAL_MODULE_ID } from './consts.js'; import { type ContentConfig, @@ -45,7 +46,7 @@ type CollectionEntryMap = { entries: Record; } | { - type: 'data' | 'experimental_content' | 'experimental_data'; + type: 'data' | typeof CONTENT_LAYER_TYPE; entries: Record; }; }; @@ -366,7 +367,7 @@ async function typeForCollection( } if ( - (collection?.type === 'experimental_data' || collection?.type === 'experimental_content') && + collection?.type === CONTENT_LAYER_TYPE && typeof collection.loader === 'object' && collection.loader.schema ) { @@ -426,8 +427,7 @@ async function writeContentFiles({ if ( collectionConfig?.type && collection.type !== 'unknown' && - collectionConfig.type !== 'experimental_data' && - collectionConfig.type !== 'experimental_content' && + collectionConfig.type !== CONTENT_LAYER_TYPE && collection.type !== collectionConfig.type ) { viteServer.hot.send({ @@ -450,7 +450,7 @@ async function writeContentFiles({ }); return; } - const resolvedType: 'content' | 'data' | 'experimental_data' | 'experimental_content' = + const resolvedType = collection.type === 'unknown' ? // Add empty / unknown collections to the data type map by default // This ensures `getCollection('empty-collection')` doesn't raise a type error @@ -477,11 +477,8 @@ async function writeContentFiles({ } contentTypesStr += `};\n`; break; - case 'experimental_data': - dataTypesStr += `${collectionKey}: Record;\n`; - break; - case 'experimental_content': - dataTypesStr += `${collectionKey}: Record;\n rendered?: RenderedContent \n}>;\n`; + case CONTENT_LAYER_TYPE: + dataTypesStr += `${collectionKey}: Record;\n`; break; case 'data': if (collectionEntryKeys.length === 0) { diff --git a/packages/astro/src/content/utils.ts b/packages/astro/src/content/utils.ts index 1d153cdc9901..ce83b4e01dd2 100644 --- a/packages/astro/src/content/utils.ts +++ b/packages/astro/src/content/utils.ts @@ -15,7 +15,12 @@ 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, IMAGE_IMPORT_PREFIX, PROPAGATED_ASSET_FLAG } from './consts.js'; +import { + CONTENT_FLAGS, + CONTENT_LAYER_TYPE, + 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. @@ -36,7 +41,7 @@ export const collectionConfigParser = z.union([ schema: z.any().optional(), }), z.object({ - type: z.union([z.literal('experimental_data'), z.literal('experimental_content')]), + type: z.literal(CONTENT_LAYER_TYPE), schema: z.any().optional(), loader: z.union([ z.function().returns( @@ -135,11 +140,7 @@ export async function getEntryDataAndImages< pluginContext?: PluginContext ): Promise<{ data: TOutputData; imageImports: Array }> { let data: TOutputData; - if ( - collectionConfig.type === 'data' || - collectionConfig.type === 'experimental_data' || - collectionConfig.type === 'experimental_content' - ) { + if (collectionConfig.type === 'data' || collectionConfig.type === CONTENT_LAYER_TYPE) { data = entry.unvalidatedData as TOutputData; } else { const { slug, ...unvalidatedData } = entry.unvalidatedData; @@ -155,10 +156,7 @@ export async function getEntryDataAndImages< schema = schema({ image: createImage(pluginContext, shouldEmitFile, entry._internal.filePath), }); - } else if ( - collectionConfig.type === 'experimental_data' || - collectionConfig.type === 'experimental_content' - ) { + } else if (collectionConfig.type === CONTENT_LAYER_TYPE) { schema = schema({ image: () => z.string().transform((val) => { diff --git a/packages/astro/src/core/dev/dev.ts b/packages/astro/src/core/dev/dev.ts index df77de800fe6..453f1cf0c7c9 100644 --- a/packages/astro/src/core/dev/dev.ts +++ b/packages/astro/src/core/dev/dev.ts @@ -6,6 +6,7 @@ import { performance } from 'perf_hooks'; import { gt, major, minor, patch } from 'semver'; import type * as vite from 'vite'; import type { AstroInlineConfig } from '../../@types/astro.js'; +import { DATA_STORE_FILE } from '../../content/consts.js'; import { DataStore, globalDataStore } from '../../content/data-store.js'; import { attachContentServerListeners } from '../../content/index.js'; import { syncContentLayer } from '../../content/sync.js'; @@ -19,7 +20,6 @@ import { fetchLatestAstroVersion, shouldCheckForUpdates, } from './update-check.js'; -import { DATA_STORE_FILE } from '../../content/consts.js'; export interface DevServer { address: AddressInfo; diff --git a/packages/astro/src/core/sync/index.ts b/packages/astro/src/core/sync/index.ts index 46fc74bb8fdb..bfd0467ae2c8 100644 --- a/packages/astro/src/core/sync/index.ts +++ b/packages/astro/src/core/sync/index.ts @@ -5,6 +5,7 @@ import { dim } from 'kleur/colors'; import { type HMRPayload, createServer } from 'vite'; import type { AstroConfig, AstroInlineConfig, AstroSettings } from '../../@types/astro.js'; import { getPackage } from '../../cli/install-package.js'; +import { DATA_STORE_FILE } from '../../content/consts.js'; import { DataStore, globalDataStore } from '../../content/data-store.js'; import { createContentTypesGenerator } from '../../content/index.js'; import { syncContentLayer } from '../../content/sync.js'; @@ -30,7 +31,6 @@ 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 { DATA_STORE_FILE } from '../../content/consts.js'; export type SyncOptions = { /** diff --git a/packages/astro/templates/content/module.mjs b/packages/astro/templates/content/module.mjs index b7afc9433978..2d395db49541 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 } from 'astro/content/runtime'; +export { defineCollection, renderEntry as render } from 'astro/content/runtime'; export { z } from 'astro/zod'; const contentDir = '@@CONTENT_DIR@@'; diff --git a/packages/astro/templates/content/types.d.ts b/packages/astro/templates/content/types.d.ts index 04e7cc28998c..8fa4d8cf318c 100644 --- a/packages/astro/templates/content/types.d.ts +++ b/packages/astro/templates/content/types.d.ts @@ -6,7 +6,7 @@ declare module 'astro:content' { remarkPluginFrontmatter: Record; }>; } - interface ContentLayerRenderer { + interface ContentLayerRenderResult { Content: import('astro/runtime/server/index.js').AstroComponentFactory; } @@ -109,6 +109,10 @@ declare module 'astro:content' { }[] ): Promise[]>; + export function render( + entry: AnyEntryMap[C][string] + ): Promise; + export function reference( collection: C ): import('astro/zod').ZodEffects< diff --git a/packages/astro/test/content-layer.test.js b/packages/astro/test/content-layer.test.js index 95960cd11921..a98ea7e238bd 100644 --- a/packages/astro/test/content-layer.test.js +++ b/packages/astro/test/content-layer.test.js @@ -3,8 +3,8 @@ 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'; -import { loadFixture } from './test-utils.js'; import * as devalue from 'devalue'; +import { loadFixture } from './test-utils.js'; describe('Content Layer', () => { /** @type {import("./test-utils.js").Fixture} */ let fixture; 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 1f89603ecdc1..d1c51d3ff82f 100644 --- a/packages/astro/test/fixtures/content-layer/src/content/config.ts +++ b/packages/astro/test/fixtures/content-layer/src/content/config.ts @@ -4,12 +4,12 @@ import { loader } from '../loaders/post-loader.js'; import { fileURLToPath } from 'node:url'; const blog = defineCollection({ - type: 'experimental_data', + type: 'experimental_content', loader: loader({ url: 'https://jsonplaceholder.typicode.com/posts' }), }); const dogs = defineCollection({ - type: 'experimental_data', + type: 'experimental_content', loader: file('src/data/dogs.json'), schema: z.object({ breed: z.string(), @@ -22,7 +22,7 @@ const dogs = defineCollection({ }); const cats = defineCollection({ - type: 'experimental_data', + type: 'experimental_content', loader: async function () { return [ { @@ -92,7 +92,7 @@ const numbers = defineCollection({ }); const increment = defineCollection({ - type: 'experimental_data', + type: 'experimental_content', loader: { name: 'increment-loader', load: async ({ store }) => { 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 4df64a395f45..b380a03c37ea 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, getEntry } from "astro:content" +import { getCollection, getEntry, render } from "astro:content" import { Image } from "astro:assets" export const getStaticPaths = (async () => { @@ -22,7 +22,7 @@ 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() +const { Content } = await render(craft) --- diff --git a/packages/astro/types/content.d.ts b/packages/astro/types/content.d.ts index b927e93fd03b..80ce804db0ab 100644 --- a/packages/astro/types/content.d.ts +++ b/packages/astro/types/content.d.ts @@ -58,7 +58,7 @@ declare module 'astro:content' { export type SchemaContext = { image: ImageFunction }; type ContentLayerConfig = { - type: 'experimental_data' | 'experimental_content'; + type: 'experimental_content'; schema?: S | ((context: SchemaContext) => S); loader: import('astro/loaders').Loader | (() => Array | Promise>); }; From aecae033015de6252f04b666a802d2130fc4cbdd Mon Sep 17 00:00:00 2001 From: Matt Kane Date: Thu, 1 Aug 2024 22:16:41 +0100 Subject: [PATCH 19/34] fix: clear content layer cache if config has changed (#11591) * fix: clear content layer cache if config has changed * Add test * Watch config * Change from review --- packages/astro/src/content/data-store.ts | 11 ++++-- packages/astro/src/content/sync.ts | 9 +++++ packages/astro/src/content/utils.ts | 8 +++-- .../content/vite-plugin-content-imports.ts | 1 + packages/astro/src/core/build/index.ts | 3 +- packages/astro/src/core/dev/dev.ts | 36 ++++++++++++++++--- packages/astro/src/core/sync/index.ts | 9 +++-- packages/astro/test/content-layer.test.js | 11 ++++++ packages/astro/test/test-utils.js | 2 +- 9 files changed, 75 insertions(+), 15 deletions(-) diff --git a/packages/astro/src/content/data-store.ts b/packages/astro/src/content/data-store.ts index 720be732b50d..b8de8f52d943 100644 --- a/packages/astro/src/content/data-store.ts +++ b/packages/astro/src/content/data-store.ts @@ -75,6 +75,11 @@ export class DataStore { this.#saveToDiskDebounced(); } + clearAll() { + this.#collections.clear(); + this.#saveToDiskDebounced(); + } + has(collectionName: string, key: string) { const collection = this.#collections.get(collectionName); if (collection) { @@ -227,8 +232,10 @@ export default new Map([${exports.join(', ')}]); this.addAssetImports(assets, fileName), }; } - - metaStore(collectionName: string): MetaStore { + /** + * Returns a MetaStore for a given collection, or if no collection is provided, the default meta collection. + */ + metaStore(collectionName = ':meta'): MetaStore { const collectionKey = `meta:${collectionName}`; return { get: (key: string) => this.get(collectionKey, key), diff --git a/packages/astro/src/content/sync.ts b/packages/astro/src/content/sync.ts index 21c5e1b53367..4c693e9f0381 100644 --- a/packages/astro/src/content/sync.ts +++ b/packages/astro/src/content/sync.ts @@ -38,6 +38,15 @@ export async function syncContentLayer({ logger.debug('Content config not loaded, skipping sync'); return; } + + const previousConfigDigest = await store.metaStore().get('config-digest'); + const { digest: currentConfigDigest } = contentConfig.config; + if (currentConfigDigest && previousConfigDigest !== currentConfigDigest) { + logger.info('Content config changed, clearing cache'); + store.clearAll(); + await store.metaStore().set('config-digest', currentConfigDigest); + } + // 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(); diff --git a/packages/astro/src/content/utils.ts b/packages/astro/src/content/utils.ts index ce83b4e01dd2..b5c7a8e649b2 100644 --- a/packages/astro/src/content/utils.ts +++ b/packages/astro/src/content/utils.ts @@ -5,6 +5,7 @@ import { slug as githubSlug } from 'github-slugger'; import matter from 'gray-matter'; import type { PluginContext } from 'rollup'; import { type ViteDevServer, normalizePath } from 'vite'; +import xxhash from 'xxhash-wasm'; import { z } from 'zod'; import type { AstroConfig, @@ -95,7 +96,7 @@ export const contentConfigParser = z.object({ }); export type CollectionConfig = z.infer; -export type ContentConfig = z.infer; +export type ContentConfig = z.infer & { digest?: string }; type EntryInternal = { rawData: string | undefined; filePath: string }; @@ -497,7 +498,10 @@ export async function loadContentConfig({ const config = contentConfigParser.safeParse(unparsedConfig); if (config.success) { - return config.data; + // Generate a digest of the config file so we can invalidate the cache if it changes + const hasher = await xxhash(); + const digest = await hasher.h64ToString(await fs.promises.readFile(configPathname, 'utf-8')); + return { ...config.data, digest }; } else { return undefined; } diff --git a/packages/astro/src/content/vite-plugin-content-imports.ts b/packages/astro/src/content/vite-plugin-content-imports.ts index 91f411f0756e..1a7deb99031f 100644 --- a/packages/astro/src/content/vite-plugin-content-imports.ts +++ b/packages/astro/src/content/vite-plugin-content-imports.ts @@ -158,6 +158,7 @@ export const _internal = { // The content config could depend on collection entries via `reference()`. // Reload the config in case of changes. + // Changes to the config file itself are handled in types-generator.ts, so we skip them here if (entryType === 'content' || entryType === 'data') { await reloadContentConfigObserver({ fs, settings, viteServer }); } diff --git a/packages/astro/src/core/build/index.ts b/packages/astro/src/core/build/index.ts index 40428196351a..ecba6d7fca09 100644 --- a/packages/astro/src/core/build/index.ts +++ b/packages/astro/src/core/build/index.ts @@ -28,12 +28,12 @@ import { levels, timerMessage } from '../logger/core.js'; import { apply as applyPolyfill } from '../polyfill.js'; import { createRouteManifest } from '../routing/index.js'; import { getServerIslandRouteData } from '../server-islands/endpoint.js'; +import { clearContentLayerCache } from '../sync/index.js'; import { ensureProcessNodeEnv, isServerLikeOutput } from '../util.js'; 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 { clearContentLayerCache } from '../sync/index.js'; export interface BuildOptions { /** * Teardown the compiler WASM instance after build. This can improve performance when @@ -43,7 +43,6 @@ export interface BuildOptions { * @default true */ teardownCompiler?: boolean; - } /** diff --git a/packages/astro/src/core/dev/dev.ts b/packages/astro/src/core/dev/dev.ts index 453f1cf0c7c9..799684c58e60 100644 --- a/packages/astro/src/core/dev/dev.ts +++ b/packages/astro/src/core/dev/dev.ts @@ -10,6 +10,7 @@ import { DATA_STORE_FILE } from '../../content/consts.js'; import { DataStore, globalDataStore } from '../../content/data-store.js'; import { attachContentServerListeners } from '../../content/index.js'; import { syncContentLayer } from '../../content/sync.js'; +import { globalContentConfigObserver } from '../../content/utils.js'; import { telemetry } from '../../events/index.js'; import * as msg from '../messages.js'; import { ensureProcessNodeEnv } from '../util.js'; @@ -120,11 +121,36 @@ export default async function dev(inlineConfig: AstroInlineConfig): Promise { + loading = false; + }); + } + + globalContentConfigObserver.subscribe(async (ctx) => { + if (!loading && ctx.status === 'loaded' && ctx.config.digest !== currentDigest) { + loading = true; + currentDigest = ctx.config.digest; + await syncContentLayer({ + settings: restart.container.settings, + logger, + watcher: restart.container.viteServer.watcher, + store, + }).finally(() => { + loading = false; + }); + } }); logger.info(null, green('watching for file changes...')); diff --git a/packages/astro/src/core/sync/index.ts b/packages/astro/src/core/sync/index.ts index bfd0467ae2c8..885919ce9592 100644 --- a/packages/astro/src/core/sync/index.ts +++ b/packages/astro/src/core/sync/index.ts @@ -73,7 +73,11 @@ export default async function sync({ /** * Clears the content layer and content collection cache, forcing a full rebuild. */ -export async function clearContentLayerCache({ astroConfig, logger, fs = fsMod }: { astroConfig: AstroConfig; logger: Logger, fs?: typeof fsMod }) { +export async function clearContentLayerCache({ + astroConfig, + logger, + fs = fsMod, +}: { astroConfig: AstroConfig; logger: Logger; fs?: typeof fsMod }) { const dataStore = new URL(DATA_STORE_FILE, astroConfig.cacheDir); if (fs.existsSync(dataStore)) { logger.debug('content', 'clearing data store'); @@ -93,9 +97,8 @@ export async function syncInternal({ fs = fsMod, settings, skip, - force + force, }: SyncOptions): Promise { - if (force) { await clearContentLayerCache({ astroConfig: settings.config, logger, fs }); } diff --git a/packages/astro/test/content-layer.test.js b/packages/astro/test/content-layer.test.js index a98ea7e238bd..0023743b5906 100644 --- a/packages/astro/test/content-layer.test.js +++ b/packages/astro/test/content-layer.test.js @@ -152,6 +152,17 @@ describe('Content Layer', () => { newJson = devalue.parse(await fixture.readFile('/collections.json')); assert.equal(newJson.increment.data.lastValue, 1); }); + + it('clears the store on new build if the config has changed', async () => { + let newJson = devalue.parse(await fixture.readFile('/collections.json')); + assert.equal(newJson.increment.data.lastValue, 1); + await fixture.editFile('src/content/config.ts', (prev) => { + return `${prev}\nexport const foo = 'bar';`; + }); + await fixture.build(); + newJson = devalue.parse(await fixture.readFile('/collections.json')); + assert.equal(newJson.increment.data.lastValue, 1); + }); }); describe('Dev', () => { diff --git a/packages/astro/test/test-utils.js b/packages/astro/test/test-utils.js index d3cdb30d2527..8f6838b56569 100644 --- a/packages/astro/test/test-utils.js +++ b/packages/astro/test/test-utils.js @@ -278,7 +278,7 @@ export async function loadFixture(inlineConfig) { typeof newContentsOrCallback === 'function' ? newContentsOrCallback(contents) : newContentsOrCallback; - const nextChange = onNextChange(); + const nextChange = devServer ? onNextChange() : Promise.resolve(); await fs.promises.writeFile(fileUrl, newContents); await nextChange; return reset; From 1a79a50b2a91d101e8a09257865db836d90e16ac Mon Sep 17 00:00:00 2001 From: Matt Kane Date: Mon, 5 Aug 2024 11:58:06 +0100 Subject: [PATCH 20/34] fix: skip glob files in content dir (#11622) * fix: skip glob files in content dir * Changes from review * Log pattern --- packages/astro/src/content/loaders/glob.ts | 48 +++++++++++++++++++--- 1 file changed, 43 insertions(+), 5 deletions(-) diff --git a/packages/astro/src/content/loaders/glob.ts b/packages/astro/src/content/loaders/glob.ts index e0ce403209d6..cf3f9971877b 100644 --- a/packages/astro/src/content/loaders/glob.ts +++ b/packages/astro/src/content/loaders/glob.ts @@ -1,7 +1,7 @@ import { promises as fs } from 'node:fs'; import { fileURLToPath, pathToFileURL } from 'node:url'; import fastGlob from 'fast-glob'; -import { green } from 'kleur/colors'; +import { bold, green } from 'kleur/colors'; import micromatch from 'micromatch'; import pLimit from 'p-limit'; import type { ContentEntryRenderFuction, ContentEntryType } from '../../@types/astro.js'; @@ -190,14 +190,52 @@ export function glob(globOptions: GlobOptions): Loader { } const limit = pLimit(10); + const skippedFiles: Array = []; + + const contentDir = new URL('content/', settings.config.srcDir); + + function isInContentDir(file: string) { + const fileUrl = new URL(file, baseDir); + return fileUrl.href.startsWith(contentDir.href); + } + + const configFiles = new Set( + ['config.js', 'config.ts', 'config.mjs'].map((file) => new URL(file, contentDir).href) + ); + + function isConfigFile(file: string) { + const fileUrl = new URL(file, baseDir); + return configFiles.has(fileUrl.href); + } + await Promise.all( - files.map((entry) => - limit(async () => { + files.map((entry) => { + if (isConfigFile(entry)) { + return; + } + if (isInContentDir(entry)) { + skippedFiles.push(entry); + return; + } + return limit(async () => { const entryType = configForFile(entry); await syncData(entry, baseDir, entryType); - }) - ) + }); + }) ); + + const skipCount = skippedFiles.length; + + if (skipCount > 0) { + logger.warn(`The glob() loader cannot be used for files in ${bold('src/content')}.`); + if (skipCount > 10) { + logger.warn(`Skipped ${green(skippedFiles.length)} files that matched ${green(globOptions.pattern)}.`); + } else { + logger.warn(`Skipped the following files that matched ${green(globOptions.pattern)}:`); + skippedFiles.forEach((file) => logger.warn(`• ${green(file)}`)); + } + } + // Remove entries that were not found this time untouchedEntries.forEach((id) => store.delete(id)); From aa9164843c4b36019b2b1a3bd83b73750a80322d Mon Sep 17 00:00:00 2001 From: Matt Kane Date: Mon, 5 Aug 2024 15:42:47 +0100 Subject: [PATCH 21/34] Refactor content layer into shared instance (#11625) * Refactor content layer into shared instance * Clean up when testing * Handle cleanup --- packages/astro/src/content/loaders/glob.ts | 4 +- packages/astro/src/content/sync.ts | 303 ++++++++++++++------- packages/astro/src/core/dev/dev.ts | 28 +- packages/astro/src/core/sync/index.ts | 9 +- packages/astro/test/test-utils.js | 3 + 5 files changed, 219 insertions(+), 128 deletions(-) diff --git a/packages/astro/src/content/loaders/glob.ts b/packages/astro/src/content/loaders/glob.ts index cf3f9971877b..b3eeba005410 100644 --- a/packages/astro/src/content/loaders/glob.ts +++ b/packages/astro/src/content/loaders/glob.ts @@ -229,7 +229,9 @@ export function glob(globOptions: GlobOptions): Loader { if (skipCount > 0) { logger.warn(`The glob() loader cannot be used for files in ${bold('src/content')}.`); if (skipCount > 10) { - logger.warn(`Skipped ${green(skippedFiles.length)} files that matched ${green(globOptions.pattern)}.`); + logger.warn( + `Skipped ${green(skippedFiles.length)} files that matched ${green(globOptions.pattern)}.` + ); } else { logger.warn(`Skipped the following files that matched ${green(globOptions.pattern)}:`); skippedFiles.forEach((file) => logger.warn(`• ${green(file)}`)); diff --git a/packages/astro/src/content/sync.ts b/packages/astro/src/content/sync.ts index 4c693e9f0381..7c9f19810c5f 100644 --- a/packages/astro/src/content/sync.ts +++ b/packages/astro/src/content/sync.ts @@ -10,129 +10,206 @@ import type { DataStore } from './data-store.js'; import type { LoaderContext } from './loaders/types.js'; import { getEntryDataAndImages, globalContentConfigObserver, posixRelative } from './utils.js'; -export interface SyncContentLayerOptions { +export interface ContentLayerOptions { store: DataStore; settings: AstroSettings; logger: Logger; watcher?: FSWatcher; } -/** - * Run the `load()` method of each collection's loader, which will load the data and save it in the data store. - * The loader itself is responsible for deciding whether this will clear and reload the full collection, or - * perform an incremental update. After the data is loaded, the data store is written to disk. - */ -export async function syncContentLayer({ - settings, - logger: globalLogger, - 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'); - const contentConfig = globalContentConfigObserver.get(); - if (contentConfig?.status !== 'loaded') { - logger.debug('Content config not loaded, skipping sync'); - return; +export class ContentLayer { + #logger: Logger; + #store: DataStore; + #settings: AstroSettings; + #watcher?: FSWatcher; + #lastConfigDigest?: string; + #unsubscribe?: () => void; + + #generateDigest?: (data: Record | string) => string; + + #loading = false; + constructor({ settings, logger, store, watcher }: ContentLayerOptions) { + // The default max listeners is 10, which can be exceeded when using a lot of loaders + watcher?.setMaxListeners(50); + + this.#logger = logger; + this.#store = store; + this.#settings = settings; + this.#watcher = watcher; } - const previousConfigDigest = await store.metaStore().get('config-digest'); - const { digest: currentConfigDigest } = contentConfig.config; - if (currentConfigDigest && previousConfigDigest !== currentConfigDigest) { - logger.info('Content config changed, clearing cache'); - store.clearAll(); - await store.metaStore().set('config-digest', currentConfigDigest); + /** + * Whether the content layer is currently loading content + */ + get loading() { + return this.#loading; } - // 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(); + /** + * Watch for changes to the content config and trigger a sync when it changes. + */ + watchContentConfig() { + this.#unsubscribe?.(); + this.#unsubscribe = globalContentConfigObserver.subscribe(async (ctx) => { + if ( + !this.#loading && + ctx.status === 'loaded' && + ctx.config.digest !== this.#lastConfigDigest + ) { + this.#lastConfigDigest = ctx.config.digest; + this.sync(); + } + }); + } - const generateDigest = (data: Record | string) => { - const dataString = typeof data === 'string' ? data : JSON.stringify(data); - return h64ToString(dataString); - }; + unwatchContentConfig() { + this.#unsubscribe?.(); + } - await Promise.all( - Object.entries(contentConfig.config.collections).map(async ([name, collection]) => { - if (collection.type !== CONTENT_LAYER_TYPE) { - return; - } + /** + * Run the `load()` method of each collection's loader, which will load the data and save it in the data store. + * The loader itself is responsible for deciding whether this will clear and reload the full collection, or + * perform an incremental update. After the data is loaded, the data store is written to disk. + */ + async sync() { + if (this.#loading) { + return; + } + this.#loading = true; + try { + await this.#doSync(); + } finally { + this.#loading = false; + } + } + + async #getGenerateDigest() { + if (this.#generateDigest) { + return this.#generateDigest; + } + // 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(); - let { schema } = collection; + this.#generateDigest = (data: Record | string) => { + const dataString = typeof data === 'string' ? data : JSON.stringify(data); + return h64ToString(dataString); + }; - if (!schema && typeof collection.loader === 'object') { - schema = collection.loader.schema; - if (typeof schema === 'function') { - schema = await schema(); + return this.#generateDigest; + } + + async #getLoaderContext({ + collectionName, + loaderName = 'content', + parseData, + }: { + collectionName: string; + loaderName: string; + parseData: LoaderContext['parseData']; + }): Promise { + return { + collection: collectionName, + store: this.#store.scopedStore(collectionName), + meta: this.#store.metaStore(collectionName), + logger: this.#logger.forkIntegrationLogger(loaderName), + settings: this.#settings, + parseData, + generateDigest: await this.#getGenerateDigest(), + watcher: this.#watcher, + }; + } + + async #doSync() { + const logger = this.#logger.forkIntegrationLogger('content'); + logger.info('Syncing content'); + const contentConfig = globalContentConfigObserver.get(); + if (contentConfig?.status !== 'loaded') { + logger.debug('Content config not loaded, skipping sync'); + return; + } + + const previousConfigDigest = await this.#store.metaStore().get('config-digest'); + const { digest: currentConfigDigest } = contentConfig.config; + if (currentConfigDigest && previousConfigDigest !== currentConfigDigest) { + logger.info('Content config changed, clearing cache'); + this.#store.clearAll(); + await this.#store.metaStore().set('config-digest', currentConfigDigest); + } + + await Promise.all( + Object.entries(contentConfig.config.collections).map(async ([name, collection]) => { + if (collection.type !== CONTENT_LAYER_TYPE) { + return; } - } - const collectionWithResolvedSchema = { ...collection, schema }; - - const parseData: LoaderContext['parseData'] = async ({ id, data, filePath = '' }) => { - const { imageImports, data: parsedData } = await getEntryDataAndImages( - { - id, - collection: name, - unvalidatedData: data, - _internal: { - rawData: undefined, - filePath, + let { schema } = collection; + + if (!schema && typeof collection.loader === 'object') { + schema = collection.loader.schema; + if (typeof schema === 'function') { + schema = await schema(); + } + } + + const collectionWithResolvedSchema = { ...collection, schema }; + + const parseData: LoaderContext['parseData'] = async ({ id, data, filePath = '' }) => { + const { imageImports, data: parsedData } = await getEntryDataAndImages( + { + id, + collection: name, + unvalidatedData: data, + _internal: { + rawData: undefined, + filePath, + }, }, - }, - collectionWithResolvedSchema, - false - ); - if (imageImports?.length) { - store.addAssetImports( - imageImports, - // This path may already be relative, if we're re-parsing an existing entry - isAbsolute(filePath) - ? posixRelative(fileURLToPath(settings.config.root), filePath) - : filePath + collectionWithResolvedSchema, + false ); + if (imageImports?.length) { + this.#store.addAssetImports( + imageImports, + // This path may already be relative, if we're re-parsing an existing entry + isAbsolute(filePath) + ? posixRelative(fileURLToPath(this.#settings.config.root), filePath) + : filePath + ); + } + + return parsedData; + }; + + const context = await this.#getLoaderContext({ + collectionName: name, + parseData, + loaderName: collection.loader.name, + }); + + if (typeof collection.loader === 'function') { + return simpleLoader(collection.loader, context); } - return parsedData; - }; - - const payload: LoaderContext = { - collection: name, - store: store.scopedStore(name), - meta: store.metaStore(name), - logger: globalLogger.forkIntegrationLogger(collection.loader.name ?? 'content'), - settings, - parseData, - generateDigest, - watcher, - }; - - if (typeof collection.loader === 'function') { - return simpleLoader(collection.loader, payload); - } - - if (!collection.loader.load) { - throw new Error(`Collection loader for ${name} does not have a load method`); - } + if (!collection.loader.load) { + throw new Error(`Collection loader for ${name} does not have a load method`); + } - return collection.loader.load(payload); - }) - ); - if (!existsSync(settings.config.cacheDir)) { - await fs.mkdir(settings.config.cacheDir, { recursive: true }); + return collection.loader.load(context); + }) + ); + if (!existsSync(this.#settings.config.cacheDir)) { + await fs.mkdir(this.#settings.config.cacheDir, { recursive: true }); + } + const cacheFile = new URL(DATA_STORE_FILE, this.#settings.config.cacheDir); + await this.#store.writeToDisk(cacheFile); + if (!existsSync(this.#settings.dotAstroDir)) { + await fs.mkdir(this.#settings.dotAstroDir, { recursive: true }); + } + const assetImportsFile = new URL(ASSET_IMPORTS_FILE, this.#settings.dotAstroDir); + await this.#store.writeAssetImports(assetImportsFile); + logger.info('Synced content'); } - 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'); } export async function simpleLoader( @@ -146,3 +223,27 @@ export async function simpleLoader( context.store.set({ id: raw.id, data: item }); } } + +function contentLayerSingleton() { + let instance: ContentLayer | null = null; + return { + initialized: () => Boolean(instance), + init: (options: ContentLayerOptions) => { + instance?.unwatchContentConfig(); + instance = new ContentLayer(options); + return instance; + }, + get: () => { + if (!instance) { + throw new Error('Content layer not initialized'); + } + return instance; + }, + dispose: () => { + instance?.unwatchContentConfig(); + instance = null; + }, + }; +} + +export const globalContentLayer = contentLayerSingleton(); diff --git a/packages/astro/src/core/dev/dev.ts b/packages/astro/src/core/dev/dev.ts index 799684c58e60..8095c9743c1b 100644 --- a/packages/astro/src/core/dev/dev.ts +++ b/packages/astro/src/core/dev/dev.ts @@ -9,7 +9,7 @@ import type { AstroInlineConfig } from '../../@types/astro.js'; import { DATA_STORE_FILE } from '../../content/consts.js'; import { DataStore, globalDataStore } from '../../content/data-store.js'; import { attachContentServerListeners } from '../../content/index.js'; -import { syncContentLayer } from '../../content/sync.js'; +import { globalContentLayer } from '../../content/sync.js'; import { globalContentConfigObserver } from '../../content/utils.js'; import { telemetry } from '../../events/index.js'; import * as msg from '../messages.js'; @@ -122,37 +122,17 @@ export default async function dev(inlineConfig: AstroInlineConfig): Promise { - loading = false; }); + contentLayer.watchContentConfig(); + await contentLayer.sync(); } - globalContentConfigObserver.subscribe(async (ctx) => { - if (!loading && ctx.status === 'loaded' && ctx.config.digest !== currentDigest) { - loading = true; - currentDigest = ctx.config.digest; - await syncContentLayer({ - settings: restart.container.settings, - logger, - watcher: restart.container.viteServer.watcher, - store, - }).finally(() => { - loading = false; - }); - } - }); - logger.info(null, green('watching for file changes...')); return { diff --git a/packages/astro/src/core/sync/index.ts b/packages/astro/src/core/sync/index.ts index 885919ce9592..c73c69167552 100644 --- a/packages/astro/src/core/sync/index.ts +++ b/packages/astro/src/core/sync/index.ts @@ -8,7 +8,7 @@ import { getPackage } from '../../cli/install-package.js'; import { DATA_STORE_FILE } from '../../content/consts.js'; import { DataStore, globalDataStore } from '../../content/data-store.js'; import { createContentTypesGenerator } from '../../content/index.js'; -import { syncContentLayer } from '../../content/sync.js'; +import { globalContentLayer } from '../../content/sync.js'; import { globalContentConfigObserver } from '../../content/utils.js'; import { syncAstroEnv } from '../../env/sync.js'; import { telemetry } from '../../events/index.js'; @@ -135,7 +135,12 @@ export async function syncInternal({ store = new DataStore(); globalDataStore.set(store); } - await syncContentLayer({ settings, logger, store }); + const contentLayer = globalContentLayer.init({ + settings, + logger, + store, + }); + await contentLayer.sync(); settings.timer.end('Sync content layer'); } syncAstroEnv(settings, fs); diff --git a/packages/astro/test/test-utils.js b/packages/astro/test/test-utils.js index 8f6838b56569..bcd527948977 100644 --- a/packages/astro/test/test-utils.js +++ b/packages/astro/test/test-utils.js @@ -7,6 +7,7 @@ import fastGlob from 'fast-glob'; import stripAnsi from 'strip-ansi'; import { Agent } from 'undici'; import { check } from '../dist/cli/check/index.js'; +import { globalContentLayer } from '../dist/content/sync.js'; import build from '../dist/core/build/index.js'; import { RESOLVED_SPLIT_MODULE_ID } from '../dist/core/build/plugins/plugin-ssr.js'; import { getVirtualModulePageName } from '../dist/core/build/plugins/util.js'; @@ -158,6 +159,7 @@ export async function loadFixture(inlineConfig) { return { build: async (extraInlineConfig = {}, options = {}) => { + globalContentLayer.dispose(); process.env.NODE_ENV = 'production'; return build(mergeConfig(inlineConfig, extraInlineConfig), { teardownCompiler: false, @@ -169,6 +171,7 @@ export async function loadFixture(inlineConfig) { return await check(opts); }, startDevServer: async (extraInlineConfig = {}) => { + globalContentLayer.dispose(); process.env.NODE_ENV = 'development'; devServer = await dev(mergeConfig(inlineConfig, extraInlineConfig)); config.server.host = parseAddressToHost(devServer.address.address); // update host From fb3efef933d25179e4c80f8d5ea50949f2064dbc Mon Sep 17 00:00:00 2001 From: Matt Kane Date: Tue, 6 Aug 2024 11:04:29 +0100 Subject: [PATCH 22/34] fix: support filters in content layer getCollection (#11631) --- packages/astro/src/content/runtime.ts | 21 ++++++++++++------- packages/astro/test/content-layer.test.js | 6 ++++++ .../content-layer/src/loaders/post-loader.ts | 2 +- .../src/pages/collections.json.js | 17 ++++++++------- .../test/fixtures/content-layer/src/utils.js | 8 ------- 5 files changed, 29 insertions(+), 25 deletions(-) delete mode 100644 packages/astro/test/fixtures/content-layer/src/utils.js diff --git a/packages/astro/src/content/runtime.ts b/packages/astro/src/content/runtime.ts index abb66fac312b..0b79eae0b7d5 100644 --- a/packages/astro/src/content/runtime.ts +++ b/packages/astro/src/content/runtime.ts @@ -71,6 +71,7 @@ export function createGetCollection({ cacheEntriesByCollection: Map; }) { return async function getCollection(collection: string, filter?: (entry: any) => unknown) { + const hasFilter = typeof filter === 'function'; const store = await globalDataStore.get(); let type: 'content' | 'data'; if (collection in contentCollectionToEntryMap) { @@ -82,15 +83,19 @@ export function createGetCollection({ 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, + for (const rawEntry of store.values(collection)) { + const data = rawEntry.filePath + ? updateImageReferencesInData(rawEntry.data, rawEntry.filePath, imageAssetMap) + : rawEntry.data; + const entry = { + ...rawEntry, data, collection, - }); + }; + if(hasFilter && !filter(entry)) { + continue; + } + result.push(entry); } return result; } else { @@ -143,7 +148,7 @@ export function createGetCollection({ ); cacheEntriesByCollection.set(collection, entries); } - if (typeof filter === 'function') { + if (hasFilter) { return entries.filter(filter); } else { // Clone the array so users can safely mutate it. diff --git a/packages/astro/test/content-layer.test.js b/packages/astro/test/content-layer.test.js index 0023743b5906..a4a4f6dcb7cf 100644 --- a/packages/astro/test/content-layer.test.js +++ b/packages/astro/test/content-layer.test.js @@ -42,6 +42,12 @@ describe('Content Layer', () => { }); }); + it('filters collection items', async () => { + assert.ok(json.hasOwnProperty('customLoader')); + assert.ok(Array.isArray(json.customLoader)); + assert.equal(json.customLoader.length, 5); + }); + it('Returns `file()` loader collection', async () => { assert.ok(json.hasOwnProperty('fileLoader')); assert.ok(Array.isArray(json.fileLoader)); 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 e75403caa2b3..b03c1442227e 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,7 +26,7 @@ export function loader(config:PostLoaderConfig): Loader { store.clear(); - for (const data of posts.slice(0, 10)) { + for (const data of posts) { store.set({id: data.id, data}); } meta.set('lastSynced', String(Date.now())); 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 d2894f95f18e..f637bf80d02f 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,19 +1,20 @@ import { getCollection, getEntry } from 'astro:content'; import * as devalue from 'devalue'; -import { stripAllRenderFn, stripRenderFn } from '../utils'; export async function GET() { - const customLoader = stripAllRenderFn((await getCollection('blog')).slice(0, 10)); - const fileLoader = stripAllRenderFn(await getCollection('dogs')); + const customLoader = await getCollection('blog', (entry) => { + return entry.data.id < 6; + }); + const fileLoader = await getCollection('dogs'); - const dataEntry = stripRenderFn(await getEntry('dogs', 'beagle')); + const dataEntry = await getEntry('dogs', 'beagle'); - const simpleLoader = stripAllRenderFn(await getCollection('cats')); + const simpleLoader = await getCollection('cats'); - const entryWithReference = stripRenderFn(await getEntry('spacecraft', 'columbia-copy')); - const referencedEntry = stripRenderFn(await getEntry(entryWithReference.data.cat)); + const entryWithReference = await getEntry('spacecraft', 'columbia-copy'); + const referencedEntry = await getEntry(entryWithReference.data.cat); - const increment = stripRenderFn(await getEntry('increment', 'value')); + const increment = await getEntry('increment', 'value'); return new Response( devalue.stringify({ diff --git a/packages/astro/test/fixtures/content-layer/src/utils.js b/packages/astro/test/fixtures/content-layer/src/utils.js deleted file mode 100644 index 3a6244327862..000000000000 --- a/packages/astro/test/fixtures/content-layer/src/utils.js +++ /dev/null @@ -1,8 +0,0 @@ -export function stripRenderFn(entryWithRender) { - const { render, ...entry } = entryWithRender; - return entry; -} - -export function stripAllRenderFn(collection = []) { - return collection.map(stripRenderFn); -} From ede361085aa1fb9b91f7da9e971ff6d8712601f1 Mon Sep 17 00:00:00 2001 From: Matt Kane Date: Wed, 7 Aug 2024 09:31:09 +0100 Subject: [PATCH 23/34] Throw when using deprecated getEntryByX functions with content layer (#11637) --- packages/astro/src/content/runtime.ts | 40 ++++++------------- packages/astro/src/core/errors/errors-data.ts | 12 ++++++ .../content-layer/src/pages/index.astro | 4 +- 3 files changed, 27 insertions(+), 29 deletions(-) diff --git a/packages/astro/src/content/runtime.ts b/packages/astro/src/content/runtime.ts index 0b79eae0b7d5..f1934d09a63f 100644 --- a/packages/astro/src/content/runtime.ts +++ b/packages/astro/src/content/runtime.ts @@ -92,7 +92,7 @@ export function createGetCollection({ data, collection, }; - if(hasFilter && !filter(entry)) { + if (hasFilter && !filter(entry)) { continue; } result.push(entry); @@ -170,20 +170,13 @@ export function createGetEntryBySlug({ 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, - }; - } if (!collectionNames.has(collection)) { + if (store.hasCollection(collection)) { + throw new AstroError({ + ...AstroErrorData.GetEntryDeprecationError, + message: AstroErrorData.GetEntryDeprecationError.message(collection, 'getEntryBySlug'), + }); + } // eslint-disable-next-line no-console console.warn(`The collection ${JSON.stringify(collection)} does not exist.`); return undefined; @@ -221,20 +214,13 @@ export function createGetDataEntryById({ return async function getDataEntryById(collection: string, id: string) { const store = await globalDataStore.get(); - if (store.hasCollection(collection)) { - const data = store.get(collection, id); - if (!data) { - throw new Error(`Entry ${collection} → ${id} was not found.`); - } - - const entry = store.get(collection, id); - - return { - ...entry, - collection, - }; - } if (!collectionNames.has(collection)) { + if (store.hasCollection(collection)) { + throw new AstroError({ + ...AstroErrorData.GetEntryDeprecationError, + message: AstroErrorData.GetEntryDeprecationError.message(collection, 'getDataEntryById'), + }); + } // eslint-disable-next-line no-console console.warn(`The collection ${JSON.stringify(collection)} does not exist.`); return undefined; diff --git a/packages/astro/src/core/errors/errors-data.ts b/packages/astro/src/core/errors/errors-data.ts index 15f2ad769e1d..263a8a16aabc 100644 --- a/packages/astro/src/core/errors/errors-data.ts +++ b/packages/astro/src/core/errors/errors-data.ts @@ -1482,6 +1482,18 @@ export const ContentLayerWriteError = { title: 'Could not write content layer data.', } satisfies ErrorData; +/** + * @docs + * @description + * The `getDataEntryById` and `getEntryBySlug` functions are deprecated and cannot be used with content layer collections. Use the `getEntry` function instead. + */ +export const GetEntryDeprecationError = { + name: 'GetEntryDeprecationError', + title: 'Invalid use of `getDataEntryById` or `getEntryBySlug` function.', + message: (collection: string, method: string) => `The \`${method}\` function is deprecated and cannot be used to query the "${collection}" collection. Use \`getEntry\` instead.`, + hint: 'Use the `getEntry` or `getCollection` functions to query content layer collections.', +} satisfies ErrorData; + /** * @docs * @message diff --git a/packages/astro/test/fixtures/content-layer/src/pages/index.astro b/packages/astro/test/fixtures/content-layer/src/pages/index.astro index 7036de032fdf..970dffaf003d 100644 --- a/packages/astro/test/fixtures/content-layer/src/pages/index.astro +++ b/packages/astro/test/fixtures/content-layer/src/pages/index.astro @@ -1,8 +1,8 @@ --- -import { getCollection, getDataEntryById } from 'astro:content'; +import { getCollection, getEntry } from 'astro:content'; const blog = await getCollection('blog'); -const first = await getDataEntryById('blog', 1); +const first = await getEntry('blog', 1); const dogs = await getCollection('dogs'); --- From e2658059a7fb7719cbaae7eee7dd2316544e29e5 Mon Sep 17 00:00:00 2001 From: Matt Kane Date: Wed, 7 Aug 2024 11:28:16 +0100 Subject: [PATCH 24/34] Updates to content layer types and jsdocs (#11643) --- packages/astro/src/content/data-store.ts | 43 ++++++++++----------- packages/astro/src/content/loaders/types.ts | 1 - 2 files changed, 21 insertions(+), 23 deletions(-) diff --git a/packages/astro/src/content/data-store.ts b/packages/astro/src/content/data-store.ts index b8de8f52d943..6660ef4bef2f 100644 --- a/packages/astro/src/content/data-store.ts +++ b/packages/astro/src/content/data-store.ts @@ -6,21 +6,32 @@ import { AstroError, AstroErrorData } from '../core/errors/index.js'; const SAVE_DEBOUNCE_MS = 500; export interface RenderedContent { + /** Rendered HTML string. If present then `render(entry)` will return a component that renders this HTML. */ html: string; metadata?: { - imagePaths: Array; + /** Any images that are present in this entry. Relative to the {@link DataEntry} filePath. */ + imagePaths?: Array; + /** Any headings that are present in this file. */ headings?: MarkdownHeading[]; + /** Raw frontmatter, parsed parsed from the file. This may include data from remark plugins. */ frontmatter?: Record; + /** Any other metadata that is present in this file. */ [key: string]: unknown; }; } export interface DataEntry = Record> { + /** The ID of the entry. Unique per collection. */ id: string; + /** The parsed entry data */ data: TData; + /** The file path of the content, if applicable. Relative to the site root. */ filePath?: string; + /** The raw body of the content, if applicable. */ body?: string; + /** An optional content digest, to check if the content has changed. */ digest?: number | string; + /** The rendered content of the entry, if applicable. */ rendered?: RenderedContent; } @@ -305,24 +316,18 @@ export interface ScopedDataStore { 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 `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: { + /** The ID of the entry. Must be unique per collection. */ id: string; + /** The data to store. */ data: TData; + /** The raw body of the content, if applicable. */ body?: string; + /** The file path of the content, if applicable. Relative to the site root. */ filePath?: string; + /** A content digest, to check if the content has changed. */ digest?: number | string; + /** The rendered content, if applicable. */ rendered?: RenderedContent; }) => boolean; values: () => Array; @@ -331,18 +336,11 @@ export interface ScopedDataStore { 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. + * @internal Adds asset imports to the store. This is used to track image imports for the build. This API is subject to change. */ 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 + * @internal Adds an asset import to the store. This is used to track image imports for the build. This API is subject to change. */ addAssetImport: (assetImport: string, fileName: string) => void; } @@ -373,4 +371,5 @@ function dataStoreSingleton() { }; } +/** @internal */ export const globalDataStore = dataStoreSingleton(); diff --git a/packages/astro/src/content/loaders/types.ts b/packages/astro/src/content/loaders/types.ts index 3a17431925b9..f372967277b7 100644 --- a/packages/astro/src/content/loaders/types.ts +++ b/packages/astro/src/content/loaders/types.ts @@ -40,5 +40,4 @@ export interface Loader { 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; } From bd2684eef80e84feaf8611745503f67767b62ff0 Mon Sep 17 00:00:00 2001 From: Matt Kane Date: Wed, 7 Aug 2024 15:29:22 +0100 Subject: [PATCH 25/34] Add hot key to reload content layer (#11626) * Add hot key to reload content layer * Fix filename * Remove cli message * Update example * Change key to "s" --- .../src/content/{sync.ts => content-layer.ts} | 4 ++-- packages/astro/src/core/dev/dev.ts | 2 +- packages/astro/src/core/dev/restart.ts | 14 ++++++++++++-- packages/astro/src/core/sync/index.ts | 2 +- .../fixtures/content-layer/src/content/config.ts | 4 +++- .../fixtures/content-layer/src/pages/index.astro | 3 +++ packages/astro/test/test-utils.js | 2 +- 7 files changed, 23 insertions(+), 8 deletions(-) rename packages/astro/src/content/{sync.ts => content-layer.ts} (99%) diff --git a/packages/astro/src/content/sync.ts b/packages/astro/src/content/content-layer.ts similarity index 99% rename from packages/astro/src/content/sync.ts rename to packages/astro/src/content/content-layer.ts index 7c9f19810c5f..8fe0ee3dd899 100644 --- a/packages/astro/src/content/sync.ts +++ b/packages/astro/src/content/content-layer.ts @@ -56,7 +56,6 @@ export class ContentLayer { ctx.status === 'loaded' && ctx.config.digest !== this.#lastConfigDigest ) { - this.#lastConfigDigest = ctx.config.digest; this.sync(); } }); @@ -128,9 +127,10 @@ export class ContentLayer { logger.debug('Content config not loaded, skipping sync'); return; } + const { digest: currentConfigDigest } = contentConfig.config; + this.#lastConfigDigest = currentConfigDigest; const previousConfigDigest = await this.#store.metaStore().get('config-digest'); - const { digest: currentConfigDigest } = contentConfig.config; if (currentConfigDigest && previousConfigDigest !== currentConfigDigest) { logger.info('Content config changed, clearing cache'); this.#store.clearAll(); diff --git a/packages/astro/src/core/dev/dev.ts b/packages/astro/src/core/dev/dev.ts index 8095c9743c1b..12f66f9b4137 100644 --- a/packages/astro/src/core/dev/dev.ts +++ b/packages/astro/src/core/dev/dev.ts @@ -7,9 +7,9 @@ import { gt, major, minor, patch } from 'semver'; import type * as vite from 'vite'; import type { AstroInlineConfig } from '../../@types/astro.js'; import { DATA_STORE_FILE } from '../../content/consts.js'; +import { globalContentLayer } from '../../content/content-layer.js'; import { DataStore, globalDataStore } from '../../content/data-store.js'; import { attachContentServerListeners } from '../../content/index.js'; -import { globalContentLayer } from '../../content/sync.js'; import { globalContentConfigObserver } from '../../content/utils.js'; import { telemetry } from '../../events/index.js'; import * as msg from '../messages.js'; diff --git a/packages/astro/src/core/dev/restart.ts b/packages/astro/src/core/dev/restart.ts index a30cbe7e316d..ff2ad511f25e 100644 --- a/packages/astro/src/core/dev/restart.ts +++ b/packages/astro/src/core/dev/restart.ts @@ -2,6 +2,7 @@ import type nodeFs from 'node:fs'; import { fileURLToPath } from 'node:url'; import * as vite from 'vite'; import type { AstroInlineConfig, AstroSettings } from '../../@types/astro.js'; +import { globalContentLayer } from '../../content/content-layer.js'; import { eventCliSession, telemetry } from '../../events/index.js'; import { createNodeLogger, createSettings, resolveConfig } from '../config/index.js'; import { collectErrorMetadata } from '../errors/dev/utils.js'; @@ -169,10 +170,19 @@ export async function createContainerWithAutomaticRestart({ // Ignore the `forceOptimize` parameter for now. restart.container.viteServer.restart = () => handleServerRestart(); - // Set up shortcuts, overriding Vite's default shortcuts so it works for Astro + // Set up shortcuts restart.container.viteServer.bindCLIShortcuts({ customShortcuts: [ - // Disable Vite's builtin "r" (restart server), "u" (print server urls) and "c" (clear console) shortcuts + { + key: 's', + description: 'sync content layer', + action: () => { + if (globalContentLayer.initialized()) { + globalContentLayer.get().sync(); + } + }, + }, + // Disable default Vite shortcuts that don't work well with Astro { key: 'r', description: '' }, { key: 'u', description: '' }, { key: 'c', description: '' }, diff --git a/packages/astro/src/core/sync/index.ts b/packages/astro/src/core/sync/index.ts index c73c69167552..8d82e50cbd79 100644 --- a/packages/astro/src/core/sync/index.ts +++ b/packages/astro/src/core/sync/index.ts @@ -6,9 +6,9 @@ import { type HMRPayload, createServer } from 'vite'; import type { AstroConfig, AstroInlineConfig, AstroSettings } from '../../@types/astro.js'; import { getPackage } from '../../cli/install-package.js'; import { DATA_STORE_FILE } from '../../content/consts.js'; +import { globalContentLayer } from '../../content/content-layer.js'; import { DataStore, globalDataStore } from '../../content/data-store.js'; import { createContentTypesGenerator } from '../../content/index.js'; -import { globalContentLayer } from '../../content/sync.js'; import { globalContentConfigObserver } from '../../content/utils.js'; import { syncAstroEnv } from '../../env/sync.js'; import { telemetry } from '../../events/index.js'; 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 d1c51d3ff82f..116e5d995bf3 100644 --- a/packages/astro/test/fixtures/content-layer/src/content/config.ts +++ b/packages/astro/test/fixtures/content-layer/src/content/config.ts @@ -96,18 +96,20 @@ const increment = defineCollection({ loader: { name: 'increment-loader', load: async ({ store }) => { - const entry = store.get<{ lastValue: number }>('value'); + const entry = store.get('value'); const lastValue: number = entry?.data.lastValue ?? 0; store.set({ id: 'value', data: { lastValue: lastValue + 1, + lastUpdated: new Date(), }, }); }, }, schema: z.object({ lastValue: z.number(), + lastUpdated: z.date(), }), }); diff --git a/packages/astro/test/fixtures/content-layer/src/pages/index.astro b/packages/astro/test/fixtures/content-layer/src/pages/index.astro index 970dffaf003d..dbd18118a045 100644 --- a/packages/astro/test/fixtures/content-layer/src/pages/index.astro +++ b/packages/astro/test/fixtures/content-layer/src/pages/index.astro @@ -4,12 +4,14 @@ import { getCollection, getEntry } from 'astro:content'; const blog = await getCollection('blog'); const first = await getEntry('blog', 1); const dogs = await getCollection('dogs'); +const increment = await getEntry('increment', 'value'); --- Index +

Last updated: {increment.data.lastUpdated.toLocaleTimeString()}

Dogs

+ diff --git a/packages/astro/test/test-utils.js b/packages/astro/test/test-utils.js index bcd527948977..7e8fb046df68 100644 --- a/packages/astro/test/test-utils.js +++ b/packages/astro/test/test-utils.js @@ -7,7 +7,7 @@ import fastGlob from 'fast-glob'; import stripAnsi from 'strip-ansi'; import { Agent } from 'undici'; import { check } from '../dist/cli/check/index.js'; -import { globalContentLayer } from '../dist/content/sync.js'; +import { globalContentLayer } from '../dist/content/content-layer.js'; import build from '../dist/core/build/index.js'; import { RESOLVED_SPLIT_MODULE_ID } from '../dist/core/build/plugins/plugin-ssr.js'; import { getVirtualModulePageName } from '../dist/core/build/plugins/util.js'; From aa2e2c59a326cff2c9fe3188fb750a8a0b5350d7 Mon Sep 17 00:00:00 2001 From: Emanuele Stoppa Date: Thu, 8 Aug 2024 12:39:42 +0100 Subject: [PATCH 26/34] feat: handle simple mdx rendering (#11633) * feat: handle simple mdx rendering * cleanup * feedback * fix regression * remove log * flip condition * update tests * log collections to understand the error * let's try this alternative * try parallel test to understand the issue * chore: use a new fixture to fix tests * rebase and docs * fix regressions * remove old code * address feedback * rename param * log error * rebase * chore: try a different cache dir to solve the error test * fix invalidation of the module when there's no store available * address suggestion --- packages/astro/src/content/consts.ts | 12 ++ packages/astro/src/content/content-layer.ts | 9 +- packages/astro/src/content/data-store.ts | 112 +++++++++++++++++- packages/astro/src/content/loaders/glob.ts | 10 +- packages/astro/src/content/runtime.ts | 19 ++- packages/astro/src/content/utils.ts | 7 +- .../vite-plugin-content-virtual-mod.ts | 43 ++++++- packages/astro/src/core/errors/errors-data.ts | 3 +- .../astro/test/content-layer-render.test.js | 41 +++++++ packages/astro/test/content-layer.test.js | 1 + .../content-layer-rendering/.gitignore | 1 + .../content-layer-rendering/astro.config.mjs | 14 +++ .../content-outside-src-mdx/iguana.mdx | 14 +++ .../content-outside-src-mdx/shuttle.jpg | Bin 0 -> 174008 bytes .../images/atlantis.avif | Bin 0 -> 74927 bytes .../images/launch.webp | Bin 0 -> 73552 bytes .../images/shuttle.jpg | Bin 0 -> 174008 bytes .../content-layer-rendering/package.json | 9 ++ .../src/components/H2.astro | 4 + .../src/components/H3.astro | 2 + .../src/components/LayoutProp.astro | 39 ++++++ .../src/components/WithScripts.astro | 11 ++ .../src/content/config.ts | 19 +++ .../src/pages/reptiles/[slug].astro | 25 ++++ .../content-layer/src/content/config.ts | 1 - pnpm-lock.yaml | 9 ++ 26 files changed, 395 insertions(+), 10 deletions(-) create mode 100644 packages/astro/test/content-layer-render.test.js create mode 100644 packages/astro/test/fixtures/content-layer-rendering/.gitignore create mode 100644 packages/astro/test/fixtures/content-layer-rendering/astro.config.mjs create mode 100644 packages/astro/test/fixtures/content-layer-rendering/content-outside-src-mdx/iguana.mdx create mode 100644 packages/astro/test/fixtures/content-layer-rendering/content-outside-src-mdx/shuttle.jpg create mode 100644 packages/astro/test/fixtures/content-layer-rendering/images/atlantis.avif create mode 100644 packages/astro/test/fixtures/content-layer-rendering/images/launch.webp create mode 100644 packages/astro/test/fixtures/content-layer-rendering/images/shuttle.jpg create mode 100644 packages/astro/test/fixtures/content-layer-rendering/package.json create mode 100644 packages/astro/test/fixtures/content-layer-rendering/src/components/H2.astro create mode 100644 packages/astro/test/fixtures/content-layer-rendering/src/components/H3.astro create mode 100644 packages/astro/test/fixtures/content-layer-rendering/src/components/LayoutProp.astro create mode 100644 packages/astro/test/fixtures/content-layer-rendering/src/components/WithScripts.astro create mode 100644 packages/astro/test/fixtures/content-layer-rendering/src/content/config.ts create mode 100644 packages/astro/test/fixtures/content-layer-rendering/src/pages/reptiles/[slug].astro diff --git a/packages/astro/src/content/consts.ts b/packages/astro/src/content/consts.ts index 269b5a27d09d..c1ac5ee70cab 100644 --- a/packages/astro/src/content/consts.ts +++ b/packages/astro/src/content/consts.ts @@ -3,11 +3,21 @@ export const CONTENT_RENDER_FLAG = 'astroRenderContent'; export const CONTENT_FLAG = 'astroContentCollectionEntry'; export const DATA_FLAG = 'astroDataCollectionEntry'; export const CONTENT_IMAGE_FLAG = 'astroContentImageFlag'; +export const CONTENT_MODULE_FLAG = 'astroContentModuleFlag'; 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; + +// Used by the content layer to create a virtual module that loads the `modules.mjs`, a file created by the content layer +// to map modules that are renderer at runtime +export const MODULES_MJS_ID = 'astro:content-module-imports'; +export const MODULES_MJS_VIRTUAL_ID = '\0' + MODULES_MJS_ID; + +export const DEFERRED_MODULE = 'astro:content-layer-deferred-module'; + +// Used by the content layer to create a virtual module that loads the `assets.mjs` 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@@'; @@ -21,11 +31,13 @@ export const CONTENT_FLAGS = [ DATA_FLAG, PROPAGATED_ASSET_FLAG, CONTENT_IMAGE_FLAG, + CONTENT_MODULE_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'; +export const MODULES_IMPORTS_FILE = 'modules.mjs'; export const CONTENT_LAYER_TYPE = 'experimental_content'; diff --git a/packages/astro/src/content/content-layer.ts b/packages/astro/src/content/content-layer.ts index 8fe0ee3dd899..7d5a71192675 100644 --- a/packages/astro/src/content/content-layer.ts +++ b/packages/astro/src/content/content-layer.ts @@ -5,7 +5,12 @@ 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 { ASSET_IMPORTS_FILE, CONTENT_LAYER_TYPE, DATA_STORE_FILE } from './consts.js'; +import { + ASSET_IMPORTS_FILE, + CONTENT_LAYER_TYPE, + DATA_STORE_FILE, + MODULES_IMPORTS_FILE, +} from './consts.js'; import type { DataStore } from './data-store.js'; import type { LoaderContext } from './loaders/types.js'; import { getEntryDataAndImages, globalContentConfigObserver, posixRelative } from './utils.js'; @@ -208,6 +213,8 @@ export class ContentLayer { } const assetImportsFile = new URL(ASSET_IMPORTS_FILE, this.#settings.dotAstroDir); await this.#store.writeAssetImports(assetImportsFile); + const modulesImportsFile = new URL(MODULES_IMPORTS_FILE, this.#settings.dotAstroDir); + await this.#store.writeModuleImports(modulesImportsFile); logger.info('Synced content'); } } diff --git a/packages/astro/src/content/data-store.ts b/packages/astro/src/content/data-store.ts index 6660ef4bef2f..4baf71bfbcf3 100644 --- a/packages/astro/src/content/data-store.ts +++ b/packages/astro/src/content/data-store.ts @@ -3,6 +3,8 @@ import type { MarkdownHeading } from '@astrojs/markdown-remark'; import * as devalue from 'devalue'; import { imageSrcToImportId, importIdToSymbolName } from '../assets/utils/resolveImports.js'; import { AstroError, AstroErrorData } from '../core/errors/index.js'; +import {CONTENT_MODULE_FLAG, DEFERRED_MODULE} from './consts.js'; + const SAVE_DEBOUNCE_MS = 500; export interface RenderedContent { @@ -33,6 +35,10 @@ export interface DataEntry = Record(); + #moduleImports = new Map(); constructor() { this.#collections = new Map(); } + get(collectionName: string, key: string): T | undefined { return this.#collections.get(collectionName)?.get(String(key)); } + entries(collectionName: string): Array<[id: string, T]> { const collection = this.#collections.get(collectionName) ?? new Map(); return [...collection.entries()]; } + values(collectionName: string): Array { const collection = this.#collections.get(collectionName) ?? new Map(); return [...collection.values()]; } + keys(collectionName: string): Array { const collection = this.#collections.get(collectionName) ?? new Map(); return [...collection.keys()]; } + set(collectionName: string, key: string, value: unknown) { const collection = this.#collections.get(collectionName) ?? new Map(); collection.set(String(key), value); this.#collections.set(collectionName, collection); this.#saveToDiskDebounced(); } + delete(collectionName: string, key: string) { const collection = this.#collections.get(collectionName); if (collection) { @@ -81,6 +97,7 @@ export class DataStore { this.#saveToDiskDebounced(); } } + clear(collectionName: string) { this.#collections.delete(collectionName); this.#saveToDiskDebounced(); @@ -122,6 +139,17 @@ export class DataStore { assets.forEach((asset) => this.addAssetImport(asset, filePath)); } + addModuleImport(fileName: string) { + const id = contentModuleToId(fileName); + if (id) { + this.#moduleImports.set(fileName, 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.#writeModulesImportsDebounced(); + } + } + async writeAssetImports(filePath: PathLike) { this.#assetsFile = filePath; @@ -164,6 +192,45 @@ export default new Map([${exports.join(', ')}]); this.#assetsDirty = false; } + async writeModuleImports(filePath: PathLike) { + this.#modulesFile = filePath; + + if (this.#moduleImports.size === 0) { + try { + await fs.writeFile(filePath, 'export default new Map();'); + } catch (err) { + throw new AstroError({ + message: (err as Error).message, + ...AstroErrorData.ContentLayerWriteError, + }); + } + } + + if (!this.#modulesDirty && 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 lines: Array = []; + for (const [fileName, specifier] of this.#moduleImports) { + lines.push(`['${fileName}', () => import('${specifier}')]`); + } + const code = /* js */ ` +export default new Map([\n${lines.join(',\n')}]); + `; + try { + await fs.writeFile(filePath, code); + } catch (err) { + throw new AstroError({ + message: (err as Error).message, + ...AstroErrorData.ContentLayerWriteError, + }); + } + this.#modulesDirty = false; + } + #writeAssetsImportsDebounced() { this.#assetsDirty = true; if (this.#assetsFile) { @@ -177,6 +244,19 @@ export default new Map([${exports.join(', ')}]); } } + #writeModulesImportsDebounced() { + this.#modulesDirty = true; + if (this.#modulesFile) { + if (this.#modulesSaveTimeout) { + clearTimeout(this.#modulesSaveTimeout); + } + this.#modulesSaveTimeout = setTimeout(() => { + this.#modulesSaveTimeout = undefined; + this.writeModuleImports(this.#modulesFile!); + }, SAVE_DEBOUNCE_MS); + } + } + #saveToDiskDebounced() { this.#dirty = true; // Only save to disk if it has already been saved once @@ -198,7 +278,7 @@ export default new Map([${exports.join(', ')}]); entries: () => this.entries(collectionName), values: () => this.values(collectionName), keys: () => this.keys(collectionName), - set: ({ id: key, data, body, filePath, digest, rendered }) => { + set: ({ id: key, data, body, filePath, deferredRender, digest, rendered }) => { if (!key) { throw new Error(`ID must be a non-empty string`); } @@ -230,7 +310,12 @@ export default new Map([${exports.join(', ')}]); if (rendered) { entry.rendered = rendered; } - + if (deferredRender) { + entry.deferredRender = deferredRender; + if (filePath) { + this.addModuleImport(filePath) + } + } this.set(collectionName, id, entry); return true; }, @@ -241,6 +326,8 @@ export default new Map([${exports.join(', ')}]); this.addAssetImport(assetImport, fileName), addAssetImports: (assets: Array, fileName: string) => this.addAssetImports(assets, fileName), + addModuleImport: (fileName: string) => + this.addModuleImport(fileName), }; } /** @@ -275,6 +362,7 @@ export default new Map([${exports.join(', ')}]); }); } } + /** * Attempts to load a DataStore from the virtual module. * This only works in Vite. @@ -329,6 +417,10 @@ export interface ScopedDataStore { digest?: number | string; /** The rendered content, if applicable. */ rendered?: RenderedContent; + /** + * If an entry is a deferred, its rendering phase is delegated to a virtual module during the runtime phase. + */ + deferredRender?: boolean; }) => boolean; values: () => Array; keys: () => Array; @@ -343,6 +435,14 @@ export interface ScopedDataStore { * @internal Adds an asset import to the store. This is used to track image imports for the build. This API is subject to change. */ addAssetImport: (assetImport: string, 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 fileName + * @param specifier + * @returns + */ + addModuleImport: (fileName: string) => void; } /** @@ -371,5 +471,13 @@ function dataStoreSingleton() { }; } +// TODO: find a better place to put this image +export function contentModuleToId(fileName: string) { + const params = new URLSearchParams(DEFERRED_MODULE); + params.set('fileName', fileName); + params.set(CONTENT_MODULE_FLAG, 'true'); + return `${DEFERRED_MODULE}?${params.toString()}`; +} + /** @internal */ export const globalDataStore = dataStoreSingleton(); diff --git a/packages/astro/src/content/loaders/glob.ts b/packages/astro/src/content/loaders/glob.ts index b3eeba005410..a6522a56d917 100644 --- a/packages/astro/src/content/loaders/glob.ts +++ b/packages/astro/src/content/loaders/glob.ts @@ -18,6 +18,7 @@ export interface GenerateIdOptions { /** 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; @@ -102,6 +103,10 @@ export function glob(globOptions: GlobOptions): Loader { const digest = generateDigest(contents); if (existingEntry && existingEntry.digest === digest && existingEntry.filePath) { + if (existingEntry.deferredRender) { + store.addModuleImport(existingEntry.filePath); + } + if (existingEntry.rendered?.metadata?.imagePaths?.length) { // Add asset imports for existing entries store.addAssetImports( @@ -124,7 +129,9 @@ export function glob(globOptions: GlobOptions): Loader { filePath, }); - if (entryType.getRenderFunction) { + if (entryType.extensions.includes('.mdx')) { + store.set({ id, data: parsedData, body, filePath: relativePath, digest, deferredRender: true }); + } else if (entryType.getRenderFunction) { let render = renderFunctionByContentType.get(entryType); if (!render) { render = await entryType.getRenderFunction(settings); @@ -261,6 +268,7 @@ export function glob(globOptions: GlobOptions): Loader { await syncData(entry, baseUrl, entryType); logger.info(`Reloaded data from ${green(entry)}`); } + watcher.on('change', onChange); watcher.on('add', onChange); diff --git a/packages/astro/src/content/runtime.ts b/packages/astro/src/content/runtime.ts index f1934d09a63f..df22e6f9d065 100644 --- a/packages/astro/src/content/runtime.ts +++ b/packages/astro/src/content/runtime.ts @@ -20,6 +20,7 @@ import { import { CONTENT_LAYER_TYPE, IMAGE_IMPORT_PREFIX } from './consts.js'; import { type DataEntry, globalDataStore } from './data-store.js'; import type { ContentLookupMap } from './utils.js'; + type LazyImport = () => Promise; type GlobResult = Record; type CollectionToEntryMap = Record; @@ -87,6 +88,7 @@ export function createGetCollection({ const data = rawEntry.filePath ? updateImageReferencesInData(rawEntry.data, rawEntry.filePath, imageAssetMap) : rawEntry.data; + const entry = { ...rawEntry, data, @@ -107,6 +109,7 @@ export function createGetCollection({ ); return []; } + const lazyImports = Object.values( type === 'content' ? contentCollectionToEntryMap[collection] @@ -368,7 +371,7 @@ 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 @@ -442,6 +445,20 @@ export async function renderEntry( return entry.render(); } + if (entry.deferredRender) { + try { + // @ts-expect-error virtual module + const { default: contentModules } = await import('astro:content-module-imports'); + const module = contentModules.get(entry.filePath); + return await module(); + + } catch (e) { + // eslint-disable-next-line + console.error(e); + } + + } + const html = entry?.rendered?.metadata?.imagePaths?.length && entry.filePath ? await updateImageReferencesInBody(entry.rendered.html, entry.filePath) diff --git a/packages/astro/src/content/utils.ts b/packages/astro/src/content/utils.ts index 1aef0eb73b41..bc06bbd0b698 100644 --- a/packages/astro/src/content/utils.ts +++ b/packages/astro/src/content/utils.ts @@ -18,7 +18,7 @@ import { isYAMLException } from '../core/errors/utils.js'; import type { Logger } from '../core/logger/core.js'; import { CONTENT_FLAGS, - CONTENT_LAYER_TYPE, + CONTENT_LAYER_TYPE, CONTENT_MODULE_FLAG, IMAGE_IMPORT_PREFIX, PROPAGATED_ASSET_FLAG, } from './consts.js'; @@ -474,6 +474,11 @@ export function hasContentFlag(viteId: string, flag: (typeof CONTENT_FLAGS)[numb return flags.has(flag); } +export function isDeferredModule(viteId: string): boolean { + const flags = new URLSearchParams(viteId.split('?')[1] ?? ''); + return flags.has(CONTENT_MODULE_FLAG); +} + async function loadContentConfig({ fs, settings, 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 14f459575d72..cb80f9a52638 100644 --- a/packages/astro/src/content/vite-plugin-content-virtual-mod.ts +++ b/packages/astro/src/content/vite-plugin-content-virtual-mod.ts @@ -22,6 +22,9 @@ import { DATA_FLAG, DATA_STORE_FILE, DATA_STORE_VIRTUAL_ID, + MODULES_IMPORTS_FILE, + MODULES_MJS_ID, + MODULES_MJS_VIRTUAL_ID, RESOLVED_DATA_STORE_VIRTUAL_ID, RESOLVED_VIRTUAL_MODULE_ID, VIRTUAL_MODULE_ID, @@ -37,6 +40,7 @@ import { getEntrySlug, getEntryType, getExtGlob, + isDeferredModule, } from './utils.js'; interface AstroContentVirtualModPluginParams { @@ -57,7 +61,7 @@ export function astroContentVirtualModPlugin({ configResolved(config) { IS_DEV = config.mode === 'development'; }, - resolveId(id) { + async resolveId(id) { if (id === VIRTUAL_MODULE_ID) { if (!settings.config.experimental.contentCollectionCache) { return RESOLVED_VIRTUAL_MODULE_ID; @@ -72,6 +76,28 @@ export function astroContentVirtualModPlugin({ if (id === DATA_STORE_VIRTUAL_ID) { return RESOLVED_DATA_STORE_VIRTUAL_ID; } + + if (isDeferredModule(id)) { + const [, query] = id.split('?'); + const params = new URLSearchParams(query); + const fileName = params.get('fileName'); + let importerPath = undefined; + if (fileName && URL.canParse(fileName, settings.config.root.toString())) { + importerPath = fileURLToPath(new URL(fileName, settings.config.root)); + } + if (importerPath) { + return await this.resolve(importerPath); + } + } + + if (id === MODULES_MJS_ID) { + const modules = new URL(MODULES_IMPORTS_FILE, settings.dotAstroDir); + if (fs.existsSync(modules)) { + return fileURLToPath(modules); + } + return MODULES_MJS_VIRTUAL_ID; + } + if (id === ASSET_IMPORTS_VIRTUAL_ID) { const assetImportsFile = new URL(ASSET_IMPORTS_FILE, settings.dotAstroDir); if (fs.existsSync(assetImportsFile)) { @@ -126,7 +152,20 @@ export function astroContentVirtualModPlugin({ } if (id === ASSET_IMPORTS_RESOLVED_STUB_ID) { - return 'export default new Map()'; + const assetImportsFile = new URL(ASSET_IMPORTS_FILE, settings.dotAstroDir); + if (!fs.existsSync(assetImportsFile)) { + return 'export default new Map()'; + } + return fs.readFileSync(assetImportsFile, 'utf-8'); + + } + + if (id === MODULES_MJS_VIRTUAL_ID) { + const modules = new URL(MODULES_IMPORTS_FILE, settings.dotAstroDir); + if (!fs.existsSync(modules)) { + return 'export default new Map()'; + } + return fs.readFileSync(modules, 'utf-8'); } }, renderChunk(code, chunk) { diff --git a/packages/astro/src/core/errors/errors-data.ts b/packages/astro/src/core/errors/errors-data.ts index 263a8a16aabc..abc06592c466 100644 --- a/packages/astro/src/core/errors/errors-data.ts +++ b/packages/astro/src/core/errors/errors-data.ts @@ -1490,7 +1490,8 @@ export const ContentLayerWriteError = { export const GetEntryDeprecationError = { name: 'GetEntryDeprecationError', title: 'Invalid use of `getDataEntryById` or `getEntryBySlug` function.', - message: (collection: string, method: string) => `The \`${method}\` function is deprecated and cannot be used to query the "${collection}" collection. Use \`getEntry\` instead.`, + message: (collection: string, method: string) => + `The \`${method}\` function is deprecated and cannot be used to query the "${collection}" collection. Use \`getEntry\` instead.`, hint: 'Use the `getEntry` or `getCollection` functions to query content layer collections.', } satisfies ErrorData; diff --git a/packages/astro/test/content-layer-render.test.js b/packages/astro/test/content-layer-render.test.js new file mode 100644 index 000000000000..3a44794045e9 --- /dev/null +++ b/packages/astro/test/content-layer-render.test.js @@ -0,0 +1,41 @@ +import assert from 'node:assert/strict'; +import { after, before, describe, it } from 'node:test'; +import { loadFixture } from './test-utils.js'; + +describe('Content Layer dev', () => { + /** @type {import("./test-utils.js").Fixture} */ + let fixture; + + let devServer; + before(async () => { + fixture = await loadFixture({ root: './fixtures/content-layer-rendering/', cacheDir: "./fixtures/content-layer-rendering/.cache" }); + devServer = await fixture.startDevServer(); + }); + + after(async () => { + devServer?.stop(); + }); + + it('Render an MDX file', async () => { + const html = await fixture.fetch('/reptiles/iguana').then((r) => r.text()); + + assert.match(html, /Iguana/); + assert.match(html, /This is a rendered entry/); + }); +}); + +describe('Content Layer build', () => { + /** @type {import("./test-utils.js").Fixture} */ + let fixture; + before(async () => { + fixture = await loadFixture({ root: './fixtures/content-layer-rendering/', cacheDir: "./fixtures/content-layer-rendering/.cache" }); + await fixture.build(); + }); + + it('Render an MDX file', async () => { + const html = await fixture.readFile('/reptiles/iguana/index.html'); + + assert.match(html, /Iguana/); + assert.match(html, /This is a rendered entry/); + }); +}); diff --git a/packages/astro/test/content-layer.test.js b/packages/astro/test/content-layer.test.js index a4a4f6dcb7cf..199267ce3f57 100644 --- a/packages/astro/test/content-layer.test.js +++ b/packages/astro/test/content-layer.test.js @@ -4,6 +4,7 @@ import { sep } from 'node:path'; import { sep as posixSep } from 'node:path/posix'; import { after, before, describe, it } from 'node:test'; import * as devalue from 'devalue'; + import { loadFixture } from './test-utils.js'; describe('Content Layer', () => { /** @type {import("./test-utils.js").Fixture} */ diff --git a/packages/astro/test/fixtures/content-layer-rendering/.gitignore b/packages/astro/test/fixtures/content-layer-rendering/.gitignore new file mode 100644 index 000000000000..16d3c4dbbfec --- /dev/null +++ b/packages/astro/test/fixtures/content-layer-rendering/.gitignore @@ -0,0 +1 @@ +.cache diff --git a/packages/astro/test/fixtures/content-layer-rendering/astro.config.mjs b/packages/astro/test/fixtures/content-layer-rendering/astro.config.mjs new file mode 100644 index 000000000000..d90448042321 --- /dev/null +++ b/packages/astro/test/fixtures/content-layer-rendering/astro.config.mjs @@ -0,0 +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-rendering/content-outside-src-mdx/iguana.mdx b/packages/astro/test/fixtures/content-layer-rendering/content-outside-src-mdx/iguana.mdx new file mode 100644 index 000000000000..b34e732f5bb6 --- /dev/null +++ b/packages/astro/test/fixtures/content-layer-rendering/content-outside-src-mdx/iguana.mdx @@ -0,0 +1,14 @@ +--- +title: Iguana +description: 'Introduction to Iguana.' +publishedDate: 'Sat May 21 2022 00:00:00 GMT-0400 (Eastern Daylight Time)' +tags: [cats, felines] +--- + +import H2 from "../src/components/H2.astro"; + +

Iguana

+ +This is a rendered entry + +![file](./shuttle.jpg) diff --git a/packages/astro/test/fixtures/content-layer-rendering/content-outside-src-mdx/shuttle.jpg b/packages/astro/test/fixtures/content-layer-rendering/content-outside-src-mdx/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-rendering/images/atlantis.avif b/packages/astro/test/fixtures/content-layer-rendering/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-rendering/images/shuttle.jpg b/packages/astro/test/fixtures/content-layer-rendering/images/shuttle.jpg new file mode 100644 index 0000000000000000000000000000000000000000..80b8ea67b8e497a8d0dec5ec6c25c13befae8dcb GIT binary patch literal 174008 zcmbrk1ymf*_V_utySuvvcXtWyE`z%}!Gi~PcN=_w!2-eE-3e|98XzRg_xH}e_jb?u z|98)B^-P`5+e|YGfKl^wC-x)^b zouhs1fxhp&^v<+S-p=;#{Og@@oq-mf001oNKXNaimEAjYzB8(awx;wuivR$KsJ8#b zmjA_GK)-iC0RU-NH-8U%TRSgGMk^-D4}yXMlnOv!C!m)Xo4SRSqlJexrL?QFn}v%% z0PwGK{-+fH`=8iSz6Y7_gCHLt8yEX~`2Su0x5|H8{qNzQzWtZQoyPz485I81e`Nn@ z`yZKWDF7hw@E)5l|B+ed0013P007~}e`K`9002fL005r-uk*qGCtvKmyxfF1IDCD5 z+3kT=?EeJx-{t?&;NO=2Yxu9@vHx?tf5(ne254j9?c_!IPf)E~om{;=C_UXQtbmkk z|Mw*R|J?Au-1;v+ST%t*Ko6kH`=NB-v&`Pb_Px7ZtnIz*U0o>cUH(@+{Qt4pfBEna z{wuHF0jK;A0N0EifH{i`fVr9iz~Z0)V2lgjHBkTVHx(pZz&|5TkK*KCdH>Gu`v0l_ zFBNq1`%h?3dt1tX#L}ADlvdszKL7ChnE0oH10Vx10Js1m06BmLzzARiZ~^!M!TVK*KEF!(T3Fl;aaFw!t; zForNTFdi@=FmW)MFr_dc7zoTL%p%Ml%q7e-EIcd@EF~-(tT3zstPZRdtUGK7Yyxa9 zY&9$xb_jM6b|3Z!>>oHZI8rzkI3YMiIDI%VcmsF`_(1ps_yYJw_^l2P2uBFN z5K#~*5V;WL5DgJs5W^8O5o;0q5El?n5MPlnk?4?wkkpW@k^GU8k;;)ENV7;sNUz9P z$PCD$$lAyb$YIFY$ROllu(CE=5&fE$n7fIEZx0}mUI2TvEz z4=)d|7jF+A2A>{Z5#I?v8NUU81^!wmBfBKWCzl|1AWtXnBR`|Sp%A06r%0#hr#Pp?qm-m{qRgfoqWnQcN~J*M zO;tiQL-k6{K&?X^PTfeoO@mA$Kx0FbPBTdJgO-9;l{SdBj&_3%iB5pdjxLLCl<>yG!aqPh+;TB~ zrG^C8Gtfic*e4xUt;-Lajg;rHkO;g?aNcYj@V}}|*O;IgPZCjl|-Cey~171U2 zBTwU4^MhuP=BO5qmYG(q)}ywRcCz-S4x^5@&Y&)auCZ>7?vtL3UaH=nK8Jp={-go1 zfxSVeA%dZ$r({&iKsu-w9R;6Nw)ZvlIU&*(A**^CcI4f&b$2 zWhF&Cr8*TWH6ZmcO*IXiPMIE;exG5MF`mhjS(JsG<(;*ct&-iDL!0v@=Xb7M?sA?~ zUSmFKer*0zfpx(`p+q65h^#2S=%v`cc&$Xf1YAmAnpp;4=2LcDu3J7@Ay83MNn9CU z`BvppwO6fKJygSAQ&US?n_LH7=UsPJZ(KjuAk)wZVgr>l;y1=O0h+v<&YR7fS6Y-? z23rMML2Yzx`RzFEabPI0Kln$7UB_OhLFaszQr93v7}DO&-d)v0)sxqY*PGmj+!xvR zw?Cl&;j7!%%K_Vg!$Gsb&2ReOmWDKjW`>oA$42BvzKu$b_K%5<^^6ORcTEUPbWHM1 zf~R<=+NXJ^+h_P@z_a|bopXY7ka>~$z6J4xfkm0cktM~Y$>opB^D8@-2_AepkZKO zU}0e4;9%dUE_irEL<9sxL^LGi_YDmP6&>~cgM)>Oh4KC+C&a@eB&Q)GC8J@cqhsdf z;+2&(hWh`zgTI3SEJPR-SO5$ZH2@k53I+@6?+`%X{eA`(=AVb4|FgiqJBa`VjR-(O zhI;qdU7H9<$ zxbx^W(RXO8z;we_VDfoPNS2XowtWYCu%;U4b+ep?`KWR}cYV>-A2OXOfVYSaFRSfP zt=1a7^L_U^yjZ-aH2C`5zF)YM1vR-F_3=iAH1ZiSy2{2HJ?dagP(e@_@7G3qOWOIx&@S^6w9(#aPLn2Jwf#<>0b0-d4`0gQ*H7x zb)QF)vKc)aBAePHo>-0RCw|E)sLDKUz%MTv-zqV$`>ENo?tI>;yOMHFckM^)^UPRZ zWubw#?>qM`9I2IuxNLiP64!L}fUwiY7cGIU+4Cu*55u5bEwk~9g=n!Q$Ly^=t=zXv39N`alUh= ztfRxigbQMvX8by02E^VWlf-K>=lND(Bf=d1lU~E4NMzm1!@GSK`8AfMH2-d*oFwsX zL#;|CAIN#ot2_P|FrCVBPp*92zu?xA`8@sTe#;JSbQknlKwPJeUxMA~X1cy3W;<0C zHKCc`=WxAdsPxIsYfe|09AKf1SEQbh-}$UX!x?`$$v11X4II^TqcD*uUd|knd(YU)V-lcgA0{f~Nq;sC7gF-@}0~~3h z#U7`|0v|-@f?`!o?|Mjh-+gBX;IVN^1!1Y)^!mAdg)p?{K}yN>$!s#Qr?eG5dv!k5 zbix|BzQ9slm9CkpWm`J|f2Q4c$7OzzP_^&cZ7?xwll+`lrvtxR9M_ekDof1hf&Kc~ z>_O`!@W-p*l*8|Zo|)k8?EOD&9aZ$VNuWED>N*+Yl#ua&S5==0Q@$CT&7DOevlN@d zU_sh6EmGn{f>FV8l|}pv^S3hk1wCQCt+S>eEM=WvUJI&m6C0B0N#JA_9!)BM#}*!v@ONq#dgs5z_5ck6Dcll+nVtEukaGl|?f+7sG!S|X$4 ztBUY+($-*&R0Q_`j{O!=*i)rjz0`kR?Iy$VZWJbIEl&c0xO##KaV%DvElG}(mvHSt ze^fOoynl%^)f9dISant8pHaHvdHNT?2ZW4w>G6$kcsDlCl}%j8>3b)U!EV=FQ?OWFj(H~2y9P11dy*#I(JnCLgc-noqxRVv#m+=sxXKQIA1&d`&}_&+pdiNLw0_7j#{IFn#TFBU-unqx*V8 z0&aEV3aPlog#k_U>Ofm(wuJBcez(xIzreR10foxWtN1TKIHcrv|1-f(VLHNC*lvyE z>D{?FcFf>4`2Dn9;*Xmzf`pS8^+w$1%dWs#IE%9MY^3(r%0BTIj2+9tW2~ZsZig0D z^tVrx-eez~s2thu7|Q4~%(<>xqtS4Jmp@*x?|Oqz3Z4fQI*(=3%AMN3C7KTs-y9&3 z719y4ZOd~-sOo;imPUU_CZPsbn6h>MvQ72EpnnWGnM~J5FT5?mFYUZL2-SR@`x(Ex zL6MX%WK&@>Low2y@M9l506c~`VAm)4oCNJde$XT^bP{gvC>iTHS#oRmxa=9VIe#t#)p9#8t6$@>WR zBn_!^zHz+DyH&Eaw%Fp+;6kv$Ak6WSQ#cU%Xxt%kBU&d=bKUf2gR(EqAB^?9`13EI zHzZ-}^yESBQ2VZKX=i=}S7)mV?5Fyq!}%eyz#fT?GF&}%24`%#ul9g;8-Z9VkgZ5! z>>AWm)Z7}DgPYH`R+-ly*Z^Kv^w;UFt#8O@#n%WfozIQ4Ya-sXUOh3qtfUv+0)HVg zs-ldvNh=^AeJhQZva`D(KPTV)_@H|$ln_gOChiZ}wC%Bnmqw7UjDD`TFFO7U7!{Xn zyoWj2oy+{v`Mp5VCBzA-H1DQQeOa&m71wZrk1;>Vm zq)WRA5m=%n-Tj#i{*yQRV2ut&N_z{LE;$J9uH2v-#H;c;r0=Mr1-8#gGa zk%aHdkYc^lXCYk4HB%WAsEfct;a%(RrTq zcVlM4f(C(cX3l7txWKMPjy8CMOV;EL+CH&xC=p*xG9k-xQeIOS|-wRrCHpWRZ|b2fO9C zPt>&jshz!;|Ab*)tw5aib)iT)B;XB=nGA+{#mMt+;thzq9aQ_lfbalC+qC4vc|?Qo zkcLlwX&m|+RYiu^iKe2CB7DM5l|WF1#e-bkw;Lys6oJjXb^ljx>iA4o26*S)D*?~< zD?~7Ym4>gXSx|ZaeE=SlZo{J9F1J`@kmtCI`fJ+VYWLf0L57fr&ZD>{;#T@)i{@Dr znYXLm$=5tI7e}Gmn=FLDxRR%?WdsiIH80jY)K#{|+C2^-NtE1x=w89pbsD-g!B@Q# zJX}@Ty!D;B+H3dA&%ZoUOKhD}$ELx)KN2f{d9FD|-4iV>J0TVhqD;m@WEIqc!C#4F zuW_DqHEMS<<6P>21!+Ds{@?UiAct#PtStGB&=sYdk3=I_H>5(6`fBTX?ip#|Jfx zpuWwU^rqVvTtxpxmuE8LD$ddggBTRR22=itC0uTvx(_$hr#+c+JO=bd0F%cfEYv;423)tA~LjVez2X7l@bS zsg^bG3JFmSB3_buhEl6red8l%bsMLDTlcTc9 z?K(IXe`!;XqVz9-n+4)fW`1O%t8wF;jN09$2;7jLpn+j7bwD@p7{9lUo~#*f+jR|` zILp|xiGSTneO`2<0Af!CURL)9#Jw`oRQ{wJ^je+&n)5Azk>=)#Ao6K2PfmgUN^n@^ z(C;;r{+L#oSnwoMhu@K>sHKOl)>SK(cUhh^6~)32i!I~FaW-$1$qDZg*{}BAJGI8d zh>wG-YXDo%~6OfHk`Iv$M&V@){?D7&g6bAj9{>(aLRc ziMewjT)p^it({~3Uh1Q;dDi7RUAMz3F^@Ng?=HymLII_3KaDL~Gh|yKeHER@E+!Wr z{jEi=?zIkX*2a-ZqMcpiqh)qaeHn(VK!4);w8TN7^k;pwppDm>mgMt`4baH?<~J)} zMGLtN5!ExwMRs>2mqJnx1-3p5ajT%A&zE-^cr9Jt(7e0s&wP%+&_H?O9s@A?L*N z71_FJ8y*sYaRiDJg&ghRf+I3)ugKC|mte-q6Zwe4P}U#tP-T#2D1p!F%4j#7YGMn=GDH*XnQ9Y^`f!#tCiQ!{;t{vPIa-7cqs$LL6ZZu z+@A00CTOcdb=1Y#+uA1bpj0!I)+179Xtw@*_5+>e65}JEVFDnFiw$qOEzg^rbJ0Rj z$BpIJ3*LU~#(h36cop->D#QVktHZ#~$2f4~;lvTC0A2D!t znerz1eW5QS%9q_EjkkCcjYN$ZtPG>OZ8W|`5u>Z+^LmvjyX*o@4a&-cp|Lz%!baaP zz9YyPhow`AkDI+Q|F*?=^lYDv3L9pN)Y%`dyLU zH(YR6v@G-&P8 z0h-Jy8}t3oo1BmS)haW3Wf;NMB#; zL&%@p8zn=vbuNevE+s_YOZsOg+&kU5?-Q`*zF4Msp|>mb#`Wg@xX zQVFZ$D<$JZeO5Qef0W%%RNz`$+Yy<6Af=}BCSVn8>|y9yB;OY>e;NzkQD>#@o45_p z(2*ESCYk^RFRgi0N%(V6aMB|>Gd~ViECpb@h|tB;;xV4^g%<$X7u{tv@YmPu!UF1+JD37?p;v70H^j8DM?owhEN~nZ@%wsa!2v@zZw5)e=iFnl9%gcsW z3m;?-UwUXvOwSKgO&Y7?TlM@%w|O!WVNhtmG$MB3ojWT;lv?nWE)LI(R;bbM-WTAV zhQ*R-vZ>xI!;)E%St}_%i8191J>f_8A(HjM>9|N53%qK@3&;G8KKPw39IvPkzX0l&rd%>l^O>okxEAzeui8pcM7*%Z{C)YmS zo(b6QX2+2RWWm4LVIa4>38XaXsXXM4sp&L`>Cy{29yGO2s3|sd5R%m>xm7ygB48q? zO75+EnOqjZ;z7BePx1KqsNI}$ht;^$q9mEeEMLYtcRoV@R;F10fW%9bEIGjq4e7F{ zV126@BWCcx6qN;al_St)h~UEIZ)ZHSDa)y;##LwQvnqA^R;VffD*49gynE?KYpfPS z^Lj1xZA}T+m2N~^z8qT-ug}c{ZCn(kGlK*ulRas7N3WO9`m^0aPZOta*?+mC{~3tn z%c4;Xx_#OG)}GwI$Nz-q5?4#;cib)iBBiC%ul0x0l``o9a&%#`5NgX-fRw1c$kJZ< zT7zWk%1C1eVW-1=+T1?pAhzN1sZ=*;e=AM7-5H7C&e%Ah(^y~^WoxPYWTB_%(#moM z3U`qG#x`P45eR%=?ZFu14y3PvYsncx>NAAgH~q{TnD%w*Fv-AEyhltAM~1zj;PI$y z38*dfHP&FEU=t`*rEPG&X)f}e$9}m&e-mOM zTTL4>C?xB&tO$zlwb3A#^+3QC#AerLuVtqCOvjh(G}<8xc0B;U0TGm&UgJRLe+qv4 zXJC5dou5py9}{fLu8rX9$mi7^70d8#awnYw2~~Gn%N63{&c+!lyRdX;ypXb1y(!gL zN}K5GZrW6$C+x2~cQ;rkUTp_0cEReb%q>QrU!-SWuor`Uxn_d$nsV4u+;=Xo%2Kdq z+ckVTyq2dJa_C=c4?C&_U^MlYM?!Vw`7wmo*NyCZy+?a*d^fIc0(YKzZxEvmGS=}v zTmBJSh!f1ucaBnGqorAs#aAO~sgKvThT%g`<%J<^dsEf8n875^w*iO8H;218(8jY^ zCp3IgK!2uQgU!%LO(Lf=6F|W?_Iug0VMpuC$Y7FKn6Dy$y)#>0H&nh!ilES7N-t<9 z^^n&!_|!+3&3v7PR)f%8yo>R@O&w0F$^ zqL}TjK951GU-iCVLg}qzpD1Y7>oUu2eB!cmk_fXY?a>9_RW@~$w$i9ZpvwRbV9Ua{ z0Xw7V3++(nZNa zh0EmGf2^KV8VMrLG*X(E4R02;I#>S!s`^P-3P{Ue6Mb&41hjN??OWgHlQE7`()=Vt z2o~pAZ8J?ekN+S~Q0^cLFhgBVZ7qceYxq)8zW6vJAl2IuUBQ)(%v-u8wr+;@XZ()0 z9$TitaN+O-RQc*i1of+xi@&&2TUl8-_e{f48A zowcOu7)sFVS+9eqnlb+J5cvpj_kWV|UzHMMv7r}{9yrJ_I46wuHrkHnMiRP*G+sV>6eZ|aK>i`UwMZ(!&T%+(Njq@`=*44snIU4*+%@^80Q|V zZS|yT)x_y5jRr#XK8k#bS}l)R+jVr?Ztx0JF)tB3!;~+br%vM=h0vq8N{IN~$PHfL z?1q3ze&;50XKtPoJ)c2KI6FmUy-@TuUzmp8=B+cu`2oBG2#@pu+|kKx*fk!OwYFP4 z+Ye-{NETc$xy7g&y_KFBAqTQ6uLtcMx0dF_>bb?w@ua2uV(H4N+-=rX`rkOm6g;IG zbP~GVLajIgMOviV0xYjC^s2=issV9oro?y40`#xq1<~sor_LT5?1NMGu6=DK0T`;O zIZwSE!>|90`}YvnO`>wAU?!&~x0KsbP!A54!gcTyv$y8bb92e>pW9pdLz>s8NrH-{Dhb1%4ls_1x50Z+1`EfdQ6;UlWj>s1^n)w3Y)Us|V$Jn5qICR3}1i zCn$TY>lPisG4h(5?&Vzt8JU+hwhXiB4$-xr`daO(D zxtQ{FF!jN8lHI8&JQ}S#f_v&qJLR-%b5P1^+cJOA5qQrYI7fqIWn!3V6RJ2F_?Y>y zl5fBeu$n}FHAmv~XXTu!=5ah2`Y5%Oc3-TRl7w12SL?}B3MGSeQ%w#xvdYy@64Q{g zkfIW<2!>T^<)a^L3gklPmxZc##8p`;(h2A45dN*RcJ>7`K~q`8P%3R`EpkimIYbw$GEVW;KQUaqCkwhzkuQ(FnvHG`sM3sKkO4j?Fm(4{WKqq z)9YqW==)8?&SU8~m)<3Cc%+U+sFgR!3->a(m(nBy$Ch<`aBh%j+BpVBu>13!m*5^> zGWvi_R%=xgYn=8gZ~KReYa7DtQP$N09W?p(wTECVl}s2Ke3!x_B2sfC$B(r?9Q0R- zg&=HF=rN3k8bvDl!3RTi^Xxt1DI^#vTs2?&j*0~BUL8-)B2{c+h zSAT*N?HUi}v#A*stURpDzc@kNnRiI}a)yAX7jz=Ts-xk*Lcb4pkk@PZ{WB{4RXmEk z0-PdjxpR@rgwBy?uv1w+NY)M&>8SpfzYUhhc-qUWh=BRUPL?kU?Sxg&`Vwhb?GW)y zblTD>1FM^5g4~}zJQ`*0+8*1%gvOuO+td{gQh!Es@H7L*RQ`naALVX?JiA{v&;J5O z$WI-TOQ!ucLEZxXh>D$wVgd1XP)J3~`XrH%#=!Q+#o!qjJh*O2WK;7uG(OSoN)F(% z2@`0e!a55qoey0FF_xQ2E;405RE}rrxP4`~$K!EHZLCZP@K&oMd{xg@VV;gx{bP-E zw$UtKt^X=VSHXAIz*C#)Y;4wWpdOlW4zO9QXC+NKfJuM#qP8l% z7PI4>I={B8z5Y6Xv|S#-@3;^ah}asXPvi$2PgjDiQ;whM%yv6#O{=1)FWzR))bSh6 z6p8qiqpKBv4C;Ui5BC4Oy6;i-64C+AI6veVaUkB{}~Ire0hwP4V{yBDPof zI)h=61fQC6=`aT7MV$OtQo}^tV~z0W9kTL+3lbYKiE^@h&uRR+x;#szl>}0m-%`80 zj|GElVhwi}<}JBAV>b|eNKAZHXqke4{WQb1!{=k0zHeDLryq^Mpa2wW44aO|2HNB1 z?$-?dj0Y{B*ZI_KbQe&XATEqFY&bRwpFWGg<3?&f?CED|wsPGCS=?Lwtxs~y{$h!# zFI>rHvJu1OS1~kLyc)&2TJpNQPQes(KsEBG@ki~^hR+G&a~Fc^HCs0I2|c2ZC$LI` z^nBykq3|E_$z+CP!UoT8L#koK#Z#MW6Dq%zg~h>BG*rcnVoM#5=YR66fz&mex{QKn zZH2BN-wwr;$jc&>h%^n>=`(_pi_0?L`=6s0#RM*O@pn*P|H}IKJ=9Ab0=J!%*1}kI%6FpZZuIT)DAm$L= z17unjfhb~aF79i7Od$lTwfc~Wu2nm!_!rZ!*stVay2mmig|uN&<~7$~-1z)7j(M!s zn3ZgUF^syP-T^z>zkpdWkQzO;p5SDv-ii^U0q>|pO@8O|=%~1NKU;d%V~oX*zkrVm zj$)s@8oxGzcs4?de;fi?8+k7M=F`6A@jSzg@d zXrZrH<-aLQY^Vzn1;QRVaVuhoN*aC0j}&r0>$P-~Y0do!ARJ4=g6y|g*nn1zFrA2S zok`@U_*EZ<%N{~XBGA+Ps%AnURVzz15G00H)Na&-kFSOGhDyw?t*mBOXEqu%=26JO$en(aR8DQKSrPGdRBw4WYhyMj5)F>ckV>I;p$ZB8Aw%=Fu$R_ zfPnLp3FOyCZLIN|{h|odh5$#!=y#W?hK}5>T3c{C9~GR7Mfns8TW_#HyzbCUo%1vE zcEi!CxU$O1QC2!U?E@8wvSBjxQN7*wrMZY5M1#W&R)p_|zsqc3_dM^yiyto=gGbsQ zie~g13^czY>WN#XYRNRx*K$K+`IJrKAGzbbB!)58^o01G2WIqF4oT!A zuX*t&>apfle&NxLk||@1A9)|SAMqTg33E~riMq;B)wCJNs(jln^Uk~?`PNQpiv0PL zipi#xhnktrjyBfxp-F=W{+HkMaz8voqhj+eQ!?#l8QV?A5ggj}c}avK+DlW0-C<>0 z%XLEPWH?3LWh)Oo=uDN+?0hkuO=hEs;B|w|#CiV$V-x;A{&Ji%l)QGORPrra$y#N-kFE8hPj{i;SeI zFoX)$@w=<)GHh};)3kFQWY*M&?L+rpIBBUkWBRf9b}~~&7gZG_*fS{l7 z@dcxZ$>Bo0)FVI1*Zk8gli5cu!xlUV{F}xf}Voy`Bh79`bf$Otu zDJupzx2h@n>1_M5hM%Kg@e-DUn|n(pR{e6gOD0$hVj1;0^H=J3CD%W+NAiCT`(DzH z{m3-_PZ?nH$U?6D;yPe6Lgu7Sotr=(B80 z8|~`jRpJ6_7(d{L{PD494S7bUUWA%HXFO};aG2DU;W5`u;}eukPYmnTujYEQjJS0J z8n>82NbI>ICVZ|fENb{Hfu<{rCDVY{+-LW7);w(@ev@*h!oIt1=btiD3{#@IV$05O z0qVPamLHo>wExt#VIkG%Cfib$D9gVz`JGXI%do`4rYtA@o{tj4LM@x{t)SZGtS+_j z1r31#=MTo~P`|b`qce93)Ln1a zvjC;whq*c;vvp_K8lU;hvp3EFjbH74-4K4%GiFO9<=`MU!Pny{dN6IIuF5w3E{qxR z*|{@)E(C;g@8a;A9eW|Cneq%#l~5MPOE$^hbQ)fB0P6-7q)Un4>u%&H0yLIk13Jei z)9V9IYjACpDJb(%>n#(j5DlofU!4x{29`9hr~2Zu!>Z!%`_I|?Dn4rH@wJ}ZZkA+S z6i_G89r2^l$o9i4-{SFJUE%1pmdzWKdw(?oFj9Z->o-VJue%E1WNo%&%?PLKicD*& zpLR1b=`um~p*CN@QL`$gM?!=`god`>ss9P*u{x@bR;+7*f2vBlZX^-)Oy~!pzZ3OH z{JE-{!X?q!AFoBQ!9@{mLP{UfAb&UgYgrm=+#TQHptwj9k1@ApJ|;cPH=O#35^KEy z1XLJXxr^B@ezw58-~nF>V-YYtcM(6b&T99nG8wrJ{>*waC|J^4`=CJ(hM9pD^Vy1$ zvs-JWo!PG-N7d~Qcwd+yM5P7R@dwr9_+3^tXrwv^6Bn;lo6u>B<$!SP{S~fbqp$A$ zmgI>>)|-Vo)MK0aFf`jj3z(cI2ED~)YlMi)hJq=G%qZLjFtPjS`wet?JwN9btZv9|O;sn0b^yD{QJvdl zIwP7cFYnNT7^;sTs+$T*KT0;pGC=>7fuIV-p{bwAGOWa``qaaXMj`68vtv1cC{~xN zB)|NPLAcc~Xg-r-p9M7fQu=ek%ZQ}kH+ zWn#2#HcMyz<`ehJ_w#7mp}znVKcmKJTY3td>n0&FE7)^)bqftutu2-%{BKM#GGn@` zEbF3Zi82^yBf499V>IaZ0`qZh?%b3!idV3*`z$B@9K?>Yz?Z)wx zLdyaCZxen(ZW_6n)Sh!v338mj4-?|j!?Q6lSR1F>5>4$yD$>j+g{U%W`wEZh4pI6} zCmWA@=H#Cs1N)oEx4~e#yVR(f(DQgx3>b>OcpctE+{EE7je>$YplU0z%PrqMs+Y0V ze5Ngom--eHO76)T=2mGzm`z;`E4oR6+-9vqiW^KoNJR^ga+|wzk>*fAPd)aw4P-GMXG3ojt%^>UWL2xo!%wMwIS={!>w0;D=aQX9rO> z%hA$jiun$7rkp@nCu&IXM8Bfl?CR~8FnNJ=O z)1l-EE&xS?qahE#^c=nUU>&{BA#~b(#oITF#4zXt@L0er{}c(KS+?FA^5L|~*~rWT zv*f0xV8o$Sf7xm9+1XO?(0I_%BNPoZqvu;;8bV60d6;Q$hevao!BY-vx9J&pP__*) z(+rQ?i(8tjr_VH4F_h8B@Cn8~?gdirCdrv@YgUSt@zs@5@hE7@+W2wRQ)NW~6{=5! zl56#Ry3O@bhQdDjhS}^X{N6n~YJ{gLA?cSGVM*H3EpfzNOBu{5LV`!VkD-bi9!zE* zPB>DvnFR*svvpyH59)T=TV);u6(V^%OX?CeAg#FBBdoxrSX8T32=Rv%K%dkxzvNV- z-HW25yS*1}0v&5gikZcep5Odr1B87duML@NTGv)sz>j z{wOsJvF6)wJY}0FUE?ATOWfzmFVwiLOjbqJx$d;u-<7LW_>M+)za&P-EUd60z2iG( zteb)REOw74#{=XZ)PDR-o8II=9S^wF;>uhWkv*vkiRcp*BR>_f*K%Fi8Zeo6E&&?+ zeiK|C0fkSX(}kM!^zE2JS~oHM@HFQ9ef1I}!OY+ln@tnEXpIHnktJz!qIR0@st|j~ zlPBmymU(a_m2@i*dIR=PiN^Y7VX643%PUG!c~RZ@Pml>mYYlgDOpQj`=`=@_u`Ms9q9&z+660OOMY}gBB;mj^R#7^ z?kvdT*m#WJV}Pkq9~9#2yoYg|%M@htpfsN?eH!U9BVyO9pI1@E4mBQ;nCMV7plMfJ zcr@J7sbH-osfCQp#`>LE=98t?jAlP^Ex@oPDs)7Oh*T!dDaPDAEJb!jFES=~4|7@D z?~>;4;C}_9AnCJD2CGeec@VY0k*qkow<;T8f;KnE{?f@!=s1fz=hsY$>GKvg)J+l1 zVRNAw&aEKPT*l#-@RH|`Xaar3xT9P?2(6;W+!$jn0{!$!MS1gMPk|%4S;q+?o?d>M z2A)AHV0ozw?! z_2B&5ld-1vxqnqogQ*{{88(@f1v>;!mka2kx-}pejv_Qlw&- zz3~P27E#fX&2+t#?i`;XPip@;$Bxt0TUz4Aqh(|ZOvA{?~@?KBG%l&SDa0&cU8@aX!aT0^G2ZY`z6Pc z$`X*ON$fL3+33mPV8Q#EAEt0N+jV0?p^`SkAkH^=f&Du7e{IeA^9Zv~*dupGM6=~= zby5M+3tiFurtQieWNi2kaA@o|d1NfUfwSiqxYN_C7clP^+@m!P{nf)iqgntwpT0U+54UK z6AzY%NGrS+OdyAj;gla0u*TvSa^|F`^S}5LXwp99NE=y1+K~-t{jkx97_ecR1t5vu z5TeK$s9(Ywmlyv|U)%b1V2=!P{6*-D_W^1YK*Q;jGvW?cC$ z{PsoHgKl3`PStZEHRJb?jrS)({di57PqDE{Lq8T_2!53BlY~=YVZpVQThsm^^&XSG z@r=*YC##G;saRKTt)ik+)b0LcPldi3G3qwE{#8wwFg-xn>QXQh47P$8Tqrc|Y= zc)sp>%GLk@?8Hy9ybxl}>g(kS(pZTZwX$LlcFnZ>^D%}3)~ zNoSgM%|+cM0#WU@wy#KggYXyqW4%TCkPH+ZTAgw2CZ*ce6A)jcSv83@3g+8{be%Q%9au z<9v4Z7)+yQ%%rU(ovqUB>Gtg>S%CIwhpVYQk zYsN#!MHwOq1*MXgI<1BD@lmE)n{n5)@f7(?k_>0pn;@5flp)_P>RQ6*(&*OzgQTyH zYGdo(?(MBXOIy77#XTv({Vf)p65NXgmjw5gLU9QYLeSy_5AGBR7NBU6;t-$|cWpm@ z>-%SBtywd3&e?O;nZ5UUo@e)M&1f!mMwIDan3)XffC>f4v0toYOlI{6Z+ppDyG~CI ztVTH}D9`+Kf5I;9pOuI8rgCt*?D|)MDI@-~R<(X3l2{uVIXobjbD7Mhx0K6$Lc0!0 z-Iv}nQrsGMv%lJ)t)HDnNC_W~e)ak_yWSlf>w!^hroaUi|2oykvbF=dgQ*|0(!2ar z106WNGkrIQ0jYYkOwzcoW4HdGEKfd=7pQ8_Xn8Jrbq>FKmG{Et`$MtoVs-;-)6+pa zYYbCr>7AAzrvH$jaq6U%9wZtS>>O0M;ceYbrFbe>G8Dvo)pN%2R4eMXpDgGVA%Y!%uGc493IA)aSwR?bk zPJ?D%$0c;ym0_l*G2v07_t!I1eo_+;D@4hvo{D9BoWy4yR0JZr}d| z9h|=WU-C*6@as>-gv`|(T@jneE{0o=ou})6IOAvW@9>7H zrM?weR}_zMPxq4lm|jH8e!0iF$52{tuZ9d`((xe}kqErlPC#chLYC{*Cb0ZIugpnS zQ+oY%a-}?wczhH{#4WB8{VLo$g3k( zCzI1BvR|G^E}ey59g)8bA`Uni_AI@V4qtoI9I#z-K*FI-dr#s1gK>jOC zc62^6=sI5TINVH3Ca+6oJ_d^Wv!Kvq z&AK4=|Ni$<9Zw3b-=UHOXnsBF4>is;FlPSmT+*`*9yJtD41w93sL{SG39MNo= zY|+L%Py6!N2J^lF_y)Te%d;wGUJ(=r= zw6>4t>y5E~#&}k>H0t_H?Zn2%->q@o)01iNxvXsM4q2D)8v&YL$923ri|pk>vQH!nI#*f!`9SLK0kb|YkEFBhLEg&N-f1nMvabO^wSZ|hgh#}?y}YSDHC^e zF&Pgr&eSOH@BtY!$aY8`YP7|=l(>v}y~6-CnxTer@xQ*^6zQc}xj(6fB|>_|NFmH| zHTr>ux_=rz(^Nx?Qm{%N+RXWgBH1B^21e68UCAYH?oPj{#Bk9brX9eFszqsnLfLJ~ z_8b|*t70?Wjid5^>ae^=y4zXCzl*34C<&lIiZlg%x1Y)*5K9Q%c?``$Dto8-4bL9` zw=r7*D8CBzok4DL^et6bb~&*M&sVa!^!+v;GO2f-K-KW!fymjb4%snb$|XHQkW<*R zCg7GO^_mt?-{-_@?D;>Vc6H0j!D?q-4|l$JF|2aqxbv>p*0$YtLc6xUc6jw|6BM;9Z>#^&cu{)Y2)+I_q@+P(V*KE&?pAoxOR@eb z_hCk5WoQ3qJu`Z4^DRl$`LFfPKfFX0v{`HZLwT?hx(gFn0_oSF?DMPs6YGw=JS)}1 zHlN;Qcw`W-vObz$u#?Gr>~$y~XK?XA$7a_hZysU@)SO9rD1JxbeqLRsYAX_N;P$$f zgt9tnd?72SRq}(>e1awgK)o3Z|L{n*UT;p2^}d3D$K!R0b*U4v>YH#vphKsur1 z*6rg1H||F95IRT>N@8*nVfmAe_zvHMTC_mLe47=$f+7}on2%LdhRY^ln7S7xM8#G{RT zTDBBhp-DU26tqGRFiN7J&?ah+Z75I?g1rUBBOS)?s=dfrJ4;H}W(Pl*M%=yni?0dRwHGOI5Mpa&Bc!)|b zJmNLc+{2C^R&uUu-iAt9*nZawCjcDOe2+u9U8_Lyy`b5-TtcRO-)<_Z`aNm@twE(` zeW+8C116PbEb+c=;NQ7VYS#4Fj9&qJ~(OY~XKG)9|6MA;t z(hn*RI65va&CvG_dQk;)h{f~yaz~Zty100`P|q_7UfY(g7ZA^Px%cC9>ZAxK2Zf8K zRSQ4j8`+N#jCGaem0Ye*uJcc1wX(>!i%As|H0h^&Kq8q$?!3XX6L8Asr%vfrpwmUt z>9f62Nd7kI!@-wB4iZaKE(7wB>aBG)LbeYkZTP%)A3Sk!@04p#8I9MM%A~bOsv+8u zpY#35mEzc!=|rZS-u4b*^PEVje9s~LqxyotKju5$f&(D$TB@Bnj=SC!iK&k+1@l<= z0`w-D#qH^-u>|u{GXr&M{p7z7 zOfDBj6DL=o(>bKR;o;W9i|^jO-{#59PQp6viqpr`zsL(gdJEJ`XO6kaGkgP##gK*l zZ=j~%X;kR%g9@%RiYG!_J+5hv&YZspWwXWPQKBT$Z9}*jeH^@wQ1IS84p}qho-65E zeT_Z3_^tTHkST2L!f@qTfRSY4=T>Rn6WdS{jCorj+0;XQ=I1<2OY zk93!(cIiq9={tF3$Q(!yWSH9g`yApWULMMbc$F+`M{Sv7XVV7MS8z@t%{ z)$8TIwhtoD@*f&H(Q-X1a_?5(dkycY0zR59^Kwm!b5tyTlJ-`@rdmRf3w#O@!@T~V zxZ_ZDNzrurj0w1ytF-5}0@>RntV8?7++&+RgU9pk&<%zmH=Z=~Y+!H$o94HK+$K7g z5015lE^KUcA_AifC4&_Q#;01N!S!l}F>j_!OZQZlj-85p`RLJy!G{Z&+$aWs`lo67 zJ~N5&dD1Q23kLL^%h+kNfmN2A<^DdnHaV8v(ezSNyy0ASy3!0fFns3PR_)|0Qu(PK z?24!rqxEfe+V=hZQ6~E)3$y=ib74ONu}3>P#OwXBblY@Xf86%-&lk$WDs`lkFP4l2 z5npUM4%)3`T%XM=`8;cGf70X*8hPYe{@#8(xxTBc$t*>%wbu~BUl8U*q*zbq?g_Or zYm{)A|1X9}z{pdIVU4lSO&K(hCtmP0IVa{YH*HX^PflzaCw*`)=%Mub!NY$ZKDw70 zdHVF9Cr|E0Iv(6hhmgJ|V-|Qs{!aTp7R!4K4eT-N+yBXZLQo36*ZE+TicHuj-;G^`0>G4n`@cwIQd^ zttKRMWFewKoT;edz>?gc6BX|$K`(UWg`m#mWU?o-@DH$b+vZ8aYico4nLGL1^hMD1 zDE8ecAH9x~1cm$Re(LK|DjX-?k&8fx?id%pShlJFiMxrX(0&(Bu#M)FTh-l*hX~t7`iZAI{^C_GB-F0JXM>PI<~E zQs1VQ(6?g|rSqJNBx>&AoGyh^iuyKawow>wPpQ zycC0O7yeVpj*8-D^m;0?Z2p=20Q2xjw~I`|ph7Yhr{7d6yG=x<#@hcSzK|`Vb8)G+ zl*eFKJ36yAo^NBcF5#>c3xa!)p)c@9E}urCrLkB$9Or!xvYE95k}A062eqHl+)_VKd{dd0Bk-w zU2t5^7c|Z1?u&NAzT_2Eg63Fx^5{Aqi);QwL*rQ^%0%rWq&6$RH+{hS}lf z!g6_0)V`T^

X{Qi-f{+C<&J^?SyNSSJ}Rx;W{8|zHlM3hX^ZI%bmaJ$bUrAk+0RE#g# zezIx-UL;SI-fN@$Ph*Ze3CX)MWcEm_c#&79S;@jqKh!@j(9Bpug+eB=V?(T-L${=r zacXJ`jx5_KaKGjIt@oWj3Ub{_FFAoTAh3Ep%$@}=DHN`tI<3U@1+8t3$S`;RXq%B6 zIT#i`#x&Gcp3H#o@;&xk z`i9BJgmM^}kD`I2eer$@@|w}S$3NPtyHMDB--AylZFUY~??sW7xb1NF56FL8J0D3l z8{bVkxnCPaoFxTM2ZJE~tjHi7MKw$vBlq6#tM)oYR$+ekd-Y6S@FF*i?A8%yKv$#+ zOQN4DkE{r*AcFwFv`K#P9Nu6e+-9n_a>^PkPyxcN=eG}FIr{UlWH(x^rHa4lVp;#W>sjZA2podkwKwap3@?iyu;R}=WDONrJuLQZvZEcMfQzq z!aIr3#v8%$WseW&A9D}2P2O_yC}VUe_{37`cqhKA=e{&^QT2$6=c%Kdlbk}UMX0hB zx@{AWeYXj@Lj3ZWF9UuH(DZRKAiqL2+6Hop5gN z5m|0WVS;{*aJ@I!TCQEKizLE~0v2 znM0a5t}B4MZYK>*67nFHOsY^-WgkW_#XWVEsVJKC=h@J5|1SIkkG8yV%oCN6rwWE> zebV$=u_dZPx~5(CdKoNWH$3He9LkUb%Al612(Y11Y*v{>;0|3=+Xb{Pulr0cId7Sn zE%h^P=>%g|*j0_zvE8u5Oy`U4@+qr1gQ(1+GqGS1*f_$+oVf05wr9QAA0D!NXFike zHt#Nd3k3dLesd7pM)q?bTUeB*Vkzd`byxSFniav`oUO^&d9|p$ zCps7Pone$NA$C1AAk+4_#-Ou8{u7L8u~eU%PF&m%8_1g76Bya%`!3*m^~I9FGWANp zt9{raS!$l|P`Y(N#5omzc;v*sDW-bV&Lgsdevc(iJ=wXeSHE;`43=U8sS4r4b?bE4 zsA}VFF5qRORgOqll~vffz9`S6HxJJdvQk4uT9fIE zNhajFUG@t!#>Ha){k>&=?y{fjAC@{jwbEfPqaq~-uKS8`n6B~k3C*3FuKEQIPH8KY zEp)shuJdqIYR#-64UJ}`6~O}@i^ML`%(%R!2$ew>967}!-%q;qtF?G=vhl@S&6C-M}ao2HcLA| z7e;b(O0d`Qa#BJy3#RI8<)gGUsnops+7|uH2W_n9pd0Sda+{i-w^iW)0=Oj8t*om? z-MKkP8M{*81iu{cWfNx;w^~C>oi68kv47nWZpu2sO5< zivrYbqU#q2HSquUJ;P*hd*^j?Vjw9#4?F)FV`_$oP;ypYl>Q-yY2tt(yq4||Z>62W z?uGRop)qE#X=F8jQI@K`P}KH0p@bm$GT-bmg#Q(9RRpAvYXGCE&G`30aO3hSuyXlX z6*eHK!uV{Zt}tXcVG@+kshoQnPK#faE{gFUjX^Pe5@Dw5vgFK78x~#Z02wfFQhSO| znLU+S4kL8*b6|<|V!fCsDR{>A?LPBBVxx5MI!c;SV0cPqei(A-)a4?j60SWMH5fOj z6C6{!-)SQh~<$lQe6qt5~_T<0p zj#gA&l6Ch1oUonK)erB0#lgA5F81*@tu%z72#E~VEcPAM@=WwdRt1dxh=vKCLg(N5 zI{(!ssf8u5#(o1b64)5r^llYic+v_!0U^cgl@mzV?v8v(1KrM@170H4_EnLt8xBAA zZ7~ZNIrxrz`2MJ(AfJI2{ko?pd+}mE)pyTP4nE*&N!uU(0Z0qOEA2Ahtrv^xRn5s$ zo>jaRhtA??i=b3l@C*ytg)RaW>T_?SG&c>SPMrx!sjS-Q=D-z2!=Ki z-<(;+bqFp3c`aBH)&|(yc0!rDtYEzsTBfnKcQDueb2h`PxNS3O_Uoic`WDK+4}3?^ za`lVobl$@SKhSmjNKhAPJ_|)kAf>&Rf_`2%4v*?yLxsL?L)fli=+tnuS}&#LZ~myY1H&+FFf^gSu$Gn`TP%#Af?CiI+PQ%(EviDfSEdIQ zb2l48N6-BItzXb`2$}Sq334nUZ#t))e;l> zbk?|S%w5CE0D3`*RtO<&jmAsr+cbAmx`YQQXU8_V#KPjlP7DF$cwMU8GXHiGRFD2!zIpZaB&<6ZiRe}s7gUTU3S7>Dj&bsE$BKDJrndn0sWOhek zN^uZGN*x^`%`Hr~q^QXn6L*`c*Bhe^uv~+ruhV8Df32_nec*LfGni!VP`FTro{T^#KnTTDS}}f+ zKT2+AnDw1X$}0OQ&BYBo(nf7E@#t(T%Kxs*ZBdV#P%%<&_Y5_7O5m%mkbmDGm@j9- zFX>&O_4qilym0Me2ePqT`i(kdbxL`)ajhCDf;wI;saOan=_-8~Z8kV0Y4Pl}eqXs8 zIsb;3S~JtXENXJRM9;sSAGHecz|>3XaE2zAt9}rCX|2@xMdbTf8K_O3Znl3uDy87| zb2?atVW?gZ=T9{i`&G0g7hRz$C1rWi6^|-8pyJ?M&CJw~CQufaEz?~xSP1IdIEqfn z5%8!(DUL5~THXDt2smL-5#*jErn13N-$8~CKcfg6sM)l%gdpd5{O!5AyJNHZo8P32 zg`ELIKjLE8pZwTpZd9{f@b68Sm91WUNd<-AB0EV&-r6kb3iI`qDqfR&sO)$Yc^Ex! zyrMo;WTcZYn2mU)N$2a7NB279!}6zr7K1Z7!2MsUdt-BEwYg=inQPyoGyL++t$O1p zt}|Zu-*`SJrcE<{oT(# zq*`e*co%~WA;F{i2t%;JjWzPJsvx)hVTh`3XS0=s ziayuT1Z@BPx}F)IPW%hQ*%XrZXqYnm<{l;H^xW;=dyj`Zl|THJnhqdNg4Dd53!Z)ps;n^-v_<-krD7&>3;udu(Bu(y-<~b{(w}gs-pNS zxC}LgG2x-oRk_AuJ* zX>=bM#n=uRx_=B_QqYoOos_O%g4GI-kOl3C8QV~W6+nu*+peCC{m@0{C*MlB zwxZJnR0pto64&(1ZeM<_ekgFugjkjc7<>(J%&Oyw%GzdpHuO#KmZm` zynq-r_{_p={DvO7g_J)g>uuRoGkGq2?GU@GXvF+sE=_aY8j;qV(M>2prN7j z!%8_*WnREgYT-mk|{)=VPBhCGcRA2?a8dBRJ$`rn; z5

t(>xRg@x~v<7OV0W65HG;<+_+8WJTMehcoEnaz`EIH zurX=r0f4G3JgzBF$Hjb#(MxXC0)z`)zf!^dhS4ebExDrt^ri|~Pi(xVfZg^tQLtn{ zSnF`Q((>gv?dR?k$)8XNmTs5V;w8T|q=9*wdGf`S(_HpID%VPOh$tSInkD%+NdSsy zXQJf+x9`(ZuI~CeOU41!`3P2x60`+=VuucP_TV@)J~A3x!m=iBjx156-duQ&JY5>a zb=761rTJU5@mSgvEH0`2RM9yi!Riq*8OnGc5Xi4E8u!zFAi!&py4ZK~2$zAJo+{zr z%q{S-o27Zb=2d`6Z$|Unr_Gf=JDOyHP&L={6IkAiruCZ5v^szi*ng3p!}2!<-gxuoQl3_?>ne*=RcbI% zT-xx$R6EsWMFxy}6IO?^EPjLJ906r<3muhvUcyvC!w?4xl(4+WAw_fX{fACBM&+}y zNiI6LyS6K39xx#BZmOPaHUOoUmur5eM(rbkUQpZj25+CpK|NXSVpiz)a7h~;nQ-u- zI+DZEH#yf`gK#wWuvGF%V`Ut^znD;Nfmc;=jZiC|WlCvxYm9fL`a3A(yK1hWR39w& zOrcFQ8xsDOU$5ijrG6hsUWqd|%&ntMd-eH_-wD}q*U{_o4Ea9(N}6}BUd$~rrJ+r# z1`4vb+#5oLsiM6QveV6m008!RtDAWXBboxah*YJY#J?JC9$*b9@!3!9F5lMn4Q#irZK$CE~)Mg#fR9;J`HM{X|6lu~v0Yslr&mqvQ;Ssh*|;c;V%R z8&~t$5^t0i#@OBQlvNgLLpOBfDE4D647+iO3J&=;GkB}Fxe@UX!H^_CuXrp!gCOq` z6mhO(ZImjH$f~Cy<6dB)S#3~plxtUIx=_6KMJT+ko*6}7((({o31KN_Uxi~r)OcS| zD!L^l)<+lZu|En>f5uawu2Vb=yrL4P&rbx*9D%mo4IbvU>!?dR)x4G^c=>#OrB|9a zZ<**N-9c{PN8<8UtMvoOD)-n$VD4w?c%b520tshDqqA#$wePZk{{X_sB!vPMTw>K5 zCD3$LuMAP87kumuKWg*tJrMV z+wao78T&{}iZ5)V9E<|U4gGm!w@yXnYZf#;>bXemcL$_21`_4$Xe zMOQ+-fd^(km;o(kzcWM2d-5Ow1$pE55H7*_ECGgwlEoI&nGkVbsKT|io}o~hKZF3K zE5u>W9EAS>+`h_;s3l)6EQGt;Km?I#;y@`1n&5# z0F6D0OrG{FtXQJeQ+~GK)d3q)w*LTRZrYAD z<{(Np*&WKOzcSU!S}VpgZSZsC>*cDh&BWN(;Q@r${ue5u+7*7pCp0UL)8Z3elkk*D zbQ^y%;axQv6}heXjVW5`>Rf=wY8pkQAkLf7FM_h&mRT6n5Ib5@6U5iKkl|=+%(Nr1 zP}wX$a5e|u?9PbA#4xxViLq#*gDM%ieOg7Vgs#j_piX5}ZvJBKbMV4QteicU&Px18z_sf`jzI@l{{SH>!U<3`iQ2849_!TBnq^!mcEjf-zH$Em zaA}HurIG7Psw4&-)BYhP`*~j-B4g12&hgx6s zNK&TFsM2aw3>Eswdxz)P5{kNZvcD6|vb0J(J8yX^wu&$DQL3x=dQ4H*N6c4VP8ZJ+ zgu3(z3lM^xxk{8LhLs*8N9rD&t04uLE!SmO>bAxbjlZ5|E;YgR652y`oKbgad6I?I zdFxjlyLHt|mzLC<8hpXPLlHiScrT@aR&c6RgB0eh;~cxxoC@)bmE8u*JOh8UP&7O) zWFKdfAGpi9!)|P{7KA(zPN=-$vm1me5UgJ!6f(V%!8>WoraK*OfMvlQ2gi~FUSEfa zbo^1As4c7GAhxcwe!|f+yw=&Pk!J4-KOd61vH@Z zr`Ui!#e>q;evwyK)p&po1CNzGRMjJ`(N!p0YPD$xpivb}a5{L6aph;3Toy$s?ic+h zeabBRH_G8b6{bw1gG}=aKz^|8uKFpc4f5M7dRD$)B&`J!B+#wOu`=EnGKK$SV|K{JpMflP2%Mh;w!Rp57~6OZ{ig}U2#I- z1@iMTlm}nI$&@pd^ch1}w-nx*@FPy#zsG&XI23l=gzdneF-tl=VdM#^}QqUt= zq!alpe zG~-LgSm9K8CyHD1a**BWc>e%Ua0jcD6)L>>WmRpcC_d?tJSIQ~;-Xce6k7s$Qd!Ki z+80omgEk1=n=Tg%{{TB=@SH!z-0^|7O_8W;R(hzFeLH`TQl=4KQ_lsVk$sMnOQHrZZ-gSepFq&)6^DkGUoPd^xo<2&d04Ta6cV)f=(po{Z zL156@>k`o=H*XJq;jkNZN#<359Z79!bG=O zwQ^DyEqt3+`>=*9EktP(UdQC%G0H$JUB{Oycx{2k=@v7O=HEPu?=C555J^jv)T0zp zkKJ4ZN&L#tV)^n3Mb)WCZ`04}y+ZGTT@r;r{#y-qDz z?^D!7a=l&UoFYEQzv`oDR)!)QOz^t6z7W(7Ew^N9=vHCkaj?@3zX+{ zZ@7SY8v-~2A>P3~H0+`*4IXdt1P*(6{YvzF??0HsK=?qCXGi7A1fHi-m8x%wUDn}A z$Stg<-s2mn29`5aJmFg!vv~giIV_{R;~gdY*`2giuZeaWSlWd)(H_b;{lS0citi>)A70`wUX~ti8dc8_v*UM7i8%9LQZ0wh)S#czV#l{KdfxZ< zFe{(%gLLWK zzWA4+UTKw5mFL==PnRE1Xmi3#-JvX&Y(Hs9fC)k*O7w_P*BjvjD$Ot14&D}W880Xz z8;TmUa$ce0QWZHbP}HzoS#K(5qBT_?K0^$<>8Ox1*POV=$i;n^{6Hw-O9N%DzaF8$ zH$v;j^D5YyCb10i75RcAet~cDL}zjReaZ=j6&R-tDj`SB^UD=fitM3s_6}PQl3;fT zR-%HsP2}G3>-aJcFrAtYx7xxG$-E25LZF&#`0m>_p$>E1q7G!Cr4Z045G17V{+^` zMz&NDU7+$BGz<)Rimj>ia7*N?be~DSgT!rJQ}hHW&NvgG_~FS^TD5<_F}a6|YO1Az zyE!m`hHOH^%c}uhrSkbAwy9HZ#@))G4%3_dru~&vUp~Qp6>w5YIPw9(G~UeC1mgnGZTb+= z0{ea<8|AI@)U$3sP-yu)Ns0cyV~M_(nD+$AGP z+K8h@`OlKz1#-Pg+F2fUvRWmxF8%s|3axqSQ~_$bd`hUXSDNb+<=t!MQ5{Y|OA|mO zT?+cIFb4JcqC0GgRlgW$EI+)JSMkL?`;8pf5MSUSZO4To#h}G%VQGE!4uiC|=i!&4 z?u!b6k$)0Zl~O>Wh&yCj@t6^L7kN`@dfJ81mb~?`ft_qZ!<^PwrLHoHUi$?U2I(sc z9RC1F-R1?ieU`OfD)kSwRb3Ljo8|&*VM<7;2FYIp@-Q7+faD9J6t1cO0;&l~cm5PL z9_B^PYySXpExFjCZa^Ot@{Y%{J7QAxgo9rE#^;U;jmHF3Q}$AEK9vsoidBojNY)WG zo7`N(=)9Il;d3e#6=FUTSb{BFe^R^F>NrhSD}Uq67Ffi=ck?<`V%@Yxv|%ga4QpLt zvCMv$U{%sTWp4~rw-_SmaZS<+1Fwhi1OZ-EwnF&27o3e0%l>Wvwm)uEU2UO&6^;Rk z(dZux2^wz7>b7axlv}RL0^j20qKa)f$wth7lBy~ddn<(7PeQ(gRII)*8z8%WavDG{ zEl!e{Ip<)t(Ovz-0suXH>iSpYt zfKXmK=F0~DK?=E>{-a`>7{%zXPIuHPx4(0qkOWAsD%-B4j%YE zLc_TUrC$F4{4YM={{RY(4Vub6#=}j%CFNLlWM!d=m-&=TM9T{mY4;1pnfW$1-BEe& z89ZIJ33j=+cNYFu<&m}vahcO!S1$H@M5v2xM21ELdkj-qa{!M4rGvHFa?O@)9ijjn zi-kcrxQl5I@Y?fN1OgrsVSld?X@b7vKo5P7qRl)oMgy}cXFsx_QrDTn`wuf;f6^@$ zCu$u}8{%6~J`_N~;Vn-iDdobz$K++$mPYeGiFUBYqD$h}M1%VwF%nk*r95lX62L1G z?q$*G4W+vCa_0468Eq-Z>EM5J3jM_J9TTUko7~#FeLY2XNF#Ft#q$MAZ2sSdQKeN= zxug})x{Wucx!Rd|qfeo_^Dhy{r#!#{-ablF+jJw@yVImzV%=CNp;Q|8aF_sjej{gK@sPX?IO+PIR4s4p7B=D! z`(_Q&adHm8Dyc5dkqi&Ec3I*()x_W_em=y6_f+|or^|AXSZ`vYB?{OVHKWu>0RS~( zpG<5H4*OtusPMZLLxRKH^$&FrQyy4hG_N<2viB`I8Aoq$=ebZnv#3XxT^vT|eKp85^Lbue44yRvyw z(2)SDUB9^46?~$k+5^K^*gXewGe5L8Udwk9N&@9Jui4?jr)|~gUi3YpXVdZPx`{FACnulv1d`nFxKg$UX3WMM&zhiTM)6bZovqy}C z0S)?Ov$}WkN-GrFL)~gHskfzQix+J2%nuinHz%C(s>^`J6z7*A0U`(LZ7NZ90`O}4 z3#RVHzF}3W_4J>?VCaknms@^`U=?^Te=r+f3Lf6UNH{puDinF&tUG|T+;u+BjJS<= zV3hzVF?hg_9v?58DLY>C%nhKgoFhtqBG@zvQ?2DeKw3uCXSl>e3oCw< zR5&h*O~`>(Bj#8}6+$%%N)U>f*v#nnV{PVTJL(iI8?+k=lv=G1k1$bk{_$9f!iNUx zW9>VArWmL3_H1xG)Dk%S`h^bxPq-?D(T_KTNF_O}ZoG=mBL{E-yaaUdptUbi)0-<2 zu5YMW#?GyYmGupGsu9r$Fc-fRA$1%Nb(r?BQDad=frDoSEq!Qr3PwT@eF(T zidGO4-9lDO3+Gpmxa#0GzjN{&xLhgs#8cNL*05}@jISs$5^Rpu zQlUgzAa$1!N*RJ?+rEu8alK;{t;G~hAT3svH!fQS#J*${^;@BYVz z0%0{lvJ8R8vb6xpIRZ8+Clb&>iCnE5KqvS`1`g+8^4(DR3s~SseeaeDR8SL}+ z13;$R>%<4K4v19f#_uZY)9i;;^T|izaMR9RN}}qHg2r8>aO5F)KOwBX*vq$6kpWw* zE36Y-9Nyo!4Pu$!?kX3>O97~^KJp5^7tCn|fr!B>=kq%i>8Z}*r+F104ws@0~+U0H=hMka%O5U->VVOoGjIfST*(xfWF+<8fP8)#8i zyr|um3tp*(R;5*)*U3<5zL)C0vVaSsCt$d@2DNvaPz)5^2>cwYoKsrg`7uj>I1Ede zURK=DL{q=V$j<`j+kibWe(8e3n%?R5Eg+Zf1OR><)>JG!{7izYXbEhdYQ0n-sClVx z4?LZ?r0Mg-V!K!UN^+12Sb+r_m9R^u$oA2$K&p@1=4o+#zC%(aFBZSlKs8UbTE}1k zpSA#Qyub^gk6>Iq47o%dT7%Hnzsw6-x8uwbDbxL2MYF~?*j25!UnQO#U+Q{5eVl*# zY5M;Fz{LF;h-%_CzkKkFd6?*>wj7b)QugUDl zA0o6>`pbvFAff4pSXie>*#PfX8M8$b^9igKRSaZnF8oER-syrcB|hW{Y?K@QuO8A>)*d4d>e^Zm~WOqgq6QYoQr9yt)$ zR0?1UyA`~e27yWPvR`o8U=8RS5UR#OSAj`UCE1Q)dnh3R+Sn+H{CuLNL_bc!OcRzB zXYO496bdl4SS%B5{K{GZ*3P7Cx^Dc1FU3^g(VPi@p~wWEr-;`M5`8ypn-h3j}TBs=|w?Uwn^meb&ABmpZylrr=ih5dQ$+AoH*M znkfC(sD0q#3K>`gCaGtG?hRV&sH~y6RYhC@6d9722e*4Q@p7J*E{=hI!eajb;~0$t z*l*M$MGz4Di|XPjs=q zKm93E{{X?O@gDmJA_n!1Ix)I3_A5!%e?BHfnW)B!*Z7rg!*Ysf_5T2{*GW(c`U{Go z=y3f?YH=L?7%Tfo7jljIG?7%L*bB|I*ZYRNhznx}v&d=uLoK7Zf2l{H{{Rph%%~Xp zm2W~R_bMXAX>MF9hr+5MqFi5fQzc>QR15C>WaHSZSiS(T?nNyr%ciI!2K&1hTJ=6L zxZJGdV2WH$$M+j9r##9b=?nxhb%qci8{|r}~tlwQTpvc+%&elK==c?g`o$tGgCn>#Tqjx_yM8 z3h@hr&)l+)Q6p(6su8^p?>22+foy7uF{&S~LllFo#f<8#ill&vV0{xZ2e>WqQq-s# z0Puh8c5+u+Rj^l)u&1d?BE{3bj=*i1*T1>hS&MSXc7zrH(_u{qCFxfF)yOQ9Sc6bq zTXM&Zy6F;tTdMOn0OE38jSEEbP3px|6{*HvplRi%=R_H|;-D=8l>iyH{e~2e5!~elWAgeH!;(CmKy5H}?Q$cXC<( z0O)xsKfmHb%Nq-}VFt7$EPi8yV}AK_!FoLt&;c_A;AG6NEqd!W3Z=s!ffCeyLQ zLG}%-a<&JQsnC5t5wf?PfY#I@@zQUKV!qWp#{R>*DDY#T2e;W!Z#Gy9_mu=kkx?Wb zJpTYJFQ}r`ZcZ>cXSm(6ejn>%tpcBAl{WdJQml)dGYxOG3BwK516U-2s;27Yi0=!r zOwt0hVDD&*#rmhjxuy3h0O0EL^$H5p;&qBw>L`VVy!N5_cPPm11>;+F6$N*3n#vk_ z`(+9v-a#Jg4S;oinSfNfE9CI!s`WYnN21im9{tY|0sTO4TU#<)ZEGFdsbnxKOk-RI^tQzq15od8(IF%Z_UCDZzod?9S#dV`A-Alz?mQ~VymV~*d zz(foa!1TdUJo4-JG=(-=ih7IK0;LdwvKh(fm;Ot2@MqY*R7YbjkoLKqV%87?g@_@m zyKn6BDqV5y#ESp{QD%+h%}u|8#75O; zXP1K$!p!7v{*^rnuj1HP1u5Sb8ZEHJ;chM`in}EC!3fw2`+OlEv%=N)Hd)@8gx05v z6k&>X+yOOlA*5~M_7LSY(p3_&nmL(dPaVX`Wg`sxHWiD5`vwtH#rtr!hQ(7>i{U*qHV2-1@tX06H~w+PR!rCgxG`EVnXdv zEXKHLtQ%J|SxnSA&5D0~NMJRcE?L%a;n{Vd?l~%X*2d~Uyh&gW{)t~1RDr1}%Y$?U zRqko(6cdO0imfnk4$cXy`qoitV&94Im)aH)yEM9;^8$}6bz-S>)osRny8UEd!FBkQ z#=ZM6Dy3Ch{<2wYUGO^<(pxFKqFn;~EMzFP=bTAE;-+7Rt&d`A?VP>s0WqOqka46SAOTCs8WksExxdEdMD3VhvABU?;8xIGmF0Db=e);b)$0Iw{4 zh_LpdVp8$26#&OyUhFNsxUDV3W{m4#3qLdTDA2f<>7EASZAY{{pJ+htiD3fNdT z=U=Z8l#BRzxq`I$aE86nx^{j-C8vl>T!a9r^6bNjK0dVW$wf_L&=WtxarT*qpSxfZ-(T(Oz0iGUVK60YKy#D}j zy}9$ubblpE9$V%F4wV;5-?dXPTdy+sO=P6{t=C9{@NA(Ws{^)YrV^6>0H@{ZEe4aS z>ni&)6|xcyj*_0L)b#<%_XO1Wcv+q*6Q(PW3l~#mVT8JWGitN(?k`j|d2riUhm;Rb zY5Mq#4bB8S9b>R6S}!u{HdNpo{mZKnqkY7ZK-5KbrwCRR`zESNF49t4_1gXTjz}uA zkGI^H0(dR5e==N%)L0#Z@{iZJq0yo6E&Qp6&9_zPF5;IPNpJyUD}ab47Pf+BW7nz6 zfpqy|{KuMDc6*hgnhLAra^^7R!9}(m_K>A5 zx3VZwQ|`@94?WZr7j0Ek6h<3{sVQVB(~*{{rIpcxhIj&EgT+?2;`y;pl(z}*aZ$gV45PN6>P9ynQ;K|2;n>c zWgLlsl*DY%sbnV$5>(IzyO0cEmF1`um9Qf{sPevLCV)=9;Fhb3W&HtHgVYELjz?K@ z)er0LAVCG9bb%1$HE0O1F+C>!L*YEjz(&_r{j>M4mMmSfv-)KNeFjtAr6%<#aL#nC zJ}R9E3YX$iUMHwwDv@B1FaQ9f{{X?JH<1}b8o#lzHZ&tgn}ABOyMof2kvA6g?3`G- zx7-Xa-j)dM-y&97OOZfzd^48qz#<+ba$SWLf<25H?36pbZdfg#?-MbZ6uUi+e}t0u z<4QVQV8U-8V8v-~q?XVnRVz>|_D7nT;A4e*Kqp$4gIAI%XTLB3@>@uY`io2a6(bkvl4H%c>%|TjM8m5e3 zJ`2mJL9l6VWX+!sO3jyGqwn<@doReUxXSe?W|L&%`Php_5}L0n7Qk6C8zPwlNOIDl zjVP?SaTjY~6cXiPUufS)o^DnR!Juh9!%n{a!6-P*BK-s0v&>BfHq1IYu)lqw16%?f(CdkPFI3${DNDn z&4tl_{vQ}}6W7`ui`9Z7Q1HAc$RzPpJfUSzqNv{j+xjbubPcGUN8t$ zq`-g?qQ46YT?}f|knHk3<-tEAIe8b9xIJHT&yxbwx~r&iU@SnQtQkw%8|NVb$1@^3 zTL_#GigYFkWZ`X*7R*BJ>Xq zr@B8;lqEK`_J1@=uz1~EYVE!fpKitW@@_&t}NjsHRb|6$E?dyE0V#~{{@hb!$KV_E1*RXXc zU6Qo?Yt2H6>C$iZ@4^o2A0#@v73@47Ih$U*2qCc+= zlbD#+5grH}E96{dRC*?mHgh(jj#CHs2>!bt6CNkWhCSX?tBP`|`j2h@0E4uhmwMS< zdOX3X4HD7@l-x=enwfD4SHVz_B5IHzG?x@@j4(InlC!yT!pGA$(Wz}q*g+*RE(PYw zdlWw57TmUpaHZA6(t)vU;_(_QwH44S7))c~mf*JZ!LkSW5%vpG8l@>>GVjAMc&%x# z-Iq*4hvbMMN1-UO{lKIh8@Jb~Nl?CeY3>_<0)Qw#{8>bm?Ts4Bw(mTGXdr{7e}$^j zayFce?+cc$2=VeuQqM^bd?}F+IhQJ zBfDjXSibs@p?gV2FdMV?F+oMG{DRQ@%3sW<*P4LTdApSx(f(dS+<=wKvTj?YuC_h6 zI+(#SmSxM)UR5u!0v3JJn7$-fdHhPfV`rU~Y*A~mY>SR625o8`DFeLNz41l5LlCou zJwgw;du>OOmUUD_LymEPB81rbS^hM^qvdHi$hP#%u&B{`U^iDZx7-Olx+x^JR?Uty3iB$pn9ef%sDZZaxfN>_ z4GN%1N?r9EivIu!((o>kdQExE}XcO*-oN@R$W2gW6i?Q+e?OoSg3&d z!j%%EO%NT+d=|0DZUf>l7@?HBKzKh;JIKxWLuX-X+dN0jwy#SO{veuB{ONJbM@--q9$)a8qri?t4z@I3V&HI{z%b6_=noBmTWW7%6@E{sQBg~LmPh=mlbbYH4O5V+mmlmu?g#?d z9;di=P&KF(6_Gt9jHmd=A|(Z1MTFtzU({ZQmfAg|c0SMen z@=KQ*8pmRb}IJ&05AdS zXo6|FeW(RSW$V4Svt$c(ZV_CgTz$nOF-Cz63Hnd! zCdu0wZ}Ev;l(Hz>6>gT@k6|xqYYG8?ei0W4y72=RQv`)Am7=>u7#mmVhQle85L5m- zej|s{yb?4-b_z|7_HvxBT3Q3PpddZNhWQR4B_G}W3>vca!+93GKI&sTCA-Iez)(I+ zau*aTZ@Pkg<&Oh((~xbd+m2+=_UUF zhE+Qjo~C_>PHl=p)LOgbuiRM^6id{dF%q=csv~rXasyzMtS*^o+rJ`K3w9df>H$aj zpP)o)_ti$+YbXrPB)-kOe3cjQYvS$^!o0=Et7vJe6Kxzt68I%P|Y2-8pE>SUvO;Hwar0Yw-+o+#=WvsNOI00jknh z?dB@%7o15&6uurR9MpCD`;6`lRb1OLrR904>^T!p0pep`Wxk^_G*DgVb|4+Xx=Lv` zy;F4*xGfQOunch#DZrKDDeJ^+%58I4%Ar9m^=uDupdZCbN0AWjXGg2q0IG53o}aRx zerwTUQ(+lYraA>i?53_$3%P=#r3TNi4G*u{zAsn`%^$-Xn zFp_w{l(6rKPAXqXR@^FslAR^IVg(>_I9q-jmp)e_sNV@o4Uk-e{xLh*bjc*Fsp zylM+MUuqaD#1?|z+@ZEb(T{fgO2>NY$8i4u6toDoUG^(!6mL|IsYgS<;6K0+-Zvha zJ8K`1go9%(f&^j;3IceEhz*-147%|Mo3c>gj+f#HQwHVrxb1FQa(Ja%@vz0nm)Ohe zIUDKAiApd6x7XR8J>|=)Ahlmq=@cc$f>B<5BWhW+i9B?YkjAc6GNeqStS=GdXtfIXFQ zSPZybGWl|->m$$b*ZfOs@eKBTh^{IDQ=u?4-*Aky=+kjZQc_yfzg6WG4w4`3I9*&$ zEJ8}HkH|gKF0&v0@#XDAg*hMqyAO=lbDO&oBMi-e`)Vx`70YkYf5W5FQ7eHFT}ZH& zXcu9Kt0MmZh6!{q7xPu~F7Fjq-Uq^Q6n5J$kcv*lTXU(7pX$Pu^-|yWy}0*@(u{>;~JUQgYj(^{7QLXFSD=PCzfjt!~BXYRcA#gID9T zsQ1Ar<$Al62HdQ;lB<=0=3P`Ng@|oSH#|)g)@4KqkQ#gCi|KlD0!P}<3N!WR4C+V>lU1p6fb)0%?Wc0Q~ch@=U6{{RI9rDb%~ zwvz@Q1ZpE*@+z9C-a~wxr4a&$+(k;hEXip2rNyD-%jy3B2FQZr(c&ck01MaI;VX0O;whXcNp@+fm0&j+A5BE~~3U}cGPu~GJH zEHar!sk(cR5bcZ1v-1WkV3fO<%m*k5X*zlDAc`cVRht;YnNUeXt;4##k0Oz@_wx_O zh!wbdxD9L8Y`8+bdXAbtZqxvxc~Z{3BStM_0q`V40+EY|;u{}6(t`3MM0ACC6KX3N&{GP+p|q{g)!0;ad2jIU!QiZOK={at z>YoufUP6@XD|<4J?ki)rYb^pTddeldmnrtZW~^9gJ(7@?W`_FxoOt2qL=dzUm8Yfd zK24mrq}(8~o}|431_tp&M1ZsKI>I%TR2Pfnu~YiL<(sK&L6CWFRAPpg;edio9F&W9 z0BXrmKTC*(Q|?>*k71W#2V`j4CCPlax#wcm}YpK}k`@mGaFX<9=ZKb|dm*sn-_Ka3@LiY_w6;td|Yd-3Jv4 zw;D>Mug!X3{{Sf2O|fdS8>XT1-$uZ;6i6a9E)vgPK4o1UyTklK1`rGQW^@`2-Rv&2 zR&Fj1d}*%`LX`OOqFt?n#T^6Xg-LZ++M1wkZtx&zq6$73#aJw6 z8mFkRuKiccRbqpmSg0=;M@-K(->e-5SqmGCBjRdCDOL#uJ%jW1I{8yokmf7$KW&UpRDZ(_ z5V8O*XV}dpQvU#O0%F)i2^OLSxNNvGJzyOt3V-;0mlz-&fYjT7~ zqXAf|)gCTh32$vTMQNHP0gr_q8hy(*s@Q;C-Klr{%Uc8}eM(6|UMKq;iVCZ2_W0R= zP(h|evh3IPKsFpWg&n$WH_3^$X&-6=h<~6t#xYXa*ef-p+0#pC!jcz(j28a@GZ1#Q zPSr&;scrrd7V4HT{{Rbty5J=l*@#eFL5#Ri#Xi`=r@5NOVWr$qhIhemg_(Oo;~^58 z1YZ&$WIpM=9mIWM@!YUVEgttcU^kd>x34Z|;%U5!bu#5mVK!L#1JV*eo zpHyxVznHh%+7wdFGo&WfY5A8VA+~ys{{Y2W^(pD7j1oA%tcu%*NxWL~69`ygRmoG3 zDN17_LZbn}$y0KZ(*mt!)7-#cLK2gI4lq%sSVc?Fc$uAxpsAXtAe)arbt_ahxpS!j zdn$~IU%c6ziUuPT*+xA(z5FuQsL!e8#mgENgm2!j;zjc(~_{Rqqn~ zu0%Sq%PL(g{uM3lJCi2exj`eta^uaGdm)siE3r~m+bSVhL3I$jP(*3Z?HCXO{#hCX z`m>t{h&FvB(liZ`f>V{>?SO4X1`DxDqTd%~87>1e2R*%=NM7^Y9k+VBEtF^z1{_<9 zc%oNw4s=kui8^R~!7%6+c$nvc6zY&piS>Sx=a||f6?-zR$(+^Tdm1d{63VE6`1dKb zgf9YN<@)&q2LunpEy1M_K@E#$WFCY%H;~3glL)koC&(%6O6UNq=p{IBz>nFAhQl0{ zreY=!%qqkZRu!Zs?)F$zdtHa0;9DxjS@?)8UAY<}&J_sM(RmW#X<*T4+=z;;%GzC^ zc;Ft@%9vbg33W*J(!IjE+#HeU%cu|{xYObq3OfSn?aL3#Ib!1emnz*NUpxF)`Fm7o zm#WN%wQ4X5Qj6J_PE^?`rD=uiicc@_9uP2CO&qF@fGAQ+P&T)aA6LC0LPClgAM}n@ zVS2IY`6juEYIv2qj?c9KH*at(Xj%9o0$Fo5Yu@)#ZydS zSCbE<&Y$VXpNNZ31nOO?*7vSFTh;#;nj7X|h+5-$03h8%jqBN=-dUYC)qGivuZlhAHJOUhl%|cyf zp@SX<$$z8~s>JV!Jf%ma`jwBUO{>0RSU_HS zgvUL{jc&0}quULN#W^e&4oiB{xm08oyP#*ecZM(sM~d-PHxS#m@iR)Tdtk46Y)jk? z2fdg86->x9?>P?9b!GgB2sZx!{{Rsfq#1o;4{DN(@j*xK=7Zr*0gclqT?oo9*|flm zwALQtgwJHbbIr%PbG``BarZ7MyH-^NL#GG^d+m+J5CWthac6vLcI8cs4>4N3JR>$} zqMh_a_))KLH6lt6C~`WiWIEI>uYy?ADO8MFt+H3!Re%kdJmjRReZm23*<`#hX|ntn zV#3RO!$vOnu>{H{je9e)A0qoRVsPeCLk^lg7@149y%C|ZEbAS+*jb`_oko%6Ws--B z80Zx~F_+DIdk7hO-w`-XWQ;Xz@{@7(hylxLIIdi>+oX&m10wB1e7g9TDutFcbV`Ef zv%ZI>6no%{Ym4C{S#!?_&m3TtsGQn%QE_6byg1)O?jT1koAYpPnFe2Df65LglTzG! zVdM8ae}ESd%0Pi7v?t`eS+pT_jYLWtl$Fm-m0HI+ar!FxOe(}fNmU+Sm^C!cvZ|=M z`4p9{FV-!^4~XhKS+uxxfS|S~#q~6F2+|DR!xp5!UAbhbPQAH)VJ`Y*i)tz)cYBa~ za%+FzsqO`g3ZbT2XSuvfUquzJWs3hR_Ct{M4#P4T}UJRQu8jTI;?^lRh7HCf$ahqdLf-syt*U3GwRy1XWv*D6Tq7dz!d~IluWDrh{$1j>hKA zbI0yn#}=*=MZQ?EQGuKKc&H--!VjcdWdTZ0y7eyu2dZbQqe}|xEgYOg#=6)@K2c>b zoUv226H2d4ViNgYqgV9YeBHu8q=`3UKQPJFe zE)^N|02E3HJv|lyw6XS^ps`thxt}%X;L$gpfj-iwMMCYs-tSTP(g~ekf ziEjMV6z+CpEe``%lgfL7fY^Rv0q7xJO)F6_lxN9~xeiN89ui*ZUGIm1DBB>Z^pQT1 zL11t|29bhH_XgJwjINT0uN4T|Na3`Yl-44PLpa9eoKj_IOLwrf@A<7#tH~U-Ta%(G zDoY{Cg+0l_jksOr;syedvF1VRe#;7#7hK_bZ6`PV_A|agzvMQ#Y=H+@qAYu~{$+w7 z-jy`6pt004t;CZmtodR-~WIbDyqUsh63SS^@-C69#q#$2} z^%>XP9yEp7OwHstBik%nx71K(u=0sW^tLxt6+yyzLzct}wqSVy;@XOe(GS{b6uM=k zEF2swvA=i9!SQ(*#JEIO09Xx|w!Mx<9$MtEC4Y#3p^qXumHZLfxXn9t8JvkTWve){ z!BEbDY%G>#<5;5npqWoAd9@sq3ufA4%l40mPET8xGTMjmo2^H*EYai!7ZP1xA>stfQoeo`<8r0&l3xWDm*RA7*>?+PU54dfrTo-b(HPcC3t*fxoX17mQLAp zasZF^6B=*3fLzNI1h!U}!zniBm;&cWS614#458U@k(qs#-3~_Wc2FoVN%s7y5sT&>T5^X&}FabaCy{P1_KrJqCv1^p&t`) zgA~#jr%G5H$9;$^s+G^`6b$hDpFl5)B3Z0X-Bbq8YJ>Zi8332ZGb**DZ6?YSF5$wQ$qTRr&z1{M-W|Mg9?M(0|7l` zsHIyaR5xBJ*`3H!n+)!t5t(V^$>F4j{k(02R_z8%D7#6;-1_Y_?nMQu4tB zdu0*)?f90a%K<}16%yCuA_P{mM=7Jz>~LPLYI1t0b|UZL6K zXw@|XsaM>%3%)Zw>&y@pekIcy(UTH2bbQVk>k4lm zJynG(=u3^QmDiyAQnrXkqHs97Vo;=g--+iNO!X2Vy$fn2SH}3Q58S;&^W(*o>n+&1C|%Q>&WM`8Q+o=$@eDQ)>JYuE(_ys=sZKK2%Psum3g z!t7;($;n_HLM~UB!AexG*La}cv#lPdsdK#5pW7M%kWo_4gaO(CxsQ&=jNkkghh}>LVm=a4C;~v5uDFFtu z8>P1Vmz$O%sycy{GzDs)THFY;$xkvCJMdc~?j2uo0U8bCDyFU~79mQ~#|#6f5aoNm zLJn5BS6ModTF9ncLBA<*^K9~3a&^NhU{Mr+bF8z&BFG?;DvQTp$*qJh_mt;=6G9xe zY}I(K@xDf)Qk`t^{4n>5ggE%95rbU~p=4DH`vB=568x=8EYak@{{RKWn=?5CQl!B- z*n}wJ>urU-sC`2r6Swm$YB^}OqzSc9ry*UucoU~E%FNOlDbjez#X&zW4YjC2)*ZeZQn?D0(4@U8!`miG*(*lRUk>QE}Hy8t?1=pj16ZV$b#lHbl1x4v@bss>t{rp5>;8^hBN-)H=PdaNR3O zMWYB09v848eo?=72o+{-YUS}xd_G6WJiSW#q*bR#M&t{H`1=BZ54uWSSZYgIUJ#YO zjSlpV1#KN#B}LQ}8-l#&nMzTcP^dVPm0`UhQMSZ{u`tHP-jP-OtFDo?E|X7b08N{M z2Tf3XMMkGfHiV*D_wf~*OtdIUs8I>u<~39T;R;dv2U%8w*5&peZZs;Mo@1X_vi4s& zFaB;^BGFCUu{7|UpLi1XX_ci**zR=p_9^txu$6THe82&?+oD?Zw9%G7GR2L{#Unta zTx#p1V3RyX5K~li>wci$qk_FnFnZT67ZaC|f25c`SE5v19|jH}-fLorAM zmw2EJj{=aO^(E8(NdbEbh==`vKoY1G{8aN*cJr`Yw}$3T+KFC?4NC8Jq1y)6hvNgP zMu~QMSovAH1iD}0;}JrkzlCRpWi(DowL&%fp4bbn+gakGQo%qygr^-$C!)alzY*q9 zRZ=G^6t3jEyN1nEV!lMuZn+V>OEFEx^4xSA@X1KB7Jvsx@P0*uZXhr`MyMKJM&(6Q3lY*IN4~1&KjSzTweh%A)HDO7 z%4Md`MlEGp*gFM^5wI0I=ZiT61QYrg5+0fU1SdeMkiHNppi4-dq%QA_M08&8Hm%3EH@b>Yjcf;QS9QG0f{pl%;6ZzknC8YmtkL05Jy z3Dx={pL~RC0{HusBd<@Na+t`Q(*ls#HR1+nWAMy_#+~V z^A~IEMXtTKM2K*!u%4Jk#|Tisl7f!wwDz#z)@~p zc$Pdo6UhiJ*Wr{(_tGc{HFsr8VC3C4!Y*l5uRjoVyIdNGn*#8R>mw_xNT#)^8(Q&k z6{@>D^a_tP6xsf0H!U=8NUp3v>s7y)s0-+!thL$+)fr?gtu!1i#u3v^-{JvW9IBoM zjD83|Kz<;Kz}Pe{SqVuQL=Zg3RrrO3*g=<)winh!s7wuV;jeYNv<+B1!7g!u*R}`S zMs7;(ajH$k&EHUfMa`zhwO4NLS%%!^@lD)D0QFYb1 zO`i`gSY@y>!2}}9K#_09u)F}p^$n4^TwRwgmsJXAdTI%XFl=??JEo6@TurKoL7`K` z;?LGG>~cQ!sMuNS#Y>;_s@hrh0syR!3lXody@aLh#TQCz2+}l!KssqjQ}V2=dkcT^ zFfS^E0gXmD3f3c*y&4aa)n+y>+f;AJ#%M)Fp^kl3I@8a$#0p!Em5WExc_XH@pxZwW zlBAyL{{UfY6@F@uY!pu5{C*`&a5E~-Dz>cO=nvRUs5`_GskdFJJv0q~dCO&pyRa+__xJx7~w8C>uYSy1Y$m}q0Bz*Y-S z!lG(ywdtsJ4CkCfpV4s_!hqUTwWi7<%U8&Y8&guZV^XHi zFpk>W={iL9W9UYmHFlu4PcN|W{T8Z?tn)1Kh@!p_GRD%!QZ|>1!1a9*OH89cy|3bk zeG0K6=Gm0gdM3m7ns_+}^(pdOVRry}K!v{s<(R7pfZogU<-sb&fg)t%)Lnt+T$S6f zMSA;$ROIqRs>CJyEIESgLqrr%OIy|fDOB8`T{>KFiO-i7e@nP}C1}`8NO&J3`-kv1 zk@*2$)noOZ4WzLC*-d&W573BK>(`2aZhjK>WCJq%U%2%9Uaf&(Qk)2&Rll-tL&}1i zH)*lb>b1CiR2b=Asu;)%S5KkBzG9{Y0K0WsCy9BAUR|O}Mkzol>2prn?BJBPJ9qL` zHnbLx2zaqgvGZhd7oKJk&)0*-#q?^?bdd$XeCzI90tS_J;!z2BL*fZZ1hkcK2u%ra zSdj>DltsMvDBOyVI;w9s!6r#x=-FMWxGfUz60a8=Fy} zxemkZJA@5cC@qzfgKfa^Hp9st6m0(f!7ot0-;#l|%oHNb&3sqm+ZwXq*I3YJjld#< zV|3{A>IgTd3uRX>2`Rg~i`=WE2T*M-tDQ!??atr72+_z5^%MzlQP7(RLhdNTM@db~ z5&q&V)v^GNzU7*02-C1Cj74(1Mbfr-Td5}h0I6UC%M#HRS>St63mpf=<=3CFbHiO? zhxSU`wCfmru^4){rlkh06~E%v4z* zSo||{@r`;f$j0_$Ab_J>$%BAF7Tr?Rz|)xz^m5=WEvuKHMD%tlynss#3iCUt5Eo}z zSZvXNaxP%UF4?yXiyL5vFAu1Z;%}k&kwP-3We3eb4_;qN4IRJsQXG=0*k+s z#mo;xm|;ln&OP{qp=}EFQ9FGlyo?pD49#j@`N+>JD5``T#UO6ynZcj;9^wgWh7bD3Y!C3dRn!YEbn4<@ptK+<&+|v zL##N*f}>O~4l-%9H)AOIA*0MqdPm6$MIO*mX(6ysOBe@=ADotoU1;|aFXAQg=AW$b z4Z+p@u^J_cLt4fd(a2H#_EK^n`HaWO63`U?0Fj2$(yaSlC8%ctU6TRTkzY^#OGSJ& zOFYsqRDMW=UaHm?zC?x)BdRBA-lVrxSC-)gYt$wn{QQ_nLk_%>n&C5k1E%739ZuF zI7gwg>6F5vnWC`UR145BZJvIxNk&KkpTP)dI0^}J;^9q5VpE#IHp%B=KTH^~zTo+5 zmXq<53*5H+;R~blQOaC*fwGE_J@kCN!dTH(vD%^1WcUz_Ta4(c^%y80p?{gOzz+*@ zDJ^j5cq5Fv)bmtIrww(V%m)|%NDG08BZ0D*t+#Iv+@itSw)qvL+EOOhSL-7vs5$Rt z0-YJ^J4NFj7??xQ#@DvQZf$k0*P4)*9>O%ZUD~%;0!jwNXK94(?HhMTU4|maDC`w5&^nZ!2yeAz4}( z9@m!kZ}1QsijkzeLw&agrJZR4aT%{e9EXM zYPu{6m1dm%^2MjVo{u za*S2g)G%tOoczUlztiea+2`(Y>1XZ`yDO6=U%+HO5$+-He!z-ip;y$e4TIt2FC*lz zg?zjIAiMDXQMNvcFCuZ(>FQanM|30`m>ORp09+7n%muRoyg$+c&lW(xkuu2qunwwe z{lfYZn&PDsx*Cd`-waeX=&W~HdW+vVS6(j!tWV%lEVS4+09{DiV`=dY`{CSpq;Ya3 z`jrj-v$rYVO=d-o8XbQ%2&-BwQt?nMDOXKKX&DNS3Nh;1vR*A2@DlpAld&G;as-OM zu#VUX64`Cb)l!=Mj=H;2{{WaJOV1&MEnOQmh(Z7mH6meU9rse|7PX@P0I7jXcqrK8 z8Fh1Q#G2d|P|+C$Lg6-;s|54u^A_CkL`V5it;R#wkb5Dey^a}NP!U}SFzwz(c&;g(zABkZz7pH$)aZ}D;&!&()of4(e0@H`e6=-_G zPXefGIJDhResVG7Td$kMRd?}f7wJe>PHC zP*T8K3)r2YzI{bpb9^yCnZj4*FPKF&z*XDuPYh&LpK%MToo<0DIDj6}t8h&a=60+{v)2gl z2bTfeD|InT5n_|Xaur7IKNz2-S#-HYPc>N9-66?m518e!;{Xq_ z5@L#f8_Apmc|)jW1P`#&%iCiOaH~|?O*=LPTyAa&$f8ieb`NKjA9@ohTOn7{Ra>qf zB@M+Im4;r^TrX-2N};$Asp6u#%fMeTxSHB0N|wYyt5omHm*8RJ3PCIaioJPX+LipL z_-`|=%5sAtTCsiI%dnsasI^d3g+uPD?l`m*@B*6qm;DRWqRjH%u{RlP)Tu9%)O1^& zcFzyYTTK8)?6PA3n_%2=useE6LqOVSN4B9amwtjEOAUJDIZK0(s#Gu`4etI)UPEou zDIkAo0JQDCw;79oJk=$9hm%@pU!^TObiyj(#CuUn7J5#_lA`(!?ahZX_8Y$TQz1a& z#1&;m&Alts@e4+MlE@`N0SL5oT^34}%M6$B5qpA5R>&1GyKvi(-|1n!2+-U8wox7; z!LhqzdL7c7|Pb?1mfGh=i_33PRb`rc-_KrL{4S_0;aS()lNVqhjFXdQ92~CnVZaN*E z)e`v`!E(rO@Zkk)uVYa|?A9WN@hmU@0Inu%ErqyH4zQ6W6?8?S%%ljf6QvTxf%;H1E7{tVI2$X4$7m}T_Ms|Gy7~54btwD} zzh#xL{t;d<`I$Bf)a7JKRe8hArVVs5)N4~=;Ay4OPHw8FA1f2_0MS>!+~0;fOPxH_ z-9r;c$PfG=ZLCJL^o%nb*?GB8q_)~~#mm~IUx%S{&IStnsVJkmD2;iHETyALK1|n% zX+$9ic<#dcq`fW$uYn%H50+`H@!Sh)lYR_jA`anK1vAc_Q>-8k-8#WUQq~_bs_820 z&YF*$p!p`9Kvp}%_Zn$Azxs+*%ZIfF<&VQl@Lr-GCoQqXXn? zsFZ%{8xX8Sd`0<${{R$peqV8cK!E*~a=|)Jw6xl?G=YXS4A!z@3{Q03~SIpuwl&?nLxE#t*|Kn05XYEL(f#7Bq^}6+8z~_dw^nO z7Pac(-q8r%_KTY-M;KOpU^C$AY9S6uNoa3HWy$ z<)3e{rk+M^So$ONcg7Xabe68CD0{l!kpffV>^5ZwuoxgT@@~>Zt*h|vU>K8Y!$6h# ztEkOy0!g>SOAwk2;0%7lgSO208p8IVyW|D&Wj}@wLquH<>h96ZPdsY1W zmu!Ds<)s3UDlj{~+_DZ#|r!p~EzcwXiiYIR0g(fHq z5kb`Rv6Nu31F+>sUF0iFIP*6xQExI3U%a0HZsGN8fXfggM#gdn;|1HgY*j|LQ?0Cm zOciTYuQKr(JVi-&Hir*sd)3lpR{%L&N7$3I835eHFN00JFv+qS3cpQBujObV ze9DOju!bQDx3;|JDhO%XUn4RlXeK|@y=I2J)5?Wf;5;xSlZb%s3n5C~Ooy zoPsz2fCsIM!WNd%?&VB0JwJpr92Hx>Dp6Y)UaK9ZO5D!HxER+hnA{4_D7bj)iX66z z_iPm?I22uw2J7GqS;F#RBhLQ-aa!T|VDZQl6|DU!b3h=xrWXD8ij? z0E-g%K-?YgA89B7+X^Yh`(Gu?`z^rpMiB>%4#6-=wfBC>o@-^Y4x>y`ViC@u@S^IE zQ9$q)89~PZ53ni+4LJailg}%>l#zNozd`FMmnCaIAE=>NH6EPEFvc)p{lxxuxC(hR zWp8GSXtBQ&#k$4RII1XdbBEF^X;c!^DEW+9&=P~4@WR3e72TBg_E9j{M_Lph(H$z- zc~Qbxpb=^*$M;f=+bkXg&rzuf1!8dC#t|2qS>;l&Z4%XhXX%!@e8>T|f)^mM(9;0E z{1Ah{sIffPPmt-GsjA>PNs+g)id4F@+;^rT^a)PXJ(oa7!lUQxx1F?%3bW#>kq!R< zECQHcflFc94RoykGzVF1#}1E5Ud(l@=h=X7$5nWT&%f8$^PXhS0$SXkI#c z0y;1%53exnDQM4aLp%zLT;N7KSzCALVH-hg(O;M};A0R+VfSk-bU#02_8@q+?)a!G z^-bN-3_K#r6a~?KLo@P^(IJ;Rugl`T;BxW`0NDM8Mq?NT^?K!=qc)Wt72qb;Jb;Qz zO~o{)^(>h5O0{u=^a0U)0$mm&W8lA-!$X?X;}Gc!jxalx(AT;>#-*{Q0@^aIl@}ht zVQ4O>nwA2p)iii4?N%w94*vi$o(R~sE3cCP=EBc%qVavJVy3F+qu7lGl<*g!=!;fG zEvVv%u$nD2-&n!YbAw9O?UfBMVKAqF0=}N&mK=3g7z0sX8;&z=mb*Sh>*I@GWCyda z$ngsah(@j7a0Y;R?&a3BTiDD2Ao`8gg{|I7LatquH@?Uu5UHDN(Hs1^uF8%E#k(-v>>dm zsEfKqTyqkFVW55xD&TH5B6NZ47J`EPn)*XwM+PdlB9KvJ0^~spF}Egt1hZM&{ihTt zimgz@={?!3zt70pE2OPQJLBRb+=XSCavC z5$kxnpBDNstBm!PGS%q7xSJL899)sRc%xP)=QaBS@iQq)yk2Aj z7}9P08QfqLaV)!<7Cc&c16n%+KH)$?*!+joE51c8=pnFpbIBT`l~>J;)H>Qw-DZX4 zY7)0Np$J+6)q3qSb}49_Agy09Z?ZJy+IWAoU3k;WkF4AguKGZeyj4}j0$!BHw(vFn z;X{E0RRvQ9!B(Y2tKKUa3zYBExPrQ@HZPauEGP%?)M@~(Th=ek>02?qNFXf;c^cU9 zEutY@1^S7iNmZke9cVtuV!$A%>ECK41cgK@+-I`!fo;cD)or>0IoK)DYczSjrsZ9N z_=_M5+NXa%Fwq1D>iB`sK+|>+qB@SnKu|eq9!E4!g>-t1P$ar6@+vio#qfJBFoF?u z2rarrb5#^yE98B}8g6mFVoTK`y64GT4XWB#ru;$63%0oaCWX`GjCEP*U-l4OH)7}> zencY9)O+auV1aI?jUC^y7Jwc>@%b7k(F2TnfDzYO%je=a$EUzWjM^+%t2CCl69JKE zN@N`?-9bA2wV~i4c47S=@^3FKr(RI)!G@Q!)5m6tHvxh|)>Q>LaWW1qzz`DG##gPD zLUcz$TqAf@doRQ#2Ui$5*FE-DF1c6Kl_iVjaEmG_+uNv6)V1Q{d8-5U@+DWGOdxjH z>vfe4KVOkL+?!h4<{O!|*C!uDy0(rOw!>w14P;hVb=94)sZLo_LAw{%n2>CAS5YTvoT_yJ)psTFrQbpzB&}6(_bKV zkRy*u2+-8-yo5)%PCHmg}@q+xXQ%H!3r*>%{$Y>+By@kXd_$S682EL$u( zrVV&uvcq~ub|FwTB)ck+Qn$wm_bE--U!Nfg1(nM}>{FW&3bT7&rBM(B;cCIFYK&in ztHncA)iS-Xc!HZ9kG|Rtef0u11`gagm+?6qAT^d?0cyO#=}v=;FX)zB%riTBZfqSRYBEkGl`q2+$gr{_mDu^$x(LDJY>}#s}`M46gR5F!`Y=9h0j9=8?r$MnqPhx27`iwJY9LX8sE1i}4#U;fn`^)z zgiu$g)V?haI-ZBAO;vtIs=P$EBz|8dZnQ4jJwkwHJbfTW>d>e8ge?h1S|k#*a_jLa z<{kE@h}SD<)x(g$e3WV%?hDX2 zX6@k+TC^-7_`mLM%^$&AH?4*G2qUCw%D*tw57uXr zQ@gO=Uoo-@OyVWvxNXKD+R{e+_#m2e0ZUY%+pSsSyof`W?f6Q{5d`{et}IJfsnfME zMb@mtm&Rqn0=zt@mOF$9XisY3kl>^ewtjx9ZEna>*74%IE`Hm{=$OK&uoPI{{)9nG z@xmpm-cSLgl=7Y!FiV6U&a+9Yi(vy*HBG>DxOM|XH+I^O`3Q`fC^5I}p>B)dzmciFzNEhh;08-aT zBGhwXyVMOe^2{*!FNn=WRw;Tn5p;QM(RMvoW7&Tz7aA{I#S1FVB;Kvy@W7hV7CrsP z?*z49D>$!+eJRk^c!HZuuRnCcErVCiv&P`tXsta(Oc({sP=Rfs9I19D+N-}H=%R~%O8GpaTRI7`3M%x}U}#Rq zY<2ixvIh;_cpo7`&<2wm{{Xc=oFTRqxO{0(q=$((aCi^}E7AvFTO9-PP^-VD9e}Mq z4IiH|>)qfN(rEQ8QqrwiXfXqvAA8&B=^2F4H&(!YUc+Tc4Ild>3PE0ngI;BvwX{4Y zyoO4%x-ysu9#15^R+wu1pJ0YG4OhYLp*qEcCZV#)Pzdalj+OEzrvWG-lzW4i3SG;# z;E~ee=$3F=fu_$={vai4!IqbCj3xHNI|K$*YnM@EfTeBEF`PzOtS-L01zw8B{CMjg z3v00*L4*P1VQGg;{o&_QuQH|TUI2AoF>fuYC0%%f+81u&3XOut)O^uGo}QxBmMeQg zRdGk3lQoFD#&`$RIblkpe>W7&0*gh^o(Lx)Ez`&uU5tYL8)7^!Z(@d6es2Xu3G(y2 z(HR6bU$|qck4nD*;#@dwT04XdD@{sa+4*CND8-5;qsYg1^h>;(0y*%M6eM^<^BBd$ ze*6^^;TMYqqw^5JXz~@0pfDVgcKH&j}f{QP^Lvf-1`vxE~BS#Y#F~0rB$& zik9MNnYkE@{{Vs_DNMBM)}A6J#R=)p$UwHBvn{6}TV1u_@6dvp0NLV5q+3l42c$YN zxCZ(57K~Dw!VC}gByJl`>~h$b-rSm0xD+2rE>Z*CCiubo4{p{KFNA9LBYY2xeN~gg zU#u(JZZQdz=9~D(_7_ zOnAPR!^3}>s1=|*%4)dM@xqYbG2X%zws$;K(*^Cg`5`3|f{GF@)l)oM#}ZjI-rt4E zQe0iC@?6>t+xJt-F7cjb77D|bdl_A`6fcGaR0wn2d;tu2feTeP`GZZy^N<_9mUtuK zMZ@H@um>@FTJL`<+!L(0Qhwgt^*>aEaJ6q8MRewhT8=phkMoN(Rt!FRE1 zo0c0%b*=D5$xHboP{7TQ>G-H3fG8FCKB_OU04;kKi4U+bIEJ`r6*){$u9U6qQ3UI5 z4@MX!JQK4AYBe1Y0R%jrpr8|fN1G){Q&uhBD!GxR)~#jR7Z7zi?JBX;2OkKUKi#RO z*95n#`j(;3V!wkDuQ;5%r?@mZC`Ny|U0;m`Vka`AVB;$w=9*h=(hqkIg_@`66FG9~ z>y6a4y41RSDr>aGRQ#1L<2HdO_re8l5GD-W{{X6kOJOt5aqDZXS=Z{KXah~#V|ni5 zD3mLY#-;FGs4>rODFT_b`(VL02f<8%r310Lel{GSn9}JeeoATNx`(J`a0g1G!RhIh zzLwEj?1w_8jyanf1{rn_lgc2AL9Ruv?_ws~uMl1f;$`*KRl?L;P8EpwV)3ztl)7H! zOM@LQnxp%Q3_x&vTjU+g)nWS%Y-vRGau)Fwd@uv`hKg#bp1gF5)4dHVrG1n;_C+xTPE_7a4jxlud? z28R!ui3k1Y>_ZDcAern|>}%VZa1h)*$>3A=S~$zvAVy#D~v0-DUi{JFh6GPN2| zx5*wv7RFzw_(%%dMeJG*Tn_hQMhbRI_&D?5wdOQJy4)#pu&P~Zg?q0tdLUTo7brp= za&?^rz2vrKf^hI95NTp=gj;d2db-!nV99D2+p4ST_+5=Ge6q(9hD^ypgR~3yej@Z*4A%c@j zwM-y&AR>#bt(K)ii=@`7w2r(tQZn)HA%4Xp7_eWddnH}j^1l@Z1yzlYAA~F4$O`rO zEZeXPe})Lh3&NYf%s>-G-5(asNNB2&1PzpYPk&JJ&44Yw#pDvsFt)j?;}X3_t_!L$ z%Bae}Yq4O4qv=c#VbB}9^O1r=7f%ltE!hE zrsInVE9%O(e%!wnR1nWfY_=4uTW+=+B3ATnkz+%@5r@U?L~ydHI*9U$`XN7ufb8Wx;}A^rNa+u{{YCjV*db8Vio`gWf82Px9C@di3ZSbO1p6F;b<&t zZi`_p(6w4>k`zS>>(pN%pcC?;vEatl7E~NVmP^OYtG~cRQw7LAEWci*{iO$w1x>4M zB87XGv}mX1R{2z)CDAJkg$w}6WY?-}QT+B|d|i4}Kn}K-mykDAMyHcmXchiFFb>V3w@5S4-kF6Cd#3^iGu2M7k7GHk!iBu*X9+TMhct6>3z1gU;WYi_Ga zZ;0$=0RBT7TU2;htdmu8@qUIl0>J52_AN;VmJe)L09%Gy@j95_0qq6aCrRkf z(T?~;MVrBUP^7TmhS;B2@S$re{&&uJlpr+PUs>&l1d2@$9OMNX*7|-$N8#1jwlQj3 zai*aBMR_}L0p$>^HU_O+zheT19n3Yi7W)&*D%wwQjdldfkV64!YN`Pn_L8FOuthIy z{6-1@PXI*x@<6BqFPGCAVXfQLIuu2PkAo7mVkup9ik6WXT|!KL|viu3nPPdJ}Rnq?)^YU-oQJ`gKH`f64Vr1oQkc% z$q1;Mu-(D|PY_fN6c|zBRJ1o`T<15bN`WuoO)gYnDE{%N1$(maK2ls|K){OA5!#nE zZ2ti5Gr%teulPM6*KiRkt#D_KX71bO7El9Py^AYox4{*=e3d0xRG{5!6stc)u$E~E z7HZ{HQ6Wv2dpY_6*5y~I)$_Z(fbtqyR92k4ORMV^_7;Y|>0>Uw*|-8;%N7{p= z-Vny(9N1a?MxV1`w7a&$V7RD5l&g<^NNkFU1Aw12?=^C=ki4r(xTZjW`YJ+ZJwzRZ zrQc%qEWf&F`hPIFZC2ICDWg~C_)ijzVIqyLi+jjm+Df+JH_G%BWP@hKaxf+_g?#n;(oMlGPYROhuB7I@*8EaaBh^9mK! zojDU@pC~Xg2LSesSgQ$#*+TZjsvii*T3-!83+00<>*+FK+9X&E zb!ksg;!(VOT9I7f7vvb)Z%P2F2u+Ew6Wr^r^Q6z1}w1u0I!KzP};hi^RF&8H3UFyfOo_(NN5L?N-lW^ zV3qhOD*OHgb6nM*2gZ5$%z%Aw!M z)N8Xy4mo0rx?uQOPR~VnH!nW!n;cAs;)7c!)HH46Q1f1_%*%cacTVXfBNO zu^H^QrT&=W3$Q-wjo9+gV)_0UvR4$TaQwwj3lIgr%(&Y?S&#P~yxx|z`HhsTXcg$l z*Tkq+hvb549OiLb6KM&*2>NtlA#L)cLaw9}dOifvTr1B$Fo7jQKri~54YzYsV&36} zwD+VwlDTIec^B9M+V8R&8!g@Y{1TAeW3P@8YjE2wqt3ID@=`DA<6WbAr>mx3&a!_5 z*xLmHwEK&(Lxy#qb~J)|3XiNZ?EvCE_9%zqs+AB5=D`}j)Ex}2lBBSeWKgWIF0AFT z;ms4UYM1twB3VwZ@&n%xV(3f}7St^zD@kvhfhNQt#_%D_i3UYYZiyZ)3Iv4|GI8Z$ zG()6m;5YqC_CQ-#7hX2<9XACWzIhm8E7-b~MJ=({<>Ms@=Z(Hs>RJ_L!rJgG0t0o* z4{)uBzaBc@pHQmX!*VO#a-opY%7z6<^jk{lh?2Ij_*y8uV04R06ucx0qdHgIc&phF zF_(o^r=L-?3=mCzjMuULvr(-UVaFr*oduVl%@x=33Sa$hTp(-dym?nycVQ4 zy1uW7La2Fi!Q?{$Qe-ja>t;l%r3!pMQPpaA>IJ&a&3zMUitn#89MWC~G_`R65GvYV z{EUj5pt)WmNFgBbuI~Q;B%#C+3SBO=kB=deJt>)TB`?5vh;;z1gIas(2wvdU^?KGY z&A2f8zle!-$z}blb*%lCWu(-W{Pn}o)ns=3H4S=agDd$u=`&V0p|ItlA5rgcsE7pY z3cxP9%V1KOCxrxaux6Nb;?PU{%Jjycq$p#I*_X|pGBnF*Vlm{|ZuClb1ofn)okN|4 zm)~LorPl~3mXojgj2PJj55js{vLA=UmEfq}KzNfVk%7nC9yr1PBVw-3TqeQO1%fEg zlAZ>K!R0x~ALJ`h@F!<2K8d!!qaH^8k(ZgEiU2aBD6E+fdkJX{KMaa5UDvOJicObIFkn zVQFYVJgPKHc@!78Cb@~cSU)Z78u5)je)SF}D~c%n!cZ!{e?GBYV!$F-nBa?`Sczd0 zR<(9~hp(-v)A1W2fWg5>;@Ic_Q%B;P*h6Gj4KI?~kCLo(x16{?Kx}lsGF(5Y zN{8fPa(tA#{?e6UwkEUp0BZCVx_+}F+LWa{6vnU?vVcUA^;)-Cny*!B0p@zFUff$C7Jt{{B{lmsrzDzpAU>#4#JPZ*ofTwvl%YEjxCBIP;rV5u`11VFgT>GHoAIZTU*mX7; zz|}^B5T8<WQ7-90*geBEI(Tgny0#GmNw@8?zjzw& z81KK#Sigf~hsUUC+%_;%umIJ!F8-h=Z#1<;i88gJoQ_V`NQ&attEGkgLQCW+AE=fw zs|!Kw!Zsi)Wqa|L;)`ybw^#w!QFfvzo>f_e~D3bEuyOiLo+OOGt%7#*k>&CpBK-YACI~Q<(H?G~WscEVrK*b9{zNBMX z27l6w4U%yl9uh6R+K!DuOA%rbRB|fud_KOwJFU}-5URojFN?L5t)Q8w?B~e9ScIxP z*3$%N50;Elh2Mj6d>gjqkyIKDDaa@l=p6DPliF4j_lIF0s5rZOkSDgNX1rIZc6tME zj^uM~pI>Q}o-<*odYdtV&F z+0A1Nnx6qi)ON%zi@L{{V>_k0o}8tc#CHxt}w!TDa!9`!R{${@eKI zK`Yo>3VWo7-Oa6G%n}(wQYfUqA}@MYWqPUtmi79s#8;d7(2!Rj{njSVlCl zYcB`x9y$;WNmNJFqay0|e<&^wp!LradR}Vb{4kNl3YYe!NHf3aE*9Ww_kPX&t75lC)Rlr>^dp6X z;b1?u9@vi4@QI}q?%{p69&4y2TJ4m|qcC9v^N@y3Zj9rShDo*$SVVPLkMHXRu;niY z#Xdm_j+z1c?lW+zN#8ZtK&s~d04}oSAs=QjOfMCZ@oU%zEdC*7SSE8RvkMl=sImF2 zHT)~MU-41-gW_G@2FrfVa&iEC+R(})z{6jB84Lyy6wd`0U1{f}7q+=nMBlsfu>D2m z7kdl)QFRQnrv0R7;%jMosY*LSgZX9(bFUBZLh9DzbxQ>uscfPz=Zk+bmUvKKtFvXP zRJRTYR7<**^tdWgTiw*7r6!DjKIS?LqW=J-8ZKK`RbHSYZzn?Ekw4I>C|AahMk0n5 z+gP48pwsCe)*X+d5no;zaiVH6>9YHkd;$~?L|alVX_cFQ5W8Ejf%}oBBE%-Y85CNz z&E~46oEF-b&Jk6*1rz(?RN|)cUwjc6g=kivij^oNqhIp?TX+Bw>tiOFvMRrqP(VAK ze?W-qbF?M?VM^33C+oO1Jn#f7^nzP7F1o&vRN{1^K0HqW5G6tVMGh6mB&{{ZNe>yK`XYa5j36&?Jk44OAD`{kH=5z*wq`_VH~cO|shVC=pdkhs;qZ+9M7-PWpaa zWd7|77L-~~A9O+`f&w>1R5%{d!H2ccOR-X@JxyH_$H@6*kIXEPKI05*(}Px z+$ZT$kiKF!b?rU(*p7t8pZ5hsW)pB7G@r6rRw>{)E0T-BpDF_1P>~CD3sT}%bqn1L zH4GOwR+^Ff$1g+YF$eZXOVx-IXGu%!V5?2B2`Q{2@WwVjcxz8p5AQ>ks(ZK)Tgzlh z`%cp=yw;M{`lt*Mpf#VeGHJy%)V`n-`h7$Pa*!qh?oF}E!D{{X0k%Pe{QFnO8mH7FGor6m>s*pgMF z1rPNO>V!iWKw>mESN6l8x>VgjD@+B;42{;}^ml`-pxh}`wk1PA{K8rrsE^K7Y4%XU zf`k#^^2<%VYP1MhG(ZLfKLw7%-T_8WDw&)Sj(_E31!mN;fR;0ngaAc(STe*s-O^cd zn1-L#>^K@%{{X~F?MScx0ENK4I<)?T6&M?}+WTU*q3pE~rITwH?A%sF&hG&JAz^`7 z6-W7s{K~Xf_ae}eyx;e7=%H$BYoV%{Vs!Vx{K^S0VBg|@MT;l(G}_&_{!<&Ad^k_S zjF)=;^%!rkZD{@=#=2PT{Y0XuP{n?r1|IF97VlE`XVj*jDkBiv0`6sOVC(tVoQjv< znQE?(P#Nrva?Tf@)T$V-8@rb?E!EE0jUB7?kxuJ#zxh5)-~RxNZG{|d{{UpZweL~? z03a-M>v(?>$l%TN=wuOVMt%=CLqObCI)2Ei;%WZOuB|D%uMsp-A0=IWVHIscmV@DC zd{x;Q`5q^ty?Q?}jn;!tjR$4Mg3-WoQE1ztQ1KTK1+t~&bl!|^`_blA0c=^zD#S#n zAgY4s4b7dnD2tr)cYYzx=$jPKxdx+8YgTqE0Cu^N+|VvG)GmVyD=mAC6F6BU(lqL+J5maSE?9J5jq65kT}!0rkgJ!4Zc3Gq zB^yypwv|;@KmfDm{d<8#-v>*KKcjx3B-pwQmv2_E=6Jwc!yv?=>TucW;rtl4#n zjGsp!tC}CbafMyqi)D#E(Xe*d7PefcY7MKZDhUv*Jw_qns-<+4+0o^tvhvlZgcgtp zoDafpDz1voer7>7F5kLhWkB+n%YGxE{{T~wT?#aj_T9GtN}@I*{?!tm$fy0miN4$$ z>jZoFr*N)hWCG z0MLp+G4P9V19Y|c#urW|0s6KgtFB!l2a%8djHc~$rLX2Ft(xjGPIm7-)9#{dQljIMjZ&Jm`6U^%sC1TY<6&M&9bRQOxyXBCa1c z#V2m%6cjzhfA$Zb`~LvAV$B9(ex9!Vf;cE`9D#~B=HQjZZuJw$*?bEXB2JYpkj~)=CV!?7)yyp!S6an&4?i!2JZqJzwxv0@h z&_kZ$*tK_m`xQEbQ4v%i~Ba=Go`kGN0pZu2Q zqITmyCh_hC+f4re*t!+3Xa2zmpc<`+j+!+A1TP$?V~wCy6HkUzDyv4{;=DmBx(N)9 znyM0;HX1vlz(TZ|OdfqkhNYl+=xL+&;Acv44?VQVRV;Z{9GQT#x@2Oth*1G)Gi!WTh%11qNfUhSGjUjG1M;6&Ex zYFf_WbF#!@U4_8&%!CUI1qrF($P@7D%8Ep56%&kcMb<|M*UZ4c3%V^Wtrvv}gjPvx zO>|(wl-&mZ0J)xr@&5qSqBedX`w9J1IrnFa*=0Zdi5`ZoEf(*F1K0UHK)bc86&{Kx zVvyiUTPyrSRfFePh<(qZ-o+HYE zq-Td3s;C)+tFsk*M|D6tJycOUY~`-ZN)CsNTepPpy;}13GAjTnD%BVHyfI2@p>$Mj zJf*nc7mPQ}RyjA@Wm@YmTIp;NBqr9g_5xKo%cW=Rh9gUw5A^|4I89s0Ql-rno-Z#L z3+$QVYI#?&0-(~Gf5@jnyb!s_RhNO|m5OXb2(=tzI$_@B+skPhFV=C3XA>Fx_U3A7athui}y&38sfvIG*`HWf=zduMq$&-&2q5l9TRJCG|wu|_vAQ*XOexcC$HsQY| z&5=u%Fx!VSNE$ze913*#ZXW~JQzlmwVZG=U*JISEC5U2HFBFg-<5h4IUwIr;@*sc$ zgA%~44ZsC0pSy(sN0b7!S4c`5ZB?d+(*SsGi@rHiC>2yW{-Q#Y&V%DJz$-46dHW5u z2TVUwqN4XpekaDRs<3n#hT{8Vta|jeHPWv=Q3U8$0)#-wtq)ArTATUU#sPp<>|lar zn8x^`kE!xnn*+ntd!Ab@Lk^`nR^%QS`y1JC_ULI7C2v&qNXCGdj!U)Zy)W)l0Sa4Q1%RFcfW}U^Hwh5z%NW65FC8{#gWEr-9c?2B1olU{1{ z6ihr_2-SP?PIl$GHCi{IhF*j*og`NPnqMK}pjXq$@W;l$+TxEf9c+*h;arqgbqX1h zSi;S`~g+ReJRYsaO_^O1KNVtS;j5OjIGP1C2Wu&!xnB zx>ddqeYT+%tK44{gGba~EK3)wg5t_1w({{C2c-0bYO^>>t+!$jM7E|NP-8kH6ID1~ zM;#}0j~cN&34nOH?8#EeakX_*Y$unl&4+o@`asy`1t%awEDjm`LKDe|wFvZ^7R8}` z{YEibcvqIoMOpLM!a^PUDkfU%OJ1c&1694sj1|8K#mT0GCyCNV7H`YtY93YE9=hF5L}iIPAp-a}y|E3o`WtLXrb?#OvaRBSy;tC*r^vRHmVzxfQ?s&3bw zu2Sx;aJQGoT>4-4`p=@Ognj z$-oCTr3(S{Vj6?ec^akD>Z0dKS1OGaZ6Cz$uBgJKkObg-v2qHHk8R{`h($$$v(!qv z0=97qpg~|-{l_AMeMPG5HIx-DsYEe}$Qn|SqNP$5BW0Af!rD@}(d zwj~7ZSkd9xWLNqSJ&=q_t-&p>v{(bL^)OcmGmxc>%2|uKq9_c#|ru%hau`UI`Iqw-1Dh%=zfN%mX?mL zh$4w)Yn6@4xhMjsN7%~h>>%YDiugu^C`v5@U!ySswFjiBes(=PJoW=@MjAWhfy~;+ z1~!_)u>APhO@i>^P-F>QATwf;cC~8=*k%ddUB}V1Ay=<+8mG79uP!qBLsqK$WB>>v zjvn$~MQ@CMUkz?WDkVoCAw)W=x|E^FbtXNY=K9^`N(#5I1s+5akM3sS@}lb8+LW}L>pHOjA05rK|peb%$y9} zDwNRa(z#4!ZH-t#vjA~+Mt1aO@+Uwo3PKJ_6~F2nP}d!uhD)u6<`gzsB>&>iHWnp5U zmZ~&6DuVi`$g)tNeI!L2UILATplUROykSEAEiPz;JOsFipfW!0MpW< zQQ~~XFOO2kiFYnR?s z{*%HLRWRUdd_fmm!w}|5JlSAsg|wQ@#ZS$!@pXNu!o_}JN&PlUXa!Vh_4@#E6U2LL zscooOc!vDjsPQ+=U}hHS_KRe0?&D!e$fm2_WdmYu>tmr9Kqj29GzH@Mc zXrySXfE;q!3CE2vmN)pbolC6!K~;K|BnIOibf9|C|z@FM~0Dv;0*uu&aS<%z3+8Yy(Nw&g{I zNAN_|Qav->K%pASI7GQpKW zCz!J=AVFI++A{qDkZeNLTv95k?NQMyJ1Ia3NMiPlhe)Stv6M69c4ks+*Z|Vi+L;3$+V@&R1F-l&Zg;F%$nL1S_PUg?RYR&`9Kb#&iyw|a1i*J{XOfV7 zicUm$Tqvv+b>?hni%+?N0?F_>JKu;bQ}EQ;bW4B|GI|h#)&3EM_34)qD@Ys{dk$q9 zH4GxZ9w0>kAxYpWT+yXBR^QlZ)5H(Dp5ZwxzBa>}Seh1T*>K}Ps&$i5g2?I~)ZHb) zNUB4_S8~iT6xyJA_QRP%H)cYHDD44K@QF-~Hh%DoN=Y>@Us&!AfH&AVGj=5(fy$MJ z(%lsv_GU5nGP?sjM!@w^p+LZS$5dY$Fh)cXs8T}N@+s>?TBE?Jw6+a|a_v~@UB6IU z1;m5FeM`zpv$3zT*<_}Hn;CYU)HeGzP6vN(5cK;RqOZ9G&!sWGKD?#q+tCTQED+gm z!_=U0J;qVuuaj#)Z%KOc8jVJnbA8RfYP3c{qw%or^`0g$Q5!o7Br9maB__F~+2hgi z?ppEythgJXIdHUt%uBP-0u``6eXEoPz!8K!sU<}gdt7OF98>pk9#L3!cqQMzZo{{RstaEXk{$3rQB zEbpmVy4(2|N#1h11eb@Ht=Unc8S8JMQh}KPKlTb5+u4ySfO7Is77{}!-z{OVuL|1VS^-)5jEp0~Q;^Ts;&O@rab?4+dxusz2M+<m?6{$CI(m=#m1mq|38SSh@h{{Z2ntIdx>g-67wg$qjooS|h& z{{Tdys`zxK)$$7k;V0I%*`~JE{W}NDG*AI&Z_dEYiw>Qv)V{^|2lr7y3LYlVIog-( z%Fp&?#}8GyAhV#)+$LZ!)X*-jdR7N+a2(X38&_>$WOFxCj9t zXb#Ym&IX(Pd4o`ki^ulFtV3syZ)VtM;w_gg%IOUsXv^EgC zX9(aa@@^9}iDt!R!If*(;>!Y-wRZ{%xu!;70qdwMwwaKbYWoJ~P6H3SJ~9D~=coiJ zuN6B}`l;-!d$Q`2^BB6@(il4O&De1cS9vU>Ko+G%!<&KZnkC&lnjvilOBg^IHACUj zlGHs?BU0%b)Qc+G>lG4W+cq5dY1qU8XDN&Ip!z^xkd0TwTG;$t4bbZt!yo~r`5=|k^(({NYpY6X{m(6U^D?;l*I=U!fF)@v3WU&DzLq3uF?FnjBGWa3 zKM!2|N=@niV0M(#s1+Vf{ZMlC_0H(*0evvI&x|9lE>JYzW zpaY~RA&H?`<`Q*E zE&w_PJVaPGnWdj)G&w^3vz&Cf3b+LfU^lws;egsMJ6vDfa%*bM>CVdR+5=5b$72XZ zNb~g+)Wb`(-;-TSM14en`v*1!m)sbedT;Tv7Rb!pz0xx7%R##o(_~X9E{Z8iW`F& zzYR`SgK}pr`iP{lgrxq}04M^)@f%={Qw6r5Rxf7=68!rsqwtoF9iMG#Y{OOQ7|OX2 zDBWUJL;-%-;LFuUYBJ$0yGmRpq)*Xk1~%2DMeEnm4cAB`pS4FC6&P=4sG=;BlI#iA zv^FM@?aPW(3T;bq5Ex2bCzL*s<5fmq)Al}~c)_E7Wt!D)ZN=Qd8sdyo{{Ur3dI}EA zFpMf=a8f4)Cruc;hgoPIqRj5gN%|#Kl%ygi`Hc*fGNokjPV85l*()syVMQfKTs%Bk zQn6qc^F_HgAo7d(Z!TztLv-1&Q2r1^^?o6Q!z}507wtZxaJZK!Fj1{FER-=(MHVcf za);1PL+0L|&`{UJp;dLfjZNOXisF_Bn@q^EVbH=5nkfhmcCoFm%+V*kh1+%%K=#op zI6hoIL*a3}J-9$FohBxkRy%&d4LphqRldtGSWi^Zu>~$7q*j^?P>^Y3N$OeQqh?wM z-(z>E0jMXcxljOB1LPnaFNbR*4@yqO5EoVln(G_^T_Is8H<{99qr^${SW49r>~Pxs zjy6Dg9%ns7%eEda0eD2K9fzs4QGzLb^I>6eLv#c8&rC&L4<6PJWh{mOs<=mCK!_2; z;sw`Fs0DGfWgJFl^xJ1=sQ zjYEFHF^ZgH2mb(jF4&S->}bEOmUthLRnQ1htbIW;?L^YgNqG^K0rkCsMPoE}JG5+4oZO3$HD2WjH~DhxrYa*J9kX zs1VwuYo}@`u@ofVZNZo|Rq7Y;tI>^#0yqd2ake{xv0GVpk6|2CK|Emdl zs}K!MG=^MJ<%4!uOJD=u#|Q)QFiS<5~E8!`6KIvYf_m*dk}f9hT59F zzyORDj0s=MFUq691T(<0%h*D$B5sGwO6QzAKY<9Wub4EQPBOu9qMao~->GRDX5Pk- z@AVo$a`rD3s#I`4Cj)hD^>aPC-Fp5!K)Qt?pSf!C`Sxa9O-Ghnp0nd6SO)$cqHY4+ z`kq9gW?jGmTCTG8k+-YZ{uQhR+*ytX3w^^vgjoTg3_V@UX>DKJKzerh000*#s_Kw! z;|YAW%hpi)cUe^mQT@g-s;G^uQ4=gdz(T|`2IS{_9zMXRFjOKNEr-vc7>KxDq9+Yw zSIzZ-xlD~k^W0EH{~+T z*JTKl-{T(I(g?;vEx8f;Vtx!h2%h{yW%K_4$h1wbY)C$5wi)ZgGgw6dMQpTZidZ4O z80d9OO*{Vp`lTuSb~Z?^(|Ulj$wFE0aQ-KM)PC=np|l&(Pbm^SDhsXdau@Qqz*ppy z@@FtiS*t0dTTxKujecYO;OF@ZBU{_2U(7Bwk6^7}t}HKetIICLsW7tZyXIoaaon3! zZpfUPv0h?@Cv2laFdsyH!iymUC4@o}hQkWNi zsl{}3hQY!sE3vVYY}-a>&AwX5eywQ=u_O7dX8xFuI6+4!1rB0RV&>K2QJBEZ`p zf}1Qb?sUj?{v;&QRRiVJpPJzDzE%bJ>h3fo!eRt+e#mU+)6X+$)?4or$pn`t97$c~Dw;vV)`Z*lXXZ zt+jD7I9LA6UZS7w1vz&Sqw_dGtB-oy8n6}u{+Lo*{umi|Hm=gEN?|};FR6Vvi(aJuql=#Rd0}~xi6*8q$uiT z_5dQCJSDHJir@T-#*+?CITwz`t^Gt_XH~gSTy=<%)AL4ON?7yv0kI`R4tiv_{iU^s zKY?~yMdUl$ys|kbp+68d*Z`l149XACM4HboD?pt-BNUz+J(h*kbaI*J-;%^sr*|0W zz>fJta7GD!Mu9CC!+y#R!oyc*6>2MJyM^{x-^HJ)ZeLiTVu?wMkZHa|q;ICDoo?od z+hTk_nY*(AzaedoO50;;6@Q}^>Maw?gI|s*agjVinr=tjm51jEhu}Il$FXj#Sje9IN(in`WOj`$& z7x{&wAIw!Ij@)PJ_{(tM!qV2vjjd$!otqlh`j^P1&#$;=A-gI)2*B=p5tV1bDSvNf zxAEi)HnLK=%8ByIyX1A_tFo%%yb{P3)!j-dvAZ@F5O5;hH88FJ05ZV3oAQ2Qx8!)) z`{Y-DQE2iys&MDrMX0&UjTTlL`HfBB92QL;vs#EHT2bwixlzleJ{9?m>;=qzXZ&s@-_DfF zU^P0Avbdode+yrz2lv(@L`r;t1f~+bFysaVwXGw{x+cbh z0JwgBV8@at-_#svZ3FDJ8GV;-@3OZl<)^)u*dEnOS6{EZf|+f{ZY6dYrIft6R7qL8 zu_-7eyrO-3F7{h*+)8f|-u%v*HVu^Af8|t`MnYT2DJD8-(wHa`*FZSqAA%M}2qA4Nv$hznQ9x3wP)T-#Y?)_)4w6?y(6Y2Vzx zzConyrja7iq*j;bBd&6ISNV(tBI~fF=g07?I@Lu)vcD6Q?f(F@x5Dybu?A5U^>W{g zKRudUvX&2Jm#2`XT|ZY4eP5z=F2!IO2XH(YVl?^i5GM&9AAniI*CPzxHrDKhqUBPO{h)mWz|lEM25$ZYs)( zuVWX!{{U-^F5j^Sc~YI_5}%1|6U<=IT%r(Hc`0u)3tDjyoBRcMwg$lG z&&+NV1;Y*pu&s^7x%@5MAxvsF%h>4lUfi_u`7Y73^BNc&xsS!f+bkF4Tl7USUUK8l zCD&&^GB183MVT5Qqbri&qK;HrsJnDTE%)^HP_7r}E*Wjom;2z5f6x@MIaV^XpKCa4$Hc~ zn62~Kcg>n&BDsuR!Dp~d`4yQHKh$`#Uk=0!vh%W@TpH1p+~NEv3d<4x0@r04J7@cf zgx3$Uvi|@k->5`mKz;p11G8_$7t95TJ_pDl@8(kF8Aih40k9)wh()7yP!Y5B7{FQa zEKQ4RwHbYxR}_6MLrjXjmmOy!DTO!sm;@Kwm#9BzMRw?bY8nIa6T4IPp33BnIpTy$R;XmP2hxsggEUpX9Z{EatEq$EdP{j=;185>M?Iz=+g ztCW_R#_k^zLFopz{vRK3=O+<@9n=eVRDK{9Uq)37@UQZ~2pfIMB41^nxH_Fo_$Ph- z*i~h+kBDo@X_Oq~=FLhu4zeLGk_N3hOHXPcq*x!PJB+{#MaP$4sAYzXlxxI#ir~nh z~&nJd-wgt&OP{r1HM5L$l_>Nj=DQ3bR_BtS5of&W-sbj%s{Ze z8Slr;+B}Pd9b8TZKuM3sv8p4A55FKXgTc7&1WQ?CZH9z9Dxi>&KA`aj;tB8Ot^v3T zrRa@Q@iH8*lvH~VTSy}QBbR-eyA+MllKV0P=6J!PMzoq?Z`?fAIZ-IIWz`oOoIs+? zv|_aR5on~wS)=mZ&wztJ(I}8I&lsgu{^P|k9~dgvJP?kOGjjwrvccMyP2?I>sbHyo z%l&hVT#PEdrcOj>K~I79C$&4rknCeok)mlTFR5^`gCS$JUoe;Xi?AR?j7kr)A+IMZ z5o>i7ZZ~t;`(=lo#kOmNqN$ey^4B4(6!k2{$NvBfsI6u4d>pV215%2fDs7)W#!>i= z76V+1znH37QDf^SEdKy=FCCa*#254T7aH=WCoZ6tRL{g))9T=S-|%r=mQe_ceS^Vy&)aD7mH>jtA{=$%&I4+w_pTLk=s_%&uAsnS=29>$dfDizy(5jdq2$q*LC zSiUjZwxTU9jqtf>u|A{6BWYJq(e;`ikKqmMRSjzDUh`tSTb0?b`8|FKTM}E(xw%U` zVpbCLM7rP9SY%3kN+|k|`cZ#8e-utXh>6*ED%^VrUHl^pSz;ov+LiDMjjE|n@DjE? zmjZ0?mpq$LKqB#&1V1s^wc2Vw5`pn5<%K}4zC;NVQO?vAhEk$L;d>n=DE|O8F9XQq z^4PQ`VoNISnQX`YOxc#k&&0O7`I${idvf%oxa+d|`;COU{7aTo8mDDt2T63V?jTj2 ziGc|cz5UB@3Ab6(aDn(|KmKyEl9l|7{el~+K}{3{(E4GwsM_w6x70dWgLQ}S10w2W zFK%wZgln+Cjul@Ya)k)zVuG8h$lBGxcE~WSk#5-#n;&w5oAxdX_ZRA=-?>-QoPvR` z{FZS0*+b<@GU4*th(^9*QyKLW;h%^)t7g|a&iNZ^rT%|0Q^r{0E_}v_t9-={WJr1V zk1j9Nq~ZA@_dkj!;gqlc0DOI&zCmf1X({v}T1|umuig-;C=7B07LTZ$G4fg)!8$G;Yo_uyAvObFp<$&kM+|kBR2<%Iy>MEKICnHT8pd0@HVgp%iAb*G^qVT&Q{7Kt6Qv5aY z`DFszatqyU{7=&V0QlgZC2r-@?lUQPO2AO~jZpjs{{V0T@ZscH01xV+V34f~J%o7} zR~zSJ4Hyd;4fohhmpZD@PGBDLT2~-yeS(go#v%&m zvsU@+M#qZ$h6ikHVqBAuP( zQDfE)ON z9wywgv+^f(9#lUU+k~#?=(qrtOD=9*u}Knp1trQWEyPf!T1Ibf7E6vYrz$AyHag@F z0f>uOVYdec`1>jgn^OJI)hq>F@s+8uxsf}_pVaD9J)iEqW?x1!Bq85mQ^XzcSmov303lO>TBbP?X;=PRu ziV79-&`T4hA>=G}qz7j}n2`)B?t&_4HbL7?BNu+$$)@vBZe}GuT=%Y*e0nE!w~9%5S^_2%3_ZrSh}n>7Fts7&8%jMI=q}e z5ds+^DQ`$AwTl=#38PZT5tLvnv4uR?=1qNLGtvh}B*NbR08uwExD<_VA(oJVL6+kL zJ-@`PtEN91D&e?k^DePHN>c7QOIDck;qcV*orVN07u$iy{{V=kzXlN}U>-Dp6h5Lf z`4(lZN-A3}WW$6IqAN)7fEvUHgP$`+kE@vO5L+@M(aBZVHHc~|brfsSnnyMrJc4X3 zzvgAi$sG^eSNPJEQq8iWc=-Bb)-XLo`iV3{vzDbxEx)N%P=M*LA$6Y-*A^Jj5Cs*@ zlp?wchuUi40N9Sy{6X<8X9D>s_t;hJ>c7n6VOd7P%QsAJm0$8E)s$Ew!e({;E5*63UC9_9AN%yYg6cahH_| z&c&yd4ZSex&M*OoA+AJeE;ag;1Ne?z*h^H)-vyNTm3NR%nCKVTjmEs8it5}JLYQew z60QBNSr$h~Qk#NFQ0!MfE^-%X9;8|l?%X8e;ND2fMQp#uz81zQ+AdmL5H;|RlTl#$ zp6P8)wEC7Vo{*|L6=}#f@i(jNDi_YorM|FR!sPSqHp_hyzBM7SHdIlwm{I)(<(rpG z8WyKxVRPhcD-~YcO5n#E7=^3sEq($Ct;k~k0Q_Zx>S?e&xHuXmO}t@#nJK~&2eOnf zD%YAp^=INFmr;wmWy?uIL@ktG`_?xKx{eu9>wa7Xt}(W#oALOL0P>g$ve=Y_KENwI zBSY>YeLR=JS)U~|23$%xvlnCm zWs zR6vc_v3r*OBf6KvL@o%Hj-wJVvE(Bjkf~zWH$$pz(PDA%J@qu;<0bp->Ma_9NdSTCu-&* zIJ`)rV=Yx`_T!eoG3sqA=O9Ap8sD)bE2^p5+H~@6KL#c2RwY^=iCf!g^5#6NdEi61 zp3ij$Fq~YaU(+0~tgd38W%tpwjJ4%lp!Qf1TJ&}-Ub1+8%9Tac@_<=*vxL@X<}@M8 zh=%2F)CxgRK%Pd~EJeD5(jSWWg;yMp=3Ecq2p^6^|TVJnc(!oQXkYM%Ag*>-k6OEb2Z&YJYPBZiT6)S+sl#hyvmEHd1BjXDs=T^^+II zxeXPmbqXQ23u@j4!nLeZ@8(@z_B2w+vdz|@YhY;dB!&c|gDl|XF!Cfl?wHHwFb#R^w=lFwNn>=8hiVrK0Aq4xch-h*fMwR3!~|Xj&nDJSVOYyXVBV!}TdRM%A$|yCEAj zECTRluEzv|2}k}*b%cLt0?bSMg2QjcN?dE%Z{b||VJF zTLWNu&PsMsz?`@X%J^Z)tIy0<3qD^iT>t=(*qo-FvKv64yZMWPA6F2f9qh22Z842r z4aL?U9VHo2XJAXKJs8j%j1y0j94nVCia_-pvfy1*k9PzLV@s;PSN8xmpJi`txg01g zV5luV&cu0A!r|nhbC`6Squ(WV`|3+33Q(kApqt(AwcFPADd5oy*9WvP`xJ%Kivk$46e88Bw00&5>vF~yKQ6tHLDfv_+R`*wy;s)95Mk@}DdJO$?o`O%)C4R`c)>>HiU;%9?21dWn}E3l{-8?y+!p5l z05C>z7Se~UQ*g4+Px+gu88^U;2*Q#m8Qwk9~?O5bSaRz%SYia`sz`G8fkCACv_&uM-zOKI&(gKF-cM6IgL@R$KtPrs<_7gDw9 zRQnkfty@F`tp@jAIdfrM5E3j<{C*uEoG6G2v`Veiz@tMFD0f$|OARWZp~E}z1W?z{ z$MNIf>l;>%z_4d=mdjt<6_x&A7ykfI0nBA)pf;+=U&N;4Dr@8x{^C9(*Z%;^`jztj zkU(ekFZKNqi>c4*elO}~a(I2kP}s28A@2Smh_vYkWs!kRrUP1zILq}ItVOpfZyblw z47x?K?Xl>^ct=MGyKyI@W#|+=zxbOV7SN;w5g%)xsC~9p))fNPG-Lahq$>5UG7z#h z+b&b6!9^7)%!631)uB7snG%q0s7J|i#MnP3#|j_PFd*}JvC8}LV6%UX$j~b=#V)7n zT`o!k(z;F;v37;tWT2IGa5(-0;S~&FX@St`E-@uV9D>;XsHJ*uCrWZ6$Y0cMX~_0e zJIwyro1^ld`zn9uZ~K5B53v?$KT@mhf~x-jbW4~0;r2gC51;)&7k||O;(gFW`AQG} z0MGvbBK!}YLhk(-LGSt{+J-*?8$S=UgdrSSy*mE@f+GIjlXjWNVxs5x`z!&VK>q-( zgUk0oFYgffsc=^Ob{Ti`KU3~mg6J#$!L!Xj@p9?F<>Bi}U#Sw14&wMuLKnu)m@z1I1-V`oYDlmw)PK>JfuD z*oE-eQ~3E&M=f25C^|r0fq861!Jh;j-9_lJUP#^96KYoEy4&@GJzJ}>YWJx-i$}H} z;h*9L=>Gr-1&$o0YQIdlF@9MB?7V9K0NiXni=BQ1{{Y6$clH2ginsfO%}Z)wicUE* zGEoo%l8a}kuLu@-5c!R!lTTr|U%2Z~W!WZSfA7yzjb|L?!D>%0BOZZ zcGcgq4lCPiRwjisX`%LCT7hnKiWvAy4OxF`8UE-UOVON##TS2Y8dNx+Q*z@Au0)jG zLo~aBt2OSyW@I#*Od`|+QTVdZB})v4(k9p%_x;Anclm$pY#T=^Dvzt-D-2E`ZcuFz zt1T)DT23xi#De2f%Z7wFg6=@F*p=?f*U>81%+dOW+V3J;o-=hJhCPo8jrbsy_0@RA z0L#1}gtu4NG^B}IsbnF^OIL{tuxyk*!d37*uVvQQ*QeOtzr?S-l+#|oxj~mA)k?jV zb8*6tW>ru4Aw|z7+`fb^h}Zd9jiblYQq|q;P`K3n@NieexhO;6V(9|52TlB4xr&q% zQB-mdS%H);GtVI3le73=xCrtsGsvF6Qu0%GDnbEU_?8ttV+0DDi7V<=q~vO)tcm`J zTnsOEn2S9Hn<;FI={^y?)tY2m)muucbd4X0Qj?1ARyg@{um?Ncj)cj3Jz}H18;okb zB~q!1ZNJ6L6^xBFP{3RhW^P7K;1pxX0q)vG`bun?6riY!>}aLy1vs z4J;^Iq2cH58lwH&K!aAhrZ>0NB*+&5*+ti4DnCuBd!3syP|NaK*fe*@qR~d-P%vU= zdjqQiu}PIIH}f6fgMU$xhaoB_;v!{_f4ONXNV<7&)K;B^+~_0p!r(!41_z3=vz0s6 zg>J~zJ`eQ;OJYoQ2qokNfD+1uLD3;rNkwIYC&Kfvce|DuVSXjK@h)PJuAeb3iT>!J zyUx@B^oUll@}5^9HZ>Izq7Oz~QBAa!(7H}5Wg807Ljle=Z9H~glwFoN{dbbNqdYR-B3<&r zRH>O!%HL9A4hWC%%7u-4Qu5QyA^H9paiJk$a1|XGA8?SC`o$L6lF+J^Utp#2gFavt z@FS!Y{H?j>7Z_|ISCEu$gmobGh;0aIB^wN16^_7FO8BTo_H zVtq@bz8oe2g9Fo#iOJtKFhOyOKEe6&RQ4bXE_Ct;j5?#pURg<10!Qg?O7_vWrUw|8 zCQ&;kHtU+eW|ViGlLY zTImosFQ*chPmVAtL_a6tWhJbh<(=0jladB9;O z@WKrk9o&>oc{UykRrrV2BYzRx1Ig|usbze@Lf_mPV7K_$rc3hWQTH+k?Xn1m?ohR4 zuuP8G+e!b#04EUv00RL500II700IL60RR9201+WEK~Z6Gfe?|QvBA;d@F4O3+5iXv z0|5a)5JuG!qt^cbL<=*iTzK+UR4QZvM7--Twe{J~&GD(Ukn7nE0DY z{7YEd0bR2Ac{Da~Mya>`OB$Mcmn{2SvQWzu-yTG;>rQo_E2)^(%1;F;m?3N4c?TEs zEl}*%wgFuFjflZi{eB^G0=wD4b_YF(r9MhONTm(xoA6HP89~@Q%idKo?yIXQzi_BD z&!xsqKH*9)$bZ4eHkZ%pD1!0)O&iD?e-LU{kaGfvEm{{aiy8jKr;^L8$?t1noKtaU z4diH#e-k-efo4mga_DYeVt_zKTLRbOIZAo+J>;#rHg^4jFzmAOQCLfTjDikIJV3KW zuu%M~?jagHc`9F#U=R(Le3*rg6*O~W_y%z0?6H0CDp#kmPfB8(iKKwdJy#uVQ>68LNL4VeRhdkkDE zr7g-Sf_zcr11$PxJoYpI%Q%LRANddz{GnLwa#1v@`G;95tY^^#cmxlDO=24$p z`^eU_L;cPlBS~y3m<67M@Hk4gLq=38ZY$yM#G@dnA44y)Ie<2p8EQ5c@Q(402P1h$ z8;M};{{Ymewxwx9a%#UD5V8Z5K##C1l?1P@gsITFfmjh$GSgO4p?mkURji};^&Xe{ zz}3?y25rsq8eKcAc&83asw%GiiQ2uHUvTac{@t7!U_zWA6sXe|xmOFeeZr|KRlgs& zn!5t5o%8&uL}f}oAH)D1Ay(w~Pl$0`U|V|yg_{2WkO4xA3n?;_D*sn}(1MwD_>`#p}HY^n#MB9IE}#(cLxj>G}6$9n+1ZU)VW(zTd%*+s4Y z0CO*~9s7Z`u$kMdmADEK{01 z4&Oo){TPjISwrL&u3pP7h{C-Oh4NqH?3G`CQu+152>bY#$Fh(r;O4>dN5OU^rL5^I zG{j1P-nE3KRum0b6McTYK944;SGE+HZa~0AFY60;_LX8GKBh2`f(VI&}3MN*-i5P<*(v@ z$r9@uoy1o?hd1DdXt%6G&}0BopBkGD@DwrF9f8T};9a2Fs`(Pyf9_F^T71Gm*grb1 z{jrrTYUQ{)FC{9c=H!247>4Rv4Bd}kpq+}lDS*CV0IO^gnz9tOonuAUU^xrXb@wm? z0aDv2lv4%!5HhgN%C#F~1Yk~}8Z!F<;{X=Tem{Vh_my?}njP)JQIVtAMfde81@>*$ zczz{sL+sL_w-4D;j$XfxPee$Zm1Yjq(p5g{4K4@8&1r$`p*=M(7#sIGw8ClMIV#0$ zS~Q?T{{Z7CLCC_G6X}K+Ewg4*VXwu+^tD?ewOoauu)-0StQ%^LxU3s^Q7vq@!!``n z)LYY#Dy*3EV0|e!&uhs1 z$(PM1<@S7(MgjgG8!x;d%Mw*1kZs(e(gV--1B#h1{Q=}18{!o!ky}s>&5Y;BEq%m% zSzbh;y(47R+ZlOX$cP@?POv3h`5TLMRMPy63x;6EUyF&O9A3-_+DW6}gsERekcE_d zy96ri^1CvsFe0CYB}U#Xr+_0=`7C#p$j@?}E$sItK@1%Din-K0>8XW2eBS;g7sd}= zpC2<1xY^6(Gxyd3(5Q9ftT`xMYpksm`h}$YL2dg`D_@3S{Cz`b+dcr^)a|>MD*5v| z`%FKyrKbKFNM=Lw-k+GZw~RI@ z2fMc_BV=mS9$2F1E7xFyJ(lIB(SGB|1I838Rn}EAfvTY^J?Mre+;n>q#t1}DP}nSq3SSg{{WfrEC*QIX--`GbM8@uo;TU! z2w?yuCDfsWy53hGiKuNJWY7)xer7TjugUiabV3Q(f!TUTNR^53jBeZPPZ1$$QeF`% zbgQ_%DX+OsR-RlzhXXE|M<2LY2}wD0ko_>{M-PqT&|Us+W{jCO|{{T^MArXlG08AQR)J59E+LR=0CIXPv z{$p|1z-%cDfkBL7A7E_HCLD$S;frnTK-haIQ(&5cE-~Qcc2^slbIK&6!v6p#^%%EQ z7=cV0dP1Cg^DS_~j+jh@_$r}Z8;g17vct`u)5Yv*i{PxejYPy zcEl9_0AY1o1(e*ymG>+1{zw`yido|l6#hB;RX<%G@hQDz*JuWt!*FxCOC)TNavS8OW<5BJDY zU&TNa`LAKxTp`$p)d2l4x3y>FiEo8cvh&LF2HqPC7O*(JN_)slXIqxl{{V?}Q;FzF zNgK`N3|!IeTt?Rm{Ie84bif{0CHds}nKis3$0OqkTd8N|U?6&~LaRGCZ9~1Nf4K!P zQ2zk&WE1}YP}BwIQYE!2#5Z>|mlBJ3k-=pJCclf4-(szc8pMIyu0)YlW$&6$Ip_8sgY#m{-zPuZG(FY%=AAIdX1IK`Fc#1Uo#tAj1m`ip4p z8C7b**%~Fq4R?kuP+d=Ahi7$r1P)Yli@rkPQjCC6{Yp5t`ZX3(0XN7I{r+Vm>eXqe z`vO|x5Bx%ksJr72{{RVldG&BQ-p;=afyUM_AB!appZ7GVT|9sf%%WrQ4xN-kjq(TZ zN^kVa5&r<6srZ!G`V&JXy{jN~{Y0z0gL=f?!^Hljdfd+s;MM%u5B~s>!}!|%p^n@J zpGzFr+PDX6R^+-h0l+KvgPc17hPUMe9@$HfcO%lc6x5#_?GaS$Xl{r zh1JI>sIT|L0dEJ$!fy|!?D~$;JZ!Fot3#^G_zlV@$#W^}Yk&Q6g|2fs2EDm#ZM1m> zD*I73-9Bd#qwXdP$X46Qe^U$DUx+O1179@)pHl6jVetWXdk&gD@_YM==)plBe+;en zu&I~xK;QoWkr{)|LxpTeO4u9pz}d}$G)nWo!23EyEnD{x_$MGdeL%gk14-ZKv7)>8 z1dV5epdwRNS0jFl>QJ%g%sj{eU%p%ihcV>pE}K4~WU%%LK{EVn{um8Jn)@B9AA$?2 zI}adbWnQBv|3{{X9kZ*Jwl^#i+Eq$}8$DmARvKIIvX+&?9=(^KS%jWdt#WuvQt zgxU@6)}{{SE_^8?7vkKkt>)(bf-#`sVF04CJ$_?161n-kBh zq?JMN{{RzJ2k%I*Kfrm&6p2e<@K}Lc$Tp<{s$!UUc{C~6XSqtz8C<#JX(}cbTldaJ z)v4kd{{T^U1M7&q^2ma0bcNezIeP%tZX9bipSVHqzYw@@+2XEe*Z%+z9P*_d!N622 zMqD_L+g%*kzD0FVHh1wU=^Cr*4x5yy-~C5kR0VAip{wfWV;vb_(o-G8wf+Qgsk*hV z`w$kLRYd8$8Bbu9--YsAxkkr>D17z%5B~rU8SZmjxQ+5A-F1wsf7^f5F zxcY!?(eKypHbWtWvGOp|lykh7RmG(kxknrI6!_$|WlIK~_=iOi*gN6d{mS0M&4Z0c zS6?=Y{1HVq-Jfw$fd@JB1+CILhQEknYQOwJ(%bC&AXA%Ad^o#MT|ZGjll9otus#w4 z2ZW&0^DWSW3S;HzUzS3co;Nv^@g5a0-_3sklar1p_6K0!;};4jsqnI1bc?XF z;sC_BS?`kgX-RPEVrx>MDhjs0f53)Nwf_L&TiJr@amE*4xoY7pK2sm0tf!O3s)nvs z@>vA%8OE()#42 zHp4ez8%ACI%z9`p+rPvG6H+x+J|qE1e#?kHCVvv`5U}6JVBz#bg;q?a1uATWac3)q zR}L}FYaSd*fsMQ%#d0mV-a;tLxDdh+R5GYyMw)th^jA`6VhU)s(G=@8&1eY1WdITne!d8@L(kc^Zo(`f#gK-dB*TGmwgb3Uva<;DQlfdji0t=)sFU$|6$pLZJqFCx0{%o;BvCu|s5 zPu3^i?BqD*c2u|_QUI%!OSwhHpJ9RZrV+7Ao3@Jk)LKHxC6;@Ut6HzG;59)?00{TD zI?<&;T(m~p4oV6vQ*};Ie>J8)i~eiSPpRR7ANhneiL~d}V4@|E)F3$ngsmCfinJ@K zi2fE9JE_~q+tcJ`gP#x*?f(FA?$?B`TRx{xl^i}}t0=C+K!gp$7QeUH!zukw=OX%E zO4{V(5QTbddIq^rrZ0mOH2Jwz?G&1d^_p#Rk=?2ZM;H;kN-E)!p?tXIoVi;CEF?vd zD|s$<2gC@#MZ9f5(@1#|EqM5p{wN21oi8h}y5&ChadT?Zg|gC+qQ5&W?%q|wEmrob zJt`ual(-41?kD!2n)mtD`jgUHg;W7X(Q7SmP)1y+3@ccwZ)bs!eHMNq=aCrIhFMp! zF%RG~bNDU#5!meoOdoMrD)1j?ks%a4Yxgk~r3ztq0_z%vmiZrElo-F&L&9z2oR+{} zccTNQ%<#Ad1^9pUFA~EV0)xn|x?^w;vq%sOE?3@7hrEG}s9+6@4JN{tL~Y0*?O-xp zYgn%#ZSo}w@v=6=xm3#Kr2GqsP(xg}twwqQ(|ETXMweAb4o5O=w_Zj!YLlF}<5hMN zUqAl_X5oZOQhPU3zj!Fma zdq(2&1XI5l0SD>+r^61>wydQL3k%X4S)Q1wg?)KYAWtBC!a~~sr{RZ|Tg>Dhg9j4* z%c*f=7B@3sl7WdCeaNkLRxnBjxd4y?l>Y!4orbe5kwHr0wQkiR4zpX zD3>rJt&;^>h+qH_y~4^cW7qi91uWN+g53|{3XbjpV>X4t!=A*xK`ICBA5gfh=X8o& z6m}c`05y@PNLLez8NvI>+)s=4Az4$xAxRXiWV&1r8LTN`=zT`Ix$y~0SK?WD2pae$ zu*hkjc)4&~j}KtnBG;t!t^WWl4wb^sxWw`zb=c^K?gmdt@EjwttWV&!t~<76KyQ)M z7IgRGY%G52QXZ^Df^jw{UqWTbZy$)N@HFHAoIV?=u>lYA3!&kO-|8CttP8-?C6@YL z4tYAo=qdZTqDHF(ZI`sxeZlzT2a7$8T>Q&8)hrcueS>tXX5yofEy#VjNQdHDuzgGb zom#tz=a2?`)y3Dp5GqO}gP; zFf4lz9~$AGGT~72h=xhiL}c5xD-?xVFp(xz)k-Exn0B3URWV@ zSp@R#c#@;^jxqZ{y^{~P7Sth&xlVmbt7KVLg=9_CeVI)LGsG5DihxF_1BprskHR~e zr;@T)J|j|7Dz|%t019LkmHUeeYlD~giUO$0oye%QcEQ^`$RdFeAjBMj&@7@f#ox*b zRtyA(Nnli}Vww4vSJbsrkyk~;a?jMI=OUJuetsuf_z0j|3U*r6h@vW^g7tDRwiE$x zknEw~QXNoOA~0(iXw}#;6 z)7YyL#RK5Vc~5&P=O<(lR}H9PSp)#w(87*E3-tx#VAAIj%QxkJNNG+ULrb8I4UMI_ z5zLx>{O*z8Dpr78fH1;IK+ z7NXjllFHcK&@K5Yi|RZj7v>$**>G@F0%&7Lu_<4m%BY>^g!d2x2uXlh(Byx;8G{JZ ze$1`SsP^3`ix=mRU-@7zEu#2`dx48;C_s4lgap!;tP0KJ{O#0gga00U7TmHjei?hQuEs`Z!}ooP~7uAA9l2ZISs!sOS_c{$ifXSATTeZ7`%*Hx5|!Tr2L_~jMyG6;a)&B zftPWLR5<$#)%>*ri9#0={$-`oi#@4I@BZS2+&vwI66IJna&s=Vx{wpldjPH3c|4*p zzlfst__J4#R}|lg1iuX?MF8c>xZ{e0K>BAmwh{T4(~v)llrH3P_YjYnt5GeNQLR6X z6Ggw9mQi!yfb95-`^c7-SBW#BpF&(;FHe}uAhP~9*+W77{Kqc+CgrMG<52@R4(KFI znMd(((uPiB;Vclon7)bFYBJg6^FJ_B)st{zFxwTR02=XtN;$?`cvQ<!Au zU@Q$6PgXeODu3!TM`4|KE8<)du*s#68(o9KEQ}pvUcbQazj2lisj#*6AW*G&^HHtC zksC83X02@DzQ_74xc01j;UIK{3u|4-y%kW|Mb$Eie06MQ;DKA+MWA z=`4Y3E`Qk8_8NFZYy$jtAV6L(`;pC(n?-~$sovN9%Me$?`-qy8^u@l4zc&E?0KIy} znBY)qt`W2}7<|$0cG*H&_)5%*{1XCu{J`+OOdYz)W7Za$8|}fW)P2k6)t37PxG@Rr z+CZ}W@>>T-&%+$hr6%Yo)a|=#eCgVi6!Y|41O4nNRKhO7czsPp3c9a}V21r5Z$w*; zN-747q`mz{3v*|xIE)m5szFLJ%WP3??0mUlXozgs*jEUVlzoR-J+lx#TY@&w${EW` z5*KaCD7u&2I!gmUzuY#OEZVV*Yg0pfoAlFuDm^p+560#M7nRads{(JYkXBxo_YrFf zTv&>vW0*PIe*!Ar$CBEjXtq_yzDrYHMDt^$tE)K`o^Kd&oh5XgZ}yL0aa4Jc3pDb{ zpfV?KT=|Bm3(%_mqJZ54fAGY5fCuO~vwEdI-(V|f2c-0xv{@*(QK7EGQ|QNOvj%}8 z(K}fzsbK09P3pL#rNs@0dlt_58}=kfkn9NifOLg*iel>W7wC@F$L4G97feRlGQU#- z`{b{zg)ToAa6ubI+scniT9hm&U!S%qeb|eq&+=FeJa{OZOqbY%6?tpO(CC&+M^)db z;kC`e(mbt~Y?|17ABcdwi)b@2jGB4NbDE9r>3{ z!j1exexis|Du|MrfRw=q`iaTZcdUbH{%7$Agha73`hzS3$f)KFv8g?KDPd>gF|mLu zC@R_Kk!_lgyJZT6%u#??fw>oZDgOW^EtnIq0ucq^#b!)h4>Dem_FY$F{?QdmS63L5%ZfWcq@+Niz zZSN9;#ve!93^j)YMF8QK7?I@C*}ek#NY{UCnwX9HD!wy(N(_? z(K9k0V!HMzPbm04xQa^p-Lxp@dC@>>*jnd|zL)?`RnW{%71SsPcPN z{6eW!`{V}ue#h0yRI$mwV`TjN$4WA*T9m%Z(!n2?ihbPsq36uKwT_e3{-IF0jA*mM z=Z(LtWoj<`zz%S@HoEQk8xT@}ANML!m+J%+pE0oqx%hlDB0YOi2Oqx64A}ZGWS`Z` zE{4X2-|YrztR%`g`kP{>G3T@K!hS?S<9>`l68`{jMWF|qJUoNpe~Pf!t=0-vnH5M> zKjfwEeM?;VR0~=BJSt<|_=y9ir7FdcvHkc(9{p&xRBoC|TKv?nqS^{9L_hw=VlalZ zc4NdK2n%J-LQTJjjqDK4%X}J(rMZ5pqi<58s+Z<3=?^-l0x)09wI=G@{{Y0=7Y{$! zXl~LPz&pr?x0wCKZ26VdciGQH{l`_0?%06}Ua$DhFKXZYrK&G_{2%TFa^AQ90L%dO zpZs=qi+r~;#s1hu(tFk#>1CS=M86TS^)BlK;Fa2jBgPW>4P-|Mpj4=X!;T2w#8`+!5L`Yv9R>B&NtjBfB?x}X*wo|oOiM)?`$U@o`;^)i zsYO-RKk+)oj@8Rp==&86R@lJo8}Q0)Z_Yt)h@n5AGQI@Yqb*$!uFL{ixhjAw?o-40 zA}AuCa)KUzFxwyB3lxIEth%7UN%*OBqP!Eor&^iT7y1tfg|ZqU?m=U)BdB$Ia~d5 z7=HU!8tfD+%u$Uk=gbqM2gCmW0(?93Oai$36#oFI?EFyg{Y(D<+OPdZEB^o|{vyn= zOKtxE#LbI*gI0}R!Aw`t+lc=F_@DC~V=65p_Qb3HR}k<^nzrL{^KbDGe8hIJ{-MgIVZzbnu!{{TijD_+|;XQBYg= z;!#Z(AK_6d+W!CuZd3Cv#a>D9y!eVvFc=L+%K=090DC!QUyx$}K2OvJEq^euQ2a;L z7FEV8*NyYsj(;l1r?u=ONmseImBISj-_|^&5n;j#RcG9`IpF zq|VJW6IE<0NN_6ha6JfUl`j4Zg(-ojI}Vr2l!oSA)w-4@(nmRc3c*;kDW(&)dKYrH zp#I~^abGs^1zWy}tvax;sb{oxC_19d&<`PEc2|+QmMX}e7La5>Rm3)66(P%MT*z=5l#uBF}z zMWRv>JP@n#NvV#gLmuW&it^Z3bMNy6pX|FtD)0dVVOCz_5ZtP*Rd9{_ZsBhh5xs-r zH&Kd2_=07rtZ=|QB4!ZC16ZZ(c1(>!;H`>Cj$sjo+z}fu)>OTV-=B$jI}uCv8}WAl z3ph+t93-R~iF{&0jf86J;kG8`Y1{{S$;^E`$c zl_2UX__f9-1Z8om{-W;Bf~6_CJvMEMpW^=jx!t+K40c*} xIo2!z%K53Hj!$$DxX6jG%tUpBZGNMb$zeB)Q2yab7hWDqhUqi{jxX+i|JlLmjmZE2 literal 0 HcmV?d00001 diff --git a/packages/astro/test/fixtures/content-layer-rendering/package.json b/packages/astro/test/fixtures/content-layer-rendering/package.json new file mode 100644 index 000000000000..6679b8d6ecfb --- /dev/null +++ b/packages/astro/test/fixtures/content-layer-rendering/package.json @@ -0,0 +1,9 @@ +{ + "name": "@test/content-layer-rendering", + "version": "0.0.0", + "private": true, + "dependencies": { + "astro": "workspace:*", + "@astrojs/mdx": "workspace:*" + } +} diff --git a/packages/astro/test/fixtures/content-layer-rendering/src/components/H2.astro b/packages/astro/test/fixtures/content-layer-rendering/src/components/H2.astro new file mode 100644 index 000000000000..d1ad359c2ee1 --- /dev/null +++ b/packages/astro/test/fixtures/content-layer-rendering/src/components/H2.astro @@ -0,0 +1,4 @@ +--- +--- + +

diff --git a/packages/astro/test/fixtures/content-layer-rendering/src/components/H3.astro b/packages/astro/test/fixtures/content-layer-rendering/src/components/H3.astro new file mode 100644 index 000000000000..fa476e929eae --- /dev/null +++ b/packages/astro/test/fixtures/content-layer-rendering/src/components/H3.astro @@ -0,0 +1,2 @@ + +

\ No newline at end of file diff --git a/packages/astro/test/fixtures/content-layer-rendering/src/components/LayoutProp.astro b/packages/astro/test/fixtures/content-layer-rendering/src/components/LayoutProp.astro new file mode 100644 index 000000000000..a2954162a396 --- /dev/null +++ b/packages/astro/test/fixtures/content-layer-rendering/src/components/LayoutProp.astro @@ -0,0 +1,39 @@ +--- +import { CollectionEntry, getCollection } from 'astro:content'; +import H3 from './H3.astro' +// Test for recursive `getCollection()` calls +const blog = await getCollection('blog'); + +type Props = { + content: CollectionEntry<'blog'>['data']; +}; + +const { + content: { title }, +} = Astro.props; +--- + + + + + + + + With Layout Prop + + +

{title}

+

H3 inserted in the layout

+
+ + + + diff --git a/packages/astro/test/fixtures/content-layer-rendering/src/components/WithScripts.astro b/packages/astro/test/fixtures/content-layer-rendering/src/components/WithScripts.astro new file mode 100644 index 000000000000..e37694eaf1f0 --- /dev/null +++ b/packages/astro/test/fixtures/content-layer-rendering/src/components/WithScripts.astro @@ -0,0 +1,11 @@ +

Hoisted script didn't update me :(

+ +

Inline script didn't update me :(

+ + + + diff --git a/packages/astro/test/fixtures/content-layer-rendering/src/content/config.ts b/packages/astro/test/fixtures/content-layer-rendering/src/content/config.ts new file mode 100644 index 000000000000..54c0fb5085bd --- /dev/null +++ b/packages/astro/test/fixtures/content-layer-rendering/src/content/config.ts @@ -0,0 +1,19 @@ +import { defineCollection, z, reference } from 'astro:content'; +import { glob } from 'astro/loaders'; + +const reptiles = defineCollection({ + type: 'experimental_content', + loader: glob({ + pattern: '*.mdx', + base: new URL('../../content-outside-src-mdx', import.meta.url), + }), + schema: () => + z.object({ + title: z.string(), + description: z.string(), + publishedDate: z.coerce.date(), + tags: z.array(z.string()), + }), +}); + +export const collections = { reptiles }; diff --git a/packages/astro/test/fixtures/content-layer-rendering/src/pages/reptiles/[slug].astro b/packages/astro/test/fixtures/content-layer-rendering/src/pages/reptiles/[slug].astro new file mode 100644 index 000000000000..526805e09947 --- /dev/null +++ b/packages/astro/test/fixtures/content-layer-rendering/src/pages/reptiles/[slug].astro @@ -0,0 +1,25 @@ +--- +import type { GetStaticPaths } from "astro"; +import { getCollection, render } from "astro:content" +import { Image } from "astro:assets" + +export const getStaticPaths = (async () => { + const collection = await getCollection("reptiles"); + if(!collection) return [] + return collection.map((reptile) => ({ + params: { + slug: `${reptile.id}` + }, + props: { + reptile + } + })); +}) satisfies GetStaticPaths; + +const { reptile } = Astro.props as any +const { Content } = await render(reptile) + +--- + +

{reptile.data.title}

+ 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 116e5d995bf3..6fd28487c21a 100644 --- a/packages/astro/test/fixtures/content-layer/src/content/config.ts +++ b/packages/astro/test/fixtures/content-layer/src/content/config.ts @@ -1,7 +1,6 @@ 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'; const blog = defineCollection({ type: 'experimental_content', diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7f1ac1b7e1c5..7aa98cccef85 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -2724,6 +2724,15 @@ importers: specifier: workspace:* version: link:../../.. + packages/astro/test/fixtures/content-layer-rendering: + dependencies: + '@astrojs/mdx': + specifier: workspace:* + version: link:../../../../integrations/mdx + astro: + specifier: workspace:* + version: link:../../.. + packages/astro/test/fixtures/content-mixed-errors: dependencies: astro: From 9aea0b49b2d2d705618200acd107cf5e591708dd Mon Sep 17 00:00:00 2001 From: Emanuele Stoppa Date: Thu, 8 Aug 2024 14:58:01 +0100 Subject: [PATCH 27/34] run formatter --- packages/astro/src/content/content-layer.ts | 8 +++---- packages/astro/src/content/data-store.ts | 9 ++++---- packages/astro/src/content/loaders/glob.ts | 21 ++++++++++++------- packages/astro/src/content/runtime.ts | 14 ++++++------- packages/astro/src/content/types-generator.ts | 2 +- packages/astro/src/content/utils.ts | 19 +++++++++-------- .../vite-plugin-content-virtual-mod.ts | 1 - packages/astro/templates/content/types.d.ts | 2 +- .../astro/test/content-layer-render.test.js | 10 +++++++-- 9 files changed, 48 insertions(+), 38 deletions(-) diff --git a/packages/astro/src/content/content-layer.ts b/packages/astro/src/content/content-layer.ts index 7d5a71192675..ea1367b600fb 100644 --- a/packages/astro/src/content/content-layer.ts +++ b/packages/astro/src/content/content-layer.ts @@ -171,7 +171,7 @@ export class ContentLayer { }, }, collectionWithResolvedSchema, - false + false, ); if (imageImports?.length) { this.#store.addAssetImports( @@ -179,7 +179,7 @@ export class ContentLayer { // This path may already be relative, if we're re-parsing an existing entry isAbsolute(filePath) ? posixRelative(fileURLToPath(this.#settings.config.root), filePath) - : filePath + : filePath, ); } @@ -201,7 +201,7 @@ export class ContentLayer { } return collection.loader.load(context); - }) + }), ); if (!existsSync(this.#settings.config.cacheDir)) { await fs.mkdir(this.#settings.config.cacheDir, { recursive: true }); @@ -221,7 +221,7 @@ export class ContentLayer { export async function simpleLoader( handler: () => Array | Promise>, - context: LoaderContext + context: LoaderContext, ) { const data = await handler(); context.store.clear(); diff --git a/packages/astro/src/content/data-store.ts b/packages/astro/src/content/data-store.ts index 4baf71bfbcf3..f60c94642e17 100644 --- a/packages/astro/src/content/data-store.ts +++ b/packages/astro/src/content/data-store.ts @@ -3,7 +3,7 @@ import type { MarkdownHeading } from '@astrojs/markdown-remark'; import * as devalue from 'devalue'; import { imageSrcToImportId, importIdToSymbolName } from '../assets/utils/resolveImports.js'; import { AstroError, AstroErrorData } from '../core/errors/index.js'; -import {CONTENT_MODULE_FLAG, DEFERRED_MODULE} from './consts.js'; +import { CONTENT_MODULE_FLAG, DEFERRED_MODULE } from './consts.js'; const SAVE_DEBOUNCE_MS = 500; @@ -313,7 +313,7 @@ export default new Map([\n${lines.join(',\n')}]); if (deferredRender) { entry.deferredRender = deferredRender; if (filePath) { - this.addModuleImport(filePath) + this.addModuleImport(filePath); } } this.set(collectionName, id, entry); @@ -326,8 +326,7 @@ export default new Map([\n${lines.join(',\n')}]); this.addAssetImport(assetImport, fileName), addAssetImports: (assets: Array, fileName: string) => this.addAssetImports(assets, fileName), - addModuleImport: (fileName: string) => - this.addModuleImport(fileName), + addModuleImport: (fileName: string) => this.addModuleImport(fileName), }; } /** @@ -401,7 +400,7 @@ export default new Map([\n${lines.join(',\n')}]); export interface ScopedDataStore { get: = Record>( - key: string + key: string, ) => DataEntry | undefined; entries: () => Array<[id: string, DataEntry]>; set: >(opts: { diff --git a/packages/astro/src/content/loaders/glob.ts b/packages/astro/src/content/loaders/glob.ts index a6522a56d917..578f13057baf 100644 --- a/packages/astro/src/content/loaders/glob.ts +++ b/packages/astro/src/content/loaders/glob.ts @@ -51,12 +51,12 @@ function generateIdDefault({ entry, base, data }: GenerateIdOptions): string { 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.' + '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.' + 'Glob patterns cannot start with `/`. Set the `base` option to a parent directory or use a relative path instead.', ); } @@ -111,7 +111,7 @@ export function glob(globOptions: GlobOptions): Loader { // Add asset imports for existing entries store.addAssetImports( existingEntry.rendered.metadata.imagePaths, - existingEntry.filePath + existingEntry.filePath, ); } // Re-parsing to resolve images and other effects @@ -130,7 +130,14 @@ export function glob(globOptions: GlobOptions): Loader { }); if (entryType.extensions.includes('.mdx')) { - store.set({ id, data: parsedData, body, filePath: relativePath, digest, deferredRender: true }); + store.set({ + id, + data: parsedData, + body, + filePath: relativePath, + digest, + deferredRender: true, + }); } else if (entryType.getRenderFunction) { let render = renderFunctionByContentType.get(entryType); if (!render) { @@ -207,7 +214,7 @@ export function glob(globOptions: GlobOptions): Loader { } const configFiles = new Set( - ['config.js', 'config.ts', 'config.mjs'].map((file) => new URL(file, contentDir).href) + ['config.js', 'config.ts', 'config.mjs'].map((file) => new URL(file, contentDir).href), ); function isConfigFile(file: string) { @@ -228,7 +235,7 @@ export function glob(globOptions: GlobOptions): Loader { const entryType = configForFile(entry); await syncData(entry, baseDir, entryType); }); - }) + }), ); const skipCount = skippedFiles.length; @@ -237,7 +244,7 @@ export function glob(globOptions: GlobOptions): Loader { logger.warn(`The glob() loader cannot be used for files in ${bold('src/content')}.`); if (skipCount > 10) { logger.warn( - `Skipped ${green(skippedFiles.length)} files that matched ${green(globOptions.pattern)}.` + `Skipped ${green(skippedFiles.length)} files that matched ${green(globOptions.pattern)}.`, ); } else { logger.warn(`Skipped the following files that matched ${green(globOptions.pattern)}:`); diff --git a/packages/astro/src/content/runtime.ts b/packages/astro/src/content/runtime.ts index 48c0bf146a8a..8a3bd0a175f4 100644 --- a/packages/astro/src/content/runtime.ts +++ b/packages/astro/src/content/runtime.ts @@ -34,7 +34,7 @@ export function defineCollection(config: any) { // TODO: when this moves out of experimental, we will set the type automatically throw new AstroUserError( 'Collections that use the content layer must have a `loader` defined and `type` set to `experimental_content`', - "Check your collection definitions in `src/content/config.*`.'" + "Check your collection definitions in `src/content/config.*`.'", ); } if (!config.type) config.type = 'content'; @@ -371,7 +371,7 @@ 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 @@ -417,7 +417,7 @@ async function updateImageReferencesInBody(html: string, fileName: string) { function updateImageReferencesInData>( data: T, fileName: string, - imageAssetMap: Map + imageAssetMap: Map, ): T { return new Traverse(data).map(function (ctx, val) { if (typeof val === 'string' && val.startsWith(IMAGE_IMPORT_PREFIX)) { @@ -438,7 +438,7 @@ function updateImageReferencesInData>( } export async function renderEntry( - entry: DataEntry | { render: () => Promise<{ Content: AstroComponentFactory }> } + entry: DataEntry | { render: () => Promise<{ Content: AstroComponentFactory }> }, ) { if (entry && 'render' in entry) { // This is an old content collection entry, so we use its render method @@ -451,12 +451,10 @@ export async function renderEntry( const { default: contentModules } = await import('astro:content-module-imports'); const module = contentModules.get(entry.filePath); return await module(); - } catch (e) { // eslint-disable-next-line console.error(e); } - } const html = @@ -582,7 +580,7 @@ export function createReference({ lookupMap }: { lookupMap: ContentLookupMap }) | string | { id: string; collection: string } | { slug: string; collection: string }, - ctx + ctx, ) => { const flattenedErrorPath = ctx.path.join('.'); const store = await globalDataStore.get(); @@ -648,7 +646,7 @@ export function createReference({ lookupMap }: { lookupMap: ContentLookupMap }) return { slug: lookup, collection }; } return { id: lookup, collection }; - } + }, ); }; } diff --git a/packages/astro/src/content/types-generator.ts b/packages/astro/src/content/types-generator.ts index afb34d34a500..8fa216fc1551 100644 --- a/packages/astro/src/content/types-generator.ts +++ b/packages/astro/src/content/types-generator.ts @@ -360,7 +360,7 @@ function normalizeConfigPath(from: string, to: string) { async function typeForCollection( collection: ContentConfig['collections'][T] | undefined, - collectionKey: T + collectionKey: T, ): Promise { if (collection?.schema) { return `InferEntrySchema<${collectionKey}>`; diff --git a/packages/astro/src/content/utils.ts b/packages/astro/src/content/utils.ts index b00b24c4812f..79a37a28d02f 100644 --- a/packages/astro/src/content/utils.ts +++ b/packages/astro/src/content/utils.ts @@ -18,7 +18,8 @@ import { isYAMLException } from '../core/errors/utils.js'; import type { Logger } from '../core/logger/core.js'; import { CONTENT_FLAGS, - CONTENT_LAYER_TYPE, CONTENT_MODULE_FLAG, + CONTENT_LAYER_TYPE, + CONTENT_MODULE_FLAG, IMAGE_IMPORT_PREFIX, PROPAGATED_ASSET_FLAG, } from './consts.js'; @@ -52,7 +53,7 @@ const collectionConfigParser = z.union([ .object({ id: z.string(), }) - .catchall(z.unknown()) + .catchall(z.unknown()), ), z.promise( z.array( @@ -60,10 +61,10 @@ const collectionConfigParser = z.union([ .object({ id: z.string(), }) - .catchall(z.unknown()) - ) + .catchall(z.unknown()), + ), ), - ]) + ]), ), z.object({ name: z.string(), @@ -81,8 +82,8 @@ const collectionConfigParser = z.union([ watcher: z.any().optional(), }), ], - z.unknown() - ) + z.unknown(), + ), ), schema: z.any().optional(), render: z.function(z.tuple([z.any()], z.unknown())).optional(), @@ -222,13 +223,13 @@ export async function getEntryData( }, collectionConfig: CollectionConfig, shouldEmitFile: boolean, - pluginContext?: PluginContext + pluginContext?: PluginContext, ) { const { data } = await getEntryDataAndImages( entry, collectionConfig, shouldEmitFile, - pluginContext + pluginContext, ); return data; } 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 27ff668e0c5f..64e5d98ee410 100644 --- a/packages/astro/src/content/vite-plugin-content-virtual-mod.ts +++ b/packages/astro/src/content/vite-plugin-content-virtual-mod.ts @@ -157,7 +157,6 @@ export function astroContentVirtualModPlugin({ return 'export default new Map()'; } return fs.readFileSync(assetImportsFile, 'utf-8'); - } if (id === MODULES_MJS_VIRTUAL_ID) { diff --git a/packages/astro/templates/content/types.d.ts b/packages/astro/templates/content/types.d.ts index 3461df436dfa..9880d724406c 100644 --- a/packages/astro/templates/content/types.d.ts +++ b/packages/astro/templates/content/types.d.ts @@ -112,7 +112,7 @@ declare module 'astro:content' { ): Promise[]>; export function render( - entry: AnyEntryMap[C][string] + entry: AnyEntryMap[C][string], ): Promise; export function reference( diff --git a/packages/astro/test/content-layer-render.test.js b/packages/astro/test/content-layer-render.test.js index 3a44794045e9..ab38bb1da2b4 100644 --- a/packages/astro/test/content-layer-render.test.js +++ b/packages/astro/test/content-layer-render.test.js @@ -8,7 +8,10 @@ describe('Content Layer dev', () => { let devServer; before(async () => { - fixture = await loadFixture({ root: './fixtures/content-layer-rendering/', cacheDir: "./fixtures/content-layer-rendering/.cache" }); + fixture = await loadFixture({ + root: './fixtures/content-layer-rendering/', + cacheDir: './fixtures/content-layer-rendering/.cache', + }); devServer = await fixture.startDevServer(); }); @@ -28,7 +31,10 @@ describe('Content Layer build', () => { /** @type {import("./test-utils.js").Fixture} */ let fixture; before(async () => { - fixture = await loadFixture({ root: './fixtures/content-layer-rendering/', cacheDir: "./fixtures/content-layer-rendering/.cache" }); + fixture = await loadFixture({ + root: './fixtures/content-layer-rendering/', + cacheDir: './fixtures/content-layer-rendering/.cache', + }); await fixture.build(); }); From 5f16f08e67fbcc1114b7f3151df75d6316619476 Mon Sep 17 00:00:00 2001 From: Emanuele Stoppa Date: Thu, 8 Aug 2024 14:59:14 +0100 Subject: [PATCH 28/34] update lock file --- pnpm-lock.yaml | 194 ++++++++++++++++++++++++------------------------- 1 file changed, 96 insertions(+), 98 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7aa98cccef85..6e4a18318963 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -60,8 +60,8 @@ importers: specifier: ~5.5.4 version: 5.5.4 typescript-eslint: - specifier: ^7.18.0 - version: 7.18.0(eslint@9.8.0)(typescript@5.5.4) + specifier: ^8.0.1 + version: 8.0.1(eslint@9.8.0)(typescript@5.5.4) benchmark: dependencies: @@ -118,7 +118,7 @@ importers: examples/basics: dependencies: astro: - specifier: ^4.13.1 + specifier: ^4.13.2 version: link:../../packages/astro examples/blog: @@ -133,13 +133,13 @@ importers: specifier: ^3.1.6 version: link:../../packages/integrations/sitemap astro: - specifier: ^4.13.1 + specifier: ^4.13.2 version: link:../../packages/astro examples/component: devDependencies: astro: - specifier: ^4.13.1 + specifier: ^4.13.2 version: link:../../packages/astro examples/container-with-vitest: @@ -148,7 +148,7 @@ importers: specifier: ^3.6.1 version: link:../../packages/integrations/react astro: - specifier: ^4.13.1 + specifier: ^4.13.2 version: link:../../packages/astro react: specifier: ^18.3.1 @@ -179,7 +179,7 @@ importers: specifier: ^3.14.1 version: 3.14.1 astro: - specifier: ^4.13.1 + specifier: ^4.13.2 version: link:../../packages/astro examples/framework-lit: @@ -191,7 +191,7 @@ importers: specifier: ^0.2.1 version: 0.2.1 astro: - specifier: ^4.13.1 + specifier: ^4.13.2 version: link:../../packages/astro lit: specifier: ^3.1.4 @@ -221,7 +221,7 @@ importers: specifier: ^18.3.0 version: 18.3.0 astro: - specifier: ^4.13.1 + specifier: ^4.13.2 version: link:../../packages/astro preact: specifier: ^10.23.1 @@ -251,7 +251,7 @@ importers: specifier: ^1.3.0 version: 1.3.0(preact@10.23.1) astro: - specifier: ^4.13.1 + specifier: ^4.13.2 version: link:../../packages/astro preact: specifier: ^10.23.1 @@ -269,7 +269,7 @@ importers: specifier: ^18.3.0 version: 18.3.0 astro: - specifier: ^4.13.1 + specifier: ^4.13.2 version: link:../../packages/astro react: specifier: ^18.3.1 @@ -284,7 +284,7 @@ importers: specifier: ^4.4.0 version: link:../../packages/integrations/solid astro: - specifier: ^4.13.1 + specifier: ^4.13.2 version: link:../../packages/astro solid-js: specifier: ^1.8.19 @@ -296,7 +296,7 @@ importers: specifier: ^5.7.0 version: link:../../packages/integrations/svelte astro: - specifier: ^4.13.1 + specifier: ^4.13.2 version: link:../../packages/astro svelte: specifier: ^4.2.18 @@ -308,7 +308,7 @@ importers: specifier: ^4.5.0 version: link:../../packages/integrations/vue astro: - specifier: ^4.13.1 + specifier: ^4.13.2 version: link:../../packages/astro vue: specifier: ^3.4.35 @@ -320,13 +320,13 @@ importers: specifier: ^8.3.2 version: link:../../packages/integrations/node astro: - specifier: ^4.13.1 + specifier: ^4.13.2 version: link:../../packages/astro examples/integration: devDependencies: astro: - specifier: ^4.13.1 + specifier: ^4.13.2 version: link:../../packages/astro examples/middleware: @@ -335,7 +335,7 @@ importers: specifier: ^8.3.2 version: link:../../packages/integrations/node astro: - specifier: ^4.13.1 + specifier: ^4.13.2 version: link:../../packages/astro html-minifier: specifier: ^4.0.0 @@ -348,19 +348,19 @@ importers: examples/minimal: dependencies: astro: - specifier: ^4.13.1 + specifier: ^4.13.2 version: link:../../packages/astro examples/non-html-pages: dependencies: astro: - specifier: ^4.13.1 + specifier: ^4.13.2 version: link:../../packages/astro examples/portfolio: dependencies: astro: - specifier: ^4.13.1 + specifier: ^4.13.2 version: link:../../packages/astro examples/server-islands: @@ -387,7 +387,7 @@ importers: specifier: ^18.3.0 version: 18.3.0 astro: - specifier: ^4.13.1 + specifier: ^4.13.2 version: link:../../packages/astro postcss: specifier: ^8.4.40 @@ -411,7 +411,7 @@ importers: specifier: ^5.7.0 version: link:../../packages/integrations/svelte astro: - specifier: ^4.13.1 + specifier: ^4.13.2 version: link:../../packages/astro svelte: specifier: ^4.2.18 @@ -420,7 +420,7 @@ importers: examples/starlog: dependencies: astro: - specifier: ^4.13.1 + specifier: ^4.13.2 version: link:../../packages/astro sass: specifier: ^1.77.8 @@ -432,7 +432,7 @@ importers: examples/toolbar-app: devDependencies: astro: - specifier: ^4.13.1 + specifier: ^4.13.2 version: link:../../packages/astro examples/view-transitions: @@ -444,7 +444,7 @@ importers: specifier: ^5.1.0 version: link:../../packages/integrations/tailwind astro: - specifier: ^4.13.1 + specifier: ^4.13.2 version: link:../../packages/astro examples/with-markdoc: @@ -453,7 +453,7 @@ importers: specifier: ^0.11.3 version: link:../../packages/integrations/markdoc astro: - specifier: ^4.13.1 + specifier: ^4.13.2 version: link:../../packages/astro examples/with-markdown-plugins: @@ -462,7 +462,7 @@ importers: specifier: ^5.2.0 version: link:../../packages/markdown/remark astro: - specifier: ^4.13.1 + specifier: ^4.13.2 version: link:../../packages/astro hast-util-select: specifier: ^6.0.2 @@ -483,7 +483,7 @@ importers: examples/with-markdown-shiki: dependencies: astro: - specifier: ^4.13.1 + specifier: ^4.13.2 version: link:../../packages/astro examples/with-mdx: @@ -495,7 +495,7 @@ importers: specifier: ^3.5.1 version: link:../../packages/integrations/preact astro: - specifier: ^4.13.1 + specifier: ^4.13.2 version: link:../../packages/astro preact: specifier: ^10.23.1 @@ -510,7 +510,7 @@ importers: specifier: ^0.5.2 version: 0.5.2(nanostores@0.11.0)(preact@10.23.1) astro: - specifier: ^4.13.1 + specifier: ^4.13.2 version: link:../../packages/astro nanostores: specifier: ^0.11.0 @@ -531,7 +531,7 @@ importers: specifier: ^1.6.4 version: 1.6.4 astro: - specifier: ^4.13.1 + specifier: ^4.13.2 version: link:../../packages/astro autoprefixer: specifier: ^10.4.20 @@ -549,7 +549,7 @@ importers: examples/with-vitest: dependencies: astro: - specifier: ^4.13.1 + specifier: ^4.13.2 version: link:../../packages/astro vitest: specifier: ^2.0.5 @@ -7541,63 +7541,62 @@ packages: '@types/yargs-parser@21.0.3': resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} - '@typescript-eslint/eslint-plugin@7.18.0': - resolution: {integrity: sha512-94EQTWZ40mzBc42ATNIBimBEDltSJ9RQHCC8vc/PDbxi4k8dVwUAv4o98dk50M1zB+JGFxp43FP7f8+FP8R6Sw==} - engines: {node: ^18.18.0 || >=20.0.0} + '@typescript-eslint/eslint-plugin@8.0.1': + resolution: {integrity: sha512-5g3Y7GDFsJAnY4Yhvk8sZtFfV6YNF2caLzjrRPUBzewjPCaj0yokePB4LJSobyCzGMzjZZYFbwuzbfDHlimXbQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^7.0.0 - eslint: ^8.56.0 + '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 + eslint: ^8.57.0 || ^9.0.0 typescript: '*' peerDependenciesMeta: typescript: optional: true - '@typescript-eslint/parser@7.18.0': - resolution: {integrity: sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg==} - engines: {node: ^18.18.0 || >=20.0.0} + '@typescript-eslint/parser@8.0.1': + resolution: {integrity: sha512-5IgYJ9EO/12pOUwiBKFkpU7rS3IU21mtXzB81TNwq2xEybcmAZrE9qwDtsb5uQd9aVO9o0fdabFyAmKveXyujg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^8.56.0 + eslint: ^8.57.0 || ^9.0.0 typescript: '*' peerDependenciesMeta: typescript: optional: true - '@typescript-eslint/scope-manager@7.18.0': - resolution: {integrity: sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==} - engines: {node: ^18.18.0 || >=20.0.0} + '@typescript-eslint/scope-manager@8.0.1': + resolution: {integrity: sha512-NpixInP5dm7uukMiRyiHjRKkom5RIFA4dfiHvalanD2cF0CLUuQqxfg8PtEUo9yqJI2bBhF+pcSafqnG3UBnRQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/type-utils@7.18.0': - resolution: {integrity: sha512-XL0FJXuCLaDuX2sYqZUUSOJ2sG5/i1AAze+axqmLnSkNEVMVYLF+cbwlB2w8D1tinFuSikHmFta+P+HOofrLeA==} - engines: {node: ^18.18.0 || >=20.0.0} + '@typescript-eslint/type-utils@8.0.1': + resolution: {integrity: sha512-+/UT25MWvXeDX9YaHv1IS6KI1fiuTto43WprE7pgSMswHbn1Jm9GEM4Txp+X74ifOWV8emu2AWcbLhpJAvD5Ng==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^8.56.0 typescript: '*' peerDependenciesMeta: typescript: optional: true - '@typescript-eslint/types@7.18.0': - resolution: {integrity: sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==} - engines: {node: ^18.18.0 || >=20.0.0} + '@typescript-eslint/types@8.0.1': + resolution: {integrity: sha512-PpqTVT3yCA/bIgJ12czBuE3iBlM3g4inRSC5J0QOdQFAn07TYrYEQBBKgXH1lQpglup+Zy6c1fxuwTk4MTNKIw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@7.18.0': - resolution: {integrity: sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==} - engines: {node: ^18.18.0 || >=20.0.0} + '@typescript-eslint/typescript-estree@8.0.1': + resolution: {integrity: sha512-8V9hriRvZQXPWU3bbiUV4Epo7EvgM6RTs+sUmxp5G//dBGy402S7Fx0W0QkB2fb4obCF8SInoUzvTYtc3bkb5w==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '*' peerDependenciesMeta: typescript: optional: true - '@typescript-eslint/utils@7.18.0': - resolution: {integrity: sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==} - engines: {node: ^18.18.0 || >=20.0.0} + '@typescript-eslint/utils@8.0.1': + resolution: {integrity: sha512-CBFR0G0sCt0+fzfnKaciu9IBsKvEKYwN9UZ+eeogK1fYHg4Qxk1yf/wLQkLXlq8wbU2dFlgAesxt8Gi76E8RTA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^8.56.0 + eslint: ^8.57.0 || ^9.0.0 - '@typescript-eslint/visitor-keys@7.18.0': - resolution: {integrity: sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==} - engines: {node: ^18.18.0 || >=20.0.0} + '@typescript-eslint/visitor-keys@8.0.1': + resolution: {integrity: sha512-W5E+o0UfUcK5EgchLZsyVWqARmsM7v54/qEq6PY3YI5arkgmCzHiuk0zKSJJbm71V0xdRna4BGomkCTXz2/LkQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@typescript/twoslash@3.1.0': resolution: {integrity: sha512-kTwMUQ8xtAZaC4wb2XuLkPqFVBj2dNBueMQ89NWEuw87k2nLBbuafeG5cob/QEr6YduxIdTVUjix0MtC7mPlmg==} @@ -11217,11 +11216,10 @@ packages: typescript-auto-import-cache@0.3.3: resolution: {integrity: sha512-ojEC7+Ci1ij9eE6hp8Jl9VUNnsEKzztktP5gtYNRMrTmfXVwA1PITYYAkpxCvvupdSYa/Re51B6KMcv1CTZEUA==} - typescript-eslint@7.18.0: - resolution: {integrity: sha512-PonBkP603E3tt05lDkbOMyaxJjvKqQrXsnow72sVeOFINDE/qNmnnd+f9b4N+U7W6MXnnYyrhtmF2t08QWwUbA==} - engines: {node: ^18.18.0 || >=20.0.0} + typescript-eslint@8.0.1: + resolution: {integrity: sha512-V3Y+MdfhawxEjE16dWpb7/IOgeXnLwAEEkS7v8oDqNcR1oYlqWhGH/iHqHdKVdpWme1VPZ0SoywXAkCqawj2eQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^8.56.0 typescript: '*' peerDependenciesMeta: typescript: @@ -13468,14 +13466,14 @@ snapshots: '@types/yargs-parser@21.0.3': {} - '@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0(eslint@9.8.0)(typescript@5.5.4))(eslint@9.8.0)(typescript@5.5.4)': + '@typescript-eslint/eslint-plugin@8.0.1(@typescript-eslint/parser@8.0.1(eslint@9.8.0)(typescript@5.5.4))(eslint@9.8.0)(typescript@5.5.4)': dependencies: '@eslint-community/regexpp': 4.11.0 - '@typescript-eslint/parser': 7.18.0(eslint@9.8.0)(typescript@5.5.4) - '@typescript-eslint/scope-manager': 7.18.0 - '@typescript-eslint/type-utils': 7.18.0(eslint@9.8.0)(typescript@5.5.4) - '@typescript-eslint/utils': 7.18.0(eslint@9.8.0)(typescript@5.5.4) - '@typescript-eslint/visitor-keys': 7.18.0 + '@typescript-eslint/parser': 8.0.1(eslint@9.8.0)(typescript@5.5.4) + '@typescript-eslint/scope-manager': 8.0.1 + '@typescript-eslint/type-utils': 8.0.1(eslint@9.8.0)(typescript@5.5.4) + '@typescript-eslint/utils': 8.0.1(eslint@9.8.0)(typescript@5.5.4) + '@typescript-eslint/visitor-keys': 8.0.1 eslint: 9.8.0 graphemer: 1.4.0 ignore: 5.3.1 @@ -13486,12 +13484,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@7.18.0(eslint@9.8.0)(typescript@5.5.4)': + '@typescript-eslint/parser@8.0.1(eslint@9.8.0)(typescript@5.5.4)': dependencies: - '@typescript-eslint/scope-manager': 7.18.0 - '@typescript-eslint/types': 7.18.0 - '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.5.4) - '@typescript-eslint/visitor-keys': 7.18.0 + '@typescript-eslint/scope-manager': 8.0.1 + '@typescript-eslint/types': 8.0.1 + '@typescript-eslint/typescript-estree': 8.0.1(typescript@5.5.4) + '@typescript-eslint/visitor-keys': 8.0.1 debug: 4.3.6 eslint: 9.8.0 optionalDependencies: @@ -13499,29 +13497,29 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@7.18.0': + '@typescript-eslint/scope-manager@8.0.1': dependencies: - '@typescript-eslint/types': 7.18.0 - '@typescript-eslint/visitor-keys': 7.18.0 + '@typescript-eslint/types': 8.0.1 + '@typescript-eslint/visitor-keys': 8.0.1 - '@typescript-eslint/type-utils@7.18.0(eslint@9.8.0)(typescript@5.5.4)': + '@typescript-eslint/type-utils@8.0.1(eslint@9.8.0)(typescript@5.5.4)': dependencies: - '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.5.4) - '@typescript-eslint/utils': 7.18.0(eslint@9.8.0)(typescript@5.5.4) + '@typescript-eslint/typescript-estree': 8.0.1(typescript@5.5.4) + '@typescript-eslint/utils': 8.0.1(eslint@9.8.0)(typescript@5.5.4) debug: 4.3.6 - eslint: 9.8.0 ts-api-utils: 1.3.0(typescript@5.5.4) optionalDependencies: typescript: 5.5.4 transitivePeerDependencies: + - eslint - supports-color - '@typescript-eslint/types@7.18.0': {} + '@typescript-eslint/types@8.0.1': {} - '@typescript-eslint/typescript-estree@7.18.0(typescript@5.5.4)': + '@typescript-eslint/typescript-estree@8.0.1(typescript@5.5.4)': dependencies: - '@typescript-eslint/types': 7.18.0 - '@typescript-eslint/visitor-keys': 7.18.0 + '@typescript-eslint/types': 8.0.1 + '@typescript-eslint/visitor-keys': 8.0.1 debug: 4.3.6 globby: 11.1.0 is-glob: 4.0.3 @@ -13533,20 +13531,20 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@7.18.0(eslint@9.8.0)(typescript@5.5.4)': + '@typescript-eslint/utils@8.0.1(eslint@9.8.0)(typescript@5.5.4)': dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@9.8.0) - '@typescript-eslint/scope-manager': 7.18.0 - '@typescript-eslint/types': 7.18.0 - '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.5.4) + '@typescript-eslint/scope-manager': 8.0.1 + '@typescript-eslint/types': 8.0.1 + '@typescript-eslint/typescript-estree': 8.0.1(typescript@5.5.4) eslint: 9.8.0 transitivePeerDependencies: - supports-color - typescript - '@typescript-eslint/visitor-keys@7.18.0': + '@typescript-eslint/visitor-keys@8.0.1': dependencies: - '@typescript-eslint/types': 7.18.0 + '@typescript-eslint/types': 8.0.1 eslint-visitor-keys: 3.4.3 '@typescript/twoslash@3.1.0': @@ -17822,15 +17820,15 @@ snapshots: dependencies: semver: 7.6.3 - typescript-eslint@7.18.0(eslint@9.8.0)(typescript@5.5.4): + typescript-eslint@8.0.1(eslint@9.8.0)(typescript@5.5.4): dependencies: - '@typescript-eslint/eslint-plugin': 7.18.0(@typescript-eslint/parser@7.18.0(eslint@9.8.0)(typescript@5.5.4))(eslint@9.8.0)(typescript@5.5.4) - '@typescript-eslint/parser': 7.18.0(eslint@9.8.0)(typescript@5.5.4) - '@typescript-eslint/utils': 7.18.0(eslint@9.8.0)(typescript@5.5.4) - eslint: 9.8.0 + '@typescript-eslint/eslint-plugin': 8.0.1(@typescript-eslint/parser@8.0.1(eslint@9.8.0)(typescript@5.5.4))(eslint@9.8.0)(typescript@5.5.4) + '@typescript-eslint/parser': 8.0.1(eslint@9.8.0)(typescript@5.5.4) + '@typescript-eslint/utils': 8.0.1(eslint@9.8.0)(typescript@5.5.4) optionalDependencies: typescript: 5.5.4 transitivePeerDependencies: + - eslint - supports-color typescript@5.5.4: {} From 8d6c27fee2dc562515f2a3a58f8ea7055fd322b3 Mon Sep 17 00:00:00 2001 From: Matt Kane Date: Thu, 8 Aug 2024 15:17:38 +0100 Subject: [PATCH 29/34] Lint --- packages/astro/src/content/runtime.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/astro/src/content/runtime.ts b/packages/astro/src/content/runtime.ts index 8a3bd0a175f4..ba84bcb5454b 100644 --- a/packages/astro/src/content/runtime.ts +++ b/packages/astro/src/content/runtime.ts @@ -390,7 +390,7 @@ async function updateImageReferencesInBody(html: string, fileName: string) { } const image: GetImageResult = await getImage({ ...decodedImagePath, src: imported }); imageObjects.set(imagePath, image); - } catch (e) { + } catch { throw new Error(`Failed to parse image reference: ${imagePath}`); } } From 598eb59de324e55da679bd066db502758f38488f Mon Sep 17 00:00:00 2001 From: Matt Kane Date: Fri, 9 Aug 2024 09:06:56 +0100 Subject: [PATCH 30/34] Add experimental content layer flag (#11652) * Add experimental content layer flag * Syntax and format * Aside * Format * Reset content config between runs * Update fixture * Update terminology * Lint * wut --- packages/astro/src/@types/astro.ts | 253 ++++++++++++++++++ packages/astro/src/content/consts.ts | 2 +- packages/astro/src/content/content-layer.ts | 18 +- packages/astro/src/content/runtime.ts | 17 +- packages/astro/src/core/config/schema.ts | 2 + packages/astro/src/core/dev/dev.ts | 3 + packages/astro/src/core/dev/restart.ts | 35 +-- packages/astro/test/content-layer.test.js | 2 + .../content-layer-rendering/astro.config.mjs | 5 +- .../src/content/config.ts | 1 - .../fixtures/content-layer/astro.config.mjs | 5 +- .../content-layer/src/content/config.ts | 10 +- packages/astro/test/test-utils.js | 3 + packages/astro/types/content.d.ts | 3 +- 14 files changed, 320 insertions(+), 39 deletions(-) diff --git a/packages/astro/src/@types/astro.ts b/packages/astro/src/@types/astro.ts index e1d9f83014ee..2134c2237706 100644 --- a/packages/astro/src/@types/astro.ts +++ b/packages/astro/src/@types/astro.ts @@ -124,6 +124,7 @@ export type TransitionAnimationValue = | TransitionDirectionalAnimations; // Allow users to extend this for astro-jsx.d.ts + // eslint-disable-next-line @typescript-eslint/no-empty-object-type export interface AstroClientDirectives {} @@ -2184,6 +2185,258 @@ export interface AstroUserConfig { * For a complete overview, and to give feedback on this experimental API, see the [Server Islands RFC](https://github.com/withastro/roadmap/pull/963). */ serverIslands?: boolean; + + /** + * @docs + * @name experimental.contentLayer + * @type {boolean} + * @default `false` + * @version 4.16.0 + * @description + * + * The Content Layer API is a new way to handle content and data in Astro. It takes [content collections](https://docs.astro.build/en/guides/content-collections/) beyond local files in `src/content` and allowing you to fetch content from anywhere, including remote APIs, or files anywhere in your project. As well as being more powerful, the Content Layer API is designed to be more performant, helping sites scale to tens of thousands of pages. Data is cached between builds and updated incrementally. Markdown parsing is also 5-10x faster, with similar scale reductions in memory. While the feature is experimental and subject to breaking changes, we invite you to try it today and let us know how it works for you. + * + * #### Enabling the Content Layer API + * + * To enable, add the `contentLayer` flag to the `experimental` object in your Astro config: + * + * ```js + * { + * experimental: { + * contentLayer: true, + * } + * } + * ``` + * + * #### Using the Content Layer API + * + * :::tip + * The Content Layer API is a new way to define content collections, but many of the APIs are the same. It will be helpful to refer to the current [content collection docs](https://docs.astro.build/en/guides/content-collections/) for more information. Any differences in the API usage are highlighted below. + * ::: + * + * To use the Content Layer API, create a collection in `src/content/config.ts` with a `loader` property. For local files where there is one entry per file, use the `glob()` loader. You can put your content files anywhere, but *not* in `src/content` because these would be handled by the current content collections APIs instead. In this example the files are in `src/data`. + * + * ```ts + * import { defineCollection, z } from 'astro:content'; + * import { glob } from 'astro/loaders'; + * + * const blog = defineCollection({ + * // By default the ID is a slug, generated from the path of the file relative to `base` + * loader: glob({ pattern: "**\/*.md", base: "./src/data/blog" }), + * schema: z.object({ + * title: z.string(), + * description: z.string(), + * pubDate: z.coerce.date(), + * updatedDate: z.coerce.date().optional(), + * }), + * }); + * + * export const collections = { blog }; + * ``` + * + * You can load multiple entries from a single JSON file using the `file()` loader. In this case the data must either be an array of objects, which each contain an `id` property, or an object where each key is the ID. + * + * **Array syntax:** + * + * ```json + * [ + * { + * "id": "labrador-retriever", + * "breed": "Labrador Retriever", + * "size": "Large", + * "origin": "Canada", + * "lifespan": "10-12 years", + * "temperament": [ + * "Friendly", + * "Active", + * "Outgoing" + * ] + * }, + * { + * "id": "german-shepherd", + * "breed": "German Shepherd", + * "size": "Large", + * "origin": "Germany", + * "lifespan": "9-13 years", + * "temperament": [ + * "Loyal", + * "Intelligent", + * "Confident" + * ] + * } + * ] + * ``` + * + * **Object syntax:** + * + * ```json + * { + * "labrador-retriever": { + * "breed": "Labrador Retriever", + * "size": "Large", + * "origin": "Canada", + * "lifespan": "10-12 years", + * "temperament": [ + * "Friendly", + * "Active", + * "Outgoing" + * ] + * }, + * "german-shepherd": { + * "breed": "German Shepherd", + * "size": "Large", + * "origin": "Germany", + * "lifespan": "9-13 years", + * "temperament": [ + * "Loyal", + * "Intelligent", + * "Confident" + * ] + * } + * } + * ``` + * + * The collection is then defined using the `file()` loader: + * + * ```ts + * import { defineCollection, z } from 'astro:content'; + * import { file } from 'astro/loaders'; + * + * const dogs = defineCollection({ + * loader: file('src/data/dogs.json'), + * schema: z.object({ + * id: z.string(), + * breed: z.string(), + * size: z.string(), + * origin: z.string(), + * lifespan: z.string(), + * temperament: z.array(z.string()), + * }), + * }); + * + * export const collections = { dogs }; + * ``` + * + * The collection can be queried in the same way as existing content collections: + * + * ```ts + * import { getCollection, getEntry } from 'astro:content'; + * + * // Get all entries from a collection. + * // Requires the name of the collection as an argument. + * const allBlogPosts = await getCollection('blog'); + * + * // Get a single entry from a collection. + * // Requires the name of the collection and ID + * const labradorData = await getEntry('dogs', 'labrador-retriever'); + * ``` + * + * #### Rendering content + * + * Entries generated from markdown or MDX can be rendered directly to a page using the `render()` function. + * + * :::caution + * The syntax for rendering entries from collections that use the Content Layer is different from current content collections syntax. + * ::: + * + * ```astro + * --- + * import { getEntry, render } from 'astro:content'; + * + * const post = await getEntry('blog', Astro.params.slug); + * + * const { Content, headings } = await render(entry); + * --- + * + * + * ``` + * + * #### Creating a loader + * + * Content loaders aren't restricted to just loading local files. You can also use loaders to fetch or generate content from anywhere. The simplest type of loader is an async function that returns an array of objects, each of which has an `id`: + * + * ```ts + * const countries = defineCollection({ + * loader: async () => { + * const response = await fetch("https://restcountries.com/v3.1/all"); + * const data = await response.json(); + * // Must return an array of entries with an id property, or an object with IDs as keys and entries as values + * return data.map((country) => ({ + * id: country.cca3, + * ...country, + * })); + * }, + * // optionally add a schema + * // schema: z.object... + * }); + * + * export const collections = { countries }; + * ``` + * + * For more advanced loading logic, you can define an object loader. This allows incremental updates and conditional loading, and gives full access to the data store. See the API in [the RFC](https://github.com/withastro/roadmap/blob/content-layer/proposals/content-layer.md#loaders). + * + * ### Migrating an existing content collection to use the Content Layer API + * + * You can convert an existing content collection to use the Content Layer API if it uses markdown, MDX or JSON, with these steps: + * + * 1. **Move the collection folder out of `src/content`.** This is so it won't be handled using the existing content collection APIs. This example assumes the content has been moved to `src/data`. The `config.ts` file must remain in `src/content`. + * 2. **Edit the collection definition**. The collection should not have `type` set, and needs a `loader` defined. + * + * ```diff + * import { defineCollection, z } from 'astro:content'; + * + import { glob } from 'astro/loaders'; + * + * const blog = defineCollection({ + * // For content layer you do not define a `type` + * - type: 'content', + * + loader: glob({ pattern: "**\/*.md", base: "./src/data/blog" }), + * schema: z.object({ + * title: z.string(), + * description: z.string(), + * pubDate: z.coerce.date(), + * updatedDate: z.coerce.date().optional(), + * }), + * }); + * ``` + * + * 3. **Change references from `slug` to `id`**. Content collections created with the Content Layer API do not have a `slug` field. You should use `id` instead, which has the same syntax. + * + * ```diff + * --- + * export async function getStaticPaths() { + * const posts = await getCollection('blog'); + * return posts.map((post) => ({ + * - params: { slug: post.slug }, + * + params: { slug: post.id }, + * props: post, + * })); + * } + * --- + * ``` + * + * 4. **Switch to the new `render()` function**. Entries no longer have a `render()` method, as they are now serializable plain objects. Instead, import the `render()` function from `astro:content`. + * + * ```diff + * --- + * - import { getEntry } from 'astro:content'; + * + import { getEntry, render } from 'astro:content'; + * + * const post = await getEntry('blog', params.slug); + * + * - const { Content, headings } = await post.render(); + * + const { Content, headings } = await render(post); + * --- + * + * + * ``` + * + * The `getEntryBySlug` and `getDataEntryByID` functions are deprecated and cannot be used with collections that use the Content Layer API. Instead, use `getEntry`, which is a drop-in replacement for both. + * + * #### Learn more + * + * To see the full API look at [the RFC](https://github.com/withastro/roadmap/blob/content-layer/proposals/content-layer.md) and [share your feedback on the feature and API](https://github.com/withastro/roadmap/pull/982). + */ + contentLayer?: boolean; }; } diff --git a/packages/astro/src/content/consts.ts b/packages/astro/src/content/consts.ts index c1ac5ee70cab..b506e08ab03f 100644 --- a/packages/astro/src/content/consts.ts +++ b/packages/astro/src/content/consts.ts @@ -40,4 +40,4 @@ export const DATA_STORE_FILE = 'data-store.json'; export const ASSET_IMPORTS_FILE = 'assets.mjs'; export const MODULES_IMPORTS_FILE = 'modules.mjs'; -export const CONTENT_LAYER_TYPE = 'experimental_content'; +export const CONTENT_LAYER_TYPE = 'content_layer'; diff --git a/packages/astro/src/content/content-layer.ts b/packages/astro/src/content/content-layer.ts index ea1367b600fb..2019211bb08c 100644 --- a/packages/astro/src/content/content-layer.ts +++ b/packages/astro/src/content/content-layer.ts @@ -4,6 +4,7 @@ import { fileURLToPath } from 'node:url'; import type { FSWatcher } from 'vite'; import xxhash from 'xxhash-wasm'; import type { AstroSettings } from '../@types/astro.js'; +import { AstroUserError } from '../core/errors/errors.js'; import type { Logger } from '../core/logger/core.js'; import { ASSET_IMPORTS_FILE, @@ -125,13 +126,26 @@ export class ContentLayer { } async #doSync() { - const logger = this.#logger.forkIntegrationLogger('content'); - logger.info('Syncing content'); const contentConfig = globalContentConfigObserver.get(); + const logger = this.#logger.forkIntegrationLogger('content'); if (contentConfig?.status !== 'loaded') { logger.debug('Content config not loaded, skipping sync'); return; } + if (!this.#settings.config.experimental.contentLayer) { + const contentLayerCollections = Object.entries(contentConfig.config.collections).filter( + ([_, collection]) => collection.type === CONTENT_LAYER_TYPE, + ); + if (contentLayerCollections.length > 0) { + throw new AstroUserError( + `The following collections have a loader defined, but the content layer is not enabled: ${contentLayerCollections.map(([title]) => title).join(', ')}.`, + 'To enable the Content Layer API, set `experimental: { contentLayer: true }` in your Astro config file.', + ); + } + return; + } + + logger.info('Syncing content'); const { digest: currentConfigDigest } = contentConfig.config; this.#lastConfigDigest = currentConfigDigest; diff --git a/packages/astro/src/content/runtime.ts b/packages/astro/src/content/runtime.ts index ba84bcb5454b..e1128bc85311 100644 --- a/packages/astro/src/content/runtime.ts +++ b/packages/astro/src/content/runtime.ts @@ -27,15 +27,14 @@ type CollectionToEntryMap = Record; type GetEntryImport = (collection: string, lookupId: string) => Promise; export function defineCollection(config: any) { - if ( - ('loader' in config && config.type !== CONTENT_LAYER_TYPE) || - (config.type === CONTENT_LAYER_TYPE && !('loader' in config)) - ) { - // TODO: when this moves out of experimental, we will set the type automatically - throw new AstroUserError( - 'Collections that use the content layer must have a `loader` defined and `type` set to `experimental_content`', - "Check your collection definitions in `src/content/config.*`.'", - ); + if ('loader' in config) { + if (config.type && config.type !== CONTENT_LAYER_TYPE) { + throw new AstroUserError( + 'Collections that use the Content Layer API must have a `loader` defined and no `type` set.', + "Check your collection definitions in `src/content/config.*`.'", + ); + } + config.type = CONTENT_LAYER_TYPE; } if (!config.type) config.type = 'content'; return config; diff --git a/packages/astro/src/core/config/schema.ts b/packages/astro/src/core/config/schema.ts index 9ffb58934ba0..b72c8c31709f 100644 --- a/packages/astro/src/core/config/schema.ts +++ b/packages/astro/src/core/config/schema.ts @@ -92,6 +92,7 @@ export const ASTRO_CONFIG_DEFAULTS = { env: { validateSecrets: false, }, + contentLayer: false, }, } satisfies AstroUserConfig & { server: { open: boolean } }; @@ -538,6 +539,7 @@ export const AstroConfigSchema = z.object({ .boolean() .optional() .default(ASTRO_CONFIG_DEFAULTS.experimental.serverIslands), + contentLayer: z.boolean().optional().default(ASTRO_CONFIG_DEFAULTS.experimental.contentLayer), }) .strict( `Invalid or outdated experimental feature.\nCheck for incorrect spelling or outdated Astro version.\nSee https://docs.astro.build/en/reference/configuration-reference/#experimental-flags for a list of all current experiments.`, diff --git a/packages/astro/src/core/dev/dev.ts b/packages/astro/src/core/dev/dev.ts index 797fdfc1dd07..127f34b94989 100644 --- a/packages/astro/src/core/dev/dev.ts +++ b/packages/astro/src/core/dev/dev.ts @@ -122,6 +122,9 @@ export default async function dev(inlineConfig: AstroInlineConfig): Promise handleServerRestart(); // Set up shortcuts - restart.container.viteServer.bindCLIShortcuts({ - customShortcuts: [ - { - key: 's', - description: 'sync content layer', - action: () => { - if (globalContentLayer.initialized()) { - globalContentLayer.get().sync(); - } - }, + + const customShortcuts: Array = [ + // Disable default Vite shortcuts that don't work well with Astro + { key: 'r', description: '' }, + { key: 'u', description: '' }, + { key: 'c', description: '' }, + ]; + + if (restart.container.settings.config.experimental.contentLayer) { + customShortcuts.push({ + key: 's', + description: 'sync content layer', + action: () => { + if (globalContentLayer.initialized()) { + globalContentLayer.get().sync(); + } }, - // Disable default Vite shortcuts that don't work well with Astro - { key: 'r', description: '' }, - { key: 'u', description: '' }, - { key: 'c', description: '' }, - ], + }); + } + restart.container.viteServer.bindCLIShortcuts({ + customShortcuts, }); } setupContainer(); diff --git a/packages/astro/test/content-layer.test.js b/packages/astro/test/content-layer.test.js index 199267ce3f57..41c05206bad2 100644 --- a/packages/astro/test/content-layer.test.js +++ b/packages/astro/test/content-layer.test.js @@ -169,6 +169,7 @@ describe('Content Layer', () => { await fixture.build(); newJson = devalue.parse(await fixture.readFile('/collections.json')); assert.equal(newJson.increment.data.lastValue, 1); + await fixture.resetAllFiles(); }); }); @@ -272,6 +273,7 @@ describe('Content Layer', () => { const updatedJsonResponse = await fixture.fetch('/collections.json'); const updated = devalue.parse(await updatedJsonResponse.text()); assert.ok(updated.fileLoader[0].data.temperament.includes('Bouncy')); + await fixture.resetAllFiles(); }); }); }); diff --git a/packages/astro/test/fixtures/content-layer-rendering/astro.config.mjs b/packages/astro/test/fixtures/content-layer-rendering/astro.config.mjs index d90448042321..c3fd1366a07a 100644 --- a/packages/astro/test/fixtures/content-layer-rendering/astro.config.mjs +++ b/packages/astro/test/fixtures/content-layer-rendering/astro.config.mjs @@ -10,5 +10,8 @@ export default defineConfig({ '@images': fileURLToPath(new URL('./images', import.meta.url)) } }, - } + }, + experimental: { + contentLayer: true, + }, }); diff --git a/packages/astro/test/fixtures/content-layer-rendering/src/content/config.ts b/packages/astro/test/fixtures/content-layer-rendering/src/content/config.ts index 54c0fb5085bd..eb175fa99bd8 100644 --- a/packages/astro/test/fixtures/content-layer-rendering/src/content/config.ts +++ b/packages/astro/test/fixtures/content-layer-rendering/src/content/config.ts @@ -2,7 +2,6 @@ import { defineCollection, z, reference } from 'astro:content'; import { glob } from 'astro/loaders'; const reptiles = defineCollection({ - type: 'experimental_content', loader: glob({ pattern: '*.mdx', base: new URL('../../content-outside-src-mdx', import.meta.url), diff --git a/packages/astro/test/fixtures/content-layer/astro.config.mjs b/packages/astro/test/fixtures/content-layer/astro.config.mjs index d90448042321..c3fd1366a07a 100644 --- a/packages/astro/test/fixtures/content-layer/astro.config.mjs +++ b/packages/astro/test/fixtures/content-layer/astro.config.mjs @@ -10,5 +10,8 @@ export default defineConfig({ '@images': fileURLToPath(new URL('./images', import.meta.url)) } }, - } + }, + experimental: { + contentLayer: true, + }, }); 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 6fd28487c21a..452ba6631ac2 100644 --- a/packages/astro/test/fixtures/content-layer/src/content/config.ts +++ b/packages/astro/test/fixtures/content-layer/src/content/config.ts @@ -3,12 +3,10 @@ import { file, glob } from 'astro/loaders'; import { loader } from '../loaders/post-loader.js'; const blog = defineCollection({ - type: 'experimental_content', loader: loader({ url: 'https://jsonplaceholder.typicode.com/posts' }), }); const dogs = defineCollection({ - type: 'experimental_content', loader: file('src/data/dogs.json'), schema: z.object({ breed: z.string(), @@ -21,7 +19,6 @@ const dogs = defineCollection({ }); const cats = defineCollection({ - type: 'experimental_content', loader: async function () { return [ { @@ -72,7 +69,6 @@ const cats = defineCollection({ const absoluteRoot = new URL('../../content-outside-src', import.meta.url); const spacecraft = defineCollection({ - type: 'experimental_content', loader: glob({ pattern: '*.md', base: absoluteRoot }), schema: ({ image }) => z.object({ @@ -86,17 +82,15 @@ const spacecraft = defineCollection({ }); const numbers = defineCollection({ - type: 'experimental_content', loader: glob({ pattern: 'src/data/glob-data/*', base: '.' }), }); const increment = defineCollection({ - type: 'experimental_content', loader: { name: 'increment-loader', load: async ({ store }) => { - const entry = store.get('value'); - const lastValue: number = entry?.data.lastValue ?? 0; + const entry = store.get<{lastValue: number}>('value'); + const lastValue = entry?.data.lastValue ?? 0; store.set({ id: 'value', data: { diff --git a/packages/astro/test/test-utils.js b/packages/astro/test/test-utils.js index 337798a7951f..2fcd840a8a54 100644 --- a/packages/astro/test/test-utils.js +++ b/packages/astro/test/test-utils.js @@ -8,6 +8,7 @@ import stripAnsi from 'strip-ansi'; import { Agent } from 'undici'; import { check } from '../dist/cli/check/index.js'; import { globalContentLayer } from '../dist/content/content-layer.js'; +import { globalContentConfigObserver } from '../dist/content/utils.js'; import build from '../dist/core/build/index.js'; import { RESOLVED_SPLIT_MODULE_ID } from '../dist/core/build/plugins/plugin-ssr.js'; import { getVirtualModulePageName } from '../dist/core/build/plugins/util.js'; @@ -160,6 +161,7 @@ export async function loadFixture(inlineConfig) { return { build: async (extraInlineConfig = {}, options = {}) => { globalContentLayer.dispose(); + globalContentConfigObserver.set({ status: 'init' }); process.env.NODE_ENV = 'production'; return build(mergeConfig(inlineConfig, extraInlineConfig), { teardownCompiler: false, @@ -172,6 +174,7 @@ export async function loadFixture(inlineConfig) { }, startDevServer: async (extraInlineConfig = {}) => { globalContentLayer.dispose(); + globalContentConfigObserver.set({ status: 'init' }); process.env.NODE_ENV = 'development'; devServer = await dev(mergeConfig(inlineConfig, extraInlineConfig)); config.server.host = parseAddressToHost(devServer.address.address); // update host diff --git a/packages/astro/types/content.d.ts b/packages/astro/types/content.d.ts index 62e3e09c6e23..1715a30a42e3 100644 --- a/packages/astro/types/content.d.ts +++ b/packages/astro/types/content.d.ts @@ -58,7 +58,7 @@ declare module 'astro:content' { export type SchemaContext = { image: ImageFunction }; type ContentLayerConfig = { - type: 'experimental_content'; + type?: 'content_layer'; schema?: S | ((context: SchemaContext) => S); loader: import('astro/loaders').Loader | (() => Array | Promise>); }; @@ -71,6 +71,7 @@ declare module 'astro:content' { type ContentCollectionConfig = { type?: 'content'; schema?: S | ((context: SchemaContext) => S); + loader?: never; }; export type CollectionConfig = From d13fb8c397073e0af2d0af41c47fa3709377bc8c Mon Sep 17 00:00:00 2001 From: Matt Kane Date: Fri, 9 Aug 2024 14:23:49 +0100 Subject: [PATCH 31/34] Normalize render function return value (#11663) --- packages/astro/src/@types/astro.ts | 2 +- packages/astro/src/content/runtime.ts | 13 +++++++++++-- packages/astro/templates/content/types.d.ts | 18 +++++++++--------- .../content-outside-src-mdx/iguana.mdx | 2 ++ .../src/pages/spacecraft/[slug].astro | 6 ++++-- 5 files changed, 27 insertions(+), 14 deletions(-) diff --git a/packages/astro/src/@types/astro.ts b/packages/astro/src/@types/astro.ts index 2134c2237706..75a251350374 100644 --- a/packages/astro/src/@types/astro.ts +++ b/packages/astro/src/@types/astro.ts @@ -124,7 +124,7 @@ export type TransitionAnimationValue = | TransitionDirectionalAnimations; // Allow users to extend this for astro-jsx.d.ts - + // eslint-disable-next-line @typescript-eslint/no-empty-object-type export interface AstroClientDirectives {} diff --git a/packages/astro/src/content/runtime.ts b/packages/astro/src/content/runtime.ts index e1128bc85311..b462e2e23a46 100644 --- a/packages/astro/src/content/runtime.ts +++ b/packages/astro/src/content/runtime.ts @@ -449,7 +449,12 @@ export async function renderEntry( // @ts-expect-error virtual module const { default: contentModules } = await import('astro:content-module-imports'); const module = contentModules.get(entry.filePath); - return await module(); + const deferredMod = await module(); + return { + Content: deferredMod.Content, + headings: deferredMod.getHeadings?.() ?? [], + remarkPluginFrontmatter: deferredMod.frontmatter ?? {}, + }; } catch (e) { // eslint-disable-next-line console.error(e); @@ -462,7 +467,11 @@ export async function renderEntry( : entry?.rendered?.html; const Content = createComponent(() => serverRender`${unescapeHTML(html)}`); - return { Content }; + return { + Content, + headings: entry?.rendered?.metadata?.headings ?? [], + remarkPluginFrontmatter: entry?.rendered?.metadata?.frontmatter ?? {}, + }; } async function render({ diff --git a/packages/astro/templates/content/types.d.ts b/packages/astro/templates/content/types.d.ts index 9880d724406c..9f277576a4bf 100644 --- a/packages/astro/templates/content/types.d.ts +++ b/packages/astro/templates/content/types.d.ts @@ -1,14 +1,14 @@ declare module 'astro:content' { - interface Render { - '.md': Promise<{ - Content: import('astro').MarkdownInstance<{}>['Content']; - headings: import('astro').MarkdownHeading[]; - remarkPluginFrontmatter: Record; - }>; - } - interface ContentLayerRenderResult { + + interface RenderResult { Content: import('astro/runtime/server/index.js').AstroComponentFactory; + headings: import('astro').MarkdownHeading[]; + remarkPluginFrontmatter: Record; } + interface Render { + '.md': Promise; + } + export interface RenderedContent { html: string; @@ -113,7 +113,7 @@ declare module 'astro:content' { export function render( entry: AnyEntryMap[C][string], - ): Promise; + ): Promise; export function reference( collection: C, diff --git a/packages/astro/test/fixtures/content-layer-rendering/content-outside-src-mdx/iguana.mdx b/packages/astro/test/fixtures/content-layer-rendering/content-outside-src-mdx/iguana.mdx index b34e732f5bb6..1266a73753b9 100644 --- a/packages/astro/test/fixtures/content-layer-rendering/content-outside-src-mdx/iguana.mdx +++ b/packages/astro/test/fixtures/content-layer-rendering/content-outside-src-mdx/iguana.mdx @@ -9,6 +9,8 @@ import H2 from "../src/components/H2.astro";

Iguana

+### Iguana + This is a rendered entry ![file](./shuttle.jpg) 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 b380a03c37ea..80314606f96f 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 @@ -22,12 +22,14 @@ export const getStaticPaths = (async () => { const { craft } = Astro.props as any let cat = craft.data.cat ? await getEntry(craft.data.cat) : undefined -const { Content } = await render(craft) +const { Content, headings } = await render(craft) ---

{craft.data.title}

+ {cat?

🐈: {cat.data.breed}

: undefined} {craft.data.heroImage ? {craft.data.title} : undefined} - From 134fe2bcffb480a641f983cc54f58f2a222e349f Mon Sep 17 00:00:00 2001 From: Matt Kane Date: Fri, 9 Aug 2024 19:27:07 +0100 Subject: [PATCH 32/34] Add markdoc support to content layer (#11664) * Add markdoc support to content layer * Switch test to cheerio --- packages/astro/package.json | 2 +- packages/astro/src/content/loaders/glob.ts | 22 ++--- .../astro/test/content-layer-markdoc.test.js | 88 +++++++++++++++++++ .../astro/test/content-layer-render.test.js | 6 +- .../content-layer-markdoc/astro.config.mjs | 9 ++ .../content/_nested.mdoc | 3 + .../content/blog/_counter.mdoc | 7 ++ .../content/blog/with-components.mdoc | 19 ++++ .../content-layer-markdoc/markdoc.config.ts | 32 +++++++ .../content-layer-markdoc/package.json | 11 +++ .../src/components/Code.astro | 12 +++ .../src/components/Counter.tsx | 10 +++ .../src/components/CounterWrapper.astro | 5 ++ .../src/components/CustomMarquee.astro | 1 + .../src/components/DeeplyNested.astro | 5 ++ .../src/content/config.ts | 11 +++ .../src/pages/index.astro | 19 ++++ pnpm-lock.yaml | 15 ++++ 18 files changed, 261 insertions(+), 16 deletions(-) create mode 100644 packages/astro/test/content-layer-markdoc.test.js create mode 100644 packages/astro/test/fixtures/content-layer-markdoc/astro.config.mjs create mode 100644 packages/astro/test/fixtures/content-layer-markdoc/content/_nested.mdoc create mode 100644 packages/astro/test/fixtures/content-layer-markdoc/content/blog/_counter.mdoc create mode 100644 packages/astro/test/fixtures/content-layer-markdoc/content/blog/with-components.mdoc create mode 100644 packages/astro/test/fixtures/content-layer-markdoc/markdoc.config.ts create mode 100644 packages/astro/test/fixtures/content-layer-markdoc/package.json create mode 100644 packages/astro/test/fixtures/content-layer-markdoc/src/components/Code.astro create mode 100644 packages/astro/test/fixtures/content-layer-markdoc/src/components/Counter.tsx create mode 100644 packages/astro/test/fixtures/content-layer-markdoc/src/components/CounterWrapper.astro create mode 100644 packages/astro/test/fixtures/content-layer-markdoc/src/components/CustomMarquee.astro create mode 100644 packages/astro/test/fixtures/content-layer-markdoc/src/components/DeeplyNested.astro create mode 100644 packages/astro/test/fixtures/content-layer-markdoc/src/content/config.ts create mode 100644 packages/astro/test/fixtures/content-layer-markdoc/src/pages/index.astro diff --git a/packages/astro/package.json b/packages/astro/package.json index 474faa1f410d..5d227208d346 100644 --- a/packages/astro/package.json +++ b/packages/astro/package.json @@ -239,4 +239,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 578f13057baf..4a4ecbcac8d3 100644 --- a/packages/astro/src/content/loaders/glob.ts +++ b/packages/astro/src/content/loaders/glob.ts @@ -128,17 +128,7 @@ export function glob(globOptions: GlobOptions): Loader { data, filePath, }); - - if (entryType.extensions.includes('.mdx')) { - store.set({ - id, - data: parsedData, - body, - filePath: relativePath, - digest, - deferredRender: true, - }); - } else if (entryType.getRenderFunction) { + if (entryType.getRenderFunction) { let render = renderFunctionByContentType.get(entryType); if (!render) { render = await entryType.getRenderFunction(settings); @@ -170,6 +160,16 @@ export function glob(globOptions: GlobOptions): Loader { if (rendered?.metadata?.imagePaths?.length) { store.addAssetImports(rendered.metadata.imagePaths, relativePath); } + // todo: add an explicit way to opt in to deferred rendering + } else if ('contentModuleTypes' in entryType) { + store.set({ + id, + data: parsedData, + body, + filePath: relativePath, + digest, + deferredRender: true, + }); } else { store.set({ id, data: parsedData, body, filePath: relativePath, digest }); } diff --git a/packages/astro/test/content-layer-markdoc.test.js b/packages/astro/test/content-layer-markdoc.test.js new file mode 100644 index 000000000000..c5279b9e7522 --- /dev/null +++ b/packages/astro/test/content-layer-markdoc.test.js @@ -0,0 +1,88 @@ +import assert from 'node:assert/strict'; +import { after, before, describe, it } from 'node:test'; +import * as cheerio from 'cheerio'; +import { loadFixture } from './test-utils.js'; + +describe('Content layer markdoc', () => { + let fixture; + + before(async () => { + fixture = await loadFixture({ + root: './fixtures/content-layer-markdoc/', + }); + }); + + describe('dev', () => { + let devServer; + + before(async () => { + devServer = await fixture.startDevServer(); + }); + + after(async () => { + await devServer.stop(); + }); + + it('renders content - with components', async () => { + const res = await fixture.fetch('/'); + const html = await res.text(); + + renderComponentsChecks(html); + }); + + it('renders content - with components inside partials', async () => { + const res = await fixture.fetch('/'); + const html = await res.text(); + + renderComponentsInsidePartialsChecks(html); + }); + }); + + describe('build', () => { + before(async () => { + await fixture.build(); + }); + + it('renders content - with components', async () => { + const html = await fixture.readFile('/index.html'); + + renderComponentsChecks(html); + }); + + it('renders content - with components inside partials', async () => { + const html = await fixture.readFile('/index.html'); + + renderComponentsInsidePartialsChecks(html); + }); + }); +}); + +/** @param {string} html */ +function renderComponentsChecks(html) { + const $ = cheerio.load(html); + const h2 = $('h2'); + assert.equal(h2.text(), 'Post with components'); + + // Renders custom shortcode component + const marquee = $('marquee'); + assert.notEqual(marquee, null); + assert.equal(marquee.attr('data-custom-marquee'), ''); + + // Renders Astro Code component + const pre = $('pre'); + assert.notEqual(pre, null); + assert.ok(pre.hasClass('github-dark')); + assert.ok(pre.hasClass('astro-code')); +} + +/** @param {string} html */ +function renderComponentsInsidePartialsChecks(html) { + const $ = cheerio.load(html); + // renders Counter.tsx + const button = $('#counter'); + assert.equal(button.text(), '1'); + + // renders DeeplyNested.astro + const deeplyNested = $('#deeply-nested'); + assert.equal(deeplyNested.text(), 'Deeply nested partial'); +} diff --git a/packages/astro/test/content-layer-render.test.js b/packages/astro/test/content-layer-render.test.js index ab38bb1da2b4..fa743e719ca4 100644 --- a/packages/astro/test/content-layer-render.test.js +++ b/packages/astro/test/content-layer-render.test.js @@ -2,7 +2,7 @@ import assert from 'node:assert/strict'; import { after, before, describe, it } from 'node:test'; import { loadFixture } from './test-utils.js'; -describe('Content Layer dev', () => { +describe('Content Layer MDX rendering dev', () => { /** @type {import("./test-utils.js").Fixture} */ let fixture; @@ -10,7 +10,6 @@ describe('Content Layer dev', () => { before(async () => { fixture = await loadFixture({ root: './fixtures/content-layer-rendering/', - cacheDir: './fixtures/content-layer-rendering/.cache', }); devServer = await fixture.startDevServer(); }); @@ -27,13 +26,12 @@ describe('Content Layer dev', () => { }); }); -describe('Content Layer build', () => { +describe('Content Layer MDX rendering build', () => { /** @type {import("./test-utils.js").Fixture} */ let fixture; before(async () => { fixture = await loadFixture({ root: './fixtures/content-layer-rendering/', - cacheDir: './fixtures/content-layer-rendering/.cache', }); await fixture.build(); }); diff --git a/packages/astro/test/fixtures/content-layer-markdoc/astro.config.mjs b/packages/astro/test/fixtures/content-layer-markdoc/astro.config.mjs new file mode 100644 index 000000000000..bbb19ad302db --- /dev/null +++ b/packages/astro/test/fixtures/content-layer-markdoc/astro.config.mjs @@ -0,0 +1,9 @@ +import markdoc from '@astrojs/markdoc'; +import preact from '@astrojs/preact'; +import { defineConfig } from 'astro/config'; + +// https://astro.build/config +export default defineConfig({ + integrations: [markdoc(), preact()], + experimental: { contentLayer: true } +}); diff --git a/packages/astro/test/fixtures/content-layer-markdoc/content/_nested.mdoc b/packages/astro/test/fixtures/content-layer-markdoc/content/_nested.mdoc new file mode 100644 index 000000000000..68f529280124 --- /dev/null +++ b/packages/astro/test/fixtures/content-layer-markdoc/content/_nested.mdoc @@ -0,0 +1,3 @@ +Render components from a deeply nested partial: + +{% deeply-nested /%} diff --git a/packages/astro/test/fixtures/content-layer-markdoc/content/blog/_counter.mdoc b/packages/astro/test/fixtures/content-layer-markdoc/content/blog/_counter.mdoc new file mode 100644 index 000000000000..4a015695c68e --- /dev/null +++ b/packages/astro/test/fixtures/content-layer-markdoc/content/blog/_counter.mdoc @@ -0,0 +1,7 @@ +# Hello from a partial! + +Render a component from a partial: + +{% counter /%} + +{% partial file="../_nested.mdoc" /%} diff --git a/packages/astro/test/fixtures/content-layer-markdoc/content/blog/with-components.mdoc b/packages/astro/test/fixtures/content-layer-markdoc/content/blog/with-components.mdoc new file mode 100644 index 000000000000..eb7d20426e59 --- /dev/null +++ b/packages/astro/test/fixtures/content-layer-markdoc/content/blog/with-components.mdoc @@ -0,0 +1,19 @@ +--- +title: Post with components +--- + +## Post with components + +This uses a custom marquee component with a shortcode: + +{% marquee-element direction="right" %} +I'm a marquee too! +{% /marquee-element %} + +{% partial file="_counter.mdoc" /%} + +And a code component for code blocks: + +```js +const isRenderedWithShiki = true; +``` diff --git a/packages/astro/test/fixtures/content-layer-markdoc/markdoc.config.ts b/packages/astro/test/fixtures/content-layer-markdoc/markdoc.config.ts new file mode 100644 index 000000000000..6093ec5938a5 --- /dev/null +++ b/packages/astro/test/fixtures/content-layer-markdoc/markdoc.config.ts @@ -0,0 +1,32 @@ +import { Markdoc, component, defineMarkdocConfig } from '@astrojs/markdoc/config'; + +export default defineMarkdocConfig({ + nodes: { + fence: { + render: component('./src/components/Code.astro'), + attributes: { + language: { type: String }, + content: { type: String }, + }, + }, + }, + tags: { + 'marquee-element': { + render: component('./src/components/CustomMarquee.astro'), + attributes: { + direction: { + type: String, + default: 'left', + matches: ['left', 'right', 'up', 'down'], + errorLevel: 'critical', + }, + }, + }, + counter: { + render: component('./src/components/CounterWrapper.astro'), + }, + 'deeply-nested': { + render: component('./src/components/DeeplyNested.astro'), + }, + }, +}); diff --git a/packages/astro/test/fixtures/content-layer-markdoc/package.json b/packages/astro/test/fixtures/content-layer-markdoc/package.json new file mode 100644 index 000000000000..91ca2f8c9c00 --- /dev/null +++ b/packages/astro/test/fixtures/content-layer-markdoc/package.json @@ -0,0 +1,11 @@ +{ + "name": "@test/content-layer-markdoc", + "version": "0.0.0", + "private": true, + "dependencies": { + "@astrojs/markdoc": "workspace:*", + "@astrojs/preact": "workspace:*", + "astro": "workspace:*", + "preact": "^10.23.1" + } +} \ No newline at end of file diff --git a/packages/astro/test/fixtures/content-layer-markdoc/src/components/Code.astro b/packages/astro/test/fixtures/content-layer-markdoc/src/components/Code.astro new file mode 100644 index 000000000000..18bf1399f22e --- /dev/null +++ b/packages/astro/test/fixtures/content-layer-markdoc/src/components/Code.astro @@ -0,0 +1,12 @@ +--- +import { Code } from 'astro/components'; + +type Props = { + content: string; + language: string; +} + +const { content, language } = Astro.props as Props; +--- + + diff --git a/packages/astro/test/fixtures/content-layer-markdoc/src/components/Counter.tsx b/packages/astro/test/fixtures/content-layer-markdoc/src/components/Counter.tsx new file mode 100644 index 000000000000..f1e239718cf8 --- /dev/null +++ b/packages/astro/test/fixtures/content-layer-markdoc/src/components/Counter.tsx @@ -0,0 +1,10 @@ +import { useState } from 'preact/hooks'; + +export default function Counter() { + const [count, setCount] = useState(1); + return ( + + ); +} diff --git a/packages/astro/test/fixtures/content-layer-markdoc/src/components/CounterWrapper.astro b/packages/astro/test/fixtures/content-layer-markdoc/src/components/CounterWrapper.astro new file mode 100644 index 000000000000..e45ac6438152 --- /dev/null +++ b/packages/astro/test/fixtures/content-layer-markdoc/src/components/CounterWrapper.astro @@ -0,0 +1,5 @@ +--- +import Counter from './Counter'; +--- + + diff --git a/packages/astro/test/fixtures/content-layer-markdoc/src/components/CustomMarquee.astro b/packages/astro/test/fixtures/content-layer-markdoc/src/components/CustomMarquee.astro new file mode 100644 index 000000000000..3108b997354c --- /dev/null +++ b/packages/astro/test/fixtures/content-layer-markdoc/src/components/CustomMarquee.astro @@ -0,0 +1 @@ + diff --git a/packages/astro/test/fixtures/content-layer-markdoc/src/components/DeeplyNested.astro b/packages/astro/test/fixtures/content-layer-markdoc/src/components/DeeplyNested.astro new file mode 100644 index 000000000000..eb23f675a0f6 --- /dev/null +++ b/packages/astro/test/fixtures/content-layer-markdoc/src/components/DeeplyNested.astro @@ -0,0 +1,5 @@ +--- + +--- + +

Deeply nested partial

diff --git a/packages/astro/test/fixtures/content-layer-markdoc/src/content/config.ts b/packages/astro/test/fixtures/content-layer-markdoc/src/content/config.ts new file mode 100644 index 000000000000..18ead9aa161f --- /dev/null +++ b/packages/astro/test/fixtures/content-layer-markdoc/src/content/config.ts @@ -0,0 +1,11 @@ +import { defineCollection } from 'astro:content'; +import { glob } from 'astro/loaders'; + +const blog = defineCollection({ + loader: glob({ + pattern: '*.mdoc', + base: 'content/blog', + }), +}); + +export const collections = { blog }; diff --git a/packages/astro/test/fixtures/content-layer-markdoc/src/pages/index.astro b/packages/astro/test/fixtures/content-layer-markdoc/src/pages/index.astro new file mode 100644 index 000000000000..5c7747eef923 --- /dev/null +++ b/packages/astro/test/fixtures/content-layer-markdoc/src/pages/index.astro @@ -0,0 +1,19 @@ +--- +import { getEntry, render } from "astro:content"; + +const post = await getEntry('blog', 'with-components'); +const { Content } = await render(post); +--- + + + + + + + + Content + + + + + diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4045a204d104..274af7480447 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -2722,6 +2722,21 @@ importers: specifier: workspace:* version: link:../../.. + packages/astro/test/fixtures/content-layer-markdoc: + dependencies: + '@astrojs/markdoc': + specifier: workspace:* + version: link:../../../../integrations/markdoc + '@astrojs/preact': + specifier: workspace:* + version: link:../../../../integrations/preact + astro: + specifier: workspace:* + version: link:../../.. + preact: + specifier: ^10.23.1 + version: 10.23.1 + packages/astro/test/fixtures/content-layer-rendering: dependencies: '@astrojs/mdx': From c515a856dfdb0e91b91c2873fa7c9f42a7fc5675 Mon Sep 17 00:00:00 2001 From: Matt Kane Date: Sat, 10 Aug 2024 10:27:35 +0100 Subject: [PATCH 33/34] Update benchmarks --- benchmark/make-project/markdown-cc2.js | 8 ++- benchmark/make-project/mdx-cc1.js | 66 ++++++++++++++++++++ benchmark/make-project/mdx-cc2.js | 83 ++++++++++++++++++++++++++ 3 files changed, 154 insertions(+), 3 deletions(-) create mode 100644 benchmark/make-project/mdx-cc1.js create mode 100644 benchmark/make-project/mdx-cc2.js diff --git a/benchmark/make-project/markdown-cc2.js b/benchmark/make-project/markdown-cc2.js index 05dd73fab54f..73c6afe7a8d0 100644 --- a/benchmark/make-project/markdown-cc2.js +++ b/benchmark/make-project/markdown-cc2.js @@ -34,7 +34,6 @@ ${loremIpsumMd} import { glob } from 'astro/loaders'; const blog = defineCollection({ - type: 'experimental_data', loader: glob({ pattern: '*', base: './data/blog' }), }); @@ -47,7 +46,7 @@ ${loremIpsumMd} new URL(`./src/pages/blog/[...slug].astro`, projectDir), `\ --- -import { getCollection } from 'astro:content'; +import { getCollection, render } from 'astro:content'; export async function getStaticPaths() { const blogEntries = await getCollection('blog'); return blogEntries.map(entry => ({ @@ -55,7 +54,7 @@ export async function getStaticPaths() { })); } const { entry } = Astro.props; -const { Content } = await entry.render(); +const { Content } = await render(entry); ---

{entry.data.title}

@@ -72,6 +71,9 @@ const { Content } = await entry.render(); import { defineConfig } from 'astro/config'; export default defineConfig({ + experimental: { + contentLayer: true + } });`, 'utf-8' ); diff --git a/benchmark/make-project/mdx-cc1.js b/benchmark/make-project/mdx-cc1.js new file mode 100644 index 000000000000..98e1495d13e1 --- /dev/null +++ b/benchmark/make-project/mdx-cc1.js @@ -0,0 +1,66 @@ +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 }); + await fs.copyFile(new URL('./image.jpg', import.meta.url), new URL('./src/image.jpg', projectDir)); + + const promises = []; + + + for (let i = 0; i < 10000; i++) { + const content = `\ +# Article ${i} + +${loremIpsumMd} + +![image ${i}](../../image.jpg) + + +`; + promises.push( + fs.writeFile(new URL(`./src/content/blog/article-${i}.mdx`, 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'; + +import mdx from '@astrojs/mdx'; + +export default defineConfig({ + integrations: [mdx()], +});`, + 'utf-8' + ); +} diff --git a/benchmark/make-project/mdx-cc2.js b/benchmark/make-project/mdx-cc2.js new file mode 100644 index 000000000000..c08c2fb9fe23 --- /dev/null +++ b/benchmark/make-project/mdx-cc2.js @@ -0,0 +1,83 @@ +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 }); + await fs.copyFile(new URL('./image.jpg', import.meta.url), new URL('./image.jpg', projectDir)); + + const promises = []; + + for (let i = 0; i < 10000; i++) { + const content = `\ +# Article ${i} + +${loremIpsumMd} + +![image ${i}](../../image.jpg) + +`; + promises.push( + fs.writeFile(new URL(`./data/blog/article-${i}.mdx`, 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({ + loader: glob({ pattern: '*', base: './data/blog' }), + }); + + export const collections = { blog } + + ` + ); + + await fs.writeFile( + new URL(`./src/pages/blog/[...slug].astro`, projectDir), + `\ +--- +import { getCollection, render } 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 render(entry); + +--- +

{entry.data.title}

+ +`, + 'utf-8' + ); + + await Promise.all(promises); + + await fs.writeFile( + new URL('./astro.config.js', projectDir), + `\ +import { defineConfig } from 'astro/config'; + +import mdx from '@astrojs/mdx'; + +export default defineConfig({ + integrations: [mdx()], + experimental: { + contentLayer: true + } +});`, + 'utf-8' + ); +} From dc3c50a3c73931bf87677d5e6139afe14bf037d9 Mon Sep 17 00:00:00 2001 From: Emanuele Stoppa Date: Mon, 12 Aug 2024 10:54:18 +0100 Subject: [PATCH 34/34] update lock file --- pnpm-lock.yaml | 72 +++++++++++++++++++++++++------------------------- 1 file changed, 36 insertions(+), 36 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 274af7480447..1d81712ce6be 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -116,7 +116,7 @@ importers: examples/basics: dependencies: astro: - specifier: ^4.13.2 + specifier: ^4.13.3 version: link:../../packages/astro examples/blog: @@ -131,22 +131,22 @@ importers: specifier: ^3.1.6 version: link:../../packages/integrations/sitemap astro: - specifier: ^4.13.2 + specifier: ^4.13.3 version: link:../../packages/astro examples/component: devDependencies: astro: - specifier: ^4.13.2 + specifier: ^4.13.3 version: link:../../packages/astro examples/container-with-vitest: dependencies: '@astrojs/react': - specifier: ^3.6.1 + specifier: ^3.6.2 version: link:../../packages/integrations/react astro: - specifier: ^4.13.2 + specifier: ^4.13.3 version: link:../../packages/astro react: specifier: ^18.3.1 @@ -177,7 +177,7 @@ importers: specifier: ^3.14.1 version: 3.14.1 astro: - specifier: ^4.13.2 + specifier: ^4.13.3 version: link:../../packages/astro examples/framework-lit: @@ -189,7 +189,7 @@ importers: specifier: ^0.2.1 version: 0.2.1 astro: - specifier: ^4.13.2 + specifier: ^4.13.3 version: link:../../packages/astro lit: specifier: ^3.1.4 @@ -201,10 +201,10 @@ importers: specifier: ^3.5.1 version: link:../../packages/integrations/preact '@astrojs/react': - specifier: ^3.6.1 + specifier: ^3.6.2 version: link:../../packages/integrations/react '@astrojs/solid-js': - specifier: ^4.4.0 + specifier: ^4.4.1 version: link:../../packages/integrations/solid '@astrojs/svelte': specifier: ^5.7.0 @@ -219,7 +219,7 @@ importers: specifier: ^18.3.0 version: 18.3.0 astro: - specifier: ^4.13.2 + specifier: ^4.13.3 version: link:../../packages/astro preact: specifier: ^10.23.1 @@ -249,7 +249,7 @@ importers: specifier: ^1.3.0 version: 1.3.0(preact@10.23.1) astro: - specifier: ^4.13.2 + specifier: ^4.13.3 version: link:../../packages/astro preact: specifier: ^10.23.1 @@ -258,7 +258,7 @@ importers: examples/framework-react: dependencies: '@astrojs/react': - specifier: ^3.6.1 + specifier: ^3.6.2 version: link:../../packages/integrations/react '@types/react': specifier: ^18.3.3 @@ -267,7 +267,7 @@ importers: specifier: ^18.3.0 version: 18.3.0 astro: - specifier: ^4.13.2 + specifier: ^4.13.3 version: link:../../packages/astro react: specifier: ^18.3.1 @@ -279,10 +279,10 @@ importers: examples/framework-solid: dependencies: '@astrojs/solid-js': - specifier: ^4.4.0 + specifier: ^4.4.1 version: link:../../packages/integrations/solid astro: - specifier: ^4.13.2 + specifier: ^4.13.3 version: link:../../packages/astro solid-js: specifier: ^1.8.19 @@ -294,7 +294,7 @@ importers: specifier: ^5.7.0 version: link:../../packages/integrations/svelte astro: - specifier: ^4.13.2 + specifier: ^4.13.3 version: link:../../packages/astro svelte: specifier: ^4.2.18 @@ -306,7 +306,7 @@ importers: specifier: ^4.5.0 version: link:../../packages/integrations/vue astro: - specifier: ^4.13.2 + specifier: ^4.13.3 version: link:../../packages/astro vue: specifier: ^3.4.35 @@ -318,13 +318,13 @@ importers: specifier: ^8.3.2 version: link:../../packages/integrations/node astro: - specifier: ^4.13.2 + specifier: ^4.13.3 version: link:../../packages/astro examples/integration: devDependencies: astro: - specifier: ^4.13.2 + specifier: ^4.13.3 version: link:../../packages/astro examples/middleware: @@ -333,7 +333,7 @@ importers: specifier: ^8.3.2 version: link:../../packages/integrations/node astro: - specifier: ^4.13.2 + specifier: ^4.13.3 version: link:../../packages/astro html-minifier: specifier: ^4.0.0 @@ -346,19 +346,19 @@ importers: examples/minimal: dependencies: astro: - specifier: ^4.13.2 + specifier: ^4.13.3 version: link:../../packages/astro examples/non-html-pages: dependencies: astro: - specifier: ^4.13.2 + specifier: ^4.13.3 version: link:../../packages/astro examples/portfolio: dependencies: astro: - specifier: ^4.13.2 + specifier: ^4.13.3 version: link:../../packages/astro examples/server-islands: @@ -367,7 +367,7 @@ importers: specifier: ^8.3.2 version: link:../../packages/integrations/node '@astrojs/react': - specifier: ^3.6.1 + specifier: ^3.6.2 version: link:../../packages/integrations/react '@astrojs/tailwind': specifier: ^5.1.0 @@ -385,7 +385,7 @@ importers: specifier: ^18.3.0 version: 18.3.0 astro: - specifier: ^4.13.2 + specifier: ^4.13.3 version: link:../../packages/astro postcss: specifier: ^8.4.40 @@ -409,7 +409,7 @@ importers: specifier: ^5.7.0 version: link:../../packages/integrations/svelte astro: - specifier: ^4.13.2 + specifier: ^4.13.3 version: link:../../packages/astro svelte: specifier: ^4.2.18 @@ -418,7 +418,7 @@ importers: examples/starlog: dependencies: astro: - specifier: ^4.13.2 + specifier: ^4.13.3 version: link:../../packages/astro sass: specifier: ^1.77.8 @@ -430,7 +430,7 @@ importers: examples/toolbar-app: devDependencies: astro: - specifier: ^4.13.2 + specifier: ^4.13.3 version: link:../../packages/astro examples/view-transitions: @@ -442,7 +442,7 @@ importers: specifier: ^5.1.0 version: link:../../packages/integrations/tailwind astro: - specifier: ^4.13.2 + specifier: ^4.13.3 version: link:../../packages/astro examples/with-markdoc: @@ -451,7 +451,7 @@ importers: specifier: ^0.11.3 version: link:../../packages/integrations/markdoc astro: - specifier: ^4.13.2 + specifier: ^4.13.3 version: link:../../packages/astro examples/with-markdown-plugins: @@ -460,7 +460,7 @@ importers: specifier: ^5.2.0 version: link:../../packages/markdown/remark astro: - specifier: ^4.13.2 + specifier: ^4.13.3 version: link:../../packages/astro hast-util-select: specifier: ^6.0.2 @@ -481,7 +481,7 @@ importers: examples/with-markdown-shiki: dependencies: astro: - specifier: ^4.13.2 + specifier: ^4.13.3 version: link:../../packages/astro examples/with-mdx: @@ -493,7 +493,7 @@ importers: specifier: ^3.5.1 version: link:../../packages/integrations/preact astro: - specifier: ^4.13.2 + specifier: ^4.13.3 version: link:../../packages/astro preact: specifier: ^10.23.1 @@ -508,7 +508,7 @@ importers: specifier: ^0.5.2 version: 0.5.2(nanostores@0.11.0)(preact@10.23.1) astro: - specifier: ^4.13.2 + specifier: ^4.13.3 version: link:../../packages/astro nanostores: specifier: ^0.11.0 @@ -529,7 +529,7 @@ importers: specifier: ^1.6.4 version: 1.6.4 astro: - specifier: ^4.13.2 + specifier: ^4.13.3 version: link:../../packages/astro autoprefixer: specifier: ^10.4.20 @@ -547,7 +547,7 @@ importers: examples/with-vitest: dependencies: astro: - specifier: ^4.13.2 + specifier: ^4.13.3 version: link:../../packages/astro vitest: specifier: ^2.0.5

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